1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376 |
- window = { };
- document = { };
- (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
- 'use strict';window.ZstdCodec=require('./lib/zstd-codec.js');window.ZstdStream=require('./lib/zstd-stream.js');
- },{"./lib/zstd-codec.js":7,"./lib/zstd-stream.js":8}],2:[function(require,module,exports){
- "use strict";exports.DEFAULT_COMPRESSION_LEVEL=3;exports.STREAMING_DEFAULT_BUFFER_SIZE=512*1024;
- },{}],3:[function(require,module,exports){
- (function (Buffer){
- 'use strict';var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var ArrayBufferHelper=function(){function ArrayBufferHelper(){_classCallCheck(this,ArrayBufferHelper);}_createClass(ArrayBufferHelper,null,[{key:'transfer',value:function transfer(old_buffer,new_capacity){var bytes=new Uint8Array(new ArrayBuffer(new_capacity));bytes.set(new Uint8Array(old_buffer.slice(0,new_capacity)));return bytes.buffer;}}]);return ArrayBufferHelper;}();var getClassName=function getClassName(obj){if(!obj||(typeof obj==='undefined'?'undefined':_typeof(obj))!='object')return null;// Object.prototype.toString returns '[object ClassName]',
- // remove prefix '[object ' and suffix ']'
- return Object.prototype.toString.call(obj).slice('[object '.length,-1);};var isUint8Array=function isUint8Array(obj){return getClassName(obj)=='Uint8Array';};var isString=function isString(obj){return typeof obj=='string'||getClassName(obj)=='String';};var toTypedArray=function toTypedArray(chunk,encoding,string_decoder){if(isString(chunk)){chunk=string_decoder(encoding);}if(isUint8Array(chunk)){// NOTE: Buffer is recognized as Uint8Array object.
- return chunk;}else if(getClassName(chunk)=='ArrayBuffer'){return new Uint8Array(chunk);}else if(Array.isArray(chunk)){return new Uint8Array(chunk);}return null;};// NOTE: only available on Node.js environment
- var fromTypedArrayToBuffer=function fromTypedArrayToBuffer(typedArray){return Buffer.from(typedArray.buffer);};exports.ArrayBufferHelper=ArrayBufferHelper;exports.getClassName=getClassName;exports.isUint8Array=isUint8Array;exports.isString=isString;exports.toTypedArray=toTypedArray;exports.fromTypedArrayToBuffer=fromTypedArrayToBuffer;
- }).call(this,require("buffer").Buffer)
- },{"buffer":54}],4:[function(require,module,exports){
- "use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};// REF: https://stackoverflow.com/a/47880734
- var wasmSupported=function(){try{if((typeof WebAssembly==="undefined"?"undefined":_typeof(WebAssembly))==="object"&&typeof WebAssembly.instantiate==="function"){var module=new WebAssembly.Module(Uint8Array.of(0x0,0x61,0x73,0x6d,0x01,0x00,0x00,0x00));if(module instanceof WebAssembly.Module)return new WebAssembly.Instance(module)instanceof WebAssembly.Instance;}}catch(e){}return false;}();exports.run=function(f){var Module={};Module.onRuntimeInitialized=function(){f(Module);};if(wasmSupported){require('./zstd-codec-binding-wasm.js')(Module);}else{require('./zstd-codec-binding.js')(Module);}};
- },{"./zstd-codec-binding-wasm.js":5,"./zstd-codec-binding.js":6}],5:[function(require,module,exports){
- (function (process,Buffer,__dirname){
- 'use strict';var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};var Module=function(){var _scriptDir=typeof document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return function(Module){Module=Module||{};var Module;if(!Module)Module=typeof Module!=='undefined'?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key];}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=function(status,toThrow){throw toThrow;};Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=(typeof window==='undefined'?'undefined':_typeof(window))==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=(typeof process==='undefined'?'undefined':_typeof(process))==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory);}else{return scriptDirectory+path;}}if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+"/";var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename);}return binary?ret:ret.toString();};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret);}assert(ret.buffer);return ret;};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/");}Module["arguments"]=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex;}});process["on"]("unhandledRejection",function(reason,p){process["exit"](1);});Module["quit"]=function(status){process["exit"](status);};Module["inspect"]=function(){return"[Emscripten Module object]";};}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data);}return read(f);};}Module["readBinary"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data;}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f));}data=read(f,"binary");assert((typeof data==='undefined'?'undefined':_typeof(data))==="object");return data;};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs;}else if(typeof arguments!="undefined"){Module["arguments"]=arguments;}if(typeof quit==="function"){Module["quit"]=function(status){quit(status);};}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WEB){if(document.currentScript){scriptDirectory=document.currentScript.src;}}else{scriptDirectory=self.location.href;}if(_scriptDir){scriptDirectory=_scriptDir;}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.split("/").slice(0,-1).join("/")+"/";}else{scriptDirectory="";}Module["read"]=function shell_read(url){try{var xhr=new XMLHttpRequest();xhr.open("GET",url,false);xhr.send(null);return xhr.responseText;}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data);}throw err;}};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){try{var xhr=new XMLHttpRequest();xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response);}catch(err){var data=tryParseAsDataURI(url);if(data){return data;}throw err;}};}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest();xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return;}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return;}onerror();};xhr.onerror=onerror;xhr.send(null);};Module["setWindowTitle"]=function(title){document.title=title;};}else{}var out=Module["print"]||(typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null);var err=Module["printErr"]||(typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||out);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key];}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret;}function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0;}}return ret;}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret;}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4;}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8;}else{return 0;}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text);}}var asm2wasmImports={"f64-rem":function f64Rem(x,y){return x%y;},"debugger":function _debugger(){debugger;}};var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args));}else{return Module["dynCall_"+sig].call(null,ptr);}}var GLOBAL_BASE=1024;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text);}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func;}var JSfuncs={"stackSave":function stackSave(){_stackSave();},"stackRestore":function stackRestore(){_stackRestore();},"arrayToC":function arrayToC(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret;},"stringToC":function stringToC(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len);}return ret;}};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(ident,returnType,argTypes,args,opts){function convertReturnValue(ret){if(returnType==="string")return Pointer_stringify(ret);if(returnType==="boolean")return Boolean(ret);return ret;}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=_stackSave();cArgs[i]=converter(args[i]);}else{cArgs[i]=args[i];}}}var ret=func.apply(null,cArgs);ret=convertReturnValue(ret);if(stack!==0)_stackRestore(stack);return ret;}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type);}}var ALLOC_STATIC=2;var ALLOC_NONE=4;function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break;}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK;}return ret;}return UTF8ToString(ptr);}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr]){++endPtr;}if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr));}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue;}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue;}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2;}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3;}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4;}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5;}}}if(u0<65536){str+=String.fromCharCode(u0);}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023);}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr);}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){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;outU8Array[outIdx++]=u;}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63;}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}}outU8Array[outIdx]=0;return outIdx-startIdx;}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len;}else if(u<=2047){len+=2;}else if(u<=65535){len+=3;}else if(u<=2097151){len+=4;}else if(u<=67108863){len+=5;}else{len+=6;}}return len;}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var __cxa_demangle_func=Module["___cxa_demangle"]||Module["__cxa_demangle"];assert(__cxa_demangle_func);try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(HEAP32[status>>2]===0&&ret){return Pointer_stringify(ret);}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret);}return func;}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]";});}function jsStackTrace(){var err=new Error();if(!err.stack){try{throw new Error(0);}catch(e){err=e;}if(!err.stack){return"(no stack trace available)";}}return err.stack.toString();}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js);}var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple;}return x;}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf;}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer);}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ");}function enlargeMemory(){abortOnCannotGrowMemory();}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY<TOTAL_STACK)err("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+TOTAL_MEMORY+"! (TOTAL_STACK="+TOTAL_STACK+")");if(Module["buffer"]){buffer=Module["buffer"];}else{if((typeof WebAssembly==='undefined'?'undefined':_typeof(WebAssembly))==="object"&&typeof WebAssembly.Memory==="function"){Module["wasmMemory"]=new WebAssembly.Memory({"initial":TOTAL_MEMORY/WASM_PAGE_SIZE,"maximum":TOTAL_MEMORY/WASM_PAGE_SIZE});buffer=Module["wasmMemory"].buffer;}else{buffer=new ArrayBuffer(TOTAL_MEMORY);}Module["buffer"]=buffer;}updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY;}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue;}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func);}else{Module["dynCall_vi"](func,callback.arg);}}else{func(callback.arg===undefined?null:callback.arg);}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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 ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__);}function preMain(){callRuntimeCallbacks(__ATMAIN__);}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true;}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift());}}callRuntimeCallbacks(__ATPOSTRUN__);}function addOnPreRun(cb){__ATPRERUN__.unshift(cb);}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb);}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer);}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i);}if(!dontAddNull)HEAP8[buffer>>0]=0;}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id;}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies);}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies);}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null;}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback();}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0;}function integrateWasmJS(){var wasmTextFile="";var wasmBinaryFile="data:application/octet-stream;base64,AGFzbQEAAAABxQMzYAF/AGAAAX9gAn9/AGADf39/AGABfwF/YAN/f38Bf2AAAGACf38Bf2AEf39/fwF/YAV/f39/fwF/YAZ/f39/f38Bf2AEf39/fwBgBn9/f39/fwBgBX9/f39/AGANf39/f39/f39/f39/fwBgCH9/f39/f39/AGADf39/AXxgB39/f39/f38Bf2ABfwF+YAF+AX5gAn5+AX5gAn9+AX9gAn9+AGANf39/f39/f39/f39/fwF/YAh/f39/f39/fwF/YAx/f39/f39/f39/f38Bf2AEf39+fwBgAn5/AX9gBX9/fn9/AX9gBn9/f39/fgF/YAN/f34Bf2AFf39/f34Bf2ALf39/f39/f39/f38Bf2AHf39/f39/fwBgBX9/f35/AX9gCX9/f39/f39/fwF/YAp/f39/f39/f39/AX9gEH9/f39/f39/f39/f39/f38Bf2AEfn9/fgF+YAJ/fwF+YAN+f38Bf2AFf35/f38AYAd/fn9/f39/AX5gCH9/f39/f35/AX9gBn9/f39+fwF/YAR/f39+AX9gB39/f39/f34Bf2AJf39/f39/f39/AGACfn4Bf2AGf3x/f39/AX9gAnx/AXwC9Ak0A2VudgZtZW1vcnkCAYACgAIDZW52BXRhYmxlAXABnAOcAwNlbnYJdGFibGVCYXNlA38AA2Vudg5EWU5BTUlDVE9QX1BUUgN/AANlbnYIU1RBQ0tUT1ADfwADZW52CVNUQUNLX01BWAN/AANlbnYFYWJvcnQAAANlbnYNZW5sYXJnZU1lbW9yeQABA2Vudg5nZXRUb3RhbE1lbW9yeQABA2VudhdhYm9ydE9uQ2Fubm90R3Jvd01lbW9yeQABA2VudhlfX19jeGFfYWxsb2NhdGVfZXhjZXB0aW9uAAQDZW52DF9fX2N4YV90aHJvdwADA2VudgdfX19sb2NrAAADZW52C19fX3NldEVyck5vAAADZW52DV9fX3N5c2NhbGwxNDAABwNlbnYNX19fc3lzY2FsbDE0NQAHA2Vudg1fX19zeXNjYWxsMTQ2AAcDZW52DV9fX3N5c2NhbGwyMjEABwNlbnYLX19fc3lzY2FsbDUABwNlbnYMX19fc3lzY2FsbDU0AAcDZW52C19fX3N5c2NhbGw2AAcDZW52CV9fX3VubG9jawAAA2VudhZfX2VtYmluZF9yZWdpc3Rlcl9ib29sAA0DZW52F19fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzAA4DZW52I19fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yAAwDZW52IF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uAA8DZW52F19fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsAAIDZW52F19fZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0AAMDZW52Gl9fZW1iaW5kX3JlZ2lzdGVyX2Z1bmN0aW9uAAwDZW52GV9fZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIADQNlbnYdX19lbWJpbmRfcmVnaXN0ZXJfbWVtb3J5X3ZpZXcAAwNlbnYcX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZwACA2Vudh1fX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZwADA2VudhZfX2VtYmluZF9yZWdpc3Rlcl92b2lkAAIDZW52Cl9fZW12YWxfYXMAEANlbnYMX19lbXZhbF9jYWxsAAgDZW52GF9fZW12YWxfY2FsbF92b2lkX21ldGhvZAALA2Vudg5fX2VtdmFsX2RlY3JlZgAAA2VudhlfX2VtdmFsX2dldF9tZXRob2RfY2FsbGVyAAcDZW52G19fZW12YWxfZ2V0X21vZHVsZV9wcm9wZXJ0eQAEA2VudhRfX2VtdmFsX2dldF9wcm9wZXJ0eQAHA2Vudg5fX2VtdmFsX2luY3JlZgAAA2VudgtfX2VtdmFsX25ldwAIA2VudhNfX2VtdmFsX25ld19jc3RyaW5nAAQDZW52F19fZW12YWxfcnVuX2Rlc3RydWN0b3JzAAADZW52El9fZW12YWxfdGFrZV92YWx1ZQAHA2VudgZfYWJvcnQABgNlbnYWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwAFA2VudhRfcHRocmVhZF9nZXRzcGVjaWZpYwAEA2VudhNfcHRocmVhZF9rZXlfY3JlYXRlAAcDZW52DV9wdGhyZWFkX29uY2UABwNlbnYUX3B0aHJlYWRfc2V0c3BlY2lmaWMABwPmB+QHBAEAAgIAAQYCAgQCBwIEBwcFBwcEBwUHBwAAAwMABAIAAgcEBAIHBAQCBwQEAgcEBAIHBAQCBwQCAwMFAwQAAQQDCwcFCAADBwQAAAUEBwQAAQUJCAQAAQgFBAEGBwcIBQgABAICBwQIAAQCBwQDAAQCBwQCAAQCBwQAAAcHAgQCBwcEBwQCBwcEBQcHAAQHBAIHBwQHBAIHBwQFBwcEBAkEBAQRCgQICQUDBAcHBwcCBwcEEhITBBIUFBUFBRIHBwIKBwkKCAkKCQgHBQkJBwkKBQMDAAACBAMDAgIWFgICBAUICQgKAwUKCQoCAhcYBQUZGQQBBAAEBBoaBwUKBwoACREICgUFAwMFCwoFBQkEBwcHBwcbGxsbBwgAAAAEBxwdHgISBRQHBx8CAAQEGSAHCgoKCgoKCgoKCgoKCgoKCgMHBwgLBQgFDQ0AAwIFBwgHBwcJCQoNESERGAkJCgkRIgoJAwAYCQMjGAQkCSUICAcIAwsJJicoGwUbCCkqCwsCBQIDAyssAxoJBRgYCgkFAi0RCgEEBC4dLQceBwgIBQcJAgoJBAoJBBgJDy8KCQoJGAcKGAoYAAQBBAQHBAQEBAQEBAcHBQQFCCcnBQUFBAcEEgQHBwcFBAcHBwcFBQcEBQggAwwCCgQREREDGAIRERgEBAoHBQkFCAgEBQUFCAERAREBEQUCCQUJBQkRBQMEAhgEAgQjBwgJBAkJCQkJCAgHCQkFCQUJEQgJBQkPLwICCQQFBQUEBwIFCQUJBQkRBQIYCAgJCAgFCREICQUJCQQFAwUFAgkFBQkFCSMFAwQCGAcJCAQICAkJCAgFCREPLwgJBAUJCQkEBQMFAQkRBAMFBQkFCRgFAwQCGAQJCAgICAUJCREPLwgJBQkJBQkIBAQJCQkJBwcKAQQECQUFBAcEMAUICQQIBAUBBQEFAQUEBQQBCQkJCQQJBAkECQkECQIGAAQEAAcHBwIEBQUEAQUFBQcEBAUHBQcHCAgFCQMEAygbGw0HMTIFBwUEBQcHBwQHBAEEBAAEBwQEBAQGAQIFDA0LBQsLDQgMDQsGAAUFBQwNCwsMDQgCAgILAAAEBQAAAwMEBQIPAwAFBQUFBQIFBwICBQUDAgUFAwUFBQIFAwICAgIFBQUFBwMFAAMLBQUICAUFBQUFBQUFBQUFBQUFBQUFBQUFAgUCAwUFBQUFBQUFBQICAgACAgIDAggFAwwCAgUAAAsCAAcHCAIFBQUCBQUFBwIAAgIFCwIAAAIIAAAAAAIAAgACBQAHBAUEBgQFBQUFBAcFCAkKEQIDCw0MIQEEBwUICQoGAAIDCw0MBh8GfwEjAQt/ASMCC38BIwMLfwFBAAt/AUEAC38BQQALB94EJRhfX0dMT0JBTF9fc3ViX0lfYmluZF9jcHAAgwYfX19HTE9CQUxfX3N1Yl9JX3pzdGRfYmluZGluZ19jYwCKARBfX19jeGFfY2FuX2NhdGNoAO8HD19fX2N4YV9kZW1hbmdsZQDZBhZfX19jeGFfaXNfcG9pbnRlcl90eXBlAPAHEV9fX2Vycm5vX2xvY2F0aW9uAJAGDl9fX2dldFR5cGVOYW1lAIUGBV9mcmVlAIcGD19sbHZtX2Jzd2FwX2kzMgDyBw5fbGx2bV9jdGx6X2k2NADzBwdfbWFsbG9jAIYGB19tZW1jcHkA9AcIX21lbW1vdmUA9QcHX21lbXNldAD2BwVfc2JyawD3BwlkeW5DYWxsX2kAbgpkeW5DYWxsX2lpAPgHC2R5bkNhbGxfaWlpAPkHDGR5bkNhbGxfaWlpaQD6Bw1keW5DYWxsX2lpaWlpAPsHDmR5bkNhbGxfaWlpaWlpAPwHD2R5bkNhbGxfaWlpaWlpaQD9BwlkeW5DYWxsX3YAdApkeW5DYWxsX3ZpAP4HC2R5bkNhbGxfdmlpAP8HDGR5bkNhbGxfdmlpaQCACA1keW5DYWxsX3ZpaWlpAIEIDmR5bkNhbGxfdmlpaWlpAIIID2R5bkNhbGxfdmlpaWlpaQCDCBNlc3RhYmxpc2hTdGFja1NwYWNlADELZ2V0VGVtcFJldDAANAtydW5Qb3N0U2V0cwDxBwtzZXRUZW1wUmV0MAAzCHNldFRocmV3ADIKc3RhY2tBbGxvYwAuDHN0YWNrUmVzdG9yZQAwCXN0YWNrU2F2ZQAvCbcFAQAjAAucA4QIf4UBiQFthAiECIQIhQhMUVJVVllaXV5hYmWRAZUBmAGbAZ4BoQGkAacBrQGxAbMBtwG+AcIBxAHIAYwGvQZ3ezx9boMBbogBbkJrbjjGA9wFhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhghQVFhcYGSUAZoBoAGmAa8BsAG1AbYBwAHBAcYBxwHoBHY6fIsBjAE9PkBBcUNFRnGGCIYIhgiGCIYIhgiGCIYIhgiGCIYIhgiGCIYIhgiGCIYIhgiGCIYIhgiG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ACAEJAUgAA8LIARBEWohASAEQRBqIQIgAygCACAFKAIANgIMIAMoAgAgAygCACgCDEEEajYCEAJAIAAoAgBBBE8EQCADKAIAIAUoAgAgACgCAGpBfGo2AgggAygCACgCCBDhASECIAMoAgAgAjYCACABIAUoAgAgACgCAEEBa2osAAA6AAAgAS0AAAR/QQggAS0AABDUAWsFQQALIQIgAygCACACNgIEIAEtAABFBEAgBkF/NgIAIAYoAgAhACAEJAUgAA8LBSADKAIAIAMoAgAoAgw2AgggAygCACADKAIAKAIMLQAANgIAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAEECaw4GBQQDAgEABgsgAygCACIBIAEoAgAgBSgCAC0ABkEQdGo2AgAMBgsMBQsMBQsMBQsMBQsMBQsMBQsgAygCACIBIAEoAgAgBSgCAC0ABUEIdGo2AgALIAMoAgAiASABKAIAIAUoAgAtAARqNgIACyADKAIAIgEgASgCACAFKAIALQADQRh0ajYCAAsgAygCACIBIAEoAgAgBSgCAC0AAkEQdGo2AgALIAMoAgAiASABKAIAIAUoAgAtAAFBCHRqNgIACyACIAUoAgAgACgCAEEBa2osAAA6AAAgAi0AAAR/QQggAi0AABDUAWsFQQALIQEgAygCACABNgIEIAItAAAEQCADKAIAQQRqIgEgASgCAEEEIAAoAgBrQQN0ajYCAAwCCyAGQWw2AgAgBigCACEAIAQkBSAADwsLIAYgACgCADYCACAGKAIAIQAgBCQFIAALhQEBAn8jBSEDIwVBIGokBSADQRBqIgQgADYCACADQQxqIgAgATYCACADQQhqIgEgAjYCACADQQRqIgIgASgCADYCACADIAIoAgA2AgAgACgCACADKAIALwEAENwBIQIgBCgCACACNgIAIAAoAgAQ2QEaIAQoAgAgASgCAEEEajYCBCADJAULvQMBBn8jBSEDIwVBEGokBSADQQxqIQIgA0EIaiIBIAA2AgAgASgCACgCBEEgSwRAIAJBAzYCACACKAIAIQAgAyQFIAAPCyABKAIAIQUgASgCACgCCCABKAIAKAIQTwRAIAEoAgBBCGoiACAAKAIAIAUoAgRBA3ZrNgIAIAEoAgBBBGoiACAAKAIAQQdxNgIAIAEoAgAoAggQ4QEhACAB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AzAgAkIANwM4IAJBQGtCADcDACACQgA3A0ggAiAAKQMAQoeVr6+Ytt6bnn98Qs/W077Sx6vZQnw3AwggAiAAKQMAQs/W077Sx6vZQnw3AxAgAiAAKQMAQgB8NwMYIAIgACkDAEKHla+vmLbem55/fTcDICADKAIAIgAgAikDADcDACAAIAIpAwg3AwggACACKQMQNwMQIAAgAikDGDcDGCAAIAIpAyA3AyAgACACKQMoNwMoIAAgAikDMDcDMCAAIAIpAzg3AzggAEFAayACQUBrKQMANwMAIAAgAikDSDcDSCAAIAIpA1A3A1AgAiQFQQALSQECfyMFIQMjBUEQaiQFIANBCGoiBCAANgIAIANBBGoiACABNgIAIAMgAjYCACAEKAIAIgEgACgCACADKAIAEPQHGiADJAUgAQvcJQJ8fwJ+IwUhAyMFQeAEaiQFIANBuAFqIRogA0HQBGohLCADQcwEaiEtIANByARqIS4gA0HEBGohLyADQcAEaiEwIANBsAFqIRsgA0G8BGohMSADQbgEaiEyIANBtARqITMgA0GwBGohNCADQawEaiE1IANBqAFqIRwgA0GoBGohNiADQaQEaiE3IANBoARqITggA0GcBGohOSADQZgEaiE6IANBoAFqIR0gA0GUBGohOyADQZAEaiE8IANBjARqIT0gA0GIBGohPiADQYQEaiE/IANBmAFqIR4gA0GABGohQCADQfwDaiFBIANB+ANqIUIgA0H0A2ohQyADQfADaiFEIANBkAFqIR8gA0HsA2ohRSADQegDaiFGIANB5ANqIUcgA0HgA2ohSCADQdwDaiFJIANBiAFqISAgA0HYA2ohSiADQdQDaiFLIANB0ANqIUwgA0HMA2ohTSADQcgDaiFOIANBgAFqISEgA0HEA2ohTyADQcADaiFQIANBvANqIVEgA0G4A2ohUiADQbQDaiFTIANBsANqISIgA0GsA2ohBCADQagDaiEOIANBpANqIQogA0GgA2ohCCADQZwDaiEGIANBmANqIQsgA0GUA2ohVCADQfgAaiEPIANB8ABqIRAgA0HoAGohESADQeAAaiESIANB2ABqISMgA0GQA2ohVSADQYwDaiFWIANBiANqIVcgA0GEA2ohWCADQYADaiFZIANB0ABqISQgA0H8AmohWiADQfgCaiFbIANB9AJqIVwgA0HwAmohXSADQewCaiFeIANByABqISUgA0HoAmohXyADQeQCaiFgIANB4AJqIWEgA0HcAmohYiADQdgCaiFjIANBQGshJiADQdQCaiFkIANB0AJqIWUgA0HMAmohZiADQcgCaiFnIANBxAJqIWggA0E4aiEnIANBwAJqIWkgA0G8AmohaiADQbgCaiFrIANBtAJqIWwgA0GwAmohbSADQTBqISggA0GsAmohbiADQagCaiFvIANBpAJqIXAgA0GgAmohcSADQZwCaiFyIANBKGohKSADQZgCaiFzIANBlAJqIXQgA0GQAmohdSADQYwCaiF2IANBiAJqIXcgA0EgaiEqIANBhAJqIXggA0GAAmoheSADQfwBaiF6IANB+AFqIXsgA0H0AWohfCADQfABaiErIANB7AFqIQUgA0HoAWohEyADQeQBaiEMIANB4AFqIQkgA0HcAWohByADQdgBaiENIANB1AFqIX0gA0EYaiEUIANBEGohFSADQQhqIRYgAyEXIANB0AFqIRggA0HMAWoiGSAANgIAIANByAFqIn4gATYCACADQcQBaiIBIAI2AgAgA0HAAWoiAEGA5QAsAAA2AgAgGSgCACEZIH4oAgAhAiABKAIAIQEgACgCAEEBRgR/IAUgGTYCACATIAI2AgAgDCABNgIAIAlBATYCACAHIBMoAgA2AgAgDSAHKAIAIAwoAgBqNgIAIAUoAgAiACAAKQMAIAwoAgCtfDcDACAFKAIAIQAgBSgCACgCSCAMKAIAakEgSQRAIABBKGogBSgCACgCSGogEygCACAMKAIAEOoBGiAFKAIAQcgAaiIAIAAoAgAgDCgCAGo2AgAgK0EANgIABSAAKAJIBEAgBSgCAEEoaiAFKAIAKAJIaiATKAIAQSAgBSgCACgCSGsQ6gEaIAUoAgApAwghgAEgCSgCACEAIHsgBSgCAEEoajYCACB8IAA2AgAgfCgCACEAIHggeygCADYCACB5IAA2AgAgekEBNgIAIHkoAgBBAUYhASB4KAIAIQAgeigCAEEBRgRAIAAQ5gEhfyABRQRAIH8Q5AEhfwsgKiB/NwMABSAAKQMAIX8gAUUEQCB/EOQBIX8LICogfzcDAAsggAEgKikDABDnASF/IAUoAgAgfzcDCCAFKAIAKQMQIYABIAkoAgAhACB2IAUoAgBBMGo2AgAgdyAANgIA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AgAgGyAANgIAIBxBATYCACAbKAIAQQFGIQQgGigCACEAIBwoAgBBAUYEQCAAEOUBIQAgBEUEQCAAENEBIQALIBQgADYCAAUgACgCACEAIARFBEAgABDRASEACyAUIAA2AgALIAIgAikDACAUKAIArUKHla+vmLbem55/foU3AwAgAiACKQMAQheGIAIpAwBCKYiEQs/W077Sx6vZQn5C+fPd8Zn2masWfDcDACAFIAUoAgBBBGo2AgALA0AgBSgCACAJKAIASQRAIAIgAikDACAFKAIALQAArULFz9my8eW66id+hTcDACACIAIpAwBCC4YgAikDAEI1iIRCh5Wvr5i23puef343AwAgBSAFKAIAQQFqNgIADAELCyACIAIpAwAgAikDAEIhiIU3AwAgAiACKQMAQs/W077Sx6vZQn43AwAgAiACKQMAIAIpAwBCHYiFNwMAIAIgAikDAEL5893xmfaZqxZ+NwMAIAIgAikDACACKQMAQiCIhTcDACATIAIpAwA3AwAgEykDACEwIAEkBSAwCwttAQN/IwUhAiMFQRBqJAUgAkEEaiEDIAIiBCAANgIAIAEoAgAEfyADIAEoAgggBCgCACABKAIAQT9xQcgAahEHADYCACADKAIAIQAgAiQFIAAFIAMgBCgCABCGBjYCACADKAIAIQAgAiQFIAALC5ABAQR/IwUhAiMFQRBqJAUgAkEIaiEDIAIhBCACQQRqIgUgADYCACABKAIABH8gBCABKAIIIAUoAgAgASgCAEE/cUHIAGoRBwA2AgAgBCgCAEEAIAUoAgAQ9gcaIAMgBCgCADYCACADKAIAIQAgAiQFIAAFIANBASAFKAIAEIgGNgIAIAMoAgAhACACJAUgAAsLWAECfyMFIQIjBUEQaiQFIAIiAyAANgIAIAIoAgBFBEAgAiQFDwsgASgCBARAIAEoAgggAygCACABKAIEQR9xQeQCahECACACJAUFIAMoAgAQhwYgAiQFCwvLCgEOfyMFIQYjBUHwCGokBSAGQeQIaiEKIAZBtAhqIQ0gBkGwCGohCyAGQawIaiERIAZBqAhqIQggBkHgCGoiDiAANgIAIAZB3AhqIgcgATYCACAGQdgIaiIPIAI2AgAgBkHUCGoiCSADNgIAIAZB0AhqIgEgBDYCACAGQcwIaiIDIAU2AgAgBkHICGoiAkEBIAko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AgAoAhBLBEAgASgCACABKAIAKAIQNgIMCyABKAIAQQRqIgMgAygCAEEHcTYCACABKAIAIgEgASgCACAAKAIAQQN0djYCACACJAULRgECfyMFIQIjBUEQaiQFIAJBBGoiAyAANgIAIAIgATYCACADKAIAIAIoAgAoAgAgAigCACgCDBCIAiADKAIAEIQCIAIkBQuLAQEDfyMFIQIjBUEQaiQFIAJBBGohAyACIgEgADYCACABKAIAQQFBARCHAiABKAIAEIQCIAEoAgAoAgwgASgCACgCEE8EfyADQQA2AgAgAygCACEAIAIkBSAABSADIAEoAgAoAgwgASgCACgCCGsgASgCACgCBEEAS2o2AgAgAygCACEAIAIkBSAACwtoAQJ/IwUhAyMFQRBqJAUgA0EIaiIEIAA2AgAgA0EEaiIAIAE2AgAgAyACNgIAIAQoAgAiASABKAIAIAAoAgAgBCgCACgCBHRyNgIAIAQoAgBBBGoiACAAKAIAIAMoAgBqNgIAIAMkBQt4AQJ/IwUhAyMFQRBqJAUgA0EIaiIEIAA2AgAgA0EEaiIAIAE2AgAgAyACNgIAIAQoAgAiASABKAIAIAAoAgAgAygCAEECdEHgHWooAgBxIAQoAgAoAgR0cjYCACAEKAIAQQRqIgAgACgCACADKAIAajYCACADJAULNwECfyMFIQIjBUEQaiQFIAJBBGoiAyAANgIAIAIgATYCACADKAIAIgMgAigCACIBEIoCIAIkBQtUAQJ/IwUhAiMFQRBqJAUgAkEEaiIDIAA2AgAgAiABNgIAIAMoAgAhAyACKAIAIQFBkOUALQAABEAgAyABEI0CIAIkBQUgAyABENEBEI0CIAIkBQsLVAECfyMFIQIjBUEQaiQFIAJBCGoiAyAANgIAIAIgATcDACADKAIAIQMgAikDACEBQZDlAC0AAARAIAMgARCMAiACJAUFIAMgARDkARCMAiACJAULCzMBAn8jBSECIwVBEGokBSACQQhqIgMgADYCACACIAE3AwAgAygCACACKQMANwAAIAIkBQszAQJ/IwUhAiMFQRBqJAUgAkEEaiIDIAA2AgAgAiABNgIAIAMoAgAgAigCADYAACACJAULuAEBBH8jBSECIwVBIGokBSACQRBqIgMgADYCACACQQxqIgQgATYCACACQQhqIgEgBCgCADYCACACQQRqIgUgASgCADYCACACIgAgASgCABCPAkH//wNxNgIAIAMoAgBBASACKAIAdDYCACADKAIAIAUoAgBBBGo2AgQgAygCACAEKAIAIgRBBGogAigCAAR/QQEgACgCAEEBa3QFQQELIgFBAnRqNgIIIAMoAgAgACgCADYCDCACJAULJgEBfyMFIQEjBUEQaiQFIAEgADYCACABKAIALgAAIQAgASQFIAALSgECfyMFIQMjBUEQaiQFIANBCGoiBCAANgIAIANBBGoiACABNgIAIAMgAjYCACAEKAIAIAAoAgAgAygCAEEBEPgBIQAgAyQFIAAL+gUBCX8jBSEEIwVB0ANqJAUgBEHEA2ohBSAEQcADaiIHIAA2AgAgBEG8A2oiACABNgIAIARBuANqIgogAjYCACAEQbQDaiICIAM2AgAgBEGwA2oiCSAHKAIANgIAIARBrANqIgEgCSgCADYCACAEQagDaiILIAkoAgAgACgCAGo2AgAgBEGkA2oiA0EMNgIAIARBoANqIgdBBjYCACACKAIAQQFNBEAgBUEANgIAIAUoAgAhACAEJAUgAA8LIARBnANqIgAgBEEgaiIIIAMgCigCACACKAIAEPQBNgIAIAAoAgAQzQFBAEchDCAAKAIAIQYgDARAIAUgBjYCACAFKAIAIQAgBCQFIAAPCyAGIAIoAgBGBEAgBUEBNgIAIAUoAgAhACAEJAUgAA8LIAAoAgBBAUYEQCAFQQA2AgAgBSgCACEAIAQkBSAADwsgByAHKAIAIAIoAgAgAygCABD6ATYCACAEQZgDaiIGIAQiACAHKAIAIAggAigCACADKAIAEPsBNgIAIAYoAgAQzQEEQCAFIAYoAgA2AgAgBSgCACEAIAQkBSAADwsgBEGUA2oiBiABKAIAIAsoAgAgASgCAGsgACADKAIAIAcoAgAQ8gE2AgAgBigCABDNAUEARyEIIAYoAgAhBiAIBEAgBSAGNgIAIAUoAgAhACAEJAUgAA8LIAEgASgCACAGajYCACAEQZADaiIGIARBoAFqIgggACADKAIAIAcoAgAgBEHgAGpBwAAQ8AE2AgAgBigCABDNAQRAIAUgBigCADYCACAFKAIAIQAgBCQFIAAPCyAEQYwDaiIAIAEoAgAgCygCACABKAIAayAKKAIAIAIoAgAgCBD+ATYCACAAKAIAEM0BQQBHIQMgACgCACECIAMEQCAFIAI2AgAgBSgCACEAIAQkBSAADwsgAgR/IAEgASgCACAAKAIAajYCACAFIAEoAgAgCSgCAGs2AgAgBSgCACEAIAQkBSAABSAFQQA2AgAgBSgCACEAIAQkBSAACwulBQEGfyMFIQUjBUHAAmokBSAFQaACaiEGIAVBnAJqIgcgADYCACAFQZgCaiIJIAE2AgAgBUGUAmoiCiACNgIAIAVBkAJqIgIgAzYCACAFQYwCaiIIIAQ2AgAgBUGIAmoiBCAHKAIANgIAIAIoAgBB/wFLBEAgBkFSNgIAIAYoAgAhACAFJAUgAA8LIAUhACAFQYACaiEDIAVBpAJqIgdBADoAACAFQYQCaiIBQQE2AgADQCABKAIAIAgoAgBBAWpJBEAgByABKAIAaiAIKAIAQQFqIAEoAgBrOgAAIAEgASgCAEEBajYCAAwBCwsgAUEANgIAA0AgASgCACACKAIASQRAIAAgASgCAGogByAKKAIAIAEoAgBBAnRqLQACaiwAADoAACABIAEoAgBBAWo2AgAMAQsLIAMgBCgCAEEBaiAJKAIAQQFrIAAgAigCABCRAjYCACADKAIAEM0BQQBHIQcgAygCACEIIAcEQCAGIAg2AgAgBigCACEAIAUkBSAADwsgCEEBSyADKAIAIAIoAgBBAm5JcQRAIAQoAgAgAygCADoAACAGIAMoAgBBAWo2AgAgBigCACEAIAUkBSAADwsgAigCAEGAAUsEQCAGQX82AgAgBigCACEAIAUkBSAADwsgAigCAEEBakECbkEBaiAJKAIASwRAIAZBun82AgAgBigCACEAIAUkBSAADwsgBCgCACACKAIAQf8AajoAACAAIAIoAgBqQQA6AAAgAUEANgIAA0AgASgCACACKAIASQRAIAQoAgAgASgCAEECbkEBamogACABKAIAai0AAEEEdCAAIAEoAgBBAWpqLQAAajoAACABIAEoAgBBAmo2AgAMAQsLIAYgAigCAEEBakECbkEBajYCACAGKAIAIQAgBSQFIAALmAcBEH8jBSEEIwVB0ANqJAUgBEG8A2ohBSAEQbgDaiIMIAA2AgAgBEG0A2oiDyABNgIAIARBsANqIgAgAjYCACAEQawDaiIGIAM2AgAgBEGoA2oiAUEANgIAIARBpANqIgJBADYCACAEQaADaiINIARB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akEAQfwHIAMoAgBBAnRrEPYHGiANQQhqIgggBygCACARKAIAIAEoAgBBgAhqIAMoAgAgACgCABCSAjYCACAIKAIAEM0BBEAgDiAIKAIANgIAIA4oAgAhACANJAUgAA8LIA1BBGohCyANIQACQCAEKAIABEAgBCgCACgCAARAIAsgBSgCACABKAIAIAMoAgAQnwI2AgAgACABKAIAQYAIaiABKAIAIAMoAgAQnwI2AgAgCygCACAIKAIAIAAoAgBqSwRAIAgoAgBBDGogAigCAEkNAwsgDiAGKAIAIAcoAgAgCigCACAPKAIAIAIoAgAgECgCACAFKAIAIAkoAgAQnQI2AgAgDigCACEAIA0kBSAADwsLCyAIKAIAQQxqIAIoAgBPBEAgDkEANgIAIA4oAgAhACANJAUgAA8LIAcgBygCACAIKAIAajYCACAEKAIABEAgBCgCAEEANgIACyAFKAIABEAgBSgCACABKAIAQYAIakGACBD0BxoLIA4gBigCACAHKAIAIAooAgAgDygCACACKAIAIBAoAgAgASgCAEGACGogCSgCABCdAjYCACAOKAIAIQAgDSQFIAAL+gIBBX8jBSEIIwVBMGokBSAIQSBqIgogADYCACAIQRxqIgkgATYCACAIQRhqIgEgAjYCACAIQRRqIgsgAzYCACAIQRBqIgIgBDYCACAIQQxqIgwgBTYCACAIQQhqIgUgBjYCACAIQQRqIgYgBzYCACAJKAIAIQAgASgCACAJKAIAayEBIAsoAgAhAyACKAIAIQQgBSgCACEFIAYoAgAhBiAMKAIABH8gACABIAMgBCAFIAYQlwIFIAAgASADIAQgBSAGEJkCCyEDIAhBJGohASAIIgAgAzYCACAIKAIAEM0BQQBHIQQgCCgCACEDIAQEQCABIAM2AgAgASgCACEAIAgkBSAADwsgA0UEQCABQQA2AgAgASgCACEAIAgkBSAADwsgCSAJKAIAIAAoAgBqNgIAIAkoAgAgCigCAGsgAigCAEEBa08EfyABQQA2AgAgASgCACEAIAgkBSAABSABIAkoAgAgCigCAGs2AgAgASgCACEAIAgkBSAACwutAQEDfyMFIQMjBUEgaiQFIANBEGoiBCAANgIAIANBDGoiBSABNgIAIANBCGoiASACNgIAIANBBGoiAkEANgIAIAMiAEEANgIAA0Ag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AiQFIAALnRIBBH8jBSEGIwVBIGokBSAGQRBqIQQgBiIFQQxqIgMgADYCACAFQQhqIgAgATYCACAFQQRqIgEgAjYCAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAQQprDsMIABYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAQIDBAUGBwgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWERITFBUWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgoLDBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWDg8QFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWCRYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFg0WCyABKAIAQQFLBEAgBEFYNgIADBcFIAMoAgAgASgCADYCACAEIAMoAgAoAgA2AgAMFwsACyAFIAEoAgA2AgAgBSgCAEEWSgRAIAVBFjYCAAsgBSgCAARAIAMoAgAgBSgCAEEASDYCMCADKAIAIAUoAgA2AiwLIAMoAgAoAixBAE4EQCAEIAMoAgAoAiw2AgAMFgUgBEEANgIADBYLAAsgASgCAEEASwRAIAEoAgBBCkkgASgCAEEeS3IEQCAEQVY2AgAMFgsLIAMoAgAgASgCADYCBCAEIAMoAgAoAgQ2AgAMFAsgASgCAEEASwRAIAEoAgBBBkkgASgCAEEeS3IEQCAEQVY2AgAMFQsLIAMoAgAgASgCADYCDCAEIAMoAgAoAgw2AgAMEwsgASgCAEEASwRAIAEoAgBBBkkgASgCAEEdS3IEQCAEQVY2AgAMFAsLIAMoAgAgASgCADYCCCAEIAMoAgAoAgg2AgAMEgsgASgCAEEASwRAIAEoAgBBAUkgASgCAEEdS3IEQCAEQVY2AgAMEwsLIAMoAgAgASgCADYCECAEIAEoAgA2AgAMEQsgASgCAEEASwRAIAEoAgBBA0kgASgCAEEHS3IEQCAEQVY2AgAMEgsLIAMoAgAgASgCADYCFCAEIAMoAgAoAhQ2AgAMEAsgAygCACABKAIANgIYIAQgAygCACgCGDYCAAwPCyABKAIAQQBLBEAgASgCAEEBSSABKAIAQQhLcgRAIARBVjYCAAwQCwsgAygCACABKAIANgIc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BiQFIAALC8kBAQN/IwUhAyMFQSBqJAUgA0EQaiEEIANBDGoiBSAANgIAIANBCGoiACABNgIAIANBBGoiASACNgIAIAAoAgAgASgCAEkEQCAEQWI2AgAgBCgCACEAIAMkBSAADwsgAyIAQQA2AgACQAJAA0AgACgCACABKAIASw0CIAUoAgAgACgCAEEBdGouAQBFDQEgACAAKAIAQQFqNgIADAALAAsgBEFiNgIAIAQoAgAhACADJAUgAA8LIARBADYCACAEKAIAIQAgAyQFIAALogMBBH8jBSEEIwVBIGokBSAEQQhqIQUgBEEcaiIDIAA2AgAgBEEYaiIGIAE2AgAgBEEUaiIBIAI2AgAgBEEQaiIAIAYoAgA2AgAgBEEMaiICQQE2AgAgBigCACADKAIAKAIARwRAIAUgAygCACgCACADKAIAKAIEazYCACADKAIAIAMoAgAoAgw2AhAgAygCACAFKAIANgIMIAMoAgAgAygCACgCBDYCCCADKAIAIAAoAgAgBSgCAGs2AgQgAygCACgCDCADKAIAKAIQa0EISQRAIAMoAgAgAygCACgCDDYCEAsgAkEANgIACyADKAIAIAAoAgAgASgCAGo2AgAgACgCACABKAIAaiADKAIAKAIIIAMoAgAoAhBqSyAAKAIAIAMoAgAoAgggAygCACgCDGpJcUUEQCACKAIAIQAgBCQFIAAPCyAEQQRqIgUgACgCACABKAIAaiADKAIAKAIIazYCACAEIAUoAgAgAygCACgCDEoEfyADKAIAKAIMBSAFKAIACyIANgIAIAMoAgAgBCgCADYCECACKAIAIQAgBCQFIAAL9wIBCX8jBSEDIwVBQGskBSADQQhqIQkgA0EEaiEEIAMhByADQTBqIgggADYCACADQSxqIgAgATYCACADQShqIgUgAjYCACADQSRqIgogCCgCACgCJDYCACADQSBqIgIgACgCACgCCDYCACADQRxqIgEgACgCACgCEDYCACADQRhqIgsgCCgCACgCBDYCACADQRRqIgYgCygCACAIKAIAKAIYajYCACADQRBqIgAgBSgCAEF4ajYCACADQQM2AgwDQCAGKAIAQQJqIAAoAgBNBEAgCSAGKAIAIAsoAgBrNgIAIARBADYCAANAIAYoAgAhBSAEKAIAQQNJBEAgByAFIAQoAgBqIAIoAgAgASgCABC7AjYCAAJAAkAgBCgCAEUNACAKKAIAIAcoAgBBAnRqKAIARQ0ADAELIAooAgAgBygCAEECdGogCSgCACAEKAIAajYCAAsgBCAEKAIAQQFqNgIADAELCyAGIAVBA2o2AgAMAQsLIAMkBQvjAwEMfyMFIQMjBUFAayQFIANBDGohCCADQQhqIQQgA0EEaiEKIAMhCSADQTxqIgYgADYCACADQThqIgAgATYCACADQTRqIgcgAjYCACADQTBqIgsgBigCACgCJDYCACADQSxqIg0gACgCACgCCDYCACADQShqIg4gACgCACgCEDYCACADQSRqIgIgBigCACgCLDYCACADQSBqIgEgACgCACgCBDYCACADQRxqIgwgBigCACgCBDYCACADQRhqIgUgDCgCACAGKAIAKAIYajYCACADQRRqIgAgBygCAEF4ajYCACADQQM2AhADQCAFKAIAQQJqIAAoAgBNBEAgCCAFKAIAIAwoAgBrNgIAIARBADYCAANAAkAgBSgCACEHIAQoAgBBA08NACAKIAcgBCgCAGogASgCACAOKAIAELsCNgIAIAkgBSgCACAEKAIAaiANKAIAQQgQuwI2AgAgBCgCAEUEQCACKAIAIAooAgBBAnRqIAgoAgAgBCgCAGo2AgALAkACQCAEKAIARQ0AIAsoAgAgCSgCAEECdGooAgBFDQAMAQsgCygCACAJKAIAQQJ0aiAIKAIAIAQoAgBqNgIACyAEIAQoAgBBAWo2AgAMAQsLIAUgB0EDajYCAAwBCwsgAyQFC1ABAn8jBSEDIwVBEGokBSADQQhqIgQgADYCACADQQRqIgAgATYCACADIAI2AgAgBCgCACAAKAIAIAMoAgAgACgCACgCEBDJAiEAIAMkBSAAC7cCAQZ/IwUhBCMFQUBrJAUgBEEMaiIFIAA2AgAgBEEIaiIAIAE2AgAgBEEEaiIBIAI2AgAgBCADNgIAIAAoAgAhAiABKAIAIQEgBCgCACEDIAAoAgAoAhAhBiAEQTBqIgAgBSgCADYCACAEQSxqIgUgAjYCACAEQShqIgcgATYCACAEQSRqIgggAzYCACAEQSBqIgkgBjYCACAEQRxqIgZBADYCACAEQRhqIgIgACgCACgCBDYCACAEQRRqIgMgBygCACACKAIAazYCACAEQRBqIgEgACgCACgCGDYCAANAIAEoAgAgAygCAEkEQCAAKAIAIAUoAgAgAigCACABKAIAaiAIKAIAIAkoAgAgBigCABC6AiEHIAEgASgCACAHajYCAAwBCwsgACgCACADKAIANgIYIAQkBQuLCgEYfyMFIQYjBUGQAWokBSAGQfwAaiIIIAA2AgAgBkH4AGoiByABNgIAIAZB9ABqIgkgAjYCACAGQfAAaiIQIAM2AgAgBkHsAGoiACAENgIAIAZB6ABqIhogBTYCACAGQeQAaiIKIAgoAgAoAiQ2AgAgBkHgAGoiASAHKAIAKAIINgIAIAZB3ABqIhQgCSgCACABKAIAIAAoAgAQuwI2AgAgBkHYAGoiFSAIKAIAKAIsNgIAIAZB1ABqIgAgBygCACgCBEEBazYCACAGQdAAaiILQQEgACgCAHRBAWs2AgAgBkHMAGoiASAKKAIAIBQoAgBBAnRqKAIANgIAIAZByABqIhFBADYCACAGQcQAaiISQQA2AgAgBkFAayIMIAgoAgAoAgQ2AgAgBkE8aiIWIAgoAgAoAgg2AgAgBkE4aiINIAgoAgAoAgw2AgAgBkE0aiIbIBYoAgAgDSgCAGo2AgAgBkEwaiIcIAwoAgAgDSgCAGo2AgAgBkEoaiICIAkoAgAgDCgCAGs2AgAgBkGAAWohDiAGQSxqIQMgBkEYaiEXIAZBBGohBCAGIQAgBkEkaiIYIAsoAgAgAigCAE8Ef0EABSACKAIAIAsoAgBrCyIFNgIAIAZBIGoiBSAVKAIAIAIoAgAgCygCAHFBA3RqNgIAIAZBHGoiDyAFKAIAQQRqNgIAIAZBFGoiHSAIKAIAKAIQNgIAIAZBEGoiEyACKAIAQQlqNgIAIAZBDGoiCEEINgIAIAZBCGoiGUEBIAcoAgAoAgx0NgIAIAooAgAgFCgCAEECdGogAigCADYCAAJAAkACQANAAkAgGSAZKAIAIgdBf2o2AgAgB0UNACABKAIAIB0oAgBNDQAgBCAVKAIAIAEoAgAgCygCAHFBA3RqNgIAIBEoAgAhByASKAIAIQogACARKAIAIBIoAgBJBH8gBwUgCgs2AgACQAJAIBooAgBFDQAgASgCACAAKAIAaiANKAIATw0AIAMgFigCACABKAIAajYCACAJKAIAIAAoAgBqIAMoAgAgACgCAGogECgCACAbKAIAIBwoAgAQvQIhByAAIAAoAgAgB2o2AgAgASgCACAAKAIAaiANKAIATwRAIAMgDCgCACABKAIAajYCAAsMAQsgAyAMKAIAIAEoAgBqNgIAIAkoAgAgACgCAGogAygCACAAKAIAaiAQKAIAELwCIQcgACAAKAIAIAdqNgIACyAAKAIAIAgoAgBLBEAgCCAAKAIANgIAIAAoAgAgEygCACABKAIAa0sEQCATIAEoAgAgACgCAGo2AgALCyAJKAIAIAAoAgBqIBAoAgBGDQAgASgCACEHIAMoAgAgACgCAGotAAAgCSgCACAAKAIAai0AAEgEQCAFKAIAIAc2AgAgESAAKAIANgIAIAEoAgAgGCgCAE0NAyAFIAQoAgBBBGo2AgAgASAEKAIAKAIENgIABSAPKAIAIAc2AgAgEiAAKAIANgIAIAEoAgAgGCgCAE0NBCAPIAQoAgA2AgAgASAEKAIAKAIANgIACwwBCwsMAgsgBSAXNgIADAELIA8gFzYCAAsgDygCAEEANgIAIAUoAgBBADYCACAIKAIAQYADSwR/IAgoAgBBgANrIQAgDkHAASAIKAIAQYADa0kEf0HAAQUgAAs2AgAgDigCACEAIAYkBSAABSAOIBMoAgAgAigCAEEIams2AgAgDigCACEAIAYkBSAACwvFAQEDfyMFIQMjBUEQaiQFIANBDGohBCADQQhqIgUgADYCACADQQRqIgAgATYCACADIAI2AgACQAJAAkACQAJAAkAgAygCAEEFaw4EAQIDAAQLIAQgBSgCACAAKAIAEMMCNgIADAQLIAQgBSgCACAAKAIAEMACNgIADAMLIAQgBSgCACAAKAIAEMECNgIADAILIAQgBSgCACAAKAIAEMICNgIADAELIAQgBSgCACAAKAIAEL8CNgIACyAEKAIAIQAgAyQFIAAL3wMBBn8jBSEEIwVBIGokBSAEQRxqIQUgBEEEaiEGIAQhByAEQRhqIgMgADYCACAEQRRqIgAgATYCACAEQRBqIgEgAjYCACAEQQxqIgIgAygCADYCACAEQQhqIgggASgCAEF9ajYCAAJAIAMoAgAgCCgCAEkEQCAGIAAoAgAQ0AEgAygCABDQAXM2AgAgBigCAARAIAUgBigCABC+AjYCACAFKAIAIQAgBCQFIAAPCyADIAMoAgBBBGo2AgAgACAAKAIAQQRqNgIAA0AgAygCACAIKAIATw0CIAcgACgCABDQASADKAIAENABczYCACAHKAIARQRAIAMgAygCAEEEajYCACAAIAAoAgBBBGo2AgAMAQsLIAcoAgAQvgIhACADIAMoAgAgAGo2AgAgBSADKAIAIAIoAgBrNgIAIAUoAgAhACAEJAUgAA8LCyADKAIAIAEoAgBBf2pJBEAgACgCABCPAkH//wNxIAMoAgAQjwJB//8DcUYEQCADIAMoAgBBAmo2AgAgACAAKAIAQQJqNgIACwsgAygCACABKAIASQRAIAAoAgAtAAAgAygCAC0AAEYEQCADIAMoAgBBAWo2AgALCyAFIAMoAgAgAigCAGs2AgAgBSgCACEAIAQkBSAAC4UCAQV/IwUhBSMFQSBqJAUgBUEYaiIGIAA2AgAgBUEUaiIHIAE2AgAgBUEQaiIIIAI2AgAgBUEMaiICIAM2AgAgBUEIaiIJIAQ2AgAgBUEcaiEBIAVBBGoiAyAGKAIAIAIoAgAgBygCAGtqIAgoAgBJBH8gBigCACACKAIAIAcoAgBragUgCCgCAAsiADYCACAFIgAgBigCACAHKAIAIAMoAgAQvAI2AgAgBSgCACEDIAcoAgAgBSgCAGogAigCAEcEfyABIAM2AgAgASgCACEAIAUkBSAABSABIAMgBigCACAAKAIAaiAJKAIAIAgoAgAQvAJqNgIAIAEoAgAhACAFJAUgAAsLUgECfyMFIQEjBUEQaiQFIAFBBGohAiABIAA2AgAgASgCACEAQZDlAC0AAARAIAIgAGhBA3U2AgAFIAIgAGdBA3U2AgALIAIoAgAhACABJAUgAAs6AQJ/IwUhAiMFQRBqJAUgAkEEaiIDIAA2AgAgAiABNgIAIAMoAgAQ0AEgAigCABDIAiEAIAIkBSAACzoBAn8jBSECIwVBEGokBSACQQRqIgMgADYCACACIAE2AgAgAygCABDiASACKAIAEMcCIQAgAiQFIAALOgECfyMFIQIjBUEQaiQFIAJBBGoiAyAANgIAIAIgATYCACADKAIAEOIBIAIoAgAQxgIhACACJAUgAAs6AQJ/IwUhAiMFQRBqJAUgAkEEaiIDIAA2AgAgAiABNgIAIAMoAgAQ4gEgAigCABDFAiEAIAIkBSAACzoBAn8jBSECIwVBEGokBSACQQRqIgMgADYCACACIAE2AgAgAygCABDiASACKAIAEMQCIQAgAiQFIAALRgECfyMFIQIjBUEQaiQFIAIgADcDACACQQhqIgMgATYCACACKQMAQuPIlb3Lm++NT35BwAAgAygCAGutiKchASACJAUgAQtJAQJ/IwUhAiMFQRBqJAUgAiAANwMAIAJBCGoiAyABNgIAIAIpAwBCCIZC48r+5c33xucAfkHAACADKAIAa62IpyEBIAIkBSABC0cBAn8jBSECIwVBEGokBSACIAA3AwAgAkEIaiIDIAE2AgAgAikDAEIQhkKb//Lmu+MzfkHAACADKAIAa62IpyEBIAIkBSABC0YBAn8jBSECIwVBEGokBSACIAA3AwAgAkEIaiIDIAE2AgAgAikDAEIYhkK7ufPd8Rl+QcAAIAMoAgBrrYinIQEgAiQFIAELPwECfyMFIQIjBUEQaiQFIAJBBGoiAyAANgIAIAIgATYCACADKAIAQbHz3fF5bEEgIAIoAgBrdiEAIAIkBSAAC/gCAQh/IwUhBCMFQTBqJAUgBCEHIARBLGoiBiAANgIAIARBKGoiBSABNgIAIARBJGoiCSACNgIAIARBIGoiCiADNgIAIARBHGoiCCAGKAIAKAIkNgIAIARBGGoiCyAFKAIAKAIINgIAIARBFGoiASAGKAIAKAIsNgIAIARBEGoiAEEBIAUoAgAoAgR0QQFrNgIAIARBDGoiAyAGKAIAKAIENgIAIARBCGoiAiAJKAIAIAMoAgBrNgIAIARBBGoiBSAGKAIAKAIYNgIAA0AgBSgCACACKAIASQRAIAcgAygCACAFKAIAaiALKAIAIAooAgAQuwI2AgAgASgCACAFKAIAIAAoAgBxQQJ0aiAIKAIAIAcoAgBBAnRqKAIANgIAIAgoAgAgBygCAEECdGogBSgCADYCACAFIAUoAgBBAWo2AgAMAQsLIAYoAgAgAigCADYCGCAIKAIAIAkoAgAgCygCACAKKAIAELsCQQJ0aigCACEAIAQkBSAAC0kBAX8jBSEBIwVBEGokBSABIAA2AgAgASgCABDLAiABKAIAIAEoAgAoAgxBAWo2AhggASgCAEEANgIUIAEoAgBBADYCTCABJAULXgECfyMFIQEjBUEQaiQFIAFBCGoiAiAANgIAIAFBBGoiACACKAIAKAIAIAIoAgAoAgRrNgIAIAEgACgCADYCACACKAIAIAEoAgA2AhAgAigCACABKAIANgIMIAEkBQswAQF/IwUhASMFQRBqJAUgASAANgIAIAEoAgBBADYC9AQgASgCAEIANwPwASABJAULlwEBB38jBSEBIwVBEGokBSABQQRqIQMgASECIAFBDGoiBEEBIAAoAgR0NgIAIAAoAgghBSAAKAIEIQYgAUEIaiIHIAAoAgggACgCBEkEfyAFBSAGCzYCACADQQEgACgCBCAHKAIAa3Q2AgAgAiADKAIAIAQoAgBBA3RqNgIAIAIoAgAhAiAAKAIARQRAQQAhAgsgASQFIAILOwECfyMFIQIjBUEQaiQFIAIiAyABNgIAIAAoAgBFBEAgAiQFQQAPCyADKAIAIAAoAgxuIQAgAiQFIAALiRIBEX8jBSEHIwVBsAJqJAUgB0HIAWohBiAHQdAAaiEIIAdBxAFqIQkgB0HAAWoiBSAANgIAIAciACACNwMAIAdBvAFqIhIgAzYCACAHQbgBaiIMIAQ2AgAgEigCAEUEQCAFKAIAKALUBCEEIAUoAgAoAugBIQogDCgCACELIAApAwAhAiAIIAUoAgBB9ABqIgMpAgA3AgAgCCADKQIINwIIIAggAykCEDcCECAIIAMpAhg3AhggCCADKQIgNwIgIAggAykCKDcCKCAIIAMpAjA3AjAgCCADKQI4NwI4IAhBQGsgA0FAaykCADcCACAIIAMpAkg3AkggCCADKQJQNwJQIAggAykCWDcCWCAIIAMpAmA3AmAgBiABKQIANwIAIAYgASkCCDcCCCAGIAEpAhA3AhAgBiABKQIYNwIYIAYgASkCIDcCICAGIAEpAig3AiggBiABKQIwNwIwIAYgASkCODcCOCAGQUBrIAFBQGspAgA3AgAgBiABKQJINwJIIAYgASkCUDcCUCAGIAEpAlg3AlggBiABKQJgNwJgIAggBiAEIAogCyACENACBEAgBSgCACEDIAApAwAhAiAGIAEpAgA3AgAgBiABKQIINwIIIAYgASkCEDcCECAGIAEpAhg3AhggBiABKQIgNwIgIAYgASkCKDcCKCAGIAEpAjA3AjAgBiABKQI4NwI4IAZBQGsgAUFAaykCADcCACAGIAEpAkg3AkggBiABKQJQNwJQIAYgASkCWDcCWCAGIAEpAmA3AmAgCSADIAYgAhDRAjYCACAJKAIAIQAgByQFIAAPCwsgASgCRARAIAEgASgCBDYCWCABQcQAaiABQQRqENICIAEoAlAQ0wIhAiAFKAIAIAI3A7gDCyAHQcQAaiELIAdBQGshCiAHQTxqIQ0gB0HMAGoiA0EBQgEgASgCBK2GIAApAwBUBH5CASABKAIErYYFIAApAwALIgKnSwR/QQEFQgEgASgCBK2GIAApAwBUBH5CASABKAIErYYFIAApAwALIgKnCyIENgIAIAMoAgAhBCAHQcgAaiIIQYCACCADKAIASQR/QYCACAUgBAs2AgAgCyABKAIUQQNGBH9BAwVBBAs2AgAgCiAIKAIAIAsoAgBuNgIAIA0gCCgCACAKKAIAQQtsajYCACAHQThqIhMgDCgCAEEBRgR/IAgoAgAQogJBAWoFQQALIgQ2AgAgDCgCAEEBRgR/IAMoAgAgCCgCAGoFQQALIQQgB0EoaiEDIAdBDGohDCAHQQhqIQsgB0E0aiIPIAQ2AgAgB0EwaiIOIAFBBGpBARCtAjYCACAIKAIAIRAgBiABQcQAaiIEKQIANwIAIAYgBCkCCDcCCCAGIAQpAhA3AhAgB0EsaiIRIAYgEBDOAjYCACAHQYAwNgIkIAdB4McANgIgIAdBHGoiECAPKAIAIBMoAgBqNgIAIAYgAUHEAGoiBCkCADcCACAGIAQpAgg3AgggBiAEKQIQNwIQIAdBGGoiFCAGEM0CNgIAIAdBFGoiFSARKAIAQQxsNgIAIAdBEGoiBCAUKAIAQeD3AGogFSgCAGogDigCAGogDSgCAGogECgCAGo2AgACQCAFKAIAKALkASAEKAIASQRAIAUoAgAoAuwCBEAgCUFANgIAIAkoAgAhACAHJAUgAA8LIAUoAgBBADYC5AEgBSgCACgC4AEhDSAGIAUoAgBB4AJqIg4pAgA3AgAgBiAOKAIINgIIIA0gBhDvASAEKAIAIQ0gBiAFKAIAQeACaiIOKQIANwIAIAYgDigCCDYCCCANIAYQ7QEhBiAFKAIAIAY2AuABIAUoAgAoAuABBEAgBSgCACAEKAIANgLkASADIAUoAgAoAuABNgIAIAUoAgAgBSgCACgC4AE2AtgDIAUoAgAgBSgCACgC2ANB8CNqNgLcAyADIAUoAgAoAtwDQfAjajYCACAFKAIAIAMoAgA2AswEDAILIAlBQDYCACAJKAIAIQAgByQFIAAPCwsgBSgCAEH0AGoiBCABKQIANwIAIAQgASkCCDcCCCAEIAEpAhA3AhAgBCABKQIYNwIYIAQgASkCIDcCICAEIAEpAig3AiggBCABKQIwNwIwIAQgASkCODcCOCAEQUBrIAFBQGspAgA3AgAgBCABKQJINwJIIAQgASkCUDcCUCAEIAEpAlg3AlggBCABKQJgNwJgIAUoAgAgACkDAEIBfDcD8AEgBSgCAEIANwP4ASAFKAIAQgA3A4ACIAApAwBCf1EEQCAFKAIAQQA2ApQBCyAFKAIAIAgoAgA2AugBIAUoAgBBiAJqQgAQ6QEaIAUoAgBBATYCACAFKAIAQQA2AtwBIAUoAgAoAtgDEK8CIAMgBSgCACgCzARBgDBqNgIAIAEoAkQEQCAMQQEgASgCSHQ2AgAgAygCAEEAIAwoAgBBA3QQ9gcaIAUoAgAgAygCADYCrAMgAyAFKAIAKAKsAyAMKAIAQQN0ajYCACAFKAIAIAMoAgA2AsADIAMgBSgCACgCwAMgESgCAEEMbGo2AgAgBSgCACARKAIANgLEAyAFKAIAQZgDaiIAQgA3AwAgAEIANwMIIABBADYCEAsgAyAFKAIAQeADaiADKAIAIAFBBGogEigCAEEBELACNgIAIAUoAgAgAygCADYC8AIgAyAFKAIAKALwAiAKKAIAQQN0ajYCACAFKAIAIAMoAgA2AoADIAUoAgAgBSgCACgCgAMgCigCAGo2AoQDIAUoAgAgBSgCACgChAMgCigCAGo2AogDIAUoAgAgBSgCACgCiAMgCigCAGo2AvgCIAMgBSgCACgC+AIgCCgCAGo2AgAgASgCRARAIAtBASABKAJIIAEoAkxrdDYCACADKAIAQQAgCygCABD2BxogBSgCACADKAIANgKwAyADIAUoAgAoArADIAsoAgBqNgIAIAUoAgBBmANqEMsCCyAFKAIAQQBBABDUAhogBSgCACAPKAIANgLUBCAFKAIAIAMoAgA2AtAEIAUoAgAgEygCADYC6AQgBSgCACAFKAIAKALQBCAPKAIAajYC5AQgCUEANgIAIAkoAgAhACAHJAUgAAvuAgEFfyMFIQYjBUHQAGokBSAGQSxqIgggAjYCACAGQQxqIgkgAzYCACAGQQhqIgogBDYCACAGIgIgBTcDACAGQRBqIgQgAEEEaiIDKQIANwIAIAQgAykCCDcCCCAEIAMpAhA3AhAgBCADKAIYNgIYIAZBMGoiAyABQQRqIgcpAgA3AgAgAyAHKQIINwIIIAMgBykCEDcCECADIAcoAhg2AhggBCADENYCRQRAIAYkBUEADwsgBCAAQcQAaiIAKQIANwIAIAQgACkCCDcCCCAEIAApAhA3AhAgAyABQcQAaiIAKQIANwIAIAMgACkCCDcCCCADIAApAhA3AhAgBCADENcCRQRAIAYkBUEADwsgCCgCACEEIAkoAgAhByAKKAIAIQggAikDACEFIAMgAUEEaiIAKQIANwIAIAMgACkCCDcCCCADIAApAhA3AhAgAyAAKAIYNgIYIAQgByAIIAMgBRDYAkEARyEAIAYkBSAAC6EEAQV/IwUhBSMFQSBqJAUgBUEQaiIDIAA2AgAgBSIAIAI3AwAgBUEMaiIGQQFCASABKAIErYYgBSkDAFQEfkIBIAEoAgSthgUgACkDAAsiAqdLBH9BAQVCASABKAIErYYgACkDAFQEfkIBIAEoAgSthgUgACkDAAsiAqcLIgQ2AgAgBigCACEEIAVBCGoiB0GAgAggBigCAEkEf0GAgAgFIAQLNgIAIAMoAgAgBygCADYC6AEgAygCAEH0AGoiBCABKQIANwIAIAQgASkCCDcCCCAEIAEpAhA3AhAgBCABKQIYNwIYIAQgASkCIDcCICAEIAEpAig3AiggBCABKQIwNwIwIAQgASkCODcCOCAEQUBrIAFBQGspAgA3AgAgBCABKQJINwJIIAQgASkCUDcCUCAEIAEpAlg3AlggBCABKQJgNwJgIAMoAgAgACkDAEIBfDcD8AEgAygCAEIANwP4ASADKAIAQgA3A4ACIAApAwBCf1EEQCADKAIAQQA2ApQBCyADKAIAQQE2AgAgAygCAEEANgLcASABKAJERQRAIAMoAgBBAEEAENQCGiADKAIAQeADahDKAiADKAIAKALYAxCvAiADKAIAQYgCakIAEOkBGiAFJAVBAA8LIAMoAgBBmANqEMsCIAMoAgBBAEEAENQCGiADKAIAQeADahDKAiADKAIAKALYAxCvAiADKAIAQYgCakIAEOkBGiAFJAVBAAvYAgEDfyMFIQMjBUEQaiQFIANBDGoiAiAANgIAIANBCGoiBCABNgIAIANBBGoiASAEKAIAKAIANgIAIAIoAgAoAghFBEAgAigCAEEDNgIICyACKAIAKAIMRQRAIAIoAgBBwAA2AgwLIAMhACAEKAIAKAIYQQdPBEAgACAEKAIAKAIUIAIoAgAoAgxLBH8gBCgCACgCFAUgAigCACgCDAsiBDYCACACKAIAIAAoAgA2AgwLIAIoAgAoAgRFBEAgASgCAEEHayEAIAIoAgBBBiABKAIAQQdrSwR/QQYFIAALNgIECyACKAIAKAIQRQRAIAIoAgAgASgCACACKAIAKAIESQR/QQAFIAEoAgAgAigCACgCBGsLIgA2AhALIAIoAgAhACACKAIAKAIIIAIoAgAoAgRJBEAgAigCACAAKAIINgIIIAMkBQUgAigCACAAKAIENgIIIAMkBQsLNgIBfwF+IwUhASMFQRBqJAUgASAANgIAQuPIlb3Lm++NTyABKAIAQQFrrRDVAiECIAEkBSACC8QBAQR/IwUhAyMFQRBqJAUgA0EMaiEEIANBCGoiBSAANgIAIANBBGoiBiABNgIAIAMiACACNgIAIAUoAgAoAgBBAUcEQCAEQUQ2AgAgBCgCACEAIAMkBSAADwsgBSgCACgCuAEEfyAEQVg2AgAgBCgCACEAIAMkBSAABSAFKAIAIAYoAgA2AsgDIAUoAgAgACgCADYC0AMgBSgCACAAKAIANgLUAyAFKAIAQQA2AswDIARBADYCACAEKAIAIQAgAyQFIAALC4gBAQR/IwUhAiMFQSBqJAUgAkEQaiIDIAA3AwAgAkEIaiIEIAE3AwAgAiIFQgE3AwADQCAEKQMAQgBSBEAgBCkDAEIBg0IAUgRAIAUgBSkDACADKQMAfjcDAAsgBCAEKQMAQgGINwMAIAMgAykDACADKQMAfjcDAAwBCwsgBSkDACEAIAIkBSAACzcAIAAoAgggASgCCEYgACgCBCABKAIERnEgACgCGCABKAIYRnEgACgCEEEDRiABKAIQQQNGRnELbAACfwJAIAAoAgANACABKAIADQBBAQwBCyAAKAIAIAEoAgBGBH8gACgCBCABKAIERgR/IAAoAgggASgCCEYEfyAAKAIMIAEoAgxGBH8gACgCECABKAIQRgVBAAsFQQALBUEACwVBAAsLQQFxC6gCAQR/IwUhBSMFQSBqJAUgBUEcaiIGIAA2AgAgBUEYaiIHIAE2AgAgBUEUaiIIIAI2AgAgBSIAIAQ3AwBBAUIBIAMoAgCthiAAKQMAVAR+QgEgAygCAK2GBSAAKQMACyIEp0sEf0EBBUIBIAMoAgCthiAAKQMAVAR+QgEgAygCAK2GBSAAKQMACyIEpwshAiAFQQhqIQAgBUEQaiIBIAI2AgAgASgCACEDIAVBDGoiAkGAgAggASgCAEkEf0GAgAgFIAMLNgIAIAgoAgBBAUcEQCAAQQA2AgAgAigCACAHKAIATSAAKAIAIAYoAgBNcSEAIAUkBSAADwsgACABKAIAIAIoAgBqNgIAIAIoAgAgBygCAE0gACgCACAGKAIATXEhACAFJAUgAAtIAQJ/IwUhAiMFQRBqJAUgAkEEaiIDIAA2AgAgAiABNgIAIAMoAgAgAigCAEH//wNxEJoCIAMoAgAgAigCAEEQdjoAAiACJAULlQMBCn8jBSEBIwVBMGokBSABQQRqIQUgASEGIAFBIGoiAiAANgIAIAFBHGoiBCACKAIAKAIANgIAIAFBGGoiByACKAIAKAIQNgIAIAFBFGoiCSACKAIAKAIYNgIAIAFBEGoiCCACKAIAKAIUNgIAIAFBDGoiCiACKAIAKAIEIAIoAgAoAgBrQQhtNgIAIAFBCGoiA0EANgIAA0AgAygCACAKKAIASQRAIAUgBCgCACADKAIAQQN0ai8BBDYCACAGIAQoAgAgAygCAEEDdGovAQY2AgAgBSgCABDbAkH/AXEhACAHKAIAIAMoAgBqIAA6AAAgBCgCACADKAIAQQN0aigCABDUAUH/AXEhACAJKAIAIAMoAgBqIAA6AAAgBigCABDcAkH/AXEhACAIKAIAIAMoAgBqIAA6AAAgAyADKAIAQQFqNgIADAELCyACKAIAKAIcQQFGBEAgBygCACACKAIAKAIgakEjOgAACyACKAIAKAIcQQJHBEAgASQFDwsgCCgCACACKAIAKAIgakE0OgAAIAEkBQtKAQF/IwUhASMFQRBqJAUgASAANgIAIAEoAgAhACABKAIAQT9LBH8gABDUAUETaiEAIAEkBSAABSAAQbAfai0AACEAIAEkBSAACwtLAQF/IwUhASMFQRBqJAUgASAANgIAIAEoAgAhACABKAIAQf8ASwR/IAAQ1AFBJGohACABJAUgAAUgAEHwH2otAAAhACABJAUgAAsLwgIBA38jBSEMIwVBQGskBSAMQTBqIQ0gDEEsaiIOIAA2AgAgDEEoaiIAIAE2AgAgDEEkaiIBIAI2AgAgDEEgaiICIAM2AgAgDEEcaiIDIAQ2AgAgDEEYaiIEIAU2AgAgDEEUaiIFIAY2AgAgDEEQaiIGIAc2AgAgDEEMaiIHIAg2AgAgDEEIaiIIIAk2AgAgDEEEaiIJIAo2AgAgDCALNgIAIAwoAgAEfyANIA4oAgAgACgCACABKAIAIAIoAgAgAygCACAEKAIAIAUoAgAgBigCACAHKAIAIAgoAgAgCSgCABDeAjYCACANKAIAIQAgDCQFIAAFIA0gDigCACAAKAIAIAEoAgAgAigCACADKAIAIAQoAgAgBSgCACAGKAIAIAcoAgAgCCgCACAJKAIAEN4CNgIAIA0oAgAhACAMJAUgAAsLlwsBCn8jBSELIwVB0AFqJAUgC0HAAWohDSALQShqIgwgADYCACALQSRqIgAgATYCACALQSBqIgEgAjYCACALQRxqIgIgAzYCACALQRhqIgMgBDYCACALQRRqIgQgBTYCACALQRBqIgUgBjYCACALQQxqIgYgBzYCACALQQhqIgcgCDYCACALQQRqIgggCTYCACALIAo2AgAgACgCACEAIAEoAgAhASACKAIAIQIgAygCACEDIAQoAgAhBCAFKAIAIQUgBigCACEGIAcoAgAhByAIKAIAIQ4gCygCACEPIAtBvAFqIhAgDCgCADYCACALQbgBaiIMIAA2AgAgC0G0AWoiESABNgIAIAtBsAFqIgkgAjYCACALQawBaiICIAM2AgAgC0GoAWoiCCAENgIAIAtBpAFqIgQgBTYCACALQaABaiIKIAY2AgAgC0GcAWoiAyAHNgIAIAtBmAFqIgEgDjYCACALQZQBaiISIA82AgAgC0HMAGoiBSALQYABaiIAIBAoAgAgDCgCABCAAjYCACAFKAIAEM0BBEAgDUG6fzYCACANKAIAIQAgCyQFIAAPCyALQfAAaiITIBEoAgAgCSgCACABKAIAQQFrai0AABCBAiALQeAAaiIRIAIoAgAgCCgCACABKAIAQQFrai0AABCBAiALQdAAaiIUIAQoAgAgCigCACABKAIAQQFrai0AABCBAiAAIAMoAgAgASgCAEEDdGpBfGovAQAgCigCACABKAIAQQFrai0AAEECdEGwNGooAgAQiAIgABCEAiAAIAMoAgAgASgCAEEDdGpBfmovAQAgCSgCACABKAIAQQFrai0AAEECdEHANWooAgAQiAIgABCEAiALQcgAaiECIAtBxABqIQQgEigCAARAIAIgCCgCACABKAIAQQFrai0AADYCACAEIAIoAgAgAigCAEEYSQR/IAIoAgAFQRgLazYCACAEKAIABEAgACADKAIAIAEoAgBBAWtBA3RqKAIAIAQoAgAQiAIgABCEAgsgACADKAIAIAEoAgBBAWtBA3RqKAIAIAQoAgB2IAIoAgAgBCgCAGsQiAIFIAAgAygCACABKAIAQQFrQQN0aigCACAIKAIAIAEoAgBBAWtqLQAAEIgCCyALQcYBaiEMIAtBxQFqIQ4gC0HEAWohDyALQTxqIQUgC0E4aiEEIAtBNGohBiALQTBqIQcgC0EsaiEQIAAQhAIgC0FAayICIAEoAgBBAms2AgADQCACKAIAIAEoAgBJBEAgDCAKKAIAIAIoAgBqLAAAOgAAIA4gCCgCACACKAIAaiwAADoAACAPIAkoAgAgAigCAGosAAA6AAAgBSAMLQAAQQJ0QbA0aigCADYCACAEIA4tAAA2AgAgBiAPLQAAQQJ0QcA1aigCADYCACAAIBEgDi0AABCCAiAAIBMgDy0AABCCAiAAEIQCIAAgFCAMLQAAEIICIAAQhAIgACADKAIAIAIoAgBBA3RqLwEEIAUoAgAQiAIgBSgCACAGKAIAakEYSwRAIAAQhAILIAAgAygCACACKAIAQQN0ai8BBiAGKAIAEIgCIAAQhAIgEigCAARAIAcgBCgCACAEKAIAQRhJBH8gBCgCAAVBGAtrNgIAIAcoAgAEQCAAIAMoAgAgAigCAEEDdGooAgAgBygCABCIAiAAEIQCCyAAIAMoAgAgAigCAEEDdGooAgAgBygCAHYgBCgCACAHKAIAaxCIAgUgACADKAIAIAIoAgBBA3RqKAIAIAQoAgAQiAILIAAQhAIgAiACKAIAQX9qNgIADAELCyAAIBMQhQIgACAREIUCIAAgFBCFAiAQIAAQhgI2AgAgECgCAAR/IA0gECgCADYCACANKAIAIQAgCyQFIAAFIA1Bun82AgAgDSgCACEAIAskBSAACwtFAQJ/IwUhAiMFQRBqJAUgAkEEaiIDIAA2AgAgAiABNgIAIAIoAgBBAEdBJGxB4B5qIAMoAgBBAnRqKAIAIQAgAiQFIAALnDIBeX8jBSEGIwVBgARqJAUgBkH0A2ohPCAGQfADaiE9IAZB7ANqISwgBkHoA2ohbyAGQeQDaiFwIAZB4ANqIS0gBkHcA2ohcSAGQdgDaiEuIAZB1ANqISQgBkHQA2ohHCAGQcwDaiE+IAZByANqIQcgBkHEA2ohEyAGQcADaiFWIAZBvANqIT8gBkG4A2ohJSAGQbQDaiFAIAZBsANqIQsgBkGsA2ohDyAGQagDaiEvIAZBpANqIVcgBkGgA2ohHSAGQZwDaiFYIAZBmANqIUEgBkGUA2ohWSAGQZADaiEXIAZBjANqIVogBkGIA2ohWyAGQYQDaiFyIAZBgANqIUIgBkH8AmohQyAGQfgCaiEwIAZB9AJqIXMgBkHwAmohdCAGQewCaiExIAZB6AJqIXUgBkHkAmohMiAGQeACaiEmIAZB3AJqIR4gBkHYAmohRCAGQdQCaiEIIAZB0AJqIRQgBkHMAmohXCAGQcgCaiFFIAZBxAJqIScgBkHAAmohRiAGQbwCaiEMIAZBuAJqIRAgBkG0AmohMyAGQbACaiFdIAZBrAJqIR8gBkGoAmohXiAGQaQCaiFHIAZBoAJqIV8gBkGcAmohGCAGQZgCaiFgIAZBlAJqIWEgBkGQAmohdiAGQYwCaiFIIAZBiAJqIUkgBkGEAmohNCAGQYACaiF3IAZB/AFqIXggBkH4AWohNSAGQfQBaiF5IAZB8AFqITYgBkHsAWohKCAGQegBaiEgIAZB5AFqIUogBkHgAWohCSAGQdwBaiEVIAZB2AFqIWIgBkHUAWohSyAGQdABaiEpIAZBzAFqIUwgBkHIAWohDSAGQcQBaiERIAZBwAFqITcgBkG8AWohYyAGQbgBaiEhIAZBtAFqIWQgBkGwAWohTSAGQawBaiFlIAZBqAFqIRkgBkGkAWohZiAGQaABaiFnIAZBnAFqIXogBkGYAWohTiAGQZQBaiFPIAZBkAFqITggBkGMAWoheyAGQYgBaiF8IAZBhAFqITkgBkGAAWohfSAGQfwAaiE6IAZB+ABqISogBkH0AGohIiAGQfAAaiFQIAZB7ABqIQogBkHoAGohFiAGQeQAaiFoIAZB4ABqIVEgBkHcAGohKyAGQdgAaiFSIAZB1ABqIQ4gBkHQAGohEiAGQcwAaiE7IAZByABqIWkgBkHEAGohIyAGQUBrIWogBkE8aiFTIAZBOGohayAGQTRqIRogBkEwaiFsIAZBLGohbSAGQShqIX4gBkEkaiEbIAZBIGoi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IFIoAgBJBEAgaiAKKAIAIDkoAgAgOigCABC7AjYCACBTIAooAgAgIigCAGs2AgAgayAqKAIAIGooAgBBAnRqKAIANgIAIBogIigCACBrKAIAajYCACAqKAIAIGooAgBBAnRqIFMoAgA2AgACQCAOKAIAQQBLIAooAgBBAWogDigCAGsQ0AEgCigCAEEBahDQAUZxBEAgIyAKKAIAQQVqIAooAgBBBWogDigCAGsgKygCABC8AkEEajYCACAKIAooAgBBAWo2AgAgTygCACAKKAIAIBYoAgBrIBYoAgBBACAjKAIAQQNrEPkCBSBrKAIAIGgoAgBLBEAgGigCABDQASAKKAIAENABRgRAICMgCigCAEEEaiAaKAIAQQRqICsoAgAQvAJBBGo2AgAgbCAKKAIAIBooAgBrNgIAA0ACQCAKKAIAIBYoAgBLIBooAgAgUSgCAEtxRQ0AIAooAgBBf2otAAAgGigCAEF/ai0AAEcNACAKIAooAgBBf2o2AgAgGiAaKAIAQX9qNgIAICMgIygCAEEBajYCAAwBCwsgEiAOKAIANgIAIA4gbCgCADYCACBPKAIAIAooAgAgFigCAGsgFigCACBsKAIAQQJqICMoAgBBA2sQ+QIMAwsLIAogCigCACAKKAIAIBYoAgBrQQh1IH0oAgBqajYCAAwDCwsgCiAKKAIAICMoAgBqNgIAIBYgCigCADYCAAJAIAooAgAgUigCAE0EQCBTKAIAQQJqIQAgKigCACAiKAIAIFMoAgBqQQJqIDkoAgAgOigCABC7AkECdGogADYCACAKKAIAQX5qICIoAgBrIQAgKigCACAKKAIAQX5qIDkoAgAgOigCABC7AkECdGogADYCAANAIAooAgAgUigCAEsNAiASKAIAQQBLIAooAgAQ0AEgCigCACASKAIAaxDQAUZxRQ0CIG0gCigCAEEEaiAKKAIAQQRqIBIoAgBrICsoAgAQvAJBBGo2AgAgfiASKAIANgIAIBIgDigCADYCACAOIH4oAgA2AgAgCigCACAiKAIAayEAICooAgAgCigCACA5KAIAIDooAgAQuwJBAnRqIAA2AgAgTygCAEEAIBYoAgBBACBtKAIAQQNrEPkCIAogCigCACBtKAIAajYCACAWIAooAgA2AgAMAAsACwsMAQsLIA4oAgAhACA7KAIAIQEgOCgCACAO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ai0AAEcNAyAHIAcoAgBBf2o2AgAgIiAiKAIAQX9qNgIAIA0gDSgCAEEBajYCAAwACwALCyAHIAcoAgAgBygCACALKAIAa0EIdUEBamo2AgAMAwsgFyAMKAIANgIAIAwgSigCADYCACBgKAIAIAcoAgAgCygCAGsgCygCACBKKAIAQQJqIA0oAgBBA2sQ+QILIAcgBygCACANKAIAajYCACALIAcoAgA2AgACQCAHKAIAIGIoAgBNBEAgNygCAEECaiEAIDUoAgAgGygCACA3KAIAakECaiBHKAIAIEYoAgAQuwJBAnRqIAA2AgAgHygCACAbKAIAIDcoAgBqQQJqIDQoAgBBCBC7AkECdGogADYCACAHKAIAQX5qIBsoAgBrIQAgNSgCACAHKAIAQX5qIEcoAgAgRigCABC7AkECdGogADYCACAfKAIAIAcoAgBBfmogNCgCAEEIELsCQQJ0aiAANgIAA0AgBygCACBiKAIASw0CIBcoAgBBAEsgBygCABDQASAHKAIAIBcoAgBrENABRnFFDQIgdiAHKAIAQQRqIAcoAgBBBGogFygCAGsgICgCABC8AkEEajYCACCUASAXKAIANgIAIBcgDCgCADYCACAMIJQBKAIANgIAIAcoAgAgGygCAGshACA1KAIAIAcoAgAgRygCACBGKAIAELsCQQJ0aiAANgIAIAcoAgAgGygCAGshACAfKAIAIAcoAgAgNCgCAEEIELsCQQJ0aiAANgIAIGAoAgBBACALKAIAQQAgdigCAEEDaxD5AiAHIAcoAgAgdigCAGo2AgAgCyAHKAIANgIADAALAAsLDAELCyAMKAIAIQAgSSgCACEBIEUoAgAgDCgCAAR/IAAFIAELNgIAIBcoAgAhACBJKAIAIQEgRSgCACAXKAIABH8gAAUgAQs2AgQgMyAgKAIAIAsoAgBrNgIAIDMoAgAhACAGJAUgAA8LIG0oAgAhBCABKAIAIQEgACgCACEAIAIoAgAhAiADKAIAIQMgUiBsKAIANgIAIGYgBDYCACBTIAE2AgAggAEgADYCACCYASACNgIAIJkBIAM2AgAgVEEFNgIAICkgUigCACgCJDYCACA8IIABKAIAKAIINgIAID0gUigCACgCLDYCACBVIIABKAIAKAIENgIAIB0gUigCACgCBDYCACBnIJgBKAIANgIAIAkgZygC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BE8EQCAcKAIAIB0oAgBKBEAgASAPKAIANgIAIAIgDigCADYCACADIAAoAgA2AgAMAgsLIBQoAgBBAkcNAiAAKAIAIA0oAgBPDQIgACAAKAIAQQFqNgIAAkAgAigCAARAIAcoAgBBAEsgACgCABDQASAAKAIAIAcoAgBrENABRnEEQCAQIAAoAgBBBGogACgCAEEEaiAHKAIAayAEKAIAELwCQQRqNgIAIB4gECgCAEECdDYCACAfIAEoAgBBAnQgAigCAEEBahDUAWtBAWo2AgAgECgCAEEETwRAIB4oAgAgHygCAEwNAyABIBAoAgA2AgAgAkEANgIAIAMgACgCADYCAAsLCwsgEUH/wdcvNgIAIBIgCigCACATKAIAIAAoAgAgBCgCACARIBYoAgBBB3FBuAFqEQkANgIAICAgEigCAEECdCARKAIAQQFqENQBazYCACAhIAEoAgBBAnQgAigCAEEBahDUAWtBB2o2AgAgEigCAEEESQ0CICAoAgAgISgCAEwNAiABIBIoAgA2AgAgAiARKAIANgIAIAMgACgCADYCAAwACwALCyACKAIABEADQAJAIAMoAgAgBSgCAEsgAygCACACKAIAQQJrayAVKAIAS3FFDQAgAygCAEF/ai0AACADKAIAIAIoAgBrLQABRw0AIAMgAygCAEF/ajYCACABIAEoAgBBAWo2AgAMAQsLIAggBygCADYCACAHIAIoAgBBAms2AgALCyAiIAMoAgAgBSgCAGs2AgAgGSgCACAiKAIAIAUoAgAgAigCACABKAIAQQNrEPkCIAAgAygCACABKAIAaiIjNgIAIAUgIzYCAANAAkAgACgCACANKAIATSAIKAIAQQBLcUUNACAAKAIAENABIAAoAgAgCCgCAGsQ0AFHDQAgASAAKAIAQQRqIAAoAgBBBGogCCgCAGsgBCgCABC8AkEEajYCACACIAgoAgA2AgAgCCAHKAIANgIAIAcgAigCADYCACAZKAIAQQAgBSgCAEEAIAEoAgBBA2sQ+QIgACAAKAIAIAEoAgBqNgIAIAUgACgCADYCAAwBCwsMAQsLIAcoAgAhACAMKAIAIQEgCygCACAHKAIABH8gAAUgAQs2AgAgCCgCACEAIAwoAgAhASALKAIAIAgoAgAEfyAABSABCzYCBCAEKAIAIAUoAgBrIQAgBiQFIAALjREB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IRwgBkHoD2ohkQIgBkHkD2ohugMgBkHgD2ohnQEgBkHcD2ohkgIgBkHYD2ohkwIgBkHUD2oh2QEgBkHQD2ohUyAGQcwPaiGUAiAGQcgPaiGVAiAGQcQPaiHsAiAGQcAPaiGWAiAGQbwPaiHaASAGQbgPaiHbASAGQbQPaiGXAiAGQbAPaiG7AyAGQawPaiEvIAZBqA9qIe0CIAZBpA9qIWogBkGgD2ohvAMgBkGcD2ohayAGQZgPaiGeASAGQZQPaiHuAiAGQZAPaiFUIAZBjA9qIe8CIAZBiA9qIWwgBkGED2ohbSAGQYAPaiG9AyAGQfwOaiG+AyAGQfgOaiHcASAGQfQOaiECIAZB8A5qIZ8BIAZB7A5qIZgCIAZB6A5qIUMgBkHkDmohoAEgBkHgDmohFCAGQdwOaiFEIAZB2A5qIZkCIAZB1A5qIb8DIAZB0A5qIZoCIAZBzA5qIW4gBkHIDmohwAMgBkHEDmohoQEgBkHADmoh8AIgBkG8DmohogEgBkG4DmohKCAGQbQOaiHBAyAGQbAOaiE6IAZBrA5qIfECIAZBqA5qIfICIAZBpA5qIR0gBkGgDmohmwIgBkGcDmohwgMgBkGYDmohowEgBkGUDmohnAIgBkGQDmohnQIgBkGMDmoh3QEgBkGIDmohVSAGQYQOaiGeAiAGQYAOaiGfAiAGQfwNaiHzAiAGQfgNaiGgAiAGQfQNaiHeASAGQfANaiHfASAGQewNaiGhAiAGQegNaiHDAyAGQeQNaiEwIAZB4A1qIfQCIAZB3A1qIW8gBkHYDWohxAMgBkHUDWohcCAGQdANaiGkASAGQcwNaiH1AiAGQcgNaiFWIAZBxA1qIfYCIAZBwA1qIXEgBkG8DWohciAGQbgNaiHFAyAGQbQNaiHGAyAGQbANaiHgASAGQawNaiEDIAZBqA1qIaUBIAZBpA1qIaICIAZBoA1qIUUgBkGcDWohpgEgBkGYDWohFSAGQZQNaiFGIAZBkA1qIaMCIAZBjA1qIccDIAZBiA1qIaQCIAZBhA1qIXMgBkGADWohyAMgBkH8DGohpwEgBkH4DGoh9wIgBkH0DGohqAEgBkHwDGohKSAGQewMaiHJAyAGQegMaiE7IAZB5AxqIfgCIAZB4AxqIfkCIAZB3AxqIR4gBkHYDGohpQIgBkHUDGohygMgBkHQDGohqQEg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NgIAIJIBKAIAIKADKAIASyAaKAIAIJIBKAIAaiBQKAIARnIEQCBPKAIAIC4oAgBBAWo2Ahgg1AJBATYCAAwFCwsLCwsgoQMoAgAgogMoAgBBAnRqIC4oAgA2AgACQAJAAkADQAJAIKQDIKQDKAIAIgdBf2o2AgAgB0UNACAjKAIAINwCKAIATQ0AIP4BINcCKAIAICMoAgAgzQEoAgBxQQN0ajYCACDYAigCACEHINkCKAIAIQggDyDYAigCACDZAigCAEkEfyAHBSAICzYCAAJAAkAg1QIoAgBFDQAgIygCACAPKAIAaiBiKAIATw0AIM8BIPsBKAIAICMoAgBqNgIAIBooAgAgDygCAGogzwEoAgAgDygCAGogUCgCACDaAigCACDbAigCABC9AiEHIA8gDygCACAHajYCACAjKAIAIA8oAgBqIGIoAgBPBEAgzwEgzAEoAgAgIygCAGo2AgALDAELIM8BIMwBKAIAICMoAgBqNgIAIBooAgAgDygCAGogzwEoAgAgDygCAGogUCgCABC8AiEHIA8gDygCACAHajYCAAsgDygCACCPASgCAEsEQCAPKAIAIN0CKAIAICMoAgBrSwRAIN0CICMoAgAgDygCAGo2AgALII8BIA8oAgA2AgAgjgEoAgAgNigCAEEDdGogLigCACAjKAIAa0ECajYCACCOASgCACA2KAIAQQN0aiAPKAIANgIEIDYgNigCAEEBajYCACAPKAIAQYAgSw0BIBooAgAgDygCAGogUCgCAEYNAQsgIygCACEHIM8BKAIAIA8oAgBqLQAAIBooAgAgDygCAGotAABIBEAg/AEoAgAgBzYCACDYAiAPKAIANgIAICMoAgAgowMoAgBNDQMg/AEg/gEoAgBBBGo2AgAgIyD+ASgCACgCBDYCAAUg/QEoAgAgBzYCACDZAiAPKAIANgIAICMoAgAgowMoAgBNDQQg/QEg/gEoAgA2AgAgIyD+ASgCACgCADYCAAsMAQsLDAILIPwBIPsDNgIADAELIP0BIPsDNgIACyD9ASgCAEEANgIAIPwBKAIAQQA2AgAgTygCACDdAigCAEEIazYCGCDUAiA2KAIANgIACyDQASDUAigCADYCAAwECyCTASgCACEHIJQBKAIAIQgg0QEoAgAhCSDSASgCACEKIIECKAIAIQwgggIoAgAhECCDAigCACERIIQCKAIAIRIgSSBkKAIANgIAILgBIAc2AgAgFyAINgIAIEogCTYCACC3AiAKNgIAIN8DIAw2AgAguAIgEDYCACB/IBE2AgAg4AMgEjYCACC5AUEGNgIAIIsDILgBKAIAKAIUQf8fSQR/ILgBKAIAKAIUBUH/HwsiBzYCACC6ASBJKAIAKAIENgIAICsgFygCACC6ASgCAGs2AgAg4QMguAEoAgAoAgg2AgAgPSC5ASgCAEEDRgR/QQMFQQQLNgIAIIwDIEkoAgAoAiQ2AgAgjQMgFygCACDhAygCACC5ASgCABC7AjYCACAgIIwDKAIAII0DKAIAQQJ0aigCADYCACC5AiBJKAIAKAIsNgIAIOIDILgBKAIAKAIEQQFrNgIAILsBQQEg4gMoAgB0QQFrNgIAILoCQQA2AgAguwJBADYCACDvASBJKAIAKAIINgIAIFwgSSgCACgCDDYCACC8AiDvASgCACBcKAIAajYCACC9AiC6ASgCACBcKAIAajYCACCOAyC7ASgCACArKAIATwR/QQAFICsoAgAguwEoAgBrCyIHNgIAIL4CIEkoAgAoAhA2AgAg8AEguQIoAgAgKygCACC7ASgCAHFBA3RqNgIAIPEBILkCKAIAICsoAgAguwEoAgBxQQN0akEEajYCACC/AiArKAIAQQlqNgIAIDNBADYCACCPA0EBILgBKAIAKAIMdDYCACCAASDgAygCAEEBazYCACDkAyC4AigCAEEDajYCACCBASC4AigCADYCAAJAAkACQANAIIEBKAIAIOQDKAIATw0CIN8DKAIAIQcgvAEggQEoAgBBA0YEfyAHKAIAQQFrBSAHIIEBKAIAQQJ0aigCAAsiBzYCACCQAyArKAIAILwBKAIAazYCACBdQQA2AgAgvAEoAgBBAWsgKygCACBcKAIAa0kEQCAXKAIAID0oAgAQ8QIgFygCACC8ASgCAGsgPSgCABDxAkYEQCBdIBcoAgAgPSgCAGogFygCACA9KAIAaiC8ASgCAGsgSigCABC8AiA9KAIAajYCAAsFIJEDIO8BKAIAIJADKAIAajYCACC3AigCAARAILwBKAIAQQFrICsoAgAgvgIoAgBrSSBcKAIAQQFrIJADKAIAa0EDT3EEQCAXKAIAID0oAgAQ8QIgkQMoAgAgPSgCABDxAkYEQCBdIBcoAgAgPSgCAGogkQMoAgAgPSgCAGogSigCACC8AigCACC9AigCABC9AiA9KAIAajYCAAsLCwsgXSgCACCAASgCAEsEQCCAASBdKAIANgIAIH8oAgAgMygCAEEDdGoggQEoAgAguAIoAgBrNgIAIH8oAgAgMygCAEEDdGogXSgCADYCBCAzIDMoAgBBAWo2AgAgXSgCACCLAygCAEsgFygCACBdKAIAaiBKKAIARnINAgsggQEggQEoAgBBAWo2AgAMAAsACyC2AiAzKAIANgIADAELILkBKAIAQQNGBEAggAEoAgAguQEoAgBJBEAgggEgSSgCACAXKAIAEPICNgIAIIIBKAIAIL4CKAIASyArKAIAIIIBKAIAa0GAgBBJcQRAAkACQCC3AigCAEUNACCCASgCACBcKAIATw0AIOYDIO8BKAIAIIIBKAIAajYCACCDASAXKAIAIOYDKAIAIEooAgAgvAIoAgAgvQIoAgAQvQI2AgAMAQsg5QMgugEoAgAgggEoAgBqNgIAIIMBIBcoAgAg5QMoAgAgSigCABC8AjYCAAsggwEoAgAguQEoAgBPBEAggAEggwEoAgA2AgAgfygCACArKAIAIIIBKAIAa0ECajYCACB/KAIAIIMBKAIANgIEIDNBATYCACCDASgCACCLAygCAEsgFygCACCDASgCAGogSigCAEZyBEAgSSgCACArKAIAQQFqNgIYILYCQQE2AgAMBQsLCwsLIIwDKAIAII0DKAIAQQJ0aiArKAIANgIAAkACQAJAA0ACQCCPAyCPAygCACIHQX9qNgIAIAdFDQAgICgCACC+AigCAE0NACDyASC5AigCACAgKAIAILsBKAIAcUEDdGo2AgAgugIoAgAhByC7AigCACEIIAsgugIoAgAguwIoAgBJBH8gBwUgCAs2AgACQAJAILcCKAIARQ0AICAoAgAgCygCAGogXCgCAE8NACC9ASDvASgCACAgKAIAajYCACAXKAIAIAsoAgBqIL0BKAIAIAsoAgBqIEooAgAgvAIoAgAgvQIoAgAQvQIhByALIAsoAgAgB2o2AgAgICgCACALKAIAaiBcKAIATwRAIL0BILoBKAIAICAoAgBqNgIACwwBCyC9ASC6ASgCACAgKAIAajYCACAXKAIAIAsoAgBqIL0BKAIAIAsoAgBqIEooAgAQvAIhByALIAsoAgAgB2o2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ASAlKAIAIIUCKAIAazYCAAsLILADIIUCKAIANgIAILEDIN8CKAIANgIAIGYgASgCADYCAANAIOQCIAAoAgAgZigCAEEcbGooAgg2AgAgiwQgACgCACBmKAIAQRxsaigCBDYCACAAKAIAIGYoAgBBHGxqILADKAIANgIIIAAoAgAgZigCAEEcbGogsQMoAgA2AgQgsAMg5AIoAgA2AgAgsQMgiwQoAgA2AgAg5AIoAgAgZigCAE0EQCBmIGYoAgAg5AIoAgBrNgIADAELCyBnQQA2AgADQCBnKAIAICUoAgBJBEAg5QIgJCgCACBSKAIAazYCACDWASAAKAIAIGcoAgBBHGxqKAIINgIAINcBIAAoAgAgZygCAEEcbGooAgQ2AgAg1gEoAgBBAUYEQCAkICQoAgBBAWo2AgAgZyBnKAIAQQFqNgIADAILIGcgZygCACDWASgCAGo2AgAgJCAkKAIAINYBKAIAajYCACDXASgCAEEDTwRAICYoAgAgJigCACgCBDYCCCAmKAIAICYoAgAoAgA2AgQgJigCACDXASgCAEECazYCAAUgigIg1wEoAgAg5QIoAgBFajYCACCKAigCAARAICYoAgAhByCMBCCKAigCAEEDRgR/IAcoAgBBAWsFIAcgigIoAgBBAnRqKAIACyIHNgIAIIoCKAIAQQJPBEAgJigCACAmKAIAKAIENgIICyAmKAIAICYoAgAoAgA2AgQgJigCACCMBCgCADYCAAsLIDgoAgAg5QIoAgAgUigCACDXASgCACDWASgCABD4AiCOBCgCACDlAigCACBSKAIAINcBKAIAINYBKAIAQQNrEPkCIFIgJCgCADYCAAwBCwsgOCgCABD6AgwBCwsgjQIoAgAgUigCAGshACAGJAUgAAuM1gEBiQR/IwUhBiMFQeAQaiQFIAZBFGoiCyAANgIAIAZBEGoiACABNgIAIAZBDGoiASACNgIAIAZBCGoiAiADNgIAIAZBBGoiAyAENgIAIAYgBTYCACAAKAIAIQAgASgCACEBIAIoAgAhAiADKAIAIQMgBigCACEEIAZBsAJqImggCygCADYCACAGQawCaiKOBCAANgIAIAZBqAJqIiYgATYCACAGQaQCaiLYASACNgIAIAZBoAJqIgcgAzYCACAGQZwCaiIIIAQ2AgAgBkGYAmoijAJBAjYCACAGQZQC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IDYoAgBBA3RqIJABKAIAINYCKAIAazYCACCOASgCACA2KAIAQQN0aiBjKAIANgIEIDYgNigCAEEBajYCACBjKAIAIKADKAIASyAaKAIAIGMoAgBqIFAoAgBGcg0CCyCQASCQASgCAEEBajYCAAwACwALINQCIDYoAgA2AgAMAQsgywEoAgBBA0YEQCCPASgCACDLASgCAEkEQCCRASBPKAIAIBooAgAQ8gI2AgAgkQEoAgAg3AIoAgBLIC4oAgAgkQEoAgBrQYCAEElxBEACQAJAINUCKAIARQ0AIJEBKAIAIGIoAgBPDQAg/gMg+wEoAgAgkQEoAgBqNgIAIJIBIBooAgAg/gMoAgAgUCgCACDaAigCACDbAigCABC9AjYCAAwBCyD9AyDMASgCACCRASgCAGo2AgAgkgEgGigCACD9AygCACBQKAIAELwCNgIACyCSASgCACDLASgCAE8EQCCPASCSASgCADYCACCOASgCACAuKAIAIJEBKAIAa0ECajYCACCOASgCACCSASgCADYCBCA2QQE2AgAgkgEoAgAgoAMoAgBLIBooAgAgkgEoAgBqIFAoAgBGcgRAIE8oAgAgLigCAEEBajYCGCDUAkEBNgIADAULCwsLCyChAygCACCiAygCAEECdGogLigCADYCAAJAAkACQANAAkAgpAMgpAMoAgAiB0F/ajYCACAHRQ0AICMoAgAg3AIoAgBNDQAg/gEg1wIoAgAgIygCACDNASgCAHFBA3RqNgIAINgCKAIAIQcg2QIoAgAhCCAPINgCKAIAINkCKAIASQR/IAcFIAgLNgIAAkACQCDVAigCAEUNACAjKAIAIA8oAgBqIGIoAgBPDQAgzwEg+wEoAgAgIygCAGo2AgAgGigCACAPKAIAaiDPASgCACAPKAIAaiBQKAIAINoCKAIAINsCKAIAEL0CIQcgDyAPKAIAIAdqNgIAICMoAgAgDygCAGogYigCAE8EQCDPASDMASgCACAjKAIAajYCAAsMAQsgzwEgzAEoAgAgIygCAGo2AgAgGigCACAPKAIAaiDPASgCACAPKAIAaiBQKAIAELwCIQcgDyAPKAIAIAdqNgIACyAPKAIAII8BKAIASwRAIA8oAgAg3QIoAgAgIygCAGtLBEAg3QIgIygCACAPKAIAajYCAAsgjwEgDygCADYCACCOASgCACA2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KAIASyAXKAIAIIMBKAIAaiBKKAIARnIEQCBJKAIAICsoAgBBAWo2AhggtgJBATYCAAwFCwsLCwsgjAMoAgAgjQMoAgBBAnRqICsoAgA2AgACQAJAAkADQAJAII8DII8DKAIAIgdBf2o2AgAgB0UNACAgKAIAIL4CKAIATQ0AIPIBILkCKAIAICAoAgAguwEoAgBxQQN0ajYCACC6AigCACEHILsCKAIAIQggCyC6AigCACC7AigCAEkEfyAHBSAICzYCAAJAAkAgtwIoAgBFDQAgICgCACALKAIAaiBcKAIATw0AIL0BIO8BKAIAICAoAgBqNgIAIBcoAgAgCygCAGogvQEoAgAgCygCAGogSigCACC8AigCACC9AigCABC9AiEHIAsgCygCACAHajYCACAgKAIAIAsoAgBqIFwoAgBPBEAgvQEgugEoAgAgICgCAGo2AgALDAELIL0BILoBKAIAICAoAgBqNgIAIBcoAgAgCygCAGogvQEoAgAgCygCAGogSigCABC8AiEHIAsgCygCACAHajYCAAsgCygCACCAASgCAEsEQCALKAIAIL8CKAIAICAoAgBrSwRAIL8CICAoAgAgCygCAGo2AgALIIABIAsoAgA2AgAgfygCACAzKAIAQQN0aiArKAIAICAoAgBrQQJqNgIAIH8oAgAgMygCAEEDdGogCygCADYCBCAzIDMoAgBBAWo2AgAgCygCAEGAIEsNASAXKAIAIAsoAgBqIEooAgBGDQELICAoAgAhByC9ASgCACALKAIAai0AACAXKAIAIAsoAgBqLQAASARAIPABKAIAIAc2AgAgugIgCygCADYCACAgKAIAII4DKAIATQ0DIPABIPIBKAIAQQRqNgIAICAg8gEoAgAoAgQ2AgAFIPEBKAIAIAc2AgAguwIgCygCADYCACAgKAIAII4DKAIATQ0EIPEBIPIBKAIANgIAICAg8gEoAgAoAgA2AgALDAELCwwCCyDwASDjAzYCAAwBCyDxASDjAzYCAAsg8QEoAgBBADYCACDwASgCAEEANgIAIEkoAgAgvwIoAgBBCGs2AhggtgIgMygCADYCAAsg0AEgtgIoAgA2AgAMAwsgkwEoAgAhByCUASgCACEIINEBKAIAIQkg0gEoAgAhCiCBAigCACEMIIICKAIAIRAggwIoAgAhESCEAigCACESIEsg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sgFBADYCAAUgfSgCACEHIH4oAgAhCCCzASgCACEJIIcDKAIAIQogtAEoAgAhDCDpASBbKAIANgIAINcDIAc2AgAg2AMgCDYCACDZAyAJNgIAINoDIAo2AgAg2wMgDDYCACCFAyDpASgCACgCBDYCACCGAyDYAygCACCFAygCAGs2AgAg6gEg6QEoAgAoAhg2AgADQCDqASgCACCGAygCAEkEQCDpASgCACDXAygCACCFAygCACDqASgCAGog2QMoAgAg2gMoAgAg2wMoAgAQugIhByDqASDqASgCACAHajYCAAwBCwsg6QEoAgAghgMoAgA2AhgCQAJAAkACQCCHAygCAEEDaw4FAAMCAQEDCyB9KAIAIQcgfigCACEIILMBKAIAIQkgtAEoAgAhCiDrASgCACEMIOwBKAIAIRAg7QEoAgAhESDuASgCACESIEcgWygCADYCACCsASAHNgIAIBYgCDYCACBIIAk2AgAgrQIgCjYCACDPAyAMNgIAIK4CIBA2AgAgeCARNgIAINADIBI2AgAgrQFBAzYCACD+AiCsASgCACgCFEH/H0kEfyCsASgCACgCFAVB/x8LIgc2AgAgrgEgRygCACgCBDYCACAqIBYoAgAgrgEoAgBrNgIAINEDIKwBKAIAKAIINgIAIDwgrQEoAgBBA0YEf0EDBUEECzYCACD/AiBHKAIAKAIkNgIAIIADIBYoAgAg0QMoAgAgrQEoAgAQuwI2AgAgHyD/AigCACCAAygCAEECdGooAgA2AgAgrwIgRygCACgCLDYCACDSAyCsASgCACgCBEEBazYCACCvAUEBINIDKAIAdEEBazYCACCwAkEANgIAILECQQA2AgAg5QEgRygCACgCCDYCACBZIEcoAgAoAgw2AgAgsgIg5QEoAgAgWSgCAGo2AgAgswIgrgEoAgAgWSgCAGo2AgAggQMgrwEoAgAgKigCAE8Ef0EABSAqKAIAIK8BKAIAawsiBzYCACC0AiBHKAIAKAIQNgIAIOYBIK8CKAIAICooAgAgrwEoAgBxQQN0ajYCACDnASCvAigCACAqKAIAIK8BKAIAcUEDdGpBBGo2AgAgtQIgKigCAEEJajYCACAyQQA2AgAgggNBASCsASgCACgCDHQ2AgAgeSDQAygCAEEBazYCACDUAyCuAigCAEEDajYCACB6IK4CKAIANgIA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NgIAAkACQCBRKAIAICUoAgBLDQAgrwMoAgAgACgCACBRKAIAQRxsaigCAEgNACCMAigCAEUNAgwBCwNAICUoAgAgUSgCAEkEQCAAKAIAICUoAgBBAWpBHGxqQYCAgIAENgIAICUgJSgCAEEBajYCAAwBCwsgACgCACBRKAIAQRxsaiCWASgCADYCCCAAKAIAIFEoAgBBHGxqIOMCKAIANgIEIAAoAgAgUSgCAEEcbGog1QEoAgA2AgwgACgCACBRKAIAQRxsaiCvAygCADYCACAAKAIAIFEoAgBBHGxqQRBqIgcgrgMpAgA3AgAgByCuAygCCDYCCAsglgEglgEoAgBBf2o2AgAMAQsLIGUgZSgCAEEBajYCAAwACwALCwsgASABKAIAQQFqNgIADAALAAsghQIg4gIoAgA2AgAg3wIgNygCACCJAigCAEEBa0EDdGooAgA2AgAgJSABKAIAQQFqNgIADAILIIUCIAAoAgAgJSgCAEEcbGooAgg2AgAg3wIgACgCACAlKAIAQRxsaigCBDYCACABICUoAgAghQIoAgBrNgIACwsgsAMghQIoAgA2AgAgsQMg3wIoAgA2AgAgZiABKAIANgIAA0Ag5AIgACgCACBmKAIAQRxsaigCCDYCACCLBCAAKAIAIGYoAgBBHGxqKAIENgIAIAAoAgAgZigCAEEcbGogsAMoAgA2AgggACgCACBmKAIAQRxsaiCxAygCADYCBCCwAyDkAigCADYCACCxAyCLBCgCADYCACDkAigCACBmKAIATQRAIGYgZigCACDkAigCAGs2AgAMAQsLIGdBADYCAANAIGcoAgAgJSgCAEkEQCDlAiAkKAIAIFIoAgBrNgIAINYBIAAoAgAgZygCAEEcbGooAgg2AgAg1wEgACgCACBnKAIAQRxsaigCBDYCACDWASgCAEEBRgRAICQgJCgCAEEBajYCACBnIGcoAgBBAWo2AgAMAgsgZyBnKAIAINYBKAIAajYCACAkICQoAgAg1gEoAgBqNgIAINcBKAIAQQNPBEAgJigCACAmKAIAKAIENgIIICYoAgAgJigCACgCADYCBCAmKAIAINcBKAIAQQJrNgIABSCKAiDXASgCACDlAigCAEVqNgIAIIoCKAIABEAgJigCACEHIIwEIIoCKAIAQQNGBH8gBygCAEEBawUgByCKAigCAEEC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ACEQIDcoAgAhESCLAigCACESIGQgaCgCADYCACCTASAHNgIAIJQBIAg2AgAg0QEgCTYCACDSASAKNgIAIIECIAw2AgAgggIgEDYCACCDAiARNgIAIIQCIBI2AgAgqQMgkwEoAgAoAhA2AgACQCCUASgCACBkKAIAKAIEIGQoAgAoAhhqSQRAINABQQA2AgAFIJMBKAIAIQcglAEoAgAhCCDRASgCACEJIKkDKAIAIQog0gEoAgAhDCD/ASBkKAIANgIAIP8DIAc2AgAggAQgCDYCACCBBCAJNgIAIIIEIAo2AgAggwQgDDYCACCnAyD/ASgCACgCBDYCACCoAyCABCgCACCnAygCAGs2AgAggAIg/wEoAgAoAhg2AgADQCCAAigCACCoAygCAEkEQCD/ASgCACD/AygCACCnAygCACCAAigCAGoggQQoAgAgggQoAgAggwQoAgAQugIhByCAAiCAAigCACAHajYCAAwBCwsg/wEoAgAgqAMoAgA2AhgCQAJAAkACQCCpAygCAEEDaw4FAAMCAQEDCyCTASgCACEHIJQBKAIAIQgg0QEoAgAhCSDSASgCACEKIIECKAIAIQwgggIoAgAhECCDAigCACERIIQCKAIAIRIgTyBkKAIANgIAIMoBIAc2AgAgGiAINgIAIFAgCTYCACDVAiAKNgIAIPcDIAw2AgAg1gIgEDYCACCOASARNgIAIPgDIBI2AgAgywFBAzYCACCgAyDKASgCACgCFEH/H0kEfyDKASgCACgCFAVB/x8LIgc2AgAgzAEgTygCACgCBDYCACAuIBooAgAgzAEoAgBrNgIAIPkDIMoBKAIAKAIINgIAIEAgywEoAgBBA0YEf0EDBUEECzYCACChAyBPKAIAKAIkNgIAIKIDIBooAgAg+QMoAgAgywEoAgAQuwI2AgAgIyChAygCACCiAygCAEECdGooAgA2AgAg1wIgTygCACgCLDYCACD6AyDKASgCACgCBEEBazYCACDNAUEBIPoDKAIAdEEBazYCACDYAkEANgIAINkCQQA2AgAg+wEgTygCACgCCDYCACBiIE8oAgAoAgw2AgAg2gIg+wEoAgAgYigCAGo2AgAg2wIgzAEoAgAgYigCAGo2AgAgowMgzQEoAgAgLigCAE8Ef0EABSAuKAIAIM0BKAIAawsiBzYCACDcAiBPKAIAKAIQ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a0EDT3EEQCAXKAIAID0oAgAQ8QIgkQMoAgAgPSgCABDxAkYEQCBdIBcoAgAgPSgCAGogkQMoAgAgPSgCAGogSigCACC8AigCACC9AigCABC9AiA9KAIAajYCAAsLCwsgXSgCACCAASgCAEsEQCCAASBdKAIANgIAIH8oAgAgMygCAEEDdGoggQEoAgAguAIoAgBrNgIAIH8oAgAgMygCAEEDdGogXSgCADYCBCAzIDMoAgBBAWo2AgAgXSgCACCLAygCAEsgFygCACBdKAIAaiBKKAIARnINAgsggQEggQEoAgBBAWo2AgAMAAsACyC2AiAzKAIANgIADAELILkBKAIAQQNGBEAggAEoAgAguQEoAgBJBEAgggEgSSgCACAXKAIAEPICNgIAIIIBKAIAIL4CKAIASyArKAIAIIIBKAIAa0GAgBBJcQRAAkACQCC3AigCAEUNACCCASgCACBcKAIATw0AIOYDIO8BKAIAIIIBKAIAajYCACCDASAXKAIAIOYDKAIAIEooAgAgvAIoAgAgvQIoAgAQvQI2AgAMAQsg5QMgugEoAgAgggEoAgBqNgIAIIMBIBcoAgAg5QMoAgAgSigCABC8AjYCAAsggwEoAgAguQEoAgBPBEAggAEggwEoAgA2AgAgfygCACArKAIAIIIBKAIAa0ECajYCACB/KAIAIIMBKAIANgIEIDNBATYCACCDASgCACCLAygCAEsgFygCACCDASgCAGogSigCAEZyBEAgSSgCACArKAIAQQFqNgIYILYCQQE2AgAMBQsLCwsLIIwDKAIAII0DKAIAQQJ0aiArKAIANgIAAkACQAJAA0ACQCCPAyCPAygCACIHQX9qNgIAIAdFDQAgICgCACC+AigCAE0NACDyASC5AigCACAgKAIAILsBKAIAcUEDdGo2AgAgugIoAgAhByC7AigCACEIIAsgugIoAgAguwIoAgBJBH8gBwUgCAs2AgACQAJAILcCKAIARQ0AICAoAgAgCygCAGogXCgCAE8NACC9ASDvASgCACAgKAIAajYCACAXKAIAIAsoAgBqIL0BKAIAIAsoAgBqIEooAgAgvAIoAgAgvQIoAgAQvQIhByALIAsoAgAgB2o2AgAgICgCACALKAIAaiBcKAIATwRAIL0BILoBKAIAICAoAgBqNgIACwwBCyC9ASC6ASgCACAgKAIA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CyCFAiAAKAIAICUoAgBBHGxqKAIINgIAIN8CIAAoAgAgJSgCAEEcbGooAgQ2AgAgASAlKAIAIIUCKAIAazYCAAsLILADIIUCKAIANgIAILEDIN8CKAIANgIAIGYgASgCADYCAANAIOQCIAAoAgAgZigCAEEcbGooAgg2AgAgiwQgACgCACBmKAIAQRxsaigCBDYCACAAKAIAIGYoAgBBHGxqILADKAIANgIIIAAoAgAgZigCAEEcbGogsQMoAgA2AgQgsAMg5AIoAgA2AgAgsQMgiwQoAgA2AgAg5AIoAgAgZigCAE0EQCBmIGYoAgAg5AIoAgBrNgIADAELCyBnQQA2AgADQCBnKAIAICUoAgBJBEAg5QIgJCgCACBSKAIAazYCACDWASAAKAIAIGcoAgBBHGxqKAIINgIAINcBIAAoAgAgZygCAEEcbGooAgQ2AgAg1gEoAgBBAUYEQCAkICQoAgBBAWo2AgAgZyBnKAIAQQFqNgIADAILIGcgZygCACDWASgCAGo2AgAgJCAkKAIAINYBKAIAajYCACDXASgCAEEDTwRAICYoAgAgJigCACgCBDYCCCAmKAIAICYoAgAoAgA2AgQgJigCACDXASgCAEECazYCAAUgigIg1wEoAgAg5QIoAgBFajYCACCKAigCAARAICYoAgAhByCMBCCKAigCAEEDRgR/IAcoAgBBAWsFIAcgigIoAgBBAnRqKAIACyIHNgIAIIoCKAIAQQJPBEAgJigCACAmKAIAKAIENgIICyAmKAIAICYoAgAoAgA2AgQgJigCACCMBCgCADYCAAsLIDgoAgAg5QIoAgAgUigCACDXASgCACDWASgCABD4AiCOBCgCACDlAigCACBSKAIAINcBKAIAINYBKAIAQQNrEPkCIFIgJCgCADYCAAwBCwsgOCgCABD6AgwBCwsgjQIoAgAgUigCAGshACAGJAUgAAuM1gEBiQR/IwUhBiMFQeAQaiQFIAZBFGoiCyAANgIAIAZBEGoiACABNgIAIAZBDGoiASACNgIAIAZBCGoiAiADNgIAIAZBBGoiAyAENgIAIAYgBTYCACAAKAIAIQAgASgCACEBIAIoAgAhAiADKAIAIQMgBigCACEEIAZBsAJqImggCygCADYCACAGQawCaiKOBCAANgIAIAZBqAJqIiYgATYCACAGQaQCaiLYASAC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ABC9AiBAKAIAajYCAAsLCwsgYygCACCPASgCAEsEQCCPASBjKAIANgIAII4BKAIAIDYoAgBBA3RqIJABKAIAINYCKAIAazYCACCOASgCACA2KAIAQQN0aiBjKAIANgIEIDYgNigCAEEBajYCACBjKAIAIKADKAIASyAaKAIAIGMoAgBqIFAoAgBGcg0CCyCQASCQASgCAEEBajYCAAwACwALINQCIDYoAgA2AgAMAQsgywEoAgBBA0YEQCCPASgCACDLASgCAEkEQCCRASBPKAIAIBooAgAQ8gI2AgAgkQEoAgAg3AIoAgBLIC4oAgAgkQEoAgBrQYCAEElxBEACQAJAINUCKAIARQ0AIJEBKAIAIGIoAgBPDQAg/gMg+wEoAgAgkQEoAgBqNgIAIJIBIBooAgAg/gMoAgAgUCgCACDaAigCACDbAigCABC9AjYCAAwBCyD9AyDMASgCACCRASgCAGo2AgAgkgEgGigCACD9AygCACBQKAIAELwCNgIACyCSASgCACDLASgCAE8EQCCPASCSASgCADYCACCOASgCACAuKAIAIJEBKAIAa0ECajYCACCOASgCACCSASgCADYCBCA2QQE2AgAgkgEoAgAgoAMoAgBLIBooAgAgkgEoAgBqIFAoAgBGcgRAIE8oAgAgLigCAEEBajYCGCDUAkEBNgIADAULCwsLCyChAygCACCiAygCAEECdGogLigCADYCAAJAAkACQANAAkAgpAMgpAMoAgAiB0F/ajYCACAHRQ0AICMoAgAg3AIoAgBNDQAg/gEg1wIoAgAgIygCACDNASgCAHFBA3RqNgIAINgCKAIAIQcg2QIoAgAhCCAPINgCKAIAINkCKAIASQR/IAcFIAgLNgIAAkACQCDVAigCAEUNACAjKAIAIA8oAgBqIGIoAgBPDQAgzwEg+wEoAgAgIygCAGo2AgAgGigCACAPKAIAaiDPASgCACAPKAIAaiBQKAIAINoCKAIAINsCKAIAEL0CIQcgDyAPKAIAIAdqNgIAICMoAgAgDygCAGogYigCAE8EQCDPASDMASgCACAjKAIAajYCAAsMAQsgzwEgzAEoAgAgIygCAGo2AgAgGigCACAPKAIAaiDPASgCACAPKAIAaiBQKAIAELwCIQcgDyAPKAIAIAdqNgIACyAPKAIAII8BKAIASwRAIA8oAgAg3QIoAgAgIygCAGtLBEAg3QIgIygCACAPKAIAajYCAAsgjwEgDygCADYCACCOASgCACA2KAIAQQN0aiAuKAIAICMoAgBrQQJqNgIAII4BKAIAIDYoAgBBA3RqIA8oAgA2AgQgNiA2KAIAQQFqNgIAIA8oAgBBgCBLDQEgGigCACAPKAIAaiBQKAIARg0BCyAjKAIAIQcgzwEoAgAgDygCAGotAAAgGigCACAPKAIAai0AAEgEQCD8ASgCACAHNgIAINgCIA8oAgA2AgAgIygCACCjAygCAE0NAyD8ASD+ASgCAEEEajYCACAjIP4BKAIAKAIENgIABSD9ASgCACAHNgIAINkCIA8oAgA2AgAgIygCACCjAygCAE0NBCD9ASD+ASgCADYCACAjIP4BKAIAKAIANgIACwwBCwsMAgsg/AEg+wM2AgAMAQsg/QEg+wM2AgALIP0BKAIAQQA2AgAg/AEoAgBBADYCACBPKAIAIN0CKAIAQQhrNgIYINQCIDYoAgA2AgALINABINQCKAIANgIADAQLIJMBKAIAIQcglAEoAgAhCCDRASgCACEJINIBKAIAIQoggQIoAgAhDCCCAigCACEQIIMCKAIAIREghAIoAgAhEiBJIGQoAgA2AgAguAEgBzYCACAXIAg2AgAgSiAJNgIAILcCIAo2AgAg3wMgDDYCACC4AiAQNgIAIH8gETYCACDgAyASNgIAILkBQQY2AgAgiwMguAEoAgAoAhRB/x9JBH8guAEoAgAoAhQFQf8fCyIHNgIAILoBIEkoAgAoAgQ2AgAgKyAXKAIAILoBKAIAazYCACDhAyC4ASgCACgCCDYCACA9ILkBKAIAQQNGBH9BAwVBBAs2AgAgjAMgSSgCACgCJDYCACCNAyAXKAIAIOEDKAIAILkBKAIAELsCNgIAICAgjAMoAgAgjQMoAgBBAnRqKAIANgIAILkCIEkoAgAoAiw2AgAg4gMguAEoAgAoAgRBAWs2AgAguwFBASDiAygCAHRBAWs2AgAgugJBADYCACC7AkEANgIAIO8BIEkoAgAoAgg2AgAgXCBJKAIAKAIMNgIAILwCIO8BKAIAIFwoAgBqNgIAIL0CILoBKAIAIFwoAgBqNgIAII4DILsBKAIAICsoAgBPBH9BAAUgKygCACC7ASgCAGsLIgc2AgAgvgIgSSgCACgCEDYCACDwASC5AigCACArKAIAILsBKAIAcUEDdGo2AgAg8QEguQIoAgAgKygCACC7ASgCAHFBA3RqQQRqNgIAIL8CICsoAgBBCWo2AgAgM0EANgIAII8DQQEguAEoAgAoAgx0NgIAIIABIOADKAIAQQFrNgIAIOQDILgCKAIAQQNqNgIAIIEBILgCKAIANgIAAkACQAJAA0AggQEoAgAg5AMoAgBPDQIg3wMoAgAhByC8ASCBASgCAEEDRgR/IAcoAgBBAWsFIAcggQEoAgBBAnRqKAIACyIHNgIAIJADICsoAgAgvAEoAgBrNgIAIF1BADYCACC8ASgCAEEBayArKAIAIFwoAgBrSQRAIBcoAgAgPSgCABDxAiAXKAIAILwBKAIAayA9KAIAEPECRgRAIF0gFygCACA9KAIAaiAXKAIAID0oAgBqILwBKAIAayBKKAIAELwCID0oAgBqNgIACwUgkQMg7wEoAgAgkAMoAgBqNgIAILcCKAIABEAgvAEoAgBBAWsgKygCACC+AigCAGtJIFwoAgBBAWsgkAMoAgBrQQNPcQRAIBcoAgAgPSgCABDxAiCRAygCACA9KAIAEPECRgRAIF0gFygCACA9KAIAaiCRAygCACA9KAIAaiBKKAIAILwCKAIAIL0CKAIAEL0CID0oAgBqNgIACwsLCyBdKAIAIIABKAIASwRAIIABIF0oAgA2AgAgfygCACAzKAIAQQN0aiCBASgCACC4AigCAGs2AgAgfygCACAzKAIAQQN0aiBdKAIANgIEIDMgMygCAEEBajYCACBdKAIAIIsDKAIASyAXKAIAIF0oAgBqIEooAgBGcg0CCyCBASCBASgCAEEBajYCAAwACwALILYCIDMoAgA2AgAMAQsguQEoAgBBA0YEQCCAASgCACC5ASgCAEkEQCCCASBJKAIAIBcoAgAQ8gI2AgAgggEoAgAgvgIoAgBLICsoAgAgggEoAgBrQYCAEElxBEACQAJAILcCKAIARQ0AIIIBKAIAIFwoAgBPDQAg5gMg7wEoAgAgggEoAgBqNgIAIIMBIBcoAgAg5gMoAgAgSigCACC8AigCACC9AigCABC9AjYCAAwBCyDlAyC6ASgCACCCASgCAGo2AgAggwEgFygCACDlAygCACBKKAIAELwCNgIACyCDASgCACC5ASgCAE8EQCCAASCDASgCADYCACB/KAIAICsoAgAgggEoAgBrQQJqNgIAIH8oAgAggwEoAgA2AgQgM0EBNgIAIIMBKAIAIIsDKAIASyAXKAIAIIMBKAIAaiBKKAIARnIEQCBJKAIAICsoAgBBAWo2AhggtgJBATYCAAwFCwsLCwsgjAMoAgAgjQMoAgBBAnRqICsoAgA2AgACQAJAAkADQAJAII8DII8DKAIAIgdBf2o2AgAgB0UNACAgKAIAIL4CKAIATQ0AIPIBILkCKAIAICAoAgAguwEoAgBxQQN0ajYCACC6AigCACEHILsCKAIAIQggCyC6AigCACC7AigCAEkEfyAHBSAICzYCAAJAAkAgtwIoAgBFDQAgICgCACALKAIAaiBcKAIATw0AIL0BIO8BKAIAICAoAgBqNgIAIBcoAgAgCygCAGogvQEoAgAgCygCAGogSigCACC8AigCACC9AigCABC9AiEHIAsgCygCACAHajYCACAgKAIAIAsoAgBqIFwoAgBPBEAgvQEgugEoAgAgICgCAGo2AgALDAELIL0BILoBKAIAICAoAgBqNgIAIBcoAgAgCygCAGogvQEoAgAgCygCAGogSigCABC8AiEHIAsgCygCACAHajYCAAsgCygCACCAASgCAEsEQCALKAIAIL8CKAIAICAoAgBrSwRAIL8CICAoAgAgCygCAGo2AgALIIABIAsoAgA2AgAgfygCACAzKAIAQQN0aiArKAIAICAoAgBrQQJqNgIAIH8oAgAgMygCAEEDdGogCygCADYCBCAzIDMoAgBBAWo2AgAgCygCAEGAIEsNASAXKAIAIAsoAgBqIEooAgBGDQELICAoAgAhByC9ASgCACALKAIAai0AACAXKAIAIAsoAgBqLQAASARAIPABKAIAIAc2AgAgugIgCygCADYCACAgKAIAII4DKAIATQ0DIPABIPIBKAIAQQRqNgIAICAg8gEoAgAoAgQ2AgAFIPEBKAIAIAc2AgAguwIgCygCADYCACAgKAIAII4DKAIATQ0EIPEBIPIBKAIANgIAICAg8gEoAgAoAgA2AgALDAELCwwCCyDwASDjAzYCAAwBCyDxASDjAzYCAAsg8QEoAgBBADYCACDwASgCAEEANgIAIEkoAgAgvwIoAgBBCGs2AhggtgIgMygCADYCAAsg0AEgtgIoAgA2AgAMAwsgkwEoAgAhByCUASgCACEIINEBKAIAIQkg0gEoAgAhCiCBAigCACEMIIICKAIAIRAggwIoAgAhESCEAigCACESIEsgZCgCADYCACC+ASAHNgIAIBggCDYCACBMIAk2AgAgwQIgCjYCACDnAyAMNgIAIMICIBA2AgAghAEgETYCACDoAyASNgIAIL8BQQU2AgAgkgMgvgEoAgAoAhRB/x9JBH8gvgEoAgAoAhQFQf8fCyIHNgIAIMABIEsoAgAoAgQ2AgAgLCAYKAIAIMABKAIAazYCACDpAyC+ASgCACgCCDYCACA+IL8BKAIAQQNGBH9BAwVBBAs2AgAgkwMgSygCACgCJDYCACCUAyAYKAIAIOkDKAIAIL8BKAIAELsCNgIAICEgkwMoAgAglAMoAgBBAnRqKAIANgIAIMMCIEsoAgAoAiw2AgAg6gMgvgEoAgAoAgRBAWs2AgAgwQFBASDqAygCAHRBAWs2AgAgxAJBADYCACDFAkEANgIAIPMBIEsoAgAoAgg2AgAgXiBLKAIAKAIMNgIAIMYCIPMBKAIAIF4oAgBqNgIAIMcCIMABKAIAIF4oAgBqNgIAIJUDIMEBKAIAICwoAgBPBH9BAAUgLCgCACDBASgCAGsLIgc2AgAgyAIgSygCACgCEDYCACD0ASDDAigCACAsKAIAIMEBKAIAcUEDdGo2AgAg9QEgwwIoAgAgLCgCACDBASgCAHFBA3RqQQRqNgIAIMkCICwoAgBBCWo2AgAgNEEANgIAIJYDQQEgvgEoAgAoAgx0NgIAIIUBIOgDKAIAQQFrNgIAIOwDIMICKAIAQQNqNgIAIIYBIMICKAIANgIAAkACQAJAA0AghgEoAgAg7AMoAgBPDQIg5wMoAgAhByDCASCGASgCAEEDRgR/IAcoAgBBAWsFIAcghgEoAgBBAnRqKAIACyIHNgIAIJcDICwoAgAgwgEoAgBrNgIAIF9BADYCACDCASgCAEEBayAsKAIAIF4oAgBrSQRAIBgoAgAgPigCABDxAiAYKAIAIMIBKAIAayA+KAIAEPECRgRAIF8gGCgCACA+KAIAaiAYKAIAID4oAgBqIMIBKAIAayBMKAIAELwCID4oAgBqNgIACwUgmAMg8wEoAgAglwMoAgBqNgIAIMECKAIABEAgwgEoAgBBAWsgLCgCACDIAigCAGtJIF4oAgBBAWsglwMoAgBrQQNPcQRAIBgoAgAgPigCABDxAiCYAygCACA+KAIAEPECRgRAIF8gGCgCACA+KAIAaiCYAygCACA+KAIAaiBMKAIAIMYCKAIAIMcCKAIAEL0CID4oAgBqNgIACwsLCyBfKAIAIIUBKAIASwRAIIUBIF8oAgA2AgAghAEoAgAgNCgCAEEDdGoghgEoAgAgwgIoAgBrNgIAIIQBKAIAIDQoAgBBA3RqIF8oAgA2AgQgNCA0KAIAQQFqNgIAIF8oAgAgkgMoAgBLIBgoAgAgXygCAGogTCgCAEZyDQILIIYBIIYBKAIAQQFqNgIADAALAAsgwAIgNCgCADYCAAwBCyC/ASgCAEEDRgRAIIUBKAIAIL8BKAIASQRAIIcBIEsoAgAgGCgCABDyAjYCACCHASgCACDIAigCAEsgLCgCACCHASgCAGtBgIAQSXEEQAJAAkAgwQIoAgBFDQAghwEoAgAgXigCAE8NACDuAyDzASgCACCHASgCAGo2AgAgiAEgGCgCACDuAygCACBMKAIAIMYCKAIAIMcCKAIAEL0CNgIADAELIO0DIMABKAIAIIcBKAIAajYCACCIASAYKAIAIO0DKAIAIEwoAgAQvAI2AgALIIgBKAIAIL8BKAIATwRAIIUBIIgBKAIANgIAIIQBKAIAICwoAgAghwEoAgBrQQJqNgIAIIQBKAIAIIgBKAIANgIEIDRBATYCACCIASgCACCSAygCAEsgGCgCACCIASgCAGogTCgCAEZyBEAgSygCACAsKAIAQQFqNgIYIMACQQE2AgAMBQsLCwsLIJMDKAIAIJQDKAIAQQJ0aiAsKAIANgIAAkACQAJAA0ACQCCWAyCWAygCACIHQX9qNgIAIAdFDQAgISgCACDIAigCAE0NACD2ASDDAigCACAhKAIAIMEBKAIAcUEDdGo2AgAgxAIoAgAhByDFAigCACEIIA0gxAIoAgAgxQIoAgBJBH8gBwUgCAs2AgACQAJAIMECKAIARQ0AICEoAgAgDSgCAGogXigCAE8NACDDASDzASgCACAhKAIAajYCACAYKAIAIA0oAgBqIMMBKAIAIA0oAgBqIEwoAgAgxgIoAgAgxwIoAgAQvQIhByANIA0oAgAgB2o2AgAgISgCACANKAIAaiBeKAIATwRAIMMBIMABKAIAICEoAgBqNgIACwwBCyDDASDAASgCACAhKAIAajYCACAYKAIAIA0oAgBqIMMBKAIAIA0oAgBqIEwoAgAQvAIhByANIA0oAgAgB2o2AgALIA0oAgAghQEoAgBLBEAgDSgCACDJAigCACAhKAIAa0sEQCDJAiAhKAIAIA0oAgBqNgIACyCFASANKAIANgIAIIQBKAIAIDQoAgBBA3RqICwoAgAgISgCAGtBAmo2AgAghAEoAgAgNCgCAEEDdGogDSgCADYCBCA0IDQoAgBBAWo2AgAgDSgCAEGAIEsNASAYKAIAIA0oAgBqIEwoAgBGDQELICEoAgAhByDDASgCACANKAIAai0AACAYKAIAIA0oAgBqLQAASARAIPQBKAIAIAc2AgAgxAIgDSgCADYCACAhKAIAIJUDKAIATQ0DIPQBIPYBKAIAQQRqNgIAICEg9gEoAgAoAgQ2AgAFIPUBKAIAIAc2AgAgxQIgDSgCADYCACAhKAIAIJUDKAIATQ0EIPUBIPYBKAIANgIAICEg9gEoAgAoAgA2AgALDAELCwwCCyD0ASDrAzYCAAwBCyD1ASDrAzYCAAsg9QEoAgBBADYCACD0ASgCAEEANgIAIEsoAgAgyQIoAgBBCGs2AhggwAIgNCgCADYCAAsg0AEgwAIoAgA2AgAMAgsgkwEoAgAhByCUASgCACEIINEBKAIAIQkg0gEoAgAhCiCBAigCACEMIIICKAIAIRAggwIoAgAhESCEAigCACESIE0gZCgCADYCACDEASAHNgIAIBkgCDYCACBOIAk2AgAgywIgCjYCACDvAyAMNgIAIMwCIBA2AgAgiQEgETYCACDwAyASNgIAIMUBQQQ2AgAgmQMgxAEoAgAoAhRB/x9JBH8gxAEoAgAoAhQFQf8fCyIHNgIAIMYBIE0oAgAoAgQ2AgAgLSAZKAIAIMYBKAIAazYCACDxAyDEASgCACgCCDYCACA/IMUBKAIAQQNGBH9BAwVBBAs2AgAgmgMgTSgCACgCJDYCACCbAyAZKAIAIPEDKAIAIMUBKAIAELsCNgIAICIgmgMoAgAgmwMoAgBBAnRqKAIANgIAIM0CIE0oAgAoAiw2AgAg8gMgxAEoAgAoAgRBAWs2AgAgxwFBASDyAygCAHRBAWs2AgAgzgJBADYCACDPAkEANgIAIPcBIE0oAgAoAgg2AgAgYCBNKAIAKAIMNgIAINACIPcBKAIAIGAoAgBqNgIAINECIMYBKAIAIGAoAgBqNgIAIJwDIMcBKAIAIC0oAgBPBH9BAAUgLSgCACDHASgCAGsLIgc2AgAg0gIgTSgCACgCEDYCACD4ASDNAigCACAtKAIAIMcBKAIAcUEDdGo2AgAg+QEgzQIoAgAgLSgCACDHASgCAHFBA3RqQQRqNgIAINMCIC0oAgBBCWo2AgAgNUEANgIAIJ0DQQEgxAEoAgAoAgx0NgIAIIoBIPADKAIAQQFrNgIAIPQDIMwCKAIAQQNqNgIAIIsBIMwCKAIANgIAAkACQAJAA0AgiwEoAgAg9AMoAgBPDQIg7wMoAgAhByDIASCLASgCAEEDRgR/IAcoAgBBAWsFIAcgiwEoAgBBAnRqKAIACyIHNgIAIJ4DIC0oAgAgyAEoAgBrNgIAIGFBADYCACDIASgCAEEBayAtKAIAIGAoAgBrSQRAIBkoAgAgPygCABDxAiAZKAIAIMgBKAIAayA/KAIAEPECRgRAIGEgGSgCACA/KAIAaiAZKAIAID8oAgBqIMgBKAIAayBOKAIAELwCID8oAgBqNgIACwUgnwMg9wEoAgAgngMoAgBqNgIAIMsCKAIABEAgyAEoAgBBAWsgLSgCACDSAigCAGtJIGAoAgBBAWsgngMoAgBrQQNPcQRAIBkoAgAgPygCABDxAiCfAygCACA/KAIAEPECRgRAIGEgGSgCACA/KAIAaiCfAygCACA/KAIAaiBOKAIAINACKAIAINECKAIAEL0CID8oAgBqNgIACwsLCyBhKAIAIIoBKAIASwRAIIoBIGEoAgA2AgAgiQEoAgAgNSgCAEEDdGogiwEoAgAgzAIoAgBrNgIAIIkBKAIAIDUoAgBBA3RqIGEoAgA2AgQgNSA1KAIAQQFqNgIAIGEoAgAgmQMoAgBLIBkoAgAgYSgCAGogTigCAEZyDQILIIsBIIsBKAIAQQFqNgIADAALAAsgygIgNSgCADYCAAwBCyDFASgCAEEDRgRAIIoBKAIAIMUBKAIASQRAIIwBIE0oAgAgGSgCABDyAjYCACCMASgCACDSAigCAEsgLSgCACCMASgCAGtBgIAQSXEEQAJAAkAgywIoAgBFDQAgjAEoAgAgYCgCAE8NACD2AyD3ASgCACCMASgCAGo2AgAgjQEgGSgCACD2AygCACBOKAIAINACKAIAINECKAIAEL0CNgIADAELIPUDIMYBKAIAIIwBKAIAajYCACCNASAZKAIAIPUDKAIAIE4oAgAQvAI2AgALII0BKAIAIMUBKAIATwRAIIoBII0BKAIANgIAIIkBKAIAIC0oAgAgjAEoAgBrQQJqNgIAIIkBKAIAII0BKAIANgIEIDVBATYCACCNASgCACCZAygCAEsgGSgCACCNASgCAGogTigCAEZyBEAgTSgCACAtKAIAQQFqNgIYIMoCQQE2AgAMBQsLCwsLIJoDKAIAIJsDKAIAQQJ0aiAtKAIANgIAAkACQAJAA0ACQCCdAyCdAygCACIHQX9qNgIAIAdFDQAgIigCACDSAigCAE0NACD6ASDNAigCACAiKAIAIMcBKAIAcUEDdGo2AgAgzgIoAgAhByDPAigCACEIIA4gzgIoAgAgzwIoAgBJBH8gBwUgCAs2AgACQAJAIMsCKAIARQ0AICIoAgAgDigCAGogYCgCAE8NACDJASD3ASgCACAiKAIAajYCACAZKAIAIA4oAgBqIMkBKAIAIA4oAgBqIE4oAgAg0AIoAgAg0QIoAgAQvQIhByAOIA4oAgAgB2o2AgAgIigCACAOKAIAaiBgKAIATwRAIMkBIMYBKAIAICIoAgBqNgIACwwBCyDJASDGASgCACAiKAIAajYCACAZKAIAIA4oAgBqIMkBKAIAIA4oAgBqIE4oAgAQvAIhByAOIA4oAgAgB2o2AgALIA4oAgAgigEoAgBLBEAgDigCACDTAigCACAiKAIAa0sEQCDTAiAiKAIAIA4oAgBqNgIACyCKASAOKAIANgIAIIkBKAIAIDUoAgBBA3RqIC0oAgAgIigCAGtBAmo2AgAgiQEoAgAgNSgCAEEDdGogDigCADYCBCA1IDUoAgBBAWo2AgAgDigCAEGAIEsNASAZKAIAIA4oAgBqIE4oAgBGDQELICIoAgAhByDJASgCACAOKAIAai0AACAZKAIAIA4oAgBqLQAASARAIPgBKAIAIAc2AgAgzgIgDigCADYCACAiKAIAIJwDKAIATQ0DIPgBIPoBKAIAQQRqNgIAICIg+gEoAgAoAgQ2AgAFIPkBKAIAIAc2AgAgzwIgDigCADYCACAiKAIAIJwDKAIATQ0EIPkBIPoBKAIANgIAICIg+gEoAgAoAgA2AgALDAELCwwCCyD4ASDzAzYCAAwBCyD5ASDzAzYCAAsg+QEoAgBBADYCACD4ASgCAEEANgIAIE0oAgAg0wIoAgBBCGs2AhggygIgNSgCADYCAAsg0AEgygIoAgA2AgALCyCHAiDQASgCADYCACCHAigCAEUEQCAkICQoAgBBAWo2AgAMAgsg0wFBADYCAANAINMBKAIAQQNJBEAgACgCAEEQaiDTASgCAEECdGogJigCACDTASgCAEECdGooAgA2AgAg0wEg0wEoAgBBAWo2AgAMAQsLIAAoAgBBATYCCCAAKAIAIIYCKAIANgIMIKsDIDcoAgAghwIoAgBBA3RqQXxqKAIANgIAAkAgqwMoAgAgjQQoAgBLBEAghQIgqwMoAgA2AgAg3wIgNygCACCHAigCAEEBa0EDdGooAgA2AgAgAUEANgIAICVBATYCAAUghAQg3gIgUigCACCGAigCACA4KAIAEPMCNgIAIBtBADYCAANAIBsoAgAgiwIoAgBJBEAgACgCACAbKAIAQRxsakEBNgIIIAAoAgAgGygCAEEcbGpBgICAgAQ2AgAgGyAbKAIAQQFqNgIADAELCyDUAUEANgIAA0Ag1AEoAgAghwIoAgBJBEAg4AIgNygCACDUASgCAEEDdGooAgA2AgAghQQgNygCACDUASgCAEEDdGooAgQ2AgAgrAMgJigCACDgAigCACCqAygCABD0AgNAIBsoAgAghQQoAgBNBEAghAQoAgAhByAbKAIAIQggOCgCACEJIIwCKAIAIQog3AMg4AIoAgA2AgAg3QMgCDYCACC1ASAJNgIAIN4DIAo2AgAgtwEg3AMoAgBBAWoQ1AE2AgAgiQMg3QMoAgBBA2s2AgAgtQEoAgAoAjgEQCCIAyCJAygCAEEBahDUAUEQaiC3ASgCAGo2AgAFILYBILcBKAIAILUBKAIAKAI0aiC1ASgCACgCDCC3ASgCAEECdGooAgBBAWoQ1AFrNgIAIN4DKAIAQQJIILcBKAIAQRRPcQRAILYBILYBKAIAILcBKAIAQRNrQQF0ajYCAAsgigMgiQMoAgAQ3AI2AgAgigMoAgBBAnRBwDVqKAIAILUBKAIAKAIwaiC1ASgCACgCCCCKAygCAEECdGooAgBBAWoQ1AFrIQggtgEgtgEoAgAgCGo2AgAgiAMgtgEoAgA2AgALIIYEIAcgiAMoAgBqNgIAIAAoAgAgGygCAEEcbGogGygCADYCCCAAKAIAIBsoAgBBHGxqIOACKAIANgIEIAAoAgAgGygCAEEcbGoghgIoAgA2AgwgACgCACAbKAIAQRxsaiCGBCgCADYCACAAKAIAIBsoAgBBHGxqQRBqIgcgrAMpAgA3AgAgByCsAygCCDYCCCAbIBsoAgBBAWo2AgAMAQsLINQBINQBKAIAQQFqNgIADAELCyAlIBsoAgBBAWs2AgAgAUEBNgIAAkACQANAIAEoAgAgJSgCAEsNAiCIAiAkKAIAIAEoAgBqNgIAIJUBIAAoAgAgASgCAEEcbGpBbGooAgBBAUYEfyAAKAIAIAEoAgBBHGxqQXBqKAIAQQFqBUEBCyIHNgIAIAEoAgAglQEoAgBLBEAg4QIgACgCACABKAIAIJUBKAIAa0EcbGooAgAgiAIoAgAglQEoAgBrIJUBKAIAIDgoAgAQ9QJqNgIABSDhAiDeAiBSKAIAIJUBKAIAIDgoAgAQ9gI2AgALIOECKAIAIAAoAgAgASgCAEEcbGooAgBMBEAgACgCACABKAIAQRxsakEBNgIIIAAoAgAgASgCAEEcbGpBADYCBCAAKAIAIAEoAgBBHGxqIJUBKAIANgIMIAAoAgAgASgCAEEcbGog4QIoAgA2AgAgACgCACABKAIAQRxsakEQaiIHIAAoAgAgASgCAEEcbGpBdGoiCCkCADcCACAHIAgoAgg2AggLAkAgiAIoAgAgswMoAgBNBEAgASgCACAlKAIARg0EIIwCKAIARQRAIAAoAgAgASgCAEEBakEcbGooAgAgACgCACABKAIAQRxsaigCAEwNAgsgrQMgACgCACABKAIAQRxsaigCCEEBRzYCACDVASAAKAIAIAEoAgBBHGxqKAIIQQFGBH8gACgCACABKAIAQRxsaigCDAVBAAsiBzYCACCHBCABKAIAINUBKAIASwR/IAAoAgAgASgCACDVASgCAGtBHGxqKAIABUEACyIHNgIAIIgEIIcEKAIAIIgCKAIAINUBKAIAayDVASgCACA4KAIAEPcCajYCACDYASgCACEHIIgCKAIAIQggjQIoAgAhCSCyAygCACEKIAAoAgAgASgCAEEcbGpBEGohDCCtAygCACEQIDcoAgAhESCLAigCACESIFsgaCgCADYCACB9IAc2AgAgfiAINgIAILMBIAk2AgAgtAEgCjYCACDrASAMNgIAIOwBIBA2AgAg7QEgETYCACDuASASNgIAIIcDIH0oAgAoAhA2AgACQCB+KAIAIFsoAgAoAgQgWygCACgCGGpJBEAgsgFBADYCAAUgfSgCACEHIH4oAgAhCCCzASgCACEJIIcDKAIAIQogtAEoAgAhDCDpASBbKAIANgIAINcDIAc2AgAg2AMgCDYCACDZAyAJNgIAINoDIAo2AgAg2wMgDDYCACCFAyDpASgCACgCBDYCACCGAyDYAygCACCFAygCAGs2AgAg6gEg6QEoAgAoAhg2AgADQCDqASgCACCGAygCAEkEQCDpASgCACDXAygCACCFAygCACDqASgCAGog2QMoAgAg2gMoAgAg2wMoAgAQugIhByDqASDqASgCACAHajYCAAwBCwsg6QEoAgAghgMoAgA2AhgCQAJAAkACQCCHAygCAEEDaw4FAAMCAQEDCyB9KAIAIQcgfigCACEIILMBKAIAIQkgtAEoAgAhCiDrASgCACEMIOwBKAIAIRAg7QEoAgAhESDuASgCACESIEcgWygCADYCACCsASAHNgIAIBYgCDYCACBIIAk2AgAgrQIgCjYCACDPAyAMNgIAIK4CIBA2AgAgeCARNgIAINADIBI2AgAgrQFBAzYCACD+AiCsASgCACgCFEH/H0kEfyCsASgCACgCFAVB/x8LIgc2AgAgrgEgRygCACgCBDYCACAqIBYoAgAgrgEoAgBrNgIAINEDIKwBKAIAKAIINgIAIDwgrQEoAgBBA0YEf0EDBUEECzYCACD/AiBHKAIAKAIkNgIAIIADIBYoAgAg0QMoAgAgrQEoAgAQuwI2AgAgHyD/AigCACCAAygCAEECdGooAgA2AgAgrwIgRygCACgCLDYCACDSAyCsASgCACgCBEEBazYCACCvAUEBINIDKAIAdEEBazYCACCwAkEANgIAILECQQA2AgAg5QEgRygCACgCCDYCACBZIEcoAgAoAgw2AgAgsgIg5QEoAgAgWSgCAGo2AgAgswIgrgEoAgAgWSgCAGo2AgAggQMgrwEoAgAgKigCAE8Ef0EABSAqKAIAIK8BKAIAawsiBzYCACC0AiBHKAIAKAIQNgIAIOYBIK8CKAIAICooAgAgrwEoAgBxQQN0ajYCACDnASCvAigCACAqKAIAIK8BKAIAcUEDdGpBBGo2AgAgtQIgKigCAEEJajYCACAyQQA2AgAgggNBASCsASgCACgCDHQ2AgAgeSDQAygCAEEBazYCACDUAyCuAigCAEEDajYCACB6IK4CKAIANgIAAkACQAJAA0AgeigCACDUAygCAE8NAiDPAygCACEHILABIHooAgBBA0YEfyAHKAIAQQFrBSAHIHooAgBBAnRqKAIACyIHNgIAIIMDICooAgAgsAEoAgBrNgIAIFpBADYCAAJAILABKAIAQQFrICooAgAgWSgCAGtJBEAgFigCACA8KAIAEPECIBYoAgAgsAEoAgBrIDwoAgAQ8QJHDQEgWiAWKAIAIDwoAgBqIBYoAgAgPCgCAGogsAEoAgBrIEgoAgAQvAIgPCgCAGo2AgAFIIQDIOUBKAIAIIMDKAIAajYCACCtAigCAEUNASCwASgCAEEBayAqKAIAILQCKAIAa0kgWSgCAEEBayCDAygCAGtBA09xRQ0BIBYoAgAgPCgCABDxAiCEAygCACA8KAIAEPECRw0BIFogFigCACA8KAIAaiCEAygCACA8KAIAaiBIKAIAILICKAIAILMCKAIAEL0CIDwoAgBqNgIACwsgWigCACB5KAIASwRAIHkgWigCADYCACB4KAIAIDIoAgBBA3RqIHooAgAgrgIoAgBrNgIAIHgoAgAgMigCAEEDdGogWigCADYCBCAyIDIoAgBBAWo2AgAgWigCACD+AigCAEsgFigCACBaKAIAaiBIKAIARnINAgsgeiB6KAIAQQFqNgIADAALAAsgrAIgMigCADYCAAwBCwJAIK0BKAIAQQNGBEAgeSgCACCtASgCAE8NASB7IEcoAgAgFigCABDyAjYCACB7KAIAILQCKAIASyAqKAIAIHsoAgBrQYCAEElxRQ0BAkACQCCtAigCAEUNACB7KAIAIFkoAgBPDQAg1gMg5QEoAgAgeygCAGo2AgAgfCAWKAIAINYDKAIAIEgoAgAgsgIoAgAgswIoAgAQvQI2AgAMAQsg1QMgrgEoAgAgeygCAGo2AgAgfCAWKAIAINUDKAIAIEgoAgAQvAI2AgALIHwoAgAgrQEoAgBJDQEgeSB8KAIANgIAIHgoAgAgKigCACB7KAIAa0ECajYCACB4KAIAIHwoAgA2AgQgMkEBNgIAIHwoAgAg/gIoAgBLIBYoAgAgfCgCAGogSCgCAEZyRQ0BIEcoAgAgKigCAEEBajYCGCCsAkEBNgIADAILCyD/AigCACCAAygCAEECdGogKigCADYCAAJAAkACQANAAkAgggMgggMoAgAiB0F/ajYCACAHRQ0AIB8oAgAgtAIoAgBNDQAg6AEgrwIoAgAgHygCACCvASgCAHFBA3RqNgIAILACKAIAIQcgsQIoAgAhCCAFILACKAIAILECKAIASQR/IAcFIAgLNgIAAkACQCCtAigCAEUNACAfKAIAIAUoAgBqIFkoAgBPDQAgsQEg5QEoAgAgHygCAGo2AgAgFigCACAFKAIAaiCxASgCACAFKAIAaiBIKAIAILICKAIAILMCKAIAEL0CIQcgBSAFKAIAIAdqNgIAIB8oAgAgBSgCAGogWSgCAEkNASCxASCuASgCACAfKAIAajYCAAwBCyCxASCuASgCACAfKAIAajYCACAWKAIAIAUoAgBqILEBKAIAIAUoAgBqIEgoAgAQvAIhByAFIAUoAgAgB2o2AgALIAUoAgAgeSgCAEsEQCAFKAIAILUCKAIAIB8oAgBrSwRAILUCIB8oAgAgBSgCAGo2AgALIHkgBSgCADYCACB4KAIAIDIoAgBBA3RqICooAgAgHygCAGtBAmo2AgAgeCgCACAyKAIAQQN0aiAFKAIANgIEIDIgMigCAEEBajYCACAFKAIAQYAgSw0BIBYoAgAgBSgCAGogSCgCAEYNAQsgHygCACEHILEBKAIAIAUoAgBqLQAAIBYoAgAgBSgCAGotAABIBEAg5gEoAgAgBzYCACCwAiAFKAIANgIAIB8oAgAggQMoAgBNDQMg5gEg6AEoAgBBBGo2AgAgHyDoASgCACgCBDYCAAUg5wEoAgAgBzYCACCxAiAFKAIANgIAIB8oAgAggQMoAgBNDQQg5wEg6AEoAgA2AgAgHyDoASgCACgCADYCAAsMAQsLDAILIOYBINMDNgIADAELIOcBINMDNgIACyDnASgCAEEANgIAIOYBKAIAQQA2AgAgRygCACC1AigCAEEIazYCGCCsAiAyKAIANgIACyCyASCsAigCADYCAAwECyB9KAIAIQcgfigCACEIILMBKAIAIQkgtAEoAgAhCiDrASgCACEMIOwBKAIAIRAg7QEoAgAhESDuASgCACESIEEgWygCADYCACCaASAHNgIAIBMgCDYCACBCIAk2AgAgjwIgCjYCACC3AyAMNgIAIJACIBA2AgAgaSARNgIAILgDIBI2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CyAHQUBrIR8gB0E8aiEgIAdBOGohFSAHQTRqIRYgB0EwaiEdIAdBLGohCiAHQShqISEgB0EkaiEiIAdBIGohDSAHQRxqIQ4gB0EYaiEXIAdBFGohIyAHQRBqIQYgB0EMaiEPIAdBCGohASAHQQRqIQggACATKAIANgIAA0AgACgCAARAIB8gBCgCACAAKAIAIAIoAgBxQQN0akEEajYCACAgIB8oAgAoAgA2AgAgCSgCACALKAIAIAAoAgAgECgCACAFKAIAIBwoAgAgHigCABCIAyAAICAoAgA2AgAgBSAFKAIAQQFqNgIADAELCyAVQQA2AgAgFkEANgIAIB0gCSgCACgCCDYCACAKIAkoAgAoAgw2AgAgISAdKAIAIAooAgBqNgIAICIgESgCACAKKAIAajYCACANIAQoAgAgAygCACACKAIAcUEDdGo2AgAgDiAEKAIAIAMoAgAgAigCAHFBA3RqQQRqNgIAIBcgAygCAEEJajYCACAGQQA2AgAgACAZKAIAIBooAgBBAnRqKAIANgIAIBkoAgAgGigCAEECdGogAygCADYCAAJAAkACQANAAkAgEiASKAIAIgVBf2o2AgAgBUUNACAAKAIAIBsoAgBNDQAgDyAEKAIAIAAoAgAgAigCAHFBA3RqNgIAIBUoAgAhBSAWKAIAIQsgASAVKAIAIBYoAgBJBH8gBQUgCws2AgACQAJAIB4oAgBFDQAgACgCACABKAIAaiAKKAIATw0AIAggHSgCACAAKAIAajYCACAMKAIAIAEoAgBqIAgoAgAgASgCAGogECgCACAhKAIAICIoAgAQvQIhBSABIAEoAgAgBWo2AgAgACgCACABKAIAaiAKKAIATwRAIAggESgCACAAKAIAajYCAAsMAQsgCCARKAIAIAAoAgBqNgIAIAwoAgAgASgCAGogCCgCACABKAIAaiAQKAIAELwCIQUgASABKAIAIAVqNgIACyABKAIAIAYoAgBLBEAgASgCACAXKAIAIAAoAgBrSwRAIBcgACgCACABKAIAajYCAAsgASgCACAGKAIAa0ECdCADKAIAIAAoAgBrQQFqENQBIBgoAgAoAgBBAWoQ1AFrSgRAIAYgASgCADYCACAYKAIAIAMoAgBBAmogACgCAGs2AgALIAwoAgAgASgCAGogECgCAEYNAQsgACgCACEFIAgoAgAg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ACEAIAUkBSAADwsgAigCAEUEQCAIKAIAQajqvmkQigIgAUEENgIACyAPLAAAIQIgBCgCACEHIAEgASgCACIIQQFqNgIAIAcgCGogAjoAACAKKAIARQRAIA4sAAAhAiAEKAIAIQcgASABKAIAIghBAWo2AgAgByAIaiACOgAACwJAAkACQAJAIAsoAgBBAWsOAwECAAMLIAQoAgAgASgCAGogCSgCABCKAiABIAEoAgBBBGo2AgAMAgsgBCgCACABKAIAaiAJKAIAOgAAIAEgASgCAEEBajYCAAwBCyAEKAIAIAEoAgBqIAkoAgBB//8DcRCaAiABIAEoAgBBAmo2AgALAkACQAJAAkACQCAMKAIAQQFrDgMBAgADCyAEKAIAIAEoAgBqIAApAwAQiwIgASABKAIAQQhqNgIADAMLIAQoAgAgASgCAGogACkDAEKAAn2nQf//A3EQmgIgASABKAIAQQJqNgIADAILIAQoAgAgASgCAGogACkDAKcQigIgASABKAIAQQRqNgIADAELIAooAgAEQCAAKQMAp0H/AXEhACAEKAIAIQIgASABKAIAIgRBAWo2AgAgAiAEaiAAOgAACwsgBiABKAIANgIAIAYoAgAhACAFJAUgAAuQCAEPfyMFIQYjBUHwAGokBSAGQcgAaiIHIAA2AgAgBkHEAGoiCiABNgIAIAZBQGsiDSACNgIAIAZBPGoiASADNgIAIAZBOGoiACAENgIAIAZBNGoiECAFNgIAIAZBMGoiAiAHKAIAKALoATYCACAGQSxqIgsgACgCADYCACAGQShqIgggASgCADYCACAGQSRqIg8gCigCADYCACAGQSBqIgQgDygCADYCACAGQRxqIhFBASAHKAIAKAJ4dDYCACAHKAIAKAKYAUEARyAAKAIAQQBHcQRAIAcoAgBBiAJqIAEoAgAgACgCABDrARoLIAZB0ABqIQogBkHMAGohBSAGQRhqIQEgBkEUaiESIAZBEGohEyAGQQxqIQ4gBkEIaiEDIAZBBGohFCAGIQACQAJAAkACQANAIAsoAgBFDQQgASAHKAIAQeADajYCACASIBAoAgAgAigCACALKAIAT3E2AgAgDSgCAEEGSQ0BIAsoAgAgAigCAEkEQCACIAsoAgA2AgALIAgoAgAgAigCAGohDCAKIAEoAgAiCSkCADcCACAKIAkpAgg3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KAIAIgYpAgA3AgAgAiAGKQIINwIIIAIgBikCEDcCECAhIAcgCiACEKkDNgIAICJBADYCACAoIAApAwAgDSgCABCqAzYCACADICEoAgA2AgADQCADKAIAICEoAgAgLygCAEEDdGpJBEACQCADKAIAKAIEICgoAgBGBEAgAygCACgCACAmKAIASwRAIBQoAgAEQCAlKAIAIQYgDygCACEHICkgAygCACgCACAOKAIASQR/IAYFIAcLNgIAICMgKSgCACADKAIAKAIAajYCACAnKAIAIQYgECgCACEHICogAygCACgCACAOKAIASQR/IAYFIAcLNgIAIDIoAgAhBiAZKAIAIQcgKyADKAIAKAIAIA4oAgBJBH8gBgUgBws2AgAgCyABKAIAICMoAgAgECgCACAqKAIAIBkoAgAQvQI2AgAgCygCACAMKAIASQ0DIBYgASgCACARKAIAICMoAgAgKygCABCrAzYCACAcIAsoAgAgFigCAGo2AgAFICQgDygCACADKAIAKAIAajYCACALIAEoAgAgJCgCACAQKAIAELwCNgIAIAsoAgAgDCgCAEkNAyAWIAEoAgAgESgCACAkKAIAIBkoAgAQqwM2AgAgHCALKAIAIBYoAgBqNgIACyAcKAIAICIoAgBLBEAgIiAcKAIANgIAICAgCygCADYCACAaIBYoAgA2AgAgGyADKAIANgIACwsLCyADIAMoAgBBCGo2AgAMAQsLIBsoAgBFBEAgCCgCACEHIAApAwAhNSANKAIAIQogHygCACEXIAIgCSgCACIGKQIANwIAIAIgBikCCDcCCCACIAYpAhA3AhAgByA1IAogFyACEKwDIAEgASgCAEEBajYCAAwBCyASICAoAgAgGigCAGo2AgAgASABKAIAIBooAgBrNgIAICwgGygCACgCADYCACAtIB8oAgAgLCgCAGs2AgAgHSATKAIAKAIAIBMoAgAoAghBDGxqNgIAIBMoAgAoAgggEygCACgCDEYNASAdKAIAIAEoAgAgESgCAGs2AgQgHSgCACASKAIANgIIIB0oAgAgLSgCADYCACATKAIAQQhqIgYgBigCAEEBajYCACAIKAIAIQcgACkDACE1IA0oAgAhCiAEKAIAIA8oAgBrIRcgAiAJKAIAIgYpAgA3AgAgAiAGKQIINwIIIAIgBikCEDcCECAHIDUgCiAXIAIQrAMgASgCACASKAIAaiAeKAIATQRAIAgoAgAhByAAKQMAITUgBCgCACEKIAEoAgAgEigCAGohFyAPKAIAITMgDSgCACE0IAIgCSgCACIGKQIANwIAIAIgBikCCDcCCCACIAYpAhA3AhAgACAHIDUgCiAXIDMgNCACEK0DNwMAIAQgASgCACASKAIAakF/ajYCAAsgASABKAIAIBIoAgBqNgIAIBEgASgCADYCAAwACwALIBhBun82AgAgGCgCACEAIAUkBSAADwsgGCAQKAIAIBEoAgBrNgIAIBgoAgAhACAFJAUgAAuKAQEDfyMFIQUjBUEgaiQFIAVBCGoiBCAANwMAIAVBEWoiBiABOgAAIAVBEGoiASACOgAAIAUgAzcDACAEIAQpAwAgBi0AAEEKaqwgBSkDAH59NwMAIAQgBCkDAELjyJW9y5vvjU9+NwMAIAQgBCkDACABLQAAQQpqrHw3AwAgBCkDACEAIAUkBSAAC5oBAgN/AX4jBSECIwVBIGokBSACQRBqIgMgADYCACACQQxqIgQgATYCACACIgBCADcDACAAQQhqIgFBADYCAANAIAApAwAhBSABKAIAIAQoAgBJBEAgACAFQuPIlb3Lm++NT343AwAgACAAKQMAIAMoAgAgASgCAGotAABBCmqsfDcDACABIAEoAgBBAWo2AgAMAQsLIAIkBSAFC6ABAQN/IwUhAyMFQSBqJAUgA0EQaiEEIAMgADcDACADQQxqIgUgATYCACADQQhqIgEgAjYCACADKQMAIQBBICAFKAIAayABKAIASQR/IAQgAEEBIAEoAgB0QQFrrYM+AgAgBCgCACEBIAMkBSABBSAEIABBICAFKAIAayABKAIAa62IQQEgASgCAHRBAWutgz4CACAEKAIAIQEgAyQFIAELC00BA38jBSECIwVBEGokBSACIgQgADcDACACQQhqIgMgATYCACADKAIARQRAIAIkBUEADwsgBCkDAEHAACADKAIAa62IpyEBIAIkBSABC0EBAn8jBSEDIwVBEGokBSADQQRqIgQgADYCACADIAE2AgAgBCgCACgCFCADKAIAIAIoAgh0QQN0aiEAIAMkBSAAC0EBAn8jBSECIwVBEGokBSACIAA3AwAgAkEIaiIDIAE2AgAgAikDAEEgIAMoAgBrrYhC/////w+DpyEBIAIkBSAB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CyAANgIAIAlBIGoiDCABNgIAIAlBHGoiASACNgIAIAlBGGoiDSADNgIAIAlBFGoiAiAENgIAIAkiACAGNwMAIAlBEGoiAyAHNgIAIAIoAgAEQCACKAIAKAIIQQBLBEAgCygCAEEMaiIBIAUpAgA3AgAgASAFKQIINwIIIAEgBSkCEDcCECABIAUpAhg3AhggASAFKQIgNwIgIAEgBSkCKDcCKCABIAUpAjA3AjAgASAFKQI4NwI4IAFBQGsgBUFAaykCADcCACABIAUpAkg3AkggASAFKQJQNwJQIAEgBSkCWDcCWCABIAUpAmA3AmAgCygCACEBIAIoAgAhAiAFKAIEIQQgACkDACEGIAMoAgAhACAIIAVBIGoiAykCADcCACAIIAMoAgg2AgggCiABIAIgBCAIIAYgABC2AzYCACAKKAIAIQAgCSQFIAAPCwsgCygCACECIAApAwAhBiADKAIAIQMgCCAFKQIANwIAIAggBSkCCDcCCCAIIAUpAhA3AhAgCCAFKQIYNwIYIAggBSkCIDcCICAIIAUpAig3AiggCCAFKQIwNwIwIAggBSkCODcCOCAIQUBrIAVBQGspAgA3AgAgCCAFKQJINwJIIAggBSkCUDcCUCAIIAUpAlg3AlggCCAFKQJgNwJgIAlBDGoiACACIAggBkEAIAMQzwI2AgAgACgCABDNAQRAIAogACgCADYCACAKKAIAIQAgCSQFIAAPCyAJQQhqIgAgCygCACgC2AMgCygCAEHgA2ogBSAMKAIAIAEoAgAgDSgCACALKAIAKALMBBCxAjYCACAAKAIAEMwBQQBHIQEgACgCACEAIAEEfyAKIAA2AgAgCigCACEAIAkkBSAABSALKAIAIAA2AtwBIApBADYCACAKKAIAIQAgCSQFIAALC80GAQV/IwUhBiMFQYACaiQFIAZBlAFqIgcgADYCACAGQZABaiIIIAE2AgAgBkGMAWoiCSACNgIAIAYiACAENwMAIABBiAFqIgogBTYCACAAQSBqIgEgBygCAEEMaiICKQIANwIAIAEgAikCCDcCCCABIAIpAhA3AhAgASACKQIYNwIYIAEgAikCIDcCICABIAIpAig3AiggASACKQIwNwIwIAEgAikCODcCOCABQUBrIAJBQGspAgA3AgAgASACKQJINwJIIAEgAikCUDcCUCABIAIpAlg3AlggASACKQJgNwJgIAFBBGoiAiAIKAIAQfAkaiIFKQIANwIAIAIgBSkCCDcCCCACIAUpAhA3AhAgAiAFKAIYNgIYIAkoAgAEQCABIAkoAgA2AgQLIAFBIGoiAiADKQIANwIAIAIgAygCCDYCCCAHKAIAIQIgACkDACEEIAooAgAhAyAGQZgBaiIAIAEpAgA3AgAgACABKQIINwIIIAAgASkCEDcCECAAIAEpAhg3AhggACABKQIgNwIgIAAgASkCKDcCKCAAIAEpAjA3AjAgACABKQI4NwI4IABBQGsgAUFAaykCADcCACAAIAEpAkg3AkggACABKQJQNwJQIAAgASkCWDcCWCAAIAEpAmA3AmAgAiAAIARBASADEM8CGiAGQRxqIgEgCCgCAEGIJWooAgBBAUYEf0EABUEBIAgoAgBB9CRqKAIAdAsiADYCACAGQRhqIgBBASAIKAIAQfgkaigCAHQ2AgAgBkEUaiICIAEoAgAgACgCAGpBAnQ2AgAgBygCACgChAQgCCgCACgCOCACKAIAEPQHGiAGQRBqIgBBASAHKAIAKAKABHQ2AgAgBygCACgCiARBACAAKAIAQQJ0EPYHGiAGQQxqIgAgCCgCAEEUajYCACAGQQhqIgEgBygCAEHgA2o2AgAgASgCACICIAAoAgAiAykCADcCACACIAMpAgg3AgggAiADKAIQNgIQIAEoAgAgACgCACgCGDYCGCABKAIAIAAoAgAoAhw2AhwgASgCACAAKAIAKAIUNgIUIAcoAgAgCCgCAEGYJWooAgA2AtwBIAcoAgAoAtgDIAgoAgBBgAFqQfAjEPQHGiAGJAVBAAv2AgECfyMFIQMjBUHwAGokBSADIAEpAgA3AgAgAyABKQIINwIIIAMgASkCEDcCECADIAEpAhg3AhggAyABKQIgNwIgIAMgASkCKDcCKCADIAEpAjA3AjAgAyABKQI4NwI4IANBQGsgAUFAaykCADcCACADIAEpAkg3AkggAyABKQJQNwJQIAMgASkCWDcCWCADIAEpAmA3AmAgA0EEaiIBIAIpAgA3AgAgASACKQIINwIIIAEgAikCEDcCECABIAIoAhg2AhggA0EgaiIEIAJBHGoiASkCADcCACAEIAEoAgg2AgggA0EDNgIsIAAgAykCADcCACAAIAMpAgg3AgggACADKQIQNwIQIAAgAykCGDcCGCAAIAMpAiA3AiAgACADKQIoNwIoIAAgAykCMDcCMCAAIAMpAjg3AjggAEFAayADQUBrKQIANwIAIAAgAykCSDcCSCAAIAMpAlA3AlAgACADKQJYNwJYIAAgAykCYDcCYCADJAUL1wEBAn8jBSEEIwVB4ABqJAUgBEHUAGoiBSABNgIAIAQgAjcDACAEQdAAaiIBIAM2AgAgBEEIaiIDIAUoAgAgBCkDACABKAIAEKgCIARBKGoiAUIANwIAIAFCADcCCCABQgA3AhAgAUIANwIYIAFCADcCICABIAMpAgA3AgAgASADKQIINwIIIAEgAykCEDcCECABIAMoAhg2AhggAUEBNgIcIAAgASkCADcCACAAIAEpAgg3AgggACABKQIQNwIQIAAgASkCGDcCGCAAIAEpAiA3AiAgBCQFC78CAQV/IwUhBSMFQSBqJAUgBUEcaiEGIAVBGGoiByAANgIAIAVBFGoiCCABNgIAIAVBEGoiCSACNgIAIAVBDGoiASADNgIAIAVBCGoiAiAENgIAIAUiACAHKAIAIAgoAgAgCSgCACABKAIAIAIoAgBBAUEBEI8DNgIAIAUoAgAQzAEEQCAGIAAoAgA2AgAgBigCACEAIAUkBSAADwsgBUEEaiIBIAcoAgAgCCgCACAAKAIAaiAJKAIAIAAoAgBrELoDNgIAIAEoAgAQzAEEQCAGIAEoAgA2AgAgBigCACEAIAUkBSAADwsgBygCACgClAEEQCAHKAIAKQPwASAHKAIAKQP4AUIBfFIEQCAGQbh/NgIAIAYoAgAhACAFJAUgAA8LCyAGIAAoAgAgASgCAGo2AgAgBigCACEAIAUkBSAAC5UFAQp/IwUhAyMFQZABaiQFIANBIGohBCADQRxqIgYgADYCACADQRhqIgggATYCACADQRRqIgcgAjYCACADQRBqIgogCCgCADYCACADQQxqIgUgCigCADYCACADQQhqIglBADYCACAGKAIAKAIARQRAIARBRDYCACAEKAIAIQAgAyQFIAAPCyADQShqIQEgA0EEaiELIAMhAAJAIAYoAgAoAgBBAUYEQCAIKAIAIQggBygCACEMIAEgBigCAEH0AGoiAikCADcCACABIAIpAgg3AgggASACKQIQNwIQIAEgAikCGDcCGCABIAIpAiA3AiAgASACKQIoNwIoIAEg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AgAiBkEBajYCACAGIAQ6AAAgGSgCACEEIBooAgAhBiBHIAwoAgA2AgAgSCAENgIAIGEgBjYCACBJIEcoAgAgYSgCABDgATYCACBiIEgoAgAgSSgCAEEBdGosAAA6AAAgRygCACBIKAIAIEkoAgBBAXRqLQABEN4BIGIsAAAhBCADIAMoAgAiBkEBajYCACAGIAQ6AAAMAQsLAkADQCAMKAIAENkBRSADKAIAIB4oAgBJcUUNASAZKAIAIQQgGigCACEGIEQgDCgCADYCACBFIAQ2AgAgXyAGNgIAIEYgRCgCACBfKAIAEOABNgIAIGAgRSgCACBGKAIAQQF0aiwAADoAACBEKAIAIEUoAgAgRigCAEEBdGotAAEQ3gEgYCwAACEEIAMgAygCACIGQQFqNgIAIAYgBDoAAAwACwALA0AgAygCACAeKAIASQRAIBkoAgAhBCAaKAIAIQYgJSAMKAIANgIAIEIgBDYCACBdIAY2AgAgQyAlKAIAIF0oAgAQ4AE2AgAgXiBCKAIAIEMoAgBBAXRqLAAAOgAAICUoAgAgQigCACBDKAIAQQF0ai0AARDeASBeLAAAIQQgAyADKAIAIgZBAWo2AgAgBiAEOgAADAELCyBUKAIAIQMgACgCACEAIAEoAgAhASACICgoAgA2AgAgCyAYNgIAIB0gAzYCACAOIAA2AgAgDyABNgIAIHYgAigCADYCAANAIAsoAgAQ2QFFIAIoAgAgHSgCAEF9aklxBEAgDigCACEAIA8oAgAhASAiIAsoAgA2AgAgIyAANgIAIFsgATYCACAkICIoAgAgWygCABDgATYCACBcICMoAgAgJCgCAEEBdGosAAA6AAAgIigCACAjKAIAICQoAgBBAXRqLQABEN4BIFwsAAAhACACIAIoAgAiAUEBajYCACABIAA6AAAgDigCACEAIA8oAgAhASBBIAsoAgA2AgAgICAANgIAIFkgATYCACAhIEEoAgAgWSgCABDgATYCACBaICAoAgAgISgCAEEBdGosAAA6AAAgQSgCACAgKAIAICEoAgBBAXRqLQABEN4BIFosAAAhACACIAIoAgAiAUEBajYCACABIAA6AAAMAQsLAkADQCALKAIAENkBRSACKAIAIB0oAgBJcUUNASAOKAIAIQAgDygCACEBID4gCygCADYCACA/IAA2AgAgVyABNgIA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BzYCACAlICEoAgAgOigCABDgATYCACA5KAIAIB0oAgAgJSgCAEECdGouAAA7AAAgISgCACAdKAIAICUoAgBBAnRqLQACEN4BIAMgAygCACAdKAIAICUoAgBBAnRqLQADajYCACABKAIAIQggAigCACEHIDcgBCgCADYCACAcICo2AgAgFCAINgIAIDggBzYCACAXIBwoAgAgOCgCABDgATYCACA3KAIAIBQoAgAgFygCAEECdGouAAA7AAAgHCgCACAUKAIAIBcoAgBBAnRqLQACEN4BIAQgBCgCACAUKAIAIBcoAgBBAnRqLQADajYCACABKAIAIQggAigCACEHIDUgECgCADYCACAbICs2AgAgICAINgIAIDYgBzYCACAWIBsoAgAgNigCABDgATYCACA1KAIAICAoAgAgFigCAEECdGouAAA7AAAgGygCACAgKAIAIBYoAgBBAnRqLQACEN4BIBAgECgCACAgKAIAIBYoAgBBAnRqLQADajYCACABKAIAIQggAigCACEHIDMgJCgCADYCACAuICw2AgAgGSAINgIAIDQgBzYCACAaIC4oAgAgNCgCABDgATYCACAzKAIAIBkoAgAgGigCAEECdGouAAA7AAAgLigCACAZKAIAIBooAgBBAnRqLQACEN4BICQgJCgCACAZKAIAIBooAgBBAnRqLQADajYCACABKAIAIQggAigCACEHIDEgAygCADYCACAVICk2AgAgDiAINgIAIDIgBzYCACAPIBUoAgAgMigCABDgATYCACAxKAIAIA4oAgAgDygCAEECdGouAAA7AAAgFSgCACAOKAIAIA8oAgBBAnRqLQACEN4BIAMgAygCACAOKAIAIA8oAgBBAnRqLQADajYCACABKAIAIQggAigCACEHICggBCgCADYCACAeICo2AgAgDSAINgIAIC0gBzYCACALIB4oAgAgLSgCABDgATYCACAoKAIAIA0oAgAgCygCAEECdGouAAA7AAAgHigCACANKAIAIAsoAgBBAnRqLQACEN4BIAQgBCgCACANKAIAIAsoAgBBAnRqLQADajYCACABKAIAIQggAigCACEHICYgECgCADYCACASICs2AgAgDCAINgIAICcgBzYCACAKIBIoAgAgJygCABDgATYCACAmKAIAIAwoAgAgCigCAEECdGouAAA7AAAgEigCACAMKAIAIAooAgBBAnRqLQACEN4BIBAgECgCACAMKAIAIAooAgBBAnRqLQADajYCACABKAIAIQggAigCACEHICIgJCgCADYCACAYICw2AgAgBiAINgIAICMgBzYCACAJIBgoAgAgIygCABDgATYCACAiKAIAIAYoAgAgCSgCAEECdGouAAA7AAAgGCgCACAGKAIAIAkoAgBBAnRqLQACEN4BICQgJCgCACAGKAIAIAkoAgBBAnRqLQADajYCACA7ICkQ2QEgKhDZAXIgKxDZAXIgLBDZAXI2AgAMAQsLIAMoAgAgACgCAEsEQCATQWw2AgAgEygCACEAIAUkBSAADwsgBCgCACARKAIASwRAIBNBbDYCACATKAIAIQAgBSQFIAAPCyAQKAIAIB8oAgBLBEAgE0FsNgIAIBMoAgAhACAFJAUgAA8LIAVBzAVqISEgBUHIBWohDCAFQcQFaiEKIAVBwAVqISIgBUG8BWohDSAFQbgFaiEmIAVBtAVqISAgBUGwBWohCyAFQawFaiEnIAVBqAVqIQ4gBUGkBWohIyAFQaAFaiEWIAVBnAVqIQ8gBUGYBWohKCAFQZQFaiEIIAVBkAVqIRkgBUGMBWohFCAFQYgFaiEHIAVBhAVqIS0gBUGABWohEiAFQegEaiEeIAVB5ARqIR0gBUHgBGohGyAFQdwEaiEVIAVB2ARqIRwgACgCACEGIAEoAgAhCSACKAIAIRcgBUHABGoiACADKAIANgIAIAVBvARqIgMgKTYCACAFQbgEaiIaIAY2AgAgBUG0BGoiBiAJNgIAIAVBsARqIgkgFzYCACAFIAAoAgA2AqwEA0AgAygCABDZAUUgACgCACAaKAIAQX1qSXEEQCADKAIAIRcgBigCACEYIAkoAgAhLiAeIAAoAgA2AgAgHSAXNgIAIBsgGDYCACAVIC42AgAgHCAdKAIAIBUoAgAQ4AE2AgAgHigCACAbKAIAIBwoAgBBAnRqLgAAOwAAIB0oAgAgGygCACAcKAIAQQJ0ai0AAhDeASAAIAAoAgAgGygCACAcKAIAQQJ0ai0AA2o2AgAgAygCACEXIAYoAgAhGCAJKAIAIS4gGSAAKAIANgIAIBQgFzYCACAHIBg2AgAgLSAuNgIAIBIgFCgCACAtKAIAEOABNgIAIBkoAgAgBygCACASKAIAQQJ0ai4AADsAACAUKAIAIAcoAgAgEigCAEECdGotAAIQ3gEgACAAKAIAIAcoAgAgEigCAEECdGotAANqNgIADAELCwNAIAMoAgAQ2QFFIAAoAgAgGigCAEF+ak1xBEAgAygCACEHIAYoAgAhEiAJKAIAIRQgIyAAKAIANgIAIBYgBzYCACAPIBI2AgAgKCAUNgIAIAggFigCACAoKAIAEOABNgIAICMoAgAgDygCACAIKAIAQQJ0ai4AADsAACAWKAIAIA8oAgAgCCgCAEECdGotAAIQ3gEgACAAKAIAIA8oAgAgCCgCAEECdGotAANqNgIADAELCwNAIAAoAgAhDyAAKAIAIBooAgBBfmpNBEAgAygCACEIIAYoAgAhByAJKAIAIRIgJiAPNgIAICAgCDYCACALIAc2AgAgJyASNgIAIA4gICgCACAnKAIAEOABNgIAICYoAgAgCygCACAOKAIAQQJ0ai4AADsAACAgKAIAIAsoAgAgDigCAEECdGotAAIQ3gEgACAAKAIAIAsoAgAgDigCAEECdGotAANqNgIADAELCyAPIBooAgBJBEAgAygCACEDIAYoAgAhBiAJKAIAIQkgISAAKAIANgIAIAwgAzYCACAKIAY2AgAgIiAJNgIAIA0gDCgCACAiKAIAEOABNgIAICEoAgAgCigCACANKAIAQQJ0aiwAADoAACAMKAIAIQMgCigCACANKAIAQQJ0ai0AA0EBRgRAIAMgCigCACANKAIAQQJ0ai0AAhDeAQUgAygCBEEgSQRAIAwoAgAgCigCACANKAIAQQJ0ai0AAhDeASAMKAIAKAIEQSBLBEAgDCgCAEEgNgIECwsLIAAgACgCAEEBajYCAAsgBUHwBmohHSAFQewGaiEJIAVB6AZqIQwgBUHkBmohJSAFQeAGaiEKIAVB3AZqISEgBUHYBmohGSAFQdQGaiENIAVB0AZqISIgBUHMBmohCyAFQcgGaiEmIAVBxAZqIRogBUHABmohDiAFQbwGaiEnIAVBuAZqIQ8gBUG0BmohIyAFQbAGaiEgIAVBrAZqIQggBUGoBmohKCAFQaQGaiEHIAVBjAZqIRggBUGIBmohFCAFQYQGaiEVIAVBgAZqIRIgBUH8BWohGyARKAIAIQYgASgCACEeIAIoAgAhFiAFQeQFaiIAIAQoAgA2AgAgBUHgBWoiAyAqNgIAIAVB3AVqIhEgBjYCACAFQdgFaiIEIB42AgAgBUHUBWoiBiAWNgIAIAUgACgCADYC0AUDQCADKAIAENkBRSAAKAIAIBEoAgBBfWpJcQRAIAMoAgAhHiAEKAIAIRYgBigCACEXIBggACgCADYCACAUIB42AgAgFSAWNgIAIBIgFzYCACAbIBQoAgAgEigCABDgATYCACAYKAIAIBUoAgAgGygCAEECdGouAAA7AAAgFCgCACAVKAIAIBsoAgBBAnRqLQACEN4BIAAgACgCACAVKAIAIBsoAgBBAnRqLQADajYCACADKAIAIR4gBCgCACEWIAYoAgAhFyAjIAAoAgA2AgAgICAeNgIAIAggFjYCACAoIBc2AgAgByAgKAIAICgoAgAQ4AE2AgAgIygCACAIKAIAIAcoAgBBAnRqLgAAOwAAICAoAgAgCCgCACAHKAIAQQJ0ai0AAhDeASAAIAAoAgAgCCgCACAHKAIAQQJ0ai0AA2o2AgAMAQsLA0AgAygCABDZAUUgACgCACARKAIAQX5qTXEEQCADKAIAIQggBCgCACEHIAYoAgAhEiAmIAAoAgA2AgAgGiAINgIAIA4gBzYCACAnIBI2AgAgDyAaKAIAICcoAgAQ4AE2AgAgJigCACAOKAIAIA8oAgBBAnRqLgAAOwAAIBooAgAgDigCACAPKAIAQQJ0ai0AAhDeASAAIAAoAgAgDigCACAPKAIAQQJ0ai0AA2o2AgAMAQsLA0AgACgCACEOIAAoAgAgESgCAEF+ak0EQCADKAIAIQ8gBCgCACEIIAYoAgAhByAhIA42AgAgGSAPNgIAIA0gCDYCACAiIAc2AgAgCyAZKAIAICIoAgAQ4AE2AgAgISgCACANKAIAIAsoAgBBAnRqLgAAOwAAIBkoAgAgDSgCACALKAIAQQJ0ai0AAhDeASAAIAAoAgAgDSgCACALKAIAQQJ0ai0AA2o2AgAMAQsLIA4gESgCAEkEQCADKAIAIQMgBCgCACEEIAYoAgAhBiAdIAAoAgA2AgAgCSADNgIAIAwgBDYCACAlIAY2AgAgCiAJKAIAICUoAgAQ4AE2AgAgHSgCACAMKAIAIAooAgBBAnRqLAAAOgAAIAkoAgAhAyAMKAIAIAooAgBBAnRqLQADQQFGBEAgAyAMKAIAIAooAgBBAnRqLQACEN4BBSADKAIEQSBJBEAgCSgCACAMKAIAIAooAgBBAnRqLQACEN4BIAkoAgAoAgRBIEsEQCAJKAIAQSA2AgQLCwsgACAAKAIAQQFqNgIACyAFQZQIaiEXIAVBkAhqIQYgBUGMCGohCSAFQYgIaiEdIAVBhAhqIQwgBUGACGohJSAFQfwHaiEHIAVB+AdqIQogBUH0B2ohISAFQfAHaiENIAVB7AdqISIgBUHoB2ohGSAFQeQHaiERIAVB4AdqISYgBUHcB2ohCyAFQdgHaiEnIAVB1AdqIRogBUHQB2ohDiAFQcwHaiEjIAVByAdqIQ8gBUGwB2ohLSAFQawHaiEWIAVBqAdqIRIgBUGkB2ohGCAFQaAHaiEUIB8oAgAhBCABKAIAIR8gAigCACEVIAVBiAdqIgAgECgCADYCACAFQYQHaiIDICs2AgAgBUGAB2oiHCAENgIAIAVB/AZqIgQgHzYCACAFQfgGaiIQIBU2AgAgBSAAKAIANgL0BgNAIAMoAgAQ2QFFIAAoAgAgHCgCAEF9aklxBEAgAygCACEfIAQoAgAhFSAQKAIAIR4gLSAAKAIANgIAIBYgHzYCACASIBU2AgAgGCAeNgIAIBQgFigCACAYKAIAEOABNgIAIC0oAgAgEigCACAUKAIAQQJ0ai4AADsAACAWKAIAIBIoAgAgFCgCAEECdGotAAIQ3gEgACAAKAIAIBIoAgAgFCgCAEECdGotAANqNgIAIAMoAgAhHyAEKAIAIRUgECgCACEeICcgACgCADYCACAaIB82AgAgDiAVNgIAICMgHjYCACAPIBooAgAgIygCABDgATYCACAnKAIAIA4oAgAgDygCAEECdGouAAA7AAAgGigCACAOKAIAIA8oAgBBAnRqLQACEN4BIAAgACgCACAOKAIAIA8oAgBBAnRqLQADajYCAAwBCwsDQCADKAIAENkBRSAAKAIAIBwoAgBBfmpNcQRAIAMoAgAhDiAEKAIAIQ8gECgCACEIICIgACgCADYCACAZIA42AgAgESAPNgIAICYgCDYCACALIBkoAgAgJigCABDgATYCACAiKAIAIBEoAgAgCygCAEECdGouAAA7AAAgGSgCACARKAIAIAsoAgBBAnRqLQACEN4BIAAgACgCACARKAIAIAsoAgBBAnRqLQADajYCAAwBCwsDQCAAKAIAIREgACgCACAcKAIAQX5qTQRAIAMoAgAhCyAEKAIAIQ4gECgCACEPICUgETYCACAHIAs2AgAgCiAONgIAICEgDzYCACANIAcoAgAgISgCABDgATYCACAlKAIAIAooAgAgDSgCAEECdGouAAA7AAAgBygCACAKKAIAIA0oAgBBAnRqLQACEN4BIAAgACgCACAKKAIAIA0oAgBBAnRqLQADajYCAAwBCwsgESAcKAIASQRAIAMoAgAhAyAEKAIAIQQgECgCACEQIBcgACgCADYCACAGIAM2AgAgCSAENgIAIB0gEDYCACAMIAYoAgAgHSgCABDgATYCACAXKAIAIAkoAgAgDCgCAEECdGosAAA6AAAgBigCACEDIAkoAgAgDCgCAEECdGotAANBAUYEQCADIAkoAgAgDCgCAEECdGotAAIQ3gEFIAMoAgRBIEkEQCAGKAIAIAkoAgAgDCgCAEECdGotAAIQ3gEgBigCACgCBEEgSwRAIAYoAgBBIDYCBAsLCyAAIAAoAgBBAWo2AgALIAVBuAlqISAgBUG0CWohBCAFQbAJaiEQIAVBrAlqIRYgBUGoCWohBiAFQaQJaiEUIAVBoAlqIRUgBUGcCWohCSAFQZgJaiEXIAVBlAlqIQwgBUGQCWohHSAFQYwJaiEbIAVBiAlqIQogBUGECWohJSAFQYAJaiENIAVB/AhqISEgBUH4CGohHCAFQfQIaiERIAVB8AhqISIgBUHsCGohCyAFQdQIaiEjIAVB0AhqIRkgBUHMCGohCCAFQcgIaiEoIAVBxAhqIQcgMCgCACEDIAEoAgAhHyACKAIAIRggBUGsCGoiACAkKAIANgIAIAVBqAhqIgEgLDYCACAFQaQIaiIkIAM2AgAgBUGgCGoiAiAfNgIAIAVBnAhqIgMgGDYCACAFQZgIaiAAKAIANgIAA0AgASgCABDZAUUgACgCACAkKAIAQX1qSXEEQCABKAIAIR8gAigCACEYIAMoAgAhEiAjIAAoAgA2AgAgGSAfNgIAIAggGDYCACAoIBI2AgAgByAZKAIAICgoAgAQ4AE2AgAgIygCACAIKAIAIAcoAgBBAnRqLgAAOwAAIBkoAgAgCCgCACAHKAIAQQJ0ai0AAhDeASAAIAAoAgAgCCgCACAHKAIAQQJ0ai0AA2o2AgAgASgCACEfIAIoAgAhGCADKAIAIRIgISAAKAIANgIAIBwgHzYCACARIBg2AgAgIiASNgIAIAsgHCgCACAiKAIAEOABNgIAICEoAgAgESgCACALKAIAQQJ0ai4AADsAACAcKAIAIBEoAgAgCygCAEECdGotAAIQ3gEgACAAKAIAIBEoAgAgCygCAEECdGotAANqNgIADAELCwNAIAEoAgAQ2QFFIAAoAgAgJCgCAEF+ak1xBEAgASgCACERIAIoAgAhCyADKAIAIQ4gHSAAKAIANgIAIBsgETYCACAKIAs2AgAgJSAONgIAIA0gGygCACAlKAIAEOABNgIAIB0oAgAgCigCACANKAIAQQJ0ai4AADsAACAbKAIAIAooAgAgDSgCAEECdGotAAIQ3gEgACAAKAIAIAooAgAgDSgCAEECdGotAANqNgIADAELCwNAIAAoAgAhCiAAKAIAICQoAgBBfmpNBEAgASgCACENIAIoAgAhESADKAIAIQsgFCAKNgIAIBUgDTYCACAJIBE2AgAgFyALNgIAIAwgFSgCACAXKAIAEOABNgIAIBQoAgAgCSgCACAMKAIAQQJ0ai4AADsAACAVKAIAIAkoAgAgDCgCAEECdGotAAIQ3gEgACAAKAIAIAkoAgAgDCgCAEECdGotAANqNgIADAELCyAKICQoAgBJBEAgASgCACEBIAIoAgAhAiADKAIAIQMgICAAKAIANgIAIAQgATYCACAQIAI2AgAgFiADNgIAIAYgBCgCACAWKAIAEOABNgIAICAoAgAgECgCACAGKAIAQQJ0aiwAADoAACAEKAIAIQEgECgCACAGKAIAQQJ0ai0AA0EBRgRAIAEgECgCACAGKAIAQQJ0ai0AAhDeAQUgASgCBEEgSQRAIAQoAgAgECgCACAGKAIAQQJ0ai0AAhDeASAEKAIAKAIEQSBLBEAgBCgCAEEgNgIECwsLIAAgACgCAEEBajYCAAsgBUEUaiIAICkQ1QMgKhDVA3EgKxDVA3EgLBDVA3E2AgAgACgCAAR/IBMgLygCADYCACATKAIAIQAgBSQFIAAFIBNBbDYCACATKAIAIQAgBSQFIAALC8oCAQZ/IwUhCCMFQTBqJAUgCEEoaiEJIAhBJGoiCiAANgIAIAhBIGoiDCABNgIAIAhBHGoiDSACNgIAIAhBGGoiCyADNgIAIAhBFGoiASAENgIAIAhBEGoiAyAFNgIAIAhBDGoiBCAGNgIAIAhBCGoiBSAHNgIAIAhBBGoiAiALKAIANgIAIAgiACAKKAIAIAsoAgAgASgCACADKAIAIAQoAgAQ2gM2AgAgCCgCABDNAUEARyEEIAgoAgAhAyAEBEAgCSADNgIAIAkoAgAhACAIJAUgAA8LIAMgASgCAE8EfyAJQbh/NgIAIAkoAgAhACAIJAUgAAUgAiACKAIAIAAoAgBqNgIAIAEgASgCACAAKAIAazYCACAJIAwoAgAgDSgCACACKAIAIAEoAgAgCigCACAFKAIAEN8DNgIAIAkoAgAhACAIJAUgAAsL5QEBAn8jBSECIwVBIGokBSACQRRqIgMgADYCACACQRBqIgAgATYCACAAKAIAIAMoAgBPBH9BDwUgACgCAEEEdCADKAIAbgshASACQQxqIgAgATYCACACQQhqIgEgAygCAEEIdjYCACACQQRqIgMgACgCAEEYbEHQPmooAgAgACgCAEEYbEHUPmooAgAgASgCAGxqNgIAIAIgACgCAEEYbEHYPmooAgAgACgCAEEYbEHcPmooAgAgASgCAGxqNgIAIAIgAigCACACKAIAQQN2ajYCACACKAIAIAMoAgBJIQAgAiQFIAALwgEBBH8jBSEGIwVBIGokBSAGQRRqIgcgADYCACAGQRBqIgggATYCACAGQQxqIgkgAjYCACAGQQhqIgEgAzYCACAGQQRqIgIgBDYCACAGIAU2AgAgBkEYaiIAIAIoAgAQ0gMgBygCACEHIAgoAgAhBSAJKAIAIQQgASgCACEDIAIoAgAhAiAGKAIAIQEgAC0AAQR/IAcgBSAEIAMgAiABEN0DIQAgBiQFIAAFIAcgBSAEIAMgAiABENMDIQAgBiQFIAALC8oCAQZ/IwUhCCMFQTBqJAUgCEEoaiEJIAhBJGoiCiAANgIAIAhBIGoiDCABNgIAIAhBHGoiDSACNgIAIAhBGGoiCyADNgIAIAhBFGoiASAENgIAIAhBEGoiAyAFNgIAIAhBDGoiBCAGNgIAIAhBCGoiBSAHNgIAIAhBBGoiAiALKAIANgIAIAgiACAKKAIAIAsoAgAgASgCACADKAIAIAQoAgAQ0QM2AgAgCCgCABDNAUEARyEEIAgoAgAhAyAEBEAgCSADNgIAIAkoAgAhACAIJAUgAA8LIAMgASgCAE8EfyAJQbh/NgIAIAkoAgAhACAIJAUgAAUgAiACKAIAIAAoAgBqNgIAIAEgASgCACAAKAIAazYCACAJIAwoAgAgDSgCACACKAIAIAEoAgAgCigCACAFKAIAENMDNgIAIAkoAgAhACAIJAUgAAsLwgEBBH8jBSEGIwVBIGokBSAGQRRqIgcgADYCACAGQRBqIgggATYCACAGQQxqIgkgAjYCACAGQQhqIgEgAzYCACAGQQRqIgIgBDYCACAGIAU2AgAgBkEYaiIAIAIoAgAQ0gMgBygCACEHIAgoAgAhBSAJKAIAIQQgASgCACEDIAIoAgAhAiAGKAIAIQEgAC0AAQR/IAcgBSAEIAMgAiABEN8DIQAgBiQFIAAFIAcgBSAEIAMgAiABENYDIQAgBiQFIAALC8ACAQZ/IwUhCCMFQTBqJAUgCEEkaiEJIAhBIGoiCyAANgIAIAhBHGoiDCABNgIAIAhBGGoiCiACNgIAIAhBFGoiDSADNgIAIAhBEGoiAyAENgIAIAhBDGoiAiAFNgIAIAhBCGoiASAGNgIAIAhBBGoiACAHNgIAIAooAgBFBEAgCUG6fzYCACAJKAIAIQAgCCQFIAAPCyADKAIARQRAIAlBbDYCACAJKAIAIQAgCCQFIAAPCyAIIAooAgAgAygCABDiAzYCACALKAIAIQcgDCgCACEGIAooAgAhBSANKAIAIQQgAygCACEDIAIoAgAhAiABKAIAIQEgACgCACEAIAkgCCgCAAR/IAcgBiAFIAQgAyACIAEgABDhAwUgByAGIAUgBCADIAIgASAAENkDCyIANgIAIAkoAgAhACAIJAUgAAvhAQECfyMFIQIjBUEwaiQFIAJBEGoiASAANgIAIAEoAgBB8OEBakEANgIAIAEoAgBBjOIBakEANgIAIAEoAgBBrOIBakGBgIDAADYCACABKAIAQZjiAWpBADYCACABKAIAQZTiAWpBADYCACABKAIAQaDiAWpBADYCACABKAIAQaTiAWpBADYCACABKAIAQbTiAWpBADYCACABKAIAQZziAWpBADYCACACEKUCIAJBGGoiACACKQIANwIAIAAgAikCCDcCCCABKAIAQZDiAWogACgCCEGAAnFBAEc2AgAgAiQFC+YBAQR/IwUhASMFQSBqJAUgAUEEaiECIAAoAgBBAEdBAXMgACgCBEEAR0EBc3MEQCACQQA2AgAgAigCACEAIAEkBSAADwsgAUEIaiIEIAApAgA3AgAgBCAAKAIINgIIIAEiA0Hw4gkgBBDtATYCACABKAIABH8gAygCAEH44QFqIgQgACkCADcCACAEIAAoAgg2AgggAygCAEHE4gFqQQA2AgAgAygCAEHI4gFqQQA2AgAgAygCABDnAyACIAMoAgA2AgAgAigCACEAIAEkBSAABSACQQA2AgAgAigCACEAIAEkBSAACws0AQJ/IwUhACMFQRBqJAUgAEGAsQEpAgA3AgAgAEGIsQEoAgA2AgggABDoAyEBIAAkBSABC8cCAQV/IwUhAiMFQSBqJAUgAkEQaiEEIAJBDGoiASAANgIAIAEoAgBFBEAgBEEANgIAIAQoAgAhACACJAUgAA8LIAEoAgBBjOIBaigCAARAIARBQDYCACAEKAIAIQAgAiQFIAAPCyACIgAgASgCAEH44QFqIgMpAgA3AgAgAiADKAIINgIIIAEoAgBBlOIBaigCABDrAxogASgCAEGU4gFqQQA2AgAgASgCAEGg4gFqKAIAIQUgAkEUaiIDIAIpAgA3AgAgAyACKAIINgIIIAUgAxDvASABKAIAQaDiAWpBADYCACABKAIAQcTiAWooAgAEQCABKAIAQcTiAWooAgAgASgCAEHI4gFqKAIAEOwDGgsgASgCACEBIAMgACkCADcCACADIAAoAgg2AgggASADEO8BIARBADYCACAEKAIAIQAgAiQFIAALwQEBBX8jBSEDIwVBIGokBSADQRRqIQEgA0EQaiEEIAMiAkEMaiIFIAA2AgAgBSgCAAR/IAIgBSgCAEG84AFqIgApAgA3AgAgAiAAKAIINgIIIAUoAgAoAgAhACABIAIpAgA3AgAgASACKAIINgIIIAAgARDvASAFKAIAIQAgASACKQIANwIAIAEgAigCCDYCCCAAIAEQ7wEgBEEANgIAIAQoAgAhACADJAUgAAUgBEEANgIAIAQoAgAhACADJAUgAAsLmgEBA38jBSEDIwVBEGokBSADQQhqIQIgA0EEaiIEIAA2AgAgAyABNgIAAkACQAJAAkACQAJAIAMoAgBBBGsOBAMCAQAECyACIAQoAgAQ8AM2AgAMBAsgAiAEKAIAEO8DNgIADAMLIAIgBCgCABDuAzYCAAwCCyACIAQoAgAQ7QM2AgAMAQsgAkF0NgIACyACKAIAIQAgAyQFIAALJgEBfyMFIQEjBUEQaiQFIAEgADYCACABKAIAEPMDIQAgASQFIAALegEDfyMFIQIjBUEQaiQFIAJBBGohAyACIgEgADYCACABKAIABH8gASgCACgCABDyAxogASgCACgCMBCHBiABKAIAKAI8EIcGIAEoAgAQhwYgA0EANgIAIAMoAgAhACACJAUgAAUgA0EANgIAIAMoAgAhACACJAUgAAsLegEDfyMFIQIjBUEQaiQFIAJBBGohAyACIgEgADYCACABKAIABH8gASgCACgCABDyAxogASgCACgCHBCHBiABKAIAKAIoEIcGIAEoAgAQhwYgA0EANgIAIAMoAgAhACACJAUgAAUgA0EANgIAIAMoAgAhACACJAUgAAsL1gEBA38jBSECIwVBEGokBSACQQRqIQMgAiIBIAA2AgAgASgCAEUEQCADQQA2AgAgAygCACEAIAIkBSAADwsgASgCACgCABDxAxogASgCACgCJARAIAEoAgAoAmQgASgCACgCJCABKAIAKAJgQR9xQeQCahECAAsgASgCACgCMARAIAEoAgAoAmQgASgCACgCMCABKAIAKAJgQR9xQeQCahECAAsgASgCACgCZCABKAIAIAEoAgAoAmBBH3FB5AJqEQIAIANBADYCACADKAIAIQAgAiQFIAALeQEDfyMFIQEjBUEQaiQFIAFBBGohAiABIgMgADYCACABKAIABH8gAygCAEHEqQFqKAIAIAMoAgAgAygCAEHAqQFqKAIAQR9xQeQCahECACACQQA2AgAgAigCACEAIAEkBSAABSACQQA2AgAgAigCACEAIAEkBSAACwskAQF/IwUhASMFQRBqJAUgASAANgIAIAEoAgAQhwYgASQFQQALegEDfyMFIQIjBUEQaiQFIAJBBGohAyACIgEgADYCACABKAIABH8gASgCACgCABDyAxogASgCACgCKBCHBiABKAIAKAI0EIcGIAEoAgAQhwYgA0EANgIAIAMoAgAhACACJAUgAAUgA0EANgIAIAMoAgAhACACJAUgAAsLrgEBBH8jBSEDIwVBEGokBSADQQxqIQIgAyEEIANBCGoiBSAANgIAIANBBGoiACABNgIAAkAgACgCAEEESQRAIAJBADYCAAUgBCAFKAIAEM8BNgIAAkACQAJAAkACQCAEKAIAQaTqvmlrDgQAAQIDBAsgAkEENgIADAULIAJBBTYCAAwECyACQQY2AgAMAwsgAkEHNgIADAILIAJBADYCAAsLIAIoAgAhACADJAUgAAs5AQJ/IwUhAiMFQRBqJAUgAkEEaiIDIAA2AgAgAiABNgIAIAMoAgAgAigCAEEAEPYDIQAgAiQFIAALpgIBBH8jBSEDIwVBMGokBSADQRxqIQQgA0EYaiIFIAA2AgAgA0EUaiIAIAE2AgAgA0EQaiIGIAI2AgAgA0EMaiIBIAYoAgAQ9wM2AgAgACgCACABKAIASQRAIARBuH82AgAgBCgCACEAIAMkBSAADwsgA0EgaiICIAUoAgAgASgCAEEBa2osAAA6AAAgA0EIaiIGIAItAABBA3E2AgAgA0EEaiIFIAItAABBBXVBAXE2AgAgAyIAIAItAABBBnU2AgAgBCABKAIAIgEgBSgCACICQQBHQQFzaiAGKAIAQQJ0QfAiaigCACIGaiADKAIAQQJ0QYAjaigCAGogBSgCAAR/IAAoAgBBAEdBAXMFQQALIgBBAXFqNgIAIAQoAgAhACADJAUgAAs/AQJ/IwUhASMFQRBqJAUgAUEEaiICIAA2AgAgASIAIAIoAgBBAUYEf0EBBUEFCzYCACAAKAIAIQAgASQFIAALSgECfyMFIQMjBUEQaiQFIANBCGoiBCAANgIAIANBBGoiACABNgIAIAMgAjYCACAEKAIAIAAoAgAgAygCAEEAEPkDIQAgAyQFIAALiwkCDH8BfiMFIQQjBUHQAGokBSAEQcgAaiEFIARBxABqIgcgADYCACAEQUBrIgAgATYCACAEQTxqIgEgAjYCACAEQThqIgYgAzYCACAEQTRqIgIgACgCADYCACAEQTBqIgMgBigCABD3AzYCACABKAIAIAMoAgBJBEAgBSADKAIANgIAIAUoAgAhACAEJAUgAA8LIAYoAgBBAUcEQCAAKAIAEM8BQajqvmlHBEAgACgCABDPAUFwcUHQ1LTCAUcEQCAFQXY2AgAgBSgCACEAIAQkBSAADwsgASgCAEEISQRAIAVBCDYCACAFKAIAIQAgBCQFIAAPBSAHKAIAIgFCADcDACABQgA3AwggAUIANwMQIAFCADcDGCABQgA3AyAgACgCAEEEahDPAa0hECAHKAIAIBA3AwAgBygCAEEBNgIUIAVBADYCACAFKAIAIQAgBCQFIAAPCwALCyAEQSxqIgggACgCACABKAIAIAYoAgAQ9gM2AgAgCCgCACEAIAEoAgAgCCgCAEkEQCAFIAA2AgAgBSgCACEAIAQkBSAADwsgBygCACAANgIYIARBzQBqIgYgAigCACADKAIAQQFraiwAADoAACAEQShqIgEgAygCADYCACAEQSRqIgsgBi0AAEEDcTYCACAEQSBqIgwgBi0AAEECdUEBcTYCACAEQRxqIgkgBi0AAEEFdUEBcTYCACAEQRhqIg0gBi0AAEEGdTYCACAEQQhqIgNCADcDACAEQRRqIghBADYCACAEIgBCfzcDACAGLQAAQQhxBEAgBUFyNgIAIAUoAgAhACAEJAUgAA8LIARBzABqIQYgBEEQaiEKAkAgCSgCAEUEQCACKAIAIQ4gASABKAIAIg9BAWo2AgAgBiAOIA9qLAAAOgAAIAogBi0AAEEDdUEKajYCACAKKAIAQR5NBEAgA0IBIAooAgCthjcDACADIAMpAwAgAykDAEIDiCAGLQAAQQdxrH58NwMADAILIAVBcDYCACAFKAIAIQAgBCQFIAAPCwsCQAJAAkACQCALKAIAQQFrDgMBAgADCyAIIAIoAgAgASgCAGoQzwE2AgAgASABKAIAQQRqNgIADAILIAggAigCACABKAIAai0AADYCACABIAEoAgBBAWo2AgAMAQsgCCACKAIAIAEoAgBqENgDQf//A3E2AgAgASABKAIAQQJqNgIACwJAAkACQAJAAkAgDSgCAEEBaw4DAQIAAwsgACACKAIAIAEoAgBqEOIBNwMADAMLIAAgAigCACABKAIAahDYA0H//wNxQYACaqw3AwAMAgsgACACKAIAIAEoAgBqEM8BrTcDAAwBCyAJKAIABEAgACACKAIAIAEoAgBqLQAArTcDAAsLIAkoAgAEQCADIAApAwA3AwALIAcoAgBBADYCFCAHKAIAIAApAwA3AwAgBygCACADKQMANwMIIAMpAwAhECAHKAIAIAMpAwBCgIAIVAR+IBAFQoCACAs+AhAgBygCACAIKAIANgIcIAcoAgAgDCgCADYCICAFQQA2AgAgBSgCACEAIAQkBSAAC8sBAgZ/AX4jBSECIwVBQGskBSACQTBqIQMgAkEoaiEFIAIhBiACQTxqIgQgADYCACACQThqIgcgATYCACAEKAIAIAcoAgAQ9ANBAEchACAEKAIAIQQgBygCACEBAkAgAARAIAUgBCABEPsDNwMAIAUp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AiQFIAALxQEBA38jBSECIwVBEGokBSACQQxqIQMgAkEIaiIEIAA2AgAgAkEEaiIAIAE2AgAgAiAEKAIAIAAoAgAQ9AM2AgACQAJAAkACQAJAAkAgAigCAEEEaw4EAAECAwQLIAMgBCgCACAAKAIAEIkENgIADAQLIAMgBCgCACAAKAIAEIoENgIADAMLIAMgBCgCACAAKAIAEIsENgIADAILIAMgBCgCACAAKAIAEIwENgIADAELIANBdjYCAAsgAygCACEAIAIkBSAAC4kCAQN/IwUhAyMFQSBqJAUgA0EUaiEEIANBEGoiBSAANgIAIANBDGoiACABNgIAIANBCGoiASACNgIAIAAoAgBBA0kEQCAEQbh/NgIAIAQoAgAhACADJAUgAA8LIANBBGoiAiAFKAIAEIgENgIAIAMiACACKAIAQQN2NgIAIAEoAgAgAigCAEEBcTYCBCABKAIAIAIoAgBBAXZBA3E2AgAgASgCACADKAIANgIIIAEoAgAoAgBBAUYEQCAEQQE2AgAgBCgCACEAIAMkBSAADwsgASgCACgCAEEDRgR/IARBbDYCACAEKAIAIQAgAyQFIAAFIAQgACgCADYCACAEKAIAIQAgAyQFIAALCzcBAX8jBSEBIwVBEGokBSABIAA2AgAgASgCABDYA0H//wNxIAEoAgAtAAJBEHRqIQAgASQFIAALNwECfyMFIQIjBUEQaiQFIAJBBGoiAyAANgIAIAIgATYCACADKAIAIAIoAgAQjwQhACACJAUgAAv/AgEFfyMFIQIjBUEwaiQFIAJBIGohAyACQRxqIgUgADYCACACQRhqIgAgATYCACACQRRqIgEgBSgCADYCACACQRBqIgQgACgCADYCACAAKAIAQQVJBEAgA0G4fzYCACADKAIAIQAgAiQFIAAPCyAFKAIAEM8BQaXqvmlHBEAgA0F2NgIAIAMoAgAhACACJAUgAA8LIAJBCGohBiACIQAgASABKAIAQQVqNgIAIAQgBCgCAEEFazYCAAJAAkACQANAIAAgASgCACAEKAIAIAYQjgQ2AgAgACgCABDMAQ0BIAEgASgCAEEDajYCACAEIAQoAgBBA2s2AgAgACgCACAEKAIASw0CIAAoAgBFDQMgASABKAIAIAAoAgBqNgIAIAQgBCgCACAAKAIAazYCAAwACwALIAMgACgCADYC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IBEoAgAgLigCAGtLBEAgEkFsNgIADAQLIAkgGygCACAJKAIAIBooAgBrajYCACAJKAIAIAsoAgRqIBsoAgBNBEAgESgCACAJKAIAIAsoAgQQ9QcaIBIgHCgCADYCAAwECyAkIBsoAgAgCSgCAGs2AgAgESgCACAJKAIAICQoAgAQ9QcaIAogESgCACAkKAIAajYCACALQQRqIgAgACgCACAkKAIAazYCACAJIBooAgA2AgAgCigCACAUKAIATQRAIAsoAgRBA08NAgsgFkEANgIAA0AgFigCACALKAIESQRAIAooAgAgFigCAGogCSgCACAWKAIAaiwAADoAACAWIBYoAgBBAWo2AgAMAQsLIBIgHCgCADYCAAwDCwsgCygCCEEISQRAIDogCygCCEECdEGQPWooAgA2AgAgCigCACAJKAIALAAAOgAAIAooAgAgCSgCACwAAToAASAKKAIAIAkoAgAsAAI6AAIgCigCACAJKAIALAADOgADIAkgCSgCACALKAIIQQJ0QbA9aigCAGo2AgAgCigCAEEEaiAJKAIAEJ4EIAkgCSgCACA6KAIAazYCAAUgCigCACAJKAIAEPwCCyAKIAooAgBBCGo2AgAgCSAJKAIAQQhqNgIAIAooAgAhAAJAICMoAgAgGSgCAEFzaksEQCAAIBQoAgBJBEAgCigCACAJKAIAIBQoAgAgCigCAGsQ+wIgCSAJKAIAIBQoAgAgCigCAGtqNgIAIAogFCgCADYCAAsDQCAKKAIAICMoAgBPDQIgCSAJKAIAIgBBAWo2AgAgACwAACEBIAogCigCACIAQQFqNgIAIAAgAToAAAwACwAFIAAgCSgCACALKAIEQQhrEPsCCwsgEiAcKAIANgIACwsgNSASKAIANgIAIDUoAgAQzQFBAEchACA1KAIAIQEgAA0CIBMgEygCACABajYCAAwBCwsMAQsgECABNgIAIBAoAgAhACAHJAUgAA8LIAIEQCAQQWw2AgAgECgCACEAIAckBSAADwsgGEEANgIAA0AgGCgCAEEDTw0CIA4oAgBBrOABaiAYKAIAQQJ0aiANQSxqIBgoAgBBAnRqKAIANgIAIBggGCgCAEEBajYCAAwACwALCyApIEgoAgAgKygCAGs2AgAgKSgCACBHKAIAIBMoAgBrSwR/IBBBun82AgAgECgCACEAIAckBSAA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IAAoAgAgOygCAGs2AgAgCyA4KAIANgIAIAooAgAgHygCAE0EQCAOKAIEQQNPDQILICNBADYCAANAICMoAgAgDigCBEkEQCAKKAIAICMoAgBqIAsoAgAgIygCAGosAAA6AAAgIyAjKAIAQQFqNgIADAELCyAbICwoAgA2AgAMAwsLIA4oAghBCEkEQCBkIA4oAghBAnRBkD1qKAIANgIAIAooAgAgCygCACwAADoAACAKKAIAIAsoAgAsAAE6AAEgCigCACALKAIALAACOgACIAooAgAgCygCACwAAzoAAyALIAsoAgAgDigCCEECdEGwPWooAgBqNgIAIAooAgBBBGogCygCABCeBCALIAsoAgAgZCgCAGs2AgAFIAooAgAgCygCABD8AgsgCiAKKAIAQQhqNgIAIAsgCygCAEEIajYCACAKKAIAIQACQCA6KAIAICsoAgBBc2pLBEAgACAfKAIASQRAIAooAgAgCygCACAfKAIAIAooAgBrEPsCIAsgCygCACAfKAIAIAooAgBrajYCACAKIB8oAgA2AgALA0AgCigCACA6KAIATw0CIAsgCygCACIAQQFqNgIAIAAsAAAhASAKIAooAgAiAEEBajYCACAAIAE6AAAMAAsABSAAIAsoAgAgDigCBEEIaxD7AgsLIBsgLCgCADYCAAsLIGAgGygCADYCACBgKAIAEM0BQQBHIQAgYCgCACEBIAANAiAVIBUoAgAgAWo2AgAgECAQKAIAQQFqNgIADAELCwwBCyAUIAE2AgAgFCgCACEAIAckBSAADwsgKUEANgIAA0AgKSgCAEEDTw0CIBYoAgBBrOABaiApKAIAQQJ0aiARQSxqICkoAgBBAnRqKAIANgIAICkgKSgCAEEBajYCAAwACwALCyBMIGMoAgAgNygCAGs2AgAgTCgCACBiKAIAIBUoAgBrSwR/IBRBun82AgAgFCgCACEAIAckBSAABSAVKAIAIDcoAgAgTCgCABD0BxogFSAVKAIAIEwoAgBqNgIAIBQgFSgCACBhKAIAazYCACAUKAIAIQAgByQFIAALC44BAQJ/IwUhByMFQSBqJAUgB0EYaiIIIAA2AgAgB0EUaiIAIAE2AgAgB0EQaiIBIAI2AgAgB0EMaiICIAM2AgAgB0EIaiIDIAQ2AgAgB0EEaiIEIAU2AgAgByAGNgIAIAgoAgAg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IAMoAgAoAgQ2AgAgAigCAEHA4AFqIAMoAgAoAgQ2AgAgAigCAEHE4AFqIAMoAgAoAgQgAygCACgCCGo2AgAgAigCAEG44AFqIAIoAgBBxOABaigCADYCACACKAIAQYjhAWohACADKAIAQbjgAWooAgAEQCAAQQE2AgAgAigCAEGM4QFqQQE2AgAgAigCACADKAIAQQxqNgIAIAIoAgAgAygCAEGcMGo2AgQgAigCACADKAIAQZQgajYCCCACKAIAIAMoAgBBpNAAajYCDCACKAIAQazgAWogAygCAEGo4AFqKAIANgIAIAIoAgBBsOABaiADKAIAQazgAWooAgA2AgAgAigCAEG04AFqIAMoAgBBsOABaigCADYCAAUgAEEANgIAIAIoAgBBjOEBakEANgIACwsgBUEANgIAIAUoAgAhACAEJAUgAAvSAQEEfyMFIQMjBUEgaiQFIANBFGohBCADQRBqIgUgADYCACADQQxqIgYgATYCACADQQhqIgEgAjYCACADQQRqIgAgBSgCABCrBDYCACAAKAIAEM0BBEAgBCAAKAIANgIAIAQoAgAhACADJAUgAA8LIAMhACAGKAIAQQBHIAEoAgBBAEdxBEAgACAFKAIAIAYoAgAgASgCABCsBDYCACAAKAIAEM0BBEAgBEFiNgIAIAQoAgAhACADJAUgAA8LCyAEQQA2AgAgBCgCACEAIAMkBSAAC+gIAQt/IwUhBSMFQdAAaiQFIAVBzABqIQYgBUHIAGoiCCAANgIAIAVBxABqIgAgATYCACAFQUBrIgcgAjYCACAFQTxqIg0gAzYCACAFQThqIg4gBDYCACAFQTRqIgEgDSgCACgCADYCACAFQTBqIgogACgCADYCACAFQSxqIgwgCigCACAHKAIAajYCACAFQShqIgMgCigCADYCACAFQSRqIgIgDigCACgCADYCACACKAIAQQlJBEAgBkG4fzYCACAGKAIAIQAgBSQFIAAPCyAFQSBqIgkgASgCAEEFEPUDNgIAIAkoAgAQzQEEQCAGIAkoAgA2AgAgBigCACEAIAUkBSAADwsgAigCACAJKAIAQQNqSQRAIAZBuH82AgAgBigCACEAIAUkBSAADwsgBUEcaiIAIAgoAgAgASgCACAJKAIAEKgENgIAIAAoAgAQzQEEQCAGIAAoAgA2AgAgBigCACEAIAUk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ACANKAIAQQJ0aigCADYCACAOIBEoAgA2AgAgFCARKAIAIBAoAgBqNgIAIAogBC8BACATKAIAQQh0akH//wNxEOAEIAogDygCACAWKAIAajoAAiAKQQI6AAMDQCAVKAIAIQEgDiAOKAIAIgJBAWo2AgAgASACQQJ0aiAKKAEANgEAIA4oAgAgFCgCAEkNAAsgACANKAIAQQJ0aiIBIAEoAgAgECgCAGo2AgAgCyALKAIAQQFqNgIADAELCyAJJAULcwEDfyMFIQIjBUEQaiQFIAIhAyACQQRqIgQgADYCACACQQhqIgAgATsBACAEKAIAIQFBkOUALQAABEAgASAALgEAEOEEIAIkBQUgAyABNgIAIAMoAgAgAC4BADoAACADKAIAIAAvAQBBCHU6AAEgAiQFCwszAQF/IwUhAiMFQRBqJAUgAiAANgIAIAJBBGoiACABOwEAIAIoAgAgAC4AADsAACACJAULwgIBBn8jBSEFIwVB0ABqJAUgBUE8aiEGIAVBOGoiByAANgIAIAVBNGoiCCABNgIAIAVBMGoiCSACNgIAIAVBLGoiCiADNgIAIAVBKGoiACAENgIAIAVBJGoiASAHKAIANgIAIAVBIGoiAyABKAIAIAgoAgBqNgIAIAVBHGoiAiAAKAIAQQRqNgIAIAVBGGoiBCACKAIANgIAIAVBQGsiAiAAKAIAENIDIAVBBGoiByACLQACNgIAIAUiACAFQQhqIgIgCSgCACAKKAIAEL4ENgIAIAUoAgAQzAEEQCAGIAAoAgA2AgAgBigCACEAIAUkBSAADwsgASgCACACIAMoAgAgBCgCACAHKAIAENgEGiACENUDBH8gBiAIKAIANgIAIAYoAgAhACAFJAUgAAUgBkFsNgIAIAYoAgAhACAFJAUgAAsLhgIBAn8jBSECIwVBEGokBSACQQRqIgEgADYCACABKAIAQaCoAWpBBTYCACABKAIAQcyoAWpBADYCACABKAIAQZCoAWpBADYCACABKAIAQZSoAWpBADYCACABKAIAQZioAWpBADYCACABKAIAQZyoAWpBADYCACABKAIAQYwoakGMgIDgADYCACABKAIAQdSoAWpBADYCACABKAIAQdCoAWpBADYCACABKAIAQbSpAWpBADYCACACIgBBADYCAANAIAAoAgBBA0gEQCABKAIAQaSoAWogACgC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ACIBIAEoAgAgBSgCAC0AAUEIdGo2AgALIAIgBSgCACAAKAIAQQFraiwAADoAACACLQAABEBBCCACLQAAENQBayEBIAMoAgAgATYCBCADKAIAQQRqIgEgASgCAEEEIAAoAgBrQQN0ajYCAAwCCyAGQX82AgAgBigCACEAIAQkBSAADwsACyAGIAAoAgA2AgAgBigCACEAIAQkBSAAC+MFAQl/IwUhBCMFQTBqJAUgBEEEaiEDIARBKGoiBiAANgIAIARBJGoiAiABNgIAIARBIGoiASACKAIAQRBqEMMEQf8BcTYCACAEQRxqIgcgAigCAEEgahDDBEH/AXE2AgAgBEEYaiIAIAIoAgBBGGoQwwRB/wFxNgIAIARBFGoiCCABKAIAQQJ0QbA0aigCADYCACAEQRBqIgkgBygCAEECdEHANWooAgA2AgAgBEEMaiIFIAAoAgA2AgAgBEEIaiIKIAgoAgAgCSgCAGogBSgCAGo2AgAgACgCAARAIAMgACgCAEECdEGgN2ooAgAgAigCACAFKAIAENwBajYCACACKAIAEMAEGgUgA0EANgIACyAEIQACQCADKAIAQQNJBEAgASgCAEUgAygCAEEBTXEEQCADQQEgAygCAGs2AgALIAIoAgBBKGohBSADKAIARQRAIAMgBSgCADYCAAwCCyAAIAUgAygCAEECdGooAgA2AgAgAygCAEEBRwRAIAIoAgAgAigCACgCLDYCMAsgAigCACACKAIAKAIoNgIsIAMgACgCACIANgIAIAIoAgAgADYCKAUgAyADKAIAQQJrNgIAIAIoAgAgAigCACgCLDYCMCACKAIAIAIoAgAoAig2AiwgAigCACADKAIANgIoCwsgBigCACADKAIANgIIIAcoAgBBAnRBoDhqKAIAIQMgBygCAEEfSwR/IAIoAgAgCSgCABDcAQVBAAshACAGKAIAIANBA2ogAGo2AgQgCSgCACAIKAIAakEYSwRAIAIoAgAQwAQaCyABKAIAQQJ0QYA6aigCACEDIAEoAgBBD0sEfyACKAIAIAgoAgAQ3AEFQQALIQAgBigCACADIABqNgIAIAooAgBBH0tBAXIEQCACKAIAEMAEGgsgAigCAEEQaiACKAIAEMQEIAIoAgBBIGogAigCABDEBCACKAIAEMAEGiACKAIAQRhqIAIoAgAQxAQgBCQFC+gI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QTBqIgcgACgCAEEGajYCACAFQSxqIhMgBygCACAKKAIAajYCACAFQShqIhQgEygCACALKAIAajYCACAFQSRqIhYgFCgCACAMKAIAajYCACAFQSBqIgAgECgCAEEDakEEbjYCACAFQRxqIg4gBCgCACAAKAIAajYCACAFQRhqIg8gDigCACAAKAIAajYCACAFQRRqIhEgDygCACAAKAIAajYCACAFQRBqIgMgBCgCADYCACAFQQxqIgQgDigCADYCACAFQQhqIgggDygCADYCACAFQQRqIg0gESgCADYCACAFQTRqIhUgCSgCACAKKAIAIAsoAgBqIAwoAgBqQQZqazYCACAVKAIAIAkoAgBLBEAgBkFsNgIAIAYoAgAhACAFJAUgAA8LIAVBiAFqIgAgBUH4AGoiCSAHKAIAIAooAgAQ8QQ2AgAgACgCABDMAQRAIAYgACgCADYCACAGKAIAIQAgBSQFIAAPCyAAIAVB6ABqIgogEygCACALKAIAEPEENgIAIAAoAgAQzAEEQCAGIAAoAgA2AgAgBigCACEAIAUkBSAADwsgACAFQdgAaiILIBQoAgAgDCgCABDxBDYCACAAKAIAEMwBBEAgBiAAKAIANgIAIAYoAgAhACAFJAUgAA8LIAAgBUHIAGoiDCAWKAIAIBUoAgAQ8QQ2AgAgACgCABDMAQRAIAYgACgCADYCACAGKAIAIQAgBSQFIAAPCyAFIgAgCRDABCAKEMAEciALEMAEciAMEMAEcjYCAANAAkAgACgCAA0AIA0oAgAgEigCAEF5ak8NACADKAIAIAkgASgCACACKAIAENAEIQcgAyADKAIAIAdqNgIAIAQoAgAgCiABKAIAIAIoAgAQ0AQhByAEIAQoAgAgB2o2AgAgCCgCACALIAEoAgAgAigCABDQBCEHIAggCCgCACAHajYCACANKAIAIAwgASgCACACKAIAENAEIQcgDSANKAIAIAdqNgIAIAMoAgAgCSABKAIAIAIoAgAQ0AQhByADIAMoAgAgB2o2AgAgBCgCACAKIAEoAgAgAigCABDQBCEHIAQgBCgCACAHajYCACAIKAIAIAsgASgCACACKAIAENAEIQcgCCAIKAIAIAdqNgIAIA0oAgAgDCABKAIAIAIoAgAQ0AQhByANIA0oAgAgB2o2AgAgACAJEMAEIAoQwARyIAsQwARy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mNABaiAAKAIAIAIoAgBBkNABaigCACACKAIAQZTQAWooAgBrazYCACACKAIAQZTQAWogACgCADYCACACKAIAQZDQAWogACgCADYCACADJAUL/AYBCX8jBSEFIwVB0ABqJAUgBUHEAGohBiAFQUBrIgkgADYCACAFQTxqIgAgATYCACAFQThqIgogAjYCACAFQTRqIgggAzYCACAFQTBqIgcgBDYCACAFQSxqIgEgCCgCADYCACAFQShqIg0gASgCACAHKAIAajYCACAFQSRqIgsgACgCADYCACAFQSBqIgMgCygCADYCACAFQRxqIgwgCygCACAKKAIAajYCACAFQRhqIgIgBygCADYCACAHKAIAQQhJBEAgBkG4fzYCACAGKAIAIQAgBSQFIAAPCyAFQQhqIgAgCSgCACAIKAIAQQUQiAU2AgAgACgCABDMAQRAIAYgACgCADYCACAGKAIAIQAgBSQFIAAPCyAHKAIAIAAoAgBBA2pJBEAgBkG4fzYCACAGKAIAIQAgBSQFIAAPCyABIAEoAgAgACgCAGo2AgAgAiACKAIAIAAoAgBrNgIAIAAgCSgCACAIKAIAIAAoAgAQiQU2AgAgACgCABDMAQRAIAYgACgCADYCACAGKAIAIQAgBSQFIAAPCyAFQRBqIQcgBUEEaiEEIAUhAAJAAkACQAJAAkACQAJAA0AgBEEANgIAIAAgASgCACANKAIAIAEoAgBrIAcQjgQ2AgAgACgCABDMAQ0BIAEgASgCAEEDajYCACACIAIoAgBBA2s2AgAgACgCACACKAIASw0CAkACQAJAAkACQAJAIAcoAgAOBAECAAMECwwICyAEIAkoAgAgAygCACAMKAIAIAMoAgBrIAEoAgAgACgCABCKBTYCAAwDCyAEIAMoAgAgDCgCACADKAIAayABKAIAIAAoAgAQqQQ2AgAMAgsgAigCAA0GDAELDAYLIAAoAgBFDQcgBCgCABDMAUEARyEKIAQoAgAhCCAKDQYgAyADKAIAIAhqNgIAIAEgASgCACAAKAIAajYCACACIAIoAgAgACgCAGs2AgAMAAsACyAGIAAoAgA2AgAgBigCACEAIAUkBSAADwsgBkG4fzYCACAGKAIAIQAgBSQFIAAPCyAGQX82AgAgBigCACEAIAUkBSAADwsgBkG4fzYCACAGKAIAIQAgBSQFIAAP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AgAgCigCACEAIAkkBSAADwsgBygCAEEKTQRAIAEgASgCACADKAIAajYCACANKAIAIAAgEigCACAHKAIAEJUFGgwBCyAKQWw2AgAgCigCACEAIAkkBSAADwsgCiABKAIAIAgoAgBrNgIAIAooAgAhACAJJAUgAAuuBQEFfyMFIQQjBUEgaiQFIARBFGohBSAEQRBqIgMgADYCACAEQQxqIgYgATYCACAEQQhqIgEgAjYCACABKAIAQQFJBEAgAygCACIAQgA3AgAgAEIANwIIIAVBuH82AgAgBSgCACEAIAQkBSAADwsgBEEEaiECIAQhACABKAIAQQRPIQcgAygCACAGKAIANgIMAkAgBwRAIAMoAgAgBigCACABKAIAakF8ajYCCCADKAIAKAIIEOEBIQAgAygCACAANgIAIAIgBigCACABKAIAQQFrai0AADYCACACKAIABEBBCCACKAIAENQBayEAIAMoAgAgADYCBAwCCyAFQX82AgAgBSgCACEAIAQkBSAADwUgAygCACADKAIAKAIMNgIIIAMoAgAgAygCACgCDC0AADYCAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgBBAmsOBgUEAwIBAAYLIAMoAgAiAiACKAIAIAMoAgAoAgwtAAZBEHRqNgIADAYLDAULDAULDAULDAULDAULDAULIAMoAgAiAiACKAIAIAMoAgAoAgwtAAVBCHRqNgIACyADKAIAIgIgAigCACADKAIAKAIMLQAEajYCAAsgAygCACICIAIoAgAgAygCACgCDC0AA0EYdGo2AgALIAMoAgAiAiACKAIAIAMoAgAoAgwtAAJBEHRqNgIACyADKAIAIgIgAigCACADKAIAKAIMLQABQQh0ajYCAAsgACAGKAIAIAEoAgBBAWtqLQAANgIAIAAoAgAEQEEIIAAoAgAQ1AFrIQAgAygCACAANgIEIAMoAgBBBGoiACAAKAIAQQQgASgCAGtBA3RqNgIADAILIAVBfzYCACAFKAIAIQAgBCQFIAAPCwALIAUgASgCADYCACAFKAIAIQAgBCQFIAALhQEBAn8jBSEDIwVBIGokBSADQRBqIgQgADYCACADQQxqIgAgATYCACADQQhqIgEgAjYCACADQQRqIgIgASgCADYCACADIAIoAgA2AgAgACgCACADKAIALwEAENwB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BiAANgIAIAVBDGoiACABNgIAIAVBCGoiASACNgIAIAVBBGoiAiADNgIAIAUgBDYCACAGKAIAIAAoAgAgASgCACACKAIAIAUoAgBBAEEAEK8FIQAgBSQFIAALxggBB38jBSEHIwVB0ABqJAUgB0HIAGoiCCAANgIAIAdBxABqIgAgATYCACAHQUBrIgsgAjYCACAHQTxqIgogAzYCACAHQThqIgkgBDYCACAHQTRqIgEgBTYCACAHQTBqIgUgBjYCACAHQSxqIgIgCigCADYCACAHQShqIg0gAigCACAJKAIAajYCACAHQSRqIgYgACgCADYCACAHQSBqIgQgBigCADYCACAHQRxqIgwgBigCACALKAIAajYCACAHQRhqIgMgCSgCADYCACAIKAIAELAFGiABKAIABEAgCCgCACABKAIAIAUoAgAQsQUgCCgCAEGY0ABqIAgoAgBBjNAAaigCADYCACAIKAIAQZTQAGogACgCACAIKAIAQYzQAGooAgAgCCgCAEGQ0ABqKAIAa2s2AgAgCCgCAEGQ0ABqIAAoAgA2AgAFIAgoAgBBmNAAaiAAKAIAIgA2AgAgCCgCAEGQ0ABqIAA2AgAgCCgCAEGU0ABqIAA2AgALIAdBzABqIQEgCSgCAEEISQRAIAFBuH82AgAgASgCACEAIAckBSAADwsgB0EIaiIAIAgoAgAgCigCAEEFELIFNgIAIAAoAgAQzAEEQCABIAAoAgA2AgAgASgCACEAIAckBSAADwsgCSgCACAAKAIAQQNqSQRAIAFBuH82AgAgASgCACEAIAckBSAADwsgAiACKAIAIAAoAgBqNgIAIAMgAygCACAAKAIAazYCACAAIAgoAgAgCigCACAAKAIAELMFNgIAIAAoAgAQzAEEQCABIAAoAgA2AgAgASgCACEAIAckBSAADwsgB0EQaiEJIAdBBGohBSAHIQACQAJAAkACQAJAAkACQANAIAVBADYCACAAIAIoAgAgDSgCACACKAIAayAJEI4ENgIAIAAoAgAQzAENASACIAIoAgBBA2o2AgAgAyADKAIAQQNrNgIAIAAoAgAgAygCAEsNAgJAAkACQAJAAkACQCAJKAIADgQBAgADBAsMCAsgBSAIKAIAIAQoAgAgDCgCACAEKAIAayACKAIAIAAoAgAQtAU2AgAMAwsgBSAEKAIAIAwoAgAg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AgAgBSgCACEAIAQkBSAADwsgBEEEaiECIAQhACABKAIAQQRPIQcgAygCACAGKAIANgIMAkAgBwRAIAMoAgAgBigCACABKAIAakF8ajYCCCADKAIAKAIIEL0FIQAgAygCACAANgIAIAIgBigCACABKAIAQQFrai0AADYCACACKAIABEBBCCACKAIAENQBayEAIAMoAgAgADYCBAwCCyAFQX82AgAgBSgCACEAIAQkBSAADwUgAygCACADKAIAKAIMNgIIIAMoAgAgAygCACgCDC0AADYCAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgBBAmsOBgUEAwIBAAYLIAMoAgAiAiACKAIAIAMoAgAoAgwtAAZBEHRqNgIADAYLDAULDAULDAULDAULDAULDAULIAMoAgAiAiACKAIAIAMoAgAoAgwtAAVBCHRqNgIACyADKAIAIgIgAigCACADKAIAKAIMLQAEajYCAAsgAygCACICIAIoAgAgAygCACgCDC0AA0EYdGo2AgALIAMoAgAiAiACKAIAIAMoAgAoAgwtAAJBEHRqNgIACyADKAIAIgIgAigCACADKAIAKAIMLQABQQh0ajYCAAsgACAGKAIAIAEoAgBBAWtqLQAANgIAIAAoAgAEQEEIIAAoAgAQ1AFrIQAgAygCACAANgIEIAMoAgBBBGoiACAAKAIAQQQgASgCAGtBA3RqNgIADAILIAVBfzYCACAFKAIAIQAgBCQFIAAPCwALIAUgASgCADYCACAFKAIAIQAgBCQFIAALdgECfyMFIQMjBUEQaiQFIANBCGoiBCAANgIAIANBBGoiACABNgIAIAMgAjYCACADQQxqIgEgAygCACgBADYBACAAKAIAIAEvAQAQ3AEhASAEKAIAIAE2AgAgACgCABC6BRogBCgCACADKAIAQQRqNgIEIAMkBQvAAwEGfyMFIQMjBUEQaiQFIANBDGohAiADQQhqIgEgADYCACABKAIAKAIEQSBLBEAgAkEDNgIAIAIoAgAhACADJAUgAA8LIAEoAgAhBSABKAIAKAIIIAEoAgAoAgxBBGpPBEAgASgCAEEIaiIAIAAoAgAgBSgCBEEDdms2AgAgASgCAEEEaiIAIAAoAgBBB3E2AgAgASgCACgCCBC9BSEAIAEoAgAgADYCACACQQA2AgAgAigCACEAIAMk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QCACKAIIQQRPDQILA0AgCCgCACAGKAIASQRAIAEgASgCACIAQQFqNgIAIAAsAAAhACAIIAgoAgAiAkEBajYCACACIAA6AAAMAQsLIAogBSgCADYCACAKKAIAIQAgCSQFIAAPCwsgAigCBEEISQRAIAAgAigCBEECdEGQPWooAgA2AgAgCCgCACABKAIALAAAOgAAIAgoAgAgASgCACwAAToAASAIKAIAIAEoAgAsAAI6AAIgCCgCACABKAIALAADOgADIAEgASgCACACKAIEQQJ0QbA9aigCAGo2AgAgCCgCAEEEaiABKAIAEJ4EIAEgASgCACAAKAIAazYCAAUgCCgCACABKAIAEPwCCyAIIAgoAgBBCGo2AgAgASABKAIAQQhqNgIAIAgoAgAhAAJAIAYoAgAgCygCAEF0aksEQCAAIAQoAgBJBEAgCCgCACABKAIAIAQoAgAgCCgCAGsQ+wIgASABKAIAIAQoAgAgCCgCAGtqNgIAIAggBCgCADYCAAsDQCAIKAIAIAYoAgBPDQIgASABKAIAIgBBAWo2AgAgACwAACEAIAggCCgCACICQQFqNgIAIAIgADoAAAwACwAFIAAgASgCACACKAIIQQhrEPsCCwsgCiAFKAIANgIAIAooAgAhACAJJAUgAAs3AQJ/IwUhASMFQRBqJAUgASAANgIAIAFBBGoiAiABKAIAIgAQkAQ2AgAgAigCACEAIAEkBSAAC40LARB/IwUhBSMFQdAAaiQFIAVBQGshBiAFQTxqIhIgADYCACAFQThqIg8gATYCACAFQTRqIgggAjYCACAFQTBqIgAgAzYCACAFQSxqIhAgBDYCACAFQShqIg4gACgCADYCACAFQSRqIgsgDigCACAQKAIAajYCACAFQSBqIgIgDigCADYCACAFQQhqIglBADYCACAFQQRqIhNBADYCACAQKAIAQQRJBEAgBkG4fzYCACAGKAIAIQAgBSQFIAAPCyAFQRBqIgMgAigCABCQBDYCACAFQRxqIgQgAygCAEEPcUEFajYCACAEKAIAQQ9KBEAgBkFUNgIAIAYoAgAhACAFJAUgAA8LIAUhACAFQcYAaiERIAVBxABqIQcgAyADKAIAQQR2NgIAIAVBDGoiAUEENgIAIAgoAgAgBCgCADYCACAFQRhqIgxBASAEKAIAdEEBajYCACAFQRRqIghB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CyABQQRqIgAgACgCACABKAIEQQR2ajYCACABQQhqIgAgACgCACABKAIIQQN2ajYCACABKAIEIAEoAgBJBEAgA0EBNgIACyAFIAcoAgAgBigCACAIKAIAIAIoAgAgAygCAEECdEHE5QBqKAIAQQ9xQagBahEIADYCACAFKAIAIQAgBCQFIAALrQIBBn8jBSEEIwVBoMAAaiQFIARBnMAAaiEFIARBmMAAaiIHIAA2AgAgBEGUwABqIgggATYCACAEQZDAAGoiBiACNgIAIARBjMAAaiIBIAM2AgAgBCIAQQBBgsAAEPYHGiAEQQw7AQAgBEGIwABqIgMgBigCADYCACAEQYTAAGoiAiAEIAYoAgAgASgCABDLBTYCACACKAIAEMwBQQBHIQkgAigCACEGIAkEQCAFIAY2AgAgBSgCACEAIAQkBSAADwsgBiABKAIATwR/IAVBuH82AgAgBSgCACEAIAQkBSAABSADIAMoAgAgAigCAGo2AgAgASABKAIAIAIoAgBrNgIAIAUgBygCACAIKAIAIAMoAgAgASgCACAAEMwFNgIAIAUoAgAhACAEJAUgAAsLrQIBBn8jBSEEIwVBoIABaiQFIARBnIABaiEFIARBmIABaiIHIAA2AgAgBEGUgAFqIgggATYCACAEQZCAAWoiBiACNgIAIARBjIABaiIBIAM2AgAgBCIAQQBBhIABEPYHGiAEQQw2AgAgBEGIgAFqIgMgBigCADYCACAEQYSAAWoiAiAEIAYoAgAgASgCABDDBTYCACACKAIAEMwBQQBHIQkgAigCACEGIAkEQCAFIAY2AgAgBSgCACEAIAQkBSAADwsgBiABKAIATwR/IAVBuH82AgAgBSgCACEAIAQkBSAABSADIAMoAgAgAigCAGo2AgAgASABKAIAIAIoAgBrNgIAIAUgBygCACAIKAIAIAMoAgAgASgCACAAEMQFNgIAIAUoAgAhACAEJAUgAAsLhQoBG38jBSEDIwVB0BBqJAUgA0HIEGohBiADQcQQaiIEIAA2AgAgA0HAEGoiACABNgIAIANBvBBqIgEgAjYCACADQZAJaiICQgA3AwAgAkIANwMIIAJCADcDECACQgA3AxggAkIANwMgIAJCADcDKCACQgA3AzAgAkIANwM4IAJBQGtBADYCACADQcAIaiIHQgA3AwAgB0IANwMIIAdC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AigCAEECdGooAgA2AgAgCiAELgEAEOAEIAogFigCADoAAiAKQQE6AAMgDEEANgIAA0AgDCgCACASKAIATw0CIBUoAgAgDCgCAEECdGogCigBADYBACAMIAwoAgBBAWo2AgAMAAsACwsgC0EANgIAA0AgCygCACAFKAIASQRAIBMgAygCACALKAIAQQF0ai0AADYCACANIAMoAgAgCygCAEEBdGotAAE2AgAgDyAGKAIAIA0oAgBrNgIAIBBBASAXKAIAIA8oAgBrdDYCACARIAAgDSgCAEECdGooAgA2AgAgDiARKAIANgIAIBQgESgCACAQKAIAajYCACAKIAQvAQAgEygCAEEIdGpB//8DcRDgBCAKIA8oAgAgFigCAGo6AAIgCkECOgADA0AgFSgCACEBIA4gDigCACICQQFqNgIAIAEgAkECdGogCigBADYBACAOKAIAIBQoAgBJDQALIAAgDSgCAEECdGoiASABKAIAIBAoAgBqNgIAIAsgCygCAEEBajYCAAwBCwsgCSQFC6YDAQh/IwUhBCMFQcCEAWokBSAEQbSEAWohBSAEQbCEAWoiByAANgIAIARBrIQBaiIIIAE2AgAgBEGohAFqIgEgAjYCACAEQaSEAWoiAiADNgIAIARBoIQBaiIAIAEoAgA2AgAgBEGchAFqIgMgACgCADYCACAEQZSEAWoiBkH/ATYCACACKAIAQQJJBEAgBUG4fzYCACAFKAIAIQAgBCQFIAAPCyAEQZCEAWoiASAEQZCAAWoiCSAGIARBmIQBaiIKIAAoAgAgAigCABC+BTYCACABKAIAEMwBQQBHIQsgASgCACEAIAsEQCAFIAA2AgAgBSgCACEAIAQkBSAADwsgACACKAIATwRAIAVBuH82AgAgBSgCACEAIAQkBSAADwsgAyADKAIAIAEoAgBqNgIAIAIgAigCACABKAIAazYCACABIAQiACAJIAYoAgAgCigCABCVBTYCACABKAIAEMwBBH8gBSABKAIANgIAIAUoAgAhACAEJAUgAAUgBSAHKAIAIAgoAgAgAygCACACKAIAIAAQygU2AgAgBSgCACEAIAQkBSAACwuNDgEkfyMFIQUjBUHAAWokBSAFQbgBaiEQIAVBtAFqIRsgBUGwAWohHCAFQawBaiEdIAVBqAFqIR4gBUGkAWohFSAFQaABaiEKIAVB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AWogADYCACAFKAIAQejhAWooAgAQzQFBAEchAyAFKAIAIQAgAwRAIAYgAEHo4QFqKAIANgIAIAYoAgAhACAHJAUgAA8FIABB3OIJaiACKAIAIAEoAgAQ9AcaIAUoAgBByOABaiAFKAIAQejhAWooAgAgASgCAGs2AgAgBSgCAEGE4QFqQQE2AgAgBkEANgIAIAYoAgAhACAHJAUgAA8LAAsgBSgCAEHc4glqIAUoAgBB6OEBaigCACABKAIAa2ogAigCACABKAIAEPQHGiALIAUoAgAgBSgCAEHc4glqIAUoAgBB6OEBaigCABCoBDYCACALKAIAEM0BBEAgBiALKAIANgIAIAYoAgAhACAHJAUgAA8FIAUoAgBByOABakEDNgIAIAUoAgBBhOEBakECNgIAIAZBADYCACAGKAIAIQAgByQFIAAPCwALIAogAigCAEEDIAQQhwQ2AgAgCigCABDNAUEARyEBIAooAgAhACABBEAgBiAANgIAIAYoAgAhACAHJAUgAA8LIAUoAgBByOABaiAANgIAIAUoAgBBgOEBaiAEKAIANgIAIAUoAgBBiOIBaiAEKAIINgIAIAQoAgRBAEchACAKKAIABEAgBSgCAEGE4QFqIAAEf0EEBUEDCzYCACAGQQA2AgAgBigCACEAIAckBSAADwsgBSgCACEBIAAEQCAFKAIAQcjgAWohACABQfDgAWooAgAEQCAAQQQ2AgAgBSgCAEGE4QFqQQU2AgAFIABBADYCACAFKAIAQYThAWpBADYCAAsFIAFByOABakEDNgIAIAUoAgBBhOEBakECNgIACyAGQQA2AgAgBigCACEAIAckBSAADwsCQAJAAkACQAJAIAUoAgBBgOEBaigCAA4DAQIAAwsgAyAFKAIAIAgoAgAgCSgCACACKAIAIAEoAgBBARCXBDYCAAwDCyADIAgoAgAgCSgCACACKAIAIAEoAgAQqQQ2AgAMAgsgAyAIKAIAIAkoAgAgAigCACABKAIAIAUoAgBBiOIBaigCABDUBTYCAAwBCyAGQWw2AgAgBigCACEAIAckBSAADwsgAygCABDNAUEARyEBIAMoAgAhACABBEAgBiAANgIAIAYoAgAhACAHJAUgAA8LIAUoAgBB+OABaiIBIAEpAwAgAK18NwMAIAUoAgBB8OABaigCAARAIAUoAgBBkOEBaiAI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AygCAEGE4QFqQQI2AgALIAMoAgBB2OABaiADKAIAQdjgAWopAwBCgAhWBH4gAygCAEHY4AFqKQMABUKACAs3AwAgAygCAEHY4AFqKQMAIAMoAgBBrOIBaigCAK1WBEBBNCEBDAULIBkgAygCAEHg4AFqKAIAQQRLBH8gAygCAEHg4AFqKAIABUEECyIGNgIAIBogAygCAEHY4AFqKQMAIAMoAgBB0OABaikDABDjBTYCAAJAAkAgAygCAEGk4gFqKAIAIBkoAgBJDQAgAygCAEG04gFqKAIAIBooAgBJDQAMAQsgIiAZKAIAIBooAgBqNgIAIAMoAgBBjOIBaigCAARAICIoAgAgAygCAEGM4gFqKAIAQfDiCWtLBEBBOyEBDAcLBSADKAIAQaDiAWooAgAhBiANIAMoAgBB+OEBaiIOKQIANwIAIA0gDigCCDYCCCAGIA0Q7wEgAygCAEGk4gFqQQA2AgAgAygCAEG04gFqQQA2AgAgIigCACEGIA0gAygCAEH44QFqIg4pAgA3AgAgDSAOKAIINgIIIAYgDRDtASEGIAMoAgBBoOIBaiAGNgIAIAMoAgBBoOIBaigCAEUEQEE9IQEMBwsLIAMoAgBBpOIBaiAZKAIANgIAIAMoAgBBsOIBaiADKAIAQaDiAWooAgAgAygCAEGk4gFqKAIAajYCACADKAIAQbTiAWogGigCADYCAAsgAygCAEGc4gFqQQI2AgALIBEgAygCABDRBTYCACARKAIARQRAIAMoAgBBnOIBakEANgIAIAFBADYCAAwDCyALKAIAIAIoAgBrIBEoAgBJBEAgAigCACALKAIARgRAIAFBADYCAAwEBSADKAIAQZziAWpBAzYCAAwCCwALICMgAygCABDnBTYCACASIAMoAgAiDiADKAIAQbDiAWooAgAgAygCAEG44gFqKAIAaiAjKAIABH9BAAUgAygCAEG04gFqKAIAIAMoAgBBuOIBaigCAGsLIgYgAigCACARKAIAENMFNgIAIBIoAgAQzQEEQEHGACEBDAQLIAIgAigCACARKAIAajYCACASKAIAICMoAgByBEAgAygCAEG84gFqIAMoAgBBuOIBaigCACASKAIAajYCACADKAIAQZziAWpBBDYCAAsMAgsgJCADKAIAENEFNgIAIBMgJCgCACADKAIAQajiAWooAgBrNgIA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NgIAIAMoAgAhASAAKAIABEAgARDSBUECRkEDbCEBIAAgACgCACABajYCACAAIAAoAgAgAygCAEGo4gFqKAIAazYCACAFIAAoAgA2AgAgBSgCACEAIAQkBSAADwsgAygCAEHQ4gFqKAIAQQBHIQAgAUG84gFqKAIAIAMoAgBBuOIBaigCAEcEQCAARQRAIAcoAgBBCGoiACAAKAIAQX9qNgIAIAMoAgBB0OIBakEBNgIACyAFQQE2AgAgBSgCACEAIAQkBSAADwsCQCAABEAgBygCACgCCCAHKAIAKAIESQRAIAcoAgBBCGoiACAAKAIAQQFqNgIADAILIAMoAgBBnOIBakECNgIAIAVBATYCACAFKAIAIQAgBCQFIAAPCwsgBUEANgIAIAUoAgAhACAEJAUgAA8LQQALvggBHH8jBSEEIwVBgAFqJAUgBEHwAGohBiAEQdwAaiEQIARB2ABqIREgBEHUAGohCCAEQdAAaiESIARBzABqIQkgBEHIAGohEyAEQcQAaiEUIARBQGshFSAEQTxqIQogBEE4aiEWIARBNGohCyAEQTBqIRcgBEEsaiEYIARBKGohGSAEQSRqIQwgBEEgaiEaIARBHGohDSAEQRhqIRsgBEEUaiEcIARBEGohHSAEQQxqIQ4gBEEIaiEeIARBBGohDyAEIR8gBEHsAGoiByAANgIAIARB6ABqIgAgATYCACAEQeQAaiIFIAI2AgAgBEHgAGoiASADNgIAAkACQAJAAkACQCAAKAIAQQRrDgQDAgEABAsgHCAHKAIANgIAIB0gASgCACgCACABKAIAKAIIajYCACAOIAEoAgAoAgQgASgCACgCCGs2AgAgHiAFKAIAKAIAIAUoAgAoAghqNgIAIA8gBSgCACgCBCAFKAIAKAIIazYCACAfIBwoAgAgHigCACAPIB0oAgAgDhD4BTYCACAFKAIAQQhqIgAgACgCACAPKAIAajYCACABKAIAQQhqIgAgACgCACAOKAIAajYCACAGIB8oAgA2AgAgBigCACEAIAQkBSAADwsgGCAHKAIANgIAIBkgASgCACgCACABKAIAKAIIajYCACAMIAEoAgAoAgQgASgCACgCCGs2AgAgGiAFKAIAKAIAIAUoAgAoAghqNgIAIA0gBSgCACgCBCAFKAIAKAIIazYCACAbIBgoAgAgGigCACANIBkoAgAgDBD3BTYCACAFKAIAQQhqIgAgACgCACANKAIAajYCACABKAIAQQhqIgAgACgCACAMKAIAajYCACAGIBsoAgA2AgAgBigCACEAIAQkBSAADwsgFCAHKAIANgIAIBUgASgCACgCACABKAIAKAIIajYCACAKIAEoAgAoAgQgASgCACgCCGs2AgAgFiAFKAIAKAIAIAUoAgAoAghqNgIAIAsgBSgCACgCBCAFKAIAKAIIazYCACAXIBQoAgAgFigCACALIBUoAgAgChD2BTYCACAFKAIAQQhqIgAgACgCACALKAIAajYCACABKAIAQQhqIgAgACgCACAKKAIAajYCACAGIBcoAgA2AgAgBigCACEAIAQkBSAADwsgECAHKAIANgIAIBEgASgCACgCACABKAIAKAIIajYCACAIIAEoAgAoAgQgASgCACgCCGs2AgAgEiAFKAIAKAIAIAUoAgAoAghqNgIAIAkgBSgCACgCBCAFKAIAKAIIazYCACATIBAoAgAgEigCACAJIBEoAgAgCBD1BTYCACAFKAIAQQhqIgAgACgCACAJKAIAajYCACABKAIAQQhqIgAgACgCACAIKAIAajYCACAGIBMoAgA2AgAgBigCACEAIAQkBSAADwsgBkF0NgIAIAYoAgAhACAEJAUgAAuRBQEGfyMFIQUjBUEwaiQFIAVBIGoiBiAANgIAIAVBHGoiByABNgIAIAVBGGoiCCACNgIAIAVBFGoiCSADNgIAIAVBEGoiAyAENgIAIAcoAgAgCCgCAEcEQCAGKAIAKAIAIAcoAgAQ7AMaCyAFQSRqIQEgBUEMaiECIAVBCGohBCAFQQRqIQogBSEAAkACQAJAAkACQCAIKAIAQQRrDgQDAgEABAsgACAHKAIAIAgoAgBHBH8Q7wUFIAYoAgAoAgALNgIAIAAoAgAEQCAAKAIAIAkoAgAgAygCABDwBRogBigCACAAKAIANgIAIAFBADYCACABKAIAIQAgBSQFIAAPBSABQUA2AgAgASgCACEAIAUkBSAADwsACyAKIAcoAgAgCCgCAEcEfxDtBQUgBigCACgCAAs2AgAgCigCAARAIAooAgAgCSgCACADKAIAEO4FGiAGKAIAIAooAgA2AgAgAUEANgIAIAEoAgAhACAFJAUgAA8FIAFBQDYCACABKAIAIQAgBSQFIAAPCwALIAQgBygCACAIKAIARwR/EOsFBSAGKAIAKAIACzYCACAEKAIABEAgBCgCACAJKAIAIAMoAgAQ7AUaIAYoAgAgBCgCADYCACABQQA2AgAgASgCACEAIAUkBSAADwUgAUFANgIAIAEoAgAhACAFJAUgAA8LAAsgAiAHKAIAIAgoAgBHBH8Q9AUFIAYoAgAoAgALNgIAIAIoAgAEQCACKAIAEOkFGiACKAIAIAkoAgAgAygCABDqBRogBigCACACKAIANgIAIAFBADYCACABKAIAIQAgBSQFIAAPBSABQUA2AgAgASgCACEAIAUkBSAADwsACyABQQA2AgAgASgCACEAIAUkBSAACy4BAX8jBSEBIwVBEGokBSABIAA2AgAgASgCAEGE4QFqKAIAQQdGIQAgASQFIAALhwEBBH8jBSEEIwVBIGokBSAEQRBqIgYgADYCACAEQQxqIgUgATYCACAEQQhqIgcgAjYCACAEQQRqIgEgAzYCACAFKAIAIQIgASgCACEDIAQiACAFKAIAIAEoAgBJBH8gAgUgAws2AgAgBigCACAHKAIAIAAoAgAQ9AcaIAAoAgAhACAEJAUgAAsmAQF/IwUhASMFQRBqJAUgASAANgIAIAEoAgAQ8wUhACABJAUgAAtIAQJ/IwUhAyMFQRBqJAUgA0EIaiIEIAA2AgAgA0EEaiIAIAE2AgAgAyACNgIAIAQoAgAgACgCACADKAIAEPIFIQAgAyQFIAALzAEBBH8jBSECIwVBEGokBSACQQRqIQMgAiIBQeAAEIYGNgIAIAEoAgAEfyABKAIAIgBCADcDACAAQgA3AwggAEIANwMQIABCADcDGCAAQgA3AyAgAEIANwMoIABCADcDMCAAQgA3AzggAEFAa0IANwMAIABCADcDSCAAQgA3A1AgAEIANwNYELAEIQAgASgCACAANgIAIAEoAgBBADYCUCADIAEoAgA2AgAgAygCACEBIAIkBSABBSADQQA2AgAgAygCACEBIAIkBSABCwt9AQJ/IwUhBCMFQRBqJAUgBEEIaiIDIAA2AgAgBEEEaiIAIAE2AgAgBCACNgIAIAMoAgBBATYCUCADKAIAQQA2AkggAygCAEEANgJEIAMoAgBBADYCOCADKAIAQQA2AkwgAygCACgCACAAKAIAIAQoAgAQhQUhACAEJAUgAAu+AQEEfyMFIQIjBUEQaiQFIAJBBGohAyACIgFB0AAQhgY2AgAgASgCAAR/IAEoAgAiAEIANwMAIABCADcDCCAAQgA3AxAgAEIANwMYIABCADcDICAAQgA3AyggAEIANwMwIABCADcDOCAAQUBrQgA3AwAgAEIANwNIELIEIQAgASgCACAANgIAIAEoAgBBADYCGCADIAEoAgA2AgAgAygCACEBIAIkBSABBSADQQA2AgAgAygCACEBIAIkBSABCwt9AQJ/IwUhBCMFQRBqJAUgBEEIaiIDIAA2AgAgBEEEaiIAIAE2AgAgBCACNgIAIAMoAgBBATYCGCADKAIAQQA2AjQgAygCAEEANgIwIAMoAgBBADYCJCADKAIAQQA2AkwgAygCACgCACAAKAIAIAQoAgAQ6gQhACAEJAUgAAs0AQJ/IwUhACMFQRBqJAUgAEGg5QApAgA3AgAgAEGo5QAoAgA2AgggABDxBSEBIAAkBSABC30BAn8jBSEEIwVBEGokBSAEQQhqIgMgADYCACAEQQRqIgAgATYCACAEIAI2AgAgAygCAEEBNgIgIAMoAgBBADYCPCADKAIAQQA2AjggAygCAEEANgIsIAMoAgBBADYCWCADKAIAKAIAIAAoAgAgBCgCABC2BCEAIAQkBSAAC5wDAQV/IwUhBCMFQSBqJAUgACgCAEUEQCAAKAIERQRAIABBoOUAKQIANwIAIABBqOUAKAIANgIICwsgBEEIaiEFIARBBGohAiAEIQMgACgCAARAIAAoAgQEQCADIAAoAghB6AAgACgCAEE/cUHIAGoRBwA2AgAgAygCAEUEQCACQQA2AgAgAigCACEAIAQkBSAADwsgAygCACIBQgA3AwAgAUIANwMIIAFCADcDECABQgA3AxggAUIANwMgIAFCADcDKCABQgA3AzAgAUIANwM4IAFBQGtCADcDACABQgA3A0ggAUIANwNQIAFCADcDWCABQgA3A2AgAygCAEHcAGoiASAAKQIANwIAIAEgACgCCDYCCCAFIAApAgA3AgAgBSAAKAIINgIIIAUQ5wQhACADKAIAIAA2AgAgAygCACEAIAMoAgAoAgAEQCAAQQA2AiAgAiADKAIANgIAIAIoAgAhACAEJAUgAA8FIAAQ8AMaIAJBADYCACACKAIAIQAgBCQFIAAPCwALCyACQQA2AgAgAigCACEAIAQkBSAAC04B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AAAAAAAAAGIEfyAARAAAAAAAAPBDoiABEKkGIQAgASgCAEFAagVBAAsiAjYCAAwBCyABIASnQf8PcUGCeGo2AgAgA0L/////////h4B/g0KAgICAgICA8D+EvyEACyAAC6UCAAJ/IAAEfyABQYABSQRAIAAgAToAAEEBDAILQZDpACgCACgCAEUEQCABQYB/cUGAvwNGBEAgACABOgAAQQEMAwVByLUBQdQANgIAQX8MAwsACyABQYAQSQRAIAAgAUEGdkHAAXI6AAAgACABQT9xQYABcjoAAUECDAILIAFBgLADSSABQYBAcUGAwANGcgRAIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAASAAIAFBP3FBgAFyOgACQQMMAgsgAUGAgHxqQYCAwABJBH8gACABQRJ2QfABcjoAACAAIAFBDHZBP3FBgAFyOgABIAAgAUEGdkE/cUGAAXI6AAIgACABQT9xQYABcjoAA0EEBUHItQFB1AA2AgBBfwsFQQELCwuTAQECfwJAAkACQANAIAJB8MUAai0AACAARg0BIAJBAWoiAkHXAEcNAAtB1wAhAgwBCyACDQBB0MYAIQAMAQtB0MYAIQADQCAAIQMDQCADQQFqIQAgAywAAARAIAAhAwwBCwsgAkF/aiICDQALCyABKAIUIgEEfyABKAIAIAEoAgQgABCZBgVBAAsiAQR/IAEFIAALC/MBAQR/AkACQCACQRBqIgQoAgAiAw0AIAIQrQYEf0EABSAEKAIAIQMMAQshAgwBCyADIAJBFGoiBSgCACIEayABSQRAIAIgACABIAIoAiRBH3FBiAFqEQUAIQIMAQsCfyACLABLQQBIIAFFcgR/QQAFIAEhAwNAIAAgA0F/aiIGaiwAAEEKRwRAIAYEQCAGIQMMAgVBAAwECwALCyACIAAgAyACKAIkQR9xQYgBahEFACICIANJDQIgACADaiEAIAEgA2shASAFKAIAIQQgAwsLIQIgBCAAIAEQ9AcaIAUgBSgCACABajYCACACIAFqIQILIAILawECfyAAQcoAaiICLAAAIQEgAiABQf8BaiABcjoAACAAKAIAIgFBCHEEfyAAIAFBIHI2AgBBfwUgAEEANgIIIABBADYCBCAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQQQALIgALOwECfyAA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QXhqKAIAIQggCUH/AXEhCSACQWhqIAYEfyAMBSAHCyAGBH8gCAUgCQsQ4QYaIAAoAgBBaGoiACwAC0EASARAIAAoAgAhAAsgASAAIAQQ9AcaIAEgBGpBADoAAEEAIQALIAMEQCADIAA2AgALIAVBIGoQ4gYgBUEQahDjBiAFEN8GIApBgCBqQQA2AgAMAQsgAwR/IANBfTYCAEEABUEACyEBCyALJAUgAQuPAQECfyMFIQIjBUEQaiQFIAIgATYCACAAQQA2AgAgAEEANgIEIABBADYCCCAAIAIoAgA2AgwgAiABENsGIABBEGoiA0EANgIAIANBADYCBCADQQA2AgggAyACKAIANgIMIAIgATYCACAAQSBqIgBBADYCACAAQQA2AgQgAEEANgIIIAAgAigCADYCDCACJAULCQAgACABNgIAC9sBAQl/IwUhBSMFQSBqJAUgBUEUaiEGIAUhBEH/////ACIHIABBBGoiCCgCACAAKAIAa0EEdUEBaiIDSQRAECgFIAAoAgggACgCACIJayICQQR1IAdBAXZJIQogAkEDdSICIANPBEAgAiEDCyAAQQxqIQIgBCAKBH8gAwUgBwsgCCgCACAJa0EEdSACENwHIARBCGoiAygCACECIAYgARDbBiACQQA2AgAgAkEANgIEIAJBADYCCCACIAYoAgA2AgwgAyACQRBqNgIAIAAgBBDdByAEEN4HIAUkBQsLtgIBAX8CQCAAIAFJBEACQCAALAAAQd8ARgRAIAEgAGtBA0wEQCADQX42AgAMBAsCQAJAAkACQAJAIAAsAAFB2gBrDgYAAgICAgECCyAAQQJqIgQgASACEOwGIgAgBEYgACABRnJFBEAgACwAAEEuRgRAIAAgASACEO0GIQALCyAAIAFGDQUgA0F+NgIADAcLDAELDAELIAAsAAJB3wBGBEAgACwAA0HaAEYEQCAAQQRqIgQgASACEOwGIgAgBEYgACABRnIEQCADQX42AgAMBwsgACABIAIQ7gYgAUYNBCADQX42AgAMBgsLCyADQX42AgAMAwUgACABIAIQ7wYgAUcEQCADQX42AgAMBAsLCyADKAIARQRAIAIoAgAgAigCBEYEQCADQX42AgALCwUgA0F+NgIACwsLDwAgAEEMahDrBiAAEOsGC1IBA38gACgCACICBEAgAEEEaiIDKAIAIQED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aiEADAELCyADIAZBDGoiAEECEPwGQduZARCWBiECIAMoAgQhBSADLAALIg1B/wFxIQ4gAiANQQBIBH8gBQUgDgtGBEAgA0HbmQEgAhD9BkUhAiADEOsGIAIEQCAAEOQHCwUgAxDrBgsgBCAJEIAHIARBAEHbmQEQ8gYaIAogBCkCADcCACAKIAQoAgg2AghBACECA0AgAkEDRwRAIAQgAkECdGpBADYCACACQQFqIQIMAQsLIApBkpoBEPMGGiAIIAopAgA3AgAgCCAKKAIINgIIQQAhAgNAIAJBA0cEQCAKIAJBAnRqQQA2AgAgAkEBaiECDAELCyAALAALIgVBAEghAiAAKAIAIQ0gBigCECEOIAVB/wFxIQUgCCACBH8gDQUgAAsgAgR/IA4FIAULEOEGGiAMIAgpAgA3AgAgDCAIKAIINgIIQQAhAANAIABBA0cEQCAIIABBAnRqQQA2AgAgAEEBaiEADAELCyAHKAIAIgJBdGoiAEELaiIHLAAAQQBIBEAgACgCACEHIANBADoAACAHIAMQ6AYgAkF4akEANgIABSADQQA6AAAgACADEOgGIAdBADoAAAsgABCOByAAIAwpAgA3AgAgACAMKAIINgIIQQAhAANAIABBA0cEQCAMIABBAnRqQQA2AgAgAEEBaiEADAELCyAMEOsGIAgQ6wYgChDrBiAEEOsGIAkQ3gYgBhDeBiABIQALCwsLCwsLCyALJAUgAAtEAQF/IABBADYCACAAQQRqIgNBADYCACAAQQA2AgggACACKAIANgIMIAAQ4wcgAygCACABEPQGIAMgAygCAEEYajYCAAuSAgEIfyMFIQcjBUEgaiQFIAchBUH/////ACIIIABBBGoiCSgCACAAKAIAa0EEdUEBaiIDSQRAECgFIAAoAgggACgCACIEayICQQR1IAhBAXZJIQYgAkEDdSICIANPBEAgAiEDCyAAQQxqIQIgBSAGBH8gAwUgCAsgCSgCACAEa0EEdSACENwHIAVBCGoiBigCACIEQQA2AgAgBEEEaiICQQA2AgAgBEEIaiIDQQA2AgAgBCABKAIMNgIMIAQgASgCADYCACACIAFBBGoiAigCADYCACADIAFBCGoiAygCADYCACADQQA2AgAgAkEANgIAIAFBADYCACAGIARBEGo2AgAgACAFEN0HIAUQ4gcgByQFCwvr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QfeZARCWBhCMByAAQQJqIgQgASADIAIQkwchASADEOsGIAEgBEcEQCABIQALDBYLIANCADcCACADQQA2AgggA0GimgFBopoBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMFQsgA0IANwIAIANBADYCCCADQaWaAUGlmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwUCyAAIAEgAhCVByEADBMLIAAgASACEJYHIQAMEgsMEQsCQAJAAkACQAJAAkAgBCwAAUHjAGsOFAAFBQUFBQUFBQECBQMFBQUFBQUEBQsgACABIAIQlwchAAwVCyAAIAEgAhCYByEADBQLIANCADcCACADQQA2AgggA0GnmgFBp5oBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMEwsgA0IANwIAIANBADYCCCADQamaAUGpmgEQlgYQjAcgAEECaiIEIAEgAyACEJQHIQEgAxDrBiABIARHBEAgASEACwwSCyAAIAEgAhCZByEADBELDBALAkACQAJAAkACQAJAAkACQAJAAkAgBCwAAUHWAGsOIQgJCQkJCQkJCQkJAAkBCQIJCQkJCQkDCQQJCQkJBQYJBwkLIARBAmoiBCABIAIQjQciASAERg0YIAIoAgAgAkEEaiICKAIARg0YIAdCADcCACAHQQA2AggCQCAKBEAgB0GrmgFBq5oBEJYGEIwHBUEAIQADQCAAQQNGDQIgByAAQQJ0akEANgIAIABBAWohAAwACwALCyAHQa6aARDzBhogBiAHKQIANwIAIAYgBygCCDYCCEEAIQADQCAAQQNHBEAgByAAQQJ0akEANgIAIABBAWohAAwBCwsgCCACKAIAQWhqEIAHIAgsAAsiBEEASCEAIAgoAgAhCSAIKAIEIQogBEH/AXEhBCAGIAAEfyAJBSAICyAABH8gCgUgBAsQ4QYaIAUgBikCADcCACAFIAYoAgg2AghBACEAA0AgAEEDRwRAIAYgAEECdGpBADYCACAAQQFqIQAMAQsLIAIoAgAiAkFoaiIAQQtqIgQsAABBAEgEQCAAKAIAIQQgA0EAOgAAIAQgAxDoBiACQWxqQQA2AgAFIANBADoAACAAIAMQ6AYgBEEAOgAACyAAEI4HIAAgBSkCADcCACAAIAUoAgg2AghBACEAA0AgAEEDRwRAIAUgAEECdGpBADYCACAAQQFqIQAMAQsLIAUQ6wYgCBDrBiAGEOsGIAcQ6wYgASEADBgLIAAgASACEJoHIQAMFwsgA0IANwIAIANBADYCCCADQfWZAUH1mQEQlgYQjAcgAEECaiIEIAEgAyACEJQHIQEgAxDrBiABIARHBEAgASEACwwWCyAEQQJqIgQgASACEI0HIgEgBEYNFSACKAIAIAJBBGoiAigCAEYNFSAHQgA3AgAgB0EANgIIAkAgCgRAIAdBq5oBQauaARCWBhCMBwVBACEAA0AgAEEDRg0CIAcgAEECdGpBADYCACAAQQFqIQAMAAsACwsgB0G4mgEQ8wYaIAYgBykCADcCACAGIAcoAgg2AghBACEAA0AgAEEDRwRAIAcgAEECdGpBADYCACAAQQFqIQAMAQsLIAggAigCAEFoahCAByAILAALIgRBAEghACAIKAIAIQkgCCgCBCEKIARB/wFxIQQgBiAABH8gCQUgCAsgAAR/IAoFIAQLEOEGGiAFIAYpAgA3AgAgBSAGKAIINgIIQQAhAANAIABBA0cEQCAGIABBAnRqQQA2AgAgAEEBaiEADAELCyACKAIAIgJBaGoiAEELaiIELAAAQQBIBEAgACgCACEEIANBADoAACAEIAMQ6AYgAkFsakEANgIABSADQQA6AAAgACADEOgGIARBADoAAAsgABCOByAAIAUpAgA3AgAgACAFKAIINgIIQQAhAANAIABBA0cEQCAFIABBAnRqQQA2AgAgAEEBaiEADAELCyAFEOsGIAgQ6wYgBhDrBiAHEOsGIAEhAAwVCyAAIAEgAhCbByEADBQLIAAgASACEJwHIQAMEwsgACABIAIQnQchAAwSCyADQgA3AgAgA0EANgIIIANBwJoBQcCaARCWBhCMByAAQQJqIgQgASADIAIQkwchASADEOsGIAEgBEcEQCABIQALDBELIANCADcCACADQQA2AgggA0HCmgFBwpoBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMEAsMDwsCQAJAAkACQCAELAABQc8Aaw4jAQMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwIDCyADQgA3AgAgA0EANgIIIANBxZoBQcWaARCWBhCMByAAQQJqIgQgASADIAIQkwchASADEOsGIAEgBEcEQCABIQALDBELIANCADcCACADQQA2AgggA0HHmgFBx5oBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMEAsgA0IANwIAIANBADYCCCADQcqaAUHKmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwPCwwOCwJAAkACQCAELAABQeUAaw4QAAICAgICAgICAgICAgICAQILIANCADcCACADQQA2AgggA0HNmgFBzZoBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMDwsgA0IANwIAIANBADYCCCADQYeaAUGHmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwOCwwNCyAELAABQfgARw0MIABBAmoiBCABIAIQjQciCSAERg0MIAJBBGohBCAJIAEgAhCNByIBIAlGBEAgBCgCACECQQAhAQNAIAFBf0cEQCACIAFBf2oiAUEYbGoQ3gYMAQsLIAQgAkFoajYCAAwNCyAEKAIAIgkgAigCAGtBGG1BAkkNDCADIAlBaGoQgAcgBCgCACECQQAhAANAIABBf0cEQCACIABBf2oiAEEYbGoQ3gYMAQsLIAQgAkFoajYCACAFIAJBUGoQgAcgDEHjmQEgBRCPByAMQdCaARDzBhogCCAMKQIANwIAIAggDCgCCDYCCEEAIQADQCAAQQNHBEAgDCAAQQJ0akEANgIAIABBAWohAAwBCwsgAywACyICQQBIIQAgAygCACEJIAMoAgQhCiACQf8BcSECIAggAAR/IAkFIAMLIAAEfyAKBSACCxDhBhogByAIKQIANwIAIAcgCCgCCDYCCEEAIQADQCAAQQNHBEAgCCAAQQJ0akEANgIAIABBAWohAAwBCwsgB0GSmgEQ8wYaIBAgBykCADcCACAQIAcoAgg2AghBACEAA0AgAEEDRwRAIAcgAEECdGpBADYCACAAQQFqIQAMAQsLIAYgEBCDByAEKAIAQWhqIAYQhAcgBhDeBiAQEOsGIAcQ6wYgCBDrBiAMEOsGIAUQ6wYgAxDrBiABIQAMDAsCQAJAAkACQAJAIAQsAAFB0wBrDiICBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAEDBAsgA0IANwIAIANBADYCCCADQdOaAUHTmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwPCyADQgA3AgAgA0EANgIIIANB1poBQdaaARCWBhCMByAAQQJqIgQgASADIAIQkwchASADEOsGIAEgBEcEQCABIQALDA4LIANCADcCACADQQA2AgggA0HZmgFB2ZoBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMDQsgA0IANwIAIANBADYCCCADQYWaAUGFmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwMCwwLCwJAAkACQAJAAkACQCAELAABQckAaw4lAQUFAwUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUABQUCBAULIANCADcCACADQQA2AgggA0HdmgFB3ZoBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMDwsgA0IANwIAIANBADYCCCADQd+aAUHfmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwOCyADQgA3AgAgA0EANgIIIANB9ZkBQfWZARCWBhCMByAAQQJqIgQgASADIAIQkwchASADEOsGIAEgBEcEQCABIQALDA0LIANCADcCACADQQA2AgggA0HimgFB4poBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMDAsgAEECaiIEIAFHBEAgBCwAAEHfAEYEQCADQgA3AgAgA0EANgIIIANB5ZoBQeWaARCWBhCMByAAQQNqIgQgASADIAIQlAchASADEOsGIAEgBEcEQCABIQALDA0LCyAEIAEgAhCNByIBIARGDQsgAigCACACQQRqIgIoAgAiBEYNCyAGIARBaGoQgAcgBkEAQeOZARDyBhogBSAGKQIANwIAIAUgBigCCDYCCEEAIQADQCAAQQNHBEAgBiAAQQJ0akEANgIAIABBAWohAAwBCwsgBUHomgEQ8wYaIBEgBSkCADcCACARIAUoAgg2AghBACEAA0AgAEEDRwRAIAUgAEECdGpBADYCACAAQQFqIQAMAQsLIAMgERCDByACKAIAQWhqIAMQhAcgAxDeBiAREOsGIAUQ6wYgBhDrBiABIQAMCwsMCgsCQAJAAkACQAJAAkAgBCwAAUHhAGsOGAAFBQUBBQIFBQUFBQUFBQUFBQUDBQUABAULIAAgASACEJ4HIQAMDgsgA0IANwIAIANBADYCCCADQeyaAUHsmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwNCyADQgA3AgAgA0EANgIIIANB3ZoBQd2aARCWBhCMByAAQQJqIgQgASADIAIQlAchASADEOsGIAEgBEcEQCABIQALDAwLIANCADcCACADQQA2AgggA0HvmgFB75oBEJYGEIwHIABBAmoiBCABIAMgAhCUByEBIAMQ6wYgASAERwRAIAEhAAsMCwsgAEECaiIEIAEgAhCfByIBIARHBEAgASEACwwKCwwJCwJAAkACQAJAAkAgBCwAAUHSAGsOIQMEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAQQEAgQLIAAgASACEJsHIQAMDAsgA0IANwIAIANBADYCCCADQfGaAUHxmgEQlgYQjAcgAEECaiIEIAEgAyACEJMHIQEgAxDrBiABIARHBEAgASEACwwLCyADQgA3AgAgA0EANgIIIANB9JoBQfSaARCWBhCMByAAQQJqIgQgASADIAIQkwchASADEOsGIAEgBEcEQCABIQALDAoLIANCADcCACADQQA2AgggA0H2mgFB9poBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMCQsMCAsCQAJAAkACQAJAAkACQCAELAABQcwAaw4pAgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYBAAYGAwYGBAUGCyADQgA3AgAgA0EANgIIIANB+ZoBQfmaARCWBhCMByAAQQJqIgQgASADIAIQkwchASADEOsGIAEgBEcEQCABIQALDA0LIANCADcCACADQQA2AgggA0H9mgFB/ZoBEJYGEIwHIABBAmoiBCABIAMgAhCTByEBIAMQ6wYgASAERwRAIAEhAAsMDAsgA0IANwIAIANBADYCCCADQf+aAUH/mgEQlgYQjAcgAEECaiIEIAEg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BEAgACwAAEHMAEYEQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQQFqIgUsAABB1ABrDiYAFBQUFBQUFBQUFBMUBAIDERIQFAUICRQKCw4PFBQUBgcUFAEMDRQLDBYLIANCADcCACADQQA2AgggA0GLowFBi6MBEJYGEIwHIABBAmoiBCABIAMgAhDNByEBIAMQ6wYgASAERwRAIAEhAAsMFQsgACwAA0HFAEcNFAJAAkACQCAALAACQTBrDgIAAQILIANBk6MBEKkHIAJBBGoiBCgCACIBIAIoAghJBEAgASADEIUHIAQgBCgCAEEYajYCAAUgAiADEIYHCyADEN4GIABBBGohAAwWCyADQZmjARDOByACQQRqIgQoAgAiASACKAIISQRAIAEgAxCFByAEIAQoAgBBGGo2AgAFIAIgAxCGBwsgAxDeBiAAQQRqIQAMFQsMFAsgA0IANwIAIANBADYCCCADQZ6jAUGeowEQlgYQjAcgAEECaiIEIAEgAyACEM0HIQEgAxDrBiABIARHBEAgASEACwwTCyADQgA3AgAgA0EANgIIIANBo6MBQaOjARCWBhCMByAAQQJqIgQgASADIAIQzQchASADEOsGIAEgBEcEQCABIQALDBILIANCADcCACADQQA2AgggA0GvowFBr6MBEJYGEIwHIABBAmoiBCABIAMgAhDNByEBIAMQ6wYgASAERwRAIAEhAAsMEQsgA0IANwIAIANBADYCCCADQb2jAUG9owEQlgYQjAcgAEECaiIEIAEgAyACEM0HIQEgAxDrBiABIARHBEAgASEACwwQCyADQgA3AgAgA0EANgIIIANBw6MBQcOjARCWBhCMByAAQQJqIgQgASADIAIQzQchASADEOsGIAEgBEcEQCABIQALDA8LIANCADcCACADQQA2AgggA0HstQFB7LUBEJYGEIwHIABBAmoiBCABIAMgAhDNByEBIAMQ6wYgASAERwRAIAEhAAsMDgsgA0IANwIAIANBADYCCCADQdKjAUHSowEQlgYQjAcgAEECaiIEIAEgAyACEM0HIQEgAxDrBiABIARHBEAgASEACwwNCyADQgA3AgAgA0EANgIIIANB1KMBQdSjARCWBhCMByAAQQJqIgQgASADIAIQzQchASADEOsGIAEgBEcEQCAB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QQA6AAAgACALEOgGIARBADoAAAsgABCOByAAIAkpAgA3AgAgACAJKAIINgIIQQAhAANAIABBA0cEQCAJIABBAnRqQQA2AgAgAEEBaiEADAELCyAJEOsGIAMQ6wYgBRDrBiAHEOsGIAgQ6wYgASEADAILAkACQCAEIAEQ7QciAyAERgR/IAAhAUEDBSADIAEgAhDsBiIBIANGBH8gACEBQQAFIAIoAgAgAigCBCICRgR/IAAhAUEBBSACQWhqIQIgACwAAkH2AEYEfyACQQBB4acBEPIGGkEABSACQQBB86cBEPIGGkEACwsLCyICQQNxDgQAAQEAAQsgASEADAILIAJFBEAgASEACwsLIAYkBSAACw8AIAAoAgAgACwABDoAAAvHAQECfwJAIAAgAUcEQAJAAkACQAJAIAAsAABB6ABrDg8AAgICAgICAgICAgICAgECCyAAQQFqIgMgARCLByICIANGIAIgAUZyDQQgAkEBaiEBIAIsAABB3wBGBH8gAQUgAAsPCwwBCwwCCyAAQQFqIgMgARCLByICIANGIAIgAUZyRQRAIAIsAABB3wBGBEAgAkEBaiIDIAEQiwciAiADRiACIAFGckUEQCACQQFqIQEgAiwAAEHfAEYEQCABIQALCwsLCwsgAAsZACAALAAAQQFGBH9BAAUgAEEBOgAAQQELC0sBAn8jBSEDIwVBEGokBSADIgQgAigCADYCACAAIAEgAyAAKAIAKAIQQR9xQYgBahEFACIABEAgAiAEKAIANgIACyADJAUgAEEBcQscACAABH8gAEHI3ABBgN0AQQAQygZBAEcFQQALCwMAAQsrACAAQf8BcUEYdCAAQQh1Qf8BcUEQdHIgAEEQdUH/AXFBCHRyIABBGHZyCx0BAX8gAWciA0EgRgRAIAMgAGdqIQMLQQAkCSADC8MDAQN/IAJBgMAATgRAIAAgASACECkPCyAAIQQgACACaiEDIABBA3EgAUEDcUYEQANAIABBA3EEQCACRQRAIAQPCyAAIAEsAAA6AAAgAEEBaiEAIAFBAWohASACQQFrIQIMAQsLIANBfHEiAkFAaiEFA0AgACAFTARAIAAgASgCADYCACAAIAEoAgQ2AgQgACABKAIINgIIIAAgASgCDDYCDCAAIAEoAhA2AhAgACABKAIUNgIUIAAgASgCGDYCGCAAIAEoAhw2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AAAFAAAAAwAAAEAAAAAHAAAAFwAAABcAAAAWAAAABwAAAAMAAACAAAAABwAAABkAAAAZAAAAFwAAAAcAAAADAAAAgAAAAAgAAAAaAAAAGgAAABgAAAAHAAAAAwAAAAABAAAIAAAAGwAAABsAAAAZAAAACQAAAAMAAAAAAgAACAAAABIAAAAMAAAADQAAAAEAAAAFAAAAAQAAAAEAAAASAAAADQAAAA4AAAABAAAABgAAAAEAAAABAAAAEgAAAA4AAAANAAAAAQAAAAUAAAAIAAAAAgAAABIAAAAQAAAADwAAAAEAAAAFAAAACAAAAAIAAAASAAAADwAAABEAAAABAAAABQAAAAgAAAADAAAAEgAAABAAAAARAAAABAAAAAUAAAAIAAAAAwAAABIAAAAQAAAAEQAAAAMAAAAFAAAACAAAAAQAAAASAAAAEQAAABEAAAAEAAAABAAAAAgAAAAEAAAAEgAAABEAAAARAAAABAAAAAQAAAAIAAAABQAAABIAAAARAAAAEQAAAAUAAAAEAAAACAAAAAUAAAASAAAAEQAAABEAAAAGAAAABAAAAAgAAAAFAAAAEgAAABIAAAARAAAABgAAAAQAAAAIAAAABQAAABIAAAASAAAAEQAAAAUAAAAEAAAACAAAAAYAAAASAAAAEwAAABEAAAAHAAAABAAAAAgAAAAGAAAAEgAAABIAAAASAAAABAAAAAQAAAAQAAAABwAAABIAAAASAAAAEgAAAAQAAAADAAAAEAAAAAcAAAASAAAAEwAAABIAAAAGAAAAAwAAACAAAAAHAAAAEgAAABMAAAASAAAACAAAAAMAAABAAAAABwAAABIAAAATAAAAEgAAAAkAAAADAAAAgAAAAAcAAAASAAAAEwAAABIAAAAKAAAAAwAAAAABAAAHAAAAEgAAABMAAAASAAAACwAAAAMAAAAAAgAACAAAABIAAAATAAAAEgAAAAwAAAADAAAAAAIAAAgAAAASAAAAEwAAABIAAAANAAAAAwAAAAACAAAIAAAAEQAAAAwAAAAMAAAAAQAAAAUAAAABAAAAAQAAABEAAAAMAAAADQAAAAEAAAAGAAAAAQAAAAEAAAARAAAADQAAABAAAAABAAAABQAAAAEAAAABAAAAEQAAABAAAAAQAAAAAgAAAAUAAAAIAAAAAgAAABEAAAANAAAADwAAAAMAAAAEAAAACAAAAAMAAAARAAAADwAAABEAAAAEAAAABAAAAAgAAAADAAAAEQAAABAAAAARAAAAAwAAAAQAAAAIAAAABAAAABEAAAAPAAAAEQAAAAQAAAAEAAAACAAAAAUAAAARAAAAEQAAABEAAAAEAAAABAAAAAgAAAAFAAAAEQAAABEAAAARAAAABQAAAAQAAAAIAAAABQAAABEAAAARAAAAEQAAAAYAAAAEAAAACAAAAAUAAAARAAAAEQAAABEAAAAHAAAABAAAAAgAAAAFAAAAEQAAABEAAAARAAAACAAAAAQAAAAIAAAABQAAABEAAAASAAAAEQAAAAYAAAAEAAAACAAAAAYAAAARAAAAEQAAABEAAAAHAAAAAwAAAAgAAAAHAAAAEQAAABEAAAARAAAABwAAAAMAAAAQAAAABwAAABEAAAASAAAAEQAAAAcAAAADAAAAIAAAAAcAAAARAAAAEgAAABEAAAAHAAAAAwAAAEAAAAAHAAAAEQAAABIAAAARAAAABwAAAAMAAAAAAQAABwAAABEAAAASAAAAEQAAAAgAAAADAAAAAAEAAAcAAAARAAAAEgAAABEAAAAJAAAAAwAAAAABAAAIAAAAEQAAABIAAAARAAAACgAAAAMAAAAAAQAACAAAABEAAAASAAAAEQAAAAsAAAADAAAAAAIAAAgAAAAOAAAADAAAAA0AAAABAAAABQAAAAEAAAABAAAADgAAAA4AAAAOAAAAAQAAAAYAAAABAAAAAQAAAA4AAAAOAAAADgAAAAEAAAAEAAAAAQAAAAEAAAAOAAAADgAAAA4AAAABAAAABAAAAAYAAAACAAAADgAAAA4AAAAOAAAABAAAAAQAAAAGAAAAAwAAAA4AAAAOAAAADgAAAAMAAAAEAAAABgAAAAQAAAAOAAAADgAAAA4AAAAEAAAABAAAAAYAAAAFAAAADgAAAA4AAAAOAAAABQAAAAQAAAAGAAAABQAAAA4AAAAOAAAADgAAAAYAAAAEAAAABgAAAAUAAAAOAAAADwAAAA4AAAAGAAAABAAAAAYAAAAGAAAADgAAAA8AAAAOAAAAAwAAAAMAAAAGAAAABwAAAA4AAAAPAAAADgAAAAYAAAADAAAACAAAAAcAAAAOAAAADwAAAA4AAAAGAAAAAwAAABAAAAAHAAAADgAAAA8AAAAOAAAABgAAAAMAAAAYAAAABwAAAA4AAAAPAAAADwAAAAYAAAADAAAAMAAAAAcAAAAOAAAADwAAAA8AAAAGAAAAAwAAAEAAAAAHAAAADgAAAA8AAAAPAAAABgAAAAMAAABgAAAABwAAAA4AAAAPAAAADwAAAAYAAAADAAAAgAAAAAcAAAAOAAAADwAAAA8AAAAGAAAAAwAAAAABAAAHAAAADgAAAA8AAAAPAAAABwAAAAMAAAAAAQAABwAAAA4AAAAPAAAADwAAAAgAAAADAAAAAAEAAAgAAAAOAAAADwAAAA8AAAAJAAAAAwAAAAABAAAIAAAADgAAAA8AAAAPAAAACgAAAAMAAAAAAQAACAAAAAAAAAABAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/AQAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAEGxHwuHAgECAwQFBgcICQoLDA0ODxAQERESEhMTFBQUFBUVFRUWFhYWFhYWFhcXFxcXFxcXGBgYGBgYGBgYGBgYGBgYGAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICAhISIiIyMkJCQkJSUlJSYmJiYmJiYmJycnJycnJycoKCgoKCgoKCgoKCgoKCgoKSkpKSkpKSkpKSkpKSkpKSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqBAADAAIAAgACAAIAAgACAAIAAgACAAIAAgABAAEAAQACAAIAAgACAAIAAgACAAIAAgADAAIAAQABAAEAAQABAP//////////AEHAIQuqAQEAAQABAAEAAQABAAIAAgACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP////////////8AAAAAAAABAAQAAwACAAIAAgACAAIAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP//////////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AAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACUAAAAnAAAAKQAAACsAAAAvAAAAMwAAADsAAABDAAAAUwAAAGMAAACDAAAAAwEAAAMCAAADBAAAAwgAAAMQAAADIAAAA0AAAAOAAAADAAEAQbAyC0gEAAMAAgACAAIAAgACAAIAAgACAAIAAgACAAEAAQABAAIAAgACAAIAAgACAAIAAgACAAMAAgABAAEAAQABAAEA//////////8AQYAzC6oBAQABAAEAAQABAAEAAgACAAIAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA/////////////wAAAAAAAAEABAADAAIAAgACAAIAAgACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA//////////////////8AQfA0C00BAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEABBwDYLUQEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEABBpDcLbQEAAAADAAAABwAAAA8AAAAfAAAAPwAAAH8AAAD/AAAA/wEAAP8DAAD/BwAA/w8AAP8fAAD/PwAA/38AAP//AAD//wEA//8DAP//BwD//w8A//8fAP//PwD//38A////AP///wH///8DAQAAAAEAQaQ4C88BAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAiAAAAJAAAACYAAAAoAAAALAAAADAAAAA4AAAAQAAAAFAAAABgAAAAgAAAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAEGEOgvUAQEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAASAAAAFAAAABYAAAAYAAAAHAAAACAAAAAoAAAAMAAAAEAAAACAAAAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAAAAAEABAADAAIAAgACAAIAAgACAAIAAgACAAIAAgABAAEAAQACAAIAAgACAAIAAgACAAIAAgADAAIAAQABAAEAAQABAP//////////AEHgOwvtAgEAAQABAAEAAQABAAIAAgACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP////////////8AAAAAAAABAAQAAwACAAIAAgACAAIAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP//////////////////AAAAAAAACAAAAAgAAAAIAAAABwAAAAgAAAAJAAAACgAAAAsAAAAAAAAAAQAAAAIAAAABAAAABAAAAAQAAAAEAAAABAAAAAEAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAAAAAgEAAAABAAAAAQAAAAEAAAABAEHYPgsNAQAAAAEAAAACAAAAAgBB8D4LlQMBAAAAAQAAAAIAAAACAAAAJgAAAIIAAAAhBQAASgAAAGcIAAAmAAAAwAEAAIAAAABJBQAASgAAAL4IAAApAAAALAIAAIAAAABJBQAASgAAAL4IAAAvAAAAygIAAIAAAACKBQAASgAAAIQJAAA1AAAAcwMAAIAAAACdBQAASgAAAKAJAAA9AAAAgQMAAIAAAADrBQAASwAAAD4KAABEAAAAngMAAIAAAABNBgAASwAAAKoKAABLAAAAswMAAIAAAADBBgAATQAAAB8NAABNAAAAUwQAAIAAAAAjCAAAUQAAAKYPAABUAAAAmQQAAIAAAABLCQAAVwAAALESAABYAAAA2gQAAIAAAABvCQAAXQAAACMUAABUAAAARQUAAIAAAABUCgAAagAAAIwUAABqAAAArwUAAIAAAAB2CQAAfAAAAE4QAAB8AAAA0gIAAIAAAABjBwAAkQAAAJAHAACSAAAAAQAAAAIAAAADAAAABAAAAAcAAAAIAAAADwAAABAAAAAfAAAAIAAAAD8AAABAAAAAfwAAAIAAQZDCAAsYEQAKABEREQAAAAAFAAAAAAAACQAAAAALAEGwwgALIREADwoREREDCgcAARMJCwsAAAkGCwAACwAGEQAAABEREQBB4cIACwELAEHqwgALGBEACgoREREACgAAAgAJCwAAAAkACwAACwBBm8MACwEMAEGnwwALFQwAAAAADAAAAAAJDAAAAAAADAAADABB1cMACwEOAEHhwwALFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBBj8QACwEQAEGbxAALHg8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgBB0sQACw4SAAAAEhISAAAAAAAACQBBg8UACwELAEGPxQALFQoAAAAACgAAAAAJCwAAAAAACwAACwBBvcUACwEMAEHJxQALfgwAAAAADAAAAAAJDAAAAAAADAAADAAAMDEyMzQ1Njc4OUFCQ0RFRlQhIhkNAQIDEUscDBAECx0SHidobm9wcWIgBQYPExQVGggWBygkFxgJCg4bHyUjg4J9JiorPD0+P0NHSk1YWVpbXF1eX2BhY2RlZmdpamtscnN0eXp7fABB0MYAC/0cSWxsZWdhbCBieXRlIHNlcXVlbmNlAERvbWFpbiBlcnJvcgBSZXN1bHQgbm90IHJlcHJlc2VudGFibGUATm90IGEgdHR5AFBlcm1pc3Npb24gZGVuaWVkAE9wZXJhdGlvbiBub3QgcGVybWl0dGVkAE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkATm8gc3VjaCBwcm9jZXNzAEZpbGUgZXhpc3RzAFZhbHVlIHRvbyBsYXJnZSBmb3IgZGF0YSB0eXBlAE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlAE91dCBvZiBtZW1vcnkAUmVzb3VyY2UgYnVzeQBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbABSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZQBJbnZhbGlkIHNlZWsAQ3Jvc3MtZGV2aWNlIGxpbmsAUmVhZC1vbmx5IGZpbGUgc3lzdGVtAERpcmVjdG9yeSBub3QgZW1wdHkAQ29ubmVjdGlvbiByZXNldCBieSBwZWVyAE9wZXJhdGlvbiB0aW1lZCBvdXQAQ29ubmVjdGlvbiByZWZ1c2VkAEhvc3QgaXMgZG93bgBIb3N0IGlzIHVucmVhY2hhYmxlAEFkZHJlc3MgaW4gdXNlAEJyb2tlbiBwaXBlAEkvTyBlcnJvcgBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzAEJsb2NrIGRldmljZSByZXF1aXJlZABObyBzdWNoIGRldmljZQBOb3QgYSBkaXJlY3RvcnkASXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVk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AAAAAAAAAAMAAAAEAAAAAAAAAAUAAAAGAAAAAAAAANQyAAAFAEHg5QALAR0AQfjlAAsOAQAAAAIAAABIVAAAAAQAQZDmAAsBAQBBn+YACwUK/////wBB0OYACwnUMgAAWDMAAAUAQeTmAAsBHQBB/OYACwoDAAAAAgAAAOxaAEGU5wALAQIAQaPnAAsF//////8AQZDpAAsCsFoAQezpAAsBBABBk+oACwX//////wBByOoAC+09IC4AADIAAAAzAAAAHgAAAAEAAAAAAAAAOC4AADQAAAA1AAAANgAAADcAAAAFAAAAAQAAAAEAAAABAAAAAAAAAGAuAAA0AAAAOAAAADYAAAA3AAAABQAAAAIAAAACAAAAAgAAAAAAAACQLgAANAAAADkAAAA2AAAANwAAAAYAAAAAAAAAgC4AADQAAAA6AAAANgAAADcAAAAHAAAAAAAAABAvAAA0AAAAOwAAADYAAAA3AAAACAAAAAAAAAAgLwAANAAAADwAAAA2AAAANwAAAAUAAAADAAAAAwAAAAMAAABkdW1teQByYgBsZW5ndGgAYnVmZmVyAGNvbnN0cnVjdG9yAHNldABIRUFQVTgAVmVjdG9yVTgAY2xvbmVUb1ZlY3RvcgBjbG9uZUFzVHlwZWRBcnJheQB0b1R5cGVkQXJyYXlWaWV3AFpzdGRDb21wcmVzc2lvbkRpY3QAY3JlYXRlQ29tcHJlc3Npb25EaWN0AFpzdGREZWNvbXByZXNzaW9uRGljdABjcmVhdGVEZWNvbXByZXNzaW9uRGljdABac3RkQ29kZWMAY29tcHJlc3NCb3VuZABjb250ZW50U2l6ZQBjb21wcmVzcwBkZWNvbXByZXNzAGNvbXByZXNzVXNpbmdEaWN0AGRlY29tcHJlc3NVc2luZ0RpY3QAWnN0ZENvbXByZXNzU3RyZWFtQmluZGluZwBiZWdpbgBiZWdpblVzaW5nRGljdAB0cmFuc2Zvcm0AZmx1c2gAZW5kAFpzdGREZWNvbXByZXNzU3RyZWFtQmluZGluZwBOMTBlbXNjcmlwdGVuM3ZhbEUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJWk4yNVpzdGRDb21wcmVzc1N0cmVhbUJpbmRpbmc5VHJhbnNmb3JtRU4xMGVtc2NyaXB0ZW4zdmFsRVM0X0UzJF8wTlNfOWFsbG9jYXRvcklTNV9FRUZ2UktOU182dmVjdG9ySWhOUzZfSWhFRUVFRUVFAE5TdDNfXzIxMF9fZnVuY3Rpb242X19iYXNlSUZ2UktOU182dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFRUVFAFpOMjVac3RkQ29tcHJlc3NTdHJlYW1CaW5kaW5nOVRyYW5zZm9ybUVOMTBlbXNjcmlwdGVuM3ZhbEVTMV9FMyRfMABOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZzVGbHVzaEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfMU5TXzlhbGxvY2F0b3JJUzVfRUVGdlJLTlNfNnZlY3RvckloTlM2X0loRUVFRUVFRQBaTjI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZzVGbHVzaEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfMQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZzNFbmRFTjEwZW1zY3JpcHRlbjN2YWxFRTMkXzJOU185YWxsb2NhdG9ySVM1X0VFRnZSS05TXzZ2ZWN0b3JJaE5TNl9JaEVFRUVFRUUAWk4yNVpzdGRDb21wcmVzc1N0cmVhbUJpbmRpbmczRW5kRU4xMGVtc2NyaXB0ZW4zdmFsRUUzJF8yAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMjdac3RkRGVjb21wcmVzc1N0cmVhbUJpbmRpbmc5VHJhbnNmb3JtRU4xMGVtc2NyaXB0ZW4zdmFsRVM0X0UzJF8zTlNfOWFsbG9jYXRvcklTNV9FRUZ2UktOU182dmVjdG9ySWhOUzZfSWhFRUVFRUVFAFpOMjdac3RkRGVjb21wcmVzc1N0cmVhbUJpbmRpbmc5VHJhbnNmb3JtRU4xMGVtc2NyaXB0ZW4zdmFsRVMxX0UzJF8zAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMjdac3RkRGVjb21wcmVzc1N0cmVhbUJpbmRpbmc1Rmx1c2hFTjEwZW1zY3JpcHRlbjN2YWxFRTMkXzROU185YWxsb2NhdG9ySVM1X0VFRnZSS05TXzZ2ZWN0b3JJaE5TNl9JaEVFRUVFRUUAWk4yN1pzdGREZWNvbXByZXNzU3RyZWFtQmluZGluZzVGbHVzaEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfNABOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nM0VuZEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfNU5TXzlhbGxvY2F0b3JJUzVfRUVGdlJLTlNfNnZlY3RvckloTlM2X0loRUVFRUVFRQBaTjI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nM0VuZEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfNQBwdXNoX2JhY2sAcmVzaXplAHNpemUAZ2V0AE5TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAE5TdDNfXzIxM19fdmVjdG9yX2Jhc2VJaE5TXzlhbGxvY2F0b3JJaEVFRUUATlN0M19fMjIwX192ZWN0b3JfYmFzZV9jb21tb25JTGIxRUVFAFBOU3QzX18yNnZlY3RvckloTlNfOWFsbG9jYXRvckloRUVFRQBQS05TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAGlpAHYAdmkAdmlpaQB2aWlpaQBpaWkAaWlpaQBpaWlpaQAxOVpzdGRDb21wcmVzc2lvbkRpY3QAOFJlc291cmNlSTEyWlNURF9DRGljdF9zRQBQMTlac3RkQ29tcHJlc3Npb25EaWN0AFBLMTlac3RkQ29tcHJlc3Npb25EaWN0ADIxWnN0ZERlY29tcHJlc3Npb25EaWN0ADhSZXNvdXJjZUkxMlpTVERfRERpY3Rfc0UAUDIxWnN0ZERlY29tcHJlc3Npb25EaWN0AFBLMjFac3RkRGVjb21wcmVzc2lvbkRpY3QAOVpzdGRDb2RlYwBQOVpzdGRDb2RlYwBQSzlac3RkQ29kZWMAaWlpaWlpADI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZwBQMjVac3RkQ29tcHJlc3NTdHJlYW1CaW5kaW5nAFBLMjVac3RkQ29tcHJlc3NTdHJlYW1CaW5kaW5nADI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nAFAyN1pzdGREZWNvbXByZXNzU3RyZWFtQmluZGluZwBQSzI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nAFBGdlAxMVpTVERfQ0N0eF9zRQBGdlAxMVpTVERfQ0N0eF9zRQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0lQRnZQMTFaU1REX0NDdHhfc0VOU185YWxsb2NhdG9ySVM1X0VFUzRfRUUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Jhc2VJRnZQMTFaU1REX0NDdHhfc0VFRQBQRnZQMTFaU1REX0RDdHhfc0UARnZQMTFaU1REX0RDdHhfc0UATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJUEZ2UDExWlNURF9EQ3R4X3NFTlNfOWFsbG9jYXRvcklTNV9FRVM0X0VFAE5TdDNfXzIxMF9fZnVuY3Rpb242X19iYXNlSUZ2UDExWlNURF9EQ3R4X3NFRUUAUEZ2UDEyWlNURF9DRGljdF9zRQBGdlAxMlpTVERfQ0RpY3Rfc0UATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJUEZ2UDEyWlNURF9DRGljdF9zRU5TXzlhbGxvY2F0b3JJUzVfRUVTNF9FRQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fYmFzZUlGdlAxMlpTVERfQ0RpY3Rfc0VFRQBQRnZQMTJaU1REX0REaWN0X3NFAEZ2UDEyWlNURF9ERGljdF9zRQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0lQRnZQMTJaU1REX0REaWN0X3NFTlNfOWFsbG9jYXRvcklTNV9FRVM0X0VFAE5TdDNfXzIxMF9fZnVuY3Rpb242X19iYXNlSUZ2UDEyWlNURF9ERGljdF9zRUVFAFpOMThac3RkQ29tcHJlc3NTdHJlYW01QmVnaW5FaUUzJF8wAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMThac3RkQ29tcHJlc3NTdHJlYW01QmVnaW5FaUUzJF8wTlNfOWFsbG9jYXRvcklTM19FRUZtUDExWlNURF9DQ3R4X3NFRUUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Jhc2VJRm1QMTFaU1REX0NDdHhfc0VFRQBaTjE4WnN0ZENvbXByZXNzU3RyZWFtNUJlZ2luRVJLMTlac3RkQ29tcHJlc3Npb25EaWN0RTMkXzEATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJWk4xOFpzdGRDb21wcmVzc1N0cmVhbTVCZWdpbkVSSzE5WnN0ZENvbXByZXNzaW9uRGljdEUzJF8xTlNfOWFsbG9jYXRvcklTNl9FRUZtUDExWlNURF9DQ3R4X3NFRUUAWk4yMFpzdGREZWNvbXByZXNzU3RyZWFtNUJlZ2luRXZFMyRfMgBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjIwWnN0ZERlY29tcHJlc3NTdHJlYW01QmVnaW5FdkUzJF8yTlNfOWFsbG9jYXRvcklTM19FRUZtUDExWlNURF9EQ3R4X3NFRUUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Jhc2VJRm1QMTFaU1REX0RDdHhfc0VFRQBaTjIwWnN0ZERlY29tcHJlc3NTdHJlYW01QmVnaW5FUksyMVpzdGREZWNvbXByZXNzaW9uRGljdEUzJF8zAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMjBac3RkRGVjb21wcmVzc1N0cmVhbTVCZWdpbkVSSzIxWnN0ZERlY29tcHJlc3Npb25EaWN0RTMkXzNOU185YWxsb2NhdG9ySVM2X0VFRm1QMTFaU1REX0RDdHhfc0VFRQBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBzdGQ6OndzdHJpbmcAZW1zY3JpcHRlbjo6dmFsAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZmxvYXQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZyBkb3VibGU+AE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWVFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lkRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZkVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SW1FRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJakVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWlFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJc0VFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWhFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFAE5TdDNfXzIyMV9fYmFzaWNfc3RyaW5nX2NvbW1vbklMYjFFRUUATlN0M19fMjEyYmFzaWNfc3RyaW5nSWhOU18xMWNoYXJfdHJhaXRzSWhFRU5TXzlhbGxvY2F0b3JJaEVFRUUATlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUALSsgICAwWDB4AChudWxsKQAtMFgrMFggMFgtMHgrMHggMHgAaW5mAElORgBuYW4ATkFOAHJ3YQBzdGQ6OmJhZF9mdW5jdGlvbl9jYWxsAE5TdDNfXzIxN2JhZF9mdW5jdGlvbl9jYWxsRQB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzOiAlcwB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzAHRlcm1pbmF0aW5nIHdpdGggJXMgZm9yZWlnbiBleGNlcHRpb24AdGVybWluYXRpbmcAdW5jYXVnaHQAU3Q5ZXhjZXB0aW9uAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAFN0OXR5cGVfaW5mbwBOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAHB0aHJlYWRfb25jZSBmYWlsdXJlIGluIF9fY3hhX2dldF9nbG9iYWxzX2Zhc3QoKQBjYW5ub3QgY3JlYXRlIHB0aHJlYWQga2V5IGZvciBfX2N4YV9nZXRfZ2xvYmFscygpAGNhbm5vdCB6ZXJvIG91dCB0aHJlYWQgdmFsdWUgZm9yIF9fY3hhX2dldF9nbG9iYWxzKCkAdGVybWluYXRlX2hhbmRsZXIgdW5leHBlY3RlZGx5IHJldHVybmVkAE4xMF9fY3h4YWJpdjExOV9fcG9pbnRlcl90eXBlX2luZm9FAE4xMF9fY3h4YWJpdjExN19fcGJhc2VfdHlwZV9pbmZvRQBOMTBfX2N4eGFiaXYxMjNfX2Z1bmRhbWVudGFsX3R5cGVfaW5mb0UAdgBEbgBiAGMAaABhAHMAdABpAGoAbQBmAGQATjEwX19jeHhhYml2MTIwX19mdW5jdGlvbl90eXBlX2luZm9FAE4xMF9fY3h4YWJpdjEyMV9fdm1pX2NsYXNzX3R5cGVfaW5mb0UAIGNvbnN0ACB2b2xhdGlsZQAgcmVzdHJpY3QAIGNvbXBsZXgAIGltYWdpbmFyeQAgWwAgKAApACgAJiYAb2JqY19vYmplY3Q8ACoAJgBvYmpjcHJvdG8AIAA8AD4AIHZlY3RvclsAXQBwaXhlbCB2ZWN0b3JbACY9AD0ALAB+ADo6AGRlbGV0ZVtdIABkZWxldGUgAC8ALz0AXgBePQA9PQA+PQApWwA8PQA8PAA8PD0ALQAtPQAqPQAtLQApLS0AIT0AIQB8fAB8AHw9AC0+KgArACs9ACsrACkrKwApID8gKAApIDogKAAlACU9AD4+AD4+PQB0aHJvdwB0aHJvdyAAdHlwZWlkKABzaXplb2YuLi4oACwgAHNpemVvZiAoAHN0YXRpY19jYXN0PAA+KAByZWludGVycHJldF9jYXN0PAAtPgBub2V4Y2VwdCAoAFtdIAApIAAuAC4qAHN0ZDo6AG9wZXJhdG9yJiYAb3BlcmF0b3ImAG9wZXJhdG9yJj0Ab3BlcmF0b3I9AG9wZXJhdG9yKCkAb3BlcmF0b3IsAG9wZXJhdG9yfgBvcGVyYXRvciAAb3BlcmF0b3IgZGVsZXRlW10Ab3BlcmF0b3IqAG9wZXJhdG9yLwBvcGVyYXRvci89AG9wZXJhdG9yXgBvcGVyYXRvcl49AG9wZXJhdG9yPT0Ab3BlcmF0b3I+PQBvcGVyYXRvcj4Ab3BlcmF0b3JbXQBvcGVyYXRvcjw9AG9wZXJhdG9yIiIgAG9wZXJhdG9yPDwAb3BlcmF0b3I8PD0Ab3BlcmF0b3I8AG9wZXJhdG9yLQBvcGVyYXRvci09AG9wZXJhdG9yKj0Ab3BlcmF0b3ItLQBvcGVyYXRvciBuZXdbXQBvcGVyYXRvciE9AG9wZXJhdG9yIQBvcGVyYXRvciBuZXcAb3BlcmF0b3J8fABvcGVyYXRvcnwAb3BlcmF0b3J8PQBvcGVyYXRvci0+KgBvcGVyYXRvcisAb3BlcmF0b3IrPQBvcGVyYXRvcisrAG9wZXJhdG9yLT4Ab3BlcmF0b3I/AG9wZXJhdG9yJQBvcGVyYXRvciU9AG9wZXJhdG9yPj4Ab3BlcmF0b3I+Pj0Ab3BlcmF0b3IgZGVsZXRlACd1bm5hbWVkACdsYW1iZGEnKABzdGQ6OnN0cmluZwBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+AGJhc2ljX3N0cmluZwBzdGQ6OmlzdHJlYW0Ac3RkOjpiYXNpY19pc3RyZWFtPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4gPgBiYXNpY19pc3RyZWFtAHN0ZDo6b3N0cmVhbQBzdGQ6OmJhc2ljX29zdHJlYW08Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiA+AGJhc2ljX29zdHJlYW0Ac3RkOjppb3N0cmVhbQBzdGQ6OmJhc2ljX2lvc3RyZWFtPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4gPgBiYXNpY19pb3N0cmVhbQBkeW5hbWljX2Nhc3Q8ACkoAGNvbnN0X2Nhc3Q8AGFsaWdub2YgKABmcAB3Y2hhcl90AGZhbHNlAHRydWUAY2hhcgBzaWduZWQgY2hhcgB1bnNpZ25lZCBjaGFyAHNob3J0AHVuc2lnbmVkIHNob3J0AHUAbAB1bABsbAB1bGwAX19pbnQxMjgAdW5zaWduZWQgX19pbnQxMjgAJUxhTAAlYQAlYWYAZGVjbHR5cGUoAHN0ZDo6YWxsb2NhdG9yAHN0ZDo6YmFzaWNfc3RyaW5nADo6c3RyaW5nIGxpdGVyYWwAc3RkAF9HTE9CQUxfX04AKGFub255bW91cyBuYW1lc3BhY2UpACA+AFRfAGlkADo6KgAgJgAgJiYAIFtdAHZvaWQAYm9vbABpbnQAdW5zaWduZWQgaW50AGxvbmcAdW5zaWduZWQgbG9uZwBsb25nIGxvbmcAZmxvYXQAbG9uZyBkb3VibGUAX19mbG9hdDEyOAAuLi4AZGVjaW1hbDY0AGRlY2ltYWwxMjgAZGVjaW1hbDMyAGRlY2ltYWwxNgBjaGFyMzJfdABjaGFyMTZfdABhdXRvAHN0ZDo6bnVsbHB0cl90AGRvdWJsZQB1bnNpZ25lZCBsb25nIGxvbmcAX2Jsb2NrX2ludm9rZQBpbnZvY2F0aW9uIGZ1bmN0aW9uIGZvciBibG9jayBpbiAAdnRhYmxlIGZvciAAVlRUIGZvciAAdHlwZWluZm8gZm9yIAB0eXBlaW5mbyBuYW1lIGZvciAAY292YXJpYW50IHJldHVybiB0aHVuayB0byAAY29uc3RydWN0aW9uIHZ0YWJsZSBmb3IgAC1pbi0AdmlydHVhbCB0aHVuayB0byAAbm9uLXZpcnR1YWwgdGh1bmsgdG8gAGd1YXJkIHZhcmlhYmxlIGZvciAAcmVmZXJlbmNlIHRlbXBvcmFyeSBmb3Ig";var asmjsCodeFile="";if(!isDataURI(wasmTextFile)){wasmTextFile=locateFile(wasmTextFile);}if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile);}if(!isDataURI(asmjsCodeFile)){asmjsCodeFile=locateFile(asmjsCodeFile);}var wasmPageSize=64*1024;var info={"global":null,"env":null,"asm2wasm":asm2wasmImports,"parent":Module};var exports=null;function mergeMemory(newBuffer){var oldBuffer=Module["buffer"];if(newBuffer.byteLength<oldBuffer.byteLength){err("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here");}var oldView=new Int8Array(oldBuffer);var newView=new Int8Array(newBuffer);newView.set(oldView);updateGlobalBuffer(newBuffer);updateGlobalBufferViews();}function fixImports(imports){return imports;}function getBinary(){try{if(Module["wasmBinary"]){return new Uint8Array(Module["wasmBinary"]);}var binary=tryParseAsDataURI(wasmBinaryFile);if(binary){return binary;}if(Module["readBinary"]){return Module["readBinary"](wasmBinaryFile);}else{throw"both async and sync fetching of the wasm failed";}}catch(err){abort(err);}}function getBinaryPromise(){if(!Module["wasmBinary"]&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";}return response["arrayBuffer"]();}).catch(function(){return getBinary();});}return new Promise(function(resolve,reject){resolve(getBinary());});}function doNativeWasm(global,env,providedBuffer){if((typeof WebAssembly==='undefined'?'undefined':_typeof(WebAssembly))!=="object"){err("no native wasm support detected");return false;}if(!(Module["wasmMemory"]instanceof WebAssembly.Memory)){err("no native wasm Memory in use");return false;}env["memory"]=Module["wasmMemory"];info["global"]={"NaN":NaN,"Infinity":Infinity};info["global.Math"]=Math;info["env"]=env;function receiveInstance(instance,module){exports=instance.exports;if(exports.memory)mergeMemory(exports.memory);Module["asm"]=exports;Module["usingWasm"]=true;removeRunDependency("wasm-instantiate");}addRunDependency("wasm-instantiate");if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance);}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false;}}function receiveInstantiatedSource(output){receiveInstance(output["instance"],output["module"]);}function instantiateArrayBuffer(receiver){getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info);}).then(receiver).catch(function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason);});}if(!Module["wasmBinary"]&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch==="function"){WebAssembly.instantiateStreaming(fetch(wasmBinaryFile,{credentials:"same-origin"}),info).then(receiveInstantiatedSource).catch(function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");instantiateArrayBuffer(receiveInstantiatedSource);});}else{instantiateArrayBuffer(receiveInstantiatedSource);}return{};}Module["asmPreload"]=Module["asm"];var asmjsReallocBuffer=Module["reallocBuffer"];var wasmReallocBuffer=function wasmReallocBuffer(size){var PAGE_MULTIPLE=Module["usingWasm"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;size=alignUp(size,PAGE_MULTIPLE);var old=Module["buffer"];var oldSize=old.byteLength;if(Module["usingWasm"]){try{var result=Module["wasmMemory"].grow((size-oldSize)/wasmPageSize);if(result!==(-1|0)){return Module["buffer"]=Module["wasmMemory"].buffer;}else{return null;}}catch(e){return null;}}};Module["reallocBuffer"]=function(size){if(finalMethod==="asmjs"){return asmjsReallocBuffer(size);}else{return wasmReallocBuffer(size);}};var finalMethod="";Module["asm"]=function(global,env,providedBuffer){env=fixImports(env);if(!env["table"]){var TABLE_SIZE=Module["wasmTableSize"];if(TABLE_SIZE===undefined)TABLE_SIZE=1024;var MAX_TABLE_SIZE=Module["wasmMaxTableSize"];if((typeof WebAssembly==='undefined'?'undefined':_typeof(WebAssembly))==="object"&&typeof WebAssembly.Table==="function"){if(MAX_TABLE_SIZE!==undefined){env["table"]=new WebAssembly.Table({"initial":TABLE_SIZE,"maximum":MAX_TABLE_SIZE,"element":"anyfunc"});}else{env["table"]=new WebAssembly.Table({"initial":TABLE_SIZE,element:"anyfunc"});}}else{env["table"]=new Array(TABLE_SIZE);}Module["wasmTable"]=env["table"];}if(!env["memoryBase"]){env["memoryBase"]=Module["STATIC_BASE"];}if(!env["tableBase"]){env["tableBase"]=0;}var exports;exports=doNativeWasm(global,env,providedBuffer);assert(exports,"no binaryen method succeeded.");return exports;};}integrateWasmJS();STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+23280;__ATINIT__.push({func:function func(){__GLOBAL__sub_I_zstd_binding_cc();}},{func:function func(){__GLOBAL__sub_I_bind_cpp();}});var STATIC_BUMP=23280;Module["STATIC_BASE"]=STATIC_BASE;Module["STATIC_BUMP"]=STATIC_BUMP;var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___cxa_allocate_exception(size){return _malloc(size);}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception;}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:function deAdjust(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var key in EXCEPTIONS.infos){var ptr=+key;var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr;}}return adjusted;},addRef:function addRef(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++;},decRef:function decRef(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module["dynCall_vi"](info.destructor,ptr);}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr);}},clearRef:function clearRef(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0;}};function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--;}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr;}function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr;}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(setTempRet0(0),0)|0;}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(setTempRet0(0),thrown)|0;}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i<typeArray.length;i++){if(typeArray[i]&&Module["___cxa_can_catch"](typeArray[i],throwntype,thrown)){thrown=HEAP32[thrown>>2];info.adjusted=thrown;return(setTempRet0(typeArray[i]),thrown)|0;}}thrown=HEAP32[thrown>>2];return(setTempRet0(throwntype),thrown)|0;}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1;}else{__ZSt18uncaught_exceptionv.uncaught_exception++;}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";}function ___gxx_personality_v0(){}function ___lock(){}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value;}var PATH={splitPath:function splitPath(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1);},normalizeArray:function 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:function normalize(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p;}),!isAbsolute).join("/");if(!path&&!isAbsolute){path=".";}if(path&&trailingSlash){path+="/";}return(isAbsolute?"/":"")+path;},dirname:function 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:function basename(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1);},extname:function extname(path){return PATH.splitPath(path)[3];},join:function join(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"));},join2:function join2(l,r){return PATH.normalize(l+"/"+r);},resolve:function resolve(){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.charAt(0)==="/";}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p;}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||".";},relative:function relative(from,to){from=PATH.resolve(from).substr(1);to=PATH.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 TTY={ttys:[],init:function init(){},shutdown:function shutdown(){},register:function register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops);},stream_ops:{open:function open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}stream.tty=tty;stream.seekable=false;},close:function close(stream){stream.tty.ops.flush(stream.tty);},flush:function flush(stream){stream.tty.ops.flush(stream.tty);},read:function read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO);}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(ERRNO_CODES.EIO);}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result;}if(bytesRead){stream.node.timestamp=Date.now();}return bytesRead;},write:function write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO);}for(var i=0;i<length;i++){try{stream.tty.ops.put_char(stream.tty,buffer[offset+i]);}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO);}}if(length){stream.node.timestamp=Date.now();}return i;}},default_tty_ops:{get_char:function get_char(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=new Buffer(BUFSIZE);var bytesRead=0;var isPosixPlatform=process.platform!="win32";var fd=process.stdin.fd;if(isPosixPlatform){var usingDevice=false;try{fd=fs.openSync("/dev/stdin","r");usingDevice=true;}catch(e){}}try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE,null);}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e;}if(usingDevice){fs.closeSync(fd);}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8");}else{result=null;}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n";}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n";}}if(!result){return null;}tty.input=intArrayFromString(result,true);}return tty.input.shift();},put_char:function put_char(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[];}else{if(val!=0)tty.output.push(val);}},flush:function flush(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[];}}},default_tty1_ops:{put_char:function put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[];}else{if(val!=0)tty.output.push(val);}},flush:function flush(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[];}}}};var MEMFS={ops_table:null,mount:function mount(_mount){return MEMFS.createNode(null,"/",16384|511,0);},createNode:function createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={};}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null;}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream;}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream;}node.timestamp=Date.now();if(parent){parent.contents[name]=node;}return node;},getFileDataAsRegularArray:function getFileDataAsRegularArray(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i<node.usedBytes;++i){arr.push(node.contents[i]);}return arr;}return node.contents;},getFileDataAsTypedArray:function getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array();if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents);},expandFileStorage:function expandFileStorage(node,newCapacity){if(node.contents&&node.contents.subarray&&newCapacity>node.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length;}if(!node.contents||node.contents.subarray){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);return;}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.length<newCapacity){node.contents.push(0);}},resizeFileStorage:function resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return;}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)));}node.usedBytes=newSize;return;}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize){node.contents.push(0);}node.usedBytes=newSize;},node_ops:{getattr:function 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:function 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:function lookup(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT];},mknod:function mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev);},rename:function 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(ERRNO_CODES.ENOTEMPTY);}}}delete old_node.parent.contents[old_node.name];old_node.name=new_name;new_dir.contents[new_name]=old_node;old_node.parent=new_dir;},unlink:function unlink(parent,name){delete parent.contents[name];},rmdir:function rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);}delete parent.contents[name];},readdir:function readdir(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue;}entries.push(key);}return entries;},symlink:function symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node;},readlink:function readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return node.link;}},stream_ops:{read:function 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:function write(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length;}else if(node.usedBytes===0&&position===0){node.contents=new Uint8Array(buffer.subarray(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:function 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(ERRNO_CODES.EINVAL);}return position;},allocate:function allocate(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length);},mmap:function mmap(stream,buffer,offset,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&(contents.buffer===buffer||contents.buffer===buffer.buffer)){allocated=false;ptr=contents.byteOffset;}else{if(position>0||position+length<stream.node.usedBytes){if(contents.subarray){contents=contents.subarray(position,position+length);}else{contents=Array.prototype.slice.call(contents,position,position+length);}}allocated=true;ptr=_malloc(length);if(!ptr){throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);}buffer.set(contents,ptr);}return{ptr:ptr,allocated:allocated};},msync:function msync(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}if(mmapFlags&2){return 0;}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0;}}};var IDBFS={dbs:{},indexedDB:function(_indexedDB){function indexedDB(){return _indexedDB.apply(this,arguments);}indexedDB.toString=function(){return _indexedDB.toString();};return indexedDB;}(function(){if(typeof indexedDB!=="undefined")return indexedDB;var ret=null;if((typeof window==='undefined'?'undefined':_typeof(window))==="object")ret=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;assert(ret,"IDBFS used, but indexedDB not supported");return ret;}),DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function mount(_mount2){return MEMFS.mount.apply(null,arguments);},syncfs:function syncfs(mount,populate,callback){IDBFS.getLocalSet(mount,function(err,local){if(err)return callback(err);IDBFS.getRemoteSet(mount,function(err,remote){if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback);});});},getDB:function getDB(name,callback){var db=IDBFS.dbs[name];if(db){return callback(null,db);}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION);}catch(e){return callback(e);}if(!req){return callback("Unable to connect to IndexedDB");}req.onupgradeneeded=function(e){var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME);}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME);}if(!fileStore.indexNames.contains("timestamp")){fileStore.createIndex("timestamp","timestamp",{unique:false});}};req.onsuccess=function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db);};req.onerror=function(e){callback(this.error);e.preventDefault();};},getLocalSet:function getLocalSet(mount,callback){var entries={};function isRealDir(p){return p!=="."&&p!=="..";}function toAbsolute(root){return function(p){return PATH.join2(root,p);};}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path);}catch(e){return callback(e);}if(FS.isDir(stat.mode)){check.push.apply(check,FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));}entries[path]={timestamp:stat.mtime};}return callback(null,{type:"local",entries:entries});},getRemoteSet:function getRemoteSet(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,function(err,db){if(err)return callback(err);try{var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readonly");transaction.onerror=function(e){callback(this.error);e.preventDefault();};var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index("timestamp");index.openKeyCursor().onsuccess=function(event){var cursor=event.target.result;if(!cursor){return callback(null,{type:"remote",db:db,entries:entries});}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue();};}catch(e){return callback(e);}});},loadLocalEntry:function loadLocalEntry(path,callback){var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path);}catch(e){return callback(e);}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode});}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents});}else{return callback(new Error("node type not supported"));}},storeLocalEntry:function storeLocalEntry(path,entry,callback){try{if(FS.isDir(entry.mode)){FS.mkdir(path,entry.mode);}else if(FS.isFile(entry.mode)){FS.writeFile(path,entry.contents,{canOwn:true});}else{return callback(new Error("node type not supported"));}FS.chmod(path,entry.mode);FS.utime(path,entry.timestamp,entry.timestamp);}catch(e){return callback(e);}callback(null);},removeLocalEntry:function removeLocalEntry(path,callback){try{var lookup=FS.lookupPath(path);var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path);}else if(FS.isFile(stat.mode)){FS.unlink(path);}}catch(e){return callback(e);}callback(null);},loadRemoteEntry:function loadRemoteEntry(store,path,callback){var req=store.get(path);req.onsuccess=function(event){callback(null,event.target.result);};req.onerror=function(e){callback(this.error);e.preventDefault();};},storeRemoteEntry:function storeRemoteEntry(store,path,entry,callback){var req=store.put(entry,path);req.onsuccess=function(){callback(null);};req.onerror=function(e){callback(this.error);e.preventDefault();};},removeRemoteEntry:function removeRemoteEntry(store,path,callback){var req=store.delete(path);req.onsuccess=function(){callback(null);};req.onerror=function(e){callback(this.error);e.preventDefault();};},reconcile:function reconcile(src,dst,callback){var total=0;var create=[];Object.keys(src.entries).forEach(function(key){var e=src.entries[key];var e2=dst.entries[key];if(!e2||e.timestamp>e2.timestamp){create.push(key);total++;}});var remove=[];Object.keys(dst.entries).forEach(function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++;}});if(!total){return callback(null);}var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err);}return;}if(++completed>=total){return callback(null);}}transaction.onerror=function(e){done(this.error);e.preventDefault();};create.sort().forEach(function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done);});}else{IDBFS.loadLocalEntry(path,function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done);});}});remove.sort().reverse().forEach(function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done);}else{IDBFS.removeRemoteEntry(store,path,done);}});}};var NODEFS={isWindows:false,staticInit:function staticInit(){NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process["binding"]("constants");if(flags["fs"]){flags=flags["fs"];}NODEFS.flagsForNodeMap={"1024":flags["O_APPEND"],"64":flags["O_CREAT"],"128":flags["O_EXCL"],"0":flags["O_RDONLY"],"2":flags["O_RDWR"],"4096":flags["O_SYNC"],"512":flags["O_TRUNC"],"1":flags["O_WRONLY"]};},bufferFrom:function bufferFrom(arrayBuffer){return Buffer.alloc?Buffer.from(arrayBuffer):new Buffer(arrayBuffer);},mount:function mount(_mount3){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(_mount3.opts.root),0);},createNode:function createNode(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node;},getMode:function getMode(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2;}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}return stat.mode;},realPath:function realPath(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent;}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts);},flagsForNode:function flagsForNode(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k;}}if(!flags){return newFlags;}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}},node_ops:{getattr:function getattr(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096;}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0;}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks};},setattr:function setattr(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode;}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date);}if(attr.size!==undefined){fs.truncateSync(path,attr.size);}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},lookup:function lookup(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode);},mknod:function mknod(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode);}else{fs.writeFileSync(path,"",{mode:node.mode});}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}return node;},rename:function rename(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},unlink:function unlink(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},rmdir:function rmdir(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},readdir:function readdir(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},symlink:function symlink(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},readlink:function readlink(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path;}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}}},stream_ops:{open:function open(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags));}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},close:function close(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd);}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},read:function read(stream,buffer,offset,length,position){if(length===0)return 0;try{return fs.readSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position);}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},write:function write(stream,buffer,offset,length,position){try{return fs.writeSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position);}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},llseek:function llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position;}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size;}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return position;}}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function mount(_mount4){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync();var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i<parts.length-1;i++){var curr=parts.slice(0,i+1).join("/");if(!createdParents[curr]){createdParents[curr]=WORKERFS.createNode(parent,parts[i],WORKERFS.DIR_MODE,0);}parent=createdParents[curr];}return parent;}function base(path){var parts=path.split("/");return parts[parts.length-1];}Array.prototype.forEach.call(_mount4.opts["files"]||[],function(file){WORKERFS.createNode(ensureParent(file.name),base(file.name),WORKERFS.FILE_MODE,0,file,file.lastModifiedDate);});(_mount4.opts["blobs"]||[]).forEach(function(obj){WORKERFS.createNode(ensureParent(obj["name"]),base(obj["name"]),WORKERFS.FILE_MODE,0,obj["data"]);});(_mount4.opts["packages"]||[]).forEach(function(pack){pack["metadata"].files.forEach(function(file){var name=file.filename.substr(1);WORKERFS.createNode(ensureParent(name),base(name),WORKERFS.FILE_MODE,0,pack["blob"].slice(file.start,file.end));});});return root;},createNode:function createNode(parent,name,mode,dev,contents,mtime){var node=FS.createNode(parent,name,mode);node.mode=mode;node.node_ops=WORKERFS.node_ops;node.stream_ops=WORKERFS.stream_ops;node.timestamp=(mtime||new Date()).getTime();assert(WORKERFS.FILE_MODE!==WORKERFS.DIR_MODE);if(mode===WORKERFS.FILE_MODE){node.size=contents.size;node.contents=contents;}else{node.size=4096;node.contents={};}if(parent){parent.contents[name]=node;}return node;},node_ops:{getattr:function getattr(node){return{dev:1,ino:undefined,mode:node.mode,nlink:1,uid:0,gid:0,rdev:undefined,size:node.size,atime:new Date(node.timestamp),mtime:new Date(node.timestamp),ctime:new Date(node.timestamp),blksize:4096,blocks:Math.ceil(node.size/4096)};},setattr:function setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode;}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp;}},lookup:function lookup(parent,name){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);},mknod:function mknod(parent,name,mode,dev){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},rename:function rename(oldNode,newDir,newName){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},unlink:function unlink(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},rmdir:function rmdir(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},readdir:function readdir(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue;}entries.push(key);}return entries;},symlink:function symlink(parent,newName,oldPath){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},readlink:function readlink(node){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}},stream_ops:{read:function read(stream,buffer,offset,length,position){if(position>=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size;},write:function write(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO);},llseek:function 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.size;}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return position;}}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function handleFSError(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno);},lookupPath:function lookupPath(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key];}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP);}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p;}),false);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.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP);}}}}return{path:current_path,node:current};},getPath:function 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:function 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:function hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node;},hashRemoveNode:function 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:function lookupNode(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,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:function createNode(parent,name,mode,rdev){if(!FS.FSNode){FS.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;};FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:function get(){return(this.mode&readMode)===readMode;},set:function set(val){val?this.mode|=readMode:this.mode&=~readMode;}},write:{get:function get(){return(this.mode&writeMode)===writeMode;},set:function set(val){val?this.mode|=writeMode:this.mode&=~writeMode;}},isFolder:{get:function get(){return FS.isDir(this.mode);}},isDevice:{get:function get(){return FS.isChrdev(this.mode);}}});}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node;},destroyNode:function destroyNode(node){FS.hashRemoveNode(node);},isRoot:function isRoot(node){return node===node.parent;},isMountpoint:function isMountpoint(node){return!!node.mounted;},isFile:function isFile(mode){return(mode&61440)===32768;},isDir:function isDir(mode){return(mode&61440)===16384;},isLink:function isLink(mode){return(mode&61440)===40960;},isChrdev:function isChrdev(mode){return(mode&61440)===8192;},isBlkdev:function isBlkdev(mode){return(mode&61440)===24576;},isFIFO:function isFIFO(mode){return(mode&61440)===4096;},isSocket:function isSocket(mode){return(mode&49152)===49152;},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function modeStringToFlags(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str);}return flags;},flagsToPermissionString:function flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w";}return perms;},nodePermissions:function nodePermissions(node,perms){if(FS.ignorePermissions){return 0;}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES;}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES;}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES;}return 0;},mayLookup:function mayLookup(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0;},mayCreate:function mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST;}catch(e){}return FS.nodePermissions(dir,"wx");},mayDelete:function mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name);}catch(e){return e.errno;}var err=FS.nodePermissions(dir,"wx");if(err){return err;}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR;}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY;}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR;}}return 0;},mayOpen:function mayOpen(node,flags){if(!node){return ERRNO_CODES.ENOENT;}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP;}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return ERRNO_CODES.EISDIR;}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags));},MAX_OPEN_FDS:4096,nextfd:function nextfd(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd;}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE);},getStream:function getStream(fd){return FS.streams[fd];},createStream:function createStream(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function get(){return this.node;},set:function set(val){this.node=val;}},isRead:{get:function get(){return(this.flags&2097155)!==1;}},isWrite:{get:function get(){return(this.flags&2097155)!==0;}},isAppend:{get:function get(){return this.flags&1024;}}});}var newStream=new FS.FSStream();for(var p in stream){newStream[p]=stream[p];}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream;},closeStream:function closeStream(fd){FS.streams[fd]=null;},chrdev_stream_ops:{open:function open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream);}},llseek:function llseek(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}},major:function major(dev){return dev>>8;},minor:function minor(dev){return dev&255;},makedev:function makedev(ma,mi){return ma<<8|mi;},registerDevice:function registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops};},getDevice:function getDevice(dev){return FS.devices[dev];},getMounts:function 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:function syncfs(populate,callback){if(typeof populate==="function"){callback=populate;populate=false;}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("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(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err);}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err);}return;}if(++completed>=mounts.length){doCallback(null);}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null);}mount.type.syncfs(mount,populate,done);});},mount:function mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}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(ERRNO_CODES.EBUSY);}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}}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:function unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){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:function lookup(parent,name){return parent.node_ops.lookup(parent,name);},mknod:function 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(ERRNO_CODES.EINVAL);}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}return parent.node_ops.mknod(parent,name,mode,dev);},create:function create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0);},mkdir:function mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0);},mkdirTree:function 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!=ERRNO_CODES.EEXIST)throw e;}}},mkdev:function mkdev(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438;}mode|=8192;return FS.mknod(path,mode,dev);},symlink:function symlink(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}return parent.node_ops.symlink(parent,newname,oldpath);},rename:function 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;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV);}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);}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 err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err);}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err);}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err);}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path);}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message);}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);}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path);}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message);}},rmdir:function 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 err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path);}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message);}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path);}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message);}},readdir:function readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}return node.node_ops.readdir(node);},unlink:function unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path);}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message);}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path);}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message);}},readlink:function readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link));},stat:function stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}return node.node_ops.getattr(node);},lstat:function lstat(path){return FS.stat(path,true);},chmod:function 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(ERRNO_CODES.EPERM);}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()});},lchmod:function lchmod(path,mode){FS.chmod(path,mode,true);},fchmod:function fchmod(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}FS.chmod(stream.node,mode);},chown:function 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(ERRNO_CODES.EPERM);}node.node_ops.setattr(node,{timestamp:Date.now()});},lchown:function lchown(path,uid,gid){FS.chown(path,uid,gid,true);},fchown:function fchown(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}FS.chown(stream.node,uid,gid);},truncate:function truncate(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}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(ERRNO_CODES.EPERM);}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR);}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err);}node.node_ops.setattr(node,{size:len,timestamp:Date.now()});},ftruncate:function ftruncate(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}FS.truncate(stream.node,len);},utime:function 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:function open(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}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==='undefined'?'undefined':_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(ERRNO_CODES.EEXIST);}}else{node=FS.mknod(path,mode,0);created=true;}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(FS.isChrdev(node.mode)){flags&=~512;}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err);}}if(flags&512){FS.truncate(node,0);}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);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;err("read file: "+path);}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ;}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE;}FS.trackingDelegate["onOpenFile"](path,trackingFlags);}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message);}return stream;},close:function close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}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:function isClosed(stream){return stream.fd===null;},llseek:function llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position;},read:function read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR);}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position;}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead;},write:function write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR);}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if(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(ERRNO_CODES.ESPIPE);}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path);}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message);}return bytesWritten;},allocate:function allocate(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);}stream.stream_ops.allocate(stream,offset,length);},mmap:function mmap(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES);}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags);},msync:function msync(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0;}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags);},munmap:function munmap(stream){return 0;},ioctl:function ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);}return stream.stream_ops.ioctl(stream,cmd,arg);},readFile:function readFile(path,opts){opts=opts||{};opts.flags=opts.flags||"r";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:function writeFile(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";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:function cwd(){return FS.currentPath;},chdir:function chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err);}FS.currentPath=lookup.path;},createDefaultDirectories:function createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user");},createDefaultDevices:function createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function read(){return 0;},write:function write(stream,buffer,offset,length,pos){return length;}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=function random_device(){crypto.getRandomValues(randomBuffer);return randomBuffer[0];};}else if(ENVIRONMENT_IS_NODE){random_device=function random_device(){return require("crypto")["randomBytes"](1)[0];};}else{random_device=function random_device(){return Math.random()*256|0;};}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp");},createSpecialDirectories:function createSpecialDirectories(){FS.mkdir("/proc");FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function mount(){var node=FS.createNode("/proc/self","fd",16384|511,73);node.node_ops={lookup:function lookup(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function readlink(){return stream.path;}}};ret.parent=ret;return ret;}};return node;}},{},"/proc/self/fd");},createStandardStreams:function 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","r");assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")");},ensureErrnoError:function ensureErrnoError(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){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});};FS.ErrnoError.prototype=new Error();FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>";});},staticInit:function staticInit(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"IDBFS":IDBFS,"NODEFS":NODEFS,"WORKERFS":WORKERFS};},init:function 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:function quit(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue;}FS.close(stream);}},getMode:function getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode;},joinPath:function joinPath(parts,forceRelative){var path=PATH.join.apply(null,parts);if(forceRelative&&path[0]=="/")path=path.substr(1);return path;},absolutePath:function absolutePath(relative,base){return PATH.resolve(base,relative);},standardizePath:function standardizePath(path){return PATH.normalize(path);},findObject:function findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object;}else{___setErrNo(ret.error);return null;}},analyzePath:function 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;},createFolder:function createFolder(parent,name,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.mkdir(path,mode);},createPath:function 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:function 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:function createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(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,"w");FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode);}return node;},createDevice:function 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:function open(stream){stream.seekable=false;},close:function close(stream){if(output&&output.buffer&&output.buffer.length){output(10);}},read:function 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(ERRNO_CODES.EIO);}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result;}if(bytesRead){stream.node.timestamp=Date.now();}return bytesRead;},write:function write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i]);}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO);}}if(length){stream.node.timestamp=Date.now();}return i;}});return FS.mkdev(path,mode,dev);},createLink:function createLink(parent,name,target,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);return FS.symlink(target,path);},forceLoadFile:function forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;var success=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(Module["read"]){try{obj.contents=intArrayFromString(Module["read"](obj.url),true);obj.usedBytes=obj.contents.length;}catch(e){success=false;}}else{throw new Error("Cannot load without read() or XMLHttpRequest.");}if(!success)___setErrNo(ERRNO_CODES.EIO);return success;},createLazyFile:function 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=function 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);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined");}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[]);}else{return intArrayFromString(xhr.responseText||"",true);}};var lazyArray=this;lazyArray.setDataGetter(function(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;console.log("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 get(){if(!this.lengthKnown){this.cacheLength();}return this._length;}},chunkSize:{get:function get(){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 get(){return this.contents.length;}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO);}return fn.apply(null,arguments);};});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO);}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;};node.stream_ops=stream_ops;return node;},createPreloadedFile:function createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn);}if(onload)onload();removeRunDependency(dep);}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep);});handled=true;}});if(!handled)finish(byteArray);}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray);},onerror);}else{processData(url);}},indexedDB:function indexedDB(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;},DB_NAME:function DB_NAME(){return"EM_FS_"+window.location.pathname;},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function saveFilesToDB(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION);}catch(e){return onerror(e);}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){console.log("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME);};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror();}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish();};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish();};});transaction.onerror=onerror;};openRequest.onerror=onerror;},loadFilesFromDB:function loadFilesFromDB(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION);}catch(e){return onerror(e);}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly");}catch(e){onerror(e);return;}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror();}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path);}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish();};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish();};});transaction.onerror=onerror;};openRequest.onerror=onerror;}};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function calculateAt(dirfd,path){if(path[0]!=="/"){var dir;if(dirfd===-100){dir=FS.cwd();}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);dir=dirstream.path;}path=PATH.join2(dir,path);}return path;},doStat:function 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-ERRNO_CODES.ENOTDIR;}throw e;}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0;},doMsync:function doMsync(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags);},doMkdir:function doMkdir(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0;},doMknod:function doMknod(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL;}FS.mknod(path,mode,dev);return 0;},doReadlink:function doReadlink(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len;},doAccess:function doAccess(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL;}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES;}return 0;},doDup:function doDup(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd;},doReadv:function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break;}return ret;},doWritev:function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;}return ret;},varargs:0,get:function get(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret;},getStr:function getStr(){var ret=Pointer_stringify(SYSCALLS.get());return ret;},getStreamFromFD:function getStreamFromFD(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream;},getSocketFromFD:function getSocketFromFD(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket;},getSocketAddress:function getSocketAddress(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info;},get64:function get64(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low;},getZero:function getZero(){assert(SYSCALLS.get()===0);}};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0;}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt);}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt);}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL;}var newStream;newStream=FS.open(stream.path,stream.flags,0,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 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0;};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL;}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd;}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0;};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL;};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp);};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};case 21524:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};default:abort("bad ioctl syscall "+op);}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0;}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___unlock(){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size);}}function 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=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]];}return ret;}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function 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;}else{return name;}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body);}function 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 BindingError=undefined;function throwBindingError(message){throw new BindingError(message);}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message);}function 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(function(dt,i){if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt];}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[];}awaitingDependencies[dt].push(function(){typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters);}});}});if(0===unregisteredTypes.length){onComplete(typeConverters);}}function registerType(rawType,registeredInstance,options){options=options||{};if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance");}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(function(cb){cb();});}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function fromWireType(wt){return!!wt;},"toWireType":function toWireType(destructors,o){return o?trueValue:falseValue;},"argPackAdvance":8,"readValueFromPointer":function readValueFromPointer(pointer){var heap;if(size===1){heap=HEAP8;}else if(size===2){heap=HEAP16;}else if(size===4){heap=HEAP32;}else{throw new TypeError("Unknown boolean type size: "+name);}return this["fromWireType"](heap[pointer>>shift]);},destructorFunction:null});}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false;}if(!(other instanceof ClassHandle)){return false;}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;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;}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType};}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name;}throwBindingError(getInstanceTypeName(obj)+" instance already deleted");}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this;}else{var clone=Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}});clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone;}}function runDestructor(handle){var $$=handle.$$;if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr);}else{$$.ptrType.registeredClass.rawDestructor($$.ptr);}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion");}this.$$.count.value-=1;var toDelete=0===this.$$.count.value;if(toDelete){runDestructor(this);}if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined;}}function ClassHandle_isDeleted(){return!this.$$.ptr;}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]();}}function ClassHandle_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 init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater;}function ClassHandle(){}var registeredPointers={};function 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;}}function 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;}}}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=[];}function 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 "'+_embind_repr(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.$$){throwBindingError('Cannot pass "'+_embind_repr(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_register(function(){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 "'+_embind_repr(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 simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2]);}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr);}return ptr;}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr);}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]();}}function 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);}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length;}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k]);}}return rv;}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes);}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction;}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined");}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass;}return ptr;}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr];}function 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 Object.create(prototype,{$$:{value:record}});}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});}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["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&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null;}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null;}}else{this["toWireType"]=genericPointerToWireType;}}function 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;}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i<signature.length;++i){args.push("a"+i);}var name="dynCall_"+signature+"_"+rawFunction;var body="return function "+name+"("+args.join(", ")+") {\n";body+=" return dynCall(rawFunction"+(args.length?", ":"")+args.join(", ")+");\n";body+="};\n";return new Function("dynCall","rawFunction",body)(dynCall,rawFunction);}var fp;if(Module["FUNCTION_TABLE_"+signature]!==undefined){fp=Module["FUNCTION_TABLE_"+signature][rawFunction];}else if(typeof FUNCTION_TABLE!=="undefined"){fp=FUNCTION_TABLE[rawFunction];}else{var dc=Module["asm"]["dynCall_"+signature];if(dc===undefined){dc=Module["asm"]["dynCall_"+signature.replace(/f/g,"d")];if(dc===undefined){throwBindingError("No dynCall invoker for signature: "+signature);}}fp=makeDynCaller(dc);}if(typeof fp!=="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction);}return fp;}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv;}function 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([", "]));}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast);}if(downcast){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(legalFunctionName,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);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];});}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i<count;i++){array.push(HEAP32[(firstElement>>2)+i]);}return array;}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr);}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){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]=function unboundTypeHandler(){throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes);};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+" called with "+arguments.length+" arguments, expected "+(argCount-1));}var destructors=[];var args=new Array(argCount);args[0]=rawConstructor;for(var i=1;i<argCount;++i){args[i]=argTypes[i]["toWireType"](destructors,arguments[i-1]);}var ptr=invoker.apply(null,args);runDestructors(destructors);return argTypes[0]["fromWireType"](ptr);};return[];});return[];});}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+(typeof constructor==='undefined'?'undefined':_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 craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!");}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i<argTypes.length;++i){if(argTypes[i]!==null&&argTypes[i].destructorFunction===undefined){needsDestructorStack=true;break;}}var returns=argTypes[0].name!=="void";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="return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\n"+"if (arguments.length !== "+(argCount-2)+") {\n"+"throwBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount-2)+" args!');\n"+"}\n";if(needsDestructorStack){invokerFnBody+="var destructors = [];\n";}var dtorStack=needsDestructorStack?"destructors":"null";var args1=["throwBindingError","invoker","fn","runDestructors","retType","classParam"];var args2=[throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,argTypes[0],argTypes[1]];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);args2.push(argTypes[i+2]);}if(isClassMethodFunc){argsListWired="thisWired"+(argsListWired.length>0?", ":"")+argsListWired;}invokerFnBody+=(returns?"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");args2.push(argTypes[i].destructorFunction);}}}if(returns){invokerFnBody+="var ret = retType.fromWireType(rv);\n"+"return ret;\n";}else{}invokerFnBody+="}\n";args1.push(invokerFnBody);var invokerFunction=new_(Function,args1).apply(null,args2);return invokerFunction;}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;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);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction;}else{proto[methodName].overloadTable[argCount-2]=memberFunction;}return[];});return[];});}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle);}}function count_emval_handles(){var count=0;for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){++count;}}return count;}function get_first_emval(){for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){return emval_handle_array[i];}}return null;}function init_emval(){Module["count_emval_handles"]=count_emval_handles;Module["get_first_emval"]=get_first_emval;}function __emval_register(value){switch(value){case undefined:{return 1;};case null:{return 2;};case true:{return 3;};case false:{return 4;};default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle;}}}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function fromWireType(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv;},"toWireType":function toWireType(destructors,value){return __emval_register(value);},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null});}function _embind_repr(v){if(v===null){return"null";}var t=typeof v==='undefined'?'undefined':_typeof(v);if(t==="object"||t==="array"||t==="function"){return v.toString();}else{return""+v;}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2]);};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3]);};default:throw new TypeError("Unknown float type: "+name);}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function fromWireType(value){return value;},"toWireType":function toWireType(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name);}return value;},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null});}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes);},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[];});}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer];}:function readU8FromPointer(pointer){return HEAPU8[pointer];};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1];}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1];};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2];}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2];};default:throw new TypeError("Unknown integer type: "+name);}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295;}var shift=getShiftFromSize(size);var fromWireType=function fromWireType(value){return value;};if(minRange===0){var bitshift=32-8*size;fromWireType=function fromWireType(value){return value<<bitshift>>>bitshift;};}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function toWireType(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name);}if(value<minRange||value>maxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!");}return isUnsignedType?value>>>0:value|0;},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null});}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size);}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true});}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function fromWireType(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var endChar=HEAPU8[value+4+length];var endCharSwap=0;if(endChar!=0){endCharSwap=endChar;HEAPU8[value+4+length]=0;}var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(HEAPU8[currentBytePtr]==0){var stringSegment=UTF8ToString(decodeStartPtr);if(str===undefined)str=stringSegment;else{str+=String.fromCharCode(0);str+=stringSegment;}decodeStartPtr=currentBytePtr+1;}}if(endCharSwap!=0)HEAPU8[value+4+length]=endCharSwap;}else{var a=new Array(length);for(var i=0;i<length;++i){a[i]=String.fromCharCode(HEAPU8[value+4+i]);}str=a.join("");}_free(value);return str;},"toWireType":function toWireType(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value);}var getLength;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){getLength=function getLength(){return lengthBytesUTF8(value);};}else{getLength=function getLength(){return value.length;};}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,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+4+i]=charCode;}}else{for(var i=0;i<length;++i){HEAPU8[ptr+4+i]=value[i];}}}if(destructors!==null){destructors.push(_free,ptr);}return ptr;},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function destructorFunction(ptr){_free(ptr);}});}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var getHeap,shift;if(charSize===2){getHeap=function getHeap(){return HEAPU16;};shift=1;}else if(charSize===4){getHeap=function getHeap(){return HEAPU32;};shift=2;}registerType(rawType,{name:name,"fromWireType":function fromWireType(value){var HEAP=getHeap();var length=HEAPU32[value>>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i<length;++i){a[i]=String.fromCharCode(HEAP[start+i]);}_free(value);return a.join("");},"toWireType":function toWireType(destructors,value){var HEAP=getHeap();var length=value.length;var ptr=_malloc(4+length*charSize);HEAPU32[ptr>>2]=length;var start=ptr+4>>shift;for(var i=0;i<length;++i){HEAP[start+i]=value.charCodeAt(i);}if(destructors!==null){destructors.push(_free,ptr);}return ptr;},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function destructorFunction(ptr){_free(ptr);}});}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function fromWireType(){return undefined;},"toWireType":function toWireType(destructors,o){return undefined;}});}function requireHandle(handle){if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle);}return emval_handle_array[handle].value;}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType));}return impl;}function __emval_as(handle,returnType,destructorsRef){handle=requireHandle(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=__emval_register(destructors);HEAP32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle);}function __emval_lookupTypes(argCount,argTypes,argWireTypes){var a=new Array(argCount);for(var i=0;i<argCount;++i){a[i]=requireRegisteredType(HEAP32[(argTypes>>2)+i],"parameter "+i);}return a;}function __emval_call(handle,argCount,argTypes,argv){handle=requireHandle(handle);var types=__emval_lookupTypes(argCount,argTypes);var args=new Array(argCount);for(var i=0;i<argCount;++i){var type=types[i];args[i]=type["readValueFromPointer"](argv);argv+=type["argPackAdvance"];}var rv=handle.apply(undefined,args);return __emval_register(rv);}function __emval_allocateDestructors(destructorsRef){var destructors=[];HEAP32[destructorsRef>>2]=__emval_register(destructors);return destructors;}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address);}else{return symbol;}}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=requireHandle(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args);}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id;}function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name;}).join("_")+"$";var params=["retType"];var args=[retType];var argsList="";for(var i=0;i<argCount-1;++i){argsList+=(i!==0?", ":"")+"arg"+i;params.push("argType"+i);args.push(types[1+i]);}var functionName=makeLegalFunctionName("methodCaller_"+signatureName);var functionBody="return function "+functionName+"(handle, name, destructors, args) {\n";var offset=0;for(var i=0;i<argCount-1;++i){functionBody+=" var arg"+i+" = argType"+i+".readValueFromPointer(args"+(offset?"+"+offset:"")+");\n";offset+=types[i+1]["argPackAdvance"];}functionBody+=" var rv = handle[name]("+argsList+");\n";for(var i=0;i<argCount-1;++i){if(types[i+1]["deleteObject"]){functionBody+=" argType"+i+".deleteObject(arg"+i+");\n";}}if(!retType.isVoid){functionBody+=" return retType.toWireType(destructors, rv);\n";}functionBody+="};\n";params.push(functionBody);var invokerFunction=new_(Function,params).apply(null,args);return __emval_addMethodCaller(invokerFunction);}function __emval_get_module_property(name){name=getStringOrSymbol(name);return __emval_register(Module[name]);}function __emval_get_property(handle,key){handle=requireHandle(handle);key=requireHandle(key);return __emval_register(handle[key]);}function __emval_incref(handle){if(handle>4){emval_handle_array[handle].refcount+=1;}}function craftEmvalAllocator(argCount){var argsList="";for(var i=0;i<argCount;++i){argsList+=(i!==0?", ":"")+"arg"+i;}var functionBody="return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n";for(var i=0;i<argCount;++i){functionBody+="var argType"+i+" = requireRegisteredType(HEAP32[(argTypes >> 2) + "+i+'], "parameter '+i+'");\n'+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n";}functionBody+="var obj = new constructor("+argsList+");\n"+"return __emval_register(obj);\n"+"}\n";return new Function("requireRegisteredType","HEAP32","__emval_register",functionBody)(requireRegisteredType,HEAP32,__emval_register);}var emval_newers={};function __emval_new(handle,argCount,argTypes,args){handle=requireHandle(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer;}return newer(handle,argTypes,args);}function __emval_new_cstring(v){return __emval_register(getStringOrSymbol(v));}function __emval_run_destructors(handle){var destructors=emval_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle);}function __emval_take_value(type,argv){type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](argv);return __emval_register(v);}function _abort(){Module["abort"]();}function _llvm_cttz_i32(x){x=x|0;return(x?31-(Math_clz32(x^x-1)|0)|0:32)|0;}function _llvm_cttz_i64(l,h){var ret=_llvm_cttz_i32(l);if(ret==32)ret+=_llvm_cttz_i32(h);return(setTempRet0(0),ret)|0;}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest;}var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0;}var PTHREAD_SPECIFIC_NEXT_KEY=1;function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL;}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0;}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Module["dynCall_v"](func);_pthread_once.seen[ptr]=1;}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL;}PTHREAD_SPECIFIC[key]=value;return 0;}FS.staticInit();__ATINIT__.unshift(function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();});__ATMAIN__.push(function(){FS.ignorePermissions=false;});__ATEXIT__.push(function(){FS.quit();});__ATINIT__.unshift(function(){TTY.init();});__ATEXIT__.push(function(){TTY.shutdown();});if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit();}embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;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;}function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.");}chr&=255;}ret.push(String.fromCharCode(chr));}return ret.join("");}var decodeBase64=typeof atob==="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2);}if(enc4!==64){output=output+String.fromCharCode(chr3);}}while(i<input.length);return output;};function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE==="boolean"&&ENVIRONMENT_IS_NODE){var buf;try{buf=Buffer.from(s,"base64");}catch(_){buf=new Buffer(s,"base64");}return new Uint8Array(buf.buffer,buf.byteOffset,buf.byteLength);}try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i);}return bytes;}catch(_){throw new Error("Converting base64 string to bytes failed.");}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return;}return intArrayFromBase64(filename.slice(dataURIPrefix.length));}Module["wasmTableSize"]=412;Module["wasmMaxTableSize"]=412;function invoke_i(index){var sp=_stackSave();try{return Module["dynCall_i"](index);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_ii(index,a1){var sp=_stackSave();try{return Module["dynCall_ii"](index,a1);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iii(index,a1,a2){var sp=_stackSave();try{return Module["dynCall_iii"](index,a1,a2);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiii(index,a1,a2,a3){var sp=_stackSave();try{return Module["dynCall_iiii"](index,a1,a2,a3);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=_stackSave();try{return Module["dynCall_iiiii"](index,a1,a2,a3,a4);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=_stackSave();try{return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=_stackSave();try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_v(index){var sp=_stackSave();try{Module["dynCall_v"](index);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_vi(index,a1){var sp=_stackSave();try{Module["dynCall_vi"](index,a1);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_vii(index,a1,a2){var sp=_stackSave();try{Module["dynCall_vii"](index,a1,a2);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viii(index,a1,a2,a3){var sp=_stackSave();try{Module["dynCall_viii"](index,a1,a2,a3);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viiii(index,a1,a2,a3,a4){var sp=_stackSave();try{Module["dynCall_viiii"](index,a1,a2,a3,a4);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=_stackSave();try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=_stackSave();try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}Module.asmGlobalArg={};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_i":invoke_i,"invoke_ii":invoke_ii,"invoke_iii":invoke_iii,"invoke_iiii":invoke_iiii,"invoke_iiiii":invoke_iiiii,"invoke_iiiiii":invoke_iiiiii,"invoke_iiiiiii":invoke_iiiiiii,"invoke_v":invoke_v,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_viii":invoke_viii,"invoke_viiii":invoke_viiii,"invoke_viiiii":invoke_viiiii,"invoke_viiiiii":invoke_viiiiii,"ClassHandle":ClassHandle,"ClassHandle_clone":ClassHandle_clone,"ClassHandle_delete":ClassHandle_delete,"ClassHandle_deleteLater":ClassHandle_deleteLater,"ClassHandle_isAliasOf":ClassHandle_isAliasOf,"ClassHandle_isDeleted":ClassHandle_isDeleted,"RegisteredClass":RegisteredClass,"RegisteredPointer":RegisteredPointer,"RegisteredPointer_deleteObject":RegisteredPointer_deleteObject,"RegisteredPointer_destructor":RegisteredPointer_destructor,"RegisteredPointer_fromWireType":RegisteredPointer_fromWireType,"RegisteredPointer_getPointee":RegisteredPointer_getPointee,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"___cxa_allocate_exception":___cxa_allocate_exception,"___cxa_begin_catch":___cxa_begin_catch,"___cxa_find_matching_catch":___cxa_find_matching_catch,"___cxa_throw":___cxa_throw,"___gxx_personality_v0":___gxx_personality_v0,"___lock":___lock,"___resumeException":___resumeException,"___setErrNo":___setErrNo,"___syscall140":___syscall140,"___syscall145":___syscall145,"___syscall146":___syscall146,"___syscall221":___syscall221,"___syscall5":___syscall5,"___syscall54":___syscall54,"___syscall6":___syscall6,"___unlock":___unlock,"__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_function":__embind_register_function,"__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_addMethodCaller":__emval_addMethodCaller,"__emval_allocateDestructors":__emval_allocateDestructors,"__emval_as":__emval_as,"__emval_call":__emval_call,"__emval_call_void_method":__emval_call_void_method,"__emval_decref":__emval_decref,"__emval_get_method_caller":__emval_get_method_caller,"__emval_get_module_property":__emval_get_module_property,"__emval_get_property":__emval_get_property,"__emval_incref":__emval_incref,"__emval_lookupTypes":__emval_lookupTypes,"__emval_new":__emval_new,"__emval_new_cstring":__emval_new_cstring,"__emval_register":__emval_register,"__emval_run_destructors":__emval_run_destructors,"__emval_take_value":__emval_take_value,"_abort":_abort,"_embind_repr":_embind_repr,"_emscripten_memcpy_big":_emscripten_memcpy_big,"_llvm_cttz_i32":_llvm_cttz_i32,"_llvm_cttz_i64":_llvm_cttz_i64,"_pthread_getspecific":_pthread_getspecific,"_pthread_key_create":_pthread_key_create,"_pthread_once":_pthread_once,"_pthread_setspecific":_pthread_setspecific,"constNoSmartPtrRawPointerToWireType":constNoSmartPtrRawPointerToWireType,"count_emval_handles":count_emval_handles,"craftEmvalAllocator":craftEmvalAllocator,"craftInvokerFunction":craftInvokerFunction,"createNamedFunction":createNamedFunction,"downcastPointer":downcastPointer,"embind__requireFunction":embind__requireFunction,"embind_init_charCodes":embind_init_charCodes,"ensureOverloadTable":ensureOverloadTable,"exposePublicSymbol":exposePublicSymbol,"extendError":extendError,"floatReadValueFromPointer":floatReadValueFromPointer,"flushPendingDeletes":flushPendingDeletes,"genericPointerToWireType":genericPointerToWireType,"getBasestPointer":getBasestPointer,"getInheritedInstance":getInheritedInstance,"getInheritedInstanceCount":getInheritedInstanceCount,"getLiveInheritedInstances":getLiveInheritedInstances,"getShiftFromSize":getShiftFromSize,"getStringOrSymbol":getStringOrSymbol,"getTypeName":getTypeName,"get_first_emval":get_first_emval,"heap32VectorToArray":heap32VectorToArray,"init_ClassHandle":init_ClassHandle,"init_RegisteredPointer":init_RegisteredPointer,"init_embind":init_embind,"init_emval":init_emval,"integerReadValueFromPointer":integerReadValueFromPointer,"makeClassHandle":makeClassHandle,"makeLegalFunctionName":makeLegalFunctionName,"new_":new_,"nonConstNoSmartPtrRawPointerToWireType":nonConstNoSmartPtrRawPointerToWireType,"readLatin1String":readLatin1String,"registerType":registerType,"replacePublicSymbol":replacePublicSymbol,"requireHandle":requireHandle,"requireRegisteredType":requireRegisteredType,"runDestructor":runDestructor,"runDestructors":runDestructors,"setDelayFunction":setDelayFunction,"shallowCopyInternalPointer":shallowCopyInternalPointer,"simpleReadValueFromPointer":simpleReadValueFromPointer,"throwBindingError":throwBindingError,"throwInstanceAlreadyDeleted":throwInstanceAlreadyDeleted,"throwInternalError":throwInternalError,"throwUnboundTypeError":throwUnboundTypeError,"upcastPointer":upcastPointer,"whenDependentTypesAreResolved":whenDependentTypesAreResolved,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX};var asm=Module["asm"](Module.asmGlobalArg,Module.asmLibraryArg,buffer);Module["asm"]=asm;var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=function(){return Module["asm"]["__GLOBAL__sub_I_bind_cpp"].apply(null,arguments);};var __GLOBAL__sub_I_zstd_binding_cc=Module["__GLOBAL__sub_I_zstd_binding_cc"]=function(){return Module["asm"]["__GLOBAL__sub_I_zstd_binding_cc"].apply(null,arguments);};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return Module["asm"]["___cxa_can_catch"].apply(null,arguments);};var ___cxa_demangle=Module["___cxa_demangle"]=function(){return Module["asm"]["___cxa_demangle"].apply(null,arguments);};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return Module["asm"]["___cxa_is_pointer_type"].apply(null,arguments);};var ___errno_location=Module["___errno_location"]=function(){return Module["asm"]["___errno_location"].apply(null,arguments);};var ___getTypeName=Module["___getTypeName"]=function(){return Module["asm"]["___getTypeName"].apply(null,arguments);};var _free=Module["_free"]=function(){return Module["asm"]["_free"].apply(null,arguments);};var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=function(){return Module["asm"]["_llvm_bswap_i32"].apply(null,arguments);};var _llvm_ctlz_i64=Module["_llvm_ctlz_i64"]=function(){return Module["asm"]["_llvm_ctlz_i64"].apply(null,arguments);};var _malloc=Module["_malloc"]=function(){return Module["asm"]["_malloc"].apply(null,arguments);};var _memcpy=Module["_memcpy"]=function(){return Module["asm"]["_memcpy"].apply(null,arguments);};var _memmove=Module["_memmove"]=function(){return Module["asm"]["_memmove"].apply(null,arguments);};var _memset=Module["_memset"]=function(){return Module["asm"]["_memset"].apply(null,arguments);};var _sbrk=Module["_sbrk"]=function(){return Module["asm"]["_sbrk"].apply(null,arguments);};var establishStackSpace=Module["establishStackSpace"]=function(){return Module["asm"]["establishStackSpace"].apply(null,arguments);};var getTempRet0=Module["getTempRet0"]=function(){return Module["asm"]["getTempRet0"].apply(null,arguments);};var runPostSets=Module["runPostSets"]=function(){return Module["asm"]["runPostSets"].apply(null,arguments);};var setTempRet0=Module["setTempRet0"]=function(){return Module["asm"]["setTempRet0"].apply(null,arguments);};var setThrew=Module["setThrew"]=function(){return Module["asm"]["setThrew"].apply(null,arguments);};var stackAlloc=Module["stackAlloc"]=function(){return Module["asm"]["stackAlloc"].apply(null,arguments);};var _stackRestore=Module["stackRestore"]=function(){return Module["asm"]["stackRestore"].apply(null,arguments);};var _stackSave=Module["stackSave"]=function(){return Module["asm"]["stackSave"].apply(null,arguments);};var dynCall_i=Module["dynCall_i"]=function(){return Module["asm"]["dynCall_i"].apply(null,arguments);};var dynCall_ii=Module["dynCall_ii"]=function(){return Module["asm"]["dynCall_ii"].apply(null,arguments);};var dynCall_iii=Module["dynCall_iii"]=function(){return Module["asm"]["dynCall_iii"].apply(null,arguments);};var dynCall_iiii=Module["dynCall_iiii"]=function(){return Module["asm"]["dynCall_iiii"].apply(null,arguments);};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return Module["asm"]["dynCall_iiiii"].apply(null,arguments);};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return Module["asm"]["dynCall_iiiiii"].apply(null,arguments);};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return Module["asm"]["dynCall_iiiiiii"].apply(null,arguments);};var dynCall_v=Module["dynCall_v"]=function(){return Module["asm"]["dynCall_v"].apply(null,arguments);};var dynCall_vi=Module["dynCall_vi"]=function(){return Module["asm"]["dynCall_vi"].apply(null,arguments);};var dynCall_vii=Module["dynCall_vii"]=function(){return Module["asm"]["dynCall_vii"].apply(null,arguments);};var dynCall_viii=Module["dynCall_viii"]=function(){return Module["asm"]["dynCall_viii"].apply(null,arguments);};var dynCall_viiii=Module["dynCall_viiii"]=function(){return Module["asm"]["dynCall_viiii"].apply(null,arguments);};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return Module["asm"]["dynCall_viiiii"].apply(null,arguments);};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return Module["asm"]["dynCall_viiiiii"].apply(null,arguments);};Module["asm"]=asm;Module["FS"]=FS;Module["then"]=function(func){if(Module["calledRun"]){func(Module);}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=function(){if(old)old();func(Module);};}return Module;};function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status;}ExitStatus.prototype=new Error();ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller;};function run(args){args=args||Module["arguments"];if(runDependencies>0){return;}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun();}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("");},1);doRun();},1);}else{doRun();}}Module["run"]=run;function abort(what){if(Module["onAbort"]){Module["onAbort"](what);}if(what!==undefined){out(what);err(what);what=JSON.stringify(what);}else{what="";}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info.";}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()();}}Module["noExitRuntime"]=true;run();return Module;};}();if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof(module))==='object')module.exports=Module;else if(typeof define==='function'&&define['amd'])define([],function(){return Module;});else if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object')exports["Module"]=Module;
- }).call(this,require('_process'),require("buffer").Buffer,"/lib")
- },{"_process":126,"buffer":54,"crypto":63,"fs":9,"path":119}],6:[function(require,module,exports){
- (function (process,Buffer,__dirname){
- 'use strict';var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};var Module=function(){var _scriptDir=typeof document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return function(Module){Module=Module||{};var Module;if(!Module)Module=typeof Module!=='undefined'?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key];}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=function(status,toThrow){throw toThrow;};Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=(typeof window==='undefined'?'undefined':_typeof(window))==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=(typeof process==='undefined'?'undefined':_typeof(process))==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory);}else{return scriptDirectory+path;}}if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+"/";var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename);}return binary?ret:ret.toString();};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret);}assert(ret.buffer);return ret;};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/");}Module["arguments"]=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex;}});process["on"]("unhandledRejection",function(reason,p){process["exit"](1);});Module["quit"]=function(status){process["exit"](status);};Module["inspect"]=function(){return"[Emscripten Module object]";};}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data);}return read(f);};}Module["readBinary"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data;}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f));}data=read(f,"binary");assert((typeof data==='undefined'?'undefined':_typeof(data))==="object");return data;};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs;}else if(typeof arguments!="undefined"){Module["arguments"]=arguments;}if(typeof quit==="function"){Module["quit"]=function(status){quit(status);};}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WEB){if(document.currentScript){scriptDirectory=document.currentScript.src;}}else{scriptDirectory=self.location.href;}if(_scriptDir){scriptDirectory=_scriptDir;}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.split("/").slice(0,-1).join("/")+"/";}else{scriptDirectory="";}Module["read"]=function shell_read(url){try{var xhr=new XMLHttpRequest();xhr.open("GET",url,false);xhr.send(null);return xhr.responseText;}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data);}throw err;}};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){try{var xhr=new XMLHttpRequest();xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response);}catch(err){var data=tryParseAsDataURI(url);if(data){return data;}throw err;}};}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest();xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return;}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return;}onerror();};xhr.onerror=onerror;xhr.send(null);};Module["setWindowTitle"]=function(title){document.title=title;};}else{}var out=Module["print"]||(typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null);var err=Module["printErr"]||(typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||out);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key];}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret;}function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0;}}return ret;}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret;}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4;}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8;}else{return 0;}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text);}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args));}else{return Module["dynCall_"+sig].call(null,ptr);}}var GLOBAL_BASE=8;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text);}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func;}var JSfuncs={"stackSave":function stackSave(){_stackSave();},"stackRestore":function stackRestore(){_stackRestore();},"arrayToC":function arrayToC(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret;},"stringToC":function stringToC(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len);}return ret;}};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(ident,returnType,argTypes,args,opts){function convertReturnValue(ret){if(returnType==="string")return Pointer_stringify(ret);if(returnType==="boolean")return Boolean(ret);return ret;}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=_stackSave();cArgs[i]=converter(args[i]);}else{cArgs[i]=args[i];}}}var ret=func.apply(null,cArgs);ret=convertReturnValue(ret);if(stack!==0)_stackRestore(stack);return ret;}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type);}}var ALLOC_STATIC=2;var ALLOC_NONE=4;function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break;}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK;}return ret;}return UTF8ToString(ptr);}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr]){++endPtr;}if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr));}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue;}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue;}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2;}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3;}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4;}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5;}}}if(u0<65536){str+=String.fromCharCode(u0);}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023);}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr);}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){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;outU8Array[outIdx++]=u;}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63;}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63;}}outU8Array[outIdx]=0;return outIdx-startIdx;}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len;}else if(u<=2047){len+=2;}else if(u<=65535){len+=3;}else if(u<=2097151){len+=4;}else if(u<=67108863){len+=5;}else{len+=6;}}return len;}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var __cxa_demangle_func=Module["___cxa_demangle"]||Module["__cxa_demangle"];assert(__cxa_demangle_func);try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(HEAP32[status>>2]===0&&ret){return Pointer_stringify(ret);}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret);}return func;}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]";});}function jsStackTrace(){var err=new Error();if(!err.stack){try{throw new Error(0);}catch(e){err=e;}if(!err.stack){return"(no stack trace available)";}}return err.stack.toString();}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js);}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer);}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ");}function enlargeMemory(){abortOnCannotGrowMemory();}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY<TOTAL_STACK)err("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+TOTAL_MEMORY+"! (TOTAL_STACK="+TOTAL_STACK+")");if(Module["buffer"]){buffer=Module["buffer"];}else{{buffer=new ArrayBuffer(TOTAL_MEMORY);}Module["buffer"]=buffer;}updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY;}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue;}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func);}else{Module["dynCall_vi"](func,callback.arg);}}else{func(callback.arg===undefined?null:callback.arg);}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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 ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__);}function preMain(){callRuntimeCallbacks(__ATMAIN__);}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true;}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift());}}callRuntimeCallbacks(__ATPOSTRUN__);}function addOnPreRun(cb){__ATPRERUN__.unshift(cb);}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb);}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer);}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i);}if(!dontAddNull)HEAP8[buffer>>0]=0;}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id;}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies);}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies);}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null;}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback();}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0;}STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+22272;__ATINIT__.push({func:function func(){__GLOBAL__sub_I_zstd_binding_cc();}},{func:function func(){__GLOBAL__sub_I_bind_cpp();}});memoryInitializer="data:application/octet-stream;base64,AAAAAAAAAACwKgAASCcAAAgrAADQKgAAwCoAADAnAAAIKwAA0CoAAPAqAADwJwAAMCcAADAnAADwKgAAAAAAAAAAAAAAAAAA8CoAAPAnAAAwJwAAMCcAAPAqAADwJwAAMCcAADAnAABwJwAAAAAAAAAAAAAAAAAA8CoAAPAnAAAwJwAAMCcAAKgnAAAAAAAAAAAAAAAAAADAKgAACCgAAHAmAABwJgAAwCoAADAoAABwJgAAcCYAAAAAAABrOAcADbIHAJzyBwBwZAgAYK4KALBxCwAwqgwAEwAAAAwAAAANAAAAAQAAAAYAAAABAAAAAQAAABMAAAANAAAADgAAAAEAAAAHAAAAAQAAAAEAAAATAAAADwAAABAAAAABAAAABgAAAAEAAAABAAAAFAAAABAAAAARAAAAAQAAAAUAAAAIAAAAAgAAABQAAAARAAAAEgAAAAEAAAAFAAAACAAAAAIAAAAUAAAAEQAAABIAAAACAAAABQAAABAAAAADAAAAFQAAABEAAAATAAAAAgAAAAUAAAAQAAAABAAAABUAAAASAAAAEwAAAAMAAAAFAAAAEAAAAAQAAAAVAAAAEgAAABQAAAADAAAABQAAABAAAAAFAAAAFQAAABMAAAAUAAAAAwAAAAUAAAAQAAAABQAAABUAAAATAAAAFQAAAAQAAAAFAAAAEAAAAAUAAAAWAAAAFAAAABYAAAAEAAAABQAAABAAAAAFAAAAFgAAABQAAAAWAAAABQAAAAUAAAAQAAAABQAAABYAAAAVAAAAFgAAAAQAAAAFAAAAIAAAAAYAAAAWAAAAFQAAABYAAAAFAAAABQAAACAAAAAGAAAAFgAAABYAAAAWAAAABgAAAAUAAAAgAAAABgAAABYAAAAVAAAAFgAAAAQAAAAFAAAAMAAAAAcAAAAXAAAAFgAAABYAAAAEAAAABAAAADAAAAAHAAAAFwAAABYAAAAWAAAABQAAAAMAAABAAAAABwAAABcAAAAXAAAAFgAAAAcAAAADAAAAgAAAAAcAAAAZAAAAGQAAABcAAAAHAAAAAwAAAIAAAAAIAAAAGgAAABoAAAAYAAAABwAAAAMAAAAAAQAACAAAABsAAAAbAAAAGQAAAAkAAAADAAAAAAIAAAgAAAASAAAADAAAAA0AAAABAAAABQAAAAEAAAABAAAAEgAAAA0AAAAOAAAAAQAAAAYAAAABAAAAAQAAABIAAAAOAAAADQAAAAEAAAAFAAAACAAAAAIAAAASAAAAEAAAAA8AAAABAAAABQAAAAgAAAACAAAAEgAAAA8AAAARAAAAAQAAAAUAAAAIAAAAAwAAABIAAAAQAAAAEQAAAAQAAAAFAAAACAAAAAMAAAASAAAAEAAAABEAAAADAAAABQAAAAgAAAAEAAAAEgAAABEAAAARAAAABAAAAAQAAAAIAAAABAAAABIAAAARAAAAEQAAAAQAAAAEAAAACAAAAAUAAAASAAAAEQAAABEAAAAFAAAABAAAAAgAAAAFAAAAEgAAABEAAAARAAAABgAAAAQAAAAIAAAABQAAABIAAAASAAAAEQAAAAYAAAAEAAAACAAAAAUAAAASAAAAEgAAABEAAAAFAAAABAAAAAgAAAAGAAAAEgAAABMAAAARAAAABwAAAAQAAAAIAAAABgAAABIAAAASAAAAEgAAAAQAAAAEAAAAEAAAAAcAAAASAAAAEgAAABIAAAAEAAAAAwAAABAAAAAHAAAAEgAAABMAAAASAAAABgAAAAMAAAAgAAAABwAAABIAAAATAAAAEgAAAAgAAAADAAAAQAAAAAcAAAASAAAAEwAAABIAAAAJAAAAAwAAAIAAAAAHAAAAEgAAABMAAAASAAAACgAAAAMAAAAAAQAABwAAABIAAAATAAAAEgAAAAsAAAADAAAAAAIAAAgAAAASAAAAEwAAABIAAAAMAAAAAwAAAAACAAAIAAAAEgAAABMAAAASAAAADQAAAAMAAAAAAgAACAAAABEAAAAMAAAADAAAAAEAAAAFAAAAAQAAAAEAAAARAAAADAAAAA0AAAABAAAABgAAAAEAAAABAAAAEQAAAA0AAAAQAAAAAQAAAAUAAAABAAAAAQAAABEAAAAQAAAAEAAAAAIAAAAFAAAACAAAAAIAAAARAAAADQAAAA8AAAADAAAABAAAAAgAAAADAAAAEQAAAA8AAAARAAAABAAAAAQAAAAIAAAAAwAAABEAAAAQAAAAEQAAAAMAAAAEAAAACAAAAAQAAAARAAAADwAAABEAAAAEAAAABAAAAAgAAAAFAAAAEQAAABEAAAARAAAABAAAAAQAAAAIAAAABQAAABEAAAARAAAAEQAAAAUAAAAEAAAACAAAAAUAAAARAAAAEQAAABEAAAAGAAAABAAAAAgAAAAFAAAAEQAAABEAAAARAAAABwAAAAQAAAAIAAAABQAAABEAAAARAAAAEQAAAAgAAAAEAAAACAAAAAUAAAARAAAAEgAAABEAAAAGAAAABAAAAAgAAAAGAAAAEQAAABEAAAARAAAABwAAAAMAAAAIAAAABwAAABEAAAARAAAAEQAAAAcAAAADAAAAEAAAAAcAAAARAAAAEgAAABEAAAAHAAAAAwAAACAAAAAHAAAAEQAAABIAAAARAAAABwAAAAMAAABAAAAABwAAABEAAAASAAAAEQAAAAcAAAADAAAAAAEAAAcAAAARAAAAEgAAABEAAAAIAAAAAwAAAAABAAAHAAAAEQAAABIAAAARAAAACQAAAAMAAAAAAQAACAAAABEAAAASAAAAEQAAAAoAAAADAAAAAAEAAAgAAAARAAAAEgAAABEAAAALAAAAAwAAAAACAAAIAAAADgAAAAwAAAANAAAAAQAAAAUAAAABAAAAAQAAAA4AAAAOAAAADgAAAAEAAAAGAAAAAQAAAAEAAAAOAAAADgAAAA4AAAABAAAABAAAAAEAAAABAAAADgAAAA4AAAAOAAAAAQAAAAQAAAAGAAAAAgAAAA4AAAAOAAAADgAAAAQAAAAEAAAABgAAAAMAAAAOAAAADgAAAA4AAAADAAAABAAAAAYAAAAEAAAADgAAAA4AAAAOAAAABAAAAAQAAAAGAAAABQAAAA4AAAAOAAAADgAAAAUAAAAEAAAABgAAAAUAAAAOAAAADgAAAA4AAAAGAAAABAAAAAYAAAAFAAAADgAAAA8AAAAOAAAABgAAAAQAAAAGAAAABgAAAA4AAAAPAAAADgAAAAMAAAADAAAABgAAAAcAAAAOAAAADwAAAA4AAAAGAAAAAwAAAAgAAAAHAAAADgAAAA8AAAAOAAAABgAAAAMAAAAQAAAABwAAAA4AAAAPAAAADgAAAAYAAAADAAAAGAAAAAcAAAAOAAAADwAAAA8AAAAGAAAAAwAAADAAAAAHAAAADgAAAA8AAAAPAAAABgAAAAMAAABAAAAABwAAAA4AAAAPAAAADwAAAAYAAAADAAAAYAAAAAcAAAAOAAAADwAAAA8AAAAGAAAAAwAAAIAAAAAHAAAADgAAAA8AAAAPAAAABgAAAAMAAAAAAQAABwAAAA4AAAAPAAAADwAAAAcAAAADAAAAAAEAAAcAAAAOAAAADwAAAA8AAAAIAAAAAwAAAAABAAAIAAAADgAAAA8AAAAPAAAACQAAAAMAAAAAAQAACAAAAA4AAAAPAAAADwAAAAoAAAADAAAAAAEAAAgAAAAAAAAAAQAAAAMAAAAHAAAADwAAAB8AAAA/AAAAfwAAAP8AAAD/AQAA/wMAAP8HAAD/DwAA/x8AAP8/AAD/fwAA//8AAP//AQD//wMA//8HAP//DwD//x8A//8/AP//fwD///8A////Af///wP///8H////D////x////8/////fwEAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAAAAAAAAAAAAAAAECAwQFBgcICQoLDA0ODxAQERESEhMTFBQUFBUVFRUWFhYWFhYWFhcXFxcXFxcXGBgYGBgYGBgYGBgYGBgYGAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICAhISIiIyMkJCQkJSUlJSYmJiYmJiYmJycnJycnJycoKCgoKCgoKCgoKCgoKCgoKSkpKSkpKSkpKSkpKSkpKSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqBAADAAIAAgACAAIAAgACAAIAAgACAAIAAgABAAEAAQACAAIAAgACAAIAAgACAAIAAgADAAIAAQABAAEAAQABAP//////////AAAAAAAAAAABAAEAAQABAAEAAQACAAIAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQD/////////////AAAAAAAAAQAEAAMAAgACAAIAAgACAAIAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQD//////////////////wAAAAAAAAAAAAABAAAAAgAAAAQAAAAAAAAAAgAAAAQAAAAIAAAAAAAAAAEAAAACAAAACAAAAAEAAQEGAAAAAAAABAAAAAAQAAAEAAAAACAAAAUBAAAAAAAABQMAAAAAAAAFBAAAAAAAAAUGAAAAAAAABQcAAAAAAAAFCQAAAAAAAAUKAAAAAAAABQwAAAAAAAAGDgAAAAAAAQUQAAAA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AxAAAAMgAAADQAAAA4AAAAMAAQAAAAAAAAAAAAAAAAAEAAMAAgACAAIAAgACAAIAAgACAAIAAgACAAEAAQABAAIAAgACAAIAAgACAAIAAgACAAMAAgABAAEAAQABAAEA//////////8AAAAAAAAAAAEAAQABAAEAAQABAAIAAgACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP////////////8AAAAAAAABAAQAAwACAAIAAgACAAIAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP//////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAHAAAADwAAAB8AAAA/AAAAfwAAAP8AAAD/AQAA/wMAAP8HAAD/DwAA/x8AAP8/AAD/fwAA//8AAP//AQD//wMA//8HAP//DwD//x8A//8/AP//fwD///8A////Af///wMBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACIAAAAkAAAAJgAAACgAAAAsAAAAMAAAADgAAABAAAAAUAAAAGAAAACAAAAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAASAAAAFAAAABYAAAAYAAAAHAAAACAAAAAoAAAAMAAAAEAAAACAAAAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAAAAAEABAADAAIAAgACAAIAAgACAAIAAgACAAIAAgABAAEAAQACAAIAAgACAAIAAgACAAIAAgADAAIAAQABAAEAAQABAP//////////AAAAAAAAAAABAAEAAQABAAEAAQACAAIAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQD/////////////AAAAAAAAAQAEAAMAAgACAAIAAgACAAIAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQD//////////////////wAAAAAAAAgAAAAIAAAACAAAAAcAAAAIAAAACQAAAAoAAAALAAAAAAAAAAEAAAACAAAAAQAAAAQAAAAEAAAABAAAAAQAAAABAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQAAAAIBAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAAAAAAAQAAAAEAAAACAAAAAgAAACYAAACCAAAAIQUAAEoAAABnCAAAJgAAAMABAACAAAAASQUAAEoAAAC+CAAAKQAAACwCAACAAAAASQUAAEoAAAC+CAAALwAAAMoCAACAAAAAigUAAEoAAACECQAANQAAAHMDAACAAAAAnQUAAEoAAACgCQAAPQAAAIEDAACAAAAA6wUAAEsAAAA+CgAARAAAAJ4DAACAAAAATQYAAEsAAACqCgAASwAAALMDAACAAAAAwQYAAE0AAAAfDQAATQAAAFMEAACAAAAAIwgAAFEAAACmDwAAVAAAAJkEAACAAAAASwkAAFcAAACxEgAAWAAAANoEAACAAAAAbwkAAF0AAAAjFAAAVAAAAEUFAACAAAAAVAoAAGoAAACMFAAAagAAAK8FAACAAAAAdgkAAHwAAABOEAAAfAAAANICAACAAAAAYwcAAJEAAACQBwAAkgAAAAEAAAACAAAAAwAAAAQAAAAHAAAACAAAAA8AAAAQAAAAHwAAACAAAAA/AAAAQAAAAH8AAACAAAAAAAAAAAAAAAARAAoAERERAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABEADwoREREDCgcAARMJCwsAAAkGCwAACwAGEQAAABEREQAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA0AAAAEDQAAAAAJDgAAAAAADgAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAPAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAABISEgAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAoAAAAACgAAAAAJCwAAAAAACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAADAxMjM0NTY3ODlBQkNERUZUISIZDQECAxFLHAwQBAsdEh4naG5vcHFiIAUGDxMUFRoIFgcoJBcYCQoOGx8lI4OCfSYqKzw9Pj9DR0pNWFlaW1xdXl9gYWNkZWZnaWprbHJzdHl6e3wAAAAAAAAAAABJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgAAAAAAAHQxAAC1MwAAdDEAAFY0AACcMQAAyDMAAHgmAAAAAAAAdDEAAJg0AACcMQAA2zQAAHgmAAAAAAAAdDEAAGI1AACcMQAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCoAADIAAAAzAAAAHgAAAAEAAAAAAAAASCoAADQAAAA1AAAANgAAADcAAAAFAAAAAQAAAAEAAAABAAAAAAAAAHAqAAA0AAAAOAAAADYAAAA3AAAABQAAAAIAAAACAAAAAgAAAAAAAACgKgAANAAAADkAAAA2AAAANwAAAAYAAAAAAAAAkCoAADQAAAA6AAAANgAAADcAAAAHAAAAAAAAACArAAA0AAAAOwAAADYAAAA3AAAACAAAAAAAAAAwKwAANAAAADwAAAA2AAAANwAAAAUAAAADAAAAAwAAAAMAAABkdW1teQByYgBsZW5ndGgAYnVmZmVyAGNvbnN0cnVjdG9yAHNldABIRUFQVTgAVmVjdG9yVTgAY2xvbmVUb1ZlY3RvcgBjbG9uZUFzVHlwZWRBcnJheQB0b1R5cGVkQXJyYXlWaWV3AFpzdGRDb21wcmVzc2lvbkRpY3QAY3JlYXRlQ29tcHJlc3Npb25EaWN0AFpzdGREZWNvbXByZXNzaW9uRGljdABjcmVhdGVEZWNvbXByZXNzaW9uRGljdABac3RkQ29kZWMAY29tcHJlc3NCb3VuZABjb250ZW50U2l6ZQBjb21wcmVzcwBkZWNvbXByZXNzAGNvbXByZXNzVXNpbmdEaWN0AGRlY29tcHJlc3NVc2luZ0RpY3QAWnN0ZENvbXByZXNzU3RyZWFtQmluZGluZwBiZWdpbgBiZWdpblVzaW5nRGljdAB0cmFuc2Zvcm0AZmx1c2gAZW5kAFpzdGREZWNvbXByZXNzU3RyZWFtQmluZGluZwBOMTBlbXNjcmlwdGVuM3ZhbEUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJWk4yNVpzdGRDb21wcmVzc1N0cmVhbUJpbmRpbmc5VHJhbnNmb3JtRU4xMGVtc2NyaXB0ZW4zdmFsRVM0X0UzJF8wTlNfOWFsbG9jYXRvcklTNV9FRUZ2UktOU182dmVjdG9ySWhOUzZfSWhFRUVFRUVFAE5TdDNfXzIxMF9fZnVuY3Rpb242X19iYXNlSUZ2UktOU182dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFRUVFAFpOMjVac3RkQ29tcHJlc3NTdHJlYW1CaW5kaW5nOVRyYW5zZm9ybUVOMTBlbXNjcmlwdGVuM3ZhbEVTMV9FMyRfMABOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZzVGbHVzaEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfMU5TXzlhbGxvY2F0b3JJUzVfRUVGdlJLTlNfNnZlY3RvckloTlM2X0loRUVFRUVFRQBaTjI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZzVGbHVzaEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfMQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZzNFbmRFTjEwZW1zY3JpcHRlbjN2YWxFRTMkXzJOU185YWxsb2NhdG9ySVM1X0VFRnZSS05TXzZ2ZWN0b3JJaE5TNl9JaEVFRUVFRUUAWk4yNVpzdGRDb21wcmVzc1N0cmVhbUJpbmRpbmczRW5kRU4xMGVtc2NyaXB0ZW4zdmFsRUUzJF8yAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMjdac3RkRGVjb21wcmVzc1N0cmVhbUJpbmRpbmc5VHJhbnNmb3JtRU4xMGVtc2NyaXB0ZW4zdmFsRVM0X0UzJF8zTlNfOWFsbG9jYXRvcklTNV9FRUZ2UktOU182dmVjdG9ySWhOUzZfSWhFRUVFRUVFAFpOMjdac3RkRGVjb21wcmVzc1N0cmVhbUJpbmRpbmc5VHJhbnNmb3JtRU4xMGVtc2NyaXB0ZW4zdmFsRVMxX0UzJF8zAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMjdac3RkRGVjb21wcmVzc1N0cmVhbUJpbmRpbmc1Rmx1c2hFTjEwZW1zY3JpcHRlbjN2YWxFRTMkXzROU185YWxsb2NhdG9ySVM1X0VFRnZSS05TXzZ2ZWN0b3JJaE5TNl9JaEVFRUVFRUUAWk4yN1pzdGREZWNvbXByZXNzU3RyZWFtQmluZGluZzVGbHVzaEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfNABOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nM0VuZEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfNU5TXzlhbGxvY2F0b3JJUzVfRUVGdlJLTlNfNnZlY3RvckloTlM2X0loRUVFRUVFRQBaTjI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nM0VuZEVOMTBlbXNjcmlwdGVuM3ZhbEVFMyRfNQBwdXNoX2JhY2sAcmVzaXplAHNpemUAZ2V0AE5TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAE5TdDNfXzIxM19fdmVjdG9yX2Jhc2VJaE5TXzlhbGxvY2F0b3JJaEVFRUUATlN0M19fMjIwX192ZWN0b3JfYmFzZV9jb21tb25JTGIxRUVFAFBOU3QzX18yNnZlY3RvckloTlNfOWFsbG9jYXRvckloRUVFRQBQS05TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAGlpAHYAdmkAdmlpaQB2aWlpaQBpaWkAaWlpaQBpaWlpaQAxOVpzdGRDb21wcmVzc2lvbkRpY3QAOFJlc291cmNlSTEyWlNURF9DRGljdF9zRQBQMTlac3RkQ29tcHJlc3Npb25EaWN0AFBLMTlac3RkQ29tcHJlc3Npb25EaWN0ADIxWnN0ZERlY29tcHJlc3Npb25EaWN0ADhSZXNvdXJjZUkxMlpTVERfRERpY3Rfc0UAUDIxWnN0ZERlY29tcHJlc3Npb25EaWN0AFBLMjFac3RkRGVjb21wcmVzc2lvbkRpY3QAOVpzdGRDb2RlYwBQOVpzdGRDb2RlYwBQSzlac3RkQ29kZWMAaWlpaWlpADI1WnN0ZENvbXByZXNzU3RyZWFtQmluZGluZwBQMjVac3RkQ29tcHJlc3NTdHJlYW1CaW5kaW5nAFBLMjVac3RkQ29tcHJlc3NTdHJlYW1CaW5kaW5nADI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nAFAyN1pzdGREZWNvbXByZXNzU3RyZWFtQmluZGluZwBQSzI3WnN0ZERlY29tcHJlc3NTdHJlYW1CaW5kaW5nAFBGdlAxMVpTVERfQ0N0eF9zRQBGdlAxMVpTVERfQ0N0eF9zRQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0lQRnZQMTFaU1REX0NDdHhfc0VOU185YWxsb2NhdG9ySVM1X0VFUzRfRUUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Jhc2VJRnZQMTFaU1REX0NDdHhfc0VFRQBQRnZQMTFaU1REX0RDdHhfc0UARnZQMTFaU1REX0RDdHhfc0UATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJUEZ2UDExWlNURF9EQ3R4X3NFTlNfOWFsbG9jYXRvcklTNV9FRVM0X0VFAE5TdDNfXzIxMF9fZnVuY3Rpb242X19iYXNlSUZ2UDExWlNURF9EQ3R4X3NFRUUAUEZ2UDEyWlNURF9DRGljdF9zRQBGdlAxMlpTVERfQ0RpY3Rfc0UATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJUEZ2UDEyWlNURF9DRGljdF9zRU5TXzlhbGxvY2F0b3JJUzVfRUVTNF9FRQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fYmFzZUlGdlAxMlpTVERfQ0RpY3Rfc0VFRQBQRnZQMTJaU1REX0REaWN0X3NFAEZ2UDEyWlNURF9ERGljdF9zRQBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0lQRnZQMTJaU1REX0REaWN0X3NFTlNfOWFsbG9jYXRvcklTNV9FRVM0X0VFAE5TdDNfXzIxMF9fZnVuY3Rpb242X19iYXNlSUZ2UDEyWlNURF9ERGljdF9zRUVFAFpOMThac3RkQ29tcHJlc3NTdHJlYW01QmVnaW5FaUUzJF8wAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMThac3RkQ29tcHJlc3NTdHJlYW01QmVnaW5FaUUzJF8wTlNfOWFsbG9jYXRvcklTM19FRUZtUDExWlNURF9DQ3R4X3NFRUUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Jhc2VJRm1QMTFaU1REX0NDdHhfc0VFRQBaTjE4WnN0ZENvbXByZXNzU3RyZWFtNUJlZ2luRVJLMTlac3RkQ29tcHJlc3Npb25EaWN0RTMkXzEATlN0M19fMjEwX19mdW5jdGlvbjZfX2Z1bmNJWk4xOFpzdGRDb21wcmVzc1N0cmVhbTVCZWdpbkVSSzE5WnN0ZENvbXByZXNzaW9uRGljdEUzJF8xTlNfOWFsbG9jYXRvcklTNl9FRUZtUDExWlNURF9DQ3R4X3NFRUUAWk4yMFpzdGREZWNvbXByZXNzU3RyZWFtNUJlZ2luRXZFMyRfMgBOU3QzX18yMTBfX2Z1bmN0aW9uNl9fZnVuY0laTjIwWnN0ZERlY29tcHJlc3NTdHJlYW01QmVnaW5FdkUzJF8yTlNfOWFsbG9jYXRvcklTM19FRUZtUDExWlNURF9EQ3R4X3NFRUUATlN0M19fMjEwX19mdW5jdGlvbjZfX2Jhc2VJRm1QMTFaU1REX0RDdHhfc0VFRQBaTjIwWnN0ZERlY29tcHJlc3NTdHJlYW01QmVnaW5FUksyMVpzdGREZWNvbXByZXNzaW9uRGljdEUzJF8zAE5TdDNfXzIxMF9fZnVuY3Rpb242X19mdW5jSVpOMjBac3RkRGVjb21wcmVzc1N0cmVhbTVCZWdpbkVSSzIxWnN0ZERlY29tcHJlc3Npb25EaWN0RTMkXzNOU185YWxsb2NhdG9ySVM2X0VFRm1QMTFaU1REX0RDdHhfc0VFRQBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBzdGQ6OndzdHJpbmcAZW1zY3JpcHRlbjo6dmFsAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZmxvYXQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZyBkb3VibGU+AE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWVFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lkRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZkVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SW1FRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJakVFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWlFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJc0VFAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWhFRQBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFAE5TdDNfXzIyMV9fYmFzaWNfc3RyaW5nX2NvbW1vbklMYjFFRUUATlN0M19fMjEyYmFzaWNfc3RyaW5nSWhOU18xMWNoYXJfdHJhaXRzSWhFRU5TXzlhbGxvY2F0b3JJaEVFRUUATlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUALSsgICAwWDB4AChudWxsKQAtMFgrMFggMFgtMHgrMHggMHgAaW5mAElORgBuYW4ATkFOAHJ3YQBzdGQ6OmJhZF9mdW5jdGlvbl9jYWxsAE5TdDNfXzIxN2JhZF9mdW5jdGlvbl9jYWxsRQB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzOiAlcwB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzAHRlcm1pbmF0aW5nIHdpdGggJXMgZm9yZWlnbiBleGNlcHRpb24AdGVybWluYXRpbmcAdW5jYXVnaHQAU3Q5ZXhjZXB0aW9uAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAFN0OXR5cGVfaW5mbwBOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAHB0aHJlYWRfb25jZSBmYWlsdXJlIGluIF9fY3hhX2dldF9nbG9iYWxzX2Zhc3QoKQBjYW5ub3QgY3JlYXRlIHB0aHJlYWQga2V5IGZvciBfX2N4YV9nZXRfZ2xvYmFscygpAGNhbm5vdCB6ZXJvIG91dCB0aHJlYWQgdmFsdWUgZm9yIF9fY3hhX2dldF9nbG9iYWxzKCkAdGVybWluYXRlX2hhbmRsZXIgdW5leHBlY3RlZGx5IHJldHVybmVkAE4xMF9fY3h4YWJpdjExOV9fcG9pbnRlcl90eXBlX2luZm9FAE4xMF9fY3h4YWJpdjExN19fcGJhc2VfdHlwZV9pbmZvRQBOMTBfX2N4eGFiaXYxMjNfX2Z1bmRhbWVudGFsX3R5cGVfaW5mb0UAdgBEbgBiAGMAaABhAHMAdABpAGoAbQBmAGQATjEwX19jeHhhYml2MTIwX19mdW5jdGlvbl90eXBlX2luZm9FAE4xMF9fY3h4YWJpdjEyMV9fdm1pX2NsYXNzX3R5cGVfaW5mb0UAIGNvbnN0ACB2b2xhdGlsZQAgcmVzdHJpY3QAIGNvbXBsZXgAIGltYWdpbmFyeQAgWwAgKAApACgAJiYAb2JqY19vYmplY3Q8ACoAJgBvYmpjcHJvdG8AIAA8AD4AIHZlY3RvclsAXQBwaXhlbCB2ZWN0b3JbACY9AD0ALAB+ADo6AGRlbGV0ZVtdIABkZWxldGUgAC8ALz0AXgBePQA9PQA+PQApWwA8PQA8PAA8PD0ALQAtPQAqPQAtLQApLS0AIT0AIQB8fAB8AHw9AC0+KgArACs9ACsrACkrKwApID8gKAApIDogKAAlACU9AD4+AD4+PQB0aHJvdwB0aHJvdyAAdHlwZWlkKABzaXplb2YuLi4oACwgAHNpemVvZiAoAHN0YXRpY19jYXN0PAA+KAByZWludGVycHJldF9jYXN0PAAtPgBub2V4Y2VwdCAoAFtdIAApIAAuAC4qAHN0ZDo6AG9wZXJhdG9yJiYAb3BlcmF0b3ImAG9wZXJhdG9yJj0Ab3BlcmF0b3I9AG9wZXJhdG9yKCkAb3BlcmF0b3IsAG9wZXJhdG9yfgBvcGVyYXRvciAAb3BlcmF0b3IgZGVsZXRlW10Ab3BlcmF0b3IqAG9wZXJhdG9yLwBvcGVyYXRvci89AG9wZXJhdG9yXgBvcGVyYXRvcl49AG9wZXJhdG9yPT0Ab3BlcmF0b3I+PQBvcGVyYXRvcj4Ab3BlcmF0b3JbXQBvcGVyYXRvcjw9AG9wZXJhdG9yIiIgAG9wZXJhdG9yPDwAb3BlcmF0b3I8PD0Ab3BlcmF0b3I8AG9wZXJhdG9yLQBvcGVyYXRvci09AG9wZXJhdG9yKj0Ab3BlcmF0b3ItLQBvcGVyYXRvciBuZXdbXQBvcGVyYXRvciE9AG9wZXJhdG9yIQBvcGVyYXRvciBuZXcAb3BlcmF0b3J8fABvcGVyYXRvcnwAb3BlcmF0b3J8PQBvcGVyYXRvci0+KgBvcGVyYXRvcisAb3BlcmF0b3IrPQBvcGVyYXRvcisrAG9wZXJhdG9yLT4Ab3BlcmF0b3I/AG9wZXJhdG9yJQBvcGVyYXRvciU9AG9wZXJhdG9yPj4Ab3BlcmF0b3I+Pj0Ab3BlcmF0b3IgZGVsZXRlACd1bm5hbWVkACdsYW1iZGEnKABzdGQ6OnN0cmluZwBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+AGJhc2ljX3N0cmluZwBzdGQ6OmlzdHJlYW0Ac3RkOjpiYXNpY19pc3RyZWFtPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4gPgBiYXNpY19pc3RyZWFtAHN0ZDo6b3N0cmVhbQBzdGQ6OmJhc2ljX29zdHJlYW08Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiA+AGJhc2ljX29zdHJlYW0Ac3RkOjppb3N0cmVhbQBzdGQ6OmJhc2ljX2lvc3RyZWFtPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4gPgBiYXNpY19pb3N0cmVhbQBkeW5hbWljX2Nhc3Q8ACkoAGNvbnN0X2Nhc3Q8AGFsaWdub2YgKABmcAB3Y2hhcl90AGZhbHNlAHRydWUAY2hhcgBzaWduZWQgY2hhcgB1bnNpZ25lZCBjaGFyAHNob3J0AHVuc2lnbmVkIHNob3J0AHUAbAB1bABsbAB1bGwAX19pbnQxMjgAdW5zaWduZWQgX19pbnQxMjgAJUxhTAAlYQAlYWYAZGVjbHR5cGUoAHN0ZDo6YWxsb2NhdG9yAHN0ZDo6YmFzaWNfc3RyaW5nADo6c3RyaW5nIGxpdGVyYWwAc3RkAF9HTE9CQUxfX04AKGFub255bW91cyBuYW1lc3BhY2UpACA+AFRfAGlkADo6KgAgJgAgJiYAIFtdAHZvaWQAYm9vbABpbnQAdW5zaWduZWQgaW50AGxvbmcAdW5zaWduZWQgbG9uZwBsb25nIGxvbmcAZmxvYXQAbG9uZyBkb3VibGUAX19mbG9hdDEyOAAuLi4AZGVjaW1hbDY0AGRlY2ltYWwxMjgAZGVjaW1hbDMyAGRlY2ltYWwxNgBjaGFyMzJfdABjaGFyMTZfdABhdXRvAHN0ZDo6bnVsbHB0cl90AGRvdWJsZQB1bnNpZ25lZCBsb25nIGxvbmcAX2Jsb2NrX2ludm9rZQBpbnZvY2F0aW9uIGZ1bmN0aW9uIGZvciBibG9jayBpbiAAdnRhYmxlIGZvciAAVlRUIGZvciAAdHlwZWluZm8gZm9yIAB0eXBlaW5mbyBuYW1lIGZvciAAY292YXJpYW50IHJldHVybiB0aHVuayB0byAAY29uc3RydWN0aW9uIHZ0YWJsZSBmb3IgAC1pbi0AdmlydHVhbCB0aHVuayB0byAAbm9uLXZpcnR1YWwgdGh1bmsgdG8gAGd1YXJkIHZhcmlhYmxlIGZvciAAcmVmZXJlbmNlIHRlbXBvcmFyeSBmb3Ig";var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___cxa_allocate_exception(size){return _malloc(size);}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception;}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:function deAdjust(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var key in EXCEPTIONS.infos){var ptr=+key;var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr;}}return adjusted;},addRef:function addRef(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++;},decRef:function decRef(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module["dynCall_vi"](info.destructor,ptr);}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr);}},clearRef:function clearRef(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0;}};function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--;}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr;}function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr;}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(setTempRet0(0),0)|0;}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(setTempRet0(0),thrown)|0;}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i<typeArray.length;i++){if(typeArray[i]&&Module["___cxa_can_catch"](typeArray[i],throwntype,thrown)){thrown=HEAP32[thrown>>2];info.adjusted=thrown;return(setTempRet0(typeArray[i]),thrown)|0;}}thrown=HEAP32[thrown>>2];return(setTempRet0(throwntype),thrown)|0;}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1;}else{__ZSt18uncaught_exceptionv.uncaught_exception++;}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";}function ___gxx_personality_v0(){}function ___lock(){}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value;}var PATH={splitPath:function splitPath(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1);},normalizeArray:function 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:function normalize(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p;}),!isAbsolute).join("/");if(!path&&!isAbsolute){path=".";}if(path&&trailingSlash){path+="/";}return(isAbsolute?"/":"")+path;},dirname:function 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:function basename(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1);},extname:function extname(path){return PATH.splitPath(path)[3];},join:function join(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"));},join2:function join2(l,r){return PATH.normalize(l+"/"+r);},resolve:function resolve(){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.charAt(0)==="/";}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p;}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||".";},relative:function relative(from,to){from=PATH.resolve(from).substr(1);to=PATH.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 TTY={ttys:[],init:function init(){},shutdown:function shutdown(){},register:function register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops);},stream_ops:{open:function open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}stream.tty=tty;stream.seekable=false;},close:function close(stream){stream.tty.ops.flush(stream.tty);},flush:function flush(stream){stream.tty.ops.flush(stream.tty);},read:function read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO);}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(ERRNO_CODES.EIO);}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result;}if(bytesRead){stream.node.timestamp=Date.now();}return bytesRead;},write:function write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO);}for(var i=0;i<length;i++){try{stream.tty.ops.put_char(stream.tty,buffer[offset+i]);}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO);}}if(length){stream.node.timestamp=Date.now();}return i;}},default_tty_ops:{get_char:function get_char(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=new Buffer(BUFSIZE);var bytesRead=0;var isPosixPlatform=process.platform!="win32";var fd=process.stdin.fd;if(isPosixPlatform){var usingDevice=false;try{fd=fs.openSync("/dev/stdin","r");usingDevice=true;}catch(e){}}try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE,null);}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e;}if(usingDevice){fs.closeSync(fd);}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8");}else{result=null;}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n";}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n";}}if(!result){return null;}tty.input=intArrayFromString(result,true);}return tty.input.shift();},put_char:function put_char(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[];}else{if(val!=0)tty.output.push(val);}},flush:function flush(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[];}}},default_tty1_ops:{put_char:function put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[];}else{if(val!=0)tty.output.push(val);}},flush:function flush(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[];}}}};var MEMFS={ops_table:null,mount:function mount(_mount){return MEMFS.createNode(null,"/",16384|511,0);},createNode:function createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={};}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null;}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream;}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream;}node.timestamp=Date.now();if(parent){parent.contents[name]=node;}return node;},getFileDataAsRegularArray:function getFileDataAsRegularArray(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i<node.usedBytes;++i){arr.push(node.contents[i]);}return arr;}return node.contents;},getFileDataAsTypedArray:function getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array();if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents);},expandFileStorage:function expandFileStorage(node,newCapacity){if(node.contents&&node.contents.subarray&&newCapacity>node.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length;}if(!node.contents||node.contents.subarray){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);return;}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.length<newCapacity){node.contents.push(0);}},resizeFileStorage:function resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return;}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)));}node.usedBytes=newSize;return;}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize){node.contents.push(0);}node.usedBytes=newSize;},node_ops:{getattr:function 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:function 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:function lookup(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT];},mknod:function mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev);},rename:function 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(ERRNO_CODES.ENOTEMPTY);}}}delete old_node.parent.contents[old_node.name];old_node.name=new_name;new_dir.contents[new_name]=old_node;old_node.parent=new_dir;},unlink:function unlink(parent,name){delete parent.contents[name];},rmdir:function rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);}delete parent.contents[name];},readdir:function readdir(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue;}entries.push(key);}return entries;},symlink:function symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node;},readlink:function readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return node.link;}},stream_ops:{read:function 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:function write(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length;}else if(node.usedBytes===0&&position===0){node.contents=new Uint8Array(buffer.subarray(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:function 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(ERRNO_CODES.EINVAL);}return position;},allocate:function allocate(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length);},mmap:function mmap(stream,buffer,offset,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&(contents.buffer===buffer||contents.buffer===buffer.buffer)){allocated=false;ptr=contents.byteOffset;}else{if(position>0||position+length<stream.node.usedBytes){if(contents.subarray){contents=contents.subarray(position,position+length);}else{contents=Array.prototype.slice.call(contents,position,position+length);}}allocated=true;ptr=_malloc(length);if(!ptr){throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);}buffer.set(contents,ptr);}return{ptr:ptr,allocated:allocated};},msync:function msync(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}if(mmapFlags&2){return 0;}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0;}}};var IDBFS={dbs:{},indexedDB:function(_indexedDB){function indexedDB(){return _indexedDB.apply(this,arguments);}indexedDB.toString=function(){return _indexedDB.toString();};return indexedDB;}(function(){if(typeof indexedDB!=="undefined")return indexedDB;var ret=null;if((typeof window==='undefined'?'undefined':_typeof(window))==="object")ret=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;assert(ret,"IDBFS used, but indexedDB not supported");return ret;}),DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function mount(_mount2){return MEMFS.mount.apply(null,arguments);},syncfs:function syncfs(mount,populate,callback){IDBFS.getLocalSet(mount,function(err,local){if(err)return callback(err);IDBFS.getRemoteSet(mount,function(err,remote){if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback);});});},getDB:function getDB(name,callback){var db=IDBFS.dbs[name];if(db){return callback(null,db);}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION);}catch(e){return callback(e);}if(!req){return callback("Unable to connect to IndexedDB");}req.onupgradeneeded=function(e){var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME);}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME);}if(!fileStore.indexNames.contains("timestamp")){fileStore.createIndex("timestamp","timestamp",{unique:false});}};req.onsuccess=function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db);};req.onerror=function(e){callback(this.error);e.preventDefault();};},getLocalSet:function getLocalSet(mount,callback){var entries={};function isRealDir(p){return p!=="."&&p!=="..";}function toAbsolute(root){return function(p){return PATH.join2(root,p);};}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path);}catch(e){return callback(e);}if(FS.isDir(stat.mode)){check.push.apply(check,FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));}entries[path]={timestamp:stat.mtime};}return callback(null,{type:"local",entries:entries});},getRemoteSet:function getRemoteSet(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,function(err,db){if(err)return callback(err);try{var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readonly");transaction.onerror=function(e){callback(this.error);e.preventDefault();};var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index("timestamp");index.openKeyCursor().onsuccess=function(event){var cursor=event.target.result;if(!cursor){return callback(null,{type:"remote",db:db,entries:entries});}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue();};}catch(e){return callback(e);}});},loadLocalEntry:function loadLocalEntry(path,callback){var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path);}catch(e){return callback(e);}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode});}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents});}else{return callback(new Error("node type not supported"));}},storeLocalEntry:function storeLocalEntry(path,entry,callback){try{if(FS.isDir(entry.mode)){FS.mkdir(path,entry.mode);}else if(FS.isFile(entry.mode)){FS.writeFile(path,entry.contents,{canOwn:true});}else{return callback(new Error("node type not supported"));}FS.chmod(path,entry.mode);FS.utime(path,entry.timestamp,entry.timestamp);}catch(e){return callback(e);}callback(null);},removeLocalEntry:function removeLocalEntry(path,callback){try{var lookup=FS.lookupPath(path);var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path);}else if(FS.isFile(stat.mode)){FS.unlink(path);}}catch(e){return callback(e);}callback(null);},loadRemoteEntry:function loadRemoteEntry(store,path,callback){var req=store.get(path);req.onsuccess=function(event){callback(null,event.target.result);};req.onerror=function(e){callback(this.error);e.preventDefault();};},storeRemoteEntry:function storeRemoteEntry(store,path,entry,callback){var req=store.put(entry,path);req.onsuccess=function(){callback(null);};req.onerror=function(e){callback(this.error);e.preventDefault();};},removeRemoteEntry:function removeRemoteEntry(store,path,callback){var req=store.delete(path);req.onsuccess=function(){callback(null);};req.onerror=function(e){callback(this.error);e.preventDefault();};},reconcile:function reconcile(src,dst,callback){var total=0;var create=[];Object.keys(src.entries).forEach(function(key){var e=src.entries[key];var e2=dst.entries[key];if(!e2||e.timestamp>e2.timestamp){create.push(key);total++;}});var remove=[];Object.keys(dst.entries).forEach(function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++;}});if(!total){return callback(null);}var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err);}return;}if(++completed>=total){return callback(null);}}transaction.onerror=function(e){done(this.error);e.preventDefault();};create.sort().forEach(function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done);});}else{IDBFS.loadLocalEntry(path,function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done);});}});remove.sort().reverse().forEach(function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done);}else{IDBFS.removeRemoteEntry(store,path,done);}});}};var NODEFS={isWindows:false,staticInit:function staticInit(){NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process["binding"]("constants");if(flags["fs"]){flags=flags["fs"];}NODEFS.flagsForNodeMap={"1024":flags["O_APPEND"],"64":flags["O_CREAT"],"128":flags["O_EXCL"],"0":flags["O_RDONLY"],"2":flags["O_RDWR"],"4096":flags["O_SYNC"],"512":flags["O_TRUNC"],"1":flags["O_WRONLY"]};},bufferFrom:function bufferFrom(arrayBuffer){return Buffer.alloc?Buffer.from(arrayBuffer):new Buffer(arrayBuffer);},mount:function mount(_mount3){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(_mount3.opts.root),0);},createNode:function createNode(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node;},getMode:function getMode(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2;}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}return stat.mode;},realPath:function realPath(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent;}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts);},flagsForNode:function flagsForNode(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k;}}if(!flags){return newFlags;}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}},node_ops:{getattr:function getattr(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096;}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0;}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks};},setattr:function setattr(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode;}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date);}if(attr.size!==undefined){fs.truncateSync(path,attr.size);}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},lookup:function lookup(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode);},mknod:function mknod(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode);}else{fs.writeFileSync(path,"",{mode:node.mode});}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}return node;},rename:function rename(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},unlink:function unlink(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},rmdir:function rmdir(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},readdir:function readdir(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},symlink:function symlink(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath);}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},readlink:function readlink(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path;}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}}},stream_ops:{open:function open(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags));}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},close:function close(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd);}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},read:function read(stream,buffer,offset,length,position){if(length===0)return 0;try{return fs.readSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position);}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},write:function write(stream,buffer,offset,length,position){try{return fs.writeSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position);}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},llseek:function llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position;}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size;}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return position;}}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function mount(_mount4){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync();var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i<parts.length-1;i++){var curr=parts.slice(0,i+1).join("/");if(!createdParents[curr]){createdParents[curr]=WORKERFS.createNode(parent,parts[i],WORKERFS.DIR_MODE,0);}parent=createdParents[curr];}return parent;}function base(path){var parts=path.split("/");return parts[parts.length-1];}Array.prototype.forEach.call(_mount4.opts["files"]||[],function(file){WORKERFS.createNode(ensureParent(file.name),base(file.name),WORKERFS.FILE_MODE,0,file,file.lastModifiedDate);});(_mount4.opts["blobs"]||[]).forEach(function(obj){WORKERFS.createNode(ensureParent(obj["name"]),base(obj["name"]),WORKERFS.FILE_MODE,0,obj["data"]);});(_mount4.opts["packages"]||[]).forEach(function(pack){pack["metadata"].files.forEach(function(file){var name=file.filename.substr(1);WORKERFS.createNode(ensureParent(name),base(name),WORKERFS.FILE_MODE,0,pack["blob"].slice(file.start,file.end));});});return root;},createNode:function createNode(parent,name,mode,dev,contents,mtime){var node=FS.createNode(parent,name,mode);node.mode=mode;node.node_ops=WORKERFS.node_ops;node.stream_ops=WORKERFS.stream_ops;node.timestamp=(mtime||new Date()).getTime();assert(WORKERFS.FILE_MODE!==WORKERFS.DIR_MODE);if(mode===WORKERFS.FILE_MODE){node.size=contents.size;node.contents=contents;}else{node.size=4096;node.contents={};}if(parent){parent.contents[name]=node;}return node;},node_ops:{getattr:function getattr(node){return{dev:1,ino:undefined,mode:node.mode,nlink:1,uid:0,gid:0,rdev:undefined,size:node.size,atime:new Date(node.timestamp),mtime:new Date(node.timestamp),ctime:new Date(node.timestamp),blksize:4096,blocks:Math.ceil(node.size/4096)};},setattr:function setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode;}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp;}},lookup:function lookup(parent,name){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);},mknod:function mknod(parent,name,mode,dev){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},rename:function rename(oldNode,newDir,newName){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},unlink:function unlink(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},rmdir:function rmdir(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},readdir:function readdir(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue;}entries.push(key);}return entries;},symlink:function symlink(parent,newName,oldPath){throw new FS.ErrnoError(ERRNO_CODES.EPERM);},readlink:function readlink(node){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}},stream_ops:{read:function read(stream,buffer,offset,length,position){if(position>=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size;},write:function write(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO);},llseek:function 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.size;}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return position;}}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function handleFSError(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno);},lookupPath:function lookupPath(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key];}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP);}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p;}),false);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.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP);}}}}return{path:current_path,node:current};},getPath:function 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:function 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:function hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node;},hashRemoveNode:function 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:function lookupNode(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,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:function createNode(parent,name,mode,rdev){if(!FS.FSNode){FS.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;};FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:function get(){return(this.mode&readMode)===readMode;},set:function set(val){val?this.mode|=readMode:this.mode&=~readMode;}},write:{get:function get(){return(this.mode&writeMode)===writeMode;},set:function set(val){val?this.mode|=writeMode:this.mode&=~writeMode;}},isFolder:{get:function get(){return FS.isDir(this.mode);}},isDevice:{get:function get(){return FS.isChrdev(this.mode);}}});}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node;},destroyNode:function destroyNode(node){FS.hashRemoveNode(node);},isRoot:function isRoot(node){return node===node.parent;},isMountpoint:function isMountpoint(node){return!!node.mounted;},isFile:function isFile(mode){return(mode&61440)===32768;},isDir:function isDir(mode){return(mode&61440)===16384;},isLink:function isLink(mode){return(mode&61440)===40960;},isChrdev:function isChrdev(mode){return(mode&61440)===8192;},isBlkdev:function isBlkdev(mode){return(mode&61440)===24576;},isFIFO:function isFIFO(mode){return(mode&61440)===4096;},isSocket:function isSocket(mode){return(mode&49152)===49152;},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function modeStringToFlags(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str);}return flags;},flagsToPermissionString:function flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w";}return perms;},nodePermissions:function nodePermissions(node,perms){if(FS.ignorePermissions){return 0;}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES;}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES;}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES;}return 0;},mayLookup:function mayLookup(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0;},mayCreate:function mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST;}catch(e){}return FS.nodePermissions(dir,"wx");},mayDelete:function mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name);}catch(e){return e.errno;}var err=FS.nodePermissions(dir,"wx");if(err){return err;}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR;}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY;}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR;}}return 0;},mayOpen:function mayOpen(node,flags){if(!node){return ERRNO_CODES.ENOENT;}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP;}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return ERRNO_CODES.EISDIR;}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags));},MAX_OPEN_FDS:4096,nextfd:function nextfd(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd;}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE);},getStream:function getStream(fd){return FS.streams[fd];},createStream:function createStream(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function get(){return this.node;},set:function set(val){this.node=val;}},isRead:{get:function get(){return(this.flags&2097155)!==1;}},isWrite:{get:function get(){return(this.flags&2097155)!==0;}},isAppend:{get:function get(){return this.flags&1024;}}});}var newStream=new FS.FSStream();for(var p in stream){newStream[p]=stream[p];}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream;},closeStream:function closeStream(fd){FS.streams[fd]=null;},chrdev_stream_ops:{open:function open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream);}},llseek:function llseek(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}},major:function major(dev){return dev>>8;},minor:function minor(dev){return dev&255;},makedev:function makedev(ma,mi){return ma<<8|mi;},registerDevice:function registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops};},getDevice:function getDevice(dev){return FS.devices[dev];},getMounts:function 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:function syncfs(populate,callback){if(typeof populate==="function"){callback=populate;populate=false;}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("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(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err);}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err);}return;}if(++completed>=mounts.length){doCallback(null);}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null);}mount.type.syncfs(mount,populate,done);});},mount:function mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}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(ERRNO_CODES.EBUSY);}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}}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:function unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){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:function lookup(parent,name){return parent.node_ops.lookup(parent,name);},mknod:function 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(ERRNO_CODES.EINVAL);}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}return parent.node_ops.mknod(parent,name,mode,dev);},create:function create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0);},mkdir:function mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0);},mkdirTree:function 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!=ERRNO_CODES.EEXIST)throw e;}}},mkdev:function mkdev(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438;}mode|=8192;return FS.mknod(path,mode,dev);},symlink:function symlink(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}return parent.node_ops.symlink(parent,newname,oldpath);},rename:function 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;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV);}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);}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 err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err);}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err);}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err);}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path);}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message);}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);}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path);}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message);}},rmdir:function 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 err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path);}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message);}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path);}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message);}},readdir:function readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}return node.node_ops.readdir(node);},unlink:function unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){throw new FS.ErrnoError(err);}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY);}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path);}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message);}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path);}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message);}},readlink:function readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link));},stat:function stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM);}return node.node_ops.getattr(node);},lstat:function lstat(path){return FS.stat(path,true);},chmod:function 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(ERRNO_CODES.EPERM);}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()});},lchmod:function lchmod(path,mode){FS.chmod(path,mode,true);},fchmod:function fchmod(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}FS.chmod(stream.node,mode);},chown:function 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(ERRNO_CODES.EPERM);}node.node_ops.setattr(node,{timestamp:Date.now()});},lchown:function lchown(path,uid,gid){FS.chown(path,uid,gid,true);},fchown:function fchown(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}FS.chown(stream.node,uid,gid);},truncate:function truncate(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}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(ERRNO_CODES.EPERM);}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR);}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err);}node.node_ops.setattr(node,{size:len,timestamp:Date.now()});},ftruncate:function ftruncate(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}FS.truncate(stream.node,len);},utime:function 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:function open(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}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==='undefined'?'undefined':_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(ERRNO_CODES.EEXIST);}}else{node=FS.mknod(path,mode,0);created=true;}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(FS.isChrdev(node.mode)){flags&=~512;}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err);}}if(flags&512){FS.truncate(node,0);}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);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;err("read file: "+path);}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ;}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE;}FS.trackingDelegate["onOpenFile"](path,trackingFlags);}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message);}return stream;},close:function close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}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:function isClosed(stream){return stream.fd===null;},llseek:function llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position;},read:function read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR);}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position;}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead;},write:function write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR);}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if(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(ERRNO_CODES.ESPIPE);}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path);}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message);}return bytesWritten;},allocate:function allocate(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF);}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);}stream.stream_ops.allocate(stream,offset,length);},mmap:function mmap(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES);}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV);}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags);},msync:function msync(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0;}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags);},munmap:function munmap(stream){return 0;},ioctl:function ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);}return stream.stream_ops.ioctl(stream,cmd,arg);},readFile:function readFile(path,opts){opts=opts||{};opts.flags=opts.flags||"r";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:function writeFile(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";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:function cwd(){return FS.currentPath;},chdir:function chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(ERRNO_CODES.ENOENT);}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err);}FS.currentPath=lookup.path;},createDefaultDirectories:function createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user");},createDefaultDevices:function createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function read(){return 0;},write:function write(stream,buffer,offset,length,pos){return length;}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=function random_device(){crypto.getRandomValues(randomBuffer);return randomBuffer[0];};}else if(ENVIRONMENT_IS_NODE){random_device=function random_device(){return require("crypto")["randomBytes"](1)[0];};}else{random_device=function random_device(){return Math.random()*256|0;};}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp");},createSpecialDirectories:function createSpecialDirectories(){FS.mkdir("/proc");FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function mount(){var node=FS.createNode("/proc/self","fd",16384|511,73);node.node_ops={lookup:function lookup(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function readlink(){return stream.path;}}};ret.parent=ret;return ret;}};return node;}},{},"/proc/self/fd");},createStandardStreams:function 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","r");assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")");},ensureErrnoError:function ensureErrnoError(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){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});};FS.ErrnoError.prototype=new Error();FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>";});},staticInit:function staticInit(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"IDBFS":IDBFS,"NODEFS":NODEFS,"WORKERFS":WORKERFS};},init:function 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:function quit(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue;}FS.close(stream);}},getMode:function getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode;},joinPath:function joinPath(parts,forceRelative){var path=PATH.join.apply(null,parts);if(forceRelative&&path[0]=="/")path=path.substr(1);return path;},absolutePath:function absolutePath(relative,base){return PATH.resolve(base,relative);},standardizePath:function standardizePath(path){return PATH.normalize(path);},findObject:function findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object;}else{___setErrNo(ret.error);return null;}},analyzePath:function 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;},createFolder:function createFolder(parent,name,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.mkdir(path,mode);},createPath:function 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:function 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:function createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(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,"w");FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode);}return node;},createDevice:function 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:function open(stream){stream.seekable=false;},close:function close(stream){if(output&&output.buffer&&output.buffer.length){output(10);}},read:function 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(ERRNO_CODES.EIO);}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result;}if(bytesRead){stream.node.timestamp=Date.now();}return bytesRead;},write:function write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i]);}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO);}}if(length){stream.node.timestamp=Date.now();}return i;}});return FS.mkdev(path,mode,dev);},createLink:function createLink(parent,name,target,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);return FS.symlink(target,path);},forceLoadFile:function forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;var success=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(Module["read"]){try{obj.contents=intArrayFromString(Module["read"](obj.url),true);obj.usedBytes=obj.contents.length;}catch(e){success=false;}}else{throw new Error("Cannot load without read() or XMLHttpRequest.");}if(!success)___setErrNo(ERRNO_CODES.EIO);return success;},createLazyFile:function 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=function 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);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined");}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[]);}else{return intArrayFromString(xhr.responseText||"",true);}};var lazyArray=this;lazyArray.setDataGetter(function(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;console.log("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 get(){if(!this.lengthKnown){this.cacheLength();}return this._length;}},chunkSize:{get:function get(){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 get(){return this.contents.length;}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO);}return fn.apply(null,arguments);};});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO);}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;};node.stream_ops=stream_ops;return node;},createPreloadedFile:function createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn);}if(onload)onload();removeRunDependency(dep);}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep);});handled=true;}});if(!handled)finish(byteArray);}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray);},onerror);}else{processData(url);}},indexedDB:function indexedDB(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;},DB_NAME:function DB_NAME(){return"EM_FS_"+window.location.pathname;},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function saveFilesToDB(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION);}catch(e){return onerror(e);}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){console.log("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME);};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror();}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish();};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish();};});transaction.onerror=onerror;};openRequest.onerror=onerror;},loadFilesFromDB:function loadFilesFromDB(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION);}catch(e){return onerror(e);}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly");}catch(e){onerror(e);return;}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror();}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path);}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish();};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish();};});transaction.onerror=onerror;};openRequest.onerror=onerror;}};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function calculateAt(dirfd,path){if(path[0]!=="/"){var dir;if(dirfd===-100){dir=FS.cwd();}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);dir=dirstream.path;}path=PATH.join2(dir,path);}return path;},doStat:function 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-ERRNO_CODES.ENOTDIR;}throw e;}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0;},doMsync:function doMsync(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags);},doMkdir:function doMkdir(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0;},doMknod:function doMknod(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL;}FS.mknod(path,mode,dev);return 0;},doReadlink:function doReadlink(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len;},doAccess:function doAccess(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL;}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES;}return 0;},doDup:function doDup(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd;},doReadv:function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break;}return ret;},doWritev:function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;}return ret;},varargs:0,get:function get(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret;},getStr:function getStr(){var ret=Pointer_stringify(SYSCALLS.get());return ret;},getStreamFromFD:function getStreamFromFD(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream;},getSocketFromFD:function getSocketFromFD(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket;},getSocketAddress:function getSocketAddress(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info;},get64:function get64(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low;},getZero:function getZero(){assert(SYSCALLS.get()===0);}};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0;}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt);}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt);}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL;}var newStream;newStream=FS.open(stream.path,stream.flags,0,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 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0;};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL;}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd;}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0;};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL;};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp);};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};case 21524:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0;};default:abort("bad ioctl syscall "+op);}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0;}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}function ___unlock(){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size);}}function 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=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]];}return ret;}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function 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;}else{return name;}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body);}function 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 BindingError=undefined;function throwBindingError(message){throw new BindingError(message);}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message);}function 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(function(dt,i){if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt];}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[];}awaitingDependencies[dt].push(function(){typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters);}});}});if(0===unregisteredTypes.length){onComplete(typeConverters);}}function registerType(rawType,registeredInstance,options){options=options||{};if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance");}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(function(cb){cb();});}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function fromWireType(wt){return!!wt;},"toWireType":function toWireType(destructors,o){return o?trueValue:falseValue;},"argPackAdvance":8,"readValueFromPointer":function readValueFromPointer(pointer){var heap;if(size===1){heap=HEAP8;}else if(size===2){heap=HEAP16;}else if(size===4){heap=HEAP32;}else{throw new TypeError("Unknown boolean type size: "+name);}return this["fromWireType"](heap[pointer>>shift]);},destructorFunction:null});}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false;}if(!(other instanceof ClassHandle)){return false;}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;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;}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType};}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name;}throwBindingError(getInstanceTypeName(obj)+" instance already deleted");}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this;}else{var clone=Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}});clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone;}}function runDestructor(handle){var $$=handle.$$;if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr);}else{$$.ptrType.registeredClass.rawDestructor($$.ptr);}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this);}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion");}this.$$.count.value-=1;var toDelete=0===this.$$.count.value;if(toDelete){runDestructor(this);}if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined;}}function ClassHandle_isDeleted(){return!this.$$.ptr;}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]();}}function ClassHandle_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 init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater;}function ClassHandle(){}var registeredPointers={};function 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;}}function 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;}}}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=[];}function 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 "'+_embind_repr(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.$$){throwBindingError('Cannot pass "'+_embind_repr(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_register(function(){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 "'+_embind_repr(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 simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2]);}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr);}return ptr;}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr);}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]();}}function 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);}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length;}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k]);}}return rv;}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes);}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction;}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined");}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass;}return ptr;}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr];}function 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 Object.create(prototype,{$$:{value:record}});}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});}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["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&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null;}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null;}}else{this["toWireType"]=genericPointerToWireType;}}function 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;}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i<signature.length;++i){args.push("a"+i);}var name="dynCall_"+signature+"_"+rawFunction;var body="return function "+name+"("+args.join(", ")+") {\n";body+=" return dynCall(rawFunction"+(args.length?", ":"")+args.join(", ")+");\n";body+="};\n";return new Function("dynCall","rawFunction",body)(dynCall,rawFunction);}var fp;if(Module["FUNCTION_TABLE_"+signature]!==undefined){fp=Module["FUNCTION_TABLE_"+signature][rawFunction];}else if(typeof FUNCTION_TABLE!=="undefined"){fp=FUNCTION_TABLE[rawFunction];}else{var dc=Module["asm"]["dynCall_"+signature];if(dc===undefined){dc=Module["asm"]["dynCall_"+signature.replace(/f/g,"d")];if(dc===undefined){throwBindingError("No dynCall invoker for signature: "+signature);}}fp=makeDynCaller(dc);}if(typeof fp!=="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction);}return fp;}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv;}function 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([", "]));}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast);}if(downcast){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(legalFunctionName,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);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];});}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i<count;i++){array.push(HEAP32[(firstElement>>2)+i]);}return array;}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr);}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){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]=function unboundTypeHandler(){throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes);};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+" called with "+arguments.length+" arguments, expected "+(argCount-1));}var destructors=[];var args=new Array(argCount);args[0]=rawConstructor;for(var i=1;i<argCount;++i){args[i]=argTypes[i]["toWireType"](destructors,arguments[i-1]);}var ptr=invoker.apply(null,args);runDestructors(destructors);return argTypes[0]["fromWireType"](ptr);};return[];});return[];});}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+(typeof constructor==='undefined'?'undefined':_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 craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!");}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i<argTypes.length;++i){if(argTypes[i]!==null&&argTypes[i].destructorFunction===undefined){needsDestructorStack=true;break;}}var returns=argTypes[0].name!=="void";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="return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\n"+"if (arguments.length !== "+(argCount-2)+") {\n"+"throwBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount-2)+" args!');\n"+"}\n";if(needsDestructorStack){invokerFnBody+="var destructors = [];\n";}var dtorStack=needsDestructorStack?"destructors":"null";var args1=["throwBindingError","invoker","fn","runDestructors","retType","classParam"];var args2=[throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,argTypes[0],argTypes[1]];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);args2.push(argTypes[i+2]);}if(isClassMethodFunc){argsListWired="thisWired"+(argsListWired.length>0?", ":"")+argsListWired;}invokerFnBody+=(returns?"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");args2.push(argTypes[i].destructorFunction);}}}if(returns){invokerFnBody+="var ret = retType.fromWireType(rv);\n"+"return ret;\n";}else{}invokerFnBody+="}\n";args1.push(invokerFnBody);var invokerFunction=new_(Function,args1).apply(null,args2);return invokerFunction;}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;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);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction;}else{proto[methodName].overloadTable[argCount-2]=memberFunction;}return[];});return[];});}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle);}}function count_emval_handles(){var count=0;for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){++count;}}return count;}function get_first_emval(){for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){return emval_handle_array[i];}}return null;}function init_emval(){Module["count_emval_handles"]=count_emval_handles;Module["get_first_emval"]=get_first_emval;}function __emval_register(value){switch(value){case undefined:{return 1;};case null:{return 2;};case true:{return 3;};case false:{return 4;};default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle;}}}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function fromWireType(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv;},"toWireType":function toWireType(destructors,value){return __emval_register(value);},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null});}function _embind_repr(v){if(v===null){return"null";}var t=typeof v==='undefined'?'undefined':_typeof(v);if(t==="object"||t==="array"||t==="function"){return v.toString();}else{return""+v;}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2]);};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3]);};default:throw new TypeError("Unknown float type: "+name);}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function fromWireType(value){return value;},"toWireType":function toWireType(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name);}return value;},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null});}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes);},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[];});}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer];}:function readU8FromPointer(pointer){return HEAPU8[pointer];};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1];}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1];};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2];}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2];};default:throw new TypeError("Unknown integer type: "+name);}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295;}var shift=getShiftFromSize(size);var fromWireType=function fromWireType(value){return value;};if(minRange===0){var bitshift=32-8*size;fromWireType=function fromWireType(value){return value<<bitshift>>>bitshift;};}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function toWireType(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name);}if(value<minRange||value>maxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!");}return isUnsignedType?value>>>0:value|0;},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null});}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size);}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true});}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function fromWireType(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var endChar=HEAPU8[value+4+length];var endCharSwap=0;if(endChar!=0){endCharSwap=endChar;HEAPU8[value+4+length]=0;}var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(HEAPU8[currentBytePtr]==0){var stringSegment=UTF8ToString(decodeStartPtr);if(str===undefined)str=stringSegment;else{str+=String.fromCharCode(0);str+=stringSegment;}decodeStartPtr=currentBytePtr+1;}}if(endCharSwap!=0)HEAPU8[value+4+length]=endCharSwap;}else{var a=new Array(length);for(var i=0;i<length;++i){a[i]=String.fromCharCode(HEAPU8[value+4+i]);}str=a.join("");}_free(value);return str;},"toWireType":function toWireType(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value);}var getLength;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){getLength=function getLength(){return lengthBytesUTF8(value);};}else{getLength=function getLength(){return value.length;};}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,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+4+i]=charCode;}}else{for(var i=0;i<length;++i){HEAPU8[ptr+4+i]=value[i];}}}if(destructors!==null){destructors.push(_free,ptr);}return ptr;},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function destructorFunction(ptr){_free(ptr);}});}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var getHeap,shift;if(charSize===2){getHeap=function getHeap(){return HEAPU16;};shift=1;}else if(charSize===4){getHeap=function getHeap(){return HEAPU32;};shift=2;}registerType(rawType,{name:name,"fromWireType":function fromWireType(value){var HEAP=getHeap();var length=HEAPU32[value>>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i<length;++i){a[i]=String.fromCharCode(HEAP[start+i]);}_free(value);return a.join("");},"toWireType":function toWireType(destructors,value){var HEAP=getHeap();var length=value.length;var ptr=_malloc(4+length*charSize);HEAPU32[ptr>>2]=length;var start=ptr+4>>shift;for(var i=0;i<length;++i){HEAP[start+i]=value.charCodeAt(i);}if(destructors!==null){destructors.push(_free,ptr);}return ptr;},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function destructorFunction(ptr){_free(ptr);}});}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function fromWireType(){return undefined;},"toWireType":function toWireType(destructors,o){return undefined;}});}function requireHandle(handle){if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle);}return emval_handle_array[handle].value;}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType));}return impl;}function __emval_as(handle,returnType,destructorsRef){handle=requireHandle(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=__emval_register(destructors);HEAP32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle);}function __emval_lookupTypes(argCount,argTypes,argWireTypes){var a=new Array(argCount);for(var i=0;i<argCount;++i){a[i]=requireRegisteredType(HEAP32[(argTypes>>2)+i],"parameter "+i);}return a;}function __emval_call(handle,argCount,argTypes,argv){handle=requireHandle(handle);var types=__emval_lookupTypes(argCount,argTypes);var args=new Array(argCount);for(var i=0;i<argCount;++i){var type=types[i];args[i]=type["readValueFromPointer"](argv);argv+=type["argPackAdvance"];}var rv=handle.apply(undefined,args);return __emval_register(rv);}function __emval_allocateDestructors(destructorsRef){var destructors=[];HEAP32[destructorsRef>>2]=__emval_register(destructors);return destructors;}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address);}else{return symbol;}}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=requireHandle(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args);}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id;}function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name;}).join("_")+"$";var params=["retType"];var args=[retType];var argsList="";for(var i=0;i<argCount-1;++i){argsList+=(i!==0?", ":"")+"arg"+i;params.push("argType"+i);args.push(types[1+i]);}var functionName=makeLegalFunctionName("methodCaller_"+signatureName);var functionBody="return function "+functionName+"(handle, name, destructors, args) {\n";var offset=0;for(var i=0;i<argCount-1;++i){functionBody+=" var arg"+i+" = argType"+i+".readValueFromPointer(args"+(offset?"+"+offset:"")+");\n";offset+=types[i+1]["argPackAdvance"];}functionBody+=" var rv = handle[name]("+argsList+");\n";for(var i=0;i<argCount-1;++i){if(types[i+1]["deleteObject"]){functionBody+=" argType"+i+".deleteObject(arg"+i+");\n";}}if(!retType.isVoid){functionBody+=" return retType.toWireType(destructors, rv);\n";}functionBody+="};\n";params.push(functionBody);var invokerFunction=new_(Function,params).apply(null,args);return __emval_addMethodCaller(invokerFunction);}function __emval_get_module_property(name){name=getStringOrSymbol(name);return __emval_register(Module[name]);}function __emval_get_property(handle,key){handle=requireHandle(handle);key=requireHandle(key);return __emval_register(handle[key]);}function __emval_incref(handle){if(handle>4){emval_handle_array[handle].refcount+=1;}}function craftEmvalAllocator(argCount){var argsList="";for(var i=0;i<argCount;++i){argsList+=(i!==0?", ":"")+"arg"+i;}var functionBody="return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n";for(var i=0;i<argCount;++i){functionBody+="var argType"+i+" = requireRegisteredType(HEAP32[(argTypes >> 2) + "+i+'], "parameter '+i+'");\n'+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n";}functionBody+="var obj = new constructor("+argsList+");\n"+"return __emval_register(obj);\n"+"}\n";return new Function("requireRegisteredType","HEAP32","__emval_register",functionBody)(requireRegisteredType,HEAP32,__emval_register);}var emval_newers={};function __emval_new(handle,argCount,argTypes,args){handle=requireHandle(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer;}return newer(handle,argTypes,args);}function __emval_new_cstring(v){return __emval_register(getStringOrSymbol(v));}function __emval_run_destructors(handle){var destructors=emval_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle);}function __emval_take_value(type,argv){type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](argv);return __emval_register(v);}function _abort(){Module["abort"]();}function _llvm_cttz_i64(l,h){var ret=_llvm_cttz_i32(l);if(ret==32)ret+=_llvm_cttz_i32(h);return(setTempRet0(0),ret)|0;}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest;}var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0;}var PTHREAD_SPECIFIC_NEXT_KEY=1;function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL;}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0;}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Module["dynCall_v"](func);_pthread_once.seen[ptr]=1;}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL;}PTHREAD_SPECIFIC[key]=value;return 0;}FS.staticInit();__ATINIT__.unshift(function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();});__ATMAIN__.push(function(){FS.ignorePermissions=false;});__ATEXIT__.push(function(){FS.quit();});__ATINIT__.unshift(function(){TTY.init();});__ATEXIT__.push(function(){TTY.shutdown();});if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit();}embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;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;}function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.");}chr&=255;}ret.push(String.fromCharCode(chr));}return ret.join("");}var decodeBase64=typeof atob==="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2);}if(enc4!==64){output=output+String.fromCharCode(chr3);}}while(i<input.length);return output;};function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE==="boolean"&&ENVIRONMENT_IS_NODE){var buf;try{buf=Buffer.from(s,"base64");}catch(_){buf=new Buffer(s,"base64");}return new Uint8Array(buf.buffer,buf.byteOffset,buf.byteLength);}try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i);}return bytes;}catch(_){throw new Error("Converting base64 string to bytes failed.");}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return;}return intArrayFromBase64(filename.slice(dataURIPrefix.length));}function invoke_i(index){var sp=_stackSave();try{return Module["dynCall_i"](index);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_ii(index,a1){var sp=_stackSave();try{return Module["dynCall_ii"](index,a1);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iii(index,a1,a2){var sp=_stackSave();try{return Module["dynCall_iii"](index,a1,a2);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiii(index,a1,a2,a3){var sp=_stackSave();try{return Module["dynCall_iiii"](index,a1,a2,a3);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=_stackSave();try{return Module["dynCall_iiiii"](index,a1,a2,a3,a4);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=_stackSave();try{return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=_stackSave();try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_v(index){var sp=_stackSave();try{Module["dynCall_v"](index);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_vi(index,a1){var sp=_stackSave();try{Module["dynCall_vi"](index,a1);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_vii(index,a1,a2){var sp=_stackSave();try{Module["dynCall_vii"](index,a1,a2);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viii(index,a1,a2,a3){var sp=_stackSave();try{Module["dynCall_viii"](index,a1,a2,a3);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viiii(index,a1,a2,a3,a4){var sp=_stackSave();try{Module["dynCall_viiii"](index,a1,a2,a3,a4);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=_stackSave();try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=_stackSave();try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6);}catch(e){_stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0);}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_i":invoke_i,"invoke_ii":invoke_ii,"invoke_iii":invoke_iii,"invoke_iiii":invoke_iiii,"invoke_iiiii":invoke_iiiii,"invoke_iiiiii":invoke_iiiiii,"invoke_iiiiiii":invoke_iiiiiii,"invoke_v":invoke_v,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_viii":invoke_viii,"invoke_viiii":invoke_viiii,"invoke_viiiii":invoke_viiiii,"invoke_viiiiii":invoke_viiiiii,"ClassHandle":ClassHandle,"ClassHandle_clone":ClassHandle_clone,"ClassHandle_delete":ClassHandle_delete,"ClassHandle_deleteLater":ClassHandle_deleteLater,"ClassHandle_isAliasOf":ClassHandle_isAliasOf,"ClassHandle_isDeleted":ClassHandle_isDeleted,"RegisteredClass":RegisteredClass,"RegisteredPointer":RegisteredPointer,"RegisteredPointer_deleteObject":RegisteredPointer_deleteObject,"RegisteredPointer_destructor":RegisteredPointer_destructor,"RegisteredPointer_fromWireType":RegisteredPointer_fromWireType,"RegisteredPointer_getPointee":RegisteredPointer_getPointee,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"___cxa_allocate_exception":___cxa_allocate_exception,"___cxa_begin_catch":___cxa_begin_catch,"___cxa_find_matching_catch":___cxa_find_matching_catch,"___cxa_throw":___cxa_throw,"___gxx_personality_v0":___gxx_personality_v0,"___lock":___lock,"___resumeException":___resumeException,"___setErrNo":___setErrNo,"___syscall140":___syscall140,"___syscall145":___syscall145,"___syscall146":___syscall146,"___syscall221":___syscall221,"___syscall5":___syscall5,"___syscall54":___syscall54,"___syscall6":___syscall6,"___unlock":___unlock,"__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_function":__embind_register_function,"__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_addMethodCaller":__emval_addMethodCaller,"__emval_allocateDestructors":__emval_allocateDestructors,"__emval_as":__emval_as,"__emval_call":__emval_call,"__emval_call_void_method":__emval_call_void_method,"__emval_decref":__emval_decref,"__emval_get_method_caller":__emval_get_method_caller,"__emval_get_module_property":__emval_get_module_property,"__emval_get_property":__emval_get_property,"__emval_incref":__emval_incref,"__emval_lookupTypes":__emval_lookupTypes,"__emval_new":__emval_new,"__emval_new_cstring":__emval_new_cstring,"__emval_register":__emval_register,"__emval_run_destructors":__emval_run_destructors,"__emval_take_value":__emval_take_value,"_abort":_abort,"_embind_repr":_embind_repr,"_emscripten_memcpy_big":_emscripten_memcpy_big,"_llvm_cttz_i64":_llvm_cttz_i64,"_pthread_getspecific":_pthread_getspecific,"_pthread_key_create":_pthread_key_create,"_pthread_once":_pthread_once,"_pthread_setspecific":_pthread_setspecific,"constNoSmartPtrRawPointerToWireType":constNoSmartPtrRawPointerToWireType,"count_emval_handles":count_emval_handles,"craftEmvalAllocator":craftEmvalAllocator,"craftInvokerFunction":craftInvokerFunction,"createNamedFunction":createNamedFunction,"downcastPointer":downcastPointer,"embind__requireFunction":embind__requireFunction,"embind_init_charCodes":embind_init_charCodes,"ensureOverloadTable":ensureOverloadTable,"exposePublicSymbol":exposePublicSymbol,"extendError":extendError,"floatReadValueFromPointer":floatReadValueFromPointer,"flushPendingDeletes":flushPendingDeletes,"genericPointerToWireType":genericPointerToWireType,"getBasestPointer":getBasestPointer,"getInheritedInstance":getInheritedInstance,"getInheritedInstanceCount":getInheritedInstanceCount,"getLiveInheritedInstances":getLiveInheritedInstances,"getShiftFromSize":getShiftFromSize,"getStringOrSymbol":getStringOrSymbol,"getTypeName":getTypeName,"get_first_emval":get_first_emval,"heap32VectorToArray":heap32VectorToArray,"init_ClassHandle":init_ClassHandle,"init_RegisteredPointer":init_RegisteredPointer,"init_embind":init_embind,"init_emval":init_emval,"integerReadValueFromPointer":integerReadValueFromPointer,"makeClassHandle":makeClassHandle,"makeLegalFunctionName":makeLegalFunctionName,"new_":new_,"nonConstNoSmartPtrRawPointerToWireType":nonConstNoSmartPtrRawPointerToWireType,"readLatin1String":readLatin1String,"registerType":registerType,"replacePublicSymbol":replacePublicSymbol,"requireHandle":requireHandle,"requireRegisteredType":requireRegisteredType,"runDestructor":runDestructor,"runDestructors":runDestructors,"setDelayFunction":setDelayFunction,"shallowCopyInternalPointer":shallowCopyInternalPointer,"simpleReadValueFromPointer":simpleReadValueFromPointer,"throwBindingError":throwBindingError,"throwInstanceAlreadyDeleted":throwInstanceAlreadyDeleted,"throwInternalError":throwInternalError,"throwUnboundTypeError":throwUnboundTypeError,"upcastPointer":upcastPointer,"whenDependentTypesAreResolved":whenDependentTypesAreResolved,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX};// EMSCRIPTEN_START_ASM
- var asm=/** @suppress {uselessCode} */function(global,env,buffer){"use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.DYNAMICTOP_PTR|0;var j=env.tempDoublePtr|0;var k=env.ABORT|0;var l=env.STACKTOP|0;var m=env.STACK_MAX|0;var n=0;var o=0;var p=0;var q=0;var r=global.NaN,s=global.Infinity;var t=0,u=0,v=0,w=0,x=0.0;var y=0;var z=global.Math.floor;var A=global.Math.abs;var B=global.Math.sqrt;var C=global.Math.pow;var D=global.Math.cos;var E=global.Math.sin;var F=global.Math.tan;var G=global.Math.acos;var H=global.Math.asin;var I=global.Math.atan;var J=global.Math.atan2;var K=global.Math.exp;var L=global.Math.log;var M=global.Math.ceil;var N=global.Math.imul;var O=global.Math.min;var P=global.Math.max;var Q=global.Math.clz32;var R=env.abort;var S=env.assert;var T=env.enlargeMemory;var U=env.getTotalMemory;var V=env.abortOnCannotGrowMemory;var W=env.invoke_i;var X=env.invoke_ii;var Y=env.invoke_iii;var Z=env.invoke_iiii;var _=env.invoke_iiiii;var $=env.invoke_iiiiii;var aa=env.invoke_iiiiiii;var ba=env.invoke_v;var ca=env.invoke_vi;var da=env.invoke_vii;var ea=env.invoke_viii;var fa=env.invoke_viiii;var ga=env.invoke_viiiii;var ha=env.invoke_viiiiii;var ia=env.ClassHandle;var ja=env.ClassHandle_clone;var ka=env.ClassHandle_delete;var la=env.ClassHandle_deleteLater;var ma=env.ClassHandle_isAliasOf;var na=env.ClassHandle_isDeleted;var oa=env.RegisteredClass;var pa=env.RegisteredPointer;var qa=env.RegisteredPointer_deleteObject;var ra=env.RegisteredPointer_destructor;var sa=env.RegisteredPointer_fromWireType;var ta=env.RegisteredPointer_getPointee;var ua=env.__ZSt18uncaught_exceptionv;var va=env.___cxa_allocate_exception;var wa=env.___cxa_begin_catch;var xa=env.___cxa_find_matching_catch;var ya=env.___cxa_throw;var za=env.___gxx_personality_v0;var Aa=env.___lock;var Ba=env.___resumeException;var Ca=env.___setErrNo;var Da=env.___syscall140;var Ea=env.___syscall145;var Fa=env.___syscall146;var Ga=env.___syscall221;var Ha=env.___syscall5;var Ia=env.___syscall54;var Ja=env.___syscall6;var Ka=env.___unlock;var La=env.__embind_register_bool;var Ma=env.__embind_register_class;var Na=env.__embind_register_class_constructor;var Oa=env.__embind_register_class_function;var Pa=env.__embind_register_emval;var Qa=env.__embind_register_float;var Ra=env.__embind_register_function;var Sa=env.__embind_register_integer;var Ta=env.__embind_register_memory_view;var Ua=env.__embind_register_std_string;var Va=env.__embind_register_std_wstring;var Wa=env.__embind_register_void;var Xa=env.__emval_addMethodCaller;var Ya=env.__emval_allocateDestructors;var Za=env.__emval_as;var _a=env.__emval_call;var $a=env.__emval_call_void_method;var ab=env.__emval_decref;var bb=env.__emval_get_method_caller;var cb=env.__emval_get_module_property;var db=env.__emval_get_property;var eb=env.__emval_incref;var fb=env.__emval_lookupTypes;var gb=env.__emval_new;var hb=env.__emval_new_cstring;var ib=env.__emval_register;var jb=env.__emval_run_destructors;var kb=env.__emval_take_value;var lb=env._abort;var mb=env._embind_repr;var nb=env._emscripten_memcpy_big;var ob=env._llvm_cttz_i64;var pb=env._pthread_getspecific;var qb=env._pthread_key_create;var rb=env._pthread_once;var sb=env._pthread_setspecific;var tb=env.constNoSmartPtrRawPointerToWireType;var ub=env.count_emval_handles;var vb=env.craftEmvalAllocator;var wb=env.craftInvokerFunction;var xb=env.createNamedFunction;var yb=env.downcastPointer;var zb=env.embind__requireFunction;var Ab=env.embind_init_charCodes;var Bb=env.ensureOverloadTable;var Cb=env.exposePublicSymbol;var Db=env.extendError;var Eb=env.floatReadValueFromPointer;var Fb=env.flushPendingDeletes;var Gb=env.genericPointerToWireType;var Hb=env.getBasestPointer;var Ib=env.getInheritedInstance;var Jb=env.getInheritedInstanceCount;var Kb=env.getLiveInheritedInstances;var Lb=env.getShiftFromSize;var Mb=env.getStringOrSymbol;var Nb=env.getTypeName;var Ob=env.get_first_emval;var Pb=env.heap32VectorToArray;var Qb=env.init_ClassHandle;var Rb=env.init_RegisteredPointer;var Sb=env.init_embind;var Tb=env.init_emval;var Ub=env.integerReadValueFromPointer;var Vb=env.makeClassHandle;var Wb=env.makeLegalFunctionName;var Xb=env.new_;var Yb=env.nonConstNoSmartPtrRawPointerToWireType;var Zb=env.readLatin1String;var _b=env.registerType;var $b=env.replacePublicSymbol;var ac=env.requireHandle;var bc=env.requireRegisteredType;var cc=env.runDestructor;var dc=env.runDestructors;var ec=env.setDelayFunction;var fc=env.shallowCopyInternalPointer;var gc=env.simpleReadValueFromPointer;var hc=env.throwBindingError;var ic=env.throwInstanceAlreadyDeleted;var jc=env.throwInternalError;var kc=env.throwUnboundTypeError;var lc=env.upcastPointer;var mc=env.whenDependentTypesAreResolved;var nc=0.0;// EMSCRIPTEN_START_FUNCS
- function Ds(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+17|0;n=g+16|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;if((c[k>>2]|0)>>>0<1){f=c[i>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[h>>2]=-72;o=c[h>>2]|0;l=g;return o|0;}f=(c[k>>2]|0)>>>0>=4;c[(c[i>>2]|0)+12>>2]=c[j>>2];do{if(f){c[(c[i>>2]|0)+8>>2]=(c[j>>2]|0)+(c[k>>2]|0)+-4;e=Qs(c[(c[i>>2]|0)+8>>2]|0)|0;c[c[i>>2]>>2]=e;a[m>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[m>>0]|0|0)p=8-(Rs(d[m>>0]|0)|0)|0;else p=0;c[(c[i>>2]|0)+4>>2]=p;if(!(d[m>>0]|0)){c[h>>2]=-1;o=c[h>>2]|0;l=g;return o|0;}}else{c[(c[i>>2]|0)+8>>2]=c[(c[i>>2]|0)+12>>2];c[c[i>>2]>>2]=d[c[(c[i>>2]|0)+12>>2]>>0];switch(c[k>>2]|0){case 7:{e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+6>>0]|0)<<16);q=10;break;}case 6:{q=10;break;}case 5:{q=11;break;}case 4:{q=12;break;}case 3:{q=13;break;}case 2:{q=14;break;}default:{}}if((q|0)==10){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+5>>0]|0)<<8);q=11;}if((q|0)==11){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+4>>0]|0)<<0);q=12;}if((q|0)==12){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+3>>0]|0)<<24);q=13;}if((q|0)==13){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+2>>0]|0)<<16);q=14;}if((q|0)==14){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+1>>0]|0)<<8);}a[n>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[n>>0]|0|0)r=8-(Rs(d[n>>0]|0)|0)|0;else r=0;c[(c[i>>2]|0)+4>>2]=r;if(d[n>>0]|0|0){e=(c[i>>2]|0)+4|0;c[e>>2]=(c[e>>2]|0)+(4-(c[k>>2]|0)<<3);break;}c[h>>2]=-1;o=c[h>>2]|0;l=g;return o|0;}}while(0);c[h>>2]=c[k>>2];o=c[h>>2]|0;l=g;return o|0;}function Es(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=c[i>>2];c[k>>2]=c[j>>2];j=Ms(c[h>>2]|0,e[c[k>>2]>>1]|0)|0;c[c[g>>2]>>2]=j;Fs(c[h>>2]|0)|0;c[(c[g>>2]|0)+4>>2]=(c[i>>2]|0)+4;l=f;return;}function Fs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[(c[e>>2]|0)+4>>2]|0)>>>0>32){c[d>>2]=3;h=c[d>>2]|0;l=b;return h|0;}a=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=((c[(c[e>>2]|0)+12>>2]|0)+4|0)>>>0){i=(c[e>>2]|0)+8|0;c[i>>2]=(c[i>>2]|0)+(0-((c[a+4>>2]|0)>>>3));i=(c[e>>2]|0)+4|0;c[i>>2]=c[i>>2]&7;i=Qs(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=i;c[d>>2]=0;h=c[d>>2]|0;l=b;return h|0;}i=c[(c[e>>2]|0)+4>>2]|0;if((c[a+8>>2]|0)!=(c[(c[e>>2]|0)+12>>2]|0)){c[f>>2]=i>>>3;c[g>>2]=0;if(((c[(c[e>>2]|0)+8>>2]|0)+(0-(c[f>>2]|0))|0)>>>0<(c[(c[e>>2]|0)+12>>2]|0)>>>0){c[f>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0);c[g>>2]=1;}a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(0-(c[f>>2]|0));a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[f>>2]<<3);f=Qs(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=f;c[d>>2]=c[g>>2];h=c[d>>2]|0;l=b;return h|0;}if(i>>>0<32){c[d>>2]=1;h=c[d>>2]|0;l=b;return h|0;}else{c[d>>2]=2;h=c[d>>2]|0;l=b;return h|0;}return 0;}function Gs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=l;l=l+64|0;e=d+48|0;f=d+36|0;g=d+32|0;h=d+28|0;i=d+24|0;j=d+20|0;k=d+16|0;m=d+12|0;n=d+8|0;o=d+4|0;p=d;c[e>>2]=b;c[g>>2]=(Ls((c[e>>2]|0)+16|0)|0)&255;c[h>>2]=(Ls((c[e>>2]|0)+32|0)|0)&255;c[i>>2]=(Ls((c[e>>2]|0)+24|0)|0)&255;c[j>>2]=c[5696+(c[g>>2]<<2)>>2];c[k>>2]=c[5840+(c[h>>2]<<2)>>2];c[m>>2]=c[i>>2];c[n>>2]=(c[j>>2]|0)+(c[k>>2]|0)+(c[m>>2]|0);if(c[i>>2]|0){b=c[5088+(c[i>>2]<<2)>>2]|0;c[o>>2]=b+(Ms(c[e>>2]|0,c[m>>2]|0)|0);if(Dq()|0)Fs(c[e>>2]|0)|0;}else c[o>>2]=0;do{if((c[i>>2]|0)>>>0<=1){if((c[g>>2]|0)==0&(c[o>>2]|0)>>>0<=1|0)c[o>>2]=1-(c[o>>2]|0);m=(c[e>>2]|0)+40|0;if(!(c[o>>2]|0)){c[o>>2]=c[m>>2];break;}c[p>>2]=c[m+(c[o>>2]<<2)>>2];if((c[o>>2]|0)!=1)c[(c[e>>2]|0)+40+8>>2]=c[(c[e>>2]|0)+40+4>>2];c[(c[e>>2]|0)+40+4>>2]=c[(c[e>>2]|0)+40>>2];m=c[p>>2]|0;c[o>>2]=m;c[(c[e>>2]|0)+40>>2]=m;}else{c[(c[e>>2]|0)+40+8>>2]=c[(c[e>>2]|0)+40+4>>2];c[(c[e>>2]|0)+40+4>>2]=c[(c[e>>2]|0)+40>>2];c[(c[e>>2]|0)+40>>2]=c[o>>2];}}while(0);c[f+8>>2]=c[o>>2];o=c[5216+(c[h>>2]<<2)>>2]|0;if((c[h>>2]|0)>>>0>31)q=Ms(c[e>>2]|0,c[k>>2]|0)|0;else q=0;c[f+4>>2]=o+q;if(Dq()|0?((c[k>>2]|0)+(c[j>>2]|0)|0)>>>0>24:0)Fs(c[e>>2]|0)|0;k=c[6416+(c[g>>2]<<2)>>2]|0;if((c[g>>2]|0)>>>0>15)r=Ms(c[e>>2]|0,c[j>>2]|0)|0;else r=0;c[f>>2]=k+r;r=(Dq()|0)!=0;if(r|(c[n>>2]|0)>>>0>31)Fs(c[e>>2]|0)|0;Ns((c[e>>2]|0)+16|0,c[e>>2]|0);Ns((c[e>>2]|0)+32|0,c[e>>2]|0);if(!(Dq()|0)){s=c[e>>2]|0;t=s+24|0;u=c[e>>2]|0;Ns(t,u);c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];l=d;return;}Fs(c[e>>2]|0)|0;s=c[e>>2]|0;t=s+24|0;u=c[e>>2]|0;Ns(t,u);c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];l=d;return;}function Hs(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;k=l;l=l+64|0;m=k+60|0;n=k+56|0;o=k+52|0;p=k+48|0;q=k+44|0;r=k+40|0;s=k+36|0;t=k+32|0;u=k+28|0;v=k+24|0;w=k+20|0;x=k+16|0;y=k+12|0;z=k+8|0;A=k+4|0;B=k;c[n>>2]=b;c[o>>2]=d;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=(c[n>>2]|0)+(c[e>>2]|0);c[v>>2]=(c[e>>2]|0)+(c[e+4>>2]|0);c[w>>2]=(c[n>>2]|0)+(c[v>>2]|0);c[x>>2]=(c[o>>2]|0)+-8;c[y>>2]=(c[c[p>>2]>>2]|0)+(c[e>>2]|0);c[z>>2]=(c[u>>2]|0)+(0-(c[e+8>>2]|0));if(((c[u>>2]|0)>>>0>(c[x>>2]|0)>>>0?1:(c[w>>2]|0)>>>0>(c[o>>2]|0)>>>0)|0){c[m>>2]=-70;C=c[m>>2]|0;l=k;return C|0;}if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}Is(c[n>>2]|0,c[c[p>>2]>>2]|0,c[e>>2]|0);c[n>>2]=c[u>>2];c[c[p>>2]>>2]=c[y>>2];do{if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[r>>2]|0)|0)>>>0){if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[s>>2]|0)|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}c[z>>2]=(c[t>>2]|0)+(0-((c[r>>2]|0)-(c[z>>2]|0)));if(((c[z>>2]|0)+(c[e+4>>2]|0)|0)>>>0<=(c[t>>2]|0)>>>0){nE(c[u>>2]|0,c[z>>2]|0,c[e+4>>2]|0)|0;c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}c[A>>2]=(c[t>>2]|0)-(c[z>>2]|0);nE(c[u>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;c[n>>2]=(c[u>>2]|0)+(c[A>>2]|0);y=e+4|0;c[y>>2]=(c[y>>2]|0)-(c[A>>2]|0);c[z>>2]=c[r>>2];if((c[n>>2]|0)>>>0<=(c[x>>2]|0)>>>0?(c[e+4>>2]|0)>>>0>=3:0)break;while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;y=c[z>>2]|0;c[z>>2]=y+1;p=a[y>>0]|0;y=c[n>>2]|0;c[n>>2]=y+1;a[y>>0]=p;}c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}}while(0);if((c[e+8>>2]|0)>>>0<8){c[B>>2]=c[6816+(c[e+8>>2]<<2)>>2];a[c[n>>2]>>0]=a[c[z>>2]>>0]|0;a[(c[n>>2]|0)+1>>0]=a[(c[z>>2]|0)+1>>0]|0;a[(c[n>>2]|0)+2>>0]=a[(c[z>>2]|0)+2>>0]|0;a[(c[n>>2]|0)+3>>0]=a[(c[z>>2]|0)+3>>0]|0;c[z>>2]=(c[z>>2]|0)+(c[6848+(c[e+8>>2]<<2)>>2]|0);Js((c[n>>2]|0)+4|0,c[z>>2]|0);c[z>>2]=(c[z>>2]|0)+(0-(c[B>>2]|0));}else Ks(c[n>>2]|0,c[z>>2]|0);c[n>>2]=(c[n>>2]|0)+8;c[z>>2]=(c[z>>2]|0)+8;B=c[n>>2]|0;a:do{if((c[w>>2]|0)>>>0>((c[o>>2]|0)+-13|0)>>>0){if(B>>>0<(c[x>>2]|0)>>>0){Is(c[n>>2]|0,c[z>>2]|0,(c[x>>2]|0)-(c[n>>2]|0)|0);c[z>>2]=(c[z>>2]|0)+((c[x>>2]|0)-(c[n>>2]|0));c[n>>2]=c[x>>2];}while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;r=c[z>>2]|0;c[z>>2]=r+1;A=a[r>>0]|0;r=c[n>>2]|0;c[n>>2]=r+1;a[r>>0]=A;}}else Is(B,c[z>>2]|0,(c[e+4>>2]|0)-8|0);}while(0);c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}function Is(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{Ks(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function Js(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;l=e;return;}function Ks(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function Ls(d){d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=(c[(c[f>>2]|0)+4>>2]|0)+(c[c[f>>2]>>2]<<2)|0;b[g>>1]=b[d>>1]|0;b[g+2>>1]=b[d+2>>1]|0;l=e;return a[g+2>>0]|0;}function Ms(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=Os(c[e>>2]|0,c[f>>2]|0)|0;Ps(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function Ns(a,f){a=a|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+16|0;k=g+4|0;m=g;c[h>>2]=a;c[i>>2]=f;f=(c[(c[h>>2]|0)+4>>2]|0)+(c[c[h>>2]>>2]<<2)|0;b[j>>1]=b[f>>1]|0;b[j+2>>1]=b[f+2>>1]|0;c[k>>2]=d[j+3>>0];c[m>>2]=Ms(c[i>>2]|0,c[k>>2]|0)|0;c[c[h>>2]>>2]=(e[j>>1]|0)+(c[m>>2]|0);l=g;return;}function Os(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>1>>>(31-(c[f>>2]|0)&31)|0;}function Ps(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(c[e>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(c[f>>2]|0);l=d;return;}function Qs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Dq()|0)!=0;f=c[e>>2]|0;if(a){c[d>>2]=Bq(f)|0;g=c[d>>2]|0;l=b;return g|0;}else{a=Fq(f)|0;c[d>>2]=a;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Rs(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function Ss(b,e,f,g,h,i,j,k,m){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;n=l;l=l+160|0;o=n+152|0;p=n+148|0;q=n+144|0;r=n+140|0;s=n+136|0;t=n+132|0;u=n+128|0;v=n+124|0;w=n+120|0;x=n+116|0;y=n+112|0;z=n;A=n+108|0;c[p>>2]=b;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=i;c[v>>2]=j;c[w>>2]=k;c[x>>2]=m;a:do{switch(c[q>>2]|0){case 1:{if(!(c[u>>2]|0)){c[o>>2]=-72;break a;}if((d[c[t>>2]>>0]|0)>>>0>(c[r>>2]|0)>>>0){c[o>>2]=-20;break a;}else{Ts(c[p>>2]|0,a[c[t>>2]>>0]|0)|0;c[o>>2]=1;break a;}break;}case 0:{Us(c[p>>2]|0,c[v>>2]|0,c[r>>2]|0,c[w>>2]|0)|0;c[o>>2]=0;break;}case 2:{if(c[x>>2]|0){c[o>>2]=0;break a;}else{c[o>>2]=-20;break a;}break;}default:{c[A>>2]=Vs(z,r,y,c[t>>2]|0,c[u>>2]|0)|0;if(hr(c[A>>2]|0)|0){c[o>>2]=-20;break a;}if((c[y>>2]|0)>>>0>(c[s>>2]|0)>>>0){c[o>>2]=-20;break a;}else{Us(c[p>>2]|0,z,c[r>>2]|0,c[y>>2]|0)|0;c[o>>2]=c[A>>2];break a;}}}}while(0);l=n;return c[o>>2]|0;}function Ts(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+20|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=d;a[h>>0]=e;c[i>>2]=c[g>>2];c[j>>2]=c[i>>2];c[k>>2]=(c[g>>2]|0)+4;c[m>>2]=c[k>>2];b[c[j>>2]>>1]=0;b[(c[j>>2]|0)+2>>1]=0;b[c[m>>2]>>1]=0;a[(c[m>>2]|0)+2>>0]=a[h>>0]|0;a[(c[m>>2]|0)+3>>0]=0;l=f;return 0;}function Us(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;j=l;l=l+592|0;k=j+576|0;m=j+572|0;n=j+568|0;o=j+564|0;p=j+560|0;q=j+556|0;r=j+552|0;s=j;t=j+548|0;u=j+544|0;v=j+540|0;w=j+584|0;x=j+582|0;y=j+536|0;z=j+532|0;A=j+528|0;B=j+524|0;C=j+520|0;D=j+516|0;E=j+512|0;F=j+588|0;G=j+580|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=i;c[q>>2]=(c[m>>2]|0)+4;c[r>>2]=c[q>>2];c[t>>2]=(c[o>>2]|0)+1;c[u>>2]=1<<c[p>>2];c[v>>2]=(c[u>>2]|0)-1;if((c[o>>2]|0)>>>0>255){c[k>>2]=-46;H=c[k>>2]|0;l=j;return H|0;}if((c[p>>2]|0)>>>0>12){c[k>>2]=-44;H=c[k>>2]|0;l=j;return H|0;}b[w>>1]=c[p>>2];b[w+2>>1]=1;b[x>>1]=1<<(c[p>>2]|0)-1;c[y>>2]=0;while(1){if((c[y>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;if((b[(c[n>>2]|0)+(c[y>>2]<<1)>>1]|0)==-1){o=c[y>>2]&255;q=c[r>>2]|0;i=c[v>>2]|0;c[v>>2]=i+-1;a[q+(i<<2)+2>>0]=o;b[s+(c[y>>2]<<1)>>1]=1;}else{if((b[(c[n>>2]|0)+(c[y>>2]<<1)>>1]|0)>=(b[x>>1]|0))b[w+2>>1]=0;b[s+(c[y>>2]<<1)>>1]=b[(c[n>>2]|0)+(c[y>>2]<<1)>>1]|0;}c[y>>2]=(c[y>>2]|0)+1;}y=c[m>>2]|0;b[y>>1]=b[w>>1]|0;b[y+2>>1]=b[w+2>>1]|0;c[z>>2]=(c[u>>2]|0)-1;c[A>>2]=((c[u>>2]|0)>>>1)+((c[u>>2]|0)>>>3)+3;c[C>>2]=0;c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;c[D>>2]=0;while(1){I=c[B>>2]|0;if((c[D>>2]|0)>=(b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0))break;a[(c[r>>2]|0)+(c[C>>2]<<2)+2>>0]=I;c[C>>2]=(c[C>>2]|0)+(c[A>>2]|0)&c[z>>2];while(1){if((c[C>>2]|0)>>>0<=(c[v>>2]|0)>>>0)break;c[C>>2]=(c[C>>2]|0)+(c[A>>2]|0)&c[z>>2];}c[D>>2]=(c[D>>2]|0)+1;}c[B>>2]=I+1;}if(c[C>>2]|0){c[k>>2]=-1;H=c[k>>2]|0;l=j;return H|0;}c[E>>2]=0;while(1){if((c[E>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;a[F>>0]=a[(c[r>>2]|0)+(c[E>>2]<<2)+2>>0]|0;C=s+(d[F>>0]<<1)|0;I=b[C>>1]|0;b[C>>1]=I+1<<16>>16;b[G>>1]=I;I=c[p>>2]|0;C=I-(Rs(e[G>>1]|0)|0)&255;a[(c[r>>2]|0)+(c[E>>2]<<2)+3>>0]=C;b[(c[r>>2]|0)+(c[E>>2]<<2)>>1]=(e[G>>1]<<d[(c[r>>2]|0)+(c[E>>2]<<2)+3>>0])-(c[u>>2]|0);c[E>>2]=(c[E>>2]|0)+1;}c[k>>2]=0;H=c[k>>2]|0;l=j;return H|0;}function Vs(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;h=l;l=l+80|0;i=h+64|0;j=h+60|0;k=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;p=h+40|0;q=h+36|0;r=h+32|0;s=h+28|0;t=h+24|0;u=h+20|0;v=h+16|0;w=h+12|0;x=h+8|0;y=h+4|0;z=h;A=h+70|0;B=h+68|0;c[j>>2]=a;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[p>>2];c[x>>2]=0;c[y>>2]=0;if((c[o>>2]|0)>>>0<4){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=Bq(c[r>>2]|0)|0;c[s>>2]=(c[v>>2]&15)+5;if((c[s>>2]|0)>15){c[i>>2]=-44;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=(c[v>>2]|0)>>>4;c[w>>2]=4;c[c[m>>2]>>2]=c[s>>2];c[t>>2]=(1<<c[s>>2])+1;c[u>>2]=1<<c[s>>2];c[s>>2]=(c[s>>2]|0)+1;a:while(1){if((c[t>>2]|0)<=1)break;if((c[x>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0)break;do{if(c[y>>2]|0){c[z>>2]=c[x>>2];while(1){if((c[v>>2]&65535|0)!=65535)break;c[z>>2]=(c[z>>2]|0)+24;if((c[r>>2]|0)>>>0<((c[q>>2]|0)+-5|0)>>>0){c[r>>2]=(c[r>>2]|0)+2;m=Bq(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]|0);}else{c[v>>2]=(c[v>>2]|0)>>>16;c[w>>2]=(c[w>>2]|0)+16;}}while(1){if((c[v>>2]&3|0)!=3)break;c[z>>2]=(c[z>>2]|0)+3;c[v>>2]=(c[v>>2]|0)>>>2;c[w>>2]=(c[w>>2]|0)+2;}c[z>>2]=(c[z>>2]|0)+(c[v>>2]&3);c[w>>2]=(c[w>>2]|0)+2;if((c[z>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0){D=19;break a;}while(1){if((c[x>>2]|0)>>>0>=(c[z>>2]|0)>>>0)break;m=c[j>>2]|0;n=c[x>>2]|0;c[x>>2]=n+1;b[m+(n<<1)>>1]=0;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[v>>2]=(c[v>>2]|0)>>>2;break;}c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;n=Bq(c[r>>2]|0)|0;c[v>>2]=n>>>(c[w>>2]|0);}}while(0);b[A>>1]=(c[u>>2]<<1)-1-(c[t>>2]|0);n=c[v>>2]|0;m=c[u>>2]|0;if((c[v>>2]&(c[u>>2]|0)-1)>>>0<(b[A>>1]|0)>>>0){b[B>>1]=n&m-1;c[w>>2]=(c[w>>2]|0)+((c[s>>2]|0)-1);}else{b[B>>1]=n&(m<<1)-1;if((b[B>>1]|0)>=(c[u>>2]|0))b[B>>1]=(b[B>>1]|0)-(b[A>>1]|0);c[w>>2]=(c[w>>2]|0)+(c[s>>2]|0);}b[B>>1]=(b[B>>1]|0)+-1<<16>>16;m=(Ws(b[B>>1]|0)|0)<<16>>16;c[t>>2]=(c[t>>2]|0)-m;m=b[B>>1]|0;n=c[j>>2]|0;g=c[x>>2]|0;c[x>>2]=g+1;b[n+(g<<1)>>1]=m;c[y>>2]=((b[B>>1]|0)!=0^1)&1;while(1){if((c[t>>2]|0)>=(c[u>>2]|0))break;c[s>>2]=(c[s>>2]|0)+-1;c[u>>2]=c[u>>2]>>1;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[w>>2]=(c[w>>2]|0)-((c[q>>2]|0)+-4-(c[r>>2]|0)<<3);c[r>>2]=(c[q>>2]|0)+-4;}else{c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;}m=Bq(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]&31);}if((D|0)==19){c[i>>2]=-48;C=c[i>>2]|0;l=h;return C|0;}if((c[t>>2]|0)!=1){c[i>>2]=-1;C=c[i>>2]|0;l=h;return C|0;}c[c[k>>2]>>2]=(c[x>>2]|0)-1;c[r>>2]=(c[r>>2]|0)+((c[w>>2]|0)+7>>3);if(((c[r>>2]|0)-(c[p>>2]|0)|0)>>>0>(c[o>>2]|0)>>>0){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}else{c[i>>2]=(c[r>>2]|0)-(c[p>>2]|0);C=c[i>>2]|0;l=h;return C|0;}return 0;}function Ws(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=a;a=b[d>>1]|0;l=c;return((b[d>>1]|0)<0?0-a|0:a)&65535|0;}function Xs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=kt(c[i>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;m=(at(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(m){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[n>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[n>>2]=(c[n>>2]|0)-(c[p>>2]|0);c[h>>2]=Bt(c[j>>2]|0,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0,c[i>>2]|0)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function Ys(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+24|0;i=g+20|0;j=g+16|0;k=g+12|0;m=g+8|0;n=g+4|0;o=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if(!(c[k>>2]|0)){c[h>>2]=-70;p=c[h>>2]|0;l=g;return p|0;}if((c[n>>2]|0)>>>0<=1?1:(c[n>>2]|0)>>>0>=(c[k>>2]|0)>>>0){c[h>>2]=-20;p=c[h>>2]|0;l=g;return p|0;}c[o>>2]=ht(c[k>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;i=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;if(c[o>>2]|0)q=it(f,i,j,k,m)|0;else q=jt(f,i,j,k,m)|0;c[h>>2]=q;p=c[h>>2]|0;l=g;return p|0;}function Zs(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;p=h+24|0;c[j>>2]=a;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;_s(p,c[o>>2]|0);if((d[p+1>>0]|0|0)!=1){c[i>>2]=-1;q=c[i>>2]|0;l=h;return q|0;}else{c[i>>2]=$s(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function _s(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=c[f>>2]|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;a[b>>0]=a[g>>0]|0;a[b+1>>0]=a[g+1>>0]|0;a[b+2>>0]=a[g+2>>0]|0;a[b+3>>0]=a[g+3>>0]|0;l=e;return;}function $s(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=l;l=l+80|0;i=h+60|0;j=h+56|0;k=h+52|0;m=h+48|0;n=h+44|0;o=h+40|0;p=h+24|0;q=h+16|0;r=h+12|0;s=h+8|0;t=h+4|0;u=h;v=h+64|0;c[j>>2]=a;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[q>>2]=Ds(p,c[m>>2]|0,c[n>>2]|0)|0;if(at(c[q>>2]|0)|0){c[i>>2]=c[q>>2];w=c[i>>2]|0;l=h;return w|0;}c[r>>2]=c[j>>2];c[s>>2]=(c[r>>2]|0)+(c[k>>2]|0);c[t>>2]=(c[o>>2]|0)+4;c[u>>2]=c[t>>2];_s(v,c[o>>2]|0);bt(c[r>>2]|0,p,c[s>>2]|0,c[u>>2]|0,d[v+2>>0]|0)|0;if(ct(p)|0){c[i>>2]=c[k>>2];w=c[i>>2]|0;l=h;return w|0;}else{c[i>>2]=-20;w=c[i>>2]|0;l=h;return w|0;}return 0;}function at(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=hr(c[d>>2]|0)|0;l=b;return a|0;}function bt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=c[h>>2];while(1){if(Fs(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>=((c[j>>2]|0)+-7|0)>>>0)break;if(dt()|0){f=et(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}dt()|0;f=et(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;if(dt()|0){f=et(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}f=et(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){if(Fs(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=et(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){o=c[h>>2]|0;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=et(o,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}if(o>>>0>=(c[j>>2]|0)>>>0){p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}j=ft(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+j;p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}function ct(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;c[d>>2]=a;if((c[(c[d>>2]|0)+8>>2]|0)!=(c[(c[d>>2]|0)+12>>2]|0)){e=0;f=e&1;l=b;return f|0;}e=(c[(c[d>>2]|0)+4>>2]|0)==32;f=e&1;l=b;return f|0;}function dt(){return 0;}function et(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=gt(c[j>>2]|0,c[m>>2]|0)|0;m=c[i>>2]|0;i=(c[k>>2]|0)+(c[n>>2]<<2)|0;a[m>>0]=a[i>>0]|0;a[m+1>>0]=a[i+1>>0]|0;Ps(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0;}function ft(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=gt(c[j>>2]|0,c[m>>2]|0)|0;a[c[i>>2]>>0]=a[(c[k>>2]|0)+(c[n>>2]<<2)>>0]|0;i=c[j>>2]|0;if((d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0)==1){Ps(i,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return 1;}if((c[i+4>>2]|0)>>>0>=32){l=h;return 1;}Ps(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);if((c[(c[j>>2]|0)+4>>2]|0)>>>0<=32){l=h;return 1;}c[(c[j>>2]|0)+4>>2]=32;l=h;return 1;}function gt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>(32-(c[f>>2]|0)&31)|0;}function ht(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+32|0;e=d+20|0;f=d+16|0;g=d+12|0;h=d+8|0;i=d+4|0;j=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=(c[f>>2]<<4>>>0)/((c[e>>2]|0)>>>0)|0;c[h>>2]=(c[e>>2]|0)>>>8;c[i>>2]=(c[7008+((c[g>>2]|0)*24|0)>>2]|0)+(N(c[7008+((c[g>>2]|0)*24|0)+4>>2]|0,c[h>>2]|0)|0);c[j>>2]=(c[7008+((c[g>>2]|0)*24|0)+8>>2]|0)+(N(c[7008+((c[g>>2]|0)*24|0)+8+4>>2]|0,c[h>>2]|0)|0);c[j>>2]=(c[j>>2]|0)+((c[j>>2]|0)>>>3);l=d;return(c[j>>2]|0)>>>0<(c[i>>2]|0)>>>0|0;}function it(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=vt(c[i>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;m=(at(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(m){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[n>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[n>>2]=(c[n>>2]|0)-(c[p>>2]|0);c[h>>2]=wt(c[j>>2]|0,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0,c[i>>2]|0)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function jt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=kt(c[i>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;m=(at(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(m){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[n>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[n>>2]=(c[n>>2]|0)-(c[p>>2]|0);c[h>>2]=lt(c[j>>2]|0,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0,c[i>>2]|0)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function kt(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;g=l;l=l+416|0;h=g+396|0;i=g+392|0;j=g+388|0;k=g+384|0;m=g+80|0;n=g;o=g+380|0;p=g+376|0;q=g+372|0;r=g+368|0;s=g+364|0;t=g+404|0;u=g+360|0;v=g+356|0;w=g+352|0;x=g+348|0;y=g+344|0;z=g+340|0;A=g+336|0;B=g+400|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[o>>2]=0;c[p>>2]=0;c[r>>2]=(c[i>>2]|0)+4;c[s>>2]=c[r>>2];c[q>>2]=ot(m,256,n,p,o,c[j>>2]|0,c[k>>2]|0)|0;if(at(c[q>>2]|0)|0){c[h>>2]=c[q>>2];C=c[h>>2]|0;l=g;return C|0;}_s(t,c[i>>2]|0);if((c[o>>2]|0)>>>0>((d[t>>0]|0)+1|0)>>>0){c[h>>2]=-44;C=c[h>>2]|0;l=g;return C|0;}a[t+1>>0]=0;a[t+2>>0]=c[o>>2];k=c[i>>2]|0;a[k>>0]=a[t>>0]|0;a[k+1>>0]=a[t+1>>0]|0;a[k+2>>0]=a[t+2>>0]|0;a[k+3>>0]=a[t+3>>0]|0;c[v>>2]=0;c[u>>2]=1;while(1){if((c[u>>2]|0)>>>0>=((c[o>>2]|0)+1|0)>>>0)break;c[w>>2]=c[v>>2];c[v>>2]=(c[v>>2]|0)+(c[n+(c[u>>2]<<2)>>2]<<(c[u>>2]|0)-1);c[n+(c[u>>2]<<2)>>2]=c[w>>2];c[u>>2]=(c[u>>2]|0)+1;}c[x>>2]=0;while(1){if((c[x>>2]|0)>>>0>=(c[p>>2]|0)>>>0)break;c[y>>2]=d[m+(c[x>>2]|0)>>0];c[z>>2]=1<<c[y>>2]>>1;a[B>>0]=c[x>>2];a[B+1>>0]=(c[o>>2]|0)+1-(c[y>>2]|0);c[A>>2]=c[n+(c[y>>2]<<2)>>2];while(1){if((c[A>>2]|0)>>>0>=((c[n+(c[y>>2]<<2)>>2]|0)+(c[z>>2]|0)|0)>>>0)break;u=(c[s>>2]|0)+(c[A>>2]<<1)|0;a[u>>0]=a[B>>0]|0;a[u+1>>0]=a[B+1>>0]|0;c[A>>2]=(c[A>>2]|0)+1;}u=n+(c[y>>2]<<2)|0;c[u>>2]=(c[u>>2]|0)+(c[z>>2]|0);c[x>>2]=(c[x>>2]|0)+1;}c[h>>2]=c[q>>2];C=c[h>>2]|0;l=g;return C|0;}function lt(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;i=l;l=l+208|0;j=i+192|0;k=i+188|0;m=i+184|0;n=i+180|0;o=i+176|0;p=i+172|0;q=i+168|0;r=i+164|0;s=i+160|0;t=i+156|0;u=i+152|0;v=i+136|0;w=i+120|0;x=i+104|0;y=i+88|0;z=i+84|0;A=i+80|0;B=i+76|0;C=i+72|0;D=i+68|0;E=i+64|0;F=i+60|0;G=i+56|0;H=i+52|0;I=i+48|0;J=i+44|0;K=i+40|0;L=i+36|0;M=i+32|0;N=i+28|0;O=i+24|0;P=i+20|0;Q=i+196|0;R=i+16|0;S=i+12|0;T=i+8|0;U=i+4|0;V=i;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;if((c[o>>2]|0)>>>0<10){c[j>>2]=-20;W=c[j>>2]|0;l=i;return W|0;}c[q>>2]=c[n>>2];c[r>>2]=c[k>>2];c[s>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[t>>2]=(c[p>>2]|0)+4;c[u>>2]=c[t>>2];c[z>>2]=(Eq(c[q>>2]|0)|0)&65535;c[A>>2]=(Eq((c[q>>2]|0)+2|0)|0)&65535;c[B>>2]=(Eq((c[q>>2]|0)+4|0)|0)&65535;c[C>>2]=(c[o>>2]|0)-((c[z>>2]|0)+(c[A>>2]|0)+(c[B>>2]|0)+6);c[D>>2]=(c[q>>2]|0)+6;c[E>>2]=(c[D>>2]|0)+(c[z>>2]|0);c[F>>2]=(c[E>>2]|0)+(c[A>>2]|0);c[G>>2]=(c[F>>2]|0)+(c[B>>2]|0);c[H>>2]=(((c[m>>2]|0)+3|0)>>>0)/4|0;c[I>>2]=(c[r>>2]|0)+(c[H>>2]|0);c[J>>2]=(c[I>>2]|0)+(c[H>>2]|0);c[K>>2]=(c[J>>2]|0)+(c[H>>2]|0);c[L>>2]=c[r>>2];c[M>>2]=c[I>>2];c[N>>2]=c[J>>2];c[O>>2]=c[K>>2];_s(Q,c[p>>2]|0);c[R>>2]=d[Q+2>>0];if((c[C>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[j>>2]=-20;W=c[j>>2]|0;l=i;return W|0;}c[S>>2]=Ds(v,c[D>>2]|0,c[z>>2]|0)|0;if(at(c[S>>2]|0)|0){c[j>>2]=c[S>>2];W=c[j>>2]|0;l=i;return W|0;}c[T>>2]=Ds(w,c[E>>2]|0,c[A>>2]|0)|0;if(at(c[T>>2]|0)|0){c[j>>2]=c[T>>2];W=c[j>>2]|0;l=i;return W|0;}c[U>>2]=Ds(x,c[F>>2]|0,c[B>>2]|0)|0;if(at(c[U>>2]|0)|0){c[j>>2]=c[U>>2];W=c[j>>2]|0;l=i;return W|0;}c[V>>2]=Ds(y,c[G>>2]|0,c[C>>2]|0)|0;if(at(c[V>>2]|0)|0){c[j>>2]=c[V>>2];W=c[j>>2]|0;l=i;return W|0;}V=Fs(v)|0;C=V|(Fs(w)|0);V=C|(Fs(x)|0);c[P>>2]=V|(Fs(y)|0);while(1){if(c[P>>2]|0)break;if((c[O>>2]|0)>>>0>=((c[s>>2]|0)+-7|0)>>>0)break;if(dt()|0){V=mt(v,c[u>>2]|0,c[R>>2]|0)|0;C=c[L>>2]|0;c[L>>2]=C+1;a[C>>0]=V;}if(dt()|0){V=mt(w,c[u>>2]|0,c[R>>2]|0)|0;C=c[M>>2]|0;c[M>>2]=C+1;a[C>>0]=V;}if(dt()|0){V=mt(x,c[u>>2]|0,c[R>>2]|0)|0;C=c[N>>2]|0;c[N>>2]=C+1;a[C>>0]=V;}if(dt()|0){V=mt(y,c[u>>2]|0,c[R>>2]|0)|0;C=c[O>>2]|0;c[O>>2]=C+1;a[C>>0]=V;}dt()|0;V=mt(v,c[u>>2]|0,c[R>>2]|0)|0;C=c[L>>2]|0;c[L>>2]=C+1;a[C>>0]=V;dt()|0;V=mt(w,c[u>>2]|0,c[R>>2]|0)|0;C=c[M>>2]|0;c[M>>2]=C+1;a[C>>0]=V;dt()|0;V=mt(x,c[u>>2]|0,c[R>>2]|0)|0;C=c[N>>2]|0;c[N>>2]=C+1;a[C>>0]=V;dt()|0;V=mt(y,c[u>>2]|0,c[R>>2]|0)|0;C=c[O>>2]|0;c[O>>2]=C+1;a[C>>0]=V;if(dt()|0){V=mt(v,c[u>>2]|0,c[R>>2]|0)|0;C=c[L>>2]|0;c[L>>2]=C+1;a[C>>0]=V;}if(dt()|0){V=mt(w,c[u>>2]|0,c[R>>2]|0)|0;C=c[M>>2]|0;c[M>>2]=C+1;a[C>>0]=V;}if(dt()|0){V=mt(x,c[u>>2]|0,c[R>>2]|0)|0;C=c[N>>2]|0;c[N>>2]=C+1;a[C>>0]=V;}if(dt()|0){V=mt(y,c[u>>2]|0,c[R>>2]|0)|0;C=c[O>>2]|0;c[O>>2]=C+1;a[C>>0]=V;}V=mt(v,c[u>>2]|0,c[R>>2]|0)|0;C=c[L>>2]|0;c[L>>2]=C+1;a[C>>0]=V;V=mt(w,c[u>>2]|0,c[R>>2]|0)|0;C=c[M>>2]|0;c[M>>2]=C+1;a[C>>0]=V;V=mt(x,c[u>>2]|0,c[R>>2]|0)|0;C=c[N>>2]|0;c[N>>2]=C+1;a[C>>0]=V;V=mt(y,c[u>>2]|0,c[R>>2]|0)|0;C=c[O>>2]|0;c[O>>2]=C+1;a[C>>0]=V;V=Fs(v)|0;C=V|(Fs(w)|0);V=C|(Fs(x)|0);c[P>>2]=V|(Fs(y)|0);}if((c[L>>2]|0)>>>0>(c[I>>2]|0)>>>0){c[j>>2]=-20;W=c[j>>2]|0;l=i;return W|0;}if((c[M>>2]|0)>>>0>(c[J>>2]|0)>>>0){c[j>>2]=-20;W=c[j>>2]|0;l=i;return W|0;}if((c[N>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[j>>2]=-20;W=c[j>>2]|0;l=i;return W|0;}nt(c[L>>2]|0,v,c[I>>2]|0,c[u>>2]|0,c[R>>2]|0)|0;nt(c[M>>2]|0,w,c[J>>2]|0,c[u>>2]|0,c[R>>2]|0)|0;nt(c[N>>2]|0,x,c[K>>2]|0,c[u>>2]|0,c[R>>2]|0)|0;nt(c[O>>2]|0,y,c[s>>2]|0,c[u>>2]|0,c[R>>2]|0)|0;R=ct(v)|0;v=R&(ct(w)|0);w=v&(ct(x)|0);c[P>>2]=w&(ct(y)|0);if(c[P>>2]|0){c[j>>2]=c[m>>2];W=c[j>>2]|0;l=i;return W|0;}else{c[j>>2]=-20;W=c[j>>2]|0;l=i;return W|0;}return 0;}function mt(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+16|0;c[h>>2]=b;c[i>>2]=e;c[j>>2]=f;c[k>>2]=gt(c[h>>2]|0,c[j>>2]|0)|0;a[m>>0]=a[(c[i>>2]|0)+(c[k>>2]<<1)>>0]|0;Ps(c[h>>2]|0,d[(c[i>>2]|0)+(c[k>>2]<<1)+1>>0]|0);l=g;return a[m>>0]|0;}function nt(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[i>>2];while(1){if(Fs(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>((c[k>>2]|0)+-4|0)>>>0)break;if(dt()|0){g=mt(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}dt()|0;g=mt(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;if(dt()|0){g=mt(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}g=mt(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if(Fs(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=mt(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=mt(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}l=h;return(c[k>>2]|0)-(c[o>>2]|0)|0;}function ot(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;k=l;l=l+80|0;m=k+72|0;n=k+68|0;o=k+64|0;p=k+60|0;q=k+56|0;r=k+52|0;s=k+48|0;t=k+44|0;u=k+40|0;v=k+36|0;w=k+32|0;x=k+28|0;y=k+24|0;z=k+20|0;A=k+16|0;B=k+12|0;C=k+8|0;D=k+4|0;E=k;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[v>>2]=c[s>>2];if(!(c[t>>2]|0)){c[m>>2]=-72;F=c[m>>2]|0;l=k;return F|0;}c[w>>2]=d[c[v>>2]>>0];s=c[w>>2]|0;a:do{if((c[w>>2]|0)>>>0<128){if((s+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;F=c[m>>2]|0;l=k;return F|0;}c[x>>2]=pt(c[n>>2]|0,(c[o>>2]|0)-1|0,(c[v>>2]|0)+1|0,c[w>>2]|0)|0;if(qt(c[x>>2]|0)|0){c[m>>2]=c[x>>2];F=c[m>>2]|0;l=k;return F|0;}}else{j=c[w>>2]|0;if(s>>>0>=242){c[x>>2]=c[7392+(j-242<<2)>>2];oE(c[n>>2]|0,1,c[o>>2]|0)|0;c[w>>2]=0;break;}c[x>>2]=j-127;c[w>>2]=(((c[x>>2]|0)+1|0)>>>0)/2|0;if(((c[w>>2]|0)+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;F=c[m>>2]|0;l=k;return F|0;}if((c[x>>2]|0)>>>0>=(c[o>>2]|0)>>>0){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}c[v>>2]=(c[v>>2]|0)+1;c[y>>2]=0;while(1){if((c[y>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break a;a[(c[n>>2]|0)+(c[y>>2]|0)>>0]=(d[(c[v>>2]|0)+(((c[y>>2]|0)>>>0)/2|0)>>0]|0)>>4;a[(c[n>>2]|0)+((c[y>>2]|0)+1)>>0]=(d[(c[v>>2]|0)+(((c[y>>2]|0)>>>0)/2|0)>>0]|0)&15;c[y>>2]=(c[y>>2]|0)+2;}}}while(0);y=c[p>>2]|0;v=y+68|0;do{c[y>>2]=0;y=y+4|0;}while((y|0)<(v|0));c[u>>2]=0;c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break;if((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0|0)>=16){G=20;break;}y=(c[p>>2]|0)+((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)<<2)|0;c[y>>2]=(c[y>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+(1<<(d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)>>1);c[z>>2]=(c[z>>2]|0)+1;}if((G|0)==20){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}if(!(c[u>>2]|0)){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}c[A>>2]=(Rs(c[u>>2]|0)|0)+1;if((c[A>>2]|0)>>>0>16){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}c[c[r>>2]>>2]=c[A>>2];c[B>>2]=1<<c[A>>2];c[C>>2]=(c[B>>2]|0)-(c[u>>2]|0);c[D>>2]=1<<(Rs(c[C>>2]|0)|0);c[E>>2]=(Rs(c[C>>2]|0)|0)+1;if((c[D>>2]|0)!=(c[C>>2]|0)){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}a[(c[n>>2]|0)+(c[x>>2]|0)>>0]=c[E>>2];n=(c[p>>2]|0)+(c[E>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+1;if((c[(c[p>>2]|0)+4>>2]|0)>>>0>=2?(c[(c[p>>2]|0)+4>>2]&1|0)==0:0){c[c[q>>2]>>2]=(c[x>>2]|0)+1;c[m>>2]=(c[w>>2]|0)+1;F=c[m>>2]|0;l=k;return F|0;}c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}function pt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+16960|0;g=f+16952|0;h=f+16948|0;i=f+16944|0;j=f+16940|0;k=f+16936|0;m=f+16932|0;n=f+16928|0;o=f+16400|0;p=f;q=f+16924|0;r=f+16920|0;s=f+16916|0;t=f+16912|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[j>>2];c[n>>2]=c[m>>2];c[r>>2]=255;if((c[k>>2]|0)>>>0<2){c[g>>2]=-72;u=c[g>>2]|0;l=f;return u|0;}c[s>>2]=Vs(o,r,q,c[m>>2]|0,c[k>>2]|0)|0;m=(hr(c[s>>2]|0)|0)!=0;j=c[s>>2]|0;if(m){c[g>>2]=j;u=c[g>>2]|0;l=f;return u|0;}if(j>>>0>=(c[k>>2]|0)>>>0){c[g>>2]=-72;u=c[g>>2]|0;l=f;return u|0;}c[n>>2]=(c[n>>2]|0)+(c[s>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[s>>2]|0);c[t>>2]=Us(p,o,c[r>>2]|0,c[q>>2]|0)|0;if(hr(c[t>>2]|0)|0){c[g>>2]=c[t>>2];u=c[g>>2]|0;l=f;return u|0;}else{c[g>>2]=rt(c[h>>2]|0,c[i>>2]|0,c[n>>2]|0,c[k>>2]|0,p)|0;u=c[g>>2]|0;l=f;return u|0;}return 0;}function qt(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=hr(c[d>>2]|0)|0;l=b;return a|0;}function rt(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;i=l;l=l+208|0;j=i+192|0;k=i+188|0;m=i+184|0;n=i+180|0;o=i+176|0;p=i+172|0;q=i+168|0;r=i+164|0;s=i+160|0;t=i+156|0;u=i+152|0;v=i+136|0;w=i+128|0;x=i+120|0;y=i+116|0;z=i+112|0;A=i+108|0;B=i+104|0;C=i+100|0;D=i+96|0;E=i+92|0;F=i+88|0;G=i+84|0;H=i+80|0;I=i+76|0;J=i+72|0;K=i+56|0;L=i+48|0;M=i+40|0;N=i+36|0;O=i+32|0;P=i+28|0;Q=i+24|0;R=i+20|0;S=i+16|0;T=i+12|0;U=i+8|0;V=i+4|0;W=i;c[P>>2]=b;c[Q>>2]=d;c[R>>2]=f;c[S>>2]=g;c[T>>2]=h;c[U>>2]=c[T>>2];c[V>>2]=c[U>>2];c[W>>2]=e[(c[V>>2]|0)+2>>1];V=c[P>>2]|0;P=c[Q>>2]|0;Q=c[R>>2]|0;R=c[S>>2]|0;S=c[T>>2]|0;if(c[W>>2]|0){c[A>>2]=V;c[B>>2]=P;c[C>>2]=Q;c[D>>2]=R;c[E>>2]=S;c[F>>2]=1;c[G>>2]=c[A>>2];c[H>>2]=c[G>>2];c[I>>2]=(c[H>>2]|0)+(c[B>>2]|0);c[J>>2]=(c[I>>2]|0)+-3;c[N>>2]=Ds(K,c[C>>2]|0,c[D>>2]|0)|0;do{if(hr(c[N>>2]|0)|0)c[z>>2]=c[N>>2];else{Es(L,K,c[E>>2]|0);Es(M,K,c[E>>2]|0);while(1){if(Fs(K)|0)break;if((c[H>>2]|0)>>>0>=(c[J>>2]|0)>>>0)break;if(c[F>>2]|0)X=(st(L,K)|0)&255;else X=(tt(L,K)|0)&255;a[c[H>>2]>>0]=X;if(c[F>>2]|0)Y=(st(M,K)|0)&255;else Y=(tt(M,K)|0)&255;a[(c[H>>2]|0)+1>>0]=Y;if((Fs(K)|0)>>>0>0){Z=14;break;}if(c[F>>2]|0)_=(st(L,K)|0)&255;else _=(tt(L,K)|0)&255;a[(c[H>>2]|0)+2>>0]=_;if(c[F>>2]|0)$=(st(M,K)|0)&255;else $=(tt(M,K)|0)&255;a[(c[H>>2]|0)+3>>0]=$;c[H>>2]=(c[H>>2]|0)+4;}if((Z|0)==14)c[H>>2]=(c[H>>2]|0)+2;while(1){if((c[H>>2]|0)>>>0>((c[I>>2]|0)+-2|0)>>>0){Z=24;break;}if(c[F>>2]|0)aa=(st(L,K)|0)&255;else aa=(tt(L,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=aa;if((Fs(K)|0)==3){Z=29;break;}if((c[H>>2]|0)>>>0>((c[I>>2]|0)+-2|0)>>>0){Z=34;break;}if(c[F>>2]|0)ba=(st(M,K)|0)&255;else ba=(tt(M,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=ba;if((Fs(K)|0)==3){Z=39;break;}}if((Z|0)==24){c[z>>2]=-70;break;}else if((Z|0)==29){if(c[F>>2]|0)ca=(st(M,K)|0)&255;else ca=(tt(M,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=ca;}else if((Z|0)==34){c[z>>2]=-70;break;}else if((Z|0)==39){if(c[F>>2]|0)da=(st(L,K)|0)&255;else da=(tt(L,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=da;}c[z>>2]=(c[H>>2]|0)-(c[G>>2]|0);}}while(0);c[O>>2]=c[z>>2];ea=c[O>>2]|0;l=i;return ea|0;}else{c[k>>2]=V;c[m>>2]=P;c[n>>2]=Q;c[o>>2]=R;c[p>>2]=S;c[q>>2]=0;c[r>>2]=c[k>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[s>>2]|0)+(c[m>>2]|0);c[u>>2]=(c[t>>2]|0)+-3;c[y>>2]=Ds(v,c[n>>2]|0,c[o>>2]|0)|0;do{if(hr(c[y>>2]|0)|0)c[j>>2]=c[y>>2];else{Es(w,v,c[p>>2]|0);Es(x,v,c[p>>2]|0);while(1){if(Fs(v)|0)break;if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;if(c[q>>2]|0)fa=(st(w,v)|0)&255;else fa=(tt(w,v)|0)&255;a[c[s>>2]>>0]=fa;if(c[q>>2]|0)ga=(st(x,v)|0)&255;else ga=(tt(x,v)|0)&255;a[(c[s>>2]|0)+1>>0]=ga;if((Fs(v)|0)>>>0>0){Z=58;break;}if(c[q>>2]|0)ha=(st(w,v)|0)&255;else ha=(tt(w,v)|0)&255;a[(c[s>>2]|0)+2>>0]=ha;if(c[q>>2]|0)ia=(st(x,v)|0)&255;else ia=(tt(x,v)|0)&255;a[(c[s>>2]|0)+3>>0]=ia;c[s>>2]=(c[s>>2]|0)+4;}if((Z|0)==58)c[s>>2]=(c[s>>2]|0)+2;while(1){if((c[s>>2]|0)>>>0>((c[t>>2]|0)+-2|0)>>>0){Z=68;break;}if(c[q>>2]|0)ja=(st(w,v)|0)&255;else ja=(tt(w,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ja;if((Fs(v)|0)==3){Z=73;break;}if((c[s>>2]|0)>>>0>((c[t>>2]|0)+-2|0)>>>0){Z=78;break;}if(c[q>>2]|0)ka=(st(x,v)|0)&255;else ka=(tt(x,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ka;if((Fs(v)|0)==3){Z=83;break;}}if((Z|0)==68){c[j>>2]=-70;break;}else if((Z|0)==73){if(c[q>>2]|0)la=(st(x,v)|0)&255;else la=(tt(x,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=la;}else if((Z|0)==78){c[j>>2]=-70;break;}else if((Z|0)==83){if(c[q>>2]|0)ma=(st(w,v)|0)&255;else ma=(tt(w,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ma;}c[j>>2]=(c[s>>2]|0)-(c[r>>2]|0);}}while(0);c[O>>2]=c[j>>2];ea=c[O>>2]|0;l=i;return ea|0;}return 0;}function st(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=ut(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function tt(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=Ms(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function ut(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=gt(c[e>>2]|0,c[f>>2]|0)|0;Ps(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function vt(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;g=l;l=l+2144|0;h=g+2124|0;i=g+2120|0;j=g+2116|0;k=g+2112|0;m=g+1760|0;n=g+1248|0;o=g+1168|0;p=g+1088|0;q=g+2108|0;r=g;s=g+2104|0;t=g+2100|0;u=g+2096|0;v=g+2092|0;w=g+2128|0;x=g+2088|0;y=g+2084|0;z=g+2080|0;A=g+2076|0;B=g+2072|0;C=g+2068|0;D=g+2064|0;E=g+2060|0;F=g+2056|0;G=g+2052|0;H=g+2048|0;I=g+2044|0;J=g+2040|0;K=g+2036|0;L=g+2032|0;M=g+2028|0;N=g+2024|0;O=g+2020|0;P=g+2016|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;f=o;e=f+68|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));f=p;e=f+72|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));c[q>>2]=p+4;_s(w,c[i>>2]|0);c[x>>2]=d[w>>0];c[z>>2]=(c[i>>2]|0)+4;c[A>>2]=c[z>>2];if((c[x>>2]|0)>>>0>16){c[h>>2]=-44;Q=c[h>>2]|0;l=g;return Q|0;}c[y>>2]=ot(m,256,o,v,s,c[j>>2]|0,c[k>>2]|0)|0;if(at(c[y>>2]|0)|0){c[h>>2]=c[y>>2];Q=c[h>>2]|0;l=g;return Q|0;}if((c[s>>2]|0)>>>0>(c[x>>2]|0)>>>0){c[h>>2]=-44;Q=c[h>>2]|0;l=g;return Q|0;}c[t>>2]=c[s>>2];while(1){if(c[o+(c[t>>2]<<2)>>2]|0)break;c[t>>2]=(c[t>>2]|0)+-1;}c[C>>2]=0;c[B>>2]=1;while(1){R=c[C>>2]|0;if((c[B>>2]|0)>>>0>=((c[t>>2]|0)+1|0)>>>0)break;c[D>>2]=R;c[C>>2]=(c[C>>2]|0)+(c[o+(c[B>>2]<<2)>>2]|0);c[(c[q>>2]|0)+(c[B>>2]<<2)>>2]=c[D>>2];c[B>>2]=(c[B>>2]|0)+1;}c[c[q>>2]>>2]=R;c[u>>2]=c[C>>2];c[E>>2]=0;while(1){if((c[E>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;c[F>>2]=d[m+(c[E>>2]|0)>>0];C=(c[q>>2]|0)+(c[F>>2]<<2)|0;R=c[C>>2]|0;c[C>>2]=R+1;c[G>>2]=R;a[n+(c[G>>2]<<1)>>0]=c[E>>2];a[n+(c[G>>2]<<1)+1>>0]=c[F>>2];c[E>>2]=(c[E>>2]|0)+1;}c[c[q>>2]>>2]=0;c[H>>2]=r;c[I>>2]=(c[x>>2]|0)-(c[s>>2]|0)-1;c[J>>2]=0;c[K>>2]=1;while(1){if((c[K>>2]|0)>>>0>=((c[t>>2]|0)+1|0)>>>0)break;c[L>>2]=c[J>>2];c[J>>2]=(c[J>>2]|0)+(c[o+(c[K>>2]<<2)>>2]<<(c[K>>2]|0)+(c[I>>2]|0));c[(c[H>>2]|0)+(c[K>>2]<<2)>>2]=c[L>>2];c[K>>2]=(c[K>>2]|0)+1;}c[M>>2]=(c[s>>2]|0)+1-(c[t>>2]|0);c[N>>2]=c[M>>2];while(1){if((c[N>>2]|0)>>>0>=((c[x>>2]|0)-(c[M>>2]|0)+1|0)>>>0)break;c[O>>2]=r+((c[N>>2]|0)*68|0);c[P>>2]=1;while(1){if((c[P>>2]|0)>>>0>=((c[t>>2]|0)+1|0)>>>0)break;c[(c[O>>2]|0)+(c[P>>2]<<2)>>2]=(c[(c[H>>2]|0)+(c[P>>2]<<2)>>2]|0)>>>(c[N>>2]|0);c[P>>2]=(c[P>>2]|0)+1;}c[N>>2]=(c[N>>2]|0)+1;}xt(c[A>>2]|0,c[x>>2]|0,n,c[u>>2]|0,p,r,c[t>>2]|0,(c[s>>2]|0)+1|0);a[w+2>>0]=c[x>>2];a[w+1>>0]=1;x=c[i>>2]|0;a[x>>0]=a[w>>0]|0;a[x+1>>0]=a[w+1>>0]|0;a[x+2>>0]=a[w+2>>0]|0;a[x+3>>0]=a[w+3>>0]|0;c[h>>2]=c[y>>2];Q=c[h>>2]|0;l=g;return Q|0;}function wt(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;h=l;l=l+208|0;i=h+200|0;j=h+196|0;k=h+192|0;m=h+188|0;n=h+184|0;o=h+180|0;p=h+176|0;q=h+172|0;r=h+168|0;s=h+164|0;t=h+160|0;u=h+144|0;v=h+128|0;w=h+112|0;x=h+96|0;y=h+88|0;z=h+84|0;A=h+80|0;B=h+76|0;C=h+72|0;D=h+68|0;E=h+64|0;F=h+60|0;G=h+56|0;H=h+52|0;I=h+48|0;J=h+44|0;K=h+40|0;L=h+36|0;M=h+32|0;N=h+28|0;O=h+24|0;P=h+204|0;Q=h+20|0;R=h+16|0;S=h+12|0;T=h+8|0;U=h+4|0;V=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;if((c[n>>2]|0)>>>0<10){c[i>>2]=-20;W=c[i>>2]|0;l=h;return W|0;}c[p>>2]=c[m>>2];c[q>>2]=c[j>>2];c[r>>2]=(c[q>>2]|0)+(c[k>>2]|0);c[s>>2]=(c[o>>2]|0)+4;c[t>>2]=c[s>>2];c[y>>2]=(Eq(c[p>>2]|0)|0)&65535;c[z>>2]=(Eq((c[p>>2]|0)+2|0)|0)&65535;c[A>>2]=(Eq((c[p>>2]|0)+4|0)|0)&65535;c[B>>2]=(c[n>>2]|0)-((c[y>>2]|0)+(c[z>>2]|0)+(c[A>>2]|0)+6);c[C>>2]=(c[p>>2]|0)+6;c[D>>2]=(c[C>>2]|0)+(c[y>>2]|0);c[E>>2]=(c[D>>2]|0)+(c[z>>2]|0);c[F>>2]=(c[E>>2]|0)+(c[A>>2]|0);c[G>>2]=(((c[k>>2]|0)+3|0)>>>0)/4|0;c[H>>2]=(c[q>>2]|0)+(c[G>>2]|0);c[I>>2]=(c[H>>2]|0)+(c[G>>2]|0);c[J>>2]=(c[I>>2]|0)+(c[G>>2]|0);c[K>>2]=c[q>>2];c[L>>2]=c[H>>2];c[M>>2]=c[I>>2];c[N>>2]=c[J>>2];_s(P,c[o>>2]|0);c[Q>>2]=d[P+2>>0];if((c[B>>2]|0)>>>0>(c[n>>2]|0)>>>0){c[i>>2]=-20;W=c[i>>2]|0;l=h;return W|0;}c[R>>2]=Ds(u,c[C>>2]|0,c[y>>2]|0)|0;if(at(c[R>>2]|0)|0){c[i>>2]=c[R>>2];W=c[i>>2]|0;l=h;return W|0;}c[S>>2]=Ds(v,c[D>>2]|0,c[z>>2]|0)|0;if(at(c[S>>2]|0)|0){c[i>>2]=c[S>>2];W=c[i>>2]|0;l=h;return W|0;}c[T>>2]=Ds(w,c[E>>2]|0,c[A>>2]|0)|0;if(at(c[T>>2]|0)|0){c[i>>2]=c[T>>2];W=c[i>>2]|0;l=h;return W|0;}c[U>>2]=Ds(x,c[F>>2]|0,c[B>>2]|0)|0;if(at(c[U>>2]|0)|0){c[i>>2]=c[U>>2];W=c[i>>2]|0;l=h;return W|0;}U=Fs(u)|0;B=U|(Fs(v)|0);U=B|(Fs(w)|0);c[O>>2]=U|(Fs(x)|0);while(1){if(c[O>>2]|0)break;if((c[N>>2]|0)>>>0>=((c[r>>2]|0)+-7|0)>>>0)break;if(dt()|0){U=et(c[K>>2]|0,u,c[t>>2]|0,c[Q>>2]|0)|0;c[K>>2]=(c[K>>2]|0)+U;}if(dt()|0){U=et(c[L>>2]|0,v,c[t>>2]|0,c[Q>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+U;}if(dt()|0){U=et(c[M>>2]|0,w,c[t>>2]|0,c[Q>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+U;}if(dt()|0){U=et(c[N>>2]|0,x,c[t>>2]|0,c[Q>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+U;}dt()|0;U=et(c[K>>2]|0,u,c[t>>2]|0,c[Q>>2]|0)|0;c[K>>2]=(c[K>>2]|0)+U;dt()|0;U=et(c[L>>2]|0,v,c[t>>2]|0,c[Q>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+U;dt()|0;U=et(c[M>>2]|0,w,c[t>>2]|0,c[Q>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+U;dt()|0;U=et(c[N>>2]|0,x,c[t>>2]|0,c[Q>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+U;if(dt()|0){U=et(c[K>>2]|0,u,c[t>>2]|0,c[Q>>2]|0)|0;c[K>>2]=(c[K>>2]|0)+U;}if(dt()|0){U=et(c[L>>2]|0,v,c[t>>2]|0,c[Q>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+U;}if(dt()|0){U=et(c[M>>2]|0,w,c[t>>2]|0,c[Q>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+U;}if(dt()|0){U=et(c[N>>2]|0,x,c[t>>2]|0,c[Q>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+U;}U=et(c[K>>2]|0,u,c[t>>2]|0,c[Q>>2]|0)|0;c[K>>2]=(c[K>>2]|0)+U;U=et(c[L>>2]|0,v,c[t>>2]|0,c[Q>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+U;U=et(c[M>>2]|0,w,c[t>>2]|0,c[Q>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+U;U=et(c[N>>2]|0,x,c[t>>2]|0,c[Q>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+U;U=Fs(u)|0;B=U|(Fs(v)|0);U=B|(Fs(w)|0);c[O>>2]=U|(Fs(x)|0);}if((c[K>>2]|0)>>>0>(c[H>>2]|0)>>>0){c[i>>2]=-20;W=c[i>>2]|0;l=h;return W|0;}if((c[L>>2]|0)>>>0>(c[I>>2]|0)>>>0){c[i>>2]=-20;W=c[i>>2]|0;l=h;return W|0;}if((c[M>>2]|0)>>>0>(c[J>>2]|0)>>>0){c[i>>2]=-20;W=c[i>>2]|0;l=h;return W|0;}bt(c[K>>2]|0,u,c[H>>2]|0,c[t>>2]|0,c[Q>>2]|0)|0;bt(c[L>>2]|0,v,c[I>>2]|0,c[t>>2]|0,c[Q>>2]|0)|0;bt(c[M>>2]|0,w,c[J>>2]|0,c[t>>2]|0,c[Q>>2]|0)|0;bt(c[N>>2]|0,x,c[r>>2]|0,c[t>>2]|0,c[Q>>2]|0)|0;Q=ct(u)|0;u=Q&(ct(v)|0);v=u&(ct(w)|0);c[V>>2]=v&(ct(x)|0);if(c[V>>2]|0){c[i>>2]=c[k>>2];W=c[i>>2]|0;l=h;return W|0;}else{c[i>>2]=-20;W=c[i>>2]|0;l=h;return W|0;}return 0;}function xt(e,f,g,h,i,j,k,m){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;n=l;l=l+160|0;o=n+140|0;p=n+136|0;q=n+132|0;r=n+128|0;s=n+124|0;t=n+120|0;u=n+116|0;v=n+112|0;w=n;x=n+108|0;y=n+104|0;z=n+100|0;A=n+148|0;B=n+96|0;C=n+92|0;D=n+88|0;E=n+84|0;F=n+80|0;G=n+76|0;H=n+144|0;I=n+72|0;J=n+68|0;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=k;c[v>>2]=m;c[x>>2]=(c[v>>2]|0)-(c[p>>2]|0);c[y>>2]=(c[v>>2]|0)-(c[u>>2]|0);u=w;m=c[t>>2]|0;k=u+68|0;do{c[u>>2]=c[m>>2];u=u+4|0;m=m+4|0;}while((u|0)<(k|0));c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;b[A>>1]=d[(c[q>>2]|0)+(c[z>>2]<<1)>>0]|0;c[B>>2]=d[(c[q>>2]|0)+(c[z>>2]<<1)+1>>0];c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);c[D>>2]=c[w+(c[B>>2]<<2)>>2];c[E>>2]=1<<(c[p>>2]|0)-(c[C>>2]|0);a:do{if(((c[p>>2]|0)-(c[C>>2]|0)|0)>>>0>=(c[y>>2]|0)>>>0){m=(c[C>>2]|0)+(c[x>>2]|0)|0;c[G>>2]=m;c[G>>2]=(c[G>>2]|0)<1?1:m;c[F>>2]=c[(c[s>>2]|0)+(c[G>>2]<<2)>>2];yt((c[o>>2]|0)+(c[D>>2]<<2)|0,(c[p>>2]|0)-(c[C>>2]|0)|0,c[C>>2]|0,(c[t>>2]|0)+((c[C>>2]|0)*68|0)|0,c[G>>2]|0,(c[q>>2]|0)+(c[F>>2]<<1)|0,(c[r>>2]|0)-(c[F>>2]|0)|0,c[v>>2]|0,b[A>>1]|0);}else{zt(H,b[A>>1]|0);a[H+2>>0]=c[C>>2];a[H+3>>0]=1;c[J>>2]=(c[D>>2]|0)+(c[E>>2]|0);c[I>>2]=c[D>>2];while(1){if((c[I>>2]|0)>>>0>=(c[J>>2]|0)>>>0)break a;m=(c[o>>2]|0)+(c[I>>2]<<2)|0;b[m>>1]=b[H>>1]|0;b[m+2>>1]=b[H+2>>1]|0;c[I>>2]=(c[I>>2]|0)+1;}}}while(0);m=w+(c[B>>2]<<2)|0;c[m>>2]=(c[m>>2]|0)+(c[E>>2]|0);c[z>>2]=(c[z>>2]|0)+1;}l=n;return;}function yt(f,g,h,i,j,k,m,n,o){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;p=l;l=l+160|0;q=p+136|0;r=p+132|0;s=p+128|0;t=p+124|0;u=p+120|0;v=p+116|0;w=p+112|0;x=p+108|0;y=p+144|0;z=p+140|0;A=p;B=p+104|0;C=p+100|0;D=p+96|0;E=p+92|0;F=p+88|0;G=p+84|0;H=p+80|0;I=p+76|0;J=p+72|0;K=p+68|0;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=j;c[v>>2]=k;c[w>>2]=m;c[x>>2]=n;b[y>>1]=o;o=A;n=c[t>>2]|0;t=o+68|0;do{c[o>>2]=c[n>>2];o=o+4|0;n=n+4|0;}while((o|0)<(t|0));a:do{if((c[u>>2]|0)>1){c[C>>2]=c[A+(c[u>>2]<<2)>>2];zt(z,b[y>>1]|0);a[z+2>>0]=c[s>>2];a[z+3>>0]=1;c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>=(c[C>>2]|0)>>>0)break a;n=(c[q>>2]|0)+(c[B>>2]<<2)|0;b[n>>1]=b[z>>1]|0;b[n+2>>1]=b[z+2>>1]|0;c[B>>2]=(c[B>>2]|0)+1;}}}while(0);c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[E>>2]=d[(c[v>>2]|0)+(c[D>>2]<<1)>>0];c[F>>2]=d[(c[v>>2]|0)+(c[D>>2]<<1)+1>>0];c[G>>2]=(c[x>>2]|0)-(c[F>>2]|0);c[H>>2]=1<<(c[r>>2]|0)-(c[G>>2]|0);c[I>>2]=c[A+(c[F>>2]<<2)>>2];c[J>>2]=c[I>>2];c[K>>2]=(c[I>>2]|0)+(c[H>>2]|0);zt(z,(e[y>>1]|0)+(c[E>>2]<<8)&65535);a[z+2>>0]=(c[G>>2]|0)+(c[s>>2]|0);a[z+3>>0]=2;do{B=c[q>>2]|0;C=c[J>>2]|0;c[J>>2]=C+1;u=B+(C<<2)|0;b[u>>1]=b[z>>1]|0;b[u+2>>1]=b[z+2>>1]|0;}while((c[J>>2]|0)>>>0<(c[K>>2]|0)>>>0);u=A+(c[F>>2]<<2)|0;c[u>>2]=(c[u>>2]|0)+(c[H>>2]|0);c[D>>2]=(c[D>>2]|0)+1;}l=p;return;}function zt(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+4|0;i=g+8|0;j=g;c[h>>2]=d;b[i>>1]=f;f=(Gq()|0)!=0;d=c[h>>2]|0;if(f){At(d,b[i>>1]|0);l=g;return;}else{c[j>>2]=d;a[c[j>>2]>>0]=b[i>>1];a[(c[j>>2]|0)+1>>0]=(e[i>>1]|0)>>8;l=g;return;}}function At(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;h=f+4|0;c[g>>2]=d;b[h>>1]=e;e=c[g>>2]|0;a[e>>0]=a[h>>0]|0;a[e+1>>0]=a[h+1>>0]|0;l=f;return;}function Bt(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+80|0;i=h+60|0;j=h+56|0;k=h+52|0;m=h+48|0;n=h+44|0;o=h+40|0;p=h+36|0;q=h+32|0;r=h+28|0;s=h+24|0;t=h+8|0;u=h+64|0;v=h+4|0;w=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[j>>2];c[q>>2]=(c[p>>2]|0)+(c[k>>2]|0);c[r>>2]=(c[o>>2]|0)+4;c[s>>2]=c[r>>2];_s(u,c[o>>2]|0);c[v>>2]=d[u+2>>0];c[w>>2]=Ds(t,c[m>>2]|0,c[n>>2]|0)|0;if(at(c[w>>2]|0)|0){c[i>>2]=c[w>>2];x=c[i>>2]|0;l=h;return x|0;}nt(c[p>>2]|0,t,c[q>>2]|0,c[s>>2]|0,c[v>>2]|0)|0;if(ct(t)|0){c[i>>2]=c[k>>2];x=c[i>>2]|0;l=h;return x|0;}else{c[i>>2]=-20;x=c[i>>2]|0;l=h;return x|0;}return 0;}function Ct(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[d>>2]=a;c[(c[d>>2]|0)+21536>>2]=5;c[(c[d>>2]|0)+21580>>2]=0;c[(c[d>>2]|0)+21520>>2]=0;c[(c[d>>2]|0)+21524>>2]=0;c[(c[d>>2]|0)+21528>>2]=0;c[(c[d>>2]|0)+21532>>2]=0;c[(c[d>>2]|0)+5132>>2]=201326604;c[(c[d>>2]|0)+21588>>2]=0;c[(c[d>>2]|0)+21584>>2]=0;c[(c[d>>2]|0)+21684>>2]=0;c[e>>2]=0;while(1){if((c[e>>2]|0)>=3)break;c[(c[d>>2]|0)+21540+(c[e>>2]<<2)>>2]=c[11940+(c[e>>2]<<2)>>2];c[e>>2]=(c[e>>2]|0)+1;}l=b;return 0;}function Dt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[i>>2]|0)>>>0<8){c[f>>2]=Et(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;m=c[f>>2]|0;l=e;return m|0;}c[j>>2]=Bq(c[h>>2]|0)|0;if((c[j>>2]|0)!=-332356553){c[f>>2]=Et(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;m=c[f>>2]|0;l=e;return m|0;}j=Bq((c[h>>2]|0)+4|0)|0;c[(c[g>>2]|0)+21684>>2]=j;c[h>>2]=(c[h>>2]|0)+8;c[i>>2]=(c[i>>2]|0)-8;c[k>>2]=Ft(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;if(hr(c[k>>2]|0)|0){c[f>>2]=-30;m=c[f>>2]|0;l=e;return m|0;}else{c[h>>2]=(c[h>>2]|0)+(c[k>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[k>>2]|0);c[f>>2]=Et(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;m=c[f>>2]|0;l=e;return m|0;}return 0;}function Et(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+21532>>2]=c[(c[f>>2]|0)+21520>>2];c[(c[f>>2]|0)+21528>>2]=(c[g>>2]|0)+(0-((c[(c[f>>2]|0)+21520>>2]|0)-(c[(c[f>>2]|0)+21524>>2]|0)));c[(c[f>>2]|0)+21524>>2]=c[g>>2];c[(c[f>>2]|0)+21520>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return 0;}function Ft(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;e=l;l=l+336|0;f=e+324|0;g=e+320|0;h=e+316|0;i=e+312|0;j=e+308|0;k=e+304|0;m=e+300|0;n=e+192|0;o=e+296|0;p=e+292|0;q=e+288|0;r=e+284|0;s=e+80|0;t=e+280|0;u=e+276|0;v=e+272|0;w=e+268|0;x=e;y=e+264|0;z=e+260|0;A=e+256|0;B=e+252|0;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=c[h>>2];c[k>>2]=(c[j>>2]|0)+(c[i>>2]|0);c[m>>2]=vt((c[g>>2]|0)+5132|0,c[h>>2]|0,c[i>>2]|0)|0;if(hr(c[m>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[j>>2]=(c[j>>2]|0)+(c[m>>2]|0);c[o>>2]=28;c[q>>2]=Vs(n,o,p,c[j>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0)|0;if(hr(c[q>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[p>>2]|0)>>>0>8){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[r>>2]=Us((c[g>>2]|0)+2052|0,n,c[o>>2]|0,c[p>>2]|0)|0;if(hr(c[r>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[j>>2]=(c[j>>2]|0)+(c[q>>2]|0);c[t>>2]=52;c[v>>2]=Vs(s,t,u,c[j>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0)|0;if(hr(c[v>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[u>>2]|0)>>>0>9){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[w>>2]=Us((c[g>>2]|0)+3080|0,s,c[t>>2]|0,c[u>>2]|0)|0;if(hr(c[w>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[j>>2]=(c[j>>2]|0)+(c[v>>2]|0);c[y>>2]=35;c[A>>2]=Vs(x,y,z,c[j>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0)|0;if(hr(c[A>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[z>>2]|0)>>>0>9){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[B>>2]=Us(c[g>>2]|0,x,c[y>>2]|0,c[z>>2]|0)|0;if(hr(c[B>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[j>>2]=(c[j>>2]|0)+(c[A>>2]|0);if(((c[j>>2]|0)+12|0)>>>0>(c[k>>2]|0)>>>0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}k=Bq(c[j>>2]|0)|0;c[(c[g>>2]|0)+21540>>2]=k;if(c[(c[g>>2]|0)+21540>>2]|0?(c[(c[g>>2]|0)+21540>>2]|0)>>>0<(c[i>>2]|0)>>>0:0){k=Bq((c[j>>2]|0)+4|0)|0;c[(c[g>>2]|0)+21540+4>>2]=k;if(c[(c[g>>2]|0)+21540+4>>2]|0?(c[(c[g>>2]|0)+21540+4>>2]|0)>>>0<(c[i>>2]|0)>>>0:0){k=Bq((c[j>>2]|0)+8|0)|0;c[(c[g>>2]|0)+21540+8>>2]=k;if(c[(c[g>>2]|0)+21540+8>>2]|0?(c[(c[g>>2]|0)+21540+8>>2]|0)>>>0<(c[i>>2]|0)>>>0:0){c[j>>2]=(c[j>>2]|0)+12;c[(c[g>>2]|0)+21588>>2]=1;c[(c[g>>2]|0)+21584>>2]=1;c[f>>2]=(c[j>>2]|0)-(c[h>>2]|0);C=c[f>>2]|0;l=e;return C|0;}c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}function Gt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;if((c[a>>2]|0)==0?(c[a+4>>2]|0)==0:0){c[a>>2]=c[2988];c[a+4>>2]=c[2989];c[a+8>>2]=c[2990];}if(c[a>>2]|0?c[a+4>>2]|0:0){c[e>>2]=qc[c[a>>2]&63](c[a+8>>2]|0,152808)|0;if(c[e>>2]|0){f=(c[e>>2]|0)+21692|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];Ct(c[e>>2]|0)|0;c[d>>2]=c[e>>2];g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=0;g=c[d>>2]|0;l=b;return g|0;}}c[d>>2]=0;g=c[d>>2]|0;l=b;return g|0;}function Ht(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[d+8>>2]=a;c[e>>2]=b;c[f>>2]=Cy(c[e>>2]|0)|0;l=d;return c[f>>2]|0;}function It(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[d+4>>2]=a;c[e>>2]=b;Dy(c[e>>2]|0);l=d;return;}function Jt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=Ou(c[g>>2]|0)|0;if(jr(c[j>>2]|0)|0){c[f>>2]=c[j>>2];m=c[f>>2]|0;l=e;return m|0;}if((c[h>>2]|0)!=0&(c[i>>2]|0)!=0?(c[k>>2]=Pu(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0,jr(c[k>>2]|0)|0):0){c[f>>2]=-30;m=c[f>>2]|0;l=e;return m|0;}c[f>>2]=0;m=c[f>>2]|0;l=e;return m|0;}function Kt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)==(c[(c[e>>2]|0)+21520>>2]|0)){l=d;return;}c[(c[e>>2]|0)+21532>>2]=c[(c[e>>2]|0)+21520>>2];c[(c[e>>2]|0)+21528>>2]=(c[f>>2]|0)+(0-((c[(c[e>>2]|0)+21520>>2]|0)-(c[(c[e>>2]|0)+21524>>2]|0)));c[(c[e>>2]|0)+21524>>2]=c[f>>2];c[(c[e>>2]|0)+21520>>2]=c[f>>2];l=d;return;}function Lt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;g=l;l=l+80|0;h=g+68|0;i=g+64|0;j=g+60|0;k=g+56|0;m=g+52|0;n=g+48|0;o=g+44|0;p=g+40|0;q=g+36|0;r=g+32|0;s=g+28|0;t=g+24|0;u=g+16|0;v=g+8|0;w=g+4|0;x=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=(c[o>>2]|0)+(c[n>>2]|0);c[q>>2]=c[j>>2];c[r>>2]=c[q>>2];c[s>>2]=(c[q>>2]|0)+(c[k>>2]|0);c[t>>2]=c[n>>2];c[u>>2]=0;c[u+4>>2]=0;if((c[n>>2]|0)>>>0<8){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}c[v>>2]=Nq(c[m>>2]|0,5)|0;if(jr(c[v>>2]|0)|0){c[h>>2]=c[v>>2];y=c[h>>2]|0;l=g;return y|0;}if((c[n>>2]|0)>>>0<((c[v>>2]|0)+3|0)>>>0){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}if(Mt(c[i>>2]|0,c[m>>2]|0,c[v>>2]|0)|0){c[h>>2]=-20;y=c[h>>2]|0;l=g;return y|0;}c[o>>2]=(c[o>>2]|0)+(c[v>>2]|0);c[t>>2]=(c[t>>2]|0)-(c[v>>2]|0);a:while(1){c[w>>2]=0;c[x>>2]=kr(c[o>>2]|0,(c[p>>2]|0)-(c[o>>2]|0)|0,u)|0;if(jr(c[x>>2]|0)|0){z=11;break;}c[o>>2]=(c[o>>2]|0)+3;c[t>>2]=(c[t>>2]|0)-3;if((c[x>>2]|0)>>>0>(c[t>>2]|0)>>>0){z=13;break;}switch(c[u>>2]|0){case 2:{z=17;break a;break;}case 0:{c[w>>2]=Nt(c[i>>2]|0,c[r>>2]|0,(c[s>>2]|0)-(c[r>>2]|0)|0,c[o>>2]|0,c[x>>2]|0)|0;break;}case 1:{c[w>>2]=Ot(c[r>>2]|0,(c[s>>2]|0)-(c[r>>2]|0)|0,c[o>>2]|0,c[x>>2]|0)|0;break;}case 3:{if(c[t>>2]|0){z=19;break a;}break;}default:{z=20;break a;}}if(!(c[x>>2]|0)){z=25;break;}v=(jr(c[w>>2]|0)|0)!=0;A=c[w>>2]|0;if(v){z=23;break;}c[r>>2]=(c[r>>2]|0)+A;c[o>>2]=(c[o>>2]|0)+(c[x>>2]|0);c[t>>2]=(c[t>>2]|0)-(c[x>>2]|0);}if((z|0)==11){c[h>>2]=c[x>>2];y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==13){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==17){c[h>>2]=-1;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==19){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==20){c[h>>2]=-1;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==23){c[h>>2]=A;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==25){c[h>>2]=(c[r>>2]|0)-(c[q>>2]|0);y=c[h>>2]|0;l=g;return y|0;}return 0;}function Mt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=zq((c[g>>2]|0)+21544|0,c[h>>2]|0,c[i>>2]|0)|0;if(au()|0?(c[(c[g>>2]|0)+21544+8>>2]|0)>>>0>25:0){c[f>>2]=-14;k=c[f>>2]|0;l=e;return k|0;}c[f>>2]=c[j>>2];k=c[f>>2]|0;l=e;return k|0;}function Nt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];if((c[n>>2]|0)>>>0>=131072){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}c[p>>2]=Pt(c[i>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;m=(jr(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(m){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+f;c[n>>2]=(c[n>>2]|0)-(c[p>>2]|0);c[h>>2]=Qt(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function Ot(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0){c[g>>2]=-70;m=c[g>>2]|0;l=f;return m|0;}else{mE(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[g>>2]=c[k>>2];m=c[g>>2]|0;l=f;return m|0;}return 0;}function Pt(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;g=l;l=l+80|0;h=g+64|0;i=g+60|0;j=g+56|0;k=g+52|0;m=g+48|0;n=g+44|0;o=g+40|0;p=g+36|0;q=g+32|0;r=g+28|0;s=g+24|0;t=g+20|0;u=g+16|0;v=g+12|0;w=g+8|0;x=g+4|0;y=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[j>>2];if((c[k>>2]|0)>>>0<3){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}switch((d[c[m>>2]>>0]|0)>>6|0){case 0:{c[p>>2]=0;c[q>>2]=(d[c[m>>2]>>0]|0)>>4&3;if((c[k>>2]|0)>>>0<5){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}switch(c[q>>2]|0){case 3:{c[q>>2]=5;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<14)+((d[(c[m>>2]|0)+1>>0]|0)<<6)+((d[(c[m>>2]|0)+2>>0]|0)>>2);c[o>>2]=(((d[(c[m>>2]|0)+2>>0]|0)&3)<<16)+((d[(c[m>>2]|0)+3>>0]|0)<<8)+(d[(c[m>>2]|0)+4>>0]|0);break;}case 2:{c[q>>2]=4;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<10)+((d[(c[m>>2]|0)+1>>0]|0)<<2)+((d[(c[m>>2]|0)+2>>0]|0)>>6);c[o>>2]=(((d[(c[m>>2]|0)+2>>0]|0)&63)<<8)+(d[(c[m>>2]|0)+3>>0]|0);break;}default:{c[q>>2]=3;c[p>>2]=(d[c[m>>2]>>0]|0)&16;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<6)+((d[(c[m>>2]|0)+1>>0]|0)>>2);c[o>>2]=(((d[(c[m>>2]|0)+1>>0]|0)&3)<<8)+(d[(c[m>>2]|0)+2>>0]|0);}}if((c[n>>2]|0)>>>0>131072){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}if(((c[o>>2]|0)+(c[q>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}j=(c[i>>2]|0)+21580|0;f=c[n>>2]|0;e=(c[m>>2]|0)+(c[q>>2]|0)|0;b=c[o>>2]|0;if(c[p>>2]|0)A=lu(j,f,e,b)|0;else A=mu(j,f,e,b)|0;if(jr(A)|0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{c[(c[i>>2]|0)+21572>>2]=(c[i>>2]|0)+21580;c[(c[i>>2]|0)+21576>>2]=c[n>>2];n=(c[i>>2]|0)+21580+(c[(c[i>>2]|0)+21576>>2]|0)|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;a[n+4>>0]=0;a[n+5>>0]=0;a[n+6>>0]=0;a[n+7>>0]=0;c[h>>2]=(c[o>>2]|0)+(c[q>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 1:{c[t>>2]=(d[c[m>>2]>>0]|0)>>4&3;if((c[t>>2]|0)!=1){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}if(!(c[(c[i>>2]|0)+21568>>2]|0)){c[h>>2]=-30;z=c[h>>2]|0;l=g;return z|0;}c[t>>2]=3;c[r>>2]=(((d[c[m>>2]>>0]|0)&15)<<6)+((d[(c[m>>2]|0)+1>>0]|0)>>2);c[s>>2]=(((d[(c[m>>2]|0)+1>>0]|0)&3)<<8)+(d[(c[m>>2]|0)+2>>0]|0);if(((c[s>>2]|0)+(c[t>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}c[u>>2]=nu((c[i>>2]|0)+21580|0,c[r>>2]|0,(c[m>>2]|0)+(c[t>>2]|0)|0,c[s>>2]|0,(c[i>>2]|0)+5132|0)|0;if(jr(c[u>>2]|0)|0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{c[(c[i>>2]|0)+21572>>2]=(c[i>>2]|0)+21580;c[(c[i>>2]|0)+21576>>2]=c[r>>2];r=(c[i>>2]|0)+21580+(c[(c[i>>2]|0)+21576>>2]|0)|0;a[r>>0]=0;a[r+1>>0]=0;a[r+2>>0]=0;a[r+3>>0]=0;a[r+4>>0]=0;a[r+5>>0]=0;a[r+6>>0]=0;a[r+7>>0]=0;c[h>>2]=(c[s>>2]|0)+(c[t>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 2:{c[w>>2]=(d[c[m>>2]>>0]|0)>>4&3;switch(c[w>>2]|0){case 3:{c[v>>2]=(((d[c[m>>2]>>0]|0)&15)<<16)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(d[(c[m>>2]|0)+2>>0]|0);break;}case 2:{c[v>>2]=(((d[c[m>>2]>>0]|0)&15)<<8)+(d[(c[m>>2]|0)+1>>0]|0);break;}default:{c[w>>2]=1;c[v>>2]=(d[c[m>>2]>>0]|0)&31;}}if(((c[w>>2]|0)+(c[v>>2]|0)+8|0)>>>0<=(c[k>>2]|0)>>>0){c[(c[i>>2]|0)+21572>>2]=(c[m>>2]|0)+(c[w>>2]|0);c[(c[i>>2]|0)+21576>>2]=c[v>>2];c[h>>2]=(c[w>>2]|0)+(c[v>>2]|0);z=c[h>>2]|0;l=g;return z|0;}if(((c[v>>2]|0)+(c[w>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{mE((c[i>>2]|0)+21580|0,(c[m>>2]|0)+(c[w>>2]|0)|0,c[v>>2]|0)|0;c[(c[i>>2]|0)+21572>>2]=(c[i>>2]|0)+21580;c[(c[i>>2]|0)+21576>>2]=c[v>>2];t=(c[i>>2]|0)+21580+(c[(c[i>>2]|0)+21576>>2]|0)|0;a[t>>0]=0;a[t+1>>0]=0;a[t+2>>0]=0;a[t+3>>0]=0;a[t+4>>0]=0;a[t+5>>0]=0;a[t+6>>0]=0;a[t+7>>0]=0;c[h>>2]=(c[w>>2]|0)+(c[v>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 3:{c[y>>2]=(d[c[m>>2]>>0]|0)>>4&3;switch(c[y>>2]|0){case 3:{c[x>>2]=(((d[c[m>>2]>>0]|0)&15)<<16)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(d[(c[m>>2]|0)+2>>0]|0);if((c[k>>2]|0)>>>0<4){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}break;}case 2:{c[x>>2]=(((d[c[m>>2]>>0]|0)&15)<<8)+(d[(c[m>>2]|0)+1>>0]|0);break;}default:{c[y>>2]=1;c[x>>2]=(d[c[m>>2]>>0]|0)&31;}}if((c[x>>2]|0)>>>0>131072){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{oE((c[i>>2]|0)+21580|0,(d[(c[m>>2]|0)+(c[y>>2]|0)>>0]|0)&255|0,(c[x>>2]|0)+8|0)|0;c[(c[i>>2]|0)+21572>>2]=(c[i>>2]|0)+21580;c[(c[i>>2]|0)+21576>>2]=c[x>>2];c[h>>2]=(c[y>>2]|0)+1;z=c[h>>2]|0;l=g;return z|0;}break;}default:{}}return 0;}function Qt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;g=l;l=l+176|0;h=g+164|0;i=g+160|0;j=g+156|0;k=g+152|0;m=g+148|0;n=g+144|0;o=g+140|0;p=g+136|0;q=g+132|0;r=g+128|0;s=g+124|0;t=g+120|0;u=g+116|0;v=g+112|0;w=g+108|0;x=g+104|0;y=g+100|0;z=g+96|0;A=g+92|0;B=g+88|0;C=g+84|0;D=g+80|0;E=g+68|0;F=g+16|0;G=g+12|0;H=g+8|0;I=g+4|0;J=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[k>>2];c[s>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[t>>2]=c[r>>2];c[u>>2]=c[(c[j>>2]|0)+21572>>2];c[v>>2]=(c[u>>2]|0)+(c[(c[j>>2]|0)+21576>>2]|0);c[w>>2]=c[j>>2];c[x>>2]=(c[j>>2]|0)+3080;c[y>>2]=(c[j>>2]|0)+2052;c[z>>2]=c[(c[j>>2]|0)+21524>>2];c[A>>2]=c[(c[j>>2]|0)+21528>>2];c[B>>2]=c[(c[j>>2]|0)+21532>>2];c[D>>2]=Rt(C,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,c[(c[j>>2]|0)+21568>>2]|0,c[p>>2]|0,c[o>>2]|0)|0;o=(jr(c[D>>2]|0)|0)!=0;m=c[D>>2]|0;if(o){c[i>>2]=m;K=c[i>>2]|0;l=g;return K|0;}c[p>>2]=(c[p>>2]|0)+m;c[(c[j>>2]|0)+21568>>2]=0;if(c[C>>2]|0){c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+8>>2]=1;c[G>>2]=0;while(1){if((c[G>>2]|0)>>>0>=3)break;c[F+40+(c[G>>2]<<2)>>2]=1;c[G>>2]=(c[G>>2]|0)+1;}c[H>>2]=St(F,c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0)|0;if(jr(c[H>>2]|0)|0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}Tt(F+16|0,F,c[w>>2]|0);Tt(F+24|0,F,c[y>>2]|0);Tt(F+32|0,F,c[x>>2]|0);while(1){x=(Ut(F)|0)>>>0<=2;L=c[C>>2]|0;if(!(x?(c[C>>2]|0)!=0:0))break;c[C>>2]=L+-1;Vt(E,F);x=c[t>>2]|0;y=c[s>>2]|0;w=c[v>>2]|0;H=c[z>>2]|0;p=c[A>>2]|0;q=c[B>>2]|0;c[h>>2]=c[E>>2];c[h+4>>2]=c[E+4>>2];c[h+8>>2]=c[E+8>>2];c[I>>2]=Wt(x,y,h,u,w,H,p,q)|0;q=(jr(c[I>>2]|0)|0)!=0;M=c[I>>2]|0;if(q){N=12;break;}c[t>>2]=(c[t>>2]|0)+M;}if((N|0)==12){c[i>>2]=M;K=c[i>>2]|0;l=g;return K|0;}if(L|0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}}c[J>>2]=(c[v>>2]|0)-(c[u>>2]|0);if((c[u>>2]|0)>>>0>(c[v>>2]|0)>>>0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}if(((c[t>>2]|0)+(c[J>>2]|0)|0)>>>0>(c[s>>2]|0)>>>0){c[i>>2]=-70;K=c[i>>2]|0;l=g;return K|0;}else{mE(c[t>>2]|0,c[u>>2]|0,c[J>>2]|0)|0;c[t>>2]=(c[t>>2]|0)+(c[J>>2]|0);c[i>>2]=(c[t>>2]|0)-(c[r>>2]|0);K=c[i>>2]|0;l=g;return K|0;}return 0;}function Rt(a,b,e,f,g,h,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;j=l;l=l+80|0;k=j+68|0;m=j+64|0;n=j+60|0;o=j+56|0;p=j+52|0;q=j+48|0;r=j+44|0;s=j+40|0;t=j+36|0;u=j+32|0;v=j+28|0;w=j+24|0;x=j+20|0;y=j+16|0;z=j+12|0;A=j+8|0;B=j+4|0;C=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=c[r>>2];c[u>>2]=(c[t>>2]|0)+(c[s>>2]|0);c[v>>2]=c[t>>2];if((c[s>>2]|0)>>>0<1){c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}s=c[v>>2]|0;c[v>>2]=s+1;c[w>>2]=d[s>>0];if(!(c[w>>2]|0)){c[c[m>>2]>>2]=0;c[k>>2]=1;D=c[k>>2]|0;l=j;return D|0;}do{if((c[w>>2]|0)>127){s=c[v>>2]|0;if((c[w>>2]|0)==255){if((s+2|0)>>>0<=(c[u>>2]|0)>>>0){c[w>>2]=((Oq(c[v>>2]|0)|0)&65535)+32512;c[v>>2]=(c[v>>2]|0)+2;break;}c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}else{if(s>>>0<(c[u>>2]|0)>>>0){s=(c[w>>2]|0)-128<<8;r=c[v>>2]|0;c[v>>2]=r+1;c[w>>2]=s+(d[r>>0]|0);break;}c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}}}while(0);c[c[m>>2]>>2]=c[w>>2];c[x>>2]=(d[c[v>>2]>>0]|0)>>6;c[y>>2]=(d[c[v>>2]>>0]|0)>>4&3;c[z>>2]=(d[c[v>>2]>>0]|0)>>2&3;c[v>>2]=(c[v>>2]|0)+1;if((c[v>>2]|0)>>>0>((c[u>>2]|0)+-3|0)>>>0){c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}c[A>>2]=gu(c[n>>2]|0,c[x>>2]|0,35,9,c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,6560,6,c[q>>2]|0)|0;if(jr(c[A>>2]|0)|0){c[k>>2]=-20;D=c[k>>2]|0;l=j;return D|0;}c[v>>2]=(c[v>>2]|0)+(c[A>>2]|0);c[B>>2]=gu(c[p>>2]|0,c[y>>2]|0,28,8,c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,6640,5,c[q>>2]|0)|0;if(jr(c[B>>2]|0)|0){c[k>>2]=-20;D=c[k>>2]|0;l=j;return D|0;}c[v>>2]=(c[v>>2]|0)+(c[B>>2]|0);c[C>>2]=gu(c[o>>2]|0,c[z>>2]|0,52,9,c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,6704,6,c[q>>2]|0)|0;if(jr(c[C>>2]|0)|0){c[k>>2]=-20;D=c[k>>2]|0;l=j;return D|0;}else{c[v>>2]=(c[v>>2]|0)+(c[C>>2]|0);c[k>>2]=(c[v>>2]|0)-(c[t>>2]|0);D=c[k>>2]|0;l=j;return D|0;}return 0;}function St(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+17|0;n=g+16|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;if((c[k>>2]|0)>>>0<1){f=c[i>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[h>>2]=-72;o=c[h>>2]|0;l=g;return o|0;}f=(c[k>>2]|0)>>>0>=4;c[(c[i>>2]|0)+12>>2]=c[j>>2];do{if(f){c[(c[i>>2]|0)+8>>2]=(c[j>>2]|0)+(c[k>>2]|0)+-4;e=eu(c[(c[i>>2]|0)+8>>2]|0)|0;c[c[i>>2]>>2]=e;a[m>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[m>>0]|0|0){e=8-(fu(d[m>>0]|0)|0)|0;c[(c[i>>2]|0)+4>>2]=e;break;}c[h>>2]=-1;o=c[h>>2]|0;l=g;return o|0;}else{c[(c[i>>2]|0)+8>>2]=c[(c[i>>2]|0)+12>>2];c[c[i>>2]>>2]=d[c[(c[i>>2]|0)+12>>2]>>0];switch(c[k>>2]|0){case 7:{e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+6>>0]|0)<<16);p=9;break;}case 6:{p=9;break;}case 5:{p=10;break;}case 4:{p=11;break;}case 3:{p=12;break;}case 2:{p=13;break;}default:{}}if((p|0)==9){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+5>>0]|0)<<8);p=10;}if((p|0)==10){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+4>>0]|0)<<0);p=11;}if((p|0)==11){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+3>>0]|0)<<24);p=12;}if((p|0)==12){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+2>>0]|0)<<16);p=13;}if((p|0)==13){e=c[i>>2]|0;c[e>>2]=(c[e>>2]|0)+((d[(c[j>>2]|0)+1>>0]|0)<<8);}a[n>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[n>>0]|0|0){e=8-(fu(d[n>>0]|0)|0)|0;c[(c[i>>2]|0)+4>>2]=e;e=(c[i>>2]|0)+4|0;c[e>>2]=(c[e>>2]|0)+(4-(c[k>>2]|0)<<3);break;}c[h>>2]=-1;o=c[h>>2]|0;l=g;return o|0;}}while(0);c[h>>2]=c[k>>2];o=c[h>>2]|0;l=g;return o|0;}function Tt(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=c[i>>2];c[k>>2]=c[j>>2];j=$t(c[h>>2]|0,e[c[k>>2]>>1]|0)|0;c[c[g>>2]>>2]=j;Ut(c[h>>2]|0)|0;c[(c[g>>2]|0)+4>>2]=(c[i>>2]|0)+4;l=f;return;}function Ut(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[(c[e>>2]|0)+4>>2]|0)>>>0>32){c[d>>2]=3;h=c[d>>2]|0;l=b;return h|0;}a=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=((c[(c[e>>2]|0)+12>>2]|0)+4|0)>>>0){i=(c[e>>2]|0)+8|0;c[i>>2]=(c[i>>2]|0)+(0-((c[a+4>>2]|0)>>>3));i=(c[e>>2]|0)+4|0;c[i>>2]=c[i>>2]&7;i=eu(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=i;c[d>>2]=0;h=c[d>>2]|0;l=b;return h|0;}i=c[(c[e>>2]|0)+4>>2]|0;if((c[a+8>>2]|0)!=(c[(c[e>>2]|0)+12>>2]|0)){c[f>>2]=i>>>3;c[g>>2]=0;if(((c[(c[e>>2]|0)+8>>2]|0)+(0-(c[f>>2]|0))|0)>>>0<(c[(c[e>>2]|0)+12>>2]|0)>>>0){c[f>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0);c[g>>2]=1;}a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(0-(c[f>>2]|0));a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[f>>2]<<3);f=eu(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=f;c[d>>2]=c[g>>2];h=c[d>>2]|0;l=b;return h|0;}if(i>>>0<32){c[d>>2]=1;h=c[d>>2]|0;l=b;return h|0;}else{c[d>>2]=2;h=c[d>>2]|0;l=b;return h|0;}return 0;}function Vt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=l;l=l+48|0;e=d+40|0;f=d+36|0;g=d+32|0;h=d+28|0;i=d+24|0;j=d+20|0;k=d+16|0;m=d+12|0;n=d+8|0;o=d+4|0;p=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=(_t((c[f>>2]|0)+16|0)|0)&255;c[h>>2]=(_t((c[f>>2]|0)+32|0)|0)&255;c[i>>2]=(_t((c[f>>2]|0)+24|0)|0)&255;c[j>>2]=c[5696+(c[g>>2]<<2)>>2];c[k>>2]=c[5840+(c[h>>2]<<2)>>2];c[m>>2]=c[i>>2];c[n>>2]=(c[j>>2]|0)+(c[k>>2]|0)+(c[m>>2]|0);if(c[i>>2]|0){b=c[6064+(c[i>>2]<<2)>>2]|0;c[o>>2]=b+($t(c[f>>2]|0,c[m>>2]|0)|0);if(au()|0)Ut(c[f>>2]|0)|0;}else c[o>>2]=0;do{if((c[o>>2]|0)>>>0<3){if((c[g>>2]|0)==0&(c[o>>2]|0)>>>0<=1)c[o>>2]=1-(c[o>>2]|0);m=(c[f>>2]|0)+40|0;if(!(c[o>>2]|0)){c[o>>2]=c[m>>2];break;}c[p>>2]=c[m+(c[o>>2]<<2)>>2];if((c[o>>2]|0)!=1)c[(c[f>>2]|0)+40+8>>2]=c[(c[f>>2]|0)+40+4>>2];c[(c[f>>2]|0)+40+4>>2]=c[(c[f>>2]|0)+40>>2];m=c[p>>2]|0;c[o>>2]=m;c[(c[f>>2]|0)+40>>2]=m;}else{c[o>>2]=(c[o>>2]|0)-2;c[(c[f>>2]|0)+40+8>>2]=c[(c[f>>2]|0)+40+4>>2];c[(c[f>>2]|0)+40+4>>2]=c[(c[f>>2]|0)+40>>2];c[(c[f>>2]|0)+40>>2]=c[o>>2];}}while(0);c[(c[e>>2]|0)+8>>2]=c[o>>2];o=(c[6192+(c[h>>2]<<2)>>2]|0)+3|0;if((c[h>>2]|0)>>>0>31)q=$t(c[f>>2]|0,c[k>>2]|0)|0;else q=0;c[(c[e>>2]|0)+4>>2]=o+q;if(au()|0?((c[k>>2]|0)+(c[j>>2]|0)|0)>>>0>24:0)Ut(c[f>>2]|0)|0;k=c[6416+(c[g>>2]<<2)>>2]|0;if((c[g>>2]|0)>>>0>15)r=$t(c[f>>2]|0,c[j>>2]|0)|0;else r=0;c[c[e>>2]>>2]=k+r;r=(au()|0)!=0;if(r|(c[n>>2]|0)>>>0>31)Ut(c[f>>2]|0)|0;bu((c[f>>2]|0)+16|0,c[f>>2]|0);bu((c[f>>2]|0)+32|0,c[f>>2]|0);if(!(au()|0)){s=c[f>>2]|0;t=s+24|0;u=c[f>>2]|0;bu(t,u);l=d;return;}Ut(c[f>>2]|0)|0;s=c[f>>2]|0;t=s+24|0;u=c[f>>2]|0;bu(t,u);l=d;return;}function Wt(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;k=l;l=l+64|0;m=k+60|0;n=k+56|0;o=k+52|0;p=k+48|0;q=k+44|0;r=k+40|0;s=k+36|0;t=k+32|0;u=k+28|0;v=k+24|0;w=k+20|0;x=k+16|0;y=k+12|0;z=k+8|0;A=k+4|0;B=k;c[n>>2]=b;c[o>>2]=d;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=(c[n>>2]|0)+(c[e>>2]|0);c[v>>2]=(c[e>>2]|0)+(c[e+4>>2]|0);c[w>>2]=(c[n>>2]|0)+(c[v>>2]|0);c[x>>2]=(c[o>>2]|0)+-8;c[y>>2]=(c[c[p>>2]>>2]|0)+(c[e>>2]|0);c[z>>2]=(c[u>>2]|0)+(0-(c[e+8>>2]|0));if((c[u>>2]|0)>>>0>(c[x>>2]|0)>>>0){c[m>>2]=-70;C=c[m>>2]|0;l=k;return C|0;}if((c[w>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[m>>2]=-70;C=c[m>>2]|0;l=k;return C|0;}if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}Xt(c[n>>2]|0,c[c[p>>2]>>2]|0,c[e>>2]|0);c[n>>2]=c[u>>2];c[c[p>>2]>>2]=c[y>>2];do{if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[r>>2]|0)|0)>>>0){if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[s>>2]|0)|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}c[z>>2]=(c[t>>2]|0)+(0-((c[r>>2]|0)-(c[z>>2]|0)));if(((c[z>>2]|0)+(c[e+4>>2]|0)|0)>>>0<=(c[t>>2]|0)>>>0){nE(c[u>>2]|0,c[z>>2]|0,c[e+4>>2]|0)|0;c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}c[A>>2]=(c[t>>2]|0)-(c[z>>2]|0);nE(c[u>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;c[n>>2]=(c[u>>2]|0)+(c[A>>2]|0);y=e+4|0;c[y>>2]=(c[y>>2]|0)-(c[A>>2]|0);c[z>>2]=c[r>>2];if((c[n>>2]|0)>>>0<=(c[x>>2]|0)>>>0?(c[e+4>>2]|0)>>>0>=3:0)break;while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;y=c[z>>2]|0;c[z>>2]=y+1;p=a[y>>0]|0;y=c[n>>2]|0;c[n>>2]=y+1;a[y>>0]=p;}c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}}while(0);if((c[e+8>>2]|0)>>>0<8){c[B>>2]=c[6816+(c[e+8>>2]<<2)>>2];a[c[n>>2]>>0]=a[c[z>>2]>>0]|0;a[(c[n>>2]|0)+1>>0]=a[(c[z>>2]|0)+1>>0]|0;a[(c[n>>2]|0)+2>>0]=a[(c[z>>2]|0)+2>>0]|0;a[(c[n>>2]|0)+3>>0]=a[(c[z>>2]|0)+3>>0]|0;c[z>>2]=(c[z>>2]|0)+(c[6848+(c[e+8>>2]<<2)>>2]|0);Yt((c[n>>2]|0)+4|0,c[z>>2]|0);c[z>>2]=(c[z>>2]|0)+(0-(c[B>>2]|0));}else Zt(c[n>>2]|0,c[z>>2]|0);c[n>>2]=(c[n>>2]|0)+8;c[z>>2]=(c[z>>2]|0)+8;B=c[n>>2]|0;a:do{if((c[w>>2]|0)>>>0>((c[o>>2]|0)+-13|0)>>>0){if(B>>>0<(c[x>>2]|0)>>>0){Xt(c[n>>2]|0,c[z>>2]|0,(c[x>>2]|0)-(c[n>>2]|0)|0);c[z>>2]=(c[z>>2]|0)+((c[x>>2]|0)-(c[n>>2]|0));c[n>>2]=c[x>>2];}while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;r=c[z>>2]|0;c[z>>2]=r+1;A=a[r>>0]|0;r=c[n>>2]|0;c[n>>2]=r+1;a[r>>0]=A;}}else Xt(B,c[z>>2]|0,(c[e+4>>2]|0)-8|0);}while(0);c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}function Xt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{Zt(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function Yt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;l=e;return;}function Zt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function _t(d){d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=(c[(c[f>>2]|0)+4>>2]|0)+(c[c[f>>2]>>2]<<2)|0;b[g>>1]=b[d>>1]|0;b[g+2>>1]=b[d+2>>1]|0;l=e;return a[g+2>>0]|0;}function $t(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=cu(c[e>>2]|0,c[f>>2]|0)|0;du(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function au(){return 1;}function bu(a,f){a=a|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+16|0;k=g+4|0;m=g;c[h>>2]=a;c[i>>2]=f;f=(c[(c[h>>2]|0)+4>>2]|0)+(c[c[h>>2]>>2]<<2)|0;b[j>>1]=b[f>>1]|0;b[j+2>>1]=b[f+2>>1]|0;c[k>>2]=d[j+3>>0];c[m>>2]=$t(c[i>>2]|0,c[k>>2]|0)|0;c[c[h>>2]>>2]=(e[j>>1]|0)+(c[m>>2]|0);l=g;return;}function cu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>1>>>(31-(c[f>>2]|0)&31)|0;}function du(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(c[e>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(c[f>>2]|0);l=d;return;}function eu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(au()|0)!=0;f=c[e>>2]|0;if(a){c[d>>2]=Mq(f)|0;g=c[d>>2]|0;l=b;return g|0;}else{a=Pq(f)|0;c[d>>2]=a;g=c[d>>2]|0;l=b;return g|0;}return 0;}function fu(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function gu(b,e,f,g,h,i,j,k,m){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;n=l;l=l+160|0;o=n+152|0;p=n+148|0;q=n+144|0;r=n+140|0;s=n+136|0;t=n+132|0;u=n+128|0;v=n+124|0;w=n+120|0;x=n+116|0;y=n+112|0;z=n;A=n+108|0;c[p>>2]=b;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=i;c[v>>2]=j;c[w>>2]=k;c[x>>2]=m;a:do{switch(c[q>>2]|0){case 1:{if(!(c[u>>2]|0)){c[o>>2]=-72;break a;}if((d[c[t>>2]>>0]|0)>>>0>(c[r>>2]|0)>>>0){c[o>>2]=-20;break a;}else{hu(c[p>>2]|0,a[c[t>>2]>>0]|0)|0;c[o>>2]=1;break a;}break;}case 0:{iu(c[p>>2]|0,c[v>>2]|0,c[r>>2]|0,c[w>>2]|0)|0;c[o>>2]=0;break;}case 2:{if(c[x>>2]|0){c[o>>2]=0;break a;}else{c[o>>2]=-20;break a;}break;}default:{c[A>>2]=ju(z,r,y,c[t>>2]|0,c[u>>2]|0)|0;if(jr(c[A>>2]|0)|0){c[o>>2]=-20;break a;}if((c[y>>2]|0)>>>0>(c[s>>2]|0)>>>0){c[o>>2]=-20;break a;}else{iu(c[p>>2]|0,z,c[r>>2]|0,c[y>>2]|0)|0;c[o>>2]=c[A>>2];break a;}}}}while(0);l=n;return c[o>>2]|0;}function hu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+20|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=d;a[h>>0]=e;c[i>>2]=c[g>>2];c[j>>2]=c[i>>2];c[k>>2]=(c[g>>2]|0)+4;c[m>>2]=c[k>>2];b[c[j>>2]>>1]=0;b[(c[j>>2]|0)+2>>1]=0;b[c[m>>2]>>1]=0;a[(c[m>>2]|0)+2>>0]=a[h>>0]|0;a[(c[m>>2]|0)+3>>0]=0;l=f;return 0;}function iu(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;j=l;l=l+592|0;k=j+576|0;m=j+572|0;n=j+568|0;o=j+564|0;p=j+560|0;q=j+556|0;r=j+552|0;s=j;t=j+548|0;u=j+544|0;v=j+540|0;w=j+584|0;x=j+582|0;y=j+536|0;z=j+532|0;A=j+528|0;B=j+524|0;C=j+520|0;D=j+516|0;E=j+512|0;F=j+588|0;G=j+580|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=i;c[q>>2]=(c[m>>2]|0)+4;c[r>>2]=c[q>>2];c[t>>2]=(c[o>>2]|0)+1;c[u>>2]=1<<c[p>>2];c[v>>2]=(c[u>>2]|0)-1;if((c[o>>2]|0)>>>0>255){c[k>>2]=-46;H=c[k>>2]|0;l=j;return H|0;}if((c[p>>2]|0)>>>0>12){c[k>>2]=-44;H=c[k>>2]|0;l=j;return H|0;}b[w>>1]=c[p>>2];b[w+2>>1]=1;b[x>>1]=1<<(c[p>>2]|0)-1;c[y>>2]=0;while(1){if((c[y>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;if((b[(c[n>>2]|0)+(c[y>>2]<<1)>>1]|0)==-1){o=c[y>>2]&255;q=c[r>>2]|0;i=c[v>>2]|0;c[v>>2]=i+-1;a[q+(i<<2)+2>>0]=o;b[s+(c[y>>2]<<1)>>1]=1;}else{if((b[(c[n>>2]|0)+(c[y>>2]<<1)>>1]|0)>=(b[x>>1]|0))b[w+2>>1]=0;b[s+(c[y>>2]<<1)>>1]=b[(c[n>>2]|0)+(c[y>>2]<<1)>>1]|0;}c[y>>2]=(c[y>>2]|0)+1;}y=c[m>>2]|0;b[y>>1]=b[w>>1]|0;b[y+2>>1]=b[w+2>>1]|0;c[z>>2]=(c[u>>2]|0)-1;c[A>>2]=((c[u>>2]|0)>>>1)+((c[u>>2]|0)>>>3)+3;c[C>>2]=0;c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;c[D>>2]=0;while(1){I=c[B>>2]|0;if((c[D>>2]|0)>=(b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0))break;a[(c[r>>2]|0)+(c[C>>2]<<2)+2>>0]=I;c[C>>2]=(c[C>>2]|0)+(c[A>>2]|0)&c[z>>2];while(1){if((c[C>>2]|0)>>>0<=(c[v>>2]|0)>>>0)break;c[C>>2]=(c[C>>2]|0)+(c[A>>2]|0)&c[z>>2];}c[D>>2]=(c[D>>2]|0)+1;}c[B>>2]=I+1;}if(c[C>>2]|0){c[k>>2]=-1;H=c[k>>2]|0;l=j;return H|0;}c[E>>2]=0;while(1){if((c[E>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;a[F>>0]=a[(c[r>>2]|0)+(c[E>>2]<<2)+2>>0]|0;C=s+(d[F>>0]<<1)|0;I=b[C>>1]|0;b[C>>1]=I+1<<16>>16;b[G>>1]=I;I=c[p>>2]|0;C=I-(fu(e[G>>1]|0)|0)&255;a[(c[r>>2]|0)+(c[E>>2]<<2)+3>>0]=C;b[(c[r>>2]|0)+(c[E>>2]<<2)>>1]=(e[G>>1]<<d[(c[r>>2]|0)+(c[E>>2]<<2)+3>>0])-(c[u>>2]|0);c[E>>2]=(c[E>>2]|0)+1;}c[k>>2]=0;H=c[k>>2]|0;l=j;return H|0;}function ju(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;h=l;l=l+80|0;i=h+64|0;j=h+60|0;k=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;p=h+40|0;q=h+36|0;r=h+32|0;s=h+28|0;t=h+24|0;u=h+20|0;v=h+16|0;w=h+12|0;x=h+8|0;y=h+4|0;z=h;A=h+70|0;B=h+68|0;c[j>>2]=a;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[p>>2];c[x>>2]=0;c[y>>2]=0;if((c[o>>2]|0)>>>0<4){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=Mq(c[r>>2]|0)|0;c[s>>2]=(c[v>>2]&15)+5;if((c[s>>2]|0)>15){c[i>>2]=-44;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=(c[v>>2]|0)>>>4;c[w>>2]=4;c[c[m>>2]>>2]=c[s>>2];c[t>>2]=(1<<c[s>>2])+1;c[u>>2]=1<<c[s>>2];c[s>>2]=(c[s>>2]|0)+1;a:while(1){if((c[t>>2]|0)<=1)break;if((c[x>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0)break;do{if(c[y>>2]|0){c[z>>2]=c[x>>2];while(1){if((c[v>>2]&65535|0)!=65535)break;c[z>>2]=(c[z>>2]|0)+24;if((c[r>>2]|0)>>>0<((c[q>>2]|0)+-5|0)>>>0){c[r>>2]=(c[r>>2]|0)+2;m=Mq(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]|0);}else{c[v>>2]=(c[v>>2]|0)>>>16;c[w>>2]=(c[w>>2]|0)+16;}}while(1){if((c[v>>2]&3|0)!=3)break;c[z>>2]=(c[z>>2]|0)+3;c[v>>2]=(c[v>>2]|0)>>>2;c[w>>2]=(c[w>>2]|0)+2;}c[z>>2]=(c[z>>2]|0)+(c[v>>2]&3);c[w>>2]=(c[w>>2]|0)+2;if((c[z>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0){D=19;break a;}while(1){if((c[x>>2]|0)>>>0>=(c[z>>2]|0)>>>0)break;m=c[j>>2]|0;n=c[x>>2]|0;c[x>>2]=n+1;b[m+(n<<1)>>1]=0;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[v>>2]=(c[v>>2]|0)>>>2;break;}c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;n=Mq(c[r>>2]|0)|0;c[v>>2]=n>>>(c[w>>2]|0);}}while(0);b[A>>1]=(c[u>>2]<<1)-1-(c[t>>2]|0);n=c[v>>2]|0;m=c[u>>2]|0;if((c[v>>2]&(c[u>>2]|0)-1)>>>0<(b[A>>1]|0)>>>0){b[B>>1]=n&m-1;c[w>>2]=(c[w>>2]|0)+((c[s>>2]|0)-1);}else{b[B>>1]=n&(m<<1)-1;if((b[B>>1]|0)>=(c[u>>2]|0))b[B>>1]=(b[B>>1]|0)-(b[A>>1]|0);c[w>>2]=(c[w>>2]|0)+(c[s>>2]|0);}b[B>>1]=(b[B>>1]|0)+-1<<16>>16;m=(ku(b[B>>1]|0)|0)<<16>>16;c[t>>2]=(c[t>>2]|0)-m;m=b[B>>1]|0;n=c[j>>2]|0;g=c[x>>2]|0;c[x>>2]=g+1;b[n+(g<<1)>>1]=m;c[y>>2]=((b[B>>1]|0)!=0^1)&1;while(1){if((c[t>>2]|0)>=(c[u>>2]|0))break;c[s>>2]=(c[s>>2]|0)+-1;c[u>>2]=c[u>>2]>>1;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[w>>2]=(c[w>>2]|0)-((c[q>>2]|0)+-4-(c[r>>2]|0)<<3);c[r>>2]=(c[q>>2]|0)+-4;}else{c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;}m=Mq(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]&31);}if((D|0)==19){c[i>>2]=-48;C=c[i>>2]|0;l=h;return C|0;}if((c[t>>2]|0)!=1){c[i>>2]=-1;C=c[i>>2]|0;l=h;return C|0;}c[c[k>>2]>>2]=(c[x>>2]|0)-1;c[r>>2]=(c[r>>2]|0)+((c[w>>2]|0)+7>>3);if(((c[r>>2]|0)-(c[p>>2]|0)|0)>>>0>(c[o>>2]|0)>>>0){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}else{c[i>>2]=(c[r>>2]|0)-(c[p>>2]|0);C=c[i>>2]|0;l=h;return C|0;}return 0;}function ku(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=a;a=b[d>>1]|0;l=c;return((b[d>>1]|0)<0?0-a|0:a)&65535|0;}function lu(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+8224|0;h=g+8220|0;i=g+8216|0;j=g+8212|0;k=g+8208|0;m=g+8204|0;n=g;o=g+8200|0;p=g+8196|0;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;oE(n|0,0,8194)|0;b[n>>1]=12;c[o>>2]=c[k>>2];c[p>>2]=Ju(n,c[k>>2]|0,c[m>>2]|0)|0;k=(ou(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(k){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[m>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[m>>2]=(c[m>>2]|0)-(c[p>>2]|0);c[h>>2]=Nu(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0,c[m>>2]|0,n)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function mu(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=l;l=l+48|0;h=g+44|0;i=g+40|0;j=g+36|0;k=g+32|0;m=g+28|0;n=g+16|0;o=g+12|0;p=g+8|0;q=g+4|0;r=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=e;c[m>>2]=f;if(!(c[j>>2]|0)){c[h>>2]=-70;s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)>>>0>(c[j>>2]|0)>>>0){c[h>>2]=-20;s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)==(c[j>>2]|0)){mE(c[i>>2]|0,c[k>>2]|0,c[j>>2]|0)|0;c[h>>2]=c[j>>2];s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)==1){oE(c[i>>2]|0,(d[c[k>>2]>>0]|0)&255|0,c[j>>2]|0)|0;c[h>>2]=c[j>>2];s=c[h>>2]|0;l=g;return s|0;}c[o>>2]=(c[m>>2]<<4>>>0)/((c[j>>2]|0)>>>0)|0;c[p>>2]=(c[j>>2]|0)>>>8;c[q>>2]=0;while(1){if((c[q>>2]|0)>>>0>=3)break;f=(c[7008+((c[o>>2]|0)*24|0)+(c[q>>2]<<3)>>2]|0)+(N(c[7008+((c[o>>2]|0)*24|0)+(c[q>>2]<<3)+4>>2]|0,c[p>>2]|0)|0)|0;c[n+(c[q>>2]<<2)>>2]=f;c[q>>2]=(c[q>>2]|0)+1;}q=n+4|0;c[q>>2]=(c[q>>2]|0)+((c[n+4>>2]|0)>>>4);q=n+8|0;c[q>>2]=(c[q>>2]|0)+((c[n+8>>2]|0)>>>3);c[r>>2]=0;c[r>>2]=(c[n+4>>2]|0)>>>0<(c[n>>2]|0)>>>0?1:0;c[h>>2]=sc[c[11964+(c[r>>2]<<2)>>2]&15](c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;s=c[h>>2]|0;l=g;return s|0;}function nu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;g=l;l=l+80|0;h=g+68|0;i=g+64|0;j=g+60|0;k=g+56|0;m=g+52|0;n=g+48|0;o=g+44|0;p=g+40|0;q=g+36|0;r=g+32|0;s=g+28|0;t=g+24|0;u=g+8|0;v=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[k>>2];c[p>>2]=c[i>>2];c[q>>2]=(c[p>>2]|0)+(c[j>>2]|0);c[r>>2]=c[c[n>>2]>>2];c[s>>2]=c[n>>2];c[t>>2]=(c[s>>2]|0)+4;c[v>>2]=St(u,c[o>>2]|0,c[m>>2]|0)|0;if(ou(c[v>>2]|0)|0){c[h>>2]=c[v>>2];w=c[h>>2]|0;l=g;return w|0;}pu(c[p>>2]|0,u,c[q>>2]|0,c[t>>2]|0,c[r>>2]|0)|0;if(qu(u)|0){c[h>>2]=c[j>>2];w=c[h>>2]|0;l=g;return w|0;}else{c[h>>2]=-20;w=c[h>>2]|0;l=g;return w|0;}return 0;}function ou(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=jr(c[d>>2]|0)|0;l=b;return a|0;}function pu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=c[h>>2];while(1){if(Ut(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>=((c[j>>2]|0)+-7|0)>>>0)break;if(ru()|0){f=su(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}ru()|0;f=su(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;if(ru()|0){f=su(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}f=su(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){if(Ut(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=su(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){o=c[h>>2]|0;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=su(o,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}if(o>>>0>=(c[j>>2]|0)>>>0){p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}j=tu(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+j;p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}function qu(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;c[d>>2]=a;if((c[(c[d>>2]|0)+8>>2]|0)!=(c[(c[d>>2]|0)+12>>2]|0)){e=0;f=e&1;l=b;return f|0;}e=(c[(c[d>>2]|0)+4>>2]|0)==32;f=e&1;l=b;return f|0;}function ru(){return 0;}function su(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=uu(c[j>>2]|0,c[m>>2]|0)|0;m=c[i>>2]|0;i=(c[k>>2]|0)+(c[n>>2]<<2)|0;a[m>>0]=a[i>>0]|0;a[m+1>>0]=a[i+1>>0]|0;du(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0;}function tu(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=uu(c[j>>2]|0,c[m>>2]|0)|0;a[c[i>>2]>>0]=a[(c[k>>2]|0)+(c[n>>2]<<2)>>0]|0;i=c[j>>2]|0;if((d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0)==1){du(i,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return 1;}if((c[i+4>>2]|0)>>>0>=32){l=h;return 1;}du(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);if((c[(c[j>>2]|0)+4>>2]|0)>>>0<=32){l=h;return 1;}c[(c[j>>2]|0)+4>>2]=32;l=h;return 1;}function uu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>(32-(c[f>>2]|0)&31)|0;}function vu(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+8224|0;h=g+8220|0;i=g+8216|0;j=g+8212|0;k=g+8208|0;m=g+8204|0;n=g;o=g+8200|0;p=g+8196|0;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;oE(n|0,0,8194)|0;b[n>>1]=12;c[o>>2]=c[k>>2];c[p>>2]=Ju(n,c[k>>2]|0,c[m>>2]|0)|0;k=(ou(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(k){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[m>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[m>>2]=(c[m>>2]|0)-(c[p>>2]|0);c[h>>2]=Ku(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0,c[m>>2]|0,n)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function wu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+16416|0;g=f+16412|0;h=f+16408|0;i=f+16404|0;j=f+16400|0;k=f+16396|0;m=f;n=f+16392|0;o=f+16388|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;oE(m|0,0,16388)|0;c[m>>2]=12;c[n>>2]=c[j>>2];c[o>>2]=xu(m,c[j>>2]|0,c[k>>2]|0)|0;j=(ou(c[o>>2]|0)|0)!=0;e=c[o>>2]|0;if(j){c[g>>2]=e;p=c[g>>2]|0;l=f;return p|0;}if(e>>>0>=(c[k>>2]|0)>>>0){c[g>>2]=-72;p=c[g>>2]|0;l=f;return p|0;}else{c[n>>2]=(c[n>>2]|0)+(c[o>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[o>>2]|0);c[g>>2]=yu(c[h>>2]|0,c[i>>2]|0,c[n>>2]|0,c[k>>2]|0,m)|0;p=c[g>>2]|0;l=f;return p|0;}return 0;}function xu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=l;l=l+2128|0;h=g+2124|0;i=g+2120|0;j=g+2116|0;k=g+2112|0;m=g+1760|0;n=g+1248|0;o=g+1168|0;p=g+1088|0;q=g+2108|0;r=g;s=g+2104|0;t=g+2100|0;u=g+2096|0;v=g+2092|0;w=g+2088|0;x=g+2084|0;y=g+2080|0;z=g+2076|0;A=g+2072|0;B=g+2068|0;C=g+2064|0;D=g+2060|0;E=g+2056|0;F=g+2052|0;G=g+2048|0;H=g+2044|0;I=g+2040|0;J=g+2036|0;K=g+2032|0;L=g+2028|0;M=g+2024|0;N=g+2020|0;O=g+2016|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;f=o;e=f+68|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));f=p;e=f+72|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));c[q>>2]=p+4;c[w>>2]=c[c[i>>2]>>2];c[y>>2]=c[i>>2];c[z>>2]=(c[y>>2]|0)+4;if((c[w>>2]|0)>>>0>16){c[h>>2]=-44;P=c[h>>2]|0;l=g;return P|0;}c[x>>2]=zu(m,256,o,v,s,c[j>>2]|0,c[k>>2]|0)|0;if(ou(c[x>>2]|0)|0){c[h>>2]=c[x>>2];P=c[h>>2]|0;l=g;return P|0;}if((c[s>>2]|0)>>>0>(c[w>>2]|0)>>>0){c[h>>2]=-44;P=c[h>>2]|0;l=g;return P|0;}c[t>>2]=c[s>>2];while(1){if(c[o+(c[t>>2]<<2)>>2]|0)break;c[t>>2]=(c[t>>2]|0)+-1;}c[B>>2]=0;c[A>>2]=1;while(1){Q=c[B>>2]|0;if((c[A>>2]|0)>>>0>=((c[t>>2]|0)+1|0)>>>0)break;c[C>>2]=Q;c[B>>2]=(c[B>>2]|0)+(c[o+(c[A>>2]<<2)>>2]|0);c[(c[q>>2]|0)+(c[A>>2]<<2)>>2]=c[C>>2];c[A>>2]=(c[A>>2]|0)+1;}c[c[q>>2]>>2]=Q;c[u>>2]=c[B>>2];c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;c[E>>2]=d[m+(c[D>>2]|0)>>0];B=(c[q>>2]|0)+(c[E>>2]<<2)|0;Q=c[B>>2]|0;c[B>>2]=Q+1;c[F>>2]=Q;a[n+(c[F>>2]<<1)>>0]=c[D>>2];a[n+(c[F>>2]<<1)+1>>0]=c[E>>2];c[D>>2]=(c[D>>2]|0)+1;}c[c[q>>2]>>2]=0;c[G>>2]=r;c[H>>2]=(c[w>>2]|0)-(c[s>>2]|0)-1;c[I>>2]=0;c[J>>2]=1;while(1){if((c[J>>2]|0)>>>0>=((c[t>>2]|0)+1|0)>>>0)break;c[K>>2]=c[I>>2];c[I>>2]=(c[I>>2]|0)+(c[o+(c[J>>2]<<2)>>2]<<(c[J>>2]|0)+(c[H>>2]|0));c[(c[G>>2]|0)+(c[J>>2]<<2)>>2]=c[K>>2];c[J>>2]=(c[J>>2]|0)+1;}c[L>>2]=(c[s>>2]|0)+1-(c[t>>2]|0);c[M>>2]=c[L>>2];while(1){if((c[M>>2]|0)>>>0>=((c[w>>2]|0)-(c[L>>2]|0)+1|0)>>>0)break;c[N>>2]=r+((c[M>>2]|0)*68|0);c[O>>2]=1;while(1){if((c[O>>2]|0)>>>0>=((c[t>>2]|0)+1|0)>>>0)break;c[(c[N>>2]|0)+(c[O>>2]<<2)>>2]=(c[(c[G>>2]|0)+(c[O>>2]<<2)>>2]|0)>>>(c[M>>2]|0);c[O>>2]=(c[O>>2]|0)+1;}c[M>>2]=(c[M>>2]|0)+1;}Au(c[z>>2]|0,c[w>>2]|0,n,c[u>>2]|0,p,r,c[t>>2]|0,(c[s>>2]|0)+1|0);c[h>>2]=c[x>>2];P=c[h>>2]|0;l=g;return P|0;}function yu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=l;l=l+192|0;h=g+184|0;i=g+180|0;j=g+176|0;k=g+172|0;m=g+168|0;n=g+164|0;o=g+160|0;p=g+156|0;q=g+152|0;r=g+148|0;s=g+144|0;t=g+140|0;u=g+136|0;v=g+120|0;w=g+104|0;x=g+88|0;y=g+72|0;z=g+64|0;A=g+60|0;B=g+56|0;C=g+52|0;D=g+48|0;E=g+44|0;F=g+40|0;G=g+36|0;H=g+32|0;I=g+28|0;J=g+24|0;K=g+20|0;L=g+16|0;M=g+12|0;N=g+8|0;O=g+4|0;P=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if((c[m>>2]|0)>>>0<10){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}c[o>>2]=c[k>>2];c[p>>2]=c[i>>2];c[q>>2]=(c[p>>2]|0)+(c[j>>2]|0);c[r>>2]=c[n>>2];c[s>>2]=(c[r>>2]|0)+4;c[t>>2]=c[c[n>>2]>>2];c[z>>2]=(Oq(c[o>>2]|0)|0)&65535;c[A>>2]=(Oq((c[o>>2]|0)+2|0)|0)&65535;c[B>>2]=(Oq((c[o>>2]|0)+4|0)|0)&65535;c[D>>2]=(c[o>>2]|0)+6;c[E>>2]=(c[D>>2]|0)+(c[z>>2]|0);c[F>>2]=(c[E>>2]|0)+(c[A>>2]|0);c[G>>2]=(c[F>>2]|0)+(c[B>>2]|0);c[H>>2]=(((c[j>>2]|0)+3|0)>>>0)/4|0;c[I>>2]=(c[p>>2]|0)+(c[H>>2]|0);c[J>>2]=(c[I>>2]|0)+(c[H>>2]|0);c[K>>2]=(c[J>>2]|0)+(c[H>>2]|0);c[L>>2]=c[p>>2];c[M>>2]=c[I>>2];c[N>>2]=c[J>>2];c[O>>2]=c[K>>2];c[C>>2]=(c[m>>2]|0)-((c[z>>2]|0)+(c[A>>2]|0)+(c[B>>2]|0)+6);if((c[C>>2]|0)>>>0>(c[m>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=St(v,c[D>>2]|0,c[z>>2]|0)|0;if(ou(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=St(w,c[E>>2]|0,c[A>>2]|0)|0;if(ou(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=St(x,c[F>>2]|0,c[B>>2]|0)|0;if(ou(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=St(y,c[G>>2]|0,c[C>>2]|0)|0;if(ou(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}u=Ut(v)|0;C=u|(Ut(w)|0);u=C|(Ut(x)|0);c[P>>2]=u|(Ut(y)|0);while(1){if(c[P>>2]|0)break;if((c[O>>2]|0)>>>0>=((c[q>>2]|0)+-7|0)>>>0)break;if(ru()|0){u=su(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;}if(ru()|0){u=su(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;}if(ru()|0){u=su(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;}if(ru()|0){u=su(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;}ru()|0;u=su(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;ru()|0;u=su(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;ru()|0;u=su(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;ru()|0;u=su(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;if(ru()|0){u=su(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;}if(ru()|0){u=su(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;}if(ru()|0){u=su(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;}if(ru()|0){u=su(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;}u=su(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;u=su(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;u=su(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;u=su(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;u=Ut(v)|0;C=u|(Ut(w)|0);u=C|(Ut(x)|0);c[P>>2]=u|(Ut(y)|0);}if((c[L>>2]|0)>>>0>(c[I>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}if((c[M>>2]|0)>>>0>(c[J>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}if((c[N>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}pu(c[L>>2]|0,v,c[I>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;pu(c[M>>2]|0,w,c[J>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;pu(c[N>>2]|0,x,c[K>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;pu(c[O>>2]|0,y,c[q>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;t=qu(v)|0;v=t&(qu(w)|0);w=v&(qu(x)|0);c[P>>2]=w&(qu(y)|0);if(c[P>>2]|0){c[h>>2]=c[j>>2];Q=c[h>>2]|0;l=g;return Q|0;}else{c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}return 0;}function zu(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;k=l;l=l+80|0;m=k+72|0;n=k+68|0;o=k+64|0;p=k+60|0;q=k+56|0;r=k+52|0;s=k+48|0;t=k+44|0;u=k+40|0;v=k+36|0;w=k+32|0;x=k+28|0;y=k+24|0;z=k+20|0;A=k+16|0;B=k+12|0;C=k+8|0;D=k+4|0;E=k;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[v>>2]=c[s>>2];if(!(c[t>>2]|0)){c[m>>2]=-72;F=c[m>>2]|0;l=k;return F|0;}c[w>>2]=d[c[v>>2]>>0];s=c[w>>2]|0;a:do{if((c[w>>2]|0)>>>0<128){if((s+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;F=c[m>>2]|0;l=k;return F|0;}c[x>>2]=Eu(c[n>>2]|0,(c[o>>2]|0)-1|0,(c[v>>2]|0)+1|0,c[w>>2]|0)|0;if(jr(c[x>>2]|0)|0){c[m>>2]=c[x>>2];F=c[m>>2]|0;l=k;return F|0;}}else{j=c[w>>2]|0;if(s>>>0>=242){c[x>>2]=c[7392+(j-242<<2)>>2];oE(c[n>>2]|0,1,c[o>>2]|0)|0;c[w>>2]=0;break;}c[x>>2]=j-127;c[w>>2]=(((c[x>>2]|0)+1|0)>>>0)/2|0;if(((c[w>>2]|0)+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;F=c[m>>2]|0;l=k;return F|0;}if((c[x>>2]|0)>>>0>=(c[o>>2]|0)>>>0){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}c[v>>2]=(c[v>>2]|0)+1;c[y>>2]=0;while(1){if((c[y>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break a;a[(c[n>>2]|0)+(c[y>>2]|0)>>0]=(d[(c[v>>2]|0)+(((c[y>>2]|0)>>>0)/2|0)>>0]|0)>>4;a[(c[n>>2]|0)+((c[y>>2]|0)+1)>>0]=(d[(c[v>>2]|0)+(((c[y>>2]|0)>>>0)/2|0)>>0]|0)&15;c[y>>2]=(c[y>>2]|0)+2;}}}while(0);y=c[p>>2]|0;v=y+68|0;do{c[y>>2]=0;y=y+4|0;}while((y|0)<(v|0));c[u>>2]=0;c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break;if((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0|0)>=16){G=20;break;}y=(c[p>>2]|0)+((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)<<2)|0;c[y>>2]=(c[y>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+(1<<(d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)>>1);c[z>>2]=(c[z>>2]|0)+1;}if((G|0)==20){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}if(!(c[u>>2]|0)){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}c[A>>2]=(fu(c[u>>2]|0)|0)+1;if((c[A>>2]|0)>>>0>16){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}c[c[r>>2]>>2]=c[A>>2];c[B>>2]=1<<c[A>>2];c[C>>2]=(c[B>>2]|0)-(c[u>>2]|0);c[D>>2]=1<<(fu(c[C>>2]|0)|0);c[E>>2]=(fu(c[C>>2]|0)|0)+1;if((c[D>>2]|0)!=(c[C>>2]|0)){c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}a[(c[n>>2]|0)+(c[x>>2]|0)>>0]=c[E>>2];n=(c[p>>2]|0)+(c[E>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+1;if((c[(c[p>>2]|0)+4>>2]|0)>>>0>=2?(c[(c[p>>2]|0)+4>>2]&1|0)==0:0){c[c[q>>2]>>2]=(c[x>>2]|0)+1;c[m>>2]=(c[w>>2]|0)+1;F=c[m>>2]|0;l=k;return F|0;}c[m>>2]=-20;F=c[m>>2]|0;l=k;return F|0;}function Au(e,f,g,h,i,j,k,m){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;n=l;l=l+160|0;o=n+140|0;p=n+136|0;q=n+132|0;r=n+128|0;s=n+124|0;t=n+120|0;u=n+116|0;v=n+112|0;w=n;x=n+108|0;y=n+104|0;z=n+100|0;A=n+148|0;B=n+96|0;C=n+92|0;D=n+88|0;E=n+84|0;F=n+80|0;G=n+76|0;H=n+144|0;I=n+72|0;J=n+68|0;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=k;c[v>>2]=m;c[x>>2]=(c[v>>2]|0)-(c[p>>2]|0);c[y>>2]=(c[v>>2]|0)-(c[u>>2]|0);u=w;m=c[t>>2]|0;k=u+68|0;do{c[u>>2]=c[m>>2];u=u+4|0;m=m+4|0;}while((u|0)<(k|0));c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;b[A>>1]=d[(c[q>>2]|0)+(c[z>>2]<<1)>>0]|0;c[B>>2]=d[(c[q>>2]|0)+(c[z>>2]<<1)+1>>0];c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);c[D>>2]=c[w+(c[B>>2]<<2)>>2];c[E>>2]=1<<(c[p>>2]|0)-(c[C>>2]|0);a:do{if(((c[p>>2]|0)-(c[C>>2]|0)|0)>>>0>=(c[y>>2]|0)>>>0){m=(c[C>>2]|0)+(c[x>>2]|0)|0;c[G>>2]=m;c[G>>2]=(c[G>>2]|0)<1?1:m;c[F>>2]=c[(c[s>>2]|0)+(c[G>>2]<<2)>>2];Bu((c[o>>2]|0)+(c[D>>2]<<2)|0,(c[p>>2]|0)-(c[C>>2]|0)|0,c[C>>2]|0,(c[t>>2]|0)+((c[C>>2]|0)*68|0)|0,c[G>>2]|0,(c[q>>2]|0)+(c[F>>2]<<1)|0,(c[r>>2]|0)-(c[F>>2]|0)|0,c[v>>2]|0,b[A>>1]|0);}else{Cu(H,b[A>>1]|0);a[H+2>>0]=c[C>>2];a[H+3>>0]=1;c[J>>2]=(c[D>>2]|0)+(c[E>>2]|0);c[I>>2]=c[D>>2];while(1){if((c[I>>2]|0)>>>0>=(c[J>>2]|0)>>>0)break a;m=(c[o>>2]|0)+(c[I>>2]<<2)|0;b[m>>1]=b[H>>1]|0;b[m+2>>1]=b[H+2>>1]|0;c[I>>2]=(c[I>>2]|0)+1;}}}while(0);m=w+(c[B>>2]<<2)|0;c[m>>2]=(c[m>>2]|0)+(c[E>>2]|0);c[z>>2]=(c[z>>2]|0)+1;}l=n;return;}function Bu(f,g,h,i,j,k,m,n,o){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;p=l;l=l+160|0;q=p+136|0;r=p+132|0;s=p+128|0;t=p+124|0;u=p+120|0;v=p+116|0;w=p+112|0;x=p+108|0;y=p+144|0;z=p+140|0;A=p;B=p+104|0;C=p+100|0;D=p+96|0;E=p+92|0;F=p+88|0;G=p+84|0;H=p+80|0;I=p+76|0;J=p+72|0;K=p+68|0;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=j;c[v>>2]=k;c[w>>2]=m;c[x>>2]=n;b[y>>1]=o;o=A;n=c[t>>2]|0;t=o+68|0;do{c[o>>2]=c[n>>2];o=o+4|0;n=n+4|0;}while((o|0)<(t|0));a:do{if((c[u>>2]|0)>1){c[C>>2]=c[A+(c[u>>2]<<2)>>2];Cu(z,b[y>>1]|0);a[z+2>>0]=c[s>>2];a[z+3>>0]=1;c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>=(c[C>>2]|0)>>>0)break a;n=(c[q>>2]|0)+(c[B>>2]<<2)|0;b[n>>1]=b[z>>1]|0;b[n+2>>1]=b[z+2>>1]|0;c[B>>2]=(c[B>>2]|0)+1;}}}while(0);c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[E>>2]=d[(c[v>>2]|0)+(c[D>>2]<<1)>>0];c[F>>2]=d[(c[v>>2]|0)+(c[D>>2]<<1)+1>>0];c[G>>2]=(c[x>>2]|0)-(c[F>>2]|0);c[H>>2]=1<<(c[r>>2]|0)-(c[G>>2]|0);c[I>>2]=c[A+(c[F>>2]<<2)>>2];c[J>>2]=c[I>>2];c[K>>2]=(c[I>>2]|0)+(c[H>>2]|0);Cu(z,(e[y>>1]|0)+(c[E>>2]<<8)&65535);a[z+2>>0]=(c[G>>2]|0)+(c[s>>2]|0);a[z+3>>0]=2;do{B=c[q>>2]|0;C=c[J>>2]|0;c[J>>2]=C+1;u=B+(C<<2)|0;b[u>>1]=b[z>>1]|0;b[u+2>>1]=b[z+2>>1]|0;}while((c[J>>2]|0)>>>0<(c[K>>2]|0)>>>0);u=A+(c[F>>2]<<2)|0;c[u>>2]=(c[u>>2]|0)+(c[H>>2]|0);c[D>>2]=(c[D>>2]|0)+1;}l=p;return;}function Cu(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+4|0;i=g+8|0;j=g;c[h>>2]=d;b[i>>1]=f;f=(Qq()|0)!=0;d=c[h>>2]|0;if(f){Du(d,b[i>>1]|0);l=g;return;}else{c[j>>2]=d;a[c[j>>2]>>0]=b[i>>1];a[(c[j>>2]|0)+1>>0]=(e[i>>1]|0)>>8;l=g;return;}}function Du(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;h=f+4|0;c[g>>2]=d;b[h>>1]=e;e=c[g>>2]|0;a[e>>0]=a[h>>0]|0;a[e+1>>0]=a[h+1>>0]|0;l=f;return;}function Eu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+16960|0;g=f+16952|0;h=f+16948|0;i=f+16944|0;j=f+16940|0;k=f+16936|0;m=f+16932|0;n=f+16928|0;o=f+16400|0;p=f;q=f+16924|0;r=f+16920|0;s=f+16916|0;t=f+16912|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[j>>2];c[n>>2]=c[m>>2];c[r>>2]=255;if((c[k>>2]|0)>>>0<2){c[g>>2]=-72;u=c[g>>2]|0;l=f;return u|0;}c[s>>2]=ju(o,r,q,c[m>>2]|0,c[k>>2]|0)|0;m=(jr(c[s>>2]|0)|0)!=0;j=c[s>>2]|0;if(m){c[g>>2]=j;u=c[g>>2]|0;l=f;return u|0;}if(j>>>0>=(c[k>>2]|0)>>>0){c[g>>2]=-72;u=c[g>>2]|0;l=f;return u|0;}c[n>>2]=(c[n>>2]|0)+(c[s>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[s>>2]|0);c[t>>2]=iu(p,o,c[r>>2]|0,c[q>>2]|0)|0;if(jr(c[t>>2]|0)|0){c[g>>2]=c[t>>2];u=c[g>>2]|0;l=f;return u|0;}else{c[g>>2]=Fu(c[h>>2]|0,c[i>>2]|0,c[n>>2]|0,c[k>>2]|0,p)|0;u=c[g>>2]|0;l=f;return u|0;}return 0;}function Fu(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;i=l;l=l+208|0;j=i+192|0;k=i+188|0;m=i+184|0;n=i+180|0;o=i+176|0;p=i+172|0;q=i+168|0;r=i+164|0;s=i+160|0;t=i+156|0;u=i+152|0;v=i+136|0;w=i+128|0;x=i+120|0;y=i+116|0;z=i+112|0;A=i+108|0;B=i+104|0;C=i+100|0;D=i+96|0;E=i+92|0;F=i+88|0;G=i+84|0;H=i+80|0;I=i+76|0;J=i+72|0;K=i+56|0;L=i+48|0;M=i+40|0;N=i+36|0;O=i+32|0;P=i+28|0;Q=i+24|0;R=i+20|0;S=i+16|0;T=i+12|0;U=i+8|0;V=i+4|0;W=i;c[P>>2]=b;c[Q>>2]=d;c[R>>2]=f;c[S>>2]=g;c[T>>2]=h;c[U>>2]=c[T>>2];c[V>>2]=c[U>>2];c[W>>2]=e[(c[V>>2]|0)+2>>1];V=c[P>>2]|0;P=c[Q>>2]|0;Q=c[R>>2]|0;R=c[S>>2]|0;S=c[T>>2]|0;if(c[W>>2]|0){c[A>>2]=V;c[B>>2]=P;c[C>>2]=Q;c[D>>2]=R;c[E>>2]=S;c[F>>2]=1;c[G>>2]=c[A>>2];c[H>>2]=c[G>>2];c[I>>2]=(c[H>>2]|0)+(c[B>>2]|0);c[J>>2]=(c[I>>2]|0)+-3;c[N>>2]=St(K,c[C>>2]|0,c[D>>2]|0)|0;do{if(jr(c[N>>2]|0)|0)c[z>>2]=c[N>>2];else{Tt(L,K,c[E>>2]|0);Tt(M,K,c[E>>2]|0);while(1){if(Ut(K)|0)break;if((c[H>>2]|0)>>>0>=(c[J>>2]|0)>>>0)break;if(c[F>>2]|0)X=(Gu(L,K)|0)&255;else X=(Hu(L,K)|0)&255;a[c[H>>2]>>0]=X;if(c[F>>2]|0)Y=(Gu(M,K)|0)&255;else Y=(Hu(M,K)|0)&255;a[(c[H>>2]|0)+1>>0]=Y;if((Ut(K)|0)>>>0>0){Z=14;break;}if(c[F>>2]|0)_=(Gu(L,K)|0)&255;else _=(Hu(L,K)|0)&255;a[(c[H>>2]|0)+2>>0]=_;if(c[F>>2]|0)$=(Gu(M,K)|0)&255;else $=(Hu(M,K)|0)&255;a[(c[H>>2]|0)+3>>0]=$;c[H>>2]=(c[H>>2]|0)+4;}if((Z|0)==14)c[H>>2]=(c[H>>2]|0)+2;while(1){if((c[H>>2]|0)>>>0>((c[I>>2]|0)+-2|0)>>>0){Z=24;break;}if(c[F>>2]|0)aa=(Gu(L,K)|0)&255;else aa=(Hu(L,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=aa;if((Ut(K)|0)==3){Z=29;break;}if((c[H>>2]|0)>>>0>((c[I>>2]|0)+-2|0)>>>0){Z=34;break;}if(c[F>>2]|0)ba=(Gu(M,K)|0)&255;else ba=(Hu(M,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=ba;if((Ut(K)|0)==3){Z=39;break;}}if((Z|0)==24){c[z>>2]=-70;break;}else if((Z|0)==29){if(c[F>>2]|0)ca=(Gu(M,K)|0)&255;else ca=(Hu(M,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=ca;}else if((Z|0)==34){c[z>>2]=-70;break;}else if((Z|0)==39){if(c[F>>2]|0)da=(Gu(L,K)|0)&255;else da=(Hu(L,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=da;}c[z>>2]=(c[H>>2]|0)-(c[G>>2]|0);}}while(0);c[O>>2]=c[z>>2];ea=c[O>>2]|0;l=i;return ea|0;}else{c[k>>2]=V;c[m>>2]=P;c[n>>2]=Q;c[o>>2]=R;c[p>>2]=S;c[q>>2]=0;c[r>>2]=c[k>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[s>>2]|0)+(c[m>>2]|0);c[u>>2]=(c[t>>2]|0)+-3;c[y>>2]=St(v,c[n>>2]|0,c[o>>2]|0)|0;do{if(jr(c[y>>2]|0)|0)c[j>>2]=c[y>>2];else{Tt(w,v,c[p>>2]|0);Tt(x,v,c[p>>2]|0);while(1){if(Ut(v)|0)break;if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;if(c[q>>2]|0)fa=(Gu(w,v)|0)&255;else fa=(Hu(w,v)|0)&255;a[c[s>>2]>>0]=fa;if(c[q>>2]|0)ga=(Gu(x,v)|0)&255;else ga=(Hu(x,v)|0)&255;a[(c[s>>2]|0)+1>>0]=ga;if((Ut(v)|0)>>>0>0){Z=58;break;}if(c[q>>2]|0)ha=(Gu(w,v)|0)&255;else ha=(Hu(w,v)|0)&255;a[(c[s>>2]|0)+2>>0]=ha;if(c[q>>2]|0)ia=(Gu(x,v)|0)&255;else ia=(Hu(x,v)|0)&255;a[(c[s>>2]|0)+3>>0]=ia;c[s>>2]=(c[s>>2]|0)+4;}if((Z|0)==58)c[s>>2]=(c[s>>2]|0)+2;while(1){if((c[s>>2]|0)>>>0>((c[t>>2]|0)+-2|0)>>>0){Z=68;break;}if(c[q>>2]|0)ja=(Gu(w,v)|0)&255;else ja=(Hu(w,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ja;if((Ut(v)|0)==3){Z=73;break;}if((c[s>>2]|0)>>>0>((c[t>>2]|0)+-2|0)>>>0){Z=78;break;}if(c[q>>2]|0)ka=(Gu(x,v)|0)&255;else ka=(Hu(x,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ka;if((Ut(v)|0)==3){Z=83;break;}}if((Z|0)==68){c[j>>2]=-70;break;}else if((Z|0)==73){if(c[q>>2]|0)la=(Gu(x,v)|0)&255;else la=(Hu(x,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=la;}else if((Z|0)==78){c[j>>2]=-70;break;}else if((Z|0)==83){if(c[q>>2]|0)ma=(Gu(w,v)|0)&255;else ma=(Hu(w,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ma;}c[j>>2]=(c[s>>2]|0)-(c[r>>2]|0);}}while(0);c[O>>2]=c[j>>2];ea=c[O>>2]|0;l=i;return ea|0;}return 0;}function Gu(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=Iu(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function Hu(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=$t(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function Iu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=uu(c[e>>2]|0,c[f>>2]|0)|0;du(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function Ju(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;i=l;l=l+400|0;j=i+392|0;k=i+388|0;m=i+384|0;n=i+380|0;o=i+80|0;p=i;q=i+376|0;r=i+372|0;s=i+368|0;t=i+364|0;u=i+360|0;v=i+356|0;w=i+352|0;x=i+348|0;y=i+344|0;z=i+340|0;A=i+336|0;B=i+396|0;c[k>>2]=f;c[m>>2]=g;c[n>>2]=h;c[q>>2]=0;c[s>>2]=0;c[v>>2]=(c[k>>2]|0)+2;c[w>>2]=c[v>>2];c[r>>2]=zu(o,256,p,s,q,c[m>>2]|0,c[n>>2]|0)|0;if(ou(c[r>>2]|0)|0){c[j>>2]=c[r>>2];C=c[j>>2]|0;l=i;return C|0;}if((c[q>>2]|0)>>>0>(e[c[k>>2]>>1]|0)>>>0){c[j>>2]=-44;C=c[j>>2]|0;l=i;return C|0;}b[c[k>>2]>>1]=c[q>>2];c[u>>2]=0;c[t>>2]=1;while(1){if((c[t>>2]|0)>>>0>=((c[q>>2]|0)+1|0)>>>0)break;c[x>>2]=c[u>>2];c[u>>2]=(c[u>>2]|0)+(c[p+(c[t>>2]<<2)>>2]<<(c[t>>2]|0)-1);c[p+(c[t>>2]<<2)>>2]=c[x>>2];c[t>>2]=(c[t>>2]|0)+1;}c[t>>2]=0;while(1){if((c[t>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;c[y>>2]=d[o+(c[t>>2]|0)>>0];c[z>>2]=1<<c[y>>2]>>1;a[B>>0]=c[t>>2];a[B+1>>0]=(c[q>>2]|0)+1-(c[y>>2]|0);c[A>>2]=c[p+(c[y>>2]<<2)>>2];while(1){if((c[A>>2]|0)>>>0>=((c[p+(c[y>>2]<<2)>>2]|0)+(c[z>>2]|0)|0)>>>0)break;x=(c[w>>2]|0)+(c[A>>2]<<1)|0;a[x>>0]=a[B>>0]|0;a[x+1>>0]=a[B+1>>0]|0;c[A>>2]=(c[A>>2]|0)+1;}x=p+(c[y>>2]<<2)|0;c[x>>2]=(c[x>>2]|0)+(c[z>>2]|0);c[t>>2]=(c[t>>2]|0)+1;}c[j>>2]=c[r>>2];C=c[j>>2]|0;l=i;return C|0;}function Ku(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;i=l;l=l+192|0;j=i+184|0;k=i+180|0;m=i+176|0;n=i+172|0;o=i+168|0;p=i+164|0;q=i+160|0;r=i+156|0;s=i+152|0;t=i+148|0;u=i+144|0;v=i+140|0;w=i+136|0;x=i+120|0;y=i+104|0;z=i+88|0;A=i+72|0;B=i+64|0;C=i+60|0;D=i+56|0;E=i+52|0;F=i+48|0;G=i+44|0;H=i+40|0;I=i+36|0;J=i+32|0;K=i+28|0;L=i+24|0;M=i+20|0;N=i+16|0;O=i+12|0;P=i+8|0;Q=i+4|0;R=i;c[k>>2]=b;c[m>>2]=d;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;if((c[o>>2]|0)>>>0<10){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}c[q>>2]=c[n>>2];c[r>>2]=c[k>>2];c[s>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[t>>2]=c[p>>2];c[u>>2]=(c[t>>2]|0)+2;c[v>>2]=e[c[p>>2]>>1];c[B>>2]=(Oq(c[q>>2]|0)|0)&65535;c[C>>2]=(Oq((c[q>>2]|0)+2|0)|0)&65535;c[D>>2]=(Oq((c[q>>2]|0)+4|0)|0)&65535;c[F>>2]=(c[q>>2]|0)+6;c[G>>2]=(c[F>>2]|0)+(c[B>>2]|0);c[H>>2]=(c[G>>2]|0)+(c[C>>2]|0);c[I>>2]=(c[H>>2]|0)+(c[D>>2]|0);c[J>>2]=(((c[m>>2]|0)+3|0)>>>0)/4|0;c[K>>2]=(c[r>>2]|0)+(c[J>>2]|0);c[L>>2]=(c[K>>2]|0)+(c[J>>2]|0);c[M>>2]=(c[L>>2]|0)+(c[J>>2]|0);c[N>>2]=c[r>>2];c[O>>2]=c[K>>2];c[P>>2]=c[L>>2];c[Q>>2]=c[M>>2];c[E>>2]=(c[o>>2]|0)-((c[B>>2]|0)+(c[C>>2]|0)+(c[D>>2]|0)+6);if((c[E>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=St(x,c[F>>2]|0,c[B>>2]|0)|0;if(ou(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=St(y,c[G>>2]|0,c[C>>2]|0)|0;if(ou(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=St(z,c[H>>2]|0,c[D>>2]|0)|0;if(ou(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=St(A,c[I>>2]|0,c[E>>2]|0)|0;if(ou(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}w=Ut(x)|0;E=w|(Ut(y)|0);w=E|(Ut(z)|0);c[R>>2]=w|(Ut(A)|0);while(1){if(c[R>>2]|0)break;if((c[Q>>2]|0)>>>0>=((c[s>>2]|0)+-7|0)>>>0)break;if(ru()|0){w=Lu(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;}if(ru()|0){w=Lu(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;}if(ru()|0){w=Lu(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;}if(ru()|0){w=Lu(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;}ru()|0;w=Lu(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;ru()|0;w=Lu(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;ru()|0;w=Lu(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;ru()|0;w=Lu(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;if(ru()|0){w=Lu(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;}if(ru()|0){w=Lu(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;}if(ru()|0){w=Lu(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;}if(ru()|0){w=Lu(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;}w=Lu(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;w=Lu(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;w=Lu(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;w=Lu(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;w=Ut(x)|0;E=w|(Ut(y)|0);w=E|(Ut(z)|0);c[R>>2]=w|(Ut(A)|0);}if((c[N>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}if((c[O>>2]|0)>>>0>(c[L>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}if((c[P>>2]|0)>>>0>(c[M>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}Mu(c[N>>2]|0,x,c[K>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;Mu(c[O>>2]|0,y,c[L>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;Mu(c[P>>2]|0,z,c[M>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;Mu(c[Q>>2]|0,A,c[s>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;v=qu(x)|0;x=v&(qu(y)|0);y=x&(qu(z)|0);c[R>>2]=y&(qu(A)|0);if(c[R>>2]|0){c[j>>2]=c[m>>2];S=c[j>>2]|0;l=i;return S|0;}else{c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}return 0;}function Lu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+16|0;c[h>>2]=b;c[i>>2]=e;c[j>>2]=f;c[k>>2]=uu(c[h>>2]|0,c[j>>2]|0)|0;a[m>>0]=a[(c[i>>2]|0)+(c[k>>2]<<1)>>0]|0;du(c[h>>2]|0,d[(c[i>>2]|0)+(c[k>>2]<<1)+1>>0]|0);l=g;return a[m>>0]|0;}function Mu(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[i>>2];while(1){if(Ut(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>((c[k>>2]|0)+-4|0)>>>0)break;if(ru()|0){g=Lu(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}ru()|0;g=Lu(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;if(ru()|0){g=Lu(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}g=Lu(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if(Ut(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=Lu(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=Lu(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}l=h;return(c[k>>2]|0)-(c[o>>2]|0)|0;}function Nu(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=l;l=l+80|0;i=h+64|0;j=h+60|0;k=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;p=h+40|0;q=h+36|0;r=h+32|0;s=h+28|0;t=h+24|0;u=h+8|0;v=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[j>>2];c[q>>2]=(c[p>>2]|0)+(c[k>>2]|0);c[r>>2]=e[c[o>>2]>>1];c[s>>2]=c[o>>2];c[t>>2]=(c[s>>2]|0)+2;c[v>>2]=St(u,c[m>>2]|0,c[n>>2]|0)|0;if(ou(c[v>>2]|0)|0){c[i>>2]=c[v>>2];w=c[i>>2]|0;l=h;return w|0;}Mu(c[p>>2]|0,u,c[q>>2]|0,c[t>>2]|0,c[r>>2]|0)|0;if(qu(u)|0){c[i>>2]=c[k>>2];w=c[i>>2]|0;l=h;return w|0;}else{c[i>>2]=-20;w=c[i>>2]|0;l=h;return w|0;}return 0;}function Ou(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+21536>>2]=5;c[(c[d>>2]|0)+21564>>2]=0;c[(c[d>>2]|0)+21520>>2]=0;c[(c[d>>2]|0)+21524>>2]=0;c[(c[d>>2]|0)+21528>>2]=0;c[(c[d>>2]|0)+21532>>2]=0;c[(c[d>>2]|0)+5132>>2]=12;c[(c[d>>2]|0)+21568>>2]=0;l=b;return 0;}function Pu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[k>>2]=Mq(c[h>>2]|0)|0;if((c[k>>2]|0)!=-332356554){Qu(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0);c[f>>2]=0;m=c[f>>2]|0;l=e;return m|0;}c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)-4;c[j>>2]=Ru(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;if(jr(c[j>>2]|0)|0){c[f>>2]=-30;m=c[f>>2]|0;l=e;return m|0;}else{c[h>>2]=(c[h>>2]|0)+(c[j>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[j>>2]|0);Qu(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0);c[f>>2]=0;m=c[f>>2]|0;l=e;return m|0;}return 0;}function Qu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+21532>>2]=c[(c[f>>2]|0)+21520>>2];c[(c[f>>2]|0)+21528>>2]=(c[g>>2]|0)+(0-((c[(c[f>>2]|0)+21520>>2]|0)-(c[(c[f>>2]|0)+21524>>2]|0)));c[(c[f>>2]|0)+21524>>2]=c[g>>2];c[(c[f>>2]|0)+21520>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function Ru(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;e=l;l=l+320|0;f=e+316|0;g=e+312|0;h=e+308|0;i=e+304|0;j=e+300|0;k=e+296|0;m=e+292|0;n=e+288|0;o=e+192|0;p=e+284|0;q=e+280|0;r=e+276|0;s=e+80|0;t=e+272|0;u=e+268|0;v=e+264|0;w=e;x=e+260|0;y=e+256|0;z=e+252|0;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=xu((c[g>>2]|0)+5132|0,c[h>>2]|0,c[i>>2]|0)|0;if(jr(c[j>>2]|0)|0){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}c[h>>2]=(c[h>>2]|0)+(c[j>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[j>>2]|0);c[p>>2]=28;c[k>>2]=ju(o,p,q,c[h>>2]|0,c[i>>2]|0)|0;if(jr(c[k>>2]|0)|0){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}if((c[q>>2]|0)>>>0>8){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}c[r>>2]=iu((c[g>>2]|0)+2052|0,o,c[p>>2]|0,c[q>>2]|0)|0;if(jr(c[r>>2]|0)|0){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}c[h>>2]=(c[h>>2]|0)+(c[k>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[k>>2]|0);c[t>>2]=52;c[m>>2]=ju(s,t,u,c[h>>2]|0,c[i>>2]|0)|0;if(jr(c[m>>2]|0)|0){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}if((c[u>>2]|0)>>>0>9){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}c[v>>2]=iu((c[g>>2]|0)+3080|0,s,c[t>>2]|0,c[u>>2]|0)|0;if(jr(c[v>>2]|0)|0){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}c[h>>2]=(c[h>>2]|0)+(c[m>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[m>>2]|0);c[x>>2]=35;c[n>>2]=ju(w,x,y,c[h>>2]|0,c[i>>2]|0)|0;if(jr(c[n>>2]|0)|0){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}if((c[y>>2]|0)>>>0>9){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}c[z>>2]=iu(c[g>>2]|0,w,c[x>>2]|0,c[y>>2]|0)|0;if(jr(c[z>>2]|0)|0){c[f>>2]=-30;A=c[f>>2]|0;l=e;return A|0;}else{c[(c[g>>2]|0)+21568>>2]=1;c[f>>2]=(c[j>>2]|0)+(c[k>>2]|0)+(c[m>>2]|0)+(c[n>>2]|0);A=c[f>>2]|0;l=e;return A|0;}return 0;}function Su(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=dw(c[g>>2]|0)|0;if(mr(c[j>>2]|0)|0){c[f>>2]=c[j>>2];k=c[f>>2]|0;l=e;return k|0;}if((c[h>>2]|0)!=0&(c[i>>2]|0)!=0?(c[j>>2]=ew(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0,mr(c[j>>2]|0)|0):0){c[f>>2]=-30;k=c[f>>2]|0;l=e;return k|0;}c[f>>2]=0;k=c[f>>2]|0;l=e;return k|0;}function Tu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)==(c[(c[e>>2]|0)+26640>>2]|0)){l=d;return;}c[(c[e>>2]|0)+26652>>2]=c[(c[e>>2]|0)+26640>>2];c[(c[e>>2]|0)+26648>>2]=(c[f>>2]|0)+(0-((c[(c[e>>2]|0)+26640>>2]|0)-(c[(c[e>>2]|0)+26644>>2]|0)));c[(c[e>>2]|0)+26644>>2]=c[f>>2];c[(c[e>>2]|0)+26640>>2]=c[f>>2];l=d;return;}function Uu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;g=l;l=l+80|0;h=g+68|0;i=g+64|0;j=g+60|0;k=g+56|0;m=g+52|0;n=g+48|0;o=g+44|0;p=g+40|0;q=g+36|0;r=g+32|0;s=g+28|0;t=g+24|0;u=g+16|0;v=g+8|0;w=g+4|0;x=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=(c[o>>2]|0)+(c[n>>2]|0);c[q>>2]=c[j>>2];c[r>>2]=c[q>>2];c[s>>2]=(c[q>>2]|0)+(c[k>>2]|0);c[t>>2]=c[n>>2];if((c[n>>2]|0)>>>0<8){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}c[v>>2]=Vu(c[i>>2]|0,c[m>>2]|0,5)|0;if(mr(c[v>>2]|0)|0){c[h>>2]=c[v>>2];y=c[h>>2]|0;l=g;return y|0;}if((c[n>>2]|0)>>>0<((c[v>>2]|0)+3|0)>>>0){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}c[o>>2]=(c[o>>2]|0)+(c[v>>2]|0);c[t>>2]=(c[t>>2]|0)-(c[v>>2]|0);c[v>>2]=Wu(c[i>>2]|0,c[m>>2]|0,c[v>>2]|0)|0;if(mr(c[v>>2]|0)|0){c[h>>2]=c[v>>2];y=c[h>>2]|0;l=g;return y|0;}a:while(1){c[w>>2]=0;c[x>>2]=lr(c[o>>2]|0,(c[p>>2]|0)-(c[o>>2]|0)|0,u)|0;if(mr(c[x>>2]|0)|0){z=11;break;}c[o>>2]=(c[o>>2]|0)+3;c[t>>2]=(c[t>>2]|0)-3;if((c[x>>2]|0)>>>0>(c[t>>2]|0)>>>0){z=13;break;}switch(c[u>>2]|0){case 2:{z=17;break a;break;}case 0:{c[w>>2]=Xu(c[i>>2]|0,c[r>>2]|0,(c[s>>2]|0)-(c[r>>2]|0)|0,c[o>>2]|0,c[x>>2]|0)|0;break;}case 1:{c[w>>2]=Yu(c[r>>2]|0,(c[s>>2]|0)-(c[r>>2]|0)|0,c[o>>2]|0,c[x>>2]|0)|0;break;}case 3:{if(c[t>>2]|0){z=19;break a;}break;}default:{z=20;break a;}}if(!(c[x>>2]|0)){z=25;break;}v=(mr(c[w>>2]|0)|0)!=0;A=c[w>>2]|0;if(v){z=23;break;}c[r>>2]=(c[r>>2]|0)+A;c[o>>2]=(c[o>>2]|0)+(c[x>>2]|0);c[t>>2]=(c[t>>2]|0)-(c[x>>2]|0);}if((z|0)==11){c[h>>2]=c[x>>2];y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==13){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==17){c[h>>2]=-1;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==19){c[h>>2]=-72;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==20){c[h>>2]=-1;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==23){c[h>>2]=A;y=c[h>>2]|0;l=g;return y|0;}else if((z|0)==25){c[h>>2]=(c[r>>2]|0)-(c[q>>2]|0);y=c[h>>2]|0;l=g;return y|0;}return 0;}function Vu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[i>>2]|0)!=5){c[f>>2]=-72;k=c[f>>2]|0;l=e;return k|0;}c[j>>2]=Wq(c[h>>2]|0)|0;if((c[j>>2]|0)!=-47205083){c[f>>2]=-10;k=c[f>>2]|0;l=e;return k|0;}else{c[(c[g>>2]|0)+26660>>2]=5;c[f>>2]=c[(c[g>>2]|0)+26660>>2];k=c[f>>2]|0;l=e;return k|0;}return 0;}function Wu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[i>>2]|0)!=(c[(c[g>>2]|0)+26660>>2]|0)){c[f>>2]=-72;k=c[f>>2]|0;l=e;return k|0;}c[j>>2]=yq((c[g>>2]|0)+26664|0,c[h>>2]|0,c[i>>2]|0)|0;if(kv()|0?(c[(c[g>>2]|0)+26664+8>>2]|0)>>>0>25:0){c[f>>2]=-14;k=c[f>>2]|0;l=e;return k|0;}c[f>>2]=c[j>>2];k=c[f>>2]|0;l=e;return k|0;}function Xu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];if((c[n>>2]|0)>>>0>=131072){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}c[p>>2]=Zu(c[i>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;m=(mr(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(m){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+f;c[n>>2]=(c[n>>2]|0)-(c[p>>2]|0);c[h>>2]=_u(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function Yu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0){c[g>>2]=-70;m=c[g>>2]|0;l=f;return m|0;}else{mE(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[g>>2]=c[k>>2];m=c[g>>2]|0;l=f;return m|0;}return 0;}function Zu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;g=l;l=l+80|0;h=g+64|0;i=g+60|0;j=g+56|0;k=g+52|0;m=g+48|0;n=g+44|0;o=g+40|0;p=g+36|0;q=g+32|0;r=g+28|0;s=g+24|0;t=g+20|0;u=g+16|0;v=g+12|0;w=g+8|0;x=g+4|0;y=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[j>>2];if((c[k>>2]|0)>>>0<3){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}switch((d[c[m>>2]>>0]|0)>>6|0){case 0:{c[p>>2]=0;c[q>>2]=(d[c[m>>2]>>0]|0)>>4&3;if((c[k>>2]|0)>>>0<5){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}switch(c[q>>2]|0){case 3:{c[q>>2]=5;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<14)+((d[(c[m>>2]|0)+1>>0]|0)<<6)+((d[(c[m>>2]|0)+2>>0]|0)>>2);c[o>>2]=(((d[(c[m>>2]|0)+2>>0]|0)&3)<<16)+((d[(c[m>>2]|0)+3>>0]|0)<<8)+(d[(c[m>>2]|0)+4>>0]|0);break;}case 2:{c[q>>2]=4;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<10)+((d[(c[m>>2]|0)+1>>0]|0)<<2)+((d[(c[m>>2]|0)+2>>0]|0)>>6);c[o>>2]=(((d[(c[m>>2]|0)+2>>0]|0)&63)<<8)+(d[(c[m>>2]|0)+3>>0]|0);break;}default:{c[q>>2]=3;c[p>>2]=(d[c[m>>2]>>0]|0)&16;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<6)+((d[(c[m>>2]|0)+1>>0]|0)>>2);c[o>>2]=(((d[(c[m>>2]|0)+1>>0]|0)&3)<<8)+(d[(c[m>>2]|0)+2>>0]|0);}}if((c[n>>2]|0)>>>0>131072){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}if(((c[o>>2]|0)+(c[q>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}j=(c[i>>2]|0)+26724|0;f=c[n>>2]|0;e=(c[m>>2]|0)+(c[q>>2]|0)|0;b=c[o>>2]|0;if(c[p>>2]|0)A=Av(j,f,e,b)|0;else A=Bv(j,f,e,b)|0;if(Cv(A)|0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{c[(c[i>>2]|0)+26716>>2]=(c[i>>2]|0)+26724;c[(c[i>>2]|0)+26720>>2]=c[n>>2];n=(c[i>>2]|0)+26724+(c[(c[i>>2]|0)+26720>>2]|0)|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;a[n+4>>0]=0;a[n+5>>0]=0;a[n+6>>0]=0;a[n+7>>0]=0;c[h>>2]=(c[o>>2]|0)+(c[q>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 1:{c[u>>2]=(d[c[m>>2]>>0]|0)>>4&3;if((c[u>>2]|0)!=1){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}if(!(c[(c[i>>2]|0)+26712>>2]|0)){c[h>>2]=-30;z=c[h>>2]|0;l=g;return z|0;}c[u>>2]=3;c[s>>2]=(((d[c[m>>2]>>0]|0)&15)<<6)+((d[(c[m>>2]|0)+1>>0]|0)>>2);c[t>>2]=(((d[(c[m>>2]|0)+1>>0]|0)&3)<<8)+(d[(c[m>>2]|0)+2>>0]|0);if(((c[t>>2]|0)+(c[u>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}c[r>>2]=Dv((c[i>>2]|0)+26724|0,c[s>>2]|0,(c[m>>2]|0)+(c[u>>2]|0)|0,c[t>>2]|0,(c[i>>2]|0)+10252|0)|0;if(Cv(c[r>>2]|0)|0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{c[(c[i>>2]|0)+26716>>2]=(c[i>>2]|0)+26724;c[(c[i>>2]|0)+26720>>2]=c[s>>2];s=(c[i>>2]|0)+26724+(c[(c[i>>2]|0)+26720>>2]|0)|0;a[s>>0]=0;a[s+1>>0]=0;a[s+2>>0]=0;a[s+3>>0]=0;a[s+4>>0]=0;a[s+5>>0]=0;a[s+6>>0]=0;a[s+7>>0]=0;c[h>>2]=(c[t>>2]|0)+(c[u>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 2:{c[w>>2]=(d[c[m>>2]>>0]|0)>>4&3;switch(c[w>>2]|0){case 3:{c[v>>2]=(((d[c[m>>2]>>0]|0)&15)<<16)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(d[(c[m>>2]|0)+2>>0]|0);break;}case 2:{c[v>>2]=(((d[c[m>>2]>>0]|0)&15)<<8)+(d[(c[m>>2]|0)+1>>0]|0);break;}default:{c[w>>2]=1;c[v>>2]=(d[c[m>>2]>>0]|0)&31;}}if(((c[w>>2]|0)+(c[v>>2]|0)+8|0)>>>0<=(c[k>>2]|0)>>>0){c[(c[i>>2]|0)+26716>>2]=(c[m>>2]|0)+(c[w>>2]|0);c[(c[i>>2]|0)+26720>>2]=c[v>>2];c[h>>2]=(c[w>>2]|0)+(c[v>>2]|0);z=c[h>>2]|0;l=g;return z|0;}if(((c[v>>2]|0)+(c[w>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{mE((c[i>>2]|0)+26724|0,(c[m>>2]|0)+(c[w>>2]|0)|0,c[v>>2]|0)|0;c[(c[i>>2]|0)+26716>>2]=(c[i>>2]|0)+26724;c[(c[i>>2]|0)+26720>>2]=c[v>>2];u=(c[i>>2]|0)+26724+(c[(c[i>>2]|0)+26720>>2]|0)|0;a[u>>0]=0;a[u+1>>0]=0;a[u+2>>0]=0;a[u+3>>0]=0;a[u+4>>0]=0;a[u+5>>0]=0;a[u+6>>0]=0;a[u+7>>0]=0;c[h>>2]=(c[w>>2]|0)+(c[v>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 3:{c[y>>2]=(d[c[m>>2]>>0]|0)>>4&3;switch(c[y>>2]|0){case 3:{c[x>>2]=(((d[c[m>>2]>>0]|0)&15)<<16)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(d[(c[m>>2]|0)+2>>0]|0);if((c[k>>2]|0)>>>0<4){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}break;}case 2:{c[x>>2]=(((d[c[m>>2]>>0]|0)&15)<<8)+(d[(c[m>>2]|0)+1>>0]|0);break;}default:{c[y>>2]=1;c[x>>2]=(d[c[m>>2]>>0]|0)&31;}}if((c[x>>2]|0)>>>0>131072){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{oE((c[i>>2]|0)+26724|0,(d[(c[m>>2]|0)+(c[y>>2]|0)>>0]|0)&255|0,(c[x>>2]|0)+8|0)|0;c[(c[i>>2]|0)+26716>>2]=(c[i>>2]|0)+26724;c[(c[i>>2]|0)+26720>>2]=c[x>>2];c[h>>2]=(c[y>>2]|0)+1;z=c[h>>2]|0;l=g;return z|0;}break;}default:{}}return 0;}function _u(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;g=l;l=l+176|0;h=g+164|0;i=g+160|0;j=g+156|0;k=g+152|0;m=g+148|0;n=g+144|0;o=g+140|0;p=g+136|0;q=g+132|0;r=g+128|0;s=g+124|0;t=g+120|0;u=g+116|0;v=g+112|0;w=g+108|0;x=g+104|0;y=g+100|0;z=g+96|0;A=g+92|0;B=g+88|0;C=g+84|0;D=g+80|0;E=g+76|0;F=g+72|0;G=g+60|0;H=g+8|0;I=g+4|0;J=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[k>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[w>>2]=c[(c[j>>2]|0)+26716>>2];c[x>>2]=(c[w>>2]|0)+(c[(c[j>>2]|0)+26720>>2]|0);c[A>>2]=c[j>>2];c[B>>2]=(c[j>>2]|0)+6152;c[C>>2]=(c[j>>2]|0)+4100;c[D>>2]=c[(c[j>>2]|0)+26644>>2];c[E>>2]=c[(c[j>>2]|0)+26648>>2];c[F>>2]=c[(c[j>>2]|0)+26652>>2];c[u>>2]=$u(y,z,v,c[A>>2]|0,c[B>>2]|0,c[C>>2]|0,c[p>>2]|0,c[o>>2]|0,c[(c[j>>2]|0)+26712>>2]|0)|0;j=(mr(c[u>>2]|0)|0)!=0;o=c[u>>2]|0;if(j){c[i>>2]=o;K=c[i>>2]|0;l=g;return K|0;}c[p>>2]=(c[p>>2]|0)+o;if(c[y>>2]|0){c[G>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+8>>2]=1;c[H+44>>2]=c[z>>2];c[H+48>>2]=(c[z>>2]|0)+(c[v>>2]|0);c[H+40>>2]=1;c[u>>2]=av(H,c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0)|0;if(nr(c[u>>2]|0)|0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}bv(H+16|0,H,c[A>>2]|0);bv(H+24|0,H,c[C>>2]|0);bv(H+32|0,H,c[B>>2]|0);while(1){B=(cv(H)|0)>>>0<=2;L=c[y>>2]|0;if(!(B?(c[y>>2]|0)!=0:0))break;c[y>>2]=L+-1;dv(G,H);B=c[s>>2]|0;C=c[t>>2]|0;A=c[x>>2]|0;u=c[D>>2]|0;p=c[E>>2]|0;q=c[F>>2]|0;c[h>>2]=c[G>>2];c[h+4>>2]=c[G+4>>2];c[h+8>>2]=c[G+8>>2];c[I>>2]=ev(B,C,h,w,A,u,p,q)|0;q=(mr(c[I>>2]|0)|0)!=0;M=c[I>>2]|0;if(q){N=9;break;}c[s>>2]=(c[s>>2]|0)+M;}if((N|0)==9){c[i>>2]=M;K=c[i>>2]|0;l=g;return K|0;}if(L|0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}}c[J>>2]=(c[x>>2]|0)-(c[w>>2]|0);if((c[w>>2]|0)>>>0>(c[x>>2]|0)>>>0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}if(((c[s>>2]|0)+(c[J>>2]|0)|0)>>>0>(c[t>>2]|0)>>>0){c[i>>2]=-70;K=c[i>>2]|0;l=g;return K|0;}else{mE(c[s>>2]|0,c[w>>2]|0,c[J>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+(c[J>>2]|0);c[i>>2]=(c[s>>2]|0)-(c[r>>2]|0);K=c[i>>2]|0;l=g;return K|0;}return 0;}function $u(b,e,f,g,h,i,j,k,m){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;n=l;l=l+352|0;o=n+348|0;p=n+344|0;q=n+340|0;r=n+336|0;s=n+332|0;t=n+328|0;u=n+324|0;v=n+320|0;w=n+316|0;x=n+312|0;y=n+308|0;z=n+304|0;A=n+300|0;B=n+296|0;C=n+292|0;D=n+288|0;E=n+284|0;F=n+280|0;G=n+276|0;H=n+272|0;I=n;J=n+268|0;K=n+264|0;L=n+260|0;M=n+256|0;c[p>>2]=b;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=i;c[v>>2]=j;c[w>>2]=k;c[x>>2]=m;c[y>>2]=c[v>>2];c[z>>2]=c[y>>2];c[A>>2]=(c[y>>2]|0)+(c[w>>2]|0);if((c[w>>2]|0)>>>0<1){c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}w=c[z>>2]|0;c[z>>2]=w+1;c[c[p>>2]>>2]=d[w>>0];if(!(c[c[p>>2]>>2]|0)){c[o>>2]=1;N=c[o>>2]|0;l=n;return N|0;}do{if((c[c[p>>2]>>2]|0)>=128){if((c[z>>2]|0)>>>0<(c[A>>2]|0)>>>0){w=(c[c[p>>2]>>2]|0)-128<<8;v=c[z>>2]|0;c[z>>2]=v+1;c[c[p>>2]>>2]=w+(d[v>>0]|0);break;}c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}}while(0);if((c[z>>2]|0)>>>0>=(c[A>>2]|0)>>>0){c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}c[B>>2]=(d[c[z>>2]>>0]|0)>>6;c[C>>2]=(d[c[z>>2]>>0]|0)>>4&3;c[D>>2]=(d[c[z>>2]>>0]|0)>>2&3;p=c[z>>2]|0;do{if((d[c[z>>2]>>0]|0)&2|0){if((p+3|0)>>>0<=(c[A>>2]|0)>>>0){c[H>>2]=d[(c[z>>2]|0)+2>>0];c[H>>2]=(c[H>>2]|0)+((d[(c[z>>2]|0)+1>>0]|0)<<8);c[z>>2]=(c[z>>2]|0)+3;break;}c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}else{if((p+2|0)>>>0<=(c[A>>2]|0)>>>0){c[H>>2]=d[(c[z>>2]|0)+1>>0];c[H>>2]=(c[H>>2]|0)+(((d[c[z>>2]>>0]|0)&1)<<8);c[z>>2]=(c[z>>2]|0)+2;break;}c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}}while(0);c[c[q>>2]>>2]=c[z>>2];c[z>>2]=(c[z>>2]|0)+(c[H>>2]|0);c[c[r>>2]>>2]=c[H>>2];if((c[z>>2]|0)>>>0>((c[A>>2]|0)+-3|0)>>>0){c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}a:do{switch(c[B>>2]|0){case 1:{c[E>>2]=0;H=c[s>>2]|0;r=c[z>>2]|0;c[z>>2]=r+1;tv(H,a[r>>0]|0)|0;break;}case 0:{c[E>>2]=6;uv(c[s>>2]|0,6)|0;break;}case 2:{if(!(c[x>>2]|0)){c[o>>2]=-20;N=c[o>>2]|0;l=n;return N|0;}break;}default:{c[K>>2]=63;c[J>>2]=vv(I,K,E,c[z>>2]|0,(c[A>>2]|0)-(c[z>>2]|0)|0)|0;if(wv(c[J>>2]|0)|0){c[o>>2]=-1;N=c[o>>2]|0;l=n;return N|0;}if((c[E>>2]|0)>>>0<=10){c[z>>2]=(c[z>>2]|0)+(c[J>>2]|0);xv(c[s>>2]|0,I,c[K>>2]|0,c[E>>2]|0)|0;break a;}c[o>>2]=-20;N=c[o>>2]|0;l=n;return N|0;}}}while(0);b:do{switch(c[C>>2]|0){case 1:{c[F>>2]=0;if((c[z>>2]|0)>>>0<=((c[A>>2]|0)+-2|0)>>>0){E=c[u>>2]|0;K=c[z>>2]|0;c[z>>2]=K+1;tv(E,(d[K>>0]|0)&31)|0;break b;}c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}case 0:{c[F>>2]=5;uv(c[u>>2]|0,5)|0;break;}case 2:{if(!(c[x>>2]|0)){c[o>>2]=-20;N=c[o>>2]|0;l=n;return N|0;}break;}default:{c[L>>2]=31;c[J>>2]=vv(I,L,F,c[z>>2]|0,(c[A>>2]|0)-(c[z>>2]|0)|0)|0;if(wv(c[J>>2]|0)|0){c[o>>2]=-1;N=c[o>>2]|0;l=n;return N|0;}if((c[F>>2]|0)>>>0<=9){c[z>>2]=(c[z>>2]|0)+(c[J>>2]|0);xv(c[u>>2]|0,I,c[L>>2]|0,c[F>>2]|0)|0;break b;}c[o>>2]=-20;N=c[o>>2]|0;l=n;return N|0;}}}while(0);c:do{switch(c[D>>2]|0){case 1:{c[G>>2]=0;if((c[z>>2]|0)>>>0<=((c[A>>2]|0)+-2|0)>>>0){F=c[t>>2]|0;L=c[z>>2]|0;c[z>>2]=L+1;tv(F,a[L>>0]|0)|0;break c;}c[o>>2]=-72;N=c[o>>2]|0;l=n;return N|0;}case 0:{c[G>>2]=7;uv(c[t>>2]|0,7)|0;break;}case 2:{if(!(c[x>>2]|0)){c[o>>2]=-20;N=c[o>>2]|0;l=n;return N|0;}break;}default:{c[M>>2]=127;c[J>>2]=vv(I,M,G,c[z>>2]|0,(c[A>>2]|0)-(c[z>>2]|0)|0)|0;if(wv(c[J>>2]|0)|0){c[o>>2]=-1;N=c[o>>2]|0;l=n;return N|0;}if((c[G>>2]|0)>>>0<=10){c[z>>2]=(c[z>>2]|0)+(c[J>>2]|0);xv(c[t>>2]|0,I,c[M>>2]|0,c[G>>2]|0)|0;break c;}c[o>>2]=-20;N=c[o>>2]|0;l=n;return N|0;}}}while(0);c[o>>2]=(c[z>>2]|0)-(c[y>>2]|0);N=c[o>>2]|0;l=n;return N|0;}function av(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+20|0;h=f+16|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;if((c[j>>2]|0)>>>0<1){e=c[h>>2]|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[g>>2]=-72;n=c[g>>2]|0;l=f;return n|0;}e=(c[j>>2]|0)>>>0>=4;c[(c[h>>2]|0)+12>>2]=c[i>>2];do{if(e){c[(c[h>>2]|0)+8>>2]=(c[i>>2]|0)+(c[j>>2]|0)+-4;b=ov(c[(c[h>>2]|0)+8>>2]|0)|0;c[c[h>>2]>>2]=b;c[k>>2]=d[(c[i>>2]|0)+((c[j>>2]|0)-1)>>0];if(c[k>>2]|0){b=8-(sv(c[k>>2]|0)|0)|0;c[(c[h>>2]|0)+4>>2]=b;break;}c[g>>2]=-1;n=c[g>>2]|0;l=f;return n|0;}else{c[(c[h>>2]|0)+8>>2]=c[(c[h>>2]|0)+12>>2];c[c[h>>2]>>2]=d[c[(c[h>>2]|0)+12>>2]>>0];switch(c[j>>2]|0){case 7:{b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+6>>0]|0)<<16);o=9;break;}case 6:{o=9;break;}case 5:{o=10;break;}case 4:{o=11;break;}case 3:{o=12;break;}case 2:{o=13;break;}default:{}}if((o|0)==9){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+5>>0]|0)<<8);o=10;}if((o|0)==10){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+4>>0]|0)<<0);o=11;}if((o|0)==11){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+3>>0]|0)<<24);o=12;}if((o|0)==12){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+2>>0]|0)<<16);o=13;}if((o|0)==13){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+1>>0]|0)<<8);}c[m>>2]=d[(c[i>>2]|0)+((c[j>>2]|0)-1)>>0];if(c[m>>2]|0){b=8-(sv(c[m>>2]|0)|0)|0;c[(c[h>>2]|0)+4>>2]=b;b=(c[h>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(4-(c[j>>2]|0)<<3);break;}c[g>>2]=-1;n=c[g>>2]|0;l=f;return n|0;}}while(0);c[g>>2]=c[j>>2];n=c[g>>2]|0;l=f;return n|0;}function bv(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=c[i>>2];c[k>>2]=c[j>>2];j=jv(c[h>>2]|0,e[c[k>>2]>>1]|0)|0;c[c[g>>2]>>2]=j;cv(c[h>>2]|0)|0;c[(c[g>>2]|0)+4>>2]=(c[i>>2]|0)+4;l=f;return;}function cv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[(c[e>>2]|0)+4>>2]|0)>>>0>32){c[d>>2]=3;h=c[d>>2]|0;l=b;return h|0;}a=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=((c[(c[e>>2]|0)+12>>2]|0)+4|0)>>>0){i=(c[e>>2]|0)+8|0;c[i>>2]=(c[i>>2]|0)+(0-((c[a+4>>2]|0)>>>3));i=(c[e>>2]|0)+4|0;c[i>>2]=c[i>>2]&7;i=ov(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=i;c[d>>2]=0;h=c[d>>2]|0;l=b;return h|0;}i=c[(c[e>>2]|0)+4>>2]|0;if((c[a+8>>2]|0)!=(c[(c[e>>2]|0)+12>>2]|0)){c[f>>2]=i>>>3;c[g>>2]=0;if(((c[(c[e>>2]|0)+8>>2]|0)+(0-(c[f>>2]|0))|0)>>>0<(c[(c[e>>2]|0)+12>>2]|0)>>>0){c[f>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0);c[g>>2]=1;}a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(0-(c[f>>2]|0));a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[f>>2]<<3);f=ov(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=f;c[d>>2]=c[g>>2];h=c[d>>2]|0;l=b;return h|0;}if(i>>>0<32){c[d>>2]=1;h=c[d>>2]|0;l=b;return h|0;}else{c[d>>2]=2;h=c[d>>2]|0;l=b;return h|0;}return 0;}function dv(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;e=l;l=l+48|0;f=e+44|0;g=e+40|0;h=e+36|0;i=e+32|0;j=e+28|0;k=e+24|0;m=e+20|0;n=e+16|0;o=e+12|0;p=e+8|0;q=e+4|0;r=e;c[f>>2]=a;c[g>>2]=b;c[m>>2]=c[(c[g>>2]|0)+44>>2];c[n>>2]=c[(c[g>>2]|0)+48>>2];c[h>>2]=(iv((c[g>>2]|0)+16|0)|0)&255;if(c[h>>2]|0)s=c[(c[f>>2]|0)+8>>2]|0;else s=c[(c[g>>2]|0)+40>>2]|0;c[i>>2]=s;if((c[h>>2]|0)==63){s=c[m>>2]|0;c[m>>2]=s+1;c[o>>2]=d[s>>0];do{if((c[o>>2]|0)>>>0>=255){c[h>>2]=(Wq(c[m>>2]|0)|0)&16777215;s=c[h>>2]|0;if(c[h>>2]&1|0){c[h>>2]=s>>>1;c[m>>2]=(c[m>>2]|0)+3;break;}else{c[h>>2]=(s&65535)>>1;c[m>>2]=(c[m>>2]|0)+2;break;}}else c[h>>2]=(c[h>>2]|0)+(c[o>>2]|0);}while(0);if((c[m>>2]|0)>>>0>(c[n>>2]|0)>>>0)c[h>>2]=318;if((c[m>>2]|0)>>>0>=(c[n>>2]|0)>>>0)c[m>>2]=(c[n>>2]|0)+-1;}c[p>>2]=(iv((c[g>>2]|0)+24|0)|0)&255;o=(c[p>>2]|0)-1|0;c[q>>2]=o;c[q>>2]=(c[p>>2]|0)==0?0:o;o=c[6880+(c[p>>2]<<2)>>2]|0;c[j>>2]=o+(jv(c[g>>2]|0,c[q>>2]|0)|0);if(kv()|0)cv(c[g>>2]|0)|0;if(!(c[p>>2]|0))c[j>>2]=c[i>>2];if(c[p>>2]|((c[h>>2]|0)!=0^1)&1|0)c[(c[g>>2]|0)+40>>2]=c[(c[f>>2]|0)+8>>2];lv((c[g>>2]|0)+24|0,c[g>>2]|0)|0;lv((c[g>>2]|0)+16|0,c[g>>2]|0)|0;if(kv()|0)cv(c[g>>2]|0)|0;c[k>>2]=(lv((c[g>>2]|0)+32|0,c[g>>2]|0)|0)&255;if((c[k>>2]|0)!=127){t=c[k>>2]|0;u=t+4|0;c[k>>2]=u;v=c[h>>2]|0;w=c[f>>2]|0;c[w>>2]=v;x=c[j>>2]|0;y=c[f>>2]|0;z=y+8|0;c[z>>2]=x;A=c[k>>2]|0;B=c[f>>2]|0;C=B+4|0;c[C>>2]=A;D=c[m>>2]|0;E=c[g>>2]|0;F=E+44|0;c[F>>2]=D;l=e;return;}p=c[m>>2]|0;c[m>>2]=p+1;c[r>>2]=d[p>>0];do{if((c[r>>2]|0)>>>0>=255){c[k>>2]=(Wq(c[m>>2]|0)|0)&16777215;p=c[k>>2]|0;if(c[k>>2]&1|0){c[k>>2]=p>>>1;c[m>>2]=(c[m>>2]|0)+3;break;}else{c[k>>2]=(p&65535)>>1;c[m>>2]=(c[m>>2]|0)+2;break;}}else c[k>>2]=(c[k>>2]|0)+(c[r>>2]|0);}while(0);if((c[m>>2]|0)>>>0>(c[n>>2]|0)>>>0)c[k>>2]=382;if((c[m>>2]|0)>>>0<(c[n>>2]|0)>>>0){t=c[k>>2]|0;u=t+4|0;c[k>>2]=u;v=c[h>>2]|0;w=c[f>>2]|0;c[w>>2]=v;x=c[j>>2]|0;y=c[f>>2]|0;z=y+8|0;c[z>>2]=x;A=c[k>>2]|0;B=c[f>>2]|0;C=B+4|0;c[C>>2]=A;D=c[m>>2]|0;E=c[g>>2]|0;F=E+44|0;c[F>>2]=D;l=e;return;}c[m>>2]=(c[n>>2]|0)+-1;t=c[k>>2]|0;u=t+4|0;c[k>>2]=u;v=c[h>>2]|0;w=c[f>>2]|0;c[w>>2]=v;x=c[j>>2]|0;y=c[f>>2]|0;z=y+8|0;c[z>>2]=x;A=c[k>>2]|0;B=c[f>>2]|0;C=B+4|0;c[C>>2]=A;D=c[m>>2]|0;E=c[g>>2]|0;F=E+44|0;c[F>>2]=D;l=e;return;}function ev(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;k=l;l=l+64|0;m=k+60|0;n=k+56|0;o=k+52|0;p=k+48|0;q=k+44|0;r=k+40|0;s=k+36|0;t=k+32|0;u=k+28|0;v=k+24|0;w=k+20|0;x=k+16|0;y=k+12|0;z=k+8|0;A=k+4|0;B=k;c[n>>2]=b;c[o>>2]=d;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=(c[n>>2]|0)+(c[e>>2]|0);c[v>>2]=(c[e>>2]|0)+(c[e+4>>2]|0);c[w>>2]=(c[n>>2]|0)+(c[v>>2]|0);c[x>>2]=(c[o>>2]|0)+-8;c[y>>2]=(c[c[p>>2]>>2]|0)+(c[e>>2]|0);c[z>>2]=(c[u>>2]|0)+(0-(c[e+8>>2]|0));if((c[u>>2]|0)>>>0>(c[x>>2]|0)>>>0){c[m>>2]=-70;C=c[m>>2]|0;l=k;return C|0;}if((c[w>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[m>>2]=-70;C=c[m>>2]|0;l=k;return C|0;}if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}fv(c[n>>2]|0,c[c[p>>2]>>2]|0,c[e>>2]|0);c[n>>2]=c[u>>2];c[c[p>>2]>>2]=c[y>>2];do{if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[r>>2]|0)|0)>>>0){if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[s>>2]|0)|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}c[z>>2]=(c[t>>2]|0)+(0-((c[r>>2]|0)-(c[z>>2]|0)));if(((c[z>>2]|0)+(c[e+4>>2]|0)|0)>>>0<=(c[t>>2]|0)>>>0){nE(c[u>>2]|0,c[z>>2]|0,c[e+4>>2]|0)|0;c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}c[A>>2]=(c[t>>2]|0)-(c[z>>2]|0);nE(c[u>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;c[n>>2]=(c[u>>2]|0)+(c[A>>2]|0);y=e+4|0;c[y>>2]=(c[y>>2]|0)-(c[A>>2]|0);c[z>>2]=c[r>>2];if((c[n>>2]|0)>>>0<=(c[x>>2]|0)>>>0?(c[e+4>>2]|0)>>>0>=4:0)break;while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;y=c[z>>2]|0;c[z>>2]=y+1;p=a[y>>0]|0;y=c[n>>2]|0;c[n>>2]=y+1;a[y>>0]=p;}c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}}while(0);if((c[e+8>>2]|0)>>>0<8){c[B>>2]=c[6816+(c[e+8>>2]<<2)>>2];a[c[n>>2]>>0]=a[c[z>>2]>>0]|0;a[(c[n>>2]|0)+1>>0]=a[(c[z>>2]|0)+1>>0]|0;a[(c[n>>2]|0)+2>>0]=a[(c[z>>2]|0)+2>>0]|0;a[(c[n>>2]|0)+3>>0]=a[(c[z>>2]|0)+3>>0]|0;c[z>>2]=(c[z>>2]|0)+(c[6848+(c[e+8>>2]<<2)>>2]|0);gv((c[n>>2]|0)+4|0,c[z>>2]|0);c[z>>2]=(c[z>>2]|0)+(0-(c[B>>2]|0));}else hv(c[n>>2]|0,c[z>>2]|0);c[n>>2]=(c[n>>2]|0)+8;c[z>>2]=(c[z>>2]|0)+8;B=c[n>>2]|0;a:do{if((c[w>>2]|0)>>>0>((c[o>>2]|0)+-12|0)>>>0){if(B>>>0<(c[x>>2]|0)>>>0){fv(c[n>>2]|0,c[z>>2]|0,(c[x>>2]|0)-(c[n>>2]|0)|0);c[z>>2]=(c[z>>2]|0)+((c[x>>2]|0)-(c[n>>2]|0));c[n>>2]=c[x>>2];}while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;r=c[z>>2]|0;c[z>>2]=r+1;A=a[r>>0]|0;r=c[n>>2]|0;c[n>>2]=r+1;a[r>>0]=A;}}else fv(B,c[z>>2]|0,(c[e+4>>2]|0)-8|0);}while(0);c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}function fv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{hv(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function gv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;l=e;return;}function hv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function iv(d){d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=(c[(c[f>>2]|0)+4>>2]|0)+(c[c[f>>2]>>2]<<2)|0;b[g>>1]=b[d>>1]|0;b[g+2>>1]=b[d+2>>1]|0;l=e;return a[g+2>>0]|0;}function jv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=mv(c[e>>2]|0,c[f>>2]|0)|0;nv(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function kv(){return 1;}function lv(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=jv(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function mv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>1>>>(31-(c[f>>2]|0)&31)|0;}function nv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(c[e>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(c[f>>2]|0);l=d;return;}function ov(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(kv()|0)!=0;f=c[e>>2]|0;if(a){c[d>>2]=Wq(f)|0;g=c[d>>2]|0;l=b;return g|0;}else{a=pv(f)|0;c[d>>2]=a;g=c[d>>2]|0;l=b;return g|0;}return 0;}function pv(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(Xq()|0)!=0;f=qv(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=rv(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function qv(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function rv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function sv(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function tv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+20|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=d;a[h>>0]=e;c[i>>2]=c[g>>2];c[j>>2]=c[i>>2];c[k>>2]=(c[g>>2]|0)+4;c[m>>2]=c[k>>2];b[c[j>>2]>>1]=0;b[(c[j>>2]|0)+2>>1]=0;b[c[m>>2]>>1]=0;a[(c[m>>2]|0)+2>>0]=a[h>>0]|0;a[(c[m>>2]|0)+3>>0]=0;l=f;return 0;}function uv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=l;l=l+48|0;g=f+40|0;h=f+36|0;i=f+32|0;j=f+28|0;k=f+24|0;m=f+20|0;n=f+16|0;o=f+12|0;p=f+8|0;q=f+4|0;r=f;c[h>>2]=d;c[i>>2]=e;c[j>>2]=c[h>>2];c[k>>2]=c[j>>2];c[m>>2]=(c[h>>2]|0)+4;c[n>>2]=c[m>>2];c[o>>2]=1<<c[i>>2];c[p>>2]=(c[o>>2]|0)-1;c[q>>2]=c[p>>2];if((c[i>>2]|0)>>>0<1){c[g>>2]=-1;s=c[g>>2]|0;l=f;return s|0;}b[c[k>>2]>>1]=c[i>>2];b[(c[k>>2]|0)+2>>1]=1;c[r>>2]=0;while(1){if((c[r>>2]|0)>>>0>(c[q>>2]|0)>>>0)break;b[(c[n>>2]|0)+(c[r>>2]<<2)>>1]=0;a[(c[n>>2]|0)+(c[r>>2]<<2)+2>>0]=c[r>>2];a[(c[n>>2]|0)+(c[r>>2]<<2)+3>>0]=c[i>>2];c[r>>2]=(c[r>>2]|0)+1;}c[g>>2]=0;s=c[g>>2]|0;l=f;return s|0;}function vv(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;h=l;l=l+80|0;i=h+64|0;j=h+60|0;k=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;p=h+40|0;q=h+36|0;r=h+32|0;s=h+28|0;t=h+24|0;u=h+20|0;v=h+16|0;w=h+12|0;x=h+8|0;y=h+4|0;z=h;A=h+70|0;B=h+68|0;c[j>>2]=a;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[p>>2];c[x>>2]=0;c[y>>2]=0;if((c[o>>2]|0)>>>0<4){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=Wq(c[r>>2]|0)|0;c[s>>2]=(c[v>>2]&15)+5;if((c[s>>2]|0)>15){c[i>>2]=-44;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=(c[v>>2]|0)>>>4;c[w>>2]=4;c[c[m>>2]>>2]=c[s>>2];c[t>>2]=(1<<c[s>>2])+1;c[u>>2]=1<<c[s>>2];c[s>>2]=(c[s>>2]|0)+1;a:while(1){if((c[t>>2]|0)<=1)break;if((c[x>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0)break;do{if(c[y>>2]|0){c[z>>2]=c[x>>2];while(1){if((c[v>>2]&65535|0)!=65535)break;c[z>>2]=(c[z>>2]|0)+24;if((c[r>>2]|0)>>>0<((c[q>>2]|0)+-5|0)>>>0){c[r>>2]=(c[r>>2]|0)+2;m=Wq(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]|0);}else{c[v>>2]=(c[v>>2]|0)>>>16;c[w>>2]=(c[w>>2]|0)+16;}}while(1){if((c[v>>2]&3|0)!=3)break;c[z>>2]=(c[z>>2]|0)+3;c[v>>2]=(c[v>>2]|0)>>>2;c[w>>2]=(c[w>>2]|0)+2;}c[z>>2]=(c[z>>2]|0)+(c[v>>2]&3);c[w>>2]=(c[w>>2]|0)+2;if((c[z>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0){D=19;break a;}while(1){if((c[x>>2]|0)>>>0>=(c[z>>2]|0)>>>0)break;m=c[j>>2]|0;n=c[x>>2]|0;c[x>>2]=n+1;b[m+(n<<1)>>1]=0;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[v>>2]=(c[v>>2]|0)>>>2;break;}c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;n=Wq(c[r>>2]|0)|0;c[v>>2]=n>>>(c[w>>2]|0);}}while(0);b[A>>1]=(c[u>>2]<<1)-1-(c[t>>2]|0);n=c[v>>2]|0;m=c[u>>2]|0;if((c[v>>2]&(c[u>>2]|0)-1)>>>0<(b[A>>1]|0)>>>0){b[B>>1]=n&m-1;c[w>>2]=(c[w>>2]|0)+((c[s>>2]|0)-1);}else{b[B>>1]=n&(m<<1)-1;if((b[B>>1]|0)>=(c[u>>2]|0))b[B>>1]=(b[B>>1]|0)-(b[A>>1]|0);c[w>>2]=(c[w>>2]|0)+(c[s>>2]|0);}b[B>>1]=(b[B>>1]|0)+-1<<16>>16;m=(zv(b[B>>1]|0)|0)<<16>>16;c[t>>2]=(c[t>>2]|0)-m;m=b[B>>1]|0;n=c[j>>2]|0;g=c[x>>2]|0;c[x>>2]=g+1;b[n+(g<<1)>>1]=m;c[y>>2]=((b[B>>1]|0)!=0^1)&1;while(1){if((c[t>>2]|0)>=(c[u>>2]|0))break;c[s>>2]=(c[s>>2]|0)+-1;c[u>>2]=c[u>>2]>>1;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[w>>2]=(c[w>>2]|0)-((c[q>>2]|0)+-4-(c[r>>2]|0)<<3);c[r>>2]=(c[q>>2]|0)+-4;}else{c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;}m=Wq(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]&31);}if((D|0)==19){c[i>>2]=-48;C=c[i>>2]|0;l=h;return C|0;}if((c[t>>2]|0)!=1){c[i>>2]=-1;C=c[i>>2]|0;l=h;return C|0;}c[c[k>>2]>>2]=(c[x>>2]|0)-1;c[r>>2]=(c[r>>2]|0)+((c[w>>2]|0)+7>>3);if(((c[r>>2]|0)-(c[p>>2]|0)|0)>>>0>(c[o>>2]|0)>>>0){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}else{c[i>>2]=(c[r>>2]|0)-(c[p>>2]|0);C=c[i>>2]|0;l=h;return C|0;}return 0;}function wv(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=nr(c[d>>2]|0)|0;l=b;return a|0;}function xv(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;j=l;l=l+592|0;k=j+572|0;m=j+568|0;n=j+564|0;o=j+560|0;p=j+556|0;q=j+580|0;r=j+552|0;s=j+548|0;t=j+544|0;u=j+540|0;v=j+536|0;w=j;x=j+532|0;y=j+528|0;z=j+578|0;A=j+524|0;B=j+520|0;C=j+516|0;D=j+512|0;E=j+584|0;F=j+576|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=i;c[r>>2]=(c[m>>2]|0)+4;c[s>>2]=c[r>>2];c[t>>2]=1<<c[p>>2];c[u>>2]=(c[t>>2]|0)-1;c[v>>2]=yv(c[t>>2]|0)|0;c[x>>2]=0;c[y>>2]=(c[t>>2]|0)-1;b[z>>1]=1<<(c[p>>2]|0)-1;c[A>>2]=1;if((c[o>>2]|0)>>>0>255){c[k>>2]=-46;G=c[k>>2]|0;l=j;return G|0;}if((c[p>>2]|0)>>>0>12){c[k>>2]=-44;G=c[k>>2]|0;l=j;return G|0;}b[q>>1]=c[p>>2];c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;if((b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0)==-1){r=c[B>>2]&255;i=c[s>>2]|0;h=c[y>>2]|0;c[y>>2]=h+-1;a[i+(h<<2)+2>>0]=r;b[w+(c[B>>2]<<1)>>1]=1;}else{if((b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0)>=(b[z>>1]|0))c[A>>2]=0;b[w+(c[B>>2]<<1)>>1]=b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0;}c[B>>2]=(c[B>>2]|0)+1;}c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;c[C>>2]=0;while(1){H=c[B>>2]|0;if((c[C>>2]|0)>=(b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0))break;a[(c[s>>2]|0)+(c[x>>2]<<2)+2>>0]=H;c[x>>2]=(c[x>>2]|0)+(c[v>>2]|0)&c[u>>2];while(1){if((c[x>>2]|0)>>>0<=(c[y>>2]|0)>>>0)break;c[x>>2]=(c[x>>2]|0)+(c[v>>2]|0)&c[u>>2];}c[C>>2]=(c[C>>2]|0)+1;}c[B>>2]=H+1;}if(c[x>>2]|0){c[k>>2]=-1;G=c[k>>2]|0;l=j;return G|0;}c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;a[E>>0]=a[(c[s>>2]|0)+(c[D>>2]<<2)+2>>0]|0;x=w+(d[E>>0]<<1)|0;H=b[x>>1]|0;b[x>>1]=H+1<<16>>16;b[F>>1]=H;H=c[p>>2]|0;x=H-(sv(e[F>>1]|0)|0)&255;a[(c[s>>2]|0)+(c[D>>2]<<2)+3>>0]=x;b[(c[s>>2]|0)+(c[D>>2]<<2)>>1]=(e[F>>1]<<d[(c[s>>2]|0)+(c[D>>2]<<2)+3>>0])-(c[t>>2]|0);c[D>>2]=(c[D>>2]|0)+1;}b[q+2>>1]=c[A>>2];A=c[m>>2]|0;b[A>>1]=b[q>>1]|0;b[A+2>>1]=b[q+2>>1]|0;c[k>>2]=0;G=c[k>>2]|0;l=j;return G|0;}function yv(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return((c[d>>2]|0)>>>1)+((c[d>>2]|0)>>>3)+3|0;}function zv(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=a;a=b[d>>1]|0;l=c;return((b[d>>1]|0)<0?0-a|0:a)&65535|0;}function Av(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+8224|0;h=g+8220|0;i=g+8216|0;j=g+8212|0;k=g+8208|0;m=g+8204|0;n=g;o=g+8200|0;p=g+8196|0;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;oE(n|0,0,8194)|0;b[n>>1]=12;c[o>>2]=c[k>>2];c[p>>2]=_v(n,c[k>>2]|0,c[m>>2]|0)|0;k=(Cv(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(k){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[m>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[m>>2]=(c[m>>2]|0)-(c[p>>2]|0);c[h>>2]=cw(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0,c[m>>2]|0,n)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function Bv(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=l;l=l+48|0;h=g+44|0;i=g+40|0;j=g+36|0;k=g+32|0;m=g+28|0;n=g+24|0;o=g+20|0;p=g+8|0;q=g+4|0;r=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=e;c[m>>2]=f;c[o>>2]=(c[j>>2]|0)>>>8;c[q>>2]=0;if(!(c[j>>2]|0)){c[h>>2]=-70;s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)>>>0>=(c[j>>2]|0)>>>0){c[h>>2]=-20;s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)==1){oE(c[i>>2]|0,(d[c[k>>2]>>0]|0)&255|0,c[j>>2]|0)|0;c[h>>2]=c[j>>2];s=c[h>>2]|0;l=g;return s|0;}c[n>>2]=(c[m>>2]<<4>>>0)/((c[j>>2]|0)>>>0)|0;c[r>>2]=0;while(1){if((c[r>>2]|0)>=3)break;f=(c[7008+((c[n>>2]|0)*24|0)+(c[r>>2]<<3)>>2]|0)+(N(c[7008+((c[n>>2]|0)*24|0)+(c[r>>2]<<3)+4>>2]|0,c[o>>2]|0)|0)|0;c[p+(c[r>>2]<<2)>>2]=f;c[r>>2]=(c[r>>2]|0)+1;}r=p+4|0;c[r>>2]=(c[r>>2]|0)+((c[p+4>>2]|0)>>>4);r=p+8|0;c[r>>2]=(c[r>>2]|0)+((c[p+8>>2]|0)>>>3);if((c[p+4>>2]|0)>>>0<(c[p>>2]|0)>>>0)c[q>>2]=1;c[h>>2]=sc[c[11976+(c[q>>2]<<2)>>2]&15](c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;s=c[h>>2]|0;l=g;return s|0;}function Cv(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=nr(c[d>>2]|0)|0;l=b;return a|0;}function Dv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;g=l;l=l+80|0;h=g+64|0;i=g+60|0;j=g+56|0;k=g+52|0;m=g+48|0;n=g+44|0;o=g+40|0;p=g+36|0;q=g+32|0;r=g+28|0;s=g+24|0;t=g+20|0;u=g+16|0;v=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[k>>2];c[p>>2]=c[i>>2];c[q>>2]=(c[p>>2]|0)+(c[j>>2]|0);c[r>>2]=c[c[n>>2]>>2];c[s>>2]=c[n>>2];c[t>>2]=(c[s>>2]|0)+4;c[u>>2]=av(v,c[o>>2]|0,c[m>>2]|0)|0;if(Cv(c[u>>2]|0)|0){c[h>>2]=c[u>>2];w=c[h>>2]|0;l=g;return w|0;}Ev(c[p>>2]|0,v,c[q>>2]|0,c[t>>2]|0,c[r>>2]|0)|0;if(Fv(v)|0){c[h>>2]=c[j>>2];w=c[h>>2]|0;l=g;return w|0;}else{c[h>>2]=-20;w=c[h>>2]|0;l=g;return w|0;}return 0;}function Ev(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=c[h>>2];while(1){if(cv(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>=((c[j>>2]|0)+-7|0)>>>0)break;if(Gv()|0){f=Hv(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}Gv()|0;f=Hv(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;if(Gv()|0){f=Hv(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}f=Hv(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){if(cv(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=Hv(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){o=c[h>>2]|0;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=Hv(o,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}if(o>>>0>=(c[j>>2]|0)>>>0){p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}j=Iv(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+j;p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}function Fv(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;c[d>>2]=a;if((c[(c[d>>2]|0)+8>>2]|0)!=(c[(c[d>>2]|0)+12>>2]|0)){e=0;f=e&1;l=b;return f|0;}e=(c[(c[d>>2]|0)+4>>2]|0)==32;f=e&1;l=b;return f|0;}function Gv(){return 0;}function Hv(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=Jv(c[j>>2]|0,c[m>>2]|0)|0;m=c[i>>2]|0;i=(c[k>>2]|0)+(c[n>>2]<<2)|0;a[m>>0]=a[i>>0]|0;a[m+1>>0]=a[i+1>>0]|0;nv(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0;}function Iv(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=Jv(c[j>>2]|0,c[m>>2]|0)|0;a[c[i>>2]>>0]=a[(c[k>>2]|0)+(c[n>>2]<<2)>>0]|0;i=c[j>>2]|0;if((d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0)==1){nv(i,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return 1;}if((c[i+4>>2]|0)>>>0>=32){l=h;return 1;}nv(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);if((c[(c[j>>2]|0)+4>>2]|0)>>>0<=32){l=h;return 1;}c[(c[j>>2]|0)+4>>2]=32;l=h;return 1;}function Jv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>(32-(c[f>>2]|0)&31)|0;}function Kv(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+8224|0;h=g+8220|0;i=g+8216|0;j=g+8212|0;k=g+8208|0;m=g+8204|0;n=g;o=g+8200|0;p=g+8196|0;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;oE(n|0,0,8194)|0;b[n>>1]=12;c[o>>2]=c[k>>2];c[p>>2]=_v(n,c[k>>2]|0,c[m>>2]|0)|0;k=(Cv(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(k){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[m>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[m>>2]=(c[m>>2]|0)-(c[p>>2]|0);c[h>>2]=$v(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0,c[m>>2]|0,n)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function Lv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+16416|0;g=f+16412|0;h=f+16408|0;i=f+16404|0;j=f+16400|0;k=f+16396|0;m=f;n=f+16392|0;o=f+16388|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;oE(m|0,0,16388)|0;c[m>>2]=12;c[n>>2]=c[j>>2];c[o>>2]=Mv(m,c[j>>2]|0,c[k>>2]|0)|0;j=(Cv(c[o>>2]|0)|0)!=0;e=c[o>>2]|0;if(j){c[g>>2]=e;p=c[g>>2]|0;l=f;return p|0;}if(e>>>0>=(c[k>>2]|0)>>>0){c[g>>2]=-72;p=c[g>>2]|0;l=f;return p|0;}else{c[n>>2]=(c[n>>2]|0)+(c[o>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[o>>2]|0);c[g>>2]=Nv(c[h>>2]|0,c[i>>2]|0,c[n>>2]|0,c[k>>2]|0,m)|0;p=c[g>>2]|0;l=f;return p|0;}return 0;}function Mv(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;g=l;l=l+2128|0;h=g+2120|0;i=g+2116|0;j=g+2112|0;k=g+2108|0;m=g+1760|0;n=g+1248|0;o=g+1168|0;p=g+1088|0;q=g+2104|0;r=g;s=g+2100|0;t=g+2096|0;u=g+2092|0;v=g+2088|0;w=g+2084|0;x=g+2080|0;y=g+2076|0;z=g+2072|0;A=g+2068|0;B=g+2064|0;C=g+2060|0;D=g+2056|0;E=g+2052|0;F=g+2048|0;G=g+2044|0;H=g+2040|0;I=g+2036|0;J=g+2032|0;K=g+2028|0;L=g+2024|0;M=g+2020|0;N=g+2016|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;f=o;e=f+68|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));f=p;e=f+72|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));c[q>>2]=p+4;c[w>>2]=c[c[i>>2]>>2];c[y>>2]=c[i>>2];c[z>>2]=(c[y>>2]|0)+4;if((c[w>>2]|0)>>>0>16){c[h>>2]=-44;O=c[h>>2]|0;l=g;return O|0;}c[x>>2]=Qv(m,256,o,v,s,c[j>>2]|0,c[k>>2]|0)|0;if(Cv(c[x>>2]|0)|0){c[h>>2]=c[x>>2];O=c[h>>2]|0;l=g;return O|0;}if((c[s>>2]|0)>>>0>(c[w>>2]|0)>>>0){c[h>>2]=-44;O=c[h>>2]|0;l=g;return O|0;}c[t>>2]=c[s>>2];while(1){if(c[o+(c[t>>2]<<2)>>2]|0)break;c[t>>2]=(c[t>>2]|0)+-1;}c[B>>2]=0;c[A>>2]=1;while(1){P=c[B>>2]|0;if((c[A>>2]|0)>>>0>(c[t>>2]|0)>>>0)break;c[C>>2]=P;c[B>>2]=(c[B>>2]|0)+(c[o+(c[A>>2]<<2)>>2]|0);c[(c[q>>2]|0)+(c[A>>2]<<2)>>2]=c[C>>2];c[A>>2]=(c[A>>2]|0)+1;}c[c[q>>2]>>2]=P;c[u>>2]=c[B>>2];c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;c[E>>2]=d[m+(c[D>>2]|0)>>0];B=(c[q>>2]|0)+(c[E>>2]<<2)|0;P=c[B>>2]|0;c[B>>2]=P+1;c[F>>2]=P;a[n+(c[F>>2]<<1)>>0]=c[D>>2];a[n+(c[F>>2]<<1)+1>>0]=c[E>>2];c[D>>2]=(c[D>>2]|0)+1;}c[c[q>>2]>>2]=0;c[G>>2]=(c[s>>2]|0)+1-(c[t>>2]|0);c[H>>2]=0;c[K>>2]=(c[w>>2]|0)-(c[s>>2]|0)-1;c[L>>2]=r;c[I>>2]=1;while(1){if((c[I>>2]|0)>>>0>(c[t>>2]|0)>>>0)break;c[M>>2]=c[H>>2];c[H>>2]=(c[H>>2]|0)+(c[o+(c[I>>2]<<2)>>2]<<(c[I>>2]|0)+(c[K>>2]|0));c[(c[L>>2]|0)+(c[I>>2]<<2)>>2]=c[M>>2];c[I>>2]=(c[I>>2]|0)+1;}c[J>>2]=c[G>>2];while(1){if((c[J>>2]|0)>>>0>((c[w>>2]|0)-(c[G>>2]|0)|0)>>>0)break;c[N>>2]=r+((c[J>>2]|0)*68|0);c[I>>2]=1;while(1){if((c[I>>2]|0)>>>0>(c[t>>2]|0)>>>0)break;c[(c[N>>2]|0)+(c[I>>2]<<2)>>2]=(c[(c[L>>2]|0)+(c[I>>2]<<2)>>2]|0)>>>(c[J>>2]|0);c[I>>2]=(c[I>>2]|0)+1;}c[J>>2]=(c[J>>2]|0)+1;}Rv(c[z>>2]|0,c[w>>2]|0,n,c[u>>2]|0,p,r,c[t>>2]|0,(c[s>>2]|0)+1|0);c[h>>2]=c[x>>2];O=c[h>>2]|0;l=g;return O|0;}function Nv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=l;l=l+192|0;h=g+184|0;i=g+180|0;j=g+176|0;k=g+172|0;m=g+168|0;n=g+164|0;o=g+160|0;p=g+156|0;q=g+152|0;r=g+148|0;s=g+144|0;t=g+140|0;u=g+136|0;v=g+120|0;w=g+104|0;x=g+88|0;y=g+72|0;z=g+64|0;A=g+60|0;B=g+56|0;C=g+52|0;D=g+48|0;E=g+44|0;F=g+40|0;G=g+36|0;H=g+32|0;I=g+28|0;J=g+24|0;K=g+20|0;L=g+16|0;M=g+12|0;N=g+8|0;O=g+4|0;P=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if((c[m>>2]|0)>>>0<10){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}c[o>>2]=c[k>>2];c[p>>2]=c[i>>2];c[q>>2]=(c[p>>2]|0)+(c[j>>2]|0);c[r>>2]=c[n>>2];c[s>>2]=(c[r>>2]|0)+4;c[t>>2]=c[c[n>>2]>>2];c[z>>2]=(Ov(c[o>>2]|0)|0)&65535;c[A>>2]=(Ov((c[o>>2]|0)+2|0)|0)&65535;c[B>>2]=(Ov((c[o>>2]|0)+4|0)|0)&65535;c[D>>2]=(c[o>>2]|0)+6;c[E>>2]=(c[D>>2]|0)+(c[z>>2]|0);c[F>>2]=(c[E>>2]|0)+(c[A>>2]|0);c[G>>2]=(c[F>>2]|0)+(c[B>>2]|0);c[H>>2]=(((c[j>>2]|0)+3|0)>>>0)/4|0;c[I>>2]=(c[p>>2]|0)+(c[H>>2]|0);c[J>>2]=(c[I>>2]|0)+(c[H>>2]|0);c[K>>2]=(c[J>>2]|0)+(c[H>>2]|0);c[L>>2]=c[p>>2];c[M>>2]=c[I>>2];c[N>>2]=c[J>>2];c[O>>2]=c[K>>2];c[C>>2]=(c[m>>2]|0)-((c[z>>2]|0)+(c[A>>2]|0)+(c[B>>2]|0)+6);if((c[C>>2]|0)>>>0>(c[m>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=av(v,c[D>>2]|0,c[z>>2]|0)|0;if(Cv(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=av(w,c[E>>2]|0,c[A>>2]|0)|0;if(Cv(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=av(x,c[F>>2]|0,c[B>>2]|0)|0;if(Cv(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=av(y,c[G>>2]|0,c[C>>2]|0)|0;if(Cv(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}u=cv(v)|0;C=u|(cv(w)|0);u=C|(cv(x)|0);c[P>>2]=u|(cv(y)|0);while(1){if(c[P>>2]|0)break;if((c[O>>2]|0)>>>0>=((c[q>>2]|0)+-7|0)>>>0)break;if(Gv()|0){u=Hv(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;}if(Gv()|0){u=Hv(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;}if(Gv()|0){u=Hv(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;}if(Gv()|0){u=Hv(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;}Gv()|0;u=Hv(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;Gv()|0;u=Hv(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;Gv()|0;u=Hv(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;Gv()|0;u=Hv(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;if(Gv()|0){u=Hv(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;}if(Gv()|0){u=Hv(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;}if(Gv()|0){u=Hv(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;}if(Gv()|0){u=Hv(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;}u=Hv(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;u=Hv(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;u=Hv(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;u=Hv(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;u=cv(v)|0;C=u|(cv(w)|0);u=C|(cv(x)|0);c[P>>2]=u|(cv(y)|0);}if((c[L>>2]|0)>>>0>(c[I>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}if((c[M>>2]|0)>>>0>(c[J>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}if((c[N>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}Ev(c[L>>2]|0,v,c[I>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;Ev(c[M>>2]|0,w,c[J>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;Ev(c[N>>2]|0,x,c[K>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;Ev(c[O>>2]|0,y,c[q>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;t=Fv(v)|0;v=t&(Fv(w)|0);w=v&(Fv(x)|0);c[P>>2]=w&(Fv(y)|0);if(c[P>>2]|0){c[h>>2]=c[j>>2];Q=c[h>>2]|0;l=g;return Q|0;}else{c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}return 0;}function Ov(a){a=a|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=a;a=(Xq()|0)!=0;i=c[g>>2]|0;if(a){b[f>>1]=Pv(i)|0;j=b[f>>1]|0;l=e;return j|0;}else{c[h>>2]=i;b[f>>1]=(d[c[h>>2]>>0]|0)+((d[(c[h>>2]|0)+1>>0]|0)<<8);j=b[f>>1]|0;l=e;return j|0;}return 0;}function Pv(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function Qv(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;k=l;l=l+80|0;m=k+68|0;n=k+64|0;o=k+60|0;p=k+56|0;q=k+52|0;r=k+48|0;s=k+44|0;t=k+40|0;u=k+36|0;v=k+32|0;w=k+28|0;x=k+24|0;y=k+20|0;z=k+16|0;A=k+12|0;B=k+8|0;C=k+4|0;D=k;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[w>>2]=c[s>>2];if(!(c[t>>2]|0)){c[m>>2]=-72;E=c[m>>2]|0;l=k;return E|0;}c[x>>2]=d[c[w>>2]>>0];s=c[x>>2]|0;a:do{if((c[x>>2]|0)>>>0<128){if((s+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;E=c[m>>2]|0;l=k;return E|0;}c[y>>2]=Vv(c[n>>2]|0,(c[o>>2]|0)-1|0,(c[w>>2]|0)+1|0,c[x>>2]|0)|0;if(wv(c[y>>2]|0)|0){c[m>>2]=c[y>>2];E=c[m>>2]|0;l=k;return E|0;}}else{j=c[x>>2]|0;if(s>>>0>=242){c[y>>2]=c[7392+(j-242<<2)>>2];oE(c[n>>2]|0,1,c[o>>2]|0)|0;c[x>>2]=0;break;}c[y>>2]=j-127;c[x>>2]=(((c[y>>2]|0)+1|0)>>>0)/2|0;if(((c[x>>2]|0)+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;E=c[m>>2]|0;l=k;return E|0;}if((c[y>>2]|0)>>>0>=(c[o>>2]|0)>>>0){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}c[w>>2]=(c[w>>2]|0)+1;c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break a;a[(c[n>>2]|0)+(c[z>>2]|0)>>0]=(d[(c[w>>2]|0)+(((c[z>>2]|0)>>>0)/2|0)>>0]|0)>>4;a[(c[n>>2]|0)+((c[z>>2]|0)+1)>>0]=(d[(c[w>>2]|0)+(((c[z>>2]|0)>>>0)/2|0)>>0]|0)&15;c[z>>2]=(c[z>>2]|0)+2;}}}while(0);w=c[p>>2]|0;o=w+68|0;do{c[w>>2]=0;w=w+4|0;}while((w|0)<(o|0));c[u>>2]=0;c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break;if((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0|0)>=16){F=20;break;}w=(c[p>>2]|0)+((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)<<2)|0;c[w>>2]=(c[w>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+(1<<(d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)>>1);c[z>>2]=(c[z>>2]|0)+1;}if((F|0)==20){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}if(!(c[u>>2]|0)){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}c[v>>2]=(sv(c[u>>2]|0)|0)+1;if((c[v>>2]|0)>>>0>16){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}c[A>>2]=1<<c[v>>2];c[B>>2]=(c[A>>2]|0)-(c[u>>2]|0);c[C>>2]=1<<(sv(c[B>>2]|0)|0);c[D>>2]=(sv(c[B>>2]|0)|0)+1;if((c[C>>2]|0)!=(c[B>>2]|0)){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}a[(c[n>>2]|0)+(c[y>>2]|0)>>0]=c[D>>2];n=(c[p>>2]|0)+(c[D>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+1;if((c[(c[p>>2]|0)+4>>2]|0)>>>0>=2?(c[(c[p>>2]|0)+4>>2]&1|0)==0:0){c[c[q>>2]>>2]=(c[y>>2]|0)+1;c[c[r>>2]>>2]=c[v>>2];c[m>>2]=(c[x>>2]|0)+1;E=c[m>>2]|0;l=k;return E|0;}c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}function Rv(e,f,g,h,i,j,k,m){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;n=l;l=l+160|0;o=n+140|0;p=n+136|0;q=n+132|0;r=n+128|0;s=n+124|0;t=n+120|0;u=n+116|0;v=n+112|0;w=n;x=n+108|0;y=n+104|0;z=n+100|0;A=n+148|0;B=n+96|0;C=n+92|0;D=n+88|0;E=n+84|0;F=n+80|0;G=n+76|0;H=n+72|0;I=n+68|0;J=n+144|0;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=k;c[v>>2]=m;c[x>>2]=(c[v>>2]|0)-(c[p>>2]|0);c[y>>2]=(c[v>>2]|0)-(c[u>>2]|0);u=w;m=c[t>>2]|0;k=u+68|0;do{c[u>>2]=c[m>>2];u=u+4|0;m=m+4|0;}while((u|0)<(k|0));c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;b[A>>1]=d[(c[q>>2]|0)+(c[z>>2]<<1)>>0]|0;c[B>>2]=d[(c[q>>2]|0)+(c[z>>2]<<1)+1>>0];c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);c[D>>2]=c[w+(c[B>>2]<<2)>>2];c[E>>2]=1<<(c[p>>2]|0)-(c[C>>2]|0);a:do{if(((c[p>>2]|0)-(c[C>>2]|0)|0)>>>0>=(c[y>>2]|0)>>>0){m=(c[C>>2]|0)+(c[x>>2]|0)|0;c[G>>2]=m;c[G>>2]=(c[G>>2]|0)<1?1:m;c[F>>2]=c[(c[s>>2]|0)+(c[G>>2]<<2)>>2];Sv((c[o>>2]|0)+(c[D>>2]<<2)|0,(c[p>>2]|0)-(c[C>>2]|0)|0,c[C>>2]|0,(c[t>>2]|0)+((c[C>>2]|0)*68|0)|0,c[G>>2]|0,(c[q>>2]|0)+(c[F>>2]<<1)|0,(c[r>>2]|0)-(c[F>>2]|0)|0,c[v>>2]|0,b[A>>1]|0);}else{c[I>>2]=(c[D>>2]|0)+(c[E>>2]|0);Tv(J,b[A>>1]|0);a[J+2>>0]=c[C>>2];a[J+3>>0]=1;c[H>>2]=c[D>>2];while(1){if((c[H>>2]|0)>>>0>=(c[I>>2]|0)>>>0)break a;m=(c[o>>2]|0)+(c[H>>2]<<2)|0;b[m>>1]=b[J>>1]|0;b[m+2>>1]=b[J+2>>1]|0;c[H>>2]=(c[H>>2]|0)+1;}}}while(0);m=w+(c[B>>2]<<2)|0;c[m>>2]=(c[m>>2]|0)+(c[E>>2]|0);c[z>>2]=(c[z>>2]|0)+1;}l=n;return;}function Sv(f,g,h,i,j,k,m,n,o){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;p=l;l=l+160|0;q=p+136|0;r=p+132|0;s=p+128|0;t=p+124|0;u=p+120|0;v=p+116|0;w=p+112|0;x=p+108|0;y=p+144|0;z=p+140|0;A=p;B=p+104|0;C=p+100|0;D=p+96|0;E=p+92|0;F=p+88|0;G=p+84|0;H=p+80|0;I=p+76|0;J=p+72|0;K=p+68|0;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=j;c[v>>2]=k;c[w>>2]=m;c[x>>2]=n;b[y>>1]=o;o=A;n=c[t>>2]|0;t=o+68|0;do{c[o>>2]=c[n>>2];o=o+4|0;n=n+4|0;}while((o|0)<(t|0));a:do{if((c[u>>2]|0)>1){c[D>>2]=c[A+(c[u>>2]<<2)>>2];Tv(z,b[y>>1]|0);a[z+2>>0]=c[s>>2];a[z+3>>0]=1;c[C>>2]=0;while(1){if((c[C>>2]|0)>>>0>=(c[D>>2]|0)>>>0)break a;n=(c[q>>2]|0)+(c[C>>2]<<2)|0;b[n>>1]=b[z>>1]|0;b[n+2>>1]=b[z+2>>1]|0;c[C>>2]=(c[C>>2]|0)+1;}}}while(0);c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[E>>2]=d[(c[v>>2]|0)+(c[B>>2]<<1)>>0];c[F>>2]=d[(c[v>>2]|0)+(c[B>>2]<<1)+1>>0];c[G>>2]=(c[x>>2]|0)-(c[F>>2]|0);c[H>>2]=1<<(c[r>>2]|0)-(c[G>>2]|0);c[I>>2]=c[A+(c[F>>2]<<2)>>2];c[J>>2]=c[I>>2];c[K>>2]=(c[I>>2]|0)+(c[H>>2]|0);Tv(z,(e[y>>1]|0)+(c[E>>2]<<8)&65535);a[z+2>>0]=(c[G>>2]|0)+(c[s>>2]|0);a[z+3>>0]=2;do{C=c[q>>2]|0;D=c[J>>2]|0;c[J>>2]=D+1;u=C+(D<<2)|0;b[u>>1]=b[z>>1]|0;b[u+2>>1]=b[z+2>>1]|0;}while((c[J>>2]|0)>>>0<(c[K>>2]|0)>>>0);u=A+(c[F>>2]<<2)|0;c[u>>2]=(c[u>>2]|0)+(c[H>>2]|0);c[B>>2]=(c[B>>2]|0)+1;}l=p;return;}function Tv(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+4|0;i=g+8|0;j=g;c[h>>2]=d;b[i>>1]=f;f=(Xq()|0)!=0;d=c[h>>2]|0;if(f){Uv(d,b[i>>1]|0);l=g;return;}else{c[j>>2]=d;a[c[j>>2]>>0]=b[i>>1];a[(c[j>>2]|0)+1>>0]=(e[i>>1]|0)>>8;l=g;return;}}function Uv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;h=f+4|0;c[g>>2]=d;b[h>>1]=e;e=b[h>>1]|0;h=c[g>>2]|0;a[h>>0]=e;a[h+1>>0]=e>>8;l=f;return;}function Vv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=l;l=l+16960|0;g=f+16948|0;h=f+16944|0;i=f+16940|0;j=f+16936|0;k=f+16932|0;m=f+16928|0;n=f+16924|0;o=f+16400|0;p=f;q=f+16920|0;r=f+16916|0;s=f+16912|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[j>>2];c[n>>2]=c[m>>2];c[r>>2]=255;if((c[k>>2]|0)>>>0<2){c[g>>2]=-72;t=c[g>>2]|0;l=f;return t|0;}c[s>>2]=vv(o,r,q,c[m>>2]|0,c[k>>2]|0)|0;m=(wv(c[s>>2]|0)|0)!=0;j=c[s>>2]|0;if(m){c[g>>2]=j;t=c[g>>2]|0;l=f;return t|0;}if(j>>>0>=(c[k>>2]|0)>>>0){c[g>>2]=-72;t=c[g>>2]|0;l=f;return t|0;}c[n>>2]=(c[n>>2]|0)+(c[s>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[s>>2]|0);c[s>>2]=xv(p,o,c[r>>2]|0,c[q>>2]|0)|0;if(wv(c[s>>2]|0)|0){c[g>>2]=c[s>>2];t=c[g>>2]|0;l=f;return t|0;}else{c[g>>2]=Wv(c[h>>2]|0,c[i>>2]|0,c[n>>2]|0,c[k>>2]|0,p)|0;t=c[g>>2]|0;l=f;return t|0;}return 0;}function Wv(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;i=l;l=l+208|0;j=i+192|0;k=i+188|0;m=i+184|0;n=i+180|0;o=i+176|0;p=i+172|0;q=i+168|0;r=i+164|0;s=i+160|0;t=i+156|0;u=i+152|0;v=i+136|0;w=i+128|0;x=i+120|0;y=i+116|0;z=i+112|0;A=i+108|0;B=i+104|0;C=i+100|0;D=i+96|0;E=i+92|0;F=i+88|0;G=i+84|0;H=i+80|0;I=i+76|0;J=i+72|0;K=i+56|0;L=i+48|0;M=i+40|0;N=i+36|0;O=i+32|0;P=i+28|0;Q=i+24|0;R=i+20|0;S=i+16|0;T=i+12|0;U=i+8|0;V=i+4|0;W=i;c[P>>2]=b;c[Q>>2]=d;c[R>>2]=f;c[S>>2]=g;c[T>>2]=h;c[U>>2]=c[T>>2];c[V>>2]=c[U>>2];c[W>>2]=e[(c[V>>2]|0)+2>>1];V=c[P>>2]|0;P=c[Q>>2]|0;Q=c[R>>2]|0;R=c[S>>2]|0;S=c[T>>2]|0;if(c[W>>2]|0){c[A>>2]=V;c[B>>2]=P;c[C>>2]=Q;c[D>>2]=R;c[E>>2]=S;c[F>>2]=1;c[G>>2]=c[A>>2];c[H>>2]=c[G>>2];c[I>>2]=(c[H>>2]|0)+(c[B>>2]|0);c[J>>2]=(c[I>>2]|0)+-3;c[N>>2]=av(K,c[C>>2]|0,c[D>>2]|0)|0;do{if(!(wv(c[N>>2]|0)|0)){bv(L,K,c[E>>2]|0);bv(M,K,c[E>>2]|0);while(1){if(cv(K)|0)break;if((c[H>>2]|0)>>>0>=(c[J>>2]|0)>>>0)break;if(c[F>>2]|0)X=(Xv(L,K)|0)&255;else X=(lv(L,K)|0)&255;a[c[H>>2]>>0]=X;if(c[F>>2]|0)Y=(Xv(M,K)|0)&255;else Y=(lv(M,K)|0)&255;a[(c[H>>2]|0)+1>>0]=Y;if((cv(K)|0)>>>0>0){Z=14;break;}if(c[F>>2]|0)_=(Xv(L,K)|0)&255;else _=(lv(L,K)|0)&255;a[(c[H>>2]|0)+2>>0]=_;if(c[F>>2]|0)$=(Xv(M,K)|0)&255;else $=(lv(M,K)|0)&255;a[(c[H>>2]|0)+3>>0]=$;c[H>>2]=(c[H>>2]|0)+4;}if((Z|0)==14)c[H>>2]=(c[H>>2]|0)+2;while(1){if((cv(K)|0)>>>0>2)break;if((c[H>>2]|0)==(c[I>>2]|0))break;if(Fv(K)|0){if(c[F>>2]|0)break;if(Yv(L)|0)break;}if(c[F>>2]|0)aa=(Xv(L,K)|0)&255;else aa=(lv(L,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=aa;if((cv(K)|0)>>>0>2)break;if((c[H>>2]|0)==(c[I>>2]|0))break;if(Fv(K)|0){if(c[F>>2]|0)break;if(Yv(M)|0)break;}if(c[F>>2]|0)ba=(Xv(M,K)|0)&255;else ba=(lv(M,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=ba;}if((Fv(K)|0?Yv(L)|0:0)?Yv(M)|0:0){c[z>>2]=(c[H>>2]|0)-(c[G>>2]|0);break;}if((c[H>>2]|0)==(c[I>>2]|0)){c[z>>2]=-70;break;}else{c[z>>2]=-20;break;}}else c[z>>2]=c[N>>2];}while(0);c[O>>2]=c[z>>2];ca=c[O>>2]|0;l=i;return ca|0;}else{c[k>>2]=V;c[m>>2]=P;c[n>>2]=Q;c[o>>2]=R;c[p>>2]=S;c[q>>2]=0;c[r>>2]=c[k>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[s>>2]|0)+(c[m>>2]|0);c[u>>2]=(c[t>>2]|0)+-3;c[y>>2]=av(v,c[n>>2]|0,c[o>>2]|0)|0;do{if(!(wv(c[y>>2]|0)|0)){bv(w,v,c[p>>2]|0);bv(x,v,c[p>>2]|0);while(1){if(cv(v)|0)break;if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;if(c[q>>2]|0)da=(Xv(w,v)|0)&255;else da=(lv(w,v)|0)&255;a[c[s>>2]>>0]=da;if(c[q>>2]|0)ea=(Xv(x,v)|0)&255;else ea=(lv(x,v)|0)&255;a[(c[s>>2]|0)+1>>0]=ea;if((cv(v)|0)>>>0>0){Z=60;break;}if(c[q>>2]|0)fa=(Xv(w,v)|0)&255;else fa=(lv(w,v)|0)&255;a[(c[s>>2]|0)+2>>0]=fa;if(c[q>>2]|0)ga=(Xv(x,v)|0)&255;else ga=(lv(x,v)|0)&255;a[(c[s>>2]|0)+3>>0]=ga;c[s>>2]=(c[s>>2]|0)+4;}if((Z|0)==60)c[s>>2]=(c[s>>2]|0)+2;while(1){if((cv(v)|0)>>>0>2)break;if((c[s>>2]|0)==(c[t>>2]|0))break;if(Fv(v)|0){if(c[q>>2]|0)break;if(Yv(w)|0)break;}if(c[q>>2]|0)ha=(Xv(w,v)|0)&255;else ha=(lv(w,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ha;if((cv(v)|0)>>>0>2)break;if((c[s>>2]|0)==(c[t>>2]|0))break;if(Fv(v)|0){if(c[q>>2]|0)break;if(Yv(x)|0)break;}if(c[q>>2]|0)ia=(Xv(x,v)|0)&255;else ia=(lv(x,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ia;}if((Fv(v)|0?Yv(w)|0:0)?Yv(x)|0:0){c[j>>2]=(c[s>>2]|0)-(c[r>>2]|0);break;}if((c[s>>2]|0)==(c[t>>2]|0)){c[j>>2]=-70;break;}else{c[j>>2]=-20;break;}}else c[j>>2]=c[y>>2];}while(0);c[O>>2]=c[j>>2];ca=c[O>>2]|0;l=i;return ca|0;}return 0;}function Xv(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=Zv(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function Yv(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[c[d>>2]>>2]|0)==0|0;}function Zv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=Jv(c[e>>2]|0,c[f>>2]|0)|0;nv(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function _v(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;i=l;l=l+400|0;j=i+392|0;k=i+388|0;m=i+384|0;n=i+380|0;o=i+80|0;p=i;q=i+376|0;r=i+372|0;s=i+368|0;t=i+364|0;u=i+360|0;v=i+356|0;w=i+352|0;x=i+348|0;y=i+344|0;z=i+340|0;A=i+336|0;B=i+396|0;c[k>>2]=f;c[m>>2]=g;c[n>>2]=h;c[q>>2]=0;c[s>>2]=0;c[v>>2]=(c[k>>2]|0)+2;c[w>>2]=c[v>>2];c[r>>2]=Qv(o,256,p,s,q,c[m>>2]|0,c[n>>2]|0)|0;if(Cv(c[r>>2]|0)|0){c[j>>2]=c[r>>2];C=c[j>>2]|0;l=i;return C|0;}if((c[q>>2]|0)>>>0>(e[c[k>>2]>>1]|0)>>>0){c[j>>2]=-44;C=c[j>>2]|0;l=i;return C|0;}b[c[k>>2]>>1]=c[q>>2];c[u>>2]=0;c[t>>2]=1;while(1){if((c[t>>2]|0)>>>0>(c[q>>2]|0)>>>0)break;c[x>>2]=c[u>>2];c[u>>2]=(c[u>>2]|0)+(c[p+(c[t>>2]<<2)>>2]<<(c[t>>2]|0)-1);c[p+(c[t>>2]<<2)>>2]=c[x>>2];c[t>>2]=(c[t>>2]|0)+1;}c[t>>2]=0;while(1){if((c[t>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;c[y>>2]=d[o+(c[t>>2]|0)>>0];c[z>>2]=1<<c[y>>2]>>1;a[B>>0]=c[t>>2];a[B+1>>0]=(c[q>>2]|0)+1-(c[y>>2]|0);c[A>>2]=c[p+(c[y>>2]<<2)>>2];while(1){if((c[A>>2]|0)>>>0>=((c[p+(c[y>>2]<<2)>>2]|0)+(c[z>>2]|0)|0)>>>0)break;x=(c[w>>2]|0)+(c[A>>2]<<1)|0;a[x>>0]=a[B>>0]|0;a[x+1>>0]=a[B+1>>0]|0;c[A>>2]=(c[A>>2]|0)+1;}x=p+(c[y>>2]<<2)|0;c[x>>2]=(c[x>>2]|0)+(c[z>>2]|0);c[t>>2]=(c[t>>2]|0)+1;}c[j>>2]=c[r>>2];C=c[j>>2]|0;l=i;return C|0;}function $v(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;i=l;l=l+192|0;j=i+184|0;k=i+180|0;m=i+176|0;n=i+172|0;o=i+168|0;p=i+164|0;q=i+160|0;r=i+156|0;s=i+152|0;t=i+148|0;u=i+144|0;v=i+140|0;w=i+136|0;x=i+120|0;y=i+104|0;z=i+88|0;A=i+72|0;B=i+64|0;C=i+60|0;D=i+56|0;E=i+52|0;F=i+48|0;G=i+44|0;H=i+40|0;I=i+36|0;J=i+32|0;K=i+28|0;L=i+24|0;M=i+20|0;N=i+16|0;O=i+12|0;P=i+8|0;Q=i+4|0;R=i;c[k>>2]=b;c[m>>2]=d;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=c[n>>2];c[r>>2]=c[k>>2];c[s>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[t>>2]=c[p>>2];c[u>>2]=(c[t>>2]|0)+2;c[v>>2]=e[c[p>>2]>>1];c[B>>2]=(Ov(c[q>>2]|0)|0)&65535;c[C>>2]=(Ov((c[q>>2]|0)+2|0)|0)&65535;c[D>>2]=(Ov((c[q>>2]|0)+4|0)|0)&65535;c[F>>2]=(c[q>>2]|0)+6;c[G>>2]=(c[F>>2]|0)+(c[B>>2]|0);c[H>>2]=(c[G>>2]|0)+(c[C>>2]|0);c[I>>2]=(c[H>>2]|0)+(c[D>>2]|0);c[J>>2]=(((c[m>>2]|0)+3|0)>>>0)/4|0;c[K>>2]=(c[r>>2]|0)+(c[J>>2]|0);c[L>>2]=(c[K>>2]|0)+(c[J>>2]|0);c[M>>2]=(c[L>>2]|0)+(c[J>>2]|0);c[N>>2]=c[r>>2];c[O>>2]=c[K>>2];c[P>>2]=c[L>>2];c[Q>>2]=c[M>>2];if((c[o>>2]|0)>>>0<10){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}c[E>>2]=(c[o>>2]|0)-((c[B>>2]|0)+(c[C>>2]|0)+(c[D>>2]|0)+6);if((c[E>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=av(x,c[F>>2]|0,c[B>>2]|0)|0;if(Cv(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=av(y,c[G>>2]|0,c[C>>2]|0)|0;if(Cv(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=av(z,c[H>>2]|0,c[D>>2]|0)|0;if(Cv(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=av(A,c[I>>2]|0,c[E>>2]|0)|0;if(Cv(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}w=cv(x)|0;E=w|(cv(y)|0);w=E|(cv(z)|0);c[R>>2]=w|(cv(A)|0);while(1){if(c[R>>2]|0)break;if((c[Q>>2]|0)>>>0>=((c[s>>2]|0)+-7|0)>>>0)break;if(Gv()|0){w=aw(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;}if(Gv()|0){w=aw(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;}if(Gv()|0){w=aw(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;}if(Gv()|0){w=aw(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;}Gv()|0;w=aw(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;Gv()|0;w=aw(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;Gv()|0;w=aw(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;Gv()|0;w=aw(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;if(Gv()|0){w=aw(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;}if(Gv()|0){w=aw(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;}if(Gv()|0){w=aw(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;}if(Gv()|0){w=aw(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;}w=aw(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;w=aw(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;w=aw(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;w=aw(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;w=cv(x)|0;E=w|(cv(y)|0);w=E|(cv(z)|0);c[R>>2]=w|(cv(A)|0);}if((c[N>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}if((c[O>>2]|0)>>>0>(c[L>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}if((c[P>>2]|0)>>>0>(c[M>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}bw(c[N>>2]|0,x,c[K>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;bw(c[O>>2]|0,y,c[L>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;bw(c[P>>2]|0,z,c[M>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;bw(c[Q>>2]|0,A,c[s>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;v=Fv(x)|0;x=v&(Fv(y)|0);y=x&(Fv(z)|0);c[R>>2]=y&(Fv(A)|0);if(c[R>>2]|0){c[j>>2]=c[m>>2];S=c[j>>2]|0;l=i;return S|0;}else{c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}return 0;}function aw(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+16|0;c[h>>2]=b;c[i>>2]=e;c[j>>2]=f;c[k>>2]=Jv(c[h>>2]|0,c[j>>2]|0)|0;a[m>>0]=a[(c[i>>2]|0)+(c[k>>2]<<1)>>0]|0;nv(c[h>>2]|0,d[(c[i>>2]|0)+(c[k>>2]<<1)+1>>0]|0);l=g;return a[m>>0]|0;}function bw(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[i>>2];while(1){if(cv(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>((c[k>>2]|0)+-4|0)>>>0)break;if(Gv()|0){g=aw(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}Gv()|0;g=aw(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;if(Gv()|0){g=aw(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}g=aw(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if(cv(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=aw(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=aw(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}l=h;return(c[k>>2]|0)-(c[o>>2]|0)|0;}function cw(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=l;l=l+80|0;i=h+64|0;j=h+60|0;k=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;p=h+40|0;q=h+36|0;r=h+32|0;s=h+28|0;t=h+24|0;u=h+8|0;v=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[j>>2];c[q>>2]=(c[p>>2]|0)+(c[k>>2]|0);c[r>>2]=e[c[o>>2]>>1];c[s>>2]=c[o>>2];c[t>>2]=(c[s>>2]|0)+2;if((c[k>>2]|0)>>>0<=(c[n>>2]|0)>>>0){c[i>>2]=-70;w=c[i>>2]|0;l=h;return w|0;}c[v>>2]=av(u,c[m>>2]|0,c[n>>2]|0)|0;if(Cv(c[v>>2]|0)|0){c[i>>2]=c[v>>2];w=c[i>>2]|0;l=h;return w|0;}bw(c[p>>2]|0,u,c[q>>2]|0,c[t>>2]|0,c[r>>2]|0)|0;if(Fv(u)|0){c[i>>2]=c[k>>2];w=c[i>>2]|0;l=h;return w|0;}else{c[i>>2]=-20;w=c[i>>2]|0;l=h;return w|0;}return 0;}function dw(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+26656>>2]=5;c[(c[d>>2]|0)+26708>>2]=0;c[(c[d>>2]|0)+26640>>2]=0;c[(c[d>>2]|0)+26644>>2]=0;c[(c[d>>2]|0)+26648>>2]=0;c[(c[d>>2]|0)+26652>>2]=0;c[(c[d>>2]|0)+10252>>2]=12;c[(c[d>>2]|0)+26712>>2]=0;l=b;return 0;}function ew(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[k>>2]=Wq(c[h>>2]|0)|0;if((c[k>>2]|0)!=-332356555){fw(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0);c[f>>2]=0;m=c[f>>2]|0;l=e;return m|0;}c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)-4;c[j>>2]=gw(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;if(mr(c[j>>2]|0)|0){c[f>>2]=-30;m=c[f>>2]|0;l=e;return m|0;}else{c[h>>2]=(c[h>>2]|0)+(c[j>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[j>>2]|0);fw(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0);c[f>>2]=0;m=c[f>>2]|0;l=e;return m|0;}return 0;}function fw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+26652>>2]=c[(c[f>>2]|0)+26640>>2];c[(c[f>>2]|0)+26648>>2]=(c[g>>2]|0)+(0-((c[(c[f>>2]|0)+26640>>2]|0)-(c[(c[f>>2]|0)+26644>>2]|0)));c[(c[f>>2]|0)+26644>>2]=c[g>>2];c[(c[f>>2]|0)+26640>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function gw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;e=l;l=l+512|0;f=e+504|0;g=e+500|0;h=e+496|0;i=e+492|0;j=e+488|0;k=e+484|0;m=e+480|0;n=e+476|0;o=e+472|0;p=e+384|0;q=e+468|0;r=e+464|0;s=e+128|0;t=e+460|0;u=e+456|0;v=e;w=e+452|0;x=e+448|0;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[q>>2]=31;c[t>>2]=127;c[w>>2]=63;c[j>>2]=Mv((c[g>>2]|0)+10252|0,c[h>>2]|0,c[i>>2]|0)|0;if(Cv(c[j>>2]|0)|0){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}c[h>>2]=(c[h>>2]|0)+(c[j>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[j>>2]|0);c[k>>2]=vv(p,q,r,c[h>>2]|0,c[i>>2]|0)|0;if(wv(c[k>>2]|0)|0){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}if((c[r>>2]|0)>>>0>9){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}c[n>>2]=xv((c[g>>2]|0)+4100|0,p,c[q>>2]|0,c[r>>2]|0)|0;if(wv(c[n>>2]|0)|0){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}c[h>>2]=(c[h>>2]|0)+(c[k>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[k>>2]|0);c[m>>2]=vv(s,t,u,c[h>>2]|0,c[i>>2]|0)|0;if(wv(c[m>>2]|0)|0){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}if((c[u>>2]|0)>>>0>10){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}c[n>>2]=xv((c[g>>2]|0)+6152|0,s,c[t>>2]|0,c[u>>2]|0)|0;if(wv(c[n>>2]|0)|0){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}c[h>>2]=(c[h>>2]|0)+(c[m>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[m>>2]|0);c[o>>2]=vv(v,w,x,c[h>>2]|0,c[i>>2]|0)|0;if((c[x>>2]|0)>>>0>10){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}if(wv(c[o>>2]|0)|0){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}c[n>>2]=xv(c[g>>2]|0,v,c[w>>2]|0,c[x>>2]|0)|0;if(wv(c[n>>2]|0)|0){c[f>>2]=-30;y=c[f>>2]|0;l=e;return y|0;}else{c[(c[g>>2]|0)+26712>>2]=1;c[f>>2]=(c[j>>2]|0)+(c[k>>2]|0)+(c[m>>2]|0)+(c[o>>2]|0);y=c[f>>2]|0;l=e;return y|0;}return 0;}function hw(){var a=0,b=0,d=0,e=0;a=l;l=l+16|0;b=a+4|0;d=a;c[d>>2]=Cy(141416)|0;if(!(c[d>>2]|0)){c[b>>2]=0;e=c[b>>2]|0;l=a;return e|0;}else{kw(c[d>>2]|0)|0;c[b>>2]=c[d>>2];e=c[b>>2]|0;l=a;return e|0;}return 0;}function iw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+16|0;i=g+12|0;j=g+8|0;k=g+4|0;m=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;f=jw(c[h>>2]|0,c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,0,0)|0;l=g;return f|0;}function jw(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;i=l;l=l+80|0;j=i+76|0;k=i+72|0;m=i+68|0;n=i+64|0;o=i+60|0;p=i+56|0;q=i+52|0;r=i+48|0;s=i+44|0;t=i+40|0;u=i+36|0;v=i+32|0;w=i+28|0;x=i+24|0;y=i+16|0;z=i+8|0;A=i+4|0;B=i;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=c[o>>2];c[t>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[u>>2]=c[m>>2];c[v>>2]=c[u>>2];c[w>>2]=(c[u>>2]|0)+(c[n>>2]|0);c[x>>2]=c[p>>2];kw(c[k>>2]|0)|0;if(c[q>>2]|0){lw(c[k>>2]|0,c[q>>2]|0,c[r>>2]|0);c[(c[k>>2]|0)+10264>>2]=c[(c[k>>2]|0)+10252>>2];c[(c[k>>2]|0)+10260>>2]=(c[m>>2]|0)+(0-((c[(c[k>>2]|0)+10252>>2]|0)-(c[(c[k>>2]|0)+10256>>2]|0)));c[(c[k>>2]|0)+10256>>2]=c[m>>2];}else{r=c[m>>2]|0;c[(c[k>>2]|0)+10264>>2]=r;c[(c[k>>2]|0)+10256>>2]=r;c[(c[k>>2]|0)+10260>>2]=r;}if((c[p>>2]|0)>>>0<8){c[j>>2]=-72;C=c[j>>2]|0;l=i;return C|0;}c[z>>2]=mw(c[k>>2]|0,c[o>>2]|0,5)|0;if(rr(c[z>>2]|0)|0){c[j>>2]=c[z>>2];C=c[j>>2]|0;l=i;return C|0;}if((c[p>>2]|0)>>>0<((c[z>>2]|0)+3|0)>>>0){c[j>>2]=-72;C=c[j>>2]|0;l=i;return C|0;}c[s>>2]=(c[s>>2]|0)+(c[z>>2]|0);c[x>>2]=(c[x>>2]|0)-(c[z>>2]|0);c[z>>2]=nw(c[k>>2]|0,c[o>>2]|0,c[z>>2]|0)|0;if(rr(c[z>>2]|0)|0){c[j>>2]=c[z>>2];C=c[j>>2]|0;l=i;return C|0;}a:while(1){c[A>>2]=0;c[B>>2]=qr(c[s>>2]|0,(c[t>>2]|0)-(c[s>>2]|0)|0,y)|0;if(rr(c[B>>2]|0)|0){D=14;break;}c[s>>2]=(c[s>>2]|0)+3;c[x>>2]=(c[x>>2]|0)-3;if((c[B>>2]|0)>>>0>(c[x>>2]|0)>>>0){D=16;break;}switch(c[y>>2]|0){case 2:{D=20;break a;break;}case 0:{c[A>>2]=ow(c[k>>2]|0,c[v>>2]|0,(c[w>>2]|0)-(c[v>>2]|0)|0,c[s>>2]|0,c[B>>2]|0)|0;break;}case 1:{c[A>>2]=pw(c[v>>2]|0,(c[w>>2]|0)-(c[v>>2]|0)|0,c[s>>2]|0,c[B>>2]|0)|0;break;}case 3:{if(c[x>>2]|0){D=22;break a;}break;}default:{D=23;break a;}}if(!(c[B>>2]|0)){D=28;break;}z=(rr(c[A>>2]|0)|0)!=0;E=c[A>>2]|0;if(z){D=26;break;}c[v>>2]=(c[v>>2]|0)+E;c[s>>2]=(c[s>>2]|0)+(c[B>>2]|0);c[x>>2]=(c[x>>2]|0)-(c[B>>2]|0);}if((D|0)==14){c[j>>2]=c[B>>2];C=c[j>>2]|0;l=i;return C|0;}else if((D|0)==16){c[j>>2]=-72;C=c[j>>2]|0;l=i;return C|0;}else if((D|0)==20){c[j>>2]=-1;C=c[j>>2]|0;l=i;return C|0;}else if((D|0)==22){c[j>>2]=-72;C=c[j>>2]|0;l=i;return C|0;}else if((D|0)==23){c[j>>2]=-1;C=c[j>>2]|0;l=i;return C|0;}else if((D|0)==26){c[j>>2]=E;C=c[j>>2]|0;l=i;return C|0;}else if((D|0)==28){c[j>>2]=(c[v>>2]|0)-(c[u>>2]|0);C=c[j>>2]|0;l=i;return C|0;}return 0;}function kw(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+10268>>2]=5;c[(c[d>>2]|0)+10316>>2]=0;c[(c[d>>2]|0)+10252>>2]=0;c[(c[d>>2]|0)+10256>>2]=0;c[(c[d>>2]|0)+10260>>2]=0;c[(c[d>>2]|0)+10264>>2]=0;l=b;return 0;}function lw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+10264>>2]=c[(c[f>>2]|0)+10252>>2];c[(c[f>>2]|0)+10260>>2]=(c[g>>2]|0)+(0-((c[(c[f>>2]|0)+10252>>2]|0)-(c[(c[f>>2]|0)+10256>>2]|0)));c[(c[f>>2]|0)+10256>>2]=c[g>>2];c[(c[f>>2]|0)+10252>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function mw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[i>>2]|0)!=5){c[f>>2]=-72;k=c[f>>2]|0;l=e;return k|0;}c[j>>2]=pr(c[h>>2]|0)|0;if((c[j>>2]|0)!=-47205084){c[f>>2]=-10;k=c[f>>2]|0;l=e;return k|0;}else{c[(c[g>>2]|0)+10272>>2]=5;c[f>>2]=c[(c[g>>2]|0)+10272>>2];k=c[f>>2]|0;l=e;return k|0;}return 0;}function nw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[i>>2]|0)!=(c[(c[g>>2]|0)+10272>>2]|0)){c[f>>2]=-72;k=c[f>>2]|0;l=e;return k|0;}c[j>>2]=sx((c[g>>2]|0)+10280|0,c[h>>2]|0,c[i>>2]|0)|0;if(Dw()|0?(c[(c[g>>2]|0)+10280+8>>2]|0)>>>0>25:0){c[f>>2]=-14;k=c[f>>2]|0;l=e;return k|0;}c[f>>2]=c[j>>2];k=c[f>>2]|0;l=e;return k|0;}function ow(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=qw(c[i>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;m=(rr(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(m){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+f;c[n>>2]=(c[n>>2]|0)-(c[p>>2]|0);c[h>>2]=rw(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function pw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0){c[g>>2]=-70;m=c[g>>2]|0;l=f;return m|0;}else{mE(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[g>>2]=c[k>>2];m=c[g>>2]|0;l=f;return m|0;}return 0;}function qw(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+48|0;h=g+32|0;i=g+28|0;j=g+24|0;k=g+20|0;m=g+16|0;n=g+12|0;o=g+8|0;p=g+4|0;q=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[j>>2];if((c[k>>2]|0)>>>0<11){c[h>>2]=-20;r=c[h>>2]|0;l=g;return r|0;}switch((d[c[m>>2]>>0]|0)&3|0){case 0:{c[n>>2]=131072;c[o>>2]=Uw((c[i>>2]|0)+10328|0,n,c[j>>2]|0,c[k>>2]|0)|0;c[(c[i>>2]|0)+10320>>2]=(c[i>>2]|0)+10328;c[(c[i>>2]|0)+10324>>2]=c[n>>2];n=(c[i>>2]|0)+10328+(c[(c[i>>2]|0)+10324>>2]|0)|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;a[n+4>>0]=0;a[n+5>>0]=0;a[n+6>>0]=0;a[n+7>>0]=0;c[h>>2]=c[o>>2];r=c[h>>2]|0;l=g;return r|0;}case 1:{c[p>>2]=((pr(c[m>>2]|0)|0)&16777215)>>>2;if((c[p>>2]|0)>>>0<=((c[k>>2]|0)-11|0)>>>0){c[(c[i>>2]|0)+10320>>2]=(c[m>>2]|0)+3;c[(c[i>>2]|0)+10324>>2]=c[p>>2];c[h>>2]=(c[p>>2]|0)+3;r=c[h>>2]|0;l=g;return r|0;}if((c[p>>2]|0)>>>0>((c[k>>2]|0)-3|0)>>>0){c[h>>2]=-20;r=c[h>>2]|0;l=g;return r|0;}else{mE((c[i>>2]|0)+10328|0,c[m>>2]|0,c[p>>2]|0)|0;c[(c[i>>2]|0)+10320>>2]=(c[i>>2]|0)+10328;c[(c[i>>2]|0)+10324>>2]=c[p>>2];k=(c[i>>2]|0)+10328+(c[(c[i>>2]|0)+10324>>2]|0)|0;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;a[k+4>>0]=0;a[k+5>>0]=0;a[k+6>>0]=0;a[k+7>>0]=0;c[h>>2]=(c[p>>2]|0)+3;r=c[h>>2]|0;l=g;return r|0;}break;}case 2:{c[q>>2]=((pr(c[m>>2]|0)|0)&16777215)>>>2;if((c[q>>2]|0)>>>0>131072){c[h>>2]=-20;r=c[h>>2]|0;l=g;return r|0;}else{oE((c[i>>2]|0)+10328|0,(d[(c[m>>2]|0)+3>>0]|0)&255|0,(c[q>>2]|0)+8|0)|0;c[(c[i>>2]|0)+10320>>2]=(c[i>>2]|0)+10328;c[(c[i>>2]|0)+10324>>2]=c[q>>2];c[h>>2]=4;r=c[h>>2]|0;l=g;return r|0;}break;}default:{c[h>>2]=-20;r=c[h>>2]|0;l=g;return r|0;}}return 0;}function rw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;g=l;l=l+176|0;h=g+164|0;i=g+160|0;j=g+156|0;k=g+152|0;m=g+148|0;n=g+144|0;o=g+140|0;p=g+136|0;q=g+132|0;r=g+128|0;s=g+124|0;t=g+120|0;u=g+116|0;v=g+112|0;w=g+108|0;x=g+104|0;y=g+100|0;z=g+96|0;A=g+92|0;B=g+88|0;C=g+84|0;D=g+80|0;E=g+76|0;F=g+72|0;G=g+60|0;H=g+8|0;I=g+4|0;J=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[k>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[w>>2]=c[(c[j>>2]|0)+10320>>2];c[x>>2]=(c[w>>2]|0)+(c[(c[j>>2]|0)+10324>>2]|0);c[A>>2]=c[j>>2];c[B>>2]=(c[j>>2]|0)+6152;c[C>>2]=(c[j>>2]|0)+4100;c[D>>2]=c[(c[j>>2]|0)+10256>>2];c[E>>2]=c[(c[j>>2]|0)+10260>>2];c[F>>2]=c[(c[j>>2]|0)+10264>>2];c[u>>2]=sw(y,z,v,c[A>>2]|0,c[B>>2]|0,c[C>>2]|0,c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0)|0;j=(rr(c[u>>2]|0)|0)!=0;m=c[u>>2]|0;if(j){c[i>>2]=m;K=c[i>>2]|0;l=g;return K|0;}c[p>>2]=(c[p>>2]|0)+m;c[G>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+4>>2]=4;c[H+44>>2]=c[z>>2];c[H+48>>2]=(c[z>>2]|0)+(c[v>>2]|0);c[H+40>>2]=4;c[u>>2]=tw(H,c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0)|0;if(sr(c[u>>2]|0)|0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}uw(H+16|0,H,c[A>>2]|0);uw(H+24|0,H,c[C>>2]|0);uw(H+32|0,H,c[B>>2]|0);while(1){B=(vw(H)|0)>>>0<=2;if(!(B?(c[y>>2]|0)!=0:0))break;c[y>>2]=(c[y>>2]|0)+-1;ww(G,H);B=c[s>>2]|0;C=c[t>>2]|0;A=c[x>>2]|0;u=c[D>>2]|0;p=c[E>>2]|0;q=c[F>>2]|0;c[h>>2]=c[G>>2];c[h+4>>2]=c[G+4>>2];c[h+8>>2]=c[G+8>>2];c[I>>2]=xw(B,C,h,w,A,u,p,q)|0;q=(rr(c[I>>2]|0)|0)!=0;L=c[I>>2]|0;if(q){M=8;break;}c[s>>2]=(c[s>>2]|0)+L;}if((M|0)==8){c[i>>2]=L;K=c[i>>2]|0;l=g;return K|0;}if(!(yw(H)|0)){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}c[J>>2]=(c[x>>2]|0)-(c[w>>2]|0);if((c[w>>2]|0)>>>0>(c[x>>2]|0)>>>0){c[i>>2]=-20;K=c[i>>2]|0;l=g;return K|0;}if(((c[s>>2]|0)+(c[J>>2]|0)|0)>>>0>(c[t>>2]|0)>>>0){c[i>>2]=-70;K=c[i>>2]|0;l=g;return K|0;}if((c[s>>2]|0)!=(c[w>>2]|0))mE(c[s>>2]|0,c[w>>2]|0,c[J>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+(c[J>>2]|0);c[i>>2]=(c[s>>2]|0)-(c[r>>2]|0);K=c[i>>2]|0;l=g;return K|0;}function sw(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;m=l;l=l+352|0;n=m+344|0;o=m+340|0;p=m+336|0;q=m+332|0;r=m+328|0;s=m+324|0;t=m+320|0;u=m+316|0;v=m+312|0;w=m+308|0;x=m+304|0;y=m+300|0;z=m+296|0;A=m+292|0;B=m+288|0;C=m+284|0;D=m+280|0;E=m+276|0;F=m+272|0;G=m;H=m+268|0;I=m+264|0;J=m+260|0;K=m+256|0;c[o>>2]=b;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=j;c[v>>2]=k;c[w>>2]=c[u>>2];c[x>>2]=c[w>>2];c[y>>2]=(c[w>>2]|0)+(c[v>>2]|0);if((c[v>>2]|0)>>>0<5){c[n>>2]=-72;L=c[n>>2]|0;l=m;return L|0;}v=(Lw(c[x>>2]|0)|0)&65535;c[c[o>>2]>>2]=v;c[x>>2]=(c[x>>2]|0)+2;c[z>>2]=(d[c[x>>2]>>0]|0)>>6;c[A>>2]=(d[c[x>>2]>>0]|0)>>4&3;c[B>>2]=(d[c[x>>2]>>0]|0)>>2&3;v=c[x>>2]|0;if((d[c[x>>2]>>0]|0)&2|0){c[F>>2]=d[v+2>>0];c[F>>2]=(c[F>>2]|0)+((d[(c[x>>2]|0)+1>>0]|0)<<8);c[x>>2]=(c[x>>2]|0)+3;}else{c[F>>2]=d[v+1>>0];c[F>>2]=(c[F>>2]|0)+(((d[c[x>>2]>>0]|0)&1)<<8);c[x>>2]=(c[x>>2]|0)+2;}c[c[p>>2]>>2]=c[x>>2];c[x>>2]=(c[x>>2]|0)+(c[F>>2]|0);c[c[q>>2]>>2]=c[F>>2];if((c[x>>2]|0)>>>0>((c[y>>2]|0)+-3|0)>>>0){c[n>>2]=-72;L=c[n>>2]|0;l=m;return L|0;}a:do{switch(c[z>>2]|0){case 2:{c[C>>2]=0;F=c[r>>2]|0;q=c[x>>2]|0;c[x>>2]=q+1;Mw(F,a[q>>0]|0)|0;break;}case 1:{c[C>>2]=6;Nw(c[r>>2]|0,6)|0;break;}default:{c[I>>2]=63;c[H>>2]=Ow(G,I,C,c[x>>2]|0,(c[y>>2]|0)-(c[x>>2]|0)|0)|0;if(Pw(c[H>>2]|0)|0){c[n>>2]=-1;L=c[n>>2]|0;l=m;return L|0;}if((c[C>>2]|0)>>>0<=10){c[x>>2]=(c[x>>2]|0)+(c[H>>2]|0);Qw(c[r>>2]|0,G,c[I>>2]|0,c[C>>2]|0)|0;break a;}c[n>>2]=-20;L=c[n>>2]|0;l=m;return L|0;}}}while(0);b:do{switch(c[A>>2]|0){case 2:{c[D>>2]=0;if((c[x>>2]|0)>>>0<=((c[y>>2]|0)+-2|0)>>>0){C=c[t>>2]|0;I=c[x>>2]|0;c[x>>2]=I+1;Mw(C,(d[I>>0]|0)&31)|0;break b;}c[n>>2]=-72;L=c[n>>2]|0;l=m;return L|0;}case 1:{c[D>>2]=5;Nw(c[t>>2]|0,5)|0;break;}default:{c[J>>2]=31;c[H>>2]=Ow(G,J,D,c[x>>2]|0,(c[y>>2]|0)-(c[x>>2]|0)|0)|0;if(Pw(c[H>>2]|0)|0){c[n>>2]=-1;L=c[n>>2]|0;l=m;return L|0;}if((c[D>>2]|0)>>>0<=9){c[x>>2]=(c[x>>2]|0)+(c[H>>2]|0);Qw(c[t>>2]|0,G,c[J>>2]|0,c[D>>2]|0)|0;break b;}c[n>>2]=-20;L=c[n>>2]|0;l=m;return L|0;}}}while(0);c:do{switch(c[B>>2]|0){case 2:{c[E>>2]=0;if((c[x>>2]|0)>>>0<=((c[y>>2]|0)+-2|0)>>>0){D=c[s>>2]|0;J=c[x>>2]|0;c[x>>2]=J+1;Mw(D,a[J>>0]|0)|0;break c;}c[n>>2]=-72;L=c[n>>2]|0;l=m;return L|0;}case 1:{c[E>>2]=7;Nw(c[s>>2]|0,7)|0;break;}default:{c[K>>2]=127;c[H>>2]=Ow(G,K,E,c[x>>2]|0,(c[y>>2]|0)-(c[x>>2]|0)|0)|0;if(Pw(c[H>>2]|0)|0){c[n>>2]=-1;L=c[n>>2]|0;l=m;return L|0;}if((c[E>>2]|0)>>>0<=10){c[x>>2]=(c[x>>2]|0)+(c[H>>2]|0);Qw(c[s>>2]|0,G,c[K>>2]|0,c[E>>2]|0)|0;break c;}c[n>>2]=-20;L=c[n>>2]|0;l=m;return L|0;}}}while(0);c[n>>2]=(c[x>>2]|0)-(c[w>>2]|0);L=c[n>>2]|0;l=m;return L|0;}function tw(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+20|0;h=f+16|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;if((c[j>>2]|0)>>>0<1){e=c[h>>2]|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[g>>2]=-72;n=c[g>>2]|0;l=f;return n|0;}e=(c[j>>2]|0)>>>0>=4;c[(c[h>>2]|0)+12>>2]=c[i>>2];do{if(e){c[(c[h>>2]|0)+8>>2]=(c[i>>2]|0)+(c[j>>2]|0)+-4;b=Hw(c[(c[h>>2]|0)+8>>2]|0)|0;c[c[h>>2]>>2]=b;c[k>>2]=d[(c[i>>2]|0)+((c[j>>2]|0)-1)>>0];if(c[k>>2]|0){b=8-(Kw(c[k>>2]|0)|0)|0;c[(c[h>>2]|0)+4>>2]=b;break;}c[g>>2]=-1;n=c[g>>2]|0;l=f;return n|0;}else{c[(c[h>>2]|0)+8>>2]=c[(c[h>>2]|0)+12>>2];c[c[h>>2]>>2]=d[c[(c[h>>2]|0)+12>>2]>>0];switch(c[j>>2]|0){case 7:{b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+6>>0]|0)<<16);o=9;break;}case 6:{o=9;break;}case 5:{o=10;break;}case 4:{o=11;break;}case 3:{o=12;break;}case 2:{o=13;break;}default:{}}if((o|0)==9){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+5>>0]|0)<<8);o=10;}if((o|0)==10){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+4>>0]|0)<<0);o=11;}if((o|0)==11){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+3>>0]|0)<<24);o=12;}if((o|0)==12){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+2>>0]|0)<<16);o=13;}if((o|0)==13){b=c[h>>2]|0;c[b>>2]=(c[b>>2]|0)+((d[(c[(c[h>>2]|0)+12>>2]|0)+1>>0]|0)<<8);}c[m>>2]=d[(c[i>>2]|0)+((c[j>>2]|0)-1)>>0];if(c[m>>2]|0){b=8-(Kw(c[m>>2]|0)|0)|0;c[(c[h>>2]|0)+4>>2]=b;b=(c[h>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(4-(c[j>>2]|0)<<3);break;}c[g>>2]=-1;n=c[g>>2]|0;l=f;return n|0;}}while(0);c[g>>2]=c[j>>2];n=c[g>>2]|0;l=f;return n|0;}function uw(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;g=l;l=l+16|0;h=g+8|0;i=g+4|0;j=g;k=g+12|0;c[h>>2]=a;c[i>>2]=d;c[j>>2]=f;f=c[j>>2]|0;b[k>>1]=b[f>>1]|0;b[k+2>>1]=b[f+2>>1]|0;f=Ew(c[i>>2]|0,e[k>>1]|0)|0;c[c[h>>2]>>2]=f;vw(c[i>>2]|0)|0;c[(c[h>>2]|0)+4>>2]=(c[j>>2]|0)+4;l=g;return;}function vw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[(c[e>>2]|0)+4>>2]|0)>>>0>32){c[d>>2]=3;h=c[d>>2]|0;l=b;return h|0;}a=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=((c[(c[e>>2]|0)+12>>2]|0)+4|0)>>>0){i=(c[e>>2]|0)+8|0;c[i>>2]=(c[i>>2]|0)+(0-((c[a+4>>2]|0)>>>3));i=(c[e>>2]|0)+4|0;c[i>>2]=c[i>>2]&7;i=Hw(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=i;c[d>>2]=0;h=c[d>>2]|0;l=b;return h|0;}i=c[(c[e>>2]|0)+4>>2]|0;if((c[a+8>>2]|0)!=(c[(c[e>>2]|0)+12>>2]|0)){c[f>>2]=i>>>3;c[g>>2]=0;if(((c[(c[e>>2]|0)+8>>2]|0)+(0-(c[f>>2]|0))|0)>>>0<(c[(c[e>>2]|0)+12>>2]|0)>>>0){c[f>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0);c[g>>2]=1;}a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(0-(c[f>>2]|0));a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[f>>2]<<3);f=Hw(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=f;c[d>>2]=c[g>>2];h=c[d>>2]|0;l=b;return h|0;}if(i>>>0<32){c[d>>2]=1;h=c[d>>2]|0;l=b;return h|0;}else{c[d>>2]=2;h=c[d>>2]|0;l=b;return h|0;}return 0;}function ww(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=l;l=l+48|0;f=e+44|0;g=e+40|0;h=e+36|0;i=e+32|0;j=e+28|0;k=e+24|0;m=e+20|0;n=e+16|0;o=e+12|0;p=e+8|0;q=e+4|0;r=e;c[f>>2]=a;c[g>>2]=b;c[m>>2]=c[(c[g>>2]|0)+44>>2];c[n>>2]=c[(c[g>>2]|0)+48>>2];c[h>>2]=(Cw((c[g>>2]|0)+16|0,c[g>>2]|0)|0)&255;if(c[h>>2]|0)s=c[(c[f>>2]|0)+4>>2]|0;else s=c[(c[g>>2]|0)+40>>2]|0;c[i>>2]=s;if((c[h>>2]|0)==63){s=c[m>>2]|0;c[m>>2]=s+1;c[o>>2]=d[s>>0];if((c[o>>2]|0)>>>0<255)c[h>>2]=(c[h>>2]|0)+(c[o>>2]|0);else{c[h>>2]=(d[c[m>>2]>>0]|0)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+((d[(c[m>>2]|0)+2>>0]|0)<<16);c[m>>2]=(c[m>>2]|0)+3;}if((c[m>>2]|0)>>>0>(c[n>>2]|0)>>>0)c[h>>2]=318;if((c[m>>2]|0)>>>0>=(c[n>>2]|0)>>>0)c[m>>2]=(c[n>>2]|0)+-1;}c[p>>2]=(Cw((c[g>>2]|0)+24|0,c[g>>2]|0)|0)&255;if(Dw()|0)vw(c[g>>2]|0)|0;o=(c[p>>2]|0)-1|0;c[q>>2]=o;c[q>>2]=(c[p>>2]|0)==0?0:o;o=c[6880+(c[p>>2]<<2)>>2]|0;c[j>>2]=o+(Ew(c[g>>2]|0,c[q>>2]|0)|0);if(Dw()|0)vw(c[g>>2]|0)|0;if(!(c[p>>2]|0))c[j>>2]=c[i>>2];if(c[p>>2]|((c[h>>2]|0)!=0^1)&1|0)c[(c[g>>2]|0)+40>>2]=c[(c[f>>2]|0)+4>>2];c[k>>2]=(Cw((c[g>>2]|0)+32|0,c[g>>2]|0)|0)&255;if((c[k>>2]|0)==127){p=c[m>>2]|0;c[m>>2]=p+1;c[r>>2]=d[p>>0];if((c[r>>2]|0)>>>0<255)c[k>>2]=(c[k>>2]|0)+(c[r>>2]|0);else{c[k>>2]=(d[c[m>>2]>>0]|0)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+((d[(c[m>>2]|0)+2>>0]|0)<<16);c[m>>2]=(c[m>>2]|0)+3;}if((c[m>>2]|0)>>>0>(c[n>>2]|0)>>>0)c[k>>2]=382;if((c[m>>2]|0)>>>0>=(c[n>>2]|0)>>>0)c[m>>2]=(c[n>>2]|0)+-1;}c[k>>2]=(c[k>>2]|0)+4;c[c[f>>2]>>2]=c[h>>2];c[(c[f>>2]|0)+4>>2]=c[j>>2];c[(c[f>>2]|0)+8>>2]=c[k>>2];c[(c[g>>2]|0)+44>>2]=c[m>>2];l=e;return;}function xw(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;k=l;l=l+64|0;m=k+60|0;n=k+56|0;o=k+52|0;p=k+48|0;q=k+44|0;r=k+40|0;s=k+36|0;t=k+32|0;u=k+28|0;v=k+24|0;w=k+20|0;x=k+16|0;y=k+12|0;z=k+8|0;A=k+4|0;B=k;c[n>>2]=b;c[o>>2]=d;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=(c[n>>2]|0)+(c[e>>2]|0);c[v>>2]=(c[e>>2]|0)+(c[e+8>>2]|0);c[w>>2]=(c[n>>2]|0)+(c[v>>2]|0);c[x>>2]=(c[o>>2]|0)+-8;c[y>>2]=(c[c[p>>2]>>2]|0)+(c[e>>2]|0);c[z>>2]=(c[u>>2]|0)+(0-(c[e+4>>2]|0));if((c[u>>2]|0)>>>0>(c[x>>2]|0)>>>0){c[m>>2]=-70;C=c[m>>2]|0;l=k;return C|0;}if((c[w>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[m>>2]=-70;C=c[m>>2]|0;l=k;return C|0;}if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}zw(c[n>>2]|0,c[c[p>>2]>>2]|0,c[e>>2]|0);c[n>>2]=c[u>>2];c[c[p>>2]>>2]=c[y>>2];do{if((c[e+4>>2]|0)>>>0>((c[u>>2]|0)-(c[r>>2]|0)|0)>>>0){if((c[e+4>>2]|0)>>>0>((c[u>>2]|0)-(c[s>>2]|0)|0)>>>0){c[m>>2]=-20;C=c[m>>2]|0;l=k;return C|0;}c[z>>2]=(c[t>>2]|0)+(0-((c[r>>2]|0)-(c[z>>2]|0)));if(((c[z>>2]|0)+(c[e+8>>2]|0)|0)>>>0<=(c[t>>2]|0)>>>0){nE(c[u>>2]|0,c[z>>2]|0,c[e+8>>2]|0)|0;c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}c[A>>2]=(c[t>>2]|0)-(c[z>>2]|0);nE(c[u>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;c[n>>2]=(c[u>>2]|0)+(c[A>>2]|0);y=e+8|0;c[y>>2]=(c[y>>2]|0)-(c[A>>2]|0);c[z>>2]=c[r>>2];if((c[n>>2]|0)>>>0<=(c[x>>2]|0)>>>0?(c[e+8>>2]|0)>>>0>=4:0)break;while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;y=c[z>>2]|0;c[z>>2]=y+1;p=a[y>>0]|0;y=c[n>>2]|0;c[n>>2]=y+1;a[y>>0]=p;}c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}}while(0);if((c[e+4>>2]|0)>>>0<8){c[B>>2]=c[6816+(c[e+4>>2]<<2)>>2];a[c[n>>2]>>0]=a[c[z>>2]>>0]|0;a[(c[n>>2]|0)+1>>0]=a[(c[z>>2]|0)+1>>0]|0;a[(c[n>>2]|0)+2>>0]=a[(c[z>>2]|0)+2>>0]|0;a[(c[n>>2]|0)+3>>0]=a[(c[z>>2]|0)+3>>0]|0;c[z>>2]=(c[z>>2]|0)+(c[6848+(c[e+4>>2]<<2)>>2]|0);Aw((c[n>>2]|0)+4|0,c[z>>2]|0);c[z>>2]=(c[z>>2]|0)+(0-(c[B>>2]|0));}else Bw(c[n>>2]|0,c[z>>2]|0);c[n>>2]=(c[n>>2]|0)+8;c[z>>2]=(c[z>>2]|0)+8;B=c[n>>2]|0;a:do{if((c[w>>2]|0)>>>0>((c[o>>2]|0)+-12|0)>>>0){if(B>>>0<(c[x>>2]|0)>>>0){zw(c[n>>2]|0,c[z>>2]|0,(c[x>>2]|0)-(c[n>>2]|0)|0);c[z>>2]=(c[z>>2]|0)+((c[x>>2]|0)-(c[n>>2]|0));c[n>>2]=c[x>>2];}while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;r=c[z>>2]|0;c[z>>2]=r+1;A=a[r>>0]|0;r=c[n>>2]|0;c[n>>2]=r+1;a[r>>0]=A;}}else zw(B,c[z>>2]|0,(c[e+8>>2]|0)-8|0);}while(0);c[m>>2]=c[v>>2];C=c[m>>2]|0;l=k;return C|0;}function yw(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;c[d>>2]=a;if((c[(c[d>>2]|0)+8>>2]|0)!=(c[(c[d>>2]|0)+12>>2]|0)){e=0;f=e&1;l=b;return f|0;}e=(c[(c[d>>2]|0)+4>>2]|0)==32;f=e&1;l=b;return f|0;}function zw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{Bw(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function Aw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;l=e;return;}function Bw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function Cw(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=Ew(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function Dw(){return 1;}function Ew(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=Fw(c[e>>2]|0,c[f>>2]|0)|0;Gw(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function Fw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>1>>>(31-(c[f>>2]|0)&31)|0;}function Gw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(c[e>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(c[f>>2]|0);l=d;return;}function Hw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Dw()|0)!=0;f=c[e>>2]|0;if(a){c[d>>2]=pr(f)|0;g=c[d>>2]|0;l=b;return g|0;}else{a=Iw(f)|0;c[d>>2]=a;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Iw(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;b=l;l=l+16|0;e=b;f=b+12|0;g=b+8|0;c[f>>2]=a;a=(tr()|0)!=0;h=c[f>>2]|0;if(a){a=Jw(h)|0;f=e;c[f>>2]=a;c[f+4>>2]=y;i=e;j=i;k=c[j>>2]|0;m=i+4|0;n=m;o=c[n>>2]|0;y=o;l=b;return k|0;}else{c[g>>2]=h;h=d[c[g>>2]>>0]|0;f=jE(d[(c[g>>2]|0)+1>>0]|0|0,0,8)|0;a=dE(h|0,0,f|0,y|0)|0;f=y;h=jE(d[(c[g>>2]|0)+2>>0]|0|0,0,16)|0;p=dE(a|0,f|0,h|0,y|0)|0;h=y;f=jE(d[(c[g>>2]|0)+3>>0]|0|0,0,24)|0;a=dE(p|0,h|0,f|0,y|0)|0;f=dE(a|0,y|0,0,d[(c[g>>2]|0)+4>>0]|0|0)|0;a=y;h=jE(d[(c[g>>2]|0)+5>>0]|0|0,0,40)|0;p=dE(f|0,a|0,h|0,y|0)|0;h=y;a=jE(d[(c[g>>2]|0)+6>>0]|0|0,0,48)|0;f=dE(p|0,h|0,a|0,y|0)|0;a=y;h=jE(d[(c[g>>2]|0)+7>>0]|0|0,0,56)|0;g=dE(f|0,a|0,h|0,y|0)|0;h=e;c[h>>2]=g;c[h+4>>2]=y;i=e;j=i;k=c[j>>2]|0;m=i+4|0;n=m;o=c[n>>2]|0;y=o;l=b;return k|0;}return 0;}function Jw(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;a[f+4>>0]=a[b+4>>0]|0;a[f+5>>0]=a[b+5>>0]|0;a[f+6>>0]=a[b+6>>0]|0;a[f+7>>0]=a[b+7>>0]|0;b=f;y=c[b+4>>2]|0;l=d;return c[b>>2]|0;}function Kw(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function Lw(a){a=a|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=a;a=(tr()|0)!=0;i=c[g>>2]|0;if(a){b[f>>1]=Tw(i)|0;j=b[f>>1]|0;l=e;return j|0;}else{c[h>>2]=i;b[f>>1]=(d[c[h>>2]>>0]|0)+((d[(c[h>>2]|0)+1>>0]|0)<<8);j=b[f>>1]|0;l=e;return j|0;}return 0;}function Mw(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+20|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=d;a[h>>0]=e;c[i>>2]=c[g>>2];c[j>>2]=c[i>>2];c[k>>2]=(c[g>>2]|0)+4;c[m>>2]=c[k>>2];b[c[j>>2]>>1]=0;b[(c[j>>2]|0)+2>>1]=0;b[c[m>>2]>>1]=0;a[(c[m>>2]|0)+2>>0]=a[h>>0]|0;a[(c[m>>2]|0)+3>>0]=0;l=f;return 0;}function Nw(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=l;l=l+48|0;g=f+40|0;h=f+36|0;i=f+32|0;j=f+28|0;k=f+24|0;m=f+20|0;n=f+16|0;o=f+12|0;p=f+8|0;q=f+4|0;r=f;c[h>>2]=d;c[i>>2]=e;c[j>>2]=c[h>>2];c[k>>2]=c[j>>2];c[m>>2]=(c[h>>2]|0)+4;c[n>>2]=c[m>>2];c[o>>2]=1<<c[i>>2];c[p>>2]=(c[o>>2]|0)-1;c[q>>2]=c[p>>2];if((c[i>>2]|0)>>>0<1){c[g>>2]=-1;s=c[g>>2]|0;l=f;return s|0;}b[c[k>>2]>>1]=c[i>>2];b[(c[k>>2]|0)+2>>1]=1;c[r>>2]=0;while(1){if((c[r>>2]|0)>>>0>(c[q>>2]|0)>>>0)break;b[(c[n>>2]|0)+(c[r>>2]<<2)>>1]=0;a[(c[n>>2]|0)+(c[r>>2]<<2)+2>>0]=c[r>>2];a[(c[n>>2]|0)+(c[r>>2]<<2)+3>>0]=c[i>>2];c[r>>2]=(c[r>>2]|0)+1;}c[g>>2]=0;s=c[g>>2]|0;l=f;return s|0;}function Ow(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;h=l;l=l+80|0;i=h+64|0;j=h+60|0;k=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;p=h+40|0;q=h+36|0;r=h+32|0;s=h+28|0;t=h+24|0;u=h+20|0;v=h+16|0;w=h+12|0;x=h+8|0;y=h+4|0;z=h;A=h+70|0;B=h+68|0;c[j>>2]=a;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[p>>2];c[x>>2]=0;c[y>>2]=0;if((c[o>>2]|0)>>>0<4){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=pr(c[r>>2]|0)|0;c[s>>2]=(c[v>>2]&15)+5;if((c[s>>2]|0)>15){c[i>>2]=-44;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=(c[v>>2]|0)>>>4;c[w>>2]=4;c[c[m>>2]>>2]=c[s>>2];c[t>>2]=(1<<c[s>>2])+1;c[u>>2]=1<<c[s>>2];c[s>>2]=(c[s>>2]|0)+1;a:while(1){if((c[t>>2]|0)<=1)break;if((c[x>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0)break;do{if(c[y>>2]|0){c[z>>2]=c[x>>2];while(1){if((c[v>>2]&65535|0)!=65535)break;c[z>>2]=(c[z>>2]|0)+24;if((c[r>>2]|0)>>>0<((c[q>>2]|0)+-5|0)>>>0){c[r>>2]=(c[r>>2]|0)+2;m=pr(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]|0);}else{c[v>>2]=(c[v>>2]|0)>>>16;c[w>>2]=(c[w>>2]|0)+16;}}while(1){if((c[v>>2]&3|0)!=3)break;c[z>>2]=(c[z>>2]|0)+3;c[v>>2]=(c[v>>2]|0)>>>2;c[w>>2]=(c[w>>2]|0)+2;}c[z>>2]=(c[z>>2]|0)+(c[v>>2]&3);c[w>>2]=(c[w>>2]|0)+2;if((c[z>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0){D=19;break a;}while(1){if((c[x>>2]|0)>>>0>=(c[z>>2]|0)>>>0)break;m=c[j>>2]|0;n=c[x>>2]|0;c[x>>2]=n+1;b[m+(n<<1)>>1]=0;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[v>>2]=(c[v>>2]|0)>>>2;break;}c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;n=pr(c[r>>2]|0)|0;c[v>>2]=n>>>(c[w>>2]|0);}}while(0);b[A>>1]=(c[u>>2]<<1)-1-(c[t>>2]|0);n=c[v>>2]|0;m=c[u>>2]|0;if((c[v>>2]&(c[u>>2]|0)-1)>>>0<(b[A>>1]|0)>>>0){b[B>>1]=n&m-1;c[w>>2]=(c[w>>2]|0)+((c[s>>2]|0)-1);}else{b[B>>1]=n&(m<<1)-1;if((b[B>>1]|0)>=(c[u>>2]|0))b[B>>1]=(b[B>>1]|0)-(b[A>>1]|0);c[w>>2]=(c[w>>2]|0)+(c[s>>2]|0);}b[B>>1]=(b[B>>1]|0)+-1<<16>>16;m=(Sw(b[B>>1]|0)|0)<<16>>16;c[t>>2]=(c[t>>2]|0)-m;m=b[B>>1]|0;n=c[j>>2]|0;g=c[x>>2]|0;c[x>>2]=g+1;b[n+(g<<1)>>1]=m;c[y>>2]=((b[B>>1]|0)!=0^1)&1;while(1){if((c[t>>2]|0)>=(c[u>>2]|0))break;c[s>>2]=(c[s>>2]|0)+-1;c[u>>2]=c[u>>2]>>1;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[w>>2]=(c[w>>2]|0)-((c[q>>2]|0)+-4-(c[r>>2]|0)<<3);c[r>>2]=(c[q>>2]|0)+-4;}else{c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;}m=pr(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]&31);}if((D|0)==19){c[i>>2]=-48;C=c[i>>2]|0;l=h;return C|0;}if((c[t>>2]|0)!=1){c[i>>2]=-1;C=c[i>>2]|0;l=h;return C|0;}c[c[k>>2]>>2]=(c[x>>2]|0)-1;c[r>>2]=(c[r>>2]|0)+((c[w>>2]|0)+7>>3);if(((c[r>>2]|0)-(c[p>>2]|0)|0)>>>0>(c[o>>2]|0)>>>0){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}else{c[i>>2]=(c[r>>2]|0)-(c[p>>2]|0);C=c[i>>2]|0;l=h;return C|0;}return 0;}function Pw(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=sr(c[d>>2]|0)|0;l=b;return a|0;}function Qw(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;j=l;l=l+592|0;k=j+572|0;m=j+568|0;n=j+564|0;o=j+560|0;p=j+556|0;q=j+580|0;r=j+552|0;s=j+548|0;t=j+544|0;u=j+540|0;v=j+536|0;w=j;x=j+532|0;y=j+528|0;z=j+578|0;A=j+524|0;B=j+520|0;C=j+516|0;D=j+512|0;E=j+584|0;F=j+576|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=i;c[r>>2]=(c[m>>2]|0)+4;c[s>>2]=c[r>>2];c[t>>2]=1<<c[p>>2];c[u>>2]=(c[t>>2]|0)-1;c[v>>2]=Rw(c[t>>2]|0)|0;c[x>>2]=0;c[y>>2]=(c[t>>2]|0)-1;b[z>>1]=1<<(c[p>>2]|0)-1;c[A>>2]=1;if((c[o>>2]|0)>>>0>255){c[k>>2]=-46;G=c[k>>2]|0;l=j;return G|0;}if((c[p>>2]|0)>>>0>12){c[k>>2]=-44;G=c[k>>2]|0;l=j;return G|0;}b[q>>1]=c[p>>2];c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;if((b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0)==-1){r=c[B>>2]&255;i=c[s>>2]|0;h=c[y>>2]|0;c[y>>2]=h+-1;a[i+(h<<2)+2>>0]=r;b[w+(c[B>>2]<<1)>>1]=1;}else{if((b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0)>=(b[z>>1]|0))c[A>>2]=0;b[w+(c[B>>2]<<1)>>1]=b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0;}c[B>>2]=(c[B>>2]|0)+1;}c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;c[C>>2]=0;while(1){H=c[B>>2]|0;if((c[C>>2]|0)>=(b[(c[n>>2]|0)+(c[B>>2]<<1)>>1]|0))break;a[(c[s>>2]|0)+(c[x>>2]<<2)+2>>0]=H;c[x>>2]=(c[x>>2]|0)+(c[v>>2]|0)&c[u>>2];while(1){if((c[x>>2]|0)>>>0<=(c[y>>2]|0)>>>0)break;c[x>>2]=(c[x>>2]|0)+(c[v>>2]|0)&c[u>>2];}c[C>>2]=(c[C>>2]|0)+1;}c[B>>2]=H+1;}if(c[x>>2]|0){c[k>>2]=-1;G=c[k>>2]|0;l=j;return G|0;}c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;a[E>>0]=a[(c[s>>2]|0)+(c[D>>2]<<2)+2>>0]|0;x=w+(d[E>>0]<<1)|0;H=b[x>>1]|0;b[x>>1]=H+1<<16>>16;b[F>>1]=H;H=c[p>>2]|0;x=H-(Kw(e[F>>1]|0)|0)&255;a[(c[s>>2]|0)+(c[D>>2]<<2)+3>>0]=x;b[(c[s>>2]|0)+(c[D>>2]<<2)>>1]=(e[F>>1]<<d[(c[s>>2]|0)+(c[D>>2]<<2)+3>>0])-(c[t>>2]|0);c[D>>2]=(c[D>>2]|0)+1;}b[q+2>>1]=c[A>>2];A=c[m>>2]|0;b[A>>1]=b[q>>1]|0;b[A+2>>1]=b[q+2>>1]|0;c[k>>2]=0;G=c[k>>2]|0;l=j;return G|0;}function Rw(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return((c[d>>2]|0)>>>1)+((c[d>>2]|0)>>>3)+3|0;}function Sw(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=a;a=b[d>>1]|0;l=c;return((b[d>>1]|0)<0?0-a|0:a)&65535|0;}function Tw(d){d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=c[f>>2]|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;l=e;return b[g>>1]|0;}function Uw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[j>>2];c[n>>2]=((pr(c[j>>2]|0)|0)&2097151)>>>2;c[o>>2]=((pr((c[m>>2]|0)+2|0)|0)&16777215)>>>5;if((c[n>>2]|0)>>>0>(c[c[i>>2]>>2]|0)>>>0){c[g>>2]=-20;p=c[g>>2]|0;l=f;return p|0;}if(((c[o>>2]|0)+5|0)>>>0>(c[k>>2]|0)>>>0){c[g>>2]=-20;p=c[g>>2]|0;l=f;return p|0;}if(Ww(Vw(c[h>>2]|0,c[n>>2]|0,(c[m>>2]|0)+5|0,c[o>>2]|0)|0)|0){c[g>>2]=-20;p=c[g>>2]|0;l=f;return p|0;}else{c[c[i>>2]>>2]=c[n>>2];c[g>>2]=(c[o>>2]|0)+5;p=c[g>>2]|0;l=f;return p|0;}return 0;}function Vw(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=l;l=l+48|0;h=g+44|0;i=g+40|0;j=g+36|0;k=g+32|0;m=g+28|0;n=g+24|0;o=g+20|0;p=g+8|0;q=g+4|0;r=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=e;c[m>>2]=f;c[o>>2]=(c[j>>2]|0)>>>8;c[q>>2]=0;if(!(c[j>>2]|0)){c[h>>2]=-70;s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)>>>0>(c[j>>2]|0)>>>0){c[h>>2]=-20;s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)==(c[j>>2]|0)){mE(c[i>>2]|0,c[k>>2]|0,c[j>>2]|0)|0;c[h>>2]=c[j>>2];s=c[h>>2]|0;l=g;return s|0;}if((c[m>>2]|0)==1){oE(c[i>>2]|0,(d[c[k>>2]>>0]|0)&255|0,c[j>>2]|0)|0;c[h>>2]=c[j>>2];s=c[h>>2]|0;l=g;return s|0;}c[n>>2]=(c[m>>2]<<4>>>0)/((c[j>>2]|0)>>>0)|0;c[r>>2]=0;while(1){if((c[r>>2]|0)>=3)break;f=(c[7008+((c[n>>2]|0)*24|0)+(c[r>>2]<<3)>>2]|0)+(N(c[7008+((c[n>>2]|0)*24|0)+(c[r>>2]<<3)+4>>2]|0,c[o>>2]|0)|0)|0;c[p+(c[r>>2]<<2)>>2]=f;c[r>>2]=(c[r>>2]|0)+1;}r=p+4|0;c[r>>2]=(c[r>>2]|0)+((c[p+4>>2]|0)>>>4);r=p+8|0;c[r>>2]=(c[r>>2]|0)+((c[p+8>>2]|0)>>>3);if((c[p+4>>2]|0)>>>0<(c[p>>2]|0)>>>0)c[q>>2]=1;c[h>>2]=sc[c[11988+(c[q>>2]<<2)>>2]&15](c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;s=c[h>>2]|0;l=g;return s|0;}function Ww(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=sr(c[d>>2]|0)|0;l=b;return a|0;}function Xw(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+8224|0;h=g+8220|0;i=g+8216|0;j=g+8212|0;k=g+8208|0;m=g+8204|0;n=g;o=g+8200|0;p=g+8196|0;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;oE(n|0,0,8194)|0;b[n>>1]=12;c[o>>2]=c[k>>2];c[p>>2]=ox(n,c[k>>2]|0,c[m>>2]|0)|0;k=(Ww(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(k){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}if(f>>>0>=(c[m>>2]|0)>>>0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[m>>2]=(c[m>>2]|0)-(c[p>>2]|0);c[h>>2]=px(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0,c[m>>2]|0,n)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function Yw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+16416|0;g=f+16412|0;h=f+16408|0;i=f+16404|0;j=f+16400|0;k=f+16396|0;m=f;n=f+16392|0;o=f+16388|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;oE(m|0,0,16388)|0;c[m>>2]=12;c[n>>2]=c[j>>2];c[o>>2]=Zw(m,c[j>>2]|0,c[k>>2]|0)|0;j=(Ww(c[o>>2]|0)|0)!=0;e=c[o>>2]|0;if(j){c[g>>2]=e;p=c[g>>2]|0;l=f;return p|0;}if(e>>>0>=(c[k>>2]|0)>>>0){c[g>>2]=-72;p=c[g>>2]|0;l=f;return p|0;}else{c[n>>2]=(c[n>>2]|0)+(c[o>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[o>>2]|0);c[g>>2]=_w(c[h>>2]|0,c[i>>2]|0,c[n>>2]|0,c[k>>2]|0,m)|0;p=c[g>>2]|0;l=f;return p|0;}return 0;}function Zw(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=l;l=l+2128|0;h=g+2120|0;i=g+2116|0;j=g+2112|0;k=g+2108|0;m=g+1760|0;n=g+1248|0;o=g+1168|0;p=g+1088|0;q=g+2104|0;r=g;s=g+2100|0;t=g+2096|0;u=g+2092|0;v=g+2088|0;w=g+2084|0;x=g+2080|0;y=g+2076|0;z=g+2072|0;A=g+2068|0;B=g+2064|0;C=g+2060|0;D=g+2056|0;E=g+2052|0;F=g+2048|0;G=g+2044|0;H=g+2040|0;I=g+2036|0;J=g+2032|0;K=g+2028|0;L=g+2024|0;M=g+2020|0;N=g+2016|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;f=o;e=f+68|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));f=p;e=f+72|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(e|0));c[q>>2]=p+4;c[w>>2]=c[c[i>>2]>>2];c[y>>2]=c[i>>2];c[z>>2]=(c[y>>2]|0)+4;if((c[w>>2]|0)>>>0>16){c[h>>2]=-44;O=c[h>>2]|0;l=g;return O|0;}c[x>>2]=ex(m,256,o,v,s,c[j>>2]|0,c[k>>2]|0)|0;if(Ww(c[x>>2]|0)|0){c[h>>2]=c[x>>2];O=c[h>>2]|0;l=g;return O|0;}if((c[s>>2]|0)>>>0>(c[w>>2]|0)>>>0){c[h>>2]=-44;O=c[h>>2]|0;l=g;return O|0;}c[t>>2]=c[s>>2];while(1){if(c[o+(c[t>>2]<<2)>>2]|0)break;if(!(c[t>>2]|0)){P=10;break;}c[t>>2]=(c[t>>2]|0)+-1;}if((P|0)==10){c[h>>2]=-1;O=c[h>>2]|0;l=g;return O|0;}c[B>>2]=0;c[A>>2]=1;while(1){Q=c[B>>2]|0;if((c[A>>2]|0)>>>0>(c[t>>2]|0)>>>0)break;c[C>>2]=Q;c[B>>2]=(c[B>>2]|0)+(c[o+(c[A>>2]<<2)>>2]|0);c[(c[q>>2]|0)+(c[A>>2]<<2)>>2]=c[C>>2];c[A>>2]=(c[A>>2]|0)+1;}c[c[q>>2]>>2]=Q;c[u>>2]=c[B>>2];c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;c[E>>2]=d[m+(c[D>>2]|0)>>0];B=(c[q>>2]|0)+(c[E>>2]<<2)|0;Q=c[B>>2]|0;c[B>>2]=Q+1;c[F>>2]=Q;a[n+(c[F>>2]<<1)>>0]=c[D>>2];a[n+(c[F>>2]<<1)+1>>0]=c[E>>2];c[D>>2]=(c[D>>2]|0)+1;}c[c[q>>2]>>2]=0;c[G>>2]=(c[s>>2]|0)+1-(c[t>>2]|0);c[H>>2]=0;c[K>>2]=(c[w>>2]|0)-(c[s>>2]|0)-1;c[L>>2]=r;c[I>>2]=1;while(1){if((c[I>>2]|0)>>>0>(c[t>>2]|0)>>>0)break;c[M>>2]=c[H>>2];c[H>>2]=(c[H>>2]|0)+(c[o+(c[I>>2]<<2)>>2]<<(c[I>>2]|0)+(c[K>>2]|0));c[(c[L>>2]|0)+(c[I>>2]<<2)>>2]=c[M>>2];c[I>>2]=(c[I>>2]|0)+1;}c[J>>2]=c[G>>2];while(1){if((c[J>>2]|0)>>>0>((c[w>>2]|0)-(c[G>>2]|0)|0)>>>0)break;c[N>>2]=r+((c[J>>2]|0)*68|0);c[I>>2]=1;while(1){if((c[I>>2]|0)>>>0>(c[t>>2]|0)>>>0)break;c[(c[N>>2]|0)+(c[I>>2]<<2)>>2]=(c[(c[L>>2]|0)+(c[I>>2]<<2)>>2]|0)>>>(c[J>>2]|0);c[I>>2]=(c[I>>2]|0)+1;}c[J>>2]=(c[J>>2]|0)+1;}fx(c[z>>2]|0,c[w>>2]|0,n,c[u>>2]|0,p,r,c[t>>2]|0,(c[s>>2]|0)+1|0);c[h>>2]=c[x>>2];O=c[h>>2]|0;l=g;return O|0;}function _w(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=l;l=l+192|0;h=g+184|0;i=g+180|0;j=g+176|0;k=g+172|0;m=g+168|0;n=g+164|0;o=g+160|0;p=g+156|0;q=g+152|0;r=g+148|0;s=g+144|0;t=g+140|0;u=g+136|0;v=g+120|0;w=g+104|0;x=g+88|0;y=g+72|0;z=g+64|0;A=g+60|0;B=g+56|0;C=g+52|0;D=g+48|0;E=g+44|0;F=g+40|0;G=g+36|0;H=g+32|0;I=g+28|0;J=g+24|0;K=g+20|0;L=g+16|0;M=g+12|0;N=g+8|0;O=g+4|0;P=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if((c[m>>2]|0)>>>0<10){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}c[o>>2]=c[k>>2];c[p>>2]=c[i>>2];c[q>>2]=(c[p>>2]|0)+(c[j>>2]|0);c[r>>2]=c[n>>2];c[s>>2]=(c[r>>2]|0)+4;c[t>>2]=c[c[n>>2]>>2];c[z>>2]=(Lw(c[o>>2]|0)|0)&65535;c[A>>2]=(Lw((c[o>>2]|0)+2|0)|0)&65535;c[B>>2]=(Lw((c[o>>2]|0)+4|0)|0)&65535;c[D>>2]=(c[o>>2]|0)+6;c[E>>2]=(c[D>>2]|0)+(c[z>>2]|0);c[F>>2]=(c[E>>2]|0)+(c[A>>2]|0);c[G>>2]=(c[F>>2]|0)+(c[B>>2]|0);c[H>>2]=(((c[j>>2]|0)+3|0)>>>0)/4|0;c[I>>2]=(c[p>>2]|0)+(c[H>>2]|0);c[J>>2]=(c[I>>2]|0)+(c[H>>2]|0);c[K>>2]=(c[J>>2]|0)+(c[H>>2]|0);c[L>>2]=c[p>>2];c[M>>2]=c[I>>2];c[N>>2]=c[J>>2];c[O>>2]=c[K>>2];c[C>>2]=(c[m>>2]|0)-((c[z>>2]|0)+(c[A>>2]|0)+(c[B>>2]|0)+6);if((c[C>>2]|0)>>>0>(c[m>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=tw(v,c[D>>2]|0,c[z>>2]|0)|0;if(Ww(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=tw(w,c[E>>2]|0,c[A>>2]|0)|0;if(Ww(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=tw(x,c[F>>2]|0,c[B>>2]|0)|0;if(Ww(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}c[u>>2]=tw(y,c[G>>2]|0,c[C>>2]|0)|0;if(Ww(c[u>>2]|0)|0){c[h>>2]=c[u>>2];Q=c[h>>2]|0;l=g;return Q|0;}u=vw(v)|0;C=u|(vw(w)|0);u=C|(vw(x)|0);c[P>>2]=u|(vw(y)|0);while(1){if(c[P>>2]|0)break;if((c[O>>2]|0)>>>0>=((c[q>>2]|0)+-7|0)>>>0)break;if($w()|0){u=ax(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;}if($w()|0){u=ax(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;}if($w()|0){u=ax(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;}if($w()|0){u=ax(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;}$w()|0;u=ax(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;$w()|0;u=ax(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;$w()|0;u=ax(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;$w()|0;u=ax(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;if($w()|0){u=ax(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;}if($w()|0){u=ax(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;}if($w()|0){u=ax(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;}if($w()|0){u=ax(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;}u=ax(c[L>>2]|0,v,c[s>>2]|0,c[t>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+u;u=ax(c[M>>2]|0,w,c[s>>2]|0,c[t>>2]|0)|0;c[M>>2]=(c[M>>2]|0)+u;u=ax(c[N>>2]|0,x,c[s>>2]|0,c[t>>2]|0)|0;c[N>>2]=(c[N>>2]|0)+u;u=ax(c[O>>2]|0,y,c[s>>2]|0,c[t>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+u;u=vw(v)|0;C=u|(vw(w)|0);u=C|(vw(x)|0);c[P>>2]=u|(vw(y)|0);}if((c[L>>2]|0)>>>0>(c[I>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}if((c[M>>2]|0)>>>0>(c[J>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}if((c[N>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}bx(c[L>>2]|0,v,c[I>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;bx(c[M>>2]|0,w,c[J>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;bx(c[N>>2]|0,x,c[K>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;bx(c[O>>2]|0,y,c[q>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;t=yw(v)|0;v=t&(yw(w)|0);w=v&(yw(x)|0);c[P>>2]=w&(yw(y)|0);if(c[P>>2]|0){c[h>>2]=c[j>>2];Q=c[h>>2]|0;l=g;return Q|0;}else{c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}return 0;}function $w(){return 0;}function ax(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=dx(c[j>>2]|0,c[m>>2]|0)|0;m=c[i>>2]|0;i=(c[k>>2]|0)+(c[n>>2]<<2)|0;a[m>>0]=a[i>>0]|0;a[m+1>>0]=a[i+1>>0]|0;Gw(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0;}function bx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=c[h>>2];while(1){if(vw(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>=((c[j>>2]|0)+-7|0)>>>0)break;if($w()|0){f=ax(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}$w()|0;f=ax(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;if($w()|0){f=ax(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}f=ax(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){if(vw(c[i>>2]|0)|0)break;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=ax(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}while(1){o=c[h>>2]|0;if((c[h>>2]|0)>>>0>((c[j>>2]|0)+-2|0)>>>0)break;f=ax(o,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+f;}if(o>>>0>=(c[j>>2]|0)>>>0){p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}j=cx(c[h>>2]|0,c[i>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+j;p=c[h>>2]|0;q=c[n>>2]|0;r=p;s=q;t=r-s|0;l=g;return t|0;}function cx(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=g;c[n>>2]=dx(c[j>>2]|0,c[m>>2]|0)|0;a[c[i>>2]>>0]=a[(c[k>>2]|0)+(c[n>>2]<<2)>>0]|0;i=c[j>>2]|0;if((d[(c[k>>2]|0)+(c[n>>2]<<2)+3>>0]|0|0)==1){Gw(i,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);l=h;return 1;}if((c[i+4>>2]|0)>>>0>=32){l=h;return 1;}Gw(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<2)+2>>0]|0);if((c[(c[j>>2]|0)+4>>2]|0)>>>0<=32){l=h;return 1;}c[(c[j>>2]|0)+4>>2]=32;l=h;return 1;}function dx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>(32-(c[f>>2]|0)&31)|0;}function ex(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;k=l;l=l+80|0;m=k+68|0;n=k+64|0;o=k+60|0;p=k+56|0;q=k+52|0;r=k+48|0;s=k+44|0;t=k+40|0;u=k+36|0;v=k+32|0;w=k+28|0;x=k+24|0;y=k+20|0;z=k+16|0;A=k+12|0;B=k+8|0;C=k+4|0;D=k;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[w>>2]=c[s>>2];if(!(c[t>>2]|0)){c[m>>2]=-72;E=c[m>>2]|0;l=k;return E|0;}c[x>>2]=d[c[w>>2]>>0];s=c[x>>2]|0;a:do{if((c[x>>2]|0)>>>0<128){if((s+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;E=c[m>>2]|0;l=k;return E|0;}c[y>>2]=jx(c[n>>2]|0,(c[o>>2]|0)-1|0,(c[w>>2]|0)+1|0,c[x>>2]|0)|0;if(Pw(c[y>>2]|0)|0){c[m>>2]=c[y>>2];E=c[m>>2]|0;l=k;return E|0;}}else{j=c[x>>2]|0;if(s>>>0>=242){c[y>>2]=c[7392+(j-242<<2)>>2];oE(c[n>>2]|0,1,c[o>>2]|0)|0;c[x>>2]=0;break;}c[y>>2]=j-127;c[x>>2]=(((c[y>>2]|0)+1|0)>>>0)/2|0;if(((c[x>>2]|0)+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;E=c[m>>2]|0;l=k;return E|0;}if((c[y>>2]|0)>>>0>=(c[o>>2]|0)>>>0){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}c[w>>2]=(c[w>>2]|0)+1;c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break a;a[(c[n>>2]|0)+(c[z>>2]|0)>>0]=(d[(c[w>>2]|0)+(((c[z>>2]|0)>>>0)/2|0)>>0]|0)>>4;a[(c[n>>2]|0)+((c[z>>2]|0)+1)>>0]=(d[(c[w>>2]|0)+(((c[z>>2]|0)>>>0)/2|0)>>0]|0)&15;c[z>>2]=(c[z>>2]|0)+2;}}}while(0);w=c[p>>2]|0;o=w+68|0;do{c[w>>2]=0;w=w+4|0;}while((w|0)<(o|0));c[u>>2]=0;c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break;if((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0|0)>=16){F=20;break;}w=(c[p>>2]|0)+((d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)<<2)|0;c[w>>2]=(c[w>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+(1<<(d[(c[n>>2]|0)+(c[z>>2]|0)>>0]|0)>>1);c[z>>2]=(c[z>>2]|0)+1;}if((F|0)==20){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}if(!(c[u>>2]|0)){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}c[v>>2]=(Kw(c[u>>2]|0)|0)+1;if((c[v>>2]|0)>>>0>16){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}c[A>>2]=1<<c[v>>2];c[B>>2]=(c[A>>2]|0)-(c[u>>2]|0);c[C>>2]=1<<(Kw(c[B>>2]|0)|0);c[D>>2]=(Kw(c[B>>2]|0)|0)+1;if((c[C>>2]|0)!=(c[B>>2]|0)){c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}a[(c[n>>2]|0)+(c[y>>2]|0)>>0]=c[D>>2];n=(c[p>>2]|0)+(c[D>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+1;if((c[(c[p>>2]|0)+4>>2]|0)>>>0>=2?(c[(c[p>>2]|0)+4>>2]&1|0)==0:0){c[c[q>>2]>>2]=(c[y>>2]|0)+1;c[c[r>>2]>>2]=c[v>>2];c[m>>2]=(c[x>>2]|0)+1;E=c[m>>2]|0;l=k;return E|0;}c[m>>2]=-20;E=c[m>>2]|0;l=k;return E|0;}function fx(e,f,g,h,i,j,k,m){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;n=l;l=l+160|0;o=n+140|0;p=n+136|0;q=n+132|0;r=n+128|0;s=n+124|0;t=n+120|0;u=n+116|0;v=n+112|0;w=n;x=n+108|0;y=n+104|0;z=n+100|0;A=n+148|0;B=n+96|0;C=n+92|0;D=n+88|0;E=n+84|0;F=n+80|0;G=n+76|0;H=n+72|0;I=n+68|0;J=n+144|0;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=k;c[v>>2]=m;c[x>>2]=(c[v>>2]|0)-(c[p>>2]|0);c[y>>2]=(c[v>>2]|0)-(c[u>>2]|0);u=w;m=c[t>>2]|0;k=u+68|0;do{c[u>>2]=c[m>>2];u=u+4|0;m=m+4|0;}while((u|0)<(k|0));c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;b[A>>1]=d[(c[q>>2]|0)+(c[z>>2]<<1)>>0]|0;c[B>>2]=d[(c[q>>2]|0)+(c[z>>2]<<1)+1>>0];c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);c[D>>2]=c[w+(c[B>>2]<<2)>>2];c[E>>2]=1<<(c[p>>2]|0)-(c[C>>2]|0);a:do{if(((c[p>>2]|0)-(c[C>>2]|0)|0)>>>0>=(c[y>>2]|0)>>>0){m=(c[C>>2]|0)+(c[x>>2]|0)|0;c[G>>2]=m;c[G>>2]=(c[G>>2]|0)<1?1:m;c[F>>2]=c[(c[s>>2]|0)+(c[G>>2]<<2)>>2];gx((c[o>>2]|0)+(c[D>>2]<<2)|0,(c[p>>2]|0)-(c[C>>2]|0)|0,c[C>>2]|0,(c[t>>2]|0)+((c[C>>2]|0)*68|0)|0,c[G>>2]|0,(c[q>>2]|0)+(c[F>>2]<<1)|0,(c[r>>2]|0)-(c[F>>2]|0)|0,c[v>>2]|0,b[A>>1]|0);}else{c[I>>2]=(c[D>>2]|0)+(c[E>>2]|0);hx(J,b[A>>1]|0);a[J+2>>0]=c[C>>2];a[J+3>>0]=1;c[H>>2]=c[D>>2];while(1){if((c[H>>2]|0)>>>0>=(c[I>>2]|0)>>>0)break a;m=(c[o>>2]|0)+(c[H>>2]<<2)|0;b[m>>1]=b[J>>1]|0;b[m+2>>1]=b[J+2>>1]|0;c[H>>2]=(c[H>>2]|0)+1;}}}while(0);m=w+(c[B>>2]<<2)|0;c[m>>2]=(c[m>>2]|0)+(c[E>>2]|0);c[z>>2]=(c[z>>2]|0)+1;}l=n;return;}function gx(f,g,h,i,j,k,m,n,o){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;p=l;l=l+160|0;q=p+136|0;r=p+132|0;s=p+128|0;t=p+124|0;u=p+120|0;v=p+116|0;w=p+112|0;x=p+108|0;y=p+144|0;z=p+140|0;A=p;B=p+104|0;C=p+100|0;D=p+96|0;E=p+92|0;F=p+88|0;G=p+84|0;H=p+80|0;I=p+76|0;J=p+72|0;K=p+68|0;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=j;c[v>>2]=k;c[w>>2]=m;c[x>>2]=n;b[y>>1]=o;o=A;n=c[t>>2]|0;t=o+68|0;do{c[o>>2]=c[n>>2];o=o+4|0;n=n+4|0;}while((o|0)<(t|0));a:do{if((c[u>>2]|0)>1){c[D>>2]=c[A+(c[u>>2]<<2)>>2];hx(z,b[y>>1]|0);a[z+2>>0]=c[s>>2];a[z+3>>0]=1;c[C>>2]=0;while(1){if((c[C>>2]|0)>>>0>=(c[D>>2]|0)>>>0)break a;n=(c[q>>2]|0)+(c[C>>2]<<2)|0;b[n>>1]=b[z>>1]|0;b[n+2>>1]=b[z+2>>1]|0;c[C>>2]=(c[C>>2]|0)+1;}}}while(0);c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[E>>2]=d[(c[v>>2]|0)+(c[B>>2]<<1)>>0];c[F>>2]=d[(c[v>>2]|0)+(c[B>>2]<<1)+1>>0];c[G>>2]=(c[x>>2]|0)-(c[F>>2]|0);c[H>>2]=1<<(c[r>>2]|0)-(c[G>>2]|0);c[I>>2]=c[A+(c[F>>2]<<2)>>2];c[J>>2]=c[I>>2];c[K>>2]=(c[I>>2]|0)+(c[H>>2]|0);hx(z,(e[y>>1]|0)+(c[E>>2]<<8)&65535);a[z+2>>0]=(c[G>>2]|0)+(c[s>>2]|0);a[z+3>>0]=2;do{C=c[q>>2]|0;D=c[J>>2]|0;c[J>>2]=D+1;u=C+(D<<2)|0;b[u>>1]=b[z>>1]|0;b[u+2>>1]=b[z+2>>1]|0;}while((c[J>>2]|0)>>>0<(c[K>>2]|0)>>>0);u=A+(c[F>>2]<<2)|0;c[u>>2]=(c[u>>2]|0)+(c[H>>2]|0);c[B>>2]=(c[B>>2]|0)+1;}l=p;return;}function hx(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+4|0;i=g+8|0;j=g;c[h>>2]=d;b[i>>1]=f;f=(tr()|0)!=0;d=c[h>>2]|0;if(f){ix(d,b[i>>1]|0);l=g;return;}else{c[j>>2]=d;a[c[j>>2]>>0]=b[i>>1];a[(c[j>>2]|0)+1>>0]=(e[i>>1]|0)>>8;l=g;return;}}function ix(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;h=f+4|0;c[g>>2]=d;b[h>>1]=e;e=c[g>>2]|0;a[e>>0]=a[h>>0]|0;a[e+1>>0]=a[h+1>>0]|0;l=f;return;}function jx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=l;l=l+16960|0;g=f+16948|0;h=f+16944|0;i=f+16940|0;j=f+16936|0;k=f+16932|0;m=f+16928|0;n=f+16924|0;o=f+16400|0;p=f;q=f+16920|0;r=f+16916|0;s=f+16912|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[j>>2];c[n>>2]=c[m>>2];c[r>>2]=255;if((c[k>>2]|0)>>>0<2){c[g>>2]=-72;t=c[g>>2]|0;l=f;return t|0;}c[s>>2]=Ow(o,r,q,c[m>>2]|0,c[k>>2]|0)|0;m=(Pw(c[s>>2]|0)|0)!=0;j=c[s>>2]|0;if(m){c[g>>2]=j;t=c[g>>2]|0;l=f;return t|0;}if(j>>>0>=(c[k>>2]|0)>>>0){c[g>>2]=-72;t=c[g>>2]|0;l=f;return t|0;}c[n>>2]=(c[n>>2]|0)+(c[s>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[s>>2]|0);c[s>>2]=Qw(p,o,c[r>>2]|0,c[q>>2]|0)|0;if(Pw(c[s>>2]|0)|0){c[g>>2]=c[s>>2];t=c[g>>2]|0;l=f;return t|0;}else{c[g>>2]=kx(c[h>>2]|0,c[i>>2]|0,c[n>>2]|0,c[k>>2]|0,p)|0;t=c[g>>2]|0;l=f;return t|0;}return 0;}function kx(d,f,g,h,i){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;j=l;l=l+192|0;k=j+184|0;m=j+180|0;n=j+176|0;o=j+172|0;p=j+168|0;q=j+164|0;r=j+160|0;s=j+156|0;t=j+152|0;u=j+148|0;v=j+144|0;w=j+128|0;x=j+120|0;y=j+112|0;z=j+108|0;A=j+104|0;B=j+100|0;C=j+96|0;D=j+92|0;E=j+88|0;F=j+84|0;G=j+80|0;H=j+76|0;I=j+72|0;J=j+68|0;K=j+64|0;L=j+48|0;M=j+40|0;N=j+32|0;O=j+28|0;P=j+24|0;Q=j+20|0;R=j+16|0;S=j+12|0;T=j+8|0;U=j+4|0;V=j+188|0;W=j;c[Q>>2]=d;c[R>>2]=f;c[S>>2]=g;c[T>>2]=h;c[U>>2]=i;i=c[U>>2]|0;b[V>>1]=b[i>>1]|0;b[V+2>>1]=b[i+2>>1]|0;c[W>>2]=e[V+2>>1];V=c[Q>>2]|0;Q=c[R>>2]|0;R=c[S>>2]|0;S=c[T>>2]|0;T=c[U>>2]|0;if(c[W>>2]|0){c[B>>2]=V;c[C>>2]=Q;c[D>>2]=R;c[E>>2]=S;c[F>>2]=T;c[G>>2]=1;c[H>>2]=c[B>>2];c[I>>2]=c[H>>2];c[J>>2]=(c[I>>2]|0)+(c[C>>2]|0);c[K>>2]=(c[J>>2]|0)+-3;c[O>>2]=tw(L,c[D>>2]|0,c[E>>2]|0)|0;do{if(!(Pw(c[O>>2]|0)|0)){uw(M,L,c[F>>2]|0);uw(N,L,c[F>>2]|0);while(1){if(vw(L)|0)break;if((c[I>>2]|0)>>>0>=(c[K>>2]|0)>>>0)break;if(c[G>>2]|0)X=(lx(M,L)|0)&255;else X=(Cw(M,L)|0)&255;a[c[I>>2]>>0]=X;if(c[G>>2]|0)Y=(lx(N,L)|0)&255;else Y=(Cw(N,L)|0)&255;a[(c[I>>2]|0)+1>>0]=Y;if((vw(L)|0)>>>0>0){Z=14;break;}if(c[G>>2]|0)_=(lx(M,L)|0)&255;else _=(Cw(M,L)|0)&255;a[(c[I>>2]|0)+2>>0]=_;if(c[G>>2]|0)$=(lx(N,L)|0)&255;else $=(Cw(N,L)|0)&255;a[(c[I>>2]|0)+3>>0]=$;c[I>>2]=(c[I>>2]|0)+4;}if((Z|0)==14)c[I>>2]=(c[I>>2]|0)+2;while(1){if((vw(L)|0)>>>0>2)break;if((c[I>>2]|0)==(c[J>>2]|0))break;if(yw(L)|0){if(c[G>>2]|0)break;if(mx(M)|0)break;}if(c[G>>2]|0)aa=(lx(M,L)|0)&255;else aa=(Cw(M,L)|0)&255;E=c[I>>2]|0;c[I>>2]=E+1;a[E>>0]=aa;if((vw(L)|0)>>>0>2)break;if((c[I>>2]|0)==(c[J>>2]|0))break;if(yw(L)|0){if(c[G>>2]|0)break;if(mx(N)|0)break;}if(c[G>>2]|0)ba=(lx(N,L)|0)&255;else ba=(Cw(N,L)|0)&255;E=c[I>>2]|0;c[I>>2]=E+1;a[E>>0]=ba;}if((yw(L)|0?mx(M)|0:0)?mx(N)|0:0){c[A>>2]=(c[I>>2]|0)-(c[H>>2]|0);break;}if((c[I>>2]|0)==(c[J>>2]|0)){c[A>>2]=-70;break;}else{c[A>>2]=-20;break;}}else c[A>>2]=c[O>>2];}while(0);c[P>>2]=c[A>>2];ca=c[P>>2]|0;l=j;return ca|0;}else{c[m>>2]=V;c[n>>2]=Q;c[o>>2]=R;c[p>>2]=S;c[q>>2]=T;c[r>>2]=0;c[s>>2]=c[m>>2];c[t>>2]=c[s>>2];c[u>>2]=(c[t>>2]|0)+(c[n>>2]|0);c[v>>2]=(c[u>>2]|0)+-3;c[z>>2]=tw(w,c[o>>2]|0,c[p>>2]|0)|0;do{if(!(Pw(c[z>>2]|0)|0)){uw(x,w,c[q>>2]|0);uw(y,w,c[q>>2]|0);while(1){if(vw(w)|0)break;if((c[t>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;if(c[r>>2]|0)da=(lx(x,w)|0)&255;else da=(Cw(x,w)|0)&255;a[c[t>>2]>>0]=da;if(c[r>>2]|0)ea=(lx(y,w)|0)&255;else ea=(Cw(y,w)|0)&255;a[(c[t>>2]|0)+1>>0]=ea;if((vw(w)|0)>>>0>0){Z=60;break;}if(c[r>>2]|0)fa=(lx(x,w)|0)&255;else fa=(Cw(x,w)|0)&255;a[(c[t>>2]|0)+2>>0]=fa;if(c[r>>2]|0)ga=(lx(y,w)|0)&255;else ga=(Cw(y,w)|0)&255;a[(c[t>>2]|0)+3>>0]=ga;c[t>>2]=(c[t>>2]|0)+4;}if((Z|0)==60)c[t>>2]=(c[t>>2]|0)+2;while(1){if((vw(w)|0)>>>0>2)break;if((c[t>>2]|0)==(c[u>>2]|0))break;if(yw(w)|0){if(c[r>>2]|0)break;if(mx(x)|0)break;}if(c[r>>2]|0)ha=(lx(x,w)|0)&255;else ha=(Cw(x,w)|0)&255;p=c[t>>2]|0;c[t>>2]=p+1;a[p>>0]=ha;if((vw(w)|0)>>>0>2)break;if((c[t>>2]|0)==(c[u>>2]|0))break;if(yw(w)|0){if(c[r>>2]|0)break;if(mx(y)|0)break;}if(c[r>>2]|0)ia=(lx(y,w)|0)&255;else ia=(Cw(y,w)|0)&255;p=c[t>>2]|0;c[t>>2]=p+1;a[p>>0]=ia;}if((yw(w)|0?mx(x)|0:0)?mx(y)|0:0){c[k>>2]=(c[t>>2]|0)-(c[s>>2]|0);break;}if((c[t>>2]|0)==(c[u>>2]|0)){c[k>>2]=-70;break;}else{c[k>>2]=-20;break;}}else c[k>>2]=c[z>>2];}while(0);c[P>>2]=c[k>>2];ca=c[P>>2]|0;l=j;return ca|0;}return 0;}function lx(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=nx(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function mx(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[c[d>>2]>>2]|0)==0|0;}function nx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=dx(c[e>>2]|0,c[f>>2]|0)|0;Gw(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function ox(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;i=l;l=l+400|0;j=i+392|0;k=i+388|0;m=i+384|0;n=i+380|0;o=i+80|0;p=i;q=i+376|0;r=i+372|0;s=i+368|0;t=i+364|0;u=i+360|0;v=i+356|0;w=i+352|0;x=i+348|0;y=i+344|0;z=i+340|0;A=i+336|0;B=i+396|0;c[k>>2]=f;c[m>>2]=g;c[n>>2]=h;c[q>>2]=0;c[s>>2]=0;c[v>>2]=(c[k>>2]|0)+2;c[w>>2]=c[v>>2];c[r>>2]=ex(o,256,p,s,q,c[m>>2]|0,c[n>>2]|0)|0;if(Ww(c[r>>2]|0)|0){c[j>>2]=c[r>>2];C=c[j>>2]|0;l=i;return C|0;}if((c[q>>2]|0)>>>0>(e[c[k>>2]>>1]|0)>>>0){c[j>>2]=-44;C=c[j>>2]|0;l=i;return C|0;}b[c[k>>2]>>1]=c[q>>2];c[u>>2]=0;c[t>>2]=1;while(1){if((c[t>>2]|0)>>>0>(c[q>>2]|0)>>>0)break;c[x>>2]=c[u>>2];c[u>>2]=(c[u>>2]|0)+(c[p+(c[t>>2]<<2)>>2]<<(c[t>>2]|0)-1);c[p+(c[t>>2]<<2)>>2]=c[x>>2];c[t>>2]=(c[t>>2]|0)+1;}c[t>>2]=0;while(1){if((c[t>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;c[y>>2]=d[o+(c[t>>2]|0)>>0];c[z>>2]=1<<c[y>>2]>>1;a[B>>0]=c[t>>2];a[B+1>>0]=(c[q>>2]|0)+1-(c[y>>2]|0);c[A>>2]=c[p+(c[y>>2]<<2)>>2];while(1){if((c[A>>2]|0)>>>0>=((c[p+(c[y>>2]<<2)>>2]|0)+(c[z>>2]|0)|0)>>>0)break;x=(c[w>>2]|0)+(c[A>>2]<<1)|0;a[x>>0]=a[B>>0]|0;a[x+1>>0]=a[B+1>>0]|0;c[A>>2]=(c[A>>2]|0)+1;}x=p+(c[y>>2]<<2)|0;c[x>>2]=(c[x>>2]|0)+(c[z>>2]|0);c[t>>2]=(c[t>>2]|0)+1;}c[j>>2]=c[r>>2];C=c[j>>2]|0;l=i;return C|0;}function px(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;i=l;l=l+192|0;j=i+184|0;k=i+180|0;m=i+176|0;n=i+172|0;o=i+168|0;p=i+164|0;q=i+160|0;r=i+156|0;s=i+152|0;t=i+148|0;u=i+144|0;v=i+140|0;w=i+136|0;x=i+120|0;y=i+104|0;z=i+88|0;A=i+72|0;B=i+64|0;C=i+60|0;D=i+56|0;E=i+52|0;F=i+48|0;G=i+44|0;H=i+40|0;I=i+36|0;J=i+32|0;K=i+28|0;L=i+24|0;M=i+20|0;N=i+16|0;O=i+12|0;P=i+8|0;Q=i+4|0;R=i;c[k>>2]=b;c[m>>2]=d;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;if((c[o>>2]|0)>>>0<10){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}c[q>>2]=c[n>>2];c[r>>2]=c[k>>2];c[s>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[t>>2]=c[p>>2];c[u>>2]=(c[t>>2]|0)+2;c[v>>2]=e[c[p>>2]>>1];c[B>>2]=(Lw(c[q>>2]|0)|0)&65535;c[C>>2]=(Lw((c[q>>2]|0)+2|0)|0)&65535;c[D>>2]=(Lw((c[q>>2]|0)+4|0)|0)&65535;c[F>>2]=(c[q>>2]|0)+6;c[G>>2]=(c[F>>2]|0)+(c[B>>2]|0);c[H>>2]=(c[G>>2]|0)+(c[C>>2]|0);c[I>>2]=(c[H>>2]|0)+(c[D>>2]|0);c[J>>2]=(((c[m>>2]|0)+3|0)>>>0)/4|0;c[K>>2]=(c[r>>2]|0)+(c[J>>2]|0);c[L>>2]=(c[K>>2]|0)+(c[J>>2]|0);c[M>>2]=(c[L>>2]|0)+(c[J>>2]|0);c[N>>2]=c[r>>2];c[O>>2]=c[K>>2];c[P>>2]=c[L>>2];c[Q>>2]=c[M>>2];c[E>>2]=(c[o>>2]|0)-((c[B>>2]|0)+(c[C>>2]|0)+(c[D>>2]|0)+6);if((c[E>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=tw(x,c[F>>2]|0,c[B>>2]|0)|0;if(Ww(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=tw(y,c[G>>2]|0,c[C>>2]|0)|0;if(Ww(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=tw(z,c[H>>2]|0,c[D>>2]|0)|0;if(Ww(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}c[w>>2]=tw(A,c[I>>2]|0,c[E>>2]|0)|0;if(Ww(c[w>>2]|0)|0){c[j>>2]=c[w>>2];S=c[j>>2]|0;l=i;return S|0;}w=vw(x)|0;E=w|(vw(y)|0);w=E|(vw(z)|0);c[R>>2]=w|(vw(A)|0);while(1){if(c[R>>2]|0)break;if((c[Q>>2]|0)>>>0>=((c[s>>2]|0)+-7|0)>>>0)break;if($w()|0){w=qx(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;}if($w()|0){w=qx(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;}if($w()|0){w=qx(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;}if($w()|0){w=qx(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;}$w()|0;w=qx(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;$w()|0;w=qx(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;$w()|0;w=qx(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;$w()|0;w=qx(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;if($w()|0){w=qx(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;}if($w()|0){w=qx(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;}if($w()|0){w=qx(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;}if($w()|0){w=qx(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;}w=qx(x,c[u>>2]|0,c[v>>2]|0)|0;E=c[N>>2]|0;c[N>>2]=E+1;a[E>>0]=w;w=qx(y,c[u>>2]|0,c[v>>2]|0)|0;E=c[O>>2]|0;c[O>>2]=E+1;a[E>>0]=w;w=qx(z,c[u>>2]|0,c[v>>2]|0)|0;E=c[P>>2]|0;c[P>>2]=E+1;a[E>>0]=w;w=qx(A,c[u>>2]|0,c[v>>2]|0)|0;E=c[Q>>2]|0;c[Q>>2]=E+1;a[E>>0]=w;w=vw(x)|0;E=w|(vw(y)|0);w=E|(vw(z)|0);c[R>>2]=w|(vw(A)|0);}if((c[N>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}if((c[O>>2]|0)>>>0>(c[L>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}if((c[P>>2]|0)>>>0>(c[M>>2]|0)>>>0){c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}rx(c[N>>2]|0,x,c[K>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;rx(c[O>>2]|0,y,c[L>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;rx(c[P>>2]|0,z,c[M>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;rx(c[Q>>2]|0,A,c[s>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;v=yw(x)|0;x=v&(yw(y)|0);y=x&(yw(z)|0);c[R>>2]=y&(yw(A)|0);if(c[R>>2]|0){c[j>>2]=c[m>>2];S=c[j>>2]|0;l=i;return S|0;}else{c[j>>2]=-20;S=c[j>>2]|0;l=i;return S|0;}return 0;}function qx(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+16|0;c[h>>2]=b;c[i>>2]=e;c[j>>2]=f;c[k>>2]=dx(c[h>>2]|0,c[j>>2]|0)|0;a[m>>0]=a[(c[i>>2]|0)+(c[k>>2]<<1)>>0]|0;Gw(c[h>>2]|0,d[(c[i>>2]|0)+(c[k>>2]<<1)+1>>0]|0);l=g;return a[m>>0]|0;}function rx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[i>>2];while(1){if(vw(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>((c[k>>2]|0)+-4|0)>>>0)break;if($w()|0){g=qx(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}$w()|0;g=qx(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;if($w()|0){g=qx(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}g=qx(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if(vw(c[j>>2]|0)|0)break;if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=qx(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}while(1){if((c[i>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;g=qx(c[j>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=g;}l=h;return(c[k>>2]|0)-(c[o>>2]|0)|0;}function sx(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;if((c[j>>2]|0)>>>0<5){c[g>>2]=5;m=c[g>>2]|0;l=f;return m|0;}c[k>>2]=pr(c[i>>2]|0)|0;if((c[k>>2]|0)!=-47205084){c[g>>2]=-10;m=c[g>>2]|0;l=f;return m|0;}k=c[h>>2]|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;c[(c[h>>2]|0)+8>>2]=((d[(c[i>>2]|0)+4>>0]|0)&15)+11;if((d[(c[i>>2]|0)+4>>0]|0)>>4|0){c[g>>2]=-14;m=c[g>>2]|0;l=f;return m|0;}else{c[g>>2]=0;m=c[g>>2]|0;l=f;return m|0;}return 0;}function tx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+16|0;i=g+12|0;j=g+8|0;k=g+4|0;m=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;f=Zr(c[h>>2]|0,c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,0,0)|0;l=g;return f|0;}function ux(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+12|0;k=f+8|0;m=f+4|0;n=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[n>>2]=Wp()|0;if(!(c[n>>2]|0)){c[g>>2]=-64;o=c[g>>2]|0;l=f;return o|0;}else{c[m>>2]=tx(c[n>>2]|0,c[h>>2]|0,c[i>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;Xp(c[n>>2]|0)|0;c[g>>2]=c[m>>2];o=c[g>>2]|0;l=f;return o|0;}return 0;}function vx(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[(c[d>>2]|0)+28744>>2]|0;}function wx(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;switch(c[(c[e>>2]|0)+28804>>2]|0){case 6:case 7:{c[d>>2]=5;break;}case 2:{c[d>>2]=1;break;}case 3:{c[d>>2]=2;break;}case 4:{c[d>>2]=3;break;}case 5:{c[d>>2]=4;break;}default:c[d>>2]=0;}l=b;return c[d>>2]|0;}function xx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;g=l;l=l+64|0;h=g+52|0;i=g+48|0;j=g+44|0;k=g+40|0;m=g+36|0;n=g+32|0;o=g+28|0;p=g+16|0;q=g+12|0;r=g+8|0;s=g+4|0;t=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if((c[n>>2]|0)!=(c[(c[i>>2]|0)+28744>>2]|0)){c[h>>2]=-72;u=c[h>>2]|0;l=g;return u|0;}if(c[k>>2]|0)Br(c[i>>2]|0,c[j>>2]|0);switch(c[(c[i>>2]|0)+28804>>2]|0){case 0:{if((c[(c[i>>2]|0)+28912>>2]|0)==0?((hq(c[m>>2]|0)|0)&-16|0)==407710288:0){mE((c[i>>2]|0)+160092|0,c[m>>2]|0,c[n>>2]|0)|0;c[(c[i>>2]|0)+28744>>2]=8-(c[n>>2]|0);c[(c[i>>2]|0)+28804>>2]=6;c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}f=nq(c[m>>2]|0,c[n>>2]|0,c[(c[i>>2]|0)+28912>>2]|0)|0;c[(c[i>>2]|0)+28904>>2]=f;f=($q(c[(c[i>>2]|0)+28904>>2]|0)|0)!=0;e=c[i>>2]|0;if(f){c[h>>2]=c[e+28904>>2];u=c[h>>2]|0;l=g;return u|0;}else{mE(e+160092|0,c[m>>2]|0,c[n>>2]|0)|0;c[(c[i>>2]|0)+28744>>2]=(c[(c[i>>2]|0)+28904>>2]|0)-(c[n>>2]|0);c[(c[i>>2]|0)+28804>>2]=1;c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}break;}case 1:{mE((c[i>>2]|0)+160092+((c[(c[i>>2]|0)+28904>>2]|0)-(c[n>>2]|0))|0,c[m>>2]|0,c[n>>2]|0)|0;c[o>>2]=fs(c[i>>2]|0,(c[i>>2]|0)+160092|0,c[(c[i>>2]|0)+28904>>2]|0)|0;if($q(c[o>>2]|0)|0){c[h>>2]=c[o>>2];u=c[h>>2]|0;l=g;return u|0;}else{c[(c[i>>2]|0)+28744>>2]=3;c[(c[i>>2]|0)+28804>>2]=2;c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}break;}case 2:{c[q>>2]=br(c[m>>2]|0,3,p)|0;o=($q(c[q>>2]|0)|0)!=0;e=c[q>>2]|0;if(o){c[h>>2]=e;u=c[h>>2]|0;l=g;return u|0;}c[(c[i>>2]|0)+28744>>2]=e;c[(c[i>>2]|0)+28800>>2]=c[p>>2];c[(c[i>>2]|0)+28936>>2]=c[p+8>>2];e=(c[p+4>>2]|0)!=0;if(c[q>>2]|0){c[(c[i>>2]|0)+28804>>2]=e?4:3;c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}q=c[i>>2]|0;do{if(e){p=(c[i>>2]|0)+28744|0;if(c[q+28752+32>>2]|0){c[p>>2]=4;c[(c[i>>2]|0)+28804>>2]=5;break;}else{c[p>>2]=0;c[(c[i>>2]|0)+28804>>2]=0;break;}}else{c[q+28744>>2]=3;c[(c[i>>2]|0)+28804>>2]=2;}}while(0);c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}case 3:case 4:{switch(c[(c[i>>2]|0)+28800>>2]|0){case 2:{c[r>>2]=Cr(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,1)|0;break;}case 0:{c[r>>2]=gs(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;break;}case 1:{c[r>>2]=yx(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[(c[i>>2]|0)+28936>>2]|0)|0;break;}default:{c[h>>2]=-20;u=c[h>>2]|0;l=g;return u|0;}}k=($q(c[r>>2]|0)|0)!=0;q=c[r>>2]|0;if(k){c[h>>2]=q;u=c[h>>2]|0;l=g;return u|0;}k=(c[i>>2]|0)+28792|0;e=k;p=k;c[p>>2]=dE(c[e>>2]|0,c[e+4>>2]|0,q|0,0)|0;c[p+4>>2]=y;if(c[(c[i>>2]|0)+28752+32>>2]|0)Nh((c[i>>2]|0)+28816|0,c[j>>2]|0,c[r>>2]|0)|0;p=c[i>>2]|0;do{if((c[(c[i>>2]|0)+28804>>2]|0)==4){q=p+28752|0;if(((c[q>>2]|0)!=-1?1:(c[q+4>>2]|0)!=-1)?(q=(c[i>>2]|0)+28792|0,e=(c[i>>2]|0)+28752|0,(c[q>>2]|0)!=(c[e>>2]|0)?1:(c[q+4>>2]|0)!=(c[e+4>>2]|0)):0){c[h>>2]=-20;u=c[h>>2]|0;l=g;return u|0;}e=(c[i>>2]|0)+28744|0;if(c[(c[i>>2]|0)+28752+32>>2]|0){c[e>>2]=4;c[(c[i>>2]|0)+28804>>2]=5;break;}else{c[e>>2]=0;c[(c[i>>2]|0)+28804>>2]=0;break;}}else{c[p+28804>>2]=2;c[(c[i>>2]|0)+28744>>2]=3;c[(c[i>>2]|0)+28728>>2]=(c[j>>2]|0)+(c[r>>2]|0);}}while(0);c[h>>2]=c[r>>2];u=c[h>>2]|0;l=g;return u|0;}case 5:{c[s>>2]=Oh((c[i>>2]|0)+28816|0)|0;c[t>>2]=hq(c[m>>2]|0)|0;if((c[t>>2]|0)!=(c[s>>2]|0)){c[h>>2]=-22;u=c[h>>2]|0;l=g;return u|0;}else{c[(c[i>>2]|0)+28744>>2]=0;c[(c[i>>2]|0)+28804>>2]=0;c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}break;}case 6:{mE((c[i>>2]|0)+160092+(8-(c[n>>2]|0))|0,c[m>>2]|0,c[n>>2]|0)|0;n=hq((c[i>>2]|0)+160092+4|0)|0;c[(c[i>>2]|0)+28744>>2]=n;c[(c[i>>2]|0)+28804>>2]=7;c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}case 7:{c[(c[i>>2]|0)+28744>>2]=0;c[(c[i>>2]|0)+28804>>2]=0;c[h>>2]=0;u=c[h>>2]|0;l=g;return u|0;}default:{c[h>>2]=-1;u=c[h>>2]|0;l=g;return u|0;}}return 0;}function yx(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;if((c[n>>2]|0)!=1){c[i>>2]=-72;p=c[i>>2]|0;l=h;return p|0;}if((c[o>>2]|0)>>>0>(c[k>>2]|0)>>>0){c[i>>2]=-70;p=c[i>>2]|0;l=h;return p|0;}else{oE(c[j>>2]|0,(d[c[m>>2]>>0]|0)&255|0,c[o>>2]|0)|0;c[i>>2]=c[o>>2];p=c[i>>2]|0;l=h;return p|0;}return 0;}function zx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+48|0;h=g+24|0;i=g+20|0;j=g+16|0;k=g+12|0;m=g+8|0;n=g+4|0;o=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;if(((c[f>>2]|0)!=0^1)&1^((c[f+4>>2]|0)!=0^1)&1|0){c[i>>2]=0;p=c[i>>2]|0;l=g;return p|0;};c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[o>>2]=Rh(28744,h)|0;if(!(c[o>>2]|0)){c[i>>2]=0;p=c[i>>2]|0;l=g;return p|0;}h=(c[o>>2]|0)+28732|0;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];f=($q(Ax(c[o>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0)|0)|0)!=0;n=c[o>>2]|0;if(f){Yp(n)|0;c[i>>2]=0;p=c[i>>2]|0;l=g;return p|0;}else{c[i>>2]=n;p=c[i>>2]|0;l=g;return p|0;}return 0;}function Ax(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+48|0;h=g+32|0;i=g+28|0;j=g+24|0;k=g+20|0;m=g+16|0;n=g+12|0;o=g+8|0;p=g+4|0;q=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;do{if((c[n>>2]|0)!=1&(c[k>>2]|0)!=0&(c[m>>2]|0)!=0){f=c[m>>2]|0;e=(c[j>>2]|0)+28732|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[p>>2]=Rh(f,h)|0;c[c[j>>2]>>2]=c[p>>2];c[(c[j>>2]|0)+4>>2]=c[p>>2];if(c[p>>2]|0){mE(c[p>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;break;}c[i>>2]=-64;r=c[i>>2]|0;l=g;return r|0;}else{c[c[j>>2]>>2]=0;c[(c[j>>2]|0)+4>>2]=c[k>>2];}}while(0);c[(c[j>>2]|0)+8>>2]=c[m>>2];c[(c[j>>2]|0)+12+10264>>2]=201326604;c[q>>2]=Bx(c[j>>2]|0,c[o>>2]|0)|0;if($q(c[q>>2]|0)|0){c[i>>2]=c[q>>2];r=c[i>>2]|0;l=g;return r|0;}else{c[i>>2]=0;r=c[i>>2]|0;l=g;return r|0;}return 0;}function Bx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=l;l=l+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;i=d;c[f>>2]=a;c[g>>2]=b;c[(c[f>>2]|0)+28724>>2]=0;c[(c[f>>2]|0)+28728>>2]=0;do{if((c[g>>2]|0)!=1){if((c[(c[f>>2]|0)+8>>2]|0)>>>0<8)if((c[g>>2]|0)==2){c[e>>2]=-30;break;}else{c[e>>2]=0;break;}c[h>>2]=hq(c[(c[f>>2]|0)+4>>2]|0)|0;if((c[h>>2]|0)!=-332356553){if((c[g>>2]|0)==2){c[e>>2]=-30;break;}else{c[e>>2]=0;break;}}else{b=hq((c[(c[f>>2]|0)+4>>2]|0)+4|0)|0;c[(c[f>>2]|0)+28724>>2]=b;c[i>>2]=ls((c[f>>2]|0)+12|0,c[(c[f>>2]|0)+4>>2]|0,c[(c[f>>2]|0)+8>>2]|0)|0;if($q(c[i>>2]|0)|0){c[e>>2]=-30;break;}else{c[(c[f>>2]|0)+28728>>2]=1;c[e>>2]=0;break;}}}else c[e>>2]=0;}while(0);l=d;return c[e>>2]|0;}function Cx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+32|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=a;c[g>>2]=b;b=c[f>>2]|0;f=c[g>>2]|0;c[e>>2]=c[5415];c[e+4>>2]=c[5416];c[e+8>>2]=c[5417];g=zx(b,f,0,0,e)|0;l=d;return g|0;}function Dx(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;g=_r(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,0,0,c[o>>2]|0)|0;l=h;return g|0;}function Ex(){var a=0,b=0,d=0;a=l;l=l+16|0;b=a;c[b>>2]=c[5412];c[b+4>>2]=c[5413];c[b+8>>2]=c[5414];d=Fx(b)|0;l=a;return d|0;}function Fx(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];a=Vp(d)|0;l=b;return a|0;}function Gx(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=Xp(c[d>>2]|0)|0;l=b;return a|0;}function Hx(){return 131075;}function Ix(){return 131072;}function Jx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+48|0;h=g+24|0;i=g+20|0;j=g+16|0;k=g+12|0;m=g+8|0;n=g+4|0;o=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;if(c[(c[j>>2]|0)+28956>>2]|0){c[i>>2]=-60;p=c[i>>2]|0;l=g;return p|0;}Yp(c[(c[j>>2]|0)+28948>>2]|0)|0;if((c[k>>2]|0)!=0&(c[m>>2]|0)>>>0>=8){f=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=(c[j>>2]|0)+28920|0;c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];o=zx(f,k,m,n,h)|0;c[(c[j>>2]|0)+28948>>2]=o;if(!(c[(c[j>>2]|0)+28948>>2]|0)){c[i>>2]=-64;p=c[i>>2]|0;l=g;return p|0;}}else c[(c[j>>2]|0)+28948>>2]=0;c[(c[j>>2]|0)+28952>>2]=c[(c[j>>2]|0)+28948>>2];c[i>>2]=0;p=c[i>>2]|0;l=g;return p|0;}function Kx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=Jx(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,0,0)|0;l=e;return d|0;}function Lx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[(c[g>>2]|0)+28956>>2]=0;c[j>>2]=Kx(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;if($q(c[j>>2]|0)|0){c[f>>2]=c[j>>2];k=c[f>>2]|0;l=e;return k|0;}else{c[f>>2]=5;k=c[f>>2]|0;l=e;return k|0;}return 0;}function Mx(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=Lx(c[d>>2]|0,0,0)|0;l=b;return a|0;}function Nx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=Mx(c[e>>2]|0)|0;c[(c[e>>2]|0)+28952>>2]=c[f>>2];l=d;return c[g>>2]|0;}function Ox(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+28956>>2]=1;c[(c[d>>2]|0)+28988>>2]=0;c[(c[d>>2]|0)+28984>>2]=0;c[(c[d>>2]|0)+28968>>2]=0;c[(c[d>>2]|0)+28992>>2]=0;c[(c[d>>2]|0)+29004>>2]=0;c[(c[d>>2]|0)+29008>>2]=0;l=b;return 5;}function Px(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+48|0;g=f+40|0;h=f+24|0;i=f+16|0;j=f+36|0;k=f+8|0;m=f;n=f+32|0;o=h;c[o>>2]=a;c[o+4>>2]=b;b=i;c[b>>2]=d;c[b+4>>2]=e;e=h;b=c[e+4>>2]|0;d=b>>>0<0|(b|0)==0&(c[e>>2]|0)>>>0<131072;e=h;b=c[e+4>>2]|0;b=d?c[e>>2]|0:131072;c[j>>2]=b;b=h;h=dE(c[b>>2]|0,c[b+4>>2]|0,c[j>>2]|0,0)|0;j=dE(h|0,y|0,16,0)|0;h=k;c[h>>2]=j;c[h+4>>2]=y;h=i;j=c[h+4>>2]|0;b=k;e=c[b+4>>2]|0;d=j>>>0<e>>>0|((j|0)==(e|0)?(c[h>>2]|0)>>>0<(c[b>>2]|0)>>>0:0);b=i;i=k;k=d?c[b+4>>2]|0:c[i+4>>2]|0;h=m;c[h>>2]=d?c[b>>2]|0:c[i>>2]|0;c[h+4>>2]=k;c[n>>2]=c[m>>2];k=m;if(0!=(c[k+4>>2]|0)?1:(c[n>>2]|0)!=(c[k>>2]|0)){c[g>>2]=-16;p=c[g>>2]|0;l=f;return p|0;}else{c[g>>2]=c[n>>2];p=c[g>>2]|0;l=f;return p|0;}return 0;}function Qx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;e=l;l=l+176|0;f=e+152|0;g=e+148|0;h=e+144|0;i=e+140|0;j=e+136|0;k=e+132|0;m=e+128|0;n=e+124|0;o=e+120|0;p=e+116|0;q=e+112|0;r=e+108|0;s=e+104|0;t=e+100|0;u=e+96|0;v=e+92|0;w=e+88|0;x=e+84|0;y=e+80|0;z=e+76|0;A=e+72|0;B=e+68|0;C=e+64|0;D=e+60|0;E=e+56|0;F=e+52|0;G=e+48|0;H=e+44|0;I=e+40|0;J=e+36|0;K=e+32|0;L=e+28|0;M=e+24|0;N=e+20|0;O=e+16|0;P=e+12|0;Q=e+8|0;R=e+4|0;S=e;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);c[m>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0);c[n>>2]=c[k>>2];c[o>>2]=(c[c[i>>2]>>2]|0)+(c[(c[i>>2]|0)+8>>2]|0);c[p>>2]=(c[c[i>>2]>>2]|0)+(c[(c[i>>2]|0)+4>>2]|0);c[q>>2]=c[o>>2];c[r>>2]=1;if((c[(c[j>>2]|0)+8>>2]|0)>>>0>(c[(c[j>>2]|0)+4>>2]|0)>>>0){c[g>>2]=-72;T=c[g>>2]|0;l=e;return T|0;}if((c[(c[i>>2]|0)+8>>2]|0)>>>0>(c[(c[i>>2]|0)+4>>2]|0)>>>0){c[g>>2]=-70;T=c[g>>2]|0;l=e;return T|0;}a:while(1){if(!(c[r>>2]|0)){U=98;break;}switch(c[(c[h>>2]|0)+28956>>2]|0){case 0:{Ox(c[h>>2]|0)|0;U=9;break;}case 1:{U=9;break;}case 2:{U=64;break;}case 3:{U=76;break;}case 4:{U=91;break;}default:{U=96;break a;}}do{if((U|0)==9){U=0;V=c[h>>2]|0;if(c[(c[h>>2]|0)+29004>>2]|0){U=10;break a;}c[t>>2]=qq(V+28752|0,(c[h>>2]|0)+160092|0,c[(c[h>>2]|0)+28992>>2]|0,c[(c[h>>2]|0)+28912>>2]|0)|0;if($q(c[t>>2]|0)|0){U=16;break a;}if(c[t>>2]|0){c[z>>2]=(c[t>>2]|0)-(c[(c[h>>2]|0)+28992>>2]|0);c[A>>2]=(c[m>>2]|0)-(c[n>>2]|0);if((c[z>>2]|0)>>>0>(c[A>>2]|0)>>>0){U=31;break a;}mE((c[h>>2]|0)+160092+(c[(c[h>>2]|0)+28992>>2]|0)|0,c[n>>2]|0,c[z>>2]|0)|0;c[(c[h>>2]|0)+28992>>2]=c[t>>2];c[n>>2]=(c[n>>2]|0)+(c[z>>2]|0);break;}d=(c[h>>2]|0)+28752|0;if((((c[d>>2]|0)!=0|(c[d+4>>2]|0)!=0?(d=(c[h>>2]|0)+28752+8|0,(c[d>>2]|0)!=0|(c[d+4>>2]|0)!=0):0)?(d=(c[h>>2]|0)+28752|0,b=c[d+4>>2]|0,0>b>>>0|(0==(b|0)?((c[p>>2]|0)-(c[q>>2]|0)|0)>>>0>=(c[d>>2]|0)>>>0:0)):0)?(c[B>>2]=_q(c[k>>2]|0,(c[m>>2]|0)-(c[k>>2]|0)|0)|0,(c[B>>2]|0)>>>0<=((c[m>>2]|0)-(c[k>>2]|0)|0)>>>0):0){c[C>>2]=Dx(c[h>>2]|0,c[q>>2]|0,(c[p>>2]|0)-(c[q>>2]|0)|0,c[k>>2]|0,c[B>>2]|0,c[(c[h>>2]|0)+28952>>2]|0)|0;if($q(c[C>>2]|0)|0){U=40;break a;}c[n>>2]=(c[k>>2]|0)+(c[B>>2]|0);c[q>>2]=(c[q>>2]|0)+(c[C>>2]|0);c[(c[h>>2]|0)+28744>>2]=0;c[(c[h>>2]|0)+28956>>2]=0;c[r>>2]=0;break;}c[D>>2]=cs(c[h>>2]|0,c[(c[h>>2]|0)+28952>>2]|0)|0;if($q(c[D>>2]|0)|0){U=43;break a;}d=((hq((c[h>>2]|0)+160092|0)|0)&-16|0)==407710288;b=c[h>>2]|0;if(d){d=hq(b+160092+4|0)|0;c[(c[h>>2]|0)+28744>>2]=d;c[(c[h>>2]|0)+28804>>2]=7;}else{c[E>>2]=fs(b,(c[h>>2]|0)+160092|0,c[(c[h>>2]|0)+28992>>2]|0)|0;if($q(c[E>>2]|0)|0){U=47;break a;}c[(c[h>>2]|0)+28744>>2]=3;c[(c[h>>2]|0)+28804>>2]=2;}b=(c[h>>2]|0)+28752+8|0;d=c[b+4>>2]|0;if(d>>>0>0|(d|0)==0&(c[b>>2]|0)>>>0>1024){b=(c[h>>2]|0)+28752+8|0;W=c[b>>2]|0;X=c[b+4>>2]|0;}else{W=1024;X=0;}b=(c[h>>2]|0)+28752+8|0;c[b>>2]=W;c[b+4>>2]=X;b=(c[h>>2]|0)+28752+8|0;d=c[b+4>>2]|0;if(d>>>0>0|((d|0)==0?(c[b>>2]|0)>>>0>(c[(c[h>>2]|0)+28972>>2]|0)>>>0:0)){U=52;break a;}if((c[(c[h>>2]|0)+28752+16>>2]|0)>>>0>4)Y=c[(c[h>>2]|0)+28752+16>>2]|0;else Y=4;c[F>>2]=Y;b=(c[h>>2]|0)+28752+8|0;d=(c[h>>2]|0)+28752|0;c[G>>2]=Px(c[b>>2]|0,c[b+4>>2]|0,c[d>>2]|0,c[d+4>>2]|0)|0;if(!((c[(c[h>>2]|0)+28964>>2]|0)>>>0>=(c[F>>2]|0)>>>0?(c[(c[h>>2]|0)+28980>>2]|0)>>>0>=(c[G>>2]|0)>>>0:0)){c[H>>2]=(c[F>>2]|0)+(c[G>>2]|0);if(c[(c[h>>2]|0)+28940>>2]|0){if((c[H>>2]|0)>>>0>((c[(c[h>>2]|0)+28940>>2]|0)-160112|0)>>>0){U=59;break a;}}else{d=c[(c[h>>2]|0)+28960>>2]|0;b=(c[h>>2]|0)+28920|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];Th(d,f);c[(c[h>>2]|0)+28964>>2]=0;c[(c[h>>2]|0)+28980>>2]=0;d=c[H>>2]|0;b=(c[h>>2]|0)+28920|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];b=Rh(d,f)|0;c[(c[h>>2]|0)+28960>>2]=b;if(!(c[(c[h>>2]|0)+28960>>2]|0)){U=61;break a;}}c[(c[h>>2]|0)+28964>>2]=c[F>>2];c[(c[h>>2]|0)+28976>>2]=(c[(c[h>>2]|0)+28960>>2]|0)+(c[(c[h>>2]|0)+28964>>2]|0);c[(c[h>>2]|0)+28980>>2]=c[G>>2];}c[(c[h>>2]|0)+28956>>2]=2;U=64;}}while(0);do{if((U|0)==64){U=0;c[I>>2]=vx(c[h>>2]|0)|0;if(!(c[I>>2]|0)){c[(c[h>>2]|0)+28956>>2]=0;c[r>>2]=0;break;}if(((c[m>>2]|0)-(c[n>>2]|0)|0)>>>0<(c[I>>2]|0)>>>0)if((c[n>>2]|0)==(c[m>>2]|0)){c[r>>2]=0;break;}else{c[(c[h>>2]|0)+28956>>2]=3;U=76;break;}c[J>>2]=Tx(c[h>>2]|0)|0;if(c[J>>2]|0)Z=0;else Z=(c[(c[h>>2]|0)+28980>>2]|0)-(c[(c[h>>2]|0)+28984>>2]|0)|0;c[K>>2]=xx(c[h>>2]|0,(c[(c[h>>2]|0)+28976>>2]|0)+(c[(c[h>>2]|0)+28984>>2]|0)|0,Z,c[n>>2]|0,c[I>>2]|0)|0;if($q(c[K>>2]|0)|0){U=70;break a;}c[n>>2]=(c[n>>2]|0)+(c[I>>2]|0);if((c[K>>2]|0)!=0|(c[J>>2]|0)!=0){c[(c[h>>2]|0)+28988>>2]=(c[(c[h>>2]|0)+28984>>2]|0)+(c[K>>2]|0);c[(c[h>>2]|0)+28956>>2]=4;}}}while(0);do{if((U|0)==76){U=0;c[L>>2]=vx(c[h>>2]|0)|0;c[M>>2]=(c[L>>2]|0)-(c[(c[h>>2]|0)+28968>>2]|0);c[N>>2]=Tx(c[h>>2]|0)|0;b=c[M>>2]|0;if(c[N>>2]|0){if(b>>>0<((c[m>>2]|0)-(c[n>>2]|0)|0)>>>0)_=c[M>>2]|0;else _=(c[m>>2]|0)-(c[n>>2]|0)|0;c[O>>2]=_;}else{if(b>>>0>((c[(c[h>>2]|0)+28964>>2]|0)-(c[(c[h>>2]|0)+28968>>2]|0)|0)>>>0){U=82;break a;}c[O>>2]=Ux((c[(c[h>>2]|0)+28960>>2]|0)+(c[(c[h>>2]|0)+28968>>2]|0)|0,c[M>>2]|0,c[n>>2]|0,(c[m>>2]|0)-(c[n>>2]|0)|0)|0;}c[n>>2]=(c[n>>2]|0)+(c[O>>2]|0);b=(c[h>>2]|0)+28968|0;c[b>>2]=(c[b>>2]|0)+(c[O>>2]|0);if((c[O>>2]|0)>>>0<(c[M>>2]|0)>>>0){c[r>>2]=0;break;}c[P>>2]=xx(c[h>>2]|0,(c[(c[h>>2]|0)+28976>>2]|0)+(c[(c[h>>2]|0)+28984>>2]|0)|0,(c[(c[h>>2]|0)+28980>>2]|0)-(c[(c[h>>2]|0)+28984>>2]|0)|0,c[(c[h>>2]|0)+28960>>2]|0,c[L>>2]|0)|0;if($q(c[P>>2]|0)|0){U=87;break a;}c[(c[h>>2]|0)+28968>>2]=0;b=c[h>>2]|0;if((c[P>>2]|0)!=0|(c[N>>2]|0)!=0){c[(c[h>>2]|0)+28988>>2]=(c[b+28984>>2]|0)+(c[P>>2]|0);c[(c[h>>2]|0)+28956>>2]=4;U=91;break;}else{c[b+28956>>2]=2;break;}}}while(0);do{if((U|0)==91){U=0;c[Q>>2]=(c[(c[h>>2]|0)+28988>>2]|0)-(c[(c[h>>2]|0)+28984>>2]|0);c[R>>2]=Ux(c[q>>2]|0,(c[p>>2]|0)-(c[q>>2]|0)|0,(c[(c[h>>2]|0)+28976>>2]|0)+(c[(c[h>>2]|0)+28984>>2]|0)|0,c[Q>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+(c[R>>2]|0);b=(c[h>>2]|0)+28984|0;c[b>>2]=(c[b>>2]|0)+(c[R>>2]|0);if((c[R>>2]|0)!=(c[Q>>2]|0)){c[r>>2]=0;break;}c[(c[h>>2]|0)+28956>>2]=2;b=(c[h>>2]|0)+28752|0;d=c[b+4>>2]|0;if(0<d>>>0|(0==(d|0)?(c[(c[h>>2]|0)+28980>>2]|0)>>>0<(c[b>>2]|0)>>>0:0)?((c[(c[h>>2]|0)+28984>>2]|0)+(c[(c[h>>2]|0)+28752+16>>2]|0)|0)>>>0>(c[(c[h>>2]|0)+28980>>2]|0)>>>0:0){c[(c[h>>2]|0)+28988>>2]=0;c[(c[h>>2]|0)+28984>>2]=0;}}}while(0);}switch(U|0){case 10:{if(c[V+28940>>2]|0){c[g>>2]=-64;T=c[g>>2]|0;l=e;return T|0;}c[s>>2]=Rx(c[(c[h>>2]|0)+28996>>2]|0,c[(c[h>>2]|0)+29004>>2]|0,c[i>>2]|0,c[j>>2]|0)|0;if(!(c[s>>2]|0))c[(c[h>>2]|0)+28956>>2]=0;c[g>>2]=c[s>>2];T=c[g>>2]|0;l=e;return T|0;}case 16:{c[u>>2]=iq(c[k>>2]|0,(c[m>>2]|0)-(c[k>>2]|0)|0)|0;if(!(c[u>>2]|0)){c[g>>2]=c[t>>2];T=c[g>>2]|0;l=e;return T|0;}if(c[(c[h>>2]|0)+28952>>2]|0)$=c[(c[(c[h>>2]|0)+28952>>2]|0)+4>>2]|0;else $=0;c[v>>2]=$;if(c[(c[h>>2]|0)+28952>>2]|0)aa=c[(c[(c[h>>2]|0)+28952>>2]|0)+8>>2]|0;else aa=0;c[w>>2]=aa;if(c[(c[h>>2]|0)+28940>>2]|0){c[g>>2]=-64;T=c[g>>2]|0;l=e;return T|0;}c[x>>2]=Sx((c[h>>2]|0)+28996|0,c[(c[h>>2]|0)+29e3>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0;if($q(c[x>>2]|0)|0){c[g>>2]=c[x>>2];T=c[g>>2]|0;l=e;return T|0;}x=c[u>>2]|0;c[(c[h>>2]|0)+29e3>>2]=x;c[(c[h>>2]|0)+29004>>2]=x;c[y>>2]=Rx(c[(c[h>>2]|0)+28996>>2]|0,c[u>>2]|0,c[i>>2]|0,c[j>>2]|0)|0;if(!(c[y>>2]|0))c[(c[h>>2]|0)+28956>>2]=0;c[g>>2]=c[y>>2];T=c[g>>2]|0;l=e;return T|0;}case 31:{if((c[A>>2]|0)>>>0>0){mE((c[h>>2]|0)+160092+(c[(c[h>>2]|0)+28992>>2]|0)|0,c[n>>2]|0,c[A>>2]|0)|0;y=(c[h>>2]|0)+28992|0;c[y>>2]=(c[y>>2]|0)+(c[A>>2]|0);}c[(c[j>>2]|0)+8>>2]=c[(c[j>>2]|0)+4>>2];c[g>>2]=(6>(c[t>>2]|0)>>>0?6:c[t>>2]|0)-(c[(c[h>>2]|0)+28992>>2]|0)+3;T=c[g>>2]|0;l=e;return T|0;}case 40:{c[g>>2]=c[C>>2];T=c[g>>2]|0;l=e;return T|0;}case 43:{c[g>>2]=c[D>>2];T=c[g>>2]|0;l=e;return T|0;}case 47:{c[g>>2]=c[E>>2];T=c[g>>2]|0;l=e;return T|0;}case 52:{c[g>>2]=-16;T=c[g>>2]|0;l=e;return T|0;}case 59:{c[g>>2]=-64;T=c[g>>2]|0;l=e;return T|0;}case 61:{c[g>>2]=-64;T=c[g>>2]|0;l=e;return T|0;}case 70:{c[g>>2]=c[K>>2];T=c[g>>2]|0;l=e;return T|0;}case 82:{c[g>>2]=-20;T=c[g>>2]|0;l=e;return T|0;}case 87:{c[g>>2]=c[P>>2];T=c[g>>2]|0;l=e;return T|0;}case 96:{c[g>>2]=-1;T=c[g>>2]|0;l=e;return T|0;}case 98:{P=(c[j>>2]|0)+8|0;c[P>>2]=(c[P>>2]|0)+((c[n>>2]|0)-(c[k>>2]|0));k=(c[i>>2]|0)+8|0;c[k>>2]=(c[k>>2]|0)+((c[q>>2]|0)-(c[o>>2]|0));c[S>>2]=vx(c[h>>2]|0)|0;o=c[h>>2]|0;if(c[S>>2]|0){q=((wx(o)|0)==2&1)*3|0;c[S>>2]=(c[S>>2]|0)+q;c[S>>2]=(c[S>>2]|0)-(c[(c[h>>2]|0)+28968>>2]|0);c[g>>2]=c[S>>2];T=c[g>>2]|0;l=e;return T|0;}S=(c[(c[h>>2]|0)+29008>>2]|0)!=0;if((c[o+28988>>2]|0)!=(c[(c[h>>2]|0)+28984>>2]|0)){if(!S){o=(c[j>>2]|0)+8|0;c[o>>2]=(c[o>>2]|0)+-1;c[(c[h>>2]|0)+29008>>2]=1;}c[g>>2]=1;T=c[g>>2]|0;l=e;return T|0;}do{if(S){if((c[(c[j>>2]|0)+8>>2]|0)>>>0<(c[(c[j>>2]|0)+4>>2]|0)>>>0){o=(c[j>>2]|0)+8|0;c[o>>2]=(c[o>>2]|0)+1;break;}c[(c[h>>2]|0)+28956>>2]=2;c[g>>2]=1;T=c[g>>2]|0;l=e;return T|0;}}while(0);c[g>>2]=0;T=c[g>>2]|0;l=e;return T|0;}}return 0;}function Rx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;f=l;l=l+128|0;g=f+112|0;h=f+108|0;i=f+104|0;j=f+100|0;k=f+96|0;m=f+92|0;n=f+88|0;o=f+84|0;p=f+80|0;q=f+76|0;r=f+72|0;s=f+68|0;t=f+64|0;u=f+60|0;v=f+56|0;w=f+52|0;x=f+48|0;y=f+44|0;z=f+40|0;A=f+36|0;B=f+32|0;C=f+28|0;D=f+24|0;E=f+20|0;F=f+16|0;G=f+12|0;H=f+8|0;I=f+4|0;J=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;switch(c[i>>2]|0){case 7:{c[E>>2]=c[h>>2];c[F>>2]=(c[c[k>>2]>>2]|0)+(c[(c[k>>2]|0)+8>>2]|0);c[G>>2]=(c[(c[k>>2]|0)+4>>2]|0)-(c[(c[k>>2]|0)+8>>2]|0);c[H>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);c[I>>2]=(c[(c[j>>2]|0)+4>>2]|0)-(c[(c[j>>2]|0)+8>>2]|0);c[J>>2]=jy(c[E>>2]|0,c[H>>2]|0,I,c[F>>2]|0,G)|0;F=(c[j>>2]|0)+8|0;c[F>>2]=(c[F>>2]|0)+(c[I>>2]|0);I=(c[k>>2]|0)+8|0;c[I>>2]=(c[I>>2]|0)+(c[G>>2]|0);c[g>>2]=c[J>>2];K=c[g>>2]|0;l=f;return K|0;}case 6:{c[y>>2]=c[h>>2];c[z>>2]=(c[c[k>>2]>>2]|0)+(c[(c[k>>2]|0)+8>>2]|0);c[A>>2]=(c[(c[k>>2]|0)+4>>2]|0)-(c[(c[k>>2]|0)+8>>2]|0);c[B>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);c[C>>2]=(c[(c[j>>2]|0)+4>>2]|0)-(c[(c[j>>2]|0)+8>>2]|0);c[D>>2]=iy(c[y>>2]|0,c[B>>2]|0,C,c[z>>2]|0,A)|0;z=(c[j>>2]|0)+8|0;c[z>>2]=(c[z>>2]|0)+(c[C>>2]|0);C=(c[k>>2]|0)+8|0;c[C>>2]=(c[C>>2]|0)+(c[A>>2]|0);c[g>>2]=c[D>>2];K=c[g>>2]|0;l=f;return K|0;}case 5:{c[s>>2]=c[h>>2];c[t>>2]=(c[c[k>>2]>>2]|0)+(c[(c[k>>2]|0)+8>>2]|0);c[u>>2]=(c[(c[k>>2]|0)+4>>2]|0)-(c[(c[k>>2]|0)+8>>2]|0);c[v>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);c[w>>2]=(c[(c[j>>2]|0)+4>>2]|0)-(c[(c[j>>2]|0)+8>>2]|0);c[x>>2]=hy(c[s>>2]|0,c[v>>2]|0,w,c[t>>2]|0,u)|0;t=(c[j>>2]|0)+8|0;c[t>>2]=(c[t>>2]|0)+(c[w>>2]|0);w=(c[k>>2]|0)+8|0;c[w>>2]=(c[w>>2]|0)+(c[u>>2]|0);c[g>>2]=c[x>>2];K=c[g>>2]|0;l=f;return K|0;}case 4:{c[m>>2]=c[h>>2];c[n>>2]=(c[c[k>>2]>>2]|0)+(c[(c[k>>2]|0)+8>>2]|0);c[o>>2]=(c[(c[k>>2]|0)+4>>2]|0)-(c[(c[k>>2]|0)+8>>2]|0);c[p>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);c[q>>2]=(c[(c[j>>2]|0)+4>>2]|0)-(c[(c[j>>2]|0)+8>>2]|0);c[r>>2]=gy(c[m>>2]|0,c[p>>2]|0,q,c[n>>2]|0,o)|0;n=(c[j>>2]|0)+8|0;c[n>>2]=(c[n>>2]|0)+(c[q>>2]|0);q=(c[k>>2]|0)+8|0;c[q>>2]=(c[q>>2]|0)+(c[o>>2]|0);c[g>>2]=c[r>>2];K=c[g>>2]|0;l=f;return K|0;}default:{c[g>>2]=-12;K=c[g>>2]|0;l=f;return K|0;}}return 0;}function Sx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;g=l;l=l+48|0;h=g+36|0;i=g+32|0;j=g+28|0;k=g+24|0;m=g+20|0;n=g+16|0;o=g+12|0;p=g+8|0;q=g+4|0;r=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if((c[j>>2]|0)!=(c[k>>2]|0))Zp(c[c[i>>2]>>2]|0,c[j>>2]|0)|0;switch(c[k>>2]|0){case 7:{if((c[j>>2]|0)!=(c[k>>2]|0))s=ay()|0;else s=c[c[i>>2]>>2]|0;c[r>>2]=s;if(!(c[r>>2]|0)){c[h>>2]=-64;t=c[h>>2]|0;l=g;return t|0;}else{by(c[r>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;c[c[i>>2]>>2]=c[r>>2];c[h>>2]=0;t=c[h>>2]|0;l=g;return t|0;}break;}case 6:{if((c[j>>2]|0)!=(c[k>>2]|0))u=_x()|0;else u=c[c[i>>2]>>2]|0;c[q>>2]=u;if(!(c[q>>2]|0)){c[h>>2]=-64;t=c[h>>2]|0;l=g;return t|0;}else{$x(c[q>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;c[c[i>>2]>>2]=c[q>>2];c[h>>2]=0;t=c[h>>2]|0;l=g;return t|0;}break;}case 5:{if((c[j>>2]|0)!=(c[k>>2]|0))v=Yx()|0;else v=c[c[i>>2]>>2]|0;c[p>>2]=v;if(!(c[p>>2]|0)){c[h>>2]=-64;t=c[h>>2]|0;l=g;return t|0;}else{Zx(c[p>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;c[c[i>>2]>>2]=c[p>>2];c[h>>2]=0;t=c[h>>2]|0;l=g;return t|0;}break;}case 4:{if((c[j>>2]|0)!=(c[k>>2]|0))w=Vx()|0;else w=c[c[i>>2]>>2]|0;c[o>>2]=w;if(!(c[o>>2]|0)){c[h>>2]=-64;t=c[h>>2]|0;l=g;return t|0;}else{Wx(c[o>>2]|0)|0;Xx(c[o>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;c[c[i>>2]>>2]=c[o>>2];c[h>>2]=0;t=c[h>>2]|0;l=g;return t|0;}break;}default:{c[h>>2]=0;t=c[h>>2]|0;l=g;return t|0;}}return 0;}function Tx(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[(c[d>>2]|0)+28804>>2]|0)==7|0;}function Ux(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?c[h>>2]|0:c[j>>2]|0;mE(c[g>>2]|0,c[i>>2]|0,c[k>>2]|0)|0;l=f;return c[k>>2]|0;}function Vx(){return fy()|0;}function Wx(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=ey(c[d>>2]|0)|0;l=b;return a|0;}function Xx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=dy(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;l=e;return d|0;}function Yx(){var a=0,b=0,d=0,e=0,f=0,g=0;a=l;l=l+16|0;b=a+4|0;d=a;c[d>>2]=Cy(96)|0;if(!(c[d>>2]|0)){c[b>>2]=0;e=c[b>>2]|0;l=a;return e|0;}else{f=c[d>>2]|0;g=f+96|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(g|0));f=ns()|0;c[c[d>>2]>>2]=f;c[(c[d>>2]|0)+80>>2]=0;c[b>>2]=c[d>>2];e=c[b>>2]|0;l=a;return e|0;}return 0;}function Zx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+80>>2]=1;c[(c[f>>2]|0)+72>>2]=0;c[(c[f>>2]|0)+68>>2]=0;c[(c[f>>2]|0)+56>>2]=0;c[(c[f>>2]|0)+76>>2]=0;d=Su(c[c[f>>2]>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;l=e;return d|0;}function _x(){var a=0,b=0,d=0,e=0,f=0,g=0;a=l;l=l+16|0;b=a+4|0;d=a;c[d>>2]=Cy(80)|0;if(!(c[d>>2]|0)){c[b>>2]=0;e=c[b>>2]|0;l=a;return e|0;}else{f=c[d>>2]|0;g=f+80|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(g|0));f=ps()|0;c[c[d>>2]>>2]=f;c[(c[d>>2]|0)+24>>2]=0;c[b>>2]=c[d>>2];e=c[b>>2]|0;l=a;return e|0;}return 0;}function $x(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+24>>2]=1;c[(c[f>>2]|0)+52>>2]=0;c[(c[f>>2]|0)+48>>2]=0;c[(c[f>>2]|0)+36>>2]=0;c[(c[f>>2]|0)+76>>2]=0;d=Jt(c[c[f>>2]>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;l=e;return d|0;}function ay(){var a=0,b=0,d=0;a=l;l=l+16|0;b=a;c[b>>2]=c[2988];c[b+4>>2]=c[2989];c[b+8>>2]=c[2990];d=cy(b)|0;l=a;return d|0;}function by(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+32>>2]=1;c[(c[f>>2]|0)+60>>2]=0;c[(c[f>>2]|0)+56>>2]=0;c[(c[f>>2]|0)+44>>2]=0;c[(c[f>>2]|0)+88>>2]=0;d=ts(c[c[f>>2]>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;l=e;return d|0;}function cy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+32|0;d=b+8|0;e=b+4|0;f=b;if((c[a>>2]|0)==0?(c[a+4>>2]|0)==0:0){c[a>>2]=c[2988];c[a+4>>2]=c[2989];c[a+8>>2]=c[2990];}if(c[a>>2]|0?c[a+4>>2]|0:0){c[f>>2]=qc[c[a>>2]&63](c[a+8>>2]|0,104)|0;if(!(c[f>>2]|0)){c[e>>2]=0;g=c[e>>2]|0;l=b;return g|0;}h=c[f>>2]|0;i=h+104|0;do{c[h>>2]=0;h=h+4|0;}while((h|0)<(i|0));h=(c[f>>2]|0)+92|0;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];a=Gt(d)|0;c[c[f>>2]>>2]=a;a=c[f>>2]|0;if(!(c[c[f>>2]>>2]|0)){bq(a)|0;c[e>>2]=0;g=c[e>>2]|0;l=b;return g|0;}else{c[a+32>>2]=0;c[e>>2]=c[f>>2];g=c[e>>2]|0;l=b;return g|0;}}c[e>>2]=0;g=c[e>>2]|0;l=b;return g|0;}function dy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+72>>2]=c[g>>2];c[(c[f>>2]|0)+76>>2]=c[h>>2];l=e;return 0;}function ey(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+80>>2]=1;c[(c[d>>2]|0)+76>>2]=0;c[(c[d>>2]|0)+64>>2]=0;c[(c[d>>2]|0)+60>>2]=0;c[(c[d>>2]|0)+48>>2]=0;c[(c[d>>2]|0)+68>>2]=0;a=kw(c[c[d>>2]>>2]|0)|0;l=b;return a|0;}function fy(){var a=0,b=0,d=0,e=0,f=0,g=0;a=l;l=l+16|0;b=a+4|0;d=a;c[d>>2]=Cy(96)|0;if(!(c[d>>2]|0)){c[b>>2]=0;e=c[b>>2]|0;l=a;return e|0;}else{f=c[d>>2]|0;g=f+96|0;do{c[f>>2]=0;f=f+4|0;}while((f|0)<(g|0));f=hw()|0;c[c[d>>2]>>2]=f;c[(c[d>>2]|0)+80>>2]=0;c[b>>2]=c[d>>2];e=c[b>>2]|0;l=a;return e|0;}return 0;}function gy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+16|0;i=g+12|0;j=g+8|0;k=g+4|0;m=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;f=uy(c[h>>2]|0,c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;l=g;return f|0;}function Ko(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;i=l;l=l+48|0;j=i+32|0;k=i+28|0;m=i+24|0;n=i+20|0;o=i+16|0;p=i+12|0;q=i+8|0;r=i+4|0;s=i;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;g=c[m>>2]|0;f=c[r>>2]|0;r=c[q>>2]|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[s>>2]=Jo(g,f,j,r,0)|0;if(wj(c[s>>2]|0)|0){c[k>>2]=c[s>>2];t=c[k>>2]|0;l=i;return t|0;}else{c[k>>2]=Bo(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;t=c[k>>2]|0;l=i;return t|0;}return 0;}function Lo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;h=l;l=l+48|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;g=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;c[i>>2]=c[2981];c[i+4>>2]=c[2982];c[i+8>>2]=c[2983];p=Ko(g,j,k,m,n,o,i)|0;l=h;return p|0;}function Mo(){var a=0,b=0,d=0;a=l;l=l+16|0;b=a;c[b>>2]=c[5406];c[b+4>>2]=c[5407];c[b+8>>2]=c[5408];d=No(b)|0;l=a;return d|0;}function No(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];a=nj(d)|0;l=b;return a|0;}function Oo(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=qj(c[d>>2]|0)|0;l=b;return a|0;}function Po(){return 131072;}function Qo(){return(lj(131072)|0)+3+4|0;}function Ro(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;j=l;l=l+144|0;k=j+40|0;m=j+32|0;n=j+28|0;o=j+24|0;p=j+20|0;q=j+16|0;r=j+12|0;s=j;t=j+8|0;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;c[r>>2]=f;f=s;c[f>>2]=h;c[f+4>>2]=i;i=c[n>>2]|0;f=c[o>>2]|0;o=c[p>>2]|0;p=c[q>>2]|0;q=c[r>>2]|0;r=s;h=c[r>>2]|0;e=c[r+4>>2]|0;r=k;d=g;g=r+104|0;do{c[r>>2]=c[d>>2];r=r+4|0;d=d+4|0;}while((r|0)<(g|0));c[t>>2]=xo(i,f,o,p,q,k,h,e,1)|0;if(wj(c[t>>2]|0)|0){c[m>>2]=c[t>>2];u=c[m>>2]|0;l=j;return u|0;}else{c[(c[n>>2]|0)+600>>2]=0;c[(c[n>>2]|0)+604>>2]=0;t=s;c[(c[n>>2]|0)+608>>2]=(c[(c[n>>2]|0)+232>>2]|0)+((0==(c[t+4>>2]|0)?(c[(c[n>>2]|0)+232>>2]|0)==(c[t>>2]|0):0)&1);c[(c[n>>2]|0)+624>>2]=0;c[(c[n>>2]|0)+620>>2]=0;c[(c[n>>2]|0)+628>>2]=1;c[(c[n>>2]|0)+632>>2]=0;c[m>>2]=0;u=c[m>>2]|0;l=j;return u|0;}return 0;}function So(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;i=l;l=l+192|0;j=i+88|0;k=i+52|0;m=i+80|0;n=i+48|0;o=i+44|0;p=i+40|0;q=i+36|0;r=i;s=i+8|0;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;e=r;c[e>>2]=g;c[e+4>>2]=h;if((c[o>>2]|0)!=0&(c[p>>2]|0)>>>0>=8){if(c[(c[n>>2]|0)+364>>2]|0){c[m>>2]=-64;t=c[m>>2]|0;l=i;return t|0;}rj(c[(c[n>>2]|0)+636>>2]|0)|0;h=c[o>>2]|0;o=c[p>>2]|0;p=f+4|0;e=(c[n>>2]|0)+352|0;c[k>>2]=c[p>>2];c[k+4>>2]=c[p+4>>2];c[k+8>>2]=c[p+8>>2];c[k+12>>2]=c[p+12>>2];c[k+16>>2]=c[p+16>>2];c[k+20>>2]=c[p+20>>2];c[k+24>>2]=c[p+24>>2];c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];e=zj(h,o,0,0,k,j)|0;c[(c[n>>2]|0)+636>>2]=e;c[(c[n>>2]|0)+640>>2]=c[(c[n>>2]|0)+636>>2];if(!(c[(c[n>>2]|0)+636>>2]|0)){c[m>>2]=-64;t=c[m>>2]|0;l=i;return t|0;}}else{if(c[q>>2]|0){e=f+4|0;Io(s,c[q>>2]|0);c[e>>2]=c[s>>2];c[e+4>>2]=c[s+4>>2];c[e+8>>2]=c[s+8>>2];c[e+12>>2]=c[s+12>>2];c[e+16>>2]=c[s+16>>2];c[e+20>>2]=c[s+20>>2];c[e+24>>2]=c[s+24>>2];}rj(c[(c[n>>2]|0)+636>>2]|0)|0;c[(c[n>>2]|0)+636>>2]=0;c[(c[n>>2]|0)+640>>2]=c[q>>2];}q=c[n>>2]|0;s=c[(c[n>>2]|0)+640>>2]|0;n=r;r=c[n>>2]|0;e=c[n+4>>2]|0;n=j;k=f;f=n+104|0;do{c[n>>2]=c[k>>2];n=n+4|0;k=k+4|0;}while((n|0)<(f|0));c[m>>2]=Ro(q,0,0,0,s,j,r,e)|0;t=c[m>>2]|0;l=i;return t|0;}function To(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+272|0;h=g+160|0;i=g+152|0;j=g+148|0;k=g+144|0;m=g;n=g+40|0;o=g+8|0;c[j>>2]=a;c[k>>2]=b;b=m;c[b>>2]=e;c[b+4>>2]=f;if(c[k>>2]|0){f=n;b=(c[j>>2]|0)+12|0;e=f+104|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0;}while((f|0)<(e|0));a=n+4|0;Io(o,c[k>>2]|0);c[a>>2]=c[o>>2];c[a+4>>2]=c[o+4>>2];c[a+8>>2]=c[o+8>>2];c[a+12>>2]=c[o+12>>2];c[a+16>>2]=c[o+16>>2];c[a+20>>2]=c[o+20>>2];c[a+24>>2]=c[o+24>>2];o=n+32|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];d=c[j>>2]|0;j=c[k>>2]|0;k=m;m=c[k>>2]|0;o=c[k+4>>2]|0;f=h;b=n;e=f+104|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0;}while((f|0)<(e|0));c[i>>2]=So(d,0,0,j,h,m,o)|0;p=c[i>>2]|0;l=g;return p|0;}else{c[i>>2]=-32;p=c[i>>2]|0;l=g;return p|0;}return 0;}function Uo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+32|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=a;c[g>>2]=b;b=c[f>>2]|0;f=c[g>>2]|0;c[e>>2]=c[5409];c[e+4>>2]=c[5410];c[e+8>>2]=c[5411];g=To(b,f,e,-1,-1)|0;l=d;return g|0;}function Vo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+384|0;g=f+280|0;h=f+168|0;i=f+272|0;j=f+160|0;k=f+8|0;m=f;n=f+120|0;o=f+16|0;c[i>>2]=a;c[j>>2]=b;b=k;c[b>>2]=d;c[b+4>>2]=e;e=k;b=(c[e>>2]|0)==0&(c[e+4>>2]|0)==0;e=k;k=b?-1:c[e+4>>2]|0;d=m;c[d>>2]=b?-1:c[e>>2]|0;c[d+4>>2]=k;k=m;Ao(n,c[j>>2]|0,c[k>>2]|0,c[k+4>>2]|0,0);k=h;j=(c[i>>2]|0)+12|0;d=k+104|0;do{c[k>>2]=c[j>>2];k=k+4|0;j=j+4|0;}while((k|0)<(d|0));k=g;j=n;d=k+40|0;do{c[k>>2]=c[j>>2];k=k+4|0;j=j+4|0;}while((k|0)<(d|0));zo(o,h,g);h=c[i>>2]|0;i=m;m=c[i>>2]|0;n=c[i+4>>2]|0;k=g;j=o;d=k+104|0;do{c[k>>2]=c[j>>2];k=k+4|0;j=j+4|0;}while((k|0)<(d|0));j=So(h,0,0,0,g,m,n)|0;l=f;return j|0;}function Wo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Vo(c[e>>2]|0,c[f>>2]|0,-1,-1)|0;l=d;return b|0;}function Xo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;f=l;l=l+96|0;g=f+88|0;h=f+84|0;i=f+80|0;j=f+76|0;k=f+72|0;m=f+68|0;n=f+64|0;o=f+60|0;p=f+56|0;q=f+52|0;r=f+48|0;s=f+44|0;t=f+40|0;u=f+36|0;v=f+32|0;w=f+28|0;x=f+24|0;y=f+20|0;z=f+16|0;A=f+12|0;B=f+8|0;C=f+4|0;D=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[c[j>>2]>>2];c[n>>2]=(c[m>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0);c[o>>2]=(c[m>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);c[p>>2]=c[c[i>>2]>>2];c[q>>2]=(c[p>>2]|0)+(c[(c[i>>2]|0)+4>>2]|0);c[r>>2]=(c[p>>2]|0)+(c[(c[i>>2]|0)+8>>2]|0);c[s>>2]=1;a:while(1){if(!(c[s>>2]|0)){E=39;break;}b:do{switch(c[(c[h>>2]|0)+628>>2]|0){case 0:{E=4;break a;break;}case 1:{if(((c[k>>2]|0)==2?(e=(c[q>>2]|0)-(c[r>>2]|0)|0,e>>>0>=(lj((c[n>>2]|0)-(c[o>>2]|0)|0)|0)>>>0):0)?(c[(c[h>>2]|0)+604>>2]|0)==0:0){c[t>>2]=Bo(c[h>>2]|0,c[r>>2]|0,(c[q>>2]|0)-(c[r>>2]|0)|0,c[o>>2]|0,(c[n>>2]|0)-(c[o>>2]|0)|0)|0;if(Ph(c[t>>2]|0)|0){E=9;break a;}c[o>>2]=c[n>>2];c[r>>2]=(c[r>>2]|0)+(c[t>>2]|0);c[(c[h>>2]|0)+632>>2]=1;jl(c[h>>2]|0);c[s>>2]=0;break b;}c[u>>2]=(c[(c[h>>2]|0)+608>>2]|0)-(c[(c[h>>2]|0)+604>>2]|0);c[v>>2]=Yo((c[(c[h>>2]|0)+592>>2]|0)+(c[(c[h>>2]|0)+604>>2]|0)|0,c[u>>2]|0,c[o>>2]|0,(c[n>>2]|0)-(c[o>>2]|0)|0)|0;e=(c[h>>2]|0)+604|0;c[e>>2]=(c[e>>2]|0)+(c[v>>2]|0);c[o>>2]=(c[o>>2]|0)+(c[v>>2]|0);if((c[k>>2]|0)==0?(c[(c[h>>2]|0)+604>>2]|0)>>>0<(c[(c[h>>2]|0)+608>>2]|0)>>>0:0){c[s>>2]=0;break b;}if((c[k>>2]|0)==1?(c[(c[h>>2]|0)+604>>2]|0)==(c[(c[h>>2]|0)+600>>2]|0):0){c[s>>2]=0;break b;}c[y>>2]=(c[(c[h>>2]|0)+604>>2]|0)-(c[(c[h>>2]|0)+600>>2]|0);c[z>>2]=(c[q>>2]|0)-(c[r>>2]|0);if((c[k>>2]|0)==2)F=(c[o>>2]|0)==(c[n>>2]|0);else F=0;c[A>>2]=F&1;if((c[z>>2]|0)>>>0>=(lj(c[y>>2]|0)|0)>>>0)c[w>>2]=c[r>>2];else{c[w>>2]=c[(c[h>>2]|0)+612>>2];c[z>>2]=c[(c[h>>2]|0)+616>>2];}e=c[h>>2]|0;d=c[w>>2]|0;b=c[z>>2]|0;a=(c[(c[h>>2]|0)+592>>2]|0)+(c[(c[h>>2]|0)+600>>2]|0)|0;G=c[y>>2]|0;if(c[A>>2]|0)H=Bo(e,d,b,a,G)|0;else H=vn(e,d,b,a,G)|0;c[x>>2]=H;if(Ph(c[x>>2]|0)|0){E=26;break a;}c[(c[h>>2]|0)+632>>2]=c[A>>2];c[(c[h>>2]|0)+608>>2]=(c[(c[h>>2]|0)+604>>2]|0)+(c[(c[h>>2]|0)+232>>2]|0);if((c[(c[h>>2]|0)+608>>2]|0)>>>0>(c[(c[h>>2]|0)+596>>2]|0)>>>0){c[(c[h>>2]|0)+604>>2]=0;c[(c[h>>2]|0)+608>>2]=c[(c[h>>2]|0)+232>>2];}c[(c[h>>2]|0)+600>>2]=c[(c[h>>2]|0)+604>>2];G=c[x>>2]|0;if((c[w>>2]|0)!=(c[r>>2]|0)){c[(c[h>>2]|0)+620>>2]=G;c[(c[h>>2]|0)+624>>2]=0;c[(c[h>>2]|0)+628>>2]=2;E=33;break b;}c[r>>2]=(c[r>>2]|0)+G;if(c[(c[h>>2]|0)+632>>2]|0){c[s>>2]=0;jl(c[h>>2]|0);}break;}case 2:{E=33;break;}default:{}}}while(0);do{if((E|0)==33){E=0;c[B>>2]=(c[(c[h>>2]|0)+620>>2]|0)-(c[(c[h>>2]|0)+624>>2]|0);c[C>>2]=Yo(c[r>>2]|0,(c[q>>2]|0)-(c[r>>2]|0)|0,(c[(c[h>>2]|0)+612>>2]|0)+(c[(c[h>>2]|0)+624>>2]|0)|0,c[B>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+(c[C>>2]|0);G=(c[h>>2]|0)+624|0;c[G>>2]=(c[G>>2]|0)+(c[C>>2]|0);if((c[B>>2]|0)!=(c[C>>2]|0)){c[s>>2]=0;break;}c[(c[h>>2]|0)+624>>2]=0;c[(c[h>>2]|0)+620>>2]=0;if(c[(c[h>>2]|0)+632>>2]|0){c[s>>2]=0;jl(c[h>>2]|0);break;}else{c[(c[h>>2]|0)+628>>2]=1;break;}}}while(0);}if((E|0)==4){c[g>>2]=-62;I=c[g>>2]|0;l=f;return I|0;}else if((E|0)==9){c[g>>2]=c[t>>2];I=c[g>>2]|0;l=f;return I|0;}else if((E|0)==26){c[g>>2]=c[x>>2];I=c[g>>2]|0;l=f;return I|0;}else if((E|0)==39){c[(c[j>>2]|0)+8>>2]=(c[o>>2]|0)-(c[m>>2]|0);c[(c[i>>2]|0)+8>>2]=(c[r>>2]|0)-(c[p>>2]|0);if(c[(c[h>>2]|0)+632>>2]|0){c[g>>2]=0;I=c[g>>2]|0;l=f;return I|0;}c[D>>2]=(c[(c[h>>2]|0)+608>>2]|0)-(c[(c[h>>2]|0)+604>>2]|0);if(!(c[D>>2]|0))c[D>>2]=c[(c[h>>2]|0)+232>>2];c[g>>2]=c[D>>2];I=c[g>>2]|0;l=f;return I|0;}return 0;}function Yo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?c[h>>2]|0:c[j>>2]|0;if(!(c[k>>2]|0)){m=c[k>>2]|0;l=f;return m|0;}mE(c[g>>2]|0,c[i>>2]|0,c[k>>2]|0)|0;m=c[k>>2]|0;l=f;return m|0;}function Zo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[(c[h>>2]|0)+8>>2]|0)>>>0>(c[(c[h>>2]|0)+4>>2]|0)>>>0){c[f>>2]=-1;j=c[f>>2]|0;l=e;return j|0;}if((c[(c[i>>2]|0)+8>>2]|0)>>>0>(c[(c[i>>2]|0)+4>>2]|0)>>>0){c[f>>2]=-1;j=c[f>>2]|0;l=e;return j|0;}else{c[f>>2]=Xo(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0,0)|0;j=c[f>>2]|0;l=e;return j|0;}return 0;}function _o(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;d=l;l=l+48|0;e=d+36|0;f=d+32|0;g=d+28|0;h=d+16|0;i=d+12|0;j=d+8|0;k=d+4|0;m=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;if((c[(c[g>>2]|0)+8>>2]|0)>>>0>(c[(c[g>>2]|0)+4>>2]|0)>>>0){c[e>>2]=-1;n=c[e>>2]|0;l=d;return n|0;}c[i>>2]=Xo(c[f>>2]|0,c[g>>2]|0,h,2)|0;if(wj(c[i>>2]|0)|0){c[e>>2]=c[i>>2];n=c[e>>2]|0;l=d;return n|0;}c[j>>2]=c[(c[f>>2]|0)+632>>2]|0?0:3;if(c[(c[f>>2]|0)+632>>2]|0)o=0;else o=c[(c[f>>2]|0)+116+32+4>>2]<<2;c[k>>2]=o;c[m>>2]=(c[(c[f>>2]|0)+620>>2]|0)-(c[(c[f>>2]|0)+624>>2]|0)+(c[j>>2]|0)+(c[k>>2]|0);c[e>>2]=c[m>>2];n=c[e>>2]|0;l=d;return n|0;}function $o(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;i=l;l=l+96|0;j=i+80|0;k=i+76|0;m=i+72|0;n=i+68|0;o=i+64|0;p=i+60|0;q=i+56|0;r=i+52|0;s=i+48|0;t=i+44|0;u=i+40|0;v=i+36|0;w=i+32|0;x=i+28|0;y=i+88|0;z=i+24|0;A=i+20|0;B=i+16|0;C=i+12|0;D=i+8|0;E=i+4|0;F=i;G=i+84|0;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=0;c[r>>2]=0;c[t>>2]=(c[k>>2]|0)+4;c[u>>2]=c[t>>2];c[x>>2]=0;c[v>>2]=(c[o>>2]|0)+(c[x>>2]<<2);c[x>>2]=(c[x>>2]|0)+16;c[w>>2]=(c[o>>2]|0)+(c[x>>2]<<2);c[x>>2]=(c[x>>2]|0)+64;if(c[x>>2]<<2>>>0>(c[p>>2]|0)>>>0){c[j>>2]=-44;H=c[j>>2]|0;l=i;return H|0;}c[s>>2]=fh(c[w>>2]|0,256,c[v>>2]|0,r,q,c[m>>2]|0,c[n>>2]|0)|0;if(ap(c[s>>2]|0)|0){c[j>>2]=c[s>>2];H=c[j>>2]|0;l=i;return H|0;}bp(y,c[k>>2]|0);if((c[q>>2]|0)>>>0>((d[y>>0]|0)+1|0)>>>0){c[j>>2]=-44;H=c[j>>2]|0;l=i;return H|0;}a[y+1>>0]=0;a[y+2>>0]=c[q>>2];n=c[k>>2]|0;a[n>>0]=a[y>>0]|0;a[n+1>>0]=a[y+1>>0]|0;a[n+2>>0]=a[y+2>>0]|0;a[n+3>>0]=a[y+3>>0]|0;c[A>>2]=0;c[z>>2]=1;while(1){if((c[z>>2]|0)>>>0>=((c[q>>2]|0)+1|0)>>>0)break;c[B>>2]=c[A>>2];c[A>>2]=(c[A>>2]|0)+(c[(c[v>>2]|0)+(c[z>>2]<<2)>>2]<<(c[z>>2]|0)-1);c[(c[v>>2]|0)+(c[z>>2]<<2)>>2]=c[B>>2];c[z>>2]=(c[z>>2]|0)+1;}c[C>>2]=0;while(1){if((c[C>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;c[D>>2]=d[(c[w>>2]|0)+(c[C>>2]|0)>>0];c[E>>2]=1<<c[D>>2]>>1;a[G>>0]=c[C>>2];a[G+1>>0]=(c[q>>2]|0)+1-(c[D>>2]|0);c[F>>2]=c[(c[v>>2]|0)+(c[D>>2]<<2)>>2];while(1){if((c[F>>2]|0)>>>0>=((c[(c[v>>2]|0)+(c[D>>2]<<2)>>2]|0)+(c[E>>2]|0)|0)>>>0)break;z=(c[u>>2]|0)+(c[F>>2]<<1)|0;a[z>>0]=a[G>>0]|0;a[z+1>>0]=a[G+1>>0]|0;c[F>>2]=(c[F>>2]|0)+1;}z=(c[v>>2]|0)+(c[D>>2]<<2)|0;c[z>>2]=(c[z>>2]|0)+(c[E>>2]|0);c[C>>2]=(c[C>>2]|0)+1;}c[j>>2]=c[s>>2];H=c[j>>2]|0;l=i;return H|0;}function ap(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function bp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=c[f>>2]|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;a[b>>0]=a[g>>0]|0;a[b+1>>0]=a[g+1>>0]|0;a[b+2>>0]=a[g+2>>0]|0;a[b+3>>0]=a[g+3>>0]|0;l=e;return;}function cp(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;g=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;if(c[p>>2]|0){c[i>>2]=dp(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}else{c[i>>2]=ep(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function dp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;i=l;l=l+224|0;j=i+204|0;k=i+200|0;m=i+196|0;n=i+192|0;o=i+217|0;p=i+188|0;q=i+184|0;r=i+180|0;s=i+176|0;t=i+216|0;u=i+172|0;v=i+168|0;w=i+164|0;x=i+160|0;y=i+215|0;z=i+156|0;A=i+152|0;B=i+148|0;C=i+144|0;D=i+214|0;E=i+140|0;F=i+136|0;G=i+132|0;H=i+128|0;I=i+213|0;J=i+124|0;K=i+120|0;L=i+116|0;M=i+112|0;N=i+212|0;O=i+108|0;P=i+104|0;Q=i+100|0;R=i+96|0;S=i+92|0;T=i+84|0;U=i+80|0;V=i+76|0;W=i+72|0;X=i+68|0;Y=i+64|0;Z=i+60|0;_=i+56|0;$=i+52|0;aa=i+48|0;ba=i+28|0;ca=i+208|0;da=i+24|0;ea=i+20|0;fa=i+16|0;ga=i+12|0;ha=i+8|0;ia=i+4|0;ja=i;c[fa>>2]=b;c[ga>>2]=e;c[ha>>2]=f;c[ia>>2]=g;c[ja>>2]=h;h=c[ga>>2]|0;ga=c[ha>>2]|0;ha=c[ia>>2]|0;ia=c[ja>>2]|0;c[U>>2]=c[fa>>2];c[V>>2]=h;c[W>>2]=ga;c[X>>2]=ha;c[Y>>2]=ia;c[Z>>2]=c[U>>2];c[_>>2]=(c[Z>>2]|0)+(c[V>>2]|0);c[$>>2]=(c[Y>>2]|0)+4;c[aa>>2]=c[$>>2];bp(ca,c[Y>>2]|0);c[da>>2]=d[ca+2>>0];c[ea>>2]=fp(ba,c[W>>2]|0,c[X>>2]|0)|0;if(ap(c[ea>>2]|0)|0){c[T>>2]=c[ea>>2];ka=c[T>>2]|0;l=i;return ka|0;}ea=c[_>>2]|0;_=c[aa>>2]|0;aa=c[da>>2]|0;c[O>>2]=c[Z>>2];c[P>>2]=ba;c[Q>>2]=ea;c[R>>2]=_;c[S>>2]=aa;c[i+88>>2]=c[O>>2];while(1){aa=(gp(c[P>>2]|0)|0)==0&1;if(!(aa&(c[O>>2]|0)>>>0<((c[Q>>2]|0)+-3|0)>>>0))break;if(hp()|0){aa=c[R>>2]|0;_=c[S>>2]|0;c[J>>2]=c[P>>2];c[K>>2]=aa;c[L>>2]=_;c[M>>2]=ip(c[J>>2]|0,c[L>>2]|0)|0;a[N>>0]=a[(c[K>>2]|0)+(c[M>>2]<<1)>>0]|0;jp(c[J>>2]|0,d[(c[K>>2]|0)+(c[M>>2]<<1)+1>>0]|0);_=a[N>>0]|0;aa=c[O>>2]|0;c[O>>2]=aa+1;a[aa>>0]=_;}hp()|0;_=c[R>>2]|0;aa=c[S>>2]|0;c[E>>2]=c[P>>2];c[F>>2]=_;c[G>>2]=aa;c[H>>2]=ip(c[E>>2]|0,c[G>>2]|0)|0;a[I>>0]=a[(c[F>>2]|0)+(c[H>>2]<<1)>>0]|0;jp(c[E>>2]|0,d[(c[F>>2]|0)+(c[H>>2]<<1)+1>>0]|0);aa=a[I>>0]|0;_=c[O>>2]|0;c[O>>2]=_+1;a[_>>0]=aa;if(hp()|0){aa=c[R>>2]|0;_=c[S>>2]|0;c[z>>2]=c[P>>2];c[A>>2]=aa;c[B>>2]=_;c[C>>2]=ip(c[z>>2]|0,c[B>>2]|0)|0;a[D>>0]=a[(c[A>>2]|0)+(c[C>>2]<<1)>>0]|0;jp(c[z>>2]|0,d[(c[A>>2]|0)+(c[C>>2]<<1)+1>>0]|0);_=a[D>>0]|0;aa=c[O>>2]|0;c[O>>2]=aa+1;a[aa>>0]=_;}_=c[R>>2]|0;aa=c[S>>2]|0;c[u>>2]=c[P>>2];c[v>>2]=_;c[w>>2]=aa;c[x>>2]=ip(c[u>>2]|0,c[w>>2]|0)|0;a[y>>0]=a[(c[v>>2]|0)+(c[x>>2]<<1)>>0]|0;jp(c[u>>2]|0,d[(c[v>>2]|0)+(c[x>>2]<<1)+1>>0]|0);aa=a[y>>0]|0;_=c[O>>2]|0;c[O>>2]=_+1;a[_>>0]=aa;}a:do{if(kp()|0)while(1){y=(gp(c[P>>2]|0)|0)==0&1;if(!(y&(c[O>>2]|0)>>>0<(c[Q>>2]|0)>>>0))break a;y=c[R>>2]|0;x=c[S>>2]|0;c[p>>2]=c[P>>2];c[q>>2]=y;c[r>>2]=x;c[s>>2]=ip(c[p>>2]|0,c[r>>2]|0)|0;a[t>>0]=a[(c[q>>2]|0)+(c[s>>2]<<1)>>0]|0;jp(c[p>>2]|0,d[(c[q>>2]|0)+(c[s>>2]<<1)+1>>0]|0);x=a[t>>0]|0;y=c[O>>2]|0;c[O>>2]=y+1;a[y>>0]=x;}}while(0);while(1){if((c[O>>2]|0)>>>0>=(c[Q>>2]|0)>>>0)break;t=c[R>>2]|0;s=c[S>>2]|0;c[j>>2]=c[P>>2];c[k>>2]=t;c[m>>2]=s;c[n>>2]=ip(c[j>>2]|0,c[m>>2]|0)|0;a[o>>0]=a[(c[k>>2]|0)+(c[n>>2]<<1)>>0]|0;jp(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<1)+1>>0]|0);s=a[o>>0]|0;t=c[O>>2]|0;c[O>>2]=t+1;a[t>>0]=s;}if(lp(ba)|0){c[T>>2]=c[V>>2];ka=c[T>>2]|0;l=i;return ka|0;}else{c[T>>2]=-20;ka=c[T>>2]|0;l=i;return ka|0;}return 0;}function ep(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;i=l;l=l+224|0;j=i+204|0;k=i+200|0;m=i+196|0;n=i+192|0;o=i+217|0;p=i+188|0;q=i+184|0;r=i+180|0;s=i+176|0;t=i+216|0;u=i+172|0;v=i+168|0;w=i+164|0;x=i+160|0;y=i+215|0;z=i+156|0;A=i+152|0;B=i+148|0;C=i+144|0;D=i+214|0;E=i+140|0;F=i+136|0;G=i+132|0;H=i+128|0;I=i+213|0;J=i+124|0;K=i+120|0;L=i+116|0;M=i+112|0;N=i+212|0;O=i+108|0;P=i+104|0;Q=i+100|0;R=i+96|0;S=i+92|0;T=i+84|0;U=i+80|0;V=i+76|0;W=i+72|0;X=i+68|0;Y=i+64|0;Z=i+60|0;_=i+56|0;$=i+52|0;aa=i+48|0;ba=i+28|0;ca=i+208|0;da=i+24|0;ea=i+20|0;fa=i+16|0;ga=i+12|0;ha=i+8|0;ia=i+4|0;ja=i;c[fa>>2]=b;c[ga>>2]=e;c[ha>>2]=f;c[ia>>2]=g;c[ja>>2]=h;h=c[ga>>2]|0;ga=c[ha>>2]|0;ha=c[ia>>2]|0;ia=c[ja>>2]|0;c[U>>2]=c[fa>>2];c[V>>2]=h;c[W>>2]=ga;c[X>>2]=ha;c[Y>>2]=ia;c[Z>>2]=c[U>>2];c[_>>2]=(c[Z>>2]|0)+(c[V>>2]|0);c[$>>2]=(c[Y>>2]|0)+4;c[aa>>2]=c[$>>2];bp(ca,c[Y>>2]|0);c[da>>2]=d[ca+2>>0];c[ea>>2]=fp(ba,c[W>>2]|0,c[X>>2]|0)|0;if(ap(c[ea>>2]|0)|0){c[T>>2]=c[ea>>2];ka=c[T>>2]|0;l=i;return ka|0;}ea=c[_>>2]|0;_=c[aa>>2]|0;aa=c[da>>2]|0;c[O>>2]=c[Z>>2];c[P>>2]=ba;c[Q>>2]=ea;c[R>>2]=_;c[S>>2]=aa;c[i+88>>2]=c[O>>2];while(1){aa=(gp(c[P>>2]|0)|0)==0&1;if(!(aa&(c[O>>2]|0)>>>0<((c[Q>>2]|0)+-3|0)>>>0))break;if(hp()|0){aa=c[R>>2]|0;_=c[S>>2]|0;c[J>>2]=c[P>>2];c[K>>2]=aa;c[L>>2]=_;c[M>>2]=ip(c[J>>2]|0,c[L>>2]|0)|0;a[N>>0]=a[(c[K>>2]|0)+(c[M>>2]<<1)>>0]|0;jp(c[J>>2]|0,d[(c[K>>2]|0)+(c[M>>2]<<1)+1>>0]|0);_=a[N>>0]|0;aa=c[O>>2]|0;c[O>>2]=aa+1;a[aa>>0]=_;}hp()|0;_=c[R>>2]|0;aa=c[S>>2]|0;c[E>>2]=c[P>>2];c[F>>2]=_;c[G>>2]=aa;c[H>>2]=ip(c[E>>2]|0,c[G>>2]|0)|0;a[I>>0]=a[(c[F>>2]|0)+(c[H>>2]<<1)>>0]|0;jp(c[E>>2]|0,d[(c[F>>2]|0)+(c[H>>2]<<1)+1>>0]|0);aa=a[I>>0]|0;_=c[O>>2]|0;c[O>>2]=_+1;a[_>>0]=aa;if(hp()|0){aa=c[R>>2]|0;_=c[S>>2]|0;c[z>>2]=c[P>>2];c[A>>2]=aa;c[B>>2]=_;c[C>>2]=ip(c[z>>2]|0,c[B>>2]|0)|0;a[D>>0]=a[(c[A>>2]|0)+(c[C>>2]<<1)>>0]|0;jp(c[z>>2]|0,d[(c[A>>2]|0)+(c[C>>2]<<1)+1>>0]|0);_=a[D>>0]|0;aa=c[O>>2]|0;c[O>>2]=aa+1;a[aa>>0]=_;}_=c[R>>2]|0;aa=c[S>>2]|0;c[u>>2]=c[P>>2];c[v>>2]=_;c[w>>2]=aa;c[x>>2]=ip(c[u>>2]|0,c[w>>2]|0)|0;a[y>>0]=a[(c[v>>2]|0)+(c[x>>2]<<1)>>0]|0;jp(c[u>>2]|0,d[(c[v>>2]|0)+(c[x>>2]<<1)+1>>0]|0);aa=a[y>>0]|0;_=c[O>>2]|0;c[O>>2]=_+1;a[_>>0]=aa;}a:do{if(kp()|0)while(1){y=(gp(c[P>>2]|0)|0)==0&1;if(!(y&(c[O>>2]|0)>>>0<(c[Q>>2]|0)>>>0))break a;y=c[R>>2]|0;x=c[S>>2]|0;c[p>>2]=c[P>>2];c[q>>2]=y;c[r>>2]=x;c[s>>2]=ip(c[p>>2]|0,c[r>>2]|0)|0;a[t>>0]=a[(c[q>>2]|0)+(c[s>>2]<<1)>>0]|0;jp(c[p>>2]|0,d[(c[q>>2]|0)+(c[s>>2]<<1)+1>>0]|0);x=a[t>>0]|0;y=c[O>>2]|0;c[O>>2]=y+1;a[y>>0]=x;}}while(0);while(1){if((c[O>>2]|0)>>>0>=(c[Q>>2]|0)>>>0)break;t=c[R>>2]|0;s=c[S>>2]|0;c[j>>2]=c[P>>2];c[k>>2]=t;c[m>>2]=s;c[n>>2]=ip(c[j>>2]|0,c[m>>2]|0)|0;a[o>>0]=a[(c[k>>2]|0)+(c[n>>2]<<1)>>0]|0;jp(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<1)+1>>0]|0);s=a[o>>0]|0;t=c[O>>2]|0;c[O>>2]=t+1;a[t>>0]=s;}if(lp(ba)|0){c[T>>2]=c[V>>2];ka=c[T>>2]|0;l=i;return ka|0;}else{c[T>>2]=-20;ka=c[T>>2]|0;l=i;return ka|0;}return 0;}function fp(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+17|0;n=g+16|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;if((c[k>>2]|0)>>>0<1){f=c[i>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[h>>2]=-72;o=c[h>>2]|0;l=g;return o|0;}c[(c[i>>2]|0)+12>>2]=c[j>>2];c[(c[i>>2]|0)+16>>2]=(c[(c[i>>2]|0)+12>>2]|0)+4;do{if((c[k>>2]|0)>>>0>=4){c[(c[i>>2]|0)+8>>2]=(c[j>>2]|0)+(c[k>>2]|0)+-4;f=mp(c[(c[i>>2]|0)+8>>2]|0)|0;c[c[i>>2]>>2]=f;a[m>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[m>>0]|0|0)p=8-(up(d[m>>0]|0)|0)|0;else p=0;c[(c[i>>2]|0)+4>>2]=p;if(!(d[m>>0]|0)){c[h>>2]=-1;o=c[h>>2]|0;l=g;return o|0;}}else{c[(c[i>>2]|0)+8>>2]=c[(c[i>>2]|0)+12>>2];c[c[i>>2]>>2]=d[c[(c[i>>2]|0)+12>>2]>>0];switch(c[k>>2]|0){case 7:{f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+6>>0]|0)<<16);q=10;break;}case 6:{q=10;break;}case 5:{q=11;break;}case 4:{q=12;break;}case 3:{q=13;break;}case 2:{q=14;break;}default:{}}if((q|0)==10){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+5>>0]|0)<<8);q=11;}if((q|0)==11){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+4>>0]|0)<<0);q=12;}if((q|0)==12){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+3>>0]|0)<<24);q=13;}if((q|0)==13){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+2>>0]|0)<<16);q=14;}if((q|0)==14){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+1>>0]|0)<<8);}a[n>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[n>>0]|0|0)r=8-(up(d[n>>0]|0)|0)|0;else r=0;c[(c[i>>2]|0)+4>>2]=r;if(d[n>>0]|0|0){f=(c[i>>2]|0)+4|0;c[f>>2]=(c[f>>2]|0)+(4-(c[k>>2]|0)<<3);break;}c[h>>2]=-20;o=c[h>>2]|0;l=g;return o|0;}}while(0);c[h>>2]=c[k>>2];o=c[h>>2]|0;l=g;return o|0;}function gp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[(c[e>>2]|0)+4>>2]|0)>>>0>32){c[d>>2]=3;h=c[d>>2]|0;l=b;return h|0;}a=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){i=(c[e>>2]|0)+8|0;c[i>>2]=(c[i>>2]|0)+(0-((c[a+4>>2]|0)>>>3));i=(c[e>>2]|0)+4|0;c[i>>2]=c[i>>2]&7;i=mp(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=i;c[d>>2]=0;h=c[d>>2]|0;l=b;return h|0;}i=c[(c[e>>2]|0)+4>>2]|0;if((c[a+8>>2]|0)!=(c[(c[e>>2]|0)+12>>2]|0)){c[f>>2]=i>>>3;c[g>>2]=0;if(((c[(c[e>>2]|0)+8>>2]|0)+(0-(c[f>>2]|0))|0)>>>0<(c[(c[e>>2]|0)+12>>2]|0)>>>0){c[f>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0);c[g>>2]=1;}a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(0-(c[f>>2]|0));a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[f>>2]<<3);f=mp(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=f;c[d>>2]=c[g>>2];h=c[d>>2]|0;l=b;return h|0;}if(i>>>0<32){c[d>>2]=1;h=c[d>>2]|0;l=b;return h|0;}else{c[d>>2]=2;h=c[d>>2]|0;l=b;return h|0;}return 0;}function hp(){return 0;}function ip(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>(32-(c[f>>2]|0)&31)|0;}function jp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(c[e>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(c[f>>2]|0);l=d;return;}function kp(){return 1;}function lp(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;c[d>>2]=a;if((c[(c[d>>2]|0)+8>>2]|0)!=(c[(c[d>>2]|0)+12>>2]|0)){e=0;f=e&1;l=b;return f|0;}e=(c[(c[d>>2]|0)+4>>2]|0)==32;f=e&1;l=b;return f|0;}function mp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(kp()|0)!=0;f=c[e>>2]|0;if(a){c[d>>2]=np(f)|0;g=c[d>>2]|0;l=b;return g|0;}else{a=op(f)|0;c[d>>2]=a;g=c[d>>2]|0;l=b;return g|0;}return 0;}function np(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(pp()|0)!=0;f=sp(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=tp(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function op(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(pp()|0)!=0;f=qp(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=rp(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function pp(){return d[11936]|0|0;}function qp(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function rp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function sp(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function tp(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function up(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function vp(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;g=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;if(c[p>>2]|0){c[i>>2]=wp(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}else{c[i>>2]=xp(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function wp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0;i=l;l=l+1024|0;j=i+968|0;k=i+964|0;m=i+960|0;n=i+956|0;o=i+1015|0;p=i+952|0;q=i+948|0;r=i+944|0;s=i+940|0;t=i+1014|0;u=i+936|0;v=i+932|0;w=i+928|0;x=i+924|0;y=i+1013|0;z=i+920|0;A=i+916|0;B=i+912|0;C=i+908|0;D=i+1012|0;E=i+904|0;F=i+900|0;G=i+896|0;H=i+892|0;I=i+1011|0;J=i+888|0;K=i+884|0;L=i+880|0;M=i+876|0;N=i+1010|0;O=i+872|0;P=i+868|0;Q=i+864|0;R=i+860|0;S=i+856|0;T=i+852|0;U=i+848|0;V=i+844|0;W=i+840|0;X=i+836|0;Y=i+1009|0;Z=i+832|0;_=i+828|0;$=i+824|0;aa=i+820|0;ba=i+1008|0;ca=i+816|0;da=i+812|0;ea=i+808|0;fa=i+804|0;ga=i+1007|0;ha=i+800|0;ia=i+796|0;ja=i+792|0;ka=i+788|0;la=i+1006|0;ma=i+784|0;na=i+780|0;oa=i+776|0;pa=i+772|0;qa=i+1005|0;ra=i+768|0;sa=i+764|0;ta=i+760|0;ua=i+756|0;va=i+1004|0;wa=i+752|0;xa=i+748|0;ya=i+744|0;za=i+740|0;Aa=i+736|0;Ba=i+732|0;Ca=i+728|0;Da=i+724|0;Ea=i+720|0;Fa=i+716|0;Ga=i+1003|0;Ha=i+712|0;Ia=i+708|0;Ja=i+704|0;Ka=i+700|0;La=i+1002|0;Ma=i+696|0;Na=i+692|0;Oa=i+688|0;Pa=i+684|0;Qa=i+1001|0;Ra=i+680|0;Sa=i+676|0;Ta=i+672|0;Ua=i+668|0;Va=i+1e3|0;Wa=i+664|0;Xa=i+660|0;Ya=i+656|0;Za=i+652|0;_a=i+999|0;$a=i+648|0;ab=i+644|0;bb=i+640|0;cb=i+636|0;db=i+998|0;eb=i+632|0;fb=i+628|0;gb=i+624|0;hb=i+620|0;ib=i+616|0;jb=i+612|0;kb=i+608|0;lb=i+604|0;mb=i+600|0;nb=i+596|0;ob=i+997|0;pb=i+592|0;qb=i+588|0;rb=i+584|0;sb=i+580|0;tb=i+996|0;ub=i+576|0;vb=i+572|0;wb=i+568|0;xb=i+564|0;yb=i+995|0;zb=i+560|0;Ab=i+556|0;Bb=i+552|0;Cb=i+548|0;Db=i+994|0;Eb=i+544|0;Fb=i+540|0;Gb=i+536|0;Hb=i+532|0;Ib=i+993|0;Jb=i+528|0;Kb=i+524|0;Lb=i+520|0;Mb=i+516|0;Nb=i+992|0;Ob=i+512|0;Pb=i+508|0;Qb=i+504|0;Rb=i+500|0;Sb=i+496|0;Tb=i+492|0;Ub=i+488|0;Vb=i+484|0;Wb=i+480|0;Xb=i+476|0;Yb=i+991|0;Zb=i+472|0;_b=i+468|0;$b=i+464|0;ac=i+460|0;bc=i+990|0;cc=i+456|0;dc=i+452|0;ec=i+448|0;fc=i+444|0;gc=i+989|0;hc=i+440|0;ic=i+436|0;jc=i+432|0;kc=i+428|0;lc=i+988|0;mc=i+424|0;nc=i+420|0;oc=i+416|0;pc=i+412|0;qc=i+987|0;rc=i+408|0;sc=i+404|0;tc=i+400|0;uc=i+396|0;vc=i+986|0;wc=i+392|0;xc=i+388|0;yc=i+384|0;zc=i+380|0;Ac=i+985|0;Bc=i+376|0;Cc=i+372|0;Dc=i+368|0;Ec=i+364|0;Fc=i+984|0;Gc=i+360|0;Hc=i+356|0;Ic=i+352|0;Jc=i+348|0;Kc=i+983|0;Lc=i+344|0;Mc=i+340|0;Nc=i+336|0;Oc=i+332|0;Pc=i+982|0;Qc=i+328|0;Rc=i+324|0;Sc=i+320|0;Tc=i+316|0;Uc=i+981|0;Vc=i+312|0;Wc=i+308|0;Xc=i+304|0;Yc=i+300|0;Zc=i+980|0;_c=i+296|0;$c=i+292|0;ad=i+288|0;bd=i+284|0;cd=i+979|0;dd=i+280|0;ed=i+276|0;fd=i+272|0;gd=i+268|0;hd=i+978|0;id=i+264|0;jd=i+260|0;kd=i+256|0;ld=i+252|0;md=i+977|0;nd=i+248|0;od=i+244|0;pd=i+240|0;qd=i+236|0;rd=i+976|0;sd=i+232|0;td=i+228|0;ud=i+224|0;vd=i+220|0;wd=i+216|0;xd=i+212|0;yd=i+208|0;zd=i+204|0;Ad=i+200|0;Bd=i+196|0;Cd=i+192|0;Dd=i+172|0;Ed=i+152|0;Fd=i+132|0;Gd=i+112|0;Hd=i+108|0;Id=i+104|0;Jd=i+100|0;Kd=i+96|0;Ld=i+92|0;Md=i+88|0;Nd=i+84|0;Od=i+80|0;Pd=i+76|0;Qd=i+72|0;Rd=i+68|0;Sd=i+64|0;Td=i+60|0;Ud=i+56|0;Vd=i+52|0;Wd=i+48|0;Xd=i+44|0;Yd=i+972|0;Zd=i+40|0;_d=i+36|0;$d=i+32|0;ae=i+28|0;be=i+24|0;ce=i+20|0;de=i+16|0;ee=i+12|0;fe=i+8|0;ge=i+4|0;he=i;c[de>>2]=b;c[ee>>2]=e;c[fe>>2]=f;c[ge>>2]=g;c[he>>2]=h;h=c[ee>>2]|0;ee=c[fe>>2]|0;fe=c[ge>>2]|0;ge=c[he>>2]|0;c[td>>2]=c[de>>2];c[ud>>2]=h;c[vd>>2]=ee;c[wd>>2]=fe;c[xd>>2]=ge;if((c[wd>>2]|0)>>>0<10){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}c[yd>>2]=c[vd>>2];c[zd>>2]=c[td>>2];c[Ad>>2]=(c[zd>>2]|0)+(c[ud>>2]|0);c[Bd>>2]=(c[xd>>2]|0)+4;c[Cd>>2]=c[Bd>>2];c[Hd>>2]=(yp(c[yd>>2]|0)|0)&65535;c[Id>>2]=(yp((c[yd>>2]|0)+2|0)|0)&65535;c[Jd>>2]=(yp((c[yd>>2]|0)+4|0)|0)&65535;c[Kd>>2]=(c[wd>>2]|0)-((c[Hd>>2]|0)+(c[Id>>2]|0)+(c[Jd>>2]|0)+6);c[Ld>>2]=(c[yd>>2]|0)+6;c[Md>>2]=(c[Ld>>2]|0)+(c[Hd>>2]|0);c[Nd>>2]=(c[Md>>2]|0)+(c[Id>>2]|0);c[Od>>2]=(c[Nd>>2]|0)+(c[Jd>>2]|0);c[Pd>>2]=(((c[ud>>2]|0)+3|0)>>>0)/4|0;c[Qd>>2]=(c[zd>>2]|0)+(c[Pd>>2]|0);c[Rd>>2]=(c[Qd>>2]|0)+(c[Pd>>2]|0);c[Sd>>2]=(c[Rd>>2]|0)+(c[Pd>>2]|0);c[Td>>2]=c[zd>>2];c[Ud>>2]=c[Qd>>2];c[Vd>>2]=c[Rd>>2];c[Wd>>2]=c[Sd>>2];c[Xd>>2]=0;bp(Yd,c[xd>>2]|0);c[Zd>>2]=d[Yd+2>>0];if((c[Kd>>2]|0)>>>0>(c[wd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}c[_d>>2]=fp(Dd,c[Ld>>2]|0,c[Hd>>2]|0)|0;if(ap(c[_d>>2]|0)|0){c[sd>>2]=c[_d>>2];ie=c[sd>>2]|0;l=i;return ie|0;}c[$d>>2]=fp(Ed,c[Md>>2]|0,c[Id>>2]|0)|0;if(ap(c[$d>>2]|0)|0){c[sd>>2]=c[$d>>2];ie=c[sd>>2]|0;l=i;return ie|0;}c[ae>>2]=fp(Fd,c[Nd>>2]|0,c[Jd>>2]|0)|0;if(ap(c[ae>>2]|0)|0){c[sd>>2]=c[ae>>2];ie=c[sd>>2]|0;l=i;return ie|0;}c[be>>2]=fp(Gd,c[Od>>2]|0,c[Kd>>2]|0)|0;if(ap(c[be>>2]|0)|0){c[sd>>2]=c[be>>2];ie=c[sd>>2]|0;l=i;return ie|0;}be=gp(Dd)|0;Kd=be|(gp(Ed)|0);be=Kd|(gp(Fd)|0);c[Xd>>2]=be|(gp(Gd)|0);while(1){if(c[Xd>>2]|0)break;if((c[Wd>>2]|0)>>>0>=((c[Ad>>2]|0)+-3|0)>>>0)break;if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[nd>>2]=Dd;c[od>>2]=be;c[pd>>2]=Kd;c[qd>>2]=ip(c[nd>>2]|0,c[pd>>2]|0)|0;a[rd>>0]=a[(c[od>>2]|0)+(c[qd>>2]<<1)>>0]|0;jp(c[nd>>2]|0,d[(c[od>>2]|0)+(c[qd>>2]<<1)+1>>0]|0);Kd=a[rd>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[id>>2]=Ed;c[jd>>2]=Kd;c[kd>>2]=be;c[ld>>2]=ip(c[id>>2]|0,c[kd>>2]|0)|0;a[md>>0]=a[(c[jd>>2]|0)+(c[ld>>2]<<1)>>0]|0;jp(c[id>>2]|0,d[(c[jd>>2]|0)+(c[ld>>2]<<1)+1>>0]|0);be=a[md>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;}if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[dd>>2]=Fd;c[ed>>2]=be;c[fd>>2]=Kd;c[gd>>2]=ip(c[dd>>2]|0,c[fd>>2]|0)|0;a[hd>>0]=a[(c[ed>>2]|0)+(c[gd>>2]<<1)>>0]|0;jp(c[dd>>2]|0,d[(c[ed>>2]|0)+(c[gd>>2]<<1)+1>>0]|0);Kd=a[hd>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[_c>>2]=Gd;c[$c>>2]=Kd;c[ad>>2]=be;c[bd>>2]=ip(c[_c>>2]|0,c[ad>>2]|0)|0;a[cd>>0]=a[(c[$c>>2]|0)+(c[bd>>2]<<1)>>0]|0;jp(c[_c>>2]|0,d[(c[$c>>2]|0)+(c[bd>>2]<<1)+1>>0]|0);be=a[cd>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;}hp()|0;be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Vc>>2]=Dd;c[Wc>>2]=be;c[Xc>>2]=Kd;c[Yc>>2]=ip(c[Vc>>2]|0,c[Xc>>2]|0)|0;a[Zc>>0]=a[(c[Wc>>2]|0)+(c[Yc>>2]<<1)>>0]|0;jp(c[Vc>>2]|0,d[(c[Wc>>2]|0)+(c[Yc>>2]<<1)+1>>0]|0);Kd=a[Zc>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;hp()|0;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[Qc>>2]=Ed;c[Rc>>2]=Kd;c[Sc>>2]=be;c[Tc>>2]=ip(c[Qc>>2]|0,c[Sc>>2]|0)|0;a[Uc>>0]=a[(c[Rc>>2]|0)+(c[Tc>>2]<<1)>>0]|0;jp(c[Qc>>2]|0,d[(c[Rc>>2]|0)+(c[Tc>>2]<<1)+1>>0]|0);be=a[Uc>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;hp()|0;be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Lc>>2]=Fd;c[Mc>>2]=be;c[Nc>>2]=Kd;c[Oc>>2]=ip(c[Lc>>2]|0,c[Nc>>2]|0)|0;a[Pc>>0]=a[(c[Mc>>2]|0)+(c[Oc>>2]<<1)>>0]|0;jp(c[Lc>>2]|0,d[(c[Mc>>2]|0)+(c[Oc>>2]<<1)+1>>0]|0);Kd=a[Pc>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;hp()|0;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[Gc>>2]=Gd;c[Hc>>2]=Kd;c[Ic>>2]=be;c[Jc>>2]=ip(c[Gc>>2]|0,c[Ic>>2]|0)|0;a[Kc>>0]=a[(c[Hc>>2]|0)+(c[Jc>>2]<<1)>>0]|0;jp(c[Gc>>2]|0,d[(c[Hc>>2]|0)+(c[Jc>>2]<<1)+1>>0]|0);be=a[Kc>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Bc>>2]=Dd;c[Cc>>2]=be;c[Dc>>2]=Kd;c[Ec>>2]=ip(c[Bc>>2]|0,c[Dc>>2]|0)|0;a[Fc>>0]=a[(c[Cc>>2]|0)+(c[Ec>>2]<<1)>>0]|0;jp(c[Bc>>2]|0,d[(c[Cc>>2]|0)+(c[Ec>>2]<<1)+1>>0]|0);Kd=a[Fc>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[wc>>2]=Ed;c[xc>>2]=Kd;c[yc>>2]=be;c[zc>>2]=ip(c[wc>>2]|0,c[yc>>2]|0)|0;a[Ac>>0]=a[(c[xc>>2]|0)+(c[zc>>2]<<1)>>0]|0;jp(c[wc>>2]|0,d[(c[xc>>2]|0)+(c[zc>>2]<<1)+1>>0]|0);be=a[Ac>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;}if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[rc>>2]=Fd;c[sc>>2]=be;c[tc>>2]=Kd;c[uc>>2]=ip(c[rc>>2]|0,c[tc>>2]|0)|0;a[vc>>0]=a[(c[sc>>2]|0)+(c[uc>>2]<<1)>>0]|0;jp(c[rc>>2]|0,d[(c[sc>>2]|0)+(c[uc>>2]<<1)+1>>0]|0);Kd=a[vc>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[mc>>2]=Gd;c[nc>>2]=Kd;c[oc>>2]=be;c[pc>>2]=ip(c[mc>>2]|0,c[oc>>2]|0)|0;a[qc>>0]=a[(c[nc>>2]|0)+(c[pc>>2]<<1)>>0]|0;jp(c[mc>>2]|0,d[(c[nc>>2]|0)+(c[pc>>2]<<1)+1>>0]|0);be=a[qc>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;}be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[hc>>2]=Dd;c[ic>>2]=be;c[jc>>2]=Kd;c[kc>>2]=ip(c[hc>>2]|0,c[jc>>2]|0)|0;a[lc>>0]=a[(c[ic>>2]|0)+(c[kc>>2]<<1)>>0]|0;jp(c[hc>>2]|0,d[(c[ic>>2]|0)+(c[kc>>2]<<1)+1>>0]|0);Kd=a[lc>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[cc>>2]=Ed;c[dc>>2]=Kd;c[ec>>2]=be;c[fc>>2]=ip(c[cc>>2]|0,c[ec>>2]|0)|0;a[gc>>0]=a[(c[dc>>2]|0)+(c[fc>>2]<<1)>>0]|0;jp(c[cc>>2]|0,d[(c[dc>>2]|0)+(c[fc>>2]<<1)+1>>0]|0);be=a[gc>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Zb>>2]=Fd;c[_b>>2]=be;c[$b>>2]=Kd;c[ac>>2]=ip(c[Zb>>2]|0,c[$b>>2]|0)|0;a[bc>>0]=a[(c[_b>>2]|0)+(c[ac>>2]<<1)>>0]|0;jp(c[Zb>>2]|0,d[(c[_b>>2]|0)+(c[ac>>2]<<1)+1>>0]|0);Kd=a[bc>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[Ub>>2]=Gd;c[Vb>>2]=Kd;c[Wb>>2]=be;c[Xb>>2]=ip(c[Ub>>2]|0,c[Wb>>2]|0)|0;a[Yb>>0]=a[(c[Vb>>2]|0)+(c[Xb>>2]<<1)>>0]|0;jp(c[Ub>>2]|0,d[(c[Vb>>2]|0)+(c[Xb>>2]<<1)+1>>0]|0);be=a[Yb>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;gp(Dd)|0;gp(Ed)|0;gp(Fd)|0;gp(Gd)|0;}if((c[Td>>2]|0)>>>0>(c[Qd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}if((c[Ud>>2]|0)>>>0>(c[Rd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}if((c[Vd>>2]|0)>>>0>(c[Sd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}Yb=c[Qd>>2]|0;Qd=c[Cd>>2]|0;Xb=c[Zd>>2]|0;c[Ob>>2]=c[Td>>2];c[Pb>>2]=Dd;c[Qb>>2]=Yb;c[Rb>>2]=Qd;c[Sb>>2]=Xb;c[Tb>>2]=c[Ob>>2];while(1){Tb=(gp(c[Pb>>2]|0)|0)==0&1;if(!(Tb&(c[Ob>>2]|0)>>>0<((c[Qb>>2]|0)+-3|0)>>>0))break;if(hp()|0){Tb=c[Rb>>2]|0;Xb=c[Sb>>2]|0;c[Jb>>2]=c[Pb>>2];c[Kb>>2]=Tb;c[Lb>>2]=Xb;c[Mb>>2]=ip(c[Jb>>2]|0,c[Lb>>2]|0)|0;a[Nb>>0]=a[(c[Kb>>2]|0)+(c[Mb>>2]<<1)>>0]|0;jp(c[Jb>>2]|0,d[(c[Kb>>2]|0)+(c[Mb>>2]<<1)+1>>0]|0);Xb=a[Nb>>0]|0;Tb=c[Ob>>2]|0;c[Ob>>2]=Tb+1;a[Tb>>0]=Xb;}hp()|0;Xb=c[Rb>>2]|0;Tb=c[Sb>>2]|0;c[Eb>>2]=c[Pb>>2];c[Fb>>2]=Xb;c[Gb>>2]=Tb;c[Hb>>2]=ip(c[Eb>>2]|0,c[Gb>>2]|0)|0;a[Ib>>0]=a[(c[Fb>>2]|0)+(c[Hb>>2]<<1)>>0]|0;jp(c[Eb>>2]|0,d[(c[Fb>>2]|0)+(c[Hb>>2]<<1)+1>>0]|0);Tb=a[Ib>>0]|0;Xb=c[Ob>>2]|0;c[Ob>>2]=Xb+1;a[Xb>>0]=Tb;if(hp()|0){Tb=c[Rb>>2]|0;Xb=c[Sb>>2]|0;c[zb>>2]=c[Pb>>2];c[Ab>>2]=Tb;c[Bb>>2]=Xb;c[Cb>>2]=ip(c[zb>>2]|0,c[Bb>>2]|0)|0;a[Db>>0]=a[(c[Ab>>2]|0)+(c[Cb>>2]<<1)>>0]|0;jp(c[zb>>2]|0,d[(c[Ab>>2]|0)+(c[Cb>>2]<<1)+1>>0]|0);Xb=a[Db>>0]|0;Tb=c[Ob>>2]|0;c[Ob>>2]=Tb+1;a[Tb>>0]=Xb;}Xb=c[Rb>>2]|0;Tb=c[Sb>>2]|0;c[ub>>2]=c[Pb>>2];c[vb>>2]=Xb;c[wb>>2]=Tb;c[xb>>2]=ip(c[ub>>2]|0,c[wb>>2]|0)|0;a[yb>>0]=a[(c[vb>>2]|0)+(c[xb>>2]<<1)>>0]|0;jp(c[ub>>2]|0,d[(c[vb>>2]|0)+(c[xb>>2]<<1)+1>>0]|0);Tb=a[yb>>0]|0;Xb=c[Ob>>2]|0;c[Ob>>2]=Xb+1;a[Xb>>0]=Tb;}a:do{if(kp()|0)while(1){yb=(gp(c[Pb>>2]|0)|0)==0&1;if(!(yb&(c[Ob>>2]|0)>>>0<(c[Qb>>2]|0)>>>0))break a;yb=c[Rb>>2]|0;xb=c[Sb>>2]|0;c[pb>>2]=c[Pb>>2];c[qb>>2]=yb;c[rb>>2]=xb;c[sb>>2]=ip(c[pb>>2]|0,c[rb>>2]|0)|0;a[tb>>0]=a[(c[qb>>2]|0)+(c[sb>>2]<<1)>>0]|0;jp(c[pb>>2]|0,d[(c[qb>>2]|0)+(c[sb>>2]<<1)+1>>0]|0);xb=a[tb>>0]|0;yb=c[Ob>>2]|0;c[Ob>>2]=yb+1;a[yb>>0]=xb;}}while(0);while(1){if((c[Ob>>2]|0)>>>0>=(c[Qb>>2]|0)>>>0)break;tb=c[Rb>>2]|0;sb=c[Sb>>2]|0;c[kb>>2]=c[Pb>>2];c[lb>>2]=tb;c[mb>>2]=sb;c[nb>>2]=ip(c[kb>>2]|0,c[mb>>2]|0)|0;a[ob>>0]=a[(c[lb>>2]|0)+(c[nb>>2]<<1)>>0]|0;jp(c[kb>>2]|0,d[(c[lb>>2]|0)+(c[nb>>2]<<1)+1>>0]|0);sb=a[ob>>0]|0;tb=c[Ob>>2]|0;c[Ob>>2]=tb+1;a[tb>>0]=sb;}Ob=c[Rd>>2]|0;Rd=c[Cd>>2]|0;ob=c[Zd>>2]|0;c[eb>>2]=c[Ud>>2];c[fb>>2]=Ed;c[gb>>2]=Ob;c[hb>>2]=Rd;c[ib>>2]=ob;c[jb>>2]=c[eb>>2];while(1){jb=(gp(c[fb>>2]|0)|0)==0&1;if(!(jb&(c[eb>>2]|0)>>>0<((c[gb>>2]|0)+-3|0)>>>0))break;if(hp()|0){jb=c[hb>>2]|0;ob=c[ib>>2]|0;c[$a>>2]=c[fb>>2];c[ab>>2]=jb;c[bb>>2]=ob;c[cb>>2]=ip(c[$a>>2]|0,c[bb>>2]|0)|0;a[db>>0]=a[(c[ab>>2]|0)+(c[cb>>2]<<1)>>0]|0;jp(c[$a>>2]|0,d[(c[ab>>2]|0)+(c[cb>>2]<<1)+1>>0]|0);ob=a[db>>0]|0;jb=c[eb>>2]|0;c[eb>>2]=jb+1;a[jb>>0]=ob;}hp()|0;ob=c[hb>>2]|0;jb=c[ib>>2]|0;c[Wa>>2]=c[fb>>2];c[Xa>>2]=ob;c[Ya>>2]=jb;c[Za>>2]=ip(c[Wa>>2]|0,c[Ya>>2]|0)|0;a[_a>>0]=a[(c[Xa>>2]|0)+(c[Za>>2]<<1)>>0]|0;jp(c[Wa>>2]|0,d[(c[Xa>>2]|0)+(c[Za>>2]<<1)+1>>0]|0);jb=a[_a>>0]|0;ob=c[eb>>2]|0;c[eb>>2]=ob+1;a[ob>>0]=jb;if(hp()|0){jb=c[hb>>2]|0;ob=c[ib>>2]|0;c[Ra>>2]=c[fb>>2];c[Sa>>2]=jb;c[Ta>>2]=ob;c[Ua>>2]=ip(c[Ra>>2]|0,c[Ta>>2]|0)|0;a[Va>>0]=a[(c[Sa>>2]|0)+(c[Ua>>2]<<1)>>0]|0;jp(c[Ra>>2]|0,d[(c[Sa>>2]|0)+(c[Ua>>2]<<1)+1>>0]|0);ob=a[Va>>0]|0;jb=c[eb>>2]|0;c[eb>>2]=jb+1;a[jb>>0]=ob;}ob=c[hb>>2]|0;jb=c[ib>>2]|0;c[Ma>>2]=c[fb>>2];c[Na>>2]=ob;c[Oa>>2]=jb;c[Pa>>2]=ip(c[Ma>>2]|0,c[Oa>>2]|0)|0;a[Qa>>0]=a[(c[Na>>2]|0)+(c[Pa>>2]<<1)>>0]|0;jp(c[Ma>>2]|0,d[(c[Na>>2]|0)+(c[Pa>>2]<<1)+1>>0]|0);jb=a[Qa>>0]|0;ob=c[eb>>2]|0;c[eb>>2]=ob+1;a[ob>>0]=jb;}b:do{if(kp()|0)while(1){Qa=(gp(c[fb>>2]|0)|0)==0&1;if(!(Qa&(c[eb>>2]|0)>>>0<(c[gb>>2]|0)>>>0))break b;Qa=c[hb>>2]|0;Pa=c[ib>>2]|0;c[Ha>>2]=c[fb>>2];c[Ia>>2]=Qa;c[Ja>>2]=Pa;c[Ka>>2]=ip(c[Ha>>2]|0,c[Ja>>2]|0)|0;a[La>>0]=a[(c[Ia>>2]|0)+(c[Ka>>2]<<1)>>0]|0;jp(c[Ha>>2]|0,d[(c[Ia>>2]|0)+(c[Ka>>2]<<1)+1>>0]|0);Pa=a[La>>0]|0;Qa=c[eb>>2]|0;c[eb>>2]=Qa+1;a[Qa>>0]=Pa;}}while(0);while(1){if((c[eb>>2]|0)>>>0>=(c[gb>>2]|0)>>>0)break;La=c[hb>>2]|0;Ka=c[ib>>2]|0;c[Ca>>2]=c[fb>>2];c[Da>>2]=La;c[Ea>>2]=Ka;c[Fa>>2]=ip(c[Ca>>2]|0,c[Ea>>2]|0)|0;a[Ga>>0]=a[(c[Da>>2]|0)+(c[Fa>>2]<<1)>>0]|0;jp(c[Ca>>2]|0,d[(c[Da>>2]|0)+(c[Fa>>2]<<1)+1>>0]|0);Ka=a[Ga>>0]|0;La=c[eb>>2]|0;c[eb>>2]=La+1;a[La>>0]=Ka;}eb=c[Sd>>2]|0;Sd=c[Cd>>2]|0;Ga=c[Zd>>2]|0;c[wa>>2]=c[Vd>>2];c[xa>>2]=Fd;c[ya>>2]=eb;c[za>>2]=Sd;c[Aa>>2]=Ga;c[Ba>>2]=c[wa>>2];while(1){Ba=(gp(c[xa>>2]|0)|0)==0&1;if(!(Ba&(c[wa>>2]|0)>>>0<((c[ya>>2]|0)+-3|0)>>>0))break;if(hp()|0){Ba=c[za>>2]|0;Ga=c[Aa>>2]|0;c[ra>>2]=c[xa>>2];c[sa>>2]=Ba;c[ta>>2]=Ga;c[ua>>2]=ip(c[ra>>2]|0,c[ta>>2]|0)|0;a[va>>0]=a[(c[sa>>2]|0)+(c[ua>>2]<<1)>>0]|0;jp(c[ra>>2]|0,d[(c[sa>>2]|0)+(c[ua>>2]<<1)+1>>0]|0);Ga=a[va>>0]|0;Ba=c[wa>>2]|0;c[wa>>2]=Ba+1;a[Ba>>0]=Ga;}hp()|0;Ga=c[za>>2]|0;Ba=c[Aa>>2]|0;c[ma>>2]=c[xa>>2];c[na>>2]=Ga;c[oa>>2]=Ba;c[pa>>2]=ip(c[ma>>2]|0,c[oa>>2]|0)|0;a[qa>>0]=a[(c[na>>2]|0)+(c[pa>>2]<<1)>>0]|0;jp(c[ma>>2]|0,d[(c[na>>2]|0)+(c[pa>>2]<<1)+1>>0]|0);Ba=a[qa>>0]|0;Ga=c[wa>>2]|0;c[wa>>2]=Ga+1;a[Ga>>0]=Ba;if(hp()|0){Ba=c[za>>2]|0;Ga=c[Aa>>2]|0;c[ha>>2]=c[xa>>2];c[ia>>2]=Ba;c[ja>>2]=Ga;c[ka>>2]=ip(c[ha>>2]|0,c[ja>>2]|0)|0;a[la>>0]=a[(c[ia>>2]|0)+(c[ka>>2]<<1)>>0]|0;jp(c[ha>>2]|0,d[(c[ia>>2]|0)+(c[ka>>2]<<1)+1>>0]|0);Ga=a[la>>0]|0;Ba=c[wa>>2]|0;c[wa>>2]=Ba+1;a[Ba>>0]=Ga;}Ga=c[za>>2]|0;Ba=c[Aa>>2]|0;c[ca>>2]=c[xa>>2];c[da>>2]=Ga;c[ea>>2]=Ba;c[fa>>2]=ip(c[ca>>2]|0,c[ea>>2]|0)|0;a[ga>>0]=a[(c[da>>2]|0)+(c[fa>>2]<<1)>>0]|0;jp(c[ca>>2]|0,d[(c[da>>2]|0)+(c[fa>>2]<<1)+1>>0]|0);Ba=a[ga>>0]|0;Ga=c[wa>>2]|0;c[wa>>2]=Ga+1;a[Ga>>0]=Ba;}c:do{if(kp()|0)while(1){ga=(gp(c[xa>>2]|0)|0)==0&1;if(!(ga&(c[wa>>2]|0)>>>0<(c[ya>>2]|0)>>>0))break c;ga=c[za>>2]|0;fa=c[Aa>>2]|0;c[Z>>2]=c[xa>>2];c[_>>2]=ga;c[$>>2]=fa;c[aa>>2]=ip(c[Z>>2]|0,c[$>>2]|0)|0;a[ba>>0]=a[(c[_>>2]|0)+(c[aa>>2]<<1)>>0]|0;jp(c[Z>>2]|0,d[(c[_>>2]|0)+(c[aa>>2]<<1)+1>>0]|0);fa=a[ba>>0]|0;ga=c[wa>>2]|0;c[wa>>2]=ga+1;a[ga>>0]=fa;}}while(0);while(1){if((c[wa>>2]|0)>>>0>=(c[ya>>2]|0)>>>0)break;ba=c[za>>2]|0;aa=c[Aa>>2]|0;c[U>>2]=c[xa>>2];c[V>>2]=ba;c[W>>2]=aa;c[X>>2]=ip(c[U>>2]|0,c[W>>2]|0)|0;a[Y>>0]=a[(c[V>>2]|0)+(c[X>>2]<<1)>>0]|0;jp(c[U>>2]|0,d[(c[V>>2]|0)+(c[X>>2]<<1)+1>>0]|0);aa=a[Y>>0]|0;ba=c[wa>>2]|0;c[wa>>2]=ba+1;a[ba>>0]=aa;}wa=c[Ad>>2]|0;Ad=c[Cd>>2]|0;Cd=c[Zd>>2]|0;c[O>>2]=c[Wd>>2];c[P>>2]=Gd;c[Q>>2]=wa;c[R>>2]=Ad;c[S>>2]=Cd;c[T>>2]=c[O>>2];while(1){T=(gp(c[P>>2]|0)|0)==0&1;if(!(T&(c[O>>2]|0)>>>0<((c[Q>>2]|0)+-3|0)>>>0))break;if(hp()|0){T=c[R>>2]|0;Cd=c[S>>2]|0;c[J>>2]=c[P>>2];c[K>>2]=T;c[L>>2]=Cd;c[M>>2]=ip(c[J>>2]|0,c[L>>2]|0)|0;a[N>>0]=a[(c[K>>2]|0)+(c[M>>2]<<1)>>0]|0;jp(c[J>>2]|0,d[(c[K>>2]|0)+(c[M>>2]<<1)+1>>0]|0);Cd=a[N>>0]|0;T=c[O>>2]|0;c[O>>2]=T+1;a[T>>0]=Cd;}hp()|0;Cd=c[R>>2]|0;T=c[S>>2]|0;c[E>>2]=c[P>>2];c[F>>2]=Cd;c[G>>2]=T;c[H>>2]=ip(c[E>>2]|0,c[G>>2]|0)|0;a[I>>0]=a[(c[F>>2]|0)+(c[H>>2]<<1)>>0]|0;jp(c[E>>2]|0,d[(c[F>>2]|0)+(c[H>>2]<<1)+1>>0]|0);T=a[I>>0]|0;Cd=c[O>>2]|0;c[O>>2]=Cd+1;a[Cd>>0]=T;if(hp()|0){T=c[R>>2]|0;Cd=c[S>>2]|0;c[z>>2]=c[P>>2];c[A>>2]=T;c[B>>2]=Cd;c[C>>2]=ip(c[z>>2]|0,c[B>>2]|0)|0;a[D>>0]=a[(c[A>>2]|0)+(c[C>>2]<<1)>>0]|0;jp(c[z>>2]|0,d[(c[A>>2]|0)+(c[C>>2]<<1)+1>>0]|0);Cd=a[D>>0]|0;T=c[O>>2]|0;c[O>>2]=T+1;a[T>>0]=Cd;}Cd=c[R>>2]|0;T=c[S>>2]|0;c[u>>2]=c[P>>2];c[v>>2]=Cd;c[w>>2]=T;c[x>>2]=ip(c[u>>2]|0,c[w>>2]|0)|0;a[y>>0]=a[(c[v>>2]|0)+(c[x>>2]<<1)>>0]|0;jp(c[u>>2]|0,d[(c[v>>2]|0)+(c[x>>2]<<1)+1>>0]|0);T=a[y>>0]|0;Cd=c[O>>2]|0;c[O>>2]=Cd+1;a[Cd>>0]=T;}d:do{if(kp()|0)while(1){y=(gp(c[P>>2]|0)|0)==0&1;if(!(y&(c[O>>2]|0)>>>0<(c[Q>>2]|0)>>>0))break d;y=c[R>>2]|0;x=c[S>>2]|0;c[p>>2]=c[P>>2];c[q>>2]=y;c[r>>2]=x;c[s>>2]=ip(c[p>>2]|0,c[r>>2]|0)|0;a[t>>0]=a[(c[q>>2]|0)+(c[s>>2]<<1)>>0]|0;jp(c[p>>2]|0,d[(c[q>>2]|0)+(c[s>>2]<<1)+1>>0]|0);x=a[t>>0]|0;y=c[O>>2]|0;c[O>>2]=y+1;a[y>>0]=x;}}while(0);while(1){if((c[O>>2]|0)>>>0>=(c[Q>>2]|0)>>>0)break;t=c[R>>2]|0;s=c[S>>2]|0;c[j>>2]=c[P>>2];c[k>>2]=t;c[m>>2]=s;c[n>>2]=ip(c[j>>2]|0,c[m>>2]|0)|0;a[o>>0]=a[(c[k>>2]|0)+(c[n>>2]<<1)>>0]|0;jp(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<1)+1>>0]|0);s=a[o>>0]|0;t=c[O>>2]|0;c[O>>2]=t+1;a[t>>0]=s;}O=lp(Dd)|0;Dd=O&(lp(Ed)|0);Ed=Dd&(lp(Fd)|0);c[ce>>2]=Ed&(lp(Gd)|0);if(c[ce>>2]|0){c[sd>>2]=c[ud>>2];ie=c[sd>>2]|0;l=i;return ie|0;}else{c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}return 0;}function xp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0;i=l;l=l+1024|0;j=i+968|0;k=i+964|0;m=i+960|0;n=i+956|0;o=i+1015|0;p=i+952|0;q=i+948|0;r=i+944|0;s=i+940|0;t=i+1014|0;u=i+936|0;v=i+932|0;w=i+928|0;x=i+924|0;y=i+1013|0;z=i+920|0;A=i+916|0;B=i+912|0;C=i+908|0;D=i+1012|0;E=i+904|0;F=i+900|0;G=i+896|0;H=i+892|0;I=i+1011|0;J=i+888|0;K=i+884|0;L=i+880|0;M=i+876|0;N=i+1010|0;O=i+872|0;P=i+868|0;Q=i+864|0;R=i+860|0;S=i+856|0;T=i+852|0;U=i+848|0;V=i+844|0;W=i+840|0;X=i+836|0;Y=i+1009|0;Z=i+832|0;_=i+828|0;$=i+824|0;aa=i+820|0;ba=i+1008|0;ca=i+816|0;da=i+812|0;ea=i+808|0;fa=i+804|0;ga=i+1007|0;ha=i+800|0;ia=i+796|0;ja=i+792|0;ka=i+788|0;la=i+1006|0;ma=i+784|0;na=i+780|0;oa=i+776|0;pa=i+772|0;qa=i+1005|0;ra=i+768|0;sa=i+764|0;ta=i+760|0;ua=i+756|0;va=i+1004|0;wa=i+752|0;xa=i+748|0;ya=i+744|0;za=i+740|0;Aa=i+736|0;Ba=i+732|0;Ca=i+728|0;Da=i+724|0;Ea=i+720|0;Fa=i+716|0;Ga=i+1003|0;Ha=i+712|0;Ia=i+708|0;Ja=i+704|0;Ka=i+700|0;La=i+1002|0;Ma=i+696|0;Na=i+692|0;Oa=i+688|0;Pa=i+684|0;Qa=i+1001|0;Ra=i+680|0;Sa=i+676|0;Ta=i+672|0;Ua=i+668|0;Va=i+1e3|0;Wa=i+664|0;Xa=i+660|0;Ya=i+656|0;Za=i+652|0;_a=i+999|0;$a=i+648|0;ab=i+644|0;bb=i+640|0;cb=i+636|0;db=i+998|0;eb=i+632|0;fb=i+628|0;gb=i+624|0;hb=i+620|0;ib=i+616|0;jb=i+612|0;kb=i+608|0;lb=i+604|0;mb=i+600|0;nb=i+596|0;ob=i+997|0;pb=i+592|0;qb=i+588|0;rb=i+584|0;sb=i+580|0;tb=i+996|0;ub=i+576|0;vb=i+572|0;wb=i+568|0;xb=i+564|0;yb=i+995|0;zb=i+560|0;Ab=i+556|0;Bb=i+552|0;Cb=i+548|0;Db=i+994|0;Eb=i+544|0;Fb=i+540|0;Gb=i+536|0;Hb=i+532|0;Ib=i+993|0;Jb=i+528|0;Kb=i+524|0;Lb=i+520|0;Mb=i+516|0;Nb=i+992|0;Ob=i+512|0;Pb=i+508|0;Qb=i+504|0;Rb=i+500|0;Sb=i+496|0;Tb=i+492|0;Ub=i+488|0;Vb=i+484|0;Wb=i+480|0;Xb=i+476|0;Yb=i+991|0;Zb=i+472|0;_b=i+468|0;$b=i+464|0;ac=i+460|0;bc=i+990|0;cc=i+456|0;dc=i+452|0;ec=i+448|0;fc=i+444|0;gc=i+989|0;hc=i+440|0;ic=i+436|0;jc=i+432|0;kc=i+428|0;lc=i+988|0;mc=i+424|0;nc=i+420|0;oc=i+416|0;pc=i+412|0;qc=i+987|0;rc=i+408|0;sc=i+404|0;tc=i+400|0;uc=i+396|0;vc=i+986|0;wc=i+392|0;xc=i+388|0;yc=i+384|0;zc=i+380|0;Ac=i+985|0;Bc=i+376|0;Cc=i+372|0;Dc=i+368|0;Ec=i+364|0;Fc=i+984|0;Gc=i+360|0;Hc=i+356|0;Ic=i+352|0;Jc=i+348|0;Kc=i+983|0;Lc=i+344|0;Mc=i+340|0;Nc=i+336|0;Oc=i+332|0;Pc=i+982|0;Qc=i+328|0;Rc=i+324|0;Sc=i+320|0;Tc=i+316|0;Uc=i+981|0;Vc=i+312|0;Wc=i+308|0;Xc=i+304|0;Yc=i+300|0;Zc=i+980|0;_c=i+296|0;$c=i+292|0;ad=i+288|0;bd=i+284|0;cd=i+979|0;dd=i+280|0;ed=i+276|0;fd=i+272|0;gd=i+268|0;hd=i+978|0;id=i+264|0;jd=i+260|0;kd=i+256|0;ld=i+252|0;md=i+977|0;nd=i+248|0;od=i+244|0;pd=i+240|0;qd=i+236|0;rd=i+976|0;sd=i+232|0;td=i+228|0;ud=i+224|0;vd=i+220|0;wd=i+216|0;xd=i+212|0;yd=i+208|0;zd=i+204|0;Ad=i+200|0;Bd=i+196|0;Cd=i+192|0;Dd=i+172|0;Ed=i+152|0;Fd=i+132|0;Gd=i+112|0;Hd=i+108|0;Id=i+104|0;Jd=i+100|0;Kd=i+96|0;Ld=i+92|0;Md=i+88|0;Nd=i+84|0;Od=i+80|0;Pd=i+76|0;Qd=i+72|0;Rd=i+68|0;Sd=i+64|0;Td=i+60|0;Ud=i+56|0;Vd=i+52|0;Wd=i+48|0;Xd=i+44|0;Yd=i+972|0;Zd=i+40|0;_d=i+36|0;$d=i+32|0;ae=i+28|0;be=i+24|0;ce=i+20|0;de=i+16|0;ee=i+12|0;fe=i+8|0;ge=i+4|0;he=i;c[de>>2]=b;c[ee>>2]=e;c[fe>>2]=f;c[ge>>2]=g;c[he>>2]=h;h=c[ee>>2]|0;ee=c[fe>>2]|0;fe=c[ge>>2]|0;ge=c[he>>2]|0;c[td>>2]=c[de>>2];c[ud>>2]=h;c[vd>>2]=ee;c[wd>>2]=fe;c[xd>>2]=ge;if((c[wd>>2]|0)>>>0<10){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}c[yd>>2]=c[vd>>2];c[zd>>2]=c[td>>2];c[Ad>>2]=(c[zd>>2]|0)+(c[ud>>2]|0);c[Bd>>2]=(c[xd>>2]|0)+4;c[Cd>>2]=c[Bd>>2];c[Hd>>2]=(yp(c[yd>>2]|0)|0)&65535;c[Id>>2]=(yp((c[yd>>2]|0)+2|0)|0)&65535;c[Jd>>2]=(yp((c[yd>>2]|0)+4|0)|0)&65535;c[Kd>>2]=(c[wd>>2]|0)-((c[Hd>>2]|0)+(c[Id>>2]|0)+(c[Jd>>2]|0)+6);c[Ld>>2]=(c[yd>>2]|0)+6;c[Md>>2]=(c[Ld>>2]|0)+(c[Hd>>2]|0);c[Nd>>2]=(c[Md>>2]|0)+(c[Id>>2]|0);c[Od>>2]=(c[Nd>>2]|0)+(c[Jd>>2]|0);c[Pd>>2]=(((c[ud>>2]|0)+3|0)>>>0)/4|0;c[Qd>>2]=(c[zd>>2]|0)+(c[Pd>>2]|0);c[Rd>>2]=(c[Qd>>2]|0)+(c[Pd>>2]|0);c[Sd>>2]=(c[Rd>>2]|0)+(c[Pd>>2]|0);c[Td>>2]=c[zd>>2];c[Ud>>2]=c[Qd>>2];c[Vd>>2]=c[Rd>>2];c[Wd>>2]=c[Sd>>2];c[Xd>>2]=0;bp(Yd,c[xd>>2]|0);c[Zd>>2]=d[Yd+2>>0];if((c[Kd>>2]|0)>>>0>(c[wd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}c[_d>>2]=fp(Dd,c[Ld>>2]|0,c[Hd>>2]|0)|0;if(ap(c[_d>>2]|0)|0){c[sd>>2]=c[_d>>2];ie=c[sd>>2]|0;l=i;return ie|0;}c[$d>>2]=fp(Ed,c[Md>>2]|0,c[Id>>2]|0)|0;if(ap(c[$d>>2]|0)|0){c[sd>>2]=c[$d>>2];ie=c[sd>>2]|0;l=i;return ie|0;}c[ae>>2]=fp(Fd,c[Nd>>2]|0,c[Jd>>2]|0)|0;if(ap(c[ae>>2]|0)|0){c[sd>>2]=c[ae>>2];ie=c[sd>>2]|0;l=i;return ie|0;}c[be>>2]=fp(Gd,c[Od>>2]|0,c[Kd>>2]|0)|0;if(ap(c[be>>2]|0)|0){c[sd>>2]=c[be>>2];ie=c[sd>>2]|0;l=i;return ie|0;}be=gp(Dd)|0;Kd=be|(gp(Ed)|0);be=Kd|(gp(Fd)|0);c[Xd>>2]=be|(gp(Gd)|0);while(1){if(c[Xd>>2]|0)break;if((c[Wd>>2]|0)>>>0>=((c[Ad>>2]|0)+-3|0)>>>0)break;if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[nd>>2]=Dd;c[od>>2]=be;c[pd>>2]=Kd;c[qd>>2]=ip(c[nd>>2]|0,c[pd>>2]|0)|0;a[rd>>0]=a[(c[od>>2]|0)+(c[qd>>2]<<1)>>0]|0;jp(c[nd>>2]|0,d[(c[od>>2]|0)+(c[qd>>2]<<1)+1>>0]|0);Kd=a[rd>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[id>>2]=Ed;c[jd>>2]=Kd;c[kd>>2]=be;c[ld>>2]=ip(c[id>>2]|0,c[kd>>2]|0)|0;a[md>>0]=a[(c[jd>>2]|0)+(c[ld>>2]<<1)>>0]|0;jp(c[id>>2]|0,d[(c[jd>>2]|0)+(c[ld>>2]<<1)+1>>0]|0);be=a[md>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;}if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[dd>>2]=Fd;c[ed>>2]=be;c[fd>>2]=Kd;c[gd>>2]=ip(c[dd>>2]|0,c[fd>>2]|0)|0;a[hd>>0]=a[(c[ed>>2]|0)+(c[gd>>2]<<1)>>0]|0;jp(c[dd>>2]|0,d[(c[ed>>2]|0)+(c[gd>>2]<<1)+1>>0]|0);Kd=a[hd>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[_c>>2]=Gd;c[$c>>2]=Kd;c[ad>>2]=be;c[bd>>2]=ip(c[_c>>2]|0,c[ad>>2]|0)|0;a[cd>>0]=a[(c[$c>>2]|0)+(c[bd>>2]<<1)>>0]|0;jp(c[_c>>2]|0,d[(c[$c>>2]|0)+(c[bd>>2]<<1)+1>>0]|0);be=a[cd>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;}hp()|0;be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Vc>>2]=Dd;c[Wc>>2]=be;c[Xc>>2]=Kd;c[Yc>>2]=ip(c[Vc>>2]|0,c[Xc>>2]|0)|0;a[Zc>>0]=a[(c[Wc>>2]|0)+(c[Yc>>2]<<1)>>0]|0;jp(c[Vc>>2]|0,d[(c[Wc>>2]|0)+(c[Yc>>2]<<1)+1>>0]|0);Kd=a[Zc>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;hp()|0;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[Qc>>2]=Ed;c[Rc>>2]=Kd;c[Sc>>2]=be;c[Tc>>2]=ip(c[Qc>>2]|0,c[Sc>>2]|0)|0;a[Uc>>0]=a[(c[Rc>>2]|0)+(c[Tc>>2]<<1)>>0]|0;jp(c[Qc>>2]|0,d[(c[Rc>>2]|0)+(c[Tc>>2]<<1)+1>>0]|0);be=a[Uc>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;hp()|0;be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Lc>>2]=Fd;c[Mc>>2]=be;c[Nc>>2]=Kd;c[Oc>>2]=ip(c[Lc>>2]|0,c[Nc>>2]|0)|0;a[Pc>>0]=a[(c[Mc>>2]|0)+(c[Oc>>2]<<1)>>0]|0;jp(c[Lc>>2]|0,d[(c[Mc>>2]|0)+(c[Oc>>2]<<1)+1>>0]|0);Kd=a[Pc>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;hp()|0;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[Gc>>2]=Gd;c[Hc>>2]=Kd;c[Ic>>2]=be;c[Jc>>2]=ip(c[Gc>>2]|0,c[Ic>>2]|0)|0;a[Kc>>0]=a[(c[Hc>>2]|0)+(c[Jc>>2]<<1)>>0]|0;jp(c[Gc>>2]|0,d[(c[Hc>>2]|0)+(c[Jc>>2]<<1)+1>>0]|0);be=a[Kc>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Bc>>2]=Dd;c[Cc>>2]=be;c[Dc>>2]=Kd;c[Ec>>2]=ip(c[Bc>>2]|0,c[Dc>>2]|0)|0;a[Fc>>0]=a[(c[Cc>>2]|0)+(c[Ec>>2]<<1)>>0]|0;jp(c[Bc>>2]|0,d[(c[Cc>>2]|0)+(c[Ec>>2]<<1)+1>>0]|0);Kd=a[Fc>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[wc>>2]=Ed;c[xc>>2]=Kd;c[yc>>2]=be;c[zc>>2]=ip(c[wc>>2]|0,c[yc>>2]|0)|0;a[Ac>>0]=a[(c[xc>>2]|0)+(c[zc>>2]<<1)>>0]|0;jp(c[wc>>2]|0,d[(c[xc>>2]|0)+(c[zc>>2]<<1)+1>>0]|0);be=a[Ac>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;}if(hp()|0){be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[rc>>2]=Fd;c[sc>>2]=be;c[tc>>2]=Kd;c[uc>>2]=ip(c[rc>>2]|0,c[tc>>2]|0)|0;a[vc>>0]=a[(c[sc>>2]|0)+(c[uc>>2]<<1)>>0]|0;jp(c[rc>>2]|0,d[(c[sc>>2]|0)+(c[uc>>2]<<1)+1>>0]|0);Kd=a[vc>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;}if(hp()|0){Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[mc>>2]=Gd;c[nc>>2]=Kd;c[oc>>2]=be;c[pc>>2]=ip(c[mc>>2]|0,c[oc>>2]|0)|0;a[qc>>0]=a[(c[nc>>2]|0)+(c[pc>>2]<<1)>>0]|0;jp(c[mc>>2]|0,d[(c[nc>>2]|0)+(c[pc>>2]<<1)+1>>0]|0);be=a[qc>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;}be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[hc>>2]=Dd;c[ic>>2]=be;c[jc>>2]=Kd;c[kc>>2]=ip(c[hc>>2]|0,c[jc>>2]|0)|0;a[lc>>0]=a[(c[ic>>2]|0)+(c[kc>>2]<<1)>>0]|0;jp(c[hc>>2]|0,d[(c[ic>>2]|0)+(c[kc>>2]<<1)+1>>0]|0);Kd=a[lc>>0]|0;be=c[Td>>2]|0;c[Td>>2]=be+1;a[be>>0]=Kd;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[cc>>2]=Ed;c[dc>>2]=Kd;c[ec>>2]=be;c[fc>>2]=ip(c[cc>>2]|0,c[ec>>2]|0)|0;a[gc>>0]=a[(c[dc>>2]|0)+(c[fc>>2]<<1)>>0]|0;jp(c[cc>>2]|0,d[(c[dc>>2]|0)+(c[fc>>2]<<1)+1>>0]|0);be=a[gc>>0]|0;Kd=c[Ud>>2]|0;c[Ud>>2]=Kd+1;a[Kd>>0]=be;be=c[Cd>>2]|0;Kd=c[Zd>>2]|0;c[Zb>>2]=Fd;c[_b>>2]=be;c[$b>>2]=Kd;c[ac>>2]=ip(c[Zb>>2]|0,c[$b>>2]|0)|0;a[bc>>0]=a[(c[_b>>2]|0)+(c[ac>>2]<<1)>>0]|0;jp(c[Zb>>2]|0,d[(c[_b>>2]|0)+(c[ac>>2]<<1)+1>>0]|0);Kd=a[bc>>0]|0;be=c[Vd>>2]|0;c[Vd>>2]=be+1;a[be>>0]=Kd;Kd=c[Cd>>2]|0;be=c[Zd>>2]|0;c[Ub>>2]=Gd;c[Vb>>2]=Kd;c[Wb>>2]=be;c[Xb>>2]=ip(c[Ub>>2]|0,c[Wb>>2]|0)|0;a[Yb>>0]=a[(c[Vb>>2]|0)+(c[Xb>>2]<<1)>>0]|0;jp(c[Ub>>2]|0,d[(c[Vb>>2]|0)+(c[Xb>>2]<<1)+1>>0]|0);be=a[Yb>>0]|0;Kd=c[Wd>>2]|0;c[Wd>>2]=Kd+1;a[Kd>>0]=be;gp(Dd)|0;gp(Ed)|0;gp(Fd)|0;gp(Gd)|0;}if((c[Td>>2]|0)>>>0>(c[Qd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}if((c[Ud>>2]|0)>>>0>(c[Rd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}if((c[Vd>>2]|0)>>>0>(c[Sd>>2]|0)>>>0){c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}Yb=c[Qd>>2]|0;Qd=c[Cd>>2]|0;Xb=c[Zd>>2]|0;c[Ob>>2]=c[Td>>2];c[Pb>>2]=Dd;c[Qb>>2]=Yb;c[Rb>>2]=Qd;c[Sb>>2]=Xb;c[Tb>>2]=c[Ob>>2];while(1){Tb=(gp(c[Pb>>2]|0)|0)==0&1;if(!(Tb&(c[Ob>>2]|0)>>>0<((c[Qb>>2]|0)+-3|0)>>>0))break;if(hp()|0){Tb=c[Rb>>2]|0;Xb=c[Sb>>2]|0;c[Jb>>2]=c[Pb>>2];c[Kb>>2]=Tb;c[Lb>>2]=Xb;c[Mb>>2]=ip(c[Jb>>2]|0,c[Lb>>2]|0)|0;a[Nb>>0]=a[(c[Kb>>2]|0)+(c[Mb>>2]<<1)>>0]|0;jp(c[Jb>>2]|0,d[(c[Kb>>2]|0)+(c[Mb>>2]<<1)+1>>0]|0);Xb=a[Nb>>0]|0;Tb=c[Ob>>2]|0;c[Ob>>2]=Tb+1;a[Tb>>0]=Xb;}hp()|0;Xb=c[Rb>>2]|0;Tb=c[Sb>>2]|0;c[Eb>>2]=c[Pb>>2];c[Fb>>2]=Xb;c[Gb>>2]=Tb;c[Hb>>2]=ip(c[Eb>>2]|0,c[Gb>>2]|0)|0;a[Ib>>0]=a[(c[Fb>>2]|0)+(c[Hb>>2]<<1)>>0]|0;jp(c[Eb>>2]|0,d[(c[Fb>>2]|0)+(c[Hb>>2]<<1)+1>>0]|0);Tb=a[Ib>>0]|0;Xb=c[Ob>>2]|0;c[Ob>>2]=Xb+1;a[Xb>>0]=Tb;if(hp()|0){Tb=c[Rb>>2]|0;Xb=c[Sb>>2]|0;c[zb>>2]=c[Pb>>2];c[Ab>>2]=Tb;c[Bb>>2]=Xb;c[Cb>>2]=ip(c[zb>>2]|0,c[Bb>>2]|0)|0;a[Db>>0]=a[(c[Ab>>2]|0)+(c[Cb>>2]<<1)>>0]|0;jp(c[zb>>2]|0,d[(c[Ab>>2]|0)+(c[Cb>>2]<<1)+1>>0]|0);Xb=a[Db>>0]|0;Tb=c[Ob>>2]|0;c[Ob>>2]=Tb+1;a[Tb>>0]=Xb;}Xb=c[Rb>>2]|0;Tb=c[Sb>>2]|0;c[ub>>2]=c[Pb>>2];c[vb>>2]=Xb;c[wb>>2]=Tb;c[xb>>2]=ip(c[ub>>2]|0,c[wb>>2]|0)|0;a[yb>>0]=a[(c[vb>>2]|0)+(c[xb>>2]<<1)>>0]|0;jp(c[ub>>2]|0,d[(c[vb>>2]|0)+(c[xb>>2]<<1)+1>>0]|0);Tb=a[yb>>0]|0;Xb=c[Ob>>2]|0;c[Ob>>2]=Xb+1;a[Xb>>0]=Tb;}a:do{if(kp()|0)while(1){yb=(gp(c[Pb>>2]|0)|0)==0&1;if(!(yb&(c[Ob>>2]|0)>>>0<(c[Qb>>2]|0)>>>0))break a;yb=c[Rb>>2]|0;xb=c[Sb>>2]|0;c[pb>>2]=c[Pb>>2];c[qb>>2]=yb;c[rb>>2]=xb;c[sb>>2]=ip(c[pb>>2]|0,c[rb>>2]|0)|0;a[tb>>0]=a[(c[qb>>2]|0)+(c[sb>>2]<<1)>>0]|0;jp(c[pb>>2]|0,d[(c[qb>>2]|0)+(c[sb>>2]<<1)+1>>0]|0);xb=a[tb>>0]|0;yb=c[Ob>>2]|0;c[Ob>>2]=yb+1;a[yb>>0]=xb;}}while(0);while(1){if((c[Ob>>2]|0)>>>0>=(c[Qb>>2]|0)>>>0)break;tb=c[Rb>>2]|0;sb=c[Sb>>2]|0;c[kb>>2]=c[Pb>>2];c[lb>>2]=tb;c[mb>>2]=sb;c[nb>>2]=ip(c[kb>>2]|0,c[mb>>2]|0)|0;a[ob>>0]=a[(c[lb>>2]|0)+(c[nb>>2]<<1)>>0]|0;jp(c[kb>>2]|0,d[(c[lb>>2]|0)+(c[nb>>2]<<1)+1>>0]|0);sb=a[ob>>0]|0;tb=c[Ob>>2]|0;c[Ob>>2]=tb+1;a[tb>>0]=sb;}Ob=c[Rd>>2]|0;Rd=c[Cd>>2]|0;ob=c[Zd>>2]|0;c[eb>>2]=c[Ud>>2];c[fb>>2]=Ed;c[gb>>2]=Ob;c[hb>>2]=Rd;c[ib>>2]=ob;c[jb>>2]=c[eb>>2];while(1){jb=(gp(c[fb>>2]|0)|0)==0&1;if(!(jb&(c[eb>>2]|0)>>>0<((c[gb>>2]|0)+-3|0)>>>0))break;if(hp()|0){jb=c[hb>>2]|0;ob=c[ib>>2]|0;c[$a>>2]=c[fb>>2];c[ab>>2]=jb;c[bb>>2]=ob;c[cb>>2]=ip(c[$a>>2]|0,c[bb>>2]|0)|0;a[db>>0]=a[(c[ab>>2]|0)+(c[cb>>2]<<1)>>0]|0;jp(c[$a>>2]|0,d[(c[ab>>2]|0)+(c[cb>>2]<<1)+1>>0]|0);ob=a[db>>0]|0;jb=c[eb>>2]|0;c[eb>>2]=jb+1;a[jb>>0]=ob;}hp()|0;ob=c[hb>>2]|0;jb=c[ib>>2]|0;c[Wa>>2]=c[fb>>2];c[Xa>>2]=ob;c[Ya>>2]=jb;c[Za>>2]=ip(c[Wa>>2]|0,c[Ya>>2]|0)|0;a[_a>>0]=a[(c[Xa>>2]|0)+(c[Za>>2]<<1)>>0]|0;jp(c[Wa>>2]|0,d[(c[Xa>>2]|0)+(c[Za>>2]<<1)+1>>0]|0);jb=a[_a>>0]|0;ob=c[eb>>2]|0;c[eb>>2]=ob+1;a[ob>>0]=jb;if(hp()|0){jb=c[hb>>2]|0;ob=c[ib>>2]|0;c[Ra>>2]=c[fb>>2];c[Sa>>2]=jb;c[Ta>>2]=ob;c[Ua>>2]=ip(c[Ra>>2]|0,c[Ta>>2]|0)|0;a[Va>>0]=a[(c[Sa>>2]|0)+(c[Ua>>2]<<1)>>0]|0;jp(c[Ra>>2]|0,d[(c[Sa>>2]|0)+(c[Ua>>2]<<1)+1>>0]|0);ob=a[Va>>0]|0;jb=c[eb>>2]|0;c[eb>>2]=jb+1;a[jb>>0]=ob;}ob=c[hb>>2]|0;jb=c[ib>>2]|0;c[Ma>>2]=c[fb>>2];c[Na>>2]=ob;c[Oa>>2]=jb;c[Pa>>2]=ip(c[Ma>>2]|0,c[Oa>>2]|0)|0;a[Qa>>0]=a[(c[Na>>2]|0)+(c[Pa>>2]<<1)>>0]|0;jp(c[Ma>>2]|0,d[(c[Na>>2]|0)+(c[Pa>>2]<<1)+1>>0]|0);jb=a[Qa>>0]|0;ob=c[eb>>2]|0;c[eb>>2]=ob+1;a[ob>>0]=jb;}b:do{if(kp()|0)while(1){Qa=(gp(c[fb>>2]|0)|0)==0&1;if(!(Qa&(c[eb>>2]|0)>>>0<(c[gb>>2]|0)>>>0))break b;Qa=c[hb>>2]|0;Pa=c[ib>>2]|0;c[Ha>>2]=c[fb>>2];c[Ia>>2]=Qa;c[Ja>>2]=Pa;c[Ka>>2]=ip(c[Ha>>2]|0,c[Ja>>2]|0)|0;a[La>>0]=a[(c[Ia>>2]|0)+(c[Ka>>2]<<1)>>0]|0;jp(c[Ha>>2]|0,d[(c[Ia>>2]|0)+(c[Ka>>2]<<1)+1>>0]|0);Pa=a[La>>0]|0;Qa=c[eb>>2]|0;c[eb>>2]=Qa+1;a[Qa>>0]=Pa;}}while(0);while(1){if((c[eb>>2]|0)>>>0>=(c[gb>>2]|0)>>>0)break;La=c[hb>>2]|0;Ka=c[ib>>2]|0;c[Ca>>2]=c[fb>>2];c[Da>>2]=La;c[Ea>>2]=Ka;c[Fa>>2]=ip(c[Ca>>2]|0,c[Ea>>2]|0)|0;a[Ga>>0]=a[(c[Da>>2]|0)+(c[Fa>>2]<<1)>>0]|0;jp(c[Ca>>2]|0,d[(c[Da>>2]|0)+(c[Fa>>2]<<1)+1>>0]|0);Ka=a[Ga>>0]|0;La=c[eb>>2]|0;c[eb>>2]=La+1;a[La>>0]=Ka;}eb=c[Sd>>2]|0;Sd=c[Cd>>2]|0;Ga=c[Zd>>2]|0;c[wa>>2]=c[Vd>>2];c[xa>>2]=Fd;c[ya>>2]=eb;c[za>>2]=Sd;c[Aa>>2]=Ga;c[Ba>>2]=c[wa>>2];while(1){Ba=(gp(c[xa>>2]|0)|0)==0&1;if(!(Ba&(c[wa>>2]|0)>>>0<((c[ya>>2]|0)+-3|0)>>>0))break;if(hp()|0){Ba=c[za>>2]|0;Ga=c[Aa>>2]|0;c[ra>>2]=c[xa>>2];c[sa>>2]=Ba;c[ta>>2]=Ga;c[ua>>2]=ip(c[ra>>2]|0,c[ta>>2]|0)|0;a[va>>0]=a[(c[sa>>2]|0)+(c[ua>>2]<<1)>>0]|0;jp(c[ra>>2]|0,d[(c[sa>>2]|0)+(c[ua>>2]<<1)+1>>0]|0);Ga=a[va>>0]|0;Ba=c[wa>>2]|0;c[wa>>2]=Ba+1;a[Ba>>0]=Ga;}hp()|0;Ga=c[za>>2]|0;Ba=c[Aa>>2]|0;c[ma>>2]=c[xa>>2];c[na>>2]=Ga;c[oa>>2]=Ba;c[pa>>2]=ip(c[ma>>2]|0,c[oa>>2]|0)|0;a[qa>>0]=a[(c[na>>2]|0)+(c[pa>>2]<<1)>>0]|0;jp(c[ma>>2]|0,d[(c[na>>2]|0)+(c[pa>>2]<<1)+1>>0]|0);Ba=a[qa>>0]|0;Ga=c[wa>>2]|0;c[wa>>2]=Ga+1;a[Ga>>0]=Ba;if(hp()|0){Ba=c[za>>2]|0;Ga=c[Aa>>2]|0;c[ha>>2]=c[xa>>2];c[ia>>2]=Ba;c[ja>>2]=Ga;c[ka>>2]=ip(c[ha>>2]|0,c[ja>>2]|0)|0;a[la>>0]=a[(c[ia>>2]|0)+(c[ka>>2]<<1)>>0]|0;jp(c[ha>>2]|0,d[(c[ia>>2]|0)+(c[ka>>2]<<1)+1>>0]|0);Ga=a[la>>0]|0;Ba=c[wa>>2]|0;c[wa>>2]=Ba+1;a[Ba>>0]=Ga;}Ga=c[za>>2]|0;Ba=c[Aa>>2]|0;c[ca>>2]=c[xa>>2];c[da>>2]=Ga;c[ea>>2]=Ba;c[fa>>2]=ip(c[ca>>2]|0,c[ea>>2]|0)|0;a[ga>>0]=a[(c[da>>2]|0)+(c[fa>>2]<<1)>>0]|0;jp(c[ca>>2]|0,d[(c[da>>2]|0)+(c[fa>>2]<<1)+1>>0]|0);Ba=a[ga>>0]|0;Ga=c[wa>>2]|0;c[wa>>2]=Ga+1;a[Ga>>0]=Ba;}c:do{if(kp()|0)while(1){ga=(gp(c[xa>>2]|0)|0)==0&1;if(!(ga&(c[wa>>2]|0)>>>0<(c[ya>>2]|0)>>>0))break c;ga=c[za>>2]|0;fa=c[Aa>>2]|0;c[Z>>2]=c[xa>>2];c[_>>2]=ga;c[$>>2]=fa;c[aa>>2]=ip(c[Z>>2]|0,c[$>>2]|0)|0;a[ba>>0]=a[(c[_>>2]|0)+(c[aa>>2]<<1)>>0]|0;jp(c[Z>>2]|0,d[(c[_>>2]|0)+(c[aa>>2]<<1)+1>>0]|0);fa=a[ba>>0]|0;ga=c[wa>>2]|0;c[wa>>2]=ga+1;a[ga>>0]=fa;}}while(0);while(1){if((c[wa>>2]|0)>>>0>=(c[ya>>2]|0)>>>0)break;ba=c[za>>2]|0;aa=c[Aa>>2]|0;c[U>>2]=c[xa>>2];c[V>>2]=ba;c[W>>2]=aa;c[X>>2]=ip(c[U>>2]|0,c[W>>2]|0)|0;a[Y>>0]=a[(c[V>>2]|0)+(c[X>>2]<<1)>>0]|0;jp(c[U>>2]|0,d[(c[V>>2]|0)+(c[X>>2]<<1)+1>>0]|0);aa=a[Y>>0]|0;ba=c[wa>>2]|0;c[wa>>2]=ba+1;a[ba>>0]=aa;}wa=c[Ad>>2]|0;Ad=c[Cd>>2]|0;Cd=c[Zd>>2]|0;c[O>>2]=c[Wd>>2];c[P>>2]=Gd;c[Q>>2]=wa;c[R>>2]=Ad;c[S>>2]=Cd;c[T>>2]=c[O>>2];while(1){T=(gp(c[P>>2]|0)|0)==0&1;if(!(T&(c[O>>2]|0)>>>0<((c[Q>>2]|0)+-3|0)>>>0))break;if(hp()|0){T=c[R>>2]|0;Cd=c[S>>2]|0;c[J>>2]=c[P>>2];c[K>>2]=T;c[L>>2]=Cd;c[M>>2]=ip(c[J>>2]|0,c[L>>2]|0)|0;a[N>>0]=a[(c[K>>2]|0)+(c[M>>2]<<1)>>0]|0;jp(c[J>>2]|0,d[(c[K>>2]|0)+(c[M>>2]<<1)+1>>0]|0);Cd=a[N>>0]|0;T=c[O>>2]|0;c[O>>2]=T+1;a[T>>0]=Cd;}hp()|0;Cd=c[R>>2]|0;T=c[S>>2]|0;c[E>>2]=c[P>>2];c[F>>2]=Cd;c[G>>2]=T;c[H>>2]=ip(c[E>>2]|0,c[G>>2]|0)|0;a[I>>0]=a[(c[F>>2]|0)+(c[H>>2]<<1)>>0]|0;jp(c[E>>2]|0,d[(c[F>>2]|0)+(c[H>>2]<<1)+1>>0]|0);T=a[I>>0]|0;Cd=c[O>>2]|0;c[O>>2]=Cd+1;a[Cd>>0]=T;if(hp()|0){T=c[R>>2]|0;Cd=c[S>>2]|0;c[z>>2]=c[P>>2];c[A>>2]=T;c[B>>2]=Cd;c[C>>2]=ip(c[z>>2]|0,c[B>>2]|0)|0;a[D>>0]=a[(c[A>>2]|0)+(c[C>>2]<<1)>>0]|0;jp(c[z>>2]|0,d[(c[A>>2]|0)+(c[C>>2]<<1)+1>>0]|0);Cd=a[D>>0]|0;T=c[O>>2]|0;c[O>>2]=T+1;a[T>>0]=Cd;}Cd=c[R>>2]|0;T=c[S>>2]|0;c[u>>2]=c[P>>2];c[v>>2]=Cd;c[w>>2]=T;c[x>>2]=ip(c[u>>2]|0,c[w>>2]|0)|0;a[y>>0]=a[(c[v>>2]|0)+(c[x>>2]<<1)>>0]|0;jp(c[u>>2]|0,d[(c[v>>2]|0)+(c[x>>2]<<1)+1>>0]|0);T=a[y>>0]|0;Cd=c[O>>2]|0;c[O>>2]=Cd+1;a[Cd>>0]=T;}d:do{if(kp()|0)while(1){y=(gp(c[P>>2]|0)|0)==0&1;if(!(y&(c[O>>2]|0)>>>0<(c[Q>>2]|0)>>>0))break d;y=c[R>>2]|0;x=c[S>>2]|0;c[p>>2]=c[P>>2];c[q>>2]=y;c[r>>2]=x;c[s>>2]=ip(c[p>>2]|0,c[r>>2]|0)|0;a[t>>0]=a[(c[q>>2]|0)+(c[s>>2]<<1)>>0]|0;jp(c[p>>2]|0,d[(c[q>>2]|0)+(c[s>>2]<<1)+1>>0]|0);x=a[t>>0]|0;y=c[O>>2]|0;c[O>>2]=y+1;a[y>>0]=x;}}while(0);while(1){if((c[O>>2]|0)>>>0>=(c[Q>>2]|0)>>>0)break;t=c[R>>2]|0;s=c[S>>2]|0;c[j>>2]=c[P>>2];c[k>>2]=t;c[m>>2]=s;c[n>>2]=ip(c[j>>2]|0,c[m>>2]|0)|0;a[o>>0]=a[(c[k>>2]|0)+(c[n>>2]<<1)>>0]|0;jp(c[j>>2]|0,d[(c[k>>2]|0)+(c[n>>2]<<1)+1>>0]|0);s=a[o>>0]|0;t=c[O>>2]|0;c[O>>2]=t+1;a[t>>0]=s;}O=lp(Dd)|0;Dd=O&(lp(Ed)|0);Ed=Dd&(lp(Fd)|0);c[ce>>2]=Ed&(lp(Gd)|0);if(c[ce>>2]|0){c[sd>>2]=c[ud>>2];ie=c[sd>>2]|0;l=i;return ie|0;}else{c[sd>>2]=-20;ie=c[sd>>2]|0;l=i;return ie|0;}return 0;}function yp(a){a=a|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=a;a=(pp()|0)!=0;i=c[g>>2]|0;if(a){b[f>>1]=zp(i)|0;j=b[f>>1]|0;l=e;return j|0;}else{c[h>>2]=i;b[f>>1]=(d[c[h>>2]>>0]|0)+((d[(c[h>>2]|0)+1>>0]|0)<<8);j=b[f>>1]|0;l=e;return j|0;}return 0;}function zp(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function Ap(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=l;l=l+48|0;k=j+40|0;m=j+36|0;n=j+32|0;o=j+28|0;p=j+24|0;q=j+20|0;r=j+16|0;s=j+12|0;t=j+8|0;u=j+4|0;v=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=c[p>>2];c[v>>2]=$o(c[m>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0)|0;s=(ap(c[v>>2]|0)|0)!=0;r=c[v>>2]|0;if(s){c[k>>2]=r;w=c[k>>2]|0;l=j;return w|0;}if(r>>>0>=(c[q>>2]|0)>>>0){c[k>>2]=-72;w=c[k>>2]|0;l=j;return w|0;}else{c[u>>2]=(c[u>>2]|0)+(c[v>>2]|0);c[q>>2]=(c[q>>2]|0)-(c[v>>2]|0);c[k>>2]=vp(c[n>>2]|0,c[o>>2]|0,c[u>>2]|0,c[q>>2]|0,c[m>>2]|0,c[t>>2]|0)|0;w=c[k>>2]|0;l=j;return w|0;}return 0;}function Bp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;i=l;l=l+160|0;j=i+140|0;k=i+136|0;m=i+132|0;n=i+128|0;o=i+124|0;p=i+120|0;q=i+116|0;r=i+112|0;s=i+108|0;t=i+104|0;u=i+144|0;v=i+100|0;w=i+96|0;x=i+92|0;y=i+88|0;z=i+84|0;A=i+80|0;B=i+76|0;C=i+72|0;D=i+68|0;E=i+64|0;F=i+60|0;G=i+56|0;H=i+52|0;I=i+48|0;J=i+44|0;K=i+40|0;L=i+36|0;M=i+32|0;N=i+28|0;O=i+24|0;P=i+20|0;Q=i+16|0;R=i+12|0;S=i+8|0;T=i+4|0;U=i;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;bp(u,c[k>>2]|0);c[v>>2]=d[u>>0];c[x>>2]=(c[k>>2]|0)+4;c[y>>2]=c[x>>2];c[F>>2]=0;c[A>>2]=(c[o>>2]|0)+(c[F>>2]<<2);c[F>>2]=(c[F>>2]|0)+156;c[B>>2]=(c[o>>2]|0)+(c[F>>2]<<2);c[F>>2]=(c[F>>2]|0)+13;c[C>>2]=(c[o>>2]|0)+(c[F>>2]<<2);c[F>>2]=(c[F>>2]|0)+14;c[D>>2]=(c[o>>2]|0)+(((c[F>>2]<<2>>>0)/2|0)<<1);c[F>>2]=(c[F>>2]|0)+128;c[E>>2]=(c[o>>2]|0)+(c[F>>2]<<2);c[F>>2]=(c[F>>2]|0)+64;if(c[F>>2]<<2>>>0>(c[p>>2]|0)>>>0){c[j>>2]=-44;V=c[j>>2]|0;l=i;return V|0;}c[z>>2]=(c[C>>2]|0)+4;p=c[B>>2]|0;F=p+108|0;do{c[p>>2]=0;p=p+4|0;}while((p|0)<(F|0));if((c[v>>2]|0)>>>0>12){c[j>>2]=-44;V=c[j>>2]|0;l=i;return V|0;}c[w>>2]=fh(c[E>>2]|0,256,c[B>>2]|0,t,q,c[m>>2]|0,c[n>>2]|0)|0;if(ap(c[w>>2]|0)|0){c[j>>2]=c[w>>2];V=c[j>>2]|0;l=i;return V|0;}if((c[q>>2]|0)>>>0>(c[v>>2]|0)>>>0){c[j>>2]=-44;V=c[j>>2]|0;l=i;return V|0;}c[r>>2]=c[q>>2];while(1){if(c[(c[B>>2]|0)+(c[r>>2]<<2)>>2]|0)break;c[r>>2]=(c[r>>2]|0)+-1;}c[H>>2]=0;c[G>>2]=1;while(1){W=c[H>>2]|0;if((c[G>>2]|0)>>>0>=((c[r>>2]|0)+1|0)>>>0)break;c[I>>2]=W;c[H>>2]=(c[H>>2]|0)+(c[(c[B>>2]|0)+(c[G>>2]<<2)>>2]|0);c[(c[z>>2]|0)+(c[G>>2]<<2)>>2]=c[I>>2];c[G>>2]=(c[G>>2]|0)+1;}c[c[z>>2]>>2]=W;c[s>>2]=c[H>>2];c[J>>2]=0;while(1){if((c[J>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;c[K>>2]=d[(c[E>>2]|0)+(c[J>>2]|0)>>0];H=(c[z>>2]|0)+(c[K>>2]<<2)|0;W=c[H>>2]|0;c[H>>2]=W+1;c[L>>2]=W;a[(c[D>>2]|0)+(c[L>>2]<<1)>>0]=c[J>>2];a[(c[D>>2]|0)+(c[L>>2]<<1)+1>>0]=c[K>>2];c[J>>2]=(c[J>>2]|0)+1;}c[c[z>>2]>>2]=0;c[M>>2]=c[A>>2];c[N>>2]=(c[v>>2]|0)-(c[q>>2]|0)-1;c[O>>2]=0;c[P>>2]=1;while(1){if((c[P>>2]|0)>>>0>=((c[r>>2]|0)+1|0)>>>0)break;c[Q>>2]=c[O>>2];c[O>>2]=(c[O>>2]|0)+(c[(c[B>>2]|0)+(c[P>>2]<<2)>>2]<<(c[P>>2]|0)+(c[N>>2]|0));c[(c[M>>2]|0)+(c[P>>2]<<2)>>2]=c[Q>>2];c[P>>2]=(c[P>>2]|0)+1;}c[R>>2]=(c[q>>2]|0)+1-(c[r>>2]|0);c[S>>2]=c[R>>2];while(1){if((c[S>>2]|0)>>>0>=((c[v>>2]|0)-(c[R>>2]|0)+1|0)>>>0)break;c[T>>2]=(c[A>>2]|0)+((c[S>>2]|0)*52|0);c[U>>2]=1;while(1){if((c[U>>2]|0)>>>0>=((c[r>>2]|0)+1|0)>>>0)break;c[(c[T>>2]|0)+(c[U>>2]<<2)>>2]=(c[(c[M>>2]|0)+(c[U>>2]<<2)>>2]|0)>>>(c[S>>2]|0);c[U>>2]=(c[U>>2]|0)+1;}c[S>>2]=(c[S>>2]|0)+1;}Cp(c[y>>2]|0,c[v>>2]|0,c[D>>2]|0,c[s>>2]|0,c[C>>2]|0,c[A>>2]|0,c[r>>2]|0,(c[q>>2]|0)+1|0);a[u+2>>0]=c[v>>2];a[u+1>>0]=1;v=c[k>>2]|0;a[v>>0]=a[u>>0]|0;a[v+1>>0]=a[u+1>>0]|0;a[v+2>>0]=a[u+2>>0]|0;a[v+3>>0]=a[u+3>>0]|0;c[j>>2]=c[w>>2];V=c[j>>2]|0;l=i;return V|0;}function Cp(e,f,g,h,i,j,k,m){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;n=l;l=l+144|0;o=n+124|0;p=n+120|0;q=n+116|0;r=n+112|0;s=n+108|0;t=n+104|0;u=n+100|0;v=n+96|0;w=n;x=n+92|0;y=n+88|0;z=n+84|0;A=n+132|0;B=n+80|0;C=n+76|0;D=n+72|0;E=n+68|0;F=n+64|0;G=n+60|0;H=n+128|0;I=n+56|0;J=n+52|0;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=k;c[v>>2]=m;c[x>>2]=(c[v>>2]|0)-(c[p>>2]|0);c[y>>2]=(c[v>>2]|0)-(c[u>>2]|0);u=w;m=c[t>>2]|0;k=u+52|0;do{c[u>>2]=c[m>>2];u=u+4|0;m=m+4|0;}while((u|0)<(k|0));c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[r>>2]|0)>>>0)break;b[A>>1]=d[(c[q>>2]|0)+(c[z>>2]<<1)>>0]|0;c[B>>2]=d[(c[q>>2]|0)+(c[z>>2]<<1)+1>>0];c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);c[D>>2]=c[w+(c[B>>2]<<2)>>2];c[E>>2]=1<<(c[p>>2]|0)-(c[C>>2]|0);a:do{if(((c[p>>2]|0)-(c[C>>2]|0)|0)>>>0>=(c[y>>2]|0)>>>0){m=(c[C>>2]|0)+(c[x>>2]|0)|0;c[G>>2]=m;c[G>>2]=(c[G>>2]|0)<1?1:m;c[F>>2]=c[(c[s>>2]|0)+(c[G>>2]<<2)>>2];Dp((c[o>>2]|0)+(c[D>>2]<<2)|0,(c[p>>2]|0)-(c[C>>2]|0)|0,c[C>>2]|0,(c[t>>2]|0)+((c[C>>2]|0)*52|0)|0,c[G>>2]|0,(c[q>>2]|0)+(c[F>>2]<<1)|0,(c[r>>2]|0)-(c[F>>2]|0)|0,c[v>>2]|0,b[A>>1]|0);}else{Ep(H,b[A>>1]|0);a[H+2>>0]=c[C>>2];a[H+3>>0]=1;c[I>>2]=(c[D>>2]|0)+(c[E>>2]|0);c[J>>2]=c[D>>2];while(1){if((c[J>>2]|0)>>>0>=(c[I>>2]|0)>>>0)break a;m=(c[o>>2]|0)+(c[J>>2]<<2)|0;b[m>>1]=b[H>>1]|0;b[m+2>>1]=b[H+2>>1]|0;c[J>>2]=(c[J>>2]|0)+1;}}}while(0);m=w+(c[B>>2]<<2)|0;c[m>>2]=(c[m>>2]|0)+(c[E>>2]|0);c[z>>2]=(c[z>>2]|0)+1;}l=n;return;}function Dp(f,g,h,i,j,k,m,n,o){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;p=l;l=l+144|0;q=p+120|0;r=p+116|0;s=p+112|0;t=p+108|0;u=p+104|0;v=p+100|0;w=p+96|0;x=p+92|0;y=p+128|0;z=p+124|0;A=p;B=p+88|0;C=p+84|0;D=p+80|0;E=p+76|0;F=p+72|0;G=p+68|0;H=p+64|0;I=p+60|0;J=p+56|0;K=p+52|0;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=j;c[v>>2]=k;c[w>>2]=m;c[x>>2]=n;b[y>>1]=o;o=A;n=c[t>>2]|0;t=o+52|0;do{c[o>>2]=c[n>>2];o=o+4|0;n=n+4|0;}while((o|0)<(t|0));a:do{if((c[u>>2]|0)>1){c[C>>2]=c[A+(c[u>>2]<<2)>>2];Ep(z,b[y>>1]|0);a[z+2>>0]=c[s>>2];a[z+3>>0]=1;c[B>>2]=0;while(1){if((c[B>>2]|0)>>>0>=(c[C>>2]|0)>>>0)break a;n=(c[q>>2]|0)+(c[B>>2]<<2)|0;b[n>>1]=b[z>>1]|0;b[n+2>>1]=b[z+2>>1]|0;c[B>>2]=(c[B>>2]|0)+1;}}}while(0);c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[E>>2]=d[(c[v>>2]|0)+(c[D>>2]<<1)>>0];c[F>>2]=d[(c[v>>2]|0)+(c[D>>2]<<1)+1>>0];c[G>>2]=(c[x>>2]|0)-(c[F>>2]|0);c[H>>2]=1<<(c[r>>2]|0)-(c[G>>2]|0);c[I>>2]=c[A+(c[F>>2]<<2)>>2];c[J>>2]=c[I>>2];c[K>>2]=(c[I>>2]|0)+(c[H>>2]|0);Ep(z,(e[y>>1]|0)+(c[E>>2]<<8)&65535);a[z+2>>0]=(c[G>>2]|0)+(c[s>>2]|0);a[z+3>>0]=2;do{B=c[q>>2]|0;C=c[J>>2]|0;c[J>>2]=C+1;u=B+(C<<2)|0;b[u>>1]=b[z>>1]|0;b[u+2>>1]=b[z+2>>1]|0;}while((c[J>>2]|0)>>>0<(c[K>>2]|0)>>>0);u=A+(c[F>>2]<<2)|0;c[u>>2]=(c[u>>2]|0)+(c[H>>2]|0);c[D>>2]=(c[D>>2]|0)+1;}l=p;return;}function Ep(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+4|0;i=g+8|0;j=g;c[h>>2]=d;b[i>>1]=f;f=(pp()|0)!=0;d=c[h>>2]|0;if(f){Fp(d,b[i>>1]|0);l=g;return;}else{c[j>>2]=d;a[c[j>>2]>>0]=b[i>>1];a[(c[j>>2]|0)+1>>0]=(e[i>>1]|0)>>8;l=g;return;}}function Fp(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;h=f+4|0;c[g>>2]=d;b[h>>1]=e;e=b[h>>1]|0;h=c[g>>2]|0;a[h>>0]=e;a[h+1>>0]=e>>8;l=f;return;}function Gp(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;g=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;if(c[p>>2]|0){c[i>>2]=Hp(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}else{c[i>>2]=Ip(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function Hp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;i=l;l=l+256|0;j=i+244|0;k=i+240|0;m=i+236|0;n=i+232|0;o=i+228|0;p=i+224|0;q=i+220|0;r=i+216|0;s=i+212|0;t=i+208|0;u=i+204|0;v=i+200|0;w=i+196|0;x=i+192|0;y=i+188|0;z=i+184|0;A=i+180|0;B=i+176|0;C=i+172|0;D=i+168|0;E=i+164|0;F=i+160|0;G=i+156|0;H=i+152|0;I=i+148|0;J=i+144|0;K=i+140|0;L=i+136|0;M=i+132|0;N=i+128|0;O=i+124|0;P=i+120|0;Q=i+116|0;R=i+112|0;S=i+108|0;T=i+104|0;U=i+100|0;V=i+96|0;W=i+92|0;X=i+88|0;Y=i+80|0;Z=i+76|0;_=i+72|0;$=i+68|0;aa=i+64|0;ba=i+60|0;ca=i+40|0;da=i+36|0;ea=i+32|0;fa=i+28|0;ga=i+24|0;ha=i+20|0;ia=i+248|0;ja=i+16|0;ka=i+12|0;la=i+8|0;ma=i+4|0;na=i;c[ja>>2]=b;c[ka>>2]=e;c[la>>2]=f;c[ma>>2]=g;c[na>>2]=h;h=c[ka>>2]|0;ka=c[la>>2]|0;la=c[ma>>2]|0;ma=c[na>>2]|0;c[Z>>2]=c[ja>>2];c[_>>2]=h;c[$>>2]=ka;c[aa>>2]=la;c[ba>>2]=ma;c[da>>2]=fp(ca,c[$>>2]|0,c[aa>>2]|0)|0;if(ap(c[da>>2]|0)|0){c[Y>>2]=c[da>>2];oa=c[Y>>2]|0;l=i;return oa|0;}c[ea>>2]=c[Z>>2];c[fa>>2]=(c[ea>>2]|0)+(c[_>>2]|0);c[ga>>2]=(c[ba>>2]|0)+4;c[ha>>2]=c[ga>>2];bp(ia,c[ba>>2]|0);ba=c[fa>>2]|0;fa=c[ha>>2]|0;ha=d[ia+2>>0]|0;c[T>>2]=c[ea>>2];c[U>>2]=ca;c[V>>2]=ba;c[W>>2]=fa;c[X>>2]=ha;c[i+84>>2]=c[T>>2];while(1){ha=(gp(c[U>>2]|0)|0)==0&1;if(!(ha&(c[T>>2]|0)>>>0<((c[V>>2]|0)+-3|0)>>>0))break;if(hp()|0){ha=c[U>>2]|0;fa=c[W>>2]|0;ba=c[X>>2]|0;c[O>>2]=c[T>>2];c[P>>2]=ha;c[Q>>2]=fa;c[R>>2]=ba;c[S>>2]=ip(c[P>>2]|0,c[R>>2]|0)|0;ba=c[O>>2]|0;fa=(c[Q>>2]|0)+(c[S>>2]<<2)|0;a[ba>>0]=a[fa>>0]|0;a[ba+1>>0]=a[fa+1>>0]|0;jp(c[P>>2]|0,d[(c[Q>>2]|0)+(c[S>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[Q>>2]|0)+(c[S>>2]<<2)+3>>0]|0);}hp()|0;fa=c[U>>2]|0;ba=c[W>>2]|0;ha=c[X>>2]|0;c[J>>2]=c[T>>2];c[K>>2]=fa;c[L>>2]=ba;c[M>>2]=ha;c[N>>2]=ip(c[K>>2]|0,c[M>>2]|0)|0;ha=c[J>>2]|0;ba=(c[L>>2]|0)+(c[N>>2]<<2)|0;a[ha>>0]=a[ba>>0]|0;a[ha+1>>0]=a[ba+1>>0]|0;jp(c[K>>2]|0,d[(c[L>>2]|0)+(c[N>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[L>>2]|0)+(c[N>>2]<<2)+3>>0]|0);if(hp()|0){ba=c[U>>2]|0;ha=c[W>>2]|0;fa=c[X>>2]|0;c[E>>2]=c[T>>2];c[F>>2]=ba;c[G>>2]=ha;c[H>>2]=fa;c[I>>2]=ip(c[F>>2]|0,c[H>>2]|0)|0;fa=c[E>>2]|0;ha=(c[G>>2]|0)+(c[I>>2]<<2)|0;a[fa>>0]=a[ha>>0]|0;a[fa+1>>0]=a[ha+1>>0]|0;jp(c[F>>2]|0,d[(c[G>>2]|0)+(c[I>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[G>>2]|0)+(c[I>>2]<<2)+3>>0]|0);}ha=c[U>>2]|0;fa=c[W>>2]|0;ba=c[X>>2]|0;c[z>>2]=c[T>>2];c[A>>2]=ha;c[B>>2]=fa;c[C>>2]=ba;c[D>>2]=ip(c[A>>2]|0,c[C>>2]|0)|0;ba=c[z>>2]|0;fa=(c[B>>2]|0)+(c[D>>2]<<2)|0;a[ba>>0]=a[fa>>0]|0;a[ba+1>>0]=a[fa+1>>0]|0;jp(c[A>>2]|0,d[(c[B>>2]|0)+(c[D>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[B>>2]|0)+(c[D>>2]<<2)+3>>0]|0);}while(1){D=(gp(c[U>>2]|0)|0)==0&1;if(!(D&(c[T>>2]|0)>>>0<=((c[V>>2]|0)+-2|0)>>>0))break;D=c[U>>2]|0;B=c[W>>2]|0;A=c[X>>2]|0;c[u>>2]=c[T>>2];c[v>>2]=D;c[w>>2]=B;c[x>>2]=A;c[y>>2]=ip(c[v>>2]|0,c[x>>2]|0)|0;A=c[u>>2]|0;B=(c[w>>2]|0)+(c[y>>2]<<2)|0;a[A>>0]=a[B>>0]|0;a[A+1>>0]=a[B+1>>0]|0;jp(c[v>>2]|0,d[(c[w>>2]|0)+(c[y>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[w>>2]|0)+(c[y>>2]<<2)+3>>0]|0);}while(1){pa=c[T>>2]|0;if((c[T>>2]|0)>>>0>((c[V>>2]|0)+-2|0)>>>0)break;y=c[U>>2]|0;w=c[W>>2]|0;v=c[X>>2]|0;c[p>>2]=pa;c[q>>2]=y;c[r>>2]=w;c[s>>2]=v;c[t>>2]=ip(c[q>>2]|0,c[s>>2]|0)|0;v=c[p>>2]|0;w=(c[r>>2]|0)+(c[t>>2]<<2)|0;a[v>>0]=a[w>>0]|0;a[v+1>>0]=a[w+1>>0]|0;jp(c[q>>2]|0,d[(c[r>>2]|0)+(c[t>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[r>>2]|0)+(c[t>>2]<<2)+3>>0]|0);}if(pa>>>0<(c[V>>2]|0)>>>0){V=c[U>>2]|0;U=c[W>>2]|0;W=c[X>>2]|0;c[j>>2]=c[T>>2];c[k>>2]=V;c[m>>2]=U;c[n>>2]=W;c[o>>2]=ip(c[k>>2]|0,c[n>>2]|0)|0;a[c[j>>2]>>0]=a[(c[m>>2]|0)+(c[o>>2]<<2)>>0]|0;j=c[k>>2]|0;if((d[(c[m>>2]|0)+(c[o>>2]<<2)+3>>0]|0|0)!=1){if((c[j+4>>2]|0)>>>0<32?(jp(c[k>>2]|0,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0),(c[(c[k>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[k>>2]|0)+4>>2]=32;}else jp(j,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+1;}if(lp(ca)|0){c[Y>>2]=c[_>>2];oa=c[Y>>2]|0;l=i;return oa|0;}else{c[Y>>2]=-20;oa=c[Y>>2]|0;l=i;return oa|0;}return 0;}function Ip(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;i=l;l=l+256|0;j=i+244|0;k=i+240|0;m=i+236|0;n=i+232|0;o=i+228|0;p=i+224|0;q=i+220|0;r=i+216|0;s=i+212|0;t=i+208|0;u=i+204|0;v=i+200|0;w=i+196|0;x=i+192|0;y=i+188|0;z=i+184|0;A=i+180|0;B=i+176|0;C=i+172|0;D=i+168|0;E=i+164|0;F=i+160|0;G=i+156|0;H=i+152|0;I=i+148|0;J=i+144|0;K=i+140|0;L=i+136|0;M=i+132|0;N=i+128|0;O=i+124|0;P=i+120|0;Q=i+116|0;R=i+112|0;S=i+108|0;T=i+104|0;U=i+100|0;V=i+96|0;W=i+92|0;X=i+88|0;Y=i+80|0;Z=i+76|0;_=i+72|0;$=i+68|0;aa=i+64|0;ba=i+60|0;ca=i+40|0;da=i+36|0;ea=i+32|0;fa=i+28|0;ga=i+24|0;ha=i+20|0;ia=i+248|0;ja=i+16|0;ka=i+12|0;la=i+8|0;ma=i+4|0;na=i;c[ja>>2]=b;c[ka>>2]=e;c[la>>2]=f;c[ma>>2]=g;c[na>>2]=h;h=c[ka>>2]|0;ka=c[la>>2]|0;la=c[ma>>2]|0;ma=c[na>>2]|0;c[Z>>2]=c[ja>>2];c[_>>2]=h;c[$>>2]=ka;c[aa>>2]=la;c[ba>>2]=ma;c[da>>2]=fp(ca,c[$>>2]|0,c[aa>>2]|0)|0;if(ap(c[da>>2]|0)|0){c[Y>>2]=c[da>>2];oa=c[Y>>2]|0;l=i;return oa|0;}c[ea>>2]=c[Z>>2];c[fa>>2]=(c[ea>>2]|0)+(c[_>>2]|0);c[ga>>2]=(c[ba>>2]|0)+4;c[ha>>2]=c[ga>>2];bp(ia,c[ba>>2]|0);ba=c[fa>>2]|0;fa=c[ha>>2]|0;ha=d[ia+2>>0]|0;c[T>>2]=c[ea>>2];c[U>>2]=ca;c[V>>2]=ba;c[W>>2]=fa;c[X>>2]=ha;c[i+84>>2]=c[T>>2];while(1){ha=(gp(c[U>>2]|0)|0)==0&1;if(!(ha&(c[T>>2]|0)>>>0<((c[V>>2]|0)+-3|0)>>>0))break;if(hp()|0){ha=c[U>>2]|0;fa=c[W>>2]|0;ba=c[X>>2]|0;c[O>>2]=c[T>>2];c[P>>2]=ha;c[Q>>2]=fa;c[R>>2]=ba;c[S>>2]=ip(c[P>>2]|0,c[R>>2]|0)|0;ba=c[O>>2]|0;fa=(c[Q>>2]|0)+(c[S>>2]<<2)|0;a[ba>>0]=a[fa>>0]|0;a[ba+1>>0]=a[fa+1>>0]|0;jp(c[P>>2]|0,d[(c[Q>>2]|0)+(c[S>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[Q>>2]|0)+(c[S>>2]<<2)+3>>0]|0);}hp()|0;fa=c[U>>2]|0;ba=c[W>>2]|0;ha=c[X>>2]|0;c[J>>2]=c[T>>2];c[K>>2]=fa;c[L>>2]=ba;c[M>>2]=ha;c[N>>2]=ip(c[K>>2]|0,c[M>>2]|0)|0;ha=c[J>>2]|0;ba=(c[L>>2]|0)+(c[N>>2]<<2)|0;a[ha>>0]=a[ba>>0]|0;a[ha+1>>0]=a[ba+1>>0]|0;jp(c[K>>2]|0,d[(c[L>>2]|0)+(c[N>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[L>>2]|0)+(c[N>>2]<<2)+3>>0]|0);if(hp()|0){ba=c[U>>2]|0;ha=c[W>>2]|0;fa=c[X>>2]|0;c[E>>2]=c[T>>2];c[F>>2]=ba;c[G>>2]=ha;c[H>>2]=fa;c[I>>2]=ip(c[F>>2]|0,c[H>>2]|0)|0;fa=c[E>>2]|0;ha=(c[G>>2]|0)+(c[I>>2]<<2)|0;a[fa>>0]=a[ha>>0]|0;a[fa+1>>0]=a[ha+1>>0]|0;jp(c[F>>2]|0,d[(c[G>>2]|0)+(c[I>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[G>>2]|0)+(c[I>>2]<<2)+3>>0]|0);}ha=c[U>>2]|0;fa=c[W>>2]|0;ba=c[X>>2]|0;c[z>>2]=c[T>>2];c[A>>2]=ha;c[B>>2]=fa;c[C>>2]=ba;c[D>>2]=ip(c[A>>2]|0,c[C>>2]|0)|0;ba=c[z>>2]|0;fa=(c[B>>2]|0)+(c[D>>2]<<2)|0;a[ba>>0]=a[fa>>0]|0;a[ba+1>>0]=a[fa+1>>0]|0;jp(c[A>>2]|0,d[(c[B>>2]|0)+(c[D>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[B>>2]|0)+(c[D>>2]<<2)+3>>0]|0);}while(1){D=(gp(c[U>>2]|0)|0)==0&1;if(!(D&(c[T>>2]|0)>>>0<=((c[V>>2]|0)+-2|0)>>>0))break;D=c[U>>2]|0;B=c[W>>2]|0;A=c[X>>2]|0;c[u>>2]=c[T>>2];c[v>>2]=D;c[w>>2]=B;c[x>>2]=A;c[y>>2]=ip(c[v>>2]|0,c[x>>2]|0)|0;A=c[u>>2]|0;B=(c[w>>2]|0)+(c[y>>2]<<2)|0;a[A>>0]=a[B>>0]|0;a[A+1>>0]=a[B+1>>0]|0;jp(c[v>>2]|0,d[(c[w>>2]|0)+(c[y>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[w>>2]|0)+(c[y>>2]<<2)+3>>0]|0);}while(1){pa=c[T>>2]|0;if((c[T>>2]|0)>>>0>((c[V>>2]|0)+-2|0)>>>0)break;y=c[U>>2]|0;w=c[W>>2]|0;v=c[X>>2]|0;c[p>>2]=pa;c[q>>2]=y;c[r>>2]=w;c[s>>2]=v;c[t>>2]=ip(c[q>>2]|0,c[s>>2]|0)|0;v=c[p>>2]|0;w=(c[r>>2]|0)+(c[t>>2]<<2)|0;a[v>>0]=a[w>>0]|0;a[v+1>>0]=a[w+1>>0]|0;jp(c[q>>2]|0,d[(c[r>>2]|0)+(c[t>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[r>>2]|0)+(c[t>>2]<<2)+3>>0]|0);}if(pa>>>0<(c[V>>2]|0)>>>0){V=c[U>>2]|0;U=c[W>>2]|0;W=c[X>>2]|0;c[j>>2]=c[T>>2];c[k>>2]=V;c[m>>2]=U;c[n>>2]=W;c[o>>2]=ip(c[k>>2]|0,c[n>>2]|0)|0;a[c[j>>2]>>0]=a[(c[m>>2]|0)+(c[o>>2]<<2)>>0]|0;j=c[k>>2]|0;if((d[(c[m>>2]|0)+(c[o>>2]<<2)+3>>0]|0|0)!=1){if((c[j+4>>2]|0)>>>0<32?(jp(c[k>>2]|0,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0),(c[(c[k>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[k>>2]|0)+4>>2]=32;}else jp(j,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+1;}if(lp(ca)|0){c[Y>>2]=c[_>>2];oa=c[Y>>2]|0;l=i;return oa|0;}else{c[Y>>2]=-20;oa=c[Y>>2]|0;l=i;return oa|0;}return 0;}function Jp(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;g=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;if(c[p>>2]|0){c[i>>2]=Kp(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}else{c[i>>2]=Lp(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function Kp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0;i=l;l=l+1216|0;j=i+1208|0;k=i+1204|0;m=i+1200|0;n=i+1196|0;o=i+1192|0;p=i+1188|0;q=i+1184|0;r=i+1180|0;s=i+1176|0;t=i+1172|0;u=i+1168|0;v=i+1164|0;w=i+1160|0;x=i+1156|0;y=i+1152|0;z=i+1148|0;A=i+1144|0;B=i+1140|0;C=i+1136|0;D=i+1132|0;E=i+1128|0;F=i+1124|0;G=i+1120|0;H=i+1116|0;I=i+1112|0;J=i+1108|0;K=i+1104|0;L=i+1100|0;M=i+1096|0;N=i+1092|0;O=i+1088|0;P=i+1084|0;Q=i+1080|0;R=i+1076|0;S=i+1072|0;T=i+1068|0;U=i+1064|0;V=i+1060|0;W=i+1056|0;X=i+1052|0;Y=i+1048|0;Z=i+1044|0;_=i+1040|0;$=i+1036|0;aa=i+1032|0;ba=i+1028|0;ca=i+1024|0;da=i+1020|0;ea=i+1016|0;fa=i+1012|0;ga=i+1008|0;ha=i+1004|0;ia=i+1e3|0;ja=i+996|0;ka=i+992|0;la=i+988|0;ma=i+984|0;na=i+980|0;oa=i+976|0;pa=i+972|0;qa=i+968|0;ra=i+964|0;sa=i+960|0;ta=i+956|0;ua=i+952|0;va=i+948|0;wa=i+944|0;xa=i+940|0;ya=i+936|0;za=i+932|0;Aa=i+928|0;Ba=i+924|0;Ca=i+920|0;Da=i+916|0;Ea=i+912|0;Fa=i+908|0;Ga=i+904|0;Ha=i+900|0;Ia=i+896|0;Ja=i+892|0;Ka=i+888|0;La=i+884|0;Ma=i+880|0;Na=i+876|0;Oa=i+872|0;Pa=i+868|0;Qa=i+864|0;Ra=i+860|0;Sa=i+856|0;Ta=i+852|0;Ua=i+848|0;Va=i+844|0;Wa=i+840|0;Xa=i+836|0;Ya=i+832|0;Za=i+828|0;_a=i+824|0;$a=i+820|0;ab=i+816|0;bb=i+812|0;cb=i+808|0;db=i+804|0;eb=i+800|0;fb=i+796|0;gb=i+792|0;hb=i+788|0;ib=i+784|0;jb=i+780|0;kb=i+776|0;lb=i+772|0;mb=i+768|0;nb=i+764|0;ob=i+760|0;pb=i+756|0;qb=i+752|0;rb=i+748|0;sb=i+744|0;tb=i+740|0;ub=i+736|0;vb=i+732|0;wb=i+728|0;xb=i+724|0;yb=i+720|0;zb=i+716|0;Ab=i+712|0;Bb=i+708|0;Cb=i+704|0;Db=i+700|0;Eb=i+696|0;Fb=i+692|0;Gb=i+688|0;Hb=i+684|0;Ib=i+680|0;Jb=i+676|0;Kb=i+672|0;Lb=i+668|0;Mb=i+664|0;Nb=i+660|0;Ob=i+656|0;Pb=i+652|0;Qb=i+648|0;Rb=i+644|0;Sb=i+640|0;Tb=i+636|0;Ub=i+632|0;Vb=i+628|0;Wb=i+624|0;Xb=i+620|0;Yb=i+616|0;Zb=i+612|0;_b=i+608|0;$b=i+604|0;ac=i+600|0;bc=i+596|0;cc=i+592|0;dc=i+588|0;ec=i+584|0;fc=i+580|0;gc=i+576|0;hc=i+572|0;ic=i+568|0;jc=i+564|0;kc=i+560|0;lc=i+556|0;mc=i+552|0;nc=i+548|0;oc=i+544|0;pc=i+540|0;qc=i+536|0;rc=i+532|0;sc=i+528|0;tc=i+524|0;uc=i+520|0;vc=i+516|0;wc=i+512|0;xc=i+508|0;yc=i+504|0;zc=i+500|0;Ac=i+496|0;Bc=i+492|0;Cc=i+488|0;Dc=i+484|0;Ec=i+480|0;Fc=i+476|0;Gc=i+472|0;Hc=i+468|0;Ic=i+464|0;Jc=i+460|0;Kc=i+456|0;Lc=i+452|0;Mc=i+448|0;Nc=i+444|0;Oc=i+440|0;Pc=i+436|0;Qc=i+432|0;Rc=i+428|0;Sc=i+424|0;Tc=i+420|0;Uc=i+416|0;Vc=i+412|0;Wc=i+408|0;Xc=i+404|0;Yc=i+400|0;Zc=i+396|0;_c=i+392|0;$c=i+388|0;ad=i+384|0;bd=i+380|0;cd=i+376|0;dd=i+372|0;ed=i+368|0;fd=i+364|0;gd=i+360|0;hd=i+356|0;id=i+352|0;jd=i+348|0;kd=i+344|0;ld=i+340|0;md=i+336|0;nd=i+332|0;od=i+328|0;pd=i+324|0;qd=i+320|0;rd=i+316|0;sd=i+312|0;td=i+308|0;ud=i+304|0;vd=i+300|0;wd=i+296|0;xd=i+292|0;yd=i+288|0;zd=i+284|0;Ad=i+280|0;Bd=i+276|0;Cd=i+272|0;Dd=i+268|0;Ed=i+264|0;Fd=i+260|0;Gd=i+256|0;Hd=i+252|0;Id=i+248|0;Jd=i+244|0;Kd=i+240|0;Ld=i+236|0;Md=i+232|0;Nd=i+228|0;Od=i+224|0;Pd=i+220|0;Qd=i+216|0;Rd=i+212|0;Sd=i+208|0;Td=i+204|0;Ud=i+200|0;Vd=i+196|0;Wd=i+192|0;Xd=i+172|0;Yd=i+152|0;Zd=i+132|0;_d=i+112|0;$d=i+108|0;ae=i+104|0;be=i+100|0;ce=i+96|0;de=i+92|0;ee=i+88|0;fe=i+84|0;ge=i+80|0;he=i+76|0;ie=i+72|0;je=i+68|0;ke=i+64|0;le=i+60|0;me=i+56|0;ne=i+52|0;oe=i+48|0;pe=i+44|0;qe=i+1212|0;re=i+40|0;se=i+36|0;te=i+32|0;ue=i+28|0;ve=i+24|0;we=i+20|0;xe=i+16|0;ye=i+12|0;ze=i+8|0;Ae=i+4|0;Be=i;c[xe>>2]=b;c[ye>>2]=e;c[ze>>2]=f;c[Ae>>2]=g;c[Be>>2]=h;h=c[ye>>2]|0;ye=c[ze>>2]|0;ze=c[Ae>>2]|0;Ae=c[Be>>2]|0;c[Nd>>2]=c[xe>>2];c[Od>>2]=h;c[Pd>>2]=ye;c[Qd>>2]=ze;c[Rd>>2]=Ae;if((c[Qd>>2]|0)>>>0<10){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}c[Sd>>2]=c[Pd>>2];c[Td>>2]=c[Nd>>2];c[Ud>>2]=(c[Td>>2]|0)+(c[Od>>2]|0);c[Vd>>2]=(c[Rd>>2]|0)+4;c[Wd>>2]=c[Vd>>2];c[$d>>2]=(yp(c[Sd>>2]|0)|0)&65535;c[ae>>2]=(yp((c[Sd>>2]|0)+2|0)|0)&65535;c[be>>2]=(yp((c[Sd>>2]|0)+4|0)|0)&65535;c[ce>>2]=(c[Qd>>2]|0)-((c[$d>>2]|0)+(c[ae>>2]|0)+(c[be>>2]|0)+6);c[de>>2]=(c[Sd>>2]|0)+6;c[ee>>2]=(c[de>>2]|0)+(c[$d>>2]|0);c[fe>>2]=(c[ee>>2]|0)+(c[ae>>2]|0);c[ge>>2]=(c[fe>>2]|0)+(c[be>>2]|0);c[he>>2]=(((c[Od>>2]|0)+3|0)>>>0)/4|0;c[ie>>2]=(c[Td>>2]|0)+(c[he>>2]|0);c[je>>2]=(c[ie>>2]|0)+(c[he>>2]|0);c[ke>>2]=(c[je>>2]|0)+(c[he>>2]|0);c[le>>2]=c[Td>>2];c[me>>2]=c[ie>>2];c[ne>>2]=c[je>>2];c[oe>>2]=c[ke>>2];bp(qe,c[Rd>>2]|0);c[re>>2]=d[qe+2>>0];if((c[ce>>2]|0)>>>0>(c[Qd>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}c[se>>2]=fp(Xd,c[de>>2]|0,c[$d>>2]|0)|0;if(ap(c[se>>2]|0)|0){c[Md>>2]=c[se>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}c[te>>2]=fp(Yd,c[ee>>2]|0,c[ae>>2]|0)|0;if(ap(c[te>>2]|0)|0){c[Md>>2]=c[te>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}c[ue>>2]=fp(Zd,c[fe>>2]|0,c[be>>2]|0)|0;if(ap(c[ue>>2]|0)|0){c[Md>>2]=c[ue>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}c[ve>>2]=fp(_d,c[ge>>2]|0,c[ce>>2]|0)|0;if(ap(c[ve>>2]|0)|0){c[Md>>2]=c[ve>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}ve=gp(Xd)|0;ce=ve|(gp(Yd)|0);ve=ce|(gp(Zd)|0);c[pe>>2]=ve|(gp(_d)|0);while(1){if(!(((c[pe>>2]|0)==0?(c[oe>>2]|0)>>>0<((c[Ud>>2]|0)+-3|0)>>>0:0)|0))break;if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Hd>>2]=c[le>>2];c[Id>>2]=Xd;c[Jd>>2]=ve;c[Kd>>2]=ce;c[Ld>>2]=ip(c[Id>>2]|0,c[Kd>>2]|0)|0;ce=c[Hd>>2]|0;ve=(c[Jd>>2]|0)+(c[Ld>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Id>>2]|0,d[(c[Jd>>2]|0)+(c[Ld>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[Jd>>2]|0)+(c[Ld>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Cd>>2]=c[me>>2];c[Dd>>2]=Yd;c[Ed>>2]=ve;c[Fd>>2]=ce;c[Gd>>2]=ip(c[Dd>>2]|0,c[Fd>>2]|0)|0;ce=c[Cd>>2]|0;ve=(c[Ed>>2]|0)+(c[Gd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Dd>>2]|0,d[(c[Ed>>2]|0)+(c[Gd>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[Ed>>2]|0)+(c[Gd>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[xd>>2]=c[ne>>2];c[yd>>2]=Zd;c[zd>>2]=ve;c[Ad>>2]=ce;c[Bd>>2]=ip(c[yd>>2]|0,c[Ad>>2]|0)|0;ce=c[xd>>2]|0;ve=(c[zd>>2]|0)+(c[Bd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[yd>>2]|0,d[(c[zd>>2]|0)+(c[Bd>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[zd>>2]|0)+(c[Bd>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[sd>>2]=c[oe>>2];c[td>>2]=_d;c[ud>>2]=ve;c[vd>>2]=ce;c[wd>>2]=ip(c[td>>2]|0,c[vd>>2]|0)|0;ce=c[sd>>2]|0;ve=(c[ud>>2]|0)+(c[wd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[td>>2]|0,d[(c[ud>>2]|0)+(c[wd>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[ud>>2]|0)+(c[wd>>2]<<2)+3>>0]|0);}hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[nd>>2]=c[le>>2];c[od>>2]=Xd;c[pd>>2]=ve;c[qd>>2]=ce;c[rd>>2]=ip(c[od>>2]|0,c[qd>>2]|0)|0;ce=c[nd>>2]|0;ve=(c[pd>>2]|0)+(c[rd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[od>>2]|0,d[(c[pd>>2]|0)+(c[rd>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[pd>>2]|0)+(c[rd>>2]<<2)+3>>0]|0);hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[id>>2]=c[me>>2];c[jd>>2]=Yd;c[kd>>2]=ve;c[ld>>2]=ce;c[md>>2]=ip(c[jd>>2]|0,c[ld>>2]|0)|0;ce=c[id>>2]|0;ve=(c[kd>>2]|0)+(c[md>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[jd>>2]|0,d[(c[kd>>2]|0)+(c[md>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[kd>>2]|0)+(c[md>>2]<<2)+3>>0]|0);hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[dd>>2]=c[ne>>2];c[ed>>2]=Zd;c[fd>>2]=ve;c[gd>>2]=ce;c[hd>>2]=ip(c[ed>>2]|0,c[gd>>2]|0)|0;ce=c[dd>>2]|0;ve=(c[fd>>2]|0)+(c[hd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[ed>>2]|0,d[(c[fd>>2]|0)+(c[hd>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[fd>>2]|0)+(c[hd>>2]<<2)+3>>0]|0);hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[_c>>2]=c[oe>>2];c[$c>>2]=_d;c[ad>>2]=ve;c[bd>>2]=ce;c[cd>>2]=ip(c[$c>>2]|0,c[bd>>2]|0)|0;ce=c[_c>>2]|0;ve=(c[ad>>2]|0)+(c[cd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[$c>>2]|0,d[(c[ad>>2]|0)+(c[cd>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[ad>>2]|0)+(c[cd>>2]<<2)+3>>0]|0);if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Vc>>2]=c[le>>2];c[Wc>>2]=Xd;c[Xc>>2]=ve;c[Yc>>2]=ce;c[Zc>>2]=ip(c[Wc>>2]|0,c[Yc>>2]|0)|0;ce=c[Vc>>2]|0;ve=(c[Xc>>2]|0)+(c[Zc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Wc>>2]|0,d[(c[Xc>>2]|0)+(c[Zc>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[Xc>>2]|0)+(c[Zc>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Qc>>2]=c[me>>2];c[Rc>>2]=Yd;c[Sc>>2]=ve;c[Tc>>2]=ce;c[Uc>>2]=ip(c[Rc>>2]|0,c[Tc>>2]|0)|0;ce=c[Qc>>2]|0;ve=(c[Sc>>2]|0)+(c[Uc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Rc>>2]|0,d[(c[Sc>>2]|0)+(c[Uc>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[Sc>>2]|0)+(c[Uc>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Lc>>2]=c[ne>>2];c[Mc>>2]=Zd;c[Nc>>2]=ve;c[Oc>>2]=ce;c[Pc>>2]=ip(c[Mc>>2]|0,c[Oc>>2]|0)|0;ce=c[Lc>>2]|0;ve=(c[Nc>>2]|0)+(c[Pc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Mc>>2]|0,d[(c[Nc>>2]|0)+(c[Pc>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[Nc>>2]|0)+(c[Pc>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Gc>>2]=c[oe>>2];c[Hc>>2]=_d;c[Ic>>2]=ve;c[Jc>>2]=ce;c[Kc>>2]=ip(c[Hc>>2]|0,c[Jc>>2]|0)|0;ce=c[Gc>>2]|0;ve=(c[Ic>>2]|0)+(c[Kc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Hc>>2]|0,d[(c[Ic>>2]|0)+(c[Kc>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[Ic>>2]|0)+(c[Kc>>2]<<2)+3>>0]|0);}ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Bc>>2]=c[le>>2];c[Cc>>2]=Xd;c[Dc>>2]=ve;c[Ec>>2]=ce;c[Fc>>2]=ip(c[Cc>>2]|0,c[Ec>>2]|0)|0;ce=c[Bc>>2]|0;ve=(c[Dc>>2]|0)+(c[Fc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Cc>>2]|0,d[(c[Dc>>2]|0)+(c[Fc>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[Dc>>2]|0)+(c[Fc>>2]<<2)+3>>0]|0);ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[wc>>2]=c[me>>2];c[xc>>2]=Yd;c[yc>>2]=ve;c[zc>>2]=ce;c[Ac>>2]=ip(c[xc>>2]|0,c[zc>>2]|0)|0;ce=c[wc>>2]|0;ve=(c[yc>>2]|0)+(c[Ac>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[xc>>2]|0,d[(c[yc>>2]|0)+(c[Ac>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[yc>>2]|0)+(c[Ac>>2]<<2)+3>>0]|0);ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[rc>>2]=c[ne>>2];c[sc>>2]=Zd;c[tc>>2]=ve;c[uc>>2]=ce;c[vc>>2]=ip(c[sc>>2]|0,c[uc>>2]|0)|0;ce=c[rc>>2]|0;ve=(c[tc>>2]|0)+(c[vc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[sc>>2]|0,d[(c[tc>>2]|0)+(c[vc>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[tc>>2]|0)+(c[vc>>2]<<2)+3>>0]|0);ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[mc>>2]=c[oe>>2];c[nc>>2]=_d;c[oc>>2]=ve;c[pc>>2]=ce;c[qc>>2]=ip(c[nc>>2]|0,c[pc>>2]|0)|0;ce=c[mc>>2]|0;ve=(c[oc>>2]|0)+(c[qc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[nc>>2]|0,d[(c[oc>>2]|0)+(c[qc>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[oc>>2]|0)+(c[qc>>2]<<2)+3>>0]|0);ve=gp(Xd)|0;ce=ve|(gp(Yd)|0);ve=ce|(gp(Zd)|0);c[pe>>2]=ve|(gp(_d)|0);}if((c[le>>2]|0)>>>0>(c[ie>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}if((c[me>>2]|0)>>>0>(c[je>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}if((c[ne>>2]|0)>>>0>(c[ke>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}pe=c[ie>>2]|0;ie=c[Wd>>2]|0;qc=c[re>>2]|0;c[gc>>2]=c[le>>2];c[hc>>2]=Xd;c[ic>>2]=pe;c[jc>>2]=ie;c[kc>>2]=qc;c[lc>>2]=c[gc>>2];while(1){lc=(gp(c[hc>>2]|0)|0)==0&1;if(!(lc&(c[gc>>2]|0)>>>0<((c[ic>>2]|0)+-3|0)>>>0))break;if(hp()|0){lc=c[hc>>2]|0;qc=c[jc>>2]|0;ie=c[kc>>2]|0;c[bc>>2]=c[gc>>2];c[cc>>2]=lc;c[dc>>2]=qc;c[ec>>2]=ie;c[fc>>2]=ip(c[cc>>2]|0,c[ec>>2]|0)|0;ie=c[bc>>2]|0;qc=(c[dc>>2]|0)+(c[fc>>2]<<2)|0;a[ie>>0]=a[qc>>0]|0;a[ie+1>>0]=a[qc+1>>0]|0;jp(c[cc>>2]|0,d[(c[dc>>2]|0)+(c[fc>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[dc>>2]|0)+(c[fc>>2]<<2)+3>>0]|0);}hp()|0;qc=c[hc>>2]|0;ie=c[jc>>2]|0;lc=c[kc>>2]|0;c[Yb>>2]=c[gc>>2];c[Zb>>2]=qc;c[_b>>2]=ie;c[$b>>2]=lc;c[ac>>2]=ip(c[Zb>>2]|0,c[$b>>2]|0)|0;lc=c[Yb>>2]|0;ie=(c[_b>>2]|0)+(c[ac>>2]<<2)|0;a[lc>>0]=a[ie>>0]|0;a[lc+1>>0]=a[ie+1>>0]|0;jp(c[Zb>>2]|0,d[(c[_b>>2]|0)+(c[ac>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[_b>>2]|0)+(c[ac>>2]<<2)+3>>0]|0);if(hp()|0){ie=c[hc>>2]|0;lc=c[jc>>2]|0;qc=c[kc>>2]|0;c[Tb>>2]=c[gc>>2];c[Ub>>2]=ie;c[Vb>>2]=lc;c[Wb>>2]=qc;c[Xb>>2]=ip(c[Ub>>2]|0,c[Wb>>2]|0)|0;qc=c[Tb>>2]|0;lc=(c[Vb>>2]|0)+(c[Xb>>2]<<2)|0;a[qc>>0]=a[lc>>0]|0;a[qc+1>>0]=a[lc+1>>0]|0;jp(c[Ub>>2]|0,d[(c[Vb>>2]|0)+(c[Xb>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Vb>>2]|0)+(c[Xb>>2]<<2)+3>>0]|0);}lc=c[hc>>2]|0;qc=c[jc>>2]|0;ie=c[kc>>2]|0;c[Ob>>2]=c[gc>>2];c[Pb>>2]=lc;c[Qb>>2]=qc;c[Rb>>2]=ie;c[Sb>>2]=ip(c[Pb>>2]|0,c[Rb>>2]|0)|0;ie=c[Ob>>2]|0;qc=(c[Qb>>2]|0)+(c[Sb>>2]<<2)|0;a[ie>>0]=a[qc>>0]|0;a[ie+1>>0]=a[qc+1>>0]|0;jp(c[Pb>>2]|0,d[(c[Qb>>2]|0)+(c[Sb>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Qb>>2]|0)+(c[Sb>>2]<<2)+3>>0]|0);}while(1){Sb=(gp(c[hc>>2]|0)|0)==0&1;if(!(Sb&(c[gc>>2]|0)>>>0<=((c[ic>>2]|0)+-2|0)>>>0))break;Sb=c[hc>>2]|0;Qb=c[jc>>2]|0;Pb=c[kc>>2]|0;c[Jb>>2]=c[gc>>2];c[Kb>>2]=Sb;c[Lb>>2]=Qb;c[Mb>>2]=Pb;c[Nb>>2]=ip(c[Kb>>2]|0,c[Mb>>2]|0)|0;Pb=c[Jb>>2]|0;Qb=(c[Lb>>2]|0)+(c[Nb>>2]<<2)|0;a[Pb>>0]=a[Qb>>0]|0;a[Pb+1>>0]=a[Qb+1>>0]|0;jp(c[Kb>>2]|0,d[(c[Lb>>2]|0)+(c[Nb>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Lb>>2]|0)+(c[Nb>>2]<<2)+3>>0]|0);}while(1){De=c[gc>>2]|0;if((c[gc>>2]|0)>>>0>((c[ic>>2]|0)+-2|0)>>>0)break;Nb=c[hc>>2]|0;Lb=c[jc>>2]|0;Kb=c[kc>>2]|0;c[Eb>>2]=De;c[Fb>>2]=Nb;c[Gb>>2]=Lb;c[Hb>>2]=Kb;c[Ib>>2]=ip(c[Fb>>2]|0,c[Hb>>2]|0)|0;Kb=c[Eb>>2]|0;Lb=(c[Gb>>2]|0)+(c[Ib>>2]<<2)|0;a[Kb>>0]=a[Lb>>0]|0;a[Kb+1>>0]=a[Lb+1>>0]|0;jp(c[Fb>>2]|0,d[(c[Gb>>2]|0)+(c[Ib>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Gb>>2]|0)+(c[Ib>>2]<<2)+3>>0]|0);}if(De>>>0<(c[ic>>2]|0)>>>0){ic=c[hc>>2]|0;hc=c[jc>>2]|0;jc=c[kc>>2]|0;c[zb>>2]=c[gc>>2];c[Ab>>2]=ic;c[Bb>>2]=hc;c[Cb>>2]=jc;c[Db>>2]=ip(c[Ab>>2]|0,c[Cb>>2]|0)|0;a[c[zb>>2]>>0]=a[(c[Bb>>2]|0)+(c[Db>>2]<<2)>>0]|0;zb=c[Ab>>2]|0;if((d[(c[Bb>>2]|0)+(c[Db>>2]<<2)+3>>0]|0|0)!=1){if((c[zb+4>>2]|0)>>>0<32?(jp(c[Ab>>2]|0,d[(c[Bb>>2]|0)+(c[Db>>2]<<2)+2>>0]|0),(c[(c[Ab>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[Ab>>2]|0)+4>>2]=32;}else jp(zb,d[(c[Bb>>2]|0)+(c[Db>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+1;}gc=c[je>>2]|0;je=c[Wd>>2]|0;Db=c[re>>2]|0;c[tb>>2]=c[me>>2];c[ub>>2]=Yd;c[vb>>2]=gc;c[wb>>2]=je;c[xb>>2]=Db;c[yb>>2]=c[tb>>2];while(1){yb=(gp(c[ub>>2]|0)|0)==0&1;if(!(yb&(c[tb>>2]|0)>>>0<((c[vb>>2]|0)+-3|0)>>>0))break;if(hp()|0){yb=c[ub>>2]|0;Db=c[wb>>2]|0;je=c[xb>>2]|0;c[ob>>2]=c[tb>>2];c[pb>>2]=yb;c[qb>>2]=Db;c[rb>>2]=je;c[sb>>2]=ip(c[pb>>2]|0,c[rb>>2]|0)|0;je=c[ob>>2]|0;Db=(c[qb>>2]|0)+(c[sb>>2]<<2)|0;a[je>>0]=a[Db>>0]|0;a[je+1>>0]=a[Db+1>>0]|0;jp(c[pb>>2]|0,d[(c[qb>>2]|0)+(c[sb>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[qb>>2]|0)+(c[sb>>2]<<2)+3>>0]|0);}hp()|0;Db=c[ub>>2]|0;je=c[wb>>2]|0;yb=c[xb>>2]|0;c[jb>>2]=c[tb>>2];c[kb>>2]=Db;c[lb>>2]=je;c[mb>>2]=yb;c[nb>>2]=ip(c[kb>>2]|0,c[mb>>2]|0)|0;yb=c[jb>>2]|0;je=(c[lb>>2]|0)+(c[nb>>2]<<2)|0;a[yb>>0]=a[je>>0]|0;a[yb+1>>0]=a[je+1>>0]|0;jp(c[kb>>2]|0,d[(c[lb>>2]|0)+(c[nb>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[lb>>2]|0)+(c[nb>>2]<<2)+3>>0]|0);if(hp()|0){je=c[ub>>2]|0;yb=c[wb>>2]|0;Db=c[xb>>2]|0;c[eb>>2]=c[tb>>2];c[fb>>2]=je;c[gb>>2]=yb;c[hb>>2]=Db;c[ib>>2]=ip(c[fb>>2]|0,c[hb>>2]|0)|0;Db=c[eb>>2]|0;yb=(c[gb>>2]|0)+(c[ib>>2]<<2)|0;a[Db>>0]=a[yb>>0]|0;a[Db+1>>0]=a[yb+1>>0]|0;jp(c[fb>>2]|0,d[(c[gb>>2]|0)+(c[ib>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[gb>>2]|0)+(c[ib>>2]<<2)+3>>0]|0);}yb=c[ub>>2]|0;Db=c[wb>>2]|0;je=c[xb>>2]|0;c[$a>>2]=c[tb>>2];c[ab>>2]=yb;c[bb>>2]=Db;c[cb>>2]=je;c[db>>2]=ip(c[ab>>2]|0,c[cb>>2]|0)|0;je=c[$a>>2]|0;Db=(c[bb>>2]|0)+(c[db>>2]<<2)|0;a[je>>0]=a[Db>>0]|0;a[je+1>>0]=a[Db+1>>0]|0;jp(c[ab>>2]|0,d[(c[bb>>2]|0)+(c[db>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[bb>>2]|0)+(c[db>>2]<<2)+3>>0]|0);}while(1){db=(gp(c[ub>>2]|0)|0)==0&1;if(!(db&(c[tb>>2]|0)>>>0<=((c[vb>>2]|0)+-2|0)>>>0))break;db=c[ub>>2]|0;bb=c[wb>>2]|0;ab=c[xb>>2]|0;c[Wa>>2]=c[tb>>2];c[Xa>>2]=db;c[Ya>>2]=bb;c[Za>>2]=ab;c[_a>>2]=ip(c[Xa>>2]|0,c[Za>>2]|0)|0;ab=c[Wa>>2]|0;bb=(c[Ya>>2]|0)+(c[_a>>2]<<2)|0;a[ab>>0]=a[bb>>0]|0;a[ab+1>>0]=a[bb+1>>0]|0;jp(c[Xa>>2]|0,d[(c[Ya>>2]|0)+(c[_a>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[Ya>>2]|0)+(c[_a>>2]<<2)+3>>0]|0);}while(1){Ee=c[tb>>2]|0;if((c[tb>>2]|0)>>>0>((c[vb>>2]|0)+-2|0)>>>0)break;_a=c[ub>>2]|0;Ya=c[wb>>2]|0;Xa=c[xb>>2]|0;c[Ra>>2]=Ee;c[Sa>>2]=_a;c[Ta>>2]=Ya;c[Ua>>2]=Xa;c[Va>>2]=ip(c[Sa>>2]|0,c[Ua>>2]|0)|0;Xa=c[Ra>>2]|0;Ya=(c[Ta>>2]|0)+(c[Va>>2]<<2)|0;a[Xa>>0]=a[Ya>>0]|0;a[Xa+1>>0]=a[Ya+1>>0]|0;jp(c[Sa>>2]|0,d[(c[Ta>>2]|0)+(c[Va>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[Ta>>2]|0)+(c[Va>>2]<<2)+3>>0]|0);}if(Ee>>>0<(c[vb>>2]|0)>>>0){vb=c[ub>>2]|0;ub=c[wb>>2]|0;wb=c[xb>>2]|0;c[Ma>>2]=c[tb>>2];c[Na>>2]=vb;c[Oa>>2]=ub;c[Pa>>2]=wb;c[Qa>>2]=ip(c[Na>>2]|0,c[Pa>>2]|0)|0;a[c[Ma>>2]>>0]=a[(c[Oa>>2]|0)+(c[Qa>>2]<<2)>>0]|0;Ma=c[Na>>2]|0;if((d[(c[Oa>>2]|0)+(c[Qa>>2]<<2)+3>>0]|0|0)!=1){if((c[Ma+4>>2]|0)>>>0<32?(jp(c[Na>>2]|0,d[(c[Oa>>2]|0)+(c[Qa>>2]<<2)+2>>0]|0),(c[(c[Na>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[Na>>2]|0)+4>>2]=32;}else jp(Ma,d[(c[Oa>>2]|0)+(c[Qa>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+1;}tb=c[ke>>2]|0;ke=c[Wd>>2]|0;Qa=c[re>>2]|0;c[Ga>>2]=c[ne>>2];c[Ha>>2]=Zd;c[Ia>>2]=tb;c[Ja>>2]=ke;c[Ka>>2]=Qa;c[La>>2]=c[Ga>>2];while(1){La=(gp(c[Ha>>2]|0)|0)==0&1;if(!(La&(c[Ga>>2]|0)>>>0<((c[Ia>>2]|0)+-3|0)>>>0))break;if(hp()|0){La=c[Ha>>2]|0;Qa=c[Ja>>2]|0;ke=c[Ka>>2]|0;c[Ba>>2]=c[Ga>>2];c[Ca>>2]=La;c[Da>>2]=Qa;c[Ea>>2]=ke;c[Fa>>2]=ip(c[Ca>>2]|0,c[Ea>>2]|0)|0;ke=c[Ba>>2]|0;Qa=(c[Da>>2]|0)+(c[Fa>>2]<<2)|0;a[ke>>0]=a[Qa>>0]|0;a[ke+1>>0]=a[Qa+1>>0]|0;jp(c[Ca>>2]|0,d[(c[Da>>2]|0)+(c[Fa>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[Da>>2]|0)+(c[Fa>>2]<<2)+3>>0]|0);}hp()|0;Qa=c[Ha>>2]|0;ke=c[Ja>>2]|0;La=c[Ka>>2]|0;c[wa>>2]=c[Ga>>2];c[xa>>2]=Qa;c[ya>>2]=ke;c[za>>2]=La;c[Aa>>2]=ip(c[xa>>2]|0,c[za>>2]|0)|0;La=c[wa>>2]|0;ke=(c[ya>>2]|0)+(c[Aa>>2]<<2)|0;a[La>>0]=a[ke>>0]|0;a[La+1>>0]=a[ke+1>>0]|0;jp(c[xa>>2]|0,d[(c[ya>>2]|0)+(c[Aa>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ya>>2]|0)+(c[Aa>>2]<<2)+3>>0]|0);if(hp()|0){ke=c[Ha>>2]|0;La=c[Ja>>2]|0;Qa=c[Ka>>2]|0;c[ra>>2]=c[Ga>>2];c[sa>>2]=ke;c[ta>>2]=La;c[ua>>2]=Qa;c[va>>2]=ip(c[sa>>2]|0,c[ua>>2]|0)|0;Qa=c[ra>>2]|0;La=(c[ta>>2]|0)+(c[va>>2]<<2)|0;a[Qa>>0]=a[La>>0]|0;a[Qa+1>>0]=a[La+1>>0]|0;jp(c[sa>>2]|0,d[(c[ta>>2]|0)+(c[va>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ta>>2]|0)+(c[va>>2]<<2)+3>>0]|0);}La=c[Ha>>2]|0;Qa=c[Ja>>2]|0;ke=c[Ka>>2]|0;c[ma>>2]=c[Ga>>2];c[na>>2]=La;c[oa>>2]=Qa;c[pa>>2]=ke;c[qa>>2]=ip(c[na>>2]|0,c[pa>>2]|0)|0;ke=c[ma>>2]|0;Qa=(c[oa>>2]|0)+(c[qa>>2]<<2)|0;a[ke>>0]=a[Qa>>0]|0;a[ke+1>>0]=a[Qa+1>>0]|0;jp(c[na>>2]|0,d[(c[oa>>2]|0)+(c[qa>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[oa>>2]|0)+(c[qa>>2]<<2)+3>>0]|0);}while(1){qa=(gp(c[Ha>>2]|0)|0)==0&1;if(!(qa&(c[Ga>>2]|0)>>>0<=((c[Ia>>2]|0)+-2|0)>>>0))break;qa=c[Ha>>2]|0;oa=c[Ja>>2]|0;na=c[Ka>>2]|0;c[ha>>2]=c[Ga>>2];c[ia>>2]=qa;c[ja>>2]=oa;c[ka>>2]=na;c[la>>2]=ip(c[ia>>2]|0,c[ka>>2]|0)|0;na=c[ha>>2]|0;oa=(c[ja>>2]|0)+(c[la>>2]<<2)|0;a[na>>0]=a[oa>>0]|0;a[na+1>>0]=a[oa+1>>0]|0;jp(c[ia>>2]|0,d[(c[ja>>2]|0)+(c[la>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ja>>2]|0)+(c[la>>2]<<2)+3>>0]|0);}while(1){Fe=c[Ga>>2]|0;if((c[Ga>>2]|0)>>>0>((c[Ia>>2]|0)+-2|0)>>>0)break;la=c[Ha>>2]|0;ja=c[Ja>>2]|0;ia=c[Ka>>2]|0;c[ca>>2]=Fe;c[da>>2]=la;c[ea>>2]=ja;c[fa>>2]=ia;c[ga>>2]=ip(c[da>>2]|0,c[fa>>2]|0)|0;ia=c[ca>>2]|0;ja=(c[ea>>2]|0)+(c[ga>>2]<<2)|0;a[ia>>0]=a[ja>>0]|0;a[ia+1>>0]=a[ja+1>>0]|0;jp(c[da>>2]|0,d[(c[ea>>2]|0)+(c[ga>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ea>>2]|0)+(c[ga>>2]<<2)+3>>0]|0);}if(Fe>>>0<(c[Ia>>2]|0)>>>0){Ia=c[Ha>>2]|0;Ha=c[Ja>>2]|0;Ja=c[Ka>>2]|0;c[Z>>2]=c[Ga>>2];c[_>>2]=Ia;c[$>>2]=Ha;c[aa>>2]=Ja;c[ba>>2]=ip(c[_>>2]|0,c[aa>>2]|0)|0;a[c[Z>>2]>>0]=a[(c[$>>2]|0)+(c[ba>>2]<<2)>>0]|0;Z=c[_>>2]|0;if((d[(c[$>>2]|0)+(c[ba>>2]<<2)+3>>0]|0|0)!=1){if((c[Z+4>>2]|0)>>>0<32?(jp(c[_>>2]|0,d[(c[$>>2]|0)+(c[ba>>2]<<2)+2>>0]|0),(c[(c[_>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[_>>2]|0)+4>>2]=32;}else jp(Z,d[(c[$>>2]|0)+(c[ba>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+1;}Ga=c[Ud>>2]|0;Ud=c[Wd>>2]|0;Wd=c[re>>2]|0;c[T>>2]=c[oe>>2];c[U>>2]=_d;c[V>>2]=Ga;c[W>>2]=Ud;c[X>>2]=Wd;c[Y>>2]=c[T>>2];while(1){Y=(gp(c[U>>2]|0)|0)==0&1;if(!(Y&(c[T>>2]|0)>>>0<((c[V>>2]|0)+-3|0)>>>0))break;if(hp()|0){Y=c[U>>2]|0;Wd=c[W>>2]|0;Ud=c[X>>2]|0;c[O>>2]=c[T>>2];c[P>>2]=Y;c[Q>>2]=Wd;c[R>>2]=Ud;c[S>>2]=ip(c[P>>2]|0,c[R>>2]|0)|0;Ud=c[O>>2]|0;Wd=(c[Q>>2]|0)+(c[S>>2]<<2)|0;a[Ud>>0]=a[Wd>>0]|0;a[Ud+1>>0]=a[Wd+1>>0]|0;jp(c[P>>2]|0,d[(c[Q>>2]|0)+(c[S>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[Q>>2]|0)+(c[S>>2]<<2)+3>>0]|0);}hp()|0;Wd=c[U>>2]|0;Ud=c[W>>2]|0;Y=c[X>>2]|0;c[J>>2]=c[T>>2];c[K>>2]=Wd;c[L>>2]=Ud;c[M>>2]=Y;c[N>>2]=ip(c[K>>2]|0,c[M>>2]|0)|0;Y=c[J>>2]|0;Ud=(c[L>>2]|0)+(c[N>>2]<<2)|0;a[Y>>0]=a[Ud>>0]|0;a[Y+1>>0]=a[Ud+1>>0]|0;jp(c[K>>2]|0,d[(c[L>>2]|0)+(c[N>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[L>>2]|0)+(c[N>>2]<<2)+3>>0]|0);if(hp()|0){Ud=c[U>>2]|0;Y=c[W>>2]|0;Wd=c[X>>2]|0;c[E>>2]=c[T>>2];c[F>>2]=Ud;c[G>>2]=Y;c[H>>2]=Wd;c[I>>2]=ip(c[F>>2]|0,c[H>>2]|0)|0;Wd=c[E>>2]|0;Y=(c[G>>2]|0)+(c[I>>2]<<2)|0;a[Wd>>0]=a[Y>>0]|0;a[Wd+1>>0]=a[Y+1>>0]|0;jp(c[F>>2]|0,d[(c[G>>2]|0)+(c[I>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[G>>2]|0)+(c[I>>2]<<2)+3>>0]|0);}Y=c[U>>2]|0;Wd=c[W>>2]|0;Ud=c[X>>2]|0;c[z>>2]=c[T>>2];c[A>>2]=Y;c[B>>2]=Wd;c[C>>2]=Ud;c[D>>2]=ip(c[A>>2]|0,c[C>>2]|0)|0;Ud=c[z>>2]|0;Wd=(c[B>>2]|0)+(c[D>>2]<<2)|0;a[Ud>>0]=a[Wd>>0]|0;a[Ud+1>>0]=a[Wd+1>>0]|0;jp(c[A>>2]|0,d[(c[B>>2]|0)+(c[D>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[B>>2]|0)+(c[D>>2]<<2)+3>>0]|0);}while(1){D=(gp(c[U>>2]|0)|0)==0&1;if(!(D&(c[T>>2]|0)>>>0<=((c[V>>2]|0)+-2|0)>>>0))break;D=c[U>>2]|0;B=c[W>>2]|0;A=c[X>>2]|0;c[u>>2]=c[T>>2];c[v>>2]=D;c[w>>2]=B;c[x>>2]=A;c[y>>2]=ip(c[v>>2]|0,c[x>>2]|0)|0;A=c[u>>2]|0;B=(c[w>>2]|0)+(c[y>>2]<<2)|0;a[A>>0]=a[B>>0]|0;a[A+1>>0]=a[B+1>>0]|0;jp(c[v>>2]|0,d[(c[w>>2]|0)+(c[y>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[w>>2]|0)+(c[y>>2]<<2)+3>>0]|0);}while(1){Ge=c[T>>2]|0;if((c[T>>2]|0)>>>0>((c[V>>2]|0)+-2|0)>>>0)break;y=c[U>>2]|0;w=c[W>>2]|0;v=c[X>>2]|0;c[p>>2]=Ge;c[q>>2]=y;c[r>>2]=w;c[s>>2]=v;c[t>>2]=ip(c[q>>2]|0,c[s>>2]|0)|0;v=c[p>>2]|0;w=(c[r>>2]|0)+(c[t>>2]<<2)|0;a[v>>0]=a[w>>0]|0;a[v+1>>0]=a[w+1>>0]|0;jp(c[q>>2]|0,d[(c[r>>2]|0)+(c[t>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[r>>2]|0)+(c[t>>2]<<2)+3>>0]|0);}if(Ge>>>0<(c[V>>2]|0)>>>0){V=c[U>>2]|0;U=c[W>>2]|0;W=c[X>>2]|0;c[j>>2]=c[T>>2];c[k>>2]=V;c[m>>2]=U;c[n>>2]=W;c[o>>2]=ip(c[k>>2]|0,c[n>>2]|0)|0;a[c[j>>2]>>0]=a[(c[m>>2]|0)+(c[o>>2]<<2)>>0]|0;j=c[k>>2]|0;if((d[(c[m>>2]|0)+(c[o>>2]<<2)+3>>0]|0|0)!=1){if((c[j+4>>2]|0)>>>0<32?(jp(c[k>>2]|0,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0),(c[(c[k>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[k>>2]|0)+4>>2]=32;}else jp(j,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+1;}T=lp(Xd)|0;Xd=T&(lp(Yd)|0);Yd=Xd&(lp(Zd)|0);c[we>>2]=Yd&(lp(_d)|0);if(c[we>>2]|0){c[Md>>2]=c[Od>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}else{c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}return 0;}function Lp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0;i=l;l=l+1216|0;j=i+1208|0;k=i+1204|0;m=i+1200|0;n=i+1196|0;o=i+1192|0;p=i+1188|0;q=i+1184|0;r=i+1180|0;s=i+1176|0;t=i+1172|0;u=i+1168|0;v=i+1164|0;w=i+1160|0;x=i+1156|0;y=i+1152|0;z=i+1148|0;A=i+1144|0;B=i+1140|0;C=i+1136|0;D=i+1132|0;E=i+1128|0;F=i+1124|0;G=i+1120|0;H=i+1116|0;I=i+1112|0;J=i+1108|0;K=i+1104|0;L=i+1100|0;M=i+1096|0;N=i+1092|0;O=i+1088|0;P=i+1084|0;Q=i+1080|0;R=i+1076|0;S=i+1072|0;T=i+1068|0;U=i+1064|0;V=i+1060|0;W=i+1056|0;X=i+1052|0;Y=i+1048|0;Z=i+1044|0;_=i+1040|0;$=i+1036|0;aa=i+1032|0;ba=i+1028|0;ca=i+1024|0;da=i+1020|0;ea=i+1016|0;fa=i+1012|0;ga=i+1008|0;ha=i+1004|0;ia=i+1e3|0;ja=i+996|0;ka=i+992|0;la=i+988|0;ma=i+984|0;na=i+980|0;oa=i+976|0;pa=i+972|0;qa=i+968|0;ra=i+964|0;sa=i+960|0;ta=i+956|0;ua=i+952|0;va=i+948|0;wa=i+944|0;xa=i+940|0;ya=i+936|0;za=i+932|0;Aa=i+928|0;Ba=i+924|0;Ca=i+920|0;Da=i+916|0;Ea=i+912|0;Fa=i+908|0;Ga=i+904|0;Ha=i+900|0;Ia=i+896|0;Ja=i+892|0;Ka=i+888|0;La=i+884|0;Ma=i+880|0;Na=i+876|0;Oa=i+872|0;Pa=i+868|0;Qa=i+864|0;Ra=i+860|0;Sa=i+856|0;Ta=i+852|0;Ua=i+848|0;Va=i+844|0;Wa=i+840|0;Xa=i+836|0;Ya=i+832|0;Za=i+828|0;_a=i+824|0;$a=i+820|0;ab=i+816|0;bb=i+812|0;cb=i+808|0;db=i+804|0;eb=i+800|0;fb=i+796|0;gb=i+792|0;hb=i+788|0;ib=i+784|0;jb=i+780|0;kb=i+776|0;lb=i+772|0;mb=i+768|0;nb=i+764|0;ob=i+760|0;pb=i+756|0;qb=i+752|0;rb=i+748|0;sb=i+744|0;tb=i+740|0;ub=i+736|0;vb=i+732|0;wb=i+728|0;xb=i+724|0;yb=i+720|0;zb=i+716|0;Ab=i+712|0;Bb=i+708|0;Cb=i+704|0;Db=i+700|0;Eb=i+696|0;Fb=i+692|0;Gb=i+688|0;Hb=i+684|0;Ib=i+680|0;Jb=i+676|0;Kb=i+672|0;Lb=i+668|0;Mb=i+664|0;Nb=i+660|0;Ob=i+656|0;Pb=i+652|0;Qb=i+648|0;Rb=i+644|0;Sb=i+640|0;Tb=i+636|0;Ub=i+632|0;Vb=i+628|0;Wb=i+624|0;Xb=i+620|0;Yb=i+616|0;Zb=i+612|0;_b=i+608|0;$b=i+604|0;ac=i+600|0;bc=i+596|0;cc=i+592|0;dc=i+588|0;ec=i+584|0;fc=i+580|0;gc=i+576|0;hc=i+572|0;ic=i+568|0;jc=i+564|0;kc=i+560|0;lc=i+556|0;mc=i+552|0;nc=i+548|0;oc=i+544|0;pc=i+540|0;qc=i+536|0;rc=i+532|0;sc=i+528|0;tc=i+524|0;uc=i+520|0;vc=i+516|0;wc=i+512|0;xc=i+508|0;yc=i+504|0;zc=i+500|0;Ac=i+496|0;Bc=i+492|0;Cc=i+488|0;Dc=i+484|0;Ec=i+480|0;Fc=i+476|0;Gc=i+472|0;Hc=i+468|0;Ic=i+464|0;Jc=i+460|0;Kc=i+456|0;Lc=i+452|0;Mc=i+448|0;Nc=i+444|0;Oc=i+440|0;Pc=i+436|0;Qc=i+432|0;Rc=i+428|0;Sc=i+424|0;Tc=i+420|0;Uc=i+416|0;Vc=i+412|0;Wc=i+408|0;Xc=i+404|0;Yc=i+400|0;Zc=i+396|0;_c=i+392|0;$c=i+388|0;ad=i+384|0;bd=i+380|0;cd=i+376|0;dd=i+372|0;ed=i+368|0;fd=i+364|0;gd=i+360|0;hd=i+356|0;id=i+352|0;jd=i+348|0;kd=i+344|0;ld=i+340|0;md=i+336|0;nd=i+332|0;od=i+328|0;pd=i+324|0;qd=i+320|0;rd=i+316|0;sd=i+312|0;td=i+308|0;ud=i+304|0;vd=i+300|0;wd=i+296|0;xd=i+292|0;yd=i+288|0;zd=i+284|0;Ad=i+280|0;Bd=i+276|0;Cd=i+272|0;Dd=i+268|0;Ed=i+264|0;Fd=i+260|0;Gd=i+256|0;Hd=i+252|0;Id=i+248|0;Jd=i+244|0;Kd=i+240|0;Ld=i+236|0;Md=i+232|0;Nd=i+228|0;Od=i+224|0;Pd=i+220|0;Qd=i+216|0;Rd=i+212|0;Sd=i+208|0;Td=i+204|0;Ud=i+200|0;Vd=i+196|0;Wd=i+192|0;Xd=i+172|0;Yd=i+152|0;Zd=i+132|0;_d=i+112|0;$d=i+108|0;ae=i+104|0;be=i+100|0;ce=i+96|0;de=i+92|0;ee=i+88|0;fe=i+84|0;ge=i+80|0;he=i+76|0;ie=i+72|0;je=i+68|0;ke=i+64|0;le=i+60|0;me=i+56|0;ne=i+52|0;oe=i+48|0;pe=i+44|0;qe=i+1212|0;re=i+40|0;se=i+36|0;te=i+32|0;ue=i+28|0;ve=i+24|0;we=i+20|0;xe=i+16|0;ye=i+12|0;ze=i+8|0;Ae=i+4|0;Be=i;c[xe>>2]=b;c[ye>>2]=e;c[ze>>2]=f;c[Ae>>2]=g;c[Be>>2]=h;h=c[ye>>2]|0;ye=c[ze>>2]|0;ze=c[Ae>>2]|0;Ae=c[Be>>2]|0;c[Nd>>2]=c[xe>>2];c[Od>>2]=h;c[Pd>>2]=ye;c[Qd>>2]=ze;c[Rd>>2]=Ae;if((c[Qd>>2]|0)>>>0<10){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}c[Sd>>2]=c[Pd>>2];c[Td>>2]=c[Nd>>2];c[Ud>>2]=(c[Td>>2]|0)+(c[Od>>2]|0);c[Vd>>2]=(c[Rd>>2]|0)+4;c[Wd>>2]=c[Vd>>2];c[$d>>2]=(yp(c[Sd>>2]|0)|0)&65535;c[ae>>2]=(yp((c[Sd>>2]|0)+2|0)|0)&65535;c[be>>2]=(yp((c[Sd>>2]|0)+4|0)|0)&65535;c[ce>>2]=(c[Qd>>2]|0)-((c[$d>>2]|0)+(c[ae>>2]|0)+(c[be>>2]|0)+6);c[de>>2]=(c[Sd>>2]|0)+6;c[ee>>2]=(c[de>>2]|0)+(c[$d>>2]|0);c[fe>>2]=(c[ee>>2]|0)+(c[ae>>2]|0);c[ge>>2]=(c[fe>>2]|0)+(c[be>>2]|0);c[he>>2]=(((c[Od>>2]|0)+3|0)>>>0)/4|0;c[ie>>2]=(c[Td>>2]|0)+(c[he>>2]|0);c[je>>2]=(c[ie>>2]|0)+(c[he>>2]|0);c[ke>>2]=(c[je>>2]|0)+(c[he>>2]|0);c[le>>2]=c[Td>>2];c[me>>2]=c[ie>>2];c[ne>>2]=c[je>>2];c[oe>>2]=c[ke>>2];bp(qe,c[Rd>>2]|0);c[re>>2]=d[qe+2>>0];if((c[ce>>2]|0)>>>0>(c[Qd>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}c[se>>2]=fp(Xd,c[de>>2]|0,c[$d>>2]|0)|0;if(ap(c[se>>2]|0)|0){c[Md>>2]=c[se>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}c[te>>2]=fp(Yd,c[ee>>2]|0,c[ae>>2]|0)|0;if(ap(c[te>>2]|0)|0){c[Md>>2]=c[te>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}c[ue>>2]=fp(Zd,c[fe>>2]|0,c[be>>2]|0)|0;if(ap(c[ue>>2]|0)|0){c[Md>>2]=c[ue>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}c[ve>>2]=fp(_d,c[ge>>2]|0,c[ce>>2]|0)|0;if(ap(c[ve>>2]|0)|0){c[Md>>2]=c[ve>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}ve=gp(Xd)|0;ce=ve|(gp(Yd)|0);ve=ce|(gp(Zd)|0);c[pe>>2]=ve|(gp(_d)|0);while(1){if(!(((c[pe>>2]|0)==0?(c[oe>>2]|0)>>>0<((c[Ud>>2]|0)+-3|0)>>>0:0)|0))break;if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Hd>>2]=c[le>>2];c[Id>>2]=Xd;c[Jd>>2]=ve;c[Kd>>2]=ce;c[Ld>>2]=ip(c[Id>>2]|0,c[Kd>>2]|0)|0;ce=c[Hd>>2]|0;ve=(c[Jd>>2]|0)+(c[Ld>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Id>>2]|0,d[(c[Jd>>2]|0)+(c[Ld>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[Jd>>2]|0)+(c[Ld>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Cd>>2]=c[me>>2];c[Dd>>2]=Yd;c[Ed>>2]=ve;c[Fd>>2]=ce;c[Gd>>2]=ip(c[Dd>>2]|0,c[Fd>>2]|0)|0;ce=c[Cd>>2]|0;ve=(c[Ed>>2]|0)+(c[Gd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Dd>>2]|0,d[(c[Ed>>2]|0)+(c[Gd>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[Ed>>2]|0)+(c[Gd>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[xd>>2]=c[ne>>2];c[yd>>2]=Zd;c[zd>>2]=ve;c[Ad>>2]=ce;c[Bd>>2]=ip(c[yd>>2]|0,c[Ad>>2]|0)|0;ce=c[xd>>2]|0;ve=(c[zd>>2]|0)+(c[Bd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[yd>>2]|0,d[(c[zd>>2]|0)+(c[Bd>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[zd>>2]|0)+(c[Bd>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[sd>>2]=c[oe>>2];c[td>>2]=_d;c[ud>>2]=ve;c[vd>>2]=ce;c[wd>>2]=ip(c[td>>2]|0,c[vd>>2]|0)|0;ce=c[sd>>2]|0;ve=(c[ud>>2]|0)+(c[wd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[td>>2]|0,d[(c[ud>>2]|0)+(c[wd>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[ud>>2]|0)+(c[wd>>2]<<2)+3>>0]|0);}hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[nd>>2]=c[le>>2];c[od>>2]=Xd;c[pd>>2]=ve;c[qd>>2]=ce;c[rd>>2]=ip(c[od>>2]|0,c[qd>>2]|0)|0;ce=c[nd>>2]|0;ve=(c[pd>>2]|0)+(c[rd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[od>>2]|0,d[(c[pd>>2]|0)+(c[rd>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[pd>>2]|0)+(c[rd>>2]<<2)+3>>0]|0);hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[id>>2]=c[me>>2];c[jd>>2]=Yd;c[kd>>2]=ve;c[ld>>2]=ce;c[md>>2]=ip(c[jd>>2]|0,c[ld>>2]|0)|0;ce=c[id>>2]|0;ve=(c[kd>>2]|0)+(c[md>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[jd>>2]|0,d[(c[kd>>2]|0)+(c[md>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[kd>>2]|0)+(c[md>>2]<<2)+3>>0]|0);hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[dd>>2]=c[ne>>2];c[ed>>2]=Zd;c[fd>>2]=ve;c[gd>>2]=ce;c[hd>>2]=ip(c[ed>>2]|0,c[gd>>2]|0)|0;ce=c[dd>>2]|0;ve=(c[fd>>2]|0)+(c[hd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[ed>>2]|0,d[(c[fd>>2]|0)+(c[hd>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[fd>>2]|0)+(c[hd>>2]<<2)+3>>0]|0);hp()|0;ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[_c>>2]=c[oe>>2];c[$c>>2]=_d;c[ad>>2]=ve;c[bd>>2]=ce;c[cd>>2]=ip(c[$c>>2]|0,c[bd>>2]|0)|0;ce=c[_c>>2]|0;ve=(c[ad>>2]|0)+(c[cd>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[$c>>2]|0,d[(c[ad>>2]|0)+(c[cd>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[ad>>2]|0)+(c[cd>>2]<<2)+3>>0]|0);if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Vc>>2]=c[le>>2];c[Wc>>2]=Xd;c[Xc>>2]=ve;c[Yc>>2]=ce;c[Zc>>2]=ip(c[Wc>>2]|0,c[Yc>>2]|0)|0;ce=c[Vc>>2]|0;ve=(c[Xc>>2]|0)+(c[Zc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Wc>>2]|0,d[(c[Xc>>2]|0)+(c[Zc>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[Xc>>2]|0)+(c[Zc>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Qc>>2]=c[me>>2];c[Rc>>2]=Yd;c[Sc>>2]=ve;c[Tc>>2]=ce;c[Uc>>2]=ip(c[Rc>>2]|0,c[Tc>>2]|0)|0;ce=c[Qc>>2]|0;ve=(c[Sc>>2]|0)+(c[Uc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Rc>>2]|0,d[(c[Sc>>2]|0)+(c[Uc>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[Sc>>2]|0)+(c[Uc>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Lc>>2]=c[ne>>2];c[Mc>>2]=Zd;c[Nc>>2]=ve;c[Oc>>2]=ce;c[Pc>>2]=ip(c[Mc>>2]|0,c[Oc>>2]|0)|0;ce=c[Lc>>2]|0;ve=(c[Nc>>2]|0)+(c[Pc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Mc>>2]|0,d[(c[Nc>>2]|0)+(c[Pc>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[Nc>>2]|0)+(c[Pc>>2]<<2)+3>>0]|0);}if(hp()|0){ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Gc>>2]=c[oe>>2];c[Hc>>2]=_d;c[Ic>>2]=ve;c[Jc>>2]=ce;c[Kc>>2]=ip(c[Hc>>2]|0,c[Jc>>2]|0)|0;ce=c[Gc>>2]|0;ve=(c[Ic>>2]|0)+(c[Kc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Hc>>2]|0,d[(c[Ic>>2]|0)+(c[Kc>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[Ic>>2]|0)+(c[Kc>>2]<<2)+3>>0]|0);}ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[Bc>>2]=c[le>>2];c[Cc>>2]=Xd;c[Dc>>2]=ve;c[Ec>>2]=ce;c[Fc>>2]=ip(c[Cc>>2]|0,c[Ec>>2]|0)|0;ce=c[Bc>>2]|0;ve=(c[Dc>>2]|0)+(c[Fc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[Cc>>2]|0,d[(c[Dc>>2]|0)+(c[Fc>>2]<<2)+2>>0]|0);c[le>>2]=(c[le>>2]|0)+(d[(c[Dc>>2]|0)+(c[Fc>>2]<<2)+3>>0]|0);ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[wc>>2]=c[me>>2];c[xc>>2]=Yd;c[yc>>2]=ve;c[zc>>2]=ce;c[Ac>>2]=ip(c[xc>>2]|0,c[zc>>2]|0)|0;ce=c[wc>>2]|0;ve=(c[yc>>2]|0)+(c[Ac>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[xc>>2]|0,d[(c[yc>>2]|0)+(c[Ac>>2]<<2)+2>>0]|0);c[me>>2]=(c[me>>2]|0)+(d[(c[yc>>2]|0)+(c[Ac>>2]<<2)+3>>0]|0);ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[rc>>2]=c[ne>>2];c[sc>>2]=Zd;c[tc>>2]=ve;c[uc>>2]=ce;c[vc>>2]=ip(c[sc>>2]|0,c[uc>>2]|0)|0;ce=c[rc>>2]|0;ve=(c[tc>>2]|0)+(c[vc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[sc>>2]|0,d[(c[tc>>2]|0)+(c[vc>>2]<<2)+2>>0]|0);c[ne>>2]=(c[ne>>2]|0)+(d[(c[tc>>2]|0)+(c[vc>>2]<<2)+3>>0]|0);ve=c[Wd>>2]|0;ce=c[re>>2]|0;c[mc>>2]=c[oe>>2];c[nc>>2]=_d;c[oc>>2]=ve;c[pc>>2]=ce;c[qc>>2]=ip(c[nc>>2]|0,c[pc>>2]|0)|0;ce=c[mc>>2]|0;ve=(c[oc>>2]|0)+(c[qc>>2]<<2)|0;a[ce>>0]=a[ve>>0]|0;a[ce+1>>0]=a[ve+1>>0]|0;jp(c[nc>>2]|0,d[(c[oc>>2]|0)+(c[qc>>2]<<2)+2>>0]|0);c[oe>>2]=(c[oe>>2]|0)+(d[(c[oc>>2]|0)+(c[qc>>2]<<2)+3>>0]|0);ve=gp(Xd)|0;ce=ve|(gp(Yd)|0);ve=ce|(gp(Zd)|0);c[pe>>2]=ve|(gp(_d)|0);}if((c[le>>2]|0)>>>0>(c[ie>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}if((c[me>>2]|0)>>>0>(c[je>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}if((c[ne>>2]|0)>>>0>(c[ke>>2]|0)>>>0){c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}pe=c[ie>>2]|0;ie=c[Wd>>2]|0;qc=c[re>>2]|0;c[gc>>2]=c[le>>2];c[hc>>2]=Xd;c[ic>>2]=pe;c[jc>>2]=ie;c[kc>>2]=qc;c[lc>>2]=c[gc>>2];while(1){lc=(gp(c[hc>>2]|0)|0)==0&1;if(!(lc&(c[gc>>2]|0)>>>0<((c[ic>>2]|0)+-3|0)>>>0))break;if(hp()|0){lc=c[hc>>2]|0;qc=c[jc>>2]|0;ie=c[kc>>2]|0;c[bc>>2]=c[gc>>2];c[cc>>2]=lc;c[dc>>2]=qc;c[ec>>2]=ie;c[fc>>2]=ip(c[cc>>2]|0,c[ec>>2]|0)|0;ie=c[bc>>2]|0;qc=(c[dc>>2]|0)+(c[fc>>2]<<2)|0;a[ie>>0]=a[qc>>0]|0;a[ie+1>>0]=a[qc+1>>0]|0;jp(c[cc>>2]|0,d[(c[dc>>2]|0)+(c[fc>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[dc>>2]|0)+(c[fc>>2]<<2)+3>>0]|0);}hp()|0;qc=c[hc>>2]|0;ie=c[jc>>2]|0;lc=c[kc>>2]|0;c[Yb>>2]=c[gc>>2];c[Zb>>2]=qc;c[_b>>2]=ie;c[$b>>2]=lc;c[ac>>2]=ip(c[Zb>>2]|0,c[$b>>2]|0)|0;lc=c[Yb>>2]|0;ie=(c[_b>>2]|0)+(c[ac>>2]<<2)|0;a[lc>>0]=a[ie>>0]|0;a[lc+1>>0]=a[ie+1>>0]|0;jp(c[Zb>>2]|0,d[(c[_b>>2]|0)+(c[ac>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[_b>>2]|0)+(c[ac>>2]<<2)+3>>0]|0);if(hp()|0){ie=c[hc>>2]|0;lc=c[jc>>2]|0;qc=c[kc>>2]|0;c[Tb>>2]=c[gc>>2];c[Ub>>2]=ie;c[Vb>>2]=lc;c[Wb>>2]=qc;c[Xb>>2]=ip(c[Ub>>2]|0,c[Wb>>2]|0)|0;qc=c[Tb>>2]|0;lc=(c[Vb>>2]|0)+(c[Xb>>2]<<2)|0;a[qc>>0]=a[lc>>0]|0;a[qc+1>>0]=a[lc+1>>0]|0;jp(c[Ub>>2]|0,d[(c[Vb>>2]|0)+(c[Xb>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Vb>>2]|0)+(c[Xb>>2]<<2)+3>>0]|0);}lc=c[hc>>2]|0;qc=c[jc>>2]|0;ie=c[kc>>2]|0;c[Ob>>2]=c[gc>>2];c[Pb>>2]=lc;c[Qb>>2]=qc;c[Rb>>2]=ie;c[Sb>>2]=ip(c[Pb>>2]|0,c[Rb>>2]|0)|0;ie=c[Ob>>2]|0;qc=(c[Qb>>2]|0)+(c[Sb>>2]<<2)|0;a[ie>>0]=a[qc>>0]|0;a[ie+1>>0]=a[qc+1>>0]|0;jp(c[Pb>>2]|0,d[(c[Qb>>2]|0)+(c[Sb>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Qb>>2]|0)+(c[Sb>>2]<<2)+3>>0]|0);}while(1){Sb=(gp(c[hc>>2]|0)|0)==0&1;if(!(Sb&(c[gc>>2]|0)>>>0<=((c[ic>>2]|0)+-2|0)>>>0))break;Sb=c[hc>>2]|0;Qb=c[jc>>2]|0;Pb=c[kc>>2]|0;c[Jb>>2]=c[gc>>2];c[Kb>>2]=Sb;c[Lb>>2]=Qb;c[Mb>>2]=Pb;c[Nb>>2]=ip(c[Kb>>2]|0,c[Mb>>2]|0)|0;Pb=c[Jb>>2]|0;Qb=(c[Lb>>2]|0)+(c[Nb>>2]<<2)|0;a[Pb>>0]=a[Qb>>0]|0;a[Pb+1>>0]=a[Qb+1>>0]|0;jp(c[Kb>>2]|0,d[(c[Lb>>2]|0)+(c[Nb>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Lb>>2]|0)+(c[Nb>>2]<<2)+3>>0]|0);}while(1){De=c[gc>>2]|0;if((c[gc>>2]|0)>>>0>((c[ic>>2]|0)+-2|0)>>>0)break;Nb=c[hc>>2]|0;Lb=c[jc>>2]|0;Kb=c[kc>>2]|0;c[Eb>>2]=De;c[Fb>>2]=Nb;c[Gb>>2]=Lb;c[Hb>>2]=Kb;c[Ib>>2]=ip(c[Fb>>2]|0,c[Hb>>2]|0)|0;Kb=c[Eb>>2]|0;Lb=(c[Gb>>2]|0)+(c[Ib>>2]<<2)|0;a[Kb>>0]=a[Lb>>0]|0;a[Kb+1>>0]=a[Lb+1>>0]|0;jp(c[Fb>>2]|0,d[(c[Gb>>2]|0)+(c[Ib>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+(d[(c[Gb>>2]|0)+(c[Ib>>2]<<2)+3>>0]|0);}if(De>>>0<(c[ic>>2]|0)>>>0){ic=c[hc>>2]|0;hc=c[jc>>2]|0;jc=c[kc>>2]|0;c[zb>>2]=c[gc>>2];c[Ab>>2]=ic;c[Bb>>2]=hc;c[Cb>>2]=jc;c[Db>>2]=ip(c[Ab>>2]|0,c[Cb>>2]|0)|0;a[c[zb>>2]>>0]=a[(c[Bb>>2]|0)+(c[Db>>2]<<2)>>0]|0;zb=c[Ab>>2]|0;if((d[(c[Bb>>2]|0)+(c[Db>>2]<<2)+3>>0]|0|0)!=1){if((c[zb+4>>2]|0)>>>0<32?(jp(c[Ab>>2]|0,d[(c[Bb>>2]|0)+(c[Db>>2]<<2)+2>>0]|0),(c[(c[Ab>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[Ab>>2]|0)+4>>2]=32;}else jp(zb,d[(c[Bb>>2]|0)+(c[Db>>2]<<2)+2>>0]|0);c[gc>>2]=(c[gc>>2]|0)+1;}gc=c[je>>2]|0;je=c[Wd>>2]|0;Db=c[re>>2]|0;c[tb>>2]=c[me>>2];c[ub>>2]=Yd;c[vb>>2]=gc;c[wb>>2]=je;c[xb>>2]=Db;c[yb>>2]=c[tb>>2];while(1){yb=(gp(c[ub>>2]|0)|0)==0&1;if(!(yb&(c[tb>>2]|0)>>>0<((c[vb>>2]|0)+-3|0)>>>0))break;if(hp()|0){yb=c[ub>>2]|0;Db=c[wb>>2]|0;je=c[xb>>2]|0;c[ob>>2]=c[tb>>2];c[pb>>2]=yb;c[qb>>2]=Db;c[rb>>2]=je;c[sb>>2]=ip(c[pb>>2]|0,c[rb>>2]|0)|0;je=c[ob>>2]|0;Db=(c[qb>>2]|0)+(c[sb>>2]<<2)|0;a[je>>0]=a[Db>>0]|0;a[je+1>>0]=a[Db+1>>0]|0;jp(c[pb>>2]|0,d[(c[qb>>2]|0)+(c[sb>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[qb>>2]|0)+(c[sb>>2]<<2)+3>>0]|0);}hp()|0;Db=c[ub>>2]|0;je=c[wb>>2]|0;yb=c[xb>>2]|0;c[jb>>2]=c[tb>>2];c[kb>>2]=Db;c[lb>>2]=je;c[mb>>2]=yb;c[nb>>2]=ip(c[kb>>2]|0,c[mb>>2]|0)|0;yb=c[jb>>2]|0;je=(c[lb>>2]|0)+(c[nb>>2]<<2)|0;a[yb>>0]=a[je>>0]|0;a[yb+1>>0]=a[je+1>>0]|0;jp(c[kb>>2]|0,d[(c[lb>>2]|0)+(c[nb>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[lb>>2]|0)+(c[nb>>2]<<2)+3>>0]|0);if(hp()|0){je=c[ub>>2]|0;yb=c[wb>>2]|0;Db=c[xb>>2]|0;c[eb>>2]=c[tb>>2];c[fb>>2]=je;c[gb>>2]=yb;c[hb>>2]=Db;c[ib>>2]=ip(c[fb>>2]|0,c[hb>>2]|0)|0;Db=c[eb>>2]|0;yb=(c[gb>>2]|0)+(c[ib>>2]<<2)|0;a[Db>>0]=a[yb>>0]|0;a[Db+1>>0]=a[yb+1>>0]|0;jp(c[fb>>2]|0,d[(c[gb>>2]|0)+(c[ib>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[gb>>2]|0)+(c[ib>>2]<<2)+3>>0]|0);}yb=c[ub>>2]|0;Db=c[wb>>2]|0;je=c[xb>>2]|0;c[$a>>2]=c[tb>>2];c[ab>>2]=yb;c[bb>>2]=Db;c[cb>>2]=je;c[db>>2]=ip(c[ab>>2]|0,c[cb>>2]|0)|0;je=c[$a>>2]|0;Db=(c[bb>>2]|0)+(c[db>>2]<<2)|0;a[je>>0]=a[Db>>0]|0;a[je+1>>0]=a[Db+1>>0]|0;jp(c[ab>>2]|0,d[(c[bb>>2]|0)+(c[db>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[bb>>2]|0)+(c[db>>2]<<2)+3>>0]|0);}while(1){db=(gp(c[ub>>2]|0)|0)==0&1;if(!(db&(c[tb>>2]|0)>>>0<=((c[vb>>2]|0)+-2|0)>>>0))break;db=c[ub>>2]|0;bb=c[wb>>2]|0;ab=c[xb>>2]|0;c[Wa>>2]=c[tb>>2];c[Xa>>2]=db;c[Ya>>2]=bb;c[Za>>2]=ab;c[_a>>2]=ip(c[Xa>>2]|0,c[Za>>2]|0)|0;ab=c[Wa>>2]|0;bb=(c[Ya>>2]|0)+(c[_a>>2]<<2)|0;a[ab>>0]=a[bb>>0]|0;a[ab+1>>0]=a[bb+1>>0]|0;jp(c[Xa>>2]|0,d[(c[Ya>>2]|0)+(c[_a>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[Ya>>2]|0)+(c[_a>>2]<<2)+3>>0]|0);}while(1){Ee=c[tb>>2]|0;if((c[tb>>2]|0)>>>0>((c[vb>>2]|0)+-2|0)>>>0)break;_a=c[ub>>2]|0;Ya=c[wb>>2]|0;Xa=c[xb>>2]|0;c[Ra>>2]=Ee;c[Sa>>2]=_a;c[Ta>>2]=Ya;c[Ua>>2]=Xa;c[Va>>2]=ip(c[Sa>>2]|0,c[Ua>>2]|0)|0;Xa=c[Ra>>2]|0;Ya=(c[Ta>>2]|0)+(c[Va>>2]<<2)|0;a[Xa>>0]=a[Ya>>0]|0;a[Xa+1>>0]=a[Ya+1>>0]|0;jp(c[Sa>>2]|0,d[(c[Ta>>2]|0)+(c[Va>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+(d[(c[Ta>>2]|0)+(c[Va>>2]<<2)+3>>0]|0);}if(Ee>>>0<(c[vb>>2]|0)>>>0){vb=c[ub>>2]|0;ub=c[wb>>2]|0;wb=c[xb>>2]|0;c[Ma>>2]=c[tb>>2];c[Na>>2]=vb;c[Oa>>2]=ub;c[Pa>>2]=wb;c[Qa>>2]=ip(c[Na>>2]|0,c[Pa>>2]|0)|0;a[c[Ma>>2]>>0]=a[(c[Oa>>2]|0)+(c[Qa>>2]<<2)>>0]|0;Ma=c[Na>>2]|0;if((d[(c[Oa>>2]|0)+(c[Qa>>2]<<2)+3>>0]|0|0)!=1){if((c[Ma+4>>2]|0)>>>0<32?(jp(c[Na>>2]|0,d[(c[Oa>>2]|0)+(c[Qa>>2]<<2)+2>>0]|0),(c[(c[Na>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[Na>>2]|0)+4>>2]=32;}else jp(Ma,d[(c[Oa>>2]|0)+(c[Qa>>2]<<2)+2>>0]|0);c[tb>>2]=(c[tb>>2]|0)+1;}tb=c[ke>>2]|0;ke=c[Wd>>2]|0;Qa=c[re>>2]|0;c[Ga>>2]=c[ne>>2];c[Ha>>2]=Zd;c[Ia>>2]=tb;c[Ja>>2]=ke;c[Ka>>2]=Qa;c[La>>2]=c[Ga>>2];while(1){La=(gp(c[Ha>>2]|0)|0)==0&1;if(!(La&(c[Ga>>2]|0)>>>0<((c[Ia>>2]|0)+-3|0)>>>0))break;if(hp()|0){La=c[Ha>>2]|0;Qa=c[Ja>>2]|0;ke=c[Ka>>2]|0;c[Ba>>2]=c[Ga>>2];c[Ca>>2]=La;c[Da>>2]=Qa;c[Ea>>2]=ke;c[Fa>>2]=ip(c[Ca>>2]|0,c[Ea>>2]|0)|0;ke=c[Ba>>2]|0;Qa=(c[Da>>2]|0)+(c[Fa>>2]<<2)|0;a[ke>>0]=a[Qa>>0]|0;a[ke+1>>0]=a[Qa+1>>0]|0;jp(c[Ca>>2]|0,d[(c[Da>>2]|0)+(c[Fa>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[Da>>2]|0)+(c[Fa>>2]<<2)+3>>0]|0);}hp()|0;Qa=c[Ha>>2]|0;ke=c[Ja>>2]|0;La=c[Ka>>2]|0;c[wa>>2]=c[Ga>>2];c[xa>>2]=Qa;c[ya>>2]=ke;c[za>>2]=La;c[Aa>>2]=ip(c[xa>>2]|0,c[za>>2]|0)|0;La=c[wa>>2]|0;ke=(c[ya>>2]|0)+(c[Aa>>2]<<2)|0;a[La>>0]=a[ke>>0]|0;a[La+1>>0]=a[ke+1>>0]|0;jp(c[xa>>2]|0,d[(c[ya>>2]|0)+(c[Aa>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ya>>2]|0)+(c[Aa>>2]<<2)+3>>0]|0);if(hp()|0){ke=c[Ha>>2]|0;La=c[Ja>>2]|0;Qa=c[Ka>>2]|0;c[ra>>2]=c[Ga>>2];c[sa>>2]=ke;c[ta>>2]=La;c[ua>>2]=Qa;c[va>>2]=ip(c[sa>>2]|0,c[ua>>2]|0)|0;Qa=c[ra>>2]|0;La=(c[ta>>2]|0)+(c[va>>2]<<2)|0;a[Qa>>0]=a[La>>0]|0;a[Qa+1>>0]=a[La+1>>0]|0;jp(c[sa>>2]|0,d[(c[ta>>2]|0)+(c[va>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ta>>2]|0)+(c[va>>2]<<2)+3>>0]|0);}La=c[Ha>>2]|0;Qa=c[Ja>>2]|0;ke=c[Ka>>2]|0;c[ma>>2]=c[Ga>>2];c[na>>2]=La;c[oa>>2]=Qa;c[pa>>2]=ke;c[qa>>2]=ip(c[na>>2]|0,c[pa>>2]|0)|0;ke=c[ma>>2]|0;Qa=(c[oa>>2]|0)+(c[qa>>2]<<2)|0;a[ke>>0]=a[Qa>>0]|0;a[ke+1>>0]=a[Qa+1>>0]|0;jp(c[na>>2]|0,d[(c[oa>>2]|0)+(c[qa>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[oa>>2]|0)+(c[qa>>2]<<2)+3>>0]|0);}while(1){qa=(gp(c[Ha>>2]|0)|0)==0&1;if(!(qa&(c[Ga>>2]|0)>>>0<=((c[Ia>>2]|0)+-2|0)>>>0))break;qa=c[Ha>>2]|0;oa=c[Ja>>2]|0;na=c[Ka>>2]|0;c[ha>>2]=c[Ga>>2];c[ia>>2]=qa;c[ja>>2]=oa;c[ka>>2]=na;c[la>>2]=ip(c[ia>>2]|0,c[ka>>2]|0)|0;na=c[ha>>2]|0;oa=(c[ja>>2]|0)+(c[la>>2]<<2)|0;a[na>>0]=a[oa>>0]|0;a[na+1>>0]=a[oa+1>>0]|0;jp(c[ia>>2]|0,d[(c[ja>>2]|0)+(c[la>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ja>>2]|0)+(c[la>>2]<<2)+3>>0]|0);}while(1){Fe=c[Ga>>2]|0;if((c[Ga>>2]|0)>>>0>((c[Ia>>2]|0)+-2|0)>>>0)break;la=c[Ha>>2]|0;ja=c[Ja>>2]|0;ia=c[Ka>>2]|0;c[ca>>2]=Fe;c[da>>2]=la;c[ea>>2]=ja;c[fa>>2]=ia;c[ga>>2]=ip(c[da>>2]|0,c[fa>>2]|0)|0;ia=c[ca>>2]|0;ja=(c[ea>>2]|0)+(c[ga>>2]<<2)|0;a[ia>>0]=a[ja>>0]|0;a[ia+1>>0]=a[ja+1>>0]|0;jp(c[da>>2]|0,d[(c[ea>>2]|0)+(c[ga>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+(d[(c[ea>>2]|0)+(c[ga>>2]<<2)+3>>0]|0);}if(Fe>>>0<(c[Ia>>2]|0)>>>0){Ia=c[Ha>>2]|0;Ha=c[Ja>>2]|0;Ja=c[Ka>>2]|0;c[Z>>2]=c[Ga>>2];c[_>>2]=Ia;c[$>>2]=Ha;c[aa>>2]=Ja;c[ba>>2]=ip(c[_>>2]|0,c[aa>>2]|0)|0;a[c[Z>>2]>>0]=a[(c[$>>2]|0)+(c[ba>>2]<<2)>>0]|0;Z=c[_>>2]|0;if((d[(c[$>>2]|0)+(c[ba>>2]<<2)+3>>0]|0|0)!=1){if((c[Z+4>>2]|0)>>>0<32?(jp(c[_>>2]|0,d[(c[$>>2]|0)+(c[ba>>2]<<2)+2>>0]|0),(c[(c[_>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[_>>2]|0)+4>>2]=32;}else jp(Z,d[(c[$>>2]|0)+(c[ba>>2]<<2)+2>>0]|0);c[Ga>>2]=(c[Ga>>2]|0)+1;}Ga=c[Ud>>2]|0;Ud=c[Wd>>2]|0;Wd=c[re>>2]|0;c[T>>2]=c[oe>>2];c[U>>2]=_d;c[V>>2]=Ga;c[W>>2]=Ud;c[X>>2]=Wd;c[Y>>2]=c[T>>2];while(1){Y=(gp(c[U>>2]|0)|0)==0&1;if(!(Y&(c[T>>2]|0)>>>0<((c[V>>2]|0)+-3|0)>>>0))break;if(hp()|0){Y=c[U>>2]|0;Wd=c[W>>2]|0;Ud=c[X>>2]|0;c[O>>2]=c[T>>2];c[P>>2]=Y;c[Q>>2]=Wd;c[R>>2]=Ud;c[S>>2]=ip(c[P>>2]|0,c[R>>2]|0)|0;Ud=c[O>>2]|0;Wd=(c[Q>>2]|0)+(c[S>>2]<<2)|0;a[Ud>>0]=a[Wd>>0]|0;a[Ud+1>>0]=a[Wd+1>>0]|0;jp(c[P>>2]|0,d[(c[Q>>2]|0)+(c[S>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[Q>>2]|0)+(c[S>>2]<<2)+3>>0]|0);}hp()|0;Wd=c[U>>2]|0;Ud=c[W>>2]|0;Y=c[X>>2]|0;c[J>>2]=c[T>>2];c[K>>2]=Wd;c[L>>2]=Ud;c[M>>2]=Y;c[N>>2]=ip(c[K>>2]|0,c[M>>2]|0)|0;Y=c[J>>2]|0;Ud=(c[L>>2]|0)+(c[N>>2]<<2)|0;a[Y>>0]=a[Ud>>0]|0;a[Y+1>>0]=a[Ud+1>>0]|0;jp(c[K>>2]|0,d[(c[L>>2]|0)+(c[N>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[L>>2]|0)+(c[N>>2]<<2)+3>>0]|0);if(hp()|0){Ud=c[U>>2]|0;Y=c[W>>2]|0;Wd=c[X>>2]|0;c[E>>2]=c[T>>2];c[F>>2]=Ud;c[G>>2]=Y;c[H>>2]=Wd;c[I>>2]=ip(c[F>>2]|0,c[H>>2]|0)|0;Wd=c[E>>2]|0;Y=(c[G>>2]|0)+(c[I>>2]<<2)|0;a[Wd>>0]=a[Y>>0]|0;a[Wd+1>>0]=a[Y+1>>0]|0;jp(c[F>>2]|0,d[(c[G>>2]|0)+(c[I>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[G>>2]|0)+(c[I>>2]<<2)+3>>0]|0);}Y=c[U>>2]|0;Wd=c[W>>2]|0;Ud=c[X>>2]|0;c[z>>2]=c[T>>2];c[A>>2]=Y;c[B>>2]=Wd;c[C>>2]=Ud;c[D>>2]=ip(c[A>>2]|0,c[C>>2]|0)|0;Ud=c[z>>2]|0;Wd=(c[B>>2]|0)+(c[D>>2]<<2)|0;a[Ud>>0]=a[Wd>>0]|0;a[Ud+1>>0]=a[Wd+1>>0]|0;jp(c[A>>2]|0,d[(c[B>>2]|0)+(c[D>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[B>>2]|0)+(c[D>>2]<<2)+3>>0]|0);}while(1){D=(gp(c[U>>2]|0)|0)==0&1;if(!(D&(c[T>>2]|0)>>>0<=((c[V>>2]|0)+-2|0)>>>0))break;D=c[U>>2]|0;B=c[W>>2]|0;A=c[X>>2]|0;c[u>>2]=c[T>>2];c[v>>2]=D;c[w>>2]=B;c[x>>2]=A;c[y>>2]=ip(c[v>>2]|0,c[x>>2]|0)|0;A=c[u>>2]|0;B=(c[w>>2]|0)+(c[y>>2]<<2)|0;a[A>>0]=a[B>>0]|0;a[A+1>>0]=a[B+1>>0]|0;jp(c[v>>2]|0,d[(c[w>>2]|0)+(c[y>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[w>>2]|0)+(c[y>>2]<<2)+3>>0]|0);}while(1){Ge=c[T>>2]|0;if((c[T>>2]|0)>>>0>((c[V>>2]|0)+-2|0)>>>0)break;y=c[U>>2]|0;w=c[W>>2]|0;v=c[X>>2]|0;c[p>>2]=Ge;c[q>>2]=y;c[r>>2]=w;c[s>>2]=v;c[t>>2]=ip(c[q>>2]|0,c[s>>2]|0)|0;v=c[p>>2]|0;w=(c[r>>2]|0)+(c[t>>2]<<2)|0;a[v>>0]=a[w>>0]|0;a[v+1>>0]=a[w+1>>0]|0;jp(c[q>>2]|0,d[(c[r>>2]|0)+(c[t>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+(d[(c[r>>2]|0)+(c[t>>2]<<2)+3>>0]|0);}if(Ge>>>0<(c[V>>2]|0)>>>0){V=c[U>>2]|0;U=c[W>>2]|0;W=c[X>>2]|0;c[j>>2]=c[T>>2];c[k>>2]=V;c[m>>2]=U;c[n>>2]=W;c[o>>2]=ip(c[k>>2]|0,c[n>>2]|0)|0;a[c[j>>2]>>0]=a[(c[m>>2]|0)+(c[o>>2]<<2)>>0]|0;j=c[k>>2]|0;if((d[(c[m>>2]|0)+(c[o>>2]<<2)+3>>0]|0|0)!=1){if((c[j+4>>2]|0)>>>0<32?(jp(c[k>>2]|0,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0),(c[(c[k>>2]|0)+4>>2]|0)>>>0>32):0)c[(c[k>>2]|0)+4>>2]=32;}else jp(j,d[(c[m>>2]|0)+(c[o>>2]<<2)+2>>0]|0);c[T>>2]=(c[T>>2]|0)+1;}T=lp(Xd)|0;Xd=T&(lp(Yd)|0);Yd=Xd&(lp(Zd)|0);c[we>>2]=Yd&(lp(_d)|0);if(c[we>>2]|0){c[Md>>2]=c[Od>>2];Ce=c[Md>>2]|0;l=i;return Ce|0;}else{c[Md>>2]=-20;Ce=c[Md>>2]|0;l=i;return Ce|0;}return 0;}function Mp(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=l;l=l+48|0;k=j+40|0;m=j+36|0;n=j+32|0;o=j+28|0;p=j+24|0;q=j+20|0;r=j+16|0;s=j+12|0;t=j+8|0;u=j+4|0;v=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=c[p>>2];c[v>>2]=Bp(c[m>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0)|0;s=(ap(c[v>>2]|0)|0)!=0;r=c[v>>2]|0;if(s){c[k>>2]=r;w=c[k>>2]|0;l=j;return w|0;}if(r>>>0>=(c[q>>2]|0)>>>0){c[k>>2]=-72;w=c[k>>2]|0;l=j;return w|0;}else{c[u>>2]=(c[u>>2]|0)+(c[v>>2]|0);c[q>>2]=(c[q>>2]|0)-(c[v>>2]|0);c[k>>2]=Jp(c[n>>2]|0,c[o>>2]|0,c[u>>2]|0,c[q>>2]|0,c[m>>2]|0,c[t>>2]|0)|0;w=c[k>>2]|0;l=j;return w|0;}return 0;}function Np(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=l;l=l+32|0;e=d+20|0;f=d+16|0;g=d+12|0;h=d+8|0;i=d+4|0;j=d;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)>>>0>=(c[e>>2]|0)>>>0)k=15;else k=(c[f>>2]<<4>>>0)/((c[e>>2]|0)>>>0)|0;c[g>>2]=k;c[h>>2]=(c[e>>2]|0)>>>8;c[i>>2]=(c[7008+((c[g>>2]|0)*24|0)>>2]|0)+(N(c[7008+((c[g>>2]|0)*24|0)+4>>2]|0,c[h>>2]|0)|0);c[j>>2]=(c[7008+((c[g>>2]|0)*24|0)+8>>2]|0)+(N(c[7008+((c[g>>2]|0)*24|0)+8+4>>2]|0,c[h>>2]|0)|0);c[j>>2]=(c[j>>2]|0)+((c[j>>2]|0)>>>3);l=d;return(c[j>>2]|0)>>>0<(c[i>>2]|0)>>>0|0;}function Op(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;i=l;l=l+32|0;j=i+20|0;k=i+16|0;m=i+12|0;n=i+8|0;o=i+4|0;p=i;q=i+24|0;c[j>>2]=a;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;bp(q,c[o>>2]|0);h=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;if(d[q+1>>0]|0|0){r=Gp(h,j,k,m,n,o)|0;l=i;return r|0;}else{r=cp(h,j,k,m,n,o)|0;l=i;return r|0;}return 0;}function Pp(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=l;l=l+48|0;k=j+40|0;m=j+36|0;n=j+32|0;o=j+28|0;p=j+24|0;q=j+20|0;r=j+16|0;s=j+12|0;t=j+8|0;u=j+4|0;v=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=c[p>>2];c[v>>2]=$o(c[m>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0)|0;s=(ap(c[v>>2]|0)|0)!=0;r=c[v>>2]|0;if(s){c[k>>2]=r;w=c[k>>2]|0;l=j;return w|0;}if(r>>>0>=(c[q>>2]|0)>>>0){c[k>>2]=-72;w=c[k>>2]|0;l=j;return w|0;}else{c[u>>2]=(c[u>>2]|0)+(c[v>>2]|0);c[q>>2]=(c[q>>2]|0)-(c[v>>2]|0);c[k>>2]=cp(c[n>>2]|0,c[o>>2]|0,c[u>>2]|0,c[q>>2]|0,c[m>>2]|0,c[t>>2]|0)|0;w=c[k>>2]|0;l=j;return w|0;}return 0;}function Qp(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;i=l;l=l+32|0;j=i+20|0;k=i+16|0;m=i+12|0;n=i+8|0;o=i+4|0;p=i;q=i+24|0;c[j>>2]=a;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;bp(q,c[o>>2]|0);h=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;if(d[q+1>>0]|0|0){r=Jp(h,j,k,m,n,o)|0;l=i;return r|0;}else{r=vp(h,j,k,m,n,o)|0;l=i;return r|0;}return 0;}function Rp(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=l;l=l+48|0;k=j+36|0;m=j+32|0;n=j+28|0;o=j+24|0;p=j+20|0;q=j+16|0;r=j+12|0;s=j+8|0;t=j+4|0;u=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;if(!(c[o>>2]|0)){c[k>>2]=-70;v=c[k>>2]|0;l=j;return v|0;}if(!(c[q>>2]|0)){c[k>>2]=-20;v=c[k>>2]|0;l=j;return v|0;}c[u>>2]=Np(c[o>>2]|0,c[q>>2]|0)|0;i=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;p=c[q>>2]|0;q=c[r>>2]|0;r=c[s>>2]|0;s=c[t>>2]|0;if(c[u>>2]|0)w=Mp(i,m,n,o,p,q,r,s)|0;else w=Ap(i,m,n,o,p,q,r,s)|0;c[k>>2]=w;v=c[k>>2]|0;l=j;return v|0;}function Sp(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+48|0;d=b+24|0;e=b+16|0;f=b;c[e>>2]=a;c[(c[e>>2]|0)+28912>>2]=0;c[(c[e>>2]|0)+28940>>2]=0;c[(c[e>>2]|0)+28972>>2]=134217729;c[(c[e>>2]|0)+28952>>2]=0;c[(c[e>>2]|0)+28948>>2]=0;c[(c[e>>2]|0)+28960>>2]=0;c[(c[e>>2]|0)+28964>>2]=0;c[(c[e>>2]|0)+28980>>2]=0;c[(c[e>>2]|0)+28956>>2]=0;Tp(f);c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];f=Up(d)|0;c[(c[e>>2]|0)+28944>>2]=f;l=b;return;}function Tp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+32|0;d=b+28|0;e=b+24|0;f=b+20|0;g=b+16|0;h=b;c[d>>2]=0;c[e>>2]=0;c[f>>2]=0;c[g>>2]=0;c[h>>2]=c[d>>2];c[h+4>>2]=c[e>>2];c[h+8>>2]=c[f>>2];c[h+12>>2]=c[g>>2];c[a>>2]=c[h>>2];c[a+4>>2]=c[h+4>>2];c[a+8>>2]=c[h+8>>2];c[a+12>>2]=c[h+12>>2];l=b;return;}function Up(a){a=a|0;return(c[a+8>>2]&256|0)!=0|0;}function Vp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+32|0;d=b+8|0;e=b+4|0;f=b;if(((c[a>>2]|0)!=0^1)&1^((c[a+4>>2]|0)!=0^1)&1|0){c[e>>2]=0;g=c[e>>2]|0;l=b;return g|0;};c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[f>>2]=Rh(160112,d)|0;if(c[f>>2]|0){d=(c[f>>2]|0)+28920|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[(c[f>>2]|0)+28996>>2]=0;c[(c[f>>2]|0)+29e3>>2]=0;Sp(c[f>>2]|0);c[e>>2]=c[f>>2];g=c[e>>2]|0;l=b;return g|0;}else{c[e>>2]=0;g=c[e>>2]|0;l=b;return g|0;}return 0;}function Wp(){var a=0,b=0,d=0;a=l;l=l+16|0;b=a;c[b>>2]=c[5412];c[b+4>>2]=c[5413];c[b+8>>2]=c[5414];d=Vp(b)|0;l=a;return d|0;}function Xp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+32|0;d=b+20|0;e=b+16|0;f=b+12|0;g=b;c[f>>2]=a;if(!(c[f>>2]|0)){c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;}if(c[(c[f>>2]|0)+28940>>2]|0){c[e>>2]=-64;h=c[e>>2]|0;l=b;return h|0;}a=(c[f>>2]|0)+28920|0;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];Yp(c[(c[f>>2]|0)+28948>>2]|0)|0;c[(c[f>>2]|0)+28948>>2]=0;a=c[(c[f>>2]|0)+28960>>2]|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];Th(a,d);c[(c[f>>2]|0)+28960>>2]=0;if(c[(c[f>>2]|0)+28996>>2]|0)Zp(c[(c[f>>2]|0)+28996>>2]|0,c[(c[f>>2]|0)+29e3>>2]|0)|0;a=c[f>>2]|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];Th(a,d);c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;}function Yp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+32|0;d=b+20|0;e=b+16|0;f=b+12|0;g=b;c[f>>2]=a;if(!(c[f>>2]|0)){c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;}else{a=(c[f>>2]|0)+28732|0;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];a=c[c[f>>2]>>2]|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];Th(a,d);a=c[f>>2]|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];Th(a,d);c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;}return 0;}function Zp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=a;c[g>>2]=b;switch(c[g>>2]|0){case 7:{c[e>>2]=bq(c[f>>2]|0)|0;break;}case 6:{c[e>>2]=aq(c[f>>2]|0)|0;break;}case 5:{c[e>>2]=$p(c[f>>2]|0)|0;break;}case 4:{c[e>>2]=_p(c[f>>2]|0)|0;break;}default:c[e>>2]=-12;}l=d;return c[e>>2]|0;}function _p(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=fq(c[d>>2]|0)|0;l=b;return a|0;}function $p(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;if(!(c[e>>2]|0)){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}else{eq(c[c[e>>2]>>2]|0)|0;Dy(c[(c[e>>2]|0)+48>>2]|0);Dy(c[(c[e>>2]|0)+60>>2]|0);Dy(c[e>>2]|0);c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}return 0;}function aq(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;if(!(c[e>>2]|0)){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}else{dq(c[c[e>>2]>>2]|0)|0;Dy(c[(c[e>>2]|0)+28>>2]|0);Dy(c[(c[e>>2]|0)+40>>2]|0);Dy(c[e>>2]|0);c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}return 0;}function bq(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;if(!(c[e>>2]|0)){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}cq(c[c[e>>2]>>2]|0)|0;if(c[(c[e>>2]|0)+36>>2]|0)xc[c[(c[e>>2]|0)+92+4>>2]&31](c[(c[e>>2]|0)+92+8>>2]|0,c[(c[e>>2]|0)+36>>2]|0);if(c[(c[e>>2]|0)+48>>2]|0)xc[c[(c[e>>2]|0)+92+4>>2]&31](c[(c[e>>2]|0)+92+8>>2]|0,c[(c[e>>2]|0)+48>>2]|0);xc[c[(c[e>>2]|0)+92+4>>2]&31](c[(c[e>>2]|0)+92+8>>2]|0,c[e>>2]|0);c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}function cq(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;if(!(c[e>>2]|0)){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}else{xc[c[(c[e>>2]|0)+21692+4>>2]&31](c[(c[e>>2]|0)+21692+8>>2]|0,c[e>>2]|0);c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}return 0;}function dq(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;Dy(c[d>>2]|0);l=b;return 0;}function eq(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;Dy(c[d>>2]|0);l=b;return 0;}function fq(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;if(!(c[e>>2]|0)){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}else{gq(c[c[e>>2]>>2]|0)|0;Dy(c[(c[e>>2]|0)+40>>2]|0);Dy(c[(c[e>>2]|0)+52>>2]|0);Dy(c[e>>2]|0);c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}return 0;}function gq(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;Dy(c[d>>2]|0);l=b;return 0;}function hq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(jq()|0)!=0;f=kq(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=lq(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function iq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[f>>2]=a;c[g>>2]=b;a:do{if((c[g>>2]|0)>>>0<4)c[e>>2]=0;else{c[h>>2]=hq(c[f>>2]|0)|0;switch(c[h>>2]|0){case-47205084:{c[e>>2]=4;break a;break;}case-47205083:{c[e>>2]=5;break a;break;}case-47205082:{c[e>>2]=6;break a;break;}case-47205081:{c[e>>2]=7;break a;break;}default:{c[e>>2]=0;break a;}}}}while(0);l=d;return c[e>>2]|0;}function jq(){return d[11936]|0|0;}function kq(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function lq(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function mq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=nq(c[e>>2]|0,c[f>>2]|0,0)|0;l=d;return b|0;}function nq(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=l;l=l+48|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+32|0;o=g+8|0;p=g+4|0;q=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=oq(c[k>>2]|0)|0;if((c[j>>2]|0)>>>0<(c[m>>2]|0)>>>0){c[h>>2]=-72;r=c[h>>2]|0;l=g;return r|0;}a[n>>0]=a[(c[i>>2]|0)+((c[m>>2]|0)-1)>>0]|0;c[o>>2]=(d[n>>0]|0)&3;c[p>>2]=(d[n>>0]|0)>>5&1;c[q>>2]=(d[n>>0]|0)>>6;if(c[p>>2]|0)s=(c[q>>2]|0)!=0^1;else s=0;c[h>>2]=(c[m>>2]|0)+(((c[p>>2]|0)!=0^1)&1)+(c[3456+(c[o>>2]<<2)>>2]|0)+(c[3472+(c[q>>2]<<2)>>2]|0)+(s&1);r=c[h>>2]|0;l=g;return r|0;}function oq(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=(c[d>>2]|0)==1?1:5;l=b;return c[e>>2]|0;}function pq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=qq(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,0)|0;l=e;return d|0;}function qq(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0;h=l;l=l+80|0;i=h+72|0;j=h+68|0;k=h+64|0;m=h+60|0;n=h+56|0;o=h+52|0;p=h+48|0;q=h+44|0;r=h+77|0;s=h+40|0;t=h+36|0;u=h+32|0;v=h+28|0;w=h+24|0;x=h+8|0;z=h+20|0;A=h;B=h+76|0;C=h+16|0;c[j>>2]=b;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[k>>2];c[p>>2]=oq(c[n>>2]|0)|0;if((c[m>>2]|0)>>>0<(c[p>>2]|0)>>>0){c[i>>2]=c[p>>2];D=c[i>>2]|0;l=h;return D|0;}if((c[n>>2]|0)!=1?(hq(c[k>>2]|0)|0)!=-47205080:0){if(((hq(c[k>>2]|0)|0)&-16|0)!=407710288){c[i>>2]=-10;D=c[i>>2]|0;l=h;return D|0;}if((c[m>>2]|0)>>>0<8){c[i>>2]=8;D=c[i>>2]|0;l=h;return D|0;}else{g=c[j>>2]|0;f=g+40|0;do{c[g>>2]=0;g=g+4|0;}while((g|0)<(f|0));g=hq((c[k>>2]|0)+4|0)|0;f=c[j>>2]|0;c[f>>2]=g;c[f+4>>2]=0;c[(c[j>>2]|0)+20>>2]=1;c[i>>2]=0;D=c[i>>2]|0;l=h;return D|0;}}c[q>>2]=nq(c[k>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;n=c[q>>2]|0;if((c[m>>2]|0)>>>0<(c[q>>2]|0)>>>0){c[i>>2]=n;D=c[i>>2]|0;l=h;return D|0;}c[(c[j>>2]|0)+24>>2]=n;a[r>>0]=a[(c[o>>2]|0)+((c[p>>2]|0)-1)>>0]|0;c[s>>2]=c[p>>2];c[t>>2]=(d[r>>0]|0)&3;c[u>>2]=(d[r>>0]|0)>>2&1;c[v>>2]=(d[r>>0]|0)>>5&1;c[w>>2]=(d[r>>0]|0)>>6;p=x;c[p>>2]=0;c[p+4>>2]=0;c[z>>2]=0;p=A;c[p>>2]=-1;c[p+4>>2]=-1;if((d[r>>0]|0)&8|0){c[i>>2]=-14;D=c[i>>2]|0;l=h;return D|0;}do{if(!(c[v>>2]|0)){r=c[o>>2]|0;p=c[s>>2]|0;c[s>>2]=p+1;a[B>>0]=a[r+p>>0]|0;c[C>>2]=((d[B>>0]|0)>>3)+10;if((c[C>>2]|0)>>>0<=30){p=jE(1,0,c[C>>2]|0)|0;r=x;c[r>>2]=p;c[r+4>>2]=y;r=x;p=iE(c[r>>2]|0,c[r+4>>2]|0,3)|0;r=(d[B>>0]|0)&7;n=cE(p|0,y|0,r|0,((r|0)<0)<<31>>31|0)|0;r=x;p=dE(c[r>>2]|0,c[r+4>>2]|0,n|0,y|0)|0;n=x;c[n>>2]=p;c[n+4>>2]=y;break;}c[i>>2]=-16;D=c[i>>2]|0;l=h;return D|0;}}while(0);switch(c[t>>2]|0){case 3:{c[z>>2]=hq((c[o>>2]|0)+(c[s>>2]|0)|0)|0;c[s>>2]=(c[s>>2]|0)+4;break;}case 1:{c[z>>2]=d[(c[o>>2]|0)+(c[s>>2]|0)>>0];c[s>>2]=(c[s>>2]|0)+1;break;}case 2:{c[z>>2]=(rq((c[o>>2]|0)+(c[s>>2]|0)|0)|0)&65535;c[s>>2]=(c[s>>2]|0)+2;break;}default:{}}switch(c[w>>2]|0){case 3:{w=A;c[w>>2]=sq((c[o>>2]|0)+(c[s>>2]|0)|0)|0;c[w+4>>2]=y;break;}case 1:{w=((rq((c[o>>2]|0)+(c[s>>2]|0)|0)|0)&65535)+256|0;t=A;c[t>>2]=w;c[t+4>>2]=((w|0)<0)<<31>>31;break;}case 2:{w=A;c[w>>2]=hq((c[o>>2]|0)+(c[s>>2]|0)|0)|0;c[w+4>>2]=0;break;}default:if(c[v>>2]|0){w=A;c[w>>2]=d[(c[o>>2]|0)+(c[s>>2]|0)>>0];c[w+4>>2]=0;}}if(c[v>>2]|0){v=A;w=c[v+4>>2]|0;s=x;c[s>>2]=c[v>>2];c[s+4>>2]=w;}c[(c[j>>2]|0)+20>>2]=0;w=A;A=c[w+4>>2]|0;s=c[j>>2]|0;c[s>>2]=c[w>>2];c[s+4>>2]=A;A=x;s=c[A+4>>2]|0;w=(c[j>>2]|0)+8|0;c[w>>2]=c[A>>2];c[w+4>>2]=s;s=x;w=c[s+4>>2]|0;A=w>>>0<0|(w|0)==0&(c[s>>2]|0)>>>0<131072;s=x;x=c[s+4>>2]|0;x=A?c[s>>2]|0:131072;c[(c[j>>2]|0)+16>>2]=x;c[(c[j>>2]|0)+28>>2]=c[z>>2];c[(c[j>>2]|0)+32>>2]=c[u>>2];c[i>>2]=0;D=c[i>>2]|0;l=h;return D|0;}function rq(a){a=a|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=a;a=(jq()|0)!=0;i=c[g>>2]|0;if(a){b[f>>1]=vq(i)|0;j=b[f>>1]|0;l=e;return j|0;}else{c[h>>2]=i;b[f>>1]=(d[c[h>>2]>>0]|0)+((d[(c[h>>2]|0)+1>>0]|0)<<8);j=b[f>>1]|0;l=e;return j|0;}return 0;}function sq(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(jq()|0)!=0;f=tq(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=uq(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function tq(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function uq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function vq(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function wq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;d=l;l=l+64|0;e=d+48|0;f=d+60|0;g=d+56|0;h=d+40|0;i=d;c[f>>2]=a;c[g>>2]=b;b=(iq(c[f>>2]|0,c[g>>2]|0)|0)!=0;a=c[f>>2]|0;f=c[g>>2]|0;do{if(!b){if(pq(i,a,f)|0){g=e;c[g>>2]=-2;c[g+4>>2]=-1;break;}if((c[i+20>>2]|0)==1){g=e;c[g>>2]=0;c[g+4>>2]=0;break;}else{g=i;j=c[g+4>>2]|0;k=e;c[k>>2]=c[g>>2];c[k+4>>2]=j;break;}}else{j=xq(a,f)|0;k=h;c[k>>2]=j;c[k+4>>2]=y;k=h;j=(c[k>>2]|0)==0&(c[k+4>>2]|0)==0;k=h;g=j?-1:c[k+4>>2]|0;m=e;c[m>>2]=j?-1:c[k>>2]|0;c[m+4>>2]=g;}}while(0);h=e;y=c[h+4>>2]|0;l=d;return c[h>>2]|0;}function xq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;d=l;l=l+112|0;e=d+80|0;f=d+108|0;g=d+104|0;h=d+100|0;i=d+40|0;j=d+96|0;k=d+24|0;m=d+92|0;n=d;o=d+88|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=iq(c[f>>2]|0,c[g>>2]|0)|0;do{if((c[h>>2]|0)>>>0>=5){if((c[h>>2]|0)==5){c[j>>2]=yq(i,c[f>>2]|0,c[g>>2]|0)|0;if(c[j>>2]|0){b=e;c[b>>2]=0;c[b+4>>2]=0;break;}else{b=i;a=c[b+4>>2]|0;p=e;c[p>>2]=c[b>>2];c[p+4>>2]=a;break;}}if((c[h>>2]|0)==6){c[m>>2]=zq(k,c[f>>2]|0,c[g>>2]|0)|0;if(c[m>>2]|0){a=e;c[a>>2]=0;c[a+4>>2]=0;break;}else{a=k;p=c[a+4>>2]|0;b=e;c[b>>2]=c[a>>2];c[b+4>>2]=p;break;}}if((c[h>>2]|0)!=7){p=e;c[p>>2]=0;c[p+4>>2]=0;break;}c[o>>2]=Aq(n,c[f>>2]|0,c[g>>2]|0)|0;if(c[o>>2]|0){p=e;c[p>>2]=0;c[p+4>>2]=0;break;}else{p=n;b=c[p+4>>2]|0;a=e;c[a>>2]=c[p>>2];c[a+4>>2]=b;break;}}else{b=e;c[b>>2]=0;c[b+4>>2]=0;}}while(0);n=e;y=c[n+4>>2]|0;l=d;return c[n>>2]|0;}function yq(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;if((c[j>>2]|0)>>>0<5){c[g>>2]=5;m=c[g>>2]|0;l=f;return m|0;}c[k>>2]=Wq(c[i>>2]|0)|0;if((c[k>>2]|0)!=-47205083){c[g>>2]=-10;m=c[g>>2]|0;l=f;return m|0;}k=c[h>>2]|0;j=k+40|0;do{c[k>>2]=0;k=k+4|0;}while((k|0)<(j|0));c[(c[h>>2]|0)+8>>2]=((d[(c[i>>2]|0)+4>>0]|0)&15)+11;if((d[(c[i>>2]|0)+4>>0]|0)>>4|0){c[g>>2]=-14;m=c[g>>2]|0;l=f;return m|0;}else{c[g>>2]=0;m=c[g>>2]|0;l=f;return m|0;}return 0;}function zq(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;o=g+24|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[j>>2];if((c[k>>2]|0)>>>0<5){c[h>>2]=5;p=c[h>>2]|0;l=g;return p|0;}if((Mq(c[j>>2]|0)|0)!=-47205082){c[h>>2]=-10;p=c[h>>2]|0;l=g;return p|0;}c[n>>2]=Nq(c[j>>2]|0,c[k>>2]|0)|0;if((c[k>>2]|0)>>>0<(c[n>>2]|0)>>>0){c[h>>2]=c[n>>2];p=c[h>>2]|0;l=g;return p|0;}n=c[i>>2]|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;a[o>>0]=a[(c[m>>2]|0)+4>>0]|0;c[(c[i>>2]|0)+8>>2]=((d[o>>0]|0)&15)+12;if((d[o>>0]|0)&32|0){c[h>>2]=-14;p=c[h>>2]|0;l=g;return p|0;}switch((d[o>>0]|0)>>6|0){case 0:{o=c[i>>2]|0;c[o>>2]=0;c[o+4>>2]=0;break;}case 1:{o=c[i>>2]|0;c[o>>2]=d[(c[m>>2]|0)+5>>0];c[o+4>>2]=0;break;}case 2:{o=((Oq((c[m>>2]|0)+5|0)|0)&65535)+256|0;n=c[i>>2]|0;c[n>>2]=o;c[n+4>>2]=((o|0)<0)<<31>>31;break;}case 3:{o=Pq((c[m>>2]|0)+5|0)|0;m=c[i>>2]|0;c[m>>2]=o;c[m+4>>2]=y;break;}default:{}}c[h>>2]=0;p=c[h>>2]|0;l=g;return p|0;}function Aq(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0;g=l;l=l+80|0;h=g+64|0;i=g+60|0;j=g+56|0;k=g+52|0;m=g+48|0;n=g+44|0;o=g+69|0;p=g+40|0;q=g+36|0;r=g+32|0;s=g+28|0;t=g+24|0;u=g+20|0;v=g+16|0;w=g+12|0;x=g;z=g+68|0;A=g+8|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[j>>2];if((c[k>>2]|0)>>>0<5){c[h>>2]=5;B=c[h>>2]|0;l=g;return B|0;}f=(Bq(c[j>>2]|0)|0)!=-47205081;e=c[j>>2]|0;if(f){if(((Bq(e)|0)&-16|0)!=407710288){c[h>>2]=-10;B=c[h>>2]|0;l=g;return B|0;}if((c[k>>2]|0)>>>0<8){c[h>>2]=8;B=c[h>>2]|0;l=g;return B|0;}else{f=c[i>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;f=Bq((c[j>>2]|0)+4|0)|0;j=c[i>>2]|0;c[j>>2]=f;c[j+4>>2]=0;c[(c[i>>2]|0)+8>>2]=0;c[h>>2]=0;B=c[h>>2]|0;l=g;return B|0;}}c[n>>2]=Cq(e,c[k>>2]|0)|0;if((c[k>>2]|0)>>>0<(c[n>>2]|0)>>>0){c[h>>2]=c[n>>2];B=c[h>>2]|0;l=g;return B|0;}a[o>>0]=a[(c[m>>2]|0)+4>>0]|0;c[p>>2]=5;c[q>>2]=(d[o>>0]|0)&3;c[r>>2]=(d[o>>0]|0)>>2&1;c[s>>2]=(d[o>>0]|0)>>5&1;c[t>>2]=(d[o>>0]|0)>>6;n=(Dq()|0)!=0;c[u>>2]=1<<(n?25:27);c[v>>2]=0;c[w>>2]=0;n=x;c[n>>2]=0;c[n+4>>2]=0;if((d[o>>0]|0)&8|0){c[h>>2]=-14;B=c[h>>2]|0;l=g;return B|0;}do{if(!(c[s>>2]|0)){o=c[m>>2]|0;n=c[p>>2]|0;c[p>>2]=n+1;a[z>>0]=a[o+n>>0]|0;c[A>>2]=((d[z>>0]|0)>>3)+10;n=c[A>>2]|0;o=(Dq()|0)!=0;if(n>>>0<=(o?25:27)>>>0){c[v>>2]=1<<c[A>>2];o=N((c[v>>2]|0)>>>3,(d[z>>0]|0)&7)|0;c[v>>2]=(c[v>>2]|0)+o;break;}c[h>>2]=-14;B=c[h>>2]|0;l=g;return B|0;}}while(0);switch(c[q>>2]|0){case 3:{c[w>>2]=Bq((c[m>>2]|0)+(c[p>>2]|0)|0)|0;c[p>>2]=(c[p>>2]|0)+4;break;}case 1:{c[w>>2]=d[(c[m>>2]|0)+(c[p>>2]|0)>>0];c[p>>2]=(c[p>>2]|0)+1;break;}case 2:{c[w>>2]=(Eq((c[m>>2]|0)+(c[p>>2]|0)|0)|0)&65535;c[p>>2]=(c[p>>2]|0)+2;break;}default:{}}switch(c[t>>2]|0){case 3:{t=x;c[t>>2]=Fq((c[m>>2]|0)+(c[p>>2]|0)|0)|0;c[t+4>>2]=y;break;}case 1:{t=((Eq((c[m>>2]|0)+(c[p>>2]|0)|0)|0)&65535)+256|0;q=x;c[q>>2]=t;c[q+4>>2]=((t|0)<0)<<31>>31;break;}case 2:{t=x;c[t>>2]=Bq((c[m>>2]|0)+(c[p>>2]|0)|0)|0;c[t+4>>2]=0;break;}default:if(c[s>>2]|0){s=x;c[s>>2]=d[(c[m>>2]|0)+(c[p>>2]|0)>>0];c[s+4>>2]=0;}}if(!(c[v>>2]|0))c[v>>2]=c[x>>2];if((c[v>>2]|0)>>>0>(c[u>>2]|0)>>>0){c[h>>2]=-14;B=c[h>>2]|0;l=g;return B|0;}else{u=x;x=c[u+4>>2]|0;s=c[i>>2]|0;c[s>>2]=c[u>>2];c[s+4>>2]=x;c[(c[i>>2]|0)+8>>2]=c[v>>2];c[(c[i>>2]|0)+12>>2]=c[w>>2];c[(c[i>>2]|0)+16>>2]=c[r>>2];c[h>>2]=0;B=c[h>>2]|0;l=g;return B|0;}return 0;}function Bq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Gq()|0)!=0;f=Kq(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=Lq(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Cq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+32|0;g=f+20|0;h=f+16|0;i=f+12|0;j=f+24|0;k=f+8|0;m=f+4|0;n=f;c[h>>2]=b;c[i>>2]=e;if((c[i>>2]|0)>>>0<5){c[g>>2]=-72;o=c[g>>2]|0;l=f;return o|0;}a[j>>0]=a[(c[h>>2]|0)+4>>0]|0;c[k>>2]=(d[j>>0]|0)&3;c[m>>2]=(d[j>>0]|0)>>5&1;c[n>>2]=(d[j>>0]|0)>>6;if(c[m>>2]|0)p=(c[3472+(c[n>>2]<<2)>>2]|0)!=0^1;else p=0;c[g>>2]=5+(((c[m>>2]|0)!=0^1)&1)+(c[3456+(c[k>>2]<<2)>>2]|0)+(c[3472+(c[n>>2]<<2)>>2]|0)+(p&1);o=c[g>>2]|0;l=f;return o|0;}function Dq(){return 1;}function Eq(a){a=a|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=a;a=(Gq()|0)!=0;i=c[g>>2]|0;if(a){b[f>>1]=Jq(i)|0;j=b[f>>1]|0;l=e;return j|0;}else{c[h>>2]=i;b[f>>1]=(d[c[h>>2]>>0]|0)+((d[(c[h>>2]|0)+1>>0]|0)<<8);j=b[f>>1]|0;l=e;return j|0;}return 0;}function Fq(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(Gq()|0)!=0;f=Hq(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=Iq(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function Gq(){return d[11936]|0|0;}function Hq(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;a[f+4>>0]=a[b+4>>0]|0;a[f+5>>0]=a[b+5>>0]|0;a[f+6>>0]=a[b+6>>0]|0;a[f+7>>0]=a[b+7>>0]|0;b=f;y=c[b+4>>2]|0;l=d;return c[b>>2]|0;}function Iq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function Jq(d){d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=c[f>>2]|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;l=e;return b[g>>1]|0;}function Kq(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;l=d;return c[f>>2]|0;}function Lq(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function Mq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Qq()|0)!=0;f=Uq(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=Vq(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Nq(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;if((c[h>>2]|0)>>>0<5){c[f>>2]=-72;j=c[f>>2]|0;l=e;return j|0;}else{c[i>>2]=(d[(c[g>>2]|0)+4>>0]|0)>>6;c[f>>2]=5+(c[3488+(c[i>>2]<<2)>>2]|0);j=c[f>>2]|0;l=e;return j|0;}return 0;}function Oq(a){a=a|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=a;a=(Qq()|0)!=0;i=c[g>>2]|0;if(a){b[f>>1]=Tq(i)|0;j=b[f>>1]|0;l=e;return j|0;}else{c[h>>2]=i;b[f>>1]=(d[c[h>>2]>>0]|0)+((d[(c[h>>2]|0)+1>>0]|0)<<8);j=b[f>>1]|0;l=e;return j|0;}return 0;}function Pq(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(Qq()|0)!=0;f=Rq(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=Sq(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function Qq(){return d[11936]|0|0;}function Rq(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;a[f+4>>0]=a[b+4>>0]|0;a[f+5>>0]=a[b+5>>0]|0;a[f+6>>0]=a[b+6>>0]|0;a[f+7>>0]=a[b+7>>0]|0;b=f;y=c[b+4>>2]|0;l=d;return c[b>>2]|0;}function Sq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function Tq(d){d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=d;d=c[f>>2]|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;l=e;return b[g>>1]|0;}function Uq(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;l=d;return c[f>>2]|0;}function Vq(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function Wq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Xq()|0)!=0;f=Yq(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=Zq(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Xq(){return d[11936]|0|0;}function Yq(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Zq(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function _q(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;d=l;l=l+96|0;e=d+80|0;f=d+76|0;g=d+72|0;h=d+68|0;i=d+64|0;j=d+60|0;k=d;m=d+56|0;n=d+44|0;o=d+40|0;c[f>>2]=a;c[g>>2]=b;if(iq(c[f>>2]|0,c[g>>2]|0)|0){c[e>>2]=ar(c[f>>2]|0,c[g>>2]|0)|0;p=c[e>>2]|0;l=d;return p|0;}if((c[g>>2]|0)>>>0>=8?((hq(c[f>>2]|0)|0)&-16|0)==407710288:0){c[e>>2]=8+(hq((c[f>>2]|0)+4|0)|0);p=c[e>>2]|0;l=d;return p|0;}c[h>>2]=c[f>>2];c[i>>2]=c[h>>2];c[j>>2]=c[g>>2];c[m>>2]=pq(k,c[f>>2]|0,c[g>>2]|0)|0;g=($q(c[m>>2]|0)|0)!=0;f=c[m>>2]|0;if(g){c[e>>2]=f;p=c[e>>2]|0;l=d;return p|0;}if(f>>>0>0){c[e>>2]=-72;p=c[e>>2]|0;l=d;return p|0;}c[h>>2]=(c[h>>2]|0)+(c[k+24>>2]|0);c[j>>2]=(c[j>>2]|0)-(c[k+24>>2]|0);while(1){c[o>>2]=br(c[h>>2]|0,c[j>>2]|0,n)|0;f=($q(c[o>>2]|0)|0)!=0;q=c[o>>2]|0;if(f){r=12;break;}if((3+q|0)>>>0>(c[j>>2]|0)>>>0){r=14;break;}c[h>>2]=(c[h>>2]|0)+(3+(c[o>>2]|0));c[j>>2]=(c[j>>2]|0)-(3+(c[o>>2]|0));if(c[n+4>>2]|0){r=17;break;}}if((r|0)==12){c[e>>2]=q;p=c[e>>2]|0;l=d;return p|0;}else if((r|0)==14){c[e>>2]=-72;p=c[e>>2]|0;l=d;return p|0;}else if((r|0)==17){do{if(c[k+32>>2]|0){if((c[j>>2]|0)>>>0>=4){c[h>>2]=(c[h>>2]|0)+4;c[j>>2]=(c[j>>2]|0)-4;break;}c[e>>2]=-72;p=c[e>>2]|0;l=d;return p|0;}}while(0);c[e>>2]=(c[h>>2]|0)-(c[i>>2]|0);p=c[e>>2]|0;l=d;return p|0;}return 0;}function $q(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function ar(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=iq(c[f>>2]|0,c[g>>2]|0)|0;switch(c[h>>2]|0){case 4:{c[e>>2]=dr(c[f>>2]|0,c[g>>2]|0)|0;break;}case 5:{c[e>>2]=er(c[f>>2]|0,c[g>>2]|0)|0;break;}case 6:{c[e>>2]=fr(c[f>>2]|0,c[g>>2]|0)|0;break;}case 7:{c[e>>2]=gr(c[f>>2]|0,c[g>>2]|0)|0;break;}default:c[e>>2]=-10;}l=d;return c[e>>2]|0;}function br(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[h>>2]|0)>>>0<3){c[f>>2]=-72;m=c[f>>2]|0;l=e;return m|0;}c[j>>2]=cr(c[g>>2]|0)|0;c[k>>2]=(c[j>>2]|0)>>>3;c[(c[i>>2]|0)+4>>2]=c[j>>2]&1;c[c[i>>2]>>2]=(c[j>>2]|0)>>>1&3;c[(c[i>>2]|0)+8>>2]=c[k>>2];if((c[c[i>>2]>>2]|0)==1){c[f>>2]=1;m=c[f>>2]|0;l=e;return m|0;}if((c[c[i>>2]>>2]|0)==3){c[f>>2]=-20;m=c[f>>2]|0;l=e;return m|0;}else{c[f>>2]=c[k>>2];m=c[f>>2]|0;l=e;return m|0;}return 0;}function cr(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=(rq(c[e>>2]|0)|0)&65535;l=b;return a+((d[(c[e>>2]|0)+2>>0]|0)<<16)|0;}function dr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=or(c[e>>2]|0,c[f>>2]|0)|0;l=d;return b|0;}function er(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;d=l;l=l+48|0;e=d+32|0;f=d+28|0;g=d+24|0;h=d+20|0;i=d+16|0;j=d+8|0;k=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=c[f>>2];c[i>>2]=c[g>>2];if((c[g>>2]|0)>>>0<5){c[e>>2]=-72;m=c[e>>2]|0;l=d;return m|0;}if((Wq(c[f>>2]|0)|0)!=-47205083){c[e>>2]=-10;m=c[e>>2]|0;l=d;return m|0;}c[h>>2]=(c[h>>2]|0)+5;c[i>>2]=(c[i>>2]|0)-5;while(1){c[k>>2]=lr(c[h>>2]|0,c[i>>2]|0,j)|0;if(mr(c[k>>2]|0)|0){n=7;break;}c[h>>2]=(c[h>>2]|0)+3;c[i>>2]=(c[i>>2]|0)-3;if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0){n=9;break;}if(!(c[k>>2]|0)){n=12;break;}c[h>>2]=(c[h>>2]|0)+(c[k>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[k>>2]|0);}if((n|0)==7){c[e>>2]=c[k>>2];m=c[e>>2]|0;l=d;return m|0;}else if((n|0)==9){c[e>>2]=-72;m=c[e>>2]|0;l=d;return m|0;}else if((n|0)==12){c[e>>2]=(c[h>>2]|0)-(c[f>>2]|0);m=c[e>>2]|0;l=d;return m|0;}return 0;}function fr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;d=l;l=l+48|0;e=d+32|0;f=d+28|0;g=d+24|0;h=d+20|0;i=d+16|0;j=d+8|0;k=d+4|0;m=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=c[f>>2];c[i>>2]=c[g>>2];c[j>>2]=0;c[j+4>>2]=0;c[k>>2]=Nq(c[f>>2]|0,5)|0;if(jr(c[k>>2]|0)|0){c[e>>2]=c[k>>2];n=c[e>>2]|0;l=d;return n|0;}if((Mq(c[f>>2]|0)|0)!=-47205082){c[e>>2]=-10;n=c[e>>2]|0;l=d;return n|0;}if((c[g>>2]|0)>>>0<((c[k>>2]|0)+3|0)>>>0){c[e>>2]=-72;n=c[e>>2]|0;l=d;return n|0;}c[h>>2]=(c[h>>2]|0)+(c[k>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[k>>2]|0);while(1){c[m>>2]=kr(c[h>>2]|0,c[i>>2]|0,j)|0;if(jr(c[m>>2]|0)|0){o=9;break;}c[h>>2]=(c[h>>2]|0)+3;c[i>>2]=(c[i>>2]|0)-3;if((c[m>>2]|0)>>>0>(c[i>>2]|0)>>>0){o=11;break;}if(!(c[m>>2]|0)){o=14;break;}c[h>>2]=(c[h>>2]|0)+(c[m>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[m>>2]|0);}if((o|0)==9){c[e>>2]=c[m>>2];n=c[e>>2]|0;l=d;return n|0;}else if((o|0)==11){c[e>>2]=-72;n=c[e>>2]|0;l=d;return n|0;}else if((o|0)==14){c[e>>2]=(c[h>>2]|0)-(c[f>>2]|0);n=c[e>>2]|0;l=d;return n|0;}return 0;}function gr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;d=l;l=l+48|0;e=d+36|0;f=d+32|0;g=d+28|0;h=d+24|0;i=d+20|0;j=d+16|0;k=d+8|0;m=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=c[f>>2];c[i>>2]=c[g>>2];if((c[g>>2]|0)>>>0<8){c[e>>2]=-72;n=c[e>>2]|0;l=d;return n|0;}c[j>>2]=Cq(c[f>>2]|0,5)|0;if(hr(c[j>>2]|0)|0){c[e>>2]=c[j>>2];n=c[e>>2]|0;l=d;return n|0;}if((Bq(c[f>>2]|0)|0)!=-47205081){c[e>>2]=-10;n=c[e>>2]|0;l=d;return n|0;}if((c[g>>2]|0)>>>0<((c[j>>2]|0)+3|0)>>>0){c[e>>2]=-72;n=c[e>>2]|0;l=d;return n|0;}c[h>>2]=(c[h>>2]|0)+(c[j>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[j>>2]|0);while(1){c[m>>2]=ir(c[h>>2]|0,c[i>>2]|0,k)|0;if(hr(c[m>>2]|0)|0){o=11;break;}c[h>>2]=(c[h>>2]|0)+3;c[i>>2]=(c[i>>2]|0)-3;if((c[k>>2]|0)==3){o=16;break;}if((c[m>>2]|0)>>>0>(c[i>>2]|0)>>>0){o=14;break;}c[h>>2]=(c[h>>2]|0)+(c[m>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[m>>2]|0);}if((o|0)==11){c[e>>2]=c[m>>2];n=c[e>>2]|0;l=d;return n|0;}else if((o|0)==14){c[e>>2]=-72;n=c[e>>2]|0;l=d;return n|0;}else if((o|0)==16){c[e>>2]=(c[h>>2]|0)-(c[f>>2]|0);n=c[e>>2]|0;l=d;return n|0;}return 0;}function hr(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function ir(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+32|0;g=f+20|0;h=f+16|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=c[h>>2];if((c[i>>2]|0)>>>0<3){c[g>>2]=-72;n=c[g>>2]|0;l=f;return n|0;}c[c[j>>2]>>2]=(d[c[k>>2]>>0]|0)>>6;c[m>>2]=(d[(c[k>>2]|0)+2>>0]|0)+((d[(c[k>>2]|0)+1>>0]|0)<<8)+(((d[c[k>>2]>>0]|0)&7)<<16);c[(c[j>>2]|0)+4>>2]=(c[c[j>>2]>>2]|0)==2?c[m>>2]|0:0;if((c[c[j>>2]>>2]|0)==3){c[g>>2]=0;n=c[g>>2]|0;l=f;return n|0;}if((c[c[j>>2]>>2]|0)==2){c[g>>2]=1;n=c[g>>2]|0;l=f;return n|0;}else{c[g>>2]=c[m>>2];n=c[g>>2]|0;l=f;return n|0;}return 0;}function jr(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function kr(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+32|0;g=f+20|0;h=f+16|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=c[h>>2];if((c[i>>2]|0)>>>0<3){c[g>>2]=-72;n=c[g>>2]|0;l=f;return n|0;}c[c[j>>2]>>2]=(d[c[k>>2]>>0]|0)>>6;c[m>>2]=(d[(c[k>>2]|0)+2>>0]|0)+((d[(c[k>>2]|0)+1>>0]|0)<<8)+(((d[c[k>>2]>>0]|0)&7)<<16);c[(c[j>>2]|0)+4>>2]=(c[c[j>>2]>>2]|0)==2?c[m>>2]|0:0;if((c[c[j>>2]>>2]|0)==3){c[g>>2]=0;n=c[g>>2]|0;l=f;return n|0;}if((c[c[j>>2]>>2]|0)==2){c[g>>2]=1;n=c[g>>2]|0;l=f;return n|0;}else{c[g>>2]=c[m>>2];n=c[g>>2]|0;l=f;return n|0;}return 0;}function lr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g+24|0;o=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[i>>2];if((c[j>>2]|0)>>>0<3){c[h>>2]=-72;p=c[h>>2]|0;l=g;return p|0;}a[n>>0]=a[c[m>>2]>>0]|0;c[o>>2]=(d[(c[m>>2]|0)+2>>0]|0)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(((d[c[m>>2]>>0]|0)&7)<<16);c[c[k>>2]>>2]=(d[n>>0]|0)>>6;c[(c[k>>2]|0)+4>>2]=(c[c[k>>2]>>2]|0)==2?c[o>>2]|0:0;if((c[c[k>>2]>>2]|0)==3){c[h>>2]=0;p=c[h>>2]|0;l=g;return p|0;}if((c[c[k>>2]>>2]|0)==2){c[h>>2]=1;p=c[h>>2]|0;l=g;return p|0;}else{c[h>>2]=c[o>>2];p=c[h>>2]|0;l=g;return p|0;}return 0;}function mr(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=nr(c[d>>2]|0)|0;l=b;return a|0;}function nr(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function or(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;d=l;l=l+48|0;e=d+32|0;f=d+28|0;g=d+24|0;h=d+20|0;i=d+16|0;j=d+8|0;k=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=c[f>>2];c[i>>2]=c[g>>2];if((c[g>>2]|0)>>>0<5){c[e>>2]=-72;m=c[e>>2]|0;l=d;return m|0;}if((pr(c[f>>2]|0)|0)!=-47205084){c[e>>2]=-10;m=c[e>>2]|0;l=d;return m|0;}c[h>>2]=(c[h>>2]|0)+5;c[i>>2]=(c[i>>2]|0)-5;while(1){c[k>>2]=qr(c[h>>2]|0,c[i>>2]|0,j)|0;if(rr(c[k>>2]|0)|0){n=7;break;}c[h>>2]=(c[h>>2]|0)+3;c[i>>2]=(c[i>>2]|0)-3;if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0){n=9;break;}if(!(c[k>>2]|0)){n=12;break;}c[h>>2]=(c[h>>2]|0)+(c[k>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[k>>2]|0);}if((n|0)==7){c[e>>2]=c[k>>2];m=c[e>>2]|0;l=d;return m|0;}else if((n|0)==9){c[e>>2]=-72;m=c[e>>2]|0;l=d;return m|0;}else if((n|0)==12){c[e>>2]=(c[h>>2]|0)-(c[f>>2]|0);m=c[e>>2]|0;l=d;return m|0;}return 0;}function pr(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;e=b+8|0;f=b+4|0;g=b;c[f>>2]=a;a=(tr()|0)!=0;h=c[f>>2]|0;if(a){c[e>>2]=ur(h)|0;i=c[e>>2]|0;l=b;return i|0;}else{c[g>>2]=h;c[e>>2]=(d[c[g>>2]>>0]|0)+((d[(c[g>>2]|0)+1>>0]|0)<<8)+((d[(c[g>>2]|0)+2>>0]|0)<<16)+((d[(c[g>>2]|0)+3>>0]|0)<<24);i=c[e>>2]|0;l=b;return i|0;}return 0;}function qr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g+24|0;o=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[i>>2];if((c[j>>2]|0)>>>0<3){c[h>>2]=-72;p=c[h>>2]|0;l=g;return p|0;}a[n>>0]=a[c[m>>2]>>0]|0;c[o>>2]=(d[(c[m>>2]|0)+2>>0]|0)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(((d[c[m>>2]>>0]|0)&7)<<16);c[c[k>>2]>>2]=(d[n>>0]|0)>>6;c[(c[k>>2]|0)+4>>2]=(c[c[k>>2]>>2]|0)==2?c[o>>2]|0:0;if((c[c[k>>2]>>2]|0)==3){c[h>>2]=0;p=c[h>>2]|0;l=g;return p|0;}if((c[c[k>>2]>>2]|0)==2){c[h>>2]=1;p=c[h>>2]|0;l=g;return p|0;}else{c[h>>2]=c[o>>2];p=c[h>>2]|0;l=g;return p|0;}return 0;}function rr(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=sr(c[d>>2]|0)|0;l=b;return a|0;}function sr(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function tr(){return d[11936]|0|0;}function ur(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;l=d;return c[f>>2]|0;}function vr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;g=l;l=l+80|0;h=g+68|0;i=g+64|0;j=g+60|0;k=g+56|0;m=g+52|0;n=g+48|0;o=g+44|0;p=g+40|0;q=g+36|0;r=g+32|0;s=g+28|0;t=g+24|0;u=g+20|0;v=g+16|0;w=g+12|0;x=g+8|0;y=g+4|0;z=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;if((c[k>>2]|0)>>>0<3){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}c[m>>2]=c[j>>2];c[n>>2]=(d[c[m>>2]>>0]|0)&3;switch(c[n>>2]|0){case 3:{if(!(c[(c[i>>2]|0)+28808>>2]|0)){c[h>>2]=-30;A=c[h>>2]|0;l=g;return A|0;}break;}case 2:break;case 0:{c[w>>2]=(d[c[m>>2]>>0]|0)>>2&3;switch(c[w>>2]|0){case 3:{c[v>>2]=3;c[u>>2]=(cr(c[m>>2]|0)|0)>>>4;break;}case 1:{c[v>>2]=2;c[u>>2]=((rq(c[m>>2]|0)|0)&65535)>>4;break;}default:{c[v>>2]=1;c[u>>2]=(d[c[m>>2]>>0]|0)>>3;}}if(((c[v>>2]|0)+(c[u>>2]|0)+8|0)>>>0<=(c[k>>2]|0)>>>0){c[(c[i>>2]|0)+28916>>2]=(c[m>>2]|0)+(c[v>>2]|0);c[(c[i>>2]|0)+28932>>2]=c[u>>2];c[h>>2]=(c[v>>2]|0)+(c[u>>2]|0);A=c[h>>2]|0;l=g;return A|0;}if(((c[u>>2]|0)+(c[v>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}else{mE((c[i>>2]|0)+29012|0,(c[m>>2]|0)+(c[v>>2]|0)|0,c[u>>2]|0)|0;c[(c[i>>2]|0)+28916>>2]=(c[i>>2]|0)+29012;c[(c[i>>2]|0)+28932>>2]=c[u>>2];w=(c[i>>2]|0)+29012+(c[(c[i>>2]|0)+28932>>2]|0)|0;a[w>>0]=0;a[w+1>>0]=0;a[w+2>>0]=0;a[w+3>>0]=0;a[w+4>>0]=0;a[w+5>>0]=0;a[w+6>>0]=0;a[w+7>>0]=0;c[h>>2]=(c[v>>2]|0)+(c[u>>2]|0);A=c[h>>2]|0;l=g;return A|0;}break;}case 1:{c[x>>2]=(d[c[m>>2]>>0]|0)>>2&3;switch(c[x>>2]|0){case 3:{c[z>>2]=3;c[y>>2]=(cr(c[m>>2]|0)|0)>>>4;if((c[k>>2]|0)>>>0<4){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}break;}case 1:{c[z>>2]=2;c[y>>2]=((rq(c[m>>2]|0)|0)&65535)>>4;break;}default:{c[z>>2]=1;c[y>>2]=(d[c[m>>2]>>0]|0)>>3;}}if((c[y>>2]|0)>>>0>131072){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}else{oE((c[i>>2]|0)+29012|0,(d[(c[m>>2]|0)+(c[z>>2]|0)>>0]|0)&255|0,(c[y>>2]|0)+8|0)|0;c[(c[i>>2]|0)+28916>>2]=(c[i>>2]|0)+29012;c[(c[i>>2]|0)+28932>>2]=c[y>>2];c[h>>2]=(c[z>>2]|0)+1;A=c[h>>2]|0;l=g;return A|0;}break;}default:{c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}}if((c[k>>2]|0)>>>0<5){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}c[r>>2]=0;c[s>>2]=(d[c[m>>2]>>0]|0)>>2&3;c[t>>2]=hq(c[m>>2]|0)|0;switch(c[s>>2]|0){case 3:{c[o>>2]=5;c[p>>2]=(c[t>>2]|0)>>>4&262143;c[q>>2]=((c[t>>2]|0)>>>22)+((d[(c[m>>2]|0)+4>>0]|0)<<10);break;}case 2:{c[o>>2]=4;c[p>>2]=(c[t>>2]|0)>>>4&16383;c[q>>2]=(c[t>>2]|0)>>>18;break;}default:{c[r>>2]=((c[s>>2]|0)!=0^1)&1;c[o>>2]=3;c[p>>2]=(c[t>>2]|0)>>>4&1023;c[q>>2]=(c[t>>2]|0)>>>14&1023;}}if((c[p>>2]|0)>>>0>131072){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}if(((c[q>>2]|0)+(c[o>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}k=(c[r>>2]|0)!=0;r=c[i>>2]|0;do{if((c[n>>2]|0)==3){t=r+29012|0;s=c[p>>2]|0;z=(c[m>>2]|0)+(c[o>>2]|0)|0;y=c[q>>2]|0;x=c[(c[i>>2]|0)+12>>2]|0;u=c[(c[i>>2]|0)+28944>>2]|0;if(k){B=Op(t,s,z,y,x,u)|0;break;}else{B=Qp(t,s,z,y,x,u)|0;break;}}else{u=r+16+10264|0;x=(c[i>>2]|0)+29012|0;y=c[p>>2]|0;z=(c[m>>2]|0)+(c[o>>2]|0)|0;s=c[q>>2]|0;t=(c[i>>2]|0)+16+26652|0;v=c[(c[i>>2]|0)+28944>>2]|0;if(k){B=Pp(u,x,y,z,s,t,2048,v)|0;break;}else{B=Rp(u,x,y,z,s,t,2048,v)|0;break;}}}while(0);if($q(B)|0){c[h>>2]=-20;A=c[h>>2]|0;l=g;return A|0;}c[(c[i>>2]|0)+28916>>2]=(c[i>>2]|0)+29012;c[(c[i>>2]|0)+28932>>2]=c[p>>2];c[(c[i>>2]|0)+28808>>2]=1;if((c[n>>2]|0)==2)c[(c[i>>2]|0)+12>>2]=(c[i>>2]|0)+16+10264;n=(c[i>>2]|0)+29012+(c[(c[i>>2]|0)+28932>>2]|0)|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;a[n+4>>0]=0;a[n+5>>0]=0;a[n+6>>0]=0;a[n+7>>0]=0;c[h>>2]=(c[q>>2]|0)+(c[o>>2]|0);A=c[h>>2]|0;l=g;return A|0;}function wr(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;g=l;l=l+64|0;h=g+56|0;i=g+52|0;j=g+48|0;k=g+44|0;m=g+40|0;n=g+36|0;o=g+32|0;p=g+28|0;q=g+24|0;r=g+20|0;s=g+16|0;t=g+12|0;u=g+8|0;v=g+4|0;w=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=e;c[m>>2]=f;c[n>>2]=c[k>>2];c[o>>2]=(c[n>>2]|0)+(c[m>>2]|0);c[p>>2]=c[n>>2];if((c[m>>2]|0)>>>0<1){c[h>>2]=-72;x=c[h>>2]|0;l=g;return x|0;}m=c[p>>2]|0;c[p>>2]=m+1;c[q>>2]=d[m>>0];if(!(c[q>>2]|0)){c[c[j>>2]>>2]=0;c[h>>2]=1;x=c[h>>2]|0;l=g;return x|0;}do{if((c[q>>2]|0)>127){m=c[p>>2]|0;if((c[q>>2]|0)==255){if((m+2|0)>>>0<=(c[o>>2]|0)>>>0){c[q>>2]=((rq(c[p>>2]|0)|0)&65535)+32512;c[p>>2]=(c[p>>2]|0)+2;break;}c[h>>2]=-72;x=c[h>>2]|0;l=g;return x|0;}else{if(m>>>0<(c[o>>2]|0)>>>0){m=(c[q>>2]|0)-128<<8;k=c[p>>2]|0;c[p>>2]=k+1;c[q>>2]=m+(d[k>>0]|0);break;}c[h>>2]=-72;x=c[h>>2]|0;l=g;return x|0;}}}while(0);c[c[j>>2]>>2]=c[q>>2];if(((c[p>>2]|0)+4|0)>>>0>(c[o>>2]|0)>>>0){c[h>>2]=-72;x=c[h>>2]|0;l=g;return x|0;}c[r>>2]=(d[c[p>>2]>>0]|0)>>6;c[s>>2]=(d[c[p>>2]>>0]|0)>>4&3;c[t>>2]=(d[c[p>>2]>>0]|0)>>2&3;c[p>>2]=(c[p>>2]|0)+1;c[u>>2]=xr((c[i>>2]|0)+16|0,c[i>>2]|0,c[r>>2]|0,35,9,c[p>>2]|0,(c[o>>2]|0)-(c[p>>2]|0)|0,6416,5696,3504,c[(c[i>>2]|0)+28812>>2]|0)|0;if($q(c[u>>2]|0)|0){c[h>>2]=-20;x=c[h>>2]|0;l=g;return x|0;}c[p>>2]=(c[p>>2]|0)+(c[u>>2]|0);c[v>>2]=xr((c[i>>2]|0)+16+4104|0,(c[i>>2]|0)+8|0,c[s>>2]|0,31,8,c[p>>2]|0,(c[o>>2]|0)-(c[p>>2]|0)|0,4032,4160,4288,c[(c[i>>2]|0)+28812>>2]|0)|0;if($q(c[v>>2]|0)|0){c[h>>2]=-20;x=c[h>>2]|0;l=g;return x|0;}c[p>>2]=(c[p>>2]|0)+(c[v>>2]|0);c[w>>2]=xr((c[i>>2]|0)+16+6160|0,(c[i>>2]|0)+4|0,c[t>>2]|0,52,9,c[p>>2]|0,(c[o>>2]|0)-(c[p>>2]|0)|0,5216,5840,4560,c[(c[i>>2]|0)+28812>>2]|0)|0;if($q(c[w>>2]|0)|0){c[h>>2]=-20;x=c[h>>2]|0;l=g;return x|0;}else{c[p>>2]=(c[p>>2]|0)+(c[w>>2]|0);c[h>>2]=(c[p>>2]|0)-(c[n>>2]|0);x=c[h>>2]|0;l=g;return x|0;}return 0;}function xr(a,b,e,f,g,h,i,j,k,m,n){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;o=l;l=l+176|0;p=o+172|0;q=o+168|0;r=o+164|0;s=o+160|0;t=o+156|0;u=o+152|0;v=o+148|0;w=o+144|0;x=o+140|0;y=o+136|0;z=o+132|0;A=o+128|0;B=o+124|0;C=o+120|0;D=o+116|0;E=o+112|0;F=o;G=o+108|0;c[q>>2]=a;c[r>>2]=b;c[s>>2]=e;c[t>>2]=f;c[u>>2]=g;c[v>>2]=h;c[w>>2]=i;c[x>>2]=j;c[y>>2]=k;c[z>>2]=m;c[A>>2]=n;a:do{switch(c[s>>2]|0){case 1:{if(!(c[w>>2]|0)){c[p>>2]=-72;break a;}if((d[c[v>>2]>>0]|0)>>>0>(c[t>>2]|0)>>>0){c[p>>2]=-20;break a;}else{c[B>>2]=d[c[v>>2]>>0];c[C>>2]=c[(c[x>>2]|0)+(c[B>>2]<<2)>>2];c[D>>2]=c[(c[y>>2]|0)+(c[B>>2]<<2)>>2];yr(c[q>>2]|0,c[C>>2]|0,c[D>>2]|0);c[c[r>>2]>>2]=c[q>>2];c[p>>2]=1;break a;}break;}case 0:{c[c[r>>2]>>2]=c[z>>2];c[p>>2]=0;break;}case 3:{if(c[A>>2]|0){c[p>>2]=0;break a;}else{c[p>>2]=-20;break a;}break;}case 2:{c[G>>2]=ah(F,t,E,c[v>>2]|0,c[w>>2]|0)|0;if($q(c[G>>2]|0)|0){c[p>>2]=-20;break a;}if((c[E>>2]|0)>>>0>(c[u>>2]|0)>>>0){c[p>>2]=-20;break a;}else{zr(c[q>>2]|0,F,c[t>>2]|0,c[x>>2]|0,c[y>>2]|0,c[E>>2]|0);c[c[r>>2]>>2]=c[q>>2];c[p>>2]=c[G>>2];break a;}break;}default:c[p>>2]=-1;}}while(0);l=o;return c[p>>2]|0;}function yr(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[h>>2]=d;c[i>>2]=e;c[j>>2]=f;c[k>>2]=c[h>>2];c[m>>2]=c[k>>2];c[n>>2]=(c[h>>2]|0)+8;c[(c[m>>2]|0)+4>>2]=0;c[c[m>>2]>>2]=0;a[(c[n>>2]|0)+3>>0]=0;b[c[n>>2]>>1]=0;a[(c[n>>2]|0)+2>>0]=c[j>>2];c[(c[n>>2]|0)+4>>2]=c[i>>2];l=g;return;}function zr(e,f,g,h,i,j){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;k=l;l=l+208|0;m=k+188|0;n=k+184|0;o=k+180|0;p=k+176|0;q=k+172|0;r=k+168|0;s=k+164|0;t=k;u=k+160|0;v=k+156|0;w=k+152|0;x=k+144|0;y=k+192|0;z=k+140|0;A=k+136|0;B=k+132|0;C=k+128|0;D=k+124|0;E=k+120|0;F=k+116|0;G=k+112|0;H=k+108|0;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=i;c[r>>2]=j;c[s>>2]=(c[m>>2]|0)+8;c[u>>2]=(c[o>>2]|0)+1;c[v>>2]=1<<c[r>>2];c[w>>2]=(c[v>>2]|0)-1;c[x+4>>2]=c[r>>2];c[x>>2]=1;b[y>>1]=1<<(c[r>>2]|0)-1;c[z>>2]=0;while(1){if((c[z>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;if((b[(c[n>>2]|0)+(c[z>>2]<<1)>>1]|0)==-1){o=c[z>>2]|0;j=c[s>>2]|0;i=c[w>>2]|0;c[w>>2]=i+-1;c[j+(i<<3)+4>>2]=o;b[t+(c[z>>2]<<1)>>1]=1;}else{if((b[(c[n>>2]|0)+(c[z>>2]<<1)>>1]|0)>=(b[y>>1]|0))c[x>>2]=0;b[t+(c[z>>2]<<1)>>1]=b[(c[n>>2]|0)+(c[z>>2]<<1)>>1]|0;}c[z>>2]=(c[z>>2]|0)+1;}z=c[m>>2]|0;c[z>>2]=c[x>>2];c[z+4>>2]=c[x+4>>2];c[A>>2]=(c[v>>2]|0)-1;c[B>>2]=((c[v>>2]|0)>>>1)+((c[v>>2]|0)>>>3)+3;c[D>>2]=0;c[C>>2]=0;while(1){if((c[C>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;c[E>>2]=0;while(1){I=c[C>>2]|0;if((c[E>>2]|0)>=(b[(c[n>>2]|0)+(c[C>>2]<<1)>>1]|0))break;c[(c[s>>2]|0)+(c[D>>2]<<3)+4>>2]=I;c[D>>2]=(c[D>>2]|0)+(c[B>>2]|0)&c[A>>2];while(1){if((c[D>>2]|0)>>>0<=(c[w>>2]|0)>>>0)break;c[D>>2]=(c[D>>2]|0)+(c[B>>2]|0)&c[A>>2];}c[E>>2]=(c[E>>2]|0)+1;}c[C>>2]=I+1;}c[F>>2]=0;while(1){if((c[F>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;c[G>>2]=c[(c[s>>2]|0)+(c[F>>2]<<3)+4>>2];I=t+(c[G>>2]<<1)|0;C=b[I>>1]|0;b[I>>1]=C+1<<16>>16;c[H>>2]=C&65535;C=c[r>>2]|0;I=C-(Ar(c[H>>2]|0)|0)&255;a[(c[s>>2]|0)+(c[F>>2]<<3)+3>>0]=I;b[(c[s>>2]|0)+(c[F>>2]<<3)>>1]=(c[H>>2]<<d[(c[s>>2]|0)+(c[F>>2]<<3)+3>>0])-(c[v>>2]|0);a[(c[s>>2]|0)+(c[F>>2]<<3)+2>>0]=c[(c[q>>2]|0)+(c[G>>2]<<2)>>2];c[(c[s>>2]|0)+(c[F>>2]<<3)+4>>2]=c[(c[p>>2]|0)+(c[G>>2]<<2)>>2];c[F>>2]=(c[F>>2]|0)+1;}l=k;return;}function Ar(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function Br(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)==(c[(c[e>>2]|0)+28728>>2]|0)){l=d;return;}c[(c[e>>2]|0)+28740>>2]=c[(c[e>>2]|0)+28728>>2];c[(c[e>>2]|0)+28736>>2]=(c[f>>2]|0)+(0-((c[(c[e>>2]|0)+28728>>2]|0)-(c[(c[e>>2]|0)+28732>>2]|0)));c[(c[e>>2]|0)+28732>>2]=c[f>>2];c[(c[e>>2]|0)+28728>>2]=c[f>>2];l=d;return;}function Cr(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0;h=l;l=l+64|0;i=h+52|0;j=h+48|0;k=h+44|0;m=h+40|0;n=h+36|0;o=h+32|0;p=h+28|0;q=h+24|0;r=h+20|0;s=h+16|0;t=h+12|0;u=h+8|0;v=h+4|0;w=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=c[n>>2];if(Dr()|0){if(c[p>>2]|0){g=(c[j>>2]|0)+28752+8|0;f=c[g>>2]|0;e=c[g+4>>2]|0;g=(Dr()|0)!=0;d=jE(1,0,(g?25:57)|0)|0;g=y;x=e>>>0>g>>>0|(e|0)==(g|0)&f>>>0>d>>>0;}else x=1;}else x=0;c[r>>2]=x&1;if((c[o>>2]|0)>>>0>=131072){c[i>>2]=-72;z=c[i>>2]|0;l=h;return z|0;}c[s>>2]=vr(c[j>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;n=($q(c[s>>2]|0)|0)!=0;x=c[s>>2]|0;if(n){c[i>>2]=x;z=c[i>>2]|0;l=h;return z|0;}c[q>>2]=(c[q>>2]|0)+x;c[o>>2]=(c[o>>2]|0)-(c[s>>2]|0);c[u>>2]=wr(c[j>>2]|0,t,c[q>>2]|0,c[o>>2]|0)|0;s=($q(c[u>>2]|0)|0)!=0;x=c[u>>2]|0;if(s){c[i>>2]=x;z=c[i>>2]|0;l=h;return z|0;}c[q>>2]=(c[q>>2]|0)+x;c[o>>2]=(c[o>>2]|0)-(c[u>>2]|0);if(c[p>>2]|0){p=(c[j>>2]|0)+28752+8|0;u=c[p+4>>2]|0;if((u>>>0>0|(u|0)==0&(c[p>>2]|0)>>>0>16777216)&(c[t>>2]|0)>0)A=13;}else if((c[t>>2]|0)>0)A=13;if((A|0)==13?(c[v>>2]=Er(c[(c[j>>2]|0)+8>>2]|0)|0,A=(Fr()|0)!=0,c[w>>2]=A?7:20,(c[v>>2]|0)>>>0>=(c[w>>2]|0)>>>0):0){c[i>>2]=Gr(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[q>>2]|0,c[o>>2]|0,c[t>>2]|0,c[r>>2]|0)|0;z=c[i>>2]|0;l=h;return z|0;}c[i>>2]=Hr(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[q>>2]|0,c[o>>2]|0,c[t>>2]|0,c[r>>2]|0)|0;z=c[i>>2]|0;l=h;return z|0;}function Dr(){return 1;}function Er(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;b=l;l=l+32|0;e=b+24|0;f=b+20|0;g=b+16|0;h=b+12|0;i=b+8|0;j=b+4|0;k=b;c[e>>2]=a;c[f>>2]=c[e>>2];c[g>>2]=c[(c[f>>2]|0)+4>>2];c[h>>2]=(c[e>>2]|0)+8;c[i>>2]=1<<c[g>>2];c[k>>2]=0;c[j>>2]=0;while(1){if((c[j>>2]|0)>>>0>=(c[i>>2]|0)>>>0)break;if((d[(c[h>>2]|0)+(c[j>>2]<<3)+2>>0]|0|0)>22)c[k>>2]=(c[k>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+1;}c[k>>2]=c[k>>2]<<8-(c[g>>2]|0);l=b;return c[k>>2]|0;}function Fr(){return 0;}function Gr(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=l;l=l+32|0;j=i+28|0;k=i+24|0;m=i+20|0;n=i+16|0;o=i+12|0;p=i+8|0;q=i+4|0;r=i;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;h=c[k>>2]|0;g=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;p=c[q>>2]|0;q=c[r>>2]|0;if(c[(c[k>>2]|0)+28944>>2]|0){c[j>>2]=Xr(h,g,m,n,o,p,q)|0;s=c[j>>2]|0;l=i;return s|0;}else{c[j>>2]=Yr(h,g,m,n,o,p,q)|0;s=c[j>>2]|0;l=i;return s|0;}return 0;}function Hr(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=l;l=l+32|0;j=i+28|0;k=i+24|0;m=i+20|0;n=i+16|0;o=i+12|0;p=i+8|0;q=i+4|0;r=i;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;h=c[k>>2]|0;g=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;p=c[q>>2]|0;q=c[r>>2]|0;if(c[(c[k>>2]|0)+28944>>2]|0){c[j>>2]=Ir(h,g,m,n,o,p,q)|0;s=c[j>>2]|0;l=i;return s|0;}else{c[j>>2]=Jr(h,g,m,n,o,p,q)|0;s=c[j>>2]|0;l=i;return s|0;}return 0;}function Ir(b,f,g,h,i,j,k){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0;m=l;l=l+448|0;n=m+432|0;o=m+424|0;p=m+420|0;q=m+416|0;r=m+412|0;s=m+408|0;t=m+404|0;u=m+400|0;v=m+396|0;w=m+392|0;x=m+388|0;y=m+384|0;z=m+380|0;A=m+376|0;B=m+372|0;C=m+368|0;D=m+364|0;E=m+360|0;F=m;G=m+356|0;H=m+352|0;I=m+344|0;J=m+340|0;K=m+336|0;L=m+332|0;M=m+328|0;N=m+320|0;O=m+316|0;P=m+312|0;Q=m+308|0;R=m+304|0;S=m+296|0;T=m+292|0;U=m+288|0;V=m+284|0;W=m+280|0;X=m+264|0;Y=m+256|0;Z=m+252|0;_=m+248|0;$=m+244|0;aa=m+240|0;ba=m+236|0;ca=m+232|0;da=m+228|0;ea=m+224|0;fa=m+220|0;ga=m+216|0;ha=m+212|0;ia=m+208|0;ja=m+204|0;ka=m+200|0;la=m+196|0;ma=m+192|0;na=m+188|0;oa=m+184|0;pa=m+180|0;qa=m+176|0;ra=m+172|0;sa=m+168|0;ta=m+164|0;ua=m+160|0;va=m+156|0;wa=m+152|0;xa=m+148|0;ya=m+80|0;za=m+76|0;Aa=m+72|0;Ba=m+56|0;Ca=m+52|0;Da=m+48|0;Ea=m+44|0;Fa=m+40|0;Ga=m+36|0;Ha=m+32|0;Ia=m+28|0;Ja=m+24|0;Ka=m+20|0;La=m+16|0;c[Fa>>2]=b;c[Ga>>2]=f;c[Ha>>2]=g;c[Ia>>2]=h;c[Ja>>2]=i;c[Ka>>2]=j;c[La>>2]=k;k=c[Ga>>2]|0;Ga=c[Ha>>2]|0;Ha=c[Ia>>2]|0;Ia=c[Ja>>2]|0;Ja=c[Ka>>2]|0;Ka=c[La>>2]|0;c[ha>>2]=c[Fa>>2];c[ia>>2]=k;c[ja>>2]=Ga;c[ka>>2]=Ha;c[la>>2]=Ia;c[ma>>2]=Ja;c[na>>2]=Ka;c[oa>>2]=c[ka>>2];c[pa>>2]=(c[oa>>2]|0)+(c[la>>2]|0);c[qa>>2]=c[ia>>2];c[ra>>2]=(c[qa>>2]|0)+(c[ja>>2]|0);c[sa>>2]=c[qa>>2];c[ta>>2]=c[(c[ha>>2]|0)+28916>>2];c[ua>>2]=(c[ta>>2]|0)+(c[(c[ha>>2]|0)+28932>>2]|0);c[va>>2]=c[(c[ha>>2]|0)+28732>>2];c[wa>>2]=c[(c[ha>>2]|0)+28736>>2];c[xa>>2]=c[(c[ha>>2]|0)+28740>>2];a:do{if(c[ma>>2]|0){c[(c[ha>>2]|0)+28812>>2]=1;c[za>>2]=0;while(1){if((c[za>>2]|0)>>>0>=3)break;c[ya+44+(c[za>>2]<<2)>>2]=c[(c[ha>>2]|0)+16+28700+(c[za>>2]<<2)>>2];c[za>>2]=(c[za>>2]|0)+1;}c[Aa>>2]=Kr(ya,c[oa>>2]|0,(c[pa>>2]|0)-(c[oa>>2]|0)|0)|0;if($q(c[Aa>>2]|0)|0){c[ga>>2]=-20;Ma=c[ga>>2]|0;l=m;return Ma|0;}Lr(ya+20|0,ya,c[c[ha>>2]>>2]|0);Lr(ya+28|0,ya,c[(c[ha>>2]|0)+8>>2]|0);Lr(ya+36|0,ya,c[(c[ha>>2]|0)+4>>2]|0);while(1){ja=(Mr(ya)|0)>>>0<=2;Na=c[ma>>2]|0;if(!(ja?(c[ma>>2]|0)!=0:0))break;c[ma>>2]=Na+-1;ja=c[na>>2]|0;c[V>>2]=ya;c[W>>2]=ja;c[Y>>2]=d[(c[(c[V>>2]|0)+20+4>>2]|0)+(c[(c[V>>2]|0)+20>>2]<<3)+2>>0];c[Z>>2]=d[(c[(c[V>>2]|0)+36+4>>2]|0)+(c[(c[V>>2]|0)+36>>2]<<3)+2>>0];c[_>>2]=d[(c[(c[V>>2]|0)+28+4>>2]|0)+(c[(c[V>>2]|0)+28>>2]<<3)+2>>0];c[$>>2]=(c[Y>>2]|0)+(c[Z>>2]|0)+(c[_>>2]|0);c[aa>>2]=c[(c[(c[V>>2]|0)+20+4>>2]|0)+(c[(c[V>>2]|0)+20>>2]<<3)+4>>2];c[ba>>2]=c[(c[(c[V>>2]|0)+36+4>>2]|0)+(c[(c[V>>2]|0)+36>>2]<<3)+4>>2];c[ca>>2]=c[(c[(c[V>>2]|0)+28+4>>2]|0)+(c[(c[V>>2]|0)+28>>2]<<3)+4>>2];do{if(c[_>>2]|0){ja=(Dr()|0)!=0;if(!(ja&(c[W>>2]|0)!=0&(c[_>>2]|0)>>>0>=25)){ja=c[ca>>2]|0;c[da>>2]=ja+(Nr(c[V>>2]|0,c[_>>2]|0)|0);if(!(Dr()|0))break;Mr(c[V>>2]|0)|0;break;}if((c[_>>2]|0)>>>0<(32-(c[(c[V>>2]|0)+4>>2]|0)|0)>>>0)Oa=c[_>>2]|0;else Oa=32-(c[(c[V>>2]|0)+4>>2]|0)|0;c[ea>>2]=(c[_>>2]|0)-Oa;ja=c[ca>>2]|0;ia=Nr(c[V>>2]|0,(c[_>>2]|0)-(c[ea>>2]|0)|0)|0;c[da>>2]=ja+(ia<<c[ea>>2]);Mr(c[V>>2]|0)|0;if(c[ea>>2]|0){ia=Nr(c[V>>2]|0,c[ea>>2]|0)|0;c[da>>2]=(c[da>>2]|0)+ia;}}else c[da>>2]=0;}while(0);do{if((c[_>>2]|0)>>>0<=1){c[da>>2]=(c[da>>2]|0)+((c[aa>>2]|0)==0&1);if(!(c[da>>2]|0)){c[da>>2]=c[(c[V>>2]|0)+44>>2];break;}ia=(c[V>>2]|0)+44|0;if((c[da>>2]|0)==3)Pa=(c[ia>>2]|0)-1|0;else Pa=c[ia+(c[da>>2]<<2)>>2]|0;c[fa>>2]=Pa;c[fa>>2]=(c[fa>>2]|0)+(((c[fa>>2]|0)!=0^1)&1);if((c[da>>2]|0)!=1)c[(c[V>>2]|0)+44+8>>2]=c[(c[V>>2]|0)+44+4>>2];c[(c[V>>2]|0)+44+4>>2]=c[(c[V>>2]|0)+44>>2];ia=c[fa>>2]|0;c[da>>2]=ia;c[(c[V>>2]|0)+44>>2]=ia;}else{c[(c[V>>2]|0)+44+8>>2]=c[(c[V>>2]|0)+44+4>>2];c[(c[V>>2]|0)+44+4>>2]=c[(c[V>>2]|0)+44>>2];c[(c[V>>2]|0)+44>>2]=c[da>>2];}}while(0);c[X+8>>2]=c[da>>2];ia=c[ba>>2]|0;if((c[Z>>2]|0)>>>0>0)Qa=Nr(c[V>>2]|0,c[Z>>2]|0)|0;else Qa=0;c[X+4>>2]=ia+Qa;if(Dr()|0?((c[Z>>2]|0)+(c[Y>>2]|0)|0)>>>0>=20:0)Mr(c[V>>2]|0)|0;ia=(Fr()|0)!=0;if(ia&(c[$>>2]|0)>>>0>=31)Mr(c[V>>2]|0)|0;ia=c[aa>>2]|0;if((c[Y>>2]|0)>>>0>0)Ra=Nr(c[V>>2]|0,c[Y>>2]|0)|0;else Ra=0;c[X>>2]=ia+Ra;if(Dr()|0)Mr(c[V>>2]|0)|0;ia=c[V>>2]|0;c[Q>>2]=(c[V>>2]|0)+20;c[R>>2]=ia;ia=(c[(c[Q>>2]|0)+4>>2]|0)+(c[c[Q>>2]>>2]<<3)|0;c[S>>2]=c[ia>>2];c[S+4>>2]=c[ia+4>>2];c[T>>2]=d[S+3>>0];c[U>>2]=Or(c[R>>2]|0,c[T>>2]|0)|0;c[c[Q>>2]>>2]=(e[S>>1]|0)+(c[U>>2]|0);ia=c[V>>2]|0;c[L>>2]=(c[V>>2]|0)+36;c[M>>2]=ia;ia=(c[(c[L>>2]|0)+4>>2]|0)+(c[c[L>>2]>>2]<<3)|0;c[N>>2]=c[ia>>2];c[N+4>>2]=c[ia+4>>2];c[O>>2]=d[N+3>>0];c[P>>2]=Or(c[M>>2]|0,c[O>>2]|0)|0;c[c[L>>2]>>2]=(e[N>>1]|0)+(c[P>>2]|0);if(Dr()|0)Mr(c[V>>2]|0)|0;ia=c[V>>2]|0;c[G>>2]=(c[V>>2]|0)+28;c[H>>2]=ia;ia=(c[(c[G>>2]|0)+4>>2]|0)+(c[c[G>>2]>>2]<<3)|0;c[I>>2]=c[ia>>2];c[I+4>>2]=c[ia+4>>2];c[J>>2]=d[I+3>>0];c[K>>2]=Or(c[H>>2]|0,c[J>>2]|0)|0;c[c[G>>2]>>2]=(e[I>>1]|0)+(c[K>>2]|0);c[Ba>>2]=c[X>>2];c[Ba+4>>2]=c[X+4>>2];c[Ba+8>>2]=c[X+8>>2];c[Ba+12>>2]=c[X+12>>2];ia=c[sa>>2]|0;ja=c[ra>>2]|0;la=c[ua>>2]|0;ka=c[va>>2]|0;Ka=c[wa>>2]|0;Ja=c[xa>>2]|0;Ia=F;Ha=Ba;Ga=Ia+16|0;do{a[Ia>>0]=a[Ha>>0]|0;Ia=Ia+1|0;Ha=Ha+1|0;}while((Ia|0)<(Ga|0));c[p>>2]=ia;c[q>>2]=ja;c[r>>2]=ta;c[s>>2]=la;c[t>>2]=ka;c[u>>2]=Ka;c[v>>2]=Ja;c[w>>2]=(c[p>>2]|0)+(c[F>>2]|0);c[x>>2]=(c[F>>2]|0)+(c[F+4>>2]|0);c[y>>2]=(c[p>>2]|0)+(c[x>>2]|0);c[z>>2]=(c[q>>2]|0)+-8;c[A>>2]=(c[c[r>>2]>>2]|0)+(c[F>>2]|0);c[B>>2]=(c[w>>2]|0)+(0-(c[F+8>>2]|0));b:do{if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0)c[o>>2]=-70;else{if((c[A>>2]|0)>>>0>(c[s>>2]|0)>>>0){c[o>>2]=-20;break;}Ha=c[p>>2]|0;if((c[w>>2]|0)>>>0>(c[z>>2]|0)>>>0){Ia=c[q>>2]|0;Ga=c[r>>2]|0;k=c[s>>2]|0;Fa=c[t>>2]|0;La=c[u>>2]|0;j=c[v>>2]|0;c[n>>2]=c[F>>2];c[n+4>>2]=c[F+4>>2];c[n+8>>2]=c[F+8>>2];c[n+12>>2]=c[F+12>>2];c[o>>2]=Pr(Ha,Ia,n,Ga,k,Fa,La,j)|0;break;}Qr(Ha,c[c[r>>2]>>2]|0);if((c[F>>2]|0)>>>0>8)Rr((c[p>>2]|0)+8|0,(c[c[r>>2]>>2]|0)+8|0,(c[F>>2]|0)-8|0);c[p>>2]=c[w>>2];c[c[r>>2]>>2]=c[A>>2];do{if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[t>>2]|0)|0)>>>0){if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[u>>2]|0)|0)>>>0){c[o>>2]=-20;break b;}c[B>>2]=(c[v>>2]|0)+((c[B>>2]|0)-(c[t>>2]|0));if(((c[B>>2]|0)+(c[F+4>>2]|0)|0)>>>0<=(c[v>>2]|0)>>>0){nE(c[w>>2]|0,c[B>>2]|0,c[F+4>>2]|0)|0;c[o>>2]=c[x>>2];break b;}c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);nE(c[w>>2]|0,c[B>>2]|0,c[C>>2]|0)|0;c[p>>2]=(c[w>>2]|0)+(c[C>>2]|0);Ha=F+4|0;c[Ha>>2]=(c[Ha>>2]|0)-(c[C>>2]|0);c[B>>2]=c[t>>2];if((c[p>>2]|0)>>>0<=(c[z>>2]|0)>>>0?(c[F+4>>2]|0)>>>0>=3:0)break;c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[F+4>>2]|0)>>>0)break;a[(c[p>>2]|0)+(c[D>>2]|0)>>0]=a[(c[B>>2]|0)+(c[D>>2]|0)>>0]|0;c[D>>2]=(c[D>>2]|0)+1;}c[o>>2]=c[x>>2];break b;}}while(0);if((c[F+8>>2]|0)>>>0<8){c[E>>2]=c[6816+(c[F+8>>2]<<2)>>2];a[c[p>>2]>>0]=a[c[B>>2]>>0]|0;a[(c[p>>2]|0)+1>>0]=a[(c[B>>2]|0)+1>>0]|0;a[(c[p>>2]|0)+2>>0]=a[(c[B>>2]|0)+2>>0]|0;a[(c[p>>2]|0)+3>>0]=a[(c[B>>2]|0)+3>>0]|0;c[B>>2]=(c[B>>2]|0)+(c[6848+(c[F+8>>2]<<2)>>2]|0);Sr((c[p>>2]|0)+4|0,c[B>>2]|0);c[B>>2]=(c[B>>2]|0)+(0-(c[E>>2]|0));}else Qr(c[p>>2]|0,c[B>>2]|0);c[p>>2]=(c[p>>2]|0)+8;c[B>>2]=(c[B>>2]|0)+8;Ha=c[p>>2]|0;c:do{if((c[y>>2]|0)>>>0>((c[q>>2]|0)+-13|0)>>>0){if(Ha>>>0<(c[z>>2]|0)>>>0){Rr(c[p>>2]|0,c[B>>2]|0,(c[z>>2]|0)-(c[p>>2]|0)|0);c[B>>2]=(c[B>>2]|0)+((c[z>>2]|0)-(c[p>>2]|0));c[p>>2]=c[z>>2];}while(1){if((c[p>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break c;j=c[B>>2]|0;c[B>>2]=j+1;La=a[j>>0]|0;j=c[p>>2]|0;c[p>>2]=j+1;a[j>>0]=La;}}else Rr(Ha,c[B>>2]|0,(c[F+4>>2]|0)-8|0);}while(0);c[o>>2]=c[x>>2];}}while(0);c[Ca>>2]=c[o>>2];Ja=($q(c[Ca>>2]|0)|0)!=0;Sa=c[Ca>>2]|0;if(Ja){Ta=73;break;}c[sa>>2]=(c[sa>>2]|0)+Sa;}if((Ta|0)==73){c[ga>>2]=Sa;Ma=c[ga>>2]|0;l=m;return Ma|0;}if(Na|0){c[ga>>2]=-20;Ma=c[ga>>2]|0;l=m;return Ma|0;}c[Da>>2]=0;while(1){if((c[Da>>2]|0)>>>0>=3)break a;c[(c[ha>>2]|0)+16+28700+(c[Da>>2]<<2)>>2]=c[ya+44+(c[Da>>2]<<2)>>2];c[Da>>2]=(c[Da>>2]|0)+1;}}}while(0);c[Ea>>2]=(c[ua>>2]|0)-(c[ta>>2]|0);if((c[Ea>>2]|0)>>>0>((c[ra>>2]|0)-(c[sa>>2]|0)|0)>>>0){c[ga>>2]=-70;Ma=c[ga>>2]|0;l=m;return Ma|0;}else{mE(c[sa>>2]|0,c[ta>>2]|0,c[Ea>>2]|0)|0;c[sa>>2]=(c[sa>>2]|0)+(c[Ea>>2]|0);c[ga>>2]=(c[sa>>2]|0)-(c[qa>>2]|0);Ma=c[ga>>2]|0;l=m;return Ma|0;}return 0;}function Jr(b,f,g,h,i,j,k){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0;m=l;l=l+448|0;n=m+432|0;o=m+424|0;p=m+420|0;q=m+416|0;r=m+412|0;s=m+408|0;t=m+404|0;u=m+400|0;v=m+396|0;w=m+392|0;x=m+388|0;y=m+384|0;z=m+380|0;A=m+376|0;B=m+372|0;C=m+368|0;D=m+364|0;E=m+360|0;F=m;G=m+356|0;H=m+352|0;I=m+344|0;J=m+340|0;K=m+336|0;L=m+332|0;M=m+328|0;N=m+320|0;O=m+316|0;P=m+312|0;Q=m+308|0;R=m+304|0;S=m+296|0;T=m+292|0;U=m+288|0;V=m+284|0;W=m+280|0;X=m+264|0;Y=m+256|0;Z=m+252|0;_=m+248|0;$=m+244|0;aa=m+240|0;ba=m+236|0;ca=m+232|0;da=m+228|0;ea=m+224|0;fa=m+220|0;ga=m+216|0;ha=m+212|0;ia=m+208|0;ja=m+204|0;ka=m+200|0;la=m+196|0;ma=m+192|0;na=m+188|0;oa=m+184|0;pa=m+180|0;qa=m+176|0;ra=m+172|0;sa=m+168|0;ta=m+164|0;ua=m+160|0;va=m+156|0;wa=m+152|0;xa=m+148|0;ya=m+80|0;za=m+76|0;Aa=m+72|0;Ba=m+56|0;Ca=m+52|0;Da=m+48|0;Ea=m+44|0;Fa=m+40|0;Ga=m+36|0;Ha=m+32|0;Ia=m+28|0;Ja=m+24|0;Ka=m+20|0;La=m+16|0;c[Fa>>2]=b;c[Ga>>2]=f;c[Ha>>2]=g;c[Ia>>2]=h;c[Ja>>2]=i;c[Ka>>2]=j;c[La>>2]=k;k=c[Ga>>2]|0;Ga=c[Ha>>2]|0;Ha=c[Ia>>2]|0;Ia=c[Ja>>2]|0;Ja=c[Ka>>2]|0;Ka=c[La>>2]|0;c[ha>>2]=c[Fa>>2];c[ia>>2]=k;c[ja>>2]=Ga;c[ka>>2]=Ha;c[la>>2]=Ia;c[ma>>2]=Ja;c[na>>2]=Ka;c[oa>>2]=c[ka>>2];c[pa>>2]=(c[oa>>2]|0)+(c[la>>2]|0);c[qa>>2]=c[ia>>2];c[ra>>2]=(c[qa>>2]|0)+(c[ja>>2]|0);c[sa>>2]=c[qa>>2];c[ta>>2]=c[(c[ha>>2]|0)+28916>>2];c[ua>>2]=(c[ta>>2]|0)+(c[(c[ha>>2]|0)+28932>>2]|0);c[va>>2]=c[(c[ha>>2]|0)+28732>>2];c[wa>>2]=c[(c[ha>>2]|0)+28736>>2];c[xa>>2]=c[(c[ha>>2]|0)+28740>>2];a:do{if(c[ma>>2]|0){c[(c[ha>>2]|0)+28812>>2]=1;c[za>>2]=0;while(1){if((c[za>>2]|0)>>>0>=3)break;c[ya+44+(c[za>>2]<<2)>>2]=c[(c[ha>>2]|0)+16+28700+(c[za>>2]<<2)>>2];c[za>>2]=(c[za>>2]|0)+1;}c[Aa>>2]=Kr(ya,c[oa>>2]|0,(c[pa>>2]|0)-(c[oa>>2]|0)|0)|0;if($q(c[Aa>>2]|0)|0){c[ga>>2]=-20;Ma=c[ga>>2]|0;l=m;return Ma|0;}Lr(ya+20|0,ya,c[c[ha>>2]>>2]|0);Lr(ya+28|0,ya,c[(c[ha>>2]|0)+8>>2]|0);Lr(ya+36|0,ya,c[(c[ha>>2]|0)+4>>2]|0);while(1){ja=(Mr(ya)|0)>>>0<=2;Na=c[ma>>2]|0;if(!(ja?(c[ma>>2]|0)!=0:0))break;c[ma>>2]=Na+-1;ja=c[na>>2]|0;c[V>>2]=ya;c[W>>2]=ja;c[Y>>2]=d[(c[(c[V>>2]|0)+20+4>>2]|0)+(c[(c[V>>2]|0)+20>>2]<<3)+2>>0];c[Z>>2]=d[(c[(c[V>>2]|0)+36+4>>2]|0)+(c[(c[V>>2]|0)+36>>2]<<3)+2>>0];c[_>>2]=d[(c[(c[V>>2]|0)+28+4>>2]|0)+(c[(c[V>>2]|0)+28>>2]<<3)+2>>0];c[$>>2]=(c[Y>>2]|0)+(c[Z>>2]|0)+(c[_>>2]|0);c[aa>>2]=c[(c[(c[V>>2]|0)+20+4>>2]|0)+(c[(c[V>>2]|0)+20>>2]<<3)+4>>2];c[ba>>2]=c[(c[(c[V>>2]|0)+36+4>>2]|0)+(c[(c[V>>2]|0)+36>>2]<<3)+4>>2];c[ca>>2]=c[(c[(c[V>>2]|0)+28+4>>2]|0)+(c[(c[V>>2]|0)+28>>2]<<3)+4>>2];do{if(c[_>>2]|0){ja=(Dr()|0)!=0;if(!(ja&(c[W>>2]|0)!=0&(c[_>>2]|0)>>>0>=25)){ja=c[ca>>2]|0;c[da>>2]=ja+(Nr(c[V>>2]|0,c[_>>2]|0)|0);if(!(Dr()|0))break;Mr(c[V>>2]|0)|0;break;}if((c[_>>2]|0)>>>0<(32-(c[(c[V>>2]|0)+4>>2]|0)|0)>>>0)Oa=c[_>>2]|0;else Oa=32-(c[(c[V>>2]|0)+4>>2]|0)|0;c[ea>>2]=(c[_>>2]|0)-Oa;ja=c[ca>>2]|0;ia=Nr(c[V>>2]|0,(c[_>>2]|0)-(c[ea>>2]|0)|0)|0;c[da>>2]=ja+(ia<<c[ea>>2]);Mr(c[V>>2]|0)|0;if(c[ea>>2]|0){ia=Nr(c[V>>2]|0,c[ea>>2]|0)|0;c[da>>2]=(c[da>>2]|0)+ia;}}else c[da>>2]=0;}while(0);do{if((c[_>>2]|0)>>>0<=1){c[da>>2]=(c[da>>2]|0)+((c[aa>>2]|0)==0&1);if(!(c[da>>2]|0)){c[da>>2]=c[(c[V>>2]|0)+44>>2];break;}ia=(c[V>>2]|0)+44|0;if((c[da>>2]|0)==3)Pa=(c[ia>>2]|0)-1|0;else Pa=c[ia+(c[da>>2]<<2)>>2]|0;c[fa>>2]=Pa;c[fa>>2]=(c[fa>>2]|0)+(((c[fa>>2]|0)!=0^1)&1);if((c[da>>2]|0)!=1)c[(c[V>>2]|0)+44+8>>2]=c[(c[V>>2]|0)+44+4>>2];c[(c[V>>2]|0)+44+4>>2]=c[(c[V>>2]|0)+44>>2];ia=c[fa>>2]|0;c[da>>2]=ia;c[(c[V>>2]|0)+44>>2]=ia;}else{c[(c[V>>2]|0)+44+8>>2]=c[(c[V>>2]|0)+44+4>>2];c[(c[V>>2]|0)+44+4>>2]=c[(c[V>>2]|0)+44>>2];c[(c[V>>2]|0)+44>>2]=c[da>>2];}}while(0);c[X+8>>2]=c[da>>2];ia=c[ba>>2]|0;if((c[Z>>2]|0)>>>0>0)Qa=Nr(c[V>>2]|0,c[Z>>2]|0)|0;else Qa=0;c[X+4>>2]=ia+Qa;if(Dr()|0?((c[Z>>2]|0)+(c[Y>>2]|0)|0)>>>0>=20:0)Mr(c[V>>2]|0)|0;ia=(Fr()|0)!=0;if(ia&(c[$>>2]|0)>>>0>=31)Mr(c[V>>2]|0)|0;ia=c[aa>>2]|0;if((c[Y>>2]|0)>>>0>0)Ra=Nr(c[V>>2]|0,c[Y>>2]|0)|0;else Ra=0;c[X>>2]=ia+Ra;if(Dr()|0)Mr(c[V>>2]|0)|0;ia=c[V>>2]|0;c[Q>>2]=(c[V>>2]|0)+20;c[R>>2]=ia;ia=(c[(c[Q>>2]|0)+4>>2]|0)+(c[c[Q>>2]>>2]<<3)|0;c[S>>2]=c[ia>>2];c[S+4>>2]=c[ia+4>>2];c[T>>2]=d[S+3>>0];c[U>>2]=Or(c[R>>2]|0,c[T>>2]|0)|0;c[c[Q>>2]>>2]=(e[S>>1]|0)+(c[U>>2]|0);ia=c[V>>2]|0;c[L>>2]=(c[V>>2]|0)+36;c[M>>2]=ia;ia=(c[(c[L>>2]|0)+4>>2]|0)+(c[c[L>>2]>>2]<<3)|0;c[N>>2]=c[ia>>2];c[N+4>>2]=c[ia+4>>2];c[O>>2]=d[N+3>>0];c[P>>2]=Or(c[M>>2]|0,c[O>>2]|0)|0;c[c[L>>2]>>2]=(e[N>>1]|0)+(c[P>>2]|0);if(Dr()|0)Mr(c[V>>2]|0)|0;ia=c[V>>2]|0;c[G>>2]=(c[V>>2]|0)+28;c[H>>2]=ia;ia=(c[(c[G>>2]|0)+4>>2]|0)+(c[c[G>>2]>>2]<<3)|0;c[I>>2]=c[ia>>2];c[I+4>>2]=c[ia+4>>2];c[J>>2]=d[I+3>>0];c[K>>2]=Or(c[H>>2]|0,c[J>>2]|0)|0;c[c[G>>2]>>2]=(e[I>>1]|0)+(c[K>>2]|0);c[Ba>>2]=c[X>>2];c[Ba+4>>2]=c[X+4>>2];c[Ba+8>>2]=c[X+8>>2];c[Ba+12>>2]=c[X+12>>2];ia=c[sa>>2]|0;ja=c[ra>>2]|0;la=c[ua>>2]|0;ka=c[va>>2]|0;Ka=c[wa>>2]|0;Ja=c[xa>>2]|0;Ia=F;Ha=Ba;Ga=Ia+16|0;do{a[Ia>>0]=a[Ha>>0]|0;Ia=Ia+1|0;Ha=Ha+1|0;}while((Ia|0)<(Ga|0));c[p>>2]=ia;c[q>>2]=ja;c[r>>2]=ta;c[s>>2]=la;c[t>>2]=ka;c[u>>2]=Ka;c[v>>2]=Ja;c[w>>2]=(c[p>>2]|0)+(c[F>>2]|0);c[x>>2]=(c[F>>2]|0)+(c[F+4>>2]|0);c[y>>2]=(c[p>>2]|0)+(c[x>>2]|0);c[z>>2]=(c[q>>2]|0)+-8;c[A>>2]=(c[c[r>>2]>>2]|0)+(c[F>>2]|0);c[B>>2]=(c[w>>2]|0)+(0-(c[F+8>>2]|0));b:do{if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0)c[o>>2]=-70;else{if((c[A>>2]|0)>>>0>(c[s>>2]|0)>>>0){c[o>>2]=-20;break;}Ha=c[p>>2]|0;if((c[w>>2]|0)>>>0>(c[z>>2]|0)>>>0){Ia=c[q>>2]|0;Ga=c[r>>2]|0;k=c[s>>2]|0;Fa=c[t>>2]|0;La=c[u>>2]|0;j=c[v>>2]|0;c[n>>2]=c[F>>2];c[n+4>>2]=c[F+4>>2];c[n+8>>2]=c[F+8>>2];c[n+12>>2]=c[F+12>>2];c[o>>2]=Pr(Ha,Ia,n,Ga,k,Fa,La,j)|0;break;}Qr(Ha,c[c[r>>2]>>2]|0);if((c[F>>2]|0)>>>0>8)Rr((c[p>>2]|0)+8|0,(c[c[r>>2]>>2]|0)+8|0,(c[F>>2]|0)-8|0);c[p>>2]=c[w>>2];c[c[r>>2]>>2]=c[A>>2];do{if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[t>>2]|0)|0)>>>0){if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[u>>2]|0)|0)>>>0){c[o>>2]=-20;break b;}c[B>>2]=(c[v>>2]|0)+((c[B>>2]|0)-(c[t>>2]|0));if(((c[B>>2]|0)+(c[F+4>>2]|0)|0)>>>0<=(c[v>>2]|0)>>>0){nE(c[w>>2]|0,c[B>>2]|0,c[F+4>>2]|0)|0;c[o>>2]=c[x>>2];break b;}c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);nE(c[w>>2]|0,c[B>>2]|0,c[C>>2]|0)|0;c[p>>2]=(c[w>>2]|0)+(c[C>>2]|0);Ha=F+4|0;c[Ha>>2]=(c[Ha>>2]|0)-(c[C>>2]|0);c[B>>2]=c[t>>2];if((c[p>>2]|0)>>>0<=(c[z>>2]|0)>>>0?(c[F+4>>2]|0)>>>0>=3:0)break;c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[F+4>>2]|0)>>>0)break;a[(c[p>>2]|0)+(c[D>>2]|0)>>0]=a[(c[B>>2]|0)+(c[D>>2]|0)>>0]|0;c[D>>2]=(c[D>>2]|0)+1;}c[o>>2]=c[x>>2];break b;}}while(0);if((c[F+8>>2]|0)>>>0<8){c[E>>2]=c[6816+(c[F+8>>2]<<2)>>2];a[c[p>>2]>>0]=a[c[B>>2]>>0]|0;a[(c[p>>2]|0)+1>>0]=a[(c[B>>2]|0)+1>>0]|0;a[(c[p>>2]|0)+2>>0]=a[(c[B>>2]|0)+2>>0]|0;a[(c[p>>2]|0)+3>>0]=a[(c[B>>2]|0)+3>>0]|0;c[B>>2]=(c[B>>2]|0)+(c[6848+(c[F+8>>2]<<2)>>2]|0);Sr((c[p>>2]|0)+4|0,c[B>>2]|0);c[B>>2]=(c[B>>2]|0)+(0-(c[E>>2]|0));}else Qr(c[p>>2]|0,c[B>>2]|0);c[p>>2]=(c[p>>2]|0)+8;c[B>>2]=(c[B>>2]|0)+8;Ha=c[p>>2]|0;c:do{if((c[y>>2]|0)>>>0>((c[q>>2]|0)+-13|0)>>>0){if(Ha>>>0<(c[z>>2]|0)>>>0){Rr(c[p>>2]|0,c[B>>2]|0,(c[z>>2]|0)-(c[p>>2]|0)|0);c[B>>2]=(c[B>>2]|0)+((c[z>>2]|0)-(c[p>>2]|0));c[p>>2]=c[z>>2];}while(1){if((c[p>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break c;j=c[B>>2]|0;c[B>>2]=j+1;La=a[j>>0]|0;j=c[p>>2]|0;c[p>>2]=j+1;a[j>>0]=La;}}else Rr(Ha,c[B>>2]|0,(c[F+4>>2]|0)-8|0);}while(0);c[o>>2]=c[x>>2];}}while(0);c[Ca>>2]=c[o>>2];Ja=($q(c[Ca>>2]|0)|0)!=0;Sa=c[Ca>>2]|0;if(Ja){Ta=73;break;}c[sa>>2]=(c[sa>>2]|0)+Sa;}if((Ta|0)==73){c[ga>>2]=Sa;Ma=c[ga>>2]|0;l=m;return Ma|0;}if(Na|0){c[ga>>2]=-20;Ma=c[ga>>2]|0;l=m;return Ma|0;}c[Da>>2]=0;while(1){if((c[Da>>2]|0)>>>0>=3)break a;c[(c[ha>>2]|0)+16+28700+(c[Da>>2]<<2)>>2]=c[ya+44+(c[Da>>2]<<2)>>2];c[Da>>2]=(c[Da>>2]|0)+1;}}}while(0);c[Ea>>2]=(c[ua>>2]|0)-(c[ta>>2]|0);if((c[Ea>>2]|0)>>>0>((c[ra>>2]|0)-(c[sa>>2]|0)|0)>>>0){c[ga>>2]=-70;Ma=c[ga>>2]|0;l=m;return Ma|0;}else{mE(c[sa>>2]|0,c[ta>>2]|0,c[Ea>>2]|0)|0;c[sa>>2]=(c[sa>>2]|0)+(c[Ea>>2]|0);c[ga>>2]=(c[sa>>2]|0)-(c[qa>>2]|0);Ma=c[ga>>2]|0;l=m;return Ma|0;}return 0;}function Kr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+17|0;n=g+16|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;if((c[k>>2]|0)>>>0<1){f=c[i>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[h>>2]=-72;o=c[h>>2]|0;l=g;return o|0;}c[(c[i>>2]|0)+12>>2]=c[j>>2];c[(c[i>>2]|0)+16>>2]=(c[(c[i>>2]|0)+12>>2]|0)+4;do{if((c[k>>2]|0)>>>0>=4){c[(c[i>>2]|0)+8>>2]=(c[j>>2]|0)+(c[k>>2]|0)+-4;f=Wr(c[(c[i>>2]|0)+8>>2]|0)|0;c[c[i>>2]>>2]=f;a[m>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[m>>0]|0|0)p=8-(Ar(d[m>>0]|0)|0)|0;else p=0;c[(c[i>>2]|0)+4>>2]=p;if(!(d[m>>0]|0)){c[h>>2]=-1;o=c[h>>2]|0;l=g;return o|0;}}else{c[(c[i>>2]|0)+8>>2]=c[(c[i>>2]|0)+12>>2];c[c[i>>2]>>2]=d[c[(c[i>>2]|0)+12>>2]>>0];switch(c[k>>2]|0){case 7:{f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+6>>0]|0)<<16);q=10;break;}case 6:{q=10;break;}case 5:{q=11;break;}case 4:{q=12;break;}case 3:{q=13;break;}case 2:{q=14;break;}default:{}}if((q|0)==10){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+5>>0]|0)<<8);q=11;}if((q|0)==11){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+4>>0]|0)<<0);q=12;}if((q|0)==12){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+3>>0]|0)<<24);q=13;}if((q|0)==13){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+2>>0]|0)<<16);q=14;}if((q|0)==14){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+1>>0]|0)<<8);}a[n>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[n>>0]|0|0)r=8-(Ar(d[n>>0]|0)|0)|0;else r=0;c[(c[i>>2]|0)+4>>2]=r;if(d[n>>0]|0|0){f=(c[i>>2]|0)+4|0;c[f>>2]=(c[f>>2]|0)+(4-(c[k>>2]|0)<<3);break;}c[h>>2]=-20;o=c[h>>2]|0;l=g;return o|0;}}while(0);c[h>>2]=c[k>>2];o=c[h>>2]|0;l=g;return o|0;}function Lr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[h>>2];c[j>>2]=c[i>>2];i=Or(c[g>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;c[c[f>>2]>>2]=i;Mr(c[g>>2]|0)|0;c[(c[f>>2]|0)+4>>2]=(c[h>>2]|0)+8;l=e;return;}function Mr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[(c[e>>2]|0)+4>>2]|0)>>>0>32){c[d>>2]=3;h=c[d>>2]|0;l=b;return h|0;}a=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){i=(c[e>>2]|0)+8|0;c[i>>2]=(c[i>>2]|0)+(0-((c[a+4>>2]|0)>>>3));i=(c[e>>2]|0)+4|0;c[i>>2]=c[i>>2]&7;i=Wr(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=i;c[d>>2]=0;h=c[d>>2]|0;l=b;return h|0;}i=c[(c[e>>2]|0)+4>>2]|0;if((c[a+8>>2]|0)!=(c[(c[e>>2]|0)+12>>2]|0)){c[f>>2]=i>>>3;c[g>>2]=0;if(((c[(c[e>>2]|0)+8>>2]|0)+(0-(c[f>>2]|0))|0)>>>0<(c[(c[e>>2]|0)+12>>2]|0)>>>0){c[f>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0);c[g>>2]=1;}a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(0-(c[f>>2]|0));a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[f>>2]<<3);f=Wr(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=f;c[d>>2]=c[g>>2];h=c[d>>2]|0;l=b;return h|0;}if(i>>>0<32){c[d>>2]=1;h=c[d>>2]|0;l=b;return h|0;}else{c[d>>2]=2;h=c[d>>2]|0;l=b;return h|0;}return 0;}function Nr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=Vr(c[e>>2]|0,c[f>>2]|0)|0;Ur(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function Or(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=Tr(c[e>>2]|0,c[f>>2]|0)|0;Ur(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function Pr(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;k=l;l=l+64|0;m=k+56|0;n=k+52|0;o=k+48|0;p=k+44|0;q=k+40|0;r=k+36|0;s=k+32|0;t=k+28|0;u=k+24|0;v=k+20|0;w=k+16|0;x=k+12|0;y=k+8|0;z=k+4|0;A=k;c[n>>2]=b;c[o>>2]=d;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=(c[n>>2]|0)+(c[e>>2]|0);c[v>>2]=(c[e>>2]|0)+(c[e+4>>2]|0);c[w>>2]=(c[n>>2]|0)+(c[v>>2]|0);c[x>>2]=(c[o>>2]|0)+-8;c[y>>2]=(c[c[p>>2]>>2]|0)+(c[e>>2]|0);c[z>>2]=(c[u>>2]|0)+(0-(c[e+8>>2]|0));if((c[w>>2]|0)>>>0>(c[o>>2]|0)>>>0){c[m>>2]=-70;B=c[m>>2]|0;l=k;return B|0;}if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0){c[m>>2]=-20;B=c[m>>2]|0;l=k;return B|0;}if((c[u>>2]|0)>>>0<=(c[x>>2]|0)>>>0){c[m>>2]=-1;B=c[m>>2]|0;l=k;return B|0;}if((c[n>>2]|0)>>>0<(c[x>>2]|0)>>>0){Rr(c[n>>2]|0,c[c[p>>2]>>2]|0,(c[x>>2]|0)-(c[n>>2]|0)|0);q=c[p>>2]|0;c[q>>2]=(c[q>>2]|0)+((c[x>>2]|0)-(c[n>>2]|0));c[n>>2]=c[x>>2];}while(1){if((c[n>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;x=c[p>>2]|0;q=c[x>>2]|0;c[x>>2]=q+1;x=a[q>>0]|0;q=c[n>>2]|0;c[n>>2]=q+1;a[q>>0]=x;}do{if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[r>>2]|0)|0)>>>0){if((c[e+8>>2]|0)>>>0>((c[u>>2]|0)-(c[s>>2]|0)|0)>>>0){c[m>>2]=-20;B=c[m>>2]|0;l=k;return B|0;}c[z>>2]=(c[t>>2]|0)+(0-((c[r>>2]|0)-(c[z>>2]|0)));if(((c[z>>2]|0)+(c[e+4>>2]|0)|0)>>>0>(c[t>>2]|0)>>>0){c[A>>2]=(c[t>>2]|0)-(c[z>>2]|0);nE(c[u>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;c[n>>2]=(c[u>>2]|0)+(c[A>>2]|0);p=e+4|0;c[p>>2]=(c[p>>2]|0)-(c[A>>2]|0);c[z>>2]=c[r>>2];break;}nE(c[u>>2]|0,c[z>>2]|0,c[e+4>>2]|0)|0;c[m>>2]=c[v>>2];B=c[m>>2]|0;l=k;return B|0;}}while(0);while(1){if((c[n>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;e=c[z>>2]|0;c[z>>2]=e+1;u=a[e>>0]|0;e=c[n>>2]|0;c[n>>2]=e+1;a[e>>0]=u;}c[m>>2]=c[v>>2];B=c[m>>2]|0;l=k;return B|0;}function Qr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function Rr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{Qr(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function Sr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;l=e;return;}function Tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>1>>>(31-(c[f>>2]|0)&31)|0;}function Ur(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(c[e>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(c[f>>2]|0);l=d;return;}function Vr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>(32-(c[f>>2]|0)&31)|0;}function Wr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Dr()|0)!=0;f=c[e>>2]|0;if(a){c[d>>2]=hq(f)|0;g=c[d>>2]|0;l=b;return g|0;}else{a=sq(f)|0;c[d>>2]=a;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Xr(b,f,g,h,i,j,k){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0;m=l;l=l+784|0;n=m+760|0;o=m+756|0;p=m+752|0;q=m+748|0;r=m+744|0;s=m+740|0;t=m+736|0;u=m+732|0;v=m+728|0;w=m+724|0;x=m+720|0;y=m+716|0;z=m+712|0;A=m+708|0;B=m+704|0;C=m+700|0;D=m+696|0;E=m+692|0;F=m+80|0;G=m+688|0;H=m+684|0;I=m+680|0;J=m+676|0;K=m+672|0;L=m+668|0;M=m+664|0;N=m+660|0;O=m+656|0;P=m+652|0;Q=m+648|0;R=m+644|0;S=m+640|0;T=m+636|0;U=m+632|0;V=m+628|0;W=m+624|0;X=m+64|0;Y=m+620|0;Z=m+616|0;_=m+608|0;$=m+604|0;aa=m+600|0;ba=m+596|0;ca=m+592|0;da=m+584|0;ea=m+580|0;fa=m+576|0;ga=m+572|0;ha=m+568|0;ia=m+560|0;ja=m+556|0;ka=m+552|0;la=m+548|0;ma=m+544|0;na=m+528|0;oa=m+524|0;pa=m+520|0;qa=m+516|0;ra=m+512|0;sa=m+508|0;ta=m+504|0;ua=m+500|0;va=m+496|0;wa=m+492|0;xa=m+488|0;ya=m+484|0;za=m+480|0;Aa=m+476|0;Ba=m+472|0;Ca=m+464|0;Da=m+460|0;Ea=m+456|0;Fa=m+452|0;Ga=m+448|0;Ha=m+440|0;Ia=m+436|0;Ja=m+432|0;Ka=m+428|0;La=m+424|0;Ma=m+416|0;Na=m+412|0;Oa=m+408|0;Pa=m+404|0;Qa=m+400|0;Ra=m+384|0;Sa=m+376|0;Ta=m+372|0;Ua=m+368|0;Va=m+364|0;Wa=m+360|0;Xa=m+356|0;Ya=m+352|0;Za=m+348|0;_a=m+344|0;$a=m+340|0;ab=m+336|0;bb=m+332|0;cb=m+328|0;db=m+324|0;eb=m+320|0;fb=m+316|0;gb=m+312|0;hb=m+308|0;ib=m+304|0;jb=m+300|0;kb=m+296|0;lb=m+292|0;mb=m+288|0;nb=m+284|0;ob=m+280|0;pb=m+276|0;qb=m+272|0;rb=m+268|0;sb=m+264|0;tb=m+260|0;ub=m;vb=m+256|0;wb=m+188|0;xb=m+184|0;yb=m+180|0;zb=m+176|0;Ab=m+160|0;Bb=m+144|0;Cb=m+136|0;Db=m+132|0;Eb=m+128|0;Fb=m+124|0;Gb=m+120|0;Hb=m+116|0;Ib=m+112|0;Jb=m+108|0;Kb=m+104|0;Lb=m+100|0;Mb=m+96|0;c[Gb>>2]=b;c[Hb>>2]=f;c[Ib>>2]=g;c[Jb>>2]=h;c[Kb>>2]=i;c[Lb>>2]=j;c[Mb>>2]=k;k=c[Hb>>2]|0;Hb=c[Ib>>2]|0;Ib=c[Jb>>2]|0;Jb=c[Kb>>2]|0;Kb=c[Lb>>2]|0;Lb=c[Mb>>2]|0;c[db>>2]=c[Gb>>2];c[eb>>2]=k;c[fb>>2]=Hb;c[gb>>2]=Ib;c[hb>>2]=Jb;c[ib>>2]=Kb;c[jb>>2]=Lb;c[kb>>2]=c[gb>>2];c[lb>>2]=(c[kb>>2]|0)+(c[hb>>2]|0);c[mb>>2]=c[eb>>2];c[nb>>2]=(c[mb>>2]|0)+(c[fb>>2]|0);c[ob>>2]=c[mb>>2];c[pb>>2]=c[(c[db>>2]|0)+28916>>2];c[qb>>2]=(c[pb>>2]|0)+(c[(c[db>>2]|0)+28932>>2]|0);c[rb>>2]=c[(c[db>>2]|0)+28732>>2];c[sb>>2]=c[(c[db>>2]|0)+28736>>2];c[tb>>2]=c[(c[db>>2]|0)+28740>>2];a:do{if(c[ib>>2]|0){c[vb>>2]=(c[ib>>2]|0)<4?c[ib>>2]|0:4;c[(c[db>>2]|0)+28812>>2]=1;c[yb>>2]=0;while(1){if((c[yb>>2]|0)>>>0>=3)break;c[wb+44+(c[yb>>2]<<2)>>2]=c[(c[db>>2]|0)+16+28700+(c[yb>>2]<<2)>>2];c[yb>>2]=(c[yb>>2]|0)+1;}c[wb+56>>2]=c[rb>>2];c[wb+64>>2]=(c[ob>>2]|0)-(c[rb>>2]|0);c[wb+60>>2]=c[tb>>2];c[zb>>2]=Kr(wb,c[kb>>2]|0,(c[lb>>2]|0)-(c[kb>>2]|0)|0)|0;if($q(c[zb>>2]|0)|0){c[cb>>2]=-20;Nb=c[cb>>2]|0;l=m;return Nb|0;}Lr(wb+20|0,wb,c[c[db>>2]>>2]|0);Lr(wb+28|0,wb,c[(c[db>>2]|0)+8>>2]|0);Lr(wb+36|0,wb,c[(c[db>>2]|0)+4>>2]|0);c[xb>>2]=0;while(1){if((Mr(wb)|0)>>>0<=2)Ob=(c[xb>>2]|0)<(c[vb>>2]|0);else Ob=0;Pb=c[xb>>2]|0;if(!Ob)break;fb=ub+(Pb<<4)|0;eb=c[jb>>2]|0;c[Pa>>2]=wb;c[Qa>>2]=eb;c[Sa>>2]=d[(c[(c[Pa>>2]|0)+20+4>>2]|0)+(c[(c[Pa>>2]|0)+20>>2]<<3)+2>>0];c[Ta>>2]=d[(c[(c[Pa>>2]|0)+36+4>>2]|0)+(c[(c[Pa>>2]|0)+36>>2]<<3)+2>>0];c[Ua>>2]=d[(c[(c[Pa>>2]|0)+28+4>>2]|0)+(c[(c[Pa>>2]|0)+28>>2]<<3)+2>>0];c[Va>>2]=(c[Sa>>2]|0)+(c[Ta>>2]|0)+(c[Ua>>2]|0);c[Wa>>2]=c[(c[(c[Pa>>2]|0)+20+4>>2]|0)+(c[(c[Pa>>2]|0)+20>>2]<<3)+4>>2];c[Xa>>2]=c[(c[(c[Pa>>2]|0)+36+4>>2]|0)+(c[(c[Pa>>2]|0)+36>>2]<<3)+4>>2];c[Ya>>2]=c[(c[(c[Pa>>2]|0)+28+4>>2]|0)+(c[(c[Pa>>2]|0)+28>>2]<<3)+4>>2];do{if(c[Ua>>2]|0){eb=(Dr()|0)!=0;if(!(eb&(c[Qa>>2]|0)!=0)){eb=c[Ya>>2]|0;c[Za>>2]=eb+(Nr(c[Pa>>2]|0,c[Ua>>2]|0)|0);if(!(Dr()|0))break;Mr(c[Pa>>2]|0)|0;break;}c[_a>>2]=(c[Ua>>2]|0)-((c[Ua>>2]|0)>>>0<24?c[Ua>>2]|0:24);eb=c[Ya>>2]|0;hb=Nr(c[Pa>>2]|0,(c[Ua>>2]|0)-(c[_a>>2]|0)|0)|0;c[Za>>2]=eb+(hb<<c[_a>>2]);hb=(Dr()|0)!=0;if(hb|(c[_a>>2]|0)!=0)Mr(c[Pa>>2]|0)|0;if(c[_a>>2]|0){hb=Nr(c[Pa>>2]|0,c[_a>>2]|0)|0;c[Za>>2]=(c[Za>>2]|0)+hb;}}else c[Za>>2]=0;}while(0);do{if((c[Ua>>2]|0)>>>0<=1){c[Za>>2]=(c[Za>>2]|0)+((c[Wa>>2]|0)==0&1);if(!(c[Za>>2]|0)){c[Za>>2]=c[(c[Pa>>2]|0)+44>>2];break;}hb=(c[Pa>>2]|0)+44|0;if((c[Za>>2]|0)==3)Qb=(c[hb>>2]|0)-1|0;else Qb=c[hb+(c[Za>>2]<<2)>>2]|0;c[$a>>2]=Qb;c[$a>>2]=(c[$a>>2]|0)+(((c[$a>>2]|0)!=0^1)&1);if((c[Za>>2]|0)!=1)c[(c[Pa>>2]|0)+44+8>>2]=c[(c[Pa>>2]|0)+44+4>>2];c[(c[Pa>>2]|0)+44+4>>2]=c[(c[Pa>>2]|0)+44>>2];hb=c[$a>>2]|0;c[Za>>2]=hb;c[(c[Pa>>2]|0)+44>>2]=hb;}else{c[(c[Pa>>2]|0)+44+8>>2]=c[(c[Pa>>2]|0)+44+4>>2];c[(c[Pa>>2]|0)+44+4>>2]=c[(c[Pa>>2]|0)+44>>2];c[(c[Pa>>2]|0)+44>>2]=c[Za>>2];}}while(0);c[Ra+8>>2]=c[Za>>2];hb=c[Xa>>2]|0;if((c[Ta>>2]|0)>>>0>0)Rb=Nr(c[Pa>>2]|0,c[Ta>>2]|0)|0;else Rb=0;c[Ra+4>>2]=hb+Rb;if(Dr()|0?((c[Ta>>2]|0)+(c[Sa>>2]|0)|0)>>>0>=20:0)Mr(c[Pa>>2]|0)|0;hb=(Fr()|0)!=0;if(hb&(c[Va>>2]|0)>>>0>=31)Mr(c[Pa>>2]|0)|0;hb=c[Wa>>2]|0;if((c[Sa>>2]|0)>>>0>0)Sb=Nr(c[Pa>>2]|0,c[Sa>>2]|0)|0;else Sb=0;c[Ra>>2]=hb+Sb;if(Dr()|0)Mr(c[Pa>>2]|0)|0;c[ab>>2]=(c[(c[Pa>>2]|0)+64>>2]|0)+(c[Ra>>2]|0);hb=c[Pa>>2]|0;if((c[Ra+8>>2]|0)>>>0>(c[ab>>2]|0)>>>0)Tb=c[hb+60>>2]|0;else Tb=c[hb+56>>2]|0;c[bb>>2]=Tb;c[Ra+12>>2]=(c[bb>>2]|0)+(c[ab>>2]|0)+(0-(c[Ra+8>>2]|0));c[(c[Pa>>2]|0)+64>>2]=(c[ab>>2]|0)+(c[Ra+4>>2]|0);hb=c[Pa>>2]|0;c[Ka>>2]=(c[Pa>>2]|0)+20;c[La>>2]=hb;hb=(c[(c[Ka>>2]|0)+4>>2]|0)+(c[c[Ka>>2]>>2]<<3)|0;c[Ma>>2]=c[hb>>2];c[Ma+4>>2]=c[hb+4>>2];c[Na>>2]=d[Ma+3>>0];c[Oa>>2]=Or(c[La>>2]|0,c[Na>>2]|0)|0;c[c[Ka>>2]>>2]=(e[Ma>>1]|0)+(c[Oa>>2]|0);hb=c[Pa>>2]|0;c[Fa>>2]=(c[Pa>>2]|0)+36;c[Ga>>2]=hb;hb=(c[(c[Fa>>2]|0)+4>>2]|0)+(c[c[Fa>>2]>>2]<<3)|0;c[Ha>>2]=c[hb>>2];c[Ha+4>>2]=c[hb+4>>2];c[Ia>>2]=d[Ha+3>>0];c[Ja>>2]=Or(c[Ga>>2]|0,c[Ia>>2]|0)|0;c[c[Fa>>2]>>2]=(e[Ha>>1]|0)+(c[Ja>>2]|0);if(Dr()|0)Mr(c[Pa>>2]|0)|0;hb=c[Pa>>2]|0;c[Aa>>2]=(c[Pa>>2]|0)+28;c[Ba>>2]=hb;hb=(c[(c[Aa>>2]|0)+4>>2]|0)+(c[c[Aa>>2]>>2]<<3)|0;c[Ca>>2]=c[hb>>2];c[Ca+4>>2]=c[hb+4>>2];c[Da>>2]=d[Ca+3>>0];c[Ea>>2]=Or(c[Ba>>2]|0,c[Da>>2]|0)|0;c[c[Aa>>2]>>2]=(e[Ca>>1]|0)+(c[Ea>>2]|0);c[Ab>>2]=c[Ra>>2];c[Ab+4>>2]=c[Ra+4>>2];c[Ab+8>>2]=c[Ra+8>>2];c[Ab+12>>2]=c[Ra+12>>2];c[fb>>2]=c[Ab>>2];c[fb+4>>2]=c[Ab+4>>2];c[fb+8>>2]=c[Ab+8>>2];c[fb+12>>2]=c[Ab+12>>2];c[xb>>2]=(c[xb>>2]|0)+1;}if((Pb|0)<(c[vb>>2]|0)){c[cb>>2]=-20;Nb=c[cb>>2]|0;l=m;return Nb|0;}while(1){if((Mr(wb)|0)>>>0>2)break;if((c[xb>>2]|0)>=(c[ib>>2]|0))break;hb=c[jb>>2]|0;c[la>>2]=wb;c[ma>>2]=hb;c[oa>>2]=d[(c[(c[la>>2]|0)+20+4>>2]|0)+(c[(c[la>>2]|0)+20>>2]<<3)+2>>0];c[pa>>2]=d[(c[(c[la>>2]|0)+36+4>>2]|0)+(c[(c[la>>2]|0)+36>>2]<<3)+2>>0];c[qa>>2]=d[(c[(c[la>>2]|0)+28+4>>2]|0)+(c[(c[la>>2]|0)+28>>2]<<3)+2>>0];c[ra>>2]=(c[oa>>2]|0)+(c[pa>>2]|0)+(c[qa>>2]|0);c[sa>>2]=c[(c[(c[la>>2]|0)+20+4>>2]|0)+(c[(c[la>>2]|0)+20>>2]<<3)+4>>2];c[ta>>2]=c[(c[(c[la>>2]|0)+36+4>>2]|0)+(c[(c[la>>2]|0)+36>>2]<<3)+4>>2];c[ua>>2]=c[(c[(c[la>>2]|0)+28+4>>2]|0)+(c[(c[la>>2]|0)+28>>2]<<3)+4>>2];do{if(c[qa>>2]|0){hb=(Dr()|0)!=0;if(!(hb&(c[ma>>2]|0)!=0)){hb=c[ua>>2]|0;c[va>>2]=hb+(Nr(c[la>>2]|0,c[qa>>2]|0)|0);if(!(Dr()|0))break;Mr(c[la>>2]|0)|0;break;}c[wa>>2]=(c[qa>>2]|0)-((c[qa>>2]|0)>>>0<24?c[qa>>2]|0:24);hb=c[ua>>2]|0;eb=Nr(c[la>>2]|0,(c[qa>>2]|0)-(c[wa>>2]|0)|0)|0;c[va>>2]=hb+(eb<<c[wa>>2]);eb=(Dr()|0)!=0;if(eb|(c[wa>>2]|0)!=0)Mr(c[la>>2]|0)|0;if(c[wa>>2]|0){eb=Nr(c[la>>2]|0,c[wa>>2]|0)|0;c[va>>2]=(c[va>>2]|0)+eb;}}else c[va>>2]=0;}while(0);do{if((c[qa>>2]|0)>>>0<=1){c[va>>2]=(c[va>>2]|0)+((c[sa>>2]|0)==0&1);if(!(c[va>>2]|0)){c[va>>2]=c[(c[la>>2]|0)+44>>2];break;}fb=(c[la>>2]|0)+44|0;if((c[va>>2]|0)==3)Ub=(c[fb>>2]|0)-1|0;else Ub=c[fb+(c[va>>2]<<2)>>2]|0;c[xa>>2]=Ub;c[xa>>2]=(c[xa>>2]|0)+(((c[xa>>2]|0)!=0^1)&1);if((c[va>>2]|0)!=1)c[(c[la>>2]|0)+44+8>>2]=c[(c[la>>2]|0)+44+4>>2];c[(c[la>>2]|0)+44+4>>2]=c[(c[la>>2]|0)+44>>2];fb=c[xa>>2]|0;c[va>>2]=fb;c[(c[la>>2]|0)+44>>2]=fb;}else{c[(c[la>>2]|0)+44+8>>2]=c[(c[la>>2]|0)+44+4>>2];c[(c[la>>2]|0)+44+4>>2]=c[(c[la>>2]|0)+44>>2];c[(c[la>>2]|0)+44>>2]=c[va>>2];}}while(0);c[na+8>>2]=c[va>>2];fb=c[ta>>2]|0;if((c[pa>>2]|0)>>>0>0)Vb=Nr(c[la>>2]|0,c[pa>>2]|0)|0;else Vb=0;c[na+4>>2]=fb+Vb;if(Dr()|0?((c[pa>>2]|0)+(c[oa>>2]|0)|0)>>>0>=20:0)Mr(c[la>>2]|0)|0;fb=(Fr()|0)!=0;if(fb&(c[ra>>2]|0)>>>0>=31)Mr(c[la>>2]|0)|0;fb=c[sa>>2]|0;if((c[oa>>2]|0)>>>0>0)Wb=Nr(c[la>>2]|0,c[oa>>2]|0)|0;else Wb=0;c[na>>2]=fb+Wb;if(Dr()|0)Mr(c[la>>2]|0)|0;c[ya>>2]=(c[(c[la>>2]|0)+64>>2]|0)+(c[na>>2]|0);fb=c[la>>2]|0;if((c[na+8>>2]|0)>>>0>(c[ya>>2]|0)>>>0)Xb=c[fb+60>>2]|0;else Xb=c[fb+56>>2]|0;c[za>>2]=Xb;c[na+12>>2]=(c[za>>2]|0)+(c[ya>>2]|0)+(0-(c[na+8>>2]|0));c[(c[la>>2]|0)+64>>2]=(c[ya>>2]|0)+(c[na+4>>2]|0);fb=c[la>>2]|0;c[ga>>2]=(c[la>>2]|0)+20;c[ha>>2]=fb;fb=(c[(c[ga>>2]|0)+4>>2]|0)+(c[c[ga>>2]>>2]<<3)|0;c[ia>>2]=c[fb>>2];c[ia+4>>2]=c[fb+4>>2];c[ja>>2]=d[ia+3>>0];c[ka>>2]=Or(c[ha>>2]|0,c[ja>>2]|0)|0;c[c[ga>>2]>>2]=(e[ia>>1]|0)+(c[ka>>2]|0);fb=c[la>>2]|0;c[ba>>2]=(c[la>>2]|0)+36;c[ca>>2]=fb;fb=(c[(c[ba>>2]|0)+4>>2]|0)+(c[c[ba>>2]>>2]<<3)|0;c[da>>2]=c[fb>>2];c[da+4>>2]=c[fb+4>>2];c[ea>>2]=d[da+3>>0];c[fa>>2]=Or(c[ca>>2]|0,c[ea>>2]|0)|0;c[c[ba>>2]>>2]=(e[da>>1]|0)+(c[fa>>2]|0);if(Dr()|0)Mr(c[la>>2]|0)|0;fb=c[la>>2]|0;c[Y>>2]=(c[la>>2]|0)+28;c[Z>>2]=fb;fb=(c[(c[Y>>2]|0)+4>>2]|0)+(c[c[Y>>2]>>2]<<3)|0;c[_>>2]=c[fb>>2];c[_+4>>2]=c[fb+4>>2];c[$>>2]=d[_+3>>0];c[aa>>2]=Or(c[Z>>2]|0,c[$>>2]|0)|0;c[c[Y>>2]>>2]=(e[_>>1]|0)+(c[aa>>2]|0);c[Bb>>2]=c[na>>2];c[Bb+4>>2]=c[na+4>>2];c[Bb+8>>2]=c[na+8>>2];c[Bb+12>>2]=c[na+12>>2];fb=c[ob>>2]|0;eb=c[nb>>2]|0;hb=c[qb>>2]|0;gb=c[rb>>2]|0;Lb=c[sb>>2]|0;Kb=c[tb>>2]|0;Yb=X;Zb=ub+(((c[xb>>2]|0)-4&3)<<4)|0;_b=Yb+16|0;do{a[Yb>>0]=a[Zb>>0]|0;Yb=Yb+1|0;Zb=Zb+1|0;}while((Yb|0)<(_b|0));c[H>>2]=fb;c[I>>2]=eb;c[J>>2]=pb;c[K>>2]=hb;c[L>>2]=gb;c[M>>2]=Lb;c[N>>2]=Kb;c[O>>2]=(c[H>>2]|0)+(c[X>>2]|0);c[P>>2]=(c[X>>2]|0)+(c[X+4>>2]|0);c[Q>>2]=(c[H>>2]|0)+(c[P>>2]|0);c[R>>2]=(c[I>>2]|0)+-8;c[S>>2]=(c[c[J>>2]>>2]|0)+(c[X>>2]|0);c[T>>2]=c[X+12>>2];b:do{if((c[Q>>2]|0)>>>0>(c[I>>2]|0)>>>0)c[G>>2]=-70;else{if((c[S>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[G>>2]=-20;break;}Jb=c[H>>2]|0;if((c[O>>2]|0)>>>0>(c[R>>2]|0)>>>0){Ib=c[I>>2]|0;Hb=c[J>>2]|0;k=c[K>>2]|0;Gb=c[L>>2]|0;Mb=c[M>>2]|0;j=c[N>>2]|0;c[n>>2]=c[X>>2];c[n+4>>2]=c[X+4>>2];c[n+8>>2]=c[X+8>>2];c[n+12>>2]=c[X+12>>2];c[G>>2]=Pr(Jb,Ib,n,Hb,k,Gb,Mb,j)|0;break;}Qr(Jb,c[c[J>>2]>>2]|0);if((c[X>>2]|0)>>>0>8)Rr((c[H>>2]|0)+8|0,(c[c[J>>2]>>2]|0)+8|0,(c[X>>2]|0)-8|0);c[H>>2]=c[O>>2];c[c[J>>2]>>2]=c[S>>2];do{if((c[X+8>>2]|0)>>>0>((c[O>>2]|0)-(c[L>>2]|0)|0)>>>0){if((c[X+8>>2]|0)>>>0>((c[O>>2]|0)-(c[M>>2]|0)|0)>>>0){c[G>>2]=-20;break b;}if(((c[T>>2]|0)+(c[X+4>>2]|0)|0)>>>0<=(c[N>>2]|0)>>>0){nE(c[O>>2]|0,c[T>>2]|0,c[X+4>>2]|0)|0;c[G>>2]=c[P>>2];break b;}c[U>>2]=(c[N>>2]|0)-(c[T>>2]|0);nE(c[O>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[H>>2]=(c[O>>2]|0)+(c[U>>2]|0);Jb=X+4|0;c[Jb>>2]=(c[Jb>>2]|0)-(c[U>>2]|0);c[T>>2]=c[L>>2];if((c[H>>2]|0)>>>0<=(c[R>>2]|0)>>>0?(c[X+4>>2]|0)>>>0>=3:0)break;c[V>>2]=0;while(1){if((c[V>>2]|0)>>>0>=(c[X+4>>2]|0)>>>0)break;a[(c[H>>2]|0)+(c[V>>2]|0)>>0]=a[(c[T>>2]|0)+(c[V>>2]|0)>>0]|0;c[V>>2]=(c[V>>2]|0)+1;}c[G>>2]=c[P>>2];break b;}}while(0);if((c[X+8>>2]|0)>>>0<8){c[W>>2]=c[6816+(c[X+8>>2]<<2)>>2];a[c[H>>2]>>0]=a[c[T>>2]>>0]|0;a[(c[H>>2]|0)+1>>0]=a[(c[T>>2]|0)+1>>0]|0;a[(c[H>>2]|0)+2>>0]=a[(c[T>>2]|0)+2>>0]|0;a[(c[H>>2]|0)+3>>0]=a[(c[T>>2]|0)+3>>0]|0;c[T>>2]=(c[T>>2]|0)+(c[6848+(c[X+8>>2]<<2)>>2]|0);Sr((c[H>>2]|0)+4|0,c[T>>2]|0);c[T>>2]=(c[T>>2]|0)+(0-(c[W>>2]|0));}else Qr(c[H>>2]|0,c[T>>2]|0);c[H>>2]=(c[H>>2]|0)+8;c[T>>2]=(c[T>>2]|0)+8;Jb=c[H>>2]|0;c:do{if((c[Q>>2]|0)>>>0>((c[I>>2]|0)+-13|0)>>>0){if(Jb>>>0<(c[R>>2]|0)>>>0){Rr(c[H>>2]|0,c[T>>2]|0,(c[R>>2]|0)-(c[H>>2]|0)|0);c[T>>2]=(c[T>>2]|0)+((c[R>>2]|0)-(c[H>>2]|0));c[H>>2]=c[R>>2];}while(1){if((c[H>>2]|0)>>>0>=(c[Q>>2]|0)>>>0)break c;j=c[T>>2]|0;c[T>>2]=j+1;Mb=a[j>>0]|0;j=c[H>>2]|0;c[H>>2]=j+1;a[j>>0]=Mb;}}else Rr(Jb,c[T>>2]|0,(c[X+4>>2]|0)-8|0);}while(0);c[G>>2]=c[P>>2];}}while(0);c[Cb>>2]=c[G>>2];if($q(c[Cb>>2]|0)|0){$b=118;break;}Kb=ub+((c[xb>>2]&3)<<4)|0;c[Kb>>2]=c[Bb>>2];c[Kb+4>>2]=c[Bb+4>>2];c[Kb+8>>2]=c[Bb+8>>2];c[Kb+12>>2]=c[Bb+12>>2];c[ob>>2]=(c[ob>>2]|0)+(c[Cb>>2]|0);c[xb>>2]=(c[xb>>2]|0)+1;}if(($b|0)==118){c[cb>>2]=c[Cb>>2];Nb=c[cb>>2]|0;l=m;return Nb|0;}if((c[xb>>2]|0)<(c[ib>>2]|0)){c[cb>>2]=-20;Nb=c[cb>>2]|0;l=m;return Nb|0;}c[xb>>2]=(c[xb>>2]|0)-(c[vb>>2]|0);while(1){if((c[xb>>2]|0)>=(c[ib>>2]|0))break;Kb=c[ob>>2]|0;Lb=c[nb>>2]|0;gb=c[qb>>2]|0;hb=c[rb>>2]|0;eb=c[sb>>2]|0;fb=c[tb>>2]|0;Yb=F;Zb=ub+((c[xb>>2]&3)<<4)|0;_b=Yb+16|0;do{a[Yb>>0]=a[Zb>>0]|0;Yb=Yb+1|0;Zb=Zb+1|0;}while((Yb|0)<(_b|0));c[p>>2]=Kb;c[q>>2]=Lb;c[r>>2]=pb;c[s>>2]=gb;c[t>>2]=hb;c[u>>2]=eb;c[v>>2]=fb;c[w>>2]=(c[p>>2]|0)+(c[F>>2]|0);c[x>>2]=(c[F>>2]|0)+(c[F+4>>2]|0);c[y>>2]=(c[p>>2]|0)+(c[x>>2]|0);c[z>>2]=(c[q>>2]|0)+-8;c[A>>2]=(c[c[r>>2]>>2]|0)+(c[F>>2]|0);c[B>>2]=c[F+12>>2];d:do{if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0)c[o>>2]=-70;else{if((c[A>>2]|0)>>>0>(c[s>>2]|0)>>>0){c[o>>2]=-20;break;}Jb=c[p>>2]|0;if((c[w>>2]|0)>>>0>(c[z>>2]|0)>>>0){Mb=c[q>>2]|0;j=c[r>>2]|0;Gb=c[s>>2]|0;k=c[t>>2]|0;Hb=c[u>>2]|0;Ib=c[v>>2]|0;c[n>>2]=c[F>>2];c[n+4>>2]=c[F+4>>2];c[n+8>>2]=c[F+8>>2];c[n+12>>2]=c[F+12>>2];c[o>>2]=Pr(Jb,Mb,n,j,Gb,k,Hb,Ib)|0;break;}Qr(Jb,c[c[r>>2]>>2]|0);if((c[F>>2]|0)>>>0>8)Rr((c[p>>2]|0)+8|0,(c[c[r>>2]>>2]|0)+8|0,(c[F>>2]|0)-8|0);c[p>>2]=c[w>>2];c[c[r>>2]>>2]=c[A>>2];do{if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[t>>2]|0)|0)>>>0){if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[u>>2]|0)|0)>>>0){c[o>>2]=-20;break d;}if(((c[B>>2]|0)+(c[F+4>>2]|0)|0)>>>0<=(c[v>>2]|0)>>>0){nE(c[w>>2]|0,c[B>>2]|0,c[F+4>>2]|0)|0;c[o>>2]=c[x>>2];break d;}c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);nE(c[w>>2]|0,c[B>>2]|0,c[C>>2]|0)|0;c[p>>2]=(c[w>>2]|0)+(c[C>>2]|0);Jb=F+4|0;c[Jb>>2]=(c[Jb>>2]|0)-(c[C>>2]|0);c[B>>2]=c[t>>2];if((c[p>>2]|0)>>>0<=(c[z>>2]|0)>>>0?(c[F+4>>2]|0)>>>0>=3:0)break;c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[F+4>>2]|0)>>>0)break;a[(c[p>>2]|0)+(c[D>>2]|0)>>0]=a[(c[B>>2]|0)+(c[D>>2]|0)>>0]|0;c[D>>2]=(c[D>>2]|0)+1;}c[o>>2]=c[x>>2];break d;}}while(0);if((c[F+8>>2]|0)>>>0<8){c[E>>2]=c[6816+(c[F+8>>2]<<2)>>2];a[c[p>>2]>>0]=a[c[B>>2]>>0]|0;a[(c[p>>2]|0)+1>>0]=a[(c[B>>2]|0)+1>>0]|0;a[(c[p>>2]|0)+2>>0]=a[(c[B>>2]|0)+2>>0]|0;a[(c[p>>2]|0)+3>>0]=a[(c[B>>2]|0)+3>>0]|0;c[B>>2]=(c[B>>2]|0)+(c[6848+(c[F+8>>2]<<2)>>2]|0);Sr((c[p>>2]|0)+4|0,c[B>>2]|0);c[B>>2]=(c[B>>2]|0)+(0-(c[E>>2]|0));}else Qr(c[p>>2]|0,c[B>>2]|0);c[p>>2]=(c[p>>2]|0)+8;c[B>>2]=(c[B>>2]|0)+8;Jb=c[p>>2]|0;e:do{if((c[y>>2]|0)>>>0>((c[q>>2]|0)+-13|0)>>>0){if(Jb>>>0<(c[z>>2]|0)>>>0){Rr(c[p>>2]|0,c[B>>2]|0,(c[z>>2]|0)-(c[p>>2]|0)|0);c[B>>2]=(c[B>>2]|0)+((c[z>>2]|0)-(c[p>>2]|0));c[p>>2]=c[z>>2];}while(1){if((c[p>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break e;Ib=c[B>>2]|0;c[B>>2]=Ib+1;Hb=a[Ib>>0]|0;Ib=c[p>>2]|0;c[p>>2]=Ib+1;a[Ib>>0]=Hb;}}else Rr(Jb,c[B>>2]|0,(c[F+4>>2]|0)-8|0);}while(0);c[o>>2]=c[x>>2];}}while(0);c[Db>>2]=c[o>>2];fb=($q(c[Db>>2]|0)|0)!=0;ac=c[Db>>2]|0;if(fb){$b=155;break;}c[ob>>2]=(c[ob>>2]|0)+ac;c[xb>>2]=(c[xb>>2]|0)+1;}if(($b|0)==155){c[cb>>2]=ac;Nb=c[cb>>2]|0;l=m;return Nb|0;}c[Eb>>2]=0;while(1){if((c[Eb>>2]|0)>>>0>=3)break a;c[(c[db>>2]|0)+16+28700+(c[Eb>>2]<<2)>>2]=c[wb+44+(c[Eb>>2]<<2)>>2];c[Eb>>2]=(c[Eb>>2]|0)+1;}}}while(0);c[Fb>>2]=(c[qb>>2]|0)-(c[pb>>2]|0);if((c[Fb>>2]|0)>>>0>((c[nb>>2]|0)-(c[ob>>2]|0)|0)>>>0){c[cb>>2]=-70;Nb=c[cb>>2]|0;l=m;return Nb|0;}else{mE(c[ob>>2]|0,c[pb>>2]|0,c[Fb>>2]|0)|0;c[ob>>2]=(c[ob>>2]|0)+(c[Fb>>2]|0);c[cb>>2]=(c[ob>>2]|0)-(c[mb>>2]|0);Nb=c[cb>>2]|0;l=m;return Nb|0;}return 0;}function Yr(b,f,g,h,i,j,k){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0;m=l;l=l+784|0;n=m+760|0;o=m+756|0;p=m+752|0;q=m+748|0;r=m+744|0;s=m+740|0;t=m+736|0;u=m+732|0;v=m+728|0;w=m+724|0;x=m+720|0;y=m+716|0;z=m+712|0;A=m+708|0;B=m+704|0;C=m+700|0;D=m+696|0;E=m+692|0;F=m+80|0;G=m+688|0;H=m+684|0;I=m+680|0;J=m+676|0;K=m+672|0;L=m+668|0;M=m+664|0;N=m+660|0;O=m+656|0;P=m+652|0;Q=m+648|0;R=m+644|0;S=m+640|0;T=m+636|0;U=m+632|0;V=m+628|0;W=m+624|0;X=m+64|0;Y=m+620|0;Z=m+616|0;_=m+608|0;$=m+604|0;aa=m+600|0;ba=m+596|0;ca=m+592|0;da=m+584|0;ea=m+580|0;fa=m+576|0;ga=m+572|0;ha=m+568|0;ia=m+560|0;ja=m+556|0;ka=m+552|0;la=m+548|0;ma=m+544|0;na=m+528|0;oa=m+524|0;pa=m+520|0;qa=m+516|0;ra=m+512|0;sa=m+508|0;ta=m+504|0;ua=m+500|0;va=m+496|0;wa=m+492|0;xa=m+488|0;ya=m+484|0;za=m+480|0;Aa=m+476|0;Ba=m+472|0;Ca=m+464|0;Da=m+460|0;Ea=m+456|0;Fa=m+452|0;Ga=m+448|0;Ha=m+440|0;Ia=m+436|0;Ja=m+432|0;Ka=m+428|0;La=m+424|0;Ma=m+416|0;Na=m+412|0;Oa=m+408|0;Pa=m+404|0;Qa=m+400|0;Ra=m+384|0;Sa=m+376|0;Ta=m+372|0;Ua=m+368|0;Va=m+364|0;Wa=m+360|0;Xa=m+356|0;Ya=m+352|0;Za=m+348|0;_a=m+344|0;$a=m+340|0;ab=m+336|0;bb=m+332|0;cb=m+328|0;db=m+324|0;eb=m+320|0;fb=m+316|0;gb=m+312|0;hb=m+308|0;ib=m+304|0;jb=m+300|0;kb=m+296|0;lb=m+292|0;mb=m+288|0;nb=m+284|0;ob=m+280|0;pb=m+276|0;qb=m+272|0;rb=m+268|0;sb=m+264|0;tb=m+260|0;ub=m;vb=m+256|0;wb=m+188|0;xb=m+184|0;yb=m+180|0;zb=m+176|0;Ab=m+160|0;Bb=m+144|0;Cb=m+136|0;Db=m+132|0;Eb=m+128|0;Fb=m+124|0;Gb=m+120|0;Hb=m+116|0;Ib=m+112|0;Jb=m+108|0;Kb=m+104|0;Lb=m+100|0;Mb=m+96|0;c[Gb>>2]=b;c[Hb>>2]=f;c[Ib>>2]=g;c[Jb>>2]=h;c[Kb>>2]=i;c[Lb>>2]=j;c[Mb>>2]=k;k=c[Hb>>2]|0;Hb=c[Ib>>2]|0;Ib=c[Jb>>2]|0;Jb=c[Kb>>2]|0;Kb=c[Lb>>2]|0;Lb=c[Mb>>2]|0;c[db>>2]=c[Gb>>2];c[eb>>2]=k;c[fb>>2]=Hb;c[gb>>2]=Ib;c[hb>>2]=Jb;c[ib>>2]=Kb;c[jb>>2]=Lb;c[kb>>2]=c[gb>>2];c[lb>>2]=(c[kb>>2]|0)+(c[hb>>2]|0);c[mb>>2]=c[eb>>2];c[nb>>2]=(c[mb>>2]|0)+(c[fb>>2]|0);c[ob>>2]=c[mb>>2];c[pb>>2]=c[(c[db>>2]|0)+28916>>2];c[qb>>2]=(c[pb>>2]|0)+(c[(c[db>>2]|0)+28932>>2]|0);c[rb>>2]=c[(c[db>>2]|0)+28732>>2];c[sb>>2]=c[(c[db>>2]|0)+28736>>2];c[tb>>2]=c[(c[db>>2]|0)+28740>>2];a:do{if(c[ib>>2]|0){c[vb>>2]=(c[ib>>2]|0)<4?c[ib>>2]|0:4;c[(c[db>>2]|0)+28812>>2]=1;c[yb>>2]=0;while(1){if((c[yb>>2]|0)>>>0>=3)break;c[wb+44+(c[yb>>2]<<2)>>2]=c[(c[db>>2]|0)+16+28700+(c[yb>>2]<<2)>>2];c[yb>>2]=(c[yb>>2]|0)+1;}c[wb+56>>2]=c[rb>>2];c[wb+64>>2]=(c[ob>>2]|0)-(c[rb>>2]|0);c[wb+60>>2]=c[tb>>2];c[zb>>2]=Kr(wb,c[kb>>2]|0,(c[lb>>2]|0)-(c[kb>>2]|0)|0)|0;if($q(c[zb>>2]|0)|0){c[cb>>2]=-20;Nb=c[cb>>2]|0;l=m;return Nb|0;}Lr(wb+20|0,wb,c[c[db>>2]>>2]|0);Lr(wb+28|0,wb,c[(c[db>>2]|0)+8>>2]|0);Lr(wb+36|0,wb,c[(c[db>>2]|0)+4>>2]|0);c[xb>>2]=0;while(1){if((Mr(wb)|0)>>>0<=2)Ob=(c[xb>>2]|0)<(c[vb>>2]|0);else Ob=0;Pb=c[xb>>2]|0;if(!Ob)break;fb=ub+(Pb<<4)|0;eb=c[jb>>2]|0;c[Pa>>2]=wb;c[Qa>>2]=eb;c[Sa>>2]=d[(c[(c[Pa>>2]|0)+20+4>>2]|0)+(c[(c[Pa>>2]|0)+20>>2]<<3)+2>>0];c[Ta>>2]=d[(c[(c[Pa>>2]|0)+36+4>>2]|0)+(c[(c[Pa>>2]|0)+36>>2]<<3)+2>>0];c[Ua>>2]=d[(c[(c[Pa>>2]|0)+28+4>>2]|0)+(c[(c[Pa>>2]|0)+28>>2]<<3)+2>>0];c[Va>>2]=(c[Sa>>2]|0)+(c[Ta>>2]|0)+(c[Ua>>2]|0);c[Wa>>2]=c[(c[(c[Pa>>2]|0)+20+4>>2]|0)+(c[(c[Pa>>2]|0)+20>>2]<<3)+4>>2];c[Xa>>2]=c[(c[(c[Pa>>2]|0)+36+4>>2]|0)+(c[(c[Pa>>2]|0)+36>>2]<<3)+4>>2];c[Ya>>2]=c[(c[(c[Pa>>2]|0)+28+4>>2]|0)+(c[(c[Pa>>2]|0)+28>>2]<<3)+4>>2];do{if(c[Ua>>2]|0){eb=(Dr()|0)!=0;if(!(eb&(c[Qa>>2]|0)!=0)){eb=c[Ya>>2]|0;c[Za>>2]=eb+(Nr(c[Pa>>2]|0,c[Ua>>2]|0)|0);if(!(Dr()|0))break;Mr(c[Pa>>2]|0)|0;break;}c[_a>>2]=(c[Ua>>2]|0)-((c[Ua>>2]|0)>>>0<24?c[Ua>>2]|0:24);eb=c[Ya>>2]|0;hb=Nr(c[Pa>>2]|0,(c[Ua>>2]|0)-(c[_a>>2]|0)|0)|0;c[Za>>2]=eb+(hb<<c[_a>>2]);hb=(Dr()|0)!=0;if(hb|(c[_a>>2]|0)!=0)Mr(c[Pa>>2]|0)|0;if(c[_a>>2]|0){hb=Nr(c[Pa>>2]|0,c[_a>>2]|0)|0;c[Za>>2]=(c[Za>>2]|0)+hb;}}else c[Za>>2]=0;}while(0);do{if((c[Ua>>2]|0)>>>0<=1){c[Za>>2]=(c[Za>>2]|0)+((c[Wa>>2]|0)==0&1);if(!(c[Za>>2]|0)){c[Za>>2]=c[(c[Pa>>2]|0)+44>>2];break;}hb=(c[Pa>>2]|0)+44|0;if((c[Za>>2]|0)==3)Qb=(c[hb>>2]|0)-1|0;else Qb=c[hb+(c[Za>>2]<<2)>>2]|0;c[$a>>2]=Qb;c[$a>>2]=(c[$a>>2]|0)+(((c[$a>>2]|0)!=0^1)&1);if((c[Za>>2]|0)!=1)c[(c[Pa>>2]|0)+44+8>>2]=c[(c[Pa>>2]|0)+44+4>>2];c[(c[Pa>>2]|0)+44+4>>2]=c[(c[Pa>>2]|0)+44>>2];hb=c[$a>>2]|0;c[Za>>2]=hb;c[(c[Pa>>2]|0)+44>>2]=hb;}else{c[(c[Pa>>2]|0)+44+8>>2]=c[(c[Pa>>2]|0)+44+4>>2];c[(c[Pa>>2]|0)+44+4>>2]=c[(c[Pa>>2]|0)+44>>2];c[(c[Pa>>2]|0)+44>>2]=c[Za>>2];}}while(0);c[Ra+8>>2]=c[Za>>2];hb=c[Xa>>2]|0;if((c[Ta>>2]|0)>>>0>0)Rb=Nr(c[Pa>>2]|0,c[Ta>>2]|0)|0;else Rb=0;c[Ra+4>>2]=hb+Rb;if(Dr()|0?((c[Ta>>2]|0)+(c[Sa>>2]|0)|0)>>>0>=20:0)Mr(c[Pa>>2]|0)|0;hb=(Fr()|0)!=0;if(hb&(c[Va>>2]|0)>>>0>=31)Mr(c[Pa>>2]|0)|0;hb=c[Wa>>2]|0;if((c[Sa>>2]|0)>>>0>0)Sb=Nr(c[Pa>>2]|0,c[Sa>>2]|0)|0;else Sb=0;c[Ra>>2]=hb+Sb;if(Dr()|0)Mr(c[Pa>>2]|0)|0;c[ab>>2]=(c[(c[Pa>>2]|0)+64>>2]|0)+(c[Ra>>2]|0);hb=c[Pa>>2]|0;if((c[Ra+8>>2]|0)>>>0>(c[ab>>2]|0)>>>0)Tb=c[hb+60>>2]|0;else Tb=c[hb+56>>2]|0;c[bb>>2]=Tb;c[Ra+12>>2]=(c[bb>>2]|0)+(c[ab>>2]|0)+(0-(c[Ra+8>>2]|0));c[(c[Pa>>2]|0)+64>>2]=(c[ab>>2]|0)+(c[Ra+4>>2]|0);hb=c[Pa>>2]|0;c[Ka>>2]=(c[Pa>>2]|0)+20;c[La>>2]=hb;hb=(c[(c[Ka>>2]|0)+4>>2]|0)+(c[c[Ka>>2]>>2]<<3)|0;c[Ma>>2]=c[hb>>2];c[Ma+4>>2]=c[hb+4>>2];c[Na>>2]=d[Ma+3>>0];c[Oa>>2]=Or(c[La>>2]|0,c[Na>>2]|0)|0;c[c[Ka>>2]>>2]=(e[Ma>>1]|0)+(c[Oa>>2]|0);hb=c[Pa>>2]|0;c[Fa>>2]=(c[Pa>>2]|0)+36;c[Ga>>2]=hb;hb=(c[(c[Fa>>2]|0)+4>>2]|0)+(c[c[Fa>>2]>>2]<<3)|0;c[Ha>>2]=c[hb>>2];c[Ha+4>>2]=c[hb+4>>2];c[Ia>>2]=d[Ha+3>>0];c[Ja>>2]=Or(c[Ga>>2]|0,c[Ia>>2]|0)|0;c[c[Fa>>2]>>2]=(e[Ha>>1]|0)+(c[Ja>>2]|0);if(Dr()|0)Mr(c[Pa>>2]|0)|0;hb=c[Pa>>2]|0;c[Aa>>2]=(c[Pa>>2]|0)+28;c[Ba>>2]=hb;hb=(c[(c[Aa>>2]|0)+4>>2]|0)+(c[c[Aa>>2]>>2]<<3)|0;c[Ca>>2]=c[hb>>2];c[Ca+4>>2]=c[hb+4>>2];c[Da>>2]=d[Ca+3>>0];c[Ea>>2]=Or(c[Ba>>2]|0,c[Da>>2]|0)|0;c[c[Aa>>2]>>2]=(e[Ca>>1]|0)+(c[Ea>>2]|0);c[Ab>>2]=c[Ra>>2];c[Ab+4>>2]=c[Ra+4>>2];c[Ab+8>>2]=c[Ra+8>>2];c[Ab+12>>2]=c[Ra+12>>2];c[fb>>2]=c[Ab>>2];c[fb+4>>2]=c[Ab+4>>2];c[fb+8>>2]=c[Ab+8>>2];c[fb+12>>2]=c[Ab+12>>2];c[xb>>2]=(c[xb>>2]|0)+1;}if((Pb|0)<(c[vb>>2]|0)){c[cb>>2]=-20;Nb=c[cb>>2]|0;l=m;return Nb|0;}while(1){if((Mr(wb)|0)>>>0>2)break;if((c[xb>>2]|0)>=(c[ib>>2]|0))break;hb=c[jb>>2]|0;c[la>>2]=wb;c[ma>>2]=hb;c[oa>>2]=d[(c[(c[la>>2]|0)+20+4>>2]|0)+(c[(c[la>>2]|0)+20>>2]<<3)+2>>0];c[pa>>2]=d[(c[(c[la>>2]|0)+36+4>>2]|0)+(c[(c[la>>2]|0)+36>>2]<<3)+2>>0];c[qa>>2]=d[(c[(c[la>>2]|0)+28+4>>2]|0)+(c[(c[la>>2]|0)+28>>2]<<3)+2>>0];c[ra>>2]=(c[oa>>2]|0)+(c[pa>>2]|0)+(c[qa>>2]|0);c[sa>>2]=c[(c[(c[la>>2]|0)+20+4>>2]|0)+(c[(c[la>>2]|0)+20>>2]<<3)+4>>2];c[ta>>2]=c[(c[(c[la>>2]|0)+36+4>>2]|0)+(c[(c[la>>2]|0)+36>>2]<<3)+4>>2];c[ua>>2]=c[(c[(c[la>>2]|0)+28+4>>2]|0)+(c[(c[la>>2]|0)+28>>2]<<3)+4>>2];do{if(c[qa>>2]|0){hb=(Dr()|0)!=0;if(!(hb&(c[ma>>2]|0)!=0)){hb=c[ua>>2]|0;c[va>>2]=hb+(Nr(c[la>>2]|0,c[qa>>2]|0)|0);if(!(Dr()|0))break;Mr(c[la>>2]|0)|0;break;}c[wa>>2]=(c[qa>>2]|0)-((c[qa>>2]|0)>>>0<24?c[qa>>2]|0:24);hb=c[ua>>2]|0;eb=Nr(c[la>>2]|0,(c[qa>>2]|0)-(c[wa>>2]|0)|0)|0;c[va>>2]=hb+(eb<<c[wa>>2]);eb=(Dr()|0)!=0;if(eb|(c[wa>>2]|0)!=0)Mr(c[la>>2]|0)|0;if(c[wa>>2]|0){eb=Nr(c[la>>2]|0,c[wa>>2]|0)|0;c[va>>2]=(c[va>>2]|0)+eb;}}else c[va>>2]=0;}while(0);do{if((c[qa>>2]|0)>>>0<=1){c[va>>2]=(c[va>>2]|0)+((c[sa>>2]|0)==0&1);if(!(c[va>>2]|0)){c[va>>2]=c[(c[la>>2]|0)+44>>2];break;}fb=(c[la>>2]|0)+44|0;if((c[va>>2]|0)==3)Ub=(c[fb>>2]|0)-1|0;else Ub=c[fb+(c[va>>2]<<2)>>2]|0;c[xa>>2]=Ub;c[xa>>2]=(c[xa>>2]|0)+(((c[xa>>2]|0)!=0^1)&1);if((c[va>>2]|0)!=1)c[(c[la>>2]|0)+44+8>>2]=c[(c[la>>2]|0)+44+4>>2];c[(c[la>>2]|0)+44+4>>2]=c[(c[la>>2]|0)+44>>2];fb=c[xa>>2]|0;c[va>>2]=fb;c[(c[la>>2]|0)+44>>2]=fb;}else{c[(c[la>>2]|0)+44+8>>2]=c[(c[la>>2]|0)+44+4>>2];c[(c[la>>2]|0)+44+4>>2]=c[(c[la>>2]|0)+44>>2];c[(c[la>>2]|0)+44>>2]=c[va>>2];}}while(0);c[na+8>>2]=c[va>>2];fb=c[ta>>2]|0;if((c[pa>>2]|0)>>>0>0)Vb=Nr(c[la>>2]|0,c[pa>>2]|0)|0;else Vb=0;c[na+4>>2]=fb+Vb;if(Dr()|0?((c[pa>>2]|0)+(c[oa>>2]|0)|0)>>>0>=20:0)Mr(c[la>>2]|0)|0;fb=(Fr()|0)!=0;if(fb&(c[ra>>2]|0)>>>0>=31)Mr(c[la>>2]|0)|0;fb=c[sa>>2]|0;if((c[oa>>2]|0)>>>0>0)Wb=Nr(c[la>>2]|0,c[oa>>2]|0)|0;else Wb=0;c[na>>2]=fb+Wb;if(Dr()|0)Mr(c[la>>2]|0)|0;c[ya>>2]=(c[(c[la>>2]|0)+64>>2]|0)+(c[na>>2]|0);fb=c[la>>2]|0;if((c[na+8>>2]|0)>>>0>(c[ya>>2]|0)>>>0)Xb=c[fb+60>>2]|0;else Xb=c[fb+56>>2]|0;c[za>>2]=Xb;c[na+12>>2]=(c[za>>2]|0)+(c[ya>>2]|0)+(0-(c[na+8>>2]|0));c[(c[la>>2]|0)+64>>2]=(c[ya>>2]|0)+(c[na+4>>2]|0);fb=c[la>>2]|0;c[ga>>2]=(c[la>>2]|0)+20;c[ha>>2]=fb;fb=(c[(c[ga>>2]|0)+4>>2]|0)+(c[c[ga>>2]>>2]<<3)|0;c[ia>>2]=c[fb>>2];c[ia+4>>2]=c[fb+4>>2];c[ja>>2]=d[ia+3>>0];c[ka>>2]=Or(c[ha>>2]|0,c[ja>>2]|0)|0;c[c[ga>>2]>>2]=(e[ia>>1]|0)+(c[ka>>2]|0);fb=c[la>>2]|0;c[ba>>2]=(c[la>>2]|0)+36;c[ca>>2]=fb;fb=(c[(c[ba>>2]|0)+4>>2]|0)+(c[c[ba>>2]>>2]<<3)|0;c[da>>2]=c[fb>>2];c[da+4>>2]=c[fb+4>>2];c[ea>>2]=d[da+3>>0];c[fa>>2]=Or(c[ca>>2]|0,c[ea>>2]|0)|0;c[c[ba>>2]>>2]=(e[da>>1]|0)+(c[fa>>2]|0);if(Dr()|0)Mr(c[la>>2]|0)|0;fb=c[la>>2]|0;c[Y>>2]=(c[la>>2]|0)+28;c[Z>>2]=fb;fb=(c[(c[Y>>2]|0)+4>>2]|0)+(c[c[Y>>2]>>2]<<3)|0;c[_>>2]=c[fb>>2];c[_+4>>2]=c[fb+4>>2];c[$>>2]=d[_+3>>0];c[aa>>2]=Or(c[Z>>2]|0,c[$>>2]|0)|0;c[c[Y>>2]>>2]=(e[_>>1]|0)+(c[aa>>2]|0);c[Bb>>2]=c[na>>2];c[Bb+4>>2]=c[na+4>>2];c[Bb+8>>2]=c[na+8>>2];c[Bb+12>>2]=c[na+12>>2];fb=c[ob>>2]|0;eb=c[nb>>2]|0;hb=c[qb>>2]|0;gb=c[rb>>2]|0;Lb=c[sb>>2]|0;Kb=c[tb>>2]|0;Yb=X;Zb=ub+(((c[xb>>2]|0)-4&3)<<4)|0;_b=Yb+16|0;do{a[Yb>>0]=a[Zb>>0]|0;Yb=Yb+1|0;Zb=Zb+1|0;}while((Yb|0)<(_b|0));c[H>>2]=fb;c[I>>2]=eb;c[J>>2]=pb;c[K>>2]=hb;c[L>>2]=gb;c[M>>2]=Lb;c[N>>2]=Kb;c[O>>2]=(c[H>>2]|0)+(c[X>>2]|0);c[P>>2]=(c[X>>2]|0)+(c[X+4>>2]|0);c[Q>>2]=(c[H>>2]|0)+(c[P>>2]|0);c[R>>2]=(c[I>>2]|0)+-8;c[S>>2]=(c[c[J>>2]>>2]|0)+(c[X>>2]|0);c[T>>2]=c[X+12>>2];b:do{if((c[Q>>2]|0)>>>0>(c[I>>2]|0)>>>0)c[G>>2]=-70;else{if((c[S>>2]|0)>>>0>(c[K>>2]|0)>>>0){c[G>>2]=-20;break;}Jb=c[H>>2]|0;if((c[O>>2]|0)>>>0>(c[R>>2]|0)>>>0){Ib=c[I>>2]|0;Hb=c[J>>2]|0;k=c[K>>2]|0;Gb=c[L>>2]|0;Mb=c[M>>2]|0;j=c[N>>2]|0;c[n>>2]=c[X>>2];c[n+4>>2]=c[X+4>>2];c[n+8>>2]=c[X+8>>2];c[n+12>>2]=c[X+12>>2];c[G>>2]=Pr(Jb,Ib,n,Hb,k,Gb,Mb,j)|0;break;}Qr(Jb,c[c[J>>2]>>2]|0);if((c[X>>2]|0)>>>0>8)Rr((c[H>>2]|0)+8|0,(c[c[J>>2]>>2]|0)+8|0,(c[X>>2]|0)-8|0);c[H>>2]=c[O>>2];c[c[J>>2]>>2]=c[S>>2];do{if((c[X+8>>2]|0)>>>0>((c[O>>2]|0)-(c[L>>2]|0)|0)>>>0){if((c[X+8>>2]|0)>>>0>((c[O>>2]|0)-(c[M>>2]|0)|0)>>>0){c[G>>2]=-20;break b;}if(((c[T>>2]|0)+(c[X+4>>2]|0)|0)>>>0<=(c[N>>2]|0)>>>0){nE(c[O>>2]|0,c[T>>2]|0,c[X+4>>2]|0)|0;c[G>>2]=c[P>>2];break b;}c[U>>2]=(c[N>>2]|0)-(c[T>>2]|0);nE(c[O>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[H>>2]=(c[O>>2]|0)+(c[U>>2]|0);Jb=X+4|0;c[Jb>>2]=(c[Jb>>2]|0)-(c[U>>2]|0);c[T>>2]=c[L>>2];if((c[H>>2]|0)>>>0<=(c[R>>2]|0)>>>0?(c[X+4>>2]|0)>>>0>=3:0)break;c[V>>2]=0;while(1){if((c[V>>2]|0)>>>0>=(c[X+4>>2]|0)>>>0)break;a[(c[H>>2]|0)+(c[V>>2]|0)>>0]=a[(c[T>>2]|0)+(c[V>>2]|0)>>0]|0;c[V>>2]=(c[V>>2]|0)+1;}c[G>>2]=c[P>>2];break b;}}while(0);if((c[X+8>>2]|0)>>>0<8){c[W>>2]=c[6816+(c[X+8>>2]<<2)>>2];a[c[H>>2]>>0]=a[c[T>>2]>>0]|0;a[(c[H>>2]|0)+1>>0]=a[(c[T>>2]|0)+1>>0]|0;a[(c[H>>2]|0)+2>>0]=a[(c[T>>2]|0)+2>>0]|0;a[(c[H>>2]|0)+3>>0]=a[(c[T>>2]|0)+3>>0]|0;c[T>>2]=(c[T>>2]|0)+(c[6848+(c[X+8>>2]<<2)>>2]|0);Sr((c[H>>2]|0)+4|0,c[T>>2]|0);c[T>>2]=(c[T>>2]|0)+(0-(c[W>>2]|0));}else Qr(c[H>>2]|0,c[T>>2]|0);c[H>>2]=(c[H>>2]|0)+8;c[T>>2]=(c[T>>2]|0)+8;Jb=c[H>>2]|0;c:do{if((c[Q>>2]|0)>>>0>((c[I>>2]|0)+-13|0)>>>0){if(Jb>>>0<(c[R>>2]|0)>>>0){Rr(c[H>>2]|0,c[T>>2]|0,(c[R>>2]|0)-(c[H>>2]|0)|0);c[T>>2]=(c[T>>2]|0)+((c[R>>2]|0)-(c[H>>2]|0));c[H>>2]=c[R>>2];}while(1){if((c[H>>2]|0)>>>0>=(c[Q>>2]|0)>>>0)break c;j=c[T>>2]|0;c[T>>2]=j+1;Mb=a[j>>0]|0;j=c[H>>2]|0;c[H>>2]=j+1;a[j>>0]=Mb;}}else Rr(Jb,c[T>>2]|0,(c[X+4>>2]|0)-8|0);}while(0);c[G>>2]=c[P>>2];}}while(0);c[Cb>>2]=c[G>>2];if($q(c[Cb>>2]|0)|0){$b=118;break;}Kb=ub+((c[xb>>2]&3)<<4)|0;c[Kb>>2]=c[Bb>>2];c[Kb+4>>2]=c[Bb+4>>2];c[Kb+8>>2]=c[Bb+8>>2];c[Kb+12>>2]=c[Bb+12>>2];c[ob>>2]=(c[ob>>2]|0)+(c[Cb>>2]|0);c[xb>>2]=(c[xb>>2]|0)+1;}if(($b|0)==118){c[cb>>2]=c[Cb>>2];Nb=c[cb>>2]|0;l=m;return Nb|0;}if((c[xb>>2]|0)<(c[ib>>2]|0)){c[cb>>2]=-20;Nb=c[cb>>2]|0;l=m;return Nb|0;}c[xb>>2]=(c[xb>>2]|0)-(c[vb>>2]|0);while(1){if((c[xb>>2]|0)>=(c[ib>>2]|0))break;Kb=c[ob>>2]|0;Lb=c[nb>>2]|0;gb=c[qb>>2]|0;hb=c[rb>>2]|0;eb=c[sb>>2]|0;fb=c[tb>>2]|0;Yb=F;Zb=ub+((c[xb>>2]&3)<<4)|0;_b=Yb+16|0;do{a[Yb>>0]=a[Zb>>0]|0;Yb=Yb+1|0;Zb=Zb+1|0;}while((Yb|0)<(_b|0));c[p>>2]=Kb;c[q>>2]=Lb;c[r>>2]=pb;c[s>>2]=gb;c[t>>2]=hb;c[u>>2]=eb;c[v>>2]=fb;c[w>>2]=(c[p>>2]|0)+(c[F>>2]|0);c[x>>2]=(c[F>>2]|0)+(c[F+4>>2]|0);c[y>>2]=(c[p>>2]|0)+(c[x>>2]|0);c[z>>2]=(c[q>>2]|0)+-8;c[A>>2]=(c[c[r>>2]>>2]|0)+(c[F>>2]|0);c[B>>2]=c[F+12>>2];d:do{if((c[y>>2]|0)>>>0>(c[q>>2]|0)>>>0)c[o>>2]=-70;else{if((c[A>>2]|0)>>>0>(c[s>>2]|0)>>>0){c[o>>2]=-20;break;}Jb=c[p>>2]|0;if((c[w>>2]|0)>>>0>(c[z>>2]|0)>>>0){Mb=c[q>>2]|0;j=c[r>>2]|0;Gb=c[s>>2]|0;k=c[t>>2]|0;Hb=c[u>>2]|0;Ib=c[v>>2]|0;c[n>>2]=c[F>>2];c[n+4>>2]=c[F+4>>2];c[n+8>>2]=c[F+8>>2];c[n+12>>2]=c[F+12>>2];c[o>>2]=Pr(Jb,Mb,n,j,Gb,k,Hb,Ib)|0;break;}Qr(Jb,c[c[r>>2]>>2]|0);if((c[F>>2]|0)>>>0>8)Rr((c[p>>2]|0)+8|0,(c[c[r>>2]>>2]|0)+8|0,(c[F>>2]|0)-8|0);c[p>>2]=c[w>>2];c[c[r>>2]>>2]=c[A>>2];do{if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[t>>2]|0)|0)>>>0){if((c[F+8>>2]|0)>>>0>((c[w>>2]|0)-(c[u>>2]|0)|0)>>>0){c[o>>2]=-20;break d;}if(((c[B>>2]|0)+(c[F+4>>2]|0)|0)>>>0<=(c[v>>2]|0)>>>0){nE(c[w>>2]|0,c[B>>2]|0,c[F+4>>2]|0)|0;c[o>>2]=c[x>>2];break d;}c[C>>2]=(c[v>>2]|0)-(c[B>>2]|0);nE(c[w>>2]|0,c[B>>2]|0,c[C>>2]|0)|0;c[p>>2]=(c[w>>2]|0)+(c[C>>2]|0);Jb=F+4|0;c[Jb>>2]=(c[Jb>>2]|0)-(c[C>>2]|0);c[B>>2]=c[t>>2];if((c[p>>2]|0)>>>0<=(c[z>>2]|0)>>>0?(c[F+4>>2]|0)>>>0>=3:0)break;c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[F+4>>2]|0)>>>0)break;a[(c[p>>2]|0)+(c[D>>2]|0)>>0]=a[(c[B>>2]|0)+(c[D>>2]|0)>>0]|0;c[D>>2]=(c[D>>2]|0)+1;}c[o>>2]=c[x>>2];break d;}}while(0);if((c[F+8>>2]|0)>>>0<8){c[E>>2]=c[6816+(c[F+8>>2]<<2)>>2];a[c[p>>2]>>0]=a[c[B>>2]>>0]|0;a[(c[p>>2]|0)+1>>0]=a[(c[B>>2]|0)+1>>0]|0;a[(c[p>>2]|0)+2>>0]=a[(c[B>>2]|0)+2>>0]|0;a[(c[p>>2]|0)+3>>0]=a[(c[B>>2]|0)+3>>0]|0;c[B>>2]=(c[B>>2]|0)+(c[6848+(c[F+8>>2]<<2)>>2]|0);Sr((c[p>>2]|0)+4|0,c[B>>2]|0);c[B>>2]=(c[B>>2]|0)+(0-(c[E>>2]|0));}else Qr(c[p>>2]|0,c[B>>2]|0);c[p>>2]=(c[p>>2]|0)+8;c[B>>2]=(c[B>>2]|0)+8;Jb=c[p>>2]|0;e:do{if((c[y>>2]|0)>>>0>((c[q>>2]|0)+-13|0)>>>0){if(Jb>>>0<(c[z>>2]|0)>>>0){Rr(c[p>>2]|0,c[B>>2]|0,(c[z>>2]|0)-(c[p>>2]|0)|0);c[B>>2]=(c[B>>2]|0)+((c[z>>2]|0)-(c[p>>2]|0));c[p>>2]=c[z>>2];}while(1){if((c[p>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break e;Ib=c[B>>2]|0;c[B>>2]=Ib+1;Hb=a[Ib>>0]|0;Ib=c[p>>2]|0;c[p>>2]=Ib+1;a[Ib>>0]=Hb;}}else Rr(Jb,c[B>>2]|0,(c[F+4>>2]|0)-8|0);}while(0);c[o>>2]=c[x>>2];}}while(0);c[Db>>2]=c[o>>2];fb=($q(c[Db>>2]|0)|0)!=0;ac=c[Db>>2]|0;if(fb){$b=155;break;}c[ob>>2]=(c[ob>>2]|0)+ac;c[xb>>2]=(c[xb>>2]|0)+1;}if(($b|0)==155){c[cb>>2]=ac;Nb=c[cb>>2]|0;l=m;return Nb|0;}c[Eb>>2]=0;while(1){if((c[Eb>>2]|0)>>>0>=3)break a;c[(c[db>>2]|0)+16+28700+(c[Eb>>2]<<2)>>2]=c[wb+44+(c[Eb>>2]<<2)>>2];c[Eb>>2]=(c[Eb>>2]|0)+1;}}}while(0);c[Fb>>2]=(c[qb>>2]|0)-(c[pb>>2]|0);if((c[Fb>>2]|0)>>>0>((c[nb>>2]|0)-(c[ob>>2]|0)|0)>>>0){c[cb>>2]=-70;Nb=c[cb>>2]|0;l=m;return Nb|0;}else{mE(c[ob>>2]|0,c[pb>>2]|0,c[Fb>>2]|0)|0;c[ob>>2]=(c[ob>>2]|0)+(c[Fb>>2]|0);c[cb>>2]=(c[ob>>2]|0)-(c[mb>>2]|0);Nb=c[cb>>2]|0;l=m;return Nb|0;}return 0;}function Zr(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;i=l;l=l+32|0;j=i+24|0;k=i+20|0;m=i+16|0;n=i+12|0;o=i+8|0;p=i+4|0;q=i;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;h=_r(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,0)|0;l=i;return h|0;}function _r(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;j=l;l=l+80|0;k=j+64|0;m=j+60|0;n=j+56|0;o=j+52|0;p=j+48|0;q=j+44|0;r=j+40|0;s=j+36|0;t=j+32|0;u=j+28|0;v=j+24|0;w=j+20|0;x=j+16|0;y=j+12|0;z=j+8|0;A=j+4|0;B=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=c[n>>2];if(c[t>>2]|0){c[r>>2]=$r(c[t>>2]|0)|0;c[s>>2]=as(c[t>>2]|0)|0;}while(1){if((c[q>>2]|0)>>>0<5){C=27;break;}i=(iq(c[p>>2]|0,c[q>>2]|0)|0)!=0;h=c[p>>2]|0;if(i){c[x>>2]=ar(h,c[q>>2]|0)|0;if($q(c[x>>2]|0)|0){C=7;break;}if(c[(c[m>>2]|0)+28940>>2]|0){C=9;break;}c[w>>2]=bs(c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[x>>2]|0,c[r>>2]|0,c[s>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+(c[w>>2]|0);c[o>>2]=(c[o>>2]|0)-(c[w>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[x>>2]|0);c[q>>2]=(c[q>>2]|0)-(c[x>>2]|0);continue;}c[v>>2]=hq(h)|0;if((c[v>>2]|0)!=-47205080){if((c[v>>2]&-16|0)!=407710288){C=18;break;}if((c[q>>2]|0)>>>0<8){C=14;break;}c[y>>2]=(hq((c[p>>2]|0)+4|0)|0)+8;if((c[q>>2]|0)>>>0<(c[y>>2]|0)>>>0){C=16;break;}c[p>>2]=(c[p>>2]|0)+(c[y>>2]|0);c[q>>2]=(c[q>>2]|0)-(c[y>>2]|0);continue;}h=c[m>>2]|0;if(c[t>>2]|0){c[z>>2]=cs(h,c[t>>2]|0)|0;if($q(c[z>>2]|0)|0){C=21;break;}}else{c[A>>2]=ds(h,c[r>>2]|0,c[s>>2]|0)|0;if($q(c[A>>2]|0)|0){C=23;break;}}Br(c[m>>2]|0,c[n>>2]|0);c[B>>2]=es(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,p,q)|0;if($q(c[B>>2]|0)|0){C=25;break;}c[n>>2]=(c[n>>2]|0)+(c[B>>2]|0);c[o>>2]=(c[o>>2]|0)-(c[B>>2]|0);}if((C|0)==7){c[k>>2]=c[x>>2];D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==9){c[k>>2]=-64;D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==14){c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==16){c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==18){c[k>>2]=-10;D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==21){c[k>>2]=c[z>>2];D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==23){c[k>>2]=c[A>>2];D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==25){c[k>>2]=c[B>>2];D=c[k>>2]|0;l=j;return D|0;}else if((C|0)==27)if(c[q>>2]|0){c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}else{c[k>>2]=(c[n>>2]|0)-(c[u>>2]|0);D=c[k>>2]|0;l=j;return D|0;}return 0;}function $r(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[(c[d>>2]|0)+4>>2]|0;}function as(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[(c[d>>2]|0)+8>>2]|0;}function bs(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+64|0;i=h+52|0;j=h+48|0;k=h+44|0;m=h+40|0;n=h+36|0;o=h+32|0;p=h+28|0;q=h+24|0;r=h+20|0;s=h+16|0;t=h+12|0;u=h+8|0;v=h+4|0;w=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=iq(c[m>>2]|0,c[n>>2]|0)|0;switch(c[q>>2]|0){case 4:{c[i>>2]=ms(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;x=c[i>>2]|0;l=h;return x|0;}case 5:{c[s>>2]=ns()|0;if(!(c[s>>2]|0)){c[i>>2]=-64;x=c[i>>2]|0;l=h;return x|0;}else{c[r>>2]=os(c[s>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;eq(c[s>>2]|0)|0;c[i>>2]=c[r>>2];x=c[i>>2]|0;l=h;return x|0;}break;}case 6:{c[u>>2]=ps()|0;if(!(c[u>>2]|0)){c[i>>2]=-64;x=c[i>>2]|0;l=h;return x|0;}else{c[t>>2]=qs(c[u>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;dq(c[u>>2]|0)|0;c[i>>2]=c[t>>2];x=c[i>>2]|0;l=h;return x|0;}break;}case 7:{c[w>>2]=rs()|0;if(!(c[w>>2]|0)){c[i>>2]=-64;x=c[i>>2]|0;l=h;return x|0;}else{c[v>>2]=ss(c[w>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;cq(c[w>>2]|0)|0;c[i>>2]=c[v>>2];x=c[i>>2]|0;l=h;return x|0;}break;}default:{c[i>>2]=-10;x=c[i>>2]|0;l=h;return x|0;}}return 0;}function cs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=l;l=l+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=is(c[f>>2]|0)|0;if($q(c[h>>2]|0)|0){c[e>>2]=c[h>>2];i=c[e>>2]|0;l=d;return i|0;}do{if(c[g>>2]|0){c[(c[f>>2]|0)+28908>>2]=c[(c[g>>2]|0)+28724>>2];c[(c[f>>2]|0)+28732>>2]=c[(c[g>>2]|0)+4>>2];c[(c[f>>2]|0)+28736>>2]=c[(c[g>>2]|0)+4>>2];c[(c[f>>2]|0)+28740>>2]=(c[(c[g>>2]|0)+4>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0);c[(c[f>>2]|0)+28728>>2]=c[(c[f>>2]|0)+28740>>2];h=(c[f>>2]|0)+28808|0;if(c[(c[g>>2]|0)+28728>>2]|0){c[h>>2]=1;c[(c[f>>2]|0)+28812>>2]=1;c[c[f>>2]>>2]=(c[g>>2]|0)+12;c[(c[f>>2]|0)+4>>2]=(c[g>>2]|0)+12+6160;c[(c[f>>2]|0)+8>>2]=(c[g>>2]|0)+12+4104;c[(c[f>>2]|0)+12>>2]=(c[g>>2]|0)+12+10264;c[(c[f>>2]|0)+16+28700>>2]=c[(c[g>>2]|0)+12+28700>>2];c[(c[f>>2]|0)+16+28700+4>>2]=c[(c[g>>2]|0)+12+28700+4>>2];c[(c[f>>2]|0)+16+28700+8>>2]=c[(c[g>>2]|0)+12+28700+8>>2];break;}else{c[h>>2]=0;c[(c[f>>2]|0)+28812>>2]=0;break;}}}while(0);c[e>>2]=0;i=c[e>>2]|0;l=d;return i|0;}function ds(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=is(c[g>>2]|0)|0;if($q(c[j>>2]|0)|0){c[f>>2]=c[j>>2];m=c[f>>2]|0;l=e;return m|0;}if((c[h>>2]|0)!=0&(c[i>>2]|0)!=0?(c[k>>2]=js(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0,$q(c[k>>2]|0)|0):0){c[f>>2]=-30;m=c[f>>2]|0;l=e;return m|0;}c[f>>2]=0;m=c[f>>2]|0;l=e;return m|0;}function es(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;h=l;l=l+80|0;i=h+76|0;j=h+72|0;k=h+68|0;m=h+64|0;n=h+60|0;o=h+56|0;p=h+52|0;q=h+48|0;r=h+44|0;s=h+40|0;t=h+36|0;u=h+32|0;v=h+28|0;w=h+24|0;x=h+12|0;y=h+8|0;z=h+4|0;A=h;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[c[n>>2]>>2];c[q>>2]=c[k>>2];c[r>>2]=(c[q>>2]|0)+(c[m>>2]|0);c[s>>2]=c[q>>2];c[t>>2]=c[c[o>>2]>>2];if((c[t>>2]|0)>>>0<9){c[i>>2]=-72;B=c[i>>2]|0;l=h;return B|0;}c[u>>2]=mq(c[p>>2]|0,5)|0;if($q(c[u>>2]|0)|0){c[i>>2]=c[u>>2];B=c[i>>2]|0;l=h;return B|0;}if((c[t>>2]|0)>>>0<((c[u>>2]|0)+3|0)>>>0){c[i>>2]=-72;B=c[i>>2]|0;l=h;return B|0;}c[v>>2]=fs(c[j>>2]|0,c[p>>2]|0,c[u>>2]|0)|0;if($q(c[v>>2]|0)|0){c[i>>2]=c[v>>2];B=c[i>>2]|0;l=h;return B|0;}c[p>>2]=(c[p>>2]|0)+(c[u>>2]|0);c[t>>2]=(c[t>>2]|0)-(c[u>>2]|0);a:while(1){c[y>>2]=br(c[p>>2]|0,c[t>>2]|0,x)|0;if($q(c[y>>2]|0)|0){C=11;break;}c[p>>2]=(c[p>>2]|0)+3;c[t>>2]=(c[t>>2]|0)-3;if((c[y>>2]|0)>>>0>(c[t>>2]|0)>>>0){C=13;break;}switch(c[x>>2]|0){case 2:{c[w>>2]=Cr(c[j>>2]|0,c[s>>2]|0,(c[r>>2]|0)-(c[s>>2]|0)|0,c[p>>2]|0,c[y>>2]|0,1)|0;break;}case 0:{c[w>>2]=gs(c[s>>2]|0,(c[r>>2]|0)-(c[s>>2]|0)|0,c[p>>2]|0,c[y>>2]|0)|0;break;}case 1:{c[w>>2]=hs(c[s>>2]|0,(c[r>>2]|0)-(c[s>>2]|0)|0,a[c[p>>2]>>0]|0,c[x+8>>2]|0)|0;break;}default:{C=18;break a;}}if($q(c[w>>2]|0)|0){C=20;break;}if(c[(c[j>>2]|0)+28752+32>>2]|0)Nh((c[j>>2]|0)+28816|0,c[s>>2]|0,c[w>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+(c[w>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[y>>2]|0);c[t>>2]=(c[t>>2]|0)-(c[y>>2]|0);if(c[x+4>>2]|0){C=25;break;}}if((C|0)==11){c[i>>2]=c[y>>2];B=c[i>>2]|0;l=h;return B|0;}else if((C|0)==13){c[i>>2]=-72;B=c[i>>2]|0;l=h;return B|0;}else if((C|0)==18){c[i>>2]=-20;B=c[i>>2]|0;l=h;return B|0;}else if((C|0)==20){c[i>>2]=c[w>>2];B=c[i>>2]|0;l=h;return B|0;}else if((C|0)==25){C=(c[j>>2]|0)+28752|0;if(((c[C>>2]|0)!=-1?1:(c[C+4>>2]|0)!=-1)?(C=(c[s>>2]|0)-(c[q>>2]|0)|0,w=(c[j>>2]|0)+28752|0,(C|0)!=(c[w>>2]|0)?1:(((C|0)<0)<<31>>31|0)!=(c[w+4>>2]|0)):0){c[i>>2]=-20;B=c[i>>2]|0;l=h;return B|0;}do{if(c[(c[j>>2]|0)+28752+32>>2]|0){w=Oh((c[j>>2]|0)+28816|0)|0;c[z>>2]=w;if((c[t>>2]|0)>>>0<4){c[i>>2]=-22;B=c[i>>2]|0;l=h;return B|0;}c[A>>2]=hq(c[p>>2]|0)|0;if((c[A>>2]|0)==(c[z>>2]|0)){c[p>>2]=(c[p>>2]|0)+4;c[t>>2]=(c[t>>2]|0)-4;break;}c[i>>2]=-22;B=c[i>>2]|0;l=h;return B|0;}}while(0);c[c[n>>2]>>2]=c[p>>2];c[c[o>>2]>>2]=c[t>>2];c[i>>2]=(c[s>>2]|0)-(c[q>>2]|0);B=c[i>>2]|0;l=h;return B|0;}return 0;}function fs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=qq((c[g>>2]|0)+28752|0,c[h>>2]|0,c[i>>2]|0,c[(c[g>>2]|0)+28912>>2]|0)|0;i=($q(c[j>>2]|0)|0)!=0;h=c[j>>2]|0;if(i){c[f>>2]=h;k=c[f>>2]|0;l=e;return k|0;}if(h>>>0>0){c[f>>2]=-72;k=c[f>>2]|0;l=e;return k|0;}if(c[(c[g>>2]|0)+28752+28>>2]|0?(c[(c[g>>2]|0)+28908>>2]|0)!=(c[(c[g>>2]|0)+28752+28>>2]|0):0){c[f>>2]=-32;k=c[f>>2]|0;l=e;return k|0;}if(c[(c[g>>2]|0)+28752+32>>2]|0)Lh((c[g>>2]|0)+28816|0,0,0)|0;c[f>>2]=0;k=c[f>>2]|0;l=e;return k|0;}function gs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0){c[g>>2]=-70;m=c[g>>2]|0;l=f;return m|0;}else{mE(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[g>>2]=c[k>>2];m=c[g>>2]|0;l=f;return m|0;}return 0;}function hs(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+4|0;m=h+16|0;n=h;c[j>>2]=b;c[k>>2]=e;a[m>>0]=f;c[n>>2]=g;if((c[n>>2]|0)>>>0>(c[k>>2]|0)>>>0){c[i>>2]=-70;o=c[i>>2]|0;l=h;return o|0;}else{oE(c[j>>2]|0,(d[m>>0]|0)&255|0,c[n>>2]|0)|0;c[i>>2]=c[n>>2];o=c[i>>2]|0;l=h;return o|0;}return 0;}function is(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=oq(c[(c[d>>2]|0)+28912>>2]|0)|0;c[(c[d>>2]|0)+28744>>2]=a;c[(c[d>>2]|0)+28804>>2]=0;a=(c[d>>2]|0)+28792|0;c[a>>2]=0;c[a+4>>2]=0;c[(c[d>>2]|0)+28728>>2]=0;c[(c[d>>2]|0)+28732>>2]=0;c[(c[d>>2]|0)+28736>>2]=0;c[(c[d>>2]|0)+28740>>2]=0;c[(c[d>>2]|0)+16+10264>>2]=201326604;c[(c[d>>2]|0)+28812>>2]=0;c[(c[d>>2]|0)+28808>>2]=0;c[(c[d>>2]|0)+28908>>2]=0;a=(c[d>>2]|0)+16+28700|0;c[a>>2]=c[2985];c[a+4>>2]=c[2986];c[a+8>>2]=c[2987];c[c[d>>2]>>2]=(c[d>>2]|0)+16;c[(c[d>>2]|0)+4>>2]=(c[d>>2]|0)+16+6160;c[(c[d>>2]|0)+8>>2]=(c[d>>2]|0)+16+4104;c[(c[d>>2]|0)+12>>2]=(c[d>>2]|0)+16+10264;l=b;return 0;}function js(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[i>>2]|0)>>>0<8){c[f>>2]=ks(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;m=c[f>>2]|0;l=e;return m|0;}c[j>>2]=hq(c[h>>2]|0)|0;if((c[j>>2]|0)!=-332356553){c[f>>2]=ks(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;m=c[f>>2]|0;l=e;return m|0;}j=hq((c[h>>2]|0)+4|0)|0;c[(c[g>>2]|0)+28908>>2]=j;c[k>>2]=ls((c[g>>2]|0)+16|0,c[h>>2]|0,c[i>>2]|0)|0;if($q(c[k>>2]|0)|0){c[f>>2]=-30;m=c[f>>2]|0;l=e;return m|0;}else{c[h>>2]=(c[h>>2]|0)+(c[k>>2]|0);c[i>>2]=(c[i>>2]|0)-(c[k>>2]|0);c[(c[g>>2]|0)+28812>>2]=1;c[(c[g>>2]|0)+28808>>2]=1;c[f>>2]=ks(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0;m=c[f>>2]|0;l=e;return m|0;}return 0;}function ks(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+28740>>2]=c[(c[f>>2]|0)+28728>>2];c[(c[f>>2]|0)+28736>>2]=(c[g>>2]|0)+(0-((c[(c[f>>2]|0)+28728>>2]|0)-(c[(c[f>>2]|0)+28732>>2]|0)));c[(c[f>>2]|0)+28732>>2]=c[g>>2];c[(c[f>>2]|0)+28728>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return 0;}function ls(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;e=l;l=l+336|0;f=e+328|0;g=e+324|0;h=e+320|0;i=e+316|0;j=e+312|0;k=e+308|0;m=e+304|0;n=e+192|0;o=e+300|0;p=e+296|0;q=e+292|0;r=e+80|0;s=e+288|0;t=e+284|0;u=e+280|0;v=e;w=e+276|0;x=e+272|0;y=e+268|0;z=e+264|0;A=e+260|0;B=e+256|0;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=c[h>>2];c[k>>2]=(c[j>>2]|0)+(c[i>>2]|0);if((c[i>>2]|0)>>>0<=8){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[j>>2]=(c[j>>2]|0)+8;c[m>>2]=Bp((c[g>>2]|0)+10264|0,c[j>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0,(c[g>>2]|0)+26652|0,2048)|0;if($q(c[m>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[j>>2]=(c[j>>2]|0)+(c[m>>2]|0);c[o>>2]=31;c[q>>2]=ah(n,o,p,c[j>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0)|0;if($q(c[q>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[o>>2]|0)>>>0>31){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[p>>2]|0)>>>0>8){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}zr((c[g>>2]|0)+4104|0,n,c[o>>2]|0,4032,4160,c[p>>2]|0);c[j>>2]=(c[j>>2]|0)+(c[q>>2]|0);c[s>>2]=52;c[u>>2]=ah(r,s,t,c[j>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0)|0;if($q(c[u>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[s>>2]|0)>>>0>52){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[t>>2]|0)>>>0>9){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}zr((c[g>>2]|0)+6160|0,r,c[s>>2]|0,5216,5840,c[t>>2]|0);c[j>>2]=(c[j>>2]|0)+(c[u>>2]|0);c[w>>2]=35;c[y>>2]=ah(v,w,x,c[j>>2]|0,(c[k>>2]|0)-(c[j>>2]|0)|0)|0;if($q(c[y>>2]|0)|0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[w>>2]|0)>>>0>35){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}if((c[x>>2]|0)>>>0>9){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}zr(c[g>>2]|0,v,c[w>>2]|0,6416,5696,c[x>>2]|0);c[j>>2]=(c[j>>2]|0)+(c[y>>2]|0);if(((c[j>>2]|0)+12|0)>>>0>(c[k>>2]|0)>>>0){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}c[A>>2]=(c[k>>2]|0)-((c[j>>2]|0)+12);c[z>>2]=0;while(1){D=c[j>>2]|0;if((c[z>>2]|0)>=3){E=31;break;}c[B>>2]=hq(D)|0;c[j>>2]=(c[j>>2]|0)+4;if(!(c[B>>2]|0)){E=29;break;}if((c[B>>2]|0)>>>0>=(c[A>>2]|0)>>>0){E=29;break;}c[(c[g>>2]|0)+28700+(c[z>>2]<<2)>>2]=c[B>>2];c[z>>2]=(c[z>>2]|0)+1;}if((E|0)==29){c[f>>2]=-30;C=c[f>>2]|0;l=e;return C|0;}else if((E|0)==31){c[f>>2]=D-(c[h>>2]|0);C=c[f>>2]|0;l=e;return C|0;}return 0;}function ms(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+12|0;k=f+8|0;m=f+4|0;n=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[n>>2]=hw()|0;if(!(c[n>>2]|0)){c[g>>2]=-64;o=c[g>>2]|0;l=f;return o|0;}else{c[m>>2]=iw(c[n>>2]|0,c[h>>2]|0,c[i>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;gq(c[n>>2]|0)|0;c[g>>2]=c[m>>2];o=c[g>>2]|0;l=f;return o|0;}return 0;}function ns(){var a=0,b=0,d=0,e=0;a=l;l=l+16|0;b=a+4|0;d=a;c[d>>2]=Cy(157816)|0;if(!(c[d>>2]|0)){c[b>>2]=0;e=c[b>>2]|0;l=a;return e|0;}else{dw(c[d>>2]|0)|0;c[b>>2]=c[d>>2];e=c[b>>2]|0;l=a;return e|0;}return 0;}function os(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;i=l;l=l+32|0;j=i+24|0;k=i+20|0;m=i+16|0;n=i+12|0;o=i+8|0;p=i+4|0;q=i;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;Su(c[j>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;Tu(c[j>>2]|0,c[k>>2]|0);q=Uu(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;l=i;return q|0;}function ps(){var a=0,b=0,d=0,e=0;a=l;l=l+16|0;b=a+4|0;d=a;c[d>>2]=Cy(152680)|0;if(!(c[d>>2]|0)){c[b>>2]=0;e=c[b>>2]|0;l=a;return e|0;}else{Ou(c[d>>2]|0)|0;c[b>>2]=c[d>>2];e=c[b>>2]|0;l=a;return e|0;}return 0;}function qs(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;i=l;l=l+32|0;j=i+24|0;k=i+20|0;m=i+16|0;n=i+12|0;o=i+8|0;p=i+4|0;q=i;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;Jt(c[j>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;Kt(c[j>>2]|0,c[k>>2]|0);q=Lt(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;l=i;return q|0;}function rs(){var a=0,b=0,d=0;a=l;l=l+16|0;b=a;c[b>>2]=c[2988];c[b+4>>2]=c[2989];c[b+8>>2]=c[2990];d=Gt(b)|0;l=a;return d|0;}function ss(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;i=l;l=l+32|0;j=i+24|0;k=i+20|0;m=i+16|0;n=i+12|0;o=i+8|0;p=i+4|0;q=i;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;ts(c[j>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;us(c[j>>2]|0,c[k>>2]|0);q=vs(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;l=i;return q|0;}function ts(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=Ct(c[g>>2]|0)|0;if(hr(c[j>>2]|0)|0){c[f>>2]=c[j>>2];m=c[f>>2]|0;l=e;return m|0;}if((c[h>>2]|0)!=0&(c[i>>2]|0)!=0?(c[k>>2]=Dt(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0)|0,hr(c[k>>2]|0)|0):0){c[f>>2]=-30;m=c[f>>2]|0;l=e;return m|0;}c[f>>2]=0;m=c[f>>2]|0;l=e;return m|0;}function us(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)==(c[(c[e>>2]|0)+21520>>2]|0)){l=d;return;}c[(c[e>>2]|0)+21532>>2]=c[(c[e>>2]|0)+21520>>2];c[(c[e>>2]|0)+21528>>2]=(c[f>>2]|0)+(0-((c[(c[e>>2]|0)+21520>>2]|0)-(c[(c[e>>2]|0)+21524>>2]|0)));c[(c[e>>2]|0)+21524>>2]=c[f>>2];c[(c[e>>2]|0)+21520>>2]=c[f>>2];l=d;return;}function vs(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;h=l;l=l+80|0;i=h+68|0;j=h+64|0;k=h+60|0;m=h+56|0;n=h+52|0;o=h+48|0;p=h+44|0;q=h+40|0;r=h+36|0;s=h+32|0;t=h+28|0;u=h+24|0;v=h+20|0;w=h+16|0;x=h+8|0;y=h;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[k>>2];c[s>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[t>>2]=c[r>>2];c[u>>2]=c[o>>2];if((c[o>>2]|0)>>>0<8){c[i>>2]=-72;z=c[i>>2]|0;l=h;return z|0;}c[v>>2]=Cq(c[n>>2]|0,5)|0;if(hr(c[v>>2]|0)|0){c[i>>2]=c[v>>2];z=c[i>>2]|0;l=h;return z|0;}if((c[o>>2]|0)>>>0<((c[v>>2]|0)+3|0)>>>0){c[i>>2]=-72;z=c[i>>2]|0;l=h;return z|0;}if(ws(c[j>>2]|0,c[n>>2]|0,c[v>>2]|0)|0){c[i>>2]=-20;z=c[i>>2]|0;l=h;return z|0;}c[p>>2]=(c[p>>2]|0)+(c[v>>2]|0);c[u>>2]=(c[u>>2]|0)-(c[v>>2]|0);a:while(1){c[y>>2]=ir(c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0,x)|0;if(hr(c[y>>2]|0)|0){A=11;break;}c[p>>2]=(c[p>>2]|0)+3;c[u>>2]=(c[u>>2]|0)-3;if((c[y>>2]|0)>>>0>(c[u>>2]|0)>>>0){A=13;break;}switch(c[x>>2]|0){case 0:{c[w>>2]=xs(c[j>>2]|0,c[t>>2]|0,(c[s>>2]|0)-(c[t>>2]|0)|0,c[p>>2]|0,c[y>>2]|0)|0;break;}case 1:{c[w>>2]=ys(c[t>>2]|0,(c[s>>2]|0)-(c[t>>2]|0)|0,c[p>>2]|0,c[y>>2]|0)|0;break;}case 2:{c[w>>2]=zs(c[t>>2]|0,(c[s>>2]|0)-(c[t>>2]|0)|0,a[c[p>>2]>>0]|0,c[x+4>>2]|0)|0;break;}case 3:{if(c[u>>2]|0){A=19;break a;}c[w>>2]=0;break;}default:{A=21;break a;}}if((c[x>>2]|0)==3){A=28;break;}if(hr(c[w>>2]|0)|0){A=24;break;}if(c[(c[j>>2]|0)+21552+16>>2]|0)Nh((c[j>>2]|0)+21592|0,c[t>>2]|0,c[w>>2]|0)|0;c[t>>2]=(c[t>>2]|0)+(c[w>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[y>>2]|0);c[u>>2]=(c[u>>2]|0)-(c[y>>2]|0);}if((A|0)==11){c[i>>2]=c[y>>2];z=c[i>>2]|0;l=h;return z|0;}else if((A|0)==13){c[i>>2]=-72;z=c[i>>2]|0;l=h;return z|0;}else if((A|0)==19){c[i>>2]=-72;z=c[i>>2]|0;l=h;return z|0;}else if((A|0)==21){c[i>>2]=-1;z=c[i>>2]|0;l=h;return z|0;}else if((A|0)==24){c[i>>2]=c[w>>2];z=c[i>>2]|0;l=h;return z|0;}else if((A|0)==28){c[i>>2]=(c[t>>2]|0)-(c[r>>2]|0);z=c[i>>2]|0;l=h;return z|0;}return 0;}function ws(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=Aq((c[g>>2]|0)+21552|0,c[h>>2]|0,c[i>>2]|0)|0;if(c[(c[g>>2]|0)+21552+12>>2]|0?(c[(c[g>>2]|0)+21684>>2]|0)!=(c[(c[g>>2]|0)+21552+12>>2]|0):0){c[f>>2]=-32;k=c[f>>2]|0;l=e;return k|0;}if(c[(c[g>>2]|0)+21552+16>>2]|0)Lh((c[g>>2]|0)+21592|0,0,0)|0;c[f>>2]=c[j>>2];k=c[f>>2]|0;l=e;return k|0;}function xs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];if((c[n>>2]|0)>>>0>=131072){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}c[p>>2]=As(c[i>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;m=(hr(c[p>>2]|0)|0)!=0;f=c[p>>2]|0;if(m){c[h>>2]=f;q=c[h>>2]|0;l=g;return q|0;}else{c[o>>2]=(c[o>>2]|0)+f;c[n>>2]=(c[n>>2]|0)-(c[p>>2]|0);c[h>>2]=Bs(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0)|0;q=c[h>>2]|0;l=g;return q|0;}return 0;}function ys(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0){c[g>>2]=-70;m=c[g>>2]|0;l=f;return m|0;}else{mE(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[g>>2]=c[k>>2];m=c[g>>2]|0;l=f;return m|0;}return 0;}function zs(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+4|0;m=h+16|0;n=h;c[j>>2]=b;c[k>>2]=e;a[m>>0]=f;c[n>>2]=g;if((c[n>>2]|0)>>>0>(c[k>>2]|0)>>>0){c[i>>2]=-70;o=c[i>>2]|0;l=h;return o|0;}else{oE(c[j>>2]|0,(d[m>>0]|0)&255|0,c[n>>2]|0)|0;c[i>>2]=c[n>>2];o=c[i>>2]|0;l=h;return o|0;}return 0;}function As(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;g=l;l=l+80|0;h=g+64|0;i=g+60|0;j=g+56|0;k=g+52|0;m=g+48|0;n=g+44|0;o=g+40|0;p=g+36|0;q=g+32|0;r=g+28|0;s=g+24|0;t=g+20|0;u=g+16|0;v=g+12|0;w=g+8|0;x=g+4|0;y=g;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=c[j>>2];if((c[k>>2]|0)>>>0<3){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}switch((d[c[m>>2]>>0]|0)>>6|0){case 0:{c[p>>2]=0;c[q>>2]=(d[c[m>>2]>>0]|0)>>4&3;if((c[k>>2]|0)>>>0<5){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}switch(c[q>>2]|0){case 3:{c[q>>2]=5;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<14)+((d[(c[m>>2]|0)+1>>0]|0)<<6)+((d[(c[m>>2]|0)+2>>0]|0)>>2);c[o>>2]=(((d[(c[m>>2]|0)+2>>0]|0)&3)<<16)+((d[(c[m>>2]|0)+3>>0]|0)<<8)+(d[(c[m>>2]|0)+4>>0]|0);break;}case 2:{c[q>>2]=4;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<10)+((d[(c[m>>2]|0)+1>>0]|0)<<2)+((d[(c[m>>2]|0)+2>>0]|0)>>6);c[o>>2]=(((d[(c[m>>2]|0)+2>>0]|0)&63)<<8)+(d[(c[m>>2]|0)+3>>0]|0);break;}default:{c[q>>2]=3;c[p>>2]=(d[c[m>>2]>>0]|0)&16;c[n>>2]=(((d[c[m>>2]>>0]|0)&15)<<6)+((d[(c[m>>2]|0)+1>>0]|0)>>2);c[o>>2]=(((d[(c[m>>2]|0)+1>>0]|0)&3)<<8)+(d[(c[m>>2]|0)+2>>0]|0);}}if((c[n>>2]|0)>>>0>131072){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}if(((c[o>>2]|0)+(c[q>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}j=(c[i>>2]|0)+5132|0;f=(c[i>>2]|0)+21708|0;e=c[n>>2]|0;b=(c[m>>2]|0)+(c[q>>2]|0)|0;A=c[o>>2]|0;if(c[p>>2]|0)B=Xs(j,f,e,b,A)|0;else B=Ys(j,f,e,b,A)|0;if(hr(B)|0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{c[(c[i>>2]|0)+21688>>2]=(c[i>>2]|0)+21708;c[(c[i>>2]|0)+21704>>2]=c[n>>2];c[(c[i>>2]|0)+21584>>2]=1;n=(c[i>>2]|0)+21708+(c[(c[i>>2]|0)+21704>>2]|0)|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;a[n+4>>0]=0;a[n+5>>0]=0;a[n+6>>0]=0;a[n+7>>0]=0;c[h>>2]=(c[o>>2]|0)+(c[q>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 1:{c[t>>2]=(d[c[m>>2]>>0]|0)>>4&3;if((c[t>>2]|0)!=1){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}if(!(c[(c[i>>2]|0)+21584>>2]|0)){c[h>>2]=-30;z=c[h>>2]|0;l=g;return z|0;}c[t>>2]=3;c[r>>2]=(((d[c[m>>2]>>0]|0)&15)<<6)+((d[(c[m>>2]|0)+1>>0]|0)>>2);c[s>>2]=(((d[(c[m>>2]|0)+1>>0]|0)&3)<<8)+(d[(c[m>>2]|0)+2>>0]|0);if(((c[s>>2]|0)+(c[t>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}c[u>>2]=Zs((c[i>>2]|0)+21708|0,c[r>>2]|0,(c[m>>2]|0)+(c[t>>2]|0)|0,c[s>>2]|0,(c[i>>2]|0)+5132|0)|0;if(hr(c[u>>2]|0)|0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{c[(c[i>>2]|0)+21688>>2]=(c[i>>2]|0)+21708;c[(c[i>>2]|0)+21704>>2]=c[r>>2];r=(c[i>>2]|0)+21708+(c[(c[i>>2]|0)+21704>>2]|0)|0;a[r>>0]=0;a[r+1>>0]=0;a[r+2>>0]=0;a[r+3>>0]=0;a[r+4>>0]=0;a[r+5>>0]=0;a[r+6>>0]=0;a[r+7>>0]=0;c[h>>2]=(c[s>>2]|0)+(c[t>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 2:{c[w>>2]=(d[c[m>>2]>>0]|0)>>4&3;switch(c[w>>2]|0){case 3:{c[v>>2]=(((d[c[m>>2]>>0]|0)&15)<<16)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(d[(c[m>>2]|0)+2>>0]|0);break;}case 2:{c[v>>2]=(((d[c[m>>2]>>0]|0)&15)<<8)+(d[(c[m>>2]|0)+1>>0]|0);break;}default:{c[w>>2]=1;c[v>>2]=(d[c[m>>2]>>0]|0)&31;}}if(((c[w>>2]|0)+(c[v>>2]|0)+8|0)>>>0<=(c[k>>2]|0)>>>0){c[(c[i>>2]|0)+21688>>2]=(c[m>>2]|0)+(c[w>>2]|0);c[(c[i>>2]|0)+21704>>2]=c[v>>2];c[h>>2]=(c[w>>2]|0)+(c[v>>2]|0);z=c[h>>2]|0;l=g;return z|0;}if(((c[v>>2]|0)+(c[w>>2]|0)|0)>>>0>(c[k>>2]|0)>>>0){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{mE((c[i>>2]|0)+21708|0,(c[m>>2]|0)+(c[w>>2]|0)|0,c[v>>2]|0)|0;c[(c[i>>2]|0)+21688>>2]=(c[i>>2]|0)+21708;c[(c[i>>2]|0)+21704>>2]=c[v>>2];t=(c[i>>2]|0)+21708+(c[(c[i>>2]|0)+21704>>2]|0)|0;a[t>>0]=0;a[t+1>>0]=0;a[t+2>>0]=0;a[t+3>>0]=0;a[t+4>>0]=0;a[t+5>>0]=0;a[t+6>>0]=0;a[t+7>>0]=0;c[h>>2]=(c[w>>2]|0)+(c[v>>2]|0);z=c[h>>2]|0;l=g;return z|0;}break;}case 3:{c[y>>2]=(d[c[m>>2]>>0]|0)>>4&3;switch(c[y>>2]|0){case 3:{c[x>>2]=(((d[c[m>>2]>>0]|0)&15)<<16)+((d[(c[m>>2]|0)+1>>0]|0)<<8)+(d[(c[m>>2]|0)+2>>0]|0);if((c[k>>2]|0)>>>0<4){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}break;}case 2:{c[x>>2]=(((d[c[m>>2]>>0]|0)&15)<<8)+(d[(c[m>>2]|0)+1>>0]|0);break;}default:{c[y>>2]=1;c[x>>2]=(d[c[m>>2]>>0]|0)&31;}}if((c[x>>2]|0)>>>0>131072){c[h>>2]=-20;z=c[h>>2]|0;l=g;return z|0;}else{oE((c[i>>2]|0)+21708|0,(d[(c[m>>2]|0)+(c[y>>2]|0)>>0]|0)&255|0,(c[x>>2]|0)+8|0)|0;c[(c[i>>2]|0)+21688>>2]=(c[i>>2]|0)+21708;c[(c[i>>2]|0)+21704>>2]=c[x>>2];c[h>>2]=(c[y>>2]|0)+1;z=c[h>>2]|0;l=g;return z|0;}break;}default:{}}return 0;}function Bs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;g=l;l=l+192|0;h=g+168|0;i=g+164|0;j=g+160|0;k=g+156|0;m=g+152|0;n=g+148|0;o=g+144|0;p=g+140|0;q=g+136|0;r=g+132|0;s=g+128|0;t=g+124|0;u=g+120|0;v=g+116|0;w=g+112|0;x=g+108|0;y=g+104|0;z=g+100|0;A=g+96|0;B=g+92|0;C=g+88|0;D=g+84|0;E=g+32|0;F=g+28|0;G=g+24|0;H=g+12|0;I=g+8|0;J=g+4|0;K=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[k>>2];c[s>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[t>>2]=c[r>>2];c[u>>2]=c[(c[j>>2]|0)+21688>>2];c[v>>2]=(c[u>>2]|0)+(c[(c[j>>2]|0)+21704>>2]|0);c[w>>2]=c[j>>2];c[x>>2]=(c[j>>2]|0)+3080;c[y>>2]=(c[j>>2]|0)+2052;c[z>>2]=c[(c[j>>2]|0)+21524>>2];c[A>>2]=c[(c[j>>2]|0)+21528>>2];c[B>>2]=c[(c[j>>2]|0)+21532>>2];c[D>>2]=Cs(C,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,c[(c[j>>2]|0)+21588>>2]|0,c[p>>2]|0,c[o>>2]|0)|0;o=(hr(c[D>>2]|0)|0)!=0;m=c[D>>2]|0;if(o){c[i>>2]=m;L=c[i>>2]|0;l=g;return L|0;}c[p>>2]=(c[p>>2]|0)+m;a:do{if(c[C>>2]|0){c[(c[j>>2]|0)+21588>>2]=1;c[F>>2]=0;while(1){if((c[F>>2]|0)>>>0>=3)break;c[E+40+(c[F>>2]<<2)>>2]=c[(c[j>>2]|0)+21540+(c[F>>2]<<2)>>2];c[F>>2]=(c[F>>2]|0)+1;}c[G>>2]=Ds(E,c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0)|0;if(hr(c[G>>2]|0)|0){c[i>>2]=-20;L=c[i>>2]|0;l=g;return L|0;}Es(E+16|0,E,c[w>>2]|0);Es(E+24|0,E,c[y>>2]|0);Es(E+32|0,E,c[x>>2]|0);while(1){m=(Fs(E)|0)>>>0<=2;M=c[C>>2]|0;if(!(m?(c[C>>2]|0)!=0:0))break;c[C>>2]=M+-1;Gs(H,E);m=c[t>>2]|0;o=c[s>>2]|0;D=c[v>>2]|0;k=c[z>>2]|0;n=c[A>>2]|0;f=c[B>>2]|0;c[h>>2]=c[H>>2];c[h+4>>2]=c[H+4>>2];c[h+8>>2]=c[H+8>>2];c[I>>2]=Hs(m,o,h,u,D,k,n,f)|0;f=(hr(c[I>>2]|0)|0)!=0;N=c[I>>2]|0;if(f){O=12;break;}c[t>>2]=(c[t>>2]|0)+N;}if((O|0)==12){c[i>>2]=N;L=c[i>>2]|0;l=g;return L|0;}if(M|0){c[i>>2]=-20;L=c[i>>2]|0;l=g;return L|0;}c[J>>2]=0;while(1){if((c[J>>2]|0)>>>0>=3)break a;c[(c[j>>2]|0)+21540+(c[J>>2]<<2)>>2]=c[E+40+(c[J>>2]<<2)>>2];c[J>>2]=(c[J>>2]|0)+1;}}}while(0);c[K>>2]=(c[v>>2]|0)-(c[u>>2]|0);if((c[K>>2]|0)>>>0>((c[s>>2]|0)-(c[t>>2]|0)|0)>>>0){c[i>>2]=-70;L=c[i>>2]|0;l=g;return L|0;}else{mE(c[t>>2]|0,c[u>>2]|0,c[K>>2]|0)|0;c[t>>2]=(c[t>>2]|0)+(c[K>>2]|0);c[i>>2]=(c[t>>2]|0)-(c[r>>2]|0);L=c[i>>2]|0;l=g;return L|0;}return 0;}function Cs(a,b,e,f,g,h,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;j=l;l=l+80|0;k=j+68|0;m=j+64|0;n=j+60|0;o=j+56|0;p=j+52|0;q=j+48|0;r=j+44|0;s=j+40|0;t=j+36|0;u=j+32|0;v=j+28|0;w=j+24|0;x=j+20|0;y=j+16|0;z=j+12|0;A=j+8|0;B=j+4|0;C=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=c[r>>2];c[u>>2]=(c[t>>2]|0)+(c[s>>2]|0);c[v>>2]=c[t>>2];if((c[s>>2]|0)>>>0<1){c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}s=c[v>>2]|0;c[v>>2]=s+1;c[w>>2]=d[s>>0];if(!(c[w>>2]|0)){c[c[m>>2]>>2]=0;c[k>>2]=1;D=c[k>>2]|0;l=j;return D|0;}do{if((c[w>>2]|0)>127){s=c[v>>2]|0;if((c[w>>2]|0)==255){if((s+2|0)>>>0<=(c[u>>2]|0)>>>0){c[w>>2]=((Eq(c[v>>2]|0)|0)&65535)+32512;c[v>>2]=(c[v>>2]|0)+2;break;}c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}else{if(s>>>0<(c[u>>2]|0)>>>0){s=(c[w>>2]|0)-128<<8;r=c[v>>2]|0;c[v>>2]=r+1;c[w>>2]=s+(d[r>>0]|0);break;}c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}}}while(0);c[c[m>>2]>>2]=c[w>>2];c[x>>2]=(d[c[v>>2]>>0]|0)>>6;c[y>>2]=(d[c[v>>2]>>0]|0)>>4&3;c[z>>2]=(d[c[v>>2]>>0]|0)>>2&3;c[v>>2]=(c[v>>2]|0)+1;if((c[v>>2]|0)>>>0>((c[u>>2]|0)+-3|0)>>>0){c[k>>2]=-72;D=c[k>>2]|0;l=j;return D|0;}c[A>>2]=Ss(c[n>>2]|0,c[x>>2]|0,35,9,c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,5440,6,c[q>>2]|0)|0;if(hr(c[A>>2]|0)|0){c[k>>2]=-20;D=c[k>>2]|0;l=j;return D|0;}c[v>>2]=(c[v>>2]|0)+(c[A>>2]|0);c[B>>2]=Ss(c[p>>2]|0,c[y>>2]|0,28,8,c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,5520,5,c[q>>2]|0)|0;if(hr(c[B>>2]|0)|0){c[k>>2]=-20;D=c[k>>2]|0;l=j;return D|0;}c[v>>2]=(c[v>>2]|0)+(c[B>>2]|0);c[C>>2]=Ss(c[o>>2]|0,c[z>>2]|0,52,9,c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,5584,6,c[q>>2]|0)|0;if(hr(c[C>>2]|0)|0){c[k>>2]=-20;D=c[k>>2]|0;l=j;return D|0;}else{c[v>>2]=(c[v>>2]|0)+(c[C>>2]|0);c[k>>2]=(c[v>>2]|0)-(c[t>>2]|0);D=c[k>>2]|0;l=j;return D|0;}return 0;}function Cc(a){a=a|0;var b=0;b=l;l=l+a|0;l=l+15&-16;return b|0;}function Dc(){return l|0;}function Ec(a){a=a|0;l=a;}function Fc(a,b){a=a|0;b=b|0;l=a;m=b;}function Gc(a,b){a=a|0;b=b|0;if(!n){n=a;o=b;}}function Hc(a){a=a|0;y=a;}function Ic(){return y|0;}function Jc(){var a=0;a=l;l=l+16|0;Kz(Cz(12856,12862)|0)|0;Az(12856,a)|0;l=a;return;}function Kc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+32|0;f=e;g=c[d>>2]|0;h=hb(12865)|0;i=db(g|0,h|0)|0;ab(h|0);j=+Za(i|0,11e3,f|0);jb(c[f>>2]|0);h=~~j>>>0;ab(i|0);i=b+4|0;g=c[i>>2]|0;k=c[b>>2]|0;m=g-k|0;n=k;a:do{if(m>>>0<h>>>0){o=h-m|0;p=b+8|0;q=c[p>>2]|0;if((q-g|0)>>>0>=o>>>0){r=o;s=g;while(1){a[s>>0]=0;s=(c[i>>2]|0)+1|0;c[i>>2]=s;r=r+-1|0;if(!r)break a;}}if((h|0)<0)Wz(b);r=q-k|0;s=r<<1;t=r>>>0<1073741823?s>>>0<h>>>0?h:s:2147483647;if(!t)u=0;else u=Uz(t)|0;oE(u+m|0,0,o|0)|0;if((m|0)>0)mE(u|0,n|0,m|0)|0;c[b>>2]=u;c[i>>2]=u+h;c[p>>2]=u+t;if(k|0)Vz(n);}else if(m>>>0>h>>>0)c[i>>2]=n+h;}while(0);n=cb(12872)|0;i=c[d>>2]|0;m=hb(12879)|0;k=db(i|0,m|0)|0;ab(m|0);m=c[b>>2]|0;eb(n|0);c[f>>2]=n;c[f+8>>2]=m;c[f+16>>2]=h;h=gb(k|0,3,11072,f|0)|0;ab(k|0);cd(h,12891,d);ab(h|0);ab(n|0);l=e;return;}function Lc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;e=l;l=l+32|0;f=e;g=cb(12895)|0;h=cb(12872)|0;i=hb(12879)|0;j=db(g|0,i|0)|0;ab(i|0);i=c[d>>2]|0;k=d+4|0;m=c[k>>2]|0;eb(h|0);c[f>>2]=h;c[f+8>>2]=i;c[f+16>>2]=m-i;i=gb(j|0,3,11092,f|0)|0;m=i;ab(j|0);j=hb(12879)|0;n=db(h|0,j|0)|0;ab(j|0);c[f>>2]=(c[k>>2]|0)-(c[d>>2]|0);d=gb(n|0,1,11104,f|0)|0;ab(n|0);n=hb(12879)|0;k=db(g|0,n|0)|0;ab(n|0);eb(d|0);c[f>>2]=d;n=gb(k|0,1,11108,f|0)|0;c[b>>2]=n;ab(k|0);if((a[21600]|0)==0?WD(21600)|0:0)c[5404]=bb(2,11084)|0;k=c[5404]|0;eb(i|0);c[f>>2]=m;$a(k|0,n|0,12891,f|0);ab(d|0);ab(i|0);ab(h|0);ab(g|0);l=e;return;}function Mc(a){a=a|0;return(c[a+4>>2]|0)-(c[a>>2]|0)|0;}function Nc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+32|0;e=d;f=cb(12872)|0;g=cb(12895)|0;h=hb(12879)|0;i=db(g|0,h|0)|0;ab(h|0);h=c[b>>2]|0;j=c[b+4>>2]|0;eb(f|0);c[e>>2]=f;c[e+8>>2]=h;c[e+16>>2]=j-h;c[a>>2]=gb(i|0,3,11092,e|0)|0;ab(i|0);ab(g|0);ab(f|0);l=d;return;}function Oc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=Uz(32)|0;Pc(e,a);Ef(f,e,b);b=c[e>>2]|0;if(!b){l=d;return f|0;}c[e+4>>2]=b;Vz(b);l=d;return f|0;}function Pc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0.0,n=0,o=0,p=0;d=l;l=l+48|0;e=d;f=d+24|0;c[f>>2]=0;g=f+4|0;c[g>>2]=0;h=f+8|0;c[h>>2]=0;i=c[b>>2]|0;j=hb(12865)|0;k=db(i|0,j|0)|0;ab(j|0);m=+Za(k|0,11016,e|0);jb(c[e>>2]|0);j=~~m>>>0;do{if(j|0)if((j|0)<0)Wz(f);else{i=Uz(j)|0;oE(i|0,0,j|0)|0;n=i+j|0;c[f>>2]=i;c[g>>2]=n;c[h>>2]=n;break;}}while(0);ab(k|0);k=c[b>>2]|0;j=hb(12865)|0;n=db(k|0,j|0)|0;ab(j|0);m=+Za(n|0,11e3,e|0);jb(c[e>>2]|0);j=~~m>>>0;ab(n|0);n=cb(12872)|0;k=c[b>>2]|0;i=hb(12879)|0;o=db(k|0,i|0)|0;ab(i|0);i=c[f>>2]|0;eb(n|0);c[e>>2]=n;c[e+8>>2]=i;c[e+16>>2]=j;i=gb(o|0,3,11072,e|0)|0;ab(o|0);o=c[f>>2]|0;e=o;if(((c[h>>2]|0)-o|0)>>>0<j>>>0){k=(c[g>>2]|0)-o|0;p=Uz(j)|0;if((k|0)>0)mE(p|0,e|0,k|0)|0;c[f>>2]=p;c[g>>2]=p+k;c[h>>2]=p+j;if(o|0)Vz(e);}dd(i,12891,b);ab(i|0);ab(n|0);c[a>>2]=c[f>>2];c[a+4>>2]=c[g>>2];c[a+8>>2]=c[h>>2];l=d;return;}function Qc(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b;e=Uz(32)|0;Pc(d,a);Pf(e,d);a=c[d>>2]|0;if(!a){l=b;return e|0;}c[d+4>>2]=a;Vz(a);l=b;return e|0;}function Rc(a,b){a=a|0;b=b|0;return ag(a,b)|0;}function Sc(a,b){a=a|0;b=b|0;return mg(a,b)|0;}function Tc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+48|0;f=e+28|0;g=e+24|0;h=e;c[f>>2]=0;i=f+4|0;c[i>>2]=0;c[f+8>>2]=0;j=c[b>>2]|0;c[g>>2]=j;eb(j|0);Kc(f,g);ab(c[g>>2]|0);g=h+16|0;c[h>>2]=11128;c[h+4>>2]=d;c[g>>2]=h;d=vg(a,f,h)|0;a=c[g>>2]|0;if((h|0)!=(a|0)){if(a|0)wc[c[(c[a>>2]|0)+20>>2]&127](a);}else wc[c[(c[a>>2]|0)+16>>2]&127](a);a=c[f>>2]|0;if(!a){l=e;return d|0;}c[i>>2]=a;Vz(a);l=e;return d|0;}function Uc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=e+16|0;c[e>>2]=11172;c[e+4>>2]=b;c[f>>2]=e;b=xg(a,e)|0;a=c[f>>2]|0;if((e|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=d;return b|0;}if(!a){l=d;return b|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=d;return b|0;}function Vc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=e+16|0;c[e>>2]=11216;c[e+4>>2]=b;c[f>>2]=e;b=yg(a,e)|0;a=c[f>>2]|0;if((e|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=d;return b|0;}if(!a){l=d;return b|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=d;return b|0;}function Wc(a){a=a|0;return Bg(a)|0;}function Xc(a,b){a=a|0;b=b|0;return Mg(a,b)|0;}function Yc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+48|0;f=e+28|0;g=e+24|0;h=e;c[f>>2]=0;i=f+4|0;c[i>>2]=0;c[f+8>>2]=0;j=c[b>>2]|0;c[g>>2]=j;eb(j|0);Kc(f,g);ab(c[g>>2]|0);g=h+16|0;c[h>>2]=11260;c[h+4>>2]=d;c[g>>2]=h;d=Vg(a,f,h)|0;a=c[g>>2]|0;if((h|0)!=(a|0)){if(a|0)wc[c[(c[a>>2]|0)+20>>2]&127](a);}else wc[c[(c[a>>2]|0)+16>>2]&127](a);a=c[f>>2]|0;if(!a){l=e;return d|0;}c[i>>2]=a;Vz(a);l=e;return d|0;}function Zc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=e+16|0;c[e>>2]=11304;c[e+4>>2]=b;c[f>>2]=e;b=Xg(a,e)|0;a=c[f>>2]|0;if((e|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=d;return b|0;}if(!a){l=d;return b|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=d;return b|0;}function _c(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=e+16|0;c[e>>2]=11348;c[e+4>>2]=b;c[f>>2]=e;b=Yg(a,e)|0;a=c[f>>2]|0;if((e|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=d;return b|0;}if(!a){l=d;return b|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=d;return b|0;}function $c(a){a=a|0;ad(12902);Ra(12856,1,11420,14747,61,2);Ra(12911,3,11424,14750,1,26);Ra(12925,2,11436,14761,20,27);Ra(12943,2,11436,14761,20,28);Ma(10096,10112,10128,0,14742,31,14745,0,14745,0,12960,14747,62);Ra(12980,3,11444,14765,9,21);Ma(10152,10168,10184,0,14742,32,14745,0,14745,0,13002,14747,63);Ra(13024,2,11456,14761,22,33);Ma(10200,10208,10224,0,14742,34,14745,0,14745,0,13048,14747,64);Na(10200,1,11464,14742,35,1);a=Uz(8)|0;c[a>>2]=23;c[a+4>>2]=0;Oa(10200,13058,3,11468,14765,10,a|0,0);a=Uz(8)|0;c[a>>2]=24;c[a+4>>2]=0;Oa(10200,13072,3,11480,14765,11,a|0,0);a=Uz(8)|0;c[a>>2]=7;c[a+4>>2]=0;Oa(10200,13084,5,48,15008,1,a|0,0);a=Uz(8)|0;c[a>>2]=12;c[a+4>>2]=0;Oa(10200,13093,4,80,14770,8,a|0,0);a=Uz(8)|0;c[a>>2]=9;c[a+4>>2]=0;Oa(10200,13104,5,96,15008,2,a|0,0);a=Uz(8)|0;c[a>>2]=10;c[a+4>>2]=0;Oa(10200,13122,5,128,15008,3,a|0,0);Ma(10240,10248,10264,0,14742,36,14745,0,14745,0,13142,14747,65);Na(10240,1,11492,14742,37,2);a=Uz(8)|0;c[a>>2]=25;c[a+4>>2]=0;Oa(10240,13168,3,11496,14765,13,a|0,0);a=Uz(8)|0;c[a>>2]=26;c[a+4>>2]=0;Oa(10240,13174,3,11508,14765,14,a|0,0);a=Uz(8)|0;c[a>>2]=15;c[a+4>>2]=0;Oa(10240,13189,4,160,14770,11,a|0,0);a=Uz(8)|0;c[a>>2]=27;c[a+4>>2]=0;Oa(10240,13199,3,11520,14765,16,a|0,0);a=Uz(8)|0;c[a>>2]=28;c[a+4>>2]=0;Oa(10240,13205,3,11520,14765,16,a|0,0);Ma(10280,10288,10304,0,14742,38,14745,0,14745,0,13209,14747,66);Na(10280,1,11532,14742,39,3);a=Uz(8)|0;c[a>>2]=40;c[a+4>>2]=0;Oa(10280,13168,2,11536,14761,29,a|0,0);a=Uz(8)|0;c[a>>2]=30;c[a+4>>2]=0;Oa(10280,13174,3,11544,14765,17,a|0,0);a=Uz(8)|0;c[a>>2]=18;c[a+4>>2]=0;Oa(10280,13189,4,176,14770,12,a|0,0);a=Uz(8)|0;c[a>>2]=31;c[a+4>>2]=0;Oa(10280,13199,3,11556,14765,19,a|0,0);a=Uz(8)|0;c[a>>2]=32;c[a+4>>2]=0;Oa(10280,13205,3,11556,14765,19,a|0,0);return;}function ad(a){a=a|0;Ma(10032,10056,10072,0,14742,41,14745,0,14745,0,a|0,14747,67);Na(10032,1,11384,14742,42,4);a=Uz(8)|0;c[a>>2]=29;c[a+4>>2]=0;Oa(10032,14524,3,11388,14750,2,a|0,0);a=Uz(8)|0;c[a>>2]=3;c[a+4>>2]=0;Oa(10032,14534,4,16,14755,4,a|0,0);a=Uz(8)|0;c[a>>2]=43;c[a+4>>2]=0;Oa(10032,14541,2,11400,14761,33,a|0,0);a=Uz(4)|0;c[a>>2]=4;Oa(10032,14546,3,11408,14765,20,a|0,0);a=Uz(4)|0;c[a>>2]=21;Oa(10032,12891,4,32,14770,13,a|0,0);return;}function bd(a){a=a|0;wa(a|0)|0;sA();}function cd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;if((a[21600]|0)==0?WD(21600)|0:0)c[5404]=bb(2,11084)|0;h=c[5404]|0;eb(c[e>>2]|0);c[g>>2]=c[e>>2];$a(h|0,b|0,d|0,g|0);l=f;return;}function dd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;if((a[21608]|0)==0?WD(21608)|0:0)c[5405]=bb(2,11112)|0;h=c[5405]|0;eb(c[e>>2]|0);c[g>>2]=c[e>>2];$a(h|0,b|0,d|0,g|0);l=f;return;}function ed(a){a=a|0;Vz(a);return;}function fd(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11128;c[b+4>>2]=c[a+4>>2];return b|0;}function gd(a,b){a=a|0;b=b|0;c[b>>2]=11128;c[b+4>>2]=c[a+4>>2];return;}function hd(a){a=a|0;return;}function id(a){a=a|0;Vz(a);return;}function jd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=d+8|0;Lc(f,b);b=c[a+4>>2]|0;a=c[f>>2]|0;eb(a|0);c[e>>2]=a;ab(_a(c[b>>2]|0,1,11108,e|0)|0);ab(a|0);l=d;return;}function kd(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==13464?a+4|0:0)|0;}function ld(a){a=a|0;return 9872;}function md(a){a=a|0;Vz(a);return;}function nd(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11172;c[b+4>>2]=c[a+4>>2];return b|0;}function od(a,b){a=a|0;b=b|0;c[b>>2]=11172;c[b+4>>2]=c[a+4>>2];return;}function pd(a){a=a|0;return;}function qd(a){a=a|0;Vz(a);return;}function rd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=d+8|0;Lc(f,b);b=c[a+4>>2]|0;a=c[f>>2]|0;eb(a|0);c[e>>2]=a;ab(_a(c[b>>2]|0,1,11108,e|0)|0);ab(a|0);l=d;return;}function sd(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==13666?a+4|0:0)|0;}function td(a){a=a|0;return 9896;}function ud(a){a=a|0;Vz(a);return;}function vd(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11216;c[b+4>>2]=c[a+4>>2];return b|0;}function wd(a,b){a=a|0;b=b|0;c[b>>2]=11216;c[b+4>>2]=c[a+4>>2];return;}function xd(a){a=a|0;return;}function yd(a){a=a|0;Vz(a);return;}function zd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=d+8|0;Lc(f,b);b=c[a+4>>2]|0;a=c[f>>2]|0;eb(a|0);c[e>>2]=a;ab(_a(c[b>>2]|0,1,11108,e|0)|0);ab(a|0);l=d;return;}function Ad(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==13859?a+4|0:0)|0;}function Bd(a){a=a|0;return 9920;}function Cd(a){a=a|0;return;}function Dd(a){a=a|0;Vz(a);return;}function Ed(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11260;c[b+4>>2]=c[a+4>>2];return b|0;}function Fd(a,b){a=a|0;b=b|0;c[b>>2]=11260;c[b+4>>2]=c[a+4>>2];return;}function Gd(a){a=a|0;return;}function Hd(a){a=a|0;Vz(a);return;}function Id(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=d+8|0;Lc(f,b);b=c[a+4>>2]|0;a=c[f>>2]|0;eb(a|0);c[e>>2]=a;ab(_a(c[b>>2]|0,1,11108,e|0)|0);ab(a|0);l=d;return;}function Jd(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==14061?a+4|0:0)|0;}function Kd(a){a=a|0;return 9944;}function Ld(a){a=a|0;Vz(a);return;}function Md(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11304;c[b+4>>2]=c[a+4>>2];return b|0;}function Nd(a,b){a=a|0;b=b|0;c[b>>2]=11304;c[b+4>>2]=c[a+4>>2];return;}function Od(a){a=a|0;return;}function Pd(a){a=a|0;Vz(a);return;}function Qd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=d+8|0;Lc(f,b);b=c[a+4>>2]|0;a=c[f>>2]|0;eb(a|0);c[e>>2]=a;ab(_a(c[b>>2]|0,1,11108,e|0)|0);ab(a|0);l=d;return;}function Rd(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==14267?a+4|0:0)|0;}function Sd(a){a=a|0;return 9968;}function Td(a){a=a|0;Vz(a);return;}function Ud(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11348;c[b+4>>2]=c[a+4>>2];return b|0;}function Vd(a,b){a=a|0;b=b|0;c[b>>2]=11348;c[b+4>>2]=c[a+4>>2];return;}function Wd(a){a=a|0;return;}function Xd(a){a=a|0;Vz(a);return;}function Yd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=d+8|0;Lc(f,b);b=c[a+4>>2]|0;a=c[f>>2]|0;eb(a|0);c[e>>2]=a;ab(_a(c[b>>2]|0,1,11108,e|0)|0);ab(a|0);l=d;return;}function Zd(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==14464?a+4|0:0)|0;}function _d(a){a=a|0;return 9992;}function $d(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=b+4|0;f=c[e>>2]|0;g=b+8|0;h=c[g>>2]|0;if((f|0)!=(h|0)){a[f>>0]=a[d>>0]|0;c[e>>2]=(c[e>>2]|0)+1;return;}i=c[b>>2]|0;j=f-i|0;f=j+1|0;k=i;if((f|0)<0)Wz(b);l=h-i|0;h=l<<1;m=l>>>0<1073741823?h>>>0<f>>>0?f:h:2147483647;if(!m)n=0;else n=Uz(m)|0;h=n+j|0;a[h>>0]=a[d>>0]|0;if((j|0)>0)mE(n|0,k|0,j|0)|0;c[b>>2]=n;c[e>>2]=h+1;c[g>>2]=n+m;if(!i)return;Vz(k);return;}function ae(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+4|0;f=c[a>>2]|0;g=(c[e>>2]|0)-f|0;if(g>>>0<b>>>0){de(a,b-g|0,d);return;}if(g>>>0<=b>>>0)return;c[e>>2]=f+b;return;}function be(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+16|0;g=f;h=c[b>>2]|0;if(((c[b+4>>2]|0)-h|0)>>>0<=e>>>0){i=1;c[a>>2]=i;l=f;return;}c[g>>2]=d[h+e>>0];i=kb(10960,g|0)|0;c[a>>2]=i;l=f;return;}function ce(b,d,e){b=b|0;d=d|0;e=e|0;a[(c[b>>2]|0)+d>>0]=a[e>>0]|0;return 1;}function de(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=b+8|0;g=c[f>>2]|0;h=b+4|0;i=c[h>>2]|0;if((g-i|0)>>>0>=d>>>0){j=d;k=i;do{a[k>>0]=a[e>>0]|0;k=(c[h>>2]|0)+1|0;c[h>>2]=k;j=j+-1|0;}while((j|0)!=0);return;}j=c[b>>2]|0;k=i-j|0;l=k+d|0;if((l|0)<0)Wz(b);m=g-j|0;g=m<<1;n=m>>>0<1073741823?g>>>0<l>>>0?l:g:2147483647;if(!n)o=0;else o=Uz(n)|0;g=o+k|0;k=o+n|0;n=i+d-j|0;j=d;d=g;while(1){a[d>>0]=a[e>>0]|0;j=j+-1|0;if(!j)break;else d=d+1|0;}d=c[b>>2]|0;j=(c[h>>2]|0)-d|0;e=g+(0-j)|0;if((j|0)>0)mE(e|0,d|0,j|0)|0;c[b>>2]=e;c[h>>2]=o+n;c[f>>2]=k;if(!d)return;Vz(d);return;}function ee(a){a=a|0;return 10032;}function fe(a){a=a|0;var b=0;if(!a)return;b=c[a>>2]|0;if(b|0){c[a+4>>2]=b;Vz(b);}Vz(a);return;}function ge(){var a=0;a=Uz(12)|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return a|0;}function he(a){a=a|0;return oc[a&7]()|0;}function ie(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+16|0;g=f;h=c[b>>2]|0;i=c[b+4>>2]|0;b=d+(i>>1)|0;if(!(i&1))j=h;else j=c[(c[b>>2]|0)+h>>2]|0;a[g>>0]=e;xc[j&31](b,g);l=f;return;}function je(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;g=l;l=l+16|0;h=g;i=c[b>>2]|0;j=c[b+4>>2]|0;b=d+(j>>1)|0;if(!(j&1))k=i;else k=c[(c[b>>2]|0)+i>>2]|0;a[h>>0]=f;yc[k&7](b,e,h);l=g;return;}function ke(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a>>2]|0;e=c[a+4>>2]|0;a=b+(e>>1)|0;if(!(e&1))f=d;else f=c[(c[a>>2]|0)+d>>2]|0;return pc[f&63](a)|0;}function le(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;yc[c[a>>2]&7](f,b,d);eb(c[f>>2]|0);d=c[f>>2]|0;ab(d|0);l=e;return d|0;}function me(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=l;l=l+16|0;h=g;i=c[b>>2]|0;a[h>>0]=f;f=rc[i&31](d,e,h)|0;l=g;return f|0;}function ne(a){a=a|0;vc[a&3]();return;}function oe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;xc[a&31](b,f);ab(c[f>>2]|0);l=e;return;}function pe(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;xc[a&31](e,b);eb(c[e>>2]|0);b=c[e>>2]|0;ab(b|0);l=d;return b|0;}function qe(a){a=a|0;return 10096;}function re(a){a=a|0;if(!a)return;se(a);Vz(a);return;}function se(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b;e=c[a>>2]|0;do{if(e){c[d>>2]=e;f=a+24|0;g=c[f>>2]|0;if(!g){h=va(4)|0;c[h>>2]=12636;ya(h|0,10800,50);}else{xc[c[(c[g>>2]|0)+24>>2]&31](g,d);c[a>>2]=0;i=f;break;}}else i=a+24|0;}while(0);d=c[i>>2]|0;if((a+8|0)==(d|0)){wc[c[(c[d>>2]|0)+16>>2]&127](d);l=b;return;}if(!d){l=b;return;}wc[c[(c[d>>2]|0)+20>>2]&127](d);l=b;return;}function te(a){a=a|0;var b=0;b=c[a+16>>2]|0;if((a|0)==(b|0)){wc[c[(c[b>>2]|0)+16>>2]&127](b);return;}if(!b)return;wc[c[(c[b>>2]|0)+20>>2]&127](b);return;}function ue(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=b;b=qc[a&63](f,d)|0;ab(c[f>>2]|0);l=e;return b|0;}function ve(a){a=a|0;return 10152;}function we(a){a=a|0;if(!a)return;xe(a);Vz(a);return;}function xe(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b;e=c[a>>2]|0;do{if(e){c[d>>2]=e;f=a+24|0;g=c[f>>2]|0;if(!g){h=va(4)|0;c[h>>2]=12636;ya(h|0,10800,50);}else{xc[c[(c[g>>2]|0)+24>>2]&31](g,d);c[a>>2]=0;i=f;break;}}else i=a+24|0;}while(0);d=c[i>>2]|0;if((a+8|0)==(d|0)){wc[c[(c[d>>2]|0)+16>>2]&127](d);l=b;return;}if(!d){l=b;return;}wc[c[(c[d>>2]|0)+20>>2]&127](d);l=b;return;}function ye(a){a=a|0;var b=0;b=c[a+16>>2]|0;if((a|0)==(b|0)){wc[c[(c[b>>2]|0)+16>>2]&127](b);return;}if(!b)return;wc[c[(c[b>>2]|0)+20>>2]&127](b);return;}function ze(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=pc[a&63](e)|0;ab(c[e>>2]|0);l=d;return b|0;}function Ae(a){a=a|0;return 10200;}function Be(a){a=a|0;if(!a)return;Vz(a);return;}function Ce(){return Uz(1)|0;}function De(a){a=a|0;return oc[a&7]()|0;}function Ee(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]|0;f=c[a+4>>2]|0;a=b+(f>>1)|0;if(!(f&1))g=e;else g=c[(c[a>>2]|0)+e>>2]|0;return qc[g&63](a,d)|0;}function Fe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]|0;f=c[a+4>>2]|0;a=b+(f>>1)|0;if(!(f&1))g=e;else g=c[(c[a>>2]|0)+e>>2]|0;return qc[g&63](a,d)|0;}function Ge(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[a>>2]|0;h=c[a+4>>2]|0;a=b+(h>>1)|0;if(!(h&1))i=g;else i=c[(c[a>>2]|0)+g>>2]|0;return sc[i&15](a,d,e,f)|0;}function He(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=c[a>>2]|0;g=c[a+4>>2]|0;a=b+(g>>1)|0;if(!(g&1))h=f;else h=c[(c[a>>2]|0)+f>>2]|0;return rc[h&31](a,d,e)|0;}function Ie(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[a>>2]|0;h=c[a+4>>2]|0;a=b+(h>>1)|0;if(!(h&1))i=g;else i=c[(c[a>>2]|0)+g>>2]|0;return sc[i&15](a,d,e,f)|0;}function Je(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[a>>2]|0;h=c[a+4>>2]|0;a=b+(h>>1)|0;if(!(h&1))i=g;else i=c[(c[a>>2]|0)+g>>2]|0;return sc[i&15](a,d,e,f)|0;}function Ke(a){a=a|0;return 10240;}function Le(a){a=a|0;if(!a)return;$f(a);Vz(a);return;}function Me(){var a=0;a=Uz(36)|0;_f(a);return a|0;}function Ne(a){a=a|0;return oc[a&7]()|0;}function Oe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]|0;f=c[a+4>>2]|0;a=b+(f>>1)|0;if(!(f&1))g=e;else g=c[(c[a>>2]|0)+e>>2]|0;return qc[g&63](a,d)|0;}function Pe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]|0;f=c[a+4>>2]|0;a=b+(f>>1)|0;if(!(f&1))g=e;else g=c[(c[a>>2]|0)+e>>2]|0;return qc[g&63](a,d)|0;}function Qe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+16|0;g=f+4|0;h=f;i=c[a>>2]|0;j=c[a+4>>2]|0;a=b+(j>>1)|0;if(!(j&1))k=i;else k=c[(c[a>>2]|0)+i>>2]|0;c[g>>2]=d;c[h>>2]=e;e=rc[k&31](a,g,h)|0;ab(c[h>>2]|0);ab(c[g>>2]|0);l=f;return e|0;}function Re(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e;g=c[a>>2]|0;h=c[a+4>>2]|0;a=b+(h>>1)|0;if(!(h&1))i=g;else i=c[(c[a>>2]|0)+g>>2]|0;c[f>>2]=d;d=qc[i&63](a,f)|0;ab(c[f>>2]|0);l=e;return d|0;}function Se(a){a=a|0;return 10280;}function Te(a){a=a|0;if(!a)return;Ag(a);Vz(a);return;}function Ue(){var a=0;a=Uz(36)|0;zg(a);return a|0;}function Ve(a){a=a|0;return oc[a&7]()|0;}function We(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a>>2]|0;e=c[a+4>>2]|0;a=b+(e>>1)|0;if(!(e&1))f=d;else f=c[(c[a>>2]|0)+d>>2]|0;return pc[f&63](a)|0;}function Xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]|0;f=c[a+4>>2]|0;a=b+(f>>1)|0;if(!(f&1))g=e;else g=c[(c[a>>2]|0)+e>>2]|0;return qc[g&63](a,d)|0;}function Ye(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+16|0;g=f+4|0;h=f;i=c[a>>2]|0;j=c[a+4>>2]|0;a=b+(j>>1)|0;if(!(j&1))k=i;else k=c[(c[a>>2]|0)+i>>2]|0;c[g>>2]=d;c[h>>2]=e;e=rc[k&31](a,g,h)|0;ab(c[h>>2]|0);ab(c[g>>2]|0);l=f;return e|0;}function Ze(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e;g=c[a>>2]|0;h=c[a+4>>2]|0;a=b+(h>>1)|0;if(!(h&1))i=g;else i=c[(c[a>>2]|0)+g>>2]|0;c[f>>2]=d;d=qc[i&63](a,f)|0;ab(c[f>>2]|0);l=e;return d|0;}function _e(){$c(0);return;}function $e(a,b){a=a|0;b=b|0;a=lj(b)|0;b=(Ph(a)|0)==0;return(b?a>>>0>2147483646?-2:a:-1)|0;}function af(a,b){a=a|0;b=b|0;var d=0;a=c[b>>2]|0;d=wq(a,(c[b+4>>2]|0)-a|0)|0;a=(Ph(d)|0)==0;return(a?d>>>0>2147483646?-2:d:-1)|0;}function bf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;a=c[b>>2]|0;f=c[d>>2]|0;g=Go(a,(c[b+4>>2]|0)-a|0,f,(c[d+4>>2]|0)-f|0,e)|0;e=(Ph(g)|0)==0;return(e?g>>>0>2147483646?-2:g:-1)|0;}function cf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=c[b>>2]|0;e=c[d>>2]|0;f=ux(a,(c[b+4>>2]|0)-a|0,e,(c[d+4>>2]|0)-e|0)|0;e=(Ph(f)|0)==0;return(e?f>>>0>2147483646?-2:f:-1)|0;}function df(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;a=l;l=l+32|0;f=a;g=mj()|0;c[f>>2]=g;h=f+8|0;c[f+24>>2]=h;c[h>>2]=11576;c[f+12>>2]=68;if(!g){i=-3;ff(f);l=a;return i|0;}h=c[b>>2]|0;j=c[d>>2]|0;k=Lo(g,h,(c[b+4>>2]|0)-h|0,j,(c[d+4>>2]|0)-j|0,c[e>>2]|0)|0;e=(Ph(k)|0)==0;i=e?k>>>0>2147483646?-2:k:-1;ff(f);l=a;return i|0;}function ef(a){a=a|0;qj(a)|0;return;}function ff(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b;e=c[a>>2]|0;do{if(e){c[d>>2]=e;f=a+24|0;g=c[f>>2]|0;if(!g){h=va(4)|0;c[h>>2]=12636;ya(h|0,10800,50);}else{xc[c[(c[g>>2]|0)+24>>2]&31](g,d);c[a>>2]=0;i=f;break;}}else i=a+24|0;}while(0);d=c[i>>2]|0;if((a+8|0)==(d|0)){wc[c[(c[d>>2]|0)+16>>2]&127](d);l=b;return;}if(!d){l=b;return;}wc[c[(c[d>>2]|0)+20>>2]&127](d);l=b;return;}function gf(a){a=a|0;var b=0;b=c[a+16>>2]|0;if((a|0)==(b|0)){wc[c[(c[b>>2]|0)+16>>2]&127](b);return;}if(!b)return;wc[c[(c[b>>2]|0)+20>>2]&127](b);return;}function hf(a){a=a|0;return;}function jf(a){a=a|0;Vz(a);return;}function kf(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11576;c[b+4>>2]=c[a+4>>2];return b|0;}function lf(a,b){a=a|0;b=b|0;c[b>>2]=11576;c[b+4>>2]=c[a+4>>2];return;}function mf(a){a=a|0;return;}function nf(a){a=a|0;Vz(a);return;}function of(a,b){a=a|0;b=b|0;wc[c[a+4>>2]&127](c[b>>2]|0);return;}function pf(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==15195?a+4|0:0)|0;}function qf(a){a=a|0;return 10336;}function rf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;a=l;l=l+32|0;f=a;g=Wp()|0;c[f>>2]=g;h=f+8|0;c[f+24>>2]=h;c[h>>2]=11620;c[f+12>>2]=69;if(!g){i=-4;tf(f);l=a;return i|0;}h=c[b>>2]|0;j=c[d>>2]|0;k=Dx(g,h,(c[b+4>>2]|0)-h|0,j,(c[d+4>>2]|0)-j|0,c[e>>2]|0)|0;e=(Ph(k)|0)==0;i=e?k>>>0>2147483646?-2:k:-1;tf(f);l=a;return i|0;}function sf(a){a=a|0;Xp(a)|0;return;}function tf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b;e=c[a>>2]|0;do{if(e){c[d>>2]=e;f=a+24|0;g=c[f>>2]|0;if(!g){h=va(4)|0;c[h>>2]=12636;ya(h|0,10800,50);}else{xc[c[(c[g>>2]|0)+24>>2]&31](g,d);c[a>>2]=0;i=f;break;}}else i=a+24|0;}while(0);d=c[i>>2]|0;if((a+8|0)==(d|0)){wc[c[(c[d>>2]|0)+16>>2]&127](d);l=b;return;}if(!d){l=b;return;}wc[c[(c[d>>2]|0)+20>>2]&127](d);l=b;return;}function uf(a){a=a|0;var b=0;b=c[a+16>>2]|0;if((a|0)==(b|0)){wc[c[(c[b>>2]|0)+16>>2]&127](b);return;}if(!b)return;wc[c[(c[b>>2]|0)+20>>2]&127](b);return;}function vf(a){a=a|0;return;}function wf(a){a=a|0;Vz(a);return;}function xf(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11620;c[b+4>>2]=c[a+4>>2];return b|0;}function yf(a,b){a=a|0;b=b|0;c[b>>2]=11620;c[b+4>>2]=c[a+4>>2];return;}function zf(a){a=a|0;return;}function Af(a){a=a|0;Vz(a);return;}function Bf(a,b){a=a|0;b=b|0;wc[c[a+4>>2]&127](c[b>>2]|0);return;}function Cf(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==15349?a+4|0:0)|0;}function Df(a){a=a|0;return 10384;}function Ef(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b>>2]|0;c[a>>2]=Ho(e,(c[b+4>>2]|0)-e|0,d)|0;d=a+8|0;c[a+24>>2]=d;c[d>>2]=11664;c[a+12>>2]=70;return;}function Ff(a){a=a|0;rj(a)|0;return;}function Gf(a){a=a|0;return;}function Hf(a){a=a|0;Vz(a);return;}function If(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11664;c[b+4>>2]=c[a+4>>2];return b|0;}function Jf(a,b){a=a|0;b=b|0;c[b>>2]=11664;c[b+4>>2]=c[a+4>>2];return;}function Kf(a){a=a|0;return;}function Lf(a){a=a|0;Vz(a);return;}function Mf(a,b){a=a|0;b=b|0;wc[c[a+4>>2]&127](c[b>>2]|0);return;}function Nf(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==15503?a+4|0:0)|0;}function Of(a){a=a|0;return 10432;}function Pf(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=Cx(d,(c[b+4>>2]|0)-d|0)|0;d=a+8|0;c[a+24>>2]=d;c[d>>2]=11708;c[a+12>>2]=71;return;}function Qf(a){a=a|0;Yp(a)|0;return;}function Rf(a){a=a|0;return;}function Sf(a){a=a|0;Vz(a);return;}function Tf(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11708;c[b+4>>2]=c[a+4>>2];return b|0;}function Uf(a,b){a=a|0;b=b|0;c[b>>2]=11708;c[b+4>>2]=c[a+4>>2];return;}function Vf(a){a=a|0;return;}function Wf(a){a=a|0;Vz(a);return;}function Xf(a,b){a=a|0;b=b|0;wc[c[a+4>>2]&127](c[b>>2]|0);return;}function Yf(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==15661?a+4|0:0)|0;}function Zf(a){a=a|0;return 10480;}function _f(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=44;b=a+8|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;return;}function $f(a){a=a|0;var b=0;b=c[a+24>>2]|0;if(b|0){c[a+28>>2]=b;Vz(b);}b=c[a+12>>2]|0;if(b|0){c[a+16>>2]=b;Vz(b);}b=c[a>>2]|0;c[a>>2]=0;if(!b)return;pc[c[a+4>>2]&63](b)|0;return;}function ag(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=e+16|0;c[e>>2]=11752;c[e+4>>2]=b;c[f>>2]=e;b=bg(a,e)|0;a=c[f>>2]|0;if((e|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=d;return b|0;}if(!a){l=d;return b|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=d;return b|0;}function bg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;d=l;l=l+16|0;e=d;if(c[a>>2]|0){f=1;l=d;return f|0;}g=Mo()|0;if(!g){f=0;l=d;return f|0;}c[e>>2]=g;h=c[b+16>>2]|0;if(!h){b=va(4)|0;c[b>>2]=12636;ya(b|0,10800,50);}if(Ph(qc[c[(c[h>>2]|0)+24>>2]&63](h,e)|0)|0){Oo(g)|0;f=0;l=d;return f|0;}e=c[a>>2]|0;c[a>>2]=g;g=a+4|0;if(e|0)pc[c[g>>2]&63](e)|0;c[g>>2]=44;g=Po()|0;e=a+12|0;h=a+20|0;b=c[e>>2]|0;i=b;if(((c[h>>2]|0)-b|0)>>>0<g>>>0){j=a+16|0;k=(c[j>>2]|0)-b|0;m=Uz(g)|0;if((k|0)>0)mE(m|0,i|0,k|0)|0;c[e>>2]=m;c[j>>2]=m+k;c[h>>2]=m+g;if(b|0)Vz(i);}cg(a+24|0,Qo()|0);c[a+8>>2]=(c[h>>2]|0)-(c[e>>2]|0);f=1;l=d;return f|0;}function cg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;e=b+4|0;f=c[e>>2]|0;g=c[b>>2]|0;h=f-g|0;i=g;if(h>>>0>=d>>>0){if(h>>>0<=d>>>0)return;c[e>>2]=i+d;return;}j=d-h|0;k=b+8|0;l=c[k>>2]|0;if((l-f|0)>>>0>=j>>>0){m=j;n=f;do{a[n>>0]=0;n=(c[e>>2]|0)+1|0;c[e>>2]=n;m=m+-1|0;}while((m|0)!=0);return;}if((d|0)<0)Wz(b);m=l-g|0;l=m<<1;n=m>>>0<1073741823?l>>>0<d>>>0?d:l:2147483647;if(!n)o=0;else o=Uz(n)|0;oE(o+h|0,0,j|0)|0;if((h|0)>0)mE(o|0,i|0,h|0)|0;c[b>>2]=o;c[e>>2]=o+d;c[k>>2]=o+n;if(!g)return;Vz(i);return;}function dg(a){a=a|0;return;}function eg(a){a=a|0;Vz(a);return;}function fg(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11752;c[b+4>>2]=c[a+4>>2];return b|0;}function gg(a,b){a=a|0;b=b|0;c[b>>2]=11752;c[b+4>>2]=c[a+4>>2];return;}function hg(a){a=a|0;return;}function ig(a){a=a|0;Vz(a);return;}function jg(a,b){a=a|0;b=b|0;return Wo(c[b>>2]|0,c[a+4>>2]|0)|0;}function kg(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==15819?a+4|0:0)|0;}function lg(a){a=a|0;return 10528;}function mg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=e+16|0;c[e>>2]=11796;c[e+4>>2]=b;c[f>>2]=e;b=bg(a,e)|0;a=c[f>>2]|0;if((e|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=d;return b|0;}if(!a){l=d;return b|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=d;return b|0;}function ng(a){a=a|0;Vz(a);return;}function og(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11796;c[b+4>>2]=c[a+4>>2];return b|0;}function pg(a,b){a=a|0;b=b|0;c[b>>2]=11796;c[b+4>>2]=c[a+4>>2];return;}function qg(a){a=a|0;return;}function rg(a){a=a|0;Vz(a);return;}function sg(a,b){a=a|0;b=b|0;return Uo(c[b>>2]|0,c[c[a+4>>2]>>2]|0)|0;}function tg(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==16003?a+4|0:0)|0;}function ug(a){a=a|0;return 10560;}function vg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;if(!(c[b>>2]|0)){f=0;return f|0;}g=d+4|0;h=c[d>>2]|0;i=(c[g>>2]|0)-h|0;if(!i){f=1;return f|0;}j=b+12|0;k=b+20|0;l=b+16|0;m=b+8|0;n=0;o=h;h=i;a:while(1){i=c[k>>2]|0;p=c[j>>2]|0;q=c[l>>2]|0;r=p-q+(i-p)|0;s=h-n|0;t=s>>>0<r>>>0?s:r;s=o+n|0;u=s+t|0;n=t+n|0;if(!t){v=p;w=q;}else{p=q;q=i;i=s;while(1){if((p|0)==(q|0)){s=c[j>>2]|0;t=q-s|0;x=t+1|0;y=s;if((x|0)<0){z=9;break a;}A=t<<1;B=t>>>0<1073741823?A>>>0<x>>>0?x:A:2147483647;if(!B)C=0;else C=Uz(B)|0;A=C+t|0;a[A>>0]=a[i>>0]|0;if((t|0)>0)mE(C|0,y|0,t|0)|0;c[j>>2]=C;c[l>>2]=A+1;c[k>>2]=C+B;if(s|0)Vz(y);}else{a[p>>0]=a[i>>0]|0;c[l>>2]=(c[l>>2]|0)+1;}y=i+1|0;if((y|0)==(u|0))break;p=c[l>>2]|0;q=c[k>>2]|0;i=y;}v=c[j>>2]|0;w=c[l>>2]|0;}if(((r|0)==0?1:(w-v|0)>>>0>=(c[m>>2]|0)>>>0)?!(wg(b,e)|0):0){f=0;z=22;break;}o=c[d>>2]|0;h=(c[g>>2]|0)-o|0;if(h>>>0<=n>>>0){f=1;z=22;break;}}if((z|0)==9)Wz(j);else if((z|0)==22)return f|0;return 0;}function wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;d=l;l=l+32|0;e=d+12|0;f=d;g=a+12|0;h=c[g>>2]|0;i=a+16|0;j=c[i>>2]|0;k=h;if((h|0)==(j|0)){m=1;l=d;return m|0;}c[e>>2]=h;h=e+4|0;n=j-k|0;c[h>>2]=n;j=e+8|0;c[j>>2]=0;do{if(n){o=a+24|0;p=a+32|0;q=f+4|0;r=a+28|0;s=f+8|0;t=a+8|0;u=b+16|0;while(1){cg(o,(c[p>>2]|0)-(c[o>>2]|0)|0);v=c[o>>2]|0;c[f>>2]=v;c[q>>2]=(c[r>>2]|0)-v;c[s>>2]=0;v=Zo(c[a>>2]|0,f,e)|0;c[t>>2]=v;if(Ph(v)|0){w=8;break;}cg(o,c[s>>2]|0);v=c[u>>2]|0;if(!v){w=6;break;}xc[c[(c[v>>2]|0)+24>>2]&31](v,o);if((c[j>>2]|0)>>>0>=(c[h>>2]|0)>>>0){w=9;break;}}if((w|0)==6){o=va(4)|0;c[o>>2]=12636;ya(o|0,10800,50);}else if((w|0)==8){x=0;break;}else if((w|0)==9){y=c[g>>2]|0;w=10;break;}}else{y=k;w=10;}}while(0);if((w|0)==10){c[i>>2]=y;x=1;}m=x;l=d;return m|0;}function xg(a,b){a=a|0;b=b|0;return wg(a,b)|0;}function yg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=l;l=l+16|0;e=d;if(!(c[a>>2]|0)){f=1;l=d;return f|0;}if((c[a+12>>2]|0)!=(c[a+16>>2]|0)?!(wg(a,b)|0):0)g=0;else h=4;do{if((h|0)==4){i=a+24|0;cg(i,(c[a+32>>2]|0)-(c[i>>2]|0)|0);j=c[i>>2]|0;c[e>>2]=j;c[e+4>>2]=(c[a+28>>2]|0)-j;j=e+8|0;c[j>>2]=0;if(_o(c[a>>2]|0,e)|0){f=0;l=d;return f|0;}cg(i,c[j>>2]|0);j=c[b+16>>2]|0;if(!j){k=va(4)|0;c[k>>2]=12636;ya(k|0,10800,50);}else{xc[c[(c[j>>2]|0)+24>>2]&31](j,i);g=1;break;}}}while(0);b=c[a>>2]|0;c[a>>2]=0;if(!b){f=g;l=d;return f|0;}pc[c[a+4>>2]&63](b)|0;f=g;l=d;return f|0;}function zg(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=45;b=a+8|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;return;}function Ag(a){a=a|0;var b=0;b=c[a+24>>2]|0;if(b|0){c[a+28>>2]=b;Vz(b);}b=c[a+12>>2]|0;if(b|0){c[a+16>>2]=b;Vz(b);}b=c[a>>2]|0;c[a>>2]=0;if(!b)return;pc[c[a+4>>2]&63](b)|0;return;}function Bg(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+32|0;d=b;e=d+16|0;c[d>>2]=11840;c[e>>2]=d;f=Cg(a,d)|0;a=c[e>>2]|0;if((d|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=b;return f|0;}if(!a){l=b;return f|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=b;return f|0;}function Cg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;d=l;l=l+16|0;e=d;if(c[a>>2]|0){f=1;l=d;return f|0;}g=Ex()|0;if(!g){f=0;l=d;return f|0;}c[e>>2]=g;h=c[b+16>>2]|0;if(!h){b=va(4)|0;c[b>>2]=12636;ya(b|0,10800,50);}b=qc[c[(c[h>>2]|0)+24>>2]&63](h,e)|0;if(Ph(b)|0){Gx(g)|0;f=0;l=d;return f|0;}e=c[a>>2]|0;c[a>>2]=g;g=a+4|0;if(e|0)pc[c[g>>2]&63](e)|0;c[g>>2]=45;g=Hx()|0;e=a+12|0;h=a+20|0;i=c[e>>2]|0;j=i;if(((c[h>>2]|0)-i|0)>>>0<g>>>0){k=a+16|0;m=(c[k>>2]|0)-i|0;n=Uz(g)|0;if((m|0)>0)mE(n|0,j|0,m|0)|0;c[e>>2]=n;c[k>>2]=n+m;c[h>>2]=n+g;if(i|0)Vz(j);}cg(a+24|0,Ix()|0);c[a+8>>2]=b;f=1;l=d;return f|0;}function Dg(a){a=a|0;return;}function Eg(a){a=a|0;Vz(a);return;}function Fg(a){a=a|0;a=Uz(8)|0;c[a>>2]=11840;return a|0;}function Gg(a,b){a=a|0;b=b|0;c[b>>2]=11840;return;}function Hg(a){a=a|0;return;}function Ig(a){a=a|0;Vz(a);return;}function Jg(a,b){a=a|0;b=b|0;return Mx(c[b>>2]|0)|0;}function Kg(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==16184?a+4|0:0)|0;}function Lg(a){a=a|0;return 10584;}function Mg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=e+16|0;c[e>>2]=11884;c[e+4>>2]=b;c[f>>2]=e;b=Cg(a,e)|0;a=c[f>>2]|0;if((e|0)==(a|0)){wc[c[(c[a>>2]|0)+16>>2]&127](a);l=d;return b|0;}if(!a){l=d;return b|0;}wc[c[(c[a>>2]|0)+20>>2]&127](a);l=d;return b|0;}function Ng(a){a=a|0;Vz(a);return;}function Og(a){a=a|0;var b=0;b=Uz(8)|0;c[b>>2]=11884;c[b+4>>2]=c[a+4>>2];return b|0;}function Pg(a,b){a=a|0;b=b|0;c[b>>2]=11884;c[b+4>>2]=c[a+4>>2];return;}function Qg(a){a=a|0;return;}function Rg(a){a=a|0;Vz(a);return;}function Sg(a,b){a=a|0;b=b|0;return Nx(c[b>>2]|0,c[c[a+4>>2]>>2]|0)|0;}function Tg(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==16372?a+4|0:0)|0;}function Ug(a){a=a|0;return 10616;}function Vg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;if(!(c[b>>2]|0)){f=0;return f|0;}g=d+4|0;h=c[d>>2]|0;i=(c[g>>2]|0)-h|0;if(!i){f=1;return f|0;}j=b+12|0;k=b+20|0;l=b+16|0;m=b+8|0;n=0;o=h;h=i;a:while(1){i=c[k>>2]|0;p=c[j>>2]|0;q=c[l>>2]|0;r=p-q+(i-p)|0;s=h-n|0;t=s>>>0<r>>>0?s:r;s=o+n|0;u=s+t|0;n=t+n|0;if(!t){v=p;w=q;}else{p=q;q=i;i=s;while(1){if((p|0)==(q|0)){s=c[j>>2]|0;t=q-s|0;x=t+1|0;y=s;if((x|0)<0){z=9;break a;}A=t<<1;B=t>>>0<1073741823?A>>>0<x>>>0?x:A:2147483647;if(!B)C=0;else C=Uz(B)|0;A=C+t|0;a[A>>0]=a[i>>0]|0;if((t|0)>0)mE(C|0,y|0,t|0)|0;c[j>>2]=C;c[l>>2]=A+1;c[k>>2]=C+B;if(s|0)Vz(y);}else{a[p>>0]=a[i>>0]|0;c[l>>2]=(c[l>>2]|0)+1;}y=i+1|0;if((y|0)==(u|0))break;p=c[l>>2]|0;q=c[k>>2]|0;i=y;}v=c[j>>2]|0;w=c[l>>2]|0;}if(((r|0)==0?1:(w-v|0)>>>0>=(c[m>>2]|0)>>>0)?!(Wg(b,e)|0):0){f=0;z=22;break;}o=c[d>>2]|0;h=(c[g>>2]|0)-o|0;if(h>>>0<=n>>>0){f=1;z=22;break;}}if((z|0)==9)Wz(j);else if((z|0)==22)return f|0;return 0;}function Wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;d=l;l=l+32|0;e=d+12|0;f=d;g=a+12|0;h=c[g>>2]|0;i=a+16|0;j=c[i>>2]|0;k=h;if((h|0)==(j|0)){m=1;l=d;return m|0;}c[e>>2]=h;h=e+4|0;n=j-k|0;c[h>>2]=n;j=e+8|0;c[j>>2]=0;do{if(n){o=a+24|0;p=a+32|0;q=f+4|0;r=a+28|0;s=f+8|0;t=a+8|0;u=b+16|0;while(1){cg(o,(c[p>>2]|0)-(c[o>>2]|0)|0);v=c[o>>2]|0;c[f>>2]=v;c[q>>2]=(c[r>>2]|0)-v;c[s>>2]=0;v=Qx(c[a>>2]|0,f,e)|0;c[t>>2]=v;if(Ph(v)|0){w=8;break;}cg(o,c[s>>2]|0);v=c[u>>2]|0;if(!v){w=6;break;}xc[c[(c[v>>2]|0)+24>>2]&31](v,o);if((c[j>>2]|0)>>>0>=(c[h>>2]|0)>>>0){w=9;break;}}if((w|0)==6){o=va(4)|0;c[o>>2]=12636;ya(o|0,10800,50);}else if((w|0)==8){x=0;break;}else if((w|0)==9){y=c[g>>2]|0;w=10;break;}}else{y=k;w=10;}}while(0);if((w|0)==10){c[i>>2]=y;x=1;}m=x;l=d;return m|0;}function Xg(a,b){a=a|0;b=b|0;return Wg(a,b)|0;}function Yg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[a>>2]|0;if(!d){e=1;return e|0;}if((c[a+12>>2]|0)!=(c[a+16>>2]|0)){f=Wg(a,b)|0;b=c[a>>2]|0;c[a>>2]=0;if(!b){e=f;return e|0;}else{g=f;h=b;}}else{c[a>>2]=0;g=1;h=d;}pc[c[a+4>>2]&63](h)|0;e=g;return e|0;}function Zg(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=_g(c[d>>2]|0)|0;l=b;return a|0;}function _g(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function $g(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=_g(c[d>>2]|0)|0;l=b;return a|0;}function ah(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;h=l;l=l+80|0;i=h+72|0;j=h+68|0;k=h+64|0;m=h+60|0;n=h+56|0;o=h+52|0;p=h+48|0;q=h+44|0;r=h+40|0;s=h+36|0;t=h+32|0;u=h+28|0;v=h+24|0;w=h+20|0;x=h+16|0;y=h+12|0;z=h+8|0;A=h+4|0;B=h;c[j>>2]=a;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=c[n>>2];c[q>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[r>>2]=c[p>>2];c[x>>2]=0;c[y>>2]=0;if((c[o>>2]|0)>>>0<4){c[i>>2]=-72;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=bh(c[r>>2]|0)|0;c[s>>2]=(c[v>>2]&15)+5;if((c[s>>2]|0)>15){c[i>>2]=-44;C=c[i>>2]|0;l=h;return C|0;}c[v>>2]=(c[v>>2]|0)>>>4;c[w>>2]=4;c[c[m>>2]>>2]=c[s>>2];c[t>>2]=(1<<c[s>>2])+1;c[u>>2]=1<<c[s>>2];c[s>>2]=(c[s>>2]|0)+1;a:while(1){if(!(((c[t>>2]|0)>1?(c[x>>2]|0)>>>0<=(c[c[k>>2]>>2]|0)>>>0:0)|0))break;do{if(c[y>>2]|0){c[z>>2]=c[x>>2];while(1){if((c[v>>2]&65535|0)!=65535)break;c[z>>2]=(c[z>>2]|0)+24;if((c[r>>2]|0)>>>0<((c[q>>2]|0)+-5|0)>>>0){c[r>>2]=(c[r>>2]|0)+2;m=bh(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]|0);}else{c[v>>2]=(c[v>>2]|0)>>>16;c[w>>2]=(c[w>>2]|0)+16;}}while(1){if((c[v>>2]&3|0)!=3)break;c[z>>2]=(c[z>>2]|0)+3;c[v>>2]=(c[v>>2]|0)>>>2;c[w>>2]=(c[w>>2]|0)+2;}c[z>>2]=(c[z>>2]|0)+(c[v>>2]&3);c[w>>2]=(c[w>>2]|0)+2;if((c[z>>2]|0)>>>0>(c[c[k>>2]>>2]|0)>>>0){D=18;break a;}while(1){if((c[x>>2]|0)>>>0>=(c[z>>2]|0)>>>0)break;m=c[j>>2]|0;o=c[x>>2]|0;c[x>>2]=o+1;b[m+(o<<1)>>1]=0;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[v>>2]=(c[v>>2]|0)>>>2;break;}c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;o=bh(c[r>>2]|0)|0;c[v>>2]=o>>>(c[w>>2]|0);}}while(0);c[A>>2]=(c[u>>2]<<1)-1-(c[t>>2]|0);o=c[v>>2]|0;m=c[u>>2]|0;if((c[v>>2]&(c[u>>2]|0)-1)>>>0<(c[A>>2]|0)>>>0){c[B>>2]=o&m-1;c[w>>2]=(c[w>>2]|0)+((c[s>>2]|0)-1);}else{c[B>>2]=o&(m<<1)-1;if((c[B>>2]|0)>=(c[u>>2]|0))c[B>>2]=(c[B>>2]|0)-(c[A>>2]|0);c[w>>2]=(c[w>>2]|0)+(c[s>>2]|0);}c[B>>2]=(c[B>>2]|0)+-1;m=c[B>>2]|0;c[t>>2]=(c[t>>2]|0)-((c[B>>2]|0)<0?0-m|0:m);m=c[B>>2]&65535;o=c[j>>2]|0;n=c[x>>2]|0;c[x>>2]=n+1;b[o+(n<<1)>>1]=m;c[y>>2]=((c[B>>2]|0)!=0^1)&1;while(1){if((c[t>>2]|0)>=(c[u>>2]|0))break;c[s>>2]=(c[s>>2]|0)+-1;c[u>>2]=c[u>>2]>>1;}if((c[r>>2]|0)>>>0>((c[q>>2]|0)+-7|0)>>>0?((c[r>>2]|0)+(c[w>>2]>>3)|0)>>>0>((c[q>>2]|0)+-4|0)>>>0:0){c[w>>2]=(c[w>>2]|0)-((c[q>>2]|0)+-4-(c[r>>2]|0)<<3);c[r>>2]=(c[q>>2]|0)+-4;}else{c[r>>2]=(c[r>>2]|0)+(c[w>>2]>>3);c[w>>2]=c[w>>2]&7;}m=bh(c[r>>2]|0)|0;c[v>>2]=m>>>(c[w>>2]&31);}if((D|0)==18){c[i>>2]=-48;C=c[i>>2]|0;l=h;return C|0;}if((c[t>>2]|0)!=1){c[i>>2]=-20;C=c[i>>2]|0;l=h;return C|0;}if((c[w>>2]|0)>32){c[i>>2]=-20;C=c[i>>2]|0;l=h;return C|0;}else{c[c[k>>2]>>2]=(c[x>>2]|0)-1;c[r>>2]=(c[r>>2]|0)+((c[w>>2]|0)+7>>3);c[i>>2]=(c[r>>2]|0)-(c[p>>2]|0);C=c[i>>2]|0;l=h;return C|0;}return 0;}function bh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(ch()|0)!=0;f=dh(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=eh(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function ch(){return d[11936]|0|0;}function dh(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function eh(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function fh(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;k=l;l=l+336|0;m=k+332|0;n=k+328|0;o=k+324|0;p=k+320|0;q=k+316|0;r=k+312|0;s=k+308|0;t=k+304|0;u=k+300|0;v=k+296|0;w=k+292|0;x=k+288|0;y=k+284|0;z=k;A=k+280|0;B=k+276|0;C=k+272|0;D=k+268|0;E=k+264|0;F=k+260|0;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[v>>2]=c[s>>2];if(!(c[t>>2]|0)){c[m>>2]=-72;G=c[m>>2]|0;l=k;return G|0;}c[w>>2]=d[c[v>>2]>>0];s=c[w>>2]|0;a:do{if((c[w>>2]|0)>>>0<128){if((s+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;G=c[m>>2]|0;l=k;return G|0;}c[x>>2]=gh(c[n>>2]|0,(c[o>>2]|0)-1|0,(c[v>>2]|0)+1|0,c[w>>2]|0,z,6)|0;if(Zg(c[x>>2]|0)|0){c[m>>2]=c[x>>2];G=c[m>>2]|0;l=k;return G|0;}}else{c[x>>2]=s-127;c[w>>2]=(((c[x>>2]|0)+1|0)>>>0)/2|0;if(((c[w>>2]|0)+1|0)>>>0>(c[t>>2]|0)>>>0){c[m>>2]=-72;G=c[m>>2]|0;l=k;return G|0;}if((c[x>>2]|0)>>>0>=(c[o>>2]|0)>>>0){c[m>>2]=-20;G=c[m>>2]|0;l=k;return G|0;}c[v>>2]=(c[v>>2]|0)+1;c[y>>2]=0;while(1){if((c[y>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break a;a[(c[n>>2]|0)+(c[y>>2]|0)>>0]=(d[(c[v>>2]|0)+(((c[y>>2]|0)>>>0)/2|0)>>0]|0)>>4;a[(c[n>>2]|0)+((c[y>>2]|0)+1)>>0]=(d[(c[v>>2]|0)+(((c[y>>2]|0)>>>0)/2|0)>>0]|0)&15;c[y>>2]=(c[y>>2]|0)+2;}}}while(0);y=c[p>>2]|0;v=y+52|0;do{c[y>>2]=0;y=y+4|0;}while((y|0)<(v|0));c[u>>2]=0;c[A>>2]=0;while(1){if((c[A>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break;if((d[(c[n>>2]|0)+(c[A>>2]|0)>>0]|0|0)>=12){H=18;break;}y=(c[p>>2]|0)+((d[(c[n>>2]|0)+(c[A>>2]|0)>>0]|0)<<2)|0;c[y>>2]=(c[y>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+(1<<(d[(c[n>>2]|0)+(c[A>>2]|0)>>0]|0)>>1);c[A>>2]=(c[A>>2]|0)+1;}if((H|0)==18){c[m>>2]=-20;G=c[m>>2]|0;l=k;return G|0;}if(!(c[u>>2]|0)){c[m>>2]=-20;G=c[m>>2]|0;l=k;return G|0;}c[B>>2]=(hh(c[u>>2]|0)|0)+1;if((c[B>>2]|0)>>>0>12){c[m>>2]=-20;G=c[m>>2]|0;l=k;return G|0;}c[c[r>>2]>>2]=c[B>>2];c[C>>2]=1<<c[B>>2];c[D>>2]=(c[C>>2]|0)-(c[u>>2]|0);c[E>>2]=1<<(hh(c[D>>2]|0)|0);c[F>>2]=(hh(c[D>>2]|0)|0)+1;if((c[E>>2]|0)!=(c[D>>2]|0)){c[m>>2]=-20;G=c[m>>2]|0;l=k;return G|0;}a[(c[n>>2]|0)+(c[x>>2]|0)>>0]=c[F>>2];n=(c[p>>2]|0)+(c[F>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+1;if((c[(c[p>>2]|0)+4>>2]|0)>>>0>=2?(c[(c[p>>2]|0)+4>>2]&1|0)==0:0){c[c[q>>2]>>2]=(c[x>>2]|0)+1;c[m>>2]=(c[w>>2]|0)+1;G=c[m>>2]|0;l=k;return G|0;}c[m>>2]=-20;G=c[m>>2]|0;l=k;return G|0;}function gh(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+576|0;i=h+560|0;j=h+556|0;k=h+552|0;m=h+548|0;n=h+544|0;o=h+540|0;p=h+536|0;q=h+532|0;r=h+528|0;s=h;t=h+524|0;u=h+520|0;v=h+516|0;w=h+512|0;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=c[m>>2];c[r>>2]=c[q>>2];c[u>>2]=255;c[v>>2]=ah(s,u,t,c[q>>2]|0,c[n>>2]|0)|0;if(ih(c[v>>2]|0)|0){c[i>>2]=c[v>>2];x=c[i>>2]|0;l=h;return x|0;}if((c[t>>2]|0)>>>0>(c[p>>2]|0)>>>0){c[i>>2]=-44;x=c[i>>2]|0;l=h;return x|0;}c[r>>2]=(c[r>>2]|0)+(c[v>>2]|0);c[n>>2]=(c[n>>2]|0)-(c[v>>2]|0);c[w>>2]=jh(c[o>>2]|0,s,c[u>>2]|0,c[t>>2]|0)|0;if(ih(c[w>>2]|0)|0){c[i>>2]=c[w>>2];x=c[i>>2]|0;l=h;return x|0;}else{c[i>>2]=kh(c[j>>2]|0,c[k>>2]|0,c[r>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;x=c[i>>2]|0;l=h;return x|0;}return 0;}function hh(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function ih(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function jh(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;i=l;l=l+608|0;j=i+580|0;k=i+576|0;m=i+572|0;n=i+568|0;o=i+564|0;p=i+560|0;q=i+556|0;r=i;s=i+552|0;t=i+548|0;u=i+544|0;v=i+588|0;w=i+584|0;x=i+540|0;y=i+536|0;z=i+532|0;A=i+528|0;B=i+524|0;C=i+520|0;D=i+516|0;E=i+592|0;F=i+512|0;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=(c[k>>2]|0)+4;c[q>>2]=c[p>>2];c[s>>2]=(c[n>>2]|0)+1;c[t>>2]=1<<c[o>>2];c[u>>2]=(c[t>>2]|0)-1;if((c[n>>2]|0)>>>0>255){c[j>>2]=-46;G=c[j>>2]|0;l=i;return G|0;}if((c[o>>2]|0)>>>0>12){c[j>>2]=-44;G=c[j>>2]|0;l=i;return G|0;}b[v>>1]=c[o>>2];b[v+2>>1]=1;b[w>>1]=1<<(c[o>>2]|0)-1;c[x>>2]=0;while(1){if((c[x>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;if((b[(c[m>>2]|0)+(c[x>>2]<<1)>>1]|0)==-1){n=c[x>>2]&255;p=c[q>>2]|0;h=c[u>>2]|0;c[u>>2]=h+-1;a[p+(h<<2)+2>>0]=n;b[r+(c[x>>2]<<1)>>1]=1;}else{if((b[(c[m>>2]|0)+(c[x>>2]<<1)>>1]|0)>=(b[w>>1]|0))b[v+2>>1]=0;b[r+(c[x>>2]<<1)>>1]=b[(c[m>>2]|0)+(c[x>>2]<<1)>>1]|0;}c[x>>2]=(c[x>>2]|0)+1;}x=c[k>>2]|0;b[x>>1]=b[v>>1]|0;b[x+2>>1]=b[v+2>>1]|0;c[y>>2]=(c[t>>2]|0)-1;c[z>>2]=((c[t>>2]|0)>>>1)+((c[t>>2]|0)>>>3)+3;c[B>>2]=0;c[A>>2]=0;while(1){if((c[A>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;c[C>>2]=0;while(1){H=c[A>>2]|0;if((c[C>>2]|0)>=(b[(c[m>>2]|0)+(c[A>>2]<<1)>>1]|0))break;a[(c[q>>2]|0)+(c[B>>2]<<2)+2>>0]=H;c[B>>2]=(c[B>>2]|0)+(c[z>>2]|0)&c[y>>2];while(1){if((c[B>>2]|0)>>>0<=(c[u>>2]|0)>>>0)break;c[B>>2]=(c[B>>2]|0)+(c[z>>2]|0)&c[y>>2];}c[C>>2]=(c[C>>2]|0)+1;}c[A>>2]=H+1;}if(c[B>>2]|0){c[j>>2]=-1;G=c[j>>2]|0;l=i;return G|0;}c[D>>2]=0;while(1){if((c[D>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;a[E>>0]=a[(c[q>>2]|0)+(c[D>>2]<<2)+2>>0]|0;B=r+(d[E>>0]<<1)|0;H=b[B>>1]|0;b[B>>1]=H+1<<16>>16;c[F>>2]=H&65535;H=c[o>>2]|0;B=H-(Eh(c[F>>2]|0)|0)&255;a[(c[q>>2]|0)+(c[D>>2]<<2)+3>>0]=B;b[(c[q>>2]|0)+(c[D>>2]<<2)>>1]=(c[F>>2]<<d[(c[q>>2]|0)+(c[D>>2]<<2)+3>>0])-(c[t>>2]|0);c[D>>2]=(c[D>>2]|0)+1;}c[j>>2]=0;G=c[j>>2]|0;l=i;return G|0;}function kh(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;i=l;l=l+208|0;j=i+204|0;k=i+200|0;m=i+196|0;n=i+192|0;o=i+188|0;p=i+184|0;q=i+180|0;r=i+176|0;s=i+172|0;t=i+168|0;u=i+164|0;v=i+144|0;w=i+136|0;x=i+128|0;y=i+120|0;z=i+116|0;A=i+112|0;B=i+108|0;C=i+104|0;D=i+100|0;E=i+96|0;F=i+92|0;G=i+88|0;H=i+84|0;I=i+80|0;J=i+76|0;K=i+56|0;L=i+48|0;M=i+40|0;N=i+36|0;O=i+32|0;P=i+28|0;Q=i+24|0;R=i+20|0;S=i+16|0;T=i+12|0;U=i+8|0;V=i+4|0;W=i;c[P>>2]=b;c[Q>>2]=d;c[R>>2]=f;c[S>>2]=g;c[T>>2]=h;c[U>>2]=c[T>>2];c[V>>2]=c[U>>2];c[W>>2]=e[(c[V>>2]|0)+2>>1];V=c[P>>2]|0;P=c[Q>>2]|0;Q=c[R>>2]|0;R=c[S>>2]|0;S=c[T>>2]|0;if(c[W>>2]|0){c[A>>2]=V;c[B>>2]=P;c[C>>2]=Q;c[D>>2]=R;c[E>>2]=S;c[F>>2]=1;c[G>>2]=c[A>>2];c[H>>2]=c[G>>2];c[I>>2]=(c[H>>2]|0)+(c[B>>2]|0);c[J>>2]=(c[I>>2]|0)+-3;c[N>>2]=lh(K,c[C>>2]|0,c[D>>2]|0)|0;do{if(ih(c[N>>2]|0)|0)c[z>>2]=c[N>>2];else{mh(L,K,c[E>>2]|0);mh(M,K,c[E>>2]|0);while(1){D=(nh(K)|0)==0&1;if(!(D&(c[H>>2]|0)>>>0<(c[J>>2]|0)>>>0))break;if(c[F>>2]|0)X=(oh(L,K)|0)&255;else X=(ph(L,K)|0)&255;a[c[H>>2]>>0]=X;if(c[F>>2]|0)Y=(oh(M,K)|0)&255;else Y=(ph(M,K)|0)&255;a[(c[H>>2]|0)+1>>0]=Y;if((nh(K)|0)>>>0>0){Z=13;break;}if(c[F>>2]|0)_=(oh(L,K)|0)&255;else _=(ph(L,K)|0)&255;a[(c[H>>2]|0)+2>>0]=_;if(c[F>>2]|0)$=(oh(M,K)|0)&255;else $=(ph(M,K)|0)&255;a[(c[H>>2]|0)+3>>0]=$;c[H>>2]=(c[H>>2]|0)+4;}if((Z|0)==13)c[H>>2]=(c[H>>2]|0)+2;while(1){if((c[H>>2]|0)>>>0>((c[I>>2]|0)+-2|0)>>>0){Z=23;break;}if(c[F>>2]|0)aa=(oh(L,K)|0)&255;else aa=(ph(L,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=aa;if((nh(K)|0)==3){Z=28;break;}if((c[H>>2]|0)>>>0>((c[I>>2]|0)+-2|0)>>>0){Z=33;break;}if(c[F>>2]|0)ba=(oh(M,K)|0)&255;else ba=(ph(M,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=ba;if((nh(K)|0)==3){Z=38;break;}}if((Z|0)==23){c[z>>2]=-70;break;}else if((Z|0)==28){if(c[F>>2]|0)ca=(oh(M,K)|0)&255;else ca=(ph(M,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=ca;}else if((Z|0)==33){c[z>>2]=-70;break;}else if((Z|0)==38){if(c[F>>2]|0)da=(oh(L,K)|0)&255;else da=(ph(L,K)|0)&255;D=c[H>>2]|0;c[H>>2]=D+1;a[D>>0]=da;}c[z>>2]=(c[H>>2]|0)-(c[G>>2]|0);}}while(0);c[O>>2]=c[z>>2];ea=c[O>>2]|0;l=i;return ea|0;}else{c[k>>2]=V;c[m>>2]=P;c[n>>2]=Q;c[o>>2]=R;c[p>>2]=S;c[q>>2]=0;c[r>>2]=c[k>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[s>>2]|0)+(c[m>>2]|0);c[u>>2]=(c[t>>2]|0)+-3;c[y>>2]=lh(v,c[n>>2]|0,c[o>>2]|0)|0;do{if(ih(c[y>>2]|0)|0)c[j>>2]=c[y>>2];else{mh(w,v,c[p>>2]|0);mh(x,v,c[p>>2]|0);while(1){o=(nh(v)|0)==0&1;if(!(o&(c[s>>2]|0)>>>0<(c[u>>2]|0)>>>0))break;if(c[q>>2]|0)fa=(oh(w,v)|0)&255;else fa=(ph(w,v)|0)&255;a[c[s>>2]>>0]=fa;if(c[q>>2]|0)ga=(oh(x,v)|0)&255;else ga=(ph(x,v)|0)&255;a[(c[s>>2]|0)+1>>0]=ga;if((nh(v)|0)>>>0>0){Z=56;break;}if(c[q>>2]|0)ha=(oh(w,v)|0)&255;else ha=(ph(w,v)|0)&255;a[(c[s>>2]|0)+2>>0]=ha;if(c[q>>2]|0)ia=(oh(x,v)|0)&255;else ia=(ph(x,v)|0)&255;a[(c[s>>2]|0)+3>>0]=ia;c[s>>2]=(c[s>>2]|0)+4;}if((Z|0)==56)c[s>>2]=(c[s>>2]|0)+2;while(1){if((c[s>>2]|0)>>>0>((c[t>>2]|0)+-2|0)>>>0){Z=66;break;}if(c[q>>2]|0)ja=(oh(w,v)|0)&255;else ja=(ph(w,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ja;if((nh(v)|0)==3){Z=71;break;}if((c[s>>2]|0)>>>0>((c[t>>2]|0)+-2|0)>>>0){Z=76;break;}if(c[q>>2]|0)ka=(oh(x,v)|0)&255;else ka=(ph(x,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ka;if((nh(v)|0)==3){Z=81;break;}}if((Z|0)==66){c[j>>2]=-70;break;}else if((Z|0)==71){if(c[q>>2]|0)la=(oh(x,v)|0)&255;else la=(ph(x,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=la;}else if((Z|0)==76){c[j>>2]=-70;break;}else if((Z|0)==81){if(c[q>>2]|0)ma=(oh(w,v)|0)&255;else ma=(ph(w,v)|0)&255;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=ma;}c[j>>2]=(c[s>>2]|0)-(c[r>>2]|0);}}while(0);c[O>>2]=c[j>>2];ea=c[O>>2]|0;l=i;return ea|0;}return 0;}function lh(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+12|0;i=g+8|0;j=g+4|0;k=g;m=g+17|0;n=g+16|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;if((c[k>>2]|0)>>>0<1){f=c[i>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[h>>2]=-72;o=c[h>>2]|0;l=g;return o|0;}c[(c[i>>2]|0)+12>>2]=c[j>>2];c[(c[i>>2]|0)+16>>2]=(c[(c[i>>2]|0)+12>>2]|0)+4;do{if((c[k>>2]|0)>>>0>=4){c[(c[i>>2]|0)+8>>2]=(c[j>>2]|0)+(c[k>>2]|0)+-4;f=vh(c[(c[i>>2]|0)+8>>2]|0)|0;c[c[i>>2]>>2]=f;a[m>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[m>>0]|0|0)p=8-(Eh(d[m>>0]|0)|0)|0;else p=0;c[(c[i>>2]|0)+4>>2]=p;if(!(d[m>>0]|0)){c[h>>2]=-1;o=c[h>>2]|0;l=g;return o|0;}}else{c[(c[i>>2]|0)+8>>2]=c[(c[i>>2]|0)+12>>2];c[c[i>>2]>>2]=d[c[(c[i>>2]|0)+12>>2]>>0];switch(c[k>>2]|0){case 7:{f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+6>>0]|0)<<16);q=10;break;}case 6:{q=10;break;}case 5:{q=11;break;}case 4:{q=12;break;}case 3:{q=13;break;}case 2:{q=14;break;}default:{}}if((q|0)==10){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+5>>0]|0)<<8);q=11;}if((q|0)==11){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+4>>0]|0)<<0);q=12;}if((q|0)==12){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+3>>0]|0)<<24);q=13;}if((q|0)==13){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+2>>0]|0)<<16);q=14;}if((q|0)==14){f=c[i>>2]|0;c[f>>2]=(c[f>>2]|0)+((d[(c[j>>2]|0)+1>>0]|0)<<8);}a[n>>0]=a[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0;if(d[n>>0]|0|0)r=8-(Eh(d[n>>0]|0)|0)|0;else r=0;c[(c[i>>2]|0)+4>>2]=r;if(d[n>>0]|0|0){f=(c[i>>2]|0)+4|0;c[f>>2]=(c[f>>2]|0)+(4-(c[k>>2]|0)<<3);break;}c[h>>2]=-20;o=c[h>>2]|0;l=g;return o|0;}}while(0);c[h>>2]=c[k>>2];o=c[h>>2]|0;l=g;return o|0;}function mh(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=c[i>>2];c[k>>2]=c[j>>2];j=qh(c[h>>2]|0,e[c[k>>2]>>1]|0)|0;c[c[g>>2]>>2]=j;nh(c[h>>2]|0)|0;c[(c[g>>2]|0)+4>>2]=(c[i>>2]|0)+4;l=f;return;}function nh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if((c[(c[e>>2]|0)+4>>2]|0)>>>0>32){c[d>>2]=3;h=c[d>>2]|0;l=b;return h|0;}a=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){i=(c[e>>2]|0)+8|0;c[i>>2]=(c[i>>2]|0)+(0-((c[a+4>>2]|0)>>>3));i=(c[e>>2]|0)+4|0;c[i>>2]=c[i>>2]&7;i=vh(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=i;c[d>>2]=0;h=c[d>>2]|0;l=b;return h|0;}i=c[(c[e>>2]|0)+4>>2]|0;if((c[a+8>>2]|0)!=(c[(c[e>>2]|0)+12>>2]|0)){c[f>>2]=i>>>3;c[g>>2]=0;if(((c[(c[e>>2]|0)+8>>2]|0)+(0-(c[f>>2]|0))|0)>>>0<(c[(c[e>>2]|0)+12>>2]|0)>>>0){c[f>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0);c[g>>2]=1;}a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(0-(c[f>>2]|0));a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[f>>2]<<3);f=vh(c[(c[e>>2]|0)+8>>2]|0)|0;c[c[e>>2]>>2]=f;c[d>>2]=c[g>>2];h=c[d>>2]|0;l=b;return h|0;}if(i>>>0<32){c[d>>2]=1;h=c[d>>2]|0;l=b;return h|0;}else{c[d>>2]=2;h=c[d>>2]|0;l=b;return h|0;}return 0;}function oh(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=th(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function ph(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+12|0;j=h+8|0;k=h+16|0;m=h+4|0;n=h+20|0;o=h;c[i>>2]=f;c[j>>2]=g;g=(c[(c[i>>2]|0)+4>>2]|0)+(c[c[i>>2]>>2]<<2)|0;b[k>>1]=b[g>>1]|0;b[k+2>>1]=b[g+2>>1]|0;c[m>>2]=d[k+3>>0];a[n>>0]=a[k+2>>0]|0;c[o>>2]=qh(c[j>>2]|0,c[m>>2]|0)|0;c[c[i>>2]>>2]=(e[k>>1]|0)+(c[o>>2]|0);l=h;return a[n>>0]|0;}function qh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=rh(c[e>>2]|0,c[f>>2]|0)|0;sh(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function rh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>1>>>(31-(c[f>>2]|0)&31)|0;}function sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(c[e>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+(c[f>>2]|0);l=d;return;}function th(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=uh(c[e>>2]|0,c[f>>2]|0)|0;sh(c[e>>2]|0,c[f>>2]|0);l=d;return c[g>>2]|0;}function uh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=31;l=d;return c[c[e>>2]>>2]<<(c[(c[e>>2]|0)+4>>2]&31)>>>(32-(c[f>>2]|0)&31)|0;}function vh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(wh()|0)!=0;f=c[e>>2]|0;if(a){c[d>>2]=xh(f)|0;g=c[d>>2]|0;l=b;return g|0;}else{a=yh(f)|0;c[d>>2]=a;g=c[d>>2]|0;l=b;return g|0;}return 0;}function wh(){return 1;}function xh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(zh()|0)!=0;f=Ch(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=Dh(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function yh(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(zh()|0)!=0;f=Ah(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=Bh(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function zh(){return d[11936]|0|0;}function Ah(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function Bh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function Ch(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Dh(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function Eh(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function Fh(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;l=d;return c[f>>2]|0;}function Gh(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function Hh(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+8|0;f=d;c[e>>2]=b;b=c[e>>2]|0;a[f>>0]=a[b>>0]|0;a[f+1>>0]=a[b+1>>0]|0;a[f+2>>0]=a[b+2>>0]|0;a[f+3>>0]=a[b+3>>0]|0;a[f+4>>0]=a[b+4>>0]|0;a[f+5>>0]=a[b+5>>0]|0;a[f+6>>0]=a[b+6>>0]|0;a[f+7>>0]=a[b+7>>0]|0;b=f;y=c[b+4>>2]|0;l=d;return c[b>>2]|0;}function Ih(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function Jh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+16|0;g=f+8|0;h=f;i=g;c[i>>2]=a;c[i+4>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;e=h;h=cE(c[e>>2]|0,c[e+4>>2]|0,668265295,-1028477379)|0;e=g;b=dE(c[e>>2]|0,c[e+4>>2]|0,h|0,y|0)|0;h=g;c[h>>2]=b;c[h+4>>2]=y;h=g;b=jE(c[h>>2]|0,c[h+4>>2]|0,31)|0;h=y;e=g;d=iE(c[e>>2]|0,c[e+4>>2]|0,33)|0;e=g;c[e>>2]=b|d;c[e+4>>2]=h|y;h=g;e=cE(c[h>>2]|0,c[h+4>>2]|0,-2048144761,-1640531535)|0;h=g;c[h>>2]=e;c[h+4>>2]=y;h=g;y=c[h+4>>2]|0;l=f;return c[h>>2]|0;}function Kh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+16|0;g=f+8|0;h=f;i=g;c[i>>2]=a;c[i+4>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;e=h;b=Jh(0,0,c[e>>2]|0,c[e+4>>2]|0)|0;e=h;c[e>>2]=b;c[e+4>>2]=y;e=h;h=g;b=c[h+4>>2]^c[e+4>>2];d=g;c[d>>2]=c[h>>2]^c[e>>2];c[d+4>>2]=b;b=g;d=cE(c[b>>2]|0,c[b+4>>2]|0,-2048144761,-1640531535)|0;b=dE(d|0,y|0,-1028477341,-2048144777)|0;d=g;c[d>>2]=b;c[d+4>>2]=y;d=g;y=c[d+4>>2]|0;l=f;return c[d>>2]|0;}function Lh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+112|0;f=e+96|0;g=e+88|0;h=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;d=h;a=d+80|0;do{c[d>>2]=0;d=d+4|0;}while((d|0)<(a|0));b=g;i=dE(c[b>>2]|0,c[b+4>>2]|0,-2048144761,-1640531535)|0;b=dE(i|0,y|0,668265295,-1028477379)|0;i=h+8|0;c[i>>2]=b;c[i+4>>2]=y;i=g;b=dE(c[i>>2]|0,c[i+4>>2]|0,668265295,-1028477379)|0;i=h+16|0;c[i>>2]=b;c[i+4>>2]=y;i=g;b=dE(c[i>>2]|0,c[i+4>>2]|0,0,0)|0;i=h+24|0;c[i>>2]=b;c[i+4>>2]=y;i=g;g=eE(c[i>>2]|0,c[i+4>>2]|0,-2048144761,-1640531535)|0;i=h+32|0;c[i>>2]=g;c[i+4>>2]=y;d=c[f>>2]|0;f=h;a=d+88|0;do{c[d>>2]=c[f>>2];d=d+4|0;f=f+4|0;}while((d|0)<(a|0));l=e;return 0;}function Mh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=c[f>>2]|0;mE(d|0,c[g>>2]|0,c[h>>2]|0)|0;l=e;return d|0;}function Nh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0;f=l;l=l+608|0;g=f+184|0;h=f+592|0;i=f+588|0;j=f+584|0;k=f+580|0;m=f+576|0;n=f+176|0;o=f+572|0;p=f+568|0;q=f+564|0;r=f+560|0;s=f+556|0;t=f+168|0;u=f+552|0;v=f+548|0;w=f+544|0;x=f+540|0;z=f+536|0;A=f+160|0;B=f+532|0;C=f+528|0;D=f+524|0;E=f+520|0;F=f+516|0;G=f+152|0;H=f+512|0;I=f+508|0;J=f+504|0;K=f+500|0;L=f+496|0;M=f+144|0;N=f+492|0;O=f+488|0;P=f+484|0;Q=f+480|0;R=f+476|0;S=f+136|0;T=f+472|0;U=f+468|0;V=f+464|0;W=f+460|0;X=f+456|0;Y=f+128|0;Z=f+452|0;_=f+448|0;$=f+444|0;aa=f+440|0;ba=f+436|0;ca=f+432|0;da=f+428|0;ea=f+424|0;fa=f+420|0;ga=f+416|0;ha=f+412|0;ia=f+408|0;ja=f+404|0;ka=f+120|0;la=f+112|0;ma=f+104|0;na=f+96|0;oa=f+88|0;pa=f+400|0;qa=f+396|0;ra=f+392|0;sa=f+388|0;ta=f+384|0;ua=f+80|0;va=f+380|0;wa=f+376|0;xa=f+372|0;ya=f+368|0;za=f+364|0;Aa=f+72|0;Ba=f+360|0;Ca=f+356|0;Da=f+352|0;Ea=f+348|0;Fa=f+344|0;Ga=f+64|0;Ha=f+340|0;Ia=f+336|0;Ja=f+332|0;Ka=f+328|0;La=f+324|0;Ma=f+56|0;Na=f+320|0;Oa=f+316|0;Pa=f+312|0;Qa=f+308|0;Ra=f+304|0;Sa=f+48|0;Ta=f+300|0;Ua=f+296|0;Va=f+292|0;Wa=f+288|0;Xa=f+284|0;Ya=f+40|0;Za=f+280|0;_a=f+276|0;$a=f+272|0;ab=f+268|0;bb=f+264|0;cb=f+32|0;db=f+260|0;eb=f+256|0;fb=f+252|0;gb=f+248|0;hb=f+244|0;ib=f+240|0;jb=f+236|0;kb=f+232|0;lb=f+228|0;mb=f+224|0;nb=f+220|0;ob=f+216|0;pb=f+212|0;qb=f+24|0;rb=f+16|0;sb=f+8|0;tb=f;ub=f+208|0;vb=f+204|0;wb=f+200|0;xb=f+196|0;yb=f+192|0;c[vb>>2]=b;c[wb>>2]=d;c[xb>>2]=e;c[yb>>2]=a[11920];e=c[vb>>2]|0;vb=c[wb>>2]|0;wb=c[xb>>2]|0;if((c[yb>>2]|0)==1){c[jb>>2]=e;c[kb>>2]=vb;c[lb>>2]=wb;c[mb>>2]=1;c[nb>>2]=c[kb>>2];c[ob>>2]=(c[nb>>2]|0)+(c[lb>>2]|0);yb=c[jb>>2]|0;xb=yb;d=dE(c[xb>>2]|0,c[xb+4>>2]|0,c[lb>>2]|0,0)|0;xb=yb;c[xb>>2]=d;c[xb+4>>2]=y;xb=c[jb>>2]|0;if(((c[(c[jb>>2]|0)+72>>2]|0)+(c[lb>>2]|0)|0)>>>0<32){Mh(xb+40+(c[(c[jb>>2]|0)+72>>2]|0)|0,c[kb>>2]|0,c[lb>>2]|0)|0;d=(c[jb>>2]|0)+72|0;c[d>>2]=(c[d>>2]|0)+(c[lb>>2]|0);c[ib>>2]=0;}else{if(c[xb+72>>2]|0){Mh((c[jb>>2]|0)+40+(c[(c[jb>>2]|0)+72>>2]|0)|0,c[kb>>2]|0,32-(c[(c[jb>>2]|0)+72>>2]|0)|0)|0;kb=(c[jb>>2]|0)+8|0;xb=c[kb>>2]|0;lb=c[kb+4>>2]|0;kb=c[mb>>2]|0;c[gb>>2]=(c[jb>>2]|0)+40;c[hb>>2]=kb;kb=c[hb>>2]|0;c[db>>2]=c[gb>>2];c[eb>>2]=kb;c[fb>>2]=1;kb=(c[eb>>2]|0)==1;eb=c[db>>2]|0;if((c[fb>>2]|0)==1){fb=Hh(eb)|0;db=y;if(kb){zb=fb;Ab=db;}else{gb=Ih(fb,db)|0;zb=gb;Ab=y;}gb=cb;c[gb>>2]=zb;c[gb+4>>2]=Ab;}else{Ab=eb;eb=c[Ab>>2]|0;gb=c[Ab+4>>2]|0;if(kb){Bb=eb;Cb=gb;}else{kb=Ih(eb,gb)|0;Bb=kb;Cb=y;}kb=cb;c[kb>>2]=Bb;c[kb+4>>2]=Cb;}Cb=cb;cb=Jh(xb,lb,c[Cb>>2]|0,c[Cb+4>>2]|0)|0;Cb=(c[jb>>2]|0)+8|0;c[Cb>>2]=cb;c[Cb+4>>2]=y;Cb=(c[jb>>2]|0)+16|0;cb=c[Cb>>2]|0;lb=c[Cb+4>>2]|0;Cb=c[mb>>2]|0;c[ab>>2]=(c[jb>>2]|0)+40+8;c[bb>>2]=Cb;Cb=c[bb>>2]|0;c[Za>>2]=c[ab>>2];c[_a>>2]=Cb;c[$a>>2]=1;Cb=(c[_a>>2]|0)==1;_a=c[Za>>2]|0;if((c[$a>>2]|0)==1){$a=Hh(_a)|0;Za=y;if(Cb){Db=$a;Eb=Za;}else{ab=Ih($a,Za)|0;Db=ab;Eb=y;}ab=Ya;c[ab>>2]=Db;c[ab+4>>2]=Eb;}else{Eb=_a;_a=c[Eb>>2]|0;ab=c[Eb+4>>2]|0;if(Cb){Fb=_a;Gb=ab;}else{Cb=Ih(_a,ab)|0;Fb=Cb;Gb=y;}Cb=Ya;c[Cb>>2]=Fb;c[Cb+4>>2]=Gb;}Gb=Ya;Ya=Jh(cb,lb,c[Gb>>2]|0,c[Gb+4>>2]|0)|0;Gb=(c[jb>>2]|0)+16|0;c[Gb>>2]=Ya;c[Gb+4>>2]=y;Gb=(c[jb>>2]|0)+24|0;Ya=c[Gb>>2]|0;lb=c[Gb+4>>2]|0;Gb=c[mb>>2]|0;c[Wa>>2]=(c[jb>>2]|0)+40+16;c[Xa>>2]=Gb;Gb=c[Xa>>2]|0;c[Ta>>2]=c[Wa>>2];c[Ua>>2]=Gb;c[Va>>2]=1;Gb=(c[Ua>>2]|0)==1;Ua=c[Ta>>2]|0;if((c[Va>>2]|0)==1){Va=Hh(Ua)|0;Ta=y;if(Gb){Hb=Va;Ib=Ta;}else{Wa=Ih(Va,Ta)|0;Hb=Wa;Ib=y;}Wa=Sa;c[Wa>>2]=Hb;c[Wa+4>>2]=Ib;}else{Ib=Ua;Ua=c[Ib>>2]|0;Wa=c[Ib+4>>2]|0;if(Gb){Jb=Ua;Kb=Wa;}else{Gb=Ih(Ua,Wa)|0;Jb=Gb;Kb=y;}Gb=Sa;c[Gb>>2]=Jb;c[Gb+4>>2]=Kb;}Kb=Sa;Sa=Jh(Ya,lb,c[Kb>>2]|0,c[Kb+4>>2]|0)|0;Kb=(c[jb>>2]|0)+24|0;c[Kb>>2]=Sa;c[Kb+4>>2]=y;Kb=(c[jb>>2]|0)+32|0;Sa=c[Kb>>2]|0;lb=c[Kb+4>>2]|0;Kb=c[mb>>2]|0;c[Qa>>2]=(c[jb>>2]|0)+40+24;c[Ra>>2]=Kb;Kb=c[Ra>>2]|0;c[Na>>2]=c[Qa>>2];c[Oa>>2]=Kb;c[Pa>>2]=1;Kb=(c[Oa>>2]|0)==1;Oa=c[Na>>2]|0;if((c[Pa>>2]|0)==1){Pa=Hh(Oa)|0;Na=y;if(Kb){Lb=Pa;Mb=Na;}else{Qa=Ih(Pa,Na)|0;Lb=Qa;Mb=y;}Qa=Ma;c[Qa>>2]=Lb;c[Qa+4>>2]=Mb;}else{Mb=Oa;Oa=c[Mb>>2]|0;Qa=c[Mb+4>>2]|0;if(Kb){Nb=Oa;Ob=Qa;}else{Kb=Ih(Oa,Qa)|0;Nb=Kb;Ob=y;}Kb=Ma;c[Kb>>2]=Nb;c[Kb+4>>2]=Ob;}Ob=Ma;Ma=Jh(Sa,lb,c[Ob>>2]|0,c[Ob+4>>2]|0)|0;Ob=(c[jb>>2]|0)+32|0;c[Ob>>2]=Ma;c[Ob+4>>2]=y;c[nb>>2]=(c[nb>>2]|0)+(32-(c[(c[jb>>2]|0)+72>>2]|0));c[(c[jb>>2]|0)+72>>2]=0;}if(((c[nb>>2]|0)+32|0)>>>0<=(c[ob>>2]|0)>>>0){c[pb>>2]=(c[ob>>2]|0)+-32;Ob=(c[jb>>2]|0)+8|0;Ma=c[Ob+4>>2]|0;lb=qb;c[lb>>2]=c[Ob>>2];c[lb+4>>2]=Ma;Ma=(c[jb>>2]|0)+16|0;lb=c[Ma+4>>2]|0;Ob=rb;c[Ob>>2]=c[Ma>>2];c[Ob+4>>2]=lb;lb=(c[jb>>2]|0)+24|0;Ob=c[lb+4>>2]|0;Ma=sb;c[Ma>>2]=c[lb>>2];c[Ma+4>>2]=Ob;Ob=(c[jb>>2]|0)+32|0;Ma=c[Ob+4>>2]|0;lb=tb;c[lb>>2]=c[Ob>>2];c[lb+4>>2]=Ma;do{Ma=qb;lb=c[Ma>>2]|0;Ob=c[Ma+4>>2]|0;Ma=c[mb>>2]|0;c[Ka>>2]=c[nb>>2];c[La>>2]=Ma;Ma=c[La>>2]|0;c[Ha>>2]=c[Ka>>2];c[Ia>>2]=Ma;c[Ja>>2]=1;Ma=(c[Ia>>2]|0)==1;Sa=c[Ha>>2]|0;if((c[Ja>>2]|0)==1){Kb=Hh(Sa)|0;Nb=y;if(Ma){Pb=Kb;Qb=Nb;}else{Qa=Ih(Kb,Nb)|0;Pb=Qa;Qb=y;}Qa=Ga;c[Qa>>2]=Pb;c[Qa+4>>2]=Qb;}else{Qa=Sa;Sa=c[Qa>>2]|0;Nb=c[Qa+4>>2]|0;if(Ma){Rb=Sa;Sb=Nb;}else{Ma=Ih(Sa,Nb)|0;Rb=Ma;Sb=y;}Ma=Ga;c[Ma>>2]=Rb;c[Ma+4>>2]=Sb;}Ma=Ga;Nb=Jh(lb,Ob,c[Ma>>2]|0,c[Ma+4>>2]|0)|0;Ma=qb;c[Ma>>2]=Nb;c[Ma+4>>2]=y;c[nb>>2]=(c[nb>>2]|0)+8;Ma=rb;Nb=c[Ma>>2]|0;Ob=c[Ma+4>>2]|0;Ma=c[mb>>2]|0;c[Ea>>2]=c[nb>>2];c[Fa>>2]=Ma;Ma=c[Fa>>2]|0;c[Ba>>2]=c[Ea>>2];c[Ca>>2]=Ma;c[Da>>2]=1;Ma=(c[Ca>>2]|0)==1;lb=c[Ba>>2]|0;if((c[Da>>2]|0)==1){Sa=Hh(lb)|0;Qa=y;if(Ma){Tb=Sa;Ub=Qa;}else{Kb=Ih(Sa,Qa)|0;Tb=Kb;Ub=y;}Kb=Aa;c[Kb>>2]=Tb;c[Kb+4>>2]=Ub;}else{Kb=lb;lb=c[Kb>>2]|0;Qa=c[Kb+4>>2]|0;if(Ma){Vb=lb;Wb=Qa;}else{Ma=Ih(lb,Qa)|0;Vb=Ma;Wb=y;}Ma=Aa;c[Ma>>2]=Vb;c[Ma+4>>2]=Wb;}Ma=Aa;Qa=Jh(Nb,Ob,c[Ma>>2]|0,c[Ma+4>>2]|0)|0;Ma=rb;c[Ma>>2]=Qa;c[Ma+4>>2]=y;c[nb>>2]=(c[nb>>2]|0)+8;Ma=sb;Qa=c[Ma>>2]|0;Ob=c[Ma+4>>2]|0;Ma=c[mb>>2]|0;c[ya>>2]=c[nb>>2];c[za>>2]=Ma;Ma=c[za>>2]|0;c[va>>2]=c[ya>>2];c[wa>>2]=Ma;c[xa>>2]=1;Ma=(c[wa>>2]|0)==1;Nb=c[va>>2]|0;if((c[xa>>2]|0)==1){lb=Hh(Nb)|0;Kb=y;if(Ma){Xb=lb;Yb=Kb;}else{Sa=Ih(lb,Kb)|0;Xb=Sa;Yb=y;}Sa=ua;c[Sa>>2]=Xb;c[Sa+4>>2]=Yb;}else{Sa=Nb;Nb=c[Sa>>2]|0;Kb=c[Sa+4>>2]|0;if(Ma){Zb=Nb;_b=Kb;}else{Ma=Ih(Nb,Kb)|0;Zb=Ma;_b=y;}Ma=ua;c[Ma>>2]=Zb;c[Ma+4>>2]=_b;}Ma=ua;Kb=Jh(Qa,Ob,c[Ma>>2]|0,c[Ma+4>>2]|0)|0;Ma=sb;c[Ma>>2]=Kb;c[Ma+4>>2]=y;c[nb>>2]=(c[nb>>2]|0)+8;Ma=tb;Kb=c[Ma>>2]|0;Ob=c[Ma+4>>2]|0;Ma=c[mb>>2]|0;c[sa>>2]=c[nb>>2];c[ta>>2]=Ma;Ma=c[ta>>2]|0;c[pa>>2]=c[sa>>2];c[qa>>2]=Ma;c[ra>>2]=1;Ma=(c[qa>>2]|0)==1;Qa=c[pa>>2]|0;if((c[ra>>2]|0)==1){Nb=Hh(Qa)|0;Sa=y;if(Ma){$b=Nb;ac=Sa;}else{lb=Ih(Nb,Sa)|0;$b=lb;ac=y;}lb=oa;c[lb>>2]=$b;c[lb+4>>2]=ac;}else{lb=Qa;Qa=c[lb>>2]|0;Sa=c[lb+4>>2]|0;if(Ma){bc=Qa;cc=Sa;}else{Ma=Ih(Qa,Sa)|0;bc=Ma;cc=y;}Ma=oa;c[Ma>>2]=bc;c[Ma+4>>2]=cc;}Ma=oa;Sa=Jh(Kb,Ob,c[Ma>>2]|0,c[Ma+4>>2]|0)|0;Ma=tb;c[Ma>>2]=Sa;c[Ma+4>>2]=y;c[nb>>2]=(c[nb>>2]|0)+8;}while((c[nb>>2]|0)>>>0<=(c[pb>>2]|0)>>>0);pb=qb;qb=c[pb+4>>2]|0;oa=(c[jb>>2]|0)+8|0;c[oa>>2]=c[pb>>2];c[oa+4>>2]=qb;qb=rb;rb=c[qb+4>>2]|0;oa=(c[jb>>2]|0)+16|0;c[oa>>2]=c[qb>>2];c[oa+4>>2]=rb;rb=sb;sb=c[rb+4>>2]|0;oa=(c[jb>>2]|0)+24|0;c[oa>>2]=c[rb>>2];c[oa+4>>2]=sb;sb=tb;tb=c[sb+4>>2]|0;oa=(c[jb>>2]|0)+32|0;c[oa>>2]=c[sb>>2];c[oa+4>>2]=tb;}if((c[nb>>2]|0)>>>0<(c[ob>>2]|0)>>>0){Mh((c[jb>>2]|0)+40|0,c[nb>>2]|0,(c[ob>>2]|0)-(c[nb>>2]|0)|0)|0;c[(c[jb>>2]|0)+72>>2]=(c[ob>>2]|0)-(c[nb>>2]|0);}c[ib>>2]=0;}c[ub>>2]=c[ib>>2];dc=c[ub>>2]|0;l=f;return dc|0;}else{c[da>>2]=e;c[ea>>2]=vb;c[fa>>2]=wb;c[ga>>2]=0;c[ha>>2]=c[ea>>2];c[ia>>2]=(c[ha>>2]|0)+(c[fa>>2]|0);wb=c[da>>2]|0;vb=wb;e=dE(c[vb>>2]|0,c[vb+4>>2]|0,c[fa>>2]|0,0)|0;vb=wb;c[vb>>2]=e;c[vb+4>>2]=y;vb=c[da>>2]|0;if(((c[(c[da>>2]|0)+72>>2]|0)+(c[fa>>2]|0)|0)>>>0<32){Mh(vb+40+(c[(c[da>>2]|0)+72>>2]|0)|0,c[ea>>2]|0,c[fa>>2]|0)|0;e=(c[da>>2]|0)+72|0;c[e>>2]=(c[e>>2]|0)+(c[fa>>2]|0);c[ca>>2]=0;}else{if(c[vb+72>>2]|0){Mh((c[da>>2]|0)+40+(c[(c[da>>2]|0)+72>>2]|0)|0,c[ea>>2]|0,32-(c[(c[da>>2]|0)+72>>2]|0)|0)|0;ea=(c[da>>2]|0)+8|0;vb=c[ea>>2]|0;fa=c[ea+4>>2]|0;ea=c[ga>>2]|0;c[aa>>2]=(c[da>>2]|0)+40;c[ba>>2]=ea;ea=c[ba>>2]|0;c[Z>>2]=c[aa>>2];c[_>>2]=ea;c[$>>2]=1;ea=(c[_>>2]|0)==1;_=c[Z>>2]|0;if((c[$>>2]|0)==1){$=Hh(_)|0;Z=y;if(ea){ec=$;fc=Z;}else{aa=Ih($,Z)|0;ec=aa;fc=y;}aa=Y;c[aa>>2]=ec;c[aa+4>>2]=fc;}else{fc=_;_=c[fc>>2]|0;aa=c[fc+4>>2]|0;if(ea){gc=_;hc=aa;}else{ea=Ih(_,aa)|0;gc=ea;hc=y;}ea=Y;c[ea>>2]=gc;c[ea+4>>2]=hc;}hc=Y;Y=Jh(vb,fa,c[hc>>2]|0,c[hc+4>>2]|0)|0;hc=(c[da>>2]|0)+8|0;c[hc>>2]=Y;c[hc+4>>2]=y;hc=(c[da>>2]|0)+16|0;Y=c[hc>>2]|0;fa=c[hc+4>>2]|0;hc=c[ga>>2]|0;c[W>>2]=(c[da>>2]|0)+40+8;c[X>>2]=hc;hc=c[X>>2]|0;c[T>>2]=c[W>>2];c[U>>2]=hc;c[V>>2]=1;hc=(c[U>>2]|0)==1;U=c[T>>2]|0;if((c[V>>2]|0)==1){V=Hh(U)|0;T=y;if(hc){ic=V;jc=T;}else{W=Ih(V,T)|0;ic=W;jc=y;}W=S;c[W>>2]=ic;c[W+4>>2]=jc;}else{jc=U;U=c[jc>>2]|0;W=c[jc+4>>2]|0;if(hc){kc=U;lc=W;}else{hc=Ih(U,W)|0;kc=hc;lc=y;}hc=S;c[hc>>2]=kc;c[hc+4>>2]=lc;}lc=S;S=Jh(Y,fa,c[lc>>2]|0,c[lc+4>>2]|0)|0;lc=(c[da>>2]|0)+16|0;c[lc>>2]=S;c[lc+4>>2]=y;lc=(c[da>>2]|0)+24|0;S=c[lc>>2]|0;fa=c[lc+4>>2]|0;lc=c[ga>>2]|0;c[Q>>2]=(c[da>>2]|0)+40+16;c[R>>2]=lc;lc=c[R>>2]|0;c[N>>2]=c[Q>>2];c[O>>2]=lc;c[P>>2]=1;lc=(c[O>>2]|0)==1;O=c[N>>2]|0;if((c[P>>2]|0)==1){P=Hh(O)|0;N=y;if(lc){mc=P;nc=N;}else{Q=Ih(P,N)|0;mc=Q;nc=y;}Q=M;c[Q>>2]=mc;c[Q+4>>2]=nc;}else{nc=O;O=c[nc>>2]|0;Q=c[nc+4>>2]|0;if(lc){oc=O;pc=Q;}else{lc=Ih(O,Q)|0;oc=lc;pc=y;}lc=M;c[lc>>2]=oc;c[lc+4>>2]=pc;}pc=M;M=Jh(S,fa,c[pc>>2]|0,c[pc+4>>2]|0)|0;pc=(c[da>>2]|0)+24|0;c[pc>>2]=M;c[pc+4>>2]=y;pc=(c[da>>2]|0)+32|0;M=c[pc>>2]|0;fa=c[pc+4>>2]|0;pc=c[ga>>2]|0;c[K>>2]=(c[da>>2]|0)+40+24;c[L>>2]=pc;pc=c[L>>2]|0;c[H>>2]=c[K>>2];c[I>>2]=pc;c[J>>2]=1;pc=(c[I>>2]|0)==1;I=c[H>>2]|0;if((c[J>>2]|0)==1){J=Hh(I)|0;H=y;if(pc){qc=J;rc=H;}else{K=Ih(J,H)|0;qc=K;rc=y;}K=G;c[K>>2]=qc;c[K+4>>2]=rc;}else{rc=I;I=c[rc>>2]|0;K=c[rc+4>>2]|0;if(pc){sc=I;tc=K;}else{pc=Ih(I,K)|0;sc=pc;tc=y;}pc=G;c[pc>>2]=sc;c[pc+4>>2]=tc;}tc=G;G=Jh(M,fa,c[tc>>2]|0,c[tc+4>>2]|0)|0;tc=(c[da>>2]|0)+32|0;c[tc>>2]=G;c[tc+4>>2]=y;c[ha>>2]=(c[ha>>2]|0)+(32-(c[(c[da>>2]|0)+72>>2]|0));c[(c[da>>2]|0)+72>>2]=0;}if(((c[ha>>2]|0)+32|0)>>>0<=(c[ia>>2]|0)>>>0){c[ja>>2]=(c[ia>>2]|0)+-32;tc=(c[da>>2]|0)+8|0;G=c[tc+4>>2]|0;fa=ka;c[fa>>2]=c[tc>>2];c[fa+4>>2]=G;G=(c[da>>2]|0)+16|0;fa=c[G+4>>2]|0;tc=la;c[tc>>2]=c[G>>2];c[tc+4>>2]=fa;fa=(c[da>>2]|0)+24|0;tc=c[fa+4>>2]|0;G=ma;c[G>>2]=c[fa>>2];c[G+4>>2]=tc;tc=(c[da>>2]|0)+32|0;G=c[tc+4>>2]|0;fa=na;c[fa>>2]=c[tc>>2];c[fa+4>>2]=G;do{G=ka;fa=c[G>>2]|0;tc=c[G+4>>2]|0;G=c[ga>>2]|0;c[E>>2]=c[ha>>2];c[F>>2]=G;G=c[F>>2]|0;c[B>>2]=c[E>>2];c[C>>2]=G;c[D>>2]=1;G=(c[C>>2]|0)==1;M=c[B>>2]|0;if((c[D>>2]|0)==1){pc=Hh(M)|0;sc=y;if(G){uc=pc;vc=sc;}else{K=Ih(pc,sc)|0;uc=K;vc=y;}K=A;c[K>>2]=uc;c[K+4>>2]=vc;}else{K=M;M=c[K>>2]|0;sc=c[K+4>>2]|0;if(G){wc=M;xc=sc;}else{G=Ih(M,sc)|0;wc=G;xc=y;}G=A;c[G>>2]=wc;c[G+4>>2]=xc;}G=A;sc=Jh(fa,tc,c[G>>2]|0,c[G+4>>2]|0)|0;G=ka;c[G>>2]=sc;c[G+4>>2]=y;c[ha>>2]=(c[ha>>2]|0)+8;G=la;sc=c[G>>2]|0;tc=c[G+4>>2]|0;G=c[ga>>2]|0;c[x>>2]=c[ha>>2];c[z>>2]=G;G=c[z>>2]|0;c[u>>2]=c[x>>2];c[v>>2]=G;c[w>>2]=1;G=(c[v>>2]|0)==1;fa=c[u>>2]|0;if((c[w>>2]|0)==1){M=Hh(fa)|0;K=y;if(G){yc=M;zc=K;}else{pc=Ih(M,K)|0;yc=pc;zc=y;}pc=t;c[pc>>2]=yc;c[pc+4>>2]=zc;}else{pc=fa;fa=c[pc>>2]|0;K=c[pc+4>>2]|0;if(G){Ac=fa;Bc=K;}else{G=Ih(fa,K)|0;Ac=G;Bc=y;}G=t;c[G>>2]=Ac;c[G+4>>2]=Bc;}G=t;K=Jh(sc,tc,c[G>>2]|0,c[G+4>>2]|0)|0;G=la;c[G>>2]=K;c[G+4>>2]=y;c[ha>>2]=(c[ha>>2]|0)+8;G=ma;K=c[G>>2]|0;tc=c[G+4>>2]|0;G=c[ga>>2]|0;c[r>>2]=c[ha>>2];c[s>>2]=G;G=c[s>>2]|0;c[o>>2]=c[r>>2];c[p>>2]=G;c[q>>2]=1;G=(c[p>>2]|0)==1;sc=c[o>>2]|0;if((c[q>>2]|0)==1){fa=Hh(sc)|0;pc=y;if(G){Cc=fa;Dc=pc;}else{M=Ih(fa,pc)|0;Cc=M;Dc=y;}M=n;c[M>>2]=Cc;c[M+4>>2]=Dc;}else{M=sc;sc=c[M>>2]|0;pc=c[M+4>>2]|0;if(G){Ec=sc;Fc=pc;}else{G=Ih(sc,pc)|0;Ec=G;Fc=y;}G=n;c[G>>2]=Ec;c[G+4>>2]=Fc;}G=n;pc=Jh(K,tc,c[G>>2]|0,c[G+4>>2]|0)|0;G=ma;c[G>>2]=pc;c[G+4>>2]=y;c[ha>>2]=(c[ha>>2]|0)+8;G=na;pc=c[G>>2]|0;tc=c[G+4>>2]|0;G=c[ga>>2]|0;c[k>>2]=c[ha>>2];c[m>>2]=G;G=c[m>>2]|0;c[h>>2]=c[k>>2];c[i>>2]=G;c[j>>2]=1;G=(c[i>>2]|0)==1;K=c[h>>2]|0;if((c[j>>2]|0)==1){sc=Hh(K)|0;M=y;if(G){Gc=sc;Hc=M;}else{fa=Ih(sc,M)|0;Gc=fa;Hc=y;}fa=g;c[fa>>2]=Gc;c[fa+4>>2]=Hc;}else{fa=K;K=c[fa>>2]|0;M=c[fa+4>>2]|0;if(G){Ic=K;Jc=M;}else{G=Ih(K,M)|0;Ic=G;Jc=y;}G=g;c[G>>2]=Ic;c[G+4>>2]=Jc;}G=g;M=Jh(pc,tc,c[G>>2]|0,c[G+4>>2]|0)|0;G=na;c[G>>2]=M;c[G+4>>2]=y;c[ha>>2]=(c[ha>>2]|0)+8;}while((c[ha>>2]|0)>>>0<=(c[ja>>2]|0)>>>0);ja=ka;ka=c[ja+4>>2]|0;g=(c[da>>2]|0)+8|0;c[g>>2]=c[ja>>2];c[g+4>>2]=ka;ka=la;la=c[ka+4>>2]|0;g=(c[da>>2]|0)+16|0;c[g>>2]=c[ka>>2];c[g+4>>2]=la;la=ma;ma=c[la+4>>2]|0;g=(c[da>>2]|0)+24|0;c[g>>2]=c[la>>2];c[g+4>>2]=ma;ma=na;na=c[ma+4>>2]|0;g=(c[da>>2]|0)+32|0;c[g>>2]=c[ma>>2];c[g+4>>2]=na;}if((c[ha>>2]|0)>>>0<(c[ia>>2]|0)>>>0){Mh((c[da>>2]|0)+40|0,c[ha>>2]|0,(c[ia>>2]|0)-(c[ha>>2]|0)|0)|0;c[(c[da>>2]|0)+72>>2]=(c[ia>>2]|0)-(c[ha>>2]|0);}c[ca>>2]=0;}c[ub>>2]=c[ca>>2];dc=c[ub>>2]|0;l=f;return dc|0;}return 0;}function Oh(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0;e=l;l=l+256|0;f=e+244|0;g=e+240|0;h=e+236|0;i=e+232|0;j=e+228|0;k=e+224|0;m=e+112|0;n=e+220|0;o=e+216|0;p=e+212|0;q=e+208|0;r=e+204|0;s=e+200|0;t=e+196|0;u=e+192|0;v=e+188|0;w=e+104|0;x=e+96|0;z=e+88|0;A=e+80|0;B=e+72|0;C=e+64|0;D=e+184|0;E=e+180|0;F=e+176|0;G=e+172|0;H=e+168|0;I=e+164|0;J=e+56|0;K=e+160|0;L=e+156|0;M=e+152|0;N=e+148|0;O=e+144|0;P=e+140|0;Q=e+136|0;R=e+132|0;S=e+128|0;T=e+48|0;U=e+40|0;V=e+32|0;W=e+24|0;X=e+16|0;Y=e+8|0;Z=e;_=e+124|0;$=e+120|0;c[_>>2]=b;c[$>>2]=a[11920];b=c[_>>2]|0;if((c[$>>2]|0)==1){c[P>>2]=b;c[Q>>2]=1;c[R>>2]=(c[P>>2]|0)+40;c[S>>2]=(c[P>>2]|0)+40+(c[(c[P>>2]|0)+72>>2]|0);$=c[P>>2]|0;_=c[$+4>>2]|0;aa=c[P>>2]|0;if(_>>>0>0|(_|0)==0&(c[$>>2]|0)>>>0>=32){$=aa+8|0;_=c[$+4>>2]|0;ba=U;c[ba>>2]=c[$>>2];c[ba+4>>2]=_;_=(c[P>>2]|0)+16|0;ba=c[_+4>>2]|0;$=V;c[$>>2]=c[_>>2];c[$+4>>2]=ba;ba=(c[P>>2]|0)+24|0;$=c[ba+4>>2]|0;_=W;c[_>>2]=c[ba>>2];c[_+4>>2]=$;$=(c[P>>2]|0)+32|0;_=c[$+4>>2]|0;ba=X;c[ba>>2]=c[$>>2];c[ba+4>>2]=_;_=U;ba=jE(c[_>>2]|0,c[_+4>>2]|0,1)|0;_=y;$=U;ca=iE(c[$>>2]|0,c[$+4>>2]|0,63)|0;$=_|y;_=V;da=jE(c[_>>2]|0,c[_+4>>2]|0,7)|0;_=y;ea=V;fa=iE(c[ea>>2]|0,c[ea+4>>2]|0,57)|0;ea=dE(ba|ca|0,$|0,da|fa|0,_|y|0)|0;_=y;fa=W;da=jE(c[fa>>2]|0,c[fa+4>>2]|0,12)|0;fa=y;$=W;ca=iE(c[$>>2]|0,c[$+4>>2]|0,52)|0;$=dE(ea|0,_|0,da|ca|0,fa|y|0)|0;fa=y;ca=X;da=jE(c[ca>>2]|0,c[ca+4>>2]|0,18)|0;ca=y;_=X;ea=iE(c[_>>2]|0,c[_+4>>2]|0,46)|0;_=dE($|0,fa|0,da|ea|0,ca|y|0)|0;ca=T;c[ca>>2]=_;c[ca+4>>2]=y;ca=T;_=U;U=Kh(c[ca>>2]|0,c[ca+4>>2]|0,c[_>>2]|0,c[_+4>>2]|0)|0;_=T;c[_>>2]=U;c[_+4>>2]=y;_=T;U=V;V=Kh(c[_>>2]|0,c[_+4>>2]|0,c[U>>2]|0,c[U+4>>2]|0)|0;U=T;c[U>>2]=V;c[U+4>>2]=y;U=T;V=W;W=Kh(c[U>>2]|0,c[U+4>>2]|0,c[V>>2]|0,c[V+4>>2]|0)|0;V=T;c[V>>2]=W;c[V+4>>2]=y;V=T;W=X;X=Kh(c[V>>2]|0,c[V+4>>2]|0,c[W>>2]|0,c[W+4>>2]|0)|0;W=T;c[W>>2]=X;c[W+4>>2]=y;}else{W=aa+24|0;aa=dE(c[W>>2]|0,c[W+4>>2]|0,374761413,668265263)|0;W=T;c[W>>2]=aa;c[W+4>>2]=y;}W=c[P>>2]|0;P=T;aa=dE(c[P>>2]|0,c[P+4>>2]|0,c[W>>2]|0,c[W+4>>2]|0)|0;W=T;c[W>>2]=aa;c[W+4>>2]=y;while(1){ga=c[R>>2]|0;if(((c[R>>2]|0)+8|0)>>>0>(c[S>>2]|0)>>>0)break;W=c[Q>>2]|0;c[N>>2]=ga;c[O>>2]=W;W=c[O>>2]|0;c[K>>2]=c[N>>2];c[L>>2]=W;c[M>>2]=1;W=(c[L>>2]|0)==1;aa=c[K>>2]|0;if((c[M>>2]|0)==1){P=Hh(aa)|0;X=y;if(W){ha=P;ia=X;}else{V=Ih(P,X)|0;ha=V;ia=y;}V=J;c[V>>2]=ha;c[V+4>>2]=ia;}else{V=aa;aa=c[V>>2]|0;X=c[V+4>>2]|0;if(W){ja=aa;ka=X;}else{W=Ih(aa,X)|0;ja=W;ka=y;}W=J;c[W>>2]=ja;c[W+4>>2]=ka;}W=J;X=Jh(0,0,c[W>>2]|0,c[W+4>>2]|0)|0;W=Y;c[W>>2]=X;c[W+4>>2]=y;W=Y;X=T;aa=c[X+4>>2]^c[W+4>>2];V=T;c[V>>2]=c[X>>2]^c[W>>2];c[V+4>>2]=aa;aa=T;V=jE(c[aa>>2]|0,c[aa+4>>2]|0,27)|0;aa=y;W=T;X=iE(c[W>>2]|0,c[W+4>>2]|0,37)|0;W=cE(V|X|0,aa|y|0,-2048144761,-1640531535)|0;aa=dE(W|0,y|0,-1028477341,-2048144777)|0;W=T;c[W>>2]=aa;c[W+4>>2]=y;c[R>>2]=(c[R>>2]|0)+8;}if((ga+4|0)>>>0<=(c[S>>2]|0)>>>0){ga=c[Q>>2]|0;c[H>>2]=c[R>>2];c[I>>2]=ga;ga=c[I>>2]|0;c[E>>2]=c[H>>2];c[F>>2]=ga;c[G>>2]=1;ga=(c[F>>2]|0)==1;F=c[E>>2]|0;if((c[G>>2]|0)==1){G=Fh(F)|0;if(ga)la=G;else la=Gh(G)|0;c[D>>2]=la;}else{la=c[F>>2]|0;if(ga)ma=la;else ma=Gh(la)|0;c[D>>2]=ma;}ma=cE(c[D>>2]|0,0,-2048144761,-1640531535)|0;D=T;la=c[D+4>>2]^y;ga=T;c[ga>>2]=c[D>>2]^ma;c[ga+4>>2]=la;la=T;ga=jE(c[la>>2]|0,c[la+4>>2]|0,23)|0;la=y;ma=T;D=iE(c[ma>>2]|0,c[ma+4>>2]|0,41)|0;ma=cE(ga|D|0,la|y|0,668265295,-1028477379)|0;la=dE(ma|0,y|0,-1640531463,374761393)|0;ma=T;c[ma>>2]=la;c[ma+4>>2]=y;c[R>>2]=(c[R>>2]|0)+4;}while(1){if((c[R>>2]|0)>>>0>=(c[S>>2]|0)>>>0)break;ma=cE(d[c[R>>2]>>0]|0,0,374761413,668265263)|0;la=T;D=c[la+4>>2]^y;ga=T;c[ga>>2]=c[la>>2]^ma;c[ga+4>>2]=D;D=T;ga=jE(c[D>>2]|0,c[D+4>>2]|0,11)|0;D=y;ma=T;la=iE(c[ma>>2]|0,c[ma+4>>2]|0,53)|0;ma=cE(ga|la|0,D|y|0,-2048144761,-1640531535)|0;D=T;c[D>>2]=ma;c[D+4>>2]=y;c[R>>2]=(c[R>>2]|0)+1;}R=T;S=iE(c[R>>2]|0,c[R+4>>2]|0,33)|0;R=T;D=c[R+4>>2]^y;ma=T;c[ma>>2]=c[R>>2]^S;c[ma+4>>2]=D;D=T;ma=cE(c[D>>2]|0,c[D+4>>2]|0,668265295,-1028477379)|0;D=T;c[D>>2]=ma;c[D+4>>2]=y;D=T;ma=iE(c[D>>2]|0,c[D+4>>2]|0,29)|0;D=T;S=c[D+4>>2]^y;R=T;c[R>>2]=c[D>>2]^ma;c[R+4>>2]=S;S=T;R=cE(c[S>>2]|0,c[S+4>>2]|0,-1640531463,374761393)|0;S=T;c[S>>2]=R;c[S+4>>2]=y;S=T;R=c[S+4>>2]|0;ma=T;c[ma>>2]=c[S>>2]^c[T+4>>2];c[ma+4>>2]=R;R=T;T=c[R+4>>2]|0;ma=Z;c[ma>>2]=c[R>>2];c[ma+4>>2]=T;na=Z;oa=na;pa=c[oa>>2]|0;qa=na+4|0;ra=qa;sa=c[ra>>2]|0;y=sa;l=e;return pa|0;}else{c[s>>2]=b;c[t>>2]=0;c[u>>2]=(c[s>>2]|0)+40;c[v>>2]=(c[s>>2]|0)+40+(c[(c[s>>2]|0)+72>>2]|0);b=c[s>>2]|0;T=c[b+4>>2]|0;ma=c[s>>2]|0;if(T>>>0>0|(T|0)==0&(c[b>>2]|0)>>>0>=32){b=ma+8|0;T=c[b+4>>2]|0;R=x;c[R>>2]=c[b>>2];c[R+4>>2]=T;T=(c[s>>2]|0)+16|0;R=c[T+4>>2]|0;b=z;c[b>>2]=c[T>>2];c[b+4>>2]=R;R=(c[s>>2]|0)+24|0;b=c[R+4>>2]|0;T=A;c[T>>2]=c[R>>2];c[T+4>>2]=b;b=(c[s>>2]|0)+32|0;T=c[b+4>>2]|0;R=B;c[R>>2]=c[b>>2];c[R+4>>2]=T;T=x;R=jE(c[T>>2]|0,c[T+4>>2]|0,1)|0;T=y;b=x;S=iE(c[b>>2]|0,c[b+4>>2]|0,63)|0;b=T|y;T=z;D=jE(c[T>>2]|0,c[T+4>>2]|0,7)|0;T=y;la=z;ga=iE(c[la>>2]|0,c[la+4>>2]|0,57)|0;la=dE(R|S|0,b|0,D|ga|0,T|y|0)|0;T=y;ga=A;D=jE(c[ga>>2]|0,c[ga+4>>2]|0,12)|0;ga=y;b=A;S=iE(c[b>>2]|0,c[b+4>>2]|0,52)|0;b=dE(la|0,T|0,D|S|0,ga|y|0)|0;ga=y;S=B;D=jE(c[S>>2]|0,c[S+4>>2]|0,18)|0;S=y;T=B;la=iE(c[T>>2]|0,c[T+4>>2]|0,46)|0;T=dE(b|0,ga|0,D|la|0,S|y|0)|0;S=w;c[S>>2]=T;c[S+4>>2]=y;S=w;T=x;x=Kh(c[S>>2]|0,c[S+4>>2]|0,c[T>>2]|0,c[T+4>>2]|0)|0;T=w;c[T>>2]=x;c[T+4>>2]=y;T=w;x=z;z=Kh(c[T>>2]|0,c[T+4>>2]|0,c[x>>2]|0,c[x+4>>2]|0)|0;x=w;c[x>>2]=z;c[x+4>>2]=y;x=w;z=A;A=Kh(c[x>>2]|0,c[x+4>>2]|0,c[z>>2]|0,c[z+4>>2]|0)|0;z=w;c[z>>2]=A;c[z+4>>2]=y;z=w;A=B;B=Kh(c[z>>2]|0,c[z+4>>2]|0,c[A>>2]|0,c[A+4>>2]|0)|0;A=w;c[A>>2]=B;c[A+4>>2]=y;}else{A=ma+24|0;ma=dE(c[A>>2]|0,c[A+4>>2]|0,374761413,668265263)|0;A=w;c[A>>2]=ma;c[A+4>>2]=y;}A=c[s>>2]|0;s=w;ma=dE(c[s>>2]|0,c[s+4>>2]|0,c[A>>2]|0,c[A+4>>2]|0)|0;A=w;c[A>>2]=ma;c[A+4>>2]=y;while(1){ta=c[u>>2]|0;if(((c[u>>2]|0)+8|0)>>>0>(c[v>>2]|0)>>>0)break;A=c[t>>2]|0;c[q>>2]=ta;c[r>>2]=A;A=c[r>>2]|0;c[n>>2]=c[q>>2];c[o>>2]=A;c[p>>2]=1;A=(c[o>>2]|0)==1;ma=c[n>>2]|0;if((c[p>>2]|0)==1){s=Hh(ma)|0;B=y;if(A){ua=s;va=B;}else{z=Ih(s,B)|0;ua=z;va=y;}z=m;c[z>>2]=ua;c[z+4>>2]=va;}else{z=ma;ma=c[z>>2]|0;B=c[z+4>>2]|0;if(A){wa=ma;xa=B;}else{A=Ih(ma,B)|0;wa=A;xa=y;}A=m;c[A>>2]=wa;c[A+4>>2]=xa;}A=m;B=Jh(0,0,c[A>>2]|0,c[A+4>>2]|0)|0;A=C;c[A>>2]=B;c[A+4>>2]=y;A=C;B=w;ma=c[B+4>>2]^c[A+4>>2];z=w;c[z>>2]=c[B>>2]^c[A>>2];c[z+4>>2]=ma;ma=w;z=jE(c[ma>>2]|0,c[ma+4>>2]|0,27)|0;ma=y;A=w;B=iE(c[A>>2]|0,c[A+4>>2]|0,37)|0;A=cE(z|B|0,ma|y|0,-2048144761,-1640531535)|0;ma=dE(A|0,y|0,-1028477341,-2048144777)|0;A=w;c[A>>2]=ma;c[A+4>>2]=y;c[u>>2]=(c[u>>2]|0)+8;}if((ta+4|0)>>>0<=(c[v>>2]|0)>>>0){ta=c[t>>2]|0;c[j>>2]=c[u>>2];c[k>>2]=ta;ta=c[k>>2]|0;c[g>>2]=c[j>>2];c[h>>2]=ta;c[i>>2]=1;ta=(c[h>>2]|0)==1;h=c[g>>2]|0;if((c[i>>2]|0)==1){i=Fh(h)|0;if(ta)ya=i;else ya=Gh(i)|0;c[f>>2]=ya;}else{ya=c[h>>2]|0;if(ta)za=ya;else za=Gh(ya)|0;c[f>>2]=za;}za=cE(c[f>>2]|0,0,-2048144761,-1640531535)|0;f=w;ya=c[f+4>>2]^y;ta=w;c[ta>>2]=c[f>>2]^za;c[ta+4>>2]=ya;ya=w;ta=jE(c[ya>>2]|0,c[ya+4>>2]|0,23)|0;ya=y;za=w;f=iE(c[za>>2]|0,c[za+4>>2]|0,41)|0;za=cE(ta|f|0,ya|y|0,668265295,-1028477379)|0;ya=dE(za|0,y|0,-1640531463,374761393)|0;za=w;c[za>>2]=ya;c[za+4>>2]=y;c[u>>2]=(c[u>>2]|0)+4;}while(1){if((c[u>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;za=cE(d[c[u>>2]>>0]|0,0,374761413,668265263)|0;ya=w;f=c[ya+4>>2]^y;ta=w;c[ta>>2]=c[ya>>2]^za;c[ta+4>>2]=f;f=w;ta=jE(c[f>>2]|0,c[f+4>>2]|0,11)|0;f=y;za=w;ya=iE(c[za>>2]|0,c[za+4>>2]|0,53)|0;za=cE(ta|ya|0,f|y|0,-2048144761,-1640531535)|0;f=w;c[f>>2]=za;c[f+4>>2]=y;c[u>>2]=(c[u>>2]|0)+1;}u=w;v=iE(c[u>>2]|0,c[u+4>>2]|0,33)|0;u=w;f=c[u+4>>2]^y;za=w;c[za>>2]=c[u>>2]^v;c[za+4>>2]=f;f=w;za=cE(c[f>>2]|0,c[f+4>>2]|0,668265295,-1028477379)|0;f=w;c[f>>2]=za;c[f+4>>2]=y;f=w;za=iE(c[f>>2]|0,c[f+4>>2]|0,29)|0;f=w;v=c[f+4>>2]^y;u=w;c[u>>2]=c[f>>2]^za;c[u+4>>2]=v;v=w;u=cE(c[v>>2]|0,c[v+4>>2]|0,-1640531463,374761393)|0;v=w;c[v>>2]=u;c[v+4>>2]=y;v=w;u=c[v+4>>2]|0;za=w;c[za>>2]=c[v>>2]^c[w+4>>2];c[za+4>>2]=u;u=w;w=c[u+4>>2]|0;za=Z;c[za>>2]=c[u>>2];c[za+4>>2]=w;na=Z;oa=na;pa=c[oa>>2]|0;qa=na+4|0;ra=qa;sa=c[ra>>2]|0;y=sa;l=e;return pa|0;}return 0;}function Ph(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=Qh(c[d>>2]|0)|0;l=b;return a|0;}function Qh(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function Rh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=a;if(c[b>>2]|0){c[e>>2]=qc[c[b>>2]&63](c[b+8>>2]|0,c[f>>2]|0)|0;g=c[e>>2]|0;l=d;return g|0;}else{c[e>>2]=Cy(c[f>>2]|0)|0;g=c[e>>2]|0;l=d;return g|0;}return 0;}function Sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=a;if(c[b>>2]|0){c[g>>2]=qc[c[b>>2]&63](c[b+8>>2]|0,c[f>>2]|0)|0;oE(c[g>>2]|0,0,c[f>>2]|0)|0;c[e>>2]=c[g>>2];h=c[e>>2]|0;l=d;return h|0;}else{c[e>>2]=Ey(1,c[f>>2]|0)|0;h=c[e>>2]|0;l=d;return h|0;}return 0;}function Th(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;if(!(c[e>>2]|0)){l=d;return;}if(c[b+4>>2]|0){xc[c[b+4>>2]&31](c[b+8>>2]|0,c[e>>2]|0);l=d;return;}else{Dy(c[e>>2]|0);l=d;return;}}function Uh(e,f,g,h,i,j){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;k=l;l=l+1136|0;m=k+1124|0;n=k+1120|0;o=k+1116|0;p=k+1112|0;q=k+1108|0;r=k+1104|0;s=k+1100|0;t=k+1096|0;u=k+1092|0;v=k+1088|0;w=k+1084|0;x=k+1080|0;y=k+1076|0;z=k+1072|0;A=k;B=k+1068|0;C=k+1064|0;D=k+1060|0;E=k+1056|0;F=k+1052|0;G=k+1048|0;H=k+1044|0;I=k+1128|0;J=k+1040|0;K=k+1036|0;L=k+1032|0;M=k+1028|0;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=i;c[s>>2]=j;c[t>>2]=1<<c[q>>2];c[u>>2]=(c[t>>2]|0)-1;c[v>>2]=c[n>>2];c[w>>2]=(c[v>>2]|0)+4;c[x>>2]=(c[v>>2]|0)+4+((c[q>>2]|0?(c[t>>2]|0)>>>1:1)<<2);c[y>>2]=c[x>>2];c[z>>2]=((c[t>>2]|0)>>>1)+((c[t>>2]|0)>>>3)+3;c[B>>2]=c[r>>2];c[C>>2]=(c[t>>2]|0)-1;if(1<<c[q>>2]>>>0>(c[s>>2]|0)>>>0){c[m>>2]=-44;N=c[m>>2]|0;l=k;return N|0;}b[(c[w>>2]|0)+-4>>1]=c[q>>2];b[(c[w>>2]|0)+-2>>1]=c[p>>2];c[A>>2]=0;c[D>>2]=1;while(1){if((c[D>>2]|0)>>>0>((c[p>>2]|0)+1|0)>>>0)break;s=c[A+((c[D>>2]|0)-1<<2)>>2]|0;if((b[(c[o>>2]|0)+((c[D>>2]|0)-1<<1)>>1]|0)==-1){c[A+(c[D>>2]<<2)>>2]=s+1;r=(c[D>>2]|0)-1&255;x=c[B>>2]|0;v=c[C>>2]|0;c[C>>2]=v+-1;a[x+v>>0]=r;}else c[A+(c[D>>2]<<2)>>2]=s+(b[(c[o>>2]|0)+((c[D>>2]|0)-1<<1)>>1]|0);c[D>>2]=(c[D>>2]|0)+1;}c[A+((c[p>>2]|0)+1<<2)>>2]=(c[t>>2]|0)+1;c[E>>2]=0;c[F>>2]=0;while(1){if((c[F>>2]|0)>>>0>(c[p>>2]|0)>>>0)break;c[G>>2]=0;while(1){O=c[F>>2]|0;if((c[G>>2]|0)>=(b[(c[o>>2]|0)+(c[F>>2]<<1)>>1]|0))break;a[(c[B>>2]|0)+(c[E>>2]|0)>>0]=O;c[E>>2]=(c[E>>2]|0)+(c[z>>2]|0)&c[u>>2];while(1){if((c[E>>2]|0)>>>0<=(c[C>>2]|0)>>>0)break;c[E>>2]=(c[E>>2]|0)+(c[z>>2]|0)&c[u>>2];}c[G>>2]=(c[G>>2]|0)+1;}c[F>>2]=O+1;}if(c[E>>2]|0){c[m>>2]=-1;N=c[m>>2]|0;l=k;return N|0;}c[H>>2]=0;while(1){if((c[H>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;a[I>>0]=a[(c[B>>2]|0)+(c[H>>2]|0)>>0]|0;E=(c[t>>2]|0)+(c[H>>2]|0)&65535;O=c[w>>2]|0;F=A+(d[I>>0]<<2)|0;G=c[F>>2]|0;c[F>>2]=G+1;b[O+(G<<1)>>1]=E;c[H>>2]=(c[H>>2]|0)+1;}c[J>>2]=0;c[K>>2]=0;while(1){if((c[K>>2]|0)>>>0>(c[p>>2]|0)>>>0)break;switch(b[(c[o>>2]|0)+(c[K>>2]<<1)>>1]|0){case 0:break;case 1:case-1:{c[(c[y>>2]|0)+(c[K>>2]<<3)+4>>2]=(c[q>>2]<<16)-(1<<c[q>>2]);c[(c[y>>2]|0)+(c[K>>2]<<3)>>2]=(c[J>>2]|0)-1;c[J>>2]=(c[J>>2]|0)+1;break;}default:{c[L>>2]=(c[q>>2]|0)-(Vh((b[(c[o>>2]|0)+(c[K>>2]<<1)>>1]|0)-1|0)|0);c[M>>2]=b[(c[o>>2]|0)+(c[K>>2]<<1)>>1]<<c[L>>2];c[(c[y>>2]|0)+(c[K>>2]<<3)+4>>2]=(c[L>>2]<<16)-(c[M>>2]|0);c[(c[y>>2]|0)+(c[K>>2]<<3)>>2]=(c[J>>2]|0)-(b[(c[o>>2]|0)+(c[K>>2]<<1)>>1]|0);c[J>>2]=(c[J>>2]|0)+(b[(c[o>>2]|0)+(c[K>>2]<<1)>>1]|0);}}c[K>>2]=(c[K>>2]|0)+1;}c[m>>2]=0;N=c[m>>2]|0;l=k;return N|0;}function Vh(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function Wh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=((N((c[e>>2]|0)+1|0,c[f>>2]|0)|0)>>>3)+3;l=d;return(c[e>>2]|0?c[g>>2]|0:512)|0;}function Xh(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;do{if((c[n>>2]|0)>>>0<=12){if((c[n>>2]|0)>>>0<5){c[h>>2]=-1;break;}f=c[j>>2]|0;e=f>>>0<(Wh(c[m>>2]|0,c[n>>2]|0)|0)>>>0;f=c[i>>2]|0;d=c[j>>2]|0;b=c[k>>2]|0;a=c[m>>2]|0;o=c[n>>2]|0;if(e){c[h>>2]=Yh(f,d,b,a,o,0)|0;break;}else{c[h>>2]=Yh(f,d,b,a,o,1)|0;break;}}else c[h>>2]=-44;}while(0);l=g;return c[h>>2]|0;}function Yh(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;j=l;l=l+96|0;k=j+80|0;m=j+76|0;n=j+72|0;o=j+68|0;p=j+64|0;q=j+60|0;r=j+56|0;s=j+52|0;t=j+48|0;u=j+44|0;v=j+40|0;w=j+36|0;x=j+32|0;y=j+28|0;z=j+24|0;A=j+20|0;B=j+16|0;C=j+12|0;D=j+8|0;E=j+4|0;F=j;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=i;c[s>>2]=c[m>>2];c[t>>2]=c[s>>2];c[u>>2]=(c[s>>2]|0)+(c[n>>2]|0);c[w>>2]=1<<c[q>>2];c[B>>2]=0;c[C>>2]=0;c[z>>2]=0;c[A>>2]=0;c[z>>2]=(c[z>>2]|0)+((c[q>>2]|0)-5<<c[A>>2]);c[A>>2]=(c[A>>2]|0)+4;c[x>>2]=(c[w>>2]|0)+1;c[y>>2]=c[w>>2];c[v>>2]=(c[q>>2]|0)+1;a:while(1){if((c[x>>2]|0)<=1){G=34;break;}if(c[C>>2]|0){c[D>>2]=c[B>>2];while(1){if(!((b[(c[o>>2]|0)+(c[B>>2]<<1)>>1]|0)!=0^1))break;c[B>>2]=(c[B>>2]|0)+1;}while(1){if((c[B>>2]|0)>>>0<((c[D>>2]|0)+24|0)>>>0)break;c[D>>2]=(c[D>>2]|0)+24;c[z>>2]=(c[z>>2]|0)+(65535<<c[A>>2]);if((c[r>>2]|0)==0?(c[t>>2]|0)>>>0>((c[u>>2]|0)+-2|0)>>>0:0){G=11;break a;}a[c[t>>2]>>0]=c[z>>2];a[(c[t>>2]|0)+1>>0]=(c[z>>2]|0)>>>8;c[t>>2]=(c[t>>2]|0)+2;c[z>>2]=(c[z>>2]|0)>>>16;}while(1){if((c[B>>2]|0)>>>0<((c[D>>2]|0)+3|0)>>>0)break;c[D>>2]=(c[D>>2]|0)+3;c[z>>2]=(c[z>>2]|0)+(3<<c[A>>2]);c[A>>2]=(c[A>>2]|0)+2;}c[z>>2]=(c[z>>2]|0)+((c[B>>2]|0)-(c[D>>2]|0)<<c[A>>2]);c[A>>2]=(c[A>>2]|0)+2;if((c[A>>2]|0)>16){if((c[r>>2]|0)==0?(c[t>>2]|0)>>>0>((c[u>>2]|0)+-2|0)>>>0:0){G=19;break;}a[c[t>>2]>>0]=c[z>>2];a[(c[t>>2]|0)+1>>0]=(c[z>>2]|0)>>>8;c[t>>2]=(c[t>>2]|0)+2;c[z>>2]=(c[z>>2]|0)>>>16;c[A>>2]=(c[A>>2]|0)-16;}}q=c[o>>2]|0;w=c[B>>2]|0;c[B>>2]=w+1;c[E>>2]=b[q+(w<<1)>>1];c[F>>2]=(c[y>>2]<<1)-1-(c[x>>2]|0);w=c[E>>2]|0;c[x>>2]=(c[x>>2]|0)-((c[E>>2]|0)<0?0-w|0:w);c[E>>2]=(c[E>>2]|0)+1;if((c[E>>2]|0)>=(c[y>>2]|0))c[E>>2]=(c[E>>2]|0)+(c[F>>2]|0);c[z>>2]=(c[z>>2]|0)+(c[E>>2]<<c[A>>2]);c[A>>2]=(c[A>>2]|0)+(c[v>>2]|0);c[A>>2]=(c[A>>2]|0)-((c[E>>2]|0)<(c[F>>2]|0)&1);c[C>>2]=(c[E>>2]|0)==1&1;if((c[x>>2]|0)<1){G=24;break;}while(1){if((c[x>>2]|0)>=(c[y>>2]|0))break;c[v>>2]=(c[v>>2]|0)+-1;c[y>>2]=c[y>>2]>>1;}if((c[A>>2]|0)>16){if((c[r>>2]|0)==0?(c[t>>2]|0)>>>0>((c[u>>2]|0)+-2|0)>>>0:0){G=31;break;}a[c[t>>2]>>0]=c[z>>2];a[(c[t>>2]|0)+1>>0]=(c[z>>2]|0)>>>8;c[t>>2]=(c[t>>2]|0)+2;c[z>>2]=(c[z>>2]|0)>>>16;c[A>>2]=(c[A>>2]|0)-16;}}if((G|0)==11){c[k>>2]=-70;H=c[k>>2]|0;l=j;return H|0;}else if((G|0)==19){c[k>>2]=-70;H=c[k>>2]|0;l=j;return H|0;}else if((G|0)==24){c[k>>2]=-1;H=c[k>>2]|0;l=j;return H|0;}else if((G|0)==31){c[k>>2]=-70;H=c[k>>2]|0;l=j;return H|0;}else if((G|0)==34){if((c[r>>2]|0)==0?(c[t>>2]|0)>>>0>((c[u>>2]|0)+-2|0)>>>0:0){c[k>>2]=-70;H=c[k>>2]|0;l=j;return H|0;}a[c[t>>2]>>0]=c[z>>2];a[(c[t>>2]|0)+1>>0]=(c[z>>2]|0)>>>8;c[t>>2]=(c[t>>2]|0)+(((c[A>>2]|0)+7|0)/8|0);if((c[B>>2]|0)>>>0>((c[p>>2]|0)+1|0)>>>0){c[k>>2]=-1;H=c[k>>2]|0;l=j;return H|0;}else{c[k>>2]=(c[t>>2]|0)-(c[s>>2]|0);H=c[k>>2]|0;l=j;return H|0;}}return 0;}function Zh(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=l;l=l+48|0;h=g+36|0;i=g+32|0;j=g+28|0;k=g+24|0;m=g+20|0;n=g+16|0;o=g+12|0;p=g+8|0;q=g+4|0;r=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=e;c[m>>2]=f;c[n>>2]=c[k>>2];c[o>>2]=(c[n>>2]|0)+(c[m>>2]|0);c[p>>2]=c[c[j>>2]>>2];c[q>>2]=0;oE(c[i>>2]|0,0,(c[p>>2]|0)+1<<2|0)|0;if(!(c[m>>2]|0)){c[c[j>>2]>>2]=0;c[h>>2]=0;s=c[h>>2]|0;l=g;return s|0;}while(1){if((c[n>>2]|0)>>>0>=(c[o>>2]|0)>>>0)break;m=c[i>>2]|0;k=c[n>>2]|0;c[n>>2]=k+1;f=m+((d[k>>0]|0)<<2)|0;c[f>>2]=(c[f>>2]|0)+1;}while(1){t=c[p>>2]|0;if(!((c[(c[i>>2]|0)+(c[p>>2]<<2)>>2]|0)!=0^1))break;c[p>>2]=t+-1;}c[c[j>>2]>>2]=t;c[r>>2]=0;while(1){if((c[r>>2]|0)>>>0>(c[p>>2]|0)>>>0)break;if((c[(c[i>>2]|0)+(c[r>>2]<<2)>>2]|0)>>>0>(c[q>>2]|0)>>>0)c[q>>2]=c[(c[i>>2]|0)+(c[r>>2]<<2)>>2];c[r>>2]=(c[r>>2]|0)+1;}c[h>>2]=c[q>>2];s=c[h>>2]|0;l=g;return s|0;}function _h(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;f=c[i>>2]|0;i=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;if((c[m>>2]|0)>>>0<1500){c[h>>2]=Zh(f,i,j,k)|0;o=c[h>>2]|0;l=g;return o|0;}else{c[h>>2]=$h(f,i,j,k,0,c[n>>2]|0)|0;o=c[h>>2]|0;l=g;return o|0;}return 0;}function $h(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;i=l;l=l+80|0;j=i+72|0;k=i+68|0;m=i+64|0;n=i+60|0;o=i+56|0;p=i+52|0;q=i+48|0;r=i+44|0;s=i+40|0;t=i+36|0;u=i+32|0;v=i+28|0;w=i+24|0;x=i+20|0;y=i+16|0;z=i+12|0;A=i+8|0;B=i+4|0;C=i;c[k>>2]=a;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=c[n>>2];c[s>>2]=(c[r>>2]|0)+(c[o>>2]|0);c[t>>2]=c[c[m>>2]>>2];c[u>>2]=0;c[v>>2]=c[q>>2];c[w>>2]=(c[v>>2]|0)+1024;c[x>>2]=(c[w>>2]|0)+1024;c[y>>2]=(c[x>>2]|0)+1024;oE(c[q>>2]|0,0,4096)|0;if(!(c[o>>2]|0)){oE(c[k>>2]|0,0,(c[t>>2]|0)+1|0)|0;c[c[m>>2]>>2]=0;c[j>>2]=0;D=c[j>>2]|0;l=i;return D|0;}if(!(c[t>>2]|0))c[t>>2]=255;c[z>>2]=ai(c[r>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+4;while(1){if((c[r>>2]|0)>>>0>=((c[s>>2]|0)+-15|0)>>>0)break;c[A>>2]=c[z>>2];c[z>>2]=ai(c[r>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+4;o=(c[v>>2]|0)+((c[A>>2]&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[w>>2]|0)+(((c[A>>2]|0)>>>8&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[x>>2]|0)+(((c[A>>2]|0)>>>16&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[y>>2]|0)+((c[A>>2]|0)>>>24<<2)|0;c[o>>2]=(c[o>>2]|0)+1;c[A>>2]=c[z>>2];c[z>>2]=ai(c[r>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+4;o=(c[v>>2]|0)+((c[A>>2]&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[w>>2]|0)+(((c[A>>2]|0)>>>8&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[x>>2]|0)+(((c[A>>2]|0)>>>16&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[y>>2]|0)+((c[A>>2]|0)>>>24<<2)|0;c[o>>2]=(c[o>>2]|0)+1;c[A>>2]=c[z>>2];c[z>>2]=ai(c[r>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+4;o=(c[v>>2]|0)+((c[A>>2]&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[w>>2]|0)+(((c[A>>2]|0)>>>8&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[x>>2]|0)+(((c[A>>2]|0)>>>16&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[y>>2]|0)+((c[A>>2]|0)>>>24<<2)|0;c[o>>2]=(c[o>>2]|0)+1;c[A>>2]=c[z>>2];c[z>>2]=ai(c[r>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+4;o=(c[v>>2]|0)+((c[A>>2]&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[w>>2]|0)+(((c[A>>2]|0)>>>8&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[x>>2]|0)+(((c[A>>2]|0)>>>16&255)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=(c[y>>2]|0)+((c[A>>2]|0)>>>24<<2)|0;c[o>>2]=(c[o>>2]|0)+1;}c[r>>2]=(c[r>>2]|0)+-4;while(1){if((c[r>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;A=c[v>>2]|0;z=c[r>>2]|0;c[r>>2]=z+1;o=A+((d[z>>0]|0)<<2)|0;c[o>>2]=(c[o>>2]|0)+1;}a:do{if(c[p>>2]|0){c[B>>2]=255;while(1){if((c[B>>2]|0)>>>0<=(c[t>>2]|0)>>>0)break a;r=(c[v>>2]|0)+(c[B>>2]<<2)|0;c[r>>2]=(c[r>>2]|0)+((c[(c[w>>2]|0)+(c[B>>2]<<2)>>2]|0)+(c[(c[x>>2]|0)+(c[B>>2]<<2)>>2]|0)+(c[(c[y>>2]|0)+(c[B>>2]<<2)>>2]|0));if(c[(c[v>>2]|0)+(c[B>>2]<<2)>>2]|0)break;c[B>>2]=(c[B>>2]|0)+-1;}c[j>>2]=-48;D=c[j>>2]|0;l=i;return D|0;}}while(0);if((c[t>>2]|0)>>>0>255)c[t>>2]=255;c[C>>2]=0;while(1){if((c[C>>2]|0)>>>0>(c[t>>2]|0)>>>0)break;c[(c[k>>2]|0)+(c[C>>2]<<2)>>2]=(c[(c[v>>2]|0)+(c[C>>2]<<2)>>2]|0)+(c[(c[w>>2]|0)+(c[C>>2]<<2)>>2]|0)+(c[(c[x>>2]|0)+(c[C>>2]<<2)>>2]|0)+(c[(c[y>>2]|0)+(c[C>>2]<<2)>>2]|0);if((c[(c[k>>2]|0)+(c[C>>2]<<2)>>2]|0)>>>0>(c[u>>2]|0)>>>0)c[u>>2]=c[(c[k>>2]|0)+(c[C>>2]<<2)>>2];c[C>>2]=(c[C>>2]|0)+1;}while(1){E=c[t>>2]|0;if(!((c[(c[k>>2]|0)+(c[t>>2]<<2)>>2]|0)!=0^1))break;c[t>>2]=E+-1;}c[c[m>>2]>>2]=E;c[j>>2]=c[u>>2];D=c[j>>2]|0;l=i;return D|0;}function ai(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function bi(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if((c[c[j>>2]>>2]|0)>>>0<255){c[h>>2]=$h(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,1,c[n>>2]|0)|0;o=c[h>>2]|0;l=g;return o|0;}else{c[c[j>>2]>>2]=255;c[h>>2]=_h(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;o=c[h>>2]|0;l=g;return o|0;}return 0;}function ci(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+12|0;k=f+8|0;m=f+4|0;n=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;e=Vh((c[h>>2]|0)-1|0)|0;c[k>>2]=e-(c[j>>2]|0);c[m>>2]=c[g>>2];c[n>>2]=di(c[h>>2]|0,c[i>>2]|0)|0;if(!(c[m>>2]|0))c[m>>2]=11;if((c[k>>2]|0)>>>0<(c[m>>2]|0)>>>0)c[m>>2]=c[k>>2];if((c[n>>2]|0)>>>0>(c[m>>2]|0)>>>0)c[m>>2]=c[n>>2];if((c[m>>2]|0)>>>0<5)c[m>>2]=5;if((c[m>>2]|0)>>>0<=12){o=c[m>>2]|0;l=f;return o|0;}c[m>>2]=12;o=c[m>>2]|0;l=f;return o|0;}function di(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=l;l=l+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;i=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=(Vh((c[e>>2]|0)-1|0)|0)+1;c[h>>2]=(Vh(c[f>>2]|0)|0)+2;c[i>>2]=(c[g>>2]|0)>>>0<(c[h>>2]|0)>>>0?c[g>>2]|0:c[h>>2]|0;l=d;return c[i>>2]|0;}function ei(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=ci(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,2)|0;l=e;return d|0;}function fi(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0;h=l;l=l+80|0;i=h+72|0;j=h+68|0;k=h+64|0;m=h+60|0;n=h+56|0;o=h+52|0;p=h+24|0;q=h+16|0;r=h+8|0;s=h+48|0;t=h+44|0;u=h+40|0;v=h+78|0;w=h+36|0;x=h+76|0;z=h;A=h+32|0;c[j>>2]=a;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;if(!(c[k>>2]|0))c[k>>2]=11;if((c[k>>2]|0)>>>0<5){c[i>>2]=-1;B=c[i>>2]|0;l=h;return B|0;}if((c[k>>2]|0)>>>0>12){c[i>>2]=-44;B=c[i>>2]|0;l=h;return B|0;}g=c[k>>2]|0;if(g>>>0<(di(c[n>>2]|0,c[o>>2]|0)|0)>>>0){c[i>>2]=-1;B=c[i>>2]|0;l=h;return B|0;}g=p;c[g>>2]=62-(c[k>>2]|0);c[g+4>>2]=0;g=hE(0,1073741824,c[n>>2]|0,0)|0;f=q;c[f>>2]=g;c[f+4>>2]=y;f=p;g=eE(c[f>>2]|0,c[f+4>>2]|0,20,0)|0;f=jE(1,0,g|0)|0;g=r;c[g>>2]=f;c[g+4>>2]=y;c[s>>2]=1<<c[k>>2];c[u>>2]=0;b[v>>1]=0;c[w>>2]=(c[n>>2]|0)>>>(c[k>>2]|0);c[t>>2]=0;while(1){if((c[t>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;if((c[(c[m>>2]|0)+(c[t>>2]<<2)>>2]|0)==(c[n>>2]|0)){C=12;break;}do{if(!(c[(c[m>>2]|0)+(c[t>>2]<<2)>>2]|0))b[(c[j>>2]|0)+(c[t>>2]<<1)>>1]=0;else{if((c[(c[m>>2]|0)+(c[t>>2]<<2)>>2]|0)>>>0<=(c[w>>2]|0)>>>0){b[(c[j>>2]|0)+(c[t>>2]<<1)>>1]=-1;c[s>>2]=(c[s>>2]|0)+-1;break;}g=q;f=cE(c[(c[m>>2]|0)+(c[t>>2]<<2)>>2]|0,0,c[g>>2]|0,c[g+4>>2]|0)|0;g=iE(f|0,y|0,c[p>>2]|0)|0;b[x>>1]=g;if((b[x>>1]|0)<8){g=r;f=cE(c[g>>2]|0,c[g+4>>2]|0,c[192+(b[x>>1]<<2)>>2]|0,0)|0;g=z;c[g>>2]=f;c[g+4>>2]=y;g=q;f=cE(c[(c[m>>2]|0)+(c[t>>2]<<2)>>2]|0,0,c[g>>2]|0,c[g+4>>2]|0)|0;g=y;e=b[x>>1]|0;d=jE(e|0,((e|0)<0)<<31>>31|0,c[p>>2]|0)|0;e=eE(f|0,g|0,d|0,y|0)|0;d=y;g=z;f=c[g+4>>2]|0;b[x>>1]=(b[x>>1]|0)+((d>>>0>f>>>0|((d|0)==(f|0)?e>>>0>(c[g>>2]|0)>>>0:0))&1);}if((b[x>>1]|0)>(b[v>>1]|0)){b[v>>1]=b[x>>1]|0;c[u>>2]=c[t>>2];}b[(c[j>>2]|0)+(c[t>>2]<<1)>>1]=b[x>>1]|0;c[s>>2]=(c[s>>2]|0)-(b[x>>1]|0);}}while(0);c[t>>2]=(c[t>>2]|0)+1;}if((C|0)==12){c[i>>2]=0;B=c[i>>2]|0;l=h;return B|0;}if((0-(c[s>>2]|0)|0)>=(b[(c[j>>2]|0)+(c[u>>2]<<1)>>1]>>1|0)){c[A>>2]=gi(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;if(hi(c[A>>2]|0)|0){c[i>>2]=c[A>>2];B=c[i>>2]|0;l=h;return B|0;}}else{A=(c[j>>2]|0)+(c[u>>2]<<1)|0;b[A>>1]=(b[A>>1]|0)+((c[s>>2]&65535)<<16>>16);}c[i>>2]=c[k>>2];B=c[i>>2]|0;l=h;return B|0;}function gi(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;h=l;l=l+112|0;i=h+100|0;j=h+96|0;k=h+92|0;m=h+88|0;n=h+84|0;o=h+80|0;p=h+76|0;q=h+72|0;r=h+68|0;s=h+64|0;t=h+60|0;u=h+56|0;v=h+52|0;w=h+32|0;x=h+24|0;z=h+16|0;A=h+8|0;B=h;C=h+48|0;D=h+44|0;E=h+40|0;c[j>>2]=a;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;b[h+104>>1]=-2;c[q>>2]=0;c[s>>2]=(c[n>>2]|0)>>>(c[k>>2]|0);c[t>>2]=((c[n>>2]|0)*3|0)>>>((c[k>>2]|0)+1|0);c[p>>2]=0;while(1){if((c[p>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;do{if(c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0){if((c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0)>>>0<=(c[s>>2]|0)>>>0){b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]=-1;c[q>>2]=(c[q>>2]|0)+1;c[n>>2]=(c[n>>2]|0)-(c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0);break;}g=(c[j>>2]|0)+(c[p>>2]<<1)|0;if((c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0)>>>0<=(c[t>>2]|0)>>>0){b[g>>1]=1;c[q>>2]=(c[q>>2]|0)+1;c[n>>2]=(c[n>>2]|0)-(c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0);break;}else{b[g>>1]=-2;break;}}else b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]=0;}while(0);c[p>>2]=(c[p>>2]|0)+1;}c[r>>2]=(1<<c[k>>2])-(c[q>>2]|0);if((((c[n>>2]|0)>>>0)/((c[r>>2]|0)>>>0)|0)>>>0>(c[t>>2]|0)>>>0){c[t>>2]=(((c[n>>2]|0)*3|0)>>>0)/(c[r>>2]<<1>>>0)|0;c[p>>2]=0;while(1){if((c[p>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;if((b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]|0)==-2?(c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0)>>>0<=(c[t>>2]|0)>>>0:0){b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]=1;c[q>>2]=(c[q>>2]|0)+1;c[n>>2]=(c[n>>2]|0)-(c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0);}c[p>>2]=(c[p>>2]|0)+1;}c[r>>2]=(1<<c[k>>2])-(c[q>>2]|0);}if((c[q>>2]|0)==((c[o>>2]|0)+1|0)){c[u>>2]=0;c[v>>2]=0;c[p>>2]=0;while(1){if((c[p>>2]|0)>>>0>(c[o>>2]|0)>>>0)break;if((c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0)>>>0>(c[v>>2]|0)>>>0){c[u>>2]=c[p>>2];c[v>>2]=c[(c[m>>2]|0)+(c[p>>2]<<2)>>2];}c[p>>2]=(c[p>>2]|0)+1;}v=(c[j>>2]|0)+(c[u>>2]<<1)|0;b[v>>1]=(b[v>>1]|0)+((c[r>>2]&65535)<<16>>16);c[i>>2]=0;F=c[i>>2]|0;l=h;return F|0;}if(!(c[n>>2]|0)){c[p>>2]=0;while(1){if((c[r>>2]|0)>>>0<=0)break;if((b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]|0)>0){c[r>>2]=(c[r>>2]|0)+-1;v=(c[j>>2]|0)+(c[p>>2]<<1)|0;b[v>>1]=(b[v>>1]|0)+1<<16>>16;}c[p>>2]=(((c[p>>2]|0)+1|0)>>>0)%(((c[o>>2]|0)+1|0)>>>0)|0;}c[i>>2]=0;F=c[i>>2]|0;l=h;return F|0;}v=w;c[v>>2]=62-(c[k>>2]|0);c[v+4>>2]=0;v=w;k=eE(c[v>>2]|0,c[v+4>>2]|0,1,0)|0;v=jE(1,0,k|0)|0;k=eE(v|0,y|0,1,0)|0;v=x;c[v>>2]=k;c[v+4>>2]=y;v=jE(1,0,c[w>>2]|0)|0;k=cE(v|0,y|0,c[r>>2]|0,0)|0;r=x;v=dE(k|0,y|0,c[r>>2]|0,c[r+4>>2]|0)|0;r=hE(v|0,y|0,c[n>>2]|0,0)|0;n=z;c[n>>2]=r;c[n+4>>2]=y;n=x;x=c[n+4>>2]|0;r=A;c[r>>2]=c[n>>2];c[r+4>>2]=x;c[p>>2]=0;while(1){if((c[p>>2]|0)>>>0>(c[o>>2]|0)>>>0){G=40;break;}if((b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]|0)==-2){x=A;r=c[x>>2]|0;n=c[x+4>>2]|0;x=z;v=cE(c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0,0,c[x>>2]|0,c[x+4>>2]|0)|0;x=dE(r|0,n|0,v|0,y|0)|0;v=B;c[v>>2]=x;c[v+4>>2]=y;v=A;x=iE(c[v>>2]|0,c[v+4>>2]|0,c[w>>2]|0)|0;c[C>>2]=x;x=B;v=iE(c[x>>2]|0,c[x+4>>2]|0,c[w>>2]|0)|0;c[D>>2]=v;c[E>>2]=(c[D>>2]|0)-(c[C>>2]|0);if((c[E>>2]|0)>>>0<1){G=37;break;}b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]=c[E>>2];v=B;x=c[v+4>>2]|0;n=A;c[n>>2]=c[v>>2];c[n+4>>2]=x;}c[p>>2]=(c[p>>2]|0)+1;}if((G|0)==37){c[i>>2]=-1;F=c[i>>2]|0;l=h;return F|0;}else if((G|0)==40){c[i>>2]=0;F=c[i>>2]|0;l=h;return F|0;}return 0;}function hi(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function ii(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;g=l;l=l+32|0;h=g+16|0;i=g+20|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[h>>2]=e;a[i>>0]=f;c[j>>2]=c[h>>2];c[k>>2]=(c[j>>2]|0)+4;c[m>>2]=(c[j>>2]|0)+8;c[n>>2]=c[m>>2];b[(c[k>>2]|0)+-4>>1]=0;b[(c[k>>2]|0)+-2>>1]=d[i>>0]|0;b[c[k>>2]>>1]=0;b[(c[k>>2]|0)+2>>1]=0;c[(c[n>>2]|0)+((d[i>>0]|0)<<3)+4>>2]=0;c[(c[n>>2]|0)+((d[i>>0]|0)<<3)>>2]=0;l=g;return 0;}function ji(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+32|0;h=g+24|0;i=g+20|0;j=g+16|0;k=g+12|0;m=g+8|0;n=g+4|0;o=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=(c[j>>2]|0)>>>0>=((c[m>>2]|0)+((c[m>>2]|0)>>>7)|0)>>>0&1;f=c[i>>2]|0;i=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;if(c[o>>2]|0){c[h>>2]=ki(f,i,j,k,m,1)|0;p=c[h>>2]|0;l=g;return p|0;}else{c[h>>2]=ki(f,i,j,k,m,0)|0;p=c[h>>2]|0;l=g;return p|0;}return 0;}function ki(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;i=l;l=l+112|0;j=i+96|0;k=i+92|0;m=i+88|0;n=i+84|0;o=i+80|0;p=i+76|0;q=i+72|0;r=i+68|0;s=i+64|0;t=i+60|0;u=i+40|0;v=i+24|0;w=i+8|0;x=i;c[k>>2]=a;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=c[n>>2];c[s>>2]=(c[r>>2]|0)+(c[o>>2]|0);c[t>>2]=c[s>>2];if((c[o>>2]|0)>>>0<=2){c[j>>2]=0;y=c[j>>2]|0;l=i;return y|0;}c[x>>2]=li(u,c[k>>2]|0,c[m>>2]|0)|0;if(hi(c[x>>2]|0)|0){c[j>>2]=0;y=c[j>>2]|0;l=i;return y|0;}x=(c[o>>2]&1|0)!=0;m=c[p>>2]|0;k=(c[t>>2]|0)+-1|0;c[t>>2]=k;s=d[k>>0]|0;do{if(x){mi(v,m,s);k=c[p>>2]|0;n=(c[t>>2]|0)+-1|0;c[t>>2]=n;mi(w,k,d[n>>0]|0);n=(c[t>>2]|0)+-1|0;c[t>>2]=n;ni(u,v,d[n>>0]|0);if(c[q>>2]|0){oi(u);break;}else{pi(u);break;}}else{mi(w,m,s);n=c[p>>2]|0;k=(c[t>>2]|0)+-1|0;c[t>>2]=k;mi(v,n,d[k>>0]|0);}}while(0);c[o>>2]=(c[o>>2]|0)-2;while(1){if((c[t>>2]|0)>>>0<=(c[r>>2]|0)>>>0)break;o=(c[t>>2]|0)+-1|0;c[t>>2]=o;ni(u,w,d[o>>0]|0);o=(c[t>>2]|0)+-1|0;c[t>>2]=o;ni(u,v,d[o>>0]|0);if(c[q>>2]|0)oi(u);else pi(u);}qi(u,w);qi(u,v);c[j>>2]=ri(u)|0;y=c[j>>2]|0;l=i;return y|0;}function li(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[c[g>>2]>>2]=0;c[(c[g>>2]|0)+4>>2]=0;c[(c[g>>2]|0)+8>>2]=c[h>>2];c[(c[g>>2]|0)+12>>2]=c[(c[g>>2]|0)+8>>2];c[(c[g>>2]|0)+16>>2]=(c[(c[g>>2]|0)+8>>2]|0)+(c[i>>2]|0)+-4;if((c[i>>2]|0)>>>0<=4){c[f>>2]=-70;j=c[f>>2]|0;l=e;return j|0;}else{c[f>>2]=0;j=c[f>>2]|0;l=e;return j|0;}return 0;}function mi(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;Di(c[g>>2]|0,c[h>>2]|0);h=(c[(c[g>>2]|0)+8>>2]|0)+(c[i>>2]<<3)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[k>>2]=c[(c[g>>2]|0)+4>>2];c[m>>2]=((c[j+4>>2]|0)+32768|0)>>>16;c[c[g>>2]>>2]=(c[m>>2]<<16)-(c[j+4>>2]|0);c[c[g>>2]>>2]=e[(c[k>>2]|0)+((c[c[g>>2]>>2]>>c[m>>2])+(c[j>>2]|0)<<1)>>1];l=f;return;}function ni(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;d=(c[(c[h>>2]|0)+8>>2]|0)+(c[i>>2]<<3)|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[k>>2]=c[(c[h>>2]|0)+4>>2];c[m>>2]=((c[c[h>>2]>>2]|0)+(c[j+4>>2]|0)|0)>>>16;ti(c[g>>2]|0,c[c[h>>2]>>2]|0,c[m>>2]|0);c[c[h>>2]>>2]=e[(c[k>>2]|0)+((c[c[h>>2]>>2]>>c[m>>2])+(c[j>>2]|0)<<1)>>1];l=f;return;}function oi(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=(c[(c[d>>2]|0)+4>>2]|0)>>>3;ui(c[(c[d>>2]|0)+12>>2]|0,c[c[d>>2]>>2]|0);a=(c[d>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+(c[e>>2]|0);a=(c[d>>2]|0)+4|0;c[a>>2]=c[a>>2]&7;a=c[d>>2]|0;c[a>>2]=(c[a>>2]|0)>>>(c[e>>2]<<3);l=b;return;}function pi(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=(c[(c[d>>2]|0)+4>>2]|0)>>>3;ui(c[(c[d>>2]|0)+12>>2]|0,c[c[d>>2]>>2]|0);a=(c[d>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+(c[e>>2]|0);if((c[(c[d>>2]|0)+12>>2]|0)>>>0>(c[(c[d>>2]|0)+16>>2]|0)>>>0)c[(c[d>>2]|0)+12>>2]=c[(c[d>>2]|0)+16>>2];a=(c[d>>2]|0)+4|0;c[a>>2]=c[a>>2]&7;a=c[d>>2]|0;c[a>>2]=(c[a>>2]|0)>>>(c[e>>2]<<3);l=b;return;}function qi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;ti(c[e>>2]|0,c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+12>>2]|0);pi(c[e>>2]|0);l=d;return;}function ri(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;si(c[e>>2]|0,1,1);pi(c[e>>2]|0);if((c[(c[e>>2]|0)+12>>2]|0)>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}else{c[d>>2]=(c[(c[e>>2]|0)+12>>2]|0)-(c[(c[e>>2]|0)+8>>2]|0)+((c[(c[e>>2]|0)+4>>2]|0)>>>0>0&1);f=c[d>>2]|0;l=b;return f|0;}return 0;}function si(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=c[f>>2]|0;c[d>>2]=c[d>>2]|c[g>>2]<<c[(c[f>>2]|0)+4>>2];g=(c[f>>2]|0)+4|0;c[g>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function ti(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=c[f>>2]|0;c[d>>2]=c[d>>2]|(c[g>>2]&c[2800+(c[h>>2]<<2)>>2])<<c[(c[f>>2]|0)+4>>2];g=(c[f>>2]|0)+4|0;c[g>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function ui(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(vi()|0)!=0;a=c[e>>2]|0;e=c[f>>2]|0;if(b){wi(a,e);l=d;return;}else{xi(a,e,0);l=d;return;}}function vi(){return 1;}function wi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(yi()|0)!=0;a=c[e>>2]|0;e=c[f>>2]|0;if(b){Bi(a,e);l=d;return;}else{Bi(a,Ci(e)|0);l=d;return;}}function xi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;d=(yi()|0)!=0;a=c[f>>2]|0;f=g;g=c[f>>2]|0;b=c[f+4>>2]|0;if(d){zi(a,g,b);l=e;return;}else{d=Ai(g,b)|0;zi(a,d,y);l=e;return;}}function yi(){return d[11936]|0|0;}function zi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f+8|0;h=f;c[g>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;e=h;h=c[e>>2]|0;b=c[e+4>>2]|0;e=c[g>>2]|0;g=e;a[g>>0]=h;a[g+1>>0]=h>>8;a[g+2>>0]=h>>16;a[g+3>>0]=h>>24;h=e+4|0;a[h>>0]=b;a[h+1>>0]=b>>8;a[h+2>>0]=b>>16;a[h+3>>0]=b>>24;l=f;return;}function Ai(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function Bi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[g>>2]|0;g=c[f>>2]|0;a[g>>0]=d;a[g+1>>0]=d>>8;a[g+2>>0]=d>>16;a[g+3>>0]=d>>24;l=e;return;}function Ci(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function Di(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;i=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=c[f>>2];c[h>>2]=c[g>>2];c[i>>2]=(Ei(c[g>>2]|0)|0)&65535;c[c[e>>2]>>2]=1<<c[i>>2];c[(c[e>>2]|0)+4>>2]=(c[h>>2]|0)+4;if(c[i>>2]|0)j=1<<(c[i>>2]|0)-1;else j=1;c[(c[e>>2]|0)+8>>2]=(c[f>>2]|0)+4+(j<<2);c[(c[e>>2]|0)+12>>2]=c[i>>2];l=d;return;}function Ei(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function Fi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=ci(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,1)|0;l=e;return d|0;}function Gi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;f=l;l=l+464|0;g=f+452|0;h=f+448|0;i=f+444|0;j=f+440|0;k=f+436|0;m=f+432|0;n=f+428|0;o=f+424|0;p=f+420|0;q=f+416|0;r=f+160|0;s=f+32|0;t=f;u=f+412|0;v=f+408|0;w=f+404|0;x=f+400|0;y=f+396|0;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[h>>2];c[n>>2]=c[m>>2];c[o>>2]=(c[m>>2]|0)+(c[i>>2]|0);c[p>>2]=12;c[q>>2]=6;if((c[k>>2]|0)>>>0<=1){c[g>>2]=0;z=c[g>>2]|0;l=f;return z|0;}c[u>>2]=Zh(s,p,c[j>>2]|0,c[k>>2]|0)|0;i=(Hi(c[u>>2]|0)|0)!=0;h=c[u>>2]|0;if(i){c[g>>2]=h;z=c[g>>2]|0;l=f;return z|0;}if((h|0)==(c[k>>2]|0)){c[g>>2]=1;z=c[g>>2]|0;l=f;return z|0;}if((c[u>>2]|0)==1){c[g>>2]=0;z=c[g>>2]|0;l=f;return z|0;}c[q>>2]=ei(c[q>>2]|0,c[k>>2]|0,c[p>>2]|0)|0;c[v>>2]=fi(t,c[q>>2]|0,s,c[k>>2]|0,c[p>>2]|0)|0;if(Hi(c[v>>2]|0)|0){c[g>>2]=c[v>>2];z=c[g>>2]|0;l=f;return z|0;}c[w>>2]=Xh(c[n>>2]|0,(c[o>>2]|0)-(c[n>>2]|0)|0,t,c[p>>2]|0,c[q>>2]|0)|0;v=(Hi(c[w>>2]|0)|0)!=0;s=c[w>>2]|0;if(v){c[g>>2]=s;z=c[g>>2]|0;l=f;return z|0;}c[n>>2]=(c[n>>2]|0)+s;c[x>>2]=Uh(r,t,c[p>>2]|0,c[q>>2]|0,f+96|0,64)|0;if(Hi(c[x>>2]|0)|0){c[g>>2]=c[x>>2];z=c[g>>2]|0;l=f;return z|0;}c[y>>2]=ji(c[n>>2]|0,(c[o>>2]|0)-(c[n>>2]|0)|0,c[j>>2]|0,c[k>>2]|0,r)|0;r=(Hi(c[y>>2]|0)|0)!=0;k=c[y>>2]|0;if(r){c[g>>2]=k;z=c[g>>2]|0;l=f;return z|0;}if(!k){c[g>>2]=0;z=c[g>>2]|0;l=f;return z|0;}else{c[n>>2]=(c[n>>2]|0)+(c[y>>2]|0);c[g>>2]=(c[n>>2]|0)-(c[m>>2]|0);z=c[g>>2]|0;l=f;return z|0;}return 0;}function Hi(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function Ii(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;i=l;l=l+320|0;j=i+288|0;k=i+284|0;m=i+280|0;n=i+276|0;o=i+272|0;p=i+268|0;q=i+292|0;r=i;s=i+264|0;t=i+260|0;u=i+256|0;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[s>>2]=c[k>>2];if((c[o>>2]|0)>>>0>255){c[j>>2]=-46;v=c[j>>2]|0;l=i;return v|0;}a[q>>0]=0;c[t>>2]=1;while(1){if((c[t>>2]|0)>>>0>=((c[p>>2]|0)+1|0)>>>0)break;a[q+(c[t>>2]|0)>>0]=(c[p>>2]|0)+1-(c[t>>2]|0);c[t>>2]=(c[t>>2]|0)+1;}c[t>>2]=0;while(1){if((c[t>>2]|0)>>>0>=(c[o>>2]|0)>>>0)break;a[r+(c[t>>2]|0)>>0]=a[q+(d[(c[n>>2]|0)+(c[t>>2]<<2)+2>>0]|0)>>0]|0;c[t>>2]=(c[t>>2]|0)+1;}c[u>>2]=Gi((c[s>>2]|0)+1|0,(c[m>>2]|0)-1|0,r,c[o>>2]|0)|0;n=(Hi(c[u>>2]|0)|0)!=0;q=c[u>>2]|0;if(n){c[j>>2]=q;v=c[j>>2]|0;l=i;return v|0;}if((q>>>0>1?(c[u>>2]|0)>>>0<(((c[o>>2]|0)>>>0)/2|0)>>>0:0)|0){a[c[s>>2]>>0]=c[u>>2];c[j>>2]=(c[u>>2]|0)+1;v=c[j>>2]|0;l=i;return v|0;}if((c[o>>2]|0)>>>0>128){c[j>>2]=-1;v=c[j>>2]|0;l=i;return v|0;}if((((((c[o>>2]|0)+1|0)>>>0)/2|0)+1|0)>>>0>(c[m>>2]|0)>>>0){c[j>>2]=-70;v=c[j>>2]|0;l=i;return v|0;}a[c[s>>2]>>0]=128+((c[o>>2]|0)-1);a[r+(c[o>>2]|0)>>0]=0;c[t>>2]=0;while(1){if((c[t>>2]|0)>>>0>=(c[o>>2]|0)>>>0)break;a[(c[s>>2]|0)+((((c[t>>2]|0)>>>0)/2|0)+1)>>0]=((d[r+(c[t>>2]|0)>>0]|0)<<4)+(d[r+((c[t>>2]|0)+1)>>0]|0);c[t>>2]=(c[t>>2]|0)+2;}c[j>>2]=((((c[o>>2]|0)+1|0)>>>0)/2|0)+1;v=c[j>>2]|0;l=i;return v|0;}function Ji(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;j=l;l=l+464|0;k=j+444|0;m=j+440|0;n=j+436|0;o=j+432|0;p=j+428|0;q=j+128|0;r=j+64|0;s=j+424|0;t=j+420|0;u=j+416|0;v=j+412|0;w=j+408|0;x=j+404|0;y=j+400|0;z=j+396|0;A=j+32|0;B=j;C=j+392|0;D=j+448|0;E=j+388|0;F=j+384|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=i;c[s>>2]=0;c[t>>2]=0;c[u>>2]=fh(q,256,r,t,s,c[o>>2]|0,c[p>>2]|0)|0;if(Hi(c[u>>2]|0)|0){c[k>>2]=c[u>>2];G=c[k>>2]|0;l=j;return G|0;}if((c[s>>2]|0)>>>0>12){c[k>>2]=-44;G=c[k>>2]|0;l=j;return G|0;}if((c[t>>2]|0)>>>0>((c[c[n>>2]>>2]|0)+1|0)>>>0){c[k>>2]=-48;G=c[k>>2]|0;l=j;return G|0;}c[w>>2]=0;c[v>>2]=1;while(1){if((c[v>>2]|0)>>>0>(c[s>>2]|0)>>>0)break;c[x>>2]=c[w>>2];c[w>>2]=(c[w>>2]|0)+(c[r+(c[v>>2]<<2)>>2]<<(c[v>>2]|0)-1);c[r+(c[v>>2]<<2)>>2]=c[x>>2];c[v>>2]=(c[v>>2]|0)+1;}c[y>>2]=0;while(1){if((c[y>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;c[z>>2]=d[q+(c[y>>2]|0)>>0];a[(c[m>>2]|0)+(c[y>>2]<<2)+2>>0]=(c[s>>2]|0)+1-(c[z>>2]|0);c[y>>2]=(c[y>>2]|0)+1;}c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;c[A+12>>2]=0;c[A+16>>2]=0;c[A+20>>2]=0;c[A+24>>2]=0;c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;c[B+12>>2]=0;c[B+16>>2]=0;c[B+20>>2]=0;c[B+24>>2]=0;c[C>>2]=0;while(1){if((c[C>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;y=A+((d[(c[m>>2]|0)+(c[C>>2]<<2)+2>>0]|0)<<1)|0;b[y>>1]=(b[y>>1]|0)+1<<16>>16;c[C>>2]=(c[C>>2]|0)+1;}b[B+((c[s>>2]|0)+1<<1)>>1]=0;b[D>>1]=0;c[E>>2]=c[s>>2];while(1){if((c[E>>2]|0)>>>0<=0)break;b[B+(c[E>>2]<<1)>>1]=b[D>>1]|0;b[D>>1]=(e[D>>1]|0)+(e[A+(c[E>>2]<<1)>>1]|0);b[D>>1]=(e[D>>1]|0)>>1;c[E>>2]=(c[E>>2]|0)+-1;}c[F>>2]=0;while(1){if((c[F>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;E=B+((d[(c[m>>2]|0)+(c[F>>2]<<2)+2>>0]|0)<<1)|0;D=b[E>>1]|0;b[E>>1]=D+1<<16>>16;b[(c[m>>2]|0)+(c[F>>2]<<2)>>1]=D;c[F>>2]=(c[F>>2]|0)+1;}c[c[n>>2]>>2]=(c[t>>2]|0)-1;c[k>>2]=c[u>>2];G=c[k>>2]|0;l=j;return G|0;}function Ki(f,g,h,i,j,k){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;m=l;l=l+128|0;n=m+120|0;o=m+116|0;p=m+112|0;q=m+108|0;r=m+104|0;s=m+100|0;t=m+96|0;u=m+92|0;v=m+88|0;w=m+84|0;x=m+80|0;y=m+76|0;z=m+72|0;A=m+126|0;B=m+68|0;C=m+64|0;D=m+60|0;E=m+32|0;F=m;G=m+124|0;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=i;c[s>>2]=j;c[t>>2]=k;c[u>>2]=c[s>>2];c[v>>2]=(c[u>>2]|0)+8;b[A>>1]=256;if(c[s>>2]&3|0){c[n>>2]=-1;H=c[n>>2]|0;l=m;return H|0;}if((c[t>>2]|0)>>>0<4096){c[n>>2]=-66;H=c[n>>2]|0;l=m;return H|0;}if(!(c[r>>2]|0))c[r>>2]=11;if((c[q>>2]|0)>>>0>255){c[n>>2]=-46;H=c[n>>2]|0;l=m;return H|0;}oE(c[u>>2]|0,0,4096)|0;Li(c[v>>2]|0,c[p>>2]|0,c[q>>2]|0);c[x>>2]=c[q>>2];while(1){I=c[x>>2]|0;if(c[(c[v>>2]|0)+(c[x>>2]<<3)>>2]|0)break;c[x>>2]=I+-1;}c[y>>2]=I;c[B>>2]=(e[A>>1]|0)+(c[y>>2]|0)-1;c[z>>2]=e[A>>1];c[(c[v>>2]|0)+((e[A>>1]|0)<<3)>>2]=(c[(c[v>>2]|0)+(c[y>>2]<<3)>>2]|0)+(c[(c[v>>2]|0)+((c[y>>2]|0)-1<<3)>>2]|0);I=b[A>>1]|0;b[(c[v>>2]|0)+((c[y>>2]|0)-1<<3)+4>>1]=I;b[(c[v>>2]|0)+(c[y>>2]<<3)+4>>1]=I;b[A>>1]=(b[A>>1]|0)+1<<16>>16;c[y>>2]=(c[y>>2]|0)-2;c[w>>2]=e[A>>1];while(1){if((c[w>>2]|0)>>>0>(c[B>>2]|0)>>>0)break;c[(c[v>>2]|0)+(c[w>>2]<<3)>>2]=1073741824;c[w>>2]=(c[w>>2]|0)+1;}c[c[u>>2]>>2]=-2147483648;while(1){J=c[v>>2]|0;if((e[A>>1]|0)>>>0>(c[B>>2]|0)>>>0)break;if((c[J+(c[y>>2]<<3)>>2]|0)>>>0<(c[(c[v>>2]|0)+(c[z>>2]<<3)>>2]|0)>>>0){u=c[y>>2]|0;c[y>>2]=u+-1;K=u;}else{u=c[z>>2]|0;c[z>>2]=u+1;K=u;}c[C>>2]=K;if((c[(c[v>>2]|0)+(c[y>>2]<<3)>>2]|0)>>>0<(c[(c[v>>2]|0)+(c[z>>2]<<3)>>2]|0)>>>0){u=c[y>>2]|0;c[y>>2]=u+-1;L=u;}else{u=c[z>>2]|0;c[z>>2]=u+1;L=u;}c[D>>2]=L;c[(c[v>>2]|0)+((e[A>>1]|0)<<3)>>2]=(c[(c[v>>2]|0)+(c[C>>2]<<3)>>2]|0)+(c[(c[v>>2]|0)+(c[D>>2]<<3)>>2]|0);u=b[A>>1]|0;b[(c[v>>2]|0)+(c[D>>2]<<3)+4>>1]=u;b[(c[v>>2]|0)+(c[C>>2]<<3)+4>>1]=u;b[A>>1]=(b[A>>1]|0)+1<<16>>16;}a[J+(c[B>>2]<<3)+7>>0]=0;c[w>>2]=(c[B>>2]|0)-1;while(1){if((c[w>>2]|0)>>>0<256)break;a[(c[v>>2]|0)+(c[w>>2]<<3)+7>>0]=(d[(c[v>>2]|0)+((e[(c[v>>2]|0)+(c[w>>2]<<3)+4>>1]|0)<<3)+7>>0]|0)+1;c[w>>2]=(c[w>>2]|0)+-1;}c[w>>2]=0;while(1){M=c[v>>2]|0;if((c[w>>2]|0)>>>0>(c[x>>2]|0)>>>0)break;a[(c[v>>2]|0)+(c[w>>2]<<3)+7>>0]=(d[M+((e[(c[v>>2]|0)+(c[w>>2]<<3)+4>>1]|0)<<3)+7>>0]|0)+1;c[w>>2]=(c[w>>2]|0)+1;}c[r>>2]=Mi(M,c[x>>2]|0,c[r>>2]|0)|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;c[E+16>>2]=0;c[E+20>>2]=0;b[E+24>>1]=0;c[F>>2]=0;c[F+4>>2]=0;c[F+8>>2]=0;c[F+12>>2]=0;c[F+16>>2]=0;c[F+20>>2]=0;b[F+24>>1]=0;if((c[r>>2]|0)>>>0>12){c[n>>2]=-1;H=c[n>>2]|0;l=m;return H|0;}c[w>>2]=0;while(1){if((c[w>>2]|0)>>>0>(c[x>>2]|0)>>>0)break;M=E+((d[(c[v>>2]|0)+(c[w>>2]<<3)+7>>0]|0)<<1)|0;b[M>>1]=(b[M>>1]|0)+1<<16>>16;c[w>>2]=(c[w>>2]|0)+1;}b[G>>1]=0;c[w>>2]=c[r>>2];while(1){if((c[w>>2]|0)>>>0<=0)break;b[F+(c[w>>2]<<1)>>1]=b[G>>1]|0;b[G>>1]=(e[G>>1]|0)+(e[E+(c[w>>2]<<1)>>1]|0);b[G>>1]=(e[G>>1]|0)>>1;c[w>>2]=(c[w>>2]|0)+-1;}c[w>>2]=0;while(1){if((c[w>>2]|0)>>>0>(c[q>>2]|0)>>>0)break;a[(c[o>>2]|0)+((d[(c[v>>2]|0)+(c[w>>2]<<3)+6>>0]|0)<<2)+2>>0]=a[(c[v>>2]|0)+(c[w>>2]<<3)+7>>0]|0;c[w>>2]=(c[w>>2]|0)+1;}c[w>>2]=0;while(1){if((c[w>>2]|0)>>>0>(c[q>>2]|0)>>>0)break;v=F+((d[(c[o>>2]|0)+(c[w>>2]<<2)+2>>0]|0)<<1)|0;G=b[v>>1]|0;b[v>>1]=G+1<<16>>16;b[(c[o>>2]|0)+(c[w>>2]<<2)>>1]=G;c[w>>2]=(c[w>>2]|0)+1;}c[n>>2]=c[r>>2];H=c[n>>2]|0;l=m;return H|0;}function Li(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+288|0;g=f+284|0;h=f+280|0;i=f+276|0;j=f;k=f+272|0;m=f+268|0;n=f+264|0;o=f+260|0;p=f+256|0;c[g>>2]=b;c[h>>2]=d;c[i>>2]=e;oE(j|0,0,256)|0;c[k>>2]=0;while(1){if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0)break;c[m>>2]=Ni((c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)+1|0)|0;e=j+(c[m>>2]<<3)|0;c[e>>2]=(c[e>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+1;}c[k>>2]=30;while(1){if((c[k>>2]|0)>>>0<=0)break;m=j+((c[k>>2]|0)-1<<3)|0;c[m>>2]=(c[m>>2]|0)+(c[j+(c[k>>2]<<3)>>2]|0);c[k>>2]=(c[k>>2]|0)+-1;}c[k>>2]=0;while(1){if((c[k>>2]|0)>>>0>=32)break;c[j+(c[k>>2]<<3)+4>>2]=c[j+(c[k>>2]<<3)>>2];c[k>>2]=(c[k>>2]|0)+1;}c[k>>2]=0;while(1){if((c[k>>2]|0)>>>0>(c[i>>2]|0)>>>0)break;c[n>>2]=c[(c[h>>2]|0)+(c[k>>2]<<2)>>2];c[o>>2]=(Ni((c[n>>2]|0)+1|0)|0)+1;m=j+(c[o>>2]<<3)+4|0;e=c[m>>2]|0;c[m>>2]=e+1;c[p>>2]=e;while(1){if((c[p>>2]|0)>>>0<=(c[j+(c[o>>2]<<3)>>2]|0)>>>0)break;if((c[n>>2]|0)>>>0<=(c[(c[g>>2]|0)+((c[p>>2]|0)-1<<3)>>2]|0)>>>0)break;e=(c[g>>2]|0)+(c[p>>2]<<3)|0;m=(c[g>>2]|0)+((c[p>>2]|0)-1<<3)|0;c[e>>2]=c[m>>2];c[e+4>>2]=c[m+4>>2];c[p>>2]=(c[p>>2]|0)+-1;}c[(c[g>>2]|0)+(c[p>>2]<<3)>>2]=c[n>>2];a[(c[g>>2]|0)+(c[p>>2]<<3)+6>>0]=c[k>>2];c[k>>2]=(c[k>>2]|0)+1;}l=f;return;}function Mi(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;g=l;l=l+128|0;h=g+116|0;i=g+112|0;j=g+108|0;k=g+104|0;m=g+100|0;n=g+96|0;o=g+92|0;p=g+88|0;q=g+84|0;r=g;s=g+80|0;t=g+76|0;u=g+72|0;v=g+68|0;w=g+64|0;x=g+60|0;y=g+56|0;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=d[(c[i>>2]|0)+(c[j>>2]<<3)+7>>0];if((c[m>>2]|0)>>>0<=(c[k>>2]|0)>>>0){c[h>>2]=c[m>>2];z=c[h>>2]|0;l=g;return z|0;}c[n>>2]=0;c[o>>2]=1<<(c[m>>2]|0)-(c[k>>2]|0);c[p>>2]=c[j>>2];while(1){if((d[(c[i>>2]|0)+(c[p>>2]<<3)+7>>0]|0)>>>0<=(c[k>>2]|0)>>>0)break;c[n>>2]=(c[n>>2]|0)+((c[o>>2]|0)-(1<<(c[m>>2]|0)-(d[(c[i>>2]|0)+(c[p>>2]<<3)+7>>0]|0)));a[(c[i>>2]|0)+(c[p>>2]<<3)+7>>0]=c[k>>2];c[p>>2]=(c[p>>2]|0)+-1;}while(1){if((d[(c[i>>2]|0)+(c[p>>2]<<3)+7>>0]|0|0)!=(c[k>>2]|0))break;c[p>>2]=(c[p>>2]|0)+-1;}c[n>>2]=c[n>>2]>>(c[m>>2]|0)-(c[k>>2]|0);c[q>>2]=-252645136;q=r;m=q+56|0;do{c[q>>2]=-252645136;q=q+4|0;}while((q|0)<(m|0));c[t>>2]=c[k>>2];c[s>>2]=c[p>>2];while(1){if((c[s>>2]|0)<0)break;if((d[(c[i>>2]|0)+(c[s>>2]<<3)+7>>0]|0)>>>0<(c[t>>2]|0)>>>0){c[t>>2]=d[(c[i>>2]|0)+(c[s>>2]<<3)+7>>0];c[r+((c[k>>2]|0)-(c[t>>2]|0)<<2)>>2]=c[s>>2];}c[s>>2]=(c[s>>2]|0)+-1;}while(1){if((c[n>>2]|0)<=0)break;c[u>>2]=(Ni(c[n>>2]|0)|0)+1;while(1){if((c[u>>2]|0)>>>0<=1)break;c[v>>2]=c[r+(c[u>>2]<<2)>>2];c[w>>2]=c[r+((c[u>>2]|0)-1<<2)>>2];if((c[v>>2]|0)!=-252645136){if((c[w>>2]|0)==-252645136)break;c[x>>2]=c[(c[i>>2]|0)+(c[v>>2]<<3)>>2];c[y>>2]=c[(c[i>>2]|0)+(c[w>>2]<<3)>>2]<<1;if((c[x>>2]|0)>>>0<=(c[y>>2]|0)>>>0)break;}c[u>>2]=(c[u>>2]|0)+-1;}while(1){if((c[u>>2]|0)>>>0<=12)A=(c[r+(c[u>>2]<<2)>>2]|0)==-252645136;else A=0;B=c[u>>2]|0;if(!A)break;c[u>>2]=B+1;}c[n>>2]=(c[n>>2]|0)-(1<<B-1);if((c[r+((c[u>>2]|0)-1<<2)>>2]|0)==-252645136)c[r+((c[u>>2]|0)-1<<2)>>2]=c[r+(c[u>>2]<<2)>>2];s=(c[i>>2]|0)+(c[r+(c[u>>2]<<2)>>2]<<3)+7|0;a[s>>0]=(a[s>>0]|0)+1<<24>>24;s=r+(c[u>>2]<<2)|0;if(c[r+(c[u>>2]<<2)>>2]|0){c[s>>2]=(c[s>>2]|0)+-1;if((d[(c[i>>2]|0)+(c[r+(c[u>>2]<<2)>>2]<<3)+7>>0]|0|0)!=((c[k>>2]|0)-(c[u>>2]|0)|0))c[r+(c[u>>2]<<2)>>2]=-252645136;}else c[s>>2]=-252645136;}while(1){if((c[n>>2]|0)>=0)break;if((c[r+4>>2]|0)!=-252645136){u=(c[i>>2]|0)+((c[r+4>>2]|0)+1<<3)+7|0;a[u>>0]=(a[u>>0]|0)+-1<<24>>24;u=r+4|0;c[u>>2]=(c[u>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+1;continue;}while(1){if((d[(c[i>>2]|0)+(c[p>>2]<<3)+7>>0]|0|0)!=(c[k>>2]|0))break;c[p>>2]=(c[p>>2]|0)+-1;}u=(c[i>>2]|0)+((c[p>>2]|0)+1<<3)+7|0;a[u>>0]=(a[u>>0]|0)+-1<<24>>24;c[r+4>>2]=(c[p>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+1;}c[h>>2]=c[k>>2];z=c[h>>2]|0;l=g;return z|0;}function Ni(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function Oi(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;g=c[j>>2]|0;j=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;if(c[p>>2]|0){c[i>>2]=Pi(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}else{c[i>>2]=Qi(g,j,k,m,n)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function Pi(a,b,f,g,h){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;i=l;l=l+176|0;j=i+168|0;k=i+164|0;m=i+160|0;n=i+156|0;o=i+152|0;p=i+148|0;q=i+144|0;r=i+140|0;s=i+136|0;t=i+132|0;u=i+128|0;v=i+124|0;w=i+120|0;x=i+116|0;y=i+112|0;z=i+108|0;A=i+104|0;B=i+100|0;C=i+96|0;D=i+92|0;E=i+88|0;F=i+84|0;G=i+80|0;H=i+76|0;I=i+72|0;J=i+68|0;K=i+64|0;L=i+60|0;M=i+56|0;N=i+52|0;O=i+48|0;P=i+44|0;Q=i+24|0;R=i+20|0;S=i+16|0;T=i+12|0;U=i+8|0;V=i+4|0;W=i;c[S>>2]=a;c[T>>2]=b;c[U>>2]=f;c[V>>2]=g;c[W>>2]=h;h=c[T>>2]|0;T=c[U>>2]|0;U=c[V>>2]|0;V=c[W>>2]|0;c[G>>2]=c[S>>2];c[H>>2]=h;c[I>>2]=T;c[J>>2]=U;c[K>>2]=V;c[L>>2]=c[I>>2];c[M>>2]=c[G>>2];c[N>>2]=(c[M>>2]|0)+(c[H>>2]|0);c[O>>2]=c[M>>2];if((c[H>>2]|0)>>>0<8){c[F>>2]=0;X=c[F>>2]|0;l=i;return X|0;}c[R>>2]=Ri(Q,c[O>>2]|0,(c[N>>2]|0)-(c[O>>2]|0)|0)|0;if(Hi(c[R>>2]|0)|0){c[F>>2]=0;X=c[F>>2]|0;l=i;return X|0;}c[P>>2]=c[J>>2]&-4;switch(c[J>>2]&3|0){case 3:{J=d[(c[L>>2]|0)+((c[P>>2]|0)+2)>>0]|0;R=c[K>>2]|0;c[C>>2]=Q;c[D>>2]=J;c[E>>2]=R;Si(c[C>>2]|0,e[(c[E>>2]|0)+(c[D>>2]<<2)>>1]|0,d[(c[E>>2]|0)+(c[D>>2]<<2)+2>>0]|0);Ti(Q);Y=7;break;}case 2:{Y=7;break;}case 1:{Y=8;break;}case 0:break;default:{}}if((Y|0)==7){D=d[(c[L>>2]|0)+((c[P>>2]|0)+1)>>0]|0;E=c[K>>2]|0;c[z>>2]=Q;c[A>>2]=D;c[B>>2]=E;Si(c[z>>2]|0,e[(c[B>>2]|0)+(c[A>>2]<<2)>>1]|0,d[(c[B>>2]|0)+(c[A>>2]<<2)+2>>0]|0);Y=8;}if((Y|0)==8){Y=d[(c[L>>2]|0)+(c[P>>2]|0)>>0]|0;A=c[K>>2]|0;c[w>>2]=Q;c[x>>2]=Y;c[y>>2]=A;Si(c[w>>2]|0,e[(c[y>>2]|0)+(c[x>>2]<<2)>>1]|0,d[(c[y>>2]|0)+(c[x>>2]<<2)+2>>0]|0);Ti(Q);}while(1){if((c[P>>2]|0)>>>0<=0)break;x=d[(c[L>>2]|0)+((c[P>>2]|0)-1)>>0]|0;y=c[K>>2]|0;c[t>>2]=Q;c[u>>2]=x;c[v>>2]=y;Si(c[t>>2]|0,e[(c[v>>2]|0)+(c[u>>2]<<2)>>1]|0,d[(c[v>>2]|0)+(c[u>>2]<<2)+2>>0]|0);y=d[(c[L>>2]|0)+((c[P>>2]|0)-2)>>0]|0;x=c[K>>2]|0;c[q>>2]=Q;c[r>>2]=y;c[s>>2]=x;Si(c[q>>2]|0,e[(c[s>>2]|0)+(c[r>>2]<<2)>>1]|0,d[(c[s>>2]|0)+(c[r>>2]<<2)+2>>0]|0);Ti(Q);x=d[(c[L>>2]|0)+((c[P>>2]|0)-3)>>0]|0;y=c[K>>2]|0;c[n>>2]=Q;c[o>>2]=x;c[p>>2]=y;Si(c[n>>2]|0,e[(c[p>>2]|0)+(c[o>>2]<<2)>>1]|0,d[(c[p>>2]|0)+(c[o>>2]<<2)+2>>0]|0);y=d[(c[L>>2]|0)+((c[P>>2]|0)-4)>>0]|0;x=c[K>>2]|0;c[j>>2]=Q;c[k>>2]=y;c[m>>2]=x;Si(c[j>>2]|0,e[(c[m>>2]|0)+(c[k>>2]<<2)>>1]|0,d[(c[m>>2]|0)+(c[k>>2]<<2)+2>>0]|0);Ti(Q);c[P>>2]=(c[P>>2]|0)-4;}c[F>>2]=Ui(Q)|0;X=c[F>>2]|0;l=i;return X|0;}function Qi(a,b,f,g,h){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;i=l;l=l+176|0;j=i+168|0;k=i+164|0;m=i+160|0;n=i+156|0;o=i+152|0;p=i+148|0;q=i+144|0;r=i+140|0;s=i+136|0;t=i+132|0;u=i+128|0;v=i+124|0;w=i+120|0;x=i+116|0;y=i+112|0;z=i+108|0;A=i+104|0;B=i+100|0;C=i+96|0;D=i+92|0;E=i+88|0;F=i+84|0;G=i+80|0;H=i+76|0;I=i+72|0;J=i+68|0;K=i+64|0;L=i+60|0;M=i+56|0;N=i+52|0;O=i+48|0;P=i+44|0;Q=i+24|0;R=i+20|0;S=i+16|0;T=i+12|0;U=i+8|0;V=i+4|0;W=i;c[S>>2]=a;c[T>>2]=b;c[U>>2]=f;c[V>>2]=g;c[W>>2]=h;h=c[T>>2]|0;T=c[U>>2]|0;U=c[V>>2]|0;V=c[W>>2]|0;c[G>>2]=c[S>>2];c[H>>2]=h;c[I>>2]=T;c[J>>2]=U;c[K>>2]=V;c[L>>2]=c[I>>2];c[M>>2]=c[G>>2];c[N>>2]=(c[M>>2]|0)+(c[H>>2]|0);c[O>>2]=c[M>>2];if((c[H>>2]|0)>>>0<8){c[F>>2]=0;X=c[F>>2]|0;l=i;return X|0;}c[R>>2]=Ri(Q,c[O>>2]|0,(c[N>>2]|0)-(c[O>>2]|0)|0)|0;if(Hi(c[R>>2]|0)|0){c[F>>2]=0;X=c[F>>2]|0;l=i;return X|0;}c[P>>2]=c[J>>2]&-4;switch(c[J>>2]&3|0){case 3:{J=d[(c[L>>2]|0)+((c[P>>2]|0)+2)>>0]|0;R=c[K>>2]|0;c[C>>2]=Q;c[D>>2]=J;c[E>>2]=R;Si(c[C>>2]|0,e[(c[E>>2]|0)+(c[D>>2]<<2)>>1]|0,d[(c[E>>2]|0)+(c[D>>2]<<2)+2>>0]|0);Ti(Q);Y=7;break;}case 2:{Y=7;break;}case 1:{Y=8;break;}case 0:break;default:{}}if((Y|0)==7){D=d[(c[L>>2]|0)+((c[P>>2]|0)+1)>>0]|0;E=c[K>>2]|0;c[z>>2]=Q;c[A>>2]=D;c[B>>2]=E;Si(c[z>>2]|0,e[(c[B>>2]|0)+(c[A>>2]<<2)>>1]|0,d[(c[B>>2]|0)+(c[A>>2]<<2)+2>>0]|0);Y=8;}if((Y|0)==8){Y=d[(c[L>>2]|0)+(c[P>>2]|0)>>0]|0;A=c[K>>2]|0;c[w>>2]=Q;c[x>>2]=Y;c[y>>2]=A;Si(c[w>>2]|0,e[(c[y>>2]|0)+(c[x>>2]<<2)>>1]|0,d[(c[y>>2]|0)+(c[x>>2]<<2)+2>>0]|0);Ti(Q);}while(1){if((c[P>>2]|0)>>>0<=0)break;x=d[(c[L>>2]|0)+((c[P>>2]|0)-1)>>0]|0;y=c[K>>2]|0;c[t>>2]=Q;c[u>>2]=x;c[v>>2]=y;Si(c[t>>2]|0,e[(c[v>>2]|0)+(c[u>>2]<<2)>>1]|0,d[(c[v>>2]|0)+(c[u>>2]<<2)+2>>0]|0);y=d[(c[L>>2]|0)+((c[P>>2]|0)-2)>>0]|0;x=c[K>>2]|0;c[q>>2]=Q;c[r>>2]=y;c[s>>2]=x;Si(c[q>>2]|0,e[(c[s>>2]|0)+(c[r>>2]<<2)>>1]|0,d[(c[s>>2]|0)+(c[r>>2]<<2)+2>>0]|0);Ti(Q);x=d[(c[L>>2]|0)+((c[P>>2]|0)-3)>>0]|0;y=c[K>>2]|0;c[n>>2]=Q;c[o>>2]=x;c[p>>2]=y;Si(c[n>>2]|0,e[(c[p>>2]|0)+(c[o>>2]<<2)>>1]|0,d[(c[p>>2]|0)+(c[o>>2]<<2)+2>>0]|0);y=d[(c[L>>2]|0)+((c[P>>2]|0)-4)>>0]|0;x=c[K>>2]|0;c[j>>2]=Q;c[k>>2]=y;c[m>>2]=x;Si(c[j>>2]|0,e[(c[m>>2]|0)+(c[k>>2]<<2)>>1]|0,d[(c[m>>2]|0)+(c[k>>2]<<2)+2>>0]|0);Ti(Q);c[P>>2]=(c[P>>2]|0)-4;}c[F>>2]=Ui(Q)|0;X=c[F>>2]|0;l=i;return X|0;}function Ri(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[c[g>>2]>>2]=0;c[(c[g>>2]|0)+4>>2]=0;c[(c[g>>2]|0)+8>>2]=c[h>>2];c[(c[g>>2]|0)+12>>2]=c[(c[g>>2]|0)+8>>2];c[(c[g>>2]|0)+16>>2]=(c[(c[g>>2]|0)+8>>2]|0)+(c[i>>2]|0)+-4;if((c[i>>2]|0)>>>0<=4){c[f>>2]=-70;j=c[f>>2]|0;l=e;return j|0;}else{c[f>>2]=0;j=c[f>>2]|0;l=e;return j|0;}return 0;}function Si(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=c[f>>2]|0;c[d>>2]=c[d>>2]|c[g>>2]<<c[(c[f>>2]|0)+4>>2];g=(c[f>>2]|0)+4|0;c[g>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function Ti(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=(c[(c[d>>2]|0)+4>>2]|0)>>>3;Vi(c[(c[d>>2]|0)+12>>2]|0,c[c[d>>2]>>2]|0);a=(c[d>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+(c[e>>2]|0);if((c[(c[d>>2]|0)+12>>2]|0)>>>0>(c[(c[d>>2]|0)+16>>2]|0)>>>0)c[(c[d>>2]|0)+12>>2]=c[(c[d>>2]|0)+16>>2];a=(c[d>>2]|0)+4|0;c[a>>2]=c[a>>2]&7;a=c[d>>2]|0;c[a>>2]=(c[a>>2]|0)>>>(c[e>>2]<<3);l=b;return;}function Ui(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;Si(c[e>>2]|0,1,1);Ti(c[e>>2]|0);if((c[(c[e>>2]|0)+12>>2]|0)>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}else{c[d>>2]=(c[(c[e>>2]|0)+12>>2]|0)-(c[(c[e>>2]|0)+8>>2]|0)+((c[(c[e>>2]|0)+4>>2]|0)>>>0>0&1);f=c[d>>2]|0;l=b;return f|0;}return 0;}function Vi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(Wi()|0)!=0;a=c[e>>2]|0;e=c[f>>2]|0;if(b){Xi(a,e);l=d;return;}else{Yi(a,e,0);l=d;return;}}function Wi(){return 1;}function Xi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(Zi()|0)!=0;a=c[e>>2]|0;e=c[f>>2]|0;if(b){aj(a,e);l=d;return;}else{aj(a,bj(e)|0);l=d;return;}}function Yi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;d=(Zi()|0)!=0;a=c[f>>2]|0;f=g;g=c[f>>2]|0;b=c[f+4>>2]|0;if(d){_i(a,g,b);l=e;return;}else{d=$i(g,b)|0;_i(a,d,y);l=e;return;}}function Zi(){return d[11936]|0|0;}function _i(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f+8|0;h=f;c[g>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;e=h;h=c[e>>2]|0;b=c[e+4>>2]|0;e=c[g>>2]|0;g=e;a[g>>0]=h;a[g+1>>0]=h>>8;a[g+2>>0]=h>>16;a[g+3>>0]=h>>24;h=e+4|0;a[h>>0]=b;a[h+1>>0]=b>>8;a[h+2>>0]=b>>16;a[h+3>>0]=b>>24;l=f;return;}function $i(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function aj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[g>>2]|0;g=c[f>>2]|0;a[g>>0]=d;a[g+1>>0]=d>>8;a[g+2>>0]=d>>16;a[g+3>>0]=d>>24;l=e;return;}function bj(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function cj(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;h=l;l=l+80|0;i=h+64|0;j=h+60|0;k=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;p=h+40|0;q=h+36|0;r=h+32|0;s=h+28|0;t=h+24|0;u=h+20|0;v=h+16|0;w=h+12|0;x=h+8|0;y=h+4|0;z=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=(((c[n>>2]|0)+3|0)>>>0)/4|0;c[r>>2]=c[m>>2];c[s>>2]=(c[r>>2]|0)+(c[n>>2]|0);c[t>>2]=c[j>>2];c[u>>2]=(c[t>>2]|0)+(c[k>>2]|0);c[v>>2]=c[t>>2];if((c[k>>2]|0)>>>0<17){c[i>>2]=0;A=c[i>>2]|0;l=h;return A|0;}if((c[n>>2]|0)>>>0<12){c[i>>2]=0;A=c[i>>2]|0;l=h;return A|0;}c[v>>2]=(c[v>>2]|0)+6;c[w>>2]=Oi(c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,c[r>>2]|0,c[q>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;n=(Hi(c[w>>2]|0)|0)!=0;k=c[w>>2]|0;if(n){c[i>>2]=k;A=c[i>>2]|0;l=h;return A|0;}if(!k){c[i>>2]=0;A=c[i>>2]|0;l=h;return A|0;}dj(c[t>>2]|0,c[w>>2]&65535);c[v>>2]=(c[v>>2]|0)+(c[w>>2]|0);c[r>>2]=(c[r>>2]|0)+(c[q>>2]|0);c[x>>2]=Oi(c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,c[r>>2]|0,c[q>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;w=(Hi(c[x>>2]|0)|0)!=0;k=c[x>>2]|0;if(w){c[i>>2]=k;A=c[i>>2]|0;l=h;return A|0;}if(!k){c[i>>2]=0;A=c[i>>2]|0;l=h;return A|0;}dj((c[t>>2]|0)+2|0,c[x>>2]&65535);c[v>>2]=(c[v>>2]|0)+(c[x>>2]|0);c[r>>2]=(c[r>>2]|0)+(c[q>>2]|0);c[y>>2]=Oi(c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,c[r>>2]|0,c[q>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;x=(Hi(c[y>>2]|0)|0)!=0;k=c[y>>2]|0;if(x){c[i>>2]=k;A=c[i>>2]|0;l=h;return A|0;}if(!k){c[i>>2]=0;A=c[i>>2]|0;l=h;return A|0;}dj((c[t>>2]|0)+4|0,c[y>>2]&65535);c[v>>2]=(c[v>>2]|0)+(c[y>>2]|0);c[r>>2]=(c[r>>2]|0)+(c[q>>2]|0);c[z>>2]=Oi(c[v>>2]|0,(c[u>>2]|0)-(c[v>>2]|0)|0,c[r>>2]|0,(c[s>>2]|0)-(c[r>>2]|0)|0,c[o>>2]|0,c[p>>2]|0)|0;p=(Hi(c[z>>2]|0)|0)!=0;o=c[z>>2]|0;if(p){c[i>>2]=o;A=c[i>>2]|0;l=h;return A|0;}if(!o){c[i>>2]=0;A=c[i>>2]|0;l=h;return A|0;}else{c[v>>2]=(c[v>>2]|0)+(c[z>>2]|0);c[i>>2]=(c[v>>2]|0)-(c[t>>2]|0);A=c[i>>2]|0;l=h;return A|0;}return 0;}function dj(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+4|0;i=g+8|0;j=g;c[h>>2]=d;b[i>>1]=f;f=(Zi()|0)!=0;d=c[h>>2]|0;if(f){ej(d,b[i>>1]|0);l=g;return;}else{c[j>>2]=d;a[c[j>>2]>>0]=b[i>>1];a[(c[j>>2]|0)+1>>0]=(e[i>>1]|0)>>8;l=g;return;}}function ej(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;h=f+4|0;c[g>>2]=d;b[h>>1]=e;e=b[h>>1]|0;h=c[g>>2]|0;a[h>>0]=e;a[h+1>>0]=e>>8;l=f;return;}function fj(b,d,e,f,g,h,i,j,k,m,n,o,p){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;q=l;l=l+96|0;r=q+88|0;s=q+84|0;t=q+80|0;u=q+76|0;v=q+72|0;w=q+68|0;x=q+64|0;y=q+60|0;z=q+56|0;A=q+52|0;B=q+48|0;C=q+44|0;D=q+40|0;E=q+36|0;F=q+32|0;G=q+28|0;H=q+24|0;I=q+20|0;J=q+16|0;K=q+12|0;L=q+8|0;M=q+4|0;N=q;c[s>>2]=b;c[t>>2]=d;c[u>>2]=e;c[v>>2]=f;c[w>>2]=g;c[x>>2]=h;c[y>>2]=i;c[z>>2]=j;c[A>>2]=k;c[B>>2]=m;c[C>>2]=n;c[D>>2]=o;c[E>>2]=p;c[F>>2]=c[z>>2];c[G>>2]=c[s>>2];c[H>>2]=(c[G>>2]|0)+(c[t>>2]|0);c[I>>2]=c[G>>2];if(c[z>>2]&3|0){c[r>>2]=-1;O=c[r>>2]|0;l=q;return O|0;}if((c[A>>2]|0)>>>0<6144){c[r>>2]=-66;O=c[r>>2]|0;l=q;return O|0;}if(!(c[v>>2]|0)){c[r>>2]=0;O=c[r>>2]|0;l=q;return O|0;}if(!(c[t>>2]|0)){c[r>>2]=0;O=c[r>>2]|0;l=q;return O|0;}if((c[v>>2]|0)>>>0>131072){c[r>>2]=-72;O=c[r>>2]|0;l=q;return O|0;}if((c[x>>2]|0)>>>0>12){c[r>>2]=-44;O=c[r>>2]|0;l=q;return O|0;}if((c[w>>2]|0)>>>0>255){c[r>>2]=-46;O=c[r>>2]|0;l=q;return O|0;}if(!(c[w>>2]|0))c[w>>2]=255;if(!(c[x>>2]|0))c[x>>2]=11;if((c[D>>2]|0)!=0&(c[C>>2]|0)!=0?(c[c[C>>2]>>2]|0)==2:0){c[r>>2]=gj(c[G>>2]|0,c[I>>2]|0,c[H>>2]|0,c[u>>2]|0,c[v>>2]|0,c[y>>2]|0,c[B>>2]|0,c[E>>2]|0)|0;O=c[r>>2]|0;l=q;return O|0;}c[J>>2]=bi(c[F>>2]|0,w,c[u>>2]|0,c[v>>2]|0,c[F>>2]|0)|0;A=(Hi(c[J>>2]|0)|0)!=0;z=c[J>>2]|0;if(A){c[r>>2]=z;O=c[r>>2]|0;l=q;return O|0;}if((z|0)==(c[v>>2]|0)){a[c[G>>2]>>0]=a[c[u>>2]>>0]|0;c[r>>2]=1;O=c[r>>2]|0;l=q;return O|0;}if((c[J>>2]|0)>>>0<=(((c[v>>2]|0)>>>7)+1|0)>>>0){c[r>>2]=0;O=c[r>>2]|0;l=q;return O|0;}if((c[C>>2]|0?(c[c[C>>2]>>2]|0)==1:0)?(hj(c[B>>2]|0,c[F>>2]|0,c[w>>2]|0)|0)==0:0)c[c[C>>2]>>2]=0;if((c[D>>2]|0)!=0&(c[C>>2]|0)!=0?c[c[C>>2]>>2]|0:0){c[r>>2]=gj(c[G>>2]|0,c[I>>2]|0,c[H>>2]|0,c[u>>2]|0,c[v>>2]|0,c[y>>2]|0,c[B>>2]|0,c[E>>2]|0)|0;O=c[r>>2]|0;l=q;return O|0;}c[x>>2]=Fi(c[x>>2]|0,c[v>>2]|0,c[w>>2]|0)|0;c[K>>2]=Ki((c[F>>2]|0)+1024|0,c[F>>2]|0,c[w>>2]|0,c[x>>2]|0,(c[F>>2]|0)+2048|0,4096)|0;D=(Hi(c[K>>2]|0)|0)!=0;J=c[K>>2]|0;if(D){c[r>>2]=J;O=c[r>>2]|0;l=q;return O|0;}c[x>>2]=J;oE((c[F>>2]|0)+1024+((c[w>>2]|0)+1<<2)|0,0,1024-((c[w>>2]|0)+1<<2)|0)|0;c[L>>2]=Ii(c[I>>2]|0,c[t>>2]|0,(c[F>>2]|0)+1024|0,c[w>>2]|0,c[x>>2]|0)|0;if(Hi(c[L>>2]|0)|0){c[r>>2]=c[L>>2];O=c[r>>2]|0;l=q;return O|0;}do{if(c[C>>2]|0?c[c[C>>2]>>2]|0:0){c[M>>2]=ij(c[B>>2]|0,c[F>>2]|0,c[w>>2]|0)|0;c[N>>2]=ij((c[F>>2]|0)+1024|0,c[F>>2]|0,c[w>>2]|0)|0;if((c[M>>2]|0)>>>0>((c[L>>2]|0)+(c[N>>2]|0)|0)>>>0?((c[L>>2]|0)+12|0)>>>0<(c[v>>2]|0)>>>0:0)break;c[r>>2]=gj(c[G>>2]|0,c[I>>2]|0,c[H>>2]|0,c[u>>2]|0,c[v>>2]|0,c[y>>2]|0,c[B>>2]|0,c[E>>2]|0)|0;O=c[r>>2]|0;l=q;return O|0;}}while(0);if(((c[L>>2]|0)+12|0)>>>0>=(c[v>>2]|0)>>>0){c[r>>2]=0;O=c[r>>2]|0;l=q;return O|0;}c[I>>2]=(c[I>>2]|0)+(c[L>>2]|0);if(c[C>>2]|0)c[c[C>>2]>>2]=0;if(c[B>>2]|0)mE(c[B>>2]|0,(c[F>>2]|0)+1024|0,1024)|0;c[r>>2]=gj(c[G>>2]|0,c[I>>2]|0,c[H>>2]|0,c[u>>2]|0,c[v>>2]|0,c[y>>2]|0,(c[F>>2]|0)+1024|0,c[E>>2]|0)|0;O=c[r>>2]|0;l=q;return O|0;}function gj(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=l;l=l+48|0;k=j+36|0;m=j+32|0;n=j+28|0;o=j+24|0;p=j+20|0;q=j+16|0;r=j+12|0;s=j+8|0;t=j+4|0;u=j;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;i=c[n>>2]|0;h=(c[o>>2]|0)-(c[n>>2]|0)|0;o=c[p>>2]|0;p=c[q>>2]|0;g=c[s>>2]|0;s=c[t>>2]|0;if(c[r>>2]|0)v=Oi(i,h,o,p,g,s)|0;else v=cj(i,h,o,p,g,s)|0;c[u>>2]=v;v=(Hi(c[u>>2]|0)|0)!=0;s=c[u>>2]|0;if(v){c[k>>2]=s;w=c[k>>2]|0;l=j;return w|0;}if(!s){c[k>>2]=0;w=c[k>>2]|0;l=j;return w|0;}c[n>>2]=(c[n>>2]|0)+(c[u>>2]|0);if(((c[n>>2]|0)-(c[m>>2]|0)|0)>>>0>=((c[q>>2]|0)-1|0)>>>0){c[k>>2]=0;w=c[k>>2]|0;l=j;return w|0;}else{c[k>>2]=(c[n>>2]|0)-(c[m>>2]|0);w=c[k>>2]|0;l=j;return w|0;}return 0;}function hj(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=e;c[j>>2]=0;c[k>>2]=0;while(1){if((c[k>>2]|0)>(c[i>>2]|0))break;c[j>>2]=c[j>>2]|(c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0?(d[(c[g>>2]|0)+(c[k>>2]<<2)+2>>0]|0|0)==0:0);c[k>>2]=(c[k>>2]|0)+1;}l=f;return((c[j>>2]|0)!=0^1)&1|0;}function ij(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=e;c[j>>2]=0;c[k>>2]=0;while(1){if((c[k>>2]|0)>(c[i>>2]|0))break;e=N(d[(c[g>>2]|0)+(c[k>>2]<<2)+2>>0]|0,c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+e;c[k>>2]=(c[k>>2]|0)+1;}l=f;return(c[j>>2]|0)>>>3|0;}function jj(a,b,d,e,f,g,h,i,j,k,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;o=l;l=l+48|0;p=o+44|0;q=o+40|0;r=o+36|0;s=o+32|0;t=o+28|0;u=o+24|0;v=o+20|0;w=o+16|0;x=o+12|0;y=o+8|0;z=o+4|0;A=o;c[p>>2]=a;c[q>>2]=b;c[r>>2]=d;c[s>>2]=e;c[t>>2]=f;c[u>>2]=g;c[v>>2]=h;c[w>>2]=i;c[x>>2]=j;c[y>>2]=k;c[z>>2]=m;c[A>>2]=n;n=fj(c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,1,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;l=o;return n|0;}function kj(a,b,d,e,f,g,h,i,j,k,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;o=l;l=l+48|0;p=o+44|0;q=o+40|0;r=o+36|0;s=o+32|0;t=o+28|0;u=o+24|0;v=o+20|0;w=o+16|0;x=o+12|0;y=o+8|0;z=o+4|0;A=o;c[p>>2]=a;c[q>>2]=b;c[r>>2]=d;c[s>>2]=e;c[t>>2]=f;c[u>>2]=g;c[v>>2]=h;c[w>>2]=i;c[x>>2]=j;c[y>>2]=k;c[z>>2]=m;c[A>>2]=n;n=fj(c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,0,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;l=o;return n|0;}function lj(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+((c[d>>2]|0)>>>8)|0;if((c[d>>2]|0)>>>0>=131072){e=0;f=a+e|0;l=b;return f|0;}e=(131072-(c[d>>2]|0)|0)>>>11;f=a+e|0;l=b;return f|0;}function mj(){var a=0,b=0,d=0;a=l;l=l+16|0;b=a;c[b>>2]=c[5406];c[b+4>>2]=c[5407];c[b+8>>2]=c[5408];d=nj(b)|0;l=a;return d|0;}function nj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=l;l=l+48|0;d=b+24|0;e=b+20|0;f=b+16|0;g=b;if(((c[a>>2]|0)!=0^1)&1^((c[a+4>>2]|0)!=0^1)&1|0){c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;};c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[f>>2]=Sh(656,d)|0;if(c[f>>2]|0){i=(c[f>>2]|0)+352|0;c[i>>2]=c[a>>2];c[i+4>>2]=c[a+4>>2];c[i+8>>2]=c[a+8>>2];c[(c[f>>2]|0)+12+44>>2]=3;c[(c[f>>2]|0)+12+32>>2]=1;oj(g);c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];g=pj(d)|0;c[(c[f>>2]|0)+8>>2]=g;c[e>>2]=c[f>>2];h=c[e>>2]|0;l=b;return h|0;}else{c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;}return 0;}function oj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+32|0;d=b+28|0;e=b+24|0;f=b+20|0;g=b+16|0;h=b;c[d>>2]=0;c[e>>2]=0;c[f>>2]=0;c[g>>2]=0;c[h>>2]=c[d>>2];c[h+4>>2]=c[e>>2];c[h+8>>2]=c[f>>2];c[h+12>>2]=c[g>>2];c[a>>2]=c[h>>2];c[a+4>>2]=c[h+4>>2];c[a+8>>2]=c[h+8>>2];c[a+12>>2]=c[h+12>>2];l=b;return;}function pj(a){a=a|0;return(c[a+8>>2]&256|0)!=0|0;}function qj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+32|0;d=b+8|0;e=b+4|0;f=b;c[f>>2]=a;if(!(c[f>>2]|0)){c[e>>2]=0;g=c[e>>2]|0;l=b;return g|0;}if(c[(c[f>>2]|0)+364>>2]|0){c[e>>2]=-64;g=c[e>>2]|0;l=b;return g|0;}else{a=c[(c[f>>2]|0)+224>>2]|0;h=(c[f>>2]|0)+352|0;c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];Th(a,d);c[(c[f>>2]|0)+224>>2]=0;rj(c[(c[f>>2]|0)+636>>2]|0)|0;c[(c[f>>2]|0)+636>>2]=0;a=c[f>>2]|0;h=(c[f>>2]|0)+352|0;c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];Th(a,d);c[e>>2]=0;g=c[e>>2]|0;l=b;return g|0;}return 0;}function rj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+32|0;d=b+20|0;e=b+16|0;f=b+12|0;g=b;c[f>>2]=a;if(!(c[f>>2]|0)){c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;}else{a=(c[f>>2]|0)+4748|0;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];a=c[(c[f>>2]|0)+12>>2]|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];Th(a,d);a=c[c[f>>2]>>2]|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];Th(a,d);a=c[f>>2]|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];Th(a,d);c[e>>2]=0;h=c[e>>2]|0;l=b;return h|0;}return 0;}function sj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0;g=l;l=l+96|0;h=g+64|0;i=g+60|0;j=g+8|0;k=g+56|0;m=g+52|0;n=g;o=g+48|0;p=g+44|0;q=g+16|0;c[i>>2]=b;b=j;c[b>>2]=d;c[b+4>>2]=e;c[k>>2]=f;f=j;c[m>>2]=(c[f>>2]|0)!=0|(c[f+4>>2]|0)!=0?0:500;f=j;e=dE(c[f>>2]|0,c[f+4>>2]|0,c[k>>2]|0,0)|0;if((e|0)!=0|(y|0)!=0){e=j;f=dE(c[e>>2]|0,c[e+4>>2]|0,c[k>>2]|0,0)|0;e=dE(f|0,y|0,c[m>>2]|0,0)|0;r=e;s=y;}else{r=-1;s=-1;}e=n;c[e>>2]=r;c[e+4>>2]=s;s=n;e=c[s+4>>2]|0;r=n;m=c[r+4>>2]|0;f=n;n=c[f+4>>2]|0;c[o>>2]=((e>>>0<0|(e|0)==0&(c[s>>2]|0)>>>0<=262144)&1)+((m>>>0<0|(m|0)==0&(c[r>>2]|0)>>>0<=131072)&1)+((n>>>0<0|(n|0)==0&(c[f>>2]|0)>>>0<=16384)&1);f=c[i>>2]|0;c[p>>2]=f;n=(c[i>>2]|0)==0?3:f;c[p>>2]=n;f=(c[i>>2]|0)<0?0:n;c[p>>2]=f;c[p>>2]=(c[i>>2]|0)>22?22:f;f=224+((c[o>>2]|0)*644|0)+((c[p>>2]|0)*28|0)|0;c[q>>2]=c[f>>2];c[q+4>>2]=c[f+4>>2];c[q+8>>2]=c[f+8>>2];c[q+12>>2]=c[f+12>>2];c[q+16>>2]=c[f+16>>2];c[q+20>>2]=c[f+20>>2];c[q+24>>2]=c[f+24>>2];if((c[i>>2]|0)>=0){t=j;u=t;v=c[u>>2]|0;w=t+4|0;x=w;z=c[x>>2]|0;A=c[k>>2]|0;c[h>>2]=c[q>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[h+12>>2]=c[q+12>>2];c[h+16>>2]=c[q+16>>2];c[h+20>>2]=c[q+20>>2];c[h+24>>2]=c[q+24>>2];tj(a,h,v,z,A);l=g;return;}c[q+20>>2]=0-(c[i>>2]|0);t=j;u=t;v=c[u>>2]|0;w=t+4|0;x=w;z=c[x>>2]|0;A=c[k>>2]|0;c[h>>2]=c[q>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[h+12>>2]=c[q+12>>2];c[h+16>>2]=c[q+16>>2];c[h+20>>2]=c[q+20>>2];c[h+24>>2]=c[q+24>>2];tj(a,h,v,z,A);l=g;return;}function tj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+32|0;h=g;i=g+20|0;j=g+16|0;k=g+12|0;m=g+8|0;n=h;c[n>>2]=d;c[n+4>>2]=e;c[i>>2]=f;if(c[i>>2]|0?(f=h,e=dE(c[f>>2]|0,c[f+4>>2]|0,1,0)|0,f=y,f>>>0<0|(f|0)==0&e>>>0<2):0){e=h;c[e>>2]=513;c[e+4>>2]=0;}else o=4;if((o|0)==4?(o=h,(c[o>>2]|0)==0&(c[o+4>>2]|0)==0):0){o=h;c[o>>2]=-1;c[o+4>>2]=-1;}o=h;e=c[o+4>>2]|0;if(e>>>0<0|(e|0)==0&(c[o>>2]|0)>>>0<536870912?0<0|0==0&(c[i>>2]|0)>>>0<536870912:0){o=h;h=dE(c[o>>2]|0,c[o+4>>2]|0,c[i>>2]|0,0)|0;c[j>>2]=h;if((c[j>>2]|0)>>>0<64)p=6;else p=(uj((c[j>>2]|0)-1|0)|0)+1|0;c[k>>2]=p;if((c[b>>2]|0)>>>0>(c[k>>2]|0)>>>0)c[b>>2]=c[k>>2];}if((c[b+8>>2]|0)>>>0>(c[b>>2]|0)>>>0)c[b+8>>2]=c[b>>2];c[m>>2]=vj(c[b+4>>2]|0,c[b+24>>2]|0)|0;if((c[m>>2]|0)>>>0>(c[b>>2]|0)>>>0){k=b+4|0;c[k>>2]=(c[k>>2]|0)-((c[m>>2]|0)-(c[b>>2]|0));}if((c[b>>2]|0)>>>0>=10){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];l=g;return;}c[b>>2]=10;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];l=g;return;}function uj(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function vj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=(c[f>>2]|0)>>>0>=6&1;l=d;return(c[e>>2]|0)-(c[g>>2]|0)|0;}function wj(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[d>>2]|0)>>>0>4294967176|0;}function xj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;a:do{switch(c[h>>2]|0){case 10:{if((c[i>>2]|0)>>>0>1){c[f>>2]=-40;break a;}else{c[c[g>>2]>>2]=c[i>>2];c[f>>2]=c[c[g>>2]>>2];break a;}break;}case 100:{c[j>>2]=c[i>>2];if((c[j>>2]|0)>(yj()|0))c[j>>2]=yj()|0;if(c[j>>2]|0){c[(c[g>>2]|0)+48>>2]=(c[j>>2]|0)<0&1;c[(c[g>>2]|0)+44>>2]=c[j>>2];}if((c[(c[g>>2]|0)+44>>2]|0)>=0){c[f>>2]=c[(c[g>>2]|0)+44>>2];break a;}else{c[f>>2]=0;break a;}break;}case 101:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<10|(c[i>>2]|0)>>>0>30|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+4>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+4>>2];break;}case 102:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<6|(c[i>>2]|0)>>>0>30|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+4+8>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+4+8>>2];break;}case 103:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<6|(c[i>>2]|0)>>>0>29|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+4+4>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+4+4>>2];break;}case 104:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<1|(c[i>>2]|0)>>>0>29|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+4+12>>2]=c[i>>2];c[f>>2]=c[i>>2];break;}case 105:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<3|(c[i>>2]|0)>>>0>7|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+4+16>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+4+16>>2];break;}case 106:{c[(c[g>>2]|0)+4+20>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+4+20>>2];break;}case 107:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<1|(c[i>>2]|0)>>>0>8|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+4+24>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+4+24>>2];break;}case 1e3:{c[(c[g>>2]|0)+48>>2]=((c[i>>2]|0)!=0^1)&1;c[f>>2]=((c[(c[g>>2]|0)+48>>2]|0)!=0^1)&1;break;}case 200:{c[(c[g>>2]|0)+32>>2]=(c[i>>2]|0)>>>0>0&1;c[f>>2]=c[(c[g>>2]|0)+32>>2];break;}case 201:{c[(c[g>>2]|0)+32+4>>2]=(c[i>>2]|0)>>>0>0&1;c[f>>2]=c[(c[g>>2]|0)+32+4>>2];break;}case 202:{c[(c[g>>2]|0)+32+8>>2]=((c[i>>2]|0)!=0^1)&1;c[f>>2]=((c[(c[g>>2]|0)+32+8>>2]|0)!=0^1)&1;break;}case 1100:{c[(c[g>>2]|0)+52>>2]=(c[i>>2]|0)>>>0>0&1;c[f>>2]=c[(c[g>>2]|0)+52>>2];break;}case 400:{if((c[i>>2]|0)>>>0>0){c[f>>2]=-40;break a;}else{c[f>>2]=0;break a;}break;}case 401:{c[f>>2]=-40;break;}case 402:{c[f>>2]=-40;break;}case 160:{c[(c[g>>2]|0)+68>>2]=(c[i>>2]|0)>>>0>0&1;c[f>>2]=c[(c[g>>2]|0)+68>>2];break;}case 161:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<6|(c[i>>2]|0)>>>0>30|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+68+4>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+68+4>>2];break;}case 162:{if((c[i>>2]|0)>>>0>0?(c[i>>2]|0)>>>0<4|(c[i>>2]|0)>>>0>4096|0:0){c[f>>2]=-42;break a;}c[(c[g>>2]|0)+68+12>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+68+12>>2];break;}case 163:{if((c[i>>2]|0)>>>0>8){c[f>>2]=-42;break a;}else{c[(c[g>>2]|0)+68+8>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+68+8>>2];break a;}break;}case 164:{if((c[i>>2]|0)>>>0>24){c[f>>2]=-42;break a;}else{c[(c[g>>2]|0)+68+16>>2]=c[i>>2];c[f>>2]=c[(c[g>>2]|0)+68+16>>2];break a;}break;}default:c[f>>2]=-40;}}while(0);l=e;return c[f>>2]|0;}function yj(){return 22;}function zj(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=l;l=l+64|0;i=h+32|0;j=h+28|0;k=h+24|0;m=h+20|0;n=h+16|0;o=h+12|0;p=h+8|0;q=h+4|0;r=h;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;if(((c[g>>2]|0)!=0^1)&1^((c[g+4>>2]|0)!=0^1)&1|0){c[j>>2]=0;s=c[j>>2]|0;l=h;return s|0;};c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[p>>2]=Rh(4764,i)|0;c[q>>2]=6144+(Aj(f,0)|0);e=c[q>>2]|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[r>>2]=Rh(e,i)|0;e=c[p>>2]|0;if(!((c[p>>2]|0)!=0&(c[r>>2]|0)!=0)){c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];Th(e,i);d=c[r>>2]|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];Th(d,i);c[j>>2]=0;s=c[j>>2]|0;l=h;return s|0;}d=e+4748|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[(c[p>>2]|0)+12>>2]=c[r>>2];c[(c[p>>2]|0)+16>>2]=c[q>>2];q=c[p>>2]|0;r=c[k>>2]|0;k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];f=(Ph(Bj(q,r,k,m,n,i)|0)|0)!=0;i=c[p>>2]|0;if(f){rj(i)|0;c[j>>2]=0;s=c[j>>2]|0;l=h;return s|0;}else{c[j>>2]=i;s=c[j>>2]|0;l=h;return s|0;}return 0;}function Aj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;d=l;l=l+48|0;e=d+32|0;f=d+28|0;g=d+24|0;h=d+20|0;i=d+16|0;j=d+12|0;k=d+8|0;m=d+4|0;n=d;c[e>>2]=a;c[f>>2]=b;if((c[(c[e>>2]|0)+24>>2]|0)==1)o=0;else o=1<<c[(c[e>>2]|0)+4>>2];c[g>>2]=o;c[h>>2]=1<<c[(c[e>>2]|0)+8>>2];if(c[f>>2]|0?(c[(c[e>>2]|0)+16>>2]|0)==3:0){if(17<(c[c[e>>2]>>2]|0)>>>0)p=17;else p=c[c[e>>2]>>2]|0;}else p=0;c[i>>2]=p;c[j>>2]=1<<c[i>>2];c[k>>2]=(c[g>>2]|0)+(c[h>>2]|0)+(c[j>>2]|0)<<2;c[m>>2]=149e3;if(c[f>>2]|0){if((c[(c[e>>2]|0)+24>>2]|0)==7)q=1;else q=(c[(c[e>>2]|0)+24>>2]|0)==8;}else q=0;c[n>>2]=q?149e3:0;l=d;return(c[k>>2]|0)+(c[n>>2]|0)|0;}function Bj(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;h=l;l=l+160|0;i=h+144|0;j=h+140|0;k=h+136|0;m=h+132|0;n=h+128|0;o=h+124|0;p=h+120|0;q=h+116|0;r=h+112|0;s=h+8|0;t=h;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;f=(c[k>>2]|0)+4720|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];c[f+16>>2]=c[g+16>>2];c[f+20>>2]=c[g+20>>2];c[f+24>>2]=c[g+24>>2];do{if((c[o>>2]|0)!=1&(c[m>>2]|0)!=0&(c[n>>2]|0)!=0){f=c[n>>2]|0;e=(c[k>>2]|0)+4748|0;c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[q>>2]=Rh(f,i)|0;c[c[k>>2]>>2]=c[q>>2];c[(c[k>>2]|0)+4>>2]=c[q>>2];if(c[q>>2]|0){mE(c[q>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;break;}c[j>>2]=-64;u=c[j>>2]|0;l=h;return u|0;}else{c[c[k>>2]>>2]=0;c[(c[k>>2]|0)+4>>2]=c[m>>2];}}while(0);c[(c[k>>2]|0)+8>>2]=c[n>>2];Cj((c[k>>2]|0)+128|0);c[r>>2]=Dj((c[k>>2]|0)+20|0,(c[(c[k>>2]|0)+12>>2]|0)+6144|0,g,0,0)|0;r=s;n=r+104|0;do{c[r>>2]=0;r=r+4|0;}while((r|0)<(n|0));c[s+44>>2]=3;c[s+32>>2]=1;r=s+4|0;c[r>>2]=c[g>>2];c[r+4>>2]=c[g+4>>2];c[r+8>>2]=c[g+8>>2];c[r+12>>2]=c[g+12>>2];c[r+16>>2]=c[g+16>>2];c[r+20>>2]=c[g+20>>2];c[r+24>>2]=c[g+24>>2];c[t>>2]=Ej((c[k>>2]|0)+128|0,(c[k>>2]|0)+20|0,s,c[(c[k>>2]|0)+4>>2]|0,c[(c[k>>2]|0)+8>>2]|0,c[p>>2]|0,c[(c[k>>2]|0)+12>>2]|0)|0;p=(Ph(c[t>>2]|0)|0)!=0;s=c[t>>2]|0;if(p){c[j>>2]=s;u=c[j>>2]|0;l=h;return u|0;}else{c[(c[k>>2]|0)+4760>>2]=s;c[j>>2]=0;u=c[j>>2]|0;l=h;return u|0;}return 0;}function Cj(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=0;while(1){if((c[e>>2]|0)>=3)break;c[(c[d>>2]|0)+4580+(c[e>>2]<<2)>>2]=c[11940+(c[e>>2]<<2)>>2];c[e>>2]=(c[e>>2]|0)+1;}c[(c[d>>2]|0)+4564>>2]=0;c[(c[d>>2]|0)+4568>>2]=0;c[(c[d>>2]|0)+4572>>2]=0;c[(c[d>>2]|0)+4576>>2]=0;l=b;return;}function Dj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=l;l=l+48|0;h=g+36|0;i=g+32|0;j=g+28|0;k=g+24|0;m=g+20|0;n=g+16|0;o=g+12|0;p=g+8|0;q=g+4|0;r=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;if((c[(c[j>>2]|0)+24>>2]|0)==1)s=0;else s=1<<c[(c[j>>2]|0)+4>>2];c[n>>2]=s;c[o>>2]=1<<c[(c[j>>2]|0)+8>>2];if(c[m>>2]|0?(c[(c[j>>2]|0)+16>>2]|0)==3:0){if(17<(c[c[j>>2]>>2]|0)>>>0)t=17;else t=c[c[j>>2]>>2]|0;}else t=0;c[p>>2]=t;c[q>>2]=1<<c[p>>2];c[r>>2]=(c[n>>2]|0)+(c[o>>2]|0)+(c[q>>2]|0)<<2;c[(c[h>>2]|0)+32>>2]=c[p>>2];p=c[h>>2]|0;c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;hl(c[h>>2]|0);if(c[m>>2]|0?((c[(c[j>>2]|0)+24>>2]|0)==7?1:(c[(c[j>>2]|0)+24>>2]|0)==8)|0:0){c[(c[h>>2]|0)+48>>2]=c[i>>2];c[(c[h>>2]|0)+48+4>>2]=(c[(c[h>>2]|0)+48>>2]|0)+1024;c[(c[h>>2]|0)+48+8>>2]=(c[(c[h>>2]|0)+48+4>>2]|0)+144;c[(c[h>>2]|0)+48+12>>2]=(c[(c[h>>2]|0)+48+8>>2]|0)+212;c[i>>2]=(c[(c[h>>2]|0)+48+12>>2]|0)+128;c[(c[h>>2]|0)+48+16>>2]=c[i>>2];c[i>>2]=(c[(c[h>>2]|0)+48+16>>2]|0)+32768+8;c[(c[h>>2]|0)+48+20>>2]=c[i>>2];c[i>>2]=(c[(c[h>>2]|0)+48+20>>2]|0)+114688+28;}if((c[k>>2]|0)==1){u=c[i>>2]|0;v=c[h>>2]|0;w=v+36|0;c[w>>2]=u;x=c[h>>2]|0;y=x+36|0;z=c[y>>2]|0;A=c[o>>2]|0;B=z+(A<<2)|0;C=c[h>>2]|0;D=C+44|0;c[D>>2]=B;E=c[h>>2]|0;F=E+44|0;G=c[F>>2]|0;H=c[n>>2]|0;I=G+(H<<2)|0;J=c[h>>2]|0;K=J+40|0;c[K>>2]=I;L=c[h>>2]|0;M=L+40|0;N=c[M>>2]|0;O=c[q>>2]|0;P=N+(O<<2)|0;c[i>>2]=P;Q=c[i>>2]|0;l=g;return Q|0;}oE(c[i>>2]|0,0,c[r>>2]|0)|0;u=c[i>>2]|0;v=c[h>>2]|0;w=v+36|0;c[w>>2]=u;x=c[h>>2]|0;y=x+36|0;z=c[y>>2]|0;A=c[o>>2]|0;B=z+(A<<2)|0;C=c[h>>2]|0;D=C+44|0;c[D>>2]=B;E=c[h>>2]|0;F=E+44|0;G=c[F>>2]|0;H=c[n>>2]|0;I=G+(H<<2)|0;J=c[h>>2]|0;K=J+40|0;c[K>>2]=I;L=c[h>>2]|0;M=L+40|0;N=c[M>>2]|0;O=c[q>>2]|0;P=N+(O<<2)|0;c[i>>2]=P;Q=c[i>>2]|0;l=g;return Q|0;}function Ej(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=l;l=l+32|0;j=i+28|0;k=i+24|0;m=i+20|0;n=i+16|0;o=i+12|0;p=i+8|0;q=i+4|0;r=i;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;if((c[o>>2]|0)==0|(c[p>>2]|0)>>>0<=8){c[j>>2]=0;s=c[j>>2]|0;l=i;return s|0;}Cj(c[k>>2]|0);if((c[q>>2]|0)==1){c[j>>2]=Fj(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;s=c[j>>2]|0;l=i;return s|0;}if((Gj(c[o>>2]|0)|0)!=-332356553){if(!(c[q>>2]|0)){c[j>>2]=Fj(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;s=c[j>>2]|0;l=i;return s|0;}if((c[q>>2]|0)==2){c[j>>2]=-32;s=c[j>>2]|0;l=i;return s|0;}}c[j>>2]=Hj(c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[r>>2]|0)|0;s=c[j>>2]|0;l=i;return s|0;}function Fj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=c[j>>2];c[n>>2]=(c[m>>2]|0)+(c[k>>2]|0);c[o>>2]=(c[i>>2]|0)+4;Mj(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;if(c[(c[i>>2]|0)+52>>2]|0)p=0;else p=(c[n>>2]|0)-(c[(c[h>>2]|0)+4>>2]|0)|0;c[(c[h>>2]|0)+20>>2]=p;if((c[k>>2]|0)>>>0<=8){c[g>>2]=0;q=c[g>>2]|0;l=f;return q|0;}switch(c[(c[i>>2]|0)+4+24>>2]|0){case 1:{Nj(c[h>>2]|0,c[o>>2]|0,c[n>>2]|0);break;}case 2:{Oj(c[h>>2]|0,c[o>>2]|0,c[n>>2]|0);break;}case 5:case 4:case 3:{if((c[k>>2]|0)>>>0>=8)Pj(c[h>>2]|0,c[o>>2]|0,(c[n>>2]|0)+-8|0)|0;break;}case 8:case 7:case 6:{if((c[k>>2]|0)>>>0>=8)Qj(c[h>>2]|0,c[o>>2]|0,(c[n>>2]|0)+-8|0,c[n>>2]|0);break;}default:{}}c[(c[h>>2]|0)+24>>2]=(c[n>>2]|0)-(c[(c[h>>2]|0)+4>>2]|0);c[g>>2]=0;q=c[g>>2]|0;l=f;return q|0;}function Gj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Jj()|0)!=0;f=Kj(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=Lj(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Hj(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;h=l;l=l+384|0;i=h+380|0;j=h+376|0;k=h+372|0;m=h+368|0;n=h+364|0;o=h+360|0;p=h+356|0;q=h+352|0;r=h+348|0;s=h+192|0;t=h+344|0;u=h+340|0;v=h+336|0;w=h+332|0;x=h+328|0;y=h+324|0;z=h+320|0;A=h+80|0;B=h+316|0;C=h+312|0;D=h+308|0;E=h+304|0;F=h+300|0;G=h;H=h+296|0;I=h+292|0;J=h+288|0;K=h+284|0;L=h+280|0;M=h+276|0;N=h+272|0;O=h+268|0;P=h+264|0;Q=h+260|0;R=h+256|0;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=c[n>>2];c[r>>2]=(c[q>>2]|0)+(c[o>>2]|0);c[t>>2]=31;c[q>>2]=(c[q>>2]|0)+4;if(c[(c[m>>2]|0)+32+8>>2]|0)S=0;else S=Gj(c[q>>2]|0)|0;c[u>>2]=S;c[q>>2]=(c[q>>2]|0)+4;c[v>>2]=255;c[w>>2]=Ji(c[j>>2]|0,v,c[q>>2]|0,(c[r>>2]|0)-(c[q>>2]|0)|0)|0;if($g(c[w>>2]|0)|0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}if((c[v>>2]|0)>>>0<255){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}c[q>>2]=(c[q>>2]|0)+(c[w>>2]|0);c[y>>2]=ah(s,t,x,c[q>>2]|0,(c[r>>2]|0)-(c[q>>2]|0)|0)|0;if(Zg(c[y>>2]|0)|0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}if((c[x>>2]|0)>>>0>8){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}c[z>>2]=Uh((c[j>>2]|0)+1024|0,s,c[t>>2]|0,c[x>>2]|0,c[p>>2]|0,6144)|0;if(wj(c[z>>2]|0)|0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}c[q>>2]=(c[q>>2]|0)+(c[y>>2]|0);c[B>>2]=52;c[D>>2]=ah(A,B,C,c[q>>2]|0,(c[r>>2]|0)-(c[q>>2]|0)|0)|0;if(Zg(c[D>>2]|0)|0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}if((c[C>>2]|0)>>>0>9){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}c[E>>2]=Ij(A,c[B>>2]|0,52)|0;if(wj(c[E>>2]|0)|0){c[i>>2]=c[E>>2];T=c[i>>2]|0;l=h;return T|0;}c[F>>2]=Uh((c[j>>2]|0)+1796|0,A,c[B>>2]|0,c[C>>2]|0,c[p>>2]|0,6144)|0;if(wj(c[F>>2]|0)|0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}c[q>>2]=(c[q>>2]|0)+(c[D>>2]|0);c[H>>2]=35;c[J>>2]=ah(G,H,I,c[q>>2]|0,(c[r>>2]|0)-(c[q>>2]|0)|0)|0;if(Zg(c[J>>2]|0)|0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}if((c[I>>2]|0)>>>0>9){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}c[K>>2]=Ij(G,c[H>>2]|0,35)|0;if(wj(c[K>>2]|0)|0){c[i>>2]=c[K>>2];T=c[i>>2]|0;l=h;return T|0;}c[L>>2]=Uh((c[j>>2]|0)+3248|0,G,c[H>>2]|0,c[I>>2]|0,c[p>>2]|0,6144)|0;if(wj(c[L>>2]|0)|0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}c[q>>2]=(c[q>>2]|0)+(c[J>>2]|0);if(((c[q>>2]|0)+12|0)>>>0>(c[r>>2]|0)>>>0){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}J=Gj(c[q>>2]|0)|0;c[(c[j>>2]|0)+4580>>2]=J;J=Gj((c[q>>2]|0)+4|0)|0;c[(c[j>>2]|0)+4580+4>>2]=J;J=Gj((c[q>>2]|0)+8|0)|0;c[(c[j>>2]|0)+4580+8>>2]=J;c[q>>2]=(c[q>>2]|0)+12;c[M>>2]=(c[r>>2]|0)-(c[q>>2]|0);c[N>>2]=31;if((c[M>>2]|0)>>>0<=4294836223){c[O>>2]=(c[M>>2]|0)+131072;c[N>>2]=uj(c[O>>2]|0)|0;}c[P>>2]=Ij(s,c[t>>2]|0,(c[N>>2]|0)>>>0<31?c[N>>2]|0:31)|0;if(wj(c[P>>2]|0)|0){c[i>>2]=c[P>>2];T=c[i>>2]|0;l=h;return T|0;}c[Q>>2]=0;while(1){U=c[j>>2]|0;if((c[Q>>2]|0)>>>0>=3){V=42;break;}if(!(c[U+4580+(c[Q>>2]<<2)>>2]|0)){V=38;break;}if((c[(c[j>>2]|0)+4580+(c[Q>>2]<<2)>>2]|0)>>>0>(c[M>>2]|0)>>>0){V=40;break;}c[Q>>2]=(c[Q>>2]|0)+1;}if((V|0)==38){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}else if((V|0)==40){c[i>>2]=-30;T=c[i>>2]|0;l=h;return T|0;}else if((V|0)==42){c[U+4564>>2]=2;c[(c[j>>2]|0)+4568>>2]=2;c[(c[j>>2]|0)+4572>>2]=2;c[(c[j>>2]|0)+4576>>2]=2;c[R>>2]=Fj(c[k>>2]|0,c[m>>2]|0,c[q>>2]|0,c[M>>2]|0)|0;if(wj(c[R>>2]|0)|0){c[i>>2]=c[R>>2];T=c[i>>2]|0;l=h;return T|0;}else{c[i>>2]=c[u>>2];T=c[i>>2]|0;l=h;return T|0;}}return 0;}function Ij(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[h>>2]=a;c[i>>2]=d;c[j>>2]=e;if((c[i>>2]|0)>>>0<(c[j>>2]|0)>>>0){c[g>>2]=-30;m=c[g>>2]|0;l=f;return m|0;}c[k>>2]=0;while(1){if((c[k>>2]|0)>>>0>(c[j>>2]|0)>>>0){n=8;break;}if(!(b[(c[h>>2]|0)+(c[k>>2]<<1)>>1]|0)){n=6;break;}c[k>>2]=(c[k>>2]|0)+1;}if((n|0)==6){c[g>>2]=-30;m=c[g>>2]|0;l=f;return m|0;}else if((n|0)==8){c[g>>2]=0;m=c[g>>2]|0;l=f;return m|0;}return 0;}function Jj(){return d[11936]|0|0;}function Kj(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Lj(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function Mj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;e=l;l=l+32|0;f=e+28|0;g=e+24|0;h=e+20|0;i=e+16|0;j=e+12|0;k=e+8|0;m=e+4|0;n=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=1;if((c[g>>2]|0)!=(c[c[f>>2]>>2]|0)){c[k>>2]=(c[c[f>>2]>>2]|0)-(c[(c[f>>2]|0)+4>>2]|0);c[(c[f>>2]|0)+16>>2]=c[(c[f>>2]|0)+12>>2];c[(c[f>>2]|0)+12>>2]=c[k>>2];c[(c[f>>2]|0)+8>>2]=c[(c[f>>2]|0)+4>>2];c[(c[f>>2]|0)+4>>2]=(c[i>>2]|0)+(0-(c[k>>2]|0));if(((c[(c[f>>2]|0)+12>>2]|0)-(c[(c[f>>2]|0)+16>>2]|0)|0)>>>0<8)c[(c[f>>2]|0)+16>>2]=c[(c[f>>2]|0)+12>>2];c[j>>2]=0;}c[c[f>>2]>>2]=(c[i>>2]|0)+(c[h>>2]|0);if(!(((c[i>>2]|0)>>>0<((c[(c[f>>2]|0)+8>>2]|0)+(c[(c[f>>2]|0)+12>>2]|0)|0)>>>0?((c[i>>2]|0)+(c[h>>2]|0)|0)>>>0>((c[(c[f>>2]|0)+8>>2]|0)+(c[(c[f>>2]|0)+16>>2]|0)|0)>>>0:0)|0)){o=c[j>>2]|0;l=e;return o|0;}c[m>>2]=(c[i>>2]|0)+(c[h>>2]|0)-(c[(c[f>>2]|0)+8>>2]|0);if((c[m>>2]|0)>(c[(c[f>>2]|0)+12>>2]|0))p=c[(c[f>>2]|0)+12>>2]|0;else p=c[m>>2]|0;c[n>>2]=p;c[(c[f>>2]|0)+16>>2]=c[n>>2];o=c[j>>2]|0;l=e;return o|0;}function Nj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=l;l=l+64|0;f=e+48|0;g=e+44|0;h=e+40|0;i=e+36|0;j=e+32|0;k=e+28|0;m=e+24|0;n=e+20|0;o=e+16|0;p=e+8|0;q=e+4|0;r=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[(c[f>>2]|0)+36>>2];c[j>>2]=c[(c[g>>2]|0)+8>>2];c[k>>2]=c[(c[g>>2]|0)+16>>2];c[m>>2]=c[(c[f>>2]|0)+4>>2];c[n>>2]=(c[m>>2]|0)+(c[(c[f>>2]|0)+24>>2]|0);c[o>>2]=(c[h>>2]|0)+-8;c[e+12>>2]=3;while(1){if(((c[n>>2]|0)+3+-1|0)>>>0>(c[o>>2]|0)>>>0)break;c[p>>2]=(c[n>>2]|0)-(c[m>>2]|0);c[q>>2]=0;while(1){s=c[n>>2]|0;if((c[q>>2]|0)>>>0>=3)break;c[r>>2]=Tk(s+(c[q>>2]|0)|0,c[j>>2]|0,c[k>>2]|0)|0;if(!((c[q>>2]|0)!=0?(c[(c[i>>2]|0)+(c[r>>2]<<2)>>2]|0)!=0:0))c[(c[i>>2]|0)+(c[r>>2]<<2)>>2]=(c[p>>2]|0)+(c[q>>2]|0);c[q>>2]=(c[q>>2]|0)+1;}c[n>>2]=s+3;}l=e;return;}function Oj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;e=l;l=l+64|0;f=e+60|0;g=e+56|0;h=e+52|0;i=e+48|0;j=e+44|0;k=e+40|0;m=e+36|0;n=e+32|0;o=e+28|0;p=e+24|0;q=e+20|0;r=e+12|0;s=e+8|0;t=e+4|0;u=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[(c[f>>2]|0)+36>>2];c[j>>2]=c[(c[g>>2]|0)+8>>2];c[k>>2]=c[(c[g>>2]|0)+16>>2];c[m>>2]=c[(c[f>>2]|0)+44>>2];c[n>>2]=c[(c[g>>2]|0)+4>>2];c[o>>2]=c[(c[f>>2]|0)+4>>2];c[p>>2]=(c[o>>2]|0)+(c[(c[f>>2]|0)+24>>2]|0);c[q>>2]=(c[h>>2]|0)+-8;c[e+16>>2]=3;while(1){if(((c[p>>2]|0)+3+-1|0)>>>0>(c[q>>2]|0)>>>0)break;c[r>>2]=(c[p>>2]|0)-(c[o>>2]|0);c[s>>2]=0;while(1){v=c[p>>2]|0;if((c[s>>2]|0)>>>0>=3)break;c[t>>2]=Dk(v+(c[s>>2]|0)|0,c[n>>2]|0,c[k>>2]|0)|0;c[u>>2]=Dk((c[p>>2]|0)+(c[s>>2]|0)|0,c[j>>2]|0,8)|0;if(!(c[s>>2]|0))c[(c[m>>2]|0)+(c[t>>2]<<2)>>2]=(c[r>>2]|0)+(c[s>>2]|0);if(!((c[s>>2]|0)!=0?(c[(c[i>>2]|0)+(c[u>>2]<<2)>>2]|0)!=0:0))c[(c[i>>2]|0)+(c[u>>2]<<2)>>2]=(c[r>>2]|0)+(c[s>>2]|0);c[s>>2]=(c[s>>2]|0)+1;}c[p>>2]=v+3;}l=e;return;}function Pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=mk(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,c[(c[g>>2]|0)+16>>2]|0)|0;l=e;return d|0;}function Qj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=l;l=l+64|0;g=f+48|0;h=f+44|0;i=f+40|0;j=f+36|0;k=f+32|0;m=f+28|0;n=f+24|0;o=f+20|0;p=f+16|0;q=f+12|0;r=f+8|0;s=f+4|0;t=f;c[q>>2]=a;c[r>>2]=b;c[s>>2]=d;c[t>>2]=e;e=c[r>>2]|0;d=c[s>>2]|0;s=c[t>>2]|0;t=c[(c[r>>2]|0)+16>>2]|0;c[g>>2]=c[q>>2];c[h>>2]=e;c[i>>2]=d;c[j>>2]=s;c[k>>2]=t;c[m>>2]=0;c[n>>2]=c[(c[g>>2]|0)+4>>2];c[o>>2]=(c[i>>2]|0)-(c[n>>2]|0);c[p>>2]=c[(c[g>>2]|0)+24>>2];while(1){if((c[p>>2]|0)>>>0>=(c[o>>2]|0)>>>0)break;i=Rj(c[g>>2]|0,c[h>>2]|0,(c[n>>2]|0)+(c[p>>2]|0)|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;c[p>>2]=(c[p>>2]|0)+i;}c[(c[g>>2]|0)+24>>2]=c[o>>2];l=f;return;}function Rj(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;i=l;l=l+144|0;j=i+128|0;k=i+124|0;m=i+120|0;n=i+116|0;o=i+112|0;p=i+108|0;q=i+104|0;r=i+100|0;s=i+96|0;t=i+92|0;u=i+88|0;v=i+84|0;w=i+80|0;x=i+76|0;y=i+72|0;z=i+68|0;A=i+64|0;B=i+60|0;C=i+56|0;D=i+52|0;E=i+48|0;F=i+44|0;G=i+40|0;H=i+36|0;I=i+32|0;J=i+28|0;K=i+24|0;L=i+20|0;M=i+16|0;N=i+12|0;O=i+8|0;P=i+4|0;Q=i;c[k>>2]=a;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=c[(c[k>>2]|0)+36>>2];c[s>>2]=c[(c[m>>2]|0)+8>>2];c[t>>2]=Sj(c[n>>2]|0,c[s>>2]|0,c[p>>2]|0)|0;c[u>>2]=c[(c[k>>2]|0)+44>>2];c[v>>2]=(c[(c[m>>2]|0)+4>>2]|0)-1;c[w>>2]=(1<<c[v>>2])-1;c[x>>2]=c[(c[r>>2]|0)+(c[t>>2]<<2)>>2];c[y>>2]=0;c[z>>2]=0;c[A>>2]=c[(c[k>>2]|0)+4>>2];c[B>>2]=c[(c[k>>2]|0)+8>>2];c[C>>2]=c[(c[k>>2]|0)+12>>2];c[D>>2]=(c[B>>2]|0)+(c[C>>2]|0);c[E>>2]=(c[A>>2]|0)+(c[C>>2]|0);c[G>>2]=(c[n>>2]|0)-(c[A>>2]|0);if((c[w>>2]|0)>>>0>=(c[G>>2]|0)>>>0)R=0;else R=(c[G>>2]|0)-(c[w>>2]|0)|0;c[H>>2]=R;c[I>>2]=(c[u>>2]|0)+((c[G>>2]&c[w>>2])<<1<<2);c[J>>2]=(c[I>>2]|0)+4;c[L>>2]=c[(c[k>>2]|0)+16>>2];c[M>>2]=(c[G>>2]|0)+8+1;c[N>>2]=8;c[O>>2]=1<<c[(c[m>>2]|0)+12>>2];c[(c[r>>2]|0)+(c[t>>2]<<2)>>2]=c[G>>2];while(1){t=c[O>>2]|0;c[O>>2]=t+-1;if(!t)break;if((c[x>>2]|0)>>>0<=(c[L>>2]|0)>>>0)break;c[P>>2]=(c[u>>2]|0)+((c[x>>2]&c[w>>2])<<1<<2);c[Q>>2]=(c[y>>2]|0)>>>0<(c[z>>2]|0)>>>0?c[y>>2]|0:c[z>>2]|0;if(c[q>>2]|0?((c[x>>2]|0)+(c[Q>>2]|0)|0)>>>0<(c[C>>2]|0)>>>0:0){c[F>>2]=(c[B>>2]|0)+(c[x>>2]|0);t=Uj((c[n>>2]|0)+(c[Q>>2]|0)|0,(c[F>>2]|0)+(c[Q>>2]|0)|0,c[o>>2]|0,c[D>>2]|0,c[E>>2]|0)|0;c[Q>>2]=(c[Q>>2]|0)+t;if(((c[x>>2]|0)+(c[Q>>2]|0)|0)>>>0>=(c[C>>2]|0)>>>0)c[F>>2]=(c[A>>2]|0)+(c[x>>2]|0);}else{c[F>>2]=(c[A>>2]|0)+(c[x>>2]|0);t=Tj((c[n>>2]|0)+(c[Q>>2]|0)|0,(c[F>>2]|0)+(c[Q>>2]|0)|0,c[o>>2]|0)|0;c[Q>>2]=(c[Q>>2]|0)+t;}if((c[Q>>2]|0)>>>0>(c[N>>2]|0)>>>0?(c[N>>2]=c[Q>>2],(c[Q>>2]|0)>>>0>((c[M>>2]|0)-(c[x>>2]|0)|0)>>>0):0)c[M>>2]=(c[x>>2]|0)+(c[Q>>2]|0);if(((c[n>>2]|0)+(c[Q>>2]|0)|0)==(c[o>>2]|0))break;t=c[x>>2]|0;if((d[(c[F>>2]|0)+(c[Q>>2]|0)>>0]|0|0)<(d[(c[n>>2]|0)+(c[Q>>2]|0)>>0]|0|0)){c[c[I>>2]>>2]=t;c[y>>2]=c[Q>>2];if((c[x>>2]|0)>>>0<=(c[H>>2]|0)>>>0){S=17;break;}c[I>>2]=(c[P>>2]|0)+4;c[x>>2]=c[(c[P>>2]|0)+4>>2];}else{c[c[J>>2]>>2]=t;c[z>>2]=c[Q>>2];if((c[x>>2]|0)>>>0<=(c[H>>2]|0)>>>0){S=20;break;}c[J>>2]=c[P>>2];c[x>>2]=c[c[P>>2]>>2];}}if((S|0)==17)c[I>>2]=K;else if((S|0)==20)c[J>>2]=K;c[c[J>>2]>>2]=0;c[c[I>>2]>>2]=0;if((c[N>>2]|0)>>>0>384){c[j>>2]=192<((c[N>>2]|0)-384|0)>>>0?192:(c[N>>2]|0)-384|0;T=c[j>>2]|0;l=i;return T|0;}else{c[j>>2]=(c[M>>2]|0)-((c[G>>2]|0)+8);T=c[j>>2]|0;l=i;return T|0;}return 0;}function Sj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;switch(c[i>>2]|0){case 8:{c[f>>2]=dk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 5:{c[f>>2]=ak(c[g>>2]|0,c[h>>2]|0)|0;break;}case 6:{c[f>>2]=bk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 7:{c[f>>2]=ck(c[g>>2]|0,c[h>>2]|0)|0;break;}default:c[f>>2]=$j(c[g>>2]|0,c[h>>2]|0)|0;}l=e;return c[f>>2]|0;}function Tj(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=c[h>>2];c[m>>2]=(c[j>>2]|0)+-3;a:do{if((c[h>>2]|0)>>>0<(c[m>>2]|0)>>>0){e=Vj(c[i>>2]|0)|0;c[n>>2]=e^(Vj(c[h>>2]|0)|0);if(c[n>>2]|0){c[g>>2]=Wj(c[n>>2]|0)|0;p=c[g>>2]|0;l=f;return p|0;}c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;while(1){if((c[h>>2]|0)>>>0>=(c[m>>2]|0)>>>0)break a;e=Vj(c[i>>2]|0)|0;c[o>>2]=e^(Vj(c[h>>2]|0)|0);if(c[o>>2]|0)break;c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}e=Wj(c[o>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+e;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}}while(0);if((Xj()|0?(c[h>>2]|0)>>>0<((c[j>>2]|0)+-3|0)>>>0:0)?(o=Yj(c[i>>2]|0)|0,(o|0)==(Yj(c[h>>2]|0)|0)):0){c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}if((c[h>>2]|0)>>>0<((c[j>>2]|0)+-1|0)>>>0?(o=(Zj(c[i>>2]|0)|0)&65535,(o|0)==((Zj(c[h>>2]|0)|0)&65535|0)):0){c[h>>2]=(c[h>>2]|0)+2;c[i>>2]=(c[i>>2]|0)+2;}if((c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?(d[c[i>>2]>>0]|0|0)==(d[c[h>>2]>>0]|0|0):0)c[h>>2]=(c[h>>2]|0)+1;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}function Uj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if(((c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0)>>>0<(c[k>>2]|0)>>>0)q=(c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0;else q=c[k>>2]|0;c[o>>2]=q;c[p>>2]=Tj(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0)|0;o=c[p>>2]|0;if(((c[j>>2]|0)+(c[p>>2]|0)|0)!=(c[m>>2]|0)){c[h>>2]=o;r=c[h>>2]|0;l=g;return r|0;}else{c[h>>2]=o+(Tj((c[i>>2]|0)+(c[p>>2]|0)|0,c[n>>2]|0,c[k>>2]|0)|0);r=c[h>>2]|0;l=g;return r|0;}return 0;}function Vj(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Wj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(_j()|0)!=0;f=(Xj()|0)!=0;g=c[e>>2]|0;do{if(a){if(f){e=ob(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(fE(g|0)|0)>>3;break;}}else if(f){e=lE(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(Q(g|0)|0)>>3;break;}}while(0);l=b;return c[d>>2]|0;}function Xj(){return 0;}function Yj(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Zj(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function _j(){return d[11936]|0|0;}function $j(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Yj(c[e>>2]|0)|0;e=lk(b,c[f>>2]|0)|0;l=d;return e|0;}function ak(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=ek(c[e>>2]|0)|0;e=kk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function bk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=ek(c[e>>2]|0)|0;e=jk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function ck(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=ek(c[e>>2]|0)|0;e=ik(b,y,c[f>>2]|0)|0;l=d;return e|0;}function dk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=ek(c[e>>2]|0)|0;e=fk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function ek(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(_j()|0)!=0;f=gk(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=hk(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function fk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=cE(c[d>>2]|0,c[d+4>>2]|0,-1213897629,-820265764)|0;d=iE(f|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return d|0;}function gk(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function hk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function ik(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,8)|0;d=cE(f|0,y|0,-591420061,13573052)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function jk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,16)|0;d=cE(f|0,y|0,-1126383717,53019)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function kk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,24)|0;d=cE(f|0,y|0,465362107,207)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function lk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=N(c[e>>2]|0,-1640531535)|0;l=d;return b>>>(32-(c[f>>2]|0)|0)|0;}function mk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=l;l=l+48|0;g=f+44|0;h=f+40|0;i=f+36|0;j=f+32|0;k=f+28|0;m=f+24|0;n=f+20|0;o=f+16|0;p=f+12|0;q=f+8|0;r=f+4|0;s=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=c[(c[g>>2]|0)+36>>2];c[m>>2]=c[(c[h>>2]|0)+8>>2];c[n>>2]=c[(c[g>>2]|0)+44>>2];c[o>>2]=(1<<c[(c[h>>2]|0)+4>>2])-1;c[p>>2]=c[(c[g>>2]|0)+4>>2];c[q>>2]=(c[i>>2]|0)-(c[p>>2]|0);c[r>>2]=c[(c[g>>2]|0)+24>>2];while(1){if((c[r>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break;c[s>>2]=nk((c[p>>2]|0)+(c[r>>2]|0)|0,c[m>>2]|0,c[j>>2]|0)|0;c[(c[n>>2]|0)+((c[r>>2]&c[o>>2])<<2)>>2]=c[(c[k>>2]|0)+(c[s>>2]<<2)>>2];c[(c[k>>2]|0)+(c[s>>2]<<2)>>2]=c[r>>2];c[r>>2]=(c[r>>2]|0)+1;}c[(c[g>>2]|0)+24>>2]=c[q>>2];q=c[k>>2]|0;k=c[q+((nk(c[i>>2]|0,c[m>>2]|0,c[j>>2]|0)|0)<<2)>>2]|0;l=f;return k|0;}function nk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;switch(c[i>>2]|0){case 8:{c[f>>2]=sk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 5:{c[f>>2]=pk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 6:{c[f>>2]=qk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 7:{c[f>>2]=rk(c[g>>2]|0,c[h>>2]|0)|0;break;}default:c[f>>2]=ok(c[g>>2]|0,c[h>>2]|0)|0;}l=e;return c[f>>2]|0;}function ok(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Bk(c[e>>2]|0)|0;e=Ck(b,c[f>>2]|0)|0;l=d;return e|0;}function pk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=tk(c[e>>2]|0)|0;e=Ak(b,y,c[f>>2]|0)|0;l=d;return e|0;}function qk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=tk(c[e>>2]|0)|0;e=zk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function rk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=tk(c[e>>2]|0)|0;e=yk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function sk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=tk(c[e>>2]|0)|0;e=uk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function tk(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(vk()|0)!=0;f=wk(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=xk(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function uk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=cE(c[d>>2]|0,c[d+4>>2]|0,-1213897629,-820265764)|0;d=iE(f|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return d|0;}function vk(){return d[11936]|0|0;}function wk(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function xk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function yk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,8)|0;d=cE(f|0,y|0,-591420061,13573052)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function zk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,16)|0;d=cE(f|0,y|0,-1126383717,53019)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function Ak(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,24)|0;d=cE(f|0,y|0,465362107,207)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function Bk(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Ck(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=N(c[e>>2]|0,-1640531535)|0;l=d;return b>>>(32-(c[f>>2]|0)|0)|0;}function Dk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;switch(c[i>>2]|0){case 8:{c[f>>2]=Ik(c[g>>2]|0,c[h>>2]|0)|0;break;}case 5:{c[f>>2]=Fk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 6:{c[f>>2]=Gk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 7:{c[f>>2]=Hk(c[g>>2]|0,c[h>>2]|0)|0;break;}default:c[f>>2]=Ek(c[g>>2]|0,c[h>>2]|0)|0;}l=e;return c[f>>2]|0;}function Ek(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Rk(c[e>>2]|0)|0;e=Sk(b,c[f>>2]|0)|0;l=d;return e|0;}function Fk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Jk(c[e>>2]|0)|0;e=Qk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Gk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Jk(c[e>>2]|0)|0;e=Pk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Hk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Jk(c[e>>2]|0)|0;e=Ok(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Ik(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Jk(c[e>>2]|0)|0;e=Kk(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Jk(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=(Lk()|0)!=0;f=Mk(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=Nk(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function Kk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=cE(c[d>>2]|0,c[d+4>>2]|0,-1213897629,-820265764)|0;d=iE(f|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return d|0;}function Lk(){return d[11936]|0|0;}function Mk(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function Nk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function Ok(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,8)|0;d=cE(f|0,y|0,-591420061,13573052)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function Pk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,16)|0;d=cE(f|0,y|0,-1126383717,53019)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function Qk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,24)|0;d=cE(f|0,y|0,465362107,207)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function Rk(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Sk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=N(c[e>>2]|0,-1640531535)|0;l=d;return b>>>(32-(c[f>>2]|0)|0)|0;}function Tk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;switch(c[i>>2]|0){case 8:{c[f>>2]=Yk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 5:{c[f>>2]=Vk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 6:{c[f>>2]=Wk(c[g>>2]|0,c[h>>2]|0)|0;break;}case 7:{c[f>>2]=Xk(c[g>>2]|0,c[h>>2]|0)|0;break;}default:c[f>>2]=Uk(c[g>>2]|0,c[h>>2]|0)|0;}l=e;return c[f>>2]|0;}function Uk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=fl(c[e>>2]|0)|0;e=gl(b,c[f>>2]|0)|0;l=d;return e|0;}function Vk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Zk(c[e>>2]|0)|0;e=el(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Wk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Zk(c[e>>2]|0)|0;e=dl(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Xk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Zk(c[e>>2]|0)|0;e=cl(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Yk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Zk(c[e>>2]|0)|0;e=_k(b,y,c[f>>2]|0)|0;l=d;return e|0;}function Zk(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b;e=b+8|0;c[e>>2]=a;a=($k()|0)!=0;f=al(c[e>>2]|0)|0;e=y;if(a){a=d;c[a>>2]=f;c[a+4>>2]=e;}else{a=bl(f,e)|0;e=d;c[e>>2]=a;c[e+4>>2]=y;}e=d;y=c[e+4>>2]|0;l=b;return c[e>>2]|0;}function _k(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=cE(c[d>>2]|0,c[d+4>>2]|0,-1213897629,-820265764)|0;d=iE(f|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return d|0;}function $k(){return d[11936]|0|0;}function al(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;e=a;f=a+4|0;y=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;l=b;return d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24|0;}function bl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function cl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,8)|0;d=cE(f|0,y|0,-591420061,13573052)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function dl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,16)|0;d=cE(f|0,y|0,-1126383717,53019)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function el(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=jE(c[d>>2]|0,c[d+4>>2]|0,24)|0;d=cE(f|0,y|0,465362107,207)|0;f=iE(d|0,y|0,64-(c[g>>2]|0)|0)|0;l=e;return f|0;}function fl(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function gl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=N(c[e>>2]|0,-1640531535)|0;l=d;return b>>>(32-(c[f>>2]|0)|0)|0;}function hl(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;il(c[d>>2]|0);c[(c[d>>2]|0)+24>>2]=(c[(c[d>>2]|0)+12>>2]|0)+1;c[(c[d>>2]|0)+20>>2]=0;c[(c[d>>2]|0)+48+28>>2]=0;l=b;return;}function il(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+8|0;e=b+4|0;f=b;c[d>>2]=a;c[e>>2]=(c[c[d>>2]>>2]|0)-(c[(c[d>>2]|0)+4>>2]|0);c[f>>2]=c[e>>2];c[(c[d>>2]|0)+16>>2]=c[f>>2];c[(c[d>>2]|0)+12>>2]=c[f>>2];l=b;return;}function jl(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+628>>2]=0;a=(c[d>>2]|0)+240|0;c[a>>2]=0;c[a+4>>2]=0;l=b;return;}function kl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[d>>2]=1<<c[a+4>>2];c[e>>2]=(c[a+8>>2]|0)>>>0<(c[a+4>>2]|0)>>>0?c[a+8>>2]|0:c[a+4>>2]|0;c[f>>2]=1<<(c[a+4>>2]|0)-(c[e>>2]|0);c[g>>2]=(c[f>>2]|0)+(c[d>>2]<<3);l=b;return(c[a>>2]|0?c[g>>2]|0:0)|0;}function ll(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[e>>2]=b;if(!(c[a>>2]|0)){f=0;l=d;return f|0;}f=((c[e>>2]|0)>>>0)/((c[a+12>>2]|0)>>>0)|0;l=d;return f|0;}function ml(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;h=l;l=l+304|0;i=h+200|0;j=h+80|0;k=h+196|0;m=h+192|0;n=h;o=h+188|0;p=h+184|0;q=h+76|0;r=h+72|0;s=h+68|0;t=h+64|0;u=h+60|0;v=h+56|0;w=h+52|0;x=h+48|0;z=h+44|0;A=h+40|0;B=h+36|0;C=h+32|0;D=h+28|0;E=h+24|0;F=h+20|0;G=h+16|0;H=h+12|0;I=h+8|0;c[m>>2]=a;a=n;c[a>>2]=d;c[a+4>>2]=e;c[o>>2]=f;c[p>>2]=g;if(!(c[o>>2]|0)){g=c[(c[m>>2]|0)+596>>2]|0;f=c[(c[m>>2]|0)+232>>2]|0;e=c[p>>2]|0;a=n;d=c[a>>2]|0;J=c[a+4>>2]|0;K=j;L=(c[m>>2]|0)+116|0;M=K+104|0;do{c[K>>2]=c[L>>2];K=K+4|0;L=L+4|0;}while((K|0)<(M|0));K=i;L=b;M=K+104|0;do{c[K>>2]=c[L>>2];K=K+4|0;L=L+4|0;}while((K|0)<(M|0));if(nl(j,i,g,f,e,d,J)|0){J=c[m>>2]|0;d=n;e=c[d>>2]|0;f=c[d+4>>2]|0;K=i;L=b;M=K+104|0;do{c[K>>2]=c[L>>2];K=K+4|0;L=L+4|0;}while((K|0)<(M|0));c[k>>2]=ol(J,i,e,f)|0;N=c[k>>2]|0;l=h;return N|0;}}if(c[b+68>>2]|0){c[b+68+20>>2]=c[b+4>>2];pl(b+68|0,b+4|0);f=ql(c[b+68+12>>2]|0)|0;e=(c[m>>2]|0)+408+32|0;c[e>>2]=f;c[e+4>>2]=y;}e=jE(1,0,c[b+4>>2]|0)|0;f=y;J=n;d=c[J+4>>2]|0;if(f>>>0<d>>>0|((f|0)==(d|0)?e>>>0<(c[J>>2]|0)>>>0:0)){J=jE(1,0,c[b+4>>2]|0)|0;O=J;P=y;}else{J=n;O=c[J>>2]|0;P=c[J+4>>2]|0;}if(1>O>>>0)Q=1;else{O=jE(1,0,c[b+4>>2]|0)|0;J=y;P=n;e=c[P+4>>2]|0;if(J>>>0<e>>>0|((J|0)==(e|0)?O>>>0<(c[P>>2]|0)>>>0:0)){P=jE(1,0,c[b+4>>2]|0)|0;R=P;S=y;}else{P=n;R=c[P>>2]|0;S=c[P+4>>2]|0;}Q=R;}c[q>>2]=Q;c[r>>2]=131072<(c[q>>2]|0)>>>0?131072:c[q>>2]|0;c[s>>2]=(c[b+4+16>>2]|0)==3?3:4;c[t>>2]=((c[r>>2]|0)>>>0)/((c[s>>2]|0)>>>0)|0;c[u>>2]=(c[r>>2]|0)+((c[t>>2]|0)*11|0);if((c[p>>2]|0)==1)T=(lj(c[r>>2]|0)|0)+1|0;else T=0;c[v>>2]=T;if((c[p>>2]|0)==1)U=(c[q>>2]|0)+(c[r>>2]|0)|0;else U=0;c[w>>2]=U;c[x>>2]=Aj(b+4|0,1)|0;U=b+68|0;q=c[r>>2]|0;c[i>>2]=c[U>>2];c[i+4>>2]=c[U+4>>2];c[i+8>>2]=c[U+8>>2];c[i+12>>2]=c[U+12>>2];c[i+16>>2]=c[U+16>>2];c[i+20>>2]=c[U+20>>2];c[z>>2]=ll(i,q)|0;c[B>>2]=6144;c[C>>2]=9184;c[D>>2]=(c[w>>2]|0)+(c[v>>2]|0);C=b+68|0;c[i>>2]=c[C>>2];c[i+4>>2]=c[C+4>>2];c[i+8>>2]=c[C+8>>2];c[i+12>>2]=c[C+12>>2];c[i+16>>2]=c[C+16>>2];c[i+20>>2]=c[C+20>>2];c[E>>2]=kl(i)|0;c[F>>2]=(c[z>>2]|0)*12;c[G>>2]=15328+(c[E>>2]|0)+(c[F>>2]|0)+(c[x>>2]|0)+(c[u>>2]|0)+(c[D>>2]|0);do{if((c[(c[m>>2]|0)+228>>2]|0)>>>0<(c[G>>2]|0)>>>0){if(c[(c[m>>2]|0)+364>>2]|0){c[k>>2]=-64;N=c[k>>2]|0;l=h;return N|0;}c[(c[m>>2]|0)+228>>2]=0;D=c[(c[m>>2]|0)+224>>2]|0;u=(c[m>>2]|0)+352|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];Th(D,i);D=c[G>>2]|0;u=(c[m>>2]|0)+352|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];u=Rh(D,i)|0;c[(c[m>>2]|0)+224>>2]=u;if(c[(c[m>>2]|0)+224>>2]|0){c[(c[m>>2]|0)+228>>2]=c[G>>2];c[A>>2]=c[(c[m>>2]|0)+224>>2];c[(c[m>>2]|0)+472>>2]=c[(c[m>>2]|0)+224>>2];c[(c[m>>2]|0)+472+4>>2]=(c[(c[m>>2]|0)+472>>2]|0)+4592;c[A>>2]=(c[(c[m>>2]|0)+472+4>>2]|0)+4592;c[(c[m>>2]|0)+588>>2]=c[A>>2];break;}c[k>>2]=-64;N=c[k>>2]|0;l=h;return N|0;}}while(0);K=(c[m>>2]|0)+116|0;L=b;M=K+104|0;do{c[K>>2]=c[L>>2];K=K+4|0;L=L+4|0;}while((K|0)<(M|0));L=n;K=dE(c[L>>2]|0,c[L+4>>2]|0,1,0)|0;L=(c[m>>2]|0)+240|0;c[L>>2]=K;c[L+4>>2]=y;L=(c[m>>2]|0)+248|0;c[L>>2]=0;c[L+4>>2]=0;L=(c[m>>2]|0)+256|0;c[L>>2]=0;c[L+4>>2]=0;L=n;if((c[L>>2]|0)==-1?(c[L+4>>2]|0)==-1:0)c[(c[m>>2]|0)+116+32>>2]=0;c[(c[m>>2]|0)+232>>2]=c[r>>2];Lh((c[m>>2]|0)+264|0,0,0)|0;c[c[m>>2]>>2]=1;c[(c[m>>2]|0)+220>>2]=0;Cj(c[(c[m>>2]|0)+472>>2]|0);c[A>>2]=(c[(c[m>>2]|0)+588>>2]|0)+6144;if(c[b+68>>2]|0){c[H>>2]=1<<c[b+68+4>>2];oE(c[A>>2]|0,0,c[H>>2]<<3|0)|0;c[(c[m>>2]|0)+408+20>>2]=c[A>>2];c[A>>2]=(c[(c[m>>2]|0)+408+20>>2]|0)+(c[H>>2]<<3);c[(c[m>>2]|0)+448>>2]=c[A>>2];c[A>>2]=(c[(c[m>>2]|0)+448>>2]|0)+((c[z>>2]|0)*12|0);c[(c[m>>2]|0)+452>>2]=c[z>>2];z=(c[m>>2]|0)+408|0;c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;c[z+16>>2]=0;}c[A>>2]=Dj((c[m>>2]|0)+472+8|0,c[A>>2]|0,b+4|0,c[o>>2]|0,1)|0;c[(c[m>>2]|0)+368>>2]=c[A>>2];c[A>>2]=(c[(c[m>>2]|0)+368>>2]|0)+(c[t>>2]<<3);c[(c[m>>2]|0)+368+16>>2]=c[A>>2];c[(c[m>>2]|0)+368+20>>2]=(c[(c[m>>2]|0)+368+16>>2]|0)+(c[t>>2]|0);c[(c[m>>2]|0)+368+24>>2]=(c[(c[m>>2]|0)+368+20>>2]|0)+(c[t>>2]|0);c[(c[m>>2]|0)+368+8>>2]=(c[(c[m>>2]|0)+368+24>>2]|0)+(c[t>>2]|0);c[A>>2]=(c[(c[m>>2]|0)+368+8>>2]|0)+(c[r>>2]|0);if(c[b+68>>2]|0){c[I>>2]=1<<(c[b+68+4>>2]|0)-(c[b+68+8>>2]|0);oE(c[A>>2]|0,0,c[I>>2]|0)|0;c[(c[m>>2]|0)+408+24>>2]=c[A>>2];c[A>>2]=(c[(c[m>>2]|0)+408+24>>2]|0)+(c[I>>2]|0);il((c[m>>2]|0)+408|0);}rl(c[m>>2]|0,0,0)|0;c[(c[m>>2]|0)+596>>2]=c[w>>2];c[(c[m>>2]|0)+592>>2]=c[A>>2];c[(c[m>>2]|0)+616>>2]=c[v>>2];c[(c[m>>2]|0)+612>>2]=(c[(c[m>>2]|0)+592>>2]|0)+(c[w>>2]|0);c[k>>2]=0;N=c[k>>2]|0;l=h;return N|0;}function nl(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;i=l;l=l+80|0;j=i+48|0;k=i+16|0;m=i+44|0;n=i+12|0;o=i+8|0;p=i;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;f=p;c[f>>2]=g;c[f+4>>2]=h;h=a+4|0;f=b+4|0;c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];c[k+12>>2]=c[h+12>>2];c[k+16>>2]=c[h+16>>2];c[k+20>>2]=c[h+20>>2];c[k+24>>2]=c[h+24>>2];c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];c[j+16>>2]=c[f+16>>2];c[j+20>>2]=c[f+20>>2];c[j+24>>2]=c[f+24>>2];if(!(tl(k,j)|0)){q=0;r=q&1;l=i;return r|0;}f=a+68|0;a=b+68|0;c[k>>2]=c[f>>2];c[k+4>>2]=c[f+4>>2];c[k+8>>2]=c[f+8>>2];c[k+12>>2]=c[f+12>>2];c[k+16>>2]=c[f+16>>2];c[k+20>>2]=c[f+20>>2];c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[j+16>>2]=c[a+16>>2];c[j+20>>2]=c[a+20>>2];if(!(ul(k,j)|0)){q=0;r=q&1;l=i;return r|0;}k=c[m>>2]|0;m=c[n>>2]|0;n=c[o>>2]|0;o=b+4|0;b=p;p=c[b>>2]|0;a=c[b+4>>2]|0;c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[j+12>>2]=c[o+12>>2];c[j+16>>2]=c[o+16>>2];c[j+20>>2]=c[o+20>>2];c[j+24>>2]=c[o+24>>2];q=(vl(k,m,n,j,p,a)|0)!=0;r=q&1;l=i;return r|0;}function ol(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0;f=l;l=l+32|0;g=f+16|0;h=f;i=f+12|0;j=f+8|0;c[g>>2]=a;a=h;c[a>>2]=d;c[a+4>>2]=e;e=jE(1,0,c[b+4>>2]|0)|0;a=y;d=h;k=c[d+4>>2]|0;if(a>>>0<k>>>0|((a|0)==(k|0)?e>>>0<(c[d>>2]|0)>>>0:0)){d=jE(1,0,c[b+4>>2]|0)|0;m=y;n=d;}else{d=h;m=c[d+4>>2]|0;n=c[d>>2]|0;}if(1>n>>>0)o=1;else{n=jE(1,0,c[b+4>>2]|0)|0;d=y;m=h;e=c[m+4>>2]|0;if(d>>>0<e>>>0|((d|0)==(e|0)?n>>>0<(c[m>>2]|0)>>>0:0)){m=jE(1,0,c[b+4>>2]|0)|0;p=m;q=y;}else{m=h;p=c[m>>2]|0;q=c[m+4>>2]|0;}o=p;}c[i>>2]=o;c[j>>2]=131072<(c[i>>2]|0)>>>0?131072:c[i>>2]|0;c[(c[g>>2]|0)+232>>2]=c[j>>2];j=(c[g>>2]|0)+116|0;i=b;o=j+104|0;do{c[j>>2]=c[i>>2];j=j+4|0;i=i+4|0;}while((j|0)<(o|0));i=h;j=dE(c[i>>2]|0,c[i+4>>2]|0,1,0)|0;i=(c[g>>2]|0)+240|0;c[i>>2]=j;c[i+4>>2]=y;i=(c[g>>2]|0)+248|0;c[i>>2]=0;c[i+4>>2]=0;i=(c[g>>2]|0)+256|0;c[i>>2]=0;c[i+4>>2]=0;i=h;if((c[i>>2]|0)==-1?(c[i+4>>2]|0)==-1:0)c[(c[g>>2]|0)+116+32>>2]=0;c[c[g>>2]>>2]=1;c[(c[g>>2]|0)+220>>2]=0;if(!(c[b+68>>2]|0)){r=c[g>>2]|0;rl(r,0,0)|0;s=c[g>>2]|0;t=s+472|0;u=t+8|0;hl(u);v=c[g>>2]|0;w=v+472|0;x=c[w>>2]|0;Cj(x);z=c[g>>2]|0;A=z+264|0;Lh(A,0,0)|0;l=f;return 0;}il((c[g>>2]|0)+408|0);r=c[g>>2]|0;rl(r,0,0)|0;s=c[g>>2]|0;t=s+472|0;u=t+8|0;hl(u);v=c[g>>2]|0;w=v+472|0;x=c[w>>2]|0;Cj(x);z=c[g>>2]|0;A=z+264|0;Lh(A,0,0)|0;l=f;return 0;}function pl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;d=l;l=l+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=c[c[f>>2]>>2];if(!(c[(c[e>>2]|0)+8>>2]|0))c[(c[e>>2]|0)+8>>2]=3;if(!(c[(c[e>>2]|0)+12>>2]|0))c[(c[e>>2]|0)+12>>2]=64;if((c[(c[f>>2]|0)+24>>2]|0)>>>0>=7){if((c[(c[f>>2]|0)+20>>2]|0)>>>0>(c[(c[e>>2]|0)+12>>2]|0)>>>0)i=c[(c[f>>2]|0)+20>>2]|0;else i=c[(c[e>>2]|0)+12>>2]|0;c[h>>2]=i;c[(c[e>>2]|0)+12>>2]=c[h>>2];}if(!(c[(c[e>>2]|0)+4>>2]|0))c[(c[e>>2]|0)+4>>2]=6>((c[g>>2]|0)-7|0)>>>0?6:(c[g>>2]|0)-7|0;if(!(c[(c[e>>2]|0)+16>>2]|0)){if((c[g>>2]|0)>>>0<(c[(c[e>>2]|0)+4>>2]|0)>>>0)j=0;else j=(c[g>>2]|0)-(c[(c[e>>2]|0)+4>>2]|0)|0;c[(c[e>>2]|0)+16>>2]=j;}j=c[e>>2]|0;if((c[(c[e>>2]|0)+8>>2]|0)>>>0<(c[(c[e>>2]|0)+4>>2]|0)>>>0){k=c[j+8>>2]|0;m=c[e>>2]|0;n=m+8|0;c[n>>2]=k;l=d;return;}else{k=c[j+4>>2]|0;m=c[e>>2]|0;n=m+8|0;c[n>>2]=k;l=d;return;}}function ql(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=sl(-1213897629,-820265764,(c[d>>2]|0)-1|0,0)|0;l=b;return a|0;}function rl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;if((c[c[g>>2]>>2]|0)!=1){c[f>>2]=-60;j=c[f>>2]|0;l=e;return j|0;}if(c[(c[g>>2]|0)+116+68>>2]|0){c[f>>2]=-40;j=c[f>>2]|0;l=e;return j|0;}else{c[(c[g>>2]|0)+456>>2]=c[h>>2];c[(c[g>>2]|0)+456+8>>2]=c[i>>2];c[(c[g>>2]|0)+456+12>>2]=c[i>>2];c[(c[g>>2]|0)+456+4>>2]=0;c[f>>2]=0;j=c[f>>2]|0;l=e;return j|0;}return 0;}function sl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+32|0;g=f+16|0;h=f+8|0;i=f;j=g;c[j>>2]=a;c[j+4>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;e=i;c[e>>2]=1;c[e+4>>2]=0;while(1){e=h;if(!((c[e>>2]|0)!=0|(c[e+4>>2]|0)!=0))break;if((c[h>>2]&1|0)!=0|0!=0){e=g;b=i;d=cE(c[b>>2]|0,c[b+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;e=i;c[e>>2]=d;c[e+4>>2]=y;}e=h;d=iE(c[e>>2]|0,c[e+4>>2]|0,1)|0;e=h;c[e>>2]=d;c[e+4>>2]=y;e=g;d=g;b=cE(c[d>>2]|0,c[d+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;e=g;c[e>>2]=b;c[e+4>>2]=y;}g=i;y=c[g+4>>2]|0;l=f;return c[g>>2]|0;}function tl(a,b){a=a|0;b=b|0;return((c[a+8>>2]|0)==(c[b+8>>2]|0)?(c[a+4>>2]|0)==(c[b+4>>2]|0):0)&(c[a+24>>2]|0)==(c[b+24>>2]|0)&((c[a+16>>2]|0)==3|0)==((c[b+16>>2]|0)==3|0)|0;}function ul(a,b){a=a|0;b=b|0;var d=0;if(!(c[a>>2]|0)?!(c[b>>2]|0):0)d=1;else if((((c[a>>2]|0)==(c[b>>2]|0)?(c[a+4>>2]|0)==(c[b+4>>2]|0):0)?(c[a+8>>2]|0)==(c[b+8>>2]|0):0)?(c[a+12>>2]|0)==(c[b+12>>2]|0):0)d=(c[a+16>>2]|0)==(c[b+16>>2]|0);else d=0;return d&1|0;}function vl(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;h=l;l=l+32|0;i=h+28|0;j=h+24|0;k=h+20|0;m=h;n=h+16|0;o=h+12|0;p=h+8|0;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;d=m;c[d>>2]=f;c[d+4>>2]=g;g=jE(1,0,c[e>>2]|0)|0;d=y;f=m;b=c[f+4>>2]|0;if(d>>>0<b>>>0|((d|0)==(b|0)?g>>>0<(c[f>>2]|0)>>>0:0)){f=jE(1,0,c[e>>2]|0)|0;q=f;r=y;}else{f=m;q=c[f>>2]|0;r=c[f+4>>2]|0;}if(1>q>>>0)s=1;else{q=jE(1,0,c[e>>2]|0)|0;f=y;r=m;g=c[r+4>>2]|0;if(f>>>0<g>>>0|((f|0)==(g|0)?q>>>0<(c[r>>2]|0)>>>0:0)){r=jE(1,0,c[e>>2]|0)|0;t=r;u=y;}else{r=m;t=c[r>>2]|0;u=c[r+4>>2]|0;}s=t;}c[n>>2]=s;c[o>>2]=131072<(c[n>>2]|0)>>>0?131072:c[n>>2]|0;if((c[k>>2]|0)!=1){v=0;c[p>>2]=v;w=c[o>>2]|0;x=c[j>>2]|0;z=w>>>0<=x>>>0;A=z&1;B=c[p>>2]|0;C=c[i>>2]|0;D=B>>>0<=C>>>0;E=D&1;F=A&E;l=h;return F|0;}v=(c[n>>2]|0)+(c[o>>2]|0)|0;c[p>>2]=v;w=c[o>>2]|0;x=c[j>>2]|0;z=w>>>0<=x>>>0;A=z&1;B=c[p>>2]|0;C=c[i>>2]|0;D=B>>>0<=C>>>0;E=D&1;F=A&E;l=h;return F|0;}function wl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;xl(c[f>>2]|0,c[g>>2]&65535);a[(c[f>>2]|0)+2>>0]=(c[g>>2]|0)>>>16;l=e;return;}function xl(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g+4|0;i=g+8|0;j=g;c[h>>2]=d;b[i>>1]=f;f=(Jj()|0)!=0;d=c[h>>2]|0;if(f){yl(d,b[i>>1]|0);l=g;return;}else{c[j>>2]=d;a[c[j>>2]>>0]=b[i>>1];a[(c[j>>2]|0)+1>>0]=(e[i>>1]|0)>>8;l=g;return;}}function yl(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f;h=f+4|0;c[g>>2]=d;b[h>>1]=e;e=b[h>>1]|0;h=c[g>>2]|0;a[h>>0]=e;a[h+1>>0]=e>>8;l=f;return;}function zl(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;d=l;l=l+48|0;f=d+32|0;g=d+28|0;h=d+24|0;i=d+20|0;j=d+16|0;k=d+12|0;m=d+8|0;n=d+4|0;o=d;c[f>>2]=b;c[g>>2]=c[c[f>>2]>>2];c[h>>2]=c[(c[f>>2]|0)+16>>2];c[i>>2]=c[(c[f>>2]|0)+24>>2];c[j>>2]=c[(c[f>>2]|0)+20>>2];c[k>>2]=((c[(c[f>>2]|0)+4>>2]|0)-(c[c[f>>2]>>2]|0)|0)/8|0;c[m>>2]=0;while(1){if((c[m>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;c[n>>2]=e[(c[g>>2]|0)+(c[m>>2]<<3)+4>>1];c[o>>2]=e[(c[g>>2]|0)+(c[m>>2]<<3)+6>>1];b=(Al(c[n>>2]|0)|0)&255;a[(c[h>>2]|0)+(c[m>>2]|0)>>0]=b;b=(uj(c[(c[g>>2]|0)+(c[m>>2]<<3)>>2]|0)|0)&255;a[(c[i>>2]|0)+(c[m>>2]|0)>>0]=b;b=(Bl(c[o>>2]|0)|0)&255;a[(c[j>>2]|0)+(c[m>>2]|0)>>0]=b;c[m>>2]=(c[m>>2]|0)+1;}if((c[(c[f>>2]|0)+28>>2]|0)==1)a[(c[h>>2]|0)+(c[(c[f>>2]|0)+32>>2]|0)>>0]=35;if((c[(c[f>>2]|0)+28>>2]|0)!=2){l=d;return;}a[(c[j>>2]|0)+(c[(c[f>>2]|0)+32>>2]|0)>>0]=52;l=d;return;}function Al(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;if((c[e>>2]|0)>>>0>63){f=(uj(a)|0)+19|0;l=b;return f|0;}else{f=d[3008+a>>0]|0;l=b;return f|0;}return 0;}function Bl(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;if((c[e>>2]|0)>>>0>127){f=(uj(a)|0)+36|0;l=b;return f|0;}else{f=d[3072+a>>0]|0;l=b;return f|0;}return 0;}function Cl(a,b,d,e,f,g,h,i,j,k,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;o=l;l=l+64|0;p=o+48|0;q=o+44|0;r=o+40|0;s=o+36|0;t=o+32|0;u=o+28|0;v=o+24|0;w=o+20|0;x=o+16|0;y=o+12|0;z=o+8|0;A=o+4|0;B=o;c[q>>2]=a;c[r>>2]=b;c[s>>2]=d;c[t>>2]=e;c[u>>2]=f;c[v>>2]=g;c[w>>2]=h;c[x>>2]=i;c[y>>2]=j;c[z>>2]=k;c[A>>2]=m;c[B>>2]=n;if(c[B>>2]|0){c[p>>2]=Dl(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;C=c[p>>2]|0;l=o;return C|0;}else{c[p>>2]=El(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0,c[z>>2]|0,c[A>>2]|0)|0;C=c[p>>2]|0;l=o;return C|0;}return 0;}function Dl(b,f,g,h,i,j,k,m,n,o,p){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;q=l;l=l+208|0;r=q+192|0;s=q+188|0;t=q+184|0;u=q+180|0;v=q+176|0;w=q+172|0;x=q+168|0;y=q+164|0;z=q+160|0;A=q+156|0;B=q+152|0;C=q+148|0;D=q+128|0;E=q+112|0;F=q+96|0;G=q+80|0;H=q+76|0;I=q+72|0;J=q+68|0;K=q+64|0;L=q+198|0;M=q+197|0;N=q+196|0;O=q+60|0;P=q+56|0;Q=q+52|0;R=q+48|0;S=q+44|0;T=q+40|0;U=q+36|0;V=q+32|0;W=q+28|0;X=q+24|0;Y=q+20|0;Z=q+16|0;_=q+12|0;$=q+8|0;aa=q+4|0;ba=q;c[T>>2]=b;c[U>>2]=f;c[V>>2]=g;c[W>>2]=h;c[X>>2]=i;c[Y>>2]=j;c[Z>>2]=k;c[_>>2]=m;c[$>>2]=n;c[aa>>2]=o;c[ba>>2]=p;p=c[U>>2]|0;U=c[V>>2]|0;V=c[W>>2]|0;W=c[X>>2]|0;X=c[Y>>2]|0;Y=c[Z>>2]|0;Z=c[_>>2]|0;_=c[$>>2]|0;$=c[aa>>2]|0;aa=c[ba>>2]|0;c[s>>2]=c[T>>2];c[t>>2]=p;c[u>>2]=U;c[v>>2]=V;c[w>>2]=W;c[x>>2]=X;c[y>>2]=Y;c[z>>2]=Z;c[A>>2]=_;c[B>>2]=$;c[C>>2]=aa;c[H>>2]=Fl(D,c[s>>2]|0,c[t>>2]|0)|0;if(wj(c[H>>2]|0)|0){c[r>>2]=-70;ca=c[r>>2]|0;l=q;return ca|0;}Gl(E,c[u>>2]|0,d[(c[v>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Gl(F,c[w>>2]|0,d[(c[x>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Gl(G,c[y>>2]|0,d[(c[z>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Hl(D,e[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)+4>>1]|0,c[5696+((d[(c[z>>2]|0)+((c[B>>2]|0)-1)>>0]|0)<<2)>>2]|0);if(Il()|0)Jl(D);Hl(D,e[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)+6>>1]|0,c[5840+((d[(c[v>>2]|0)+((c[B>>2]|0)-1)>>0]|0)<<2)>>2]|0);if(Il()|0)Jl(D);if(c[C>>2]|0){c[I>>2]=d[(c[x>>2]|0)+((c[B>>2]|0)-1)>>0];y=c[I>>2]|0;w=c[I>>2]|0;u=(Il()|0)!=0;if(w>>>0<((u?25:57)-1|0)>>>0)da=c[I>>2]|0;else{u=(Il()|0)!=0;da=(u?25:57)-1|0;}c[J>>2]=y-da;if(c[J>>2]|0){Hl(D,c[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)>>2]|0,c[J>>2]|0);Jl(D);}Hl(D,(c[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)>>2]|0)>>>(c[J>>2]|0),(c[I>>2]|0)-(c[J>>2]|0)|0);}else Hl(D,c[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)>>2]|0,d[(c[x>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Jl(D);c[K>>2]=(c[B>>2]|0)-2;while(1){if((c[K>>2]|0)>>>0>=(c[B>>2]|0)>>>0)break;a[L>>0]=a[(c[z>>2]|0)+(c[K>>2]|0)>>0]|0;a[M>>0]=a[(c[x>>2]|0)+(c[K>>2]|0)>>0]|0;a[N>>0]=a[(c[v>>2]|0)+(c[K>>2]|0)>>0]|0;c[O>>2]=c[5696+((d[L>>0]|0)<<2)>>2];c[P>>2]=d[M>>0];c[Q>>2]=c[5840+((d[N>>0]|0)<<2)>>2];Kl(D,F,d[M>>0]|0);Kl(D,E,d[N>>0]|0);if(Il()|0)Jl(D);Kl(D,G,d[L>>0]|0);if(!(!(Il()|0)?((c[P>>2]|0)+(c[Q>>2]|0)+(c[O>>2]|0)|0)>>>0<31:0))Jl(D);Hl(D,e[(c[A>>2]|0)+(c[K>>2]<<3)+4>>1]|0,c[O>>2]|0);if(Il()|0?((c[O>>2]|0)+(c[Q>>2]|0)|0)>>>0>24:0)Jl(D);Hl(D,e[(c[A>>2]|0)+(c[K>>2]<<3)+6>>1]|0,c[Q>>2]|0);if(!(!(Il()|0)?((c[P>>2]|0)+(c[Q>>2]|0)+(c[O>>2]|0)|0)>>>0<=56:0))Jl(D);if(c[C>>2]|0){J=c[P>>2]|0;I=c[P>>2]|0;da=(Il()|0)!=0;if(I>>>0<((da?25:57)-1|0)>>>0)ea=c[P>>2]|0;else{da=(Il()|0)!=0;ea=(da?25:57)-1|0;}c[R>>2]=J-ea;if(c[R>>2]|0){Hl(D,c[(c[A>>2]|0)+(c[K>>2]<<3)>>2]|0,c[R>>2]|0);Jl(D);}Hl(D,(c[(c[A>>2]|0)+(c[K>>2]<<3)>>2]|0)>>>(c[R>>2]|0),(c[P>>2]|0)-(c[R>>2]|0)|0);}else Hl(D,c[(c[A>>2]|0)+(c[K>>2]<<3)>>2]|0,c[P>>2]|0);Jl(D);c[K>>2]=(c[K>>2]|0)+-1;}Ll(D,E);Ll(D,F);Ll(D,G);c[S>>2]=Ml(D)|0;if(!(c[S>>2]|0)){c[r>>2]=-70;ca=c[r>>2]|0;l=q;return ca|0;}else{c[r>>2]=c[S>>2];ca=c[r>>2]|0;l=q;return ca|0;}return 0;}function El(b,f,g,h,i,j,k,m,n,o,p){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;q=l;l=l+208|0;r=q+192|0;s=q+188|0;t=q+184|0;u=q+180|0;v=q+176|0;w=q+172|0;x=q+168|0;y=q+164|0;z=q+160|0;A=q+156|0;B=q+152|0;C=q+148|0;D=q+128|0;E=q+112|0;F=q+96|0;G=q+80|0;H=q+76|0;I=q+72|0;J=q+68|0;K=q+64|0;L=q+198|0;M=q+197|0;N=q+196|0;O=q+60|0;P=q+56|0;Q=q+52|0;R=q+48|0;S=q+44|0;T=q+40|0;U=q+36|0;V=q+32|0;W=q+28|0;X=q+24|0;Y=q+20|0;Z=q+16|0;_=q+12|0;$=q+8|0;aa=q+4|0;ba=q;c[T>>2]=b;c[U>>2]=f;c[V>>2]=g;c[W>>2]=h;c[X>>2]=i;c[Y>>2]=j;c[Z>>2]=k;c[_>>2]=m;c[$>>2]=n;c[aa>>2]=o;c[ba>>2]=p;p=c[U>>2]|0;U=c[V>>2]|0;V=c[W>>2]|0;W=c[X>>2]|0;X=c[Y>>2]|0;Y=c[Z>>2]|0;Z=c[_>>2]|0;_=c[$>>2]|0;$=c[aa>>2]|0;aa=c[ba>>2]|0;c[s>>2]=c[T>>2];c[t>>2]=p;c[u>>2]=U;c[v>>2]=V;c[w>>2]=W;c[x>>2]=X;c[y>>2]=Y;c[z>>2]=Z;c[A>>2]=_;c[B>>2]=$;c[C>>2]=aa;c[H>>2]=Fl(D,c[s>>2]|0,c[t>>2]|0)|0;if(wj(c[H>>2]|0)|0){c[r>>2]=-70;ca=c[r>>2]|0;l=q;return ca|0;}Gl(E,c[u>>2]|0,d[(c[v>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Gl(F,c[w>>2]|0,d[(c[x>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Gl(G,c[y>>2]|0,d[(c[z>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Hl(D,e[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)+4>>1]|0,c[5696+((d[(c[z>>2]|0)+((c[B>>2]|0)-1)>>0]|0)<<2)>>2]|0);if(Il()|0)Jl(D);Hl(D,e[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)+6>>1]|0,c[5840+((d[(c[v>>2]|0)+((c[B>>2]|0)-1)>>0]|0)<<2)>>2]|0);if(Il()|0)Jl(D);if(c[C>>2]|0){c[I>>2]=d[(c[x>>2]|0)+((c[B>>2]|0)-1)>>0];y=c[I>>2]|0;w=c[I>>2]|0;u=(Il()|0)!=0;if(w>>>0<((u?25:57)-1|0)>>>0)da=c[I>>2]|0;else{u=(Il()|0)!=0;da=(u?25:57)-1|0;}c[J>>2]=y-da;if(c[J>>2]|0){Hl(D,c[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)>>2]|0,c[J>>2]|0);Jl(D);}Hl(D,(c[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)>>2]|0)>>>(c[J>>2]|0),(c[I>>2]|0)-(c[J>>2]|0)|0);}else Hl(D,c[(c[A>>2]|0)+((c[B>>2]|0)-1<<3)>>2]|0,d[(c[x>>2]|0)+((c[B>>2]|0)-1)>>0]|0);Jl(D);c[K>>2]=(c[B>>2]|0)-2;while(1){if((c[K>>2]|0)>>>0>=(c[B>>2]|0)>>>0)break;a[L>>0]=a[(c[z>>2]|0)+(c[K>>2]|0)>>0]|0;a[M>>0]=a[(c[x>>2]|0)+(c[K>>2]|0)>>0]|0;a[N>>0]=a[(c[v>>2]|0)+(c[K>>2]|0)>>0]|0;c[O>>2]=c[5696+((d[L>>0]|0)<<2)>>2];c[P>>2]=d[M>>0];c[Q>>2]=c[5840+((d[N>>0]|0)<<2)>>2];Kl(D,F,d[M>>0]|0);Kl(D,E,d[N>>0]|0);if(Il()|0)Jl(D);Kl(D,G,d[L>>0]|0);if(!(!(Il()|0)?((c[P>>2]|0)+(c[Q>>2]|0)+(c[O>>2]|0)|0)>>>0<31:0))Jl(D);Hl(D,e[(c[A>>2]|0)+(c[K>>2]<<3)+4>>1]|0,c[O>>2]|0);if(Il()|0?((c[O>>2]|0)+(c[Q>>2]|0)|0)>>>0>24:0)Jl(D);Hl(D,e[(c[A>>2]|0)+(c[K>>2]<<3)+6>>1]|0,c[Q>>2]|0);if(!(!(Il()|0)?((c[P>>2]|0)+(c[Q>>2]|0)+(c[O>>2]|0)|0)>>>0<=56:0))Jl(D);if(c[C>>2]|0){J=c[P>>2]|0;I=c[P>>2]|0;da=(Il()|0)!=0;if(I>>>0<((da?25:57)-1|0)>>>0)ea=c[P>>2]|0;else{da=(Il()|0)!=0;ea=(da?25:57)-1|0;}c[R>>2]=J-ea;if(c[R>>2]|0){Hl(D,c[(c[A>>2]|0)+(c[K>>2]<<3)>>2]|0,c[R>>2]|0);Jl(D);}Hl(D,(c[(c[A>>2]|0)+(c[K>>2]<<3)>>2]|0)>>>(c[R>>2]|0),(c[P>>2]|0)-(c[R>>2]|0)|0);}else Hl(D,c[(c[A>>2]|0)+(c[K>>2]<<3)>>2]|0,c[P>>2]|0);Jl(D);c[K>>2]=(c[K>>2]|0)+-1;}Ll(D,E);Ll(D,F);Ll(D,G);c[S>>2]=Ml(D)|0;if(!(c[S>>2]|0)){c[r>>2]=-70;ca=c[r>>2]|0;l=q;return ca|0;}else{c[r>>2]=c[S>>2];ca=c[r>>2]|0;l=q;return ca|0;}return 0;}function Fl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[c[g>>2]>>2]=0;c[(c[g>>2]|0)+4>>2]=0;c[(c[g>>2]|0)+8>>2]=c[h>>2];c[(c[g>>2]|0)+12>>2]=c[(c[g>>2]|0)+8>>2];c[(c[g>>2]|0)+16>>2]=(c[(c[g>>2]|0)+8>>2]|0)+(c[i>>2]|0)+-4;if((c[i>>2]|0)>>>0<=4){c[f>>2]=-70;j=c[f>>2]|0;l=e;return j|0;}else{c[f>>2]=0;j=c[f>>2]|0;l=e;return j|0;}return 0;}function Gl(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;Ul(c[g>>2]|0,c[h>>2]|0);h=(c[(c[g>>2]|0)+8>>2]|0)+(c[i>>2]<<3)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[k>>2]=c[(c[g>>2]|0)+4>>2];c[m>>2]=((c[j+4>>2]|0)+32768|0)>>>16;c[c[g>>2]>>2]=(c[m>>2]<<16)-(c[j+4>>2]|0);c[c[g>>2]>>2]=e[(c[k>>2]|0)+((c[c[g>>2]>>2]>>c[m>>2])+(c[j>>2]|0)<<1)>>1];l=f;return;}function Hl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=c[f>>2]|0;c[d>>2]=c[d>>2]|(c[g>>2]&c[2800+(c[h>>2]<<2)>>2])<<c[(c[f>>2]|0)+4>>2];g=(c[f>>2]|0)+4|0;c[g>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function Il(){return 1;}function Jl(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=(c[(c[d>>2]|0)+4>>2]|0)>>>3;Ol(c[(c[d>>2]|0)+12>>2]|0,c[c[d>>2]>>2]|0);a=(c[d>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+(c[e>>2]|0);if((c[(c[d>>2]|0)+12>>2]|0)>>>0>(c[(c[d>>2]|0)+16>>2]|0)>>>0)c[(c[d>>2]|0)+12>>2]=c[(c[d>>2]|0)+16>>2];a=(c[d>>2]|0)+4|0;c[a>>2]=c[a>>2]&7;a=c[d>>2]|0;c[a>>2]=(c[a>>2]|0)>>>(c[e>>2]<<3);l=b;return;}function Kl(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;d=(c[(c[h>>2]|0)+8>>2]|0)+(c[i>>2]<<3)|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[k>>2]=c[(c[h>>2]|0)+4>>2];c[m>>2]=((c[c[h>>2]>>2]|0)+(c[j+4>>2]|0)|0)>>>16;Hl(c[g>>2]|0,c[c[h>>2]>>2]|0,c[m>>2]|0);c[c[h>>2]>>2]=e[(c[k>>2]|0)+((c[c[h>>2]>>2]>>c[m>>2])+(c[j>>2]|0)<<1)>>1];l=f;return;}function Ll(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;Hl(c[e>>2]|0,c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+12>>2]|0);Jl(c[e>>2]|0);l=d;return;}function Ml(a){a=a|0;var b=0,d=0,e=0,f=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;Nl(c[e>>2]|0,1,1);Jl(c[e>>2]|0);if((c[(c[e>>2]|0)+12>>2]|0)>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){c[d>>2]=0;f=c[d>>2]|0;l=b;return f|0;}else{c[d>>2]=(c[(c[e>>2]|0)+12>>2]|0)-(c[(c[e>>2]|0)+8>>2]|0)+((c[(c[e>>2]|0)+4>>2]|0)>>>0>0&1);f=c[d>>2]|0;l=b;return f|0;}return 0;}function Nl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=c[f>>2]|0;c[d>>2]=c[d>>2]|c[g>>2]<<c[(c[f>>2]|0)+4>>2];g=(c[f>>2]|0)+4|0;c[g>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function Ol(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(Il()|0)!=0;a=c[e>>2]|0;e=c[f>>2]|0;if(b){Pl(a,e);l=d;return;}else{Ql(a,e,0);l=d;return;}}function Pl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=(Jj()|0)!=0;a=c[e>>2]|0;e=c[f>>2]|0;if(b){Tl(a,e);l=d;return;}else{Tl(a,Lj(e)|0);l=d;return;}}function Ql(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;d=(Jj()|0)!=0;a=c[f>>2]|0;f=g;g=c[f>>2]|0;b=c[f+4>>2]|0;if(d){Rl(a,g,b);l=e;return;}else{d=Sl(g,b)|0;Rl(a,d,y);l=e;return;}}function Rl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+16|0;g=f+8|0;h=f;c[g>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;e=h;h=c[e>>2]|0;b=c[e+4>>2]|0;e=c[g>>2]|0;g=e;a[g>>0]=h;a[g+1>>0]=h>>8;a[g+2>>0]=h>>16;a[g+3>>0]=h>>24;h=e+4|0;a[h>>0]=b;a[h+1>>0]=b>>8;a[h+2>>0]=b>>16;a[h+3>>0]=b>>24;l=f;return;}function Sl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d;f=e;c[f>>2]=a;c[f+4>>2]=b;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,56)|0;b=y&-16777216;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,40)|0;f=b|y&16711680;b=e;jE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=f|y&65280;f=e;jE(c[f>>2]|0,c[f+4>>2]|0,8)|0;f=b|y&255;b=e;a=iE(c[b>>2]|0,c[b+4>>2]|0,8)|0;b=e;g=iE(c[b>>2]|0,c[b+4>>2]|0,24)|0;b=e;h=iE(c[b>>2]|0,c[b+4>>2]|0,40)|0;b=e;e=iE(c[b>>2]|0,c[b+4>>2]|0,56)|0;y=f;l=d;return a&-16777216|g&16711680|h&65280|e&255|0;}function Tl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[g>>2]|0;g=c[f>>2]|0;a[g>>0]=d;a[g+1>>0]=d>>8;a[g+2>>0]=d>>16;a[g+3>>0]=d>>24;l=e;return;}function Ul(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;i=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=c[f>>2];c[h>>2]=c[g>>2];c[i>>2]=(Vl(c[g>>2]|0)|0)&65535;c[c[e>>2]>>2]=1<<c[i>>2];c[(c[e>>2]|0)+4>>2]=(c[h>>2]|0)+4;if(c[i>>2]|0)j=1<<(c[i>>2]|0)-1;else j=1;c[(c[e>>2]|0)+8>>2]=(c[f>>2]|0)+4+(j<<2);c[(c[e>>2]|0)+12>>2]=c[i>>2];l=d;return;}function Vl(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function Wl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;l=d;return c[2928+(((c[f>>2]|0)!=0&1)*36|0)+(c[e>>2]<<2)>>2]|0;}function Xl(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0;i=l;l=l+512|0;j=i+500|0;k=i+496|0;m=i+492|0;n=i+488|0;o=i+484|0;p=i+480|0;q=i+476|0;r=i+472|0;s=i+468|0;t=i+464|0;u=i+460|0;v=i+456|0;w=i+452|0;x=i+448|0;y=i+444|0;z=i+440|0;A=i+436|0;B=i+432|0;C=i+428|0;D=i+424|0;E=i+420|0;F=i+416|0;G=i+412|0;H=i+408|0;I=i+404|0;J=i+400|0;K=i+396|0;L=i+392|0;M=i+388|0;N=i+384|0;O=i+380|0;P=i+376|0;Q=i+372|0;R=i+368|0;S=i+364|0;T=i+360|0;U=i+356|0;V=i+352|0;W=i+348|0;X=i+344|0;Y=i+340|0;Z=i+336|0;_=i+332|0;$=i+328|0;aa=i+324|0;ba=i+320|0;ca=i+316|0;da=i+312|0;ea=i+308|0;fa=i+304|0;ga=i+300|0;ha=i+296|0;ia=i+292|0;ja=i+288|0;ka=i+284|0;la=i+280|0;ma=i+276|0;na=i+272|0;oa=i+268|0;pa=i+264|0;qa=i+260|0;ra=i+256|0;sa=i+252|0;ta=i+248|0;ua=i+244|0;va=i+240|0;wa=i+236|0;xa=i+232|0;ya=i+228|0;za=i+224|0;Aa=i+220|0;Ba=i+216|0;Ca=i+212|0;Da=i+208|0;Ea=i+204|0;Fa=i+200|0;Ga=i+196|0;Ha=i+192|0;Ia=i+188|0;Ja=i+184|0;Ka=i+180|0;La=i+176|0;Ma=i+172|0;Na=i+168|0;Oa=i+164|0;Pa=i+160|0;Qa=i+156|0;Ra=i+152|0;Sa=i+148|0;Ta=i+144|0;Ua=i+140|0;Va=i+136|0;Wa=i+132|0;Xa=i+128|0;Ya=i+124|0;Za=i+120|0;_a=i+116|0;$a=i+112|0;ab=i+108|0;bb=i+104|0;cb=i+100|0;db=i+96|0;eb=i+92|0;fb=i+88|0;gb=i+84|0;hb=i+80|0;ib=i+76|0;jb=i+72|0;kb=i+68|0;lb=i+64|0;mb=i+60|0;nb=i+56|0;ob=i+52|0;pb=i+48|0;qb=i+44|0;rb=i+40|0;sb=i+36|0;tb=i+32|0;ub=i+28|0;vb=i+24|0;wb=i+20|0;xb=i+16|0;yb=i+12|0;zb=i+8|0;Ab=i+4|0;Bb=i;c[tb>>2]=a;c[ub>>2]=b;c[vb>>2]=e;c[wb>>2]=f;c[xb>>2]=g;c[yb>>2]=h;c[zb>>2]=c[(c[wb>>2]|0)+8>>2];c[Ab>>2]=c[(c[wb>>2]|0)+16>>2];c[Bb>>2]=c[(c[wb>>2]|0)+20>>2];switch(c[Ab>>2]|0){case 7:{Ab=c[ub>>2]|0;wb=c[vb>>2]|0;h=c[xb>>2]|0;g=c[yb>>2]|0;f=c[zb>>2]|0;e=c[Bb>>2]|0;c[j>>2]=c[tb>>2];c[k>>2]=Ab;c[m>>2]=wb;c[n>>2]=h;c[o>>2]=g;c[p>>2]=f;c[q>>2]=e;c[r>>2]=7;c[s>>2]=c[(c[j>>2]|0)+36>>2];c[t>>2]=c[(c[j>>2]|0)+4>>2];c[u>>2]=c[n>>2];c[v>>2]=c[u>>2];c[w>>2]=c[u>>2];c[x>>2]=c[(c[j>>2]|0)+12>>2];c[y>>2]=(c[t>>2]|0)+(c[x>>2]|0);c[z>>2]=(c[u>>2]|0)+(c[o>>2]|0);c[A>>2]=(c[z>>2]|0)+-8;c[B>>2]=c[c[m>>2]>>2];c[C>>2]=c[(c[m>>2]|0)+4>>2];c[D>>2]=0;c[v>>2]=(c[v>>2]|0)+((c[v>>2]|0)==(c[y>>2]|0)&1);c[E>>2]=(c[v>>2]|0)-(c[y>>2]|0);if((c[C>>2]|0)>>>0>(c[E>>2]|0)>>>0){c[D>>2]=c[C>>2];c[C>>2]=0;}if((c[B>>2]|0)>>>0>(c[E>>2]|0)>>>0){c[D>>2]=c[B>>2];c[B>>2]=0;}a:while(1){if((c[v>>2]|0)>>>0>=(c[A>>2]|0)>>>0)break;c[G>>2]=Tk(c[v>>2]|0,c[p>>2]|0,c[r>>2]|0)|0;c[H>>2]=(c[v>>2]|0)-(c[t>>2]|0);c[I>>2]=c[(c[s>>2]|0)+(c[G>>2]<<2)>>2];c[J>>2]=(c[t>>2]|0)+(c[I>>2]|0);c[(c[s>>2]|0)+(c[G>>2]<<2)>>2]=c[H>>2];E=(c[B>>2]|0)>>>0>0&1;o=fl((c[v>>2]|0)+1+(0-(c[B>>2]|0))|0)|0;do{if(E&(o|0)==(fl((c[v>>2]|0)+1|0)|0)|0){c[F>>2]=(nn((c[v>>2]|0)+1+4|0,(c[v>>2]|0)+1+4+(0-(c[B>>2]|0))|0,c[z>>2]|0)|0)+4;c[v>>2]=(c[v>>2]|0)+1;kn(c[k>>2]|0,(c[v>>2]|0)-(c[w>>2]|0)|0,c[w>>2]|0,0,(c[F>>2]|0)-3|0);}else{if((c[I>>2]|0)>>>0>(c[x>>2]|0)>>>0?(u=fl(c[J>>2]|0)|0,(u|0)==(fl(c[v>>2]|0)|0)):0){c[F>>2]=(nn((c[v>>2]|0)+4|0,(c[J>>2]|0)+4|0,c[z>>2]|0)|0)+4;c[K>>2]=(c[v>>2]|0)-(c[J>>2]|0);while(1){if(!(((c[v>>2]|0)>>>0>(c[w>>2]|0)>>>0?(c[J>>2]|0)>>>0>(c[y>>2]|0)>>>0:0)|0))break;if((d[(c[v>>2]|0)+-1>>0]|0|0)!=(d[(c[J>>2]|0)+-1>>0]|0|0))break;c[v>>2]=(c[v>>2]|0)+-1;c[J>>2]=(c[J>>2]|0)+-1;c[F>>2]=(c[F>>2]|0)+1;}c[C>>2]=c[B>>2];c[B>>2]=c[K>>2];kn(c[k>>2]|0,(c[v>>2]|0)-(c[w>>2]|0)|0,c[w>>2]|0,(c[K>>2]|0)+2|0,(c[F>>2]|0)-3|0);break;}c[v>>2]=(c[v>>2]|0)+(((c[v>>2]|0)-(c[w>>2]|0)>>8)+(c[q>>2]|0));continue a;}}while(0);c[v>>2]=(c[v>>2]|0)+(c[F>>2]|0);c[w>>2]=c[v>>2];b:do{if((c[v>>2]|0)>>>0<=(c[A>>2]|0)>>>0){o=(c[H>>2]|0)+2|0;E=c[s>>2]|0;c[E+((Tk((c[t>>2]|0)+(c[H>>2]|0)+2|0,c[p>>2]|0,c[r>>2]|0)|0)<<2)>>2]=o;o=(c[v>>2]|0)+-2-(c[t>>2]|0)|0;E=c[s>>2]|0;c[E+((Tk((c[v>>2]|0)+-2|0,c[p>>2]|0,c[r>>2]|0)|0)<<2)>>2]=o;while(1){if((c[v>>2]|0)>>>0>(c[A>>2]|0)>>>0)break b;o=(c[C>>2]|0)>>>0>0&1;E=fl(c[v>>2]|0)|0;if(!(o&(E|0)==(fl((c[v>>2]|0)+(0-(c[C>>2]|0))|0)|0)))break b;c[L>>2]=(nn((c[v>>2]|0)+4|0,(c[v>>2]|0)+4+(0-(c[C>>2]|0))|0,c[z>>2]|0)|0)+4;c[M>>2]=c[C>>2];c[C>>2]=c[B>>2];c[B>>2]=c[M>>2];E=(c[v>>2]|0)-(c[t>>2]|0)|0;o=c[s>>2]|0;c[o+((Tk(c[v>>2]|0,c[p>>2]|0,c[r>>2]|0)|0)<<2)>>2]=E;kn(c[k>>2]|0,0,c[w>>2]|0,0,(c[L>>2]|0)-3|0);c[v>>2]=(c[v>>2]|0)+(c[L>>2]|0);c[w>>2]=c[v>>2];}}}while(0);}c[c[m>>2]>>2]=c[B>>2]|0?c[B>>2]|0:c[D>>2]|0;c[(c[m>>2]|0)+4>>2]=c[C>>2]|0?c[C>>2]|0:c[D>>2]|0;c[sb>>2]=(c[z>>2]|0)-(c[w>>2]|0);Cb=c[sb>>2]|0;l=i;return Cb|0;}case 5:{w=c[ub>>2]|0;z=c[vb>>2]|0;D=c[xb>>2]|0;C=c[yb>>2]|0;m=c[zb>>2]|0;B=c[Bb>>2]|0;c[oa>>2]=c[tb>>2];c[pa>>2]=w;c[qa>>2]=z;c[ra>>2]=D;c[sa>>2]=C;c[ta>>2]=m;c[ua>>2]=B;c[va>>2]=5;c[wa>>2]=c[(c[oa>>2]|0)+36>>2];c[xa>>2]=c[(c[oa>>2]|0)+4>>2];c[ya>>2]=c[ra>>2];c[za>>2]=c[ya>>2];c[Aa>>2]=c[ya>>2];c[Ba>>2]=c[(c[oa>>2]|0)+12>>2];c[Ca>>2]=(c[xa>>2]|0)+(c[Ba>>2]|0);c[Da>>2]=(c[ya>>2]|0)+(c[sa>>2]|0);c[Ea>>2]=(c[Da>>2]|0)+-8;c[Fa>>2]=c[c[qa>>2]>>2];c[Ga>>2]=c[(c[qa>>2]|0)+4>>2];c[Ha>>2]=0;c[za>>2]=(c[za>>2]|0)+((c[za>>2]|0)==(c[Ca>>2]|0)&1);c[Ia>>2]=(c[za>>2]|0)-(c[Ca>>2]|0);if((c[Ga>>2]|0)>>>0>(c[Ia>>2]|0)>>>0){c[Ha>>2]=c[Ga>>2];c[Ga>>2]=0;}if((c[Fa>>2]|0)>>>0>(c[Ia>>2]|0)>>>0){c[Ha>>2]=c[Fa>>2];c[Fa>>2]=0;}c:while(1){if((c[za>>2]|0)>>>0>=(c[Ea>>2]|0)>>>0)break;c[Ka>>2]=Tk(c[za>>2]|0,c[ta>>2]|0,c[va>>2]|0)|0;c[La>>2]=(c[za>>2]|0)-(c[xa>>2]|0);c[Ma>>2]=c[(c[wa>>2]|0)+(c[Ka>>2]<<2)>>2];c[Na>>2]=(c[xa>>2]|0)+(c[Ma>>2]|0);c[(c[wa>>2]|0)+(c[Ka>>2]<<2)>>2]=c[La>>2];Ia=(c[Fa>>2]|0)>>>0>0&1;sa=fl((c[za>>2]|0)+1+(0-(c[Fa>>2]|0))|0)|0;do{if(Ia&(sa|0)==(fl((c[za>>2]|0)+1|0)|0)|0){c[Ja>>2]=(nn((c[za>>2]|0)+1+4|0,(c[za>>2]|0)+1+4+(0-(c[Fa>>2]|0))|0,c[Da>>2]|0)|0)+4;c[za>>2]=(c[za>>2]|0)+1;kn(c[pa>>2]|0,(c[za>>2]|0)-(c[Aa>>2]|0)|0,c[Aa>>2]|0,0,(c[Ja>>2]|0)-3|0);}else{if((c[Ma>>2]|0)>>>0>(c[Ba>>2]|0)>>>0?(ya=fl(c[Na>>2]|0)|0,(ya|0)==(fl(c[za>>2]|0)|0)):0){c[Ja>>2]=(nn((c[za>>2]|0)+4|0,(c[Na>>2]|0)+4|0,c[Da>>2]|0)|0)+4;c[Oa>>2]=(c[za>>2]|0)-(c[Na>>2]|0);while(1){if(!(((c[za>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?(c[Na>>2]|0)>>>0>(c[Ca>>2]|0)>>>0:0)|0))break;if((d[(c[za>>2]|0)+-1>>0]|0|0)!=(d[(c[Na>>2]|0)+-1>>0]|0|0))break;c[za>>2]=(c[za>>2]|0)+-1;c[Na>>2]=(c[Na>>2]|0)+-1;c[Ja>>2]=(c[Ja>>2]|0)+1;}c[Ga>>2]=c[Fa>>2];c[Fa>>2]=c[Oa>>2];kn(c[pa>>2]|0,(c[za>>2]|0)-(c[Aa>>2]|0)|0,c[Aa>>2]|0,(c[Oa>>2]|0)+2|0,(c[Ja>>2]|0)-3|0);break;}c[za>>2]=(c[za>>2]|0)+(((c[za>>2]|0)-(c[Aa>>2]|0)>>8)+(c[ua>>2]|0));continue c;}}while(0);c[za>>2]=(c[za>>2]|0)+(c[Ja>>2]|0);c[Aa>>2]=c[za>>2];d:do{if((c[za>>2]|0)>>>0<=(c[Ea>>2]|0)>>>0){sa=(c[La>>2]|0)+2|0;Ia=c[wa>>2]|0;c[Ia+((Tk((c[xa>>2]|0)+(c[La>>2]|0)+2|0,c[ta>>2]|0,c[va>>2]|0)|0)<<2)>>2]=sa;sa=(c[za>>2]|0)+-2-(c[xa>>2]|0)|0;Ia=c[wa>>2]|0;c[Ia+((Tk((c[za>>2]|0)+-2|0,c[ta>>2]|0,c[va>>2]|0)|0)<<2)>>2]=sa;while(1){if((c[za>>2]|0)>>>0>(c[Ea>>2]|0)>>>0)break d;sa=(c[Ga>>2]|0)>>>0>0&1;Ia=fl(c[za>>2]|0)|0;if(!(sa&(Ia|0)==(fl((c[za>>2]|0)+(0-(c[Ga>>2]|0))|0)|0)))break d;c[Pa>>2]=(nn((c[za>>2]|0)+4|0,(c[za>>2]|0)+4+(0-(c[Ga>>2]|0))|0,c[Da>>2]|0)|0)+4;c[Qa>>2]=c[Ga>>2];c[Ga>>2]=c[Fa>>2];c[Fa>>2]=c[Qa>>2];Ia=(c[za>>2]|0)-(c[xa>>2]|0)|0;sa=c[wa>>2]|0;c[sa+((Tk(c[za>>2]|0,c[ta>>2]|0,c[va>>2]|0)|0)<<2)>>2]=Ia;kn(c[pa>>2]|0,0,c[Aa>>2]|0,0,(c[Pa>>2]|0)-3|0);c[za>>2]=(c[za>>2]|0)+(c[Pa>>2]|0);c[Aa>>2]=c[za>>2];}}}while(0);}c[c[qa>>2]>>2]=c[Fa>>2]|0?c[Fa>>2]|0:c[Ha>>2]|0;c[(c[qa>>2]|0)+4>>2]=c[Ga>>2]|0?c[Ga>>2]|0:c[Ha>>2]|0;c[sb>>2]=(c[Da>>2]|0)-(c[Aa>>2]|0);Cb=c[sb>>2]|0;l=i;return Cb|0;}case 6:{Aa=c[ub>>2]|0;Da=c[vb>>2]|0;Ha=c[xb>>2]|0;Ga=c[yb>>2]|0;qa=c[zb>>2]|0;Fa=c[Bb>>2]|0;c[N>>2]=c[tb>>2];c[O>>2]=Aa;c[P>>2]=Da;c[Q>>2]=Ha;c[R>>2]=Ga;c[S>>2]=qa;c[T>>2]=Fa;c[U>>2]=6;c[V>>2]=c[(c[N>>2]|0)+36>>2];c[W>>2]=c[(c[N>>2]|0)+4>>2];c[X>>2]=c[Q>>2];c[Y>>2]=c[X>>2];c[Z>>2]=c[X>>2];c[_>>2]=c[(c[N>>2]|0)+12>>2];c[$>>2]=(c[W>>2]|0)+(c[_>>2]|0);c[aa>>2]=(c[X>>2]|0)+(c[R>>2]|0);c[ba>>2]=(c[aa>>2]|0)+-8;c[ca>>2]=c[c[P>>2]>>2];c[da>>2]=c[(c[P>>2]|0)+4>>2];c[ea>>2]=0;c[Y>>2]=(c[Y>>2]|0)+((c[Y>>2]|0)==(c[$>>2]|0)&1);c[fa>>2]=(c[Y>>2]|0)-(c[$>>2]|0);if((c[da>>2]|0)>>>0>(c[fa>>2]|0)>>>0){c[ea>>2]=c[da>>2];c[da>>2]=0;}if((c[ca>>2]|0)>>>0>(c[fa>>2]|0)>>>0){c[ea>>2]=c[ca>>2];c[ca>>2]=0;}e:while(1){if((c[Y>>2]|0)>>>0>=(c[ba>>2]|0)>>>0)break;c[ha>>2]=Tk(c[Y>>2]|0,c[S>>2]|0,c[U>>2]|0)|0;c[ia>>2]=(c[Y>>2]|0)-(c[W>>2]|0);c[ja>>2]=c[(c[V>>2]|0)+(c[ha>>2]<<2)>>2];c[ka>>2]=(c[W>>2]|0)+(c[ja>>2]|0);c[(c[V>>2]|0)+(c[ha>>2]<<2)>>2]=c[ia>>2];fa=(c[ca>>2]|0)>>>0>0&1;R=fl((c[Y>>2]|0)+1+(0-(c[ca>>2]|0))|0)|0;do{if(fa&(R|0)==(fl((c[Y>>2]|0)+1|0)|0)|0){c[ga>>2]=(nn((c[Y>>2]|0)+1+4|0,(c[Y>>2]|0)+1+4+(0-(c[ca>>2]|0))|0,c[aa>>2]|0)|0)+4;c[Y>>2]=(c[Y>>2]|0)+1;kn(c[O>>2]|0,(c[Y>>2]|0)-(c[Z>>2]|0)|0,c[Z>>2]|0,0,(c[ga>>2]|0)-3|0);}else{if((c[ja>>2]|0)>>>0>(c[_>>2]|0)>>>0?(X=fl(c[ka>>2]|0)|0,(X|0)==(fl(c[Y>>2]|0)|0)):0){c[ga>>2]=(nn((c[Y>>2]|0)+4|0,(c[ka>>2]|0)+4|0,c[aa>>2]|0)|0)+4;c[la>>2]=(c[Y>>2]|0)-(c[ka>>2]|0);while(1){if(!(((c[Y>>2]|0)>>>0>(c[Z>>2]|0)>>>0?(c[ka>>2]|0)>>>0>(c[$>>2]|0)>>>0:0)|0))break;if((d[(c[Y>>2]|0)+-1>>0]|0|0)!=(d[(c[ka>>2]|0)+-1>>0]|0|0))break;c[Y>>2]=(c[Y>>2]|0)+-1;c[ka>>2]=(c[ka>>2]|0)+-1;c[ga>>2]=(c[ga>>2]|0)+1;}c[da>>2]=c[ca>>2];c[ca>>2]=c[la>>2];kn(c[O>>2]|0,(c[Y>>2]|0)-(c[Z>>2]|0)|0,c[Z>>2]|0,(c[la>>2]|0)+2|0,(c[ga>>2]|0)-3|0);break;}c[Y>>2]=(c[Y>>2]|0)+(((c[Y>>2]|0)-(c[Z>>2]|0)>>8)+(c[T>>2]|0));continue e;}}while(0);c[Y>>2]=(c[Y>>2]|0)+(c[ga>>2]|0);c[Z>>2]=c[Y>>2];f:do{if((c[Y>>2]|0)>>>0<=(c[ba>>2]|0)>>>0){R=(c[ia>>2]|0)+2|0;fa=c[V>>2]|0;c[fa+((Tk((c[W>>2]|0)+(c[ia>>2]|0)+2|0,c[S>>2]|0,c[U>>2]|0)|0)<<2)>>2]=R;R=(c[Y>>2]|0)+-2-(c[W>>2]|0)|0;fa=c[V>>2]|0;c[fa+((Tk((c[Y>>2]|0)+-2|0,c[S>>2]|0,c[U>>2]|0)|0)<<2)>>2]=R;while(1){if((c[Y>>2]|0)>>>0>(c[ba>>2]|0)>>>0)break f;R=(c[da>>2]|0)>>>0>0&1;fa=fl(c[Y>>2]|0)|0;if(!(R&(fa|0)==(fl((c[Y>>2]|0)+(0-(c[da>>2]|0))|0)|0)))break f;c[ma>>2]=(nn((c[Y>>2]|0)+4|0,(c[Y>>2]|0)+4+(0-(c[da>>2]|0))|0,c[aa>>2]|0)|0)+4;c[na>>2]=c[da>>2];c[da>>2]=c[ca>>2];c[ca>>2]=c[na>>2];fa=(c[Y>>2]|0)-(c[W>>2]|0)|0;R=c[V>>2]|0;c[R+((Tk(c[Y>>2]|0,c[S>>2]|0,c[U>>2]|0)|0)<<2)>>2]=fa;kn(c[O>>2]|0,0,c[Z>>2]|0,0,(c[ma>>2]|0)-3|0);c[Y>>2]=(c[Y>>2]|0)+(c[ma>>2]|0);c[Z>>2]=c[Y>>2];}}}while(0);}c[c[P>>2]>>2]=c[ca>>2]|0?c[ca>>2]|0:c[ea>>2]|0;c[(c[P>>2]|0)+4>>2]=c[da>>2]|0?c[da>>2]|0:c[ea>>2]|0;c[sb>>2]=(c[aa>>2]|0)-(c[Z>>2]|0);Cb=c[sb>>2]|0;l=i;return Cb|0;}default:{Z=c[ub>>2]|0;ub=c[vb>>2]|0;vb=c[xb>>2]|0;xb=c[yb>>2]|0;yb=c[zb>>2]|0;zb=c[Bb>>2]|0;c[Ra>>2]=c[tb>>2];c[Sa>>2]=Z;c[Ta>>2]=ub;c[Ua>>2]=vb;c[Va>>2]=xb;c[Wa>>2]=yb;c[Xa>>2]=zb;c[Ya>>2]=4;c[Za>>2]=c[(c[Ra>>2]|0)+36>>2];c[_a>>2]=c[(c[Ra>>2]|0)+4>>2];c[$a>>2]=c[Ua>>2];c[ab>>2]=c[$a>>2];c[bb>>2]=c[$a>>2];c[cb>>2]=c[(c[Ra>>2]|0)+12>>2];c[db>>2]=(c[_a>>2]|0)+(c[cb>>2]|0);c[eb>>2]=(c[$a>>2]|0)+(c[Va>>2]|0);c[fb>>2]=(c[eb>>2]|0)+-8;c[gb>>2]=c[c[Ta>>2]>>2];c[hb>>2]=c[(c[Ta>>2]|0)+4>>2];c[ib>>2]=0;c[ab>>2]=(c[ab>>2]|0)+((c[ab>>2]|0)==(c[db>>2]|0)&1);c[jb>>2]=(c[ab>>2]|0)-(c[db>>2]|0);if((c[hb>>2]|0)>>>0>(c[jb>>2]|0)>>>0){c[ib>>2]=c[hb>>2];c[hb>>2]=0;}if((c[gb>>2]|0)>>>0>(c[jb>>2]|0)>>>0){c[ib>>2]=c[gb>>2];c[gb>>2]=0;}g:while(1){if((c[ab>>2]|0)>>>0>=(c[fb>>2]|0)>>>0)break;c[lb>>2]=Tk(c[ab>>2]|0,c[Wa>>2]|0,c[Ya>>2]|0)|0;c[mb>>2]=(c[ab>>2]|0)-(c[_a>>2]|0);c[nb>>2]=c[(c[Za>>2]|0)+(c[lb>>2]<<2)>>2];c[ob>>2]=(c[_a>>2]|0)+(c[nb>>2]|0);c[(c[Za>>2]|0)+(c[lb>>2]<<2)>>2]=c[mb>>2];jb=(c[gb>>2]|0)>>>0>0&1;Va=fl((c[ab>>2]|0)+1+(0-(c[gb>>2]|0))|0)|0;do{if(jb&(Va|0)==(fl((c[ab>>2]|0)+1|0)|0)|0){c[kb>>2]=(nn((c[ab>>2]|0)+1+4|0,(c[ab>>2]|0)+1+4+(0-(c[gb>>2]|0))|0,c[eb>>2]|0)|0)+4;c[ab>>2]=(c[ab>>2]|0)+1;kn(c[Sa>>2]|0,(c[ab>>2]|0)-(c[bb>>2]|0)|0,c[bb>>2]|0,0,(c[kb>>2]|0)-3|0);}else{if((c[nb>>2]|0)>>>0>(c[cb>>2]|0)>>>0?($a=fl(c[ob>>2]|0)|0,($a|0)==(fl(c[ab>>2]|0)|0)):0){c[kb>>2]=(nn((c[ab>>2]|0)+4|0,(c[ob>>2]|0)+4|0,c[eb>>2]|0)|0)+4;c[pb>>2]=(c[ab>>2]|0)-(c[ob>>2]|0);while(1){if(!(((c[ab>>2]|0)>>>0>(c[bb>>2]|0)>>>0?(c[ob>>2]|0)>>>0>(c[db>>2]|0)>>>0:0)|0))break;if((d[(c[ab>>2]|0)+-1>>0]|0|0)!=(d[(c[ob>>2]|0)+-1>>0]|0|0))break;c[ab>>2]=(c[ab>>2]|0)+-1;c[ob>>2]=(c[ob>>2]|0)+-1;c[kb>>2]=(c[kb>>2]|0)+1;}c[hb>>2]=c[gb>>2];c[gb>>2]=c[pb>>2];kn(c[Sa>>2]|0,(c[ab>>2]|0)-(c[bb>>2]|0)|0,c[bb>>2]|0,(c[pb>>2]|0)+2|0,(c[kb>>2]|0)-3|0);break;}c[ab>>2]=(c[ab>>2]|0)+(((c[ab>>2]|0)-(c[bb>>2]|0)>>8)+(c[Xa>>2]|0));continue g;}}while(0);c[ab>>2]=(c[ab>>2]|0)+(c[kb>>2]|0);c[bb>>2]=c[ab>>2];h:do{if((c[ab>>2]|0)>>>0<=(c[fb>>2]|0)>>>0){Va=(c[mb>>2]|0)+2|0;jb=c[Za>>2]|0;c[jb+((Tk((c[_a>>2]|0)+(c[mb>>2]|0)+2|0,c[Wa>>2]|0,c[Ya>>2]|0)|0)<<2)>>2]=Va;Va=(c[ab>>2]|0)+-2-(c[_a>>2]|0)|0;jb=c[Za>>2]|0;c[jb+((Tk((c[ab>>2]|0)+-2|0,c[Wa>>2]|0,c[Ya>>2]|0)|0)<<2)>>2]=Va;while(1){if((c[ab>>2]|0)>>>0>(c[fb>>2]|0)>>>0)break h;Va=(c[hb>>2]|0)>>>0>0&1;jb=fl(c[ab>>2]|0)|0;if(!(Va&(jb|0)==(fl((c[ab>>2]|0)+(0-(c[hb>>2]|0))|0)|0)))break h;c[qb>>2]=(nn((c[ab>>2]|0)+4|0,(c[ab>>2]|0)+4+(0-(c[hb>>2]|0))|0,c[eb>>2]|0)|0)+4;c[rb>>2]=c[hb>>2];c[hb>>2]=c[gb>>2];c[gb>>2]=c[rb>>2];jb=(c[ab>>2]|0)-(c[_a>>2]|0)|0;Va=c[Za>>2]|0;c[Va+((Tk(c[ab>>2]|0,c[Wa>>2]|0,c[Ya>>2]|0)|0)<<2)>>2]=jb;kn(c[Sa>>2]|0,0,c[bb>>2]|0,0,(c[qb>>2]|0)-3|0);c[ab>>2]=(c[ab>>2]|0)+(c[qb>>2]|0);c[bb>>2]=c[ab>>2];}}}while(0);}c[c[Ta>>2]>>2]=c[gb>>2]|0?c[gb>>2]|0:c[ib>>2]|0;c[(c[Ta>>2]|0)+4>>2]=c[hb>>2]|0?c[hb>>2]|0:c[ib>>2]|0;c[sb>>2]=(c[eb>>2]|0)-(c[bb>>2]|0);Cb=c[sb>>2]|0;l=i;return Cb|0;}}return 0;}function Yl(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0;i=l;l=l+624|0;j=i+620|0;k=i+616|0;m=i+612|0;n=i+608|0;o=i+604|0;p=i+600|0;q=i+596|0;r=i+592|0;s=i+588|0;t=i+584|0;u=i+580|0;v=i+576|0;w=i+572|0;x=i+568|0;z=i+564|0;A=i+560|0;B=i+556|0;C=i+552|0;D=i+548|0;E=i+544|0;F=i+540|0;G=i+536|0;H=i+532|0;I=i+528|0;J=i+524|0;K=i+520|0;L=i+516|0;M=i+512|0;N=i+508|0;O=i+504|0;P=i+500|0;Q=i+496|0;R=i+492|0;S=i+488|0;T=i+484|0;U=i+480|0;V=i+476|0;W=i+472|0;X=i+468|0;Y=i+464|0;Z=i+460|0;_=i+456|0;$=i+452|0;aa=i+448|0;ba=i+444|0;ca=i+440|0;da=i+436|0;ea=i+432|0;fa=i+428|0;ga=i+424|0;ha=i+420|0;ia=i+416|0;ja=i+412|0;ka=i+408|0;la=i+404|0;ma=i+400|0;na=i+396|0;oa=i+392|0;pa=i+388|0;qa=i+384|0;ra=i+380|0;sa=i+376|0;ta=i+372|0;ua=i+368|0;va=i+364|0;wa=i+360|0;xa=i+356|0;ya=i+352|0;za=i+348|0;Aa=i+344|0;Ba=i+340|0;Ca=i+336|0;Da=i+332|0;Ea=i+328|0;Fa=i+324|0;Ga=i+320|0;Ha=i+316|0;Ia=i+312|0;Ja=i+308|0;Ka=i+304|0;La=i+300|0;Ma=i+296|0;Na=i+292|0;Oa=i+288|0;Pa=i+284|0;Qa=i+280|0;Ra=i+276|0;Sa=i+272|0;Ta=i+268|0;Ua=i+264|0;Va=i+260|0;Wa=i+256|0;Xa=i+252|0;Ya=i+248|0;Za=i+244|0;_a=i+240|0;$a=i+236|0;ab=i+232|0;bb=i+228|0;cb=i+224|0;db=i+220|0;eb=i+216|0;fb=i+212|0;gb=i+208|0;hb=i+204|0;ib=i+200|0;jb=i+196|0;kb=i+192|0;lb=i+188|0;mb=i+184|0;nb=i+180|0;ob=i+176|0;pb=i+172|0;qb=i+168|0;rb=i+164|0;sb=i+160|0;tb=i+156|0;ub=i+152|0;vb=i+148|0;wb=i+144|0;xb=i+140|0;yb=i+136|0;zb=i+132|0;Ab=i+128|0;Bb=i+124|0;Cb=i+120|0;Db=i+116|0;Eb=i+112|0;Fb=i+108|0;Gb=i+104|0;Hb=i+100|0;Ib=i+96|0;Jb=i+92|0;Kb=i+88|0;Lb=i+84|0;Mb=i+80|0;Nb=i+76|0;Ob=i+72|0;Pb=i+68|0;Qb=i+64|0;Rb=i+60|0;Sb=i+56|0;Tb=i+52|0;Ub=i+48|0;Vb=i+44|0;Wb=i+40|0;Xb=i+36|0;Yb=i+32|0;Zb=i+28|0;_b=i+24|0;$b=i+20|0;ac=i+16|0;bc=i+12|0;cc=i+8|0;dc=i+4|0;ec=i;c[_b>>2]=a;c[$b>>2]=b;c[ac>>2]=e;c[bc>>2]=f;c[cc>>2]=g;c[dc>>2]=h;c[ec>>2]=c[(c[bc>>2]|0)+16>>2];switch(c[ec>>2]|0){case 7:{ec=c[$b>>2]|0;h=c[ac>>2]|0;g=c[bc>>2]|0;f=c[cc>>2]|0;e=c[dc>>2]|0;c[j>>2]=c[_b>>2];c[k>>2]=ec;c[m>>2]=h;c[n>>2]=g;c[o>>2]=f;c[p>>2]=e;c[q>>2]=7;c[r>>2]=c[(c[j>>2]|0)+36>>2];c[s>>2]=c[(c[n>>2]|0)+8>>2];c[t>>2]=c[(c[j>>2]|0)+44>>2];c[u>>2]=c[(c[n>>2]|0)+4>>2];c[v>>2]=c[(c[j>>2]|0)+4>>2];c[w>>2]=c[o>>2];c[x>>2]=c[w>>2];c[z>>2]=c[w>>2];c[A>>2]=c[(c[j>>2]|0)+12>>2];c[B>>2]=(c[v>>2]|0)+(c[A>>2]|0);c[C>>2]=(c[w>>2]|0)+(c[p>>2]|0);c[D>>2]=(c[C>>2]|0)+-8;c[E>>2]=c[c[m>>2]>>2];c[F>>2]=c[(c[m>>2]|0)+4>>2];c[G>>2]=0;c[x>>2]=(c[x>>2]|0)+((c[x>>2]|0)==(c[B>>2]|0)&1);c[H>>2]=(c[x>>2]|0)-(c[B>>2]|0);if((c[F>>2]|0)>>>0>(c[H>>2]|0)>>>0){c[G>>2]=c[F>>2];c[F>>2]=0;}if((c[E>>2]|0)>>>0>(c[H>>2]|0)>>>0){c[G>>2]=c[E>>2];c[E>>2]=0;}a:while(1){if((c[x>>2]|0)>>>0>=(c[D>>2]|0)>>>0)break;c[J>>2]=Dk(c[x>>2]|0,c[s>>2]|0,8)|0;c[K>>2]=Dk(c[x>>2]|0,c[u>>2]|0,c[q>>2]|0)|0;c[L>>2]=(c[x>>2]|0)-(c[v>>2]|0);c[M>>2]=c[(c[r>>2]|0)+(c[J>>2]<<2)>>2];c[N>>2]=c[(c[t>>2]|0)+(c[K>>2]<<2)>>2];c[O>>2]=(c[v>>2]|0)+(c[M>>2]|0);c[P>>2]=(c[v>>2]|0)+(c[N>>2]|0);H=c[L>>2]|0;c[(c[t>>2]|0)+(c[K>>2]<<2)>>2]=H;c[(c[r>>2]|0)+(c[J>>2]<<2)>>2]=H;H=(c[E>>2]|0)>>>0>0&1;p=Rk((c[x>>2]|0)+1+(0-(c[E>>2]|0))|0)|0;if(H&(p|0)==(Rk((c[x>>2]|0)+1|0)|0)|0){c[I>>2]=(cn((c[x>>2]|0)+1+4|0,(c[x>>2]|0)+1+4+(0-(c[E>>2]|0))|0,c[C>>2]|0)|0)+4;c[x>>2]=(c[x>>2]|0)+1;$m(c[k>>2]|0,(c[x>>2]|0)-(c[z>>2]|0)|0,c[z>>2]|0,0,(c[I>>2]|0)-3|0);}else{b:do{if((c[M>>2]|0)>>>0>(c[A>>2]|0)>>>0?(p=Mk(c[O>>2]|0)|0,H=y,w=Mk(c[x>>2]|0)|0,(p|0)==(w|0)&(H|0)==(y|0)):0){c[I>>2]=(cn((c[x>>2]|0)+8|0,(c[O>>2]|0)+8|0,c[C>>2]|0)|0)+8;c[Q>>2]=(c[x>>2]|0)-(c[O>>2]|0);while(1){if(!(((c[x>>2]|0)>>>0>(c[z>>2]|0)>>>0?(c[O>>2]|0)>>>0>(c[B>>2]|0)>>>0:0)|0))break b;if((d[(c[x>>2]|0)+-1>>0]|0|0)!=(d[(c[O>>2]|0)+-1>>0]|0|0))break b;c[x>>2]=(c[x>>2]|0)+-1;c[O>>2]=(c[O>>2]|0)+-1;c[I>>2]=(c[I>>2]|0)+1;}}else fc=121;}while(0);c:do{if((fc|0)==121){fc=0;if((c[N>>2]|0)>>>0>(c[A>>2]|0)>>>0?(H=Rk(c[P>>2]|0)|0,(H|0)==(Rk(c[x>>2]|0)|0)):0){c[R>>2]=Dk((c[x>>2]|0)+1|0,c[s>>2]|0,8)|0;c[S>>2]=c[(c[r>>2]|0)+(c[R>>2]<<2)>>2];c[T>>2]=(c[v>>2]|0)+(c[S>>2]|0);c[(c[r>>2]|0)+(c[R>>2]<<2)>>2]=(c[L>>2]|0)+1;if((c[S>>2]|0)>>>0>(c[A>>2]|0)>>>0?(H=Mk(c[T>>2]|0)|0,w=y,p=Mk((c[x>>2]|0)+1|0)|0,(H|0)==(p|0)&(w|0)==(y|0)):0){c[I>>2]=(cn((c[x>>2]|0)+9|0,(c[T>>2]|0)+8|0,c[C>>2]|0)|0)+8;c[x>>2]=(c[x>>2]|0)+1;c[Q>>2]=(c[x>>2]|0)-(c[T>>2]|0);while(1){if(!(((c[x>>2]|0)>>>0>(c[z>>2]|0)>>>0?(c[T>>2]|0)>>>0>(c[B>>2]|0)>>>0:0)|0))break c;if((d[(c[x>>2]|0)+-1>>0]|0|0)!=(d[(c[T>>2]|0)+-1>>0]|0|0))break c;c[x>>2]=(c[x>>2]|0)+-1;c[T>>2]=(c[T>>2]|0)+-1;c[I>>2]=(c[I>>2]|0)+1;}}c[I>>2]=(cn((c[x>>2]|0)+4|0,(c[P>>2]|0)+4|0,c[C>>2]|0)|0)+4;c[Q>>2]=(c[x>>2]|0)-(c[P>>2]|0);while(1){if(!(((c[x>>2]|0)>>>0>(c[z>>2]|0)>>>0?(c[P>>2]|0)>>>0>(c[B>>2]|0)>>>0:0)|0))break c;if((d[(c[x>>2]|0)+-1>>0]|0|0)!=(d[(c[P>>2]|0)+-1>>0]|0|0))break c;c[x>>2]=(c[x>>2]|0)+-1;c[P>>2]=(c[P>>2]|0)+-1;c[I>>2]=(c[I>>2]|0)+1;}}c[x>>2]=(c[x>>2]|0)+(((c[x>>2]|0)-(c[z>>2]|0)>>8)+1);continue a;}}while(0);c[F>>2]=c[E>>2];c[E>>2]=c[Q>>2];$m(c[k>>2]|0,(c[x>>2]|0)-(c[z>>2]|0)|0,c[z>>2]|0,(c[Q>>2]|0)+2|0,(c[I>>2]|0)-3|0);}c[x>>2]=(c[x>>2]|0)+(c[I>>2]|0);c[z>>2]=c[x>>2];d:do{if((c[x>>2]|0)>>>0<=(c[D>>2]|0)>>>0){w=(c[L>>2]|0)+2|0;p=c[t>>2]|0;c[p+((Dk((c[v>>2]|0)+(c[L>>2]|0)+2|0,c[u>>2]|0,c[q>>2]|0)|0)<<2)>>2]=w;p=c[r>>2]|0;c[p+((Dk((c[v>>2]|0)+(c[L>>2]|0)+2|0,c[s>>2]|0,8)|0)<<2)>>2]=w;w=(c[x>>2]|0)+-2-(c[v>>2]|0)|0;p=c[t>>2]|0;c[p+((Dk((c[x>>2]|0)+-2|0,c[u>>2]|0,c[q>>2]|0)|0)<<2)>>2]=w;p=c[r>>2]|0;c[p+((Dk((c[x>>2]|0)+-2|0,c[s>>2]|0,8)|0)<<2)>>2]=w;while(1){if((c[x>>2]|0)>>>0>(c[D>>2]|0)>>>0)break d;w=(c[F>>2]|0)>>>0>0&1;p=Rk(c[x>>2]|0)|0;if(!(w&(p|0)==(Rk((c[x>>2]|0)+(0-(c[F>>2]|0))|0)|0)))break d;c[U>>2]=(cn((c[x>>2]|0)+4|0,(c[x>>2]|0)+4+(0-(c[F>>2]|0))|0,c[C>>2]|0)|0)+4;c[V>>2]=c[F>>2];c[F>>2]=c[E>>2];c[E>>2]=c[V>>2];p=(c[x>>2]|0)-(c[v>>2]|0)|0;w=c[t>>2]|0;c[w+((Dk(c[x>>2]|0,c[u>>2]|0,c[q>>2]|0)|0)<<2)>>2]=p;p=(c[x>>2]|0)-(c[v>>2]|0)|0;w=c[r>>2]|0;c[w+((Dk(c[x>>2]|0,c[s>>2]|0,8)|0)<<2)>>2]=p;$m(c[k>>2]|0,0,c[z>>2]|0,0,(c[U>>2]|0)-3|0);c[x>>2]=(c[x>>2]|0)+(c[U>>2]|0);c[z>>2]=c[x>>2];}}}while(0);}c[c[m>>2]>>2]=c[E>>2]|0?c[E>>2]|0:c[G>>2]|0;c[(c[m>>2]|0)+4>>2]=c[F>>2]|0?c[F>>2]|0:c[G>>2]|0;c[Zb>>2]=(c[C>>2]|0)-(c[z>>2]|0);gc=c[Zb>>2]|0;l=i;return gc|0;}case 5:{z=c[$b>>2]|0;C=c[ac>>2]|0;G=c[bc>>2]|0;F=c[cc>>2]|0;m=c[dc>>2]|0;c[Fa>>2]=c[_b>>2];c[Ga>>2]=z;c[Ha>>2]=C;c[Ia>>2]=G;c[Ja>>2]=F;c[Ka>>2]=m;c[La>>2]=5;c[Ma>>2]=c[(c[Fa>>2]|0)+36>>2];c[Na>>2]=c[(c[Ia>>2]|0)+8>>2];c[Oa>>2]=c[(c[Fa>>2]|0)+44>>2];c[Pa>>2]=c[(c[Ia>>2]|0)+4>>2];c[Qa>>2]=c[(c[Fa>>2]|0)+4>>2];c[Ra>>2]=c[Ja>>2];c[Sa>>2]=c[Ra>>2];c[Ta>>2]=c[Ra>>2];c[Ua>>2]=c[(c[Fa>>2]|0)+12>>2];c[Va>>2]=(c[Qa>>2]|0)+(c[Ua>>2]|0);c[Wa>>2]=(c[Ra>>2]|0)+(c[Ka>>2]|0);c[Xa>>2]=(c[Wa>>2]|0)+-8;c[Ya>>2]=c[c[Ha>>2]>>2];c[Za>>2]=c[(c[Ha>>2]|0)+4>>2];c[_a>>2]=0;c[Sa>>2]=(c[Sa>>2]|0)+((c[Sa>>2]|0)==(c[Va>>2]|0)&1);c[$a>>2]=(c[Sa>>2]|0)-(c[Va>>2]|0);if((c[Za>>2]|0)>>>0>(c[$a>>2]|0)>>>0){c[_a>>2]=c[Za>>2];c[Za>>2]=0;}if((c[Ya>>2]|0)>>>0>(c[$a>>2]|0)>>>0){c[_a>>2]=c[Ya>>2];c[Ya>>2]=0;}e:while(1){if((c[Sa>>2]|0)>>>0>=(c[Xa>>2]|0)>>>0)break;c[bb>>2]=Dk(c[Sa>>2]|0,c[Na>>2]|0,8)|0;c[cb>>2]=Dk(c[Sa>>2]|0,c[Pa>>2]|0,c[La>>2]|0)|0;c[db>>2]=(c[Sa>>2]|0)-(c[Qa>>2]|0);c[eb>>2]=c[(c[Ma>>2]|0)+(c[bb>>2]<<2)>>2];c[fb>>2]=c[(c[Oa>>2]|0)+(c[cb>>2]<<2)>>2];c[gb>>2]=(c[Qa>>2]|0)+(c[eb>>2]|0);c[hb>>2]=(c[Qa>>2]|0)+(c[fb>>2]|0);$a=c[db>>2]|0;c[(c[Oa>>2]|0)+(c[cb>>2]<<2)>>2]=$a;c[(c[Ma>>2]|0)+(c[bb>>2]<<2)>>2]=$a;$a=(c[Ya>>2]|0)>>>0>0&1;Ka=Rk((c[Sa>>2]|0)+1+(0-(c[Ya>>2]|0))|0)|0;if($a&(Ka|0)==(Rk((c[Sa>>2]|0)+1|0)|0)|0){c[ab>>2]=(cn((c[Sa>>2]|0)+1+4|0,(c[Sa>>2]|0)+1+4+(0-(c[Ya>>2]|0))|0,c[Wa>>2]|0)|0)+4;c[Sa>>2]=(c[Sa>>2]|0)+1;$m(c[Ga>>2]|0,(c[Sa>>2]|0)-(c[Ta>>2]|0)|0,c[Ta>>2]|0,0,(c[ab>>2]|0)-3|0);}else{f:do{if((c[eb>>2]|0)>>>0>(c[Ua>>2]|0)>>>0?(Ka=Mk(c[gb>>2]|0)|0,$a=y,Ra=Mk(c[Sa>>2]|0)|0,(Ka|0)==(Ra|0)&($a|0)==(y|0)):0){c[ab>>2]=(cn((c[Sa>>2]|0)+8|0,(c[gb>>2]|0)+8|0,c[Wa>>2]|0)|0)+8;c[ib>>2]=(c[Sa>>2]|0)-(c[gb>>2]|0);while(1){if(!(((c[Sa>>2]|0)>>>0>(c[Ta>>2]|0)>>>0?(c[gb>>2]|0)>>>0>(c[Va>>2]|0)>>>0:0)|0))break f;if((d[(c[Sa>>2]|0)+-1>>0]|0|0)!=(d[(c[gb>>2]|0)+-1>>0]|0|0))break f;c[Sa>>2]=(c[Sa>>2]|0)+-1;c[gb>>2]=(c[gb>>2]|0)+-1;c[ab>>2]=(c[ab>>2]|0)+1;}}else fc=51;}while(0);g:do{if((fc|0)==51){fc=0;if((c[fb>>2]|0)>>>0>(c[Ua>>2]|0)>>>0?($a=Rk(c[hb>>2]|0)|0,($a|0)==(Rk(c[Sa>>2]|0)|0)):0){c[jb>>2]=Dk((c[Sa>>2]|0)+1|0,c[Na>>2]|0,8)|0;c[kb>>2]=c[(c[Ma>>2]|0)+(c[jb>>2]<<2)>>2];c[lb>>2]=(c[Qa>>2]|0)+(c[kb>>2]|0);c[(c[Ma>>2]|0)+(c[jb>>2]<<2)>>2]=(c[db>>2]|0)+1;if((c[kb>>2]|0)>>>0>(c[Ua>>2]|0)>>>0?($a=Mk(c[lb>>2]|0)|0,Ra=y,Ka=Mk((c[Sa>>2]|0)+1|0)|0,($a|0)==(Ka|0)&(Ra|0)==(y|0)):0){c[ab>>2]=(cn((c[Sa>>2]|0)+9|0,(c[lb>>2]|0)+8|0,c[Wa>>2]|0)|0)+8;c[Sa>>2]=(c[Sa>>2]|0)+1;c[ib>>2]=(c[Sa>>2]|0)-(c[lb>>2]|0);while(1){if(!(((c[Sa>>2]|0)>>>0>(c[Ta>>2]|0)>>>0?(c[lb>>2]|0)>>>0>(c[Va>>2]|0)>>>0:0)|0))break g;if((d[(c[Sa>>2]|0)+-1>>0]|0|0)!=(d[(c[lb>>2]|0)+-1>>0]|0|0))break g;c[Sa>>2]=(c[Sa>>2]|0)+-1;c[lb>>2]=(c[lb>>2]|0)+-1;c[ab>>2]=(c[ab>>2]|0)+1;}}c[ab>>2]=(cn((c[Sa>>2]|0)+4|0,(c[hb>>2]|0)+4|0,c[Wa>>2]|0)|0)+4;c[ib>>2]=(c[Sa>>2]|0)-(c[hb>>2]|0);while(1){if(!(((c[Sa>>2]|0)>>>0>(c[Ta>>2]|0)>>>0?(c[hb>>2]|0)>>>0>(c[Va>>2]|0)>>>0:0)|0))break g;if((d[(c[Sa>>2]|0)+-1>>0]|0|0)!=(d[(c[hb>>2]|0)+-1>>0]|0|0))break g;c[Sa>>2]=(c[Sa>>2]|0)+-1;c[hb>>2]=(c[hb>>2]|0)+-1;c[ab>>2]=(c[ab>>2]|0)+1;}}c[Sa>>2]=(c[Sa>>2]|0)+(((c[Sa>>2]|0)-(c[Ta>>2]|0)>>8)+1);continue e;}}while(0);c[Za>>2]=c[Ya>>2];c[Ya>>2]=c[ib>>2];$m(c[Ga>>2]|0,(c[Sa>>2]|0)-(c[Ta>>2]|0)|0,c[Ta>>2]|0,(c[ib>>2]|0)+2|0,(c[ab>>2]|0)-3|0);}c[Sa>>2]=(c[Sa>>2]|0)+(c[ab>>2]|0);c[Ta>>2]=c[Sa>>2];h:do{if((c[Sa>>2]|0)>>>0<=(c[Xa>>2]|0)>>>0){Ra=(c[db>>2]|0)+2|0;Ka=c[Oa>>2]|0;c[Ka+((Dk((c[Qa>>2]|0)+(c[db>>2]|0)+2|0,c[Pa>>2]|0,c[La>>2]|0)|0)<<2)>>2]=Ra;Ka=c[Ma>>2]|0;c[Ka+((Dk((c[Qa>>2]|0)+(c[db>>2]|0)+2|0,c[Na>>2]|0,8)|0)<<2)>>2]=Ra;Ra=(c[Sa>>2]|0)+-2-(c[Qa>>2]|0)|0;Ka=c[Oa>>2]|0;c[Ka+((Dk((c[Sa>>2]|0)+-2|0,c[Pa>>2]|0,c[La>>2]|0)|0)<<2)>>2]=Ra;Ka=c[Ma>>2]|0;c[Ka+((Dk((c[Sa>>2]|0)+-2|0,c[Na>>2]|0,8)|0)<<2)>>2]=Ra;while(1){if((c[Sa>>2]|0)>>>0>(c[Xa>>2]|0)>>>0)break h;Ra=(c[Za>>2]|0)>>>0>0&1;Ka=Rk(c[Sa>>2]|0)|0;if(!(Ra&(Ka|0)==(Rk((c[Sa>>2]|0)+(0-(c[Za>>2]|0))|0)|0)))break h;c[mb>>2]=(cn((c[Sa>>2]|0)+4|0,(c[Sa>>2]|0)+4+(0-(c[Za>>2]|0))|0,c[Wa>>2]|0)|0)+4;c[nb>>2]=c[Za>>2];c[Za>>2]=c[Ya>>2];c[Ya>>2]=c[nb>>2];Ka=(c[Sa>>2]|0)-(c[Qa>>2]|0)|0;Ra=c[Oa>>2]|0;c[Ra+((Dk(c[Sa>>2]|0,c[Pa>>2]|0,c[La>>2]|0)|0)<<2)>>2]=Ka;Ka=(c[Sa>>2]|0)-(c[Qa>>2]|0)|0;Ra=c[Ma>>2]|0;c[Ra+((Dk(c[Sa>>2]|0,c[Na>>2]|0,8)|0)<<2)>>2]=Ka;$m(c[Ga>>2]|0,0,c[Ta>>2]|0,0,(c[mb>>2]|0)-3|0);c[Sa>>2]=(c[Sa>>2]|0)+(c[mb>>2]|0);c[Ta>>2]=c[Sa>>2];}}}while(0);}c[c[Ha>>2]>>2]=c[Ya>>2]|0?c[Ya>>2]|0:c[_a>>2]|0;c[(c[Ha>>2]|0)+4>>2]=c[Za>>2]|0?c[Za>>2]|0:c[_a>>2]|0;c[Zb>>2]=(c[Wa>>2]|0)-(c[Ta>>2]|0);gc=c[Zb>>2]|0;l=i;return gc|0;}case 6:{Ta=c[$b>>2]|0;Wa=c[ac>>2]|0;_a=c[bc>>2]|0;Za=c[cc>>2]|0;Ha=c[dc>>2]|0;c[W>>2]=c[_b>>2];c[X>>2]=Ta;c[Y>>2]=Wa;c[Z>>2]=_a;c[_>>2]=Za;c[$>>2]=Ha;c[aa>>2]=6;c[ba>>2]=c[(c[W>>2]|0)+36>>2];c[ca>>2]=c[(c[Z>>2]|0)+8>>2];c[da>>2]=c[(c[W>>2]|0)+44>>2];c[ea>>2]=c[(c[Z>>2]|0)+4>>2];c[fa>>2]=c[(c[W>>2]|0)+4>>2];c[ga>>2]=c[_>>2];c[ha>>2]=c[ga>>2];c[ia>>2]=c[ga>>2];c[ja>>2]=c[(c[W>>2]|0)+12>>2];c[ka>>2]=(c[fa>>2]|0)+(c[ja>>2]|0);c[la>>2]=(c[ga>>2]|0)+(c[$>>2]|0);c[ma>>2]=(c[la>>2]|0)+-8;c[na>>2]=c[c[Y>>2]>>2];c[oa>>2]=c[(c[Y>>2]|0)+4>>2];c[pa>>2]=0;c[ha>>2]=(c[ha>>2]|0)+((c[ha>>2]|0)==(c[ka>>2]|0)&1);c[qa>>2]=(c[ha>>2]|0)-(c[ka>>2]|0);if((c[oa>>2]|0)>>>0>(c[qa>>2]|0)>>>0){c[pa>>2]=c[oa>>2];c[oa>>2]=0;}if((c[na>>2]|0)>>>0>(c[qa>>2]|0)>>>0){c[pa>>2]=c[na>>2];c[na>>2]=0;}i:while(1){if((c[ha>>2]|0)>>>0>=(c[ma>>2]|0)>>>0)break;c[sa>>2]=Dk(c[ha>>2]|0,c[ca>>2]|0,8)|0;c[ta>>2]=Dk(c[ha>>2]|0,c[ea>>2]|0,c[aa>>2]|0)|0;c[ua>>2]=(c[ha>>2]|0)-(c[fa>>2]|0);c[va>>2]=c[(c[ba>>2]|0)+(c[sa>>2]<<2)>>2];c[wa>>2]=c[(c[da>>2]|0)+(c[ta>>2]<<2)>>2];c[xa>>2]=(c[fa>>2]|0)+(c[va>>2]|0);c[ya>>2]=(c[fa>>2]|0)+(c[wa>>2]|0);qa=c[ua>>2]|0;c[(c[da>>2]|0)+(c[ta>>2]<<2)>>2]=qa;c[(c[ba>>2]|0)+(c[sa>>2]<<2)>>2]=qa;qa=(c[na>>2]|0)>>>0>0&1;$=Rk((c[ha>>2]|0)+1+(0-(c[na>>2]|0))|0)|0;if(qa&($|0)==(Rk((c[ha>>2]|0)+1|0)|0)|0){c[ra>>2]=(cn((c[ha>>2]|0)+1+4|0,(c[ha>>2]|0)+1+4+(0-(c[na>>2]|0))|0,c[la>>2]|0)|0)+4;c[ha>>2]=(c[ha>>2]|0)+1;$m(c[X>>2]|0,(c[ha>>2]|0)-(c[ia>>2]|0)|0,c[ia>>2]|0,0,(c[ra>>2]|0)-3|0);}else{j:do{if((c[va>>2]|0)>>>0>(c[ja>>2]|0)>>>0?($=Mk(c[xa>>2]|0)|0,qa=y,ga=Mk(c[ha>>2]|0)|0,($|0)==(ga|0)&(qa|0)==(y|0)):0){c[ra>>2]=(cn((c[ha>>2]|0)+8|0,(c[xa>>2]|0)+8|0,c[la>>2]|0)|0)+8;c[za>>2]=(c[ha>>2]|0)-(c[xa>>2]|0);while(1){if(!(((c[ha>>2]|0)>>>0>(c[ia>>2]|0)>>>0?(c[xa>>2]|0)>>>0>(c[ka>>2]|0)>>>0:0)|0))break j;if((d[(c[ha>>2]|0)+-1>>0]|0|0)!=(d[(c[xa>>2]|0)+-1>>0]|0|0))break j;c[ha>>2]=(c[ha>>2]|0)+-1;c[xa>>2]=(c[xa>>2]|0)+-1;c[ra>>2]=(c[ra>>2]|0)+1;}}else fc=86;}while(0);k:do{if((fc|0)==86){fc=0;if((c[wa>>2]|0)>>>0>(c[ja>>2]|0)>>>0?(qa=Rk(c[ya>>2]|0)|0,(qa|0)==(Rk(c[ha>>2]|0)|0)):0){c[Aa>>2]=Dk((c[ha>>2]|0)+1|0,c[ca>>2]|0,8)|0;c[Ba>>2]=c[(c[ba>>2]|0)+(c[Aa>>2]<<2)>>2];c[Ca>>2]=(c[fa>>2]|0)+(c[Ba>>2]|0);c[(c[ba>>2]|0)+(c[Aa>>2]<<2)>>2]=(c[ua>>2]|0)+1;if((c[Ba>>2]|0)>>>0>(c[ja>>2]|0)>>>0?(qa=Mk(c[Ca>>2]|0)|0,ga=y,$=Mk((c[ha>>2]|0)+1|0)|0,(qa|0)==($|0)&(ga|0)==(y|0)):0){c[ra>>2]=(cn((c[ha>>2]|0)+9|0,(c[Ca>>2]|0)+8|0,c[la>>2]|0)|0)+8;c[ha>>2]=(c[ha>>2]|0)+1;c[za>>2]=(c[ha>>2]|0)-(c[Ca>>2]|0);while(1){if(!(((c[ha>>2]|0)>>>0>(c[ia>>2]|0)>>>0?(c[Ca>>2]|0)>>>0>(c[ka>>2]|0)>>>0:0)|0))break k;if((d[(c[ha>>2]|0)+-1>>0]|0|0)!=(d[(c[Ca>>2]|0)+-1>>0]|0|0))break k;c[ha>>2]=(c[ha>>2]|0)+-1;c[Ca>>2]=(c[Ca>>2]|0)+-1;c[ra>>2]=(c[ra>>2]|0)+1;}}c[ra>>2]=(cn((c[ha>>2]|0)+4|0,(c[ya>>2]|0)+4|0,c[la>>2]|0)|0)+4;c[za>>2]=(c[ha>>2]|0)-(c[ya>>2]|0);while(1){if(!(((c[ha>>2]|0)>>>0>(c[ia>>2]|0)>>>0?(c[ya>>2]|0)>>>0>(c[ka>>2]|0)>>>0:0)|0))break k;if((d[(c[ha>>2]|0)+-1>>0]|0|0)!=(d[(c[ya>>2]|0)+-1>>0]|0|0))break k;c[ha>>2]=(c[ha>>2]|0)+-1;c[ya>>2]=(c[ya>>2]|0)+-1;c[ra>>2]=(c[ra>>2]|0)+1;}}c[ha>>2]=(c[ha>>2]|0)+(((c[ha>>2]|0)-(c[ia>>2]|0)>>8)+1);continue i;}}while(0);c[oa>>2]=c[na>>2];c[na>>2]=c[za>>2];$m(c[X>>2]|0,(c[ha>>2]|0)-(c[ia>>2]|0)|0,c[ia>>2]|0,(c[za>>2]|0)+2|0,(c[ra>>2]|0)-3|0);}c[ha>>2]=(c[ha>>2]|0)+(c[ra>>2]|0);c[ia>>2]=c[ha>>2];l:do{if((c[ha>>2]|0)>>>0<=(c[ma>>2]|0)>>>0){ga=(c[ua>>2]|0)+2|0;$=c[da>>2]|0;c[$+((Dk((c[fa>>2]|0)+(c[ua>>2]|0)+2|0,c[ea>>2]|0,c[aa>>2]|0)|0)<<2)>>2]=ga;$=c[ba>>2]|0;c[$+((Dk((c[fa>>2]|0)+(c[ua>>2]|0)+2|0,c[ca>>2]|0,8)|0)<<2)>>2]=ga;ga=(c[ha>>2]|0)+-2-(c[fa>>2]|0)|0;$=c[da>>2]|0;c[$+((Dk((c[ha>>2]|0)+-2|0,c[ea>>2]|0,c[aa>>2]|0)|0)<<2)>>2]=ga;$=c[ba>>2]|0;c[$+((Dk((c[ha>>2]|0)+-2|0,c[ca>>2]|0,8)|0)<<2)>>2]=ga;while(1){if((c[ha>>2]|0)>>>0>(c[ma>>2]|0)>>>0)break l;ga=(c[oa>>2]|0)>>>0>0&1;$=Rk(c[ha>>2]|0)|0;if(!(ga&($|0)==(Rk((c[ha>>2]|0)+(0-(c[oa>>2]|0))|0)|0)))break l;c[Da>>2]=(cn((c[ha>>2]|0)+4|0,(c[ha>>2]|0)+4+(0-(c[oa>>2]|0))|0,c[la>>2]|0)|0)+4;c[Ea>>2]=c[oa>>2];c[oa>>2]=c[na>>2];c[na>>2]=c[Ea>>2];$=(c[ha>>2]|0)-(c[fa>>2]|0)|0;ga=c[da>>2]|0;c[ga+((Dk(c[ha>>2]|0,c[ea>>2]|0,c[aa>>2]|0)|0)<<2)>>2]=$;$=(c[ha>>2]|0)-(c[fa>>2]|0)|0;ga=c[ba>>2]|0;c[ga+((Dk(c[ha>>2]|0,c[ca>>2]|0,8)|0)<<2)>>2]=$;$m(c[X>>2]|0,0,c[ia>>2]|0,0,(c[Da>>2]|0)-3|0);c[ha>>2]=(c[ha>>2]|0)+(c[Da>>2]|0);c[ia>>2]=c[ha>>2];}}}while(0);}c[c[Y>>2]>>2]=c[na>>2]|0?c[na>>2]|0:c[pa>>2]|0;c[(c[Y>>2]|0)+4>>2]=c[oa>>2]|0?c[oa>>2]|0:c[pa>>2]|0;c[Zb>>2]=(c[la>>2]|0)-(c[ia>>2]|0);gc=c[Zb>>2]|0;l=i;return gc|0;}default:{ia=c[$b>>2]|0;$b=c[ac>>2]|0;ac=c[bc>>2]|0;bc=c[cc>>2]|0;cc=c[dc>>2]|0;c[ob>>2]=c[_b>>2];c[pb>>2]=ia;c[qb>>2]=$b;c[rb>>2]=ac;c[sb>>2]=bc;c[tb>>2]=cc;c[ub>>2]=4;c[vb>>2]=c[(c[ob>>2]|0)+36>>2];c[wb>>2]=c[(c[rb>>2]|0)+8>>2];c[xb>>2]=c[(c[ob>>2]|0)+44>>2];c[yb>>2]=c[(c[rb>>2]|0)+4>>2];c[zb>>2]=c[(c[ob>>2]|0)+4>>2];c[Ab>>2]=c[sb>>2];c[Bb>>2]=c[Ab>>2];c[Cb>>2]=c[Ab>>2];c[Db>>2]=c[(c[ob>>2]|0)+12>>2];c[Eb>>2]=(c[zb>>2]|0)+(c[Db>>2]|0);c[Fb>>2]=(c[Ab>>2]|0)+(c[tb>>2]|0);c[Gb>>2]=(c[Fb>>2]|0)+-8;c[Hb>>2]=c[c[qb>>2]>>2];c[Ib>>2]=c[(c[qb>>2]|0)+4>>2];c[Jb>>2]=0;c[Bb>>2]=(c[Bb>>2]|0)+((c[Bb>>2]|0)==(c[Eb>>2]|0)&1);c[Kb>>2]=(c[Bb>>2]|0)-(c[Eb>>2]|0);if((c[Ib>>2]|0)>>>0>(c[Kb>>2]|0)>>>0){c[Jb>>2]=c[Ib>>2];c[Ib>>2]=0;}if((c[Hb>>2]|0)>>>0>(c[Kb>>2]|0)>>>0){c[Jb>>2]=c[Hb>>2];c[Hb>>2]=0;}m:while(1){if((c[Bb>>2]|0)>>>0>=(c[Gb>>2]|0)>>>0)break;c[Mb>>2]=Dk(c[Bb>>2]|0,c[wb>>2]|0,8)|0;c[Nb>>2]=Dk(c[Bb>>2]|0,c[yb>>2]|0,c[ub>>2]|0)|0;c[Ob>>2]=(c[Bb>>2]|0)-(c[zb>>2]|0);c[Pb>>2]=c[(c[vb>>2]|0)+(c[Mb>>2]<<2)>>2];c[Qb>>2]=c[(c[xb>>2]|0)+(c[Nb>>2]<<2)>>2];c[Rb>>2]=(c[zb>>2]|0)+(c[Pb>>2]|0);c[Sb>>2]=(c[zb>>2]|0)+(c[Qb>>2]|0);Kb=c[Ob>>2]|0;c[(c[xb>>2]|0)+(c[Nb>>2]<<2)>>2]=Kb;c[(c[vb>>2]|0)+(c[Mb>>2]<<2)>>2]=Kb;Kb=(c[Hb>>2]|0)>>>0>0&1;tb=Rk((c[Bb>>2]|0)+1+(0-(c[Hb>>2]|0))|0)|0;if(Kb&(tb|0)==(Rk((c[Bb>>2]|0)+1|0)|0)|0){c[Lb>>2]=(cn((c[Bb>>2]|0)+1+4|0,(c[Bb>>2]|0)+1+4+(0-(c[Hb>>2]|0))|0,c[Fb>>2]|0)|0)+4;c[Bb>>2]=(c[Bb>>2]|0)+1;$m(c[pb>>2]|0,(c[Bb>>2]|0)-(c[Cb>>2]|0)|0,c[Cb>>2]|0,0,(c[Lb>>2]|0)-3|0);}else{n:do{if((c[Pb>>2]|0)>>>0>(c[Db>>2]|0)>>>0?(tb=Mk(c[Rb>>2]|0)|0,Kb=y,Ab=Mk(c[Bb>>2]|0)|0,(tb|0)==(Ab|0)&(Kb|0)==(y|0)):0){c[Lb>>2]=(cn((c[Bb>>2]|0)+8|0,(c[Rb>>2]|0)+8|0,c[Fb>>2]|0)|0)+8;c[Tb>>2]=(c[Bb>>2]|0)-(c[Rb>>2]|0);while(1){if(!(((c[Bb>>2]|0)>>>0>(c[Cb>>2]|0)>>>0?(c[Rb>>2]|0)>>>0>(c[Eb>>2]|0)>>>0:0)|0))break n;if((d[(c[Bb>>2]|0)+-1>>0]|0|0)!=(d[(c[Rb>>2]|0)+-1>>0]|0|0))break n;c[Bb>>2]=(c[Bb>>2]|0)+-1;c[Rb>>2]=(c[Rb>>2]|0)+-1;c[Lb>>2]=(c[Lb>>2]|0)+1;}}else fc=16;}while(0);o:do{if((fc|0)==16){fc=0;if((c[Qb>>2]|0)>>>0>(c[Db>>2]|0)>>>0?(Kb=Rk(c[Sb>>2]|0)|0,(Kb|0)==(Rk(c[Bb>>2]|0)|0)):0){c[Ub>>2]=Dk((c[Bb>>2]|0)+1|0,c[wb>>2]|0,8)|0;c[Vb>>2]=c[(c[vb>>2]|0)+(c[Ub>>2]<<2)>>2];c[Wb>>2]=(c[zb>>2]|0)+(c[Vb>>2]|0);c[(c[vb>>2]|0)+(c[Ub>>2]<<2)>>2]=(c[Ob>>2]|0)+1;if((c[Vb>>2]|0)>>>0>(c[Db>>2]|0)>>>0?(Kb=Mk(c[Wb>>2]|0)|0,Ab=y,tb=Mk((c[Bb>>2]|0)+1|0)|0,(Kb|0)==(tb|0)&(Ab|0)==(y|0)):0){c[Lb>>2]=(cn((c[Bb>>2]|0)+9|0,(c[Wb>>2]|0)+8|0,c[Fb>>2]|0)|0)+8;c[Bb>>2]=(c[Bb>>2]|0)+1;c[Tb>>2]=(c[Bb>>2]|0)-(c[Wb>>2]|0);while(1){if(!(((c[Bb>>2]|0)>>>0>(c[Cb>>2]|0)>>>0?(c[Wb>>2]|0)>>>0>(c[Eb>>2]|0)>>>0:0)|0))break o;if((d[(c[Bb>>2]|0)+-1>>0]|0|0)!=(d[(c[Wb>>2]|0)+-1>>0]|0|0))break o;c[Bb>>2]=(c[Bb>>2]|0)+-1;c[Wb>>2]=(c[Wb>>2]|0)+-1;c[Lb>>2]=(c[Lb>>2]|0)+1;}}c[Lb>>2]=(cn((c[Bb>>2]|0)+4|0,(c[Sb>>2]|0)+4|0,c[Fb>>2]|0)|0)+4;c[Tb>>2]=(c[Bb>>2]|0)-(c[Sb>>2]|0);while(1){if(!(((c[Bb>>2]|0)>>>0>(c[Cb>>2]|0)>>>0?(c[Sb>>2]|0)>>>0>(c[Eb>>2]|0)>>>0:0)|0))break o;if((d[(c[Bb>>2]|0)+-1>>0]|0|0)!=(d[(c[Sb>>2]|0)+-1>>0]|0|0))break o;c[Bb>>2]=(c[Bb>>2]|0)+-1;c[Sb>>2]=(c[Sb>>2]|0)+-1;c[Lb>>2]=(c[Lb>>2]|0)+1;}}c[Bb>>2]=(c[Bb>>2]|0)+(((c[Bb>>2]|0)-(c[Cb>>2]|0)>>8)+1);continue m;}}while(0);c[Ib>>2]=c[Hb>>2];c[Hb>>2]=c[Tb>>2];$m(c[pb>>2]|0,(c[Bb>>2]|0)-(c[Cb>>2]|0)|0,c[Cb>>2]|0,(c[Tb>>2]|0)+2|0,(c[Lb>>2]|0)-3|0);}c[Bb>>2]=(c[Bb>>2]|0)+(c[Lb>>2]|0);c[Cb>>2]=c[Bb>>2];p:do{if((c[Bb>>2]|0)>>>0<=(c[Gb>>2]|0)>>>0){Ab=(c[Ob>>2]|0)+2|0;tb=c[xb>>2]|0;c[tb+((Dk((c[zb>>2]|0)+(c[Ob>>2]|0)+2|0,c[yb>>2]|0,c[ub>>2]|0)|0)<<2)>>2]=Ab;tb=c[vb>>2]|0;c[tb+((Dk((c[zb>>2]|0)+(c[Ob>>2]|0)+2|0,c[wb>>2]|0,8)|0)<<2)>>2]=Ab;Ab=(c[Bb>>2]|0)+-2-(c[zb>>2]|0)|0;tb=c[xb>>2]|0;c[tb+((Dk((c[Bb>>2]|0)+-2|0,c[yb>>2]|0,c[ub>>2]|0)|0)<<2)>>2]=Ab;tb=c[vb>>2]|0;c[tb+((Dk((c[Bb>>2]|0)+-2|0,c[wb>>2]|0,8)|0)<<2)>>2]=Ab;while(1){if((c[Bb>>2]|0)>>>0>(c[Gb>>2]|0)>>>0)break p;Ab=(c[Ib>>2]|0)>>>0>0&1;tb=Rk(c[Bb>>2]|0)|0;if(!(Ab&(tb|0)==(Rk((c[Bb>>2]|0)+(0-(c[Ib>>2]|0))|0)|0)))break p;c[Xb>>2]=(cn((c[Bb>>2]|0)+4|0,(c[Bb>>2]|0)+4+(0-(c[Ib>>2]|0))|0,c[Fb>>2]|0)|0)+4;c[Yb>>2]=c[Ib>>2];c[Ib>>2]=c[Hb>>2];c[Hb>>2]=c[Yb>>2];tb=(c[Bb>>2]|0)-(c[zb>>2]|0)|0;Ab=c[xb>>2]|0;c[Ab+((Dk(c[Bb>>2]|0,c[yb>>2]|0,c[ub>>2]|0)|0)<<2)>>2]=tb;tb=(c[Bb>>2]|0)-(c[zb>>2]|0)|0;Ab=c[vb>>2]|0;c[Ab+((Dk(c[Bb>>2]|0,c[wb>>2]|0,8)|0)<<2)>>2]=tb;$m(c[pb>>2]|0,0,c[Cb>>2]|0,0,(c[Xb>>2]|0)-3|0);c[Bb>>2]=(c[Bb>>2]|0)+(c[Xb>>2]|0);c[Cb>>2]=c[Bb>>2];}}}while(0);}c[c[qb>>2]>>2]=c[Hb>>2]|0?c[Hb>>2]|0:c[Jb>>2]|0;c[(c[qb>>2]|0)+4>>2]=c[Ib>>2]|0?c[Ib>>2]|0:c[Jb>>2]|0;c[Zb>>2]=(c[Fb>>2]|0)-(c[Cb>>2]|0);gc=c[Zb>>2]|0;l=i;return gc|0;}}return 0;}function jm(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,dg=0,eg=0,fg=0,gg=0,hg=0,ig=0,jg=0,kg=0,lg=0,mg=0,ng=0,og=0,pg=0,qg=0,rg=0,sg=0,tg=0,ug=0,vg=0,wg=0,xg=0,yg=0,zg=0,Ag=0,Bg=0,Cg=0,Dg=0,Eg=0,Fg=0,Gg=0,Hg=0,Ig=0,Jg=0,Kg=0,Lg=0,Mg=0,Ng=0,Og=0,Pg=0,Qg=0,Rg=0,Sg=0,Tg=0,Ug=0,Vg=0,Wg=0,Xg=0,Yg=0,Zg=0,_g=0,$g=0,ah=0,bh=0,ch=0,dh=0,eh=0,fh=0,gh=0,hh=0,ih=0,jh=0,kh=0,lh=0,mh=0,nh=0,oh=0,ph=0,qh=0,rh=0,sh=0,th=0,uh=0,vh=0,wh=0,xh=0,yh=0,zh=0,Ah=0,Bh=0,Ch=0,Dh=0,Eh=0,Fh=0,Gh=0,Hh=0,Ih=0,Jh=0,Kh=0,Lh=0,Mh=0,Nh=0,Oh=0,Ph=0,Qh=0,Rh=0,Sh=0,Th=0,Uh=0,Vh=0,Wh=0,Xh=0,Yh=0,Zh=0,_h=0,$h=0,ai=0,bi=0,ci=0,di=0,ei=0,fi=0,gi=0,hi=0,ii=0,ji=0,ki=0,li=0,mi=0,ni=0,oi=0,pi=0,qi=0,ri=0,si=0,ti=0,ui=0,vi=0,wi=0,xi=0,yi=0,zi=0,Ai=0,Bi=0,Ci=0,Di=0,Ei=0,Fi=0,Gi=0,Hi=0,Ii=0,Ji=0,Ki=0,Li=0,Mi=0,Ni=0,Oi=0,Pi=0,Qi=0,Ri=0,Si=0,Ti=0,Ui=0,Vi=0,Wi=0,Xi=0,Yi=0,Zi=0,_i=0,$i=0,aj=0,bj=0,cj=0,dj=0,ej=0,fj=0,gj=0,hj=0,ij=0,jj=0,kj=0,lj=0,mj=0,nj=0,oj=0,pj=0,qj=0,rj=0,sj=0,tj=0,uj=0,vj=0,wj=0,xj=0,yj=0,zj=0,Aj=0,Bj=0,Cj=0,Dj=0,Ej=0;i=l;l=l+2144|0;j=i+2136|0;k=i+2132|0;m=i+2128|0;n=i+2124|0;o=i+2120|0;p=i+2116|0;q=i+2112|0;r=i+2108|0;s=i+2104|0;t=i+2100|0;u=i+2096|0;v=i+2092|0;w=i+2088|0;x=i+2084|0;y=i+2080|0;z=i+2076|0;A=i+2072|0;B=i+2068|0;C=i+2064|0;D=i+2060|0;E=i+2056|0;F=i+2052|0;G=i+2048|0;H=i+2044|0;I=i+2040|0;J=i+2036|0;K=i+2032|0;L=i+2028|0;M=i+2024|0;N=i+2020|0;O=i+2016|0;P=i+2012|0;Q=i+2008|0;R=i+2004|0;S=i+2e3|0;T=i+1996|0;U=i+1992|0;V=i+1988|0;W=i+1984|0;X=i+1980|0;Y=i+1976|0;Z=i+1972|0;_=i+1968|0;$=i+1964|0;aa=i+1960|0;ba=i+1956|0;ca=i+1952|0;da=i+1948|0;ea=i+1944|0;fa=i+1940|0;ga=i+1936|0;ha=i+1932|0;ia=i+1928|0;ja=i+1924|0;ka=i+1920|0;la=i+1916|0;ma=i+1912|0;na=i+1908|0;oa=i+1904|0;pa=i+1900|0;qa=i+1896|0;ra=i+1892|0;sa=i+1888|0;ta=i+1884|0;ua=i+1880|0;va=i+1876|0;wa=i+1872|0;xa=i+1868|0;ya=i+1864|0;za=i+1860|0;Aa=i+1856|0;Ba=i+1852|0;Ca=i+1848|0;Da=i+1844|0;Ea=i+1840|0;Fa=i+1836|0;Ga=i+1832|0;Ha=i+1828|0;Ia=i+1824|0;Ja=i+1820|0;Ka=i+1816|0;La=i+1812|0;Ma=i+1808|0;Na=i+1804|0;Oa=i+1800|0;Pa=i+1796|0;Qa=i+1792|0;Ra=i+1788|0;Sa=i+1784|0;Ta=i+1780|0;Ua=i+1776|0;Va=i+1772|0;Wa=i+1768|0;Xa=i+1764|0;Ya=i+1760|0;Za=i+1756|0;_a=i+1752|0;$a=i+1748|0;ab=i+1744|0;bb=i+1740|0;cb=i+1736|0;db=i+1732|0;eb=i+1728|0;fb=i+1724|0;gb=i+1720|0;hb=i+1716|0;ib=i+1712|0;jb=i+1708|0;kb=i+1704|0;lb=i+1700|0;mb=i+1696|0;nb=i+1692|0;ob=i+1688|0;pb=i+1684|0;qb=i+1680|0;rb=i+1676|0;sb=i+1672|0;tb=i+1668|0;ub=i+1664|0;vb=i+1660|0;wb=i+1656|0;xb=i+1652|0;yb=i+1648|0;zb=i+1644|0;Ab=i+1640|0;Bb=i+1636|0;Cb=i+1632|0;Db=i+1628|0;Eb=i+1624|0;Fb=i+1620|0;Gb=i+1616|0;Hb=i+1612|0;Ib=i+1608|0;Jb=i+1604|0;Kb=i+1600|0;Lb=i+1596|0;Mb=i+1592|0;Nb=i+1588|0;Ob=i+1584|0;Pb=i+1580|0;Qb=i+1576|0;Rb=i+1572|0;Sb=i+1568|0;Tb=i+1564|0;Ub=i+1560|0;Vb=i+1556|0;Wb=i+1552|0;Xb=i+1548|0;Yb=i+1544|0;Zb=i+1540|0;_b=i+1536|0;$b=i+1532|0;ac=i+1528|0;bc=i+1524|0;cc=i+1520|0;dc=i+1516|0;ec=i+1512|0;fc=i+1508|0;gc=i+1504|0;hc=i+1500|0;ic=i+1496|0;jc=i+1492|0;kc=i+1488|0;lc=i+1484|0;mc=i+1480|0;nc=i+1476|0;oc=i+1472|0;pc=i+1468|0;qc=i+1464|0;rc=i+1460|0;sc=i+1456|0;tc=i+1452|0;uc=i+1448|0;vc=i+1444|0;wc=i+1440|0;xc=i+1436|0;yc=i+1432|0;zc=i+1428|0;Ac=i+1424|0;Bc=i+1420|0;Cc=i+1416|0;Dc=i+1412|0;Ec=i+1408|0;Fc=i+1404|0;Gc=i+1400|0;Hc=i+1396|0;Ic=i+1392|0;Jc=i+1388|0;Kc=i+1384|0;Lc=i+1380|0;Mc=i+1376|0;Nc=i+1372|0;Oc=i+1368|0;Pc=i+1364|0;Qc=i+1360|0;Rc=i+1356|0;Sc=i+1352|0;Tc=i+1348|0;Uc=i+1344|0;Vc=i+1340|0;Wc=i+1336|0;Xc=i+1332|0;Yc=i+1328|0;Zc=i+1324|0;_c=i+1320|0;$c=i+1316|0;ad=i+1312|0;bd=i+1308|0;cd=i+1304|0;dd=i+1300|0;ed=i+1296|0;fd=i+1292|0;gd=i+1288|0;hd=i+1284|0;id=i+1280|0;jd=i+1276|0;kd=i+1272|0;ld=i+1268|0;md=i+1264|0;nd=i+1260|0;od=i+1256|0;pd=i+1252|0;qd=i+1248|0;rd=i+1244|0;sd=i+1240|0;td=i+1236|0;ud=i+1232|0;vd=i+1228|0;wd=i+1224|0;xd=i+1220|0;yd=i+1216|0;zd=i+1212|0;Ad=i+1208|0;Bd=i+1204|0;Cd=i+1200|0;Dd=i+1196|0;Ed=i+1192|0;Fd=i+1188|0;Gd=i+1184|0;Hd=i+1180|0;Id=i+1176|0;Jd=i+1172|0;Kd=i+1168|0;Ld=i+1164|0;Md=i+1160|0;Nd=i+1156|0;Od=i+1152|0;Pd=i+1148|0;Qd=i+1144|0;Rd=i+1140|0;Sd=i+1136|0;Td=i+1132|0;Ud=i+1128|0;Vd=i+1124|0;Wd=i+1120|0;Xd=i+1116|0;Yd=i+1112|0;Zd=i+1108|0;_d=i+1104|0;$d=i+1100|0;ae=i+1096|0;be=i+1092|0;ce=i+1088|0;de=i+1084|0;ee=i+1080|0;fe=i+1076|0;ge=i+1072|0;he=i+1068|0;ie=i+1064|0;je=i+1060|0;ke=i+1056|0;le=i+1052|0;me=i+1048|0;ne=i+1044|0;oe=i+1040|0;pe=i+1036|0;qe=i+1032|0;re=i+1028|0;se=i+1024|0;te=i+1020|0;ue=i+1016|0;ve=i+1012|0;we=i+1008|0;xe=i+1004|0;ye=i+1e3|0;ze=i+996|0;Ae=i+992|0;Be=i+988|0;Ce=i+984|0;De=i+980|0;Ee=i+976|0;Fe=i+972|0;Ge=i+968|0;He=i+964|0;Ie=i+960|0;Je=i+956|0;Ke=i+952|0;Le=i+948|0;Me=i+944|0;Ne=i+940|0;Oe=i+936|0;Pe=i+932|0;Qe=i+928|0;Re=i+924|0;Se=i+920|0;Te=i+916|0;Ue=i+912|0;Ve=i+908|0;We=i+904|0;Xe=i+900|0;Ye=i+896|0;Ze=i+892|0;_e=i+888|0;$e=i+884|0;af=i+880|0;bf=i+876|0;cf=i+872|0;df=i+868|0;ef=i+864|0;ff=i+860|0;gf=i+856|0;hf=i+852|0;jf=i+848|0;kf=i+844|0;lf=i+840|0;mf=i+836|0;nf=i+832|0;of=i+828|0;pf=i+824|0;qf=i+820|0;rf=i+816|0;sf=i+812|0;tf=i+808|0;uf=i+804|0;vf=i+800|0;wf=i+796|0;xf=i+792|0;yf=i+788|0;zf=i+784|0;Af=i+780|0;Bf=i+776|0;Cf=i+772|0;Df=i+768|0;Ef=i+764|0;Ff=i+760|0;Gf=i+756|0;Hf=i+752|0;If=i+748|0;Jf=i+744|0;Kf=i+740|0;Lf=i+736|0;Mf=i+732|0;Nf=i+728|0;Of=i+724|0;Pf=i+720|0;Qf=i+716|0;Rf=i+712|0;Sf=i+708|0;Tf=i+704|0;Uf=i+700|0;Vf=i+696|0;Wf=i+692|0;Xf=i+688|0;Yf=i+684|0;Zf=i+680|0;_f=i+676|0;$f=i+672|0;ag=i+668|0;bg=i+664|0;cg=i+660|0;dg=i+656|0;eg=i+652|0;fg=i+648|0;gg=i+644|0;hg=i+640|0;ig=i+636|0;jg=i+632|0;kg=i+628|0;lg=i+624|0;mg=i+620|0;ng=i+616|0;og=i+612|0;pg=i+608|0;qg=i+604|0;rg=i+600|0;sg=i+596|0;tg=i+592|0;ug=i+588|0;vg=i+584|0;wg=i+580|0;xg=i+576|0;yg=i+572|0;zg=i+568|0;Ag=i+564|0;Bg=i+560|0;Cg=i+556|0;Dg=i+552|0;Eg=i+548|0;Fg=i+544|0;Gg=i+540|0;Hg=i+536|0;Ig=i+532|0;Jg=i+528|0;Kg=i+524|0;Lg=i+520|0;Mg=i+516|0;Ng=i+512|0;Og=i+508|0;Pg=i+504|0;Qg=i+500|0;Rg=i+496|0;Sg=i+492|0;Tg=i+488|0;Ug=i+484|0;Vg=i+480|0;Wg=i+476|0;Xg=i+472|0;Yg=i+468|0;Zg=i+464|0;_g=i+460|0;$g=i+456|0;ah=i+452|0;bh=i+448|0;ch=i+444|0;dh=i+440|0;eh=i+436|0;fh=i+432|0;gh=i+428|0;hh=i+424|0;ih=i+420|0;jh=i+416|0;kh=i+412|0;lh=i+408|0;mh=i+404|0;nh=i+400|0;oh=i+396|0;ph=i+392|0;qh=i+388|0;rh=i+384|0;sh=i+380|0;th=i+376|0;uh=i+372|0;vh=i+368|0;wh=i+364|0;xh=i+360|0;yh=i+356|0;zh=i+352|0;Ah=i+348|0;Bh=i+344|0;Ch=i+340|0;Dh=i+336|0;Eh=i+332|0;Fh=i+328|0;Gh=i+324|0;Hh=i+320|0;Ih=i+316|0;Jh=i+312|0;Kh=i+308|0;Lh=i+304|0;Mh=i+300|0;Nh=i+296|0;Oh=i+292|0;Ph=i+288|0;Qh=i+284|0;Rh=i+280|0;Sh=i+276|0;Th=i+272|0;Uh=i+268|0;Vh=i+264|0;Wh=i+260|0;Xh=i+256|0;Yh=i+252|0;Zh=i+248|0;_h=i+244|0;$h=i+240|0;ai=i+236|0;bi=i+232|0;ci=i+228|0;di=i+216|0;ei=i+212|0;fi=i+208|0;gi=i+204|0;hi=i+200|0;ii=i+196|0;ji=i+192|0;ki=i+188|0;li=i+184|0;mi=i+180|0;ni=i+176|0;oi=i+172|0;pi=i+168|0;qi=i+164|0;ri=i+160|0;si=i+148|0;ti=i+144|0;ui=i+140|0;vi=i+136|0;wi=i+132|0;xi=i+128|0;yi=i+124|0;zi=i+120|0;Ai=i+116|0;Bi=i+112|0;Ci=i+108|0;Di=i+104|0;Ei=i+100|0;Fi=i+88|0;Gi=i+84|0;Hi=i+80|0;Ii=i+76|0;Ji=i+72|0;Ki=i+68|0;Li=i+64|0;Mi=i+60|0;Ni=i+56|0;Oi=i+52|0;Pi=i+48|0;Qi=i+44|0;Ri=i+40|0;Si=i+36|0;Ti=i+32|0;Ui=i+28|0;Vi=i+24|0;Wi=i+20|0;Xi=i+16|0;Yi=i+12|0;Zi=i+8|0;_i=i+4|0;$i=i;c[Wi>>2]=a;c[Xi>>2]=b;c[Yi>>2]=e;c[Zi>>2]=f;c[_i>>2]=g;c[$i>>2]=h;h=c[Xi>>2]|0;Xi=c[Yi>>2]|0;Yi=c[Zi>>2]|0;Zi=c[_i>>2]|0;_i=c[$i>>2]|0;c[Lh>>2]=c[Wi>>2];c[Mh>>2]=h;c[Nh>>2]=Xi;c[Oh>>2]=Yi;c[Ph>>2]=Zi;c[Qh>>2]=_i;c[Rh>>2]=0;c[Sh>>2]=1;c[Th>>2]=(c[Lh>>2]|0)+48;c[Uh>>2]=c[Ph>>2];c[Vh>>2]=c[Uh>>2];c[Wh>>2]=c[Uh>>2];c[Xh>>2]=(c[Uh>>2]|0)+(c[Qh>>2]|0);c[Yh>>2]=(c[Xh>>2]|0)+-8;c[Zh>>2]=c[(c[Lh>>2]|0)+4>>2];c[_h>>2]=(c[Zh>>2]|0)+(c[(c[Lh>>2]|0)+12>>2]|0);if((c[(c[Oh>>2]|0)+20>>2]|0)>>>0<4095)aj=c[(c[Oh>>2]|0)+20>>2]|0;else aj=4095;c[$h>>2]=aj;c[ai>>2]=(c[(c[Oh>>2]|0)+16>>2]|0)==3?3:4;c[bi>>2]=c[(c[Th>>2]|0)+20>>2];c[ci>>2]=c[(c[Th>>2]|0)+16>>2];c[(c[Lh>>2]|0)+28>>2]=c[(c[Lh>>2]|0)+24>>2];lm(c[Th>>2]|0,c[Ph>>2]|0,c[Qh>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+((c[Vh>>2]|0)==(c[_h>>2]|0)&1);c[di>>2]=0;c[di+4>>2]=0;c[di+8>>2]=0;while(1){if((c[Vh>>2]|0)>>>0>=(c[Yh>>2]|0)>>>0)break;c[fi>>2]=0;c[ii>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[ji>>2]=((c[ii>>2]|0)!=0^1)&1;_h=c[Oh>>2]|0;Qh=c[Vh>>2]|0;Ph=c[Xh>>2]|0;aj=c[Sh>>2]|0;Zh=c[Nh>>2]|0;Uh=c[ji>>2]|0;_i=c[ci>>2]|0;Zi=c[ai>>2]|0;c[Bh>>2]=c[Lh>>2];c[Ch>>2]=_h;c[Dh>>2]=Qh;c[Eh>>2]=Ph;c[Fh>>2]=aj;c[Gh>>2]=Zh;c[Hh>>2]=Uh;c[Ih>>2]=_i;c[Jh>>2]=Zi;c[Kh>>2]=c[(c[Ch>>2]|0)+16>>2];a:do{if((c[Dh>>2]|0)>>>0<((c[(c[Bh>>2]|0)+4>>2]|0)+(c[(c[Bh>>2]|0)+24>>2]|0)|0)>>>0)c[Ah>>2]=0;else{Zi=c[Ch>>2]|0;_i=c[Dh>>2]|0;Uh=c[Eh>>2]|0;Zh=c[Kh>>2]|0;aj=c[Fh>>2]|0;c[rh>>2]=c[Bh>>2];c[sh>>2]=Zi;c[th>>2]=_i;c[uh>>2]=Uh;c[vh>>2]=Zh;c[wh>>2]=aj;c[xh>>2]=c[(c[rh>>2]|0)+4>>2];c[yh>>2]=(c[th>>2]|0)-(c[xh>>2]|0);c[zh>>2]=c[(c[rh>>2]|0)+24>>2];while(1){if((c[zh>>2]|0)>>>0>=(c[yh>>2]|0)>>>0)break;aj=Rj(c[rh>>2]|0,c[sh>>2]|0,(c[xh>>2]|0)+(c[zh>>2]|0)|0,c[uh>>2]|0,c[vh>>2]|0,c[wh>>2]|0)|0;c[zh>>2]=(c[zh>>2]|0)+aj;}c[(c[rh>>2]|0)+24>>2]=c[yh>>2];switch(c[Kh>>2]|0){case 3:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[wg>>2]=c[Bh>>2];c[xg>>2]=aj;c[yg>>2]=Zh;c[zg>>2]=Uh;c[Ag>>2]=_i;c[Bg>>2]=Zi;c[Cg>>2]=Ph;c[Dg>>2]=Qh;c[Eg>>2]=_h;c[Fg>>2]=3;if((c[(c[xg>>2]|0)+20>>2]|0)>>>0<4095)bj=c[(c[xg>>2]|0)+20>>2]|0;else bj=4095;c[Gg>>2]=bj;c[Hg>>2]=c[(c[wg>>2]|0)+4>>2];c[Ig>>2]=(c[yg>>2]|0)-(c[Hg>>2]|0);c[Jg>>2]=c[(c[xg>>2]|0)+8>>2];c[Kg>>2]=(c[Fg>>2]|0)==3?3:4;c[Lg>>2]=c[(c[wg>>2]|0)+36>>2];c[Mg>>2]=Sj(c[yg>>2]|0,c[Jg>>2]|0,c[Fg>>2]|0)|0;c[Ng>>2]=c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2];c[Og>>2]=c[(c[wg>>2]|0)+44>>2];c[Pg>>2]=(c[(c[xg>>2]|0)+4>>2]|0)-1;c[Qg>>2]=(1<<c[Pg>>2])-1;c[Rg>>2]=0;c[Sg>>2]=0;c[Tg>>2]=c[(c[wg>>2]|0)+8>>2];c[Ug>>2]=c[(c[wg>>2]|0)+12>>2];c[Vg>>2]=(c[Tg>>2]|0)+(c[Ug>>2]|0);c[Wg>>2]=(c[Hg>>2]|0)+(c[Ug>>2]|0);if((c[Qg>>2]|0)>>>0>=(c[Ig>>2]|0)>>>0)cj=0;else cj=(c[Ig>>2]|0)-(c[Qg>>2]|0)|0;c[Xg>>2]=cj;c[Yg>>2]=c[(c[wg>>2]|0)+16>>2];c[Zg>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2);c[_g>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2)+4;c[$g>>2]=(c[Ig>>2]|0)+8+1;c[bh>>2]=0;c[ch>>2]=1<<c[(c[xg>>2]|0)+12>>2];c[dh>>2]=(c[Eg>>2]|0)-1;c[eh>>2]=3+(c[Cg>>2]|0);c[fh>>2]=c[Cg>>2];while(1){if((c[fh>>2]|0)>>>0>=(c[eh>>2]|0)>>>0){dj=31;break;}_h=c[Bg>>2]|0;if((c[fh>>2]|0)==3)ej=(c[_h>>2]|0)-1|0;else ej=c[_h+(c[fh>>2]<<2)>>2]|0;c[gh>>2]=ej;c[hh>>2]=(c[Ig>>2]|0)-(c[gh>>2]|0);c[ih>>2]=0;if(((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Ug>>2]|0)|0)>>>0){_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0;if((_h|0)==(mm((c[yg>>2]|0)+(0-(c[gh>>2]|0))|0,c[Kg>>2]|0)|0)){_h=Tj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[yg>>2]|0)+(c[Kg>>2]|0)+(0-(c[gh>>2]|0))|0,c[zg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}else{c[jh>>2]=(c[Tg>>2]|0)+(c[hh>>2]|0);if((c[Ag>>2]|0?(((c[Ug>>2]|0)-1-(c[hh>>2]|0)|0)>>>0>=3?((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Yg>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0,(_h|0)==(mm(c[jh>>2]|0,c[Kg>>2]|0)|0)):0){_h=Uj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[jh>>2]|0)+(c[Kg>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}if((c[ih>>2]|0)>>>0>(c[dh>>2]|0)>>>0?(c[dh>>2]=c[ih>>2],c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[fh>>2]|0)-(c[Cg>>2]|0),c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ih>>2],c[bh>>2]=(c[bh>>2]|0)+1,((c[ih>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[ih>>2]|0)|0)==(c[zg>>2]|0))|0):0){dj=29;break;}c[fh>>2]=(c[fh>>2]|0)+1;}do{if((dj|0)==29){dj=0;c[vg>>2]=c[bh>>2];}else if((dj|0)==31){dj=0;if(((c[Fg>>2]|0)==3?(c[dh>>2]|0)>>>0<(c[Fg>>2]|0)>>>0:0)?(c[kh>>2]=nm(c[wg>>2]|0,c[yg>>2]|0)|0,((c[kh>>2]|0)>>>0>(c[Yg>>2]|0)>>>0?((c[Ig>>2]|0)-(c[kh>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ag>>2]|0?(c[kh>>2]|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[nh>>2]=(c[Tg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Uj(c[yg>>2]|0,c[nh>>2]|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;}else{c[mh>>2]=(c[Hg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Tj(c[yg>>2]|0,c[mh>>2]|0,c[zg>>2]|0)|0;}if((c[lh>>2]|0)>>>0>=(c[Fg>>2]|0)>>>0?(c[dh>>2]=c[lh>>2],c[c[Dg>>2]>>2]=(c[Ig>>2]|0)-(c[kh>>2]|0)+2,c[(c[Dg>>2]|0)+4>>2]=c[lh>>2],c[bh>>2]=1,((c[lh>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[lh>>2]|0)|0)==(c[zg>>2]|0))|0):0){c[(c[wg>>2]|0)+24>>2]=(c[Ig>>2]|0)+1;c[vg>>2]=1;break;}}c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2]=c[Ig>>2];while(1){_h=c[ch>>2]|0;c[ch>>2]=_h+-1;if(!_h)break;if((c[Ng>>2]|0)>>>0<=(c[Yg>>2]|0)>>>0)break;c[oh>>2]=(c[Og>>2]|0)+((c[Ng>>2]&c[Qg>>2])<<1<<2);c[ph>>2]=(c[Rg>>2]|0)>>>0<(c[Sg>>2]|0)>>>0?c[Rg>>2]|0:c[Sg>>2]|0;if(c[Ag>>2]|0?((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[qh>>2]=(c[Tg>>2]|0)+(c[Ng>>2]|0);_h=Uj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;if(((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0>=(c[Ug>>2]|0)>>>0)c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);}else{c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);_h=Tj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;}if((c[ph>>2]|0)>>>0>(c[dh>>2]|0)>>>0){if((c[ph>>2]|0)>>>0>((c[$g>>2]|0)-(c[Ng>>2]|0)|0)>>>0)c[$g>>2]=(c[Ng>>2]|0)+(c[ph>>2]|0);c[dh>>2]=c[ph>>2];c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[Ig>>2]|0)-(c[Ng>>2]|0)+2;c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ph>>2];c[bh>>2]=(c[bh>>2]|0)+1;if((c[ph>>2]|0)>>>0>4096)break;if(((c[yg>>2]|0)+(c[ph>>2]|0)|0)==(c[zg>>2]|0))break;}_h=c[Ng>>2]|0;if((d[(c[qh>>2]|0)+(c[ph>>2]|0)>>0]|0|0)<(d[(c[yg>>2]|0)+(c[ph>>2]|0)>>0]|0|0)){c[c[Zg>>2]>>2]=_h;c[Rg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=56;break;}c[Zg>>2]=(c[oh>>2]|0)+4;c[Ng>>2]=c[(c[oh>>2]|0)+4>>2];}else{c[c[_g>>2]>>2]=_h;c[Sg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=59;break;}c[_g>>2]=c[oh>>2];c[Ng>>2]=c[c[oh>>2]>>2];}}if((dj|0)==56){dj=0;c[Zg>>2]=ah;}else if((dj|0)==59){dj=0;c[_g>>2]=ah;}c[c[_g>>2]>>2]=0;c[c[Zg>>2]>>2]=0;c[(c[wg>>2]|0)+24>>2]=(c[$g>>2]|0)-8;c[vg>>2]=c[bh>>2];}}while(0);c[Ah>>2]=c[vg>>2];break a;break;}case 7:case 6:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Hd>>2]=c[Bh>>2];c[Id>>2]=_h;c[Jd>>2]=Qh;c[Kd>>2]=Ph;c[Ld>>2]=Zi;c[Md>>2]=_i;c[Nd>>2]=Uh;c[Od>>2]=Zh;c[Pd>>2]=aj;c[Qd>>2]=6;if((c[(c[Id>>2]|0)+20>>2]|0)>>>0<4095)fj=c[(c[Id>>2]|0)+20>>2]|0;else fj=4095;c[Rd>>2]=fj;c[Sd>>2]=c[(c[Hd>>2]|0)+4>>2];c[Td>>2]=(c[Jd>>2]|0)-(c[Sd>>2]|0);c[Ud>>2]=c[(c[Id>>2]|0)+8>>2];c[Vd>>2]=(c[Qd>>2]|0)==3?3:4;c[Wd>>2]=c[(c[Hd>>2]|0)+36>>2];c[Xd>>2]=Sj(c[Jd>>2]|0,c[Ud>>2]|0,c[Qd>>2]|0)|0;c[Yd>>2]=c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2];c[Zd>>2]=c[(c[Hd>>2]|0)+44>>2];c[_d>>2]=(c[(c[Id>>2]|0)+4>>2]|0)-1;c[$d>>2]=(1<<c[_d>>2])-1;c[ae>>2]=0;c[be>>2]=0;c[ce>>2]=c[(c[Hd>>2]|0)+8>>2];c[de>>2]=c[(c[Hd>>2]|0)+12>>2];c[ee>>2]=(c[ce>>2]|0)+(c[de>>2]|0);c[fe>>2]=(c[Sd>>2]|0)+(c[de>>2]|0);if((c[$d>>2]|0)>>>0>=(c[Td>>2]|0)>>>0)gj=0;else gj=(c[Td>>2]|0)-(c[$d>>2]|0)|0;c[ge>>2]=gj;c[he>>2]=c[(c[Hd>>2]|0)+16>>2];c[ie>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2);c[je>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2)+4;c[ke>>2]=(c[Td>>2]|0)+8+1;c[me>>2]=0;c[ne>>2]=1<<c[(c[Id>>2]|0)+12>>2];c[oe>>2]=(c[Pd>>2]|0)-1;c[pe>>2]=3+(c[Nd>>2]|0);c[qe>>2]=c[Nd>>2];while(1){if((c[qe>>2]|0)>>>0>=(c[pe>>2]|0)>>>0){dj=190;break;}aj=c[Md>>2]|0;if((c[qe>>2]|0)==3)hj=(c[aj>>2]|0)-1|0;else hj=c[aj+(c[qe>>2]<<2)>>2]|0;c[re>>2]=hj;c[se>>2]=(c[Td>>2]|0)-(c[re>>2]|0);c[te>>2]=0;if(((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[de>>2]|0)|0)>>>0){aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0;if((aj|0)==(mm((c[Jd>>2]|0)+(0-(c[re>>2]|0))|0,c[Vd>>2]|0)|0)){aj=Tj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[Jd>>2]|0)+(c[Vd>>2]|0)+(0-(c[re>>2]|0))|0,c[Kd>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}else{c[ue>>2]=(c[ce>>2]|0)+(c[se>>2]|0);if((c[Ld>>2]|0?(((c[de>>2]|0)-1-(c[se>>2]|0)|0)>>>0>=3?((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[he>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0,(aj|0)==(mm(c[ue>>2]|0,c[Vd>>2]|0)|0)):0){aj=Uj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[ue>>2]|0)+(c[Vd>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}if((c[te>>2]|0)>>>0>(c[oe>>2]|0)>>>0?(c[oe>>2]=c[te>>2],c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[qe>>2]|0)-(c[Nd>>2]|0),c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[te>>2],c[me>>2]=(c[me>>2]|0)+1,((c[te>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[te>>2]|0)|0)==(c[Kd>>2]|0))|0):0){dj=188;break;}c[qe>>2]=(c[qe>>2]|0)+1;}do{if((dj|0)==188){dj=0;c[Gd>>2]=c[me>>2];}else if((dj|0)==190){dj=0;if(((c[Qd>>2]|0)==3?(c[oe>>2]|0)>>>0<(c[Qd>>2]|0)>>>0:0)?(c[ve>>2]=nm(c[Hd>>2]|0,c[Jd>>2]|0)|0,((c[ve>>2]|0)>>>0>(c[he>>2]|0)>>>0?((c[Td>>2]|0)-(c[ve>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ld>>2]|0?(c[ve>>2]|0)>>>0<(c[de>>2]|0)>>>0:0){c[ye>>2]=(c[ce>>2]|0)+(c[ve>>2]|0);c[we>>2]=Uj(c[Jd>>2]|0,c[ye>>2]|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;}else{c[xe>>2]=(c[Sd>>2]|0)+(c[ve>>2]|0);c[we>>2]=Tj(c[Jd>>2]|0,c[xe>>2]|0,c[Kd>>2]|0)|0;}if((c[we>>2]|0)>>>0>=(c[Qd>>2]|0)>>>0?(c[oe>>2]=c[we>>2],c[c[Od>>2]>>2]=(c[Td>>2]|0)-(c[ve>>2]|0)+2,c[(c[Od>>2]|0)+4>>2]=c[we>>2],c[me>>2]=1,((c[we>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[we>>2]|0)|0)==(c[Kd>>2]|0))|0):0){c[(c[Hd>>2]|0)+24>>2]=(c[Td>>2]|0)+1;c[Gd>>2]=1;break;}}c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2]=c[Td>>2];while(1){aj=c[ne>>2]|0;c[ne>>2]=aj+-1;if(!aj)break;if((c[Yd>>2]|0)>>>0<=(c[he>>2]|0)>>>0)break;c[ze>>2]=(c[Zd>>2]|0)+((c[Yd>>2]&c[$d>>2])<<1<<2);c[Ae>>2]=(c[ae>>2]|0)>>>0<(c[be>>2]|0)>>>0?c[ae>>2]|0:c[be>>2]|0;if(c[Ld>>2]|0?((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0<(c[de>>2]|0)>>>0:0){c[Be>>2]=(c[ce>>2]|0)+(c[Yd>>2]|0);aj=Uj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;if(((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0>=(c[de>>2]|0)>>>0)c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);}else{c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);aj=Tj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;}if((c[Ae>>2]|0)>>>0>(c[oe>>2]|0)>>>0){if((c[Ae>>2]|0)>>>0>((c[ke>>2]|0)-(c[Yd>>2]|0)|0)>>>0)c[ke>>2]=(c[Yd>>2]|0)+(c[Ae>>2]|0);c[oe>>2]=c[Ae>>2];c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[Td>>2]|0)-(c[Yd>>2]|0)+2;c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[Ae>>2];c[me>>2]=(c[me>>2]|0)+1;if((c[Ae>>2]|0)>>>0>4096)break;if(((c[Jd>>2]|0)+(c[Ae>>2]|0)|0)==(c[Kd>>2]|0))break;}aj=c[Yd>>2]|0;if((d[(c[Be>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)<(d[(c[Jd>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)){c[c[ie>>2]>>2]=aj;c[ae>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=215;break;}c[ie>>2]=(c[ze>>2]|0)+4;c[Yd>>2]=c[(c[ze>>2]|0)+4>>2];}else{c[c[je>>2]>>2]=aj;c[be>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=218;break;}c[je>>2]=c[ze>>2];c[Yd>>2]=c[c[ze>>2]>>2];}}if((dj|0)==215){dj=0;c[ie>>2]=le;}else if((dj|0)==218){dj=0;c[je>>2]=le;}c[c[je>>2]>>2]=0;c[c[ie>>2]>>2]=0;c[(c[Hd>>2]|0)+24>>2]=(c[ke>>2]|0)-8;c[Gd>>2]=c[me>>2];}}while(0);c[Ah>>2]=c[Gd>>2];break a;break;}case 5:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[De>>2]=c[Bh>>2];c[Ee>>2]=aj;c[Fe>>2]=Zh;c[Ge>>2]=Uh;c[He>>2]=_i;c[Ie>>2]=Zi;c[Je>>2]=Ph;c[Ke>>2]=Qh;c[Le>>2]=_h;c[Me>>2]=5;if((c[(c[Ee>>2]|0)+20>>2]|0)>>>0<4095)ij=c[(c[Ee>>2]|0)+20>>2]|0;else ij=4095;c[Ne>>2]=ij;c[Oe>>2]=c[(c[De>>2]|0)+4>>2];c[Pe>>2]=(c[Fe>>2]|0)-(c[Oe>>2]|0);c[Qe>>2]=c[(c[Ee>>2]|0)+8>>2];c[Re>>2]=(c[Me>>2]|0)==3?3:4;c[Se>>2]=c[(c[De>>2]|0)+36>>2];c[Te>>2]=Sj(c[Fe>>2]|0,c[Qe>>2]|0,c[Me>>2]|0)|0;c[Ue>>2]=c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2];c[Ve>>2]=c[(c[De>>2]|0)+44>>2];c[We>>2]=(c[(c[Ee>>2]|0)+4>>2]|0)-1;c[Xe>>2]=(1<<c[We>>2])-1;c[Ye>>2]=0;c[Ze>>2]=0;c[_e>>2]=c[(c[De>>2]|0)+8>>2];c[$e>>2]=c[(c[De>>2]|0)+12>>2];c[af>>2]=(c[_e>>2]|0)+(c[$e>>2]|0);c[bf>>2]=(c[Oe>>2]|0)+(c[$e>>2]|0);if((c[Xe>>2]|0)>>>0>=(c[Pe>>2]|0)>>>0)jj=0;else jj=(c[Pe>>2]|0)-(c[Xe>>2]|0)|0;c[cf>>2]=jj;c[df>>2]=c[(c[De>>2]|0)+16>>2];c[ef>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2);c[ff>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2)+4;c[gf>>2]=(c[Pe>>2]|0)+8+1;c[jf>>2]=0;c[kf>>2]=1<<c[(c[Ee>>2]|0)+12>>2];c[lf>>2]=(c[Le>>2]|0)-1;c[mf>>2]=3+(c[Je>>2]|0);c[nf>>2]=c[Je>>2];while(1){if((c[nf>>2]|0)>>>0>=(c[mf>>2]|0)>>>0){dj=137;break;}_h=c[Ie>>2]|0;if((c[nf>>2]|0)==3)kj=(c[_h>>2]|0)-1|0;else kj=c[_h+(c[nf>>2]<<2)>>2]|0;c[of>>2]=kj;c[pf>>2]=(c[Pe>>2]|0)-(c[of>>2]|0);c[qf>>2]=0;if(((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[$e>>2]|0)|0)>>>0){_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0;if((_h|0)==(mm((c[Fe>>2]|0)+(0-(c[of>>2]|0))|0,c[Re>>2]|0)|0)){_h=Tj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[Fe>>2]|0)+(c[Re>>2]|0)+(0-(c[of>>2]|0))|0,c[Ge>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}else{c[rf>>2]=(c[_e>>2]|0)+(c[pf>>2]|0);if((c[He>>2]|0?(((c[$e>>2]|0)-1-(c[pf>>2]|0)|0)>>>0>=3?((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[df>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0,(_h|0)==(mm(c[rf>>2]|0,c[Re>>2]|0)|0)):0){_h=Uj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[rf>>2]|0)+(c[Re>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}if((c[qf>>2]|0)>>>0>(c[lf>>2]|0)>>>0?(c[lf>>2]=c[qf>>2],c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[nf>>2]|0)-(c[Je>>2]|0),c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[qf>>2],c[jf>>2]=(c[jf>>2]|0)+1,((c[qf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[qf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){dj=135;break;}c[nf>>2]=(c[nf>>2]|0)+1;}do{if((dj|0)==135){dj=0;c[Ce>>2]=c[jf>>2];}else if((dj|0)==137){dj=0;if(((c[Me>>2]|0)==3?(c[lf>>2]|0)>>>0<(c[Me>>2]|0)>>>0:0)?(c[sf>>2]=nm(c[De>>2]|0,c[Fe>>2]|0)|0,((c[sf>>2]|0)>>>0>(c[df>>2]|0)>>>0?((c[Pe>>2]|0)-(c[sf>>2]|0)|0)>>>0<262144:0)|0):0){if(c[He>>2]|0?(c[sf>>2]|0)>>>0<(c[$e>>2]|0)>>>0:0){c[vf>>2]=(c[_e>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Uj(c[Fe>>2]|0,c[vf>>2]|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;}else{c[uf>>2]=(c[Oe>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Tj(c[Fe>>2]|0,c[uf>>2]|0,c[Ge>>2]|0)|0;}if((c[tf>>2]|0)>>>0>=(c[Me>>2]|0)>>>0?(c[lf>>2]=c[tf>>2],c[c[Ke>>2]>>2]=(c[Pe>>2]|0)-(c[sf>>2]|0)+2,c[(c[Ke>>2]|0)+4>>2]=c[tf>>2],c[jf>>2]=1,((c[tf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[tf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){c[(c[De>>2]|0)+24>>2]=(c[Pe>>2]|0)+1;c[Ce>>2]=1;break;}}c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2]=c[Pe>>2];while(1){_h=c[kf>>2]|0;c[kf>>2]=_h+-1;if(!_h)break;if((c[Ue>>2]|0)>>>0<=(c[df>>2]|0)>>>0)break;c[wf>>2]=(c[Ve>>2]|0)+((c[Ue>>2]&c[Xe>>2])<<1<<2);c[xf>>2]=(c[Ye>>2]|0)>>>0<(c[Ze>>2]|0)>>>0?c[Ye>>2]|0:c[Ze>>2]|0;if(c[He>>2]|0?((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0<(c[$e>>2]|0)>>>0:0){c[yf>>2]=(c[_e>>2]|0)+(c[Ue>>2]|0);_h=Uj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;if(((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0>=(c[$e>>2]|0)>>>0)c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);}else{c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);_h=Tj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;}if((c[xf>>2]|0)>>>0>(c[lf>>2]|0)>>>0){if((c[xf>>2]|0)>>>0>((c[gf>>2]|0)-(c[Ue>>2]|0)|0)>>>0)c[gf>>2]=(c[Ue>>2]|0)+(c[xf>>2]|0);c[lf>>2]=c[xf>>2];c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[Pe>>2]|0)-(c[Ue>>2]|0)+2;c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[xf>>2];c[jf>>2]=(c[jf>>2]|0)+1;if((c[xf>>2]|0)>>>0>4096)break;if(((c[Fe>>2]|0)+(c[xf>>2]|0)|0)==(c[Ge>>2]|0))break;}_h=c[Ue>>2]|0;if((d[(c[yf>>2]|0)+(c[xf>>2]|0)>>0]|0|0)<(d[(c[Fe>>2]|0)+(c[xf>>2]|0)>>0]|0|0)){c[c[ef>>2]>>2]=_h;c[Ye>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=162;break;}c[ef>>2]=(c[wf>>2]|0)+4;c[Ue>>2]=c[(c[wf>>2]|0)+4>>2];}else{c[c[ff>>2]>>2]=_h;c[Ze>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=165;break;}c[ff>>2]=c[wf>>2];c[Ue>>2]=c[c[wf>>2]>>2];}}if((dj|0)==162){dj=0;c[ef>>2]=hf;}else if((dj|0)==165){dj=0;c[ff>>2]=hf;}c[c[ff>>2]>>2]=0;c[c[ef>>2]>>2]=0;c[(c[De>>2]|0)+24>>2]=(c[gf>>2]|0)-8;c[Ce>>2]=c[jf>>2];}}while(0);c[Ah>>2]=c[Ce>>2];break a;break;}default:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Af>>2]=c[Bh>>2];c[Bf>>2]=_h;c[Cf>>2]=Qh;c[Df>>2]=Ph;c[Ef>>2]=Zi;c[Ff>>2]=_i;c[Gf>>2]=Uh;c[Hf>>2]=Zh;c[If>>2]=aj;c[Jf>>2]=4;if((c[(c[Bf>>2]|0)+20>>2]|0)>>>0<4095)lj=c[(c[Bf>>2]|0)+20>>2]|0;else lj=4095;c[Kf>>2]=lj;c[Lf>>2]=c[(c[Af>>2]|0)+4>>2];c[Mf>>2]=(c[Cf>>2]|0)-(c[Lf>>2]|0);c[Nf>>2]=c[(c[Bf>>2]|0)+8>>2];c[Of>>2]=(c[Jf>>2]|0)==3?3:4;c[Pf>>2]=c[(c[Af>>2]|0)+36>>2];c[Qf>>2]=Sj(c[Cf>>2]|0,c[Nf>>2]|0,c[Jf>>2]|0)|0;c[Rf>>2]=c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2];c[Sf>>2]=c[(c[Af>>2]|0)+44>>2];c[Tf>>2]=(c[(c[Bf>>2]|0)+4>>2]|0)-1;c[Uf>>2]=(1<<c[Tf>>2])-1;c[Vf>>2]=0;c[Wf>>2]=0;c[Xf>>2]=c[(c[Af>>2]|0)+8>>2];c[Yf>>2]=c[(c[Af>>2]|0)+12>>2];c[Zf>>2]=(c[Xf>>2]|0)+(c[Yf>>2]|0);c[_f>>2]=(c[Lf>>2]|0)+(c[Yf>>2]|0);if((c[Uf>>2]|0)>>>0>=(c[Mf>>2]|0)>>>0)mj=0;else mj=(c[Mf>>2]|0)-(c[Uf>>2]|0)|0;c[$f>>2]=mj;c[ag>>2]=c[(c[Af>>2]|0)+16>>2];c[bg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2);c[cg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2)+4;c[dg>>2]=(c[Mf>>2]|0)+8+1;c[fg>>2]=0;c[gg>>2]=1<<c[(c[Bf>>2]|0)+12>>2];c[hg>>2]=(c[If>>2]|0)-1;c[ig>>2]=3+(c[Gf>>2]|0);c[jg>>2]=c[Gf>>2];while(1){if((c[jg>>2]|0)>>>0>=(c[ig>>2]|0)>>>0){dj=84;break;}aj=c[Ff>>2]|0;if((c[jg>>2]|0)==3)nj=(c[aj>>2]|0)-1|0;else nj=c[aj+(c[jg>>2]<<2)>>2]|0;c[kg>>2]=nj;c[lg>>2]=(c[Mf>>2]|0)-(c[kg>>2]|0);c[mg>>2]=0;if(((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[Yf>>2]|0)|0)>>>0){aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0;if((aj|0)==(mm((c[Cf>>2]|0)+(0-(c[kg>>2]|0))|0,c[Of>>2]|0)|0)){aj=Tj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[Cf>>2]|0)+(c[Of>>2]|0)+(0-(c[kg>>2]|0))|0,c[Df>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}else{c[ng>>2]=(c[Xf>>2]|0)+(c[lg>>2]|0);if((c[Ef>>2]|0?(((c[Yf>>2]|0)-1-(c[lg>>2]|0)|0)>>>0>=3?((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[ag>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0,(aj|0)==(mm(c[ng>>2]|0,c[Of>>2]|0)|0)):0){aj=Uj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[ng>>2]|0)+(c[Of>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}if((c[mg>>2]|0)>>>0>(c[hg>>2]|0)>>>0?(c[hg>>2]=c[mg>>2],c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[jg>>2]|0)-(c[Gf>>2]|0),c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[mg>>2],c[fg>>2]=(c[fg>>2]|0)+1,((c[mg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[mg>>2]|0)|0)==(c[Df>>2]|0))|0):0){dj=82;break;}c[jg>>2]=(c[jg>>2]|0)+1;}do{if((dj|0)==82){dj=0;c[zf>>2]=c[fg>>2];}else if((dj|0)==84){dj=0;if(((c[Jf>>2]|0)==3?(c[hg>>2]|0)>>>0<(c[Jf>>2]|0)>>>0:0)?(c[og>>2]=nm(c[Af>>2]|0,c[Cf>>2]|0)|0,((c[og>>2]|0)>>>0>(c[ag>>2]|0)>>>0?((c[Mf>>2]|0)-(c[og>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ef>>2]|0?(c[og>>2]|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[rg>>2]=(c[Xf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Uj(c[Cf>>2]|0,c[rg>>2]|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;}else{c[qg>>2]=(c[Lf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Tj(c[Cf>>2]|0,c[qg>>2]|0,c[Df>>2]|0)|0;}if((c[pg>>2]|0)>>>0>=(c[Jf>>2]|0)>>>0?(c[hg>>2]=c[pg>>2],c[c[Hf>>2]>>2]=(c[Mf>>2]|0)-(c[og>>2]|0)+2,c[(c[Hf>>2]|0)+4>>2]=c[pg>>2],c[fg>>2]=1,((c[pg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[pg>>2]|0)|0)==(c[Df>>2]|0))|0):0){c[(c[Af>>2]|0)+24>>2]=(c[Mf>>2]|0)+1;c[zf>>2]=1;break;}}c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2]=c[Mf>>2];while(1){aj=c[gg>>2]|0;c[gg>>2]=aj+-1;if(!aj)break;if((c[Rf>>2]|0)>>>0<=(c[ag>>2]|0)>>>0)break;c[sg>>2]=(c[Sf>>2]|0)+((c[Rf>>2]&c[Uf>>2])<<1<<2);c[tg>>2]=(c[Vf>>2]|0)>>>0<(c[Wf>>2]|0)>>>0?c[Vf>>2]|0:c[Wf>>2]|0;if(c[Ef>>2]|0?((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[ug>>2]=(c[Xf>>2]|0)+(c[Rf>>2]|0);aj=Uj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;if(((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0>=(c[Yf>>2]|0)>>>0)c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);}else{c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);aj=Tj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;}if((c[tg>>2]|0)>>>0>(c[hg>>2]|0)>>>0){if((c[tg>>2]|0)>>>0>((c[dg>>2]|0)-(c[Rf>>2]|0)|0)>>>0)c[dg>>2]=(c[Rf>>2]|0)+(c[tg>>2]|0);c[hg>>2]=c[tg>>2];c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[Mf>>2]|0)-(c[Rf>>2]|0)+2;c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[tg>>2];c[fg>>2]=(c[fg>>2]|0)+1;if((c[tg>>2]|0)>>>0>4096)break;if(((c[Cf>>2]|0)+(c[tg>>2]|0)|0)==(c[Df>>2]|0))break;}aj=c[Rf>>2]|0;if((d[(c[ug>>2]|0)+(c[tg>>2]|0)>>0]|0|0)<(d[(c[Cf>>2]|0)+(c[tg>>2]|0)>>0]|0|0)){c[c[bg>>2]>>2]=aj;c[Vf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=109;break;}c[bg>>2]=(c[sg>>2]|0)+4;c[Rf>>2]=c[(c[sg>>2]|0)+4>>2];}else{c[c[cg>>2]>>2]=aj;c[Wf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=112;break;}c[cg>>2]=c[sg>>2];c[Rf>>2]=c[c[sg>>2]>>2];}}if((dj|0)==109){dj=0;c[bg>>2]=eg;}else if((dj|0)==112){dj=0;c[cg>>2]=eg;}c[c[cg>>2]>>2]=0;c[c[bg>>2]>>2]=0;c[(c[Af>>2]|0)+24>>2]=(c[dg>>2]|0)-8;c[zf>>2]=c[fg>>2];}}while(0);c[Ah>>2]=c[zf>>2];break a;}}}}while(0);c[ki>>2]=c[Ah>>2];if(!(c[ki>>2]|0)){c[Vh>>2]=(c[Vh>>2]|0)+1;continue;}c[li>>2]=0;while(1){if((c[li>>2]|0)>>>0>=3)break;c[(c[bi>>2]|0)+16+(c[li>>2]<<2)>>2]=c[(c[Nh>>2]|0)+(c[li>>2]<<2)>>2];c[li>>2]=(c[li>>2]|0)+1;}c[(c[bi>>2]|0)+8>>2]=1;c[(c[bi>>2]|0)+12>>2]=c[ii>>2];c[mi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)+4>>2];do{if((c[mi>>2]|0)>>>0<=(c[$h>>2]|0)>>>0){c[ni>>2]=om(di,c[Wh>>2]|0,c[ii>>2]|0,c[Th>>2]|0)|0;c[oi>>2]=0;while(1){if((c[oi>>2]|0)>>>0>=(c[ai>>2]|0)>>>0)break;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=1073741824;c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=0;while(1){if((c[pi>>2]|0)>>>0>=(c[ki>>2]|0)>>>0)break;c[qi>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)>>2];c[ri>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)+4>>2];pm(si,c[Nh>>2]|0,c[qi>>2]|0,c[ji>>2]|0);while(1){if((c[oi>>2]|0)>>>0>(c[ri>>2]|0)>>>0)break;aj=c[ni>>2]|0;Zh=c[oi>>2]|0;Uh=c[Th>>2]|0;_i=c[Rh>>2]|0;c[yd>>2]=c[qi>>2];c[zd>>2]=Zh;c[Ad>>2]=Uh;c[Bd>>2]=_i;c[Dd>>2]=qm((c[yd>>2]|0)+1|0)|0;c[Ed>>2]=(c[zd>>2]|0)-3;if(c[(c[Ad>>2]|0)+56>>2]|0){_i=(qm((c[Ed>>2]|0)+1|0)|0)+16|0;c[xd>>2]=_i+(c[Dd>>2]|0);}else{_i=(c[Dd>>2]|0)+(c[(c[Ad>>2]|0)+52>>2]|0)|0;c[Cd>>2]=_i-(qm((c[(c[(c[Ad>>2]|0)+12>>2]|0)+(c[Dd>>2]<<2)>>2]|0)+1|0)|0);if((c[Bd>>2]|0)<2&(c[Dd>>2]|0)>>>0>=20)c[Cd>>2]=(c[Cd>>2]|0)+((c[Dd>>2]|0)-19<<1);c[Fd>>2]=rm(c[Ed>>2]|0)|0;_i=(c[5840+(c[Fd>>2]<<2)>>2]|0)+(c[(c[Ad>>2]|0)+48>>2]|0)|0;Uh=_i-(qm((c[(c[(c[Ad>>2]|0)+8>>2]|0)+(c[Fd>>2]<<2)>>2]|0)+1|0)|0)|0;c[Cd>>2]=(c[Cd>>2]|0)+Uh;c[xd>>2]=c[Cd>>2];}c[ti>>2]=aj+(c[xd>>2]|0);c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=c[oi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+4>>2]=c[qi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+12>>2]=c[ii>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=c[ti>>2];aj=(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+16|0;c[aj>>2]=c[si>>2];c[aj+4>>2]=c[si+4>>2];c[aj+8>>2]=c[si+8>>2];c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=(c[pi>>2]|0)+1;}c[fi>>2]=(c[oi>>2]|0)-1;c[ei>>2]=1;b:while(1){if((c[ei>>2]|0)>>>0>(c[fi>>2]|0)>>>0){dj=504;break;}c[ui>>2]=(c[Vh>>2]|0)+(c[ei>>2]|0);if((c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+8>>2]|0)==1)oj=(c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+12>>2]|0)+1|0;else oj=1;c[vi>>2]=oj;if((c[ei>>2]|0)>>>0>(c[vi>>2]|0)>>>0){aj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[vi>>2]|0)|0)*28|0)>>2]|0;c[wi>>2]=aj+(sm((c[ui>>2]|0)+(0-(c[vi>>2]|0))|0,c[vi>>2]|0,c[Th>>2]|0)|0);}else c[wi>>2]=tm(di,c[Wh>>2]|0,c[vi>>2]|0,c[Th>>2]|0)|0;if((c[wi>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0)){c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+4>>2]=0;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]=c[vi>>2];c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]=c[wi>>2];aj=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Uh=(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+16|0;c[aj>>2]=c[Uh>>2];c[aj+4>>2]=c[Uh+4>>2];c[aj+8>>2]=c[Uh+8>>2];}c:do{if((c[ui>>2]|0)>>>0<=(c[Yh>>2]|0)>>>0){if((c[ei>>2]|0)==(c[fi>>2]|0)){dj=504;break b;}if((c[Rh>>2]|0)==0?(c[(c[bi>>2]|0)+(((c[ei>>2]|0)+1|0)*28|0)>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0):0)break;c[xi>>2]=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)!=1&1;if((c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)==1)pj=c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]|0;else pj=0;c[yi>>2]=pj;if((c[ei>>2]|0)>>>0>(c[yi>>2]|0)>>>0)qj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[yi>>2]|0)|0)*28|0)>>2]|0;else qj=0;c[zi>>2]=qj;Uh=c[zi>>2]|0;c[Ai>>2]=Uh+(um((c[ui>>2]|0)+(0-(c[yi>>2]|0))|0,c[yi>>2]|0,c[Th>>2]|0)|0);Uh=c[Oh>>2]|0;aj=c[ui>>2]|0;_i=c[Xh>>2]|0;Zh=c[Sh>>2]|0;Zi=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Ph=c[xi>>2]|0;Qh=c[ci>>2]|0;_h=c[ai>>2]|0;c[nd>>2]=c[Lh>>2];c[od>>2]=Uh;c[pd>>2]=aj;c[qd>>2]=_i;c[rd>>2]=Zh;c[sd>>2]=Zi;c[td>>2]=Ph;c[ud>>2]=Qh;c[vd>>2]=_h;c[wd>>2]=c[(c[od>>2]|0)+16>>2];d:do{if((c[pd>>2]|0)>>>0<((c[(c[nd>>2]|0)+4>>2]|0)+(c[(c[nd>>2]|0)+24>>2]|0)|0)>>>0)c[md>>2]=0;else{_h=c[od>>2]|0;Qh=c[pd>>2]|0;Ph=c[qd>>2]|0;Zi=c[wd>>2]|0;Zh=c[rd>>2]|0;c[dd>>2]=c[nd>>2];c[ed>>2]=_h;c[fd>>2]=Qh;c[gd>>2]=Ph;c[hd>>2]=Zi;c[id>>2]=Zh;c[jd>>2]=c[(c[dd>>2]|0)+4>>2];c[kd>>2]=(c[fd>>2]|0)-(c[jd>>2]|0);c[ld>>2]=c[(c[dd>>2]|0)+24>>2];while(1){if((c[ld>>2]|0)>>>0>=(c[kd>>2]|0)>>>0)break;Zh=Rj(c[dd>>2]|0,c[ed>>2]|0,(c[jd>>2]|0)+(c[ld>>2]|0)|0,c[gd>>2]|0,c[hd>>2]|0,c[id>>2]|0)|0;c[ld>>2]=(c[ld>>2]|0)+Zh;}c[(c[dd>>2]|0)+24>>2]=c[kd>>2];switch(c[wd>>2]|0){case 3:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[ic>>2]=c[nd>>2];c[jc>>2]=Zh;c[kc>>2]=Zi;c[lc>>2]=Ph;c[mc>>2]=Qh;c[nc>>2]=_h;c[oc>>2]=_i;c[pc>>2]=aj;c[qc>>2]=Uh;c[rc>>2]=3;if((c[(c[jc>>2]|0)+20>>2]|0)>>>0<4095)rj=c[(c[jc>>2]|0)+20>>2]|0;else rj=4095;c[sc>>2]=rj;c[tc>>2]=c[(c[ic>>2]|0)+4>>2];c[uc>>2]=(c[kc>>2]|0)-(c[tc>>2]|0);c[vc>>2]=c[(c[jc>>2]|0)+8>>2];c[wc>>2]=(c[rc>>2]|0)==3?3:4;c[xc>>2]=c[(c[ic>>2]|0)+36>>2];c[yc>>2]=Sj(c[kc>>2]|0,c[vc>>2]|0,c[rc>>2]|0)|0;c[zc>>2]=c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2];c[Ac>>2]=c[(c[ic>>2]|0)+44>>2];c[Bc>>2]=(c[(c[jc>>2]|0)+4>>2]|0)-1;c[Cc>>2]=(1<<c[Bc>>2])-1;c[Dc>>2]=0;c[Ec>>2]=0;c[Fc>>2]=c[(c[ic>>2]|0)+8>>2];c[Gc>>2]=c[(c[ic>>2]|0)+12>>2];c[Hc>>2]=(c[Fc>>2]|0)+(c[Gc>>2]|0);c[Ic>>2]=(c[tc>>2]|0)+(c[Gc>>2]|0);if((c[Cc>>2]|0)>>>0>=(c[uc>>2]|0)>>>0)sj=0;else sj=(c[uc>>2]|0)-(c[Cc>>2]|0)|0;c[Jc>>2]=sj;c[Kc>>2]=c[(c[ic>>2]|0)+16>>2];c[Lc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2);c[Mc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2)+4;c[Nc>>2]=(c[uc>>2]|0)+8+1;c[Pc>>2]=0;c[Qc>>2]=1<<c[(c[jc>>2]|0)+12>>2];c[Rc>>2]=(c[qc>>2]|0)-1;c[Sc>>2]=3+(c[oc>>2]|0);c[Tc>>2]=c[oc>>2];while(1){if((c[Tc>>2]|0)>>>0>=(c[Sc>>2]|0)>>>0){dj=287;break;}Uh=c[nc>>2]|0;if((c[Tc>>2]|0)==3)tj=(c[Uh>>2]|0)-1|0;else tj=c[Uh+(c[Tc>>2]<<2)>>2]|0;c[Uc>>2]=tj;c[Vc>>2]=(c[uc>>2]|0)-(c[Uc>>2]|0);c[Wc>>2]=0;do{if(((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Gc>>2]|0)|0)>>>0){Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm((c[kc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[wc>>2]|0)|0))break;Uh=Tj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[kc>>2]|0)+(c[wc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[lc>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}else{c[Xc>>2]=(c[Fc>>2]|0)+(c[Vc>>2]|0);if(!(c[mc>>2]|0))break;if(!((((c[Gc>>2]|0)-1-(c[Vc>>2]|0)|0)>>>0>=3?((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Kc>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm(c[Xc>>2]|0,c[wc>>2]|0)|0))break;Uh=Uj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[Xc>>2]|0)+(c[wc>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}}while(0);if((c[Wc>>2]|0)>>>0>(c[Rc>>2]|0)>>>0?(c[Rc>>2]=c[Wc>>2],c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[Tc>>2]|0)-(c[oc>>2]|0),c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[Wc>>2],c[Pc>>2]=(c[Pc>>2]|0)+1,((c[Wc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Wc>>2]|0)|0)==(c[lc>>2]|0))|0):0){dj=285;break;}c[Tc>>2]=(c[Tc>>2]|0)+1;}e:do{if((dj|0)==285){dj=0;c[hc>>2]=c[Pc>>2];}else if((dj|0)==287){dj=0;do{if((c[rc>>2]|0)==3){if((c[Rc>>2]|0)>>>0>=(c[rc>>2]|0)>>>0)break;c[Yc>>2]=nm(c[ic>>2]|0,c[kc>>2]|0)|0;if(!(((c[Yc>>2]|0)>>>0>(c[Kc>>2]|0)>>>0?((c[uc>>2]|0)-(c[Yc>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[mc>>2]|0){if((c[Yc>>2]|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=292;break;}c[$c>>2]=(c[Fc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Uj(c[kc>>2]|0,c[$c>>2]|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;}else dj=292;}while(0);if((dj|0)==292){dj=0;c[_c>>2]=(c[tc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Tj(c[kc>>2]|0,c[_c>>2]|0,c[lc>>2]|0)|0;}if((c[Zc>>2]|0)>>>0<(c[rc>>2]|0)>>>0)break;c[Rc>>2]=c[Zc>>2];c[c[pc>>2]>>2]=(c[uc>>2]|0)-(c[Yc>>2]|0)+2;c[(c[pc>>2]|0)+4>>2]=c[Zc>>2];c[Pc>>2]=1;if(!(((c[Zc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Zc>>2]|0)|0)==(c[lc>>2]|0))|0))break;c[(c[ic>>2]|0)+24>>2]=(c[uc>>2]|0)+1;c[hc>>2]=1;break e;}}while(0);c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2]=c[uc>>2];while(1){Uh=c[Qc>>2]|0;c[Qc>>2]=Uh+-1;if(!Uh)break;if((c[zc>>2]|0)>>>0<=(c[Kc>>2]|0)>>>0)break;c[ad>>2]=(c[Ac>>2]|0)+((c[zc>>2]&c[Cc>>2])<<1<<2);c[bd>>2]=(c[Dc>>2]|0)>>>0<(c[Ec>>2]|0)>>>0?c[Dc>>2]|0:c[Ec>>2]|0;do{if(c[mc>>2]|0){if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=302;break;}c[cd>>2]=(c[Fc>>2]|0)+(c[zc>>2]|0);Uh=Uj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0<(c[Gc>>2]|0)>>>0)break;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);}else dj=302;}while(0);if((dj|0)==302){dj=0;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);Uh=Tj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;}if((c[bd>>2]|0)>>>0>(c[Rc>>2]|0)>>>0){if((c[bd>>2]|0)>>>0>((c[Nc>>2]|0)-(c[zc>>2]|0)|0)>>>0)c[Nc>>2]=(c[zc>>2]|0)+(c[bd>>2]|0);c[Rc>>2]=c[bd>>2];c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[uc>>2]|0)-(c[zc>>2]|0)+2;c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[bd>>2];c[Pc>>2]=(c[Pc>>2]|0)+1;if((c[bd>>2]|0)>>>0>4096)break;if(((c[kc>>2]|0)+(c[bd>>2]|0)|0)==(c[lc>>2]|0))break;}Uh=c[zc>>2]|0;if((d[(c[cd>>2]|0)+(c[bd>>2]|0)>>0]|0|0)<(d[(c[kc>>2]|0)+(c[bd>>2]|0)>>0]|0|0)){c[c[Lc>>2]>>2]=Uh;c[Dc>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=312;break;}c[Lc>>2]=(c[ad>>2]|0)+4;c[zc>>2]=c[(c[ad>>2]|0)+4>>2];}else{c[c[Mc>>2]>>2]=Uh;c[Ec>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=315;break;}c[Mc>>2]=c[ad>>2];c[zc>>2]=c[c[ad>>2]>>2];}}if((dj|0)==312){dj=0;c[Lc>>2]=Oc;}else if((dj|0)==315){dj=0;c[Mc>>2]=Oc;}c[c[Mc>>2]>>2]=0;c[c[Lc>>2]>>2]=0;c[(c[ic>>2]|0)+24>>2]=(c[Nc>>2]|0)-8;c[hc>>2]=c[Pc>>2];}}while(0);c[md>>2]=c[hc>>2];break d;break;}case 7:case 6:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[u>>2]=c[nd>>2];c[v>>2]=Uh;c[w>>2]=aj;c[x>>2]=_i;c[y>>2]=_h;c[z>>2]=Qh;c[A>>2]=Ph;c[B>>2]=Zi;c[C>>2]=Zh;c[D>>2]=6;if((c[(c[v>>2]|0)+20>>2]|0)>>>0<4095)uj=c[(c[v>>2]|0)+20>>2]|0;else uj=4095;c[E>>2]=uj;c[F>>2]=c[(c[u>>2]|0)+4>>2];c[G>>2]=(c[w>>2]|0)-(c[F>>2]|0);c[H>>2]=c[(c[v>>2]|0)+8>>2];c[I>>2]=(c[D>>2]|0)==3?3:4;c[J>>2]=c[(c[u>>2]|0)+36>>2];c[K>>2]=Sj(c[w>>2]|0,c[H>>2]|0,c[D>>2]|0)|0;c[L>>2]=c[(c[J>>2]|0)+(c[K>>2]<<2)>>2];c[M>>2]=c[(c[u>>2]|0)+44>>2];c[N>>2]=(c[(c[v>>2]|0)+4>>2]|0)-1;c[O>>2]=(1<<c[N>>2])-1;c[P>>2]=0;c[Q>>2]=0;c[R>>2]=c[(c[u>>2]|0)+8>>2];c[S>>2]=c[(c[u>>2]|0)+12>>2];c[T>>2]=(c[R>>2]|0)+(c[S>>2]|0);c[U>>2]=(c[F>>2]|0)+(c[S>>2]|0);if((c[O>>2]|0)>>>0>=(c[G>>2]|0)>>>0)vj=0;else vj=(c[G>>2]|0)-(c[O>>2]|0)|0;c[V>>2]=vj;c[W>>2]=c[(c[u>>2]|0)+16>>2];c[X>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2);c[Y>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2)+4;c[Z>>2]=(c[G>>2]|0)+8+1;c[$>>2]=0;c[aa>>2]=1<<c[(c[v>>2]|0)+12>>2];c[ba>>2]=(c[C>>2]|0)-1;c[ca>>2]=3+(c[A>>2]|0);c[da>>2]=c[A>>2];while(1){if((c[da>>2]|0)>>>0>=(c[ca>>2]|0)>>>0){dj=446;break;}Zh=c[z>>2]|0;if((c[da>>2]|0)==3)wj=(c[Zh>>2]|0)-1|0;else wj=c[Zh+(c[da>>2]<<2)>>2]|0;c[ea>>2]=wj;c[fa>>2]=(c[G>>2]|0)-(c[ea>>2]|0);c[ga>>2]=0;do{if(((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[S>>2]|0)|0)>>>0){Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm((c[w>>2]|0)+(0-(c[ea>>2]|0))|0,c[I>>2]|0)|0))break;Zh=Tj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[w>>2]|0)+(c[I>>2]|0)+(0-(c[ea>>2]|0))|0,c[x>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}else{c[ha>>2]=(c[R>>2]|0)+(c[fa>>2]|0);if(!(c[y>>2]|0))break;if(!((((c[S>>2]|0)-1-(c[fa>>2]|0)|0)>>>0>=3?((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[W>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm(c[ha>>2]|0,c[I>>2]|0)|0))break;Zh=Uj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[ha>>2]|0)+(c[I>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}}while(0);if((c[ga>>2]|0)>>>0>(c[ba>>2]|0)>>>0?(c[ba>>2]=c[ga>>2],c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[da>>2]|0)-(c[A>>2]|0),c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[ga>>2],c[$>>2]=(c[$>>2]|0)+1,((c[ga>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ga>>2]|0)|0)==(c[x>>2]|0))|0):0){dj=444;break;}c[da>>2]=(c[da>>2]|0)+1;}f:do{if((dj|0)==444){dj=0;c[t>>2]=c[$>>2];}else if((dj|0)==446){dj=0;do{if((c[D>>2]|0)==3){if((c[ba>>2]|0)>>>0>=(c[D>>2]|0)>>>0)break;c[ia>>2]=nm(c[u>>2]|0,c[w>>2]|0)|0;if(!(((c[ia>>2]|0)>>>0>(c[W>>2]|0)>>>0?((c[G>>2]|0)-(c[ia>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[y>>2]|0){if((c[ia>>2]|0)>>>0>=(c[S>>2]|0)>>>0){dj=451;break;}c[la>>2]=(c[R>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Uj(c[w>>2]|0,c[la>>2]|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;}else dj=451;}while(0);if((dj|0)==451){dj=0;c[ka>>2]=(c[F>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Tj(c[w>>2]|0,c[ka>>2]|0,c[x>>2]|0)|0;}if((c[ja>>2]|0)>>>0<(c[D>>2]|0)>>>0)break;c[ba>>2]=c[ja>>2];c[c[B>>2]>>2]=(c[G>>2]|0)-(c[ia>>2]|0)+2;c[(c[B>>2]|0)+4>>2]=c[ja>>2];c[$>>2]=1;if(!(((c[ja>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ja>>2]|0)|0)==(c[x>>2]|0))|0))break;c[(c[u>>2]|0)+24>>2]=(c[G>>2]|0)+1;c[t>>2]=1;break f;}}while(0);c[(c[J>>2]|0)+(c[K>>2]<<2)>>2]=c[G>>2];while(1){Zh=c[aa>>2]|0;c[aa>>2]=Zh+-1;if(!Zh)break;if((c[L>>2]|0)>>>0<=(c[W>>2]|0)>>>0)break;c[ma>>2]=(c[M>>2]|0)+((c[L>>2]&c[O>>2])<<1<<2);c[na>>2]=(c[P>>2]|0)>>>0<(c[Q>>2]|0)>>>0?c[P>>2]|0:c[Q>>2]|0;do{if(c[y>>2]|0){if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0>=(c[S>>2]|0)>>>0){dj=461;break;}c[oa>>2]=(c[R>>2]|0)+(c[L>>2]|0);Zh=Uj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0<(c[S>>2]|0)>>>0)break;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);}else dj=461;}while(0);if((dj|0)==461){dj=0;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);Zh=Tj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;}if((c[na>>2]|0)>>>0>(c[ba>>2]|0)>>>0){if((c[na>>2]|0)>>>0>((c[Z>>2]|0)-(c[L>>2]|0)|0)>>>0)c[Z>>2]=(c[L>>2]|0)+(c[na>>2]|0);c[ba>>2]=c[na>>2];c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[G>>2]|0)-(c[L>>2]|0)+2;c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[na>>2];c[$>>2]=(c[$>>2]|0)+1;if((c[na>>2]|0)>>>0>4096)break;if(((c[w>>2]|0)+(c[na>>2]|0)|0)==(c[x>>2]|0))break;}Zh=c[L>>2]|0;if((d[(c[oa>>2]|0)+(c[na>>2]|0)>>0]|0|0)<(d[(c[w>>2]|0)+(c[na>>2]|0)>>0]|0|0)){c[c[X>>2]>>2]=Zh;c[P>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=471;break;}c[X>>2]=(c[ma>>2]|0)+4;c[L>>2]=c[(c[ma>>2]|0)+4>>2];}else{c[c[Y>>2]>>2]=Zh;c[Q>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=474;break;}c[Y>>2]=c[ma>>2];c[L>>2]=c[c[ma>>2]>>2];}}if((dj|0)==471){dj=0;c[X>>2]=_;}else if((dj|0)==474){dj=0;c[Y>>2]=_;}c[c[Y>>2]>>2]=0;c[c[X>>2]>>2]=0;c[(c[u>>2]|0)+24>>2]=(c[Z>>2]|0)-8;c[t>>2]=c[$>>2];}}while(0);c[md>>2]=c[t>>2];break d;break;}case 5:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[qa>>2]=c[nd>>2];c[ra>>2]=Zh;c[sa>>2]=Zi;c[ta>>2]=Ph;c[ua>>2]=Qh;c[va>>2]=_h;c[wa>>2]=_i;c[xa>>2]=aj;c[ya>>2]=Uh;c[za>>2]=5;if((c[(c[ra>>2]|0)+20>>2]|0)>>>0<4095)xj=c[(c[ra>>2]|0)+20>>2]|0;else xj=4095;c[Aa>>2]=xj;c[Ba>>2]=c[(c[qa>>2]|0)+4>>2];c[Ca>>2]=(c[sa>>2]|0)-(c[Ba>>2]|0);c[Da>>2]=c[(c[ra>>2]|0)+8>>2];c[Ea>>2]=(c[za>>2]|0)==3?3:4;c[Fa>>2]=c[(c[qa>>2]|0)+36>>2];c[Ga>>2]=Sj(c[sa>>2]|0,c[Da>>2]|0,c[za>>2]|0)|0;c[Ha>>2]=c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2];c[Ia>>2]=c[(c[qa>>2]|0)+44>>2];c[Ja>>2]=(c[(c[ra>>2]|0)+4>>2]|0)-1;c[Ka>>2]=(1<<c[Ja>>2])-1;c[La>>2]=0;c[Ma>>2]=0;c[Na>>2]=c[(c[qa>>2]|0)+8>>2];c[Oa>>2]=c[(c[qa>>2]|0)+12>>2];c[Pa>>2]=(c[Na>>2]|0)+(c[Oa>>2]|0);c[Qa>>2]=(c[Ba>>2]|0)+(c[Oa>>2]|0);if((c[Ka>>2]|0)>>>0>=(c[Ca>>2]|0)>>>0)yj=0;else yj=(c[Ca>>2]|0)-(c[Ka>>2]|0)|0;c[Ra>>2]=yj;c[Sa>>2]=c[(c[qa>>2]|0)+16>>2];c[Ta>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2);c[Ua>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2)+4;c[Va>>2]=(c[Ca>>2]|0)+8+1;c[Xa>>2]=0;c[Ya>>2]=1<<c[(c[ra>>2]|0)+12>>2];c[Za>>2]=(c[ya>>2]|0)-1;c[_a>>2]=3+(c[wa>>2]|0);c[$a>>2]=c[wa>>2];while(1){if((c[$a>>2]|0)>>>0>=(c[_a>>2]|0)>>>0){dj=393;break;}Uh=c[va>>2]|0;if((c[$a>>2]|0)==3)zj=(c[Uh>>2]|0)-1|0;else zj=c[Uh+(c[$a>>2]<<2)>>2]|0;c[ab>>2]=zj;c[bb>>2]=(c[Ca>>2]|0)-(c[ab>>2]|0);c[cb>>2]=0;do{if(((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Oa>>2]|0)|0)>>>0){Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm((c[sa>>2]|0)+(0-(c[ab>>2]|0))|0,c[Ea>>2]|0)|0))break;Uh=Tj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[sa>>2]|0)+(c[Ea>>2]|0)+(0-(c[ab>>2]|0))|0,c[ta>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}else{c[db>>2]=(c[Na>>2]|0)+(c[bb>>2]|0);if(!(c[ua>>2]|0))break;if(!((((c[Oa>>2]|0)-1-(c[bb>>2]|0)|0)>>>0>=3?((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Sa>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm(c[db>>2]|0,c[Ea>>2]|0)|0))break;Uh=Uj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[db>>2]|0)+(c[Ea>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}}while(0);if((c[cb>>2]|0)>>>0>(c[Za>>2]|0)>>>0?(c[Za>>2]=c[cb>>2],c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[$a>>2]|0)-(c[wa>>2]|0),c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[cb>>2],c[Xa>>2]=(c[Xa>>2]|0)+1,((c[cb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[cb>>2]|0)|0)==(c[ta>>2]|0))|0):0){dj=391;break;}c[$a>>2]=(c[$a>>2]|0)+1;}g:do{if((dj|0)==391){dj=0;c[pa>>2]=c[Xa>>2];}else if((dj|0)==393){dj=0;do{if((c[za>>2]|0)==3){if((c[Za>>2]|0)>>>0>=(c[za>>2]|0)>>>0)break;c[eb>>2]=nm(c[qa>>2]|0,c[sa>>2]|0)|0;if(!(((c[eb>>2]|0)>>>0>(c[Sa>>2]|0)>>>0?((c[Ca>>2]|0)-(c[eb>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[ua>>2]|0){if((c[eb>>2]|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=398;break;}c[hb>>2]=(c[Na>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Uj(c[sa>>2]|0,c[hb>>2]|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;}else dj=398;}while(0);if((dj|0)==398){dj=0;c[gb>>2]=(c[Ba>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Tj(c[sa>>2]|0,c[gb>>2]|0,c[ta>>2]|0)|0;}if((c[fb>>2]|0)>>>0<(c[za>>2]|0)>>>0)break;c[Za>>2]=c[fb>>2];c[c[xa>>2]>>2]=(c[Ca>>2]|0)-(c[eb>>2]|0)+2;c[(c[xa>>2]|0)+4>>2]=c[fb>>2];c[Xa>>2]=1;if(!(((c[fb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[fb>>2]|0)|0)==(c[ta>>2]|0))|0))break;c[(c[qa>>2]|0)+24>>2]=(c[Ca>>2]|0)+1;c[pa>>2]=1;break g;}}while(0);c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2]=c[Ca>>2];while(1){Uh=c[Ya>>2]|0;c[Ya>>2]=Uh+-1;if(!Uh)break;if((c[Ha>>2]|0)>>>0<=(c[Sa>>2]|0)>>>0)break;c[ib>>2]=(c[Ia>>2]|0)+((c[Ha>>2]&c[Ka>>2])<<1<<2);c[jb>>2]=(c[La>>2]|0)>>>0<(c[Ma>>2]|0)>>>0?c[La>>2]|0:c[Ma>>2]|0;do{if(c[ua>>2]|0){if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=408;break;}c[kb>>2]=(c[Na>>2]|0)+(c[Ha>>2]|0);Uh=Uj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0<(c[Oa>>2]|0)>>>0)break;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);}else dj=408;}while(0);if((dj|0)==408){dj=0;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);Uh=Tj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;}if((c[jb>>2]|0)>>>0>(c[Za>>2]|0)>>>0){if((c[jb>>2]|0)>>>0>((c[Va>>2]|0)-(c[Ha>>2]|0)|0)>>>0)c[Va>>2]=(c[Ha>>2]|0)+(c[jb>>2]|0);c[Za>>2]=c[jb>>2];c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[Ca>>2]|0)-(c[Ha>>2]|0)+2;c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[jb>>2];c[Xa>>2]=(c[Xa>>2]|0)+1;if((c[jb>>2]|0)>>>0>4096)break;if(((c[sa>>2]|0)+(c[jb>>2]|0)|0)==(c[ta>>2]|0))break;}Uh=c[Ha>>2]|0;if((d[(c[kb>>2]|0)+(c[jb>>2]|0)>>0]|0|0)<(d[(c[sa>>2]|0)+(c[jb>>2]|0)>>0]|0|0)){c[c[Ta>>2]>>2]=Uh;c[La>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=418;break;}c[Ta>>2]=(c[ib>>2]|0)+4;c[Ha>>2]=c[(c[ib>>2]|0)+4>>2];}else{c[c[Ua>>2]>>2]=Uh;c[Ma>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=421;break;}c[Ua>>2]=c[ib>>2];c[Ha>>2]=c[c[ib>>2]>>2];}}if((dj|0)==418){dj=0;c[Ta>>2]=Wa;}else if((dj|0)==421){dj=0;c[Ua>>2]=Wa;}c[c[Ua>>2]>>2]=0;c[c[Ta>>2]>>2]=0;c[(c[qa>>2]|0)+24>>2]=(c[Va>>2]|0)-8;c[pa>>2]=c[Xa>>2];}}while(0);c[md>>2]=c[pa>>2];break d;break;}default:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[mb>>2]=c[nd>>2];c[nb>>2]=Uh;c[ob>>2]=aj;c[pb>>2]=_i;c[qb>>2]=_h;c[rb>>2]=Qh;c[sb>>2]=Ph;c[tb>>2]=Zi;c[ub>>2]=Zh;c[vb>>2]=4;if((c[(c[nb>>2]|0)+20>>2]|0)>>>0<4095)Aj=c[(c[nb>>2]|0)+20>>2]|0;else Aj=4095;c[wb>>2]=Aj;c[xb>>2]=c[(c[mb>>2]|0)+4>>2];c[yb>>2]=(c[ob>>2]|0)-(c[xb>>2]|0);c[zb>>2]=c[(c[nb>>2]|0)+8>>2];c[Ab>>2]=(c[vb>>2]|0)==3?3:4;c[Bb>>2]=c[(c[mb>>2]|0)+36>>2];c[Cb>>2]=Sj(c[ob>>2]|0,c[zb>>2]|0,c[vb>>2]|0)|0;c[Db>>2]=c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2];c[Eb>>2]=c[(c[mb>>2]|0)+44>>2];c[Fb>>2]=(c[(c[nb>>2]|0)+4>>2]|0)-1;c[Gb>>2]=(1<<c[Fb>>2])-1;c[Hb>>2]=0;c[Ib>>2]=0;c[Jb>>2]=c[(c[mb>>2]|0)+8>>2];c[Kb>>2]=c[(c[mb>>2]|0)+12>>2];c[Lb>>2]=(c[Jb>>2]|0)+(c[Kb>>2]|0);c[Mb>>2]=(c[xb>>2]|0)+(c[Kb>>2]|0);if((c[Gb>>2]|0)>>>0>=(c[yb>>2]|0)>>>0)Bj=0;else Bj=(c[yb>>2]|0)-(c[Gb>>2]|0)|0;c[Nb>>2]=Bj;c[Ob>>2]=c[(c[mb>>2]|0)+16>>2];c[Pb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2);c[Qb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2)+4;c[Rb>>2]=(c[yb>>2]|0)+8+1;c[Tb>>2]=0;c[Ub>>2]=1<<c[(c[nb>>2]|0)+12>>2];c[Vb>>2]=(c[ub>>2]|0)-1;c[Wb>>2]=3+(c[sb>>2]|0);c[Xb>>2]=c[sb>>2];while(1){if((c[Xb>>2]|0)>>>0>=(c[Wb>>2]|0)>>>0){dj=340;break;}Zh=c[rb>>2]|0;if((c[Xb>>2]|0)==3)Cj=(c[Zh>>2]|0)-1|0;else Cj=c[Zh+(c[Xb>>2]<<2)>>2]|0;c[Yb>>2]=Cj;c[Zb>>2]=(c[yb>>2]|0)-(c[Yb>>2]|0);c[_b>>2]=0;do{if(((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Kb>>2]|0)|0)>>>0){Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm((c[ob>>2]|0)+(0-(c[Yb>>2]|0))|0,c[Ab>>2]|0)|0))break;Zh=Tj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[ob>>2]|0)+(c[Ab>>2]|0)+(0-(c[Yb>>2]|0))|0,c[pb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}else{c[$b>>2]=(c[Jb>>2]|0)+(c[Zb>>2]|0);if(!(c[qb>>2]|0))break;if(!((((c[Kb>>2]|0)-1-(c[Zb>>2]|0)|0)>>>0>=3?((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Ob>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm(c[$b>>2]|0,c[Ab>>2]|0)|0))break;Zh=Uj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[$b>>2]|0)+(c[Ab>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}}while(0);if((c[_b>>2]|0)>>>0>(c[Vb>>2]|0)>>>0?(c[Vb>>2]=c[_b>>2],c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[Xb>>2]|0)-(c[sb>>2]|0),c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[_b>>2],c[Tb>>2]=(c[Tb>>2]|0)+1,((c[_b>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[_b>>2]|0)|0)==(c[pb>>2]|0))|0):0){dj=338;break;}c[Xb>>2]=(c[Xb>>2]|0)+1;}h:do{if((dj|0)==338){dj=0;c[lb>>2]=c[Tb>>2];}else if((dj|0)==340){dj=0;do{if((c[vb>>2]|0)==3){if((c[Vb>>2]|0)>>>0>=(c[vb>>2]|0)>>>0)break;c[ac>>2]=nm(c[mb>>2]|0,c[ob>>2]|0)|0;if(!(((c[ac>>2]|0)>>>0>(c[Ob>>2]|0)>>>0?((c[yb>>2]|0)-(c[ac>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[qb>>2]|0){if((c[ac>>2]|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=345;break;}c[dc>>2]=(c[Jb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Uj(c[ob>>2]|0,c[dc>>2]|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;}else dj=345;}while(0);if((dj|0)==345){dj=0;c[cc>>2]=(c[xb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Tj(c[ob>>2]|0,c[cc>>2]|0,c[pb>>2]|0)|0;}if((c[bc>>2]|0)>>>0<(c[vb>>2]|0)>>>0)break;c[Vb>>2]=c[bc>>2];c[c[tb>>2]>>2]=(c[yb>>2]|0)-(c[ac>>2]|0)+2;c[(c[tb>>2]|0)+4>>2]=c[bc>>2];c[Tb>>2]=1;if(!(((c[bc>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[bc>>2]|0)|0)==(c[pb>>2]|0))|0))break;c[(c[mb>>2]|0)+24>>2]=(c[yb>>2]|0)+1;c[lb>>2]=1;break h;}}while(0);c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2]=c[yb>>2];while(1){Zh=c[Ub>>2]|0;c[Ub>>2]=Zh+-1;if(!Zh)break;if((c[Db>>2]|0)>>>0<=(c[Ob>>2]|0)>>>0)break;c[ec>>2]=(c[Eb>>2]|0)+((c[Db>>2]&c[Gb>>2])<<1<<2);c[fc>>2]=(c[Hb>>2]|0)>>>0<(c[Ib>>2]|0)>>>0?c[Hb>>2]|0:c[Ib>>2]|0;do{if(c[qb>>2]|0){if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=355;break;}c[gc>>2]=(c[Jb>>2]|0)+(c[Db>>2]|0);Zh=Uj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0<(c[Kb>>2]|0)>>>0)break;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);}else dj=355;}while(0);if((dj|0)==355){dj=0;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);Zh=Tj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;}if((c[fc>>2]|0)>>>0>(c[Vb>>2]|0)>>>0){if((c[fc>>2]|0)>>>0>((c[Rb>>2]|0)-(c[Db>>2]|0)|0)>>>0)c[Rb>>2]=(c[Db>>2]|0)+(c[fc>>2]|0);c[Vb>>2]=c[fc>>2];c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[yb>>2]|0)-(c[Db>>2]|0)+2;c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[fc>>2];c[Tb>>2]=(c[Tb>>2]|0)+1;if((c[fc>>2]|0)>>>0>4096)break;if(((c[ob>>2]|0)+(c[fc>>2]|0)|0)==(c[pb>>2]|0))break;}Zh=c[Db>>2]|0;if((d[(c[gc>>2]|0)+(c[fc>>2]|0)>>0]|0|0)<(d[(c[ob>>2]|0)+(c[fc>>2]|0)>>0]|0|0)){c[c[Pb>>2]>>2]=Zh;c[Hb>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=365;break;}c[Pb>>2]=(c[ec>>2]|0)+4;c[Db>>2]=c[(c[ec>>2]|0)+4>>2];}else{c[c[Qb>>2]>>2]=Zh;c[Ib>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=368;break;}c[Qb>>2]=c[ec>>2];c[Db>>2]=c[c[ec>>2]>>2];}}if((dj|0)==365){dj=0;c[Pb>>2]=Sb;}else if((dj|0)==368){dj=0;c[Qb>>2]=Sb;}c[c[Qb>>2]>>2]=0;c[c[Pb>>2]>>2]=0;c[(c[mb>>2]|0)+24>>2]=(c[Rb>>2]|0)-8;c[lb>>2]=c[Tb>>2];}}while(0);c[md>>2]=c[lb>>2];break d;}}}}while(0);c[Bi>>2]=c[md>>2];if(c[Bi>>2]|0){c[Di>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)+4>>2];if(((c[Di>>2]|0)>>>0>(c[$h>>2]|0)>>>0?1:((c[ei>>2]|0)+(c[Di>>2]|0)|0)>>>0>=4096)|0){dj=481;break b;}c[Ci>>2]=0;while(1){if((c[Ci>>2]|0)>>>0>=(c[Bi>>2]|0)>>>0)break c;c[Ei>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)>>2];pm(Fi,(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0,c[Ei>>2]|0,c[xi>>2]|0);c[Gi>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)+4>>2];if((c[Ci>>2]|0)>>>0>0)Dj=(c[(c[ci>>2]|0)+((c[Ci>>2]|0)-1<<3)+4>>2]|0)+1|0;else Dj=c[ai>>2]|0;c[Hi>>2]=Dj;c[Ii>>2]=c[Gi>>2];i:while(1){if((c[Ii>>2]|0)>>>0<(c[Hi>>2]|0)>>>0)break;c[Ji>>2]=(c[ei>>2]|0)+(c[Ii>>2]|0);Zh=c[Ai>>2]|0;Zi=c[Ii>>2]|0;Ph=c[Th>>2]|0;Qh=c[Rh>>2]|0;c[k>>2]=c[Ei>>2];c[m>>2]=Zi;c[n>>2]=Ph;c[o>>2]=Qh;c[q>>2]=qm((c[k>>2]|0)+1|0)|0;c[r>>2]=(c[m>>2]|0)-3;if(c[(c[n>>2]|0)+56>>2]|0){Qh=(qm((c[r>>2]|0)+1|0)|0)+16|0;c[j>>2]=Qh+(c[q>>2]|0);}else{Qh=(c[q>>2]|0)+(c[(c[n>>2]|0)+52>>2]|0)|0;c[p>>2]=Qh-(qm((c[(c[(c[n>>2]|0)+12>>2]|0)+(c[q>>2]<<2)>>2]|0)+1|0)|0);if((c[o>>2]|0)<2&(c[q>>2]|0)>>>0>=20)c[p>>2]=(c[p>>2]|0)+((c[q>>2]|0)-19<<1);c[s>>2]=rm(c[r>>2]|0)|0;Qh=(c[5840+(c[s>>2]<<2)>>2]|0)+(c[(c[n>>2]|0)+48>>2]|0)|0;Ph=Qh-(qm((c[(c[(c[n>>2]|0)+8>>2]|0)+(c[s>>2]<<2)>>2]|0)+1|0)|0)|0;c[p>>2]=(c[p>>2]|0)+Ph;c[j>>2]=c[p>>2];}c[Ki>>2]=Zh+(c[j>>2]|0);do{if((c[Ji>>2]|0)>>>0<=(c[fi>>2]|0)>>>0){if((c[Ki>>2]|0)<(c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]|0)){dj=496;break;}if(!(c[Rh>>2]|0))break i;}else dj=496;}while(0);if((dj|0)==496){dj=0;while(1){if((c[fi>>2]|0)>>>0>=(c[Ji>>2]|0)>>>0)break;c[(c[bi>>2]|0)+(((c[fi>>2]|0)+1|0)*28|0)>>2]=1073741824;c[fi>>2]=(c[fi>>2]|0)+1;}c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+8>>2]=c[Ii>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+4>>2]=c[Ei>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+12>>2]=c[yi>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]=c[Ki>>2];Zh=(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+16|0;c[Zh>>2]=c[Fi>>2];c[Zh+4>>2]=c[Fi+4>>2];c[Zh+8>>2]=c[Fi+8>>2];}c[Ii>>2]=(c[Ii>>2]|0)+-1;}c[Ci>>2]=(c[Ci>>2]|0)+1;}}}}while(0);c[ei>>2]=(c[ei>>2]|0)+1;}if((dj|0)==481){dj=0;c[gi>>2]=c[Di>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)>>2];c[fi>>2]=(c[ei>>2]|0)+1;break;}else if((dj|0)==504){dj=0;c[gi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+8>>2];c[hi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+4>>2];c[ei>>2]=(c[fi>>2]|0)-(c[gi>>2]|0);break;}}else{c[gi>>2]=c[mi>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)>>2];c[ei>>2]=0;c[fi>>2]=1;}}while(0);c[Li>>2]=c[gi>>2];c[Mi>>2]=c[hi>>2];c[Ni>>2]=c[ei>>2];while(1){c[Oi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2];c[Pi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2]=c[Li>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2]=c[Mi>>2];c[Li>>2]=c[Oi>>2];c[Mi>>2]=c[Pi>>2];if((c[Oi>>2]|0)>>>0>(c[Ni>>2]|0)>>>0)break;c[Ni>>2]=(c[Ni>>2]|0)-(c[Oi>>2]|0);}c[Qi>>2]=0;while(1){if((c[Qi>>2]|0)>>>0>=(c[fi>>2]|0)>>>0)break;c[Ri>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[Si>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+8>>2];c[Ti>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+4>>2];if((c[Si>>2]|0)==1){c[Vh>>2]=(c[Vh>>2]|0)+1;c[Qi>>2]=(c[Qi>>2]|0)+1;continue;}c[Qi>>2]=(c[Qi>>2]|0)+(c[Si>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+(c[Si>>2]|0);if((c[Ti>>2]|0)>>>0<3){c[Ui>>2]=(c[Ti>>2]|0)+((c[Ri>>2]|0)==0&1);if(c[Ui>>2]|0){Zh=c[Nh>>2]|0;if((c[Ui>>2]|0)==3)Ej=(c[Zh>>2]|0)-1|0;else Ej=c[Zh+(c[Ui>>2]<<2)>>2]|0;c[Vi>>2]=Ej;if((c[Ui>>2]|0)>>>0>=2)c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=c[Vi>>2];}}else{c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=(c[Ti>>2]|0)-2;}vm(c[Th>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,c[Si>>2]|0);wm(c[Mh>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,(c[Si>>2]|0)-3|0);c[Wh>>2]=c[Vh>>2];}xm(c[Th>>2]|0);}l=i;return(c[Xh>>2]|0)-(c[Wh>>2]|0)|0;}function km(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,dg=0,eg=0,fg=0,gg=0,hg=0,ig=0,jg=0,kg=0,lg=0,mg=0,ng=0,og=0,pg=0,qg=0,rg=0,sg=0,tg=0,ug=0,vg=0,wg=0,xg=0,yg=0,zg=0,Ag=0,Bg=0,Cg=0,Dg=0,Eg=0,Fg=0,Gg=0,Hg=0,Ig=0,Jg=0,Kg=0,Lg=0,Mg=0,Ng=0,Og=0,Pg=0,Qg=0,Rg=0,Sg=0,Tg=0,Ug=0,Vg=0,Wg=0,Xg=0,Yg=0,Zg=0,_g=0,$g=0,ah=0,bh=0,ch=0,dh=0,eh=0,fh=0,gh=0,hh=0,ih=0,jh=0,kh=0,lh=0,mh=0,nh=0,oh=0,ph=0,qh=0,rh=0,sh=0,th=0,uh=0,vh=0,wh=0,xh=0,yh=0,zh=0,Ah=0,Bh=0,Ch=0,Dh=0,Eh=0,Fh=0,Gh=0,Hh=0,Ih=0,Jh=0,Kh=0,Lh=0,Mh=0,Nh=0,Oh=0,Ph=0,Qh=0,Rh=0,Sh=0,Th=0,Uh=0,Vh=0,Wh=0,Xh=0,Yh=0,Zh=0,_h=0,$h=0,ai=0,bi=0,ci=0,di=0,ei=0,fi=0,gi=0,hi=0,ii=0,ji=0,ki=0,li=0,mi=0,ni=0,oi=0,pi=0,qi=0,ri=0,si=0,ti=0,ui=0,vi=0,wi=0,xi=0,yi=0,zi=0,Ai=0,Bi=0,Ci=0,Di=0,Ei=0,Fi=0,Gi=0,Hi=0,Ii=0,Ji=0,Ki=0,Li=0,Mi=0,Ni=0,Oi=0,Pi=0,Qi=0,Ri=0,Si=0,Ti=0,Ui=0,Vi=0,Wi=0,Xi=0,Yi=0,Zi=0,_i=0,$i=0,aj=0,bj=0,cj=0,dj=0,ej=0,fj=0,gj=0,hj=0,ij=0,jj=0,kj=0,lj=0,mj=0,nj=0,oj=0,pj=0,qj=0,rj=0,sj=0,tj=0,uj=0,vj=0,wj=0,xj=0,yj=0,zj=0,Aj=0,Bj=0,Cj=0,Dj=0,Ej=0;i=l;l=l+2144|0;j=i+2136|0;k=i+2132|0;m=i+2128|0;n=i+2124|0;o=i+2120|0;p=i+2116|0;q=i+2112|0;r=i+2108|0;s=i+2104|0;t=i+2100|0;u=i+2096|0;v=i+2092|0;w=i+2088|0;x=i+2084|0;y=i+2080|0;z=i+2076|0;A=i+2072|0;B=i+2068|0;C=i+2064|0;D=i+2060|0;E=i+2056|0;F=i+2052|0;G=i+2048|0;H=i+2044|0;I=i+2040|0;J=i+2036|0;K=i+2032|0;L=i+2028|0;M=i+2024|0;N=i+2020|0;O=i+2016|0;P=i+2012|0;Q=i+2008|0;R=i+2004|0;S=i+2e3|0;T=i+1996|0;U=i+1992|0;V=i+1988|0;W=i+1984|0;X=i+1980|0;Y=i+1976|0;Z=i+1972|0;_=i+1968|0;$=i+1964|0;aa=i+1960|0;ba=i+1956|0;ca=i+1952|0;da=i+1948|0;ea=i+1944|0;fa=i+1940|0;ga=i+1936|0;ha=i+1932|0;ia=i+1928|0;ja=i+1924|0;ka=i+1920|0;la=i+1916|0;ma=i+1912|0;na=i+1908|0;oa=i+1904|0;pa=i+1900|0;qa=i+1896|0;ra=i+1892|0;sa=i+1888|0;ta=i+1884|0;ua=i+1880|0;va=i+1876|0;wa=i+1872|0;xa=i+1868|0;ya=i+1864|0;za=i+1860|0;Aa=i+1856|0;Ba=i+1852|0;Ca=i+1848|0;Da=i+1844|0;Ea=i+1840|0;Fa=i+1836|0;Ga=i+1832|0;Ha=i+1828|0;Ia=i+1824|0;Ja=i+1820|0;Ka=i+1816|0;La=i+1812|0;Ma=i+1808|0;Na=i+1804|0;Oa=i+1800|0;Pa=i+1796|0;Qa=i+1792|0;Ra=i+1788|0;Sa=i+1784|0;Ta=i+1780|0;Ua=i+1776|0;Va=i+1772|0;Wa=i+1768|0;Xa=i+1764|0;Ya=i+1760|0;Za=i+1756|0;_a=i+1752|0;$a=i+1748|0;ab=i+1744|0;bb=i+1740|0;cb=i+1736|0;db=i+1732|0;eb=i+1728|0;fb=i+1724|0;gb=i+1720|0;hb=i+1716|0;ib=i+1712|0;jb=i+1708|0;kb=i+1704|0;lb=i+1700|0;mb=i+1696|0;nb=i+1692|0;ob=i+1688|0;pb=i+1684|0;qb=i+1680|0;rb=i+1676|0;sb=i+1672|0;tb=i+1668|0;ub=i+1664|0;vb=i+1660|0;wb=i+1656|0;xb=i+1652|0;yb=i+1648|0;zb=i+1644|0;Ab=i+1640|0;Bb=i+1636|0;Cb=i+1632|0;Db=i+1628|0;Eb=i+1624|0;Fb=i+1620|0;Gb=i+1616|0;Hb=i+1612|0;Ib=i+1608|0;Jb=i+1604|0;Kb=i+1600|0;Lb=i+1596|0;Mb=i+1592|0;Nb=i+1588|0;Ob=i+1584|0;Pb=i+1580|0;Qb=i+1576|0;Rb=i+1572|0;Sb=i+1568|0;Tb=i+1564|0;Ub=i+1560|0;Vb=i+1556|0;Wb=i+1552|0;Xb=i+1548|0;Yb=i+1544|0;Zb=i+1540|0;_b=i+1536|0;$b=i+1532|0;ac=i+1528|0;bc=i+1524|0;cc=i+1520|0;dc=i+1516|0;ec=i+1512|0;fc=i+1508|0;gc=i+1504|0;hc=i+1500|0;ic=i+1496|0;jc=i+1492|0;kc=i+1488|0;lc=i+1484|0;mc=i+1480|0;nc=i+1476|0;oc=i+1472|0;pc=i+1468|0;qc=i+1464|0;rc=i+1460|0;sc=i+1456|0;tc=i+1452|0;uc=i+1448|0;vc=i+1444|0;wc=i+1440|0;xc=i+1436|0;yc=i+1432|0;zc=i+1428|0;Ac=i+1424|0;Bc=i+1420|0;Cc=i+1416|0;Dc=i+1412|0;Ec=i+1408|0;Fc=i+1404|0;Gc=i+1400|0;Hc=i+1396|0;Ic=i+1392|0;Jc=i+1388|0;Kc=i+1384|0;Lc=i+1380|0;Mc=i+1376|0;Nc=i+1372|0;Oc=i+1368|0;Pc=i+1364|0;Qc=i+1360|0;Rc=i+1356|0;Sc=i+1352|0;Tc=i+1348|0;Uc=i+1344|0;Vc=i+1340|0;Wc=i+1336|0;Xc=i+1332|0;Yc=i+1328|0;Zc=i+1324|0;_c=i+1320|0;$c=i+1316|0;ad=i+1312|0;bd=i+1308|0;cd=i+1304|0;dd=i+1300|0;ed=i+1296|0;fd=i+1292|0;gd=i+1288|0;hd=i+1284|0;id=i+1280|0;jd=i+1276|0;kd=i+1272|0;ld=i+1268|0;md=i+1264|0;nd=i+1260|0;od=i+1256|0;pd=i+1252|0;qd=i+1248|0;rd=i+1244|0;sd=i+1240|0;td=i+1236|0;ud=i+1232|0;vd=i+1228|0;wd=i+1224|0;xd=i+1220|0;yd=i+1216|0;zd=i+1212|0;Ad=i+1208|0;Bd=i+1204|0;Cd=i+1200|0;Dd=i+1196|0;Ed=i+1192|0;Fd=i+1188|0;Gd=i+1184|0;Hd=i+1180|0;Id=i+1176|0;Jd=i+1172|0;Kd=i+1168|0;Ld=i+1164|0;Md=i+1160|0;Nd=i+1156|0;Od=i+1152|0;Pd=i+1148|0;Qd=i+1144|0;Rd=i+1140|0;Sd=i+1136|0;Td=i+1132|0;Ud=i+1128|0;Vd=i+1124|0;Wd=i+1120|0;Xd=i+1116|0;Yd=i+1112|0;Zd=i+1108|0;_d=i+1104|0;$d=i+1100|0;ae=i+1096|0;be=i+1092|0;ce=i+1088|0;de=i+1084|0;ee=i+1080|0;fe=i+1076|0;ge=i+1072|0;he=i+1068|0;ie=i+1064|0;je=i+1060|0;ke=i+1056|0;le=i+1052|0;me=i+1048|0;ne=i+1044|0;oe=i+1040|0;pe=i+1036|0;qe=i+1032|0;re=i+1028|0;se=i+1024|0;te=i+1020|0;ue=i+1016|0;ve=i+1012|0;we=i+1008|0;xe=i+1004|0;ye=i+1e3|0;ze=i+996|0;Ae=i+992|0;Be=i+988|0;Ce=i+984|0;De=i+980|0;Ee=i+976|0;Fe=i+972|0;Ge=i+968|0;He=i+964|0;Ie=i+960|0;Je=i+956|0;Ke=i+952|0;Le=i+948|0;Me=i+944|0;Ne=i+940|0;Oe=i+936|0;Pe=i+932|0;Qe=i+928|0;Re=i+924|0;Se=i+920|0;Te=i+916|0;Ue=i+912|0;Ve=i+908|0;We=i+904|0;Xe=i+900|0;Ye=i+896|0;Ze=i+892|0;_e=i+888|0;$e=i+884|0;af=i+880|0;bf=i+876|0;cf=i+872|0;df=i+868|0;ef=i+864|0;ff=i+860|0;gf=i+856|0;hf=i+852|0;jf=i+848|0;kf=i+844|0;lf=i+840|0;mf=i+836|0;nf=i+832|0;of=i+828|0;pf=i+824|0;qf=i+820|0;rf=i+816|0;sf=i+812|0;tf=i+808|0;uf=i+804|0;vf=i+800|0;wf=i+796|0;xf=i+792|0;yf=i+788|0;zf=i+784|0;Af=i+780|0;Bf=i+776|0;Cf=i+772|0;Df=i+768|0;Ef=i+764|0;Ff=i+760|0;Gf=i+756|0;Hf=i+752|0;If=i+748|0;Jf=i+744|0;Kf=i+740|0;Lf=i+736|0;Mf=i+732|0;Nf=i+728|0;Of=i+724|0;Pf=i+720|0;Qf=i+716|0;Rf=i+712|0;Sf=i+708|0;Tf=i+704|0;Uf=i+700|0;Vf=i+696|0;Wf=i+692|0;Xf=i+688|0;Yf=i+684|0;Zf=i+680|0;_f=i+676|0;$f=i+672|0;ag=i+668|0;bg=i+664|0;cg=i+660|0;dg=i+656|0;eg=i+652|0;fg=i+648|0;gg=i+644|0;hg=i+640|0;ig=i+636|0;jg=i+632|0;kg=i+628|0;lg=i+624|0;mg=i+620|0;ng=i+616|0;og=i+612|0;pg=i+608|0;qg=i+604|0;rg=i+600|0;sg=i+596|0;tg=i+592|0;ug=i+588|0;vg=i+584|0;wg=i+580|0;xg=i+576|0;yg=i+572|0;zg=i+568|0;Ag=i+564|0;Bg=i+560|0;Cg=i+556|0;Dg=i+552|0;Eg=i+548|0;Fg=i+544|0;Gg=i+540|0;Hg=i+536|0;Ig=i+532|0;Jg=i+528|0;Kg=i+524|0;Lg=i+520|0;Mg=i+516|0;Ng=i+512|0;Og=i+508|0;Pg=i+504|0;Qg=i+500|0;Rg=i+496|0;Sg=i+492|0;Tg=i+488|0;Ug=i+484|0;Vg=i+480|0;Wg=i+476|0;Xg=i+472|0;Yg=i+468|0;Zg=i+464|0;_g=i+460|0;$g=i+456|0;ah=i+452|0;bh=i+448|0;ch=i+444|0;dh=i+440|0;eh=i+436|0;fh=i+432|0;gh=i+428|0;hh=i+424|0;ih=i+420|0;jh=i+416|0;kh=i+412|0;lh=i+408|0;mh=i+404|0;nh=i+400|0;oh=i+396|0;ph=i+392|0;qh=i+388|0;rh=i+384|0;sh=i+380|0;th=i+376|0;uh=i+372|0;vh=i+368|0;wh=i+364|0;xh=i+360|0;yh=i+356|0;zh=i+352|0;Ah=i+348|0;Bh=i+344|0;Ch=i+340|0;Dh=i+336|0;Eh=i+332|0;Fh=i+328|0;Gh=i+324|0;Hh=i+320|0;Ih=i+316|0;Jh=i+312|0;Kh=i+308|0;Lh=i+304|0;Mh=i+300|0;Nh=i+296|0;Oh=i+292|0;Ph=i+288|0;Qh=i+284|0;Rh=i+280|0;Sh=i+276|0;Th=i+272|0;Uh=i+268|0;Vh=i+264|0;Wh=i+260|0;Xh=i+256|0;Yh=i+252|0;Zh=i+248|0;_h=i+244|0;$h=i+240|0;ai=i+236|0;bi=i+232|0;ci=i+228|0;di=i+216|0;ei=i+212|0;fi=i+208|0;gi=i+204|0;hi=i+200|0;ii=i+196|0;ji=i+192|0;ki=i+188|0;li=i+184|0;mi=i+180|0;ni=i+176|0;oi=i+172|0;pi=i+168|0;qi=i+164|0;ri=i+160|0;si=i+148|0;ti=i+144|0;ui=i+140|0;vi=i+136|0;wi=i+132|0;xi=i+128|0;yi=i+124|0;zi=i+120|0;Ai=i+116|0;Bi=i+112|0;Ci=i+108|0;Di=i+104|0;Ei=i+100|0;Fi=i+88|0;Gi=i+84|0;Hi=i+80|0;Ii=i+76|0;Ji=i+72|0;Ki=i+68|0;Li=i+64|0;Mi=i+60|0;Ni=i+56|0;Oi=i+52|0;Pi=i+48|0;Qi=i+44|0;Ri=i+40|0;Si=i+36|0;Ti=i+32|0;Ui=i+28|0;Vi=i+24|0;Wi=i+20|0;Xi=i+16|0;Yi=i+12|0;Zi=i+8|0;_i=i+4|0;$i=i;c[Wi>>2]=a;c[Xi>>2]=b;c[Yi>>2]=e;c[Zi>>2]=f;c[_i>>2]=g;c[$i>>2]=h;h=c[Xi>>2]|0;Xi=c[Yi>>2]|0;Yi=c[Zi>>2]|0;Zi=c[_i>>2]|0;_i=c[$i>>2]|0;c[Lh>>2]=c[Wi>>2];c[Mh>>2]=h;c[Nh>>2]=Xi;c[Oh>>2]=Yi;c[Ph>>2]=Zi;c[Qh>>2]=_i;c[Rh>>2]=2;c[Sh>>2]=1;c[Th>>2]=(c[Lh>>2]|0)+48;c[Uh>>2]=c[Ph>>2];c[Vh>>2]=c[Uh>>2];c[Wh>>2]=c[Uh>>2];c[Xh>>2]=(c[Uh>>2]|0)+(c[Qh>>2]|0);c[Yh>>2]=(c[Xh>>2]|0)+-8;c[Zh>>2]=c[(c[Lh>>2]|0)+4>>2];c[_h>>2]=(c[Zh>>2]|0)+(c[(c[Lh>>2]|0)+12>>2]|0);if((c[(c[Oh>>2]|0)+20>>2]|0)>>>0<4095)aj=c[(c[Oh>>2]|0)+20>>2]|0;else aj=4095;c[$h>>2]=aj;c[ai>>2]=(c[(c[Oh>>2]|0)+16>>2]|0)==3?3:4;c[bi>>2]=c[(c[Th>>2]|0)+20>>2];c[ci>>2]=c[(c[Th>>2]|0)+16>>2];c[(c[Lh>>2]|0)+28>>2]=c[(c[Lh>>2]|0)+24>>2];lm(c[Th>>2]|0,c[Ph>>2]|0,c[Qh>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+((c[Vh>>2]|0)==(c[_h>>2]|0)&1);c[di>>2]=0;c[di+4>>2]=0;c[di+8>>2]=0;while(1){if((c[Vh>>2]|0)>>>0>=(c[Yh>>2]|0)>>>0)break;c[fi>>2]=0;c[ii>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[ji>>2]=((c[ii>>2]|0)!=0^1)&1;_h=c[Oh>>2]|0;Qh=c[Vh>>2]|0;Ph=c[Xh>>2]|0;aj=c[Sh>>2]|0;Zh=c[Nh>>2]|0;Uh=c[ji>>2]|0;_i=c[ci>>2]|0;Zi=c[ai>>2]|0;c[Bh>>2]=c[Lh>>2];c[Ch>>2]=_h;c[Dh>>2]=Qh;c[Eh>>2]=Ph;c[Fh>>2]=aj;c[Gh>>2]=Zh;c[Hh>>2]=Uh;c[Ih>>2]=_i;c[Jh>>2]=Zi;c[Kh>>2]=c[(c[Ch>>2]|0)+16>>2];a:do{if((c[Dh>>2]|0)>>>0<((c[(c[Bh>>2]|0)+4>>2]|0)+(c[(c[Bh>>2]|0)+24>>2]|0)|0)>>>0)c[Ah>>2]=0;else{Zi=c[Ch>>2]|0;_i=c[Dh>>2]|0;Uh=c[Eh>>2]|0;Zh=c[Kh>>2]|0;aj=c[Fh>>2]|0;c[rh>>2]=c[Bh>>2];c[sh>>2]=Zi;c[th>>2]=_i;c[uh>>2]=Uh;c[vh>>2]=Zh;c[wh>>2]=aj;c[xh>>2]=c[(c[rh>>2]|0)+4>>2];c[yh>>2]=(c[th>>2]|0)-(c[xh>>2]|0);c[zh>>2]=c[(c[rh>>2]|0)+24>>2];while(1){if((c[zh>>2]|0)>>>0>=(c[yh>>2]|0)>>>0)break;aj=Rj(c[rh>>2]|0,c[sh>>2]|0,(c[xh>>2]|0)+(c[zh>>2]|0)|0,c[uh>>2]|0,c[vh>>2]|0,c[wh>>2]|0)|0;c[zh>>2]=(c[zh>>2]|0)+aj;}c[(c[rh>>2]|0)+24>>2]=c[yh>>2];switch(c[Kh>>2]|0){case 3:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[wg>>2]=c[Bh>>2];c[xg>>2]=aj;c[yg>>2]=Zh;c[zg>>2]=Uh;c[Ag>>2]=_i;c[Bg>>2]=Zi;c[Cg>>2]=Ph;c[Dg>>2]=Qh;c[Eg>>2]=_h;c[Fg>>2]=3;if((c[(c[xg>>2]|0)+20>>2]|0)>>>0<4095)bj=c[(c[xg>>2]|0)+20>>2]|0;else bj=4095;c[Gg>>2]=bj;c[Hg>>2]=c[(c[wg>>2]|0)+4>>2];c[Ig>>2]=(c[yg>>2]|0)-(c[Hg>>2]|0);c[Jg>>2]=c[(c[xg>>2]|0)+8>>2];c[Kg>>2]=(c[Fg>>2]|0)==3?3:4;c[Lg>>2]=c[(c[wg>>2]|0)+36>>2];c[Mg>>2]=Sj(c[yg>>2]|0,c[Jg>>2]|0,c[Fg>>2]|0)|0;c[Ng>>2]=c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2];c[Og>>2]=c[(c[wg>>2]|0)+44>>2];c[Pg>>2]=(c[(c[xg>>2]|0)+4>>2]|0)-1;c[Qg>>2]=(1<<c[Pg>>2])-1;c[Rg>>2]=0;c[Sg>>2]=0;c[Tg>>2]=c[(c[wg>>2]|0)+8>>2];c[Ug>>2]=c[(c[wg>>2]|0)+12>>2];c[Vg>>2]=(c[Tg>>2]|0)+(c[Ug>>2]|0);c[Wg>>2]=(c[Hg>>2]|0)+(c[Ug>>2]|0);if((c[Qg>>2]|0)>>>0>=(c[Ig>>2]|0)>>>0)cj=0;else cj=(c[Ig>>2]|0)-(c[Qg>>2]|0)|0;c[Xg>>2]=cj;c[Yg>>2]=c[(c[wg>>2]|0)+16>>2];c[Zg>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2);c[_g>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2)+4;c[$g>>2]=(c[Ig>>2]|0)+8+1;c[bh>>2]=0;c[ch>>2]=1<<c[(c[xg>>2]|0)+12>>2];c[dh>>2]=(c[Eg>>2]|0)-1;c[eh>>2]=3+(c[Cg>>2]|0);c[fh>>2]=c[Cg>>2];while(1){if((c[fh>>2]|0)>>>0>=(c[eh>>2]|0)>>>0){dj=31;break;}_h=c[Bg>>2]|0;if((c[fh>>2]|0)==3)ej=(c[_h>>2]|0)-1|0;else ej=c[_h+(c[fh>>2]<<2)>>2]|0;c[gh>>2]=ej;c[hh>>2]=(c[Ig>>2]|0)-(c[gh>>2]|0);c[ih>>2]=0;if(((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Ug>>2]|0)|0)>>>0){_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0;if((_h|0)==(mm((c[yg>>2]|0)+(0-(c[gh>>2]|0))|0,c[Kg>>2]|0)|0)){_h=Tj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[yg>>2]|0)+(c[Kg>>2]|0)+(0-(c[gh>>2]|0))|0,c[zg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}else{c[jh>>2]=(c[Tg>>2]|0)+(c[hh>>2]|0);if((c[Ag>>2]|0?(((c[Ug>>2]|0)-1-(c[hh>>2]|0)|0)>>>0>=3?((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Yg>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0,(_h|0)==(mm(c[jh>>2]|0,c[Kg>>2]|0)|0)):0){_h=Uj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[jh>>2]|0)+(c[Kg>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}if((c[ih>>2]|0)>>>0>(c[dh>>2]|0)>>>0?(c[dh>>2]=c[ih>>2],c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[fh>>2]|0)-(c[Cg>>2]|0),c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ih>>2],c[bh>>2]=(c[bh>>2]|0)+1,((c[ih>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[ih>>2]|0)|0)==(c[zg>>2]|0))|0):0){dj=29;break;}c[fh>>2]=(c[fh>>2]|0)+1;}do{if((dj|0)==29){dj=0;c[vg>>2]=c[bh>>2];}else if((dj|0)==31){dj=0;if(((c[Fg>>2]|0)==3?(c[dh>>2]|0)>>>0<(c[Fg>>2]|0)>>>0:0)?(c[kh>>2]=nm(c[wg>>2]|0,c[yg>>2]|0)|0,((c[kh>>2]|0)>>>0>(c[Yg>>2]|0)>>>0?((c[Ig>>2]|0)-(c[kh>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ag>>2]|0?(c[kh>>2]|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[nh>>2]=(c[Tg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Uj(c[yg>>2]|0,c[nh>>2]|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;}else{c[mh>>2]=(c[Hg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Tj(c[yg>>2]|0,c[mh>>2]|0,c[zg>>2]|0)|0;}if((c[lh>>2]|0)>>>0>=(c[Fg>>2]|0)>>>0?(c[dh>>2]=c[lh>>2],c[c[Dg>>2]>>2]=(c[Ig>>2]|0)-(c[kh>>2]|0)+2,c[(c[Dg>>2]|0)+4>>2]=c[lh>>2],c[bh>>2]=1,((c[lh>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[lh>>2]|0)|0)==(c[zg>>2]|0))|0):0){c[(c[wg>>2]|0)+24>>2]=(c[Ig>>2]|0)+1;c[vg>>2]=1;break;}}c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2]=c[Ig>>2];while(1){_h=c[ch>>2]|0;c[ch>>2]=_h+-1;if(!_h)break;if((c[Ng>>2]|0)>>>0<=(c[Yg>>2]|0)>>>0)break;c[oh>>2]=(c[Og>>2]|0)+((c[Ng>>2]&c[Qg>>2])<<1<<2);c[ph>>2]=(c[Rg>>2]|0)>>>0<(c[Sg>>2]|0)>>>0?c[Rg>>2]|0:c[Sg>>2]|0;if(c[Ag>>2]|0?((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[qh>>2]=(c[Tg>>2]|0)+(c[Ng>>2]|0);_h=Uj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;if(((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0>=(c[Ug>>2]|0)>>>0)c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);}else{c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);_h=Tj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;}if((c[ph>>2]|0)>>>0>(c[dh>>2]|0)>>>0){if((c[ph>>2]|0)>>>0>((c[$g>>2]|0)-(c[Ng>>2]|0)|0)>>>0)c[$g>>2]=(c[Ng>>2]|0)+(c[ph>>2]|0);c[dh>>2]=c[ph>>2];c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[Ig>>2]|0)-(c[Ng>>2]|0)+2;c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ph>>2];c[bh>>2]=(c[bh>>2]|0)+1;if((c[ph>>2]|0)>>>0>4096)break;if(((c[yg>>2]|0)+(c[ph>>2]|0)|0)==(c[zg>>2]|0))break;}_h=c[Ng>>2]|0;if((d[(c[qh>>2]|0)+(c[ph>>2]|0)>>0]|0|0)<(d[(c[yg>>2]|0)+(c[ph>>2]|0)>>0]|0|0)){c[c[Zg>>2]>>2]=_h;c[Rg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=56;break;}c[Zg>>2]=(c[oh>>2]|0)+4;c[Ng>>2]=c[(c[oh>>2]|0)+4>>2];}else{c[c[_g>>2]>>2]=_h;c[Sg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=59;break;}c[_g>>2]=c[oh>>2];c[Ng>>2]=c[c[oh>>2]>>2];}}if((dj|0)==56){dj=0;c[Zg>>2]=ah;}else if((dj|0)==59){dj=0;c[_g>>2]=ah;}c[c[_g>>2]>>2]=0;c[c[Zg>>2]>>2]=0;c[(c[wg>>2]|0)+24>>2]=(c[$g>>2]|0)-8;c[vg>>2]=c[bh>>2];}}while(0);c[Ah>>2]=c[vg>>2];break a;break;}case 7:case 6:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Hd>>2]=c[Bh>>2];c[Id>>2]=_h;c[Jd>>2]=Qh;c[Kd>>2]=Ph;c[Ld>>2]=Zi;c[Md>>2]=_i;c[Nd>>2]=Uh;c[Od>>2]=Zh;c[Pd>>2]=aj;c[Qd>>2]=6;if((c[(c[Id>>2]|0)+20>>2]|0)>>>0<4095)fj=c[(c[Id>>2]|0)+20>>2]|0;else fj=4095;c[Rd>>2]=fj;c[Sd>>2]=c[(c[Hd>>2]|0)+4>>2];c[Td>>2]=(c[Jd>>2]|0)-(c[Sd>>2]|0);c[Ud>>2]=c[(c[Id>>2]|0)+8>>2];c[Vd>>2]=(c[Qd>>2]|0)==3?3:4;c[Wd>>2]=c[(c[Hd>>2]|0)+36>>2];c[Xd>>2]=Sj(c[Jd>>2]|0,c[Ud>>2]|0,c[Qd>>2]|0)|0;c[Yd>>2]=c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2];c[Zd>>2]=c[(c[Hd>>2]|0)+44>>2];c[_d>>2]=(c[(c[Id>>2]|0)+4>>2]|0)-1;c[$d>>2]=(1<<c[_d>>2])-1;c[ae>>2]=0;c[be>>2]=0;c[ce>>2]=c[(c[Hd>>2]|0)+8>>2];c[de>>2]=c[(c[Hd>>2]|0)+12>>2];c[ee>>2]=(c[ce>>2]|0)+(c[de>>2]|0);c[fe>>2]=(c[Sd>>2]|0)+(c[de>>2]|0);if((c[$d>>2]|0)>>>0>=(c[Td>>2]|0)>>>0)gj=0;else gj=(c[Td>>2]|0)-(c[$d>>2]|0)|0;c[ge>>2]=gj;c[he>>2]=c[(c[Hd>>2]|0)+16>>2];c[ie>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2);c[je>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2)+4;c[ke>>2]=(c[Td>>2]|0)+8+1;c[me>>2]=0;c[ne>>2]=1<<c[(c[Id>>2]|0)+12>>2];c[oe>>2]=(c[Pd>>2]|0)-1;c[pe>>2]=3+(c[Nd>>2]|0);c[qe>>2]=c[Nd>>2];while(1){if((c[qe>>2]|0)>>>0>=(c[pe>>2]|0)>>>0){dj=190;break;}aj=c[Md>>2]|0;if((c[qe>>2]|0)==3)hj=(c[aj>>2]|0)-1|0;else hj=c[aj+(c[qe>>2]<<2)>>2]|0;c[re>>2]=hj;c[se>>2]=(c[Td>>2]|0)-(c[re>>2]|0);c[te>>2]=0;if(((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[de>>2]|0)|0)>>>0){aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0;if((aj|0)==(mm((c[Jd>>2]|0)+(0-(c[re>>2]|0))|0,c[Vd>>2]|0)|0)){aj=Tj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[Jd>>2]|0)+(c[Vd>>2]|0)+(0-(c[re>>2]|0))|0,c[Kd>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}else{c[ue>>2]=(c[ce>>2]|0)+(c[se>>2]|0);if((c[Ld>>2]|0?(((c[de>>2]|0)-1-(c[se>>2]|0)|0)>>>0>=3?((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[he>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0,(aj|0)==(mm(c[ue>>2]|0,c[Vd>>2]|0)|0)):0){aj=Uj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[ue>>2]|0)+(c[Vd>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}if((c[te>>2]|0)>>>0>(c[oe>>2]|0)>>>0?(c[oe>>2]=c[te>>2],c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[qe>>2]|0)-(c[Nd>>2]|0),c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[te>>2],c[me>>2]=(c[me>>2]|0)+1,((c[te>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[te>>2]|0)|0)==(c[Kd>>2]|0))|0):0){dj=188;break;}c[qe>>2]=(c[qe>>2]|0)+1;}do{if((dj|0)==188){dj=0;c[Gd>>2]=c[me>>2];}else if((dj|0)==190){dj=0;if(((c[Qd>>2]|0)==3?(c[oe>>2]|0)>>>0<(c[Qd>>2]|0)>>>0:0)?(c[ve>>2]=nm(c[Hd>>2]|0,c[Jd>>2]|0)|0,((c[ve>>2]|0)>>>0>(c[he>>2]|0)>>>0?((c[Td>>2]|0)-(c[ve>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ld>>2]|0?(c[ve>>2]|0)>>>0<(c[de>>2]|0)>>>0:0){c[ye>>2]=(c[ce>>2]|0)+(c[ve>>2]|0);c[we>>2]=Uj(c[Jd>>2]|0,c[ye>>2]|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;}else{c[xe>>2]=(c[Sd>>2]|0)+(c[ve>>2]|0);c[we>>2]=Tj(c[Jd>>2]|0,c[xe>>2]|0,c[Kd>>2]|0)|0;}if((c[we>>2]|0)>>>0>=(c[Qd>>2]|0)>>>0?(c[oe>>2]=c[we>>2],c[c[Od>>2]>>2]=(c[Td>>2]|0)-(c[ve>>2]|0)+2,c[(c[Od>>2]|0)+4>>2]=c[we>>2],c[me>>2]=1,((c[we>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[we>>2]|0)|0)==(c[Kd>>2]|0))|0):0){c[(c[Hd>>2]|0)+24>>2]=(c[Td>>2]|0)+1;c[Gd>>2]=1;break;}}c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2]=c[Td>>2];while(1){aj=c[ne>>2]|0;c[ne>>2]=aj+-1;if(!aj)break;if((c[Yd>>2]|0)>>>0<=(c[he>>2]|0)>>>0)break;c[ze>>2]=(c[Zd>>2]|0)+((c[Yd>>2]&c[$d>>2])<<1<<2);c[Ae>>2]=(c[ae>>2]|0)>>>0<(c[be>>2]|0)>>>0?c[ae>>2]|0:c[be>>2]|0;if(c[Ld>>2]|0?((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0<(c[de>>2]|0)>>>0:0){c[Be>>2]=(c[ce>>2]|0)+(c[Yd>>2]|0);aj=Uj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;if(((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0>=(c[de>>2]|0)>>>0)c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);}else{c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);aj=Tj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;}if((c[Ae>>2]|0)>>>0>(c[oe>>2]|0)>>>0){if((c[Ae>>2]|0)>>>0>((c[ke>>2]|0)-(c[Yd>>2]|0)|0)>>>0)c[ke>>2]=(c[Yd>>2]|0)+(c[Ae>>2]|0);c[oe>>2]=c[Ae>>2];c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[Td>>2]|0)-(c[Yd>>2]|0)+2;c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[Ae>>2];c[me>>2]=(c[me>>2]|0)+1;if((c[Ae>>2]|0)>>>0>4096)break;if(((c[Jd>>2]|0)+(c[Ae>>2]|0)|0)==(c[Kd>>2]|0))break;}aj=c[Yd>>2]|0;if((d[(c[Be>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)<(d[(c[Jd>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)){c[c[ie>>2]>>2]=aj;c[ae>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=215;break;}c[ie>>2]=(c[ze>>2]|0)+4;c[Yd>>2]=c[(c[ze>>2]|0)+4>>2];}else{c[c[je>>2]>>2]=aj;c[be>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=218;break;}c[je>>2]=c[ze>>2];c[Yd>>2]=c[c[ze>>2]>>2];}}if((dj|0)==215){dj=0;c[ie>>2]=le;}else if((dj|0)==218){dj=0;c[je>>2]=le;}c[c[je>>2]>>2]=0;c[c[ie>>2]>>2]=0;c[(c[Hd>>2]|0)+24>>2]=(c[ke>>2]|0)-8;c[Gd>>2]=c[me>>2];}}while(0);c[Ah>>2]=c[Gd>>2];break a;break;}case 5:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[De>>2]=c[Bh>>2];c[Ee>>2]=aj;c[Fe>>2]=Zh;c[Ge>>2]=Uh;c[He>>2]=_i;c[Ie>>2]=Zi;c[Je>>2]=Ph;c[Ke>>2]=Qh;c[Le>>2]=_h;c[Me>>2]=5;if((c[(c[Ee>>2]|0)+20>>2]|0)>>>0<4095)ij=c[(c[Ee>>2]|0)+20>>2]|0;else ij=4095;c[Ne>>2]=ij;c[Oe>>2]=c[(c[De>>2]|0)+4>>2];c[Pe>>2]=(c[Fe>>2]|0)-(c[Oe>>2]|0);c[Qe>>2]=c[(c[Ee>>2]|0)+8>>2];c[Re>>2]=(c[Me>>2]|0)==3?3:4;c[Se>>2]=c[(c[De>>2]|0)+36>>2];c[Te>>2]=Sj(c[Fe>>2]|0,c[Qe>>2]|0,c[Me>>2]|0)|0;c[Ue>>2]=c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2];c[Ve>>2]=c[(c[De>>2]|0)+44>>2];c[We>>2]=(c[(c[Ee>>2]|0)+4>>2]|0)-1;c[Xe>>2]=(1<<c[We>>2])-1;c[Ye>>2]=0;c[Ze>>2]=0;c[_e>>2]=c[(c[De>>2]|0)+8>>2];c[$e>>2]=c[(c[De>>2]|0)+12>>2];c[af>>2]=(c[_e>>2]|0)+(c[$e>>2]|0);c[bf>>2]=(c[Oe>>2]|0)+(c[$e>>2]|0);if((c[Xe>>2]|0)>>>0>=(c[Pe>>2]|0)>>>0)jj=0;else jj=(c[Pe>>2]|0)-(c[Xe>>2]|0)|0;c[cf>>2]=jj;c[df>>2]=c[(c[De>>2]|0)+16>>2];c[ef>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2);c[ff>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2)+4;c[gf>>2]=(c[Pe>>2]|0)+8+1;c[jf>>2]=0;c[kf>>2]=1<<c[(c[Ee>>2]|0)+12>>2];c[lf>>2]=(c[Le>>2]|0)-1;c[mf>>2]=3+(c[Je>>2]|0);c[nf>>2]=c[Je>>2];while(1){if((c[nf>>2]|0)>>>0>=(c[mf>>2]|0)>>>0){dj=137;break;}_h=c[Ie>>2]|0;if((c[nf>>2]|0)==3)kj=(c[_h>>2]|0)-1|0;else kj=c[_h+(c[nf>>2]<<2)>>2]|0;c[of>>2]=kj;c[pf>>2]=(c[Pe>>2]|0)-(c[of>>2]|0);c[qf>>2]=0;if(((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[$e>>2]|0)|0)>>>0){_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0;if((_h|0)==(mm((c[Fe>>2]|0)+(0-(c[of>>2]|0))|0,c[Re>>2]|0)|0)){_h=Tj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[Fe>>2]|0)+(c[Re>>2]|0)+(0-(c[of>>2]|0))|0,c[Ge>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}else{c[rf>>2]=(c[_e>>2]|0)+(c[pf>>2]|0);if((c[He>>2]|0?(((c[$e>>2]|0)-1-(c[pf>>2]|0)|0)>>>0>=3?((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[df>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0,(_h|0)==(mm(c[rf>>2]|0,c[Re>>2]|0)|0)):0){_h=Uj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[rf>>2]|0)+(c[Re>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}if((c[qf>>2]|0)>>>0>(c[lf>>2]|0)>>>0?(c[lf>>2]=c[qf>>2],c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[nf>>2]|0)-(c[Je>>2]|0),c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[qf>>2],c[jf>>2]=(c[jf>>2]|0)+1,((c[qf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[qf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){dj=135;break;}c[nf>>2]=(c[nf>>2]|0)+1;}do{if((dj|0)==135){dj=0;c[Ce>>2]=c[jf>>2];}else if((dj|0)==137){dj=0;if(((c[Me>>2]|0)==3?(c[lf>>2]|0)>>>0<(c[Me>>2]|0)>>>0:0)?(c[sf>>2]=nm(c[De>>2]|0,c[Fe>>2]|0)|0,((c[sf>>2]|0)>>>0>(c[df>>2]|0)>>>0?((c[Pe>>2]|0)-(c[sf>>2]|0)|0)>>>0<262144:0)|0):0){if(c[He>>2]|0?(c[sf>>2]|0)>>>0<(c[$e>>2]|0)>>>0:0){c[vf>>2]=(c[_e>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Uj(c[Fe>>2]|0,c[vf>>2]|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;}else{c[uf>>2]=(c[Oe>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Tj(c[Fe>>2]|0,c[uf>>2]|0,c[Ge>>2]|0)|0;}if((c[tf>>2]|0)>>>0>=(c[Me>>2]|0)>>>0?(c[lf>>2]=c[tf>>2],c[c[Ke>>2]>>2]=(c[Pe>>2]|0)-(c[sf>>2]|0)+2,c[(c[Ke>>2]|0)+4>>2]=c[tf>>2],c[jf>>2]=1,((c[tf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[tf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){c[(c[De>>2]|0)+24>>2]=(c[Pe>>2]|0)+1;c[Ce>>2]=1;break;}}c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2]=c[Pe>>2];while(1){_h=c[kf>>2]|0;c[kf>>2]=_h+-1;if(!_h)break;if((c[Ue>>2]|0)>>>0<=(c[df>>2]|0)>>>0)break;c[wf>>2]=(c[Ve>>2]|0)+((c[Ue>>2]&c[Xe>>2])<<1<<2);c[xf>>2]=(c[Ye>>2]|0)>>>0<(c[Ze>>2]|0)>>>0?c[Ye>>2]|0:c[Ze>>2]|0;if(c[He>>2]|0?((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0<(c[$e>>2]|0)>>>0:0){c[yf>>2]=(c[_e>>2]|0)+(c[Ue>>2]|0);_h=Uj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;if(((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0>=(c[$e>>2]|0)>>>0)c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);}else{c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);_h=Tj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;}if((c[xf>>2]|0)>>>0>(c[lf>>2]|0)>>>0){if((c[xf>>2]|0)>>>0>((c[gf>>2]|0)-(c[Ue>>2]|0)|0)>>>0)c[gf>>2]=(c[Ue>>2]|0)+(c[xf>>2]|0);c[lf>>2]=c[xf>>2];c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[Pe>>2]|0)-(c[Ue>>2]|0)+2;c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[xf>>2];c[jf>>2]=(c[jf>>2]|0)+1;if((c[xf>>2]|0)>>>0>4096)break;if(((c[Fe>>2]|0)+(c[xf>>2]|0)|0)==(c[Ge>>2]|0))break;}_h=c[Ue>>2]|0;if((d[(c[yf>>2]|0)+(c[xf>>2]|0)>>0]|0|0)<(d[(c[Fe>>2]|0)+(c[xf>>2]|0)>>0]|0|0)){c[c[ef>>2]>>2]=_h;c[Ye>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=162;break;}c[ef>>2]=(c[wf>>2]|0)+4;c[Ue>>2]=c[(c[wf>>2]|0)+4>>2];}else{c[c[ff>>2]>>2]=_h;c[Ze>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=165;break;}c[ff>>2]=c[wf>>2];c[Ue>>2]=c[c[wf>>2]>>2];}}if((dj|0)==162){dj=0;c[ef>>2]=hf;}else if((dj|0)==165){dj=0;c[ff>>2]=hf;}c[c[ff>>2]>>2]=0;c[c[ef>>2]>>2]=0;c[(c[De>>2]|0)+24>>2]=(c[gf>>2]|0)-8;c[Ce>>2]=c[jf>>2];}}while(0);c[Ah>>2]=c[Ce>>2];break a;break;}default:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Af>>2]=c[Bh>>2];c[Bf>>2]=_h;c[Cf>>2]=Qh;c[Df>>2]=Ph;c[Ef>>2]=Zi;c[Ff>>2]=_i;c[Gf>>2]=Uh;c[Hf>>2]=Zh;c[If>>2]=aj;c[Jf>>2]=4;if((c[(c[Bf>>2]|0)+20>>2]|0)>>>0<4095)lj=c[(c[Bf>>2]|0)+20>>2]|0;else lj=4095;c[Kf>>2]=lj;c[Lf>>2]=c[(c[Af>>2]|0)+4>>2];c[Mf>>2]=(c[Cf>>2]|0)-(c[Lf>>2]|0);c[Nf>>2]=c[(c[Bf>>2]|0)+8>>2];c[Of>>2]=(c[Jf>>2]|0)==3?3:4;c[Pf>>2]=c[(c[Af>>2]|0)+36>>2];c[Qf>>2]=Sj(c[Cf>>2]|0,c[Nf>>2]|0,c[Jf>>2]|0)|0;c[Rf>>2]=c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2];c[Sf>>2]=c[(c[Af>>2]|0)+44>>2];c[Tf>>2]=(c[(c[Bf>>2]|0)+4>>2]|0)-1;c[Uf>>2]=(1<<c[Tf>>2])-1;c[Vf>>2]=0;c[Wf>>2]=0;c[Xf>>2]=c[(c[Af>>2]|0)+8>>2];c[Yf>>2]=c[(c[Af>>2]|0)+12>>2];c[Zf>>2]=(c[Xf>>2]|0)+(c[Yf>>2]|0);c[_f>>2]=(c[Lf>>2]|0)+(c[Yf>>2]|0);if((c[Uf>>2]|0)>>>0>=(c[Mf>>2]|0)>>>0)mj=0;else mj=(c[Mf>>2]|0)-(c[Uf>>2]|0)|0;c[$f>>2]=mj;c[ag>>2]=c[(c[Af>>2]|0)+16>>2];c[bg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2);c[cg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2)+4;c[dg>>2]=(c[Mf>>2]|0)+8+1;c[fg>>2]=0;c[gg>>2]=1<<c[(c[Bf>>2]|0)+12>>2];c[hg>>2]=(c[If>>2]|0)-1;c[ig>>2]=3+(c[Gf>>2]|0);c[jg>>2]=c[Gf>>2];while(1){if((c[jg>>2]|0)>>>0>=(c[ig>>2]|0)>>>0){dj=84;break;}aj=c[Ff>>2]|0;if((c[jg>>2]|0)==3)nj=(c[aj>>2]|0)-1|0;else nj=c[aj+(c[jg>>2]<<2)>>2]|0;c[kg>>2]=nj;c[lg>>2]=(c[Mf>>2]|0)-(c[kg>>2]|0);c[mg>>2]=0;if(((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[Yf>>2]|0)|0)>>>0){aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0;if((aj|0)==(mm((c[Cf>>2]|0)+(0-(c[kg>>2]|0))|0,c[Of>>2]|0)|0)){aj=Tj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[Cf>>2]|0)+(c[Of>>2]|0)+(0-(c[kg>>2]|0))|0,c[Df>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}else{c[ng>>2]=(c[Xf>>2]|0)+(c[lg>>2]|0);if((c[Ef>>2]|0?(((c[Yf>>2]|0)-1-(c[lg>>2]|0)|0)>>>0>=3?((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[ag>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0,(aj|0)==(mm(c[ng>>2]|0,c[Of>>2]|0)|0)):0){aj=Uj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[ng>>2]|0)+(c[Of>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}if((c[mg>>2]|0)>>>0>(c[hg>>2]|0)>>>0?(c[hg>>2]=c[mg>>2],c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[jg>>2]|0)-(c[Gf>>2]|0),c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[mg>>2],c[fg>>2]=(c[fg>>2]|0)+1,((c[mg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[mg>>2]|0)|0)==(c[Df>>2]|0))|0):0){dj=82;break;}c[jg>>2]=(c[jg>>2]|0)+1;}do{if((dj|0)==82){dj=0;c[zf>>2]=c[fg>>2];}else if((dj|0)==84){dj=0;if(((c[Jf>>2]|0)==3?(c[hg>>2]|0)>>>0<(c[Jf>>2]|0)>>>0:0)?(c[og>>2]=nm(c[Af>>2]|0,c[Cf>>2]|0)|0,((c[og>>2]|0)>>>0>(c[ag>>2]|0)>>>0?((c[Mf>>2]|0)-(c[og>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ef>>2]|0?(c[og>>2]|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[rg>>2]=(c[Xf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Uj(c[Cf>>2]|0,c[rg>>2]|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;}else{c[qg>>2]=(c[Lf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Tj(c[Cf>>2]|0,c[qg>>2]|0,c[Df>>2]|0)|0;}if((c[pg>>2]|0)>>>0>=(c[Jf>>2]|0)>>>0?(c[hg>>2]=c[pg>>2],c[c[Hf>>2]>>2]=(c[Mf>>2]|0)-(c[og>>2]|0)+2,c[(c[Hf>>2]|0)+4>>2]=c[pg>>2],c[fg>>2]=1,((c[pg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[pg>>2]|0)|0)==(c[Df>>2]|0))|0):0){c[(c[Af>>2]|0)+24>>2]=(c[Mf>>2]|0)+1;c[zf>>2]=1;break;}}c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2]=c[Mf>>2];while(1){aj=c[gg>>2]|0;c[gg>>2]=aj+-1;if(!aj)break;if((c[Rf>>2]|0)>>>0<=(c[ag>>2]|0)>>>0)break;c[sg>>2]=(c[Sf>>2]|0)+((c[Rf>>2]&c[Uf>>2])<<1<<2);c[tg>>2]=(c[Vf>>2]|0)>>>0<(c[Wf>>2]|0)>>>0?c[Vf>>2]|0:c[Wf>>2]|0;if(c[Ef>>2]|0?((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[ug>>2]=(c[Xf>>2]|0)+(c[Rf>>2]|0);aj=Uj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;if(((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0>=(c[Yf>>2]|0)>>>0)c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);}else{c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);aj=Tj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;}if((c[tg>>2]|0)>>>0>(c[hg>>2]|0)>>>0){if((c[tg>>2]|0)>>>0>((c[dg>>2]|0)-(c[Rf>>2]|0)|0)>>>0)c[dg>>2]=(c[Rf>>2]|0)+(c[tg>>2]|0);c[hg>>2]=c[tg>>2];c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[Mf>>2]|0)-(c[Rf>>2]|0)+2;c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[tg>>2];c[fg>>2]=(c[fg>>2]|0)+1;if((c[tg>>2]|0)>>>0>4096)break;if(((c[Cf>>2]|0)+(c[tg>>2]|0)|0)==(c[Df>>2]|0))break;}aj=c[Rf>>2]|0;if((d[(c[ug>>2]|0)+(c[tg>>2]|0)>>0]|0|0)<(d[(c[Cf>>2]|0)+(c[tg>>2]|0)>>0]|0|0)){c[c[bg>>2]>>2]=aj;c[Vf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=109;break;}c[bg>>2]=(c[sg>>2]|0)+4;c[Rf>>2]=c[(c[sg>>2]|0)+4>>2];}else{c[c[cg>>2]>>2]=aj;c[Wf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=112;break;}c[cg>>2]=c[sg>>2];c[Rf>>2]=c[c[sg>>2]>>2];}}if((dj|0)==109){dj=0;c[bg>>2]=eg;}else if((dj|0)==112){dj=0;c[cg>>2]=eg;}c[c[cg>>2]>>2]=0;c[c[bg>>2]>>2]=0;c[(c[Af>>2]|0)+24>>2]=(c[dg>>2]|0)-8;c[zf>>2]=c[fg>>2];}}while(0);c[Ah>>2]=c[zf>>2];break a;}}}}while(0);c[ki>>2]=c[Ah>>2];if(!(c[ki>>2]|0)){c[Vh>>2]=(c[Vh>>2]|0)+1;continue;}c[li>>2]=0;while(1){if((c[li>>2]|0)>>>0>=3)break;c[(c[bi>>2]|0)+16+(c[li>>2]<<2)>>2]=c[(c[Nh>>2]|0)+(c[li>>2]<<2)>>2];c[li>>2]=(c[li>>2]|0)+1;}c[(c[bi>>2]|0)+8>>2]=1;c[(c[bi>>2]|0)+12>>2]=c[ii>>2];c[mi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)+4>>2];do{if((c[mi>>2]|0)>>>0<=(c[$h>>2]|0)>>>0){c[ni>>2]=om(di,c[Wh>>2]|0,c[ii>>2]|0,c[Th>>2]|0)|0;c[oi>>2]=0;while(1){if((c[oi>>2]|0)>>>0>=(c[ai>>2]|0)>>>0)break;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=1073741824;c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=0;while(1){if((c[pi>>2]|0)>>>0>=(c[ki>>2]|0)>>>0)break;c[qi>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)>>2];c[ri>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)+4>>2];pm(si,c[Nh>>2]|0,c[qi>>2]|0,c[ji>>2]|0);while(1){if((c[oi>>2]|0)>>>0>(c[ri>>2]|0)>>>0)break;aj=c[ni>>2]|0;Zh=c[oi>>2]|0;Uh=c[Th>>2]|0;_i=c[Rh>>2]|0;c[yd>>2]=c[qi>>2];c[zd>>2]=Zh;c[Ad>>2]=Uh;c[Bd>>2]=_i;c[Dd>>2]=qm((c[yd>>2]|0)+1|0)|0;c[Ed>>2]=(c[zd>>2]|0)-3;if(c[(c[Ad>>2]|0)+56>>2]|0){_i=(qm((c[Ed>>2]|0)+1|0)|0)+16|0;c[xd>>2]=_i+(c[Dd>>2]|0);}else{_i=(c[Dd>>2]|0)+(c[(c[Ad>>2]|0)+52>>2]|0)|0;c[Cd>>2]=_i-(qm((c[(c[(c[Ad>>2]|0)+12>>2]|0)+(c[Dd>>2]<<2)>>2]|0)+1|0)|0);if((c[Bd>>2]|0)<2&(c[Dd>>2]|0)>>>0>=20)c[Cd>>2]=(c[Cd>>2]|0)+((c[Dd>>2]|0)-19<<1);c[Fd>>2]=rm(c[Ed>>2]|0)|0;_i=(c[5840+(c[Fd>>2]<<2)>>2]|0)+(c[(c[Ad>>2]|0)+48>>2]|0)|0;Uh=_i-(qm((c[(c[(c[Ad>>2]|0)+8>>2]|0)+(c[Fd>>2]<<2)>>2]|0)+1|0)|0)|0;c[Cd>>2]=(c[Cd>>2]|0)+Uh;c[xd>>2]=c[Cd>>2];}c[ti>>2]=aj+(c[xd>>2]|0);c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=c[oi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+4>>2]=c[qi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+12>>2]=c[ii>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=c[ti>>2];aj=(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+16|0;c[aj>>2]=c[si>>2];c[aj+4>>2]=c[si+4>>2];c[aj+8>>2]=c[si+8>>2];c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=(c[pi>>2]|0)+1;}c[fi>>2]=(c[oi>>2]|0)-1;c[ei>>2]=1;b:while(1){if((c[ei>>2]|0)>>>0>(c[fi>>2]|0)>>>0){dj=504;break;}c[ui>>2]=(c[Vh>>2]|0)+(c[ei>>2]|0);if((c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+8>>2]|0)==1)oj=(c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+12>>2]|0)+1|0;else oj=1;c[vi>>2]=oj;if((c[ei>>2]|0)>>>0>(c[vi>>2]|0)>>>0){aj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[vi>>2]|0)|0)*28|0)>>2]|0;c[wi>>2]=aj+(sm((c[ui>>2]|0)+(0-(c[vi>>2]|0))|0,c[vi>>2]|0,c[Th>>2]|0)|0);}else c[wi>>2]=tm(di,c[Wh>>2]|0,c[vi>>2]|0,c[Th>>2]|0)|0;if((c[wi>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0)){c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+4>>2]=0;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]=c[vi>>2];c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]=c[wi>>2];aj=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Uh=(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+16|0;c[aj>>2]=c[Uh>>2];c[aj+4>>2]=c[Uh+4>>2];c[aj+8>>2]=c[Uh+8>>2];}c:do{if((c[ui>>2]|0)>>>0<=(c[Yh>>2]|0)>>>0){if((c[ei>>2]|0)==(c[fi>>2]|0)){dj=504;break b;}if((c[Rh>>2]|0)==0?(c[(c[bi>>2]|0)+(((c[ei>>2]|0)+1|0)*28|0)>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0):0)break;c[xi>>2]=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)!=1&1;if((c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)==1)pj=c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]|0;else pj=0;c[yi>>2]=pj;if((c[ei>>2]|0)>>>0>(c[yi>>2]|0)>>>0)qj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[yi>>2]|0)|0)*28|0)>>2]|0;else qj=0;c[zi>>2]=qj;Uh=c[zi>>2]|0;c[Ai>>2]=Uh+(um((c[ui>>2]|0)+(0-(c[yi>>2]|0))|0,c[yi>>2]|0,c[Th>>2]|0)|0);Uh=c[Oh>>2]|0;aj=c[ui>>2]|0;_i=c[Xh>>2]|0;Zh=c[Sh>>2]|0;Zi=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Ph=c[xi>>2]|0;Qh=c[ci>>2]|0;_h=c[ai>>2]|0;c[nd>>2]=c[Lh>>2];c[od>>2]=Uh;c[pd>>2]=aj;c[qd>>2]=_i;c[rd>>2]=Zh;c[sd>>2]=Zi;c[td>>2]=Ph;c[ud>>2]=Qh;c[vd>>2]=_h;c[wd>>2]=c[(c[od>>2]|0)+16>>2];d:do{if((c[pd>>2]|0)>>>0<((c[(c[nd>>2]|0)+4>>2]|0)+(c[(c[nd>>2]|0)+24>>2]|0)|0)>>>0)c[md>>2]=0;else{_h=c[od>>2]|0;Qh=c[pd>>2]|0;Ph=c[qd>>2]|0;Zi=c[wd>>2]|0;Zh=c[rd>>2]|0;c[dd>>2]=c[nd>>2];c[ed>>2]=_h;c[fd>>2]=Qh;c[gd>>2]=Ph;c[hd>>2]=Zi;c[id>>2]=Zh;c[jd>>2]=c[(c[dd>>2]|0)+4>>2];c[kd>>2]=(c[fd>>2]|0)-(c[jd>>2]|0);c[ld>>2]=c[(c[dd>>2]|0)+24>>2];while(1){if((c[ld>>2]|0)>>>0>=(c[kd>>2]|0)>>>0)break;Zh=Rj(c[dd>>2]|0,c[ed>>2]|0,(c[jd>>2]|0)+(c[ld>>2]|0)|0,c[gd>>2]|0,c[hd>>2]|0,c[id>>2]|0)|0;c[ld>>2]=(c[ld>>2]|0)+Zh;}c[(c[dd>>2]|0)+24>>2]=c[kd>>2];switch(c[wd>>2]|0){case 3:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[ic>>2]=c[nd>>2];c[jc>>2]=Zh;c[kc>>2]=Zi;c[lc>>2]=Ph;c[mc>>2]=Qh;c[nc>>2]=_h;c[oc>>2]=_i;c[pc>>2]=aj;c[qc>>2]=Uh;c[rc>>2]=3;if((c[(c[jc>>2]|0)+20>>2]|0)>>>0<4095)rj=c[(c[jc>>2]|0)+20>>2]|0;else rj=4095;c[sc>>2]=rj;c[tc>>2]=c[(c[ic>>2]|0)+4>>2];c[uc>>2]=(c[kc>>2]|0)-(c[tc>>2]|0);c[vc>>2]=c[(c[jc>>2]|0)+8>>2];c[wc>>2]=(c[rc>>2]|0)==3?3:4;c[xc>>2]=c[(c[ic>>2]|0)+36>>2];c[yc>>2]=Sj(c[kc>>2]|0,c[vc>>2]|0,c[rc>>2]|0)|0;c[zc>>2]=c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2];c[Ac>>2]=c[(c[ic>>2]|0)+44>>2];c[Bc>>2]=(c[(c[jc>>2]|0)+4>>2]|0)-1;c[Cc>>2]=(1<<c[Bc>>2])-1;c[Dc>>2]=0;c[Ec>>2]=0;c[Fc>>2]=c[(c[ic>>2]|0)+8>>2];c[Gc>>2]=c[(c[ic>>2]|0)+12>>2];c[Hc>>2]=(c[Fc>>2]|0)+(c[Gc>>2]|0);c[Ic>>2]=(c[tc>>2]|0)+(c[Gc>>2]|0);if((c[Cc>>2]|0)>>>0>=(c[uc>>2]|0)>>>0)sj=0;else sj=(c[uc>>2]|0)-(c[Cc>>2]|0)|0;c[Jc>>2]=sj;c[Kc>>2]=c[(c[ic>>2]|0)+16>>2];c[Lc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2);c[Mc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2)+4;c[Nc>>2]=(c[uc>>2]|0)+8+1;c[Pc>>2]=0;c[Qc>>2]=1<<c[(c[jc>>2]|0)+12>>2];c[Rc>>2]=(c[qc>>2]|0)-1;c[Sc>>2]=3+(c[oc>>2]|0);c[Tc>>2]=c[oc>>2];while(1){if((c[Tc>>2]|0)>>>0>=(c[Sc>>2]|0)>>>0){dj=287;break;}Uh=c[nc>>2]|0;if((c[Tc>>2]|0)==3)tj=(c[Uh>>2]|0)-1|0;else tj=c[Uh+(c[Tc>>2]<<2)>>2]|0;c[Uc>>2]=tj;c[Vc>>2]=(c[uc>>2]|0)-(c[Uc>>2]|0);c[Wc>>2]=0;do{if(((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Gc>>2]|0)|0)>>>0){Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm((c[kc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[wc>>2]|0)|0))break;Uh=Tj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[kc>>2]|0)+(c[wc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[lc>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}else{c[Xc>>2]=(c[Fc>>2]|0)+(c[Vc>>2]|0);if(!(c[mc>>2]|0))break;if(!((((c[Gc>>2]|0)-1-(c[Vc>>2]|0)|0)>>>0>=3?((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Kc>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm(c[Xc>>2]|0,c[wc>>2]|0)|0))break;Uh=Uj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[Xc>>2]|0)+(c[wc>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}}while(0);if((c[Wc>>2]|0)>>>0>(c[Rc>>2]|0)>>>0?(c[Rc>>2]=c[Wc>>2],c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[Tc>>2]|0)-(c[oc>>2]|0),c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[Wc>>2],c[Pc>>2]=(c[Pc>>2]|0)+1,((c[Wc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Wc>>2]|0)|0)==(c[lc>>2]|0))|0):0){dj=285;break;}c[Tc>>2]=(c[Tc>>2]|0)+1;}e:do{if((dj|0)==285){dj=0;c[hc>>2]=c[Pc>>2];}else if((dj|0)==287){dj=0;do{if((c[rc>>2]|0)==3){if((c[Rc>>2]|0)>>>0>=(c[rc>>2]|0)>>>0)break;c[Yc>>2]=nm(c[ic>>2]|0,c[kc>>2]|0)|0;if(!(((c[Yc>>2]|0)>>>0>(c[Kc>>2]|0)>>>0?((c[uc>>2]|0)-(c[Yc>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[mc>>2]|0){if((c[Yc>>2]|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=292;break;}c[$c>>2]=(c[Fc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Uj(c[kc>>2]|0,c[$c>>2]|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;}else dj=292;}while(0);if((dj|0)==292){dj=0;c[_c>>2]=(c[tc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Tj(c[kc>>2]|0,c[_c>>2]|0,c[lc>>2]|0)|0;}if((c[Zc>>2]|0)>>>0<(c[rc>>2]|0)>>>0)break;c[Rc>>2]=c[Zc>>2];c[c[pc>>2]>>2]=(c[uc>>2]|0)-(c[Yc>>2]|0)+2;c[(c[pc>>2]|0)+4>>2]=c[Zc>>2];c[Pc>>2]=1;if(!(((c[Zc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Zc>>2]|0)|0)==(c[lc>>2]|0))|0))break;c[(c[ic>>2]|0)+24>>2]=(c[uc>>2]|0)+1;c[hc>>2]=1;break e;}}while(0);c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2]=c[uc>>2];while(1){Uh=c[Qc>>2]|0;c[Qc>>2]=Uh+-1;if(!Uh)break;if((c[zc>>2]|0)>>>0<=(c[Kc>>2]|0)>>>0)break;c[ad>>2]=(c[Ac>>2]|0)+((c[zc>>2]&c[Cc>>2])<<1<<2);c[bd>>2]=(c[Dc>>2]|0)>>>0<(c[Ec>>2]|0)>>>0?c[Dc>>2]|0:c[Ec>>2]|0;do{if(c[mc>>2]|0){if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=302;break;}c[cd>>2]=(c[Fc>>2]|0)+(c[zc>>2]|0);Uh=Uj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0<(c[Gc>>2]|0)>>>0)break;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);}else dj=302;}while(0);if((dj|0)==302){dj=0;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);Uh=Tj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;}if((c[bd>>2]|0)>>>0>(c[Rc>>2]|0)>>>0){if((c[bd>>2]|0)>>>0>((c[Nc>>2]|0)-(c[zc>>2]|0)|0)>>>0)c[Nc>>2]=(c[zc>>2]|0)+(c[bd>>2]|0);c[Rc>>2]=c[bd>>2];c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[uc>>2]|0)-(c[zc>>2]|0)+2;c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[bd>>2];c[Pc>>2]=(c[Pc>>2]|0)+1;if((c[bd>>2]|0)>>>0>4096)break;if(((c[kc>>2]|0)+(c[bd>>2]|0)|0)==(c[lc>>2]|0))break;}Uh=c[zc>>2]|0;if((d[(c[cd>>2]|0)+(c[bd>>2]|0)>>0]|0|0)<(d[(c[kc>>2]|0)+(c[bd>>2]|0)>>0]|0|0)){c[c[Lc>>2]>>2]=Uh;c[Dc>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=312;break;}c[Lc>>2]=(c[ad>>2]|0)+4;c[zc>>2]=c[(c[ad>>2]|0)+4>>2];}else{c[c[Mc>>2]>>2]=Uh;c[Ec>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=315;break;}c[Mc>>2]=c[ad>>2];c[zc>>2]=c[c[ad>>2]>>2];}}if((dj|0)==312){dj=0;c[Lc>>2]=Oc;}else if((dj|0)==315){dj=0;c[Mc>>2]=Oc;}c[c[Mc>>2]>>2]=0;c[c[Lc>>2]>>2]=0;c[(c[ic>>2]|0)+24>>2]=(c[Nc>>2]|0)-8;c[hc>>2]=c[Pc>>2];}}while(0);c[md>>2]=c[hc>>2];break d;break;}case 7:case 6:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[u>>2]=c[nd>>2];c[v>>2]=Uh;c[w>>2]=aj;c[x>>2]=_i;c[y>>2]=_h;c[z>>2]=Qh;c[A>>2]=Ph;c[B>>2]=Zi;c[C>>2]=Zh;c[D>>2]=6;if((c[(c[v>>2]|0)+20>>2]|0)>>>0<4095)uj=c[(c[v>>2]|0)+20>>2]|0;else uj=4095;c[E>>2]=uj;c[F>>2]=c[(c[u>>2]|0)+4>>2];c[G>>2]=(c[w>>2]|0)-(c[F>>2]|0);c[H>>2]=c[(c[v>>2]|0)+8>>2];c[I>>2]=(c[D>>2]|0)==3?3:4;c[J>>2]=c[(c[u>>2]|0)+36>>2];c[K>>2]=Sj(c[w>>2]|0,c[H>>2]|0,c[D>>2]|0)|0;c[L>>2]=c[(c[J>>2]|0)+(c[K>>2]<<2)>>2];c[M>>2]=c[(c[u>>2]|0)+44>>2];c[N>>2]=(c[(c[v>>2]|0)+4>>2]|0)-1;c[O>>2]=(1<<c[N>>2])-1;c[P>>2]=0;c[Q>>2]=0;c[R>>2]=c[(c[u>>2]|0)+8>>2];c[S>>2]=c[(c[u>>2]|0)+12>>2];c[T>>2]=(c[R>>2]|0)+(c[S>>2]|0);c[U>>2]=(c[F>>2]|0)+(c[S>>2]|0);if((c[O>>2]|0)>>>0>=(c[G>>2]|0)>>>0)vj=0;else vj=(c[G>>2]|0)-(c[O>>2]|0)|0;c[V>>2]=vj;c[W>>2]=c[(c[u>>2]|0)+16>>2];c[X>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2);c[Y>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2)+4;c[Z>>2]=(c[G>>2]|0)+8+1;c[$>>2]=0;c[aa>>2]=1<<c[(c[v>>2]|0)+12>>2];c[ba>>2]=(c[C>>2]|0)-1;c[ca>>2]=3+(c[A>>2]|0);c[da>>2]=c[A>>2];while(1){if((c[da>>2]|0)>>>0>=(c[ca>>2]|0)>>>0){dj=446;break;}Zh=c[z>>2]|0;if((c[da>>2]|0)==3)wj=(c[Zh>>2]|0)-1|0;else wj=c[Zh+(c[da>>2]<<2)>>2]|0;c[ea>>2]=wj;c[fa>>2]=(c[G>>2]|0)-(c[ea>>2]|0);c[ga>>2]=0;do{if(((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[S>>2]|0)|0)>>>0){Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm((c[w>>2]|0)+(0-(c[ea>>2]|0))|0,c[I>>2]|0)|0))break;Zh=Tj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[w>>2]|0)+(c[I>>2]|0)+(0-(c[ea>>2]|0))|0,c[x>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}else{c[ha>>2]=(c[R>>2]|0)+(c[fa>>2]|0);if(!(c[y>>2]|0))break;if(!((((c[S>>2]|0)-1-(c[fa>>2]|0)|0)>>>0>=3?((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[W>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm(c[ha>>2]|0,c[I>>2]|0)|0))break;Zh=Uj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[ha>>2]|0)+(c[I>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}}while(0);if((c[ga>>2]|0)>>>0>(c[ba>>2]|0)>>>0?(c[ba>>2]=c[ga>>2],c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[da>>2]|0)-(c[A>>2]|0),c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[ga>>2],c[$>>2]=(c[$>>2]|0)+1,((c[ga>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ga>>2]|0)|0)==(c[x>>2]|0))|0):0){dj=444;break;}c[da>>2]=(c[da>>2]|0)+1;}f:do{if((dj|0)==444){dj=0;c[t>>2]=c[$>>2];}else if((dj|0)==446){dj=0;do{if((c[D>>2]|0)==3){if((c[ba>>2]|0)>>>0>=(c[D>>2]|0)>>>0)break;c[ia>>2]=nm(c[u>>2]|0,c[w>>2]|0)|0;if(!(((c[ia>>2]|0)>>>0>(c[W>>2]|0)>>>0?((c[G>>2]|0)-(c[ia>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[y>>2]|0){if((c[ia>>2]|0)>>>0>=(c[S>>2]|0)>>>0){dj=451;break;}c[la>>2]=(c[R>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Uj(c[w>>2]|0,c[la>>2]|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;}else dj=451;}while(0);if((dj|0)==451){dj=0;c[ka>>2]=(c[F>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Tj(c[w>>2]|0,c[ka>>2]|0,c[x>>2]|0)|0;}if((c[ja>>2]|0)>>>0<(c[D>>2]|0)>>>0)break;c[ba>>2]=c[ja>>2];c[c[B>>2]>>2]=(c[G>>2]|0)-(c[ia>>2]|0)+2;c[(c[B>>2]|0)+4>>2]=c[ja>>2];c[$>>2]=1;if(!(((c[ja>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ja>>2]|0)|0)==(c[x>>2]|0))|0))break;c[(c[u>>2]|0)+24>>2]=(c[G>>2]|0)+1;c[t>>2]=1;break f;}}while(0);c[(c[J>>2]|0)+(c[K>>2]<<2)>>2]=c[G>>2];while(1){Zh=c[aa>>2]|0;c[aa>>2]=Zh+-1;if(!Zh)break;if((c[L>>2]|0)>>>0<=(c[W>>2]|0)>>>0)break;c[ma>>2]=(c[M>>2]|0)+((c[L>>2]&c[O>>2])<<1<<2);c[na>>2]=(c[P>>2]|0)>>>0<(c[Q>>2]|0)>>>0?c[P>>2]|0:c[Q>>2]|0;do{if(c[y>>2]|0){if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0>=(c[S>>2]|0)>>>0){dj=461;break;}c[oa>>2]=(c[R>>2]|0)+(c[L>>2]|0);Zh=Uj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0<(c[S>>2]|0)>>>0)break;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);}else dj=461;}while(0);if((dj|0)==461){dj=0;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);Zh=Tj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;}if((c[na>>2]|0)>>>0>(c[ba>>2]|0)>>>0){if((c[na>>2]|0)>>>0>((c[Z>>2]|0)-(c[L>>2]|0)|0)>>>0)c[Z>>2]=(c[L>>2]|0)+(c[na>>2]|0);c[ba>>2]=c[na>>2];c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[G>>2]|0)-(c[L>>2]|0)+2;c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[na>>2];c[$>>2]=(c[$>>2]|0)+1;if((c[na>>2]|0)>>>0>4096)break;if(((c[w>>2]|0)+(c[na>>2]|0)|0)==(c[x>>2]|0))break;}Zh=c[L>>2]|0;if((d[(c[oa>>2]|0)+(c[na>>2]|0)>>0]|0|0)<(d[(c[w>>2]|0)+(c[na>>2]|0)>>0]|0|0)){c[c[X>>2]>>2]=Zh;c[P>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=471;break;}c[X>>2]=(c[ma>>2]|0)+4;c[L>>2]=c[(c[ma>>2]|0)+4>>2];}else{c[c[Y>>2]>>2]=Zh;c[Q>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=474;break;}c[Y>>2]=c[ma>>2];c[L>>2]=c[c[ma>>2]>>2];}}if((dj|0)==471){dj=0;c[X>>2]=_;}else if((dj|0)==474){dj=0;c[Y>>2]=_;}c[c[Y>>2]>>2]=0;c[c[X>>2]>>2]=0;c[(c[u>>2]|0)+24>>2]=(c[Z>>2]|0)-8;c[t>>2]=c[$>>2];}}while(0);c[md>>2]=c[t>>2];break d;break;}case 5:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[qa>>2]=c[nd>>2];c[ra>>2]=Zh;c[sa>>2]=Zi;c[ta>>2]=Ph;c[ua>>2]=Qh;c[va>>2]=_h;c[wa>>2]=_i;c[xa>>2]=aj;c[ya>>2]=Uh;c[za>>2]=5;if((c[(c[ra>>2]|0)+20>>2]|0)>>>0<4095)xj=c[(c[ra>>2]|0)+20>>2]|0;else xj=4095;c[Aa>>2]=xj;c[Ba>>2]=c[(c[qa>>2]|0)+4>>2];c[Ca>>2]=(c[sa>>2]|0)-(c[Ba>>2]|0);c[Da>>2]=c[(c[ra>>2]|0)+8>>2];c[Ea>>2]=(c[za>>2]|0)==3?3:4;c[Fa>>2]=c[(c[qa>>2]|0)+36>>2];c[Ga>>2]=Sj(c[sa>>2]|0,c[Da>>2]|0,c[za>>2]|0)|0;c[Ha>>2]=c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2];c[Ia>>2]=c[(c[qa>>2]|0)+44>>2];c[Ja>>2]=(c[(c[ra>>2]|0)+4>>2]|0)-1;c[Ka>>2]=(1<<c[Ja>>2])-1;c[La>>2]=0;c[Ma>>2]=0;c[Na>>2]=c[(c[qa>>2]|0)+8>>2];c[Oa>>2]=c[(c[qa>>2]|0)+12>>2];c[Pa>>2]=(c[Na>>2]|0)+(c[Oa>>2]|0);c[Qa>>2]=(c[Ba>>2]|0)+(c[Oa>>2]|0);if((c[Ka>>2]|0)>>>0>=(c[Ca>>2]|0)>>>0)yj=0;else yj=(c[Ca>>2]|0)-(c[Ka>>2]|0)|0;c[Ra>>2]=yj;c[Sa>>2]=c[(c[qa>>2]|0)+16>>2];c[Ta>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2);c[Ua>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2)+4;c[Va>>2]=(c[Ca>>2]|0)+8+1;c[Xa>>2]=0;c[Ya>>2]=1<<c[(c[ra>>2]|0)+12>>2];c[Za>>2]=(c[ya>>2]|0)-1;c[_a>>2]=3+(c[wa>>2]|0);c[$a>>2]=c[wa>>2];while(1){if((c[$a>>2]|0)>>>0>=(c[_a>>2]|0)>>>0){dj=393;break;}Uh=c[va>>2]|0;if((c[$a>>2]|0)==3)zj=(c[Uh>>2]|0)-1|0;else zj=c[Uh+(c[$a>>2]<<2)>>2]|0;c[ab>>2]=zj;c[bb>>2]=(c[Ca>>2]|0)-(c[ab>>2]|0);c[cb>>2]=0;do{if(((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Oa>>2]|0)|0)>>>0){Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm((c[sa>>2]|0)+(0-(c[ab>>2]|0))|0,c[Ea>>2]|0)|0))break;Uh=Tj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[sa>>2]|0)+(c[Ea>>2]|0)+(0-(c[ab>>2]|0))|0,c[ta>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}else{c[db>>2]=(c[Na>>2]|0)+(c[bb>>2]|0);if(!(c[ua>>2]|0))break;if(!((((c[Oa>>2]|0)-1-(c[bb>>2]|0)|0)>>>0>=3?((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Sa>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm(c[db>>2]|0,c[Ea>>2]|0)|0))break;Uh=Uj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[db>>2]|0)+(c[Ea>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}}while(0);if((c[cb>>2]|0)>>>0>(c[Za>>2]|0)>>>0?(c[Za>>2]=c[cb>>2],c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[$a>>2]|0)-(c[wa>>2]|0),c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[cb>>2],c[Xa>>2]=(c[Xa>>2]|0)+1,((c[cb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[cb>>2]|0)|0)==(c[ta>>2]|0))|0):0){dj=391;break;}c[$a>>2]=(c[$a>>2]|0)+1;}g:do{if((dj|0)==391){dj=0;c[pa>>2]=c[Xa>>2];}else if((dj|0)==393){dj=0;do{if((c[za>>2]|0)==3){if((c[Za>>2]|0)>>>0>=(c[za>>2]|0)>>>0)break;c[eb>>2]=nm(c[qa>>2]|0,c[sa>>2]|0)|0;if(!(((c[eb>>2]|0)>>>0>(c[Sa>>2]|0)>>>0?((c[Ca>>2]|0)-(c[eb>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[ua>>2]|0){if((c[eb>>2]|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=398;break;}c[hb>>2]=(c[Na>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Uj(c[sa>>2]|0,c[hb>>2]|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;}else dj=398;}while(0);if((dj|0)==398){dj=0;c[gb>>2]=(c[Ba>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Tj(c[sa>>2]|0,c[gb>>2]|0,c[ta>>2]|0)|0;}if((c[fb>>2]|0)>>>0<(c[za>>2]|0)>>>0)break;c[Za>>2]=c[fb>>2];c[c[xa>>2]>>2]=(c[Ca>>2]|0)-(c[eb>>2]|0)+2;c[(c[xa>>2]|0)+4>>2]=c[fb>>2];c[Xa>>2]=1;if(!(((c[fb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[fb>>2]|0)|0)==(c[ta>>2]|0))|0))break;c[(c[qa>>2]|0)+24>>2]=(c[Ca>>2]|0)+1;c[pa>>2]=1;break g;}}while(0);c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2]=c[Ca>>2];while(1){Uh=c[Ya>>2]|0;c[Ya>>2]=Uh+-1;if(!Uh)break;if((c[Ha>>2]|0)>>>0<=(c[Sa>>2]|0)>>>0)break;c[ib>>2]=(c[Ia>>2]|0)+((c[Ha>>2]&c[Ka>>2])<<1<<2);c[jb>>2]=(c[La>>2]|0)>>>0<(c[Ma>>2]|0)>>>0?c[La>>2]|0:c[Ma>>2]|0;do{if(c[ua>>2]|0){if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=408;break;}c[kb>>2]=(c[Na>>2]|0)+(c[Ha>>2]|0);Uh=Uj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0<(c[Oa>>2]|0)>>>0)break;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);}else dj=408;}while(0);if((dj|0)==408){dj=0;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);Uh=Tj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;}if((c[jb>>2]|0)>>>0>(c[Za>>2]|0)>>>0){if((c[jb>>2]|0)>>>0>((c[Va>>2]|0)-(c[Ha>>2]|0)|0)>>>0)c[Va>>2]=(c[Ha>>2]|0)+(c[jb>>2]|0);c[Za>>2]=c[jb>>2];c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[Ca>>2]|0)-(c[Ha>>2]|0)+2;c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[jb>>2];c[Xa>>2]=(c[Xa>>2]|0)+1;if((c[jb>>2]|0)>>>0>4096)break;if(((c[sa>>2]|0)+(c[jb>>2]|0)|0)==(c[ta>>2]|0))break;}Uh=c[Ha>>2]|0;if((d[(c[kb>>2]|0)+(c[jb>>2]|0)>>0]|0|0)<(d[(c[sa>>2]|0)+(c[jb>>2]|0)>>0]|0|0)){c[c[Ta>>2]>>2]=Uh;c[La>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=418;break;}c[Ta>>2]=(c[ib>>2]|0)+4;c[Ha>>2]=c[(c[ib>>2]|0)+4>>2];}else{c[c[Ua>>2]>>2]=Uh;c[Ma>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=421;break;}c[Ua>>2]=c[ib>>2];c[Ha>>2]=c[c[ib>>2]>>2];}}if((dj|0)==418){dj=0;c[Ta>>2]=Wa;}else if((dj|0)==421){dj=0;c[Ua>>2]=Wa;}c[c[Ua>>2]>>2]=0;c[c[Ta>>2]>>2]=0;c[(c[qa>>2]|0)+24>>2]=(c[Va>>2]|0)-8;c[pa>>2]=c[Xa>>2];}}while(0);c[md>>2]=c[pa>>2];break d;break;}default:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[mb>>2]=c[nd>>2];c[nb>>2]=Uh;c[ob>>2]=aj;c[pb>>2]=_i;c[qb>>2]=_h;c[rb>>2]=Qh;c[sb>>2]=Ph;c[tb>>2]=Zi;c[ub>>2]=Zh;c[vb>>2]=4;if((c[(c[nb>>2]|0)+20>>2]|0)>>>0<4095)Aj=c[(c[nb>>2]|0)+20>>2]|0;else Aj=4095;c[wb>>2]=Aj;c[xb>>2]=c[(c[mb>>2]|0)+4>>2];c[yb>>2]=(c[ob>>2]|0)-(c[xb>>2]|0);c[zb>>2]=c[(c[nb>>2]|0)+8>>2];c[Ab>>2]=(c[vb>>2]|0)==3?3:4;c[Bb>>2]=c[(c[mb>>2]|0)+36>>2];c[Cb>>2]=Sj(c[ob>>2]|0,c[zb>>2]|0,c[vb>>2]|0)|0;c[Db>>2]=c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2];c[Eb>>2]=c[(c[mb>>2]|0)+44>>2];c[Fb>>2]=(c[(c[nb>>2]|0)+4>>2]|0)-1;c[Gb>>2]=(1<<c[Fb>>2])-1;c[Hb>>2]=0;c[Ib>>2]=0;c[Jb>>2]=c[(c[mb>>2]|0)+8>>2];c[Kb>>2]=c[(c[mb>>2]|0)+12>>2];c[Lb>>2]=(c[Jb>>2]|0)+(c[Kb>>2]|0);c[Mb>>2]=(c[xb>>2]|0)+(c[Kb>>2]|0);if((c[Gb>>2]|0)>>>0>=(c[yb>>2]|0)>>>0)Bj=0;else Bj=(c[yb>>2]|0)-(c[Gb>>2]|0)|0;c[Nb>>2]=Bj;c[Ob>>2]=c[(c[mb>>2]|0)+16>>2];c[Pb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2);c[Qb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2)+4;c[Rb>>2]=(c[yb>>2]|0)+8+1;c[Tb>>2]=0;c[Ub>>2]=1<<c[(c[nb>>2]|0)+12>>2];c[Vb>>2]=(c[ub>>2]|0)-1;c[Wb>>2]=3+(c[sb>>2]|0);c[Xb>>2]=c[sb>>2];while(1){if((c[Xb>>2]|0)>>>0>=(c[Wb>>2]|0)>>>0){dj=340;break;}Zh=c[rb>>2]|0;if((c[Xb>>2]|0)==3)Cj=(c[Zh>>2]|0)-1|0;else Cj=c[Zh+(c[Xb>>2]<<2)>>2]|0;c[Yb>>2]=Cj;c[Zb>>2]=(c[yb>>2]|0)-(c[Yb>>2]|0);c[_b>>2]=0;do{if(((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Kb>>2]|0)|0)>>>0){Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm((c[ob>>2]|0)+(0-(c[Yb>>2]|0))|0,c[Ab>>2]|0)|0))break;Zh=Tj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[ob>>2]|0)+(c[Ab>>2]|0)+(0-(c[Yb>>2]|0))|0,c[pb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}else{c[$b>>2]=(c[Jb>>2]|0)+(c[Zb>>2]|0);if(!(c[qb>>2]|0))break;if(!((((c[Kb>>2]|0)-1-(c[Zb>>2]|0)|0)>>>0>=3?((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Ob>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm(c[$b>>2]|0,c[Ab>>2]|0)|0))break;Zh=Uj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[$b>>2]|0)+(c[Ab>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}}while(0);if((c[_b>>2]|0)>>>0>(c[Vb>>2]|0)>>>0?(c[Vb>>2]=c[_b>>2],c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[Xb>>2]|0)-(c[sb>>2]|0),c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[_b>>2],c[Tb>>2]=(c[Tb>>2]|0)+1,((c[_b>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[_b>>2]|0)|0)==(c[pb>>2]|0))|0):0){dj=338;break;}c[Xb>>2]=(c[Xb>>2]|0)+1;}h:do{if((dj|0)==338){dj=0;c[lb>>2]=c[Tb>>2];}else if((dj|0)==340){dj=0;do{if((c[vb>>2]|0)==3){if((c[Vb>>2]|0)>>>0>=(c[vb>>2]|0)>>>0)break;c[ac>>2]=nm(c[mb>>2]|0,c[ob>>2]|0)|0;if(!(((c[ac>>2]|0)>>>0>(c[Ob>>2]|0)>>>0?((c[yb>>2]|0)-(c[ac>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[qb>>2]|0){if((c[ac>>2]|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=345;break;}c[dc>>2]=(c[Jb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Uj(c[ob>>2]|0,c[dc>>2]|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;}else dj=345;}while(0);if((dj|0)==345){dj=0;c[cc>>2]=(c[xb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Tj(c[ob>>2]|0,c[cc>>2]|0,c[pb>>2]|0)|0;}if((c[bc>>2]|0)>>>0<(c[vb>>2]|0)>>>0)break;c[Vb>>2]=c[bc>>2];c[c[tb>>2]>>2]=(c[yb>>2]|0)-(c[ac>>2]|0)+2;c[(c[tb>>2]|0)+4>>2]=c[bc>>2];c[Tb>>2]=1;if(!(((c[bc>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[bc>>2]|0)|0)==(c[pb>>2]|0))|0))break;c[(c[mb>>2]|0)+24>>2]=(c[yb>>2]|0)+1;c[lb>>2]=1;break h;}}while(0);c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2]=c[yb>>2];while(1){Zh=c[Ub>>2]|0;c[Ub>>2]=Zh+-1;if(!Zh)break;if((c[Db>>2]|0)>>>0<=(c[Ob>>2]|0)>>>0)break;c[ec>>2]=(c[Eb>>2]|0)+((c[Db>>2]&c[Gb>>2])<<1<<2);c[fc>>2]=(c[Hb>>2]|0)>>>0<(c[Ib>>2]|0)>>>0?c[Hb>>2]|0:c[Ib>>2]|0;do{if(c[qb>>2]|0){if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=355;break;}c[gc>>2]=(c[Jb>>2]|0)+(c[Db>>2]|0);Zh=Uj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0<(c[Kb>>2]|0)>>>0)break;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);}else dj=355;}while(0);if((dj|0)==355){dj=0;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);Zh=Tj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;}if((c[fc>>2]|0)>>>0>(c[Vb>>2]|0)>>>0){if((c[fc>>2]|0)>>>0>((c[Rb>>2]|0)-(c[Db>>2]|0)|0)>>>0)c[Rb>>2]=(c[Db>>2]|0)+(c[fc>>2]|0);c[Vb>>2]=c[fc>>2];c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[yb>>2]|0)-(c[Db>>2]|0)+2;c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[fc>>2];c[Tb>>2]=(c[Tb>>2]|0)+1;if((c[fc>>2]|0)>>>0>4096)break;if(((c[ob>>2]|0)+(c[fc>>2]|0)|0)==(c[pb>>2]|0))break;}Zh=c[Db>>2]|0;if((d[(c[gc>>2]|0)+(c[fc>>2]|0)>>0]|0|0)<(d[(c[ob>>2]|0)+(c[fc>>2]|0)>>0]|0|0)){c[c[Pb>>2]>>2]=Zh;c[Hb>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=365;break;}c[Pb>>2]=(c[ec>>2]|0)+4;c[Db>>2]=c[(c[ec>>2]|0)+4>>2];}else{c[c[Qb>>2]>>2]=Zh;c[Ib>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=368;break;}c[Qb>>2]=c[ec>>2];c[Db>>2]=c[c[ec>>2]>>2];}}if((dj|0)==365){dj=0;c[Pb>>2]=Sb;}else if((dj|0)==368){dj=0;c[Qb>>2]=Sb;}c[c[Qb>>2]>>2]=0;c[c[Pb>>2]>>2]=0;c[(c[mb>>2]|0)+24>>2]=(c[Rb>>2]|0)-8;c[lb>>2]=c[Tb>>2];}}while(0);c[md>>2]=c[lb>>2];break d;}}}}while(0);c[Bi>>2]=c[md>>2];if(c[Bi>>2]|0){c[Di>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)+4>>2];if(((c[Di>>2]|0)>>>0>(c[$h>>2]|0)>>>0?1:((c[ei>>2]|0)+(c[Di>>2]|0)|0)>>>0>=4096)|0){dj=481;break b;}c[Ci>>2]=0;while(1){if((c[Ci>>2]|0)>>>0>=(c[Bi>>2]|0)>>>0)break c;c[Ei>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)>>2];pm(Fi,(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0,c[Ei>>2]|0,c[xi>>2]|0);c[Gi>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)+4>>2];if((c[Ci>>2]|0)>>>0>0)Dj=(c[(c[ci>>2]|0)+((c[Ci>>2]|0)-1<<3)+4>>2]|0)+1|0;else Dj=c[ai>>2]|0;c[Hi>>2]=Dj;c[Ii>>2]=c[Gi>>2];i:while(1){if((c[Ii>>2]|0)>>>0<(c[Hi>>2]|0)>>>0)break;c[Ji>>2]=(c[ei>>2]|0)+(c[Ii>>2]|0);Zh=c[Ai>>2]|0;Zi=c[Ii>>2]|0;Ph=c[Th>>2]|0;Qh=c[Rh>>2]|0;c[k>>2]=c[Ei>>2];c[m>>2]=Zi;c[n>>2]=Ph;c[o>>2]=Qh;c[q>>2]=qm((c[k>>2]|0)+1|0)|0;c[r>>2]=(c[m>>2]|0)-3;if(c[(c[n>>2]|0)+56>>2]|0){Qh=(qm((c[r>>2]|0)+1|0)|0)+16|0;c[j>>2]=Qh+(c[q>>2]|0);}else{Qh=(c[q>>2]|0)+(c[(c[n>>2]|0)+52>>2]|0)|0;c[p>>2]=Qh-(qm((c[(c[(c[n>>2]|0)+12>>2]|0)+(c[q>>2]<<2)>>2]|0)+1|0)|0);if((c[o>>2]|0)<2&(c[q>>2]|0)>>>0>=20)c[p>>2]=(c[p>>2]|0)+((c[q>>2]|0)-19<<1);c[s>>2]=rm(c[r>>2]|0)|0;Qh=(c[5840+(c[s>>2]<<2)>>2]|0)+(c[(c[n>>2]|0)+48>>2]|0)|0;Ph=Qh-(qm((c[(c[(c[n>>2]|0)+8>>2]|0)+(c[s>>2]<<2)>>2]|0)+1|0)|0)|0;c[p>>2]=(c[p>>2]|0)+Ph;c[j>>2]=c[p>>2];}c[Ki>>2]=Zh+(c[j>>2]|0);do{if((c[Ji>>2]|0)>>>0<=(c[fi>>2]|0)>>>0){if((c[Ki>>2]|0)<(c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]|0)){dj=496;break;}if(!(c[Rh>>2]|0))break i;}else dj=496;}while(0);if((dj|0)==496){dj=0;while(1){if((c[fi>>2]|0)>>>0>=(c[Ji>>2]|0)>>>0)break;c[(c[bi>>2]|0)+(((c[fi>>2]|0)+1|0)*28|0)>>2]=1073741824;c[fi>>2]=(c[fi>>2]|0)+1;}c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+8>>2]=c[Ii>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+4>>2]=c[Ei>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+12>>2]=c[yi>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]=c[Ki>>2];Zh=(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+16|0;c[Zh>>2]=c[Fi>>2];c[Zh+4>>2]=c[Fi+4>>2];c[Zh+8>>2]=c[Fi+8>>2];}c[Ii>>2]=(c[Ii>>2]|0)+-1;}c[Ci>>2]=(c[Ci>>2]|0)+1;}}}}while(0);c[ei>>2]=(c[ei>>2]|0)+1;}if((dj|0)==481){dj=0;c[gi>>2]=c[Di>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)>>2];c[fi>>2]=(c[ei>>2]|0)+1;break;}else if((dj|0)==504){dj=0;c[gi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+8>>2];c[hi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+4>>2];c[ei>>2]=(c[fi>>2]|0)-(c[gi>>2]|0);break;}}else{c[gi>>2]=c[mi>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)>>2];c[ei>>2]=0;c[fi>>2]=1;}}while(0);c[Li>>2]=c[gi>>2];c[Mi>>2]=c[hi>>2];c[Ni>>2]=c[ei>>2];while(1){c[Oi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2];c[Pi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2]=c[Li>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2]=c[Mi>>2];c[Li>>2]=c[Oi>>2];c[Mi>>2]=c[Pi>>2];if((c[Oi>>2]|0)>>>0>(c[Ni>>2]|0)>>>0)break;c[Ni>>2]=(c[Ni>>2]|0)-(c[Oi>>2]|0);}c[Qi>>2]=0;while(1){if((c[Qi>>2]|0)>>>0>=(c[fi>>2]|0)>>>0)break;c[Ri>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[Si>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+8>>2];c[Ti>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+4>>2];if((c[Si>>2]|0)==1){c[Vh>>2]=(c[Vh>>2]|0)+1;c[Qi>>2]=(c[Qi>>2]|0)+1;continue;}c[Qi>>2]=(c[Qi>>2]|0)+(c[Si>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+(c[Si>>2]|0);if((c[Ti>>2]|0)>>>0<3){c[Ui>>2]=(c[Ti>>2]|0)+((c[Ri>>2]|0)==0&1);if(c[Ui>>2]|0){Zh=c[Nh>>2]|0;if((c[Ui>>2]|0)==3)Ej=(c[Zh>>2]|0)-1|0;else Ej=c[Zh+(c[Ui>>2]<<2)>>2]|0;c[Vi>>2]=Ej;if((c[Ui>>2]|0)>>>0>=2)c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=c[Vi>>2];}}else{c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=(c[Ti>>2]|0)-2;}vm(c[Th>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,c[Si>>2]|0);wm(c[Mh>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,(c[Si>>2]|0)-3|0);c[Wh>>2]=c[Vh>>2];}xm(c[Th>>2]|0);}l=i;return(c[Xh>>2]|0)-(c[Wh>>2]|0)|0;}function lm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=e;c[(c[g>>2]|0)+56>>2]=0;if(c[(c[g>>2]|0)+28>>2]|0){c[(c[g>>2]|0)+24>>2]=0;c[k>>2]=0;while(1){m=c[g>>2]|0;if((c[k>>2]|0)>>>0>255)break;c[(c[c[g>>2]>>2]|0)+(c[k>>2]<<2)>>2]=1+((c[(c[m>>2]|0)+(c[k>>2]<<2)>>2]|0)>>>5);e=(c[g>>2]|0)+24|0;c[e>>2]=(c[e>>2]|0)+(c[(c[c[g>>2]>>2]|0)+(c[k>>2]<<2)>>2]|0);c[k>>2]=(c[k>>2]|0)+1;}c[m+28>>2]=0;c[k>>2]=0;while(1){n=c[g>>2]|0;if((c[k>>2]|0)>>>0>35)break;c[(c[(c[g>>2]|0)+4>>2]|0)+(c[k>>2]<<2)>>2]=1+((c[(c[n+4>>2]|0)+(c[k>>2]<<2)>>2]|0)>>>5);m=(c[g>>2]|0)+28|0;c[m>>2]=(c[m>>2]|0)+(c[(c[(c[g>>2]|0)+4>>2]|0)+(c[k>>2]<<2)>>2]|0);c[k>>2]=(c[k>>2]|0)+1;}c[n+32>>2]=0;c[k>>2]=0;while(1){o=c[g>>2]|0;if((c[k>>2]|0)>>>0>52)break;c[(c[(c[g>>2]|0)+8>>2]|0)+(c[k>>2]<<2)>>2]=1+((c[(c[o+8>>2]|0)+(c[k>>2]<<2)>>2]|0)>>>4);n=(c[g>>2]|0)+32|0;c[n>>2]=(c[n>>2]|0)+(c[(c[(c[g>>2]|0)+8>>2]|0)+(c[k>>2]<<2)>>2]|0);c[k>>2]=(c[k>>2]|0)+1;}c[o+36>>2]=0;c[k>>2]=0;while(1){if((c[k>>2]|0)>>>0>31)break;c[(c[(c[g>>2]|0)+12>>2]|0)+(c[k>>2]<<2)>>2]=1+((c[(c[(c[g>>2]|0)+12>>2]|0)+(c[k>>2]<<2)>>2]|0)>>>4);o=(c[g>>2]|0)+36|0;c[o>>2]=(c[o>>2]|0)+(c[(c[(c[g>>2]|0)+12>>2]|0)+(c[k>>2]<<2)>>2]|0);c[k>>2]=(c[k>>2]|0)+1;}p=c[g>>2]|0;xm(p);l=f;return;}if((c[i>>2]|0)>>>0<=1024)c[(c[g>>2]|0)+56>>2]=1;c[j>>2]=0;while(1){if((c[j>>2]|0)>>>0>255)break;c[(c[c[g>>2]>>2]|0)+(c[j>>2]<<2)>>2]=0;c[j>>2]=(c[j>>2]|0)+1;}c[j>>2]=0;while(1){q=c[g>>2]|0;if((c[j>>2]|0)>>>0>=(c[i>>2]|0)>>>0)break;k=(c[q>>2]|0)+((d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)<<2)|0;c[k>>2]=(c[k>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+1;}c[q+24>>2]=0;c[j>>2]=0;while(1){if((c[j>>2]|0)>>>0>255)break;c[(c[c[g>>2]>>2]|0)+(c[j>>2]<<2)>>2]=1+((c[(c[c[g>>2]>>2]|0)+(c[j>>2]<<2)>>2]|0)>>>4);q=(c[g>>2]|0)+24|0;c[q>>2]=(c[q>>2]|0)+(c[(c[c[g>>2]>>2]|0)+(c[j>>2]<<2)>>2]|0);c[j>>2]=(c[j>>2]|0)+1;}c[j>>2]=0;while(1){r=c[g>>2]|0;if((c[j>>2]|0)>>>0>35)break;c[(c[r+4>>2]|0)+(c[j>>2]<<2)>>2]=1;c[j>>2]=(c[j>>2]|0)+1;}c[r+28>>2]=36;c[j>>2]=0;while(1){s=c[g>>2]|0;if((c[j>>2]|0)>>>0>52)break;c[(c[s+8>>2]|0)+(c[j>>2]<<2)>>2]=1;c[j>>2]=(c[j>>2]|0)+1;}c[s+32>>2]=53;c[j>>2]=0;while(1){t=c[g>>2]|0;if((c[j>>2]|0)>>>0>31)break;c[(c[t+12>>2]|0)+(c[j>>2]<<2)>>2]=1;c[j>>2]=(c[j>>2]|0)+1;}c[t+36>>2]=32;p=c[g>>2]|0;xm(p);l=f;return;}function mm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=a;c[g>>2]=b;do{if((c[g>>2]|0)==3){b=(_j()|0)!=0;a=Yj(c[f>>2]|0)|0;if(b){c[e>>2]=a<<8;break;}else{c[e>>2]=a>>>8;break;}}else c[e>>2]=Yj(c[f>>2]|0)|0;}while(0);l=d;return c[e>>2]|0;}function nm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;d=l;l=l+32|0;e=d+28|0;f=d+24|0;g=d+20|0;h=d+16|0;i=d+12|0;j=d+8|0;k=d+4|0;m=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=c[(c[e>>2]|0)+40>>2];c[h>>2]=c[(c[e>>2]|0)+32>>2];c[i>>2]=c[(c[e>>2]|0)+4>>2];c[j>>2]=c[(c[e>>2]|0)+28>>2];b=(c[f>>2]|0)-(c[i>>2]|0)|0;c[(c[e>>2]|0)+28>>2]=b;c[k>>2]=b;c[m>>2]=Fm(c[f>>2]|0,c[h>>2]|0)|0;while(1){if((c[j>>2]|0)>>>0>=(c[k>>2]|0)>>>0)break;f=c[j>>2]|0;b=c[g>>2]|0;c[b+((Fm((c[i>>2]|0)+(c[j>>2]|0)|0,c[h>>2]|0)|0)<<2)>>2]=f;c[j>>2]=(c[j>>2]|0)+1;}l=d;return c[(c[g>>2]|0)+(c[m>>2]<<2)>>2]|0;}function om(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+16|0;g=f+12|0;h=f+8|0;i=f+4|0;j=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;e=Dm(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0,c[j>>2]|0)|0;h=e+(Cm(c[i>>2]|0,c[j>>2]|0)|0)|0;l=f;return h|0;}function pm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+8|0;k=f+4|0;m=f;c[g>>2]=b;c[h>>2]=d;c[i>>2]=e;if((c[h>>2]|0)>>>0>=3){c[j+8>>2]=c[(c[g>>2]|0)+4>>2];c[j+4>>2]=c[c[g>>2]>>2];c[j>>2]=(c[h>>2]|0)-2;c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];l=f;return;}c[k>>2]=(c[h>>2]|0)+(c[i>>2]|0);if((c[k>>2]|0)>>>0<=0){i=c[g>>2]|0;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];l=f;return;}i=c[g>>2]|0;if((c[k>>2]|0)==3)n=(c[i>>2]|0)-1|0;else n=c[i+(c[k>>2]<<2)>>2]|0;c[m>>2]=n;n=c[g>>2]|0;if((c[k>>2]|0)>>>0>=2)o=c[n+4>>2]|0;else o=c[n+8>>2]|0;c[j+8>>2]=o;c[j+4>>2]=c[c[g>>2]>>2];c[j>>2]=c[m>>2];c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];l=f;return;}function qm(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function rm(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;if((c[e>>2]|0)>>>0>127){f=(qm(a)|0)+36|0;l=b;return f|0;}else{f=d[3072+a>>0]|0;l=b;return f|0;}return 0;}function sm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=Bm(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;c[i>>2]=d+(Em(c[g>>2]|0,c[h>>2]|0)|0);l=e;return c[i>>2]|0;}function tm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;e=Dm(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0,c[j>>2]|0)|0;c[k>>2]=e+(Em(c[i>>2]|0,c[j>>2]|0)|0);l=f;return c[k>>2]|0;}function um(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;d=Bm(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;f=d+(Cm(c[g>>2]|0,c[h>>2]|0)|0)|0;l=e;return f|0;}function vm(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=l;l=l+48|0;i=h+36|0;j=h+32|0;k=h+28|0;m=h+24|0;n=h+20|0;o=h+16|0;p=h+12|0;q=h+8|0;r=h+4|0;s=h;c[i>>2]=a;c[j>>2]=b;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=0;while(1){if((c[o>>2]|0)>>>0>=(c[j>>2]|0)>>>0)break;g=(c[c[i>>2]>>2]|0)+((d[(c[k>>2]|0)+(c[o>>2]|0)>>0]|0)<<2)|0;c[g>>2]=(c[g>>2]|0)+2;c[o>>2]=(c[o>>2]|0)+1;}o=(c[i>>2]|0)+24|0;c[o>>2]=(c[o>>2]|0)+(c[j>>2]<<1);c[p>>2]=Am(c[j>>2]|0)|0;j=(c[(c[i>>2]|0)+4>>2]|0)+(c[p>>2]<<2)|0;c[j>>2]=(c[j>>2]|0)+1;j=(c[i>>2]|0)+28|0;c[j>>2]=(c[j>>2]|0)+1;c[q>>2]=qm((c[m>>2]|0)+1|0)|0;m=(c[(c[i>>2]|0)+12>>2]|0)+(c[q>>2]<<2)|0;c[m>>2]=(c[m>>2]|0)+1;m=(c[i>>2]|0)+36|0;c[m>>2]=(c[m>>2]|0)+1;c[r>>2]=(c[n>>2]|0)-3;c[s>>2]=rm(c[r>>2]|0)|0;r=(c[(c[i>>2]|0)+8>>2]|0)+(c[s>>2]<<2)|0;c[r>>2]=(c[r>>2]|0)+1;r=(c[i>>2]|0)+32|0;c[r>>2]=(c[r>>2]|0)+1;l=h;return;}function wm(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;ym(c[(c[i>>2]|0)+12>>2]|0,c[k>>2]|0,c[j>>2]|0);k=(c[i>>2]|0)+12|0;c[k>>2]=(c[k>>2]|0)+(c[j>>2]|0);if((c[j>>2]|0)>>>0>65535){c[(c[i>>2]|0)+28>>2]=1;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;}b[(c[(c[i>>2]|0)+4>>2]|0)+4>>1]=c[j>>2];c[c[(c[i>>2]|0)+4>>2]>>2]=(c[m>>2]|0)+1;if((c[n>>2]|0)>>>0<=65535){o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}c[(c[i>>2]|0)+28>>2]=2;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}function xm(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=qm((c[(c[d>>2]|0)+24>>2]|0)+1|0)|0;c[(c[d>>2]|0)+40>>2]=a;a=qm((c[(c[d>>2]|0)+28>>2]|0)+1|0)|0;c[(c[d>>2]|0)+44>>2]=a;a=qm((c[(c[d>>2]|0)+32>>2]|0)+1|0)|0;c[(c[d>>2]|0)+48>>2]=a;a=qm((c[(c[d>>2]|0)+36>>2]|0)+1|0)|0;c[(c[d>>2]|0)+52>>2]=a;l=b;return;}function ym(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{zm(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function zm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function Am(a){a=a|0;var b=0,e=0,f=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;if((c[e>>2]|0)>>>0>63){f=(qm(a)|0)+19|0;l=b;return f|0;}else{f=d[3008+a>>0]|0;l=b;return f|0;}return 0;}function Bm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+32|0;g=f+20|0;h=f+16|0;i=f+12|0;j=f+8|0;k=f+4|0;m=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;e=c[i>>2]|0;if(c[(c[j>>2]|0)+56>>2]|0){c[g>>2]=e*6;n=c[g>>2]|0;l=f;return n|0;}if(!e){c[g>>2]=0;n=c[g>>2]|0;l=f;return n|0;}c[m>>2]=N(c[i>>2]|0,c[(c[j>>2]|0)+40>>2]|0)|0;c[k>>2]=0;while(1){if((c[k>>2]|0)>>>0>=(c[i>>2]|0)>>>0)break;e=qm((c[(c[c[j>>2]>>2]|0)+((d[(c[h>>2]|0)+(c[k>>2]|0)>>0]|0)<<2)>>2]|0)+1|0)|0;c[m>>2]=(c[m>>2]|0)-e;c[k>>2]=(c[k>>2]|0)+1;}c[g>>2]=c[m>>2];n=c[g>>2]|0;l=f;return n|0;}function Cm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;i=d;c[f>>2]=a;c[g>>2]=b;b=c[f>>2]|0;if(c[(c[g>>2]|0)+56>>2]|0){c[e>>2]=qm(b+1|0)|0;j=c[e>>2]|0;l=d;return j|0;}else{c[h>>2]=Am(b)|0;b=(c[5696+(c[h>>2]<<2)>>2]|0)+(c[(c[g>>2]|0)+44>>2]|0)|0;c[i>>2]=b-(qm((c[(c[(c[g>>2]|0)+4>>2]|0)+(c[h>>2]<<2)>>2]|0)+1|0)|0);c[e>>2]=c[i>>2];j=c[e>>2]|0;l=d;return j|0;}return 0;}function Dm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;if((c[h>>2]|0)==(c[c[g>>2]>>2]|0)){c[k>>2]=c[(c[g>>2]|0)+8>>2];c[n>>2]=(c[h>>2]|0)+(c[(c[g>>2]|0)+4>>2]|0);c[m>>2]=(c[i>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0);}else{c[k>>2]=0;c[n>>2]=c[h>>2];c[m>>2]=c[i>>2];}e=c[k>>2]|0;c[o>>2]=e+(Bm(c[n>>2]|0,c[m>>2]|0,c[j>>2]|0)|0);c[c[g>>2]>>2]=c[h>>2];c[(c[g>>2]|0)+4>>2]=c[i>>2];c[(c[g>>2]|0)+8>>2]=c[o>>2];l=f;return c[o>>2]|0;}function Em(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+32|0;e=d+16|0;f=d+12|0;g=d+8|0;h=d+4|0;i=d;c[f>>2]=a;c[g>>2]=b;b=c[f>>2]|0;if(c[(c[g>>2]|0)+56>>2]|0){c[e>>2]=qm(b+1|0)|0;j=c[e>>2]|0;l=d;return j|0;}else{c[h>>2]=Am(b)|0;b=c[5696+(c[h>>2]<<2)>>2]|0;f=b+(qm((c[c[(c[g>>2]|0)+4>>2]>>2]|0)+1|0)|0)|0;c[i>>2]=f-(qm((c[(c[(c[g>>2]|0)+4>>2]|0)+(c[h>>2]<<2)>>2]|0)+1|0)|0);c[e>>2]=c[i>>2];j=c[e>>2]|0;l=d;return j|0;}return 0;}function Fm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Gm(c[e>>2]|0)|0;e=Hm(b,c[f>>2]|0)|0;l=d;return e|0;}function Gm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(_j()|0)!=0;f=Yj(c[e>>2]|0)|0;if(a){c[d>>2]=f;g=c[d>>2]|0;l=b;return g|0;}else{c[d>>2]=Im(f)|0;g=c[d>>2]|0;l=b;return g|0;}return 0;}function Hm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=N(c[e>>2]<<8,506832829)|0;l=d;return b>>>(32-(c[f>>2]|0)|0)|0;}function Im(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[d>>2]<<24&-16777216|c[d>>2]<<8&16711680|(c[d>>2]|0)>>>8&65280|(c[d>>2]|0)>>>24&255|0;}function Jm(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;switch(c[(c[j>>2]|0)+16>>2]|0){case 7:case 6:{c[h>>2]=Vm(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,6)|0;o=c[h>>2]|0;l=g;return o|0;}case 5:{c[h>>2]=Vm(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,5)|0;o=c[h>>2]|0;l=g;return o|0;}default:{c[h>>2]=Vm(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,4)|0;o=c[h>>2]|0;l=g;return o|0;}}return 0;}function Km(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0;h=l;l=l+320|0;i=h+308|0;j=h+304|0;k=h+300|0;m=h+296|0;n=h+292|0;o=h+288|0;p=h+284|0;q=h+280|0;r=h+276|0;s=h+272|0;t=h+268|0;u=h+264|0;v=h+260|0;w=h+256|0;x=h+252|0;y=h+248|0;z=h+244|0;A=h+240|0;B=h+236|0;C=h+232|0;D=h+228|0;E=h+224|0;F=h+220|0;G=h+216|0;H=h+212|0;I=h+208|0;J=h+204|0;K=h+200|0;L=h+196|0;M=h+192|0;N=h+188|0;O=h+184|0;P=h+180|0;Q=h+176|0;R=h+172|0;S=h+168|0;T=h+164|0;U=h+160|0;V=h+156|0;W=h+152|0;X=h+148|0;Y=h+144|0;Z=h+140|0;_=h+136|0;$=h+132|0;aa=h+128|0;ba=h+124|0;ca=h+120|0;da=h+116|0;ea=h+112|0;fa=h+108|0;ga=h+104|0;ha=h+100|0;ia=h+96|0;ja=h+92|0;ka=h+88|0;la=h+84|0;ma=h+80|0;na=h+76|0;oa=h+72|0;pa=h+68|0;qa=h+64|0;ra=h+60|0;sa=h+56|0;ta=h+52|0;ua=h+48|0;va=h+44|0;wa=h+40|0;xa=h+36|0;ya=h+32|0;za=h+28|0;Aa=h+24|0;Ba=h+20|0;Ca=h+16|0;Da=h+12|0;Ea=h+8|0;Fa=h+4|0;Ga=h;c[Ca>>2]=a;c[Da>>2]=b;c[Ea>>2]=e;c[Fa>>2]=f;c[Ga>>2]=g;switch(c[(c[Da>>2]|0)+16>>2]|0){case 7:case 6:{g=c[Da>>2]|0;f=c[Ea>>2]|0;e=c[Fa>>2]|0;b=c[Ga>>2]|0;c[i>>2]=c[Ca>>2];c[j>>2]=g;c[k>>2]=f;c[m>>2]=e;c[n>>2]=b;c[o>>2]=6;c[p>>2]=1;c[q>>2]=c[(c[i>>2]|0)+44>>2];c[r>>2]=1<<c[(c[j>>2]|0)+4>>2];c[s>>2]=(c[r>>2]|0)-1;c[t>>2]=c[(c[i>>2]|0)+4>>2];c[u>>2]=c[(c[i>>2]|0)+8>>2];c[v>>2]=c[(c[i>>2]|0)+12>>2];c[w>>2]=(c[t>>2]|0)+(c[v>>2]|0);c[x>>2]=(c[u>>2]|0)+(c[v>>2]|0);c[y>>2]=c[(c[i>>2]|0)+16>>2];c[z>>2]=(c[k>>2]|0)-(c[t>>2]|0);if((c[z>>2]|0)>>>0>(c[r>>2]|0)>>>0)Ha=(c[z>>2]|0)-(c[r>>2]|0)|0;else Ha=0;c[A>>2]=Ha;c[B>>2]=1<<c[(c[j>>2]|0)+12>>2];c[C>>2]=3;c[D>>2]=mk(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[o>>2]|0)|0;while(1){if(!(((c[B>>2]|0)>>>0>0?(c[D>>2]|0)>>>0>(c[y>>2]|0)>>>0:0)|0))break;c[E>>2]=0;if(c[p>>2]|0?(c[D>>2]|0)>>>0<(c[v>>2]|0)>>>0:0){c[G>>2]=(c[u>>2]|0)+(c[D>>2]|0);o=Bk(c[G>>2]|0)|0;if((o|0)==(Bk(c[k>>2]|0)|0))c[E>>2]=(Lm((c[k>>2]|0)+4|0,(c[G>>2]|0)+4|0,c[m>>2]|0,c[x>>2]|0,c[w>>2]|0)|0)+4;}else Ia=38;if((Ia|0)==38?(Ia=0,c[F>>2]=(c[t>>2]|0)+(c[D>>2]|0),(d[(c[F>>2]|0)+(c[C>>2]|0)>>0]|0|0)==(d[(c[k>>2]|0)+(c[C>>2]|0)>>0]|0|0)):0)c[E>>2]=Qm(c[k>>2]|0,c[F>>2]|0,c[m>>2]|0)|0;if((c[E>>2]|0)>>>0>(c[C>>2]|0)>>>0?(c[C>>2]=c[E>>2],c[c[n>>2]>>2]=(c[z>>2]|0)-(c[D>>2]|0)+2,((c[k>>2]|0)+(c[E>>2]|0)|0)==(c[m>>2]|0)):0)break;if((c[D>>2]|0)>>>0<=(c[A>>2]|0)>>>0)break;c[D>>2]=c[(c[q>>2]|0)+((c[D>>2]&c[s>>2])<<2)>>2];c[B>>2]=(c[B>>2]|0)+-1;}c[Ba>>2]=c[C>>2];Ja=c[Ba>>2]|0;l=h;return Ja|0;}case 5:{C=c[Da>>2]|0;B=c[Ea>>2]|0;s=c[Fa>>2]|0;D=c[Ga>>2]|0;c[H>>2]=c[Ca>>2];c[I>>2]=C;c[J>>2]=B;c[K>>2]=s;c[L>>2]=D;c[M>>2]=5;c[N>>2]=1;c[O>>2]=c[(c[H>>2]|0)+44>>2];c[P>>2]=1<<c[(c[I>>2]|0)+4>>2];c[Q>>2]=(c[P>>2]|0)-1;c[R>>2]=c[(c[H>>2]|0)+4>>2];c[S>>2]=c[(c[H>>2]|0)+8>>2];c[T>>2]=c[(c[H>>2]|0)+12>>2];c[U>>2]=(c[R>>2]|0)+(c[T>>2]|0);c[V>>2]=(c[S>>2]|0)+(c[T>>2]|0);c[W>>2]=c[(c[H>>2]|0)+16>>2];c[X>>2]=(c[J>>2]|0)-(c[R>>2]|0);if((c[X>>2]|0)>>>0>(c[P>>2]|0)>>>0)Ka=(c[X>>2]|0)-(c[P>>2]|0)|0;else Ka=0;c[Y>>2]=Ka;c[Z>>2]=1<<c[(c[I>>2]|0)+12>>2];c[_>>2]=3;c[$>>2]=mk(c[H>>2]|0,c[I>>2]|0,c[J>>2]|0,c[M>>2]|0)|0;while(1){if(!(((c[Z>>2]|0)>>>0>0?(c[$>>2]|0)>>>0>(c[W>>2]|0)>>>0:0)|0))break;c[aa>>2]=0;if(c[N>>2]|0?(c[$>>2]|0)>>>0<(c[T>>2]|0)>>>0:0){c[ca>>2]=(c[S>>2]|0)+(c[$>>2]|0);M=Bk(c[ca>>2]|0)|0;if((M|0)==(Bk(c[J>>2]|0)|0))c[aa>>2]=(Lm((c[J>>2]|0)+4|0,(c[ca>>2]|0)+4|0,c[K>>2]|0,c[V>>2]|0,c[U>>2]|0)|0)+4;}else Ia=23;if((Ia|0)==23?(Ia=0,c[ba>>2]=(c[R>>2]|0)+(c[$>>2]|0),(d[(c[ba>>2]|0)+(c[_>>2]|0)>>0]|0|0)==(d[(c[J>>2]|0)+(c[_>>2]|0)>>0]|0|0)):0)c[aa>>2]=Qm(c[J>>2]|0,c[ba>>2]|0,c[K>>2]|0)|0;if((c[aa>>2]|0)>>>0>(c[_>>2]|0)>>>0?(c[_>>2]=c[aa>>2],c[c[L>>2]>>2]=(c[X>>2]|0)-(c[$>>2]|0)+2,((c[J>>2]|0)+(c[aa>>2]|0)|0)==(c[K>>2]|0)):0)break;if((c[$>>2]|0)>>>0<=(c[Y>>2]|0)>>>0)break;c[$>>2]=c[(c[O>>2]|0)+((c[$>>2]&c[Q>>2])<<2)>>2];c[Z>>2]=(c[Z>>2]|0)+-1;}c[Ba>>2]=c[_>>2];Ja=c[Ba>>2]|0;l=h;return Ja|0;}default:{_=c[Da>>2]|0;Da=c[Ea>>2]|0;Ea=c[Fa>>2]|0;Fa=c[Ga>>2]|0;c[da>>2]=c[Ca>>2];c[ea>>2]=_;c[fa>>2]=Da;c[ga>>2]=Ea;c[ha>>2]=Fa;c[ia>>2]=4;c[ja>>2]=1;c[ka>>2]=c[(c[da>>2]|0)+44>>2];c[la>>2]=1<<c[(c[ea>>2]|0)+4>>2];c[ma>>2]=(c[la>>2]|0)-1;c[na>>2]=c[(c[da>>2]|0)+4>>2];c[oa>>2]=c[(c[da>>2]|0)+8>>2];c[pa>>2]=c[(c[da>>2]|0)+12>>2];c[qa>>2]=(c[na>>2]|0)+(c[pa>>2]|0);c[ra>>2]=(c[oa>>2]|0)+(c[pa>>2]|0);c[sa>>2]=c[(c[da>>2]|0)+16>>2];c[ta>>2]=(c[fa>>2]|0)-(c[na>>2]|0);if((c[ta>>2]|0)>>>0>(c[la>>2]|0)>>>0)La=(c[ta>>2]|0)-(c[la>>2]|0)|0;else La=0;c[ua>>2]=La;c[va>>2]=1<<c[(c[ea>>2]|0)+12>>2];c[wa>>2]=3;c[xa>>2]=mk(c[da>>2]|0,c[ea>>2]|0,c[fa>>2]|0,c[ia>>2]|0)|0;while(1){if(!(((c[va>>2]|0)>>>0>0?(c[xa>>2]|0)>>>0>(c[sa>>2]|0)>>>0:0)|0))break;c[ya>>2]=0;if(c[ja>>2]|0?(c[xa>>2]|0)>>>0<(c[pa>>2]|0)>>>0:0){c[Aa>>2]=(c[oa>>2]|0)+(c[xa>>2]|0);ia=Bk(c[Aa>>2]|0)|0;if((ia|0)==(Bk(c[fa>>2]|0)|0))c[ya>>2]=(Lm((c[fa>>2]|0)+4|0,(c[Aa>>2]|0)+4|0,c[ga>>2]|0,c[ra>>2]|0,c[qa>>2]|0)|0)+4;}else Ia=8;if((Ia|0)==8?(Ia=0,c[za>>2]=(c[na>>2]|0)+(c[xa>>2]|0),(d[(c[za>>2]|0)+(c[wa>>2]|0)>>0]|0|0)==(d[(c[fa>>2]|0)+(c[wa>>2]|0)>>0]|0|0)):0)c[ya>>2]=Qm(c[fa>>2]|0,c[za>>2]|0,c[ga>>2]|0)|0;if((c[ya>>2]|0)>>>0>(c[wa>>2]|0)>>>0?(c[wa>>2]=c[ya>>2],c[c[ha>>2]>>2]=(c[ta>>2]|0)-(c[xa>>2]|0)+2,((c[fa>>2]|0)+(c[ya>>2]|0)|0)==(c[ga>>2]|0)):0)break;if((c[xa>>2]|0)>>>0<=(c[ua>>2]|0)>>>0)break;c[xa>>2]=c[(c[ka>>2]|0)+((c[xa>>2]&c[ma>>2])<<2)>>2];c[va>>2]=(c[va>>2]|0)+-1;}c[Ba>>2]=c[wa>>2];Ja=c[Ba>>2]|0;l=h;return Ja|0;}}return 0;}function Lm(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if(((c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0)>>>0<(c[k>>2]|0)>>>0)q=(c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0;else q=c[k>>2]|0;c[o>>2]=q;c[p>>2]=Qm(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0)|0;o=c[p>>2]|0;if(((c[j>>2]|0)+(c[p>>2]|0)|0)!=(c[m>>2]|0)){c[h>>2]=o;r=c[h>>2]|0;l=g;return r|0;}else{c[h>>2]=o+(Qm((c[i>>2]|0)+(c[p>>2]|0)|0,c[n>>2]|0,c[k>>2]|0)|0);r=c[h>>2]|0;l=g;return r|0;}return 0;}function Mm(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;a=31-(Q(c[d>>2]|0)|0)|0;l=b;return a|0;}function Nm(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;Om(c[(c[i>>2]|0)+12>>2]|0,c[k>>2]|0,c[j>>2]|0);k=(c[i>>2]|0)+12|0;c[k>>2]=(c[k>>2]|0)+(c[j>>2]|0);if((c[j>>2]|0)>>>0>65535){c[(c[i>>2]|0)+28>>2]=1;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;}b[(c[(c[i>>2]|0)+4>>2]|0)+4>>1]=c[j>>2];c[c[(c[i>>2]|0)+4>>2]>>2]=(c[m>>2]|0)+1;if((c[n>>2]|0)>>>0<=65535){o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}c[(c[i>>2]|0)+28>>2]=2;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}function Om(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{Pm(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function Pm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function Qm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=c[h>>2];c[m>>2]=(c[j>>2]|0)+-3;a:do{if((c[h>>2]|0)>>>0<(c[m>>2]|0)>>>0){e=Rm(c[i>>2]|0)|0;c[n>>2]=e^(Rm(c[h>>2]|0)|0);if(c[n>>2]|0){c[g>>2]=Sm(c[n>>2]|0)|0;p=c[g>>2]|0;l=f;return p|0;}c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;while(1){if((c[h>>2]|0)>>>0>=(c[m>>2]|0)>>>0)break a;e=Rm(c[i>>2]|0)|0;c[o>>2]=e^(Rm(c[h>>2]|0)|0);if(c[o>>2]|0)break;c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}e=Sm(c[o>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+e;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}}while(0);if((Tm()|0?(c[h>>2]|0)>>>0<((c[j>>2]|0)+-3|0)>>>0:0)?(o=Bk(c[i>>2]|0)|0,(o|0)==(Bk(c[h>>2]|0)|0)):0){c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}if((c[h>>2]|0)>>>0<((c[j>>2]|0)+-1|0)>>>0?(o=(Um(c[i>>2]|0)|0)&65535,(o|0)==((Um(c[h>>2]|0)|0)&65535|0)):0){c[h>>2]=(c[h>>2]|0)+2;c[i>>2]=(c[i>>2]|0)+2;}if((c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?(d[c[i>>2]>>0]|0|0)==(d[c[h>>2]>>0]|0|0):0)c[h>>2]=(c[h>>2]|0)+1;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}function Rm(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function Sm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(vk()|0)!=0;f=(Tm()|0)!=0;g=c[e>>2]|0;do{if(a){if(f){e=ob(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(fE(g|0)|0)>>3;break;}}else if(f){e=lE(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(Q(g|0)|0)>>3;break;}}while(0);l=b;return c[d>>2]|0;}function Tm(){return 0;}function Um(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function Vm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;if((c[m>>2]|0)>>>0<((c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+24>>2]|0)|0)>>>0){c[i>>2]=0;q=c[i>>2]|0;l=h;return q|0;}else{Wm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[p>>2]|0);c[i>>2]=Xm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,1)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function Wm(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;g=l;l=l+80|0;h=g+64|0;i=g+60|0;j=g+56|0;k=g+48|0;m=g+44|0;n=g+40|0;o=g+36|0;p=g+32|0;q=g+28|0;r=g+24|0;s=g+20|0;t=g+16|0;u=g+12|0;v=g+8|0;w=g+4|0;x=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[g+52>>2]=e;c[k>>2]=f;c[m>>2]=c[(c[h>>2]|0)+36>>2];c[n>>2]=c[(c[i>>2]|0)+8>>2];c[o>>2]=c[(c[h>>2]|0)+44>>2];c[p>>2]=(c[(c[i>>2]|0)+4>>2]|0)-1;c[q>>2]=(1<<c[p>>2])-1;c[r>>2]=c[(c[h>>2]|0)+4>>2];c[s>>2]=(c[j>>2]|0)-(c[r>>2]|0);c[t>>2]=c[(c[h>>2]|0)+24>>2];while(1){if((c[t>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;c[u>>2]=nk((c[r>>2]|0)+(c[t>>2]|0)|0,c[n>>2]|0,c[k>>2]|0)|0;c[v>>2]=c[(c[m>>2]|0)+(c[u>>2]<<2)>>2];c[w>>2]=(c[o>>2]|0)+((c[t>>2]&c[q>>2])<<1<<2);c[x>>2]=(c[w>>2]|0)+4;c[(c[m>>2]|0)+(c[u>>2]<<2)>>2]=c[t>>2];c[c[w>>2]>>2]=c[v>>2];c[c[x>>2]>>2]=1;c[t>>2]=(c[t>>2]|0)+1;}c[(c[h>>2]|0)+24>>2]=c[s>>2];l=g;return;}function Xm(a,b,e,f,g,h,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;j=l;l=l+176|0;k=j+160|0;m=j+156|0;n=j+152|0;o=j+148|0;p=j+144|0;q=j+140|0;r=j+136|0;s=j+132|0;t=j+128|0;u=j+124|0;v=j+120|0;w=j+116|0;x=j+112|0;y=j+108|0;z=j+104|0;A=j+100|0;B=j+96|0;C=j+92|0;D=j+88|0;E=j+84|0;F=j+80|0;G=j+76|0;H=j+72|0;I=j+68|0;J=j+64|0;K=j+60|0;L=j+56|0;M=j+52|0;N=j+48|0;O=j+44|0;P=j+40|0;Q=j+36|0;R=j+32|0;S=j+28|0;T=j+24|0;U=j+20|0;V=j+16|0;W=j+12|0;X=j+8|0;Y=j+4|0;Z=j;c[k>>2]=a;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=i;c[s>>2]=c[(c[k>>2]|0)+36>>2];c[t>>2]=c[(c[m>>2]|0)+8>>2];c[u>>2]=nk(c[n>>2]|0,c[t>>2]|0,c[q>>2]|0)|0;c[v>>2]=c[(c[s>>2]|0)+(c[u>>2]<<2)>>2];c[w>>2]=c[(c[k>>2]|0)+4>>2];c[x>>2]=(c[n>>2]|0)-(c[w>>2]|0);c[y>>2]=c[(c[k>>2]|0)+16>>2];c[z>>2]=c[(c[k>>2]|0)+44>>2];c[A>>2]=(c[(c[m>>2]|0)+4>>2]|0)-1;c[B>>2]=(1<<c[A>>2])-1;if((c[B>>2]|0)>>>0>=(c[x>>2]|0)>>>0)_=0;else _=(c[x>>2]|0)-(c[B>>2]|0)|0;c[C>>2]=_;c[D>>2]=(c[C>>2]|0)>>>0>(c[y>>2]|0)>>>0?c[C>>2]|0:c[y>>2]|0;c[E>>2]=(c[z>>2]|0)+((c[v>>2]&c[B>>2])<<1<<2);c[F>>2]=(c[z>>2]|0)+((c[v>>2]&c[B>>2])<<1<<2)+4;c[G>>2]=1<<c[(c[m>>2]|0)+12>>2];c[H>>2]=c[G>>2];c[I>>2]=0;while(1){if((c[v>>2]|0)>>>0<=(c[D>>2]|0)>>>0)break;if(!((c[H>>2]|0)>>>0>1?(c[c[F>>2]>>2]|0)==1:0))break;c[c[F>>2]>>2]=c[I>>2];c[I>>2]=c[v>>2];c[v>>2]=c[c[E>>2]>>2];c[E>>2]=(c[z>>2]|0)+((c[v>>2]&c[B>>2])<<1<<2);c[F>>2]=(c[z>>2]|0)+((c[v>>2]&c[B>>2])<<1<<2)+4;c[H>>2]=(c[H>>2]|0)+-1;}if((c[v>>2]|0)>>>0>(c[D>>2]|0)>>>0?(c[c[F>>2]>>2]|0)==1:0){c[c[F>>2]>>2]=0;c[c[E>>2]>>2]=0;}c[v>>2]=c[I>>2];while(1){if(!(c[v>>2]|0))break;c[J>>2]=(c[z>>2]|0)+((c[v>>2]&c[B>>2])<<1<<2)+4;c[K>>2]=c[c[J>>2]>>2];Ym(c[k>>2]|0,c[m>>2]|0,c[v>>2]|0,c[o>>2]|0,c[H>>2]|0,c[D>>2]|0,c[r>>2]|0);c[v>>2]=c[K>>2];c[H>>2]=(c[H>>2]|0)+1;}c[L>>2]=0;c[M>>2]=0;c[N>>2]=c[(c[k>>2]|0)+8>>2];c[O>>2]=c[(c[k>>2]|0)+12>>2];c[P>>2]=(c[N>>2]|0)+(c[O>>2]|0);c[Q>>2]=(c[w>>2]|0)+(c[O>>2]|0);c[R>>2]=(c[z>>2]|0)+((c[x>>2]&c[B>>2])<<1<<2);c[S>>2]=(c[z>>2]|0)+((c[x>>2]&c[B>>2])<<1<<2)+4;c[T>>2]=(c[x>>2]|0)+8+1;c[V>>2]=0;c[v>>2]=c[(c[s>>2]|0)+(c[u>>2]<<2)>>2];c[(c[s>>2]|0)+(c[u>>2]<<2)>>2]=c[x>>2];while(1){u=c[G>>2]|0;c[G>>2]=u+-1;if(!u)break;if((c[v>>2]|0)>>>0<=(c[y>>2]|0)>>>0)break;c[W>>2]=(c[z>>2]|0)+((c[v>>2]&c[B>>2])<<1<<2);c[X>>2]=(c[L>>2]|0)>>>0<(c[M>>2]|0)>>>0?c[L>>2]|0:c[M>>2]|0;if(c[r>>2]|0?((c[v>>2]|0)+(c[X>>2]|0)|0)>>>0<(c[O>>2]|0)>>>0:0){c[Y>>2]=(c[N>>2]|0)+(c[v>>2]|0);u=Lm((c[n>>2]|0)+(c[X>>2]|0)|0,(c[Y>>2]|0)+(c[X>>2]|0)|0,c[o>>2]|0,c[P>>2]|0,c[Q>>2]|0)|0;c[X>>2]=(c[X>>2]|0)+u;if(((c[v>>2]|0)+(c[X>>2]|0)|0)>>>0>=(c[O>>2]|0)>>>0)c[Y>>2]=(c[w>>2]|0)+(c[v>>2]|0);}else{c[Y>>2]=(c[w>>2]|0)+(c[v>>2]|0);u=Qm((c[n>>2]|0)+(c[X>>2]|0)|0,(c[Y>>2]|0)+(c[X>>2]|0)|0,c[o>>2]|0)|0;c[X>>2]=(c[X>>2]|0)+u;}if((c[X>>2]|0)>>>0>(c[V>>2]|0)>>>0){if((c[X>>2]|0)>>>0>((c[T>>2]|0)-(c[v>>2]|0)|0)>>>0)c[T>>2]=(c[v>>2]|0)+(c[X>>2]|0);u=(c[X>>2]|0)-(c[V>>2]|0)<<2;s=Mm((c[x>>2]|0)-(c[v>>2]|0)+1|0)|0;if((u|0)>(s-(Mm((c[c[p>>2]>>2]|0)+1|0)|0)|0)){c[V>>2]=c[X>>2];c[c[p>>2]>>2]=2+(c[x>>2]|0)-(c[v>>2]|0);}if(((c[n>>2]|0)+(c[X>>2]|0)|0)==(c[o>>2]|0))break;}s=c[v>>2]|0;if((d[(c[Y>>2]|0)+(c[X>>2]|0)>>0]|0|0)<(d[(c[n>>2]|0)+(c[X>>2]|0)>>0]|0|0)){c[c[R>>2]>>2]=s;c[L>>2]=c[X>>2];if((c[v>>2]|0)>>>0<=(c[C>>2]|0)>>>0){$=29;break;}c[R>>2]=(c[W>>2]|0)+4;c[v>>2]=c[(c[W>>2]|0)+4>>2];}else{c[c[S>>2]>>2]=s;c[M>>2]=c[X>>2];if((c[v>>2]|0)>>>0<=(c[C>>2]|0)>>>0){$=32;break;}c[S>>2]=c[W>>2];c[v>>2]=c[c[W>>2]>>2];}}if(($|0)==29)c[R>>2]=U;else if(($|0)==32)c[S>>2]=U;c[c[S>>2]>>2]=0;c[c[R>>2]>>2]=0;c[(c[k>>2]|0)+24>>2]=(c[T>>2]|0)-8;if((c[V>>2]|0)>>>0<3){aa=c[V>>2]|0;l=j;return aa|0;}c[Z>>2]=(c[x>>2]|0)-((c[c[p>>2]>>2]|0)-2);aa=c[V>>2]|0;l=j;return aa|0;}function Ym(a,b,e,f,g,h,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;j=l;l=l+112|0;k=j+108|0;m=j+104|0;n=j+100|0;o=j+96|0;p=j+92|0;q=j+88|0;r=j+84|0;s=j+80|0;t=j+76|0;u=j+72|0;v=j+68|0;w=j+64|0;x=j+60|0;y=j+56|0;z=j+52|0;A=j+48|0;B=j+44|0;C=j+40|0;D=j+36|0;E=j+32|0;F=j+28|0;G=j+24|0;H=j+20|0;I=j+16|0;J=j+12|0;K=j+8|0;L=j+4|0;M=j;c[k>>2]=a;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=i;c[s>>2]=c[(c[k>>2]|0)+44>>2];c[t>>2]=(c[(c[m>>2]|0)+4>>2]|0)-1;c[u>>2]=(1<<c[t>>2])-1;c[v>>2]=0;c[w>>2]=0;c[x>>2]=c[(c[k>>2]|0)+4>>2];c[y>>2]=c[(c[k>>2]|0)+8>>2];c[z>>2]=c[(c[k>>2]|0)+12>>2];c[A>>2]=(c[n>>2]|0)>>>0>=(c[z>>2]|0)>>>0?(c[x>>2]|0)+(c[n>>2]|0)|0:(c[y>>2]|0)+(c[n>>2]|0)|0;c[B>>2]=(c[n>>2]|0)>>>0>=(c[z>>2]|0)>>>0?c[o>>2]|0:(c[y>>2]|0)+(c[z>>2]|0)|0;c[C>>2]=(c[y>>2]|0)+(c[z>>2]|0);c[D>>2]=(c[x>>2]|0)+(c[z>>2]|0);c[F>>2]=(c[s>>2]|0)+((c[n>>2]&c[u>>2])<<1<<2);c[G>>2]=(c[F>>2]|0)+4;c[H>>2]=c[c[F>>2]>>2];c[J>>2]=c[(c[k>>2]|0)+16>>2];while(1){k=c[p>>2]|0;c[p>>2]=k+-1;if(!k){N=23;break;}if((c[H>>2]|0)>>>0<=(c[J>>2]|0)>>>0){N=23;break;}c[K>>2]=(c[s>>2]|0)+((c[H>>2]&c[u>>2])<<1<<2);c[L>>2]=(c[v>>2]|0)>>>0<(c[w>>2]|0)>>>0?c[v>>2]|0:c[w>>2]|0;if((c[r>>2]|0?((c[H>>2]|0)+(c[L>>2]|0)|0)>>>0<(c[z>>2]|0)>>>0:0)?(c[n>>2]|0)>>>0>=(c[z>>2]|0)>>>0:0){c[E>>2]=(c[y>>2]|0)+(c[H>>2]|0);k=Lm((c[A>>2]|0)+(c[L>>2]|0)|0,(c[E>>2]|0)+(c[L>>2]|0)|0,c[B>>2]|0,c[C>>2]|0,c[D>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+k;if(((c[H>>2]|0)+(c[L>>2]|0)|0)>>>0>=(c[z>>2]|0)>>>0)c[E>>2]=(c[x>>2]|0)+(c[H>>2]|0);}else{if(c[r>>2]|0?((c[H>>2]|0)+(c[L>>2]|0)|0)>>>0<(c[z>>2]|0)>>>0:0)O=c[y>>2]|0;else O=c[x>>2]|0;c[M>>2]=O;c[E>>2]=(c[M>>2]|0)+(c[H>>2]|0);k=Qm((c[A>>2]|0)+(c[L>>2]|0)|0,(c[E>>2]|0)+(c[L>>2]|0)|0,c[B>>2]|0)|0;c[L>>2]=(c[L>>2]|0)+k;}if(((c[A>>2]|0)+(c[L>>2]|0)|0)==(c[B>>2]|0)){N=23;break;}k=c[H>>2]|0;if((d[(c[E>>2]|0)+(c[L>>2]|0)>>0]|0|0)<(d[(c[A>>2]|0)+(c[L>>2]|0)>>0]|0|0)){c[c[F>>2]>>2]=k;c[v>>2]=c[L>>2];if((c[H>>2]|0)>>>0<=(c[q>>2]|0)>>>0){N=17;break;}c[F>>2]=(c[K>>2]|0)+4;c[H>>2]=c[(c[K>>2]|0)+4>>2];}else{c[c[G>>2]>>2]=k;c[w>>2]=c[L>>2];if((c[H>>2]|0)>>>0<=(c[q>>2]|0)>>>0){N=20;break;}c[G>>2]=c[K>>2];c[H>>2]=c[c[K>>2]>>2];}}if((N|0)==17){c[F>>2]=I;P=c[G>>2]|0;c[P>>2]=0;Q=c[F>>2]|0;c[Q>>2]=0;l=j;return;}else if((N|0)==20){c[G>>2]=I;P=c[G>>2]|0;c[P>>2]=0;Q=c[F>>2]|0;c[Q>>2]=0;l=j;return;}else if((N|0)==23){P=c[G>>2]|0;c[P>>2]=0;Q=c[F>>2]|0;c[Q>>2]=0;l=j;return;}}function Zm(a,b,e,f,g,h,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;j=l;l=l+240|0;k=j+224|0;m=j+220|0;n=j+216|0;o=j+212|0;p=j+208|0;q=j+204|0;r=j+200|0;s=j+196|0;t=j+192|0;u=j+188|0;v=j+184|0;w=j+180|0;x=j+176|0;z=j+172|0;A=j+168|0;B=j+164|0;C=j+160|0;D=j+156|0;E=j+152|0;F=j+148|0;G=j+144|0;H=j+140|0;I=j+136|0;J=j+132|0;K=j+128|0;L=j+124|0;M=j+120|0;N=j+116|0;O=j+112|0;P=j+108|0;Q=j+104|0;R=j+100|0;S=j+96|0;T=j+92|0;U=j+88|0;V=j+84|0;W=j+80|0;X=j+76|0;Y=j+72|0;Z=j+68|0;_=j+64|0;$=j+60|0;aa=j+56|0;ba=j+52|0;ca=j+48|0;da=j+44|0;ea=j+40|0;fa=j+36|0;ga=j+32|0;ha=j+28|0;ia=j+24|0;ja=j+20|0;ka=j+16|0;la=j+12|0;ma=j+8|0;na=j+4|0;oa=j;c[k>>2]=a;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=i;c[s>>2]=c[(c[k>>2]|0)+36>>2];c[t>>2]=c[(c[o>>2]|0)+8>>2];c[u>>2]=c[(c[k>>2]|0)+44>>2];c[v>>2]=c[(c[o>>2]|0)+4>>2];c[w>>2]=c[(c[k>>2]|0)+4>>2];c[x>>2]=c[(c[k>>2]|0)+8>>2];c[z>>2]=c[p>>2];c[A>>2]=c[z>>2];c[B>>2]=c[z>>2];c[C>>2]=c[(c[k>>2]|0)+16>>2];c[D>>2]=(c[x>>2]|0)+(c[C>>2]|0);c[E>>2]=c[(c[k>>2]|0)+12>>2];c[F>>2]=(c[w>>2]|0)+(c[E>>2]|0);c[G>>2]=(c[x>>2]|0)+(c[E>>2]|0);c[H>>2]=(c[z>>2]|0)+(c[q>>2]|0);c[I>>2]=(c[H>>2]|0)+-8;c[J>>2]=c[c[n>>2]>>2];c[K>>2]=c[(c[n>>2]|0)+4>>2];a:while(1){if((c[A>>2]|0)>>>0>=(c[I>>2]|0)>>>0)break;c[L>>2]=Dk(c[A>>2]|0,c[v>>2]|0,c[r>>2]|0)|0;c[M>>2]=c[(c[u>>2]|0)+(c[L>>2]<<2)>>2];c[N>>2]=(c[M>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[x>>2]|0:c[w>>2]|0;c[O>>2]=(c[N>>2]|0)+(c[M>>2]|0);c[P>>2]=Dk(c[A>>2]|0,c[t>>2]|0,8)|0;c[Q>>2]=c[(c[s>>2]|0)+(c[P>>2]<<2)>>2];c[R>>2]=(c[Q>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[x>>2]|0:c[w>>2]|0;c[S>>2]=(c[R>>2]|0)+(c[Q>>2]|0);c[T>>2]=(c[A>>2]|0)-(c[w>>2]|0);c[U>>2]=(c[T>>2]|0)+1-(c[J>>2]|0);c[V>>2]=(c[U>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[x>>2]|0:c[w>>2]|0;c[W>>2]=(c[V>>2]|0)+(c[U>>2]|0);q=c[T>>2]|0;c[(c[s>>2]|0)+(c[P>>2]<<2)>>2]=q;c[(c[u>>2]|0)+(c[L>>2]<<2)>>2]=q;if(((c[U>>2]|0)>>>0>(c[C>>2]|0)>>>0?((c[E>>2]|0)-1-(c[U>>2]|0)|0)>>>0>=3:0)|0?(q=Rk(c[W>>2]|0)|0,(q|0)==(Rk((c[A>>2]|0)+1|0)|0)):0){c[Y>>2]=(c[U>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[G>>2]|0:c[H>>2]|0;c[X>>2]=(_m((c[A>>2]|0)+1+4|0,(c[W>>2]|0)+4|0,c[H>>2]|0,c[Y>>2]|0,c[F>>2]|0)|0)+4;c[A>>2]=(c[A>>2]|0)+1;$m(c[m>>2]|0,(c[A>>2]|0)-(c[B>>2]|0)|0,c[B>>2]|0,0,(c[X>>2]|0)-3|0);}else pa=6;do{if((pa|0)==6){pa=0;if((c[Q>>2]|0)>>>0>(c[C>>2]|0)>>>0?(q=Mk(c[S>>2]|0)|0,z=y,k=Mk(c[A>>2]|0)|0,(q|0)==(k|0)&(z|0)==(y|0)):0){c[Z>>2]=(c[Q>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[G>>2]|0:c[H>>2]|0;c[_>>2]=(c[Q>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[D>>2]|0:c[F>>2]|0;c[X>>2]=(_m((c[A>>2]|0)+8|0,(c[S>>2]|0)+8|0,c[H>>2]|0,c[Z>>2]|0,c[F>>2]|0)|0)+8;c[$>>2]=(c[T>>2]|0)-(c[Q>>2]|0);while(1){if(!(((c[A>>2]|0)>>>0>(c[B>>2]|0)>>>0?(c[S>>2]|0)>>>0>(c[_>>2]|0)>>>0:0)|0))break;if((d[(c[A>>2]|0)+-1>>0]|0|0)!=(d[(c[S>>2]|0)+-1>>0]|0|0))break;c[A>>2]=(c[A>>2]|0)+-1;c[S>>2]=(c[S>>2]|0)+-1;c[X>>2]=(c[X>>2]|0)+1;}c[K>>2]=c[J>>2];c[J>>2]=c[$>>2];$m(c[m>>2]|0,(c[A>>2]|0)-(c[B>>2]|0)|0,c[B>>2]|0,(c[$>>2]|0)+2|0,(c[X>>2]|0)-3|0);break;}if((c[M>>2]|0)>>>0>(c[C>>2]|0)>>>0?(z=Rk(c[O>>2]|0)|0,(z|0)==(Rk(c[A>>2]|0)|0)):0){c[aa>>2]=Dk((c[A>>2]|0)+1|0,c[t>>2]|0,8)|0;c[ba>>2]=c[(c[s>>2]|0)+(c[aa>>2]<<2)>>2];c[ca>>2]=(c[ba>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[x>>2]|0:c[w>>2]|0;c[da>>2]=(c[ca>>2]|0)+(c[ba>>2]|0);c[(c[s>>2]|0)+(c[aa>>2]<<2)>>2]=(c[T>>2]|0)+1;b:do{if((c[ba>>2]|0)>>>0>(c[C>>2]|0)>>>0?(z=Mk(c[da>>2]|0)|0,k=y,q=Mk((c[A>>2]|0)+1|0)|0,(z|0)==(q|0)&(k|0)==(y|0)):0){c[fa>>2]=(c[ba>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[G>>2]|0:c[H>>2]|0;c[ga>>2]=(c[ba>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[D>>2]|0:c[F>>2]|0;c[X>>2]=(_m((c[A>>2]|0)+9|0,(c[da>>2]|0)+8|0,c[H>>2]|0,c[fa>>2]|0,c[F>>2]|0)|0)+8;c[A>>2]=(c[A>>2]|0)+1;c[ea>>2]=(c[T>>2]|0)+1-(c[ba>>2]|0);while(1){if(!(((c[A>>2]|0)>>>0>(c[B>>2]|0)>>>0?(c[da>>2]|0)>>>0>(c[ga>>2]|0)>>>0:0)|0))break b;if((d[(c[A>>2]|0)+-1>>0]|0|0)!=(d[(c[da>>2]|0)+-1>>0]|0|0))break b;c[A>>2]=(c[A>>2]|0)+-1;c[da>>2]=(c[da>>2]|0)+-1;c[X>>2]=(c[X>>2]|0)+1;}}else pa=21;}while(0);c:do{if((pa|0)==21){pa=0;c[ha>>2]=(c[M>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[G>>2]|0:c[H>>2]|0;c[ia>>2]=(c[M>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[D>>2]|0:c[F>>2]|0;c[X>>2]=(_m((c[A>>2]|0)+4|0,(c[O>>2]|0)+4|0,c[H>>2]|0,c[ha>>2]|0,c[F>>2]|0)|0)+4;c[ea>>2]=(c[T>>2]|0)-(c[M>>2]|0);while(1){if(!(((c[A>>2]|0)>>>0>(c[B>>2]|0)>>>0?(c[O>>2]|0)>>>0>(c[ia>>2]|0)>>>0:0)|0))break c;if((d[(c[A>>2]|0)+-1>>0]|0|0)!=(d[(c[O>>2]|0)+-1>>0]|0|0))break c;c[A>>2]=(c[A>>2]|0)+-1;c[O>>2]=(c[O>>2]|0)+-1;c[X>>2]=(c[X>>2]|0)+1;}}}while(0);c[K>>2]=c[J>>2];c[J>>2]=c[ea>>2];$m(c[m>>2]|0,(c[A>>2]|0)-(c[B>>2]|0)|0,c[B>>2]|0,(c[ea>>2]|0)+2|0,(c[X>>2]|0)-3|0);break;}c[A>>2]=(c[A>>2]|0)+(((c[A>>2]|0)-(c[B>>2]|0)>>8)+1);continue a;}}while(0);c[A>>2]=(c[A>>2]|0)+(c[X>>2]|0);c[B>>2]=c[A>>2];d:do{if((c[A>>2]|0)>>>0<=(c[I>>2]|0)>>>0){k=(c[T>>2]|0)+2|0;q=c[u>>2]|0;c[q+((Dk((c[w>>2]|0)+(c[T>>2]|0)+2|0,c[v>>2]|0,c[r>>2]|0)|0)<<2)>>2]=k;k=(c[T>>2]|0)+2|0;q=c[s>>2]|0;c[q+((Dk((c[w>>2]|0)+(c[T>>2]|0)+2|0,c[t>>2]|0,8)|0)<<2)>>2]=k;k=(c[A>>2]|0)+-2-(c[w>>2]|0)|0;q=c[u>>2]|0;c[q+((Dk((c[A>>2]|0)+-2|0,c[v>>2]|0,c[r>>2]|0)|0)<<2)>>2]=k;k=(c[A>>2]|0)+-2-(c[w>>2]|0)|0;q=c[s>>2]|0;c[q+((Dk((c[A>>2]|0)+-2|0,c[t>>2]|0,8)|0)<<2)>>2]=k;while(1){if((c[A>>2]|0)>>>0>(c[I>>2]|0)>>>0)break d;c[ja>>2]=(c[A>>2]|0)-(c[w>>2]|0);c[ka>>2]=(c[ja>>2]|0)-(c[K>>2]|0);c[la>>2]=(c[ka>>2]|0)>>>0<(c[E>>2]|0)>>>0?(c[x>>2]|0)+(c[ka>>2]|0)|0:(c[w>>2]|0)+(c[ka>>2]|0)|0;if(!(((c[ka>>2]|0)>>>0>(c[C>>2]|0)>>>0?((c[E>>2]|0)-1-(c[ka>>2]|0)|0)>>>0>=3:0)|0))break d;k=Rk(c[la>>2]|0)|0;if((k|0)!=(Rk(c[A>>2]|0)|0))break d;c[ma>>2]=(c[ka>>2]|0)>>>0<(c[E>>2]|0)>>>0?c[G>>2]|0:c[H>>2]|0;c[na>>2]=(_m((c[A>>2]|0)+4|0,(c[la>>2]|0)+4|0,c[H>>2]|0,c[ma>>2]|0,c[F>>2]|0)|0)+4;c[oa>>2]=c[K>>2];c[K>>2]=c[J>>2];c[J>>2]=c[oa>>2];$m(c[m>>2]|0,0,c[B>>2]|0,0,(c[na>>2]|0)-3|0);k=c[ja>>2]|0;q=c[u>>2]|0;c[q+((Dk(c[A>>2]|0,c[v>>2]|0,c[r>>2]|0)|0)<<2)>>2]=k;k=c[ja>>2]|0;q=c[s>>2]|0;c[q+((Dk(c[A>>2]|0,c[t>>2]|0,8)|0)<<2)>>2]=k;c[A>>2]=(c[A>>2]|0)+(c[na>>2]|0);c[B>>2]=c[A>>2];}}}while(0);}c[c[n>>2]>>2]=c[J>>2];c[(c[n>>2]|0)+4>>2]=c[K>>2];l=j;return(c[H>>2]|0)-(c[B>>2]|0)|0;}function _m(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if(((c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0)>>>0<(c[k>>2]|0)>>>0)q=(c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0;else q=c[k>>2]|0;c[o>>2]=q;c[p>>2]=cn(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0)|0;o=c[p>>2]|0;if(((c[j>>2]|0)+(c[p>>2]|0)|0)!=(c[m>>2]|0)){c[h>>2]=o;r=c[h>>2]|0;l=g;return r|0;}else{c[h>>2]=o+(cn((c[i>>2]|0)+(c[p>>2]|0)|0,c[n>>2]|0,c[k>>2]|0)|0);r=c[h>>2]|0;l=g;return r|0;}return 0;}function $m(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;an(c[(c[i>>2]|0)+12>>2]|0,c[k>>2]|0,c[j>>2]|0);k=(c[i>>2]|0)+12|0;c[k>>2]=(c[k>>2]|0)+(c[j>>2]|0);if((c[j>>2]|0)>>>0>65535){c[(c[i>>2]|0)+28>>2]=1;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;}b[(c[(c[i>>2]|0)+4>>2]|0)+4>>1]=c[j>>2];c[c[(c[i>>2]|0)+4>>2]>>2]=(c[m>>2]|0)+1;if((c[n>>2]|0)>>>0<=65535){o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}c[(c[i>>2]|0)+28>>2]=2;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}function an(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{bn(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function bn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function cn(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=c[h>>2];c[m>>2]=(c[j>>2]|0)+-3;a:do{if((c[h>>2]|0)>>>0<(c[m>>2]|0)>>>0){e=dn(c[i>>2]|0)|0;c[n>>2]=e^(dn(c[h>>2]|0)|0);if(c[n>>2]|0){c[g>>2]=en(c[n>>2]|0)|0;p=c[g>>2]|0;l=f;return p|0;}c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;while(1){if((c[h>>2]|0)>>>0>=(c[m>>2]|0)>>>0)break a;e=dn(c[i>>2]|0)|0;c[o>>2]=e^(dn(c[h>>2]|0)|0);if(c[o>>2]|0)break;c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}e=en(c[o>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+e;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}}while(0);if((fn()|0?(c[h>>2]|0)>>>0<((c[j>>2]|0)+-3|0)>>>0:0)?(o=Rk(c[i>>2]|0)|0,(o|0)==(Rk(c[h>>2]|0)|0)):0){c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}if((c[h>>2]|0)>>>0<((c[j>>2]|0)+-1|0)>>>0?(o=(gn(c[i>>2]|0)|0)&65535,(o|0)==((gn(c[h>>2]|0)|0)&65535|0)):0){c[h>>2]=(c[h>>2]|0)+2;c[i>>2]=(c[i>>2]|0)+2;}if((c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?(d[c[i>>2]>>0]|0|0)==(d[c[h>>2]>>0]|0|0):0)c[h>>2]=(c[h>>2]|0)+1;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}function dn(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function en(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(Lk()|0)!=0;f=(fn()|0)!=0;g=c[e>>2]|0;do{if(a){if(f){e=ob(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(fE(g|0)|0)>>3;break;}}else if(f){e=lE(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(Q(g|0)|0)>>3;break;}}while(0);l=b;return c[d>>2]|0;}function fn(){return 0;}function gn(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function hn(a,b,e,f,g,h,i,j){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;k=l;l=l+176|0;m=k+164|0;n=k+160|0;o=k+156|0;p=k+152|0;q=k+148|0;r=k+144|0;s=k+140|0;t=k+136|0;u=k+132|0;v=k+128|0;w=k+124|0;x=k+120|0;y=k+116|0;z=k+112|0;A=k+108|0;B=k+104|0;C=k+100|0;D=k+96|0;E=k+92|0;F=k+88|0;G=k+84|0;H=k+80|0;I=k+76|0;J=k+72|0;K=k+68|0;L=k+64|0;M=k+60|0;N=k+56|0;O=k+52|0;P=k+48|0;Q=k+44|0;R=k+40|0;S=k+36|0;T=k+32|0;U=k+28|0;V=k+24|0;W=k+20|0;X=k+16|0;Y=k+12|0;Z=k+8|0;_=k+4|0;$=k;c[m>>2]=a;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=j;c[u>>2]=c[(c[m>>2]|0)+36>>2];c[v>>2]=c[(c[m>>2]|0)+4>>2];c[w>>2]=c[(c[m>>2]|0)+8>>2];c[x>>2]=c[p>>2];c[y>>2]=c[x>>2];c[z>>2]=c[x>>2];c[A>>2]=c[(c[m>>2]|0)+16>>2];c[B>>2]=(c[w>>2]|0)+(c[A>>2]|0);c[C>>2]=c[(c[m>>2]|0)+12>>2];c[D>>2]=(c[v>>2]|0)+(c[C>>2]|0);c[E>>2]=(c[w>>2]|0)+(c[C>>2]|0);c[F>>2]=(c[x>>2]|0)+(c[q>>2]|0);c[G>>2]=(c[F>>2]|0)+-8;c[H>>2]=c[c[o>>2]>>2];c[I>>2]=c[(c[o>>2]|0)+4>>2];a:while(1){if((c[y>>2]|0)>>>0>=(c[G>>2]|0)>>>0)break;c[J>>2]=Tk(c[y>>2]|0,c[r>>2]|0,c[t>>2]|0)|0;c[K>>2]=c[(c[u>>2]|0)+(c[J>>2]<<2)>>2];c[L>>2]=(c[K>>2]|0)>>>0<(c[C>>2]|0)>>>0?c[w>>2]|0:c[v>>2]|0;c[M>>2]=(c[L>>2]|0)+(c[K>>2]|0);c[N>>2]=(c[y>>2]|0)-(c[v>>2]|0);c[O>>2]=(c[N>>2]|0)+1-(c[H>>2]|0);c[P>>2]=(c[O>>2]|0)>>>0<(c[C>>2]|0)>>>0?c[w>>2]|0:c[v>>2]|0;c[Q>>2]=(c[P>>2]|0)+(c[O>>2]|0);c[(c[u>>2]|0)+(c[J>>2]<<2)>>2]=c[N>>2];if(((c[O>>2]|0)>>>0>(c[A>>2]|0)>>>0?((c[C>>2]|0)-1-(c[O>>2]|0)|0)>>>0>=3:0)|0?(q=fl(c[Q>>2]|0)|0,(q|0)==(fl((c[y>>2]|0)+1|0)|0)):0){c[S>>2]=(c[O>>2]|0)>>>0<(c[C>>2]|0)>>>0?c[E>>2]|0:c[F>>2]|0;c[R>>2]=(jn((c[y>>2]|0)+1+4|0,(c[Q>>2]|0)+4|0,c[F>>2]|0,c[S>>2]|0,c[D>>2]|0)|0)+4;c[y>>2]=(c[y>>2]|0)+1;kn(c[n>>2]|0,(c[y>>2]|0)-(c[z>>2]|0)|0,c[z>>2]|0,0,(c[R>>2]|0)-3|0);}else aa=6;do{if((aa|0)==6){aa=0;if((c[K>>2]|0)>>>0>=(c[A>>2]|0)>>>0?(q=fl(c[M>>2]|0)|0,(q|0)==(fl(c[y>>2]|0)|0)):0){c[T>>2]=(c[K>>2]|0)>>>0<(c[C>>2]|0)>>>0?c[E>>2]|0:c[F>>2]|0;c[U>>2]=(c[K>>2]|0)>>>0<(c[C>>2]|0)>>>0?c[B>>2]|0:c[D>>2]|0;c[R>>2]=(jn((c[y>>2]|0)+4|0,(c[M>>2]|0)+4|0,c[F>>2]|0,c[T>>2]|0,c[D>>2]|0)|0)+4;while(1){if(!(((c[y>>2]|0)>>>0>(c[z>>2]|0)>>>0?(c[M>>2]|0)>>>0>(c[U>>2]|0)>>>0:0)|0))break;if((d[(c[y>>2]|0)+-1>>0]|0|0)!=(d[(c[M>>2]|0)+-1>>0]|0|0))break;c[y>>2]=(c[y>>2]|0)+-1;c[M>>2]=(c[M>>2]|0)+-1;c[R>>2]=(c[R>>2]|0)+1;}c[V>>2]=(c[N>>2]|0)-(c[K>>2]|0);c[I>>2]=c[H>>2];c[H>>2]=c[V>>2];kn(c[n>>2]|0,(c[y>>2]|0)-(c[z>>2]|0)|0,c[z>>2]|0,(c[V>>2]|0)+2|0,(c[R>>2]|0)-3|0);break;}c[y>>2]=(c[y>>2]|0)+(((c[y>>2]|0)-(c[z>>2]|0)>>8)+(c[s>>2]|0));continue a;}}while(0);c[y>>2]=(c[y>>2]|0)+(c[R>>2]|0);c[z>>2]=c[y>>2];b:do{if((c[y>>2]|0)>>>0<=(c[G>>2]|0)>>>0){q=(c[N>>2]|0)+2|0;x=c[u>>2]|0;c[x+((Tk((c[v>>2]|0)+(c[N>>2]|0)+2|0,c[r>>2]|0,c[t>>2]|0)|0)<<2)>>2]=q;q=(c[y>>2]|0)+-2-(c[v>>2]|0)|0;x=c[u>>2]|0;c[x+((Tk((c[y>>2]|0)+-2|0,c[r>>2]|0,c[t>>2]|0)|0)<<2)>>2]=q;while(1){if((c[y>>2]|0)>>>0>(c[G>>2]|0)>>>0)break b;c[W>>2]=(c[y>>2]|0)-(c[v>>2]|0);c[X>>2]=(c[W>>2]|0)-(c[I>>2]|0);c[Y>>2]=(c[X>>2]|0)>>>0<(c[C>>2]|0)>>>0?(c[w>>2]|0)+(c[X>>2]|0)|0:(c[v>>2]|0)+(c[X>>2]|0)|0;if(!(((c[X>>2]|0)>>>0>(c[A>>2]|0)>>>0?((c[C>>2]|0)-1-(c[X>>2]|0)|0)>>>0>=3:0)|0))break b;q=fl(c[Y>>2]|0)|0;if((q|0)!=(fl(c[y>>2]|0)|0))break b;c[Z>>2]=(c[X>>2]|0)>>>0<(c[C>>2]|0)>>>0?c[E>>2]|0:c[F>>2]|0;c[_>>2]=(jn((c[y>>2]|0)+4|0,(c[Y>>2]|0)+4|0,c[F>>2]|0,c[Z>>2]|0,c[D>>2]|0)|0)+4;c[$>>2]=c[I>>2];c[I>>2]=c[H>>2];c[H>>2]=c[$>>2];kn(c[n>>2]|0,0,c[z>>2]|0,0,(c[_>>2]|0)-3|0);q=c[W>>2]|0;x=c[u>>2]|0;c[x+((Tk(c[y>>2]|0,c[r>>2]|0,c[t>>2]|0)|0)<<2)>>2]=q;c[y>>2]=(c[y>>2]|0)+(c[_>>2]|0);c[z>>2]=c[y>>2];}}}while(0);}c[c[o>>2]>>2]=c[H>>2];c[(c[o>>2]|0)+4>>2]=c[I>>2];l=k;return(c[F>>2]|0)-(c[z>>2]|0)|0;}function jn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if(((c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0)>>>0<(c[k>>2]|0)>>>0)q=(c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0;else q=c[k>>2]|0;c[o>>2]=q;c[p>>2]=nn(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0)|0;o=c[p>>2]|0;if(((c[j>>2]|0)+(c[p>>2]|0)|0)!=(c[m>>2]|0)){c[h>>2]=o;r=c[h>>2]|0;l=g;return r|0;}else{c[h>>2]=o+(nn((c[i>>2]|0)+(c[p>>2]|0)|0,c[n>>2]|0,c[k>>2]|0)|0);r=c[h>>2]|0;l=g;return r|0;}return 0;}function kn(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;ln(c[(c[i>>2]|0)+12>>2]|0,c[k>>2]|0,c[j>>2]|0);k=(c[i>>2]|0)+12|0;c[k>>2]=(c[k>>2]|0)+(c[j>>2]|0);if((c[j>>2]|0)>>>0>65535){c[(c[i>>2]|0)+28>>2]=1;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;}b[(c[(c[i>>2]|0)+4>>2]|0)+4>>1]=c[j>>2];c[c[(c[i>>2]|0)+4>>2]>>2]=(c[m>>2]|0)+1;if((c[n>>2]|0)>>>0<=65535){o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}c[(c[i>>2]|0)+28>>2]=2;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}function ln(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{mn(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function mn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function nn(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=c[h>>2];c[m>>2]=(c[j>>2]|0)+-3;a:do{if((c[h>>2]|0)>>>0<(c[m>>2]|0)>>>0){e=on(c[i>>2]|0)|0;c[n>>2]=e^(on(c[h>>2]|0)|0);if(c[n>>2]|0){c[g>>2]=pn(c[n>>2]|0)|0;p=c[g>>2]|0;l=f;return p|0;}c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;while(1){if((c[h>>2]|0)>>>0>=(c[m>>2]|0)>>>0)break a;e=on(c[i>>2]|0)|0;c[o>>2]=e^(on(c[h>>2]|0)|0);if(c[o>>2]|0)break;c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}e=pn(c[o>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+e;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}}while(0);if((qn()|0?(c[h>>2]|0)>>>0<((c[j>>2]|0)+-3|0)>>>0:0)?(o=fl(c[i>>2]|0)|0,(o|0)==(fl(c[h>>2]|0)|0)):0){c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}if((c[h>>2]|0)>>>0<((c[j>>2]|0)+-1|0)>>>0?(o=(rn(c[i>>2]|0)|0)&65535,(o|0)==((rn(c[h>>2]|0)|0)&65535|0)):0){c[h>>2]=(c[h>>2]|0)+2;c[i>>2]=(c[i>>2]|0)+2;}if((c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?(d[c[i>>2]>>0]|0|0)==(d[c[h>>2]>>0]|0|0):0)c[h>>2]=(c[h>>2]|0)+1;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}function on(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function pn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=($k()|0)!=0;f=(qn()|0)!=0;g=c[e>>2]|0;do{if(a){if(f){e=ob(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(fE(g|0)|0)>>3;break;}}else if(f){e=lE(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(Q(g|0)|0)>>3;break;}}while(0);l=b;return c[d>>2]|0;}function qn(){return 0;}function rn(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function sn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;switch(c[(c[j>>2]|0)+16>>2]|0){case 7:case 6:{c[h>>2]=un(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,6)|0;o=c[h>>2]|0;l=g;return o|0;}case 5:{c[h>>2]=un(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,5)|0;o=c[h>>2]|0;l=g;return o|0;}default:{c[h>>2]=un(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,4)|0;o=c[h>>2]|0;l=g;return o|0;}}return 0;}function tn(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0;h=l;l=l+320|0;i=h+308|0;j=h+304|0;k=h+300|0;m=h+296|0;n=h+292|0;o=h+288|0;p=h+284|0;q=h+280|0;r=h+276|0;s=h+272|0;t=h+268|0;u=h+264|0;v=h+260|0;w=h+256|0;x=h+252|0;y=h+248|0;z=h+244|0;A=h+240|0;B=h+236|0;C=h+232|0;D=h+228|0;E=h+224|0;F=h+220|0;G=h+216|0;H=h+212|0;I=h+208|0;J=h+204|0;K=h+200|0;L=h+196|0;M=h+192|0;N=h+188|0;O=h+184|0;P=h+180|0;Q=h+176|0;R=h+172|0;S=h+168|0;T=h+164|0;U=h+160|0;V=h+156|0;W=h+152|0;X=h+148|0;Y=h+144|0;Z=h+140|0;_=h+136|0;$=h+132|0;aa=h+128|0;ba=h+124|0;ca=h+120|0;da=h+116|0;ea=h+112|0;fa=h+108|0;ga=h+104|0;ha=h+100|0;ia=h+96|0;ja=h+92|0;ka=h+88|0;la=h+84|0;ma=h+80|0;na=h+76|0;oa=h+72|0;pa=h+68|0;qa=h+64|0;ra=h+60|0;sa=h+56|0;ta=h+52|0;ua=h+48|0;va=h+44|0;wa=h+40|0;xa=h+36|0;ya=h+32|0;za=h+28|0;Aa=h+24|0;Ba=h+20|0;Ca=h+16|0;Da=h+12|0;Ea=h+8|0;Fa=h+4|0;Ga=h;c[Ca>>2]=a;c[Da>>2]=b;c[Ea>>2]=e;c[Fa>>2]=f;c[Ga>>2]=g;switch(c[(c[Da>>2]|0)+16>>2]|0){case 7:case 6:{g=c[Da>>2]|0;f=c[Ea>>2]|0;e=c[Fa>>2]|0;b=c[Ga>>2]|0;c[i>>2]=c[Ca>>2];c[j>>2]=g;c[k>>2]=f;c[m>>2]=e;c[n>>2]=b;c[o>>2]=6;c[p>>2]=0;c[q>>2]=c[(c[i>>2]|0)+44>>2];c[r>>2]=1<<c[(c[j>>2]|0)+4>>2];c[s>>2]=(c[r>>2]|0)-1;c[t>>2]=c[(c[i>>2]|0)+4>>2];c[u>>2]=c[(c[i>>2]|0)+8>>2];c[v>>2]=c[(c[i>>2]|0)+12>>2];c[w>>2]=(c[t>>2]|0)+(c[v>>2]|0);c[x>>2]=(c[u>>2]|0)+(c[v>>2]|0);c[y>>2]=c[(c[i>>2]|0)+16>>2];c[z>>2]=(c[k>>2]|0)-(c[t>>2]|0);if((c[z>>2]|0)>>>0>(c[r>>2]|0)>>>0)Ha=(c[z>>2]|0)-(c[r>>2]|0)|0;else Ha=0;c[A>>2]=Ha;c[B>>2]=1<<c[(c[j>>2]|0)+12>>2];c[C>>2]=3;c[D>>2]=mk(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[o>>2]|0)|0;while(1){if(!(((c[B>>2]|0)>>>0>0?(c[D>>2]|0)>>>0>(c[y>>2]|0)>>>0:0)|0))break;c[E>>2]=0;if(c[p>>2]|0?(c[D>>2]|0)>>>0<(c[v>>2]|0)>>>0:0){c[G>>2]=(c[u>>2]|0)+(c[D>>2]|0);o=Bk(c[G>>2]|0)|0;if((o|0)==(Bk(c[k>>2]|0)|0))c[E>>2]=(Lm((c[k>>2]|0)+4|0,(c[G>>2]|0)+4|0,c[m>>2]|0,c[x>>2]|0,c[w>>2]|0)|0)+4;}else Ia=38;if((Ia|0)==38?(Ia=0,c[F>>2]=(c[t>>2]|0)+(c[D>>2]|0),(d[(c[F>>2]|0)+(c[C>>2]|0)>>0]|0|0)==(d[(c[k>>2]|0)+(c[C>>2]|0)>>0]|0|0)):0)c[E>>2]=Qm(c[k>>2]|0,c[F>>2]|0,c[m>>2]|0)|0;if((c[E>>2]|0)>>>0>(c[C>>2]|0)>>>0?(c[C>>2]=c[E>>2],c[c[n>>2]>>2]=(c[z>>2]|0)-(c[D>>2]|0)+2,((c[k>>2]|0)+(c[E>>2]|0)|0)==(c[m>>2]|0)):0)break;if((c[D>>2]|0)>>>0<=(c[A>>2]|0)>>>0)break;c[D>>2]=c[(c[q>>2]|0)+((c[D>>2]&c[s>>2])<<2)>>2];c[B>>2]=(c[B>>2]|0)+-1;}c[Ba>>2]=c[C>>2];Ja=c[Ba>>2]|0;l=h;return Ja|0;}case 5:{C=c[Da>>2]|0;B=c[Ea>>2]|0;s=c[Fa>>2]|0;D=c[Ga>>2]|0;c[H>>2]=c[Ca>>2];c[I>>2]=C;c[J>>2]=B;c[K>>2]=s;c[L>>2]=D;c[M>>2]=5;c[N>>2]=0;c[O>>2]=c[(c[H>>2]|0)+44>>2];c[P>>2]=1<<c[(c[I>>2]|0)+4>>2];c[Q>>2]=(c[P>>2]|0)-1;c[R>>2]=c[(c[H>>2]|0)+4>>2];c[S>>2]=c[(c[H>>2]|0)+8>>2];c[T>>2]=c[(c[H>>2]|0)+12>>2];c[U>>2]=(c[R>>2]|0)+(c[T>>2]|0);c[V>>2]=(c[S>>2]|0)+(c[T>>2]|0);c[W>>2]=c[(c[H>>2]|0)+16>>2];c[X>>2]=(c[J>>2]|0)-(c[R>>2]|0);if((c[X>>2]|0)>>>0>(c[P>>2]|0)>>>0)Ka=(c[X>>2]|0)-(c[P>>2]|0)|0;else Ka=0;c[Y>>2]=Ka;c[Z>>2]=1<<c[(c[I>>2]|0)+12>>2];c[_>>2]=3;c[$>>2]=mk(c[H>>2]|0,c[I>>2]|0,c[J>>2]|0,c[M>>2]|0)|0;while(1){if(!(((c[Z>>2]|0)>>>0>0?(c[$>>2]|0)>>>0>(c[W>>2]|0)>>>0:0)|0))break;c[aa>>2]=0;if(c[N>>2]|0?(c[$>>2]|0)>>>0<(c[T>>2]|0)>>>0:0){c[ca>>2]=(c[S>>2]|0)+(c[$>>2]|0);M=Bk(c[ca>>2]|0)|0;if((M|0)==(Bk(c[J>>2]|0)|0))c[aa>>2]=(Lm((c[J>>2]|0)+4|0,(c[ca>>2]|0)+4|0,c[K>>2]|0,c[V>>2]|0,c[U>>2]|0)|0)+4;}else Ia=23;if((Ia|0)==23?(Ia=0,c[ba>>2]=(c[R>>2]|0)+(c[$>>2]|0),(d[(c[ba>>2]|0)+(c[_>>2]|0)>>0]|0|0)==(d[(c[J>>2]|0)+(c[_>>2]|0)>>0]|0|0)):0)c[aa>>2]=Qm(c[J>>2]|0,c[ba>>2]|0,c[K>>2]|0)|0;if((c[aa>>2]|0)>>>0>(c[_>>2]|0)>>>0?(c[_>>2]=c[aa>>2],c[c[L>>2]>>2]=(c[X>>2]|0)-(c[$>>2]|0)+2,((c[J>>2]|0)+(c[aa>>2]|0)|0)==(c[K>>2]|0)):0)break;if((c[$>>2]|0)>>>0<=(c[Y>>2]|0)>>>0)break;c[$>>2]=c[(c[O>>2]|0)+((c[$>>2]&c[Q>>2])<<2)>>2];c[Z>>2]=(c[Z>>2]|0)+-1;}c[Ba>>2]=c[_>>2];Ja=c[Ba>>2]|0;l=h;return Ja|0;}default:{_=c[Da>>2]|0;Da=c[Ea>>2]|0;Ea=c[Fa>>2]|0;Fa=c[Ga>>2]|0;c[da>>2]=c[Ca>>2];c[ea>>2]=_;c[fa>>2]=Da;c[ga>>2]=Ea;c[ha>>2]=Fa;c[ia>>2]=4;c[ja>>2]=0;c[ka>>2]=c[(c[da>>2]|0)+44>>2];c[la>>2]=1<<c[(c[ea>>2]|0)+4>>2];c[ma>>2]=(c[la>>2]|0)-1;c[na>>2]=c[(c[da>>2]|0)+4>>2];c[oa>>2]=c[(c[da>>2]|0)+8>>2];c[pa>>2]=c[(c[da>>2]|0)+12>>2];c[qa>>2]=(c[na>>2]|0)+(c[pa>>2]|0);c[ra>>2]=(c[oa>>2]|0)+(c[pa>>2]|0);c[sa>>2]=c[(c[da>>2]|0)+16>>2];c[ta>>2]=(c[fa>>2]|0)-(c[na>>2]|0);if((c[ta>>2]|0)>>>0>(c[la>>2]|0)>>>0)La=(c[ta>>2]|0)-(c[la>>2]|0)|0;else La=0;c[ua>>2]=La;c[va>>2]=1<<c[(c[ea>>2]|0)+12>>2];c[wa>>2]=3;c[xa>>2]=mk(c[da>>2]|0,c[ea>>2]|0,c[fa>>2]|0,c[ia>>2]|0)|0;while(1){if(!(((c[va>>2]|0)>>>0>0?(c[xa>>2]|0)>>>0>(c[sa>>2]|0)>>>0:0)|0))break;c[ya>>2]=0;if(c[ja>>2]|0?(c[xa>>2]|0)>>>0<(c[pa>>2]|0)>>>0:0){c[Aa>>2]=(c[oa>>2]|0)+(c[xa>>2]|0);ia=Bk(c[Aa>>2]|0)|0;if((ia|0)==(Bk(c[fa>>2]|0)|0))c[ya>>2]=(Lm((c[fa>>2]|0)+4|0,(c[Aa>>2]|0)+4|0,c[ga>>2]|0,c[ra>>2]|0,c[qa>>2]|0)|0)+4;}else Ia=8;if((Ia|0)==8?(Ia=0,c[za>>2]=(c[na>>2]|0)+(c[xa>>2]|0),(d[(c[za>>2]|0)+(c[wa>>2]|0)>>0]|0|0)==(d[(c[fa>>2]|0)+(c[wa>>2]|0)>>0]|0|0)):0)c[ya>>2]=Qm(c[fa>>2]|0,c[za>>2]|0,c[ga>>2]|0)|0;if((c[ya>>2]|0)>>>0>(c[wa>>2]|0)>>>0?(c[wa>>2]=c[ya>>2],c[c[ha>>2]>>2]=(c[ta>>2]|0)-(c[xa>>2]|0)+2,((c[fa>>2]|0)+(c[ya>>2]|0)|0)==(c[ga>>2]|0)):0)break;if((c[xa>>2]|0)>>>0<=(c[ua>>2]|0)>>>0)break;c[xa>>2]=c[(c[ka>>2]|0)+((c[xa>>2]&c[ma>>2])<<2)>>2];c[va>>2]=(c[va>>2]|0)+-1;}c[Ba>>2]=c[wa>>2];Ja=c[Ba>>2]|0;l=h;return Ja|0;}}return 0;}function un(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;h=l;l=l+32|0;i=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;n=h+8|0;o=h+4|0;p=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;if((c[m>>2]|0)>>>0<((c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+24>>2]|0)|0)>>>0){c[i>>2]=0;q=c[i>>2]|0;l=h;return q|0;}else{Wm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[p>>2]|0);c[i>>2]=Xm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,0)|0;q=c[i>>2]|0;l=h;return q|0;}return 0;}function vn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+16|0;i=g+12|0;j=g+8|0;k=g+4|0;m=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;f=wn(c[h>>2]|0,c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,1,0)|0;l=g;return f|0;}function wn(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0;i=l;l=l+160|0;j=i+48|0;k=i+40|0;m=i+36|0;n=i+32|0;o=i+28|0;p=i+24|0;q=i+20|0;r=i+16|0;s=i+12|0;t=i+8|0;u=i+4|0;v=i;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=(c[m>>2]|0)+472+8;c[u>>2]=0;if(!(c[c[m>>2]>>2]|0)){c[k>>2]=-60;w=c[k>>2]|0;l=i;return w|0;}do{if(c[r>>2]|0?(c[c[m>>2]>>2]|0)==1:0){h=c[n>>2]|0;g=c[o>>2]|0;f=(c[m>>2]|0)+116|0;e=(c[m>>2]|0)+240|0;d=eE(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;e=y;b=c[(c[m>>2]|0)+220>>2]|0;a=j;x=f;f=a+104|0;do{c[a>>2]=c[x>>2];a=a+4|0;x=x+4|0;}while((a|0)<(f|0));c[u>>2]=xn(h,g,j,d,e,b)|0;x=(Ph(c[u>>2]|0)|0)!=0;a=c[u>>2]|0;if(!x){c[o>>2]=(c[o>>2]|0)-a;c[n>>2]=(c[n>>2]|0)+(c[u>>2]|0);c[c[m>>2]>>2]=2;break;}c[k>>2]=a;w=c[k>>2]|0;l=i;return w|0;}}while(0);if(!(c[q>>2]|0)){c[k>>2]=c[u>>2];w=c[k>>2]|0;l=i;return w|0;}if(!(Mj(c[t>>2]|0,c[p>>2]|0,c[q>>2]|0)|0))c[(c[t>>2]|0)+24>>2]=c[(c[t>>2]|0)+12>>2];if(c[(c[m>>2]|0)+116+68>>2]|0)Mj((c[m>>2]|0)+408|0,c[p>>2]|0,c[q>>2]|0)|0;t=c[m>>2]|0;j=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;p=c[q>>2]|0;if(c[r>>2]|0)z=yn(t,j,n,o,p,c[s>>2]|0)|0;else z=zn(t,j,n,o,p)|0;c[v>>2]=z;if(Ph(c[v>>2]|0)|0){c[k>>2]=c[v>>2];w=c[k>>2]|0;l=i;return w|0;}z=(c[m>>2]|0)+248|0;p=z;o=dE(c[p>>2]|0,c[p+4>>2]|0,c[q>>2]|0,0)|0;q=z;c[q>>2]=o;c[q+4>>2]=y;q=(c[m>>2]|0)+256|0;o=q;z=dE(c[o>>2]|0,c[o+4>>2]|0,(c[v>>2]|0)+(c[u>>2]|0)|0,0)|0;o=q;c[o>>2]=z;c[o+4>>2]=y;if(c[(c[m>>2]|0)+116+32>>2]|0?(o=(c[m>>2]|0)+248|0,z=dE(c[o>>2]|0,c[o+4>>2]|0,1,0)|0,o=y,q=(c[m>>2]|0)+240|0,m=c[q+4>>2]|0,o>>>0>m>>>0|((o|0)==(m|0)?z>>>0>(c[q>>2]|0)>>>0:0)):0){c[k>>2]=-72;w=c[k>>2]|0;l=i;return w|0;}c[k>>2]=(c[v>>2]|0)+(c[u>>2]|0);w=c[k>>2]|0;l=i;return w|0;}function xn(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;i=l;l=l+64|0;j=i+52|0;k=i+48|0;m=i+44|0;n=i;o=i+40|0;p=i+36|0;q=i+32|0;r=i+28|0;s=i+24|0;t=i+20|0;u=i+16|0;v=i+57|0;w=i+12|0;x=i+56|0;y=i+8|0;c[k>>2]=b;c[m>>2]=d;d=n;c[d>>2]=f;c[d+4>>2]=g;c[o>>2]=h;c[p>>2]=c[k>>2];c[q>>2]=((c[o>>2]|0)>>>0>0&1)+((c[o>>2]|0)>>>0>=256&1)+((c[o>>2]|0)>>>0>=65536&1);c[r>>2]=c[e+32+8>>2]|0?0:c[q>>2]|0;c[s>>2]=(c[e+32+4>>2]|0)>>>0>0&1;c[t>>2]=1<<c[e+4>>2];if(c[e+32>>2]|0){q=n;h=c[q+4>>2]|0;z=0>h>>>0|(0==(h|0)?(c[t>>2]|0)>>>0>=(c[q>>2]|0)>>>0:0);}else z=0;c[u>>2]=z&1;a[v>>0]=(c[e+4>>2]|0)-10<<3;if(c[e+32>>2]|0){z=n;q=c[z+4>>2]|0;t=n;h=c[t+4>>2]|0;g=n;d=c[g+4>>2]|0;A=((q>>>0>0|(q|0)==0&(c[z>>2]|0)>>>0>=256)&1)+((h>>>0>0|(h|0)==0&(c[t>>2]|0)>>>0>=65792)&1)+((d>>>0>0|(d|0)==0&(c[g>>2]|0)>>>0>=4294967295)&1)|0;}else A=0;c[w>>2]=A;a[x>>0]=(c[r>>2]|0)+(c[s>>2]<<2)+(c[u>>2]<<5)+(c[w>>2]<<6);c[y>>2]=0;if((c[m>>2]|0)>>>0<18){c[j>>2]=-70;B=c[j>>2]|0;l=i;return B|0;}if(!(c[e>>2]|0)){Pl(c[k>>2]|0,-47205080);c[y>>2]=4;}k=a[x>>0]|0;x=c[p>>2]|0;e=c[y>>2]|0;c[y>>2]=e+1;a[x+e>>0]=k;if(!(c[u>>2]|0)){k=a[v>>0]|0;v=c[p>>2]|0;e=c[y>>2]|0;c[y>>2]=e+1;a[v+e>>0]=k;}switch(c[r>>2]|0){case 3:{Pl((c[p>>2]|0)+(c[y>>2]|0)|0,c[o>>2]|0);c[y>>2]=(c[y>>2]|0)+4;break;}case 1:{a[(c[p>>2]|0)+(c[y>>2]|0)>>0]=c[o>>2];c[y>>2]=(c[y>>2]|0)+1;break;}case 2:{xl((c[p>>2]|0)+(c[y>>2]|0)|0,c[o>>2]&65535);c[y>>2]=(c[y>>2]|0)+2;break;}default:{}}switch(c[w>>2]|0){case 3:{w=n;Ql((c[p>>2]|0)+(c[y>>2]|0)|0,c[w>>2]|0,c[w+4>>2]|0);c[y>>2]=(c[y>>2]|0)+8;break;}case 1:{w=(c[p>>2]|0)+(c[y>>2]|0)|0;o=n;xl(w,(eE(c[o>>2]|0,c[o+4>>2]|0,256,0)|0)&65535);c[y>>2]=(c[y>>2]|0)+2;break;}case 2:{Pl((c[p>>2]|0)+(c[y>>2]|0)|0,c[n>>2]|0);c[y>>2]=(c[y>>2]|0)+4;break;}default:if(c[u>>2]|0){u=c[n>>2]&255;n=c[p>>2]|0;p=c[y>>2]|0;c[y>>2]=p+1;a[n+p>>0]=u;}}c[j>>2]=c[y>>2];B=c[j>>2]|0;l=i;return B|0;}function yn(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;h=l;l=l+112|0;i=h+80|0;j=h+76|0;k=h+72|0;m=h+68|0;n=h+64|0;o=h+60|0;p=h+56|0;q=h+52|0;r=h+48|0;s=h+44|0;t=h+40|0;u=h+36|0;v=h+32|0;w=h+28|0;x=h+24|0;y=h+20|0;z=h+16|0;A=h+12|0;B=h+8|0;C=h+4|0;D=h;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=c[(c[k>>2]|0)+232>>2];c[s>>2]=c[p>>2];c[t>>2]=c[o>>2];c[u>>2]=c[m>>2];c[v>>2]=c[u>>2];c[w>>2]=1<<c[(c[k>>2]|0)+116+4>>2];if(c[p>>2]|0?(c[(c[k>>2]|0)+116+32+4>>2]|0)!=0:0)Nh((c[k>>2]|0)+264|0,c[o>>2]|0,c[p>>2]|0)|0;while(1){if(!(c[s>>2]|0)){E=24;break;}c[x>>2]=(c[k>>2]|0)+472+8;c[y>>2]=c[q>>2]&(c[r>>2]|0)>>>0>=(c[s>>2]|0)>>>0;if((c[n>>2]|0)>>>0<6){E=6;break;}if((c[s>>2]|0)>>>0<(c[r>>2]|0)>>>0)c[r>>2]=c[s>>2];p=c[x>>2]|0;o=(c[t>>2]|0)+(c[r>>2]|0)|0;c[i>>2]=c[p>>2];c[i+4>>2]=c[p+4>>2];c[i+8>>2]=c[p+8>>2];c[i+12>>2]=c[p+12>>2];c[i+16>>2]=c[p+16>>2];if(ro(i,o)|0){c[z>>2]=vj(c[(c[k>>2]|0)+116+4+4>>2]|0,c[(c[k>>2]|0)+116+4+24>>2]|0)|0;c[A>>2]=so(c[x>>2]|0,c[z>>2]|0,c[w>>2]|0,c[t>>2]|0)|0;to(c[k>>2]|0,c[A>>2]|0);if((c[(c[x>>2]|0)+24>>2]|0)>>>0<(c[A>>2]|0)>>>0)c[(c[x>>2]|0)+24>>2]=0;else{o=(c[x>>2]|0)+24|0;c[o>>2]=(c[o>>2]|0)-(c[A>>2]|0);}c[(c[x>>2]|0)+20>>2]=0;}uo(c[x>>2]|0,(c[t>>2]|0)+(c[r>>2]|0)|0,c[w>>2]|0,(c[x>>2]|0)+20|0);if((c[(c[x>>2]|0)+24>>2]|0)>>>0<(c[(c[x>>2]|0)+16>>2]|0)>>>0)c[(c[x>>2]|0)+24>>2]=c[(c[x>>2]|0)+16>>2];c[B>>2]=zn(c[k>>2]|0,(c[v>>2]|0)+3|0,(c[n>>2]|0)-3|0,c[t>>2]|0,c[r>>2]|0)|0;o=(Ph(c[B>>2]|0)|0)!=0;F=c[B>>2]|0;if(o){E=17;break;}o=c[y>>2]|0;if(!F){c[C>>2]=o+0+(c[r>>2]<<3);if(((c[r>>2]|0)+3|0)>>>0>(c[n>>2]|0)>>>0){E=20;break;}Pl(c[v>>2]|0,c[C>>2]|0);mE((c[v>>2]|0)+3|0,c[t>>2]|0,c[r>>2]|0)|0;c[B>>2]=3+(c[r>>2]|0);}else{c[D>>2]=o+4+(c[B>>2]<<3);wl(c[v>>2]|0,c[D>>2]|0);c[B>>2]=(c[B>>2]|0)+3;}c[t>>2]=(c[t>>2]|0)+(c[r>>2]|0);c[s>>2]=(c[s>>2]|0)-(c[r>>2]|0);c[v>>2]=(c[v>>2]|0)+(c[B>>2]|0);c[n>>2]=(c[n>>2]|0)-(c[B>>2]|0);}if((E|0)==6){c[j>>2]=-70;G=c[j>>2]|0;l=h;return G|0;}else if((E|0)==17){c[j>>2]=F;G=c[j>>2]|0;l=h;return G|0;}else if((E|0)==20){c[j>>2]=-70;G=c[j>>2]|0;l=h;return G|0;}else if((E|0)==24){if(c[q>>2]|0?(c[v>>2]|0)>>>0>(c[u>>2]|0)>>>0:0)c[c[k>>2]>>2]=3;c[j>>2]=(c[v>>2]|0)-(c[u>>2]|0);G=c[j>>2]|0;l=h;return G|0;}return 0;}function zn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=l;l=l+112|0;h=g+92|0;i=g+88|0;j=g+84|0;k=g+80|0;m=g+76|0;n=g+72|0;o=g+68|0;p=g+64|0;q=g+60|0;r=g+56|0;s=g+52|0;t=g+48|0;u=g+44|0;v=g+40|0;w=g+24|0;x=g+16|0;y=g+12|0;z=g+8|0;A=g+4|0;B=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=(c[j>>2]|0)+472+8;f=c[j>>2]|0;if((c[o>>2]|0)>>>0<7){An(f+456|0,c[o>>2]|0,c[(c[j>>2]|0)+116+4+16>>2]|0);c[i>>2]=0;C=c[i>>2]|0;l=g;return C|0;}Bn(f+368|0);c[q>>2]=c[(c[p>>2]|0)+4>>2];c[r>>2]=c[n>>2];c[s>>2]=(c[r>>2]|0)-(c[q>>2]|0);if((c[s>>2]|0)>>>0>((c[(c[p>>2]|0)+24>>2]|0)+384|0)>>>0){if(192<((c[s>>2]|0)-(c[(c[p>>2]|0)+24>>2]|0)-384|0)>>>0)D=192;else D=(c[s>>2]|0)-(c[(c[p>>2]|0)+24>>2]|0)-384|0;c[(c[p>>2]|0)+24>>2]=(c[s>>2]|0)-D;}D=c[p>>2]|0;c[h>>2]=c[D>>2];c[h+4>>2]=c[D+4>>2];c[h+8>>2]=c[D+8>>2];c[h+12>>2]=c[D+12>>2];c[h+16>>2]=c[D+16>>2];c[t>>2]=Cn(h)|0;c[v>>2]=0;while(1){E=c[j>>2]|0;if((c[v>>2]|0)>=3)break;c[(c[(c[j>>2]|0)+472+4>>2]|0)+4580+(c[v>>2]<<2)>>2]=c[(c[E+472>>2]|0)+4580+(c[v>>2]<<2)>>2];c[v>>2]=(c[v>>2]|0)+1;}v=c[j>>2]|0;do{if((c[E+456+4>>2]|0)>>>0<(c[(c[j>>2]|0)+456+8>>2]|0)>>>0)c[u>>2]=Dn(v+456|0,c[p>>2]|0,(c[j>>2]|0)+368|0,(c[(c[j>>2]|0)+472+4>>2]|0)+4580|0,(c[j>>2]|0)+116+4|0,c[n>>2]|0,c[o>>2]|0,c[t>>2]|0)|0;else{if(!(c[v+116+68>>2]|0)){c[y>>2]=Wl(c[(c[j>>2]|0)+116+4+24>>2]|0,c[t>>2]|0)|0;c[u>>2]=uc[c[y>>2]&31](c[p>>2]|0,(c[j>>2]|0)+368|0,(c[(c[j>>2]|0)+472+4>>2]|0)+4580|0,(c[j>>2]|0)+116+4|0,c[n>>2]|0,c[o>>2]|0)|0;break;};c[w>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;c[w+12>>2]=0;c[w>>2]=c[(c[j>>2]|0)+448>>2];c[w+12>>2]=c[(c[j>>2]|0)+452>>2];c[x>>2]=En((c[j>>2]|0)+408|0,w,(c[j>>2]|0)+116+68|0,c[n>>2]|0,c[o>>2]|0)|0;if(!(wj(c[x>>2]|0)|0)){c[u>>2]=Dn(w,c[p>>2]|0,(c[j>>2]|0)+368|0,(c[(c[j>>2]|0)+472+4>>2]|0)+4580|0,(c[j>>2]|0)+116+4|0,c[n>>2]|0,c[o>>2]|0,c[t>>2]|0)|0;break;}c[i>>2]=c[x>>2];C=c[i>>2]|0;l=g;return C|0;}}while(0);c[z>>2]=(c[n>>2]|0)+(c[o>>2]|0)+(0-(c[u>>2]|0));Fn((c[j>>2]|0)+368|0,c[z>>2]|0,c[u>>2]|0);c[A>>2]=Gn((c[j>>2]|0)+368|0,c[(c[j>>2]|0)+472>>2]|0,c[(c[j>>2]|0)+472+4>>2]|0,(c[j>>2]|0)+116|0,c[k>>2]|0,c[m>>2]|0,c[o>>2]|0,c[(c[j>>2]|0)+588>>2]|0,c[(c[j>>2]|0)+8>>2]|0)|0;o=(Ph(c[A>>2]|0)|0)!=0;if(o|(c[A>>2]|0)==0){c[i>>2]=c[A>>2];C=c[i>>2]|0;l=g;return C|0;}else{c[B>>2]=c[(c[j>>2]|0)+472>>2];c[(c[j>>2]|0)+472>>2]=c[(c[j>>2]|0)+472+4>>2];c[(c[j>>2]|0)+472+4>>2]=c[B>>2];c[i>>2]=c[A>>2];C=c[i>>2]|0;l=g;return C|0;}return 0;}function An(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;while(1){if((c[g>>2]|0)>>>0<=0){j=12;break;}if((c[(c[f>>2]|0)+4>>2]|0)>>>0>=(c[(c[f>>2]|0)+8>>2]|0)>>>0){j=12;break;}c[i>>2]=(c[c[f>>2]>>2]|0)+((c[(c[f>>2]|0)+4>>2]|0)*12|0);if((c[g>>2]|0)>>>0<=(c[(c[i>>2]|0)+4>>2]|0)>>>0){j=5;break;}c[g>>2]=(c[g>>2]|0)-(c[(c[i>>2]|0)+4>>2]|0);c[(c[i>>2]|0)+4>>2]=0;if((c[g>>2]|0)>>>0<(c[(c[i>>2]|0)+8>>2]|0)>>>0){j=7;break;}c[g>>2]=(c[g>>2]|0)-(c[(c[i>>2]|0)+8>>2]|0);c[(c[i>>2]|0)+8>>2]=0;d=(c[f>>2]|0)+4|0;c[d>>2]=(c[d>>2]|0)+1;}if((j|0)==5){d=(c[i>>2]|0)+4|0;c[d>>2]=(c[d>>2]|0)-(c[g>>2]|0);l=e;return;}else if((j|0)==7){d=(c[i>>2]|0)+8|0;c[d>>2]=(c[d>>2]|0)-(c[g>>2]|0);if((c[(c[i>>2]|0)+8>>2]|0)>>>0>=(c[h>>2]|0)>>>0){l=e;return;}if(((c[(c[f>>2]|0)+4>>2]|0)+1|0)>>>0<(c[(c[f>>2]|0)+8>>2]|0)>>>0){h=(c[i>>2]|0)+12+4|0;c[h>>2]=(c[h>>2]|0)+(c[(c[i>>2]|0)+8>>2]|0);}i=(c[f>>2]|0)+4|0;c[i>>2]=(c[i>>2]|0)+1;l=e;return;}else if((j|0)==12){l=e;return;}}function Bn(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+12>>2]=c[(c[d>>2]|0)+8>>2];c[(c[d>>2]|0)+4>>2]=c[c[d>>2]>>2];c[(c[d>>2]|0)+28>>2]=0;l=b;return;}function Cn(a){a=a|0;return(c[a+16>>2]|0)>>>0<(c[a+12>>2]|0)>>>0|0;}function Dn(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;j=l;l=l+80|0;k=j+76|0;m=j+72|0;n=j+68|0;o=j+64|0;p=j+60|0;q=j+56|0;r=j+52|0;s=j+48|0;t=j+44|0;u=j+40|0;v=j+36|0;w=j+32|0;x=j+28|0;y=j+24|0;z=j+12|0;A=j+8|0;B=j+4|0;C=j;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;c[t>>2]=c[(c[p>>2]|0)+16>>2];c[u>>2]=Wl(c[(c[p>>2]|0)+24>>2]|0,c[s>>2]|0)|0;c[v>>2]=c[(c[m>>2]|0)+4>>2];c[w>>2]=c[q>>2];c[x>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[y>>2]=c[w>>2];while(1){if((c[(c[k>>2]|0)+4>>2]|0)>>>0>=(c[(c[k>>2]|0)+8>>2]|0)>>>0)break;if((c[y>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break;lo(z,c[k>>2]|0,(c[x>>2]|0)-(c[y>>2]|0)|0,c[t>>2]|0);if(!(c[z>>2]|0))break;mo(c[m>>2]|0,c[y>>2]|0);no(c[m>>2]|0,c[p>>2]|0,c[y>>2]|0)|0;c[B>>2]=uc[c[u>>2]&31](c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[y>>2]|0,c[z+4>>2]|0)|0;c[y>>2]=(c[y>>2]|0)+(c[z+4>>2]|0);c[(c[m>>2]|0)+24>>2]=(c[y>>2]|0)-(c[v>>2]|0);c[A>>2]=2;while(1){if((c[A>>2]|0)<=0)break;c[(c[o>>2]|0)+(c[A>>2]<<2)>>2]=c[(c[o>>2]|0)+((c[A>>2]|0)-1<<2)>>2];c[A>>2]=(c[A>>2]|0)+-1;}c[c[o>>2]>>2]=c[z>>2];oo(c[n>>2]|0,c[B>>2]|0,(c[y>>2]|0)+(0-(c[B>>2]|0))|0,(c[z>>2]|0)+2|0,(c[z+8>>2]|0)-3|0);c[y>>2]=(c[y>>2]|0)+(c[z+8>>2]|0);}mo(c[m>>2]|0,c[y>>2]|0);no(c[m>>2]|0,c[p>>2]|0,c[y>>2]|0)|0;c[C>>2]=uc[c[u>>2]&31](c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[y>>2]|0,(c[x>>2]|0)-(c[y>>2]|0)|0)|0;c[(c[m>>2]|0)+24>>2]=(c[x>>2]|0)-(c[v>>2]|0);l=j;return c[C>>2]|0;}function En(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=l;l=l+112|0;h=g+84|0;i=g+80|0;j=g+76|0;k=g+72|0;m=g+68|0;n=g+64|0;o=g+60|0;p=g+56|0;q=g+52|0;r=g+48|0;s=g+40|0;t=g+36|0;u=g+32|0;v=g+28|0;w=g+24|0;x=g+20|0;y=g+16|0;z=g+12|0;A=g+8|0;B=g+4|0;C=g;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=1<<c[(c[m>>2]|0)+20>>2];c[q>>2]=c[n>>2];c[r>>2]=(c[q>>2]|0)+(c[o>>2]|0);c[g+44>>2]=1048576;c[s>>2]=(((c[o>>2]|0)>>>0)/1048576|0)+((((c[o>>2]|0)>>>0)%1048576|0|0)!=0&1);c[u>>2]=0;c[t>>2]=0;while(1){if((c[t>>2]|0)>>>0>=(c[s>>2]|0)>>>0){D=12;break;}if((c[(c[k>>2]|0)+8>>2]|0)>>>0>=(c[(c[k>>2]|0)+12>>2]|0)>>>0){D=12;break;}c[v>>2]=(c[q>>2]|0)+(c[t>>2]<<20);c[w>>2]=(c[r>>2]|0)-(c[v>>2]|0);c[x>>2]=(c[w>>2]|0)>>>0<1048576?c[r>>2]|0:(c[v>>2]|0)+1048576|0;c[y>>2]=(c[x>>2]|0)-(c[v>>2]|0);c[A>>2]=c[(c[k>>2]|0)+8>>2];o=c[j>>2]|0;f=c[x>>2]|0;c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];c[h+12>>2]=c[o+12>>2];c[h+16>>2]=c[o+16>>2];if(On(h,f)|0){c[B>>2]=1<<c[(c[m>>2]|0)+4>>2];c[C>>2]=Pn(c[j>>2]|0,0,c[p>>2]|0,c[n>>2]|0)|0;Qn(c[(c[j>>2]|0)+20>>2]|0,c[B>>2]|0,c[C>>2]|0);}Rn(c[j>>2]|0,c[x>>2]|0,c[p>>2]|0,0);c[z>>2]=Sn(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[v>>2]|0,c[y>>2]|0)|0;if(Ph(c[z>>2]|0)|0){D=7;break;}if((c[A>>2]|0)>>>0<(c[(c[k>>2]|0)+8>>2]|0)>>>0){f=(c[c[k>>2]>>2]|0)+((c[A>>2]|0)*12|0)+4|0;c[f>>2]=(c[f>>2]|0)+(c[u>>2]|0);c[u>>2]=c[z>>2];}else c[u>>2]=(c[u>>2]|0)+(c[y>>2]|0);c[t>>2]=(c[t>>2]|0)+1;}if((D|0)==7){c[i>>2]=c[z>>2];E=c[i>>2]|0;l=g;return E|0;}else if((D|0)==12){c[i>>2]=0;E=c[i>>2]|0;l=g;return E|0;}return 0;}function Fn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;mE(c[(c[f>>2]|0)+12>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;g=(c[f>>2]|0)+12|0;c[g>>2]=(c[g>>2]|0)+(c[h>>2]|0);l=e;return;}function Gn(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;k=l;l=l+48|0;m=k+44|0;n=k+40|0;o=k+36|0;p=k+32|0;q=k+28|0;r=k+24|0;s=k+20|0;t=k+16|0;u=k+12|0;v=k+8|0;w=k+4|0;x=k;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=i;c[v>>2]=j;c[w>>2]=Hn(c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;if(((c[w>>2]|0)==-70?(c[t>>2]|0)>>>0<=(c[s>>2]|0)>>>0:0)|0){c[m>>2]=0;y=c[m>>2]|0;l=k;return y|0;}if(Ph(c[w>>2]|0)|0){c[m>>2]=c[w>>2];y=c[m>>2]|0;l=k;return y|0;}s=c[t>>2]|0;c[x>>2]=s-(In(c[t>>2]|0)|0);if((c[w>>2]|0)>>>0>=(c[x>>2]|0)>>>0){c[m>>2]=0;y=c[m>>2]|0;l=k;return y|0;}if((c[(c[p>>2]|0)+4568>>2]|0)==2)c[(c[p>>2]|0)+4568>>2]=1;c[m>>2]=c[w>>2];y=c[m>>2]|0;l=k;return y|0;}function Hn(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;k=l;l=l+368|0;m=k+364|0;n=k+360|0;o=k+356|0;p=k+352|0;q=k+348|0;r=k+344|0;s=k+340|0;t=k+336|0;u=k+332|0;v=k+328|0;w=k;x=k+324|0;y=k+320|0;z=k+316|0;A=k+312|0;B=k+308|0;C=k+304|0;D=k+300|0;E=k+296|0;F=k+292|0;G=k+288|0;H=k+284|0;I=k+280|0;J=k+276|0;K=k+272|0;L=k+268|0;M=k+264|0;N=k+260|0;O=k+256|0;P=k+252|0;Q=k+248|0;R=k+244|0;S=k+240|0;T=k+236|0;U=k+232|0;V=k+228|0;W=k+224|0;X=k+220|0;Y=k+216|0;Z=k+212|0;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=i;c[u>>2]=j;j=c[(c[q>>2]|0)+4>>2]|0;i=(Il()|0)!=0;c[v>>2]=j>>>0>(i?25:57)>>>0&1;c[x>>2]=(c[p>>2]|0)+3248;c[y>>2]=(c[p>>2]|0)+1024;c[z>>2]=(c[p>>2]|0)+1796;c[D>>2]=c[c[n>>2]>>2];c[E>>2]=c[(c[n>>2]|0)+24>>2];c[F>>2]=c[(c[n>>2]|0)+16>>2];c[G>>2]=c[(c[n>>2]|0)+20>>2];c[H>>2]=c[r>>2];c[I>>2]=(c[H>>2]|0)+(c[s>>2]|0);c[J>>2]=c[H>>2];c[K>>2]=((c[(c[n>>2]|0)+4>>2]|0)-(c[c[n>>2]>>2]|0)|0)/8|0;c[M>>2]=c[(c[n>>2]|0)+8>>2];c[N>>2]=(c[(c[n>>2]|0)+12>>2]|0)-(c[M>>2]|0);c[O>>2]=Jn(c[o>>2]|0,c[p>>2]|0,c[(c[q>>2]|0)+4+24>>2]|0,c[(c[q>>2]|0)+48>>2]|0,c[J>>2]|0,c[s>>2]|0,c[M>>2]|0,c[N>>2]|0,c[t>>2]|0,c[u>>2]|0)|0;N=(Ph(c[O>>2]|0)|0)!=0;M=c[O>>2]|0;if(N){c[m>>2]=M;_=c[m>>2]|0;l=k;return _|0;}c[J>>2]=(c[J>>2]|0)+M;if(((c[I>>2]|0)-(c[J>>2]|0)|0)<4){c[m>>2]=-70;_=c[m>>2]|0;l=k;return _|0;}M=c[K>>2]|0;do{if((c[K>>2]|0)>>>0>=127){if(M>>>0<32512){a[c[J>>2]>>0]=((c[K>>2]|0)>>>8)+128;a[(c[J>>2]|0)+1>>0]=c[K>>2];c[J>>2]=(c[J>>2]|0)+2;break;}else{a[c[J>>2]>>0]=-1;xl((c[J>>2]|0)+1|0,(c[K>>2]|0)-32512&65535);c[J>>2]=(c[J>>2]|0)+3;break;}}else{N=c[J>>2]|0;c[J>>2]=N+1;a[N>>0]=M;}}while(0);if(!(c[K>>2]|0)){mE((c[p>>2]|0)+3248|0,(c[o>>2]|0)+3248|0,1316)|0;c[(c[p>>2]|0)+4576>>2]=c[(c[o>>2]|0)+4576>>2];mE((c[p>>2]|0)+1024|0,(c[o>>2]|0)+1024|0,772)|0;c[(c[p>>2]|0)+4568>>2]=c[(c[o>>2]|0)+4568>>2];mE((c[p>>2]|0)+1796|0,(c[o>>2]|0)+1796|0,1452)|0;c[(c[p>>2]|0)+4572>>2]=c[(c[o>>2]|0)+4572>>2];c[m>>2]=(c[J>>2]|0)-(c[H>>2]|0);_=c[m>>2]|0;l=k;return _|0;}M=c[J>>2]|0;c[J>>2]=M+1;c[L>>2]=M;zl(c[n>>2]|0);c[P>>2]=35;c[Q>>2]=_h(w,P,c[F>>2]|0,c[K>>2]|0,c[t>>2]|0)|0;c[(c[p>>2]|0)+4576>>2]=c[(c[o>>2]|0)+4576>>2];c[A>>2]=Kn((c[p>>2]|0)+4576|0,c[Q>>2]|0,c[K>>2]|0,6,1)|0;c[R>>2]=Ln(c[J>>2]|0,(c[I>>2]|0)-(c[J>>2]|0)|0,c[x>>2]|0,9,c[A>>2]|0,w,c[P>>2]|0,c[F>>2]|0,c[K>>2]|0,3200,6,35,(c[o>>2]|0)+3248|0,1316,c[t>>2]|0,6144)|0;P=(Ph(c[R>>2]|0)|0)!=0;Q=c[R>>2]|0;if(P){c[m>>2]=Q;_=c[m>>2]|0;l=k;return _|0;}c[J>>2]=(c[J>>2]|0)+Q;c[S>>2]=31;c[T>>2]=_h(w,S,c[E>>2]|0,c[K>>2]|0,c[t>>2]|0)|0;c[U>>2]=(c[S>>2]|0)>>>0<=28?1:0;c[(c[p>>2]|0)+4568>>2]=c[(c[o>>2]|0)+4568>>2];c[B>>2]=Kn((c[p>>2]|0)+4568|0,c[T>>2]|0,c[K>>2]|0,5,c[U>>2]|0)|0;c[V>>2]=Ln(c[J>>2]|0,(c[I>>2]|0)-(c[J>>2]|0)|0,c[y>>2]|0,8,c[B>>2]|0,w,c[S>>2]|0,c[E>>2]|0,c[K>>2]|0,3280,5,28,(c[o>>2]|0)+1024|0,772,c[t>>2]|0,6144)|0;S=(Ph(c[V>>2]|0)|0)!=0;U=c[V>>2]|0;if(S){c[m>>2]=U;_=c[m>>2]|0;l=k;return _|0;}c[J>>2]=(c[J>>2]|0)+U;c[W>>2]=52;c[X>>2]=_h(w,W,c[G>>2]|0,c[K>>2]|0,c[t>>2]|0)|0;c[(c[p>>2]|0)+4572>>2]=c[(c[o>>2]|0)+4572>>2];c[C>>2]=Kn((c[p>>2]|0)+4572|0,c[X>>2]|0,c[K>>2]|0,6,1)|0;c[Y>>2]=Ln(c[J>>2]|0,(c[I>>2]|0)-(c[J>>2]|0)|0,c[z>>2]|0,9,c[C>>2]|0,w,c[W>>2]|0,c[G>>2]|0,c[K>>2]|0,3344,6,52,(c[o>>2]|0)+1796|0,1452,c[t>>2]|0,6144)|0;t=(Ph(c[Y>>2]|0)|0)!=0;o=c[Y>>2]|0;if(t){c[m>>2]=o;_=c[m>>2]|0;l=k;return _|0;}c[J>>2]=(c[J>>2]|0)+o;a[c[L>>2]>>0]=(c[A>>2]<<6)+(c[B>>2]<<4)+(c[C>>2]<<2);c[Z>>2]=Cl(c[J>>2]|0,(c[I>>2]|0)-(c[J>>2]|0)|0,c[z>>2]|0,c[G>>2]|0,c[y>>2]|0,c[E>>2]|0,c[x>>2]|0,c[F>>2]|0,c[D>>2]|0,c[K>>2]|0,c[v>>2]|0,c[u>>2]|0)|0;u=(Ph(c[Z>>2]|0)|0)!=0;v=c[Z>>2]|0;if(u){c[m>>2]=v;_=c[m>>2]|0;l=k;return _|0;}else{c[J>>2]=(c[J>>2]|0)+v;c[m>>2]=(c[J>>2]|0)-(c[H>>2]|0);_=c[m>>2]|0;l=k;return _|0;}return 0;}function In(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return((c[d>>2]|0)>>>6)+2|0;}function Jn(b,d,e,f,g,h,i,j,k,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;n=l;l=l+96|0;o=n+88|0;p=n+84|0;q=n+80|0;r=n+76|0;s=n+72|0;t=n+68|0;u=n+64|0;v=n+60|0;w=n+56|0;x=n+52|0;y=n+48|0;z=n+44|0;A=n+40|0;B=n+36|0;C=n+32|0;D=n+28|0;E=n+24|0;F=n+20|0;G=n+16|0;H=n+12|0;I=n+8|0;J=n+4|0;K=n;c[p>>2]=b;c[q>>2]=d;c[r>>2]=e;c[s>>2]=f;c[t>>2]=g;c[u>>2]=h;c[v>>2]=i;c[w>>2]=j;c[x>>2]=k;c[y>>2]=m;c[z>>2]=In(c[w>>2]|0)|0;c[A>>2]=3+((c[w>>2]|0)>>>0>=1024&1)+((c[w>>2]|0)>>>0>=16384&1);c[B>>2]=c[t>>2];c[C>>2]=(c[w>>2]|0)>>>0<256&1;c[D>>2]=2;c[(c[q>>2]|0)+4564>>2]=c[(c[p>>2]|0)+4564>>2];mE(c[q>>2]|0,c[p>>2]|0,1024)|0;if(c[s>>2]|0){c[o>>2]=Mn(c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0;L=c[o>>2]|0;l=n;return L|0;}c[F>>2]=(c[(c[p>>2]|0)+4564>>2]|0)==2?6:63;if((c[w>>2]|0)>>>0<=(c[F>>2]|0)>>>0){c[o>>2]=Mn(c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0;L=c[o>>2]|0;l=n;return L|0;}if((c[u>>2]|0)>>>0<((c[A>>2]|0)+1|0)>>>0){c[o>>2]=-70;L=c[o>>2]|0;l=n;return L|0;}c[G>>2]=c[(c[p>>2]|0)+4564>>2];c[H>>2]=(c[r>>2]|0)>>>0<4?(c[w>>2]|0)>>>0<=1024&1:0;if((c[G>>2]|0)==2&(c[A>>2]|0)==3)c[C>>2]=1;r=(c[B>>2]|0)+(c[A>>2]|0)|0;F=(c[u>>2]|0)-(c[A>>2]|0)|0;s=c[v>>2]|0;m=c[w>>2]|0;k=c[x>>2]|0;x=c[q>>2]|0;j=c[H>>2]|0;H=c[y>>2]|0;if(c[C>>2]|0)M=jj(r,F,s,m,255,11,k,6144,x,G,j,H)|0;else M=kj(r,F,s,m,255,11,k,6144,x,G,j,H)|0;c[E>>2]=M;if(c[G>>2]|0)c[D>>2]=3;G=(c[E>>2]|0)==0?1:(c[E>>2]|0)>>>0>=((c[w>>2]|0)-(c[z>>2]|0)|0)>>>0;if(G|(wj(c[E>>2]|0)|0)|0){mE(c[q>>2]|0,c[p>>2]|0,1024)|0;c[o>>2]=Mn(c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0;L=c[o>>2]|0;l=n;return L|0;}if((c[E>>2]|0)==1){mE(c[q>>2]|0,c[p>>2]|0,1024)|0;c[o>>2]=Nn(c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0;L=c[o>>2]|0;l=n;return L|0;}if((c[D>>2]|0)==2)c[(c[q>>2]|0)+4564>>2]=1;switch(c[A>>2]|0){case 3:{c[I>>2]=(c[D>>2]|0)+((((c[C>>2]|0)!=0^1)&1)<<2)+(c[w>>2]<<4)+(c[E>>2]<<14);wl(c[B>>2]|0,c[I>>2]|0);break;}case 4:{c[J>>2]=(c[D>>2]|0)+8+(c[w>>2]<<4)+(c[E>>2]<<18);Pl(c[B>>2]|0,c[J>>2]|0);break;}case 5:{c[K>>2]=(c[D>>2]|0)+12+(c[w>>2]<<4)+(c[E>>2]<<22);Pl(c[B>>2]|0,c[K>>2]|0);a[(c[B>>2]|0)+4>>0]=(c[E>>2]|0)>>>10;break;}default:{}}c[o>>2]=(c[A>>2]|0)+(c[E>>2]|0);L=c[o>>2]|0;l=n;return L|0;}function Kn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;g=l;l=l+32|0;h=g+20|0;i=g+16|0;j=g+12|0;k=g+8|0;m=g+4|0;n=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if((c[j>>2]|0)==(c[k>>2]|0)?(c[n>>2]|0)==0|(c[k>>2]|0)>>>0>2:0){c[c[i>>2]>>2]=1;c[h>>2]=1;o=c[h>>2]|0;l=g;return o|0;}if(c[n>>2]|0?(c[k>>2]|0)>>>0<1e3?(c[c[i>>2]>>2]|0)==2:0:0){c[h>>2]=3;o=c[h>>2]|0;l=g;return o|0;}do{if(c[n>>2]|0){if((c[k>>2]|0)>>>0>=64?(c[j>>2]|0)>>>0>=(c[k>>2]|0)>>>((c[m>>2]|0)-1|0)>>>0:0)break;c[c[i>>2]>>2]=0;c[h>>2]=0;o=c[h>>2]|0;l=g;return o|0;}}while(0);c[c[i>>2]>>2]=1;c[h>>2]=2;o=c[h>>2]|0;l=g;return o|0;}function Ln(b,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;t=t|0;var u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;u=l;l=l+224|0;v=u+208|0;w=u+204|0;x=u+200|0;y=u+196|0;z=u+192|0;A=u+188|0;B=u+184|0;C=u+180|0;D=u+176|0;E=u+172|0;F=u+168|0;G=u+164|0;H=u+160|0;I=u+156|0;J=u+152|0;K=u+148|0;L=u+144|0;M=u+140|0;N=u+136|0;O=u+132|0;P=u+128|0;Q=u;R=u+124|0;S=u+120|0;T=u+116|0;U=u+112|0;V=u+108|0;c[w>>2]=b;c[x>>2]=e;c[y>>2]=f;c[z>>2]=g;c[A>>2]=h;c[B>>2]=i;c[C>>2]=j;c[D>>2]=k;c[E>>2]=m;c[F>>2]=n;c[G>>2]=o;c[H>>2]=p;c[I>>2]=q;c[J>>2]=r;c[K>>2]=s;c[L>>2]=t;c[M>>2]=c[w>>2];c[N>>2]=(c[M>>2]|0)+(c[x>>2]|0);switch(c[A>>2]|0){case 1:{a[c[M>>2]>>0]=a[c[D>>2]>>0]|0;c[O>>2]=ii(c[y>>2]|0,c[C>>2]&255)|0;if(wj(c[O>>2]|0)|0){c[v>>2]=c[O>>2];W=c[v>>2]|0;l=u;return W|0;}else{c[v>>2]=1;W=c[v>>2]|0;l=u;return W|0;}break;}case 3:{mE(c[y>>2]|0,c[I>>2]|0,c[J>>2]|0)|0;c[v>>2]=0;W=c[v>>2]|0;l=u;return W|0;}case 0:{c[P>>2]=Uh(c[y>>2]|0,c[F>>2]|0,c[H>>2]|0,c[G>>2]|0,c[K>>2]|0,c[L>>2]|0)|0;if(wj(c[P>>2]|0)|0){c[v>>2]=c[P>>2];W=c[v>>2]|0;l=u;return W|0;}else{c[v>>2]=0;W=c[v>>2]|0;l=u;return W|0;}break;}case 2:{c[R>>2]=c[E>>2];c[S>>2]=ei(c[z>>2]|0,c[E>>2]|0,c[C>>2]|0)|0;if((c[(c[B>>2]|0)+((d[(c[D>>2]|0)+((c[E>>2]|0)-1)>>0]|0)<<2)>>2]|0)>>>0>1){z=(c[B>>2]|0)+((d[(c[D>>2]|0)+((c[E>>2]|0)-1)>>0]|0)<<2)|0;c[z>>2]=(c[z>>2]|0)+-1;c[R>>2]=(c[R>>2]|0)+-1;}c[T>>2]=fi(Q,c[S>>2]|0,c[B>>2]|0,c[R>>2]|0,c[C>>2]|0)|0;if(wj(c[T>>2]|0)|0){c[v>>2]=c[T>>2];W=c[v>>2]|0;l=u;return W|0;}c[U>>2]=Xh(c[M>>2]|0,(c[N>>2]|0)-(c[M>>2]|0)|0,Q,c[C>>2]|0,c[S>>2]|0)|0;if(Zg(c[U>>2]|0)|0){c[v>>2]=c[U>>2];W=c[v>>2]|0;l=u;return W|0;}c[V>>2]=Uh(c[y>>2]|0,Q,c[C>>2]|0,c[S>>2]|0,c[K>>2]|0,c[L>>2]|0)|0;if(wj(c[V>>2]|0)|0){c[v>>2]=c[V>>2];W=c[v>>2]|0;l=u;return W|0;}else{c[v>>2]=c[U>>2];W=c[v>>2]|0;l=u;return W|0;}break;}default:{c[v>>2]=-1;W=c[v>>2]|0;l=u;return W|0;}}return 0;}function Mn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+32|0;h=g+24|0;i=g+20|0;j=g+16|0;k=g+12|0;m=g+8|0;n=g+4|0;o=g;c[i>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=c[i>>2];c[o>>2]=1+((c[m>>2]|0)>>>0>31&1)+((c[m>>2]|0)>>>0>4095&1);if(((c[m>>2]|0)+(c[o>>2]|0)|0)>>>0>(c[j>>2]|0)>>>0){c[h>>2]=-70;p=c[h>>2]|0;l=g;return p|0;}switch(c[o>>2]|0){case 1:{a[c[n>>2]>>0]=0+(c[m>>2]<<3);break;}case 2:{xl(c[n>>2]|0,4+(c[m>>2]<<4)&65535);break;}case 3:{Pl(c[n>>2]|0,12+(c[m>>2]<<4)|0);break;}default:{}}mE((c[n>>2]|0)+(c[o>>2]|0)|0,c[k>>2]|0,c[m>>2]|0)|0;c[h>>2]=(c[m>>2]|0)+(c[o>>2]|0);p=c[h>>2]|0;l=g;return p|0;}function Nn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+32|0;h=g+20|0;i=g+12|0;j=g+8|0;k=g+4|0;m=g;c[h>>2]=b;c[g+16>>2]=d;c[i>>2]=e;c[j>>2]=f;c[k>>2]=c[h>>2];c[m>>2]=1+((c[j>>2]|0)>>>0>31&1)+((c[j>>2]|0)>>>0>4095&1);switch(c[m>>2]|0){case 1:{a[c[k>>2]>>0]=1+(c[j>>2]<<3);break;}case 2:{xl(c[k>>2]|0,5+(c[j>>2]<<4)&65535);break;}case 3:{Pl(c[k>>2]|0,13+(c[j>>2]<<4)|0);break;}default:{}}a[(c[k>>2]|0)+(c[m>>2]|0)>>0]=a[c[i>>2]>>0]|0;l=g;return(c[m>>2]|0)+1|0;}function On(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=b;c[f>>2]=(c[e>>2]|0)-(c[a+4>>2]|0);l=d;return(c[f>>2]|0)>>>0>2684354560|0;}function Pn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(1<<c[h>>2])-1;c[m>>2]=(c[j>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0);c[n>>2]=(c[m>>2]&c[k>>2])+(c[i>>2]|0);c[o>>2]=(c[m>>2]|0)-(c[n>>2]|0);n=(c[g>>2]|0)+4|0;c[n>>2]=(c[n>>2]|0)+(c[o>>2]|0);n=(c[g>>2]|0)+8|0;c[n>>2]=(c[n>>2]|0)+(c[o>>2]|0);n=(c[g>>2]|0)+16|0;c[n>>2]=(c[n>>2]|0)-(c[o>>2]|0);n=(c[g>>2]|0)+12|0;c[n>>2]=(c[n>>2]|0)-(c[o>>2]|0);l=f;return c[o>>2]|0;}function Qn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=0;while(1){if((c[i>>2]|0)>>>0>=(c[g>>2]|0)>>>0)break;if((c[(c[f>>2]|0)+(c[i>>2]<<3)>>2]|0)>>>0<(c[h>>2]|0)>>>0)c[(c[f>>2]|0)+(c[i>>2]<<3)>>2]=0;else{d=(c[f>>2]|0)+(c[i>>2]<<3)|0;c[d>>2]=(c[d>>2]|0)-(c[h>>2]|0);}c[i>>2]=(c[i>>2]|0)+1;}l=e;return;}function Rn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+12|0;k=f+8|0;m=f+4|0;n=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0);if(c[j>>2]|0)o=c[c[j>>2]>>2]|0;else o=0;c[m>>2]=o;if((c[k>>2]|0)>>>0<=((c[i>>2]|0)+(c[m>>2]|0)|0)>>>0){l=f;return;}c[n>>2]=(c[k>>2]|0)-(c[i>>2]|0);if((c[(c[g>>2]|0)+16>>2]|0)>>>0<(c[n>>2]|0)>>>0)c[(c[g>>2]|0)+16>>2]=c[n>>2];if((c[(c[g>>2]|0)+12>>2]|0)>>>0<(c[(c[g>>2]|0)+16>>2]|0)>>>0)c[(c[g>>2]|0)+12>>2]=c[(c[g>>2]|0)+16>>2];if(!(c[j>>2]|0)){l=f;return;}c[c[j>>2]>>2]=0;l=f;return;}function Sn(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;h=l;l=l+224|0;i=h+200|0;j=h+192|0;k=h+188|0;m=h+184|0;n=h+180|0;o=h+176|0;p=h+172|0;q=h+168|0;r=h+164|0;s=h+8|0;t=h+160|0;u=h+156|0;v=h+152|0;w=h+148|0;x=h+144|0;z=h+140|0;A=h+136|0;B=h+132|0;C=h+128|0;D=h+124|0;E=h+120|0;F=h+116|0;G=h+112|0;H=h+108|0;I=h+104|0;J=h+100|0;K=h+96|0;L=h;M=h+92|0;N=h+88|0;O=h+84|0;P=h+80|0;Q=h+76|0;R=h+72|0;S=h+68|0;T=h+64|0;U=h+60|0;V=h+56|0;W=h+52|0;X=h+48|0;Y=h+44|0;Z=h+40|0;_=h+36|0;$=h+32|0;aa=h+28|0;ba=h+24|0;ca=h+20|0;da=h+16|0;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;g=c[k>>2]|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];c[i+16>>2]=c[g+16>>2];c[q>>2]=Tn(i)|0;c[r>>2]=c[(c[n>>2]|0)+12>>2];g=(c[k>>2]|0)+32|0;f=c[g+4>>2]|0;e=s;c[e>>2]=c[g>>2];c[e+4>>2]=f;c[t>>2]=(c[(c[n>>2]|0)+4>>2]|0)-(c[(c[n>>2]|0)+8>>2]|0);c[u>>2]=1<<c[(c[n>>2]|0)+8>>2];c[v>>2]=c[(c[n>>2]|0)+16>>2];c[w>>2]=(1<<c[(c[n>>2]|0)+16>>2])-1;c[x>>2]=c[(c[k>>2]|0)+12>>2];if(c[q>>2]|0)ea=c[(c[k>>2]|0)+16>>2]|0;else ea=c[x>>2]|0;c[z>>2]=ea;c[A>>2]=c[(c[k>>2]|0)+4>>2];if(c[q>>2]|0)fa=c[(c[k>>2]|0)+8>>2]|0;else fa=0;c[B>>2]=fa;c[C>>2]=c[q>>2]|0?(c[B>>2]|0)+(c[z>>2]|0)|0:0;c[D>>2]=c[q>>2]|0?(c[B>>2]|0)+(c[x>>2]|0)|0:0;c[E>>2]=(c[A>>2]|0)+(c[x>>2]|0);c[F>>2]=c[o>>2];c[G>>2]=(c[F>>2]|0)+(c[p>>2]|0);c[H>>2]=(c[G>>2]|0)+(0-((c[r>>2]|0)>>>0>8?c[r>>2]|0:8));c[I>>2]=c[F>>2];c[J>>2]=c[F>>2];c[K>>2]=0;p=L;c[p>>2]=0;c[p+4>>2]=0;while(1){if((c[J>>2]|0)>>>0>(c[H>>2]|0)>>>0){ga=32;break;}c[N>>2]=(c[J>>2]|0)-(c[A>>2]|0);c[O>>2]=0;c[P>>2]=0;c[Q>>2]=0;if((c[J>>2]|0)!=(c[F>>2]|0)){p=L;o=s;fa=Un(c[p>>2]|0,c[p+4>>2]|0,a[c[K>>2]>>0]|0,a[(c[K>>2]|0)+(c[r>>2]|0)>>0]|0,c[o>>2]|0,c[o+4>>2]|0)|0;o=L;c[o>>2]=fa;c[o+4>>2]=y;}else{o=Vn(c[J>>2]|0,c[r>>2]|0)|0;fa=L;c[fa>>2]=o;c[fa+4>>2]=y;}c[K>>2]=c[J>>2];fa=L;o=Wn(c[fa>>2]|0,c[fa+4>>2]|0,c[t>>2]|0,c[v>>2]|0)|0;if((o|0)!=(c[w>>2]|0)){c[J>>2]=(c[J>>2]|0)+1;continue;}o=c[k>>2]|0;fa=L;p=Xn(c[fa>>2]|0,c[fa+4>>2]|0,c[t>>2]|0)|0;fa=c[n>>2]|0;c[i>>2]=c[fa>>2];c[i+4>>2]=c[fa+4>>2];c[i+8>>2]=c[fa+8>>2];c[i+12>>2]=c[fa+12>>2];c[i+16>>2]=c[fa+16>>2];c[i+20>>2]=c[fa+20>>2];c[R>>2]=Yn(o,p,i)|0;c[T>>2]=0;p=L;c[U>>2]=Zn(c[p>>2]|0,c[p+4>>2]|0,c[t>>2]|0)|0;c[S>>2]=c[R>>2];while(1){if((c[S>>2]|0)>>>0>=((c[R>>2]|0)+(c[u>>2]<<3)|0)>>>0)break;do{if((c[(c[S>>2]|0)+4>>2]|0)==(c[U>>2]|0)?(c[c[S>>2]>>2]|0)>>>0>(c[z>>2]|0)>>>0:0){if(c[q>>2]|0){c[Y>>2]=(c[c[S>>2]>>2]|0)>>>0<(c[x>>2]|0)>>>0?c[B>>2]|0:c[A>>2]|0;c[Z>>2]=(c[Y>>2]|0)+(c[c[S>>2]>>2]|0);c[_>>2]=(c[c[S>>2]>>2]|0)>>>0<(c[x>>2]|0)>>>0?c[D>>2]|0:c[G>>2]|0;c[$>>2]=(c[c[S>>2]>>2]|0)>>>0<(c[x>>2]|0)>>>0?c[C>>2]|0:c[E>>2]|0;c[V>>2]=_n(c[J>>2]|0,c[Z>>2]|0,c[G>>2]|0,c[_>>2]|0,c[E>>2]|0)|0;if((c[V>>2]|0)>>>0<(c[r>>2]|0)>>>0)break;c[W>>2]=$n(c[J>>2]|0,c[I>>2]|0,c[Z>>2]|0,c[$>>2]|0)|0;c[X>>2]=(c[V>>2]|0)+(c[W>>2]|0);}else{c[aa>>2]=(c[A>>2]|0)+(c[c[S>>2]>>2]|0);c[V>>2]=ao(c[J>>2]|0,c[aa>>2]|0,c[G>>2]|0)|0;if((c[V>>2]|0)>>>0<(c[r>>2]|0)>>>0)break;c[W>>2]=$n(c[J>>2]|0,c[I>>2]|0,c[aa>>2]|0,c[E>>2]|0)|0;c[X>>2]=(c[V>>2]|0)+(c[W>>2]|0);}if((c[X>>2]|0)>>>0>(c[T>>2]|0)>>>0){c[T>>2]=c[X>>2];c[O>>2]=c[V>>2];c[P>>2]=c[W>>2];c[Q>>2]=c[S>>2];}}}while(0);c[S>>2]=(c[S>>2]|0)+8;}if(!(c[Q>>2]|0)){p=c[k>>2]|0;o=L;fa=c[o>>2]|0;ea=c[o+4>>2]|0;o=c[t>>2]|0;f=c[N>>2]|0;e=c[n>>2]|0;c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[i+12>>2]=c[e+12>>2];c[i+16>>2]=c[e+16>>2];c[i+20>>2]=c[e+20>>2];bo(p,fa,ea,o,f,i);c[J>>2]=(c[J>>2]|0)+1;continue;}c[M>>2]=(c[O>>2]|0)+(c[P>>2]|0);c[J>>2]=(c[J>>2]|0)+(0-(c[P>>2]|0));c[ba>>2]=c[c[Q>>2]>>2];c[ca>>2]=(c[N>>2]|0)-(c[ba>>2]|0);c[da>>2]=(c[c[m>>2]>>2]|0)+((c[(c[m>>2]|0)+8>>2]|0)*12|0);if((c[(c[m>>2]|0)+8>>2]|0)==(c[(c[m>>2]|0)+12>>2]|0)){ga=28;break;}c[(c[da>>2]|0)+4>>2]=(c[J>>2]|0)-(c[I>>2]|0);c[(c[da>>2]|0)+8>>2]=c[M>>2];c[c[da>>2]>>2]=c[ca>>2];f=(c[m>>2]|0)+8|0;c[f>>2]=(c[f>>2]|0)+1;f=c[k>>2]|0;o=L;ea=c[o>>2]|0;fa=c[o+4>>2]|0;o=c[t>>2]|0;p=(c[K>>2]|0)-(c[A>>2]|0)|0;e=c[n>>2]|0;c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[i+12>>2]=c[e+12>>2];c[i+16>>2]=c[e+16>>2];c[i+20>>2]=c[e+20>>2];bo(f,ea,fa,o,p,i);if(((c[J>>2]|0)+(c[M>>2]|0)|0)>>>0<=(c[H>>2]|0)>>>0){p=c[k>>2]|0;o=L;fa=c[o>>2]|0;ea=c[o+4>>2]|0;o=c[K>>2]|0;f=(c[J>>2]|0)+(c[M>>2]|0)|0;e=c[A>>2]|0;g=c[t>>2]|0;d=c[n>>2]|0;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[i+16>>2]=c[d+16>>2];c[i+20>>2]=c[d+20>>2];d=co(p,fa,ea,o,f,e,g,i)|0;g=L;c[g>>2]=d;c[g+4>>2]=y;c[K>>2]=(c[J>>2]|0)+(c[M>>2]|0)+-1;}c[J>>2]=(c[J>>2]|0)+(c[M>>2]|0);c[I>>2]=c[J>>2];}if((ga|0)==28){c[j>>2]=-70;ha=c[j>>2]|0;l=h;return ha|0;}else if((ga|0)==32){c[j>>2]=(c[G>>2]|0)-(c[I>>2]|0);ha=c[j>>2]|0;l=h;return ha|0;}return 0;}function Tn(a){a=a|0;return(c[a+16>>2]|0)>>>0<(c[a+12>>2]|0)>>>0|0;}function Un(b,e,f,g,h,i){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0;j=l;l=l+32|0;k=j+8|0;m=j+17|0;n=j+16|0;o=j;p=k;c[p>>2]=b;c[p+4>>2]=e;a[m>>0]=f;a[n>>0]=g;g=o;c[g>>2]=h;c[g+4>>2]=i;i=(d[m>>0]|0)+10|0;m=o;o=cE(i|0,((i|0)<0)<<31>>31|0,c[m>>2]|0,c[m+4>>2]|0)|0;m=k;i=eE(c[m>>2]|0,c[m+4>>2]|0,o|0,y|0)|0;o=k;c[o>>2]=i;c[o+4>>2]=y;o=k;i=cE(c[o>>2]|0,c[o+4>>2]|0,-1213897629,-820265764)|0;o=k;c[o>>2]=i;c[o+4>>2]=y;o=(d[n>>0]|0)+10|0;n=k;i=dE(c[n>>2]|0,c[n+4>>2]|0,o|0,((o|0)<0)<<31>>31|0)|0;o=k;c[o>>2]=i;c[o+4>>2]=y;o=k;y=c[o+4>>2]|0;l=j;return c[o>>2]|0;}function Vn(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;e=l;l=l+32|0;f=e+16|0;g=e+12|0;h=e;i=e+8|0;c[f>>2]=a;c[g>>2]=b;b=h;c[b>>2]=0;c[b+4>>2]=0;c[i>>2]=0;while(1){b=h;j=c[b>>2]|0;k=c[b+4>>2]|0;if((c[i>>2]|0)>>>0>=(c[g>>2]|0)>>>0)break;b=cE(j|0,k|0,-1213897629,-820265764)|0;a=h;c[a>>2]=b;c[a+4>>2]=y;a=(d[(c[f>>2]|0)+(c[i>>2]|0)>>0]|0)+10|0;b=h;m=dE(c[b>>2]|0,c[b+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=h;c[a>>2]=m;c[a+4>>2]=y;c[i>>2]=(c[i>>2]|0)+1;}y=k;l=e;return j|0;}function Wn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+16|0;h=f;i=f+12|0;j=f+8|0;k=h;c[k>>2]=a;c[k+4>>2]=b;c[i>>2]=d;c[j>>2]=e;e=h;h=c[e>>2]|0;d=c[e+4>>2]|0;if((32-(c[i>>2]|0)|0)>>>0<(c[j>>2]|0)>>>0){c[g>>2]=h&(1<<c[j>>2])-1;m=c[g>>2]|0;l=f;return m|0;}else{e=iE(h|0,d|0,32-(c[i>>2]|0)-(c[j>>2]|0)|0)|0;c[g>>2]=e&(1<<c[j>>2])-1;m=c[g>>2]|0;l=f;return m|0;}return 0;}function Xn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;if(!(c[g>>2]|0)){i=0;l=e;return i|0;}d=f;f=iE(c[d>>2]|0,c[d+4>>2]|0,64-(c[g>>2]|0)|0)|0;i=f;l=e;return i|0;}function Yn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=a;c[g>>2]=b;l=e;return(c[(c[f>>2]|0)+20>>2]|0)+(c[g>>2]<<c[d+8>>2]<<3)|0;}function Zn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;g=e+8|0;h=f;c[h>>2]=a;c[h+4>>2]=b;c[g>>2]=d;d=f;f=iE(c[d>>2]|0,c[d+4>>2]|0,32-(c[g>>2]|0)|0)|0;l=e;return f|0;}function _n(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;if(((c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0)>>>0<(c[k>>2]|0)>>>0)q=(c[i>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0;else q=c[k>>2]|0;c[o>>2]=q;c[p>>2]=ao(c[i>>2]|0,c[j>>2]|0,c[o>>2]|0)|0;o=c[p>>2]|0;if(((c[j>>2]|0)+(c[p>>2]|0)|0)!=(c[m>>2]|0)){c[h>>2]=o;r=c[h>>2]|0;l=g;return r|0;}else{c[h>>2]=o+(ao((c[i>>2]|0)+(c[p>>2]|0)|0,c[n>>2]|0,c[k>>2]|0)|0);r=c[h>>2]|0;l=g;return r|0;}return 0;}function $n(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;g=l;l=l+32|0;h=g+16|0;i=g+12|0;j=g+8|0;k=g+4|0;m=g;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=0;while(1){if((c[h>>2]|0)>>>0<=(c[i>>2]|0)>>>0){n=6;break;}if((c[j>>2]|0)>>>0<=(c[k>>2]|0)>>>0){n=6;break;}if((d[(c[h>>2]|0)+-1>>0]|0|0)!=(d[(c[j>>2]|0)+-1>>0]|0|0)){n=6;break;}c[h>>2]=(c[h>>2]|0)+-1;c[j>>2]=(c[j>>2]|0)+-1;c[m>>2]=(c[m>>2]|0)+1;}if((n|0)==6){l=g;return c[m>>2]|0;}return 0;}function ao(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[h>>2]=a;c[i>>2]=b;c[j>>2]=e;c[k>>2]=c[h>>2];c[m>>2]=(c[j>>2]|0)+-3;a:do{if((c[h>>2]|0)>>>0<(c[m>>2]|0)>>>0){e=fo(c[i>>2]|0)|0;c[n>>2]=e^(fo(c[h>>2]|0)|0);if(c[n>>2]|0){c[g>>2]=go(c[n>>2]|0)|0;p=c[g>>2]|0;l=f;return p|0;}c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;while(1){if((c[h>>2]|0)>>>0>=(c[m>>2]|0)>>>0)break a;e=fo(c[i>>2]|0)|0;c[o>>2]=e^(fo(c[h>>2]|0)|0);if(c[o>>2]|0)break;c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}e=go(c[o>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+e;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}}while(0);if((ho()|0?(c[h>>2]|0)>>>0<((c[j>>2]|0)+-3|0)>>>0:0)?(o=io(c[i>>2]|0)|0,(o|0)==(io(c[h>>2]|0)|0)):0){c[h>>2]=(c[h>>2]|0)+4;c[i>>2]=(c[i>>2]|0)+4;}if((c[h>>2]|0)>>>0<((c[j>>2]|0)+-1|0)>>>0?(o=(jo(c[i>>2]|0)|0)&65535,(o|0)==((jo(c[h>>2]|0)|0)&65535|0)):0){c[h>>2]=(c[h>>2]|0)+2;c[i>>2]=(c[i>>2]|0)+2;}if((c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?(d[c[i>>2]>>0]|0|0)==(d[c[h>>2]>>0]|0|0):0)c[h>>2]=(c[h>>2]|0)+1;c[g>>2]=(c[h>>2]|0)-(c[k>>2]|0);p=c[g>>2]|0;l=f;return p|0;}function bo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;h=l;l=l+80|0;i=h+56|0;j=h+48|0;k=h+40|0;m=h;n=h+36|0;o=h+32|0;p=h+28|0;q=h+24|0;r=h+20|0;s=h+16|0;t=h+8|0;c[k>>2]=a;a=m;c[a>>2]=b;c[a+4>>2]=d;c[n>>2]=e;c[o>>2]=f;f=m;c[p>>2]=Wn(c[f>>2]|0,c[f+4>>2]|0,c[n>>2]|0,c[g+16>>2]|0)|0;c[q>>2]=(1<<c[g+16>>2])-1;if((c[p>>2]|0)!=(c[q>>2]|0)){l=h;return;}q=m;c[r>>2]=Xn(c[q>>2]|0,c[q+4>>2]|0,c[n>>2]|0)|0;q=m;c[s>>2]=Zn(c[q>>2]|0,c[q+4>>2]|0,c[n>>2]|0)|0;c[t>>2]=c[o>>2];c[t+4>>2]=c[s>>2];s=c[k>>2]|0;k=c[r>>2]|0;c[j>>2]=c[t>>2];c[j+4>>2]=c[t+4>>2];c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];c[i+16>>2]=c[g+16>>2];c[i+20>>2]=c[g+20>>2];eo(s,k,j,i);l=h;return;}function co(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;k=l;l=l+64|0;m=k+40|0;n=k+36|0;o=k+8|0;p=k+32|0;q=k+28|0;r=k+24|0;s=k+20|0;t=k;u=k+16|0;c[n>>2]=b;b=o;c[b>>2]=d;c[b+4>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=i;i=o;o=c[i+4>>2]|0;h=t;c[h>>2]=c[i>>2];c[h+4>>2]=o;c[u>>2]=(c[p>>2]|0)+1;while(1){p=t;v=c[p>>2]|0;w=c[p+4>>2]|0;if((c[u>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break;p=(c[n>>2]|0)+32|0;o=Un(v,w,a[(c[u>>2]|0)+-1>>0]|0,a[(c[u>>2]|0)+((c[j+12>>2]|0)-1)>>0]|0,c[p>>2]|0,c[p+4>>2]|0)|0;p=t;c[p>>2]=o;c[p+4>>2]=y;p=c[n>>2]|0;o=t;h=c[o>>2]|0;i=c[o+4>>2]|0;o=c[s>>2]|0;g=(c[u>>2]|0)-(c[r>>2]|0)|0;c[m>>2]=c[j>>2];c[m+4>>2]=c[j+4>>2];c[m+8>>2]=c[j+8>>2];c[m+12>>2]=c[j+12>>2];c[m+16>>2]=c[j+16>>2];c[m+20>>2]=c[j+20>>2];bo(p,h,i,o,g,m);c[u>>2]=(c[u>>2]|0)+1;}y=w;l=k;return v|0;}function eo(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0;h=l;l=l+48|0;i=h+16|0;j=h+8|0;k=h+4|0;m=h;c[j>>2]=b;c[k>>2]=e;c[m>>2]=c[(c[j>>2]|0)+24>>2];e=c[j>>2]|0;j=c[k>>2]|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];c[i+16>>2]=c[g+16>>2];c[i+20>>2]=c[g+20>>2];b=Yn(e,j,i)|0;i=b+((d[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0)<<3)|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];f=(c[m>>2]|0)+(c[k>>2]|0)|0;a[f>>0]=(a[f>>0]|0)+1<<24>>24;f=(c[m>>2]|0)+(c[k>>2]|0)|0;a[f>>0]=(d[f>>0]|0)&(1<<c[g+8>>2])-1;l=h;return;}function fo(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function go(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=l;l=l+16|0;d=b+4|0;e=b;c[e>>2]=a;a=(ko()|0)!=0;f=(ho()|0)!=0;g=c[e>>2]|0;do{if(a){if(f){e=ob(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(fE(g|0)|0)>>3;break;}}else if(f){e=lE(g|0,0,0)|0;c[d>>2]=e>>3;break;}else{c[d>>2]=(Q(g|0)|0)>>3;break;}}while(0);l=b;return c[d>>2]|0;}function ho(){return 0;}function io(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0;}function jo(a){a=a|0;var b=0,e=0;b=l;l=l+16|0;e=b;c[e>>2]=a;a=c[e>>2]|0;l=b;return d[a>>0]|d[a+1>>0]<<8|0;}function ko(){return d[11936]|0|0;}function lo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+32|0;g=f+20|0;h=f+16|0;i=f+12|0;j=f;c[g>>2]=b;c[h>>2]=d;c[i>>2]=e;e=(c[c[g>>2]>>2]|0)+((c[(c[g>>2]|0)+4>>2]|0)*12|0)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];if((c[h>>2]|0)>>>0>=((c[j+4>>2]|0)+(c[j+8>>2]|0)|0)>>>0){e=(c[g>>2]|0)+4|0;c[e>>2]=(c[e>>2]|0)+1;c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];l=f;return;}if((c[h>>2]|0)>>>0>(c[j+4>>2]|0)>>>0){if((c[h>>2]|0)>>>0<((c[j+4>>2]|0)+(c[j+8>>2]|0)|0)>>>0?(c[j+8>>2]=(c[h>>2]|0)-(c[j+4>>2]|0),(c[j+8>>2]|0)>>>0<(c[i>>2]|0)>>>0):0)c[j>>2]=0;}else c[j>>2]=0;An(c[g>>2]|0,c[h>>2]|0,c[i>>2]|0);c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];l=f;return;}function mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=(c[f>>2]|0)-(c[(c[e>>2]|0)+4>>2]|0);if((c[g>>2]|0)>>>0<=((c[(c[e>>2]|0)+24>>2]|0)+1024|0)>>>0){l=d;return;}if(512<((c[g>>2]|0)-(c[(c[e>>2]|0)+24>>2]|0)-1024|0)>>>0)h=512;else h=(c[g>>2]|0)-(c[(c[e>>2]|0)+24>>2]|0)-1024|0;c[(c[e>>2]|0)+24>>2]=(c[g>>2]|0)-h;l=d;return;}function no(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[h>>2];switch(c[(c[g>>2]|0)+24>>2]|0){case 1:{Nj(c[f>>2]|0,c[g>>2]|0,c[i>>2]|0);c[(c[f>>2]|0)+24>>2]=(c[i>>2]|0)-(c[(c[f>>2]|0)+4>>2]|0);l=e;return 0;}case 2:{Oj(c[f>>2]|0,c[g>>2]|0,c[i>>2]|0);c[(c[f>>2]|0)+24>>2]=(c[i>>2]|0)-(c[(c[f>>2]|0)+4>>2]|0);l=e;return 0;}default:{l=e;return 0;}}return 0;}function oo(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=l;l=l+32|0;i=h+16|0;j=h+12|0;k=h+8|0;m=h+4|0;n=h;c[i>>2]=a;c[j>>2]=d;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;po(c[(c[i>>2]|0)+12>>2]|0,c[k>>2]|0,c[j>>2]|0);k=(c[i>>2]|0)+12|0;c[k>>2]=(c[k>>2]|0)+(c[j>>2]|0);if((c[j>>2]|0)>>>0>65535){c[(c[i>>2]|0)+28>>2]=1;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;}b[(c[(c[i>>2]|0)+4>>2]|0)+4>>1]=c[j>>2];c[c[(c[i>>2]|0)+4>>2]>>2]=(c[m>>2]|0)+1;if((c[n>>2]|0)>>>0<=65535){o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}c[(c[i>>2]|0)+28>>2]=2;c[(c[i>>2]|0)+32>>2]=((c[(c[i>>2]|0)+4>>2]|0)-(c[c[i>>2]>>2]|0)|0)/8|0;o=c[n>>2]|0;p=o&65535;q=c[i>>2]|0;r=q+4|0;s=c[r>>2]|0;t=s+6|0;b[t>>1]=p;u=c[i>>2]|0;v=u+4|0;w=c[v>>2]|0;x=w+8|0;c[v>>2]=x;l=h;return;}function po(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+32|0;f=e+20|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[i>>2]=c[g>>2];c[j>>2]=c[f>>2];c[k>>2]=(c[j>>2]|0)+(c[h>>2]|0);do{qo(c[j>>2]|0,c[i>>2]|0);c[j>>2]=(c[j>>2]|0)+8;c[i>>2]=(c[i>>2]|0)+8;}while((c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0);l=e;return;}function qo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;f=c[g>>2]|0;a[d>>0]=a[f>>0]|0;a[d+1>>0]=a[f+1>>0]|0;a[d+2>>0]=a[f+2>>0]|0;a[d+3>>0]=a[f+3>>0]|0;a[d+4>>0]=a[f+4>>0]|0;a[d+5>>0]=a[f+5>>0]|0;a[d+6>>0]=a[f+6>>0]|0;a[d+7>>0]=a[f+7>>0]|0;l=e;return;}function ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=b;c[f>>2]=(c[e>>2]|0)-(c[a+4>>2]|0);l=d;return(c[f>>2]|0)>>>0>2684354560|0;}function so(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+28|0;h=f+24|0;i=f+20|0;j=f+16|0;k=f+12|0;m=f+8|0;n=f+4|0;o=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(1<<c[h>>2])-1;c[m>>2]=(c[j>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0);c[n>>2]=(c[m>>2]&c[k>>2])+(c[i>>2]|0);c[o>>2]=(c[m>>2]|0)-(c[n>>2]|0);n=(c[g>>2]|0)+4|0;c[n>>2]=(c[n>>2]|0)+(c[o>>2]|0);n=(c[g>>2]|0)+8|0;c[n>>2]=(c[n>>2]|0)+(c[o>>2]|0);n=(c[g>>2]|0)+16|0;c[n>>2]=(c[n>>2]|0)-(c[o>>2]|0);n=(c[g>>2]|0)+12|0;c[n>>2]=(c[n>>2]|0)-(c[o>>2]|0);l=f;return c[o>>2]|0;}function to(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=l;l=l+32|0;e=d+20|0;f=d+16|0;g=d+12|0;h=d+8|0;i=d+4|0;j=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=(c[e>>2]|0)+472+8;c[h>>2]=1<<c[(c[e>>2]|0)+116+4+8>>2];vo(c[(c[g>>2]|0)+36>>2]|0,c[h>>2]|0,c[f>>2]|0);do{if((c[(c[e>>2]|0)+116+4+24>>2]|0)!=1){c[i>>2]=1<<c[(c[e>>2]|0)+116+4+4>>2];h=c[(c[g>>2]|0)+44>>2]|0;b=c[i>>2]|0;a=c[f>>2]|0;if((c[(c[e>>2]|0)+116+4+24>>2]|0)==6){wo(h,b,a);break;}else{vo(h,b,a);break;}}}while(0);if(!(c[(c[g>>2]|0)+32>>2]|0)){l=d;return;}c[j>>2]=1<<c[(c[g>>2]|0)+32>>2];vo(c[(c[g>>2]|0)+40>>2]|0,c[j>>2]|0,c[f>>2]|0);l=d;return;}function uo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f+24|0;h=f+20|0;i=f+16|0;j=f+12|0;k=f+8|0;m=f+4|0;n=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0);if(c[j>>2]|0)o=c[c[j>>2]>>2]|0;else o=0;c[m>>2]=o;if((c[k>>2]|0)>>>0<=((c[i>>2]|0)+(c[m>>2]|0)|0)>>>0){l=f;return;}c[n>>2]=(c[k>>2]|0)-(c[i>>2]|0);if((c[(c[g>>2]|0)+16>>2]|0)>>>0<(c[n>>2]|0)>>>0)c[(c[g>>2]|0)+16>>2]=c[n>>2];if((c[(c[g>>2]|0)+12>>2]|0)>>>0<(c[(c[g>>2]|0)+16>>2]|0)>>>0)c[(c[g>>2]|0)+12>>2]=c[(c[g>>2]|0)+16>>2];if(!(c[j>>2]|0)){l=f;return;}c[c[j>>2]>>2]=0;l=f;return;}function vo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;e=l;l=l+48|0;f=e+44|0;g=e+40|0;h=e+36|0;i=e+32|0;j=e+28|0;k=e+24|0;m=e+20|0;n=e+16|0;o=e+12|0;p=e+8|0;q=e+4|0;r=e;c[p>>2]=a;c[q>>2]=b;c[r>>2]=d;d=c[q>>2]|0;q=c[r>>2]|0;c[f>>2]=c[p>>2];c[g>>2]=d;c[h>>2]=q;c[i>>2]=0;c[j>>2]=(c[g>>2]|0)/16|0;c[k>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[j>>2]|0))break;c[n>>2]=0;while(1){if((c[n>>2]|0)>=16)break;if(c[i>>2]|0){c[o>>2]=(c[(c[f>>2]|0)+(c[k>>2]<<2)>>2]|0)==1?c[h>>2]|0:0;g=(c[f>>2]|0)+(c[k>>2]<<2)|0;c[g>>2]=(c[g>>2]|0)+(c[o>>2]|0);}if((c[(c[f>>2]|0)+(c[k>>2]<<2)>>2]|0)>>>0<(c[h>>2]|0)>>>0)c[(c[f>>2]|0)+(c[k>>2]<<2)>>2]=0;else{g=(c[f>>2]|0)+(c[k>>2]<<2)|0;c[g>>2]=(c[g>>2]|0)-(c[h>>2]|0);}c[k>>2]=(c[k>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+1;}c[m>>2]=(c[m>>2]|0)+1;}l=e;return;}function wo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;e=l;l=l+48|0;f=e+44|0;g=e+40|0;h=e+36|0;i=e+32|0;j=e+28|0;k=e+24|0;m=e+20|0;n=e+16|0;o=e+12|0;p=e+8|0;q=e+4|0;r=e;c[p>>2]=a;c[q>>2]=b;c[r>>2]=d;d=c[q>>2]|0;q=c[r>>2]|0;c[f>>2]=c[p>>2];c[g>>2]=d;c[h>>2]=q;c[i>>2]=1;c[j>>2]=(c[g>>2]|0)/16|0;c[k>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[j>>2]|0))break;c[n>>2]=0;while(1){if((c[n>>2]|0)>=16)break;if(c[i>>2]|0){c[o>>2]=(c[(c[f>>2]|0)+(c[k>>2]<<2)>>2]|0)==1?c[h>>2]|0:0;g=(c[f>>2]|0)+(c[k>>2]<<2)|0;c[g>>2]=(c[g>>2]|0)+(c[o>>2]|0);}if((c[(c[f>>2]|0)+(c[k>>2]<<2)>>2]|0)>>>0<(c[h>>2]|0)>>>0)c[(c[f>>2]|0)+(c[k>>2]<<2)>>2]=0;else{g=(c[f>>2]|0)+(c[k>>2]<<2)|0;c[g>>2]=(c[g>>2]|0)-(c[h>>2]|0);}c[k>>2]=(c[k>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+1;}c[m>>2]=(c[m>>2]|0)+1;}l=e;return;}function xo(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;k=l;l=l+160|0;m=k+48|0;n=k+40|0;o=k+36|0;p=k+32|0;q=k+28|0;r=k+24|0;s=k+20|0;t=k;u=k+16|0;v=k+12|0;w=k+8|0;c[o>>2]=a;c[p>>2]=b;c[q>>2]=d;c[r>>2]=e;c[s>>2]=f;f=t;c[f>>2]=h;c[f+4>>2]=i;c[u>>2]=j;if(c[s>>2]|0?(c[(c[s>>2]|0)+8>>2]|0)>>>0>0:0){x=(c[o>>2]|0)+12|0;y=g;z=x+104|0;do{c[x>>2]=c[y>>2];x=x+4|0;y=y+4|0;}while((x|0)<(z|0));j=c[o>>2]|0;i=c[s>>2]|0;s=c[g+4>>2]|0;f=g+32|0;h=t;e=c[h>>2]|0;d=c[h+4>>2]|0;h=c[u>>2]|0;c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[n>>2]=yo(j,i,s,m,e,d,h)|0;A=c[n>>2]|0;l=k;return A|0;}h=c[o>>2]|0;d=t;t=c[d>>2]|0;e=c[d+4>>2]|0;d=c[u>>2]|0;x=m;y=g;z=x+104|0;do{c[x>>2]=c[y>>2];x=x+4|0;y=y+4|0;}while((x|0)<(z|0));c[v>>2]=ml(h,m,t,e,0,d)|0;if(wj(c[v>>2]|0)|0){c[n>>2]=c[v>>2];A=c[n>>2]|0;l=k;return A|0;}c[w>>2]=Ej(c[(c[o>>2]|0)+472>>2]|0,(c[o>>2]|0)+472+8|0,g,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[(c[o>>2]|0)+588>>2]|0)|0;r=(Ph(c[w>>2]|0)|0)!=0;q=c[w>>2]|0;if(r){c[n>>2]=q;A=c[n>>2]|0;l=k;return A|0;}else{c[(c[o>>2]|0)+220>>2]=q;c[n>>2]=0;A=c[n>>2]|0;l=k;return A|0;}return 0;}function yo(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;i=l;l=l+256|0;j=i+152|0;k=i+148|0;m=i+144|0;n=i+140|0;o=i;p=i+136|0;q=i+32|0;r=i+28|0;s=i+24|0;t=i+20|0;u=i+16|0;v=i+12|0;w=i+8|0;c[k>>2]=a;c[m>>2]=b;c[n>>2]=d;d=o;c[d>>2]=f;c[d+4>>2]=g;c[p>>2]=h;h=q;g=(c[k>>2]|0)+12|0;d=h+104|0;do{c[h>>2]=c[g>>2];h=h+4|0;g=g+4|0;}while((h|0)<(d|0));f=q+4|0;b=(c[m>>2]|0)+4720|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];if(c[n>>2]|0)c[q+4>>2]=c[n>>2];n=q+32|0;c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];e=c[k>>2]|0;n=o;o=c[n>>2]|0;b=c[n+4>>2]|0;n=c[p>>2]|0;h=j;g=q;d=h+104|0;do{c[h>>2]=c[g>>2];h=h+4|0;g=g+4|0;}while((h|0)<(d|0));ml(e,j,o,b,1,n)|0;if((c[(c[m>>2]|0)+4720+24>>2]|0)==1)x=0;else x=1<<c[(c[m>>2]|0)+4720+4>>2];c[r>>2]=x;c[s>>2]=1<<c[(c[m>>2]|0)+4720+8>>2];c[t>>2]=(c[r>>2]|0)+(c[s>>2]|0)<<2;mE(c[(c[k>>2]|0)+472+8+36>>2]|0,c[(c[m>>2]|0)+20+36>>2]|0,c[t>>2]|0)|0;c[u>>2]=1<<c[(c[k>>2]|0)+472+8+32>>2];oE(c[(c[k>>2]|0)+472+8+40>>2]|0,0,c[u>>2]<<2|0)|0;c[v>>2]=(c[m>>2]|0)+20;c[w>>2]=(c[k>>2]|0)+472+8;u=c[w>>2]|0;t=c[v>>2]|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[(c[w>>2]|0)+24>>2]=c[(c[v>>2]|0)+24>>2];c[(c[w>>2]|0)+28>>2]=c[(c[v>>2]|0)+28>>2];c[(c[w>>2]|0)+20>>2]=c[(c[v>>2]|0)+20>>2];c[(c[k>>2]|0)+220>>2]=c[(c[m>>2]|0)+4760>>2];mE(c[(c[k>>2]|0)+472>>2]|0,(c[m>>2]|0)+128|0,4592)|0;l=i;return 0;}function zo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+112|0;f=e;g=f;h=b;b=g+104|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0;}while((g|0)<(b|0));i=f+4|0;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[i+16>>2]=c[d+16>>2];c[i+20>>2]=c[d+20>>2];c[i+24>>2]=c[d+24>>2];i=f+32|0;j=d+28|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[f+44>>2]=3;g=a;h=f;b=g+104|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0;}while((g|0)<(b|0));l=e;return;}function Ao(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;g=l;l=l+96|0;h=g+84|0;i=g;j=g+80|0;k=g+40|0;m=g+8|0;c[h>>2]=b;b=i;c[b>>2]=d;c[b+4>>2]=e;c[j>>2]=f;f=i;sj(m,c[h>>2]|0,c[f>>2]|0,c[f+4>>2]|0,c[j>>2]|0);j=k;f=j+40|0;do{c[j>>2]=0;j=j+4|0;}while((j|0)<(f|0));c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=1;j=a;a=k;f=j+40|0;do{c[j>>2]=c[a>>2];j=j+4|0;a=a+4|0;}while((j|0)<(f|0));l=g;return;}function Bo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+32|0;h=g+28|0;i=g+24|0;j=g+20|0;k=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[p>>2]=wn(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,1,1)|0;if(Ph(c[p>>2]|0)|0){c[h>>2]=c[p>>2];q=c[h>>2]|0;l=g;return q|0;}c[o>>2]=Co(c[i>>2]|0,(c[j>>2]|0)+(c[p>>2]|0)|0,(c[k>>2]|0)-(c[p>>2]|0)|0)|0;if(Ph(c[o>>2]|0)|0){c[h>>2]=c[o>>2];q=c[h>>2]|0;l=g;return q|0;}if(c[(c[i>>2]|0)+116+32>>2]|0?(k=(c[i>>2]|0)+240|0,j=c[k>>2]|0,n=c[k+4>>2]|0,k=(c[i>>2]|0)+248|0,i=dE(c[k>>2]|0,c[k+4>>2]|0,1,0)|0,(j|0)!=(i|0)|(n|0)!=(y|0)):0){c[h>>2]=-72;q=c[h>>2]|0;l=g;return q|0;}c[h>>2]=(c[p>>2]|0)+(c[o>>2]|0);q=c[h>>2]|0;l=g;return q|0;}function Co(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=l;l=l+144|0;f=e+40|0;g=e+32|0;h=e+28|0;i=e+24|0;j=e+20|0;k=e+16|0;m=e+12|0;n=e+8|0;o=e+4|0;p=e;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;c[k>>2]=c[i>>2];c[m>>2]=c[k>>2];c[n>>2]=0;if(!(c[c[h>>2]>>2]|0)){c[g>>2]=-60;q=c[g>>2]|0;l=e;return q|0;}do{if((c[c[h>>2]>>2]|0)==1){d=c[i>>2]|0;b=c[j>>2]|0;a=f;r=(c[h>>2]|0)+116|0;s=a+104|0;do{c[a>>2]=c[r>>2];a=a+4|0;r=r+4|0;}while((a|0)<(s|0));c[n>>2]=xn(d,b,f,0,0,0)|0;r=(Ph(c[n>>2]|0)|0)!=0;a=c[n>>2]|0;if(!r){c[j>>2]=(c[j>>2]|0)-a;c[m>>2]=(c[m>>2]|0)+(c[n>>2]|0);c[c[h>>2]>>2]=2;break;}c[g>>2]=a;q=c[g>>2]|0;l=e;return q|0;}}while(0);do{if((c[c[h>>2]>>2]|0)!=3){c[o>>2]=1;if((c[j>>2]|0)>>>0>=4){Pl(c[m>>2]|0,1);c[m>>2]=(c[m>>2]|0)+3;c[j>>2]=(c[j>>2]|0)-3;break;}c[g>>2]=-70;q=c[g>>2]|0;l=e;return q|0;}}while(0);do{if(c[(c[h>>2]|0)+116+32+4>>2]|0){o=Oh((c[h>>2]|0)+264|0)|0;c[p>>2]=o;if((c[j>>2]|0)>>>0>=4){Pl(c[m>>2]|0,c[p>>2]|0);c[m>>2]=(c[m>>2]|0)+4;break;}c[g>>2]=-70;q=c[g>>2]|0;l=e;return q|0;}}while(0);c[c[h>>2]>>2]=0;c[g>>2]=(c[m>>2]|0)-(c[k>>2]|0);q=c[g>>2]|0;l=e;return q|0;}function Do(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=l;l=l+144|0;k=j+40|0;m=j+32|0;n=j+28|0;o=j+24|0;p=j+20|0;q=j+16|0;r=j+12|0;s=j+8|0;t=j+4|0;u=j;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;h=c[n>>2]|0;g=c[s>>2]|0;s=c[t>>2]|0;t=c[r>>2]|0;f=k;e=i;i=f+104|0;do{c[f>>2]=c[e>>2];f=f+4|0;e=e+4|0;}while((f|0)<(i|0));c[u>>2]=xo(h,g,s,0,0,k,t,0,0)|0;if(wj(c[u>>2]|0)|0){c[m>>2]=c[u>>2];v=c[m>>2]|0;l=j;return v|0;}else{c[m>>2]=Bo(c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;v=c[m>>2]|0;l=j;return v|0;}return 0;}function Eo(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=l;l=l+400|0;k=j+288|0;m=j+176|0;n=j+280|0;o=j+168|0;p=j+164|0;q=j+160|0;r=j+156|0;s=j+152|0;t=j+148|0;u=j+144|0;v=j+104|0;w=j;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=i;Ao(v,c[u>>2]|0,c[r>>2]|0?c[r>>2]|0:1,0,c[s>>2]|0?c[t>>2]|0:0);i=m;h=(c[n>>2]|0)+12|0;g=i+104|0;do{c[i>>2]=c[h>>2];i=i+4|0;h=h+4|0;}while((i|0)<(g|0));i=k;h=v;g=i+40|0;do{c[i>>2]=c[h>>2];i=i+4|0;h=h+4|0;}while((i|0)<(g|0));zo(w,m,k);xj(w,1e3,(c[u>>2]|0)>=0&1)|0;u=c[n>>2]|0;n=c[o>>2]|0;o=c[p>>2]|0;p=c[q>>2]|0;q=c[r>>2]|0;r=c[s>>2]|0;s=c[t>>2]|0;i=k;h=w;g=i+104|0;do{c[i>>2]=c[h>>2];i=i+4|0;h=h+4|0;}while((i|0)<(g|0));h=Do(u,n,o,p,q,r,s,k)|0;l=j;return h|0;}function Fo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0;h=l;l=l+32|0;i=h+20|0;j=h+16|0;k=h+12|0;m=h+8|0;n=h+4|0;o=h;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;g=Eo(c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,0,0,c[o>>2]|0)|0;l=h;return g|0;}function Go(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+704|0;h=g+680|0;i=g+676|0;j=g+672|0;k=g+668|0;m=g+664|0;n=g+660|0;o=g+656|0;p=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;oE(p|0,0,656)|0;f=p+352|0;c[f>>2]=c[5406];c[f+4>>2]=c[5407];c[f+8>>2]=c[5408];c[o>>2]=Fo(p,c[i>>2]|0,c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;n=c[p+224>>2]|0;c[h>>2]=c[5406];c[h+4>>2]=c[5407];c[h+8>>2]=c[5408];Th(n,h);l=g;return c[o>>2]|0;}function Ho(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=l;l=l+80|0;f=e+68|0;g=e+40|0;h=e+36|0;i=e+32|0;j=e+28|0;k=e;c[h>>2]=a;c[i>>2]=b;c[j>>2]=d;sj(k,c[j>>2]|0,0,0,c[i>>2]|0);j=c[h>>2]|0;h=c[i>>2]|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[g+16>>2]=c[k+16>>2];c[g+20>>2]=c[k+20>>2];c[g+24>>2]=c[k+24>>2];c[f>>2]=c[5406];c[f+4>>2]=c[5407];c[f+8>>2]=c[5408];k=zj(j,h,0,0,g,f)|0;l=e;return k|0;}function Io(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=(c[e>>2]|0)+4720|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];l=d;return;}function Jo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=l;l=l+272|0;h=g+168|0;i=g+160|0;j=g+156|0;k=g+152|0;m=g;n=g+48|0;o=g+16|0;p=g+12|0;q=g+8|0;c[j>>2]=a;c[k>>2]=b;b=m;c[b>>2]=e;c[b+4>>2]=f;if(!(c[k>>2]|0)){c[i>>2]=-32;r=c[i>>2]|0;l=g;return r|0;}f=n;b=(c[j>>2]|0)+12|0;e=f+104|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0;}while((f|0)<(e|0));a=n+4|0;Io(o,c[k>>2]|0);c[a>>2]=c[o>>2];c[a+4>>2]=c[o+4>>2];c[a+8>>2]=c[o+8>>2];c[a+12>>2]=c[o+12>>2];c[a+16>>2]=c[o+16>>2];c[a+20>>2]=c[o+20>>2];c[a+24>>2]=c[o+24>>2];o=m;if((c[o>>2]|0)!=-1?1:(c[o+4>>2]|0)!=-1){o=m;a=c[o+4>>2]|0;s=a>>>0<0|(a|0)==0&(c[o>>2]|0)>>>0<524288;o=m;a=c[o+4>>2]|0;a=s?c[o>>2]|0:524288;c[p>>2]=a;if((c[p>>2]|0)>>>0>1)t=(uj((c[p>>2]|0)-1|0)|0)+1|0;else t=1;c[q>>2]=t;c[n+4>>2]=(c[n+4>>2]|0)>>>0>(c[q>>2]|0)>>>0?c[n+4>>2]|0:c[q>>2]|0;}q=n+32|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];d=c[j>>2]|0;j=c[k>>2]|0;k=m;m=c[k>>2]|0;q=c[k+4>>2]|0;f=h;b=n;e=f+104|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0;}while((f|0)<(e|0));c[i>>2]=xo(d,0,0,0,j,h,m,q,0)|0;r=c[i>>2]|0;l=g;return r|0;}function hy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;g=l;l=l+112|0;h=g+100|0;i=g+96|0;j=g+92|0;k=g+88|0;m=g+84|0;n=g+80|0;o=g+76|0;p=g+72|0;q=g+68|0;r=g+64|0;s=g+60|0;t=g+56|0;u=g+52|0;v=g+48|0;w=g+44|0;x=g+40|0;y=g+36|0;z=g+32|0;A=g+28|0;B=g+24|0;C=g+20|0;D=g+16|0;E=g+12|0;F=g+8|0;G=g+4|0;H=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=c[o>>2];c[q>>2]=(c[o>>2]|0)+(c[c[n>>2]>>2]|0);c[r>>2]=c[j>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[r>>2]|0)+(c[c[k>>2]>>2]|0);c[u>>2]=1;a:while(1){if(!(c[u>>2]|0)){I=48;break;}switch(c[(c[i>>2]|0)+80>>2]|0){case 0:{I=4;break a;break;}case 1:{c[v>>2]=yq((c[i>>2]|0)+8|0,c[m>>2]|0,c[c[n>>2]>>2]|0)|0;j=(mr(c[v>>2]|0)|0)!=0;J=c[v>>2]|0;if(j){I=6;break a;}K=c[i>>2]|0;if(J|0){I=8;break a;}c[K+80>>2]=3;break;}case 2:{c[w>>2]=ry((c[i>>2]|0)+84+(c[(c[i>>2]|0)+76>>2]|0)|0,5-(c[(c[i>>2]|0)+76>>2]|0)|0,c[m>>2]|0,c[c[n>>2]>>2]|0)|0;j=(c[i>>2]|0)+76|0;c[j>>2]=(c[j>>2]|0)+(c[w>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[w>>2]|0);c[w>>2]=yq((c[i>>2]|0)+8|0,(c[i>>2]|0)+84|0,c[(c[i>>2]|0)+76>>2]|0)|0;j=(mr(c[w>>2]|0)|0)!=0;L=c[w>>2]|0;if(j){I=11;break a;}if(L|0){I=13;break a;}else I=14;break;}case 3:{I=14;break;}case 4:{I=23;break;}case 5:{I=33;break;}case 6:{I=42;break;}default:{I=46;break a;}}do{if((I|0)==14){I=0;c[x>>2]=1<<c[(c[i>>2]|0)+8+8>>2];c[y>>2]=131072;if((c[(c[i>>2]|0)+52>>2]|0)>>>0<(c[y>>2]|0)>>>0?(Dy(c[(c[i>>2]|0)+48>>2]|0),c[(c[i>>2]|0)+52>>2]=c[y>>2],j=Cy(c[y>>2]|0)|0,c[(c[i>>2]|0)+48>>2]=j,(c[(c[i>>2]|0)+48>>2]|0)==0):0){I=16;break a;}if((c[(c[i>>2]|0)+64>>2]|0)>>>0<(c[x>>2]|0)>>>0?(Dy(c[(c[i>>2]|0)+60>>2]|0),c[(c[i>>2]|0)+64>>2]=c[x>>2],j=Cy(c[x>>2]|0)|0,c[(c[i>>2]|0)+60>>2]=j,(c[(c[i>>2]|0)+60>>2]|0)==0):0){I=19;break a;}j=c[i>>2]|0;if(c[(c[i>>2]|0)+76>>2]|0){mE(c[j+48>>2]|0,(c[i>>2]|0)+84|0,c[(c[i>>2]|0)+76>>2]|0)|0;c[(c[i>>2]|0)+56>>2]=c[(c[i>>2]|0)+76>>2];c[(c[i>>2]|0)+76>>2]=0;c[(c[i>>2]|0)+80>>2]=5;break;}else{c[j+80>>2]=4;I=23;break;}}}while(0);do{if((I|0)==23){I=0;c[z>>2]=sy(c[c[i>>2]>>2]|0)|0;if(!(c[z>>2]|0)){c[(c[i>>2]|0)+80>>2]=0;c[u>>2]=0;break;}if(((c[q>>2]|0)-(c[p>>2]|0)|0)>>>0<(c[z>>2]|0)>>>0){if((c[p>>2]|0)==(c[q>>2]|0)){c[u>>2]=0;break;}else{c[(c[i>>2]|0)+80>>2]=5;I=33;break;}}else{c[A>>2]=ty(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+60>>2]|0)+(c[(c[i>>2]|0)+68>>2]|0)|0,(c[(c[i>>2]|0)+64>>2]|0)-(c[(c[i>>2]|0)+68>>2]|0)|0,c[p>>2]|0,c[z>>2]|0)|0;if(mr(c[A>>2]|0)|0){I=27;break a;}c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0);if(!(c[A>>2]|0))break;c[(c[i>>2]|0)+72>>2]=(c[(c[i>>2]|0)+68>>2]|0)+(c[A>>2]|0);c[(c[i>>2]|0)+80>>2]=6;break;}}}while(0);do{if((I|0)==33){I=0;c[B>>2]=sy(c[c[i>>2]>>2]|0)|0;c[C>>2]=(c[B>>2]|0)-(c[(c[i>>2]|0)+56>>2]|0);if((c[C>>2]|0)>>>0>((c[(c[i>>2]|0)+52>>2]|0)-(c[(c[i>>2]|0)+56>>2]|0)|0)>>>0){I=34;break a;}c[D>>2]=ry((c[(c[i>>2]|0)+48>>2]|0)+(c[(c[i>>2]|0)+56>>2]|0)|0,c[C>>2]|0,c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0)|0;c[p>>2]=(c[p>>2]|0)+(c[D>>2]|0);j=(c[i>>2]|0)+56|0;c[j>>2]=(c[j>>2]|0)+(c[D>>2]|0);if((c[D>>2]|0)>>>0<(c[C>>2]|0)>>>0){c[u>>2]=0;break;}c[E>>2]=ty(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+60>>2]|0)+(c[(c[i>>2]|0)+68>>2]|0)|0,(c[(c[i>>2]|0)+64>>2]|0)-(c[(c[i>>2]|0)+68>>2]|0)|0,c[(c[i>>2]|0)+48>>2]|0,c[B>>2]|0)|0;if(mr(c[E>>2]|0)|0){I=38;break a;}c[(c[i>>2]|0)+56>>2]=0;j=c[i>>2]|0;if(c[E>>2]|0){c[(c[i>>2]|0)+72>>2]=(c[j+68>>2]|0)+(c[E>>2]|0);c[(c[i>>2]|0)+80>>2]=6;I=42;break;}else{c[j+80>>2]=4;break;}}}while(0);do{if((I|0)==42){I=0;c[F>>2]=(c[(c[i>>2]|0)+72>>2]|0)-(c[(c[i>>2]|0)+68>>2]|0);c[G>>2]=ry(c[s>>2]|0,(c[t>>2]|0)-(c[s>>2]|0)|0,(c[(c[i>>2]|0)+60>>2]|0)+(c[(c[i>>2]|0)+68>>2]|0)|0,c[F>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+(c[G>>2]|0);j=(c[i>>2]|0)+68|0;c[j>>2]=(c[j>>2]|0)+(c[G>>2]|0);if((c[G>>2]|0)!=(c[F>>2]|0)){c[u>>2]=0;break;}c[(c[i>>2]|0)+80>>2]=4;if(((c[(c[i>>2]|0)+68>>2]|0)+131072|0)>>>0>(c[(c[i>>2]|0)+64>>2]|0)>>>0){c[(c[i>>2]|0)+72>>2]=0;c[(c[i>>2]|0)+68>>2]=0;}}}while(0);}switch(I|0){case 4:{c[h>>2]=-62;M=c[h>>2]|0;l=g;return M|0;}case 6:{c[h>>2]=J;M=c[h>>2]|0;l=g;return M|0;}case 8:{mE(K+84+(c[(c[i>>2]|0)+76>>2]|0)|0,c[m>>2]|0,c[c[n>>2]>>2]|0)|0;m=(c[i>>2]|0)+76|0;c[m>>2]=(c[m>>2]|0)+(c[c[n>>2]>>2]|0);c[c[k>>2]>>2]=0;c[(c[i>>2]|0)+80>>2]=2;c[h>>2]=(c[v>>2]|0)-(c[(c[i>>2]|0)+76>>2]|0);M=c[h>>2]|0;l=g;return M|0;}case 11:{c[h>>2]=L;M=c[h>>2]|0;l=g;return M|0;}case 13:{c[c[k>>2]>>2]=0;c[h>>2]=(c[w>>2]|0)-(c[(c[i>>2]|0)+76>>2]|0);M=c[h>>2]|0;l=g;return M|0;}case 16:{c[h>>2]=-64;M=c[h>>2]|0;l=g;return M|0;}case 19:{c[h>>2]=-64;M=c[h>>2]|0;l=g;return M|0;}case 27:{c[h>>2]=c[A>>2];M=c[h>>2]|0;l=g;return M|0;}case 34:{c[h>>2]=-20;M=c[h>>2]|0;l=g;return M|0;}case 38:{c[h>>2]=c[E>>2];M=c[h>>2]|0;l=g;return M|0;}case 46:{c[h>>2]=-1;M=c[h>>2]|0;l=g;return M|0;}case 48:{c[c[n>>2]>>2]=(c[p>>2]|0)-(c[o>>2]|0);c[c[k>>2]>>2]=(c[s>>2]|0)-(c[r>>2]|0);c[H>>2]=sy(c[c[i>>2]>>2]|0)|0;if((c[H>>2]|0)>>>0>3)c[H>>2]=(c[H>>2]|0)+3;c[H>>2]=(c[H>>2]|0)-(c[(c[i>>2]|0)+56>>2]|0);c[h>>2]=c[H>>2];M=c[h>>2]|0;l=g;return M|0;}}return 0;}function iy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=l;l=l+128|0;h=g+116|0;i=g+112|0;j=g+108|0;k=g+104|0;m=g+100|0;n=g+96|0;o=g+92|0;p=g+88|0;q=g+84|0;r=g+80|0;s=g+76|0;t=g+72|0;u=g+68|0;v=g+64|0;w=g+60|0;x=g+56|0;y=g+52|0;z=g+48|0;A=g+44|0;B=g+40|0;C=g+36|0;D=g+32|0;E=g+28|0;F=g+24|0;G=g+20|0;H=g+16|0;I=g+12|0;J=g+8|0;K=g+4|0;L=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=(c[o>>2]|0)+(c[c[n>>2]>>2]|0);c[q>>2]=c[o>>2];c[r>>2]=c[j>>2];c[s>>2]=(c[r>>2]|0)+(c[c[k>>2]>>2]|0);c[t>>2]=c[r>>2];c[u>>2]=1;a:while(1){if(!(c[u>>2]|0)){M=50;break;}b:do{switch(c[(c[i>>2]|0)+24>>2]|0){case 0:{M=4;break a;break;}case 1:{c[v>>2]=zq((c[i>>2]|0)+8|0,(c[i>>2]|0)+60|0,c[(c[i>>2]|0)+76>>2]|0)|0;if(c[v>>2]|0){c[w>>2]=(c[v>>2]|0)-(c[(c[i>>2]|0)+76>>2]|0);if(jr(c[v>>2]|0)|0){M=7;break a;}N=(c[i>>2]|0)+60+(c[(c[i>>2]|0)+76>>2]|0)|0;O=c[q>>2]|0;if((c[w>>2]|0)>>>0>((c[p>>2]|0)-(c[q>>2]|0)|0)>>>0){M=9;break a;}mE(N|0,O|0,c[w>>2]|0)|0;c[(c[i>>2]|0)+76>>2]=c[v>>2];c[q>>2]=(c[q>>2]|0)+(c[w>>2]|0);break b;}c[x>>2]=oy(c[c[i>>2]>>2]|0)|0;c[y>>2]=py(c[c[i>>2]>>2]|0,0,0,(c[i>>2]|0)+60|0,c[x>>2]|0)|0;if(jr(c[y>>2]|0)|0){M=12;break a;}if((c[x>>2]|0)>>>0<(c[(c[i>>2]|0)+76>>2]|0)>>>0?(c[z>>2]=oy(c[c[i>>2]>>2]|0)|0,c[A>>2]=py(c[c[i>>2]>>2]|0,0,0,(c[i>>2]|0)+60+(c[x>>2]|0)|0,c[z>>2]|0)|0,jr(c[A>>2]|0)|0):0){M=15;break a;}if((1<<c[(c[i>>2]|0)+8+8>>2]|0)<131072)P=1<<c[(c[i>>2]|0)+8+8>>2];else P=131072;c[B>>2]=P;c[(c[i>>2]|0)+56>>2]=c[B>>2];if((c[(c[i>>2]|0)+32>>2]|0)>>>0<(c[B>>2]|0)>>>0?(Dy(c[(c[i>>2]|0)+28>>2]|0),c[(c[i>>2]|0)+32>>2]=c[B>>2],j=Cy(c[B>>2]|0)|0,c[(c[i>>2]|0)+28>>2]=j,(c[(c[i>>2]|0)+28>>2]|0)==0):0){M=20;break a;}c[C>>2]=(1<<c[(c[i>>2]|0)+8+8>>2])+(c[B>>2]|0)+16;if((c[(c[i>>2]|0)+44>>2]|0)>>>0<(c[C>>2]|0)>>>0?(Dy(c[(c[i>>2]|0)+40>>2]|0),c[(c[i>>2]|0)+44>>2]=c[C>>2],j=Cy(c[C>>2]|0)|0,c[(c[i>>2]|0)+40>>2]=j,(c[(c[i>>2]|0)+40>>2]|0)==0):0){M=23;break a;}c[(c[i>>2]|0)+24>>2]=2;M=25;break;}case 2:{M=25;break;}case 3:{M=35;break;}case 4:{M=44;break;}default:{M=48;break a;}}}while(0);do{if((M|0)==25){M=0;c[D>>2]=oy(c[c[i>>2]>>2]|0)|0;if(!(c[D>>2]|0)){c[(c[i>>2]|0)+24>>2]=0;c[u>>2]=0;break;}if(((c[p>>2]|0)-(c[q>>2]|0)|0)>>>0<(c[D>>2]|0)>>>0){if((c[q>>2]|0)==(c[p>>2]|0)){c[u>>2]=0;break;}else{c[(c[i>>2]|0)+24>>2]=3;M=35;break;}}else{c[E>>2]=py(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+40>>2]|0)+(c[(c[i>>2]|0)+48>>2]|0)|0,(c[(c[i>>2]|0)+44>>2]|0)-(c[(c[i>>2]|0)+48>>2]|0)|0,c[q>>2]|0,c[D>>2]|0)|0;if(jr(c[E>>2]|0)|0){M=29;break a;}c[q>>2]=(c[q>>2]|0)+(c[D>>2]|0);if(!(c[E>>2]|0))break;c[(c[i>>2]|0)+52>>2]=(c[(c[i>>2]|0)+48>>2]|0)+(c[E>>2]|0);c[(c[i>>2]|0)+24>>2]=4;break;}}}while(0);do{if((M|0)==35){M=0;c[F>>2]=oy(c[c[i>>2]>>2]|0)|0;c[G>>2]=(c[F>>2]|0)-(c[(c[i>>2]|0)+36>>2]|0);if((c[G>>2]|0)>>>0>((c[(c[i>>2]|0)+32>>2]|0)-(c[(c[i>>2]|0)+36>>2]|0)|0)>>>0){M=36;break a;}c[H>>2]=qy((c[(c[i>>2]|0)+28>>2]|0)+(c[(c[i>>2]|0)+36>>2]|0)|0,c[G>>2]|0,c[q>>2]|0,(c[p>>2]|0)-(c[q>>2]|0)|0)|0;c[q>>2]=(c[q>>2]|0)+(c[H>>2]|0);j=(c[i>>2]|0)+36|0;c[j>>2]=(c[j>>2]|0)+(c[H>>2]|0);if((c[H>>2]|0)>>>0<(c[G>>2]|0)>>>0){c[u>>2]=0;break;}c[I>>2]=py(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+40>>2]|0)+(c[(c[i>>2]|0)+48>>2]|0)|0,(c[(c[i>>2]|0)+44>>2]|0)-(c[(c[i>>2]|0)+48>>2]|0)|0,c[(c[i>>2]|0)+28>>2]|0,c[F>>2]|0)|0;if(jr(c[I>>2]|0)|0){M=40;break a;}c[(c[i>>2]|0)+36>>2]=0;j=c[i>>2]|0;if(c[I>>2]|0){c[(c[i>>2]|0)+52>>2]=(c[j+48>>2]|0)+(c[I>>2]|0);c[(c[i>>2]|0)+24>>2]=4;M=44;break;}else{c[j+24>>2]=2;break;}}}while(0);do{if((M|0)==44){M=0;c[J>>2]=(c[(c[i>>2]|0)+52>>2]|0)-(c[(c[i>>2]|0)+48>>2]|0);c[K>>2]=qy(c[t>>2]|0,(c[s>>2]|0)-(c[t>>2]|0)|0,(c[(c[i>>2]|0)+40>>2]|0)+(c[(c[i>>2]|0)+48>>2]|0)|0,c[J>>2]|0)|0;c[t>>2]=(c[t>>2]|0)+(c[K>>2]|0);j=(c[i>>2]|0)+48|0;c[j>>2]=(c[j>>2]|0)+(c[K>>2]|0);if((c[K>>2]|0)!=(c[J>>2]|0)){c[u>>2]=0;break;}c[(c[i>>2]|0)+24>>2]=2;if(((c[(c[i>>2]|0)+48>>2]|0)+(c[(c[i>>2]|0)+56>>2]|0)|0)>>>0>(c[(c[i>>2]|0)+44>>2]|0)>>>0){c[(c[i>>2]|0)+52>>2]=0;c[(c[i>>2]|0)+48>>2]=0;}}}while(0);}switch(M|0){case 4:{c[h>>2]=-62;Q=c[h>>2]|0;l=g;return Q|0;}case 7:{c[h>>2]=c[v>>2];Q=c[h>>2]|0;l=g;return Q|0;}case 9:{mE(N|0,O|0,(c[p>>2]|0)-(c[q>>2]|0)|0)|0;O=(c[i>>2]|0)+76|0;c[O>>2]=(c[O>>2]|0)+((c[p>>2]|0)-(c[q>>2]|0));c[q>>2]=c[p>>2];c[u>>2]=0;c[c[k>>2]>>2]=0;c[h>>2]=(c[v>>2]|0)-(c[(c[i>>2]|0)+76>>2]|0)+3;Q=c[h>>2]|0;l=g;return Q|0;}case 12:{c[h>>2]=c[y>>2];Q=c[h>>2]|0;l=g;return Q|0;}case 15:{c[h>>2]=c[A>>2];Q=c[h>>2]|0;l=g;return Q|0;}case 20:{c[h>>2]=-64;Q=c[h>>2]|0;l=g;return Q|0;}case 23:{c[h>>2]=-64;Q=c[h>>2]|0;l=g;return Q|0;}case 29:{c[h>>2]=c[E>>2];Q=c[h>>2]|0;l=g;return Q|0;}case 36:{c[h>>2]=-20;Q=c[h>>2]|0;l=g;return Q|0;}case 40:{c[h>>2]=c[I>>2];Q=c[h>>2]|0;l=g;return Q|0;}case 48:{c[h>>2]=-1;Q=c[h>>2]|0;l=g;return Q|0;}case 50:{c[c[n>>2]>>2]=(c[q>>2]|0)-(c[o>>2]|0);c[c[k>>2]>>2]=(c[t>>2]|0)-(c[r>>2]|0);c[L>>2]=oy(c[c[i>>2]>>2]|0)|0;if((c[L>>2]|0)>>>0>3)c[L>>2]=(c[L>>2]|0)+3;c[L>>2]=(c[L>>2]|0)-(c[(c[i>>2]|0)+36>>2]|0);c[h>>2]=c[L>>2];Q=c[h>>2]|0;l=g;return Q|0;}}return 0;}function jy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;g=l;l=l+128|0;h=g+124|0;i=g+120|0;j=g+116|0;k=g+112|0;m=g+108|0;n=g+104|0;o=g+100|0;p=g+96|0;q=g+92|0;r=g+88|0;s=g+84|0;t=g+80|0;u=g+76|0;v=g+72|0;w=g+68|0;x=g+64|0;y=g+60|0;z=g+56|0;A=g+52|0;B=g+48|0;C=g+44|0;D=g+40|0;E=g+36|0;F=g+32|0;G=g+28|0;H=g+24|0;I=g+20|0;J=g+16|0;K=g+12|0;L=g+8|0;M=g+4|0;N=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=(c[o>>2]|0)+(c[c[n>>2]>>2]|0);c[q>>2]=c[o>>2];c[r>>2]=c[j>>2];c[s>>2]=(c[r>>2]|0)+(c[c[k>>2]>>2]|0);c[t>>2]=c[r>>2];c[u>>2]=1;a:while(1){if(!(c[u>>2]|0)){O=54;break;}b:do{switch(c[(c[i>>2]|0)+32>>2]|0){case 0:{O=4;break a;break;}case 1:{c[v>>2]=Aq((c[i>>2]|0)+8|0,(c[i>>2]|0)+68|0,c[(c[i>>2]|0)+88>>2]|0)|0;j=(hr(c[v>>2]|0)|0)!=0;P=c[v>>2]|0;if(j){O=6;break a;}if(P|0){c[w>>2]=(c[v>>2]|0)-(c[(c[i>>2]|0)+88>>2]|0);Q=(c[i>>2]|0)+68+(c[(c[i>>2]|0)+88>>2]|0)|0;R=c[q>>2]|0;if((c[w>>2]|0)>>>0>((c[p>>2]|0)-(c[q>>2]|0)|0)>>>0){O=9;break a;}mE(Q|0,R|0,c[w>>2]|0)|0;c[(c[i>>2]|0)+88>>2]=c[v>>2];c[q>>2]=(c[q>>2]|0)+(c[w>>2]|0);break b;}c[x>>2]=ky(c[c[i>>2]>>2]|0)|0;c[y>>2]=ly(c[c[i>>2]>>2]|0,0,0,(c[i>>2]|0)+68|0,c[x>>2]|0)|0;if(hr(c[y>>2]|0)|0){O=12;break a;}if((c[x>>2]|0)>>>0<(c[(c[i>>2]|0)+88>>2]|0)>>>0?(c[z>>2]=ky(c[c[i>>2]>>2]|0)|0,c[A>>2]=ly(c[c[i>>2]>>2]|0,0,0,(c[i>>2]|0)+68+(c[x>>2]|0)|0,c[z>>2]|0)|0,hr(c[A>>2]|0)|0):0){O=15;break a;}if((c[(c[i>>2]|0)+8+8>>2]|0)>>>0>1024)S=c[(c[i>>2]|0)+8+8>>2]|0;else S=1024;c[(c[i>>2]|0)+8+8>>2]=S;if((c[(c[i>>2]|0)+8+8>>2]|0)>>>0<131072)T=c[(c[i>>2]|0)+8+8>>2]|0;else T=131072;c[B>>2]=T;c[(c[i>>2]|0)+64>>2]=c[B>>2];if((c[(c[i>>2]|0)+40>>2]|0)>>>0<(c[B>>2]|0)>>>0?(xc[c[(c[i>>2]|0)+92+4>>2]&31](c[(c[i>>2]|0)+92+8>>2]|0,c[(c[i>>2]|0)+36>>2]|0),c[(c[i>>2]|0)+40>>2]=c[B>>2],j=qc[c[(c[i>>2]|0)+92>>2]&63](c[(c[i>>2]|0)+92+8>>2]|0,c[B>>2]|0)|0,c[(c[i>>2]|0)+36>>2]=j,(c[(c[i>>2]|0)+36>>2]|0)==0):0){O=22;break a;}c[C>>2]=(c[(c[i>>2]|0)+8+8>>2]|0)+(c[B>>2]|0)+16;if((c[(c[i>>2]|0)+52>>2]|0)>>>0<(c[C>>2]|0)>>>0?(xc[c[(c[i>>2]|0)+92+4>>2]&31](c[(c[i>>2]|0)+92+8>>2]|0,c[(c[i>>2]|0)+48>>2]|0),c[(c[i>>2]|0)+52>>2]=c[C>>2],j=qc[c[(c[i>>2]|0)+92>>2]&63](c[(c[i>>2]|0)+92+8>>2]|0,c[C>>2]|0)|0,c[(c[i>>2]|0)+48>>2]=j,(c[(c[i>>2]|0)+48>>2]|0)==0):0){O=25;break a;}c[(c[i>>2]|0)+32>>2]=2;O=27;break;}case 2:{O=27;break;}case 3:{O=39;break;}case 4:{O=48;break;}default:{O=52;break a;}}}while(0);do{if((O|0)==27){O=0;c[D>>2]=ky(c[c[i>>2]>>2]|0)|0;if(!(c[D>>2]|0)){c[(c[i>>2]|0)+32>>2]=0;c[u>>2]=0;break;}if(((c[p>>2]|0)-(c[q>>2]|0)|0)>>>0<(c[D>>2]|0)>>>0)if((c[q>>2]|0)==(c[p>>2]|0)){c[u>>2]=0;break;}else{c[(c[i>>2]|0)+32>>2]=3;O=39;break;}c[E>>2]=my(c[c[i>>2]>>2]|0)|0;if(c[E>>2]|0)U=0;else U=(c[(c[i>>2]|0)+52>>2]|0)-(c[(c[i>>2]|0)+56>>2]|0)|0;c[F>>2]=ly(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+48>>2]|0)+(c[(c[i>>2]|0)+56>>2]|0)|0,U,c[q>>2]|0,c[D>>2]|0)|0;if(hr(c[F>>2]|0)|0){O=33;break a;}c[q>>2]=(c[q>>2]|0)+(c[D>>2]|0);if((c[F>>2]|0)!=0|(c[E>>2]|0)!=0){c[(c[i>>2]|0)+60>>2]=(c[(c[i>>2]|0)+56>>2]|0)+(c[F>>2]|0);c[(c[i>>2]|0)+32>>2]=4;}}}while(0);do{if((O|0)==39){O=0;c[G>>2]=ky(c[c[i>>2]>>2]|0)|0;c[H>>2]=(c[G>>2]|0)-(c[(c[i>>2]|0)+44>>2]|0);if((c[H>>2]|0)>>>0>((c[(c[i>>2]|0)+40>>2]|0)-(c[(c[i>>2]|0)+44>>2]|0)|0)>>>0){O=40;break a;}c[I>>2]=ny((c[(c[i>>2]|0)+36>>2]|0)+(c[(c[i>>2]|0)+44>>2]|0)|0,c[H>>2]|0,c[q>>2]|0,(c[p>>2]|0)-(c[q>>2]|0)|0)|0;c[q>>2]=(c[q>>2]|0)+(c[I>>2]|0);j=(c[i>>2]|0)+44|0;c[j>>2]=(c[j>>2]|0)+(c[I>>2]|0);if((c[I>>2]|0)>>>0<(c[H>>2]|0)>>>0){c[u>>2]=0;break;}c[J>>2]=my(c[c[i>>2]>>2]|0)|0;c[K>>2]=ly(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+48>>2]|0)+(c[(c[i>>2]|0)+56>>2]|0)|0,(c[(c[i>>2]|0)+52>>2]|0)-(c[(c[i>>2]|0)+56>>2]|0)|0,c[(c[i>>2]|0)+36>>2]|0,c[G>>2]|0)|0;if(hr(c[K>>2]|0)|0){O=44;break a;}c[(c[i>>2]|0)+44>>2]=0;j=c[i>>2]|0;if((c[K>>2]|0)!=0|(c[J>>2]|0)!=0){c[(c[i>>2]|0)+60>>2]=(c[j+56>>2]|0)+(c[K>>2]|0);c[(c[i>>2]|0)+32>>2]=4;O=48;break;}else{c[j+32>>2]=2;break;}}}while(0);do{if((O|0)==48){O=0;c[L>>2]=(c[(c[i>>2]|0)+60>>2]|0)-(c[(c[i>>2]|0)+56>>2]|0);c[M>>2]=ny(c[t>>2]|0,(c[s>>2]|0)-(c[t>>2]|0)|0,(c[(c[i>>2]|0)+48>>2]|0)+(c[(c[i>>2]|0)+56>>2]|0)|0,c[L>>2]|0)|0;c[t>>2]=(c[t>>2]|0)+(c[M>>2]|0);j=(c[i>>2]|0)+56|0;c[j>>2]=(c[j>>2]|0)+(c[M>>2]|0);if((c[M>>2]|0)!=(c[L>>2]|0)){c[u>>2]=0;break;}c[(c[i>>2]|0)+32>>2]=2;if(((c[(c[i>>2]|0)+56>>2]|0)+(c[(c[i>>2]|0)+64>>2]|0)|0)>>>0>(c[(c[i>>2]|0)+52>>2]|0)>>>0){c[(c[i>>2]|0)+60>>2]=0;c[(c[i>>2]|0)+56>>2]=0;}}}while(0);}switch(O|0){case 4:{c[h>>2]=-62;V=c[h>>2]|0;l=g;return V|0;}case 6:{c[h>>2]=P;V=c[h>>2]|0;l=g;return V|0;}case 9:{mE(Q|0,R|0,(c[p>>2]|0)-(c[q>>2]|0)|0)|0;R=(c[i>>2]|0)+88|0;c[R>>2]=(c[R>>2]|0)+((c[p>>2]|0)-(c[q>>2]|0));c[c[k>>2]>>2]=0;c[h>>2]=(c[v>>2]|0)-(c[(c[i>>2]|0)+88>>2]|0)+3;V=c[h>>2]|0;l=g;return V|0;}case 12:{c[h>>2]=c[y>>2];V=c[h>>2]|0;l=g;return V|0;}case 15:{c[h>>2]=c[A>>2];V=c[h>>2]|0;l=g;return V|0;}case 22:{c[h>>2]=-64;V=c[h>>2]|0;l=g;return V|0;}case 25:{c[h>>2]=-64;V=c[h>>2]|0;l=g;return V|0;}case 33:{c[h>>2]=c[F>>2];V=c[h>>2]|0;l=g;return V|0;}case 40:{c[h>>2]=-20;V=c[h>>2]|0;l=g;return V|0;}case 44:{c[h>>2]=c[K>>2];V=c[h>>2]|0;l=g;return V|0;}case 52:{c[h>>2]=-1;V=c[h>>2]|0;l=g;return V|0;}case 54:{c[c[n>>2]>>2]=(c[q>>2]|0)-(c[o>>2]|0);c[c[k>>2]>>2]=(c[t>>2]|0)-(c[r>>2]|0);c[N>>2]=ky(c[c[i>>2]>>2]|0)|0;c[N>>2]=(c[N>>2]|0)-(c[(c[i>>2]|0)+44>>2]|0);c[h>>2]=c[N>>2];V=c[h>>2]|0;l=g;return V|0;}}return 0;}function ky(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[(c[d>>2]|0)+21536>>2]|0;}function ly(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0;i=l;l=l+80|0;j=i+64|0;k=i+60|0;m=i+56|0;n=i+52|0;o=i+48|0;p=i+44|0;q=i+40|0;r=i+32|0;s=i+24|0;t=i;u=i+20|0;v=i+16|0;w=i+12|0;x=i+8|0;c[k>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;if((c[p>>2]|0)!=(c[(c[k>>2]|0)+21536>>2]|0)){c[j>>2]=-72;z=c[j>>2]|0;l=i;return z|0;}if(c[n>>2]|0)us(c[k>>2]|0,c[m>>2]|0);a:do{switch(c[(c[k>>2]|0)+21580>>2]|0){case 0:{if((c[p>>2]|0)!=5){c[j>>2]=-72;z=c[j>>2]|0;l=i;return z|0;}if(((Bq(c[o>>2]|0)|0)&-16|0)==407710288){h=(c[k>>2]|0)+152788|0;g=c[o>>2]|0;a[h>>0]=a[g>>0]|0;a[h+1>>0]=a[g+1>>0]|0;a[h+2>>0]=a[g+2>>0]|0;a[h+3>>0]=a[g+3>>0]|0;a[h+4>>0]=a[g+4>>0]|0;c[(c[k>>2]|0)+21536>>2]=3;c[(c[k>>2]|0)+21580>>2]=4;c[j>>2]=0;z=c[j>>2]|0;l=i;return z|0;}g=Cq(c[o>>2]|0,5)|0;c[(c[k>>2]|0)+21680>>2]=g;g=(hr(c[(c[k>>2]|0)+21680>>2]|0)|0)!=0;h=c[k>>2]|0;if(g){c[j>>2]=c[h+21680>>2];z=c[j>>2]|0;l=i;return z|0;}g=h+152788|0;h=c[o>>2]|0;a[g>>0]=a[h>>0]|0;a[g+1>>0]=a[h+1>>0]|0;a[g+2>>0]=a[h+2>>0]|0;a[g+3>>0]=a[h+3>>0]|0;a[g+4>>0]=a[h+4>>0]|0;h=c[k>>2]|0;if((c[(c[k>>2]|0)+21680>>2]|0)>>>0<=5){c[h+21536>>2]=0;break a;}c[(c[k>>2]|0)+21536>>2]=(c[h+21680>>2]|0)-5;c[(c[k>>2]|0)+21580>>2]=1;c[j>>2]=0;z=c[j>>2]|0;l=i;return z|0;}case 1:break;case 2:{c[s>>2]=ir(c[o>>2]|0,3,r)|0;if(hr(c[s>>2]|0)|0){c[j>>2]=c[s>>2];z=c[j>>2]|0;l=i;return z|0;}if((c[r>>2]|0)==3){if(c[(c[k>>2]|0)+21552+16>>2]|0?(h=Oh((c[k>>2]|0)+21592|0)|0,g=t,c[g>>2]=h,c[g+4>>2]=y,g=t,h=iE(c[g>>2]|0,c[g+4>>2]|0,11)|0,c[u>>2]=h&4194303,c[v>>2]=c[o>>2],c[w>>2]=(d[(c[v>>2]|0)+2>>0]|0)+((d[(c[v>>2]|0)+1>>0]|0)<<8)+(((d[c[v>>2]>>0]|0)&63)<<16),(c[w>>2]|0)!=(c[u>>2]|0)):0){c[j>>2]=-22;z=c[j>>2]|0;l=i;return z|0;}c[(c[k>>2]|0)+21536>>2]=0;c[(c[k>>2]|0)+21580>>2]=0;}else{c[(c[k>>2]|0)+21536>>2]=c[s>>2];c[(c[k>>2]|0)+21576>>2]=c[r>>2];c[(c[k>>2]|0)+21580>>2]=3;}c[j>>2]=0;z=c[j>>2]|0;l=i;return z|0;}case 3:{switch(c[(c[k>>2]|0)+21576>>2]|0){case 0:{c[x>>2]=xs(c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;break;}case 1:{c[x>>2]=ys(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;break;}case 2:{c[j>>2]=-1;z=c[j>>2]|0;l=i;return z|0;}case 3:{c[x>>2]=0;break;}default:{c[j>>2]=-1;z=c[j>>2]|0;l=i;return z|0;}}c[(c[k>>2]|0)+21580>>2]=2;c[(c[k>>2]|0)+21536>>2]=3;c[(c[k>>2]|0)+21520>>2]=(c[m>>2]|0)+(c[x>>2]|0);if(hr(c[x>>2]|0)|0){c[j>>2]=c[x>>2];z=c[j>>2]|0;l=i;return z|0;}if(c[(c[k>>2]|0)+21552+16>>2]|0)Nh((c[k>>2]|0)+21592|0,c[m>>2]|0,c[x>>2]|0)|0;c[j>>2]=c[x>>2];z=c[j>>2]|0;l=i;return z|0;}case 4:{mE((c[k>>2]|0)+152788+5|0,c[o>>2]|0,c[(c[k>>2]|0)+21536>>2]|0)|0;h=Bq((c[k>>2]|0)+152788+4|0)|0;c[(c[k>>2]|0)+21536>>2]=h;c[(c[k>>2]|0)+21580>>2]=5;c[j>>2]=0;z=c[j>>2]|0;l=i;return z|0;}case 5:{c[(c[k>>2]|0)+21536>>2]=0;c[(c[k>>2]|0)+21580>>2]=0;c[j>>2]=0;z=c[j>>2]|0;l=i;return z|0;}default:{c[j>>2]=-1;z=c[j>>2]|0;l=i;return z|0;}}}while(0);mE((c[k>>2]|0)+152788+5|0,c[o>>2]|0,c[(c[k>>2]|0)+21536>>2]|0)|0;c[q>>2]=ws(c[k>>2]|0,(c[k>>2]|0)+152788|0,c[(c[k>>2]|0)+21680>>2]|0)|0;if(hr(c[q>>2]|0)|0){c[j>>2]=c[q>>2];z=c[j>>2]|0;l=i;return z|0;}else{c[(c[k>>2]|0)+21536>>2]=3;c[(c[k>>2]|0)+21580>>2]=2;c[j>>2]=0;z=c[j>>2]|0;l=i;return z|0;}return 0;}function my(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return(c[(c[d>>2]|0)+21580>>2]|0)==5|0;}function ny(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?c[h>>2]|0:c[j>>2]|0;mE(c[g>>2]|0,c[i>>2]|0,c[k>>2]|0)|0;l=f;return c[k>>2]|0;}function oy(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[(c[d>>2]|0)+21536>>2]|0;}function py(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;h=l;l=l+48|0;i=h+40|0;j=h+36|0;k=h+32|0;m=h+28|0;n=h+24|0;o=h+20|0;p=h+16|0;q=h+8|0;r=h+4|0;s=h;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;if((c[o>>2]|0)!=(c[(c[j>>2]|0)+21536>>2]|0)){c[i>>2]=-72;t=c[i>>2]|0;l=h;return t|0;}if(c[m>>2]|0)Kt(c[j>>2]|0,c[k>>2]|0);a:do{switch(c[(c[j>>2]|0)+21564>>2]|0){case 0:{if((c[o>>2]|0)!=5){c[i>>2]=-72;t=c[i>>2]|0;l=h;return t|0;}g=Nq(c[n>>2]|0,5)|0;c[(c[j>>2]|0)+21540>>2]=g;g=(jr(c[(c[j>>2]|0)+21540>>2]|0)|0)!=0;f=c[j>>2]|0;if(g){c[i>>2]=c[f+21540>>2];t=c[i>>2]|0;l=h;return t|0;}g=f+152660|0;f=c[n>>2]|0;a[g>>0]=a[f>>0]|0;a[g+1>>0]=a[f+1>>0]|0;a[g+2>>0]=a[f+2>>0]|0;a[g+3>>0]=a[f+3>>0]|0;a[g+4>>0]=a[f+4>>0]|0;f=c[j>>2]|0;if((c[(c[j>>2]|0)+21540>>2]|0)>>>0<=5){c[f+21536>>2]=0;break a;}c[(c[j>>2]|0)+21536>>2]=(c[f+21540>>2]|0)-5;c[(c[j>>2]|0)+21564>>2]=1;c[i>>2]=0;t=c[i>>2]|0;l=h;return t|0;}case 1:break;case 2:{c[r>>2]=kr(c[n>>2]|0,3,q)|0;if(jr(c[r>>2]|0)|0){c[i>>2]=c[r>>2];t=c[i>>2]|0;l=h;return t|0;}if((c[q>>2]|0)==3){c[(c[j>>2]|0)+21536>>2]=0;c[(c[j>>2]|0)+21564>>2]=0;}else{c[(c[j>>2]|0)+21536>>2]=c[r>>2];c[(c[j>>2]|0)+21560>>2]=c[q>>2];c[(c[j>>2]|0)+21564>>2]=3;}c[i>>2]=0;t=c[i>>2]|0;l=h;return t|0;}case 3:{switch(c[(c[j>>2]|0)+21560>>2]|0){case 0:{c[s>>2]=Nt(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;break;}case 1:{c[s>>2]=Ot(c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;break;}case 2:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}case 3:{c[s>>2]=0;break;}default:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}}c[(c[j>>2]|0)+21564>>2]=2;c[(c[j>>2]|0)+21536>>2]=3;c[(c[j>>2]|0)+21520>>2]=(c[k>>2]|0)+(c[s>>2]|0);c[i>>2]=c[s>>2];t=c[i>>2]|0;l=h;return t|0;}default:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}}}while(0);mE((c[j>>2]|0)+152660+5|0,c[n>>2]|0,c[(c[j>>2]|0)+21536>>2]|0)|0;c[p>>2]=Mt(c[j>>2]|0,(c[j>>2]|0)+152660|0,c[(c[j>>2]|0)+21540>>2]|0)|0;if(jr(c[p>>2]|0)|0){c[i>>2]=c[p>>2];t=c[i>>2]|0;l=h;return t|0;}else{c[(c[j>>2]|0)+21536>>2]=3;c[(c[j>>2]|0)+21564>>2]=2;c[i>>2]=0;t=c[i>>2]|0;l=h;return t|0;}return 0;}function qy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?c[h>>2]|0:c[j>>2]|0;mE(c[g>>2]|0,c[i>>2]|0,c[k>>2]|0)|0;l=f;return c[k>>2]|0;}function ry(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?c[h>>2]|0:c[j>>2]|0;mE(c[g>>2]|0,c[i>>2]|0,c[k>>2]|0)|0;l=f;return c[k>>2]|0;}function sy(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[(c[d>>2]|0)+26656>>2]|0;}function ty(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;h=l;l=l+48|0;i=h+40|0;j=h+36|0;k=h+32|0;m=h+28|0;n=h+24|0;o=h+20|0;p=h+16|0;q=h+8|0;r=h+4|0;s=h;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;if((c[o>>2]|0)!=(c[(c[j>>2]|0)+26656>>2]|0)){c[i>>2]=-72;t=c[i>>2]|0;l=h;return t|0;}Tu(c[j>>2]|0,c[k>>2]|0);a:do{switch(c[(c[j>>2]|0)+26708>>2]|0){case 0:{if((c[o>>2]|0)!=5){c[i>>2]=-72;t=c[i>>2]|0;l=h;return t|0;}g=Vu(c[j>>2]|0,c[n>>2]|0,5)|0;c[(c[j>>2]|0)+26660>>2]=g;g=(mr(c[(c[j>>2]|0)+26660>>2]|0)|0)!=0;f=c[j>>2]|0;if(g){c[i>>2]=c[f+26660>>2];t=c[i>>2]|0;l=h;return t|0;}g=f+157804|0;f=c[n>>2]|0;a[g>>0]=a[f>>0]|0;a[g+1>>0]=a[f+1>>0]|0;a[g+2>>0]=a[f+2>>0]|0;a[g+3>>0]=a[f+3>>0]|0;a[g+4>>0]=a[f+4>>0]|0;if((c[(c[j>>2]|0)+26660>>2]|0)>>>0<=5){c[(c[j>>2]|0)+26656>>2]=0;break a;}c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}case 1:break;case 2:{c[r>>2]=lr(c[n>>2]|0,3,q)|0;if(mr(c[r>>2]|0)|0){c[i>>2]=c[r>>2];t=c[i>>2]|0;l=h;return t|0;}if((c[q>>2]|0)==3){c[(c[j>>2]|0)+26656>>2]=0;c[(c[j>>2]|0)+26708>>2]=0;}else{c[(c[j>>2]|0)+26656>>2]=c[r>>2];c[(c[j>>2]|0)+26704>>2]=c[q>>2];c[(c[j>>2]|0)+26708>>2]=3;}c[i>>2]=0;t=c[i>>2]|0;l=h;return t|0;}case 3:{switch(c[(c[j>>2]|0)+26704>>2]|0){case 0:{c[s>>2]=Xu(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;break;}case 1:{c[s>>2]=Yu(c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;break;}case 2:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}case 3:{c[s>>2]=0;break;}default:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}}c[(c[j>>2]|0)+26708>>2]=2;c[(c[j>>2]|0)+26656>>2]=3;c[(c[j>>2]|0)+26640>>2]=(c[k>>2]|0)+(c[s>>2]|0);c[i>>2]=c[s>>2];t=c[i>>2]|0;l=h;return t|0;}default:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}}}while(0);c[p>>2]=Wu(c[j>>2]|0,(c[j>>2]|0)+157804|0,c[(c[j>>2]|0)+26660>>2]|0)|0;if(mr(c[p>>2]|0)|0){c[i>>2]=c[p>>2];t=c[i>>2]|0;l=h;return t|0;}else{c[(c[j>>2]|0)+26656>>2]=3;c[(c[j>>2]|0)+26708>>2]=2;c[i>>2]=0;t=c[i>>2]|0;l=h;return t|0;}return 0;}function uy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;g=l;l=l+112|0;h=g+100|0;i=g+96|0;j=g+92|0;k=g+88|0;m=g+84|0;n=g+80|0;o=g+76|0;p=g+72|0;q=g+68|0;r=g+64|0;s=g+60|0;t=g+56|0;u=g+52|0;v=g+48|0;w=g+44|0;x=g+40|0;y=g+36|0;z=g+32|0;A=g+28|0;B=g+24|0;C=g+20|0;D=g+16|0;E=g+12|0;F=g+8|0;G=g+4|0;H=g;c[i>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[m>>2];c[p>>2]=c[o>>2];c[q>>2]=(c[o>>2]|0)+(c[c[n>>2]>>2]|0);c[r>>2]=c[j>>2];c[s>>2]=c[r>>2];c[t>>2]=(c[r>>2]|0)+(c[c[k>>2]>>2]|0);c[u>>2]=1;a:while(1){if(!(c[u>>2]|0)){I=50;break;}switch(c[(c[i>>2]|0)+80>>2]|0){case 0:{I=4;break a;break;}case 1:{c[v>>2]=sx((c[i>>2]|0)+8|0,c[m>>2]|0,c[c[n>>2]>>2]|0)|0;j=(rr(c[v>>2]|0)|0)!=0;J=c[v>>2]|0;if(j){I=6;break a;}K=c[i>>2]|0;if(J|0){I=8;break a;}c[K+80>>2]=3;break;}case 2:{c[w>>2]=vy((c[i>>2]|0)+84+(c[(c[i>>2]|0)+68>>2]|0)|0,5-(c[(c[i>>2]|0)+68>>2]|0)|0,c[m>>2]|0,c[c[n>>2]>>2]|0)|0;j=(c[i>>2]|0)+68|0;c[j>>2]=(c[j>>2]|0)+(c[w>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[w>>2]|0);c[w>>2]=sx((c[i>>2]|0)+8|0,(c[i>>2]|0)+84|0,c[(c[i>>2]|0)+68>>2]|0)|0;j=(rr(c[w>>2]|0)|0)!=0;L=c[w>>2]|0;if(j){I=11;break a;}if(L|0){I=13;break a;}else I=14;break;}case 3:{I=14;break;}case 4:{I=25;break;}case 5:{I=35;break;}case 6:{I=44;break;}default:{I=48;break a;}}do{if((I|0)==14){I=0;c[x>>2]=1<<c[(c[i>>2]|0)+8+8>>2];c[y>>2]=131072;if((c[(c[i>>2]|0)+44>>2]|0)>>>0<131072?(Dy(c[(c[i>>2]|0)+40>>2]|0),c[(c[i>>2]|0)+44>>2]=131072,j=Cy(131072)|0,c[(c[i>>2]|0)+40>>2]=j,(c[(c[i>>2]|0)+40>>2]|0)==0):0){I=16;break a;}if((c[(c[i>>2]|0)+56>>2]|0)>>>0<(c[x>>2]|0)>>>0?(Dy(c[(c[i>>2]|0)+52>>2]|0),c[(c[i>>2]|0)+56>>2]=c[x>>2],j=Cy(c[x>>2]|0)|0,c[(c[i>>2]|0)+52>>2]=j,(c[(c[i>>2]|0)+52>>2]|0)==0):0){I=19;break a;}if(c[(c[i>>2]|0)+76>>2]|0)lw(c[c[i>>2]>>2]|0,c[(c[i>>2]|0)+72>>2]|0,c[(c[i>>2]|0)+76>>2]|0);j=c[i>>2]|0;if(c[(c[i>>2]|0)+68>>2]|0){mE(c[j+40>>2]|0,(c[i>>2]|0)+84|0,c[(c[i>>2]|0)+68>>2]|0)|0;c[(c[i>>2]|0)+48>>2]=c[(c[i>>2]|0)+68>>2];c[(c[i>>2]|0)+68>>2]=0;c[(c[i>>2]|0)+80>>2]=5;break;}else{c[j+80>>2]=4;I=25;break;}}}while(0);do{if((I|0)==25){I=0;c[z>>2]=wy(c[c[i>>2]>>2]|0)|0;if(!(c[z>>2]|0)){c[(c[i>>2]|0)+80>>2]=0;c[u>>2]=0;break;}if(((c[q>>2]|0)-(c[p>>2]|0)|0)>>>0<(c[z>>2]|0)>>>0){if((c[p>>2]|0)==(c[q>>2]|0)){c[u>>2]=0;break;}else{c[(c[i>>2]|0)+80>>2]=5;I=35;break;}}else{c[A>>2]=xy(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+52>>2]|0)+(c[(c[i>>2]|0)+60>>2]|0)|0,(c[(c[i>>2]|0)+56>>2]|0)-(c[(c[i>>2]|0)+60>>2]|0)|0,c[p>>2]|0,c[z>>2]|0)|0;if(rr(c[A>>2]|0)|0){I=29;break a;}c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0);if(!(c[A>>2]|0))break;c[(c[i>>2]|0)+64>>2]=(c[(c[i>>2]|0)+60>>2]|0)+(c[A>>2]|0);c[(c[i>>2]|0)+80>>2]=6;break;}}}while(0);do{if((I|0)==35){I=0;c[B>>2]=wy(c[c[i>>2]>>2]|0)|0;c[C>>2]=(c[B>>2]|0)-(c[(c[i>>2]|0)+48>>2]|0);if((c[C>>2]|0)>>>0>((c[(c[i>>2]|0)+44>>2]|0)-(c[(c[i>>2]|0)+48>>2]|0)|0)>>>0){I=36;break a;}c[D>>2]=vy((c[(c[i>>2]|0)+40>>2]|0)+(c[(c[i>>2]|0)+48>>2]|0)|0,c[C>>2]|0,c[p>>2]|0,(c[q>>2]|0)-(c[p>>2]|0)|0)|0;c[p>>2]=(c[p>>2]|0)+(c[D>>2]|0);j=(c[i>>2]|0)+48|0;c[j>>2]=(c[j>>2]|0)+(c[D>>2]|0);if((c[D>>2]|0)>>>0<(c[C>>2]|0)>>>0){c[u>>2]=0;break;}c[E>>2]=xy(c[c[i>>2]>>2]|0,(c[(c[i>>2]|0)+52>>2]|0)+(c[(c[i>>2]|0)+60>>2]|0)|0,(c[(c[i>>2]|0)+56>>2]|0)-(c[(c[i>>2]|0)+60>>2]|0)|0,c[(c[i>>2]|0)+40>>2]|0,c[B>>2]|0)|0;if(rr(c[E>>2]|0)|0){I=40;break a;}c[(c[i>>2]|0)+48>>2]=0;j=c[i>>2]|0;if(c[E>>2]|0){c[(c[i>>2]|0)+64>>2]=(c[j+60>>2]|0)+(c[E>>2]|0);c[(c[i>>2]|0)+80>>2]=6;I=44;break;}else{c[j+80>>2]=4;break;}}}while(0);do{if((I|0)==44){I=0;c[F>>2]=(c[(c[i>>2]|0)+64>>2]|0)-(c[(c[i>>2]|0)+60>>2]|0);c[G>>2]=vy(c[s>>2]|0,(c[t>>2]|0)-(c[s>>2]|0)|0,(c[(c[i>>2]|0)+52>>2]|0)+(c[(c[i>>2]|0)+60>>2]|0)|0,c[F>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+(c[G>>2]|0);j=(c[i>>2]|0)+60|0;c[j>>2]=(c[j>>2]|0)+(c[G>>2]|0);if((c[G>>2]|0)!=(c[F>>2]|0)){c[u>>2]=0;break;}c[(c[i>>2]|0)+80>>2]=4;if(((c[(c[i>>2]|0)+60>>2]|0)+131072|0)>>>0>(c[(c[i>>2]|0)+56>>2]|0)>>>0){c[(c[i>>2]|0)+64>>2]=0;c[(c[i>>2]|0)+60>>2]=0;}}}while(0);}switch(I|0){case 4:{c[h>>2]=-62;M=c[h>>2]|0;l=g;return M|0;}case 6:{c[h>>2]=J;M=c[h>>2]|0;l=g;return M|0;}case 8:{mE(K+84+(c[(c[i>>2]|0)+68>>2]|0)|0,c[m>>2]|0,c[c[n>>2]>>2]|0)|0;m=(c[i>>2]|0)+68|0;c[m>>2]=(c[m>>2]|0)+(c[c[n>>2]>>2]|0);c[c[k>>2]>>2]=0;c[(c[i>>2]|0)+80>>2]=2;c[h>>2]=(c[v>>2]|0)-(c[(c[i>>2]|0)+68>>2]|0);M=c[h>>2]|0;l=g;return M|0;}case 11:{c[h>>2]=L;M=c[h>>2]|0;l=g;return M|0;}case 13:{c[c[k>>2]>>2]=0;c[h>>2]=(c[w>>2]|0)-(c[(c[i>>2]|0)+68>>2]|0);M=c[h>>2]|0;l=g;return M|0;}case 16:{c[h>>2]=-64;M=c[h>>2]|0;l=g;return M|0;}case 19:{c[h>>2]=-64;M=c[h>>2]|0;l=g;return M|0;}case 29:{c[h>>2]=c[A>>2];M=c[h>>2]|0;l=g;return M|0;}case 36:{c[h>>2]=-20;M=c[h>>2]|0;l=g;return M|0;}case 40:{c[h>>2]=c[E>>2];M=c[h>>2]|0;l=g;return M|0;}case 48:{c[h>>2]=-1;M=c[h>>2]|0;l=g;return M|0;}case 50:{c[c[n>>2]>>2]=(c[p>>2]|0)-(c[o>>2]|0);c[c[k>>2]>>2]=(c[s>>2]|0)-(c[r>>2]|0);c[H>>2]=wy(c[c[i>>2]>>2]|0)|0;if((c[H>>2]|0)>>>0>3)c[H>>2]=(c[H>>2]|0)+3;c[H>>2]=(c[H>>2]|0)-(c[(c[i>>2]|0)+48>>2]|0);c[h>>2]=c[H>>2];M=c[h>>2]|0;l=g;return M|0;}}return 0;}function vy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=b;c[i>>2]=d;c[j>>2]=e;c[k>>2]=(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0?c[h>>2]|0:c[j>>2]|0;mE(c[g>>2]|0,c[i>>2]|0,c[k>>2]|0)|0;l=f;return c[k>>2]|0;}function wy(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=a;l=b;return c[(c[d>>2]|0)+10268>>2]|0;}function xy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;h=l;l=l+48|0;i=h+40|0;j=h+36|0;k=h+32|0;m=h+28|0;n=h+24|0;o=h+20|0;p=h+16|0;q=h+8|0;r=h+4|0;s=h;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;if((c[o>>2]|0)!=(c[(c[j>>2]|0)+10268>>2]|0)){c[i>>2]=-72;t=c[i>>2]|0;l=h;return t|0;}yy(c[j>>2]|0,c[k>>2]|0);a:do{switch(c[(c[j>>2]|0)+10316>>2]|0){case 0:{if((c[o>>2]|0)!=5){c[i>>2]=-72;t=c[i>>2]|0;l=h;return t|0;}g=mw(c[j>>2]|0,c[n>>2]|0,5)|0;c[(c[j>>2]|0)+10272>>2]=g;g=(rr(c[(c[j>>2]|0)+10272>>2]|0)|0)!=0;f=c[j>>2]|0;if(g){c[i>>2]=c[f+10272>>2];t=c[i>>2]|0;l=h;return t|0;}g=f+141408|0;f=c[n>>2]|0;a[g>>0]=a[f>>0]|0;a[g+1>>0]=a[f+1>>0]|0;a[g+2>>0]=a[f+2>>0]|0;a[g+3>>0]=a[f+3>>0]|0;a[g+4>>0]=a[f+4>>0]|0;if((c[(c[j>>2]|0)+10272>>2]|0)>>>0<=5){c[(c[j>>2]|0)+10268>>2]=0;break a;}c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}case 1:break;case 2:{c[r>>2]=qr(c[n>>2]|0,3,q)|0;if(rr(c[r>>2]|0)|0){c[i>>2]=c[r>>2];t=c[i>>2]|0;l=h;return t|0;}if((c[q>>2]|0)==3){c[(c[j>>2]|0)+10268>>2]=0;c[(c[j>>2]|0)+10316>>2]=0;}else{c[(c[j>>2]|0)+10268>>2]=c[r>>2];c[(c[j>>2]|0)+10312>>2]=c[q>>2];c[(c[j>>2]|0)+10316>>2]=3;}c[i>>2]=0;t=c[i>>2]|0;l=h;return t|0;}case 3:{switch(c[(c[j>>2]|0)+10312>>2]|0){case 0:{c[s>>2]=ow(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;break;}case 1:{c[s>>2]=pw(c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;break;}case 2:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}case 3:{c[s>>2]=0;break;}default:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}}c[(c[j>>2]|0)+10316>>2]=2;c[(c[j>>2]|0)+10268>>2]=3;c[(c[j>>2]|0)+10252>>2]=(c[k>>2]|0)+(c[s>>2]|0);c[i>>2]=c[s>>2];t=c[i>>2]|0;l=h;return t|0;}default:{c[i>>2]=-1;t=c[i>>2]|0;l=h;return t|0;}}}while(0);c[p>>2]=nw(c[j>>2]|0,(c[j>>2]|0)+141408|0,c[(c[j>>2]|0)+10272>>2]|0)|0;if(rr(c[p>>2]|0)|0){c[i>>2]=c[p>>2];t=c[i>>2]|0;l=h;return t|0;}else{c[(c[j>>2]|0)+10268>>2]=3;c[(c[j>>2]|0)+10316>>2]=2;c[i>>2]=0;t=c[i>>2]|0;l=h;return t|0;}return 0;}function yy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)==(c[(c[e>>2]|0)+10252>>2]|0)){l=d;return;}c[(c[e>>2]|0)+10264>>2]=c[(c[e>>2]|0)+10252>>2];c[(c[e>>2]|0)+10260>>2]=(c[f>>2]|0)+(0-((c[(c[e>>2]|0)+10252>>2]|0)-(c[(c[e>>2]|0)+10256>>2]|0)));c[(c[e>>2]|0)+10256>>2]=c[f>>2];c[(c[e>>2]|0)+10252>>2]=c[f>>2];l=d;return;}function zy(){Ay(0);return;}function Ay(a){a=a|0;Wa(10928,20112);La(10944,20117,1,1,0);Sa(10952,19886,1,-128,127);Sa(10968,19891,1,-128,127);Sa(10960,19903,1,0,255);Sa(10976,19917,2,-32768,32767);Sa(10984,19923,2,0,65535);Sa(10992,20122,4,-2147483648,2147483647);Sa(11e3,20126,4,0,-1);Sa(11008,20139,4,-2147483648,2147483647);Sa(11016,20144,4,0,-1);Qa(11024,20168,4);Qa(11032,20280,8);Ua(10624,19495);Ua(10648,16561);Va(10672,4,16594);Pa(9840,16607);Ta(10696,0,16623);Ta(10704,0,16653);Ta(10712,1,16690);Ta(10720,2,16729);Ta(10728,3,16760);Ta(10736,4,16800);Ta(10744,5,16829);Ta(10752,4,16867);Ta(10760,5,16897);Ta(10704,0,16936);Ta(10712,1,16968);Ta(10720,2,17001);Ta(10728,3,17034);Ta(10736,4,17068);Ta(10744,5,17101);Ta(10768,6,17135);Ta(10776,7,17166);Ta(10784,7,17198);return;}function By(a){a=a|0;return Oz(c[a+4>>2]|0)|0;}function Cy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0;b=l;l=l+16|0;d=b;do{if(a>>>0<245){e=a>>>0<11?16:a+11&-8;f=e>>>3;g=c[5418]|0;h=g>>>f;if(h&3|0){i=(h&1^1)+f|0;j=21712+(i<<1<<2)|0;k=j+8|0;m=c[k>>2]|0;n=m+8|0;o=c[n>>2]|0;if((o|0)==(j|0))c[5418]=g&~(1<<i);else{c[o+12>>2]=j;c[k>>2]=o;}o=i<<3;c[m+4>>2]=o|3;i=m+o+4|0;c[i>>2]=c[i>>2]|1;p=n;l=b;return p|0;}n=c[5420]|0;if(e>>>0>n>>>0){if(h|0){i=2<<f;o=h<<f&(i|0-i);i=(o&0-o)+-1|0;o=i>>>12&16;f=i>>>o;i=f>>>5&8;h=f>>>i;f=h>>>2&4;m=h>>>f;h=m>>>1&2;k=m>>>h;m=k>>>1&1;j=(i|o|f|h|m)+(k>>>m)|0;m=21712+(j<<1<<2)|0;k=m+8|0;h=c[k>>2]|0;f=h+8|0;o=c[f>>2]|0;if((o|0)==(m|0)){i=g&~(1<<j);c[5418]=i;q=i;}else{c[o+12>>2]=m;c[k>>2]=o;q=g;}o=j<<3;j=o-e|0;c[h+4>>2]=e|3;k=h+e|0;c[k+4>>2]=j|1;c[h+o>>2]=j;if(n|0){o=c[5423]|0;h=n>>>3;m=21712+(h<<1<<2)|0;i=1<<h;if(!(q&i)){c[5418]=q|i;r=m;s=m+8|0;}else{i=m+8|0;r=c[i>>2]|0;s=i;}c[s>>2]=o;c[r+12>>2]=o;c[o+8>>2]=r;c[o+12>>2]=m;}c[5420]=j;c[5423]=k;p=f;l=b;return p|0;}f=c[5419]|0;if(f){k=(f&0-f)+-1|0;j=k>>>12&16;m=k>>>j;k=m>>>5&8;o=m>>>k;m=o>>>2&4;i=o>>>m;o=i>>>1&2;h=i>>>o;i=h>>>1&1;t=c[21976+((k|j|m|o|i)+(h>>>i)<<2)>>2]|0;i=t;h=t;o=(c[t+4>>2]&-8)-e|0;while(1){t=c[i+16>>2]|0;if(!t){m=c[i+20>>2]|0;if(!m)break;else u=m;}else u=t;t=(c[u+4>>2]&-8)-e|0;m=t>>>0<o>>>0;i=u;h=m?u:h;o=m?t:o;}i=h+e|0;if(i>>>0>h>>>0){t=c[h+24>>2]|0;m=c[h+12>>2]|0;do{if((m|0)==(h|0)){j=h+20|0;k=c[j>>2]|0;if(!k){v=h+16|0;w=c[v>>2]|0;if(!w){x=0;break;}else{y=w;z=v;}}else{y=k;z=j;}j=y;k=z;while(1){v=j+20|0;w=c[v>>2]|0;if(!w){A=j+16|0;B=c[A>>2]|0;if(!B)break;else{C=B;D=A;}}else{C=w;D=v;}j=C;k=D;}c[k>>2]=0;x=j;}else{v=c[h+8>>2]|0;c[v+12>>2]=m;c[m+8>>2]=v;x=m;}}while(0);do{if(t|0){m=c[h+28>>2]|0;v=21976+(m<<2)|0;if((h|0)==(c[v>>2]|0)){c[v>>2]=x;if(!x){c[5419]=f&~(1<<m);break;}}else{m=t+16|0;c[((c[m>>2]|0)==(h|0)?m:t+20|0)>>2]=x;if(!x)break;}c[x+24>>2]=t;m=c[h+16>>2]|0;if(m|0){c[x+16>>2]=m;c[m+24>>2]=x;}m=c[h+20>>2]|0;if(m|0){c[x+20>>2]=m;c[m+24>>2]=x;}}}while(0);if(o>>>0<16){t=o+e|0;c[h+4>>2]=t|3;f=h+t+4|0;c[f>>2]=c[f>>2]|1;}else{c[h+4>>2]=e|3;c[i+4>>2]=o|1;c[i+o>>2]=o;if(n|0){f=c[5423]|0;t=n>>>3;m=21712+(t<<1<<2)|0;v=1<<t;if(!(v&g)){c[5418]=v|g;E=m;F=m+8|0;}else{v=m+8|0;E=c[v>>2]|0;F=v;}c[F>>2]=f;c[E+12>>2]=f;c[f+8>>2]=E;c[f+12>>2]=m;}c[5420]=o;c[5423]=i;}p=h+8|0;l=b;return p|0;}else G=e;}else G=e;}else G=e;}else if(a>>>0<=4294967231){m=a+11|0;f=m&-8;v=c[5419]|0;if(v){t=0-f|0;w=m>>>8;if(w){if(f>>>0>16777215)H=31;else{m=(w+1048320|0)>>>16&8;A=w<<m;w=(A+520192|0)>>>16&4;B=A<<w;A=(B+245760|0)>>>16&2;I=14-(w|m|A)+(B<<A>>>15)|0;H=f>>>(I+7|0)&1|I<<1;}}else H=0;I=c[21976+(H<<2)>>2]|0;a:do{if(!I){J=0;K=0;L=t;M=61;}else{A=0;B=t;m=I;w=f<<((H|0)==31?0:25-(H>>>1)|0);N=0;while(1){O=(c[m+4>>2]&-8)-f|0;if(O>>>0<B>>>0){if(!O){P=m;Q=0;R=m;M=65;break a;}else{S=m;T=O;}}else{S=A;T=B;}O=c[m+20>>2]|0;m=c[m+16+(w>>>31<<2)>>2]|0;U=(O|0)==0|(O|0)==(m|0)?N:O;if(!m){J=U;K=S;L=T;M=61;break;}else{A=S;B=T;w=w<<1;N=U;}}}}while(0);if((M|0)==61){if((J|0)==0&(K|0)==0){I=2<<H;t=(I|0-I)&v;if(!t){G=f;break;}I=(t&0-t)+-1|0;t=I>>>12&16;e=I>>>t;I=e>>>5&8;h=e>>>I;e=h>>>2&4;i=h>>>e;h=i>>>1&2;o=i>>>h;i=o>>>1&1;V=0;W=c[21976+((I|t|e|h|i)+(o>>>i)<<2)>>2]|0;}else{V=K;W=J;}if(!W){X=V;Y=L;}else{P=V;Q=L;R=W;M=65;}}if((M|0)==65){i=P;o=Q;h=R;while(1){e=(c[h+4>>2]&-8)-f|0;t=e>>>0<o>>>0;I=t?e:o;e=t?h:i;t=c[h+16>>2]|0;if(!t)Z=c[h+20>>2]|0;else Z=t;if(!Z){X=e;Y=I;break;}else{i=e;o=I;h=Z;}}}if(((X|0)!=0?Y>>>0<((c[5420]|0)-f|0)>>>0:0)?(h=X+f|0,h>>>0>X>>>0):0){o=c[X+24>>2]|0;i=c[X+12>>2]|0;do{if((i|0)==(X|0)){I=X+20|0;e=c[I>>2]|0;if(!e){t=X+16|0;g=c[t>>2]|0;if(!g){_=0;break;}else{$=g;aa=t;}}else{$=e;aa=I;}I=$;e=aa;while(1){t=I+20|0;g=c[t>>2]|0;if(!g){n=I+16|0;N=c[n>>2]|0;if(!N)break;else{ba=N;ca=n;}}else{ba=g;ca=t;}I=ba;e=ca;}c[e>>2]=0;_=I;}else{t=c[X+8>>2]|0;c[t+12>>2]=i;c[i+8>>2]=t;_=i;}}while(0);do{if(o){i=c[X+28>>2]|0;t=21976+(i<<2)|0;if((X|0)==(c[t>>2]|0)){c[t>>2]=_;if(!_){t=v&~(1<<i);c[5419]=t;da=t;break;}}else{t=o+16|0;c[((c[t>>2]|0)==(X|0)?t:o+20|0)>>2]=_;if(!_){da=v;break;}}c[_+24>>2]=o;t=c[X+16>>2]|0;if(t|0){c[_+16>>2]=t;c[t+24>>2]=_;}t=c[X+20>>2]|0;if(t){c[_+20>>2]=t;c[t+24>>2]=_;da=v;}else da=v;}else da=v;}while(0);b:do{if(Y>>>0<16){v=Y+f|0;c[X+4>>2]=v|3;o=X+v+4|0;c[o>>2]=c[o>>2]|1;}else{c[X+4>>2]=f|3;c[h+4>>2]=Y|1;c[h+Y>>2]=Y;o=Y>>>3;if(Y>>>0<256){v=21712+(o<<1<<2)|0;t=c[5418]|0;i=1<<o;if(!(t&i)){c[5418]=t|i;ea=v;fa=v+8|0;}else{i=v+8|0;ea=c[i>>2]|0;fa=i;}c[fa>>2]=h;c[ea+12>>2]=h;c[h+8>>2]=ea;c[h+12>>2]=v;break;}v=Y>>>8;if(v){if(Y>>>0>16777215)ga=31;else{i=(v+1048320|0)>>>16&8;t=v<<i;v=(t+520192|0)>>>16&4;o=t<<v;t=(o+245760|0)>>>16&2;g=14-(v|i|t)+(o<<t>>>15)|0;ga=Y>>>(g+7|0)&1|g<<1;}}else ga=0;g=21976+(ga<<2)|0;c[h+28>>2]=ga;t=h+16|0;c[t+4>>2]=0;c[t>>2]=0;t=1<<ga;if(!(da&t)){c[5419]=da|t;c[g>>2]=h;c[h+24>>2]=g;c[h+12>>2]=h;c[h+8>>2]=h;break;}t=c[g>>2]|0;c:do{if((c[t+4>>2]&-8|0)==(Y|0))ha=t;else{g=Y<<((ga|0)==31?0:25-(ga>>>1)|0);o=t;while(1){ia=o+16+(g>>>31<<2)|0;i=c[ia>>2]|0;if(!i)break;if((c[i+4>>2]&-8|0)==(Y|0)){ha=i;break c;}else{g=g<<1;o=i;}}c[ia>>2]=h;c[h+24>>2]=o;c[h+12>>2]=h;c[h+8>>2]=h;break b;}}while(0);t=ha+8|0;I=c[t>>2]|0;c[I+12>>2]=h;c[t>>2]=h;c[h+8>>2]=I;c[h+12>>2]=ha;c[h+24>>2]=0;}}while(0);p=X+8|0;l=b;return p|0;}else G=f;}else G=f;}else G=-1;}while(0);X=c[5420]|0;if(X>>>0>=G>>>0){ha=X-G|0;ia=c[5423]|0;if(ha>>>0>15){Y=ia+G|0;c[5423]=Y;c[5420]=ha;c[Y+4>>2]=ha|1;c[ia+X>>2]=ha;c[ia+4>>2]=G|3;}else{c[5420]=0;c[5423]=0;c[ia+4>>2]=X|3;ha=ia+X+4|0;c[ha>>2]=c[ha>>2]|1;}p=ia+8|0;l=b;return p|0;}ia=c[5421]|0;if(ia>>>0>G>>>0){ha=ia-G|0;c[5421]=ha;X=c[5424]|0;Y=X+G|0;c[5424]=Y;c[Y+4>>2]=ha|1;c[X+4>>2]=G|3;p=X+8|0;l=b;return p|0;}if(!(c[5536]|0)){c[5538]=4096;c[5537]=4096;c[5539]=-1;c[5540]=-1;c[5541]=0;c[5529]=0;c[5536]=d&-16^1431655768;ja=4096;}else ja=c[5538]|0;d=G+48|0;X=G+47|0;ha=ja+X|0;Y=0-ja|0;ja=ha&Y;if(ja>>>0<=G>>>0){p=0;l=b;return p|0;}ga=c[5528]|0;if(ga|0?(da=c[5526]|0,ea=da+ja|0,ea>>>0<=da>>>0|ea>>>0>ga>>>0):0){p=0;l=b;return p|0;}d:do{if(!(c[5529]&4)){ga=c[5424]|0;e:do{if(ga){ea=22120;while(1){da=c[ea>>2]|0;if(da>>>0<=ga>>>0?(da+(c[ea+4>>2]|0)|0)>>>0>ga>>>0:0)break;da=c[ea+8>>2]|0;if(!da){M=128;break e;}else ea=da;}da=ha-ia&Y;if(da>>>0<2147483647){fa=pE(da|0)|0;if((fa|0)==((c[ea>>2]|0)+(c[ea+4>>2]|0)|0)){if((fa|0)==(-1|0))ka=da;else{la=da;ma=fa;M=145;break d;}}else{na=fa;oa=da;M=136;}}else ka=0;}else M=128;}while(0);do{if((M|0)==128){ga=pE(0)|0;if((ga|0)!=(-1|0)?(f=ga,da=c[5537]|0,fa=da+-1|0,_=((fa&f|0)==0?0:(fa+f&0-da)-f|0)+ja|0,f=c[5526]|0,da=_+f|0,_>>>0>G>>>0&_>>>0<2147483647):0){fa=c[5528]|0;if(fa|0?da>>>0<=f>>>0|da>>>0>fa>>>0:0){ka=0;break;}fa=pE(_|0)|0;if((fa|0)==(ga|0)){la=_;ma=ga;M=145;break d;}else{na=fa;oa=_;M=136;}}else ka=0;}}while(0);do{if((M|0)==136){_=0-oa|0;if(!(d>>>0>oa>>>0&(oa>>>0<2147483647&(na|0)!=(-1|0))))if((na|0)==(-1|0)){ka=0;break;}else{la=oa;ma=na;M=145;break d;}fa=c[5538]|0;ga=X-oa+fa&0-fa;if(ga>>>0>=2147483647){la=oa;ma=na;M=145;break d;}if((pE(ga|0)|0)==(-1|0)){pE(_|0)|0;ka=0;break;}else{la=ga+oa|0;ma=na;M=145;break d;}}}while(0);c[5529]=c[5529]|4;pa=ka;M=143;}else{pa=0;M=143;}}while(0);if(((M|0)==143?ja>>>0<2147483647:0)?(ka=pE(ja|0)|0,ja=pE(0)|0,na=ja-ka|0,oa=na>>>0>(G+40|0)>>>0,!((ka|0)==(-1|0)|oa^1|ka>>>0<ja>>>0&((ka|0)!=(-1|0)&(ja|0)!=(-1|0))^1)):0){la=oa?na:pa;ma=ka;M=145;}if((M|0)==145){ka=(c[5526]|0)+la|0;c[5526]=ka;if(ka>>>0>(c[5527]|0)>>>0)c[5527]=ka;ka=c[5424]|0;f:do{if(ka){pa=22120;while(1){qa=c[pa>>2]|0;ra=c[pa+4>>2]|0;if((ma|0)==(qa+ra|0)){M=154;break;}na=c[pa+8>>2]|0;if(!na)break;else pa=na;}if(((M|0)==154?(na=pa+4|0,(c[pa+12>>2]&8|0)==0):0)?ma>>>0>ka>>>0&qa>>>0<=ka>>>0:0){c[na>>2]=ra+la;na=(c[5421]|0)+la|0;oa=ka+8|0;ja=(oa&7|0)==0?0:0-oa&7;oa=ka+ja|0;X=na-ja|0;c[5424]=oa;c[5421]=X;c[oa+4>>2]=X|1;c[ka+na+4>>2]=40;c[5425]=c[5540];break;}if(ma>>>0<(c[5422]|0)>>>0)c[5422]=ma;na=ma+la|0;X=22120;while(1){if((c[X>>2]|0)==(na|0)){M=162;break;}oa=c[X+8>>2]|0;if(!oa)break;else X=oa;}if((M|0)==162?(c[X+12>>2]&8|0)==0:0){c[X>>2]=ma;pa=X+4|0;c[pa>>2]=(c[pa>>2]|0)+la;pa=ma+8|0;oa=ma+((pa&7|0)==0?0:0-pa&7)|0;pa=na+8|0;ja=na+((pa&7|0)==0?0:0-pa&7)|0;pa=oa+G|0;d=ja-oa-G|0;c[oa+4>>2]=G|3;g:do{if((ka|0)==(ja|0)){Y=(c[5421]|0)+d|0;c[5421]=Y;c[5424]=pa;c[pa+4>>2]=Y|1;}else{if((c[5423]|0)==(ja|0)){Y=(c[5420]|0)+d|0;c[5420]=Y;c[5423]=pa;c[pa+4>>2]=Y|1;c[pa+Y>>2]=Y;break;}Y=c[ja+4>>2]|0;if((Y&3|0)==1){ia=Y&-8;ha=Y>>>3;h:do{if(Y>>>0<256){ga=c[ja+8>>2]|0;_=c[ja+12>>2]|0;if((_|0)==(ga|0)){c[5418]=c[5418]&~(1<<ha);break;}else{c[ga+12>>2]=_;c[_+8>>2]=ga;break;}}else{ga=c[ja+24>>2]|0;_=c[ja+12>>2]|0;do{if((_|0)==(ja|0)){fa=ja+16|0;da=fa+4|0;f=c[da>>2]|0;if(!f){ca=c[fa>>2]|0;if(!ca){sa=0;break;}else{ta=ca;ua=fa;}}else{ta=f;ua=da;}da=ta;f=ua;while(1){fa=da+20|0;ca=c[fa>>2]|0;if(!ca){ba=da+16|0;aa=c[ba>>2]|0;if(!aa)break;else{va=aa;wa=ba;}}else{va=ca;wa=fa;}da=va;f=wa;}c[f>>2]=0;sa=da;}else{fa=c[ja+8>>2]|0;c[fa+12>>2]=_;c[_+8>>2]=fa;sa=_;}}while(0);if(!ga)break;_=c[ja+28>>2]|0;o=21976+(_<<2)|0;do{if((c[o>>2]|0)!=(ja|0)){fa=ga+16|0;c[((c[fa>>2]|0)==(ja|0)?fa:ga+20|0)>>2]=sa;if(!sa)break h;}else{c[o>>2]=sa;if(sa|0)break;c[5419]=c[5419]&~(1<<_);break h;}}while(0);c[sa+24>>2]=ga;_=ja+16|0;o=c[_>>2]|0;if(o|0){c[sa+16>>2]=o;c[o+24>>2]=sa;}o=c[_+4>>2]|0;if(!o)break;c[sa+20>>2]=o;c[o+24>>2]=sa;}}while(0);xa=ja+ia|0;ya=ia+d|0;}else{xa=ja;ya=d;}ha=xa+4|0;c[ha>>2]=c[ha>>2]&-2;c[pa+4>>2]=ya|1;c[pa+ya>>2]=ya;ha=ya>>>3;if(ya>>>0<256){Y=21712+(ha<<1<<2)|0;ea=c[5418]|0;o=1<<ha;if(!(ea&o)){c[5418]=ea|o;za=Y;Aa=Y+8|0;}else{o=Y+8|0;za=c[o>>2]|0;Aa=o;}c[Aa>>2]=pa;c[za+12>>2]=pa;c[pa+8>>2]=za;c[pa+12>>2]=Y;break;}Y=ya>>>8;do{if(!Y)Ba=0;else{if(ya>>>0>16777215){Ba=31;break;}o=(Y+1048320|0)>>>16&8;ea=Y<<o;ha=(ea+520192|0)>>>16&4;_=ea<<ha;ea=(_+245760|0)>>>16&2;fa=14-(ha|o|ea)+(_<<ea>>>15)|0;Ba=ya>>>(fa+7|0)&1|fa<<1;}}while(0);Y=21976+(Ba<<2)|0;c[pa+28>>2]=Ba;ia=pa+16|0;c[ia+4>>2]=0;c[ia>>2]=0;ia=c[5419]|0;fa=1<<Ba;if(!(ia&fa)){c[5419]=ia|fa;c[Y>>2]=pa;c[pa+24>>2]=Y;c[pa+12>>2]=pa;c[pa+8>>2]=pa;break;}fa=c[Y>>2]|0;i:do{if((c[fa+4>>2]&-8|0)==(ya|0))Ca=fa;else{Y=ya<<((Ba|0)==31?0:25-(Ba>>>1)|0);ia=fa;while(1){Da=ia+16+(Y>>>31<<2)|0;ea=c[Da>>2]|0;if(!ea)break;if((c[ea+4>>2]&-8|0)==(ya|0)){Ca=ea;break i;}else{Y=Y<<1;ia=ea;}}c[Da>>2]=pa;c[pa+24>>2]=ia;c[pa+12>>2]=pa;c[pa+8>>2]=pa;break g;}}while(0);fa=Ca+8|0;Y=c[fa>>2]|0;c[Y+12>>2]=pa;c[fa>>2]=pa;c[pa+8>>2]=Y;c[pa+12>>2]=Ca;c[pa+24>>2]=0;}}while(0);p=oa+8|0;l=b;return p|0;}pa=22120;while(1){d=c[pa>>2]|0;if(d>>>0<=ka>>>0?(Ea=d+(c[pa+4>>2]|0)|0,Ea>>>0>ka>>>0):0)break;pa=c[pa+8>>2]|0;}pa=Ea+-47|0;oa=pa+8|0;d=pa+((oa&7|0)==0?0:0-oa&7)|0;oa=ka+16|0;pa=d>>>0<oa>>>0?ka:d;d=pa+8|0;ja=la+-40|0;na=ma+8|0;X=(na&7|0)==0?0:0-na&7;na=ma+X|0;Y=ja-X|0;c[5424]=na;c[5421]=Y;c[na+4>>2]=Y|1;c[ma+ja+4>>2]=40;c[5425]=c[5540];ja=pa+4|0;c[ja>>2]=27;c[d>>2]=c[5530];c[d+4>>2]=c[5531];c[d+8>>2]=c[5532];c[d+12>>2]=c[5533];c[5530]=ma;c[5531]=la;c[5533]=0;c[5532]=d;d=pa+24|0;do{Y=d;d=d+4|0;c[d>>2]=7;}while((Y+8|0)>>>0<Ea>>>0);if((pa|0)!=(ka|0)){d=pa-ka|0;c[ja>>2]=c[ja>>2]&-2;c[ka+4>>2]=d|1;c[pa>>2]=d;Y=d>>>3;if(d>>>0<256){na=21712+(Y<<1<<2)|0;X=c[5418]|0;fa=1<<Y;if(!(X&fa)){c[5418]=X|fa;Fa=na;Ga=na+8|0;}else{fa=na+8|0;Fa=c[fa>>2]|0;Ga=fa;}c[Ga>>2]=ka;c[Fa+12>>2]=ka;c[ka+8>>2]=Fa;c[ka+12>>2]=na;break;}na=d>>>8;if(na){if(d>>>0>16777215)Ha=31;else{fa=(na+1048320|0)>>>16&8;X=na<<fa;na=(X+520192|0)>>>16&4;Y=X<<na;X=(Y+245760|0)>>>16&2;ga=14-(na|fa|X)+(Y<<X>>>15)|0;Ha=d>>>(ga+7|0)&1|ga<<1;}}else Ha=0;ga=21976+(Ha<<2)|0;c[ka+28>>2]=Ha;c[ka+20>>2]=0;c[oa>>2]=0;X=c[5419]|0;Y=1<<Ha;if(!(X&Y)){c[5419]=X|Y;c[ga>>2]=ka;c[ka+24>>2]=ga;c[ka+12>>2]=ka;c[ka+8>>2]=ka;break;}Y=c[ga>>2]|0;j:do{if((c[Y+4>>2]&-8|0)==(d|0))Ia=Y;else{ga=d<<((Ha|0)==31?0:25-(Ha>>>1)|0);X=Y;while(1){Ja=X+16+(ga>>>31<<2)|0;fa=c[Ja>>2]|0;if(!fa)break;if((c[fa+4>>2]&-8|0)==(d|0)){Ia=fa;break j;}else{ga=ga<<1;X=fa;}}c[Ja>>2]=ka;c[ka+24>>2]=X;c[ka+12>>2]=ka;c[ka+8>>2]=ka;break f;}}while(0);d=Ia+8|0;Y=c[d>>2]|0;c[Y+12>>2]=ka;c[d>>2]=ka;c[ka+8>>2]=Y;c[ka+12>>2]=Ia;c[ka+24>>2]=0;}}else{Y=c[5422]|0;if((Y|0)==0|ma>>>0<Y>>>0)c[5422]=ma;c[5530]=ma;c[5531]=la;c[5533]=0;c[5427]=c[5536];c[5426]=-1;c[5431]=21712;c[5430]=21712;c[5433]=21720;c[5432]=21720;c[5435]=21728;c[5434]=21728;c[5437]=21736;c[5436]=21736;c[5439]=21744;c[5438]=21744;c[5441]=21752;c[5440]=21752;c[5443]=21760;c[5442]=21760;c[5445]=21768;c[5444]=21768;c[5447]=21776;c[5446]=21776;c[5449]=21784;c[5448]=21784;c[5451]=21792;c[5450]=21792;c[5453]=21800;c[5452]=21800;c[5455]=21808;c[5454]=21808;c[5457]=21816;c[5456]=21816;c[5459]=21824;c[5458]=21824;c[5461]=21832;c[5460]=21832;c[5463]=21840;c[5462]=21840;c[5465]=21848;c[5464]=21848;c[5467]=21856;c[5466]=21856;c[5469]=21864;c[5468]=21864;c[5471]=21872;c[5470]=21872;c[5473]=21880;c[5472]=21880;c[5475]=21888;c[5474]=21888;c[5477]=21896;c[5476]=21896;c[5479]=21904;c[5478]=21904;c[5481]=21912;c[5480]=21912;c[5483]=21920;c[5482]=21920;c[5485]=21928;c[5484]=21928;c[5487]=21936;c[5486]=21936;c[5489]=21944;c[5488]=21944;c[5491]=21952;c[5490]=21952;c[5493]=21960;c[5492]=21960;Y=la+-40|0;d=ma+8|0;oa=(d&7|0)==0?0:0-d&7;d=ma+oa|0;pa=Y-oa|0;c[5424]=d;c[5421]=pa;c[d+4>>2]=pa|1;c[ma+Y+4>>2]=40;c[5425]=c[5540];}}while(0);ma=c[5421]|0;if(ma>>>0>G>>>0){la=ma-G|0;c[5421]=la;ma=c[5424]|0;ka=ma+G|0;c[5424]=ka;c[ka+4>>2]=la|1;c[ma+4>>2]=G|3;p=ma+8|0;l=b;return p|0;}}c[(My()|0)>>2]=12;p=0;l=b;return p|0;}function Dy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;if(!a)return;b=a+-8|0;d=c[5422]|0;e=c[a+-4>>2]|0;a=e&-8;f=b+a|0;do{if(!(e&1)){g=c[b>>2]|0;if(!(e&3))return;h=b+(0-g)|0;i=g+a|0;if(h>>>0<d>>>0)return;if((c[5423]|0)==(h|0)){j=f+4|0;k=c[j>>2]|0;if((k&3|0)!=3){l=h;m=i;n=h;break;}c[5420]=i;c[j>>2]=k&-2;c[h+4>>2]=i|1;c[h+i>>2]=i;return;}k=g>>>3;if(g>>>0<256){g=c[h+8>>2]|0;j=c[h+12>>2]|0;if((j|0)==(g|0)){c[5418]=c[5418]&~(1<<k);l=h;m=i;n=h;break;}else{c[g+12>>2]=j;c[j+8>>2]=g;l=h;m=i;n=h;break;}}g=c[h+24>>2]|0;j=c[h+12>>2]|0;do{if((j|0)==(h|0)){k=h+16|0;o=k+4|0;p=c[o>>2]|0;if(!p){q=c[k>>2]|0;if(!q){r=0;break;}else{s=q;t=k;}}else{s=p;t=o;}o=s;p=t;while(1){k=o+20|0;q=c[k>>2]|0;if(!q){u=o+16|0;v=c[u>>2]|0;if(!v)break;else{w=v;x=u;}}else{w=q;x=k;}o=w;p=x;}c[p>>2]=0;r=o;}else{k=c[h+8>>2]|0;c[k+12>>2]=j;c[j+8>>2]=k;r=j;}}while(0);if(g){j=c[h+28>>2]|0;k=21976+(j<<2)|0;if((c[k>>2]|0)==(h|0)){c[k>>2]=r;if(!r){c[5419]=c[5419]&~(1<<j);l=h;m=i;n=h;break;}}else{j=g+16|0;c[((c[j>>2]|0)==(h|0)?j:g+20|0)>>2]=r;if(!r){l=h;m=i;n=h;break;}}c[r+24>>2]=g;j=h+16|0;k=c[j>>2]|0;if(k|0){c[r+16>>2]=k;c[k+24>>2]=r;}k=c[j+4>>2]|0;if(k){c[r+20>>2]=k;c[k+24>>2]=r;l=h;m=i;n=h;}else{l=h;m=i;n=h;}}else{l=h;m=i;n=h;}}else{l=b;m=a;n=b;}}while(0);if(n>>>0>=f>>>0)return;b=f+4|0;a=c[b>>2]|0;if(!(a&1))return;if(!(a&2)){if((c[5424]|0)==(f|0)){r=(c[5421]|0)+m|0;c[5421]=r;c[5424]=l;c[l+4>>2]=r|1;if((l|0)!=(c[5423]|0))return;c[5423]=0;c[5420]=0;return;}if((c[5423]|0)==(f|0)){r=(c[5420]|0)+m|0;c[5420]=r;c[5423]=n;c[l+4>>2]=r|1;c[n+r>>2]=r;return;}r=(a&-8)+m|0;x=a>>>3;do{if(a>>>0<256){w=c[f+8>>2]|0;t=c[f+12>>2]|0;if((t|0)==(w|0)){c[5418]=c[5418]&~(1<<x);break;}else{c[w+12>>2]=t;c[t+8>>2]=w;break;}}else{w=c[f+24>>2]|0;t=c[f+12>>2]|0;do{if((t|0)==(f|0)){s=f+16|0;d=s+4|0;e=c[d>>2]|0;if(!e){k=c[s>>2]|0;if(!k){y=0;break;}else{z=k;A=s;}}else{z=e;A=d;}d=z;e=A;while(1){s=d+20|0;k=c[s>>2]|0;if(!k){j=d+16|0;q=c[j>>2]|0;if(!q)break;else{B=q;C=j;}}else{B=k;C=s;}d=B;e=C;}c[e>>2]=0;y=d;}else{o=c[f+8>>2]|0;c[o+12>>2]=t;c[t+8>>2]=o;y=t;}}while(0);if(w|0){t=c[f+28>>2]|0;h=21976+(t<<2)|0;if((c[h>>2]|0)==(f|0)){c[h>>2]=y;if(!y){c[5419]=c[5419]&~(1<<t);break;}}else{t=w+16|0;c[((c[t>>2]|0)==(f|0)?t:w+20|0)>>2]=y;if(!y)break;}c[y+24>>2]=w;t=f+16|0;h=c[t>>2]|0;if(h|0){c[y+16>>2]=h;c[h+24>>2]=y;}h=c[t+4>>2]|0;if(h|0){c[y+20>>2]=h;c[h+24>>2]=y;}}}}while(0);c[l+4>>2]=r|1;c[n+r>>2]=r;if((l|0)==(c[5423]|0)){c[5420]=r;return;}else D=r;}else{c[b>>2]=a&-2;c[l+4>>2]=m|1;c[n+m>>2]=m;D=m;}m=D>>>3;if(D>>>0<256){n=21712+(m<<1<<2)|0;a=c[5418]|0;b=1<<m;if(!(a&b)){c[5418]=a|b;E=n;F=n+8|0;}else{b=n+8|0;E=c[b>>2]|0;F=b;}c[F>>2]=l;c[E+12>>2]=l;c[l+8>>2]=E;c[l+12>>2]=n;return;}n=D>>>8;if(n){if(D>>>0>16777215)G=31;else{E=(n+1048320|0)>>>16&8;F=n<<E;n=(F+520192|0)>>>16&4;b=F<<n;F=(b+245760|0)>>>16&2;a=14-(n|E|F)+(b<<F>>>15)|0;G=D>>>(a+7|0)&1|a<<1;}}else G=0;a=21976+(G<<2)|0;c[l+28>>2]=G;c[l+20>>2]=0;c[l+16>>2]=0;F=c[5419]|0;b=1<<G;a:do{if(!(F&b)){c[5419]=F|b;c[a>>2]=l;c[l+24>>2]=a;c[l+12>>2]=l;c[l+8>>2]=l;}else{E=c[a>>2]|0;b:do{if((c[E+4>>2]&-8|0)==(D|0))H=E;else{n=D<<((G|0)==31?0:25-(G>>>1)|0);m=E;while(1){I=m+16+(n>>>31<<2)|0;r=c[I>>2]|0;if(!r)break;if((c[r+4>>2]&-8|0)==(D|0)){H=r;break b;}else{n=n<<1;m=r;}}c[I>>2]=l;c[l+24>>2]=m;c[l+12>>2]=l;c[l+8>>2]=l;break a;}}while(0);E=H+8|0;w=c[E>>2]|0;c[w+12>>2]=l;c[E>>2]=l;c[l+8>>2]=w;c[l+12>>2]=H;c[l+24>>2]=0;}}while(0);l=(c[5426]|0)+-1|0;c[5426]=l;if(l|0)return;l=22128;while(1){H=c[l>>2]|0;if(!H)break;else l=H+8|0;}c[5426]=-1;return;}function Ey(a,b){a=a|0;b=b|0;var d=0,e=0;if(a){d=N(b,a)|0;if((b|a)>>>0>65535)e=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1;else e=d;}else e=0;d=Cy(e)|0;if(!d)return d|0;if(!(c[d+-4>>2]&3))return d|0;oE(d|0,0,e|0)|0;return d|0;}function Fy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!a){d=Cy(b)|0;return d|0;}if(b>>>0>4294967231){c[(My()|0)>>2]=12;d=0;return d|0;}e=Gy(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(e|0){d=e+8|0;return d|0;}e=Cy(b)|0;if(!e){d=0;return d|0;}f=c[a+-4>>2]|0;g=(f&-8)-((f&3|0)==0?8:4)|0;mE(e|0,a|0,(g>>>0<b>>>0?g:b)|0)|0;Dy(a);d=e;return d|0;}function Gy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;d=a+4|0;e=c[d>>2]|0;f=e&-8;g=a+f|0;if(!(e&3)){if(b>>>0<256){h=0;return h|0;}if(f>>>0>=(b+4|0)>>>0?(f-b|0)>>>0<=c[5538]<<1>>>0:0){h=a;return h|0;}h=0;return h|0;}if(f>>>0>=b>>>0){i=f-b|0;if(i>>>0<=15){h=a;return h|0;}j=a+b|0;c[d>>2]=e&1|b|2;c[j+4>>2]=i|3;k=g+4|0;c[k>>2]=c[k>>2]|1;Hy(j,i);h=a;return h|0;}if((c[5424]|0)==(g|0)){i=(c[5421]|0)+f|0;j=i-b|0;k=a+b|0;if(i>>>0<=b>>>0){h=0;return h|0;}c[d>>2]=e&1|b|2;c[k+4>>2]=j|1;c[5424]=k;c[5421]=j;h=a;return h|0;}if((c[5423]|0)==(g|0)){j=(c[5420]|0)+f|0;if(j>>>0<b>>>0){h=0;return h|0;}k=j-b|0;if(k>>>0>15){i=a+b|0;l=a+j|0;c[d>>2]=e&1|b|2;c[i+4>>2]=k|1;c[l>>2]=k;m=l+4|0;c[m>>2]=c[m>>2]&-2;n=i;o=k;}else{c[d>>2]=e&1|j|2;k=a+j+4|0;c[k>>2]=c[k>>2]|1;n=0;o=0;}c[5420]=o;c[5423]=n;h=a;return h|0;}n=c[g+4>>2]|0;if(n&2|0){h=0;return h|0;}o=(n&-8)+f|0;if(o>>>0<b>>>0){h=0;return h|0;}f=o-b|0;k=n>>>3;do{if(n>>>0<256){j=c[g+8>>2]|0;i=c[g+12>>2]|0;if((i|0)==(j|0)){c[5418]=c[5418]&~(1<<k);break;}else{c[j+12>>2]=i;c[i+8>>2]=j;break;}}else{j=c[g+24>>2]|0;i=c[g+12>>2]|0;do{if((i|0)==(g|0)){m=g+16|0;l=m+4|0;p=c[l>>2]|0;if(!p){q=c[m>>2]|0;if(!q){r=0;break;}else{s=q;t=m;}}else{s=p;t=l;}l=s;p=t;while(1){m=l+20|0;q=c[m>>2]|0;if(!q){u=l+16|0;v=c[u>>2]|0;if(!v)break;else{w=v;x=u;}}else{w=q;x=m;}l=w;p=x;}c[p>>2]=0;r=l;}else{m=c[g+8>>2]|0;c[m+12>>2]=i;c[i+8>>2]=m;r=i;}}while(0);if(j|0){i=c[g+28>>2]|0;m=21976+(i<<2)|0;if((c[m>>2]|0)==(g|0)){c[m>>2]=r;if(!r){c[5419]=c[5419]&~(1<<i);break;}}else{i=j+16|0;c[((c[i>>2]|0)==(g|0)?i:j+20|0)>>2]=r;if(!r)break;}c[r+24>>2]=j;i=g+16|0;m=c[i>>2]|0;if(m|0){c[r+16>>2]=m;c[m+24>>2]=r;}m=c[i+4>>2]|0;if(m|0){c[r+20>>2]=m;c[m+24>>2]=r;}}}}while(0);if(f>>>0<16){c[d>>2]=e&1|o|2;r=a+o+4|0;c[r>>2]=c[r>>2]|1;h=a;return h|0;}else{r=a+b|0;c[d>>2]=e&1|b|2;c[r+4>>2]=f|3;b=a+o+4|0;c[b>>2]=c[b>>2]|1;Hy(r,f);h=a;return h|0;}return 0;}function Hy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;d=a+b|0;e=c[a+4>>2]|0;do{if(!(e&1)){f=c[a>>2]|0;if(!(e&3))return;g=a+(0-f)|0;h=f+b|0;if((c[5423]|0)==(g|0)){i=d+4|0;j=c[i>>2]|0;if((j&3|0)!=3){k=g;l=h;break;}c[5420]=h;c[i>>2]=j&-2;c[g+4>>2]=h|1;c[d>>2]=h;return;}j=f>>>3;if(f>>>0<256){f=c[g+8>>2]|0;i=c[g+12>>2]|0;if((i|0)==(f|0)){c[5418]=c[5418]&~(1<<j);k=g;l=h;break;}else{c[f+12>>2]=i;c[i+8>>2]=f;k=g;l=h;break;}}f=c[g+24>>2]|0;i=c[g+12>>2]|0;do{if((i|0)==(g|0)){j=g+16|0;m=j+4|0;n=c[m>>2]|0;if(!n){o=c[j>>2]|0;if(!o){p=0;break;}else{q=o;r=j;}}else{q=n;r=m;}m=q;n=r;while(1){j=m+20|0;o=c[j>>2]|0;if(!o){s=m+16|0;t=c[s>>2]|0;if(!t)break;else{u=t;v=s;}}else{u=o;v=j;}m=u;n=v;}c[n>>2]=0;p=m;}else{j=c[g+8>>2]|0;c[j+12>>2]=i;c[i+8>>2]=j;p=i;}}while(0);if(f){i=c[g+28>>2]|0;j=21976+(i<<2)|0;if((c[j>>2]|0)==(g|0)){c[j>>2]=p;if(!p){c[5419]=c[5419]&~(1<<i);k=g;l=h;break;}}else{i=f+16|0;c[((c[i>>2]|0)==(g|0)?i:f+20|0)>>2]=p;if(!p){k=g;l=h;break;}}c[p+24>>2]=f;i=g+16|0;j=c[i>>2]|0;if(j|0){c[p+16>>2]=j;c[j+24>>2]=p;}j=c[i+4>>2]|0;if(j){c[p+20>>2]=j;c[j+24>>2]=p;k=g;l=h;}else{k=g;l=h;}}else{k=g;l=h;}}else{k=a;l=b;}}while(0);b=d+4|0;a=c[b>>2]|0;if(!(a&2)){if((c[5424]|0)==(d|0)){p=(c[5421]|0)+l|0;c[5421]=p;c[5424]=k;c[k+4>>2]=p|1;if((k|0)!=(c[5423]|0))return;c[5423]=0;c[5420]=0;return;}if((c[5423]|0)==(d|0)){p=(c[5420]|0)+l|0;c[5420]=p;c[5423]=k;c[k+4>>2]=p|1;c[k+p>>2]=p;return;}p=(a&-8)+l|0;v=a>>>3;do{if(a>>>0<256){u=c[d+8>>2]|0;r=c[d+12>>2]|0;if((r|0)==(u|0)){c[5418]=c[5418]&~(1<<v);break;}else{c[u+12>>2]=r;c[r+8>>2]=u;break;}}else{u=c[d+24>>2]|0;r=c[d+12>>2]|0;do{if((r|0)==(d|0)){q=d+16|0;e=q+4|0;j=c[e>>2]|0;if(!j){i=c[q>>2]|0;if(!i){w=0;break;}else{x=i;y=q;}}else{x=j;y=e;}e=x;j=y;while(1){q=e+20|0;i=c[q>>2]|0;if(!i){o=e+16|0;s=c[o>>2]|0;if(!s)break;else{z=s;A=o;}}else{z=i;A=q;}e=z;j=A;}c[j>>2]=0;w=e;}else{m=c[d+8>>2]|0;c[m+12>>2]=r;c[r+8>>2]=m;w=r;}}while(0);if(u|0){r=c[d+28>>2]|0;h=21976+(r<<2)|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=w;if(!w){c[5419]=c[5419]&~(1<<r);break;}}else{r=u+16|0;c[((c[r>>2]|0)==(d|0)?r:u+20|0)>>2]=w;if(!w)break;}c[w+24>>2]=u;r=d+16|0;h=c[r>>2]|0;if(h|0){c[w+16>>2]=h;c[h+24>>2]=w;}h=c[r+4>>2]|0;if(h|0){c[w+20>>2]=h;c[h+24>>2]=w;}}}}while(0);c[k+4>>2]=p|1;c[k+p>>2]=p;if((k|0)==(c[5423]|0)){c[5420]=p;return;}else B=p;}else{c[b>>2]=a&-2;c[k+4>>2]=l|1;c[k+l>>2]=l;B=l;}l=B>>>3;if(B>>>0<256){a=21712+(l<<1<<2)|0;b=c[5418]|0;p=1<<l;if(!(b&p)){c[5418]=b|p;C=a;D=a+8|0;}else{p=a+8|0;C=c[p>>2]|0;D=p;}c[D>>2]=k;c[C+12>>2]=k;c[k+8>>2]=C;c[k+12>>2]=a;return;}a=B>>>8;if(a){if(B>>>0>16777215)E=31;else{C=(a+1048320|0)>>>16&8;D=a<<C;a=(D+520192|0)>>>16&4;p=D<<a;D=(p+245760|0)>>>16&2;b=14-(a|C|D)+(p<<D>>>15)|0;E=B>>>(b+7|0)&1|b<<1;}}else E=0;b=21976+(E<<2)|0;c[k+28>>2]=E;c[k+20>>2]=0;c[k+16>>2]=0;D=c[5419]|0;p=1<<E;if(!(D&p)){c[5419]=D|p;c[b>>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;return;}p=c[b>>2]|0;a:do{if((c[p+4>>2]&-8|0)==(B|0))F=p;else{b=B<<((E|0)==31?0:25-(E>>>1)|0);D=p;while(1){G=D+16+(b>>>31<<2)|0;C=c[G>>2]|0;if(!C)break;if((c[C+4>>2]&-8|0)==(B|0)){F=C;break a;}else{b=b<<1;D=C;}}c[G>>2]=k;c[k+24>>2]=D;c[k+12>>2]=k;c[k+8>>2]=k;return;}}while(0);G=F+8|0;B=c[G>>2]|0;c[B+12>>2]=k;c[G>>2]=k;c[k+8>>2]=B;c[k+12>>2]=F;c[k+24>>2]=0;return;}function Iy(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=Oy(c[a+60>>2]|0)|0;a=Ly(Ja(6,d|0)|0)|0;l=b;return a|0;}function Jy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=l;l=l+32|0;g=f;c[b+36>>2]=3;if((c[b>>2]&64|0)==0?(c[g>>2]=c[b+60>>2],c[g+4>>2]=21523,c[g+8>>2]=f+16,Ia(54,g|0)|0):0)a[b+75>>0]=-1;g=Ny(b,d,e)|0;l=f;return g|0;}function Ky(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+32|0;f=e;g=e+20|0;c[f>>2]=c[a+60>>2];c[f+4>>2]=0;c[f+8>>2]=b;c[f+12>>2]=g;c[f+16>>2]=d;if((Ly(Da(140,f|0)|0)|0)<0){c[g>>2]=-1;h=-1;}else h=c[g>>2]|0;l=e;return h|0;}function Ly(a){a=a|0;var b=0;if(a>>>0>4294963200){c[(My()|0)>>2]=0-a;b=-1;}else b=a;return b|0;}function My(){return 22232;}function Ny(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;e=l;l=l+48|0;f=e+32|0;g=e+16|0;h=e;i=a+28|0;j=c[i>>2]|0;c[h>>2]=j;k=a+20|0;m=(c[k>>2]|0)-j|0;c[h+4>>2]=m;c[h+8>>2]=b;c[h+12>>2]=d;b=m+d|0;m=a+60|0;c[g>>2]=c[m>>2];c[g+4>>2]=h;c[g+8>>2]=2;j=Ly(Fa(146,g|0)|0)|0;a:do{if((b|0)!=(j|0)){g=2;n=b;o=h;p=j;while(1){if((p|0)<0)break;n=n-p|0;q=c[o+4>>2]|0;r=p>>>0>q>>>0;s=r?o+8|0:o;t=g+(r<<31>>31)|0;u=p-(r?q:0)|0;c[s>>2]=(c[s>>2]|0)+u;q=s+4|0;c[q>>2]=(c[q>>2]|0)-u;c[f>>2]=c[m>>2];c[f+4>>2]=s;c[f+8>>2]=t;p=Ly(Fa(146,f|0)|0)|0;if((n|0)==(p|0)){v=3;break a;}else{g=t;o=s;}}c[a+16>>2]=0;c[i>>2]=0;c[k>>2]=0;c[a>>2]=c[a>>2]|32;if((g|0)==2)w=0;else w=d-(c[o+4>>2]|0)|0;}else v=3;}while(0);if((v|0)==3){v=c[a+44>>2]|0;c[a+16>>2]=v+(c[a+48>>2]|0);a=v;c[i>>2]=a;c[k>>2]=a;w=d;}l=e;return w|0;}function Oy(a){a=a|0;return a|0;}function Py(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+32|0;g=f+16|0;h=f;c[h>>2]=d;i=h+4|0;j=b+48|0;k=c[j>>2]|0;c[i>>2]=e-((k|0)!=0&1);m=b+44|0;c[h+8>>2]=c[m>>2];c[h+12>>2]=k;c[g>>2]=c[b+60>>2];c[g+4>>2]=h;c[g+8>>2]=2;h=Ly(Ea(145,g|0)|0)|0;if((h|0)>=1){g=c[i>>2]|0;if(h>>>0>g>>>0){i=c[m>>2]|0;m=b+4|0;c[m>>2]=i;k=i;c[b+8>>2]=k+(h-g);if(!(c[j>>2]|0))n=e;else{c[m>>2]=k+1;a[d+(e+-1)>>0]=a[k>>0]|0;n=e;}}else n=h;}else{c[b>>2]=c[b>>2]|h&48^16;n=h;}l=f;return n|0;}function Qy(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;a:do{if(!d)e=0;else{f=b;g=d;h=c;while(1){i=a[f>>0]|0;j=a[h>>0]|0;if(i<<24>>24!=j<<24>>24)break;g=g+-1|0;if(!g){e=0;break a;}else{f=f+1|0;h=h+1|0;}}e=(i&255)-(j&255)|0;}}while(0);return e|0;}function Ry(b,c){b=b|0;c=c|0;var d=0;d=Xy(b,c)|0;return((a[d>>0]|0)==(c&255)<<24>>24?d:0)|0;}function Sy(a){a=a|0;return(a+-48|0)>>>0<10|0;}function Ty(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=b;a:do{if(!(d&3)){e=b;f=5;}else{g=b;h=d;while(1){if(!(a[g>>0]|0)){i=h;break a;}j=g+1|0;h=j;if(!(h&3)){e=j;f=5;break;}else g=j;}}}while(0);if((f|0)==5){f=e;while(1){k=c[f>>2]|0;if(!((k&-2139062144^-2139062144)&k+-16843009))f=f+4|0;else break;}if(!((k&255)<<24>>24))l=f;else{k=f;while(1){f=k+1|0;if(!(a[f>>0]|0)){l=f;break;}else k=f;}}i=l;}return i-d|0;}function Uy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;f=d&255;g=(e|0)!=0;a:do{if(g&(b&3|0)!=0){h=d&255;i=b;j=e;while(1){if((a[i>>0]|0)==h<<24>>24){k=i;l=j;m=6;break a;}n=i+1|0;o=j+-1|0;p=(o|0)!=0;if(p&(n&3|0)!=0){i=n;j=o;}else{q=n;r=o;s=p;m=5;break;}}}else{q=b;r=e;s=g;m=5;}}while(0);if((m|0)==5)if(s){k=q;l=r;m=6;}else m=16;b:do{if((m|0)==6){r=d&255;if((a[k>>0]|0)==r<<24>>24)if(!l){m=16;break;}else{t=k;break;}q=N(f,16843009)|0;c:do{if(l>>>0>3){s=k;g=l;while(1){e=c[s>>2]^q;if((e&-2139062144^-2139062144)&e+-16843009|0){u=g;v=s;break c;}e=s+4|0;b=g+-4|0;if(b>>>0>3){s=e;g=b;}else{w=e;x=b;m=11;break;}}}else{w=k;x=l;m=11;}}while(0);if((m|0)==11)if(!x){m=16;break;}else{u=x;v=w;}q=v;g=u;while(1){if((a[q>>0]|0)==r<<24>>24){t=q;break b;}g=g+-1|0;if(!g){m=16;break;}else q=q+1|0;}}}while(0);if((m|0)==16)t=0;return t|0;}function Vy(a){a=a|0;return 0;}function Wy(a){a=a|0;return;}function Xy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=d&255;a:do{if(!e)f=b+(Ty(b)|0)|0;else{if(!(b&3))g=b;else{h=d&255;i=b;while(1){j=a[i>>0]|0;if(j<<24>>24==0?1:j<<24>>24==h<<24>>24){f=i;break a;}j=i+1|0;if(!(j&3)){g=j;break;}else i=j;}}i=N(e,16843009)|0;h=c[g>>2]|0;b:do{if(!((h&-2139062144^-2139062144)&h+-16843009)){j=g;k=h;while(1){l=k^i;if((l&-2139062144^-2139062144)&l+-16843009|0){m=j;break b;}l=j+4|0;k=c[l>>2]|0;if((k&-2139062144^-2139062144)&k+-16843009|0){m=l;break;}else j=l;}}else m=g;}while(0);i=d&255;h=m;while(1){j=a[h>>0]|0;if(j<<24>>24==0?1:j<<24>>24==i<<24>>24){f=h;break;}else h=h+1|0;}}}while(0);return f|0;}function Yy(a,b){a=a|0;b=b|0;var d=0;if(!b)d=0;else d=Zy(c[b>>2]|0,c[b+4>>2]|0,a)|0;return((d|0)==0?a:d)|0;}function Zy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=(c[b>>2]|0)+1794895138|0;g=_y(c[b+8>>2]|0,f)|0;h=_y(c[b+12>>2]|0,f)|0;i=_y(c[b+16>>2]|0,f)|0;a:do{if((g>>>0<d>>>2>>>0?(j=d-(g<<2)|0,h>>>0<j>>>0&i>>>0<j>>>0):0)?((i|h)&3|0)==0:0){j=h>>>2;k=i>>>2;l=0;m=g;while(1){n=m>>>1;o=l+n|0;p=o<<1;q=p+j|0;r=_y(c[b+(q<<2)>>2]|0,f)|0;s=_y(c[b+(q+1<<2)>>2]|0,f)|0;if(!(s>>>0<d>>>0&r>>>0<(d-s|0)>>>0)){t=0;break a;}if(a[b+(s+r)>>0]|0){t=0;break a;}r=$y(e,b+s|0)|0;if(!r)break;s=(r|0)<0;if((m|0)==1){t=0;break a;}l=s?l:o;m=s?n:m-n|0;}m=p+k|0;l=_y(c[b+(m<<2)>>2]|0,f)|0;j=_y(c[b+(m+1<<2)>>2]|0,f)|0;if(j>>>0<d>>>0&l>>>0<(d-j|0)>>>0)t=(a[b+(j+l)>>0]|0)==0?b+j|0:0;else t=0;}else t=0;}while(0);return t|0;}function _y(a,b){a=a|0;b=b|0;var c=0;c=kE(a|0)|0;return((b|0)==0?a:c)|0;}function $y(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24){f=e;g=d;}else{d=c;c=b;do{c=c+1|0;d=d+1|0;b=a[c>>0]|0;e=a[d>>0]|0;}while(!(b<<24>>24==0?1:b<<24>>24!=e<<24>>24));f=e;g=b;}return(g&255)-(f&255)|0;}function az(){return 12260;}function bz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=l;l=l+16|0;g=f;c[g>>2]=e;e=cz(a,b,d,g)|0;l=f;return e|0;}function cz(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;g=l;l=l+128|0;h=g+124|0;i=g;j=i;k=12504;m=j+124|0;do{c[j>>2]=c[k>>2];j=j+4|0;k=k+4|0;}while((j|0)<(m|0));if((d+-1|0)>>>0>2147483646){if(!d){n=h;o=1;p=4;}else{c[(My()|0)>>2]=75;q=-1;}}else{n=b;o=d;p=4;}if((p|0)==4){p=-2-n|0;d=o>>>0>p>>>0?p:o;c[i+48>>2]=d;o=i+20|0;c[o>>2]=n;c[i+44>>2]=n;p=n+d|0;n=i+16|0;c[n>>2]=p;c[i+28>>2]=p;p=dz(i,e,f)|0;if(!d)q=p;else{d=c[o>>2]|0;a[d+(((d|0)==(c[n>>2]|0))<<31>>31)>>0]=0;q=p;}}l=g;return q|0;}function dz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+224|0;g=f+208|0;h=f+160|0;i=f+80|0;j=f;k=h;m=k+40|0;do{c[k>>2]=0;k=k+4|0;}while((k|0)<(m|0));c[g>>2]=c[e>>2];if((ez(0,d,g,i,h)|0)<0)n=-1;else{if((c[b+76>>2]|0)>-1)o=Vy(b)|0;else o=0;e=c[b>>2]|0;k=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;e=b+48|0;if(!(c[e>>2]|0)){m=b+44|0;p=c[m>>2]|0;c[m>>2]=j;q=b+28|0;c[q>>2]=j;r=b+20|0;c[r>>2]=j;c[e>>2]=80;s=b+16|0;c[s>>2]=j+80;j=ez(b,d,g,i,h)|0;if(!p)t=j;else{rc[c[b+36>>2]&31](b,0,0)|0;u=(c[r>>2]|0)==0?-1:j;c[m>>2]=p;c[e>>2]=0;c[s>>2]=0;c[q>>2]=0;c[r>>2]=0;t=u;}}else t=ez(b,d,g,i,h)|0;h=c[b>>2]|0;c[b>>2]=h|k;if(o|0)Wy(b);n=(h&32|0)==0?t:-1;}l=f;return n|0;}function ez(d,e,f,g,i){d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0;j=l;l=l+64|0;k=j+56|0;m=j+40|0;n=j;o=j+48|0;p=j+60|0;c[k>>2]=e;e=(d|0)!=0;q=n+40|0;r=q;s=n+39|0;n=o+4|0;t=0;u=0;v=0;a:while(1){w=t;x=u;while(1){do{if((x|0)>-1){if((w|0)>(2147483647-x|0)){c[(My()|0)>>2]=75;z=-1;break;}else{z=w+x|0;break;}}else z=x;}while(0);A=c[k>>2]|0;B=a[A>>0]|0;if(!(B<<24>>24)){C=94;break a;}D=B;B=A;b:while(1){switch(D<<24>>24){case 37:{C=10;break b;break;}case 0:{E=B;break b;break;}default:{}}F=B+1|0;c[k>>2]=F;D=a[F>>0]|0;B=F;}c:do{if((C|0)==10){C=0;D=B;F=B;while(1){if((a[F+1>>0]|0)!=37){E=D;break c;}G=D+1|0;F=F+2|0;c[k>>2]=F;if((a[F>>0]|0)!=37){E=G;break;}else D=G;}}}while(0);w=E-A|0;if(e)fz(d,A,w);if(!w)break;else x=z;}x=(Sy(a[(c[k>>2]|0)+1>>0]|0)|0)==0;w=c[k>>2]|0;if(!x?(a[w+2>>0]|0)==36:0){H=(a[w+1>>0]|0)+-48|0;I=1;J=3;}else{H=-1;I=v;J=1;}x=w+J|0;c[k>>2]=x;w=a[x>>0]|0;B=(w<<24>>24)+-32|0;if(B>>>0>31|(1<<B&75913|0)==0){K=0;L=w;M=x;}else{w=0;D=B;B=x;while(1){x=1<<D|w;F=B+1|0;c[k>>2]=F;G=a[F>>0]|0;D=(G<<24>>24)+-32|0;if(D>>>0>31|(1<<D&75913|0)==0){K=x;L=G;M=F;break;}else{w=x;B=F;}}}if(L<<24>>24==42){if((Sy(a[M+1>>0]|0)|0)!=0?(B=c[k>>2]|0,(a[B+2>>0]|0)==36):0){w=B+1|0;c[i+((a[w>>0]|0)+-48<<2)>>2]=10;N=c[g+((a[w>>0]|0)+-48<<3)>>2]|0;O=1;P=B+3|0;}else{if(I|0){Q=-1;break;}if(e){B=(c[f>>2]|0)+(4-1)&~(4-1);w=c[B>>2]|0;c[f>>2]=B+4;R=w;}else R=0;N=R;O=0;P=(c[k>>2]|0)+1|0;}c[k>>2]=P;w=(N|0)<0;S=w?0-N|0:N;T=w?K|8192:K;U=O;V=P;}else{w=gz(k)|0;if((w|0)<0){Q=-1;break;}S=w;T=K;U=I;V=c[k>>2]|0;}do{if((a[V>>0]|0)==46){w=V+1|0;if((a[w>>0]|0)!=42){c[k>>2]=w;w=gz(k)|0;W=w;X=c[k>>2]|0;break;}if(Sy(a[V+2>>0]|0)|0?(w=c[k>>2]|0,(a[w+3>>0]|0)==36):0){B=w+2|0;c[i+((a[B>>0]|0)+-48<<2)>>2]=10;D=c[g+((a[B>>0]|0)+-48<<3)>>2]|0;B=w+4|0;c[k>>2]=B;W=D;X=B;break;}if(U|0){Q=-1;break a;}if(e){B=(c[f>>2]|0)+(4-1)&~(4-1);D=c[B>>2]|0;c[f>>2]=B+4;Y=D;}else Y=0;D=(c[k>>2]|0)+2|0;c[k>>2]=D;W=Y;X=D;}else{W=-1;X=V;}}while(0);D=0;B=X;while(1){if(((a[B>>0]|0)+-65|0)>>>0>57){Q=-1;break a;}w=B;B=B+1|0;c[k>>2]=B;Z=a[(a[w>>0]|0)+-65+(7456+(D*58|0))>>0]|0;_=Z&255;if((_+-1|0)>>>0>=8)break;else D=_;}if(!(Z<<24>>24)){Q=-1;break;}w=(H|0)>-1;do{if(Z<<24>>24==19){if(w){Q=-1;break a;}else C=54;}else{if(w){c[i+(H<<2)>>2]=_;F=g+(H<<3)|0;x=c[F+4>>2]|0;G=m;c[G>>2]=c[F>>2];c[G+4>>2]=x;C=54;break;}if(!e){Q=0;break a;}hz(m,_,f);$=c[k>>2]|0;C=55;}}while(0);if((C|0)==54){C=0;if(e){$=B;C=55;}else aa=0;}d:do{if((C|0)==55){C=0;w=a[$+-1>>0]|0;x=(D|0)!=0&(w&15|0)==3?w&-33:w;w=T&-65537;G=(T&8192|0)==0?T:w;e:do{switch(x|0){case 110:{switch((D&255)<<24>>24){case 0:{c[c[m>>2]>>2]=z;aa=0;break d;break;}case 1:{c[c[m>>2]>>2]=z;aa=0;break d;break;}case 2:{F=c[m>>2]|0;c[F>>2]=z;c[F+4>>2]=((z|0)<0)<<31>>31;aa=0;break d;break;}case 3:{b[c[m>>2]>>1]=z;aa=0;break d;break;}case 4:{a[c[m>>2]>>0]=z;aa=0;break d;break;}case 6:{c[c[m>>2]>>2]=z;aa=0;break d;break;}case 7:{F=c[m>>2]|0;c[F>>2]=z;c[F+4>>2]=((z|0)<0)<<31>>31;aa=0;break d;break;}default:{aa=0;break d;}}break;}case 112:{ba=120;ca=W>>>0>8?W:8;da=G|8;C=67;break;}case 88:case 120:{ba=x;ca=W;da=G;C=67;break;}case 111:{F=m;ea=c[F>>2]|0;fa=c[F+4>>2]|0;F=jz(ea,fa,q)|0;ga=r-F|0;ha=F;ia=0;ja=17834;ka=(G&8|0)==0|(W|0)>(ga|0)?W:ga+1|0;la=G;ma=ea;na=fa;C=73;break;}case 105:case 100:{fa=m;ea=c[fa>>2]|0;ga=c[fa+4>>2]|0;if((ga|0)<0){fa=eE(0,0,ea|0,ga|0)|0;F=y;oa=m;c[oa>>2]=fa;c[oa+4>>2]=F;pa=1;qa=17834;ra=fa;sa=F;C=72;break e;}else{pa=(G&2049|0)!=0&1;qa=(G&2048|0)==0?(G&1|0)==0?17834:17836:17835;ra=ea;sa=ga;C=72;break e;}break;}case 117:{ga=m;pa=0;qa=17834;ra=c[ga>>2]|0;sa=c[ga+4>>2]|0;C=72;break;}case 99:{a[s>>0]=c[m>>2];ta=s;ua=0;va=17834;wa=1;xa=w;ya=r;break;}case 109:{za=lz(c[(My()|0)>>2]|0)|0;C=77;break;}case 115:{ga=c[m>>2]|0;za=(ga|0)==0?17844:ga;C=77;break;}case 67:{c[o>>2]=c[m>>2];c[n>>2]=0;c[m>>2]=o;Aa=-1;C=81;break;}case 83:{if(!W){mz(d,32,S,0,G);Ba=0;C=91;}else{Aa=W;C=81;}break;}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{aa=oz(d,+h[m>>3],S,W,G,x)|0;break d;break;}default:{ta=A;ua=0;va=17834;wa=W;xa=G;ya=r;}}}while(0);f:do{if((C|0)==67){C=0;x=m;ga=c[x>>2]|0;ea=c[x+4>>2]|0;x=iz(ga,ea,q,ba&32)|0;F=(da&8|0)==0|(ga|0)==0&(ea|0)==0;ha=x;ia=F?0:2;ja=F?17834:17834+(ba>>>4)|0;ka=ca;la=da;ma=ga;na=ea;C=73;}else if((C|0)==72){C=0;ha=kz(ra,sa,q)|0;ia=pa;ja=qa;ka=W;la=G;ma=ra;na=sa;C=73;}else if((C|0)==77){C=0;ea=Uy(za,0,W)|0;ga=(ea|0)==0;ta=za;ua=0;va=17834;wa=ga?W:ea-za|0;xa=w;ya=ga?za+W|0:ea;}else if((C|0)==81){C=0;ea=c[m>>2]|0;ga=0;while(1){F=c[ea>>2]|0;if(!F){Ca=ga;break;}x=nz(p,F)|0;Da=(x|0)<0;if(Da|x>>>0>(Aa-ga|0)>>>0){C=85;break;}F=x+ga|0;if(Aa>>>0>F>>>0){ea=ea+4|0;ga=F;}else{Ca=F;break;}}if((C|0)==85){C=0;if(Da){Q=-1;break a;}else Ca=ga;}mz(d,32,S,Ca,G);if(!Ca){Ba=0;C=91;}else{ea=c[m>>2]|0;F=0;while(1){x=c[ea>>2]|0;if(!x){Ba=Ca;C=91;break f;}fa=nz(p,x)|0;F=fa+F|0;if((F|0)>(Ca|0)){Ba=Ca;C=91;break f;}fz(d,p,fa);if(F>>>0>=Ca>>>0){Ba=Ca;C=91;break;}else ea=ea+4|0;}}}}while(0);if((C|0)==73){C=0;w=(ma|0)!=0|(na|0)!=0;ea=(ka|0)!=0|w;F=r-ha+((w^1)&1)|0;ta=ea?ha:q;ua=ia;va=ja;wa=ea?(ka|0)>(F|0)?ka:F:0;xa=(ka|0)>-1?la&-65537:la;ya=r;}else if((C|0)==91){C=0;mz(d,32,S,Ba,G^8192);aa=(S|0)>(Ba|0)?S:Ba;break;}F=ya-ta|0;ea=(wa|0)<(F|0)?F:wa;w=ea+ua|0;ga=(S|0)<(w|0)?w:S;mz(d,32,ga,w,xa);fz(d,va,ua);mz(d,48,ga,w,xa^65536);mz(d,48,ea,F,0);fz(d,ta,F);mz(d,32,ga,w,xa^8192);aa=ga;}}while(0);t=aa;u=z;v=U;}g:do{if((C|0)==94)if(!d){if(!v)Q=0;else{U=1;while(1){u=c[i+(U<<2)>>2]|0;if(!u)break;hz(g+(U<<3)|0,u,f);u=U+1|0;if(u>>>0<10)U=u;else{Q=1;break g;}}u=U;while(1){if(c[i+(u<<2)>>2]|0){Q=-1;break g;}u=u+1|0;if(u>>>0>=10){Q=1;break;}}}}else Q=z;}while(0);l=j;return Q|0;}function fz(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))xz(b,d,a)|0;return;}function gz(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;if(!(Sy(a[c[b>>2]>>0]|0)|0))d=0;else{e=0;while(1){f=c[b>>2]|0;g=(e*10|0)+-48+(a[f>>0]|0)|0;h=f+1|0;c[b>>2]=h;if(!(Sy(a[h>>0]|0)|0)){d=g;break;}else e=g;}}return d|0;}function hz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0;a:do{if(b>>>0<=20)do{switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);f=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=f;break a;break;}case 10:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a;break;}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);f=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=f;c[e+4>>2]=0;break a;break;}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);f=e;g=c[f>>2]|0;i=c[f+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=g;c[e+4>>2]=i;break a;break;}case 13:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=(e&65535)<<16>>16;e=a;c[e>>2]=i;c[e+4>>2]=((i|0)<0)<<31>>31;break a;break;}case 14:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=a;c[i>>2]=e&65535;c[i+4>>2]=0;break a;break;}case 15:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=(e&255)<<24>>24;e=a;c[e>>2]=i;c[e+4>>2]=((i|0)<0)<<31>>31;break a;break;}case 16:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=a;c[i>>2]=e&255;c[i+4>>2]=0;break a;break;}case 17:{i=(c[d>>2]|0)+(8-1)&~(8-1);j=+h[i>>3];c[d>>2]=i+8;h[a>>3]=j;break a;break;}case 18:{i=(c[d>>2]|0)+(8-1)&~(8-1);j=+h[i>>3];c[d>>2]=i+8;h[a>>3]=j;break a;break;}default:break a;}}while(0);}while(0);return;}function iz(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0;if((b|0)==0&(c|0)==0)g=e;else{h=e;e=c;c=b;while(1){b=h+-1|0;a[b>>0]=d[7920+(c&15)>>0]|0|f;c=iE(c|0,e|0,4)|0;e=y;if((c|0)==0&(e|0)==0){g=b;break;}else h=b;}}return g|0;}function jz(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;if((b|0)==0&(c|0)==0)e=d;else{f=d;d=c;c=b;while(1){b=f+-1|0;a[b>>0]=c&7|48;c=iE(c|0,d|0,3)|0;d=y;if((c|0)==0&(d|0)==0){e=b;break;}else f=b;}}return e|0;}function kz(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){e=d;f=b;g=c;do{c=f;f=hE(f|0,g|0,10,0)|0;h=g;g=y;i=cE(f|0,g|0,10,0)|0;j=eE(c|0,h|0,i|0,y|0)|0;e=e+-1|0;a[e>>0]=j&255|48;}while(h>>>0>9|(h|0)==9&c>>>0>4294967295);k=f;l=e;}else{k=b;l=d;}if(!k)m=l;else{d=k;k=l;while(1){l=d;d=(d>>>0)/10|0;b=k+-1|0;a[b>>0]=l-(d*10|0)|48;if(l>>>0<10){m=b;break;}else k=b;}}return m|0;}function lz(a){a=a|0;return vz(a,c[(uz()|0)+188>>2]|0)|0;}function mz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=l;l=l+256|0;g=f;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;oE(g|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;d=e;do{fz(a,g,256);d=d+-256|0;}while(d>>>0>255);h=b&255;}else h=e;fz(a,g,h);}l=f;return;}function nz(a,b){a=a|0;b=b|0;var c=0;if(!a)c=0;else c=sz(a,b,0)|0;return c|0;}function oz(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0.0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0,H=0,I=0,J=0.0,K=0,L=0,M=0,O=0,P=0,Q=0,R=0.0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0.0,ja=0.0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0;j=l;l=l+560|0;k=j+32|0;m=j+536|0;n=j;o=n;p=j+540|0;c[m>>2]=0;q=p+12|0;r=pz(e)|0;s=y;if((s|0)<0){t=-e;u=pz(t)|0;v=t;w=1;x=17851;z=y;A=u;}else{v=e;w=(h&2049|0)!=0&1;x=(h&2048|0)==0?(h&1|0)==0?17852:17857:17854;z=s;A=r;}do{if(0==0&(z&2146435072|0)==2146435072){r=(i&32|0)!=0;A=w+3|0;mz(b,32,f,A,h&-65537);fz(b,x,w);fz(b,v!=v|0.0!=0.0?r?17878:17882:r?17870:17874,3);mz(b,32,f,A,h^8192);B=A;}else{e=+qz(v,m)*2.0;A=e!=0.0;if(A)c[m>>2]=(c[m>>2]|0)+-1;r=i|32;if((r|0)==97){s=i&32;u=(s|0)==0?x:x+9|0;C=w|2;D=12-g|0;do{if(!(g>>>0>11|(D|0)==0)){t=8.0;E=D;do{E=E+-1|0;t=t*16.0;}while((E|0)!=0);if((a[u>>0]|0)==45){F=-(t+(-e-t));break;}else{F=e+t-t;break;}}else F=e;}while(0);D=c[m>>2]|0;E=(D|0)<0?0-D|0:D;G=kz(E,((E|0)<0)<<31>>31,q)|0;if((G|0)==(q|0)){E=p+11|0;a[E>>0]=48;H=E;}else H=G;a[H+-1>>0]=(D>>31&2)+43;D=H+-2|0;a[D>>0]=i+15;G=(g|0)<1;E=(h&8|0)==0;I=n;J=F;while(1){K=~~J;L=I+1|0;a[I>>0]=s|d[7920+K>>0];J=(J-+(K|0))*16.0;if((L-o|0)==1?!(E&(G&J==0.0)):0){a[L>>0]=46;M=I+2|0;}else M=L;if(!(J!=0.0))break;else I=M;}I=M;if((g|0)!=0?(-2-o+I|0)<(g|0):0){G=q;E=D;O=g+2+G-E|0;P=G;Q=E;}else{E=q;G=D;O=E-o-G+I|0;P=E;Q=G;}G=O+C|0;mz(b,32,f,G,h);fz(b,u,C);mz(b,48,f,G,h^65536);E=I-o|0;fz(b,n,E);I=P-Q|0;mz(b,48,O-(E+I)|0,0,0);fz(b,D,I);mz(b,32,f,G,h^8192);B=G;break;}G=(g|0)<0?6:g;if(A){I=(c[m>>2]|0)+-28|0;c[m>>2]=I;R=e*268435456.0;S=I;}else{R=e;S=c[m>>2]|0;}I=(S|0)<0?k:k+288|0;E=I;J=R;do{s=~~J>>>0;c[E>>2]=s;E=E+4|0;J=(J-+(s>>>0))*1.0e9;}while(J!=0.0);A=I;if((S|0)>0){D=I;C=E;u=S;while(1){s=(u|0)<29?u:29;L=C+-4|0;if(L>>>0>=D>>>0){K=L;L=0;do{T=jE(c[K>>2]|0,0,s|0)|0;U=dE(T|0,y|0,L|0,0)|0;T=y;L=hE(U|0,T|0,1e9,0)|0;V=cE(L|0,y|0,1e9,0)|0;W=eE(U|0,T|0,V|0,y|0)|0;c[K>>2]=W;K=K+-4|0;}while(K>>>0>=D>>>0);if(L){K=D+-4|0;c[K>>2]=L;X=K;}else X=D;}else X=D;a:do{if(C>>>0>X>>>0){K=C;while(1){W=K+-4|0;if(c[W>>2]|0){Y=K;break a;}if(W>>>0>X>>>0)K=W;else{Y=W;break;}}}else Y=C;}while(0);L=(c[m>>2]|0)-s|0;c[m>>2]=L;if((L|0)>0){D=X;C=Y;u=L;}else{Z=X;_=Y;$=L;break;}}}else{Z=I;_=E;$=S;}if(($|0)<0){u=((G+25|0)/9|0)+1|0;C=(r|0)==102;D=Z;L=_;K=$;while(1){W=0-K|0;V=(W|0)<9?W:9;if(D>>>0<L>>>0){W=(1<<V)+-1|0;T=1e9>>>V;U=0;aa=D;do{ba=c[aa>>2]|0;c[aa>>2]=(ba>>>V)+U;U=N(ba&W,T)|0;aa=aa+4|0;}while(aa>>>0<L>>>0);aa=(c[D>>2]|0)==0?D+4|0:D;if(!U){ca=L;da=aa;}else{c[L>>2]=U;ca=L+4|0;da=aa;}}else{ca=L;da=(c[D>>2]|0)==0?D+4|0:D;}aa=C?I:da;T=(ca-aa>>2|0)>(u|0)?aa+(u<<2)|0:ca;K=(c[m>>2]|0)+V|0;c[m>>2]=K;if((K|0)>=0){ea=da;fa=T;break;}else{D=da;L=T;}}}else{ea=Z;fa=_;}if(ea>>>0<fa>>>0){L=(A-ea>>2)*9|0;D=c[ea>>2]|0;if(D>>>0<10)ga=L;else{K=L;L=10;while(1){L=L*10|0;u=K+1|0;if(D>>>0<L>>>0){ga=u;break;}else K=u;}}}else ga=0;K=(r|0)==103;L=(G|0)!=0;D=G-((r|0)==102?0:ga)+((L&K)<<31>>31)|0;if((D|0)<(((fa-A>>2)*9|0)+-9|0)){u=D+9216|0;D=(u|0)/9|0;C=I+4+(D+-1024<<2)|0;E=u-(D*9|0)|0;if((E|0)<8){D=E;E=10;while(1){u=E*10|0;if((D|0)<7){D=D+1|0;E=u;}else{ha=u;break;}}}else ha=10;E=c[C>>2]|0;D=(E>>>0)/(ha>>>0)|0;r=E-(N(D,ha)|0)|0;u=(C+4|0)==(fa|0);if(!(u&(r|0)==0)){t=(D&1|0)==0?9007199254740992.0:9007199254740994.0;D=ha>>>1;J=r>>>0<D>>>0?.5:u&(r|0)==(D|0)?1.0:1.5;if(!w){ia=J;ja=t;}else{D=(a[x>>0]|0)==45;ia=D?-J:J;ja=D?-t:t;}D=E-r|0;c[C>>2]=D;if(ja+ia!=ja){r=D+ha|0;c[C>>2]=r;if(r>>>0>999999999){r=C;D=ea;while(1){E=r+-4|0;c[r>>2]=0;if(E>>>0<D>>>0){u=D+-4|0;c[u>>2]=0;ka=u;}else ka=D;u=(c[E>>2]|0)+1|0;c[E>>2]=u;if(u>>>0>999999999){r=E;D=ka;}else{la=E;ma=ka;break;}}}else{la=C;ma=ea;}D=(A-ma>>2)*9|0;r=c[ma>>2]|0;if(r>>>0<10){na=la;oa=D;pa=ma;}else{E=D;D=10;while(1){D=D*10|0;u=E+1|0;if(r>>>0<D>>>0){na=la;oa=u;pa=ma;break;}else E=u;}}}else{na=C;oa=ga;pa=ea;}}else{na=C;oa=ga;pa=ea;}E=na+4|0;qa=oa;ra=fa>>>0>E>>>0?E:fa;sa=pa;}else{qa=ga;ra=fa;sa=ea;}E=0-qa|0;b:do{if(ra>>>0>sa>>>0){D=ra;while(1){r=D+-4|0;if(c[r>>2]|0){ta=D;ua=1;break b;}if(r>>>0>sa>>>0)D=r;else{ta=r;ua=0;break;}}}else{ta=ra;ua=0;}}while(0);do{if(K){C=G+((L^1)&1)|0;if((C|0)>(qa|0)&(qa|0)>-5){va=i+-1|0;wa=C+-1-qa|0;}else{va=i+-2|0;wa=C+-1|0;}if(!(h&8)){if(ua?(C=c[ta+-4>>2]|0,(C|0)!=0):0){if(!((C>>>0)%10|0)){D=0;V=10;while(1){V=V*10|0;U=D+1|0;if((C>>>0)%(V>>>0)|0|0){xa=U;break;}else D=U;}}else xa=0;}else xa=9;D=((ta-A>>2)*9|0)+-9|0;if((va|32|0)==102){V=D-xa|0;C=(V|0)>0?V:0;ya=va;za=(wa|0)<(C|0)?wa:C;break;}else{C=D+qa-xa|0;D=(C|0)>0?C:0;ya=va;za=(wa|0)<(D|0)?wa:D;break;}}else{ya=va;za=wa;}}else{ya=i;za=G;}}while(0);G=(za|0)!=0;A=G?1:h>>>3&1;L=(ya|32|0)==102;if(L){Aa=0;Ba=(qa|0)>0?qa:0;}else{K=(qa|0)<0?E:qa;D=kz(K,((K|0)<0)<<31>>31,q)|0;K=q;if((K-D|0)<2){C=D;while(1){V=C+-1|0;a[V>>0]=48;if((K-V|0)<2)C=V;else{Ca=V;break;}}}else Ca=D;a[Ca+-1>>0]=(qa>>31&2)+43;C=Ca+-2|0;a[C>>0]=ya;Aa=C;Ba=K-C|0;}C=w+1+za+A+Ba|0;mz(b,32,f,C,h);fz(b,x,w);mz(b,48,f,C,h^65536);if(L){E=sa>>>0>I>>>0?I:sa;V=n+9|0;U=V;r=n+8|0;u=E;do{T=kz(c[u>>2]|0,0,V)|0;if((u|0)==(E|0)){if((T|0)==(V|0)){a[r>>0]=48;Da=r;}else Da=T;}else if(T>>>0>n>>>0){oE(n|0,48,T-o|0)|0;aa=T;while(1){W=aa+-1|0;if(W>>>0>n>>>0)aa=W;else{Da=W;break;}}}else Da=T;fz(b,Da,U-Da|0);u=u+4|0;}while(u>>>0<=I>>>0);if(!((h&8|0)==0&(G^1)))fz(b,18964,1);if(u>>>0<ta>>>0&(za|0)>0){I=za;U=u;while(1){r=kz(c[U>>2]|0,0,V)|0;if(r>>>0>n>>>0){oE(n|0,48,r-o|0)|0;E=r;while(1){L=E+-1|0;if(L>>>0>n>>>0)E=L;else{Ea=L;break;}}}else Ea=r;fz(b,Ea,(I|0)<9?I:9);U=U+4|0;E=I+-9|0;if(!(U>>>0<ta>>>0&(I|0)>9)){Fa=E;break;}else I=E;}}else Fa=za;mz(b,48,Fa+9|0,9,0);}else{I=ua?ta:sa+4|0;if(sa>>>0<I>>>0&(za|0)>-1){U=n+9|0;V=(h&8|0)==0;u=U;G=0-o|0;E=n+8|0;T=za;L=sa;while(1){A=kz(c[L>>2]|0,0,U)|0;if((A|0)==(U|0)){a[E>>0]=48;Ga=E;}else Ga=A;do{if((L|0)==(sa|0)){A=Ga+1|0;fz(b,Ga,1);if(V&(T|0)<1){Ha=A;break;}fz(b,18964,1);Ha=A;}else{if(Ga>>>0<=n>>>0){Ha=Ga;break;}oE(n|0,48,Ga+G|0)|0;A=Ga;while(1){K=A+-1|0;if(K>>>0>n>>>0)A=K;else{Ha=K;break;}}}}while(0);r=u-Ha|0;fz(b,Ha,(T|0)>(r|0)?r:T);A=T-r|0;L=L+4|0;if(!(L>>>0<I>>>0&(A|0)>-1)){Ia=A;break;}else T=A;}}else Ia=za;mz(b,48,Ia+18|0,18,0);fz(b,Aa,q-Aa|0);}mz(b,32,f,C,h^8192);B=C;}}while(0);l=j;return((B|0)<(f|0)?f:B)|0;}function pz(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;y=c[j+4>>2]|0;return b|0;}function qz(a,b){a=+a;b=b|0;return+ +rz(a,b);}function rz(a,b){a=+a;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,k=0,l=0.0;h[j>>3]=a;d=c[j>>2]|0;e=c[j+4>>2]|0;f=iE(d|0,e|0,52)|0;switch(f&2047){case 0:{if(a!=0.0){g=+rz(a*18446744073709551616.0,b);i=g;k=(c[b>>2]|0)+-64|0;}else{i=a;k=0;}c[b>>2]=k;l=i;break;}case 2047:{l=a;break;}default:{c[b>>2]=(f&2047)+-1022;c[j>>2]=d;c[j+4>>2]=e&-2146435073|1071644672;l=+h[j>>3];}}return+l;}function sz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;do{if(b){if(d>>>0<128){a[b>>0]=d;f=1;break;}if(!(c[c[(tz()|0)+188>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;f=1;break;}else{c[(My()|0)>>2]=84;f=-1;break;}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;f=2;break;}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;f=3;break;}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;f=4;break;}else{c[(My()|0)>>2]=84;f=-1;break;}}else f=1;}while(0);return f|0;}function tz(){return az()|0;}function uz(){return az()|0;}function vz(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=0;while(1){if((d[7936+f>>0]|0)==(b|0)){g=4;break;}h=f+1|0;if((h|0)==87){i=87;g=5;break;}else f=h;}if((g|0)==4)if(!f)j=8032;else{i=f;g=5;}if((g|0)==5){g=8032;f=i;while(1){i=g;do{b=i;i=i+1|0;}while((a[b>>0]|0)!=0);f=f+-1|0;if(!f){j=i;break;}else g=i;}}return wz(j,c[e+20>>2]|0)|0;}function wz(a,b){a=a|0;b=b|0;return Yy(a,b)|0;}function xz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=e+16|0;g=c[f>>2]|0;if(!g){if(!(yz(e)|0)){h=c[f>>2]|0;i=5;}else j=0;}else{h=g;i=5;}a:do{if((i|0)==5){g=e+20|0;f=c[g>>2]|0;k=f;if((h-f|0)>>>0<d>>>0){j=rc[c[e+36>>2]&31](e,b,d)|0;break;}b:do{if((a[e+75>>0]|0)<0|(d|0)==0){l=0;m=b;n=d;o=k;}else{f=d;while(1){p=f+-1|0;if((a[b+p>>0]|0)==10)break;if(!p){l=0;m=b;n=d;o=k;break b;}else f=p;}p=rc[c[e+36>>2]&31](e,b,f)|0;if(p>>>0<f>>>0){j=p;break a;}l=f;m=b+f|0;n=d-f|0;o=c[g>>2]|0;}}while(0);mE(o|0,m|0,n|0)|0;c[g>>2]=(c[g>>2]|0)+n;j=l+n|0;}}while(0);return j|0;}function yz(b){b=b|0;var d=0,e=0,f=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;e=c[b>>2]|0;if(!(e&8)){c[b+8>>2]=0;c[b+4>>2]=0;d=c[b+44>>2]|0;c[b+28>>2]=d;c[b+20>>2]=d;c[b+16>>2]=d+(c[b+48>>2]|0);f=0;}else{c[b>>2]=e|32;f=-1;}return f|0;}function zz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+20|0;f=c[e>>2]|0;g=(c[a+16>>2]|0)-f|0;a=g>>>0>d>>>0?d:g;mE(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0;}function Az(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=dz(c[3e3]|0,a,e)|0;l=d;return b|0;}function Bz(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+16|0;g=f;h=e&255;a[g>>0]=h;i=b+16|0;j=c[i>>2]|0;if(!j){if(!(yz(b)|0)){k=c[i>>2]|0;m=4;}else n=-1;}else{k=j;m=4;}do{if((m|0)==4){j=b+20|0;i=c[j>>2]|0;if(i>>>0<k>>>0?(o=e&255,(o|0)!=(a[b+75>>0]|0)):0){c[j>>2]=i+1;a[i>>0]=h;n=o;break;}if((rc[c[b+36>>2]&31](b,g,1)|0)==1)n=d[g>>0]|0;else n=-1;}}while(0);l=f;return n|0;}function Cz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+48|0;f=e+32|0;g=e+16|0;h=e;if(Ry(17886,a[d>>0]|0)|0){i=Dz(d)|0;c[h>>2]=b;c[h+4>>2]=i|32768;c[h+8>>2]=438;b=Ly(Ha(5,h|0)|0)|0;if((b|0)>=0){if(i&524288|0){c[g>>2]=b;c[g+4>>2]=2;c[g+8>>2]=1;Ga(221,g|0)|0;}g=Ez(b,d)|0;if(!g){c[f>>2]=b;Ja(6,f|0)|0;j=0;}else j=g;}else j=0;}else{c[(My()|0)>>2]=22;j=0;}l=e;return j|0;}function Dz(b){b=b|0;var c=0,d=0,e=0,f=0;c=(Ry(b,43)|0)==0;d=a[b>>0]|0;e=c?d<<24>>24!=114&1:2;c=(Ry(b,120)|0)==0;f=c?e:e|128;e=(Ry(b,101)|0)==0;b=e?f:f|524288;f=d<<24>>24==114?b:b|64;b=d<<24>>24==119?f|512:f;return(d<<24>>24==97?b|1024:b)|0;}function Ez(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;e=l;l=l+64|0;f=e+40|0;g=e+24|0;h=e+16|0;i=e;j=e+56|0;if(Ry(17886,a[d>>0]|0)|0){k=Cy(1156)|0;if(!k)m=0;else{oE(k|0,0,124)|0;if(!(Ry(d,43)|0))c[k>>2]=(a[d>>0]|0)==114?8:4;if(Ry(d,101)|0){c[i>>2]=b;c[i+4>>2]=2;c[i+8>>2]=1;Ga(221,i|0)|0;}if((a[d>>0]|0)==97){c[h>>2]=b;c[h+4>>2]=3;d=Ga(221,h|0)|0;if(!(d&1024)){c[g>>2]=b;c[g+4>>2]=4;c[g+8>>2]=d|1024;Ga(221,g|0)|0;}g=c[k>>2]|128;c[k>>2]=g;n=g;}else n=c[k>>2]|0;c[k+60>>2]=b;c[k+44>>2]=k+132;c[k+48>>2]=1024;g=k+75|0;a[g>>0]=-1;if((n&8|0)==0?(c[f>>2]=b,c[f+4>>2]=21523,c[f+8>>2]=j,(Ia(54,f|0)|0)==0):0)a[g>>0]=10;c[k+32>>2]=22;c[k+36>>2]=3;c[k+40>>2]=2;c[k+12>>2]=29;if(!(c[5543]|0))c[k+76>>2]=-1;Fz(k)|0;m=k;}}else{c[(My()|0)>>2]=22;m=0;}l=e;return m|0;}function Fz(a){a=a|0;var b=0,d=0;b=Gz()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;Hz();return a|0;}function Gz(){Aa(22236);return 22244;}function Hz(){Ka(22236);return;}function Iz(){return az()|0;}function Jz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;do{if(a){if((c[a+76>>2]|0)<=-1){b=Mz(a)|0;break;}d=(Vy(a)|0)==0;e=Mz(a)|0;if(d)b=e;else{Wy(a);b=e;}}else{if(!(c[3032]|0))f=0;else f=Jz(c[3032]|0)|0;e=c[(Gz()|0)>>2]|0;if(!e)g=f;else{d=e;e=f;while(1){if((c[d+76>>2]|0)>-1)h=Vy(d)|0;else h=0;if((c[d+20>>2]|0)>>>0>(c[d+28>>2]|0)>>>0)i=Mz(d)|0|e;else i=e;if(h|0)Wy(d);d=c[d+56>>2]|0;if(!d){g=i;break;}else e=i;}}Hz();b=g;}}while(0);return b|0;}function Kz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;if((c[a+76>>2]|0)>-1)b=Vy(a)|0;else b=0;Lz(a);d=(c[a>>2]&1|0)!=0;if(!d){e=Gz()|0;f=c[a+52>>2]|0;g=a+56|0;if(f|0)c[f+56>>2]=c[g>>2];h=c[g>>2]|0;if(h|0)c[h+52>>2]=f;if((c[e>>2]|0)==(a|0))c[e>>2]=h;Hz();}h=Jz(a)|0;e=pc[c[a+12>>2]&63](a)|0|h;h=c[a+92>>2]|0;if(h|0)Dy(h);if(d){if(b|0)Wy(a);}else Dy(a);return e|0;}function Lz(a){a=a|0;var b=0,d=0,e=0;if(c[a+68>>2]|0){b=c[a+116>>2]|0;d=a+112|0;if(b|0)c[b+112>>2]=c[d>>2];a=c[d>>2]|0;if(!a)e=(Iz()|0)+232|0;else e=a+116|0;c[e>>2]=b;}return;}function Mz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+20|0;d=a+28|0;if((c[b>>2]|0)>>>0>(c[d>>2]|0)>>>0?(rc[c[a+36>>2]&31](a,0,0)|0,(c[b>>2]|0)==0):0)e=-1;else{f=a+4|0;g=c[f>>2]|0;h=a+8|0;i=c[h>>2]|0;if(g>>>0<i>>>0)rc[c[a+40>>2]&31](a,g-i|0,1)|0;c[a+16>>2]=0;c[d>>2]=0;c[b>>2]=0;c[h>>2]=0;c[f>>2]=0;e=0;}return e|0;}function Nz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[d+76>>2]|0)>=0?(Vy(d)|0)!=0:0){e=b&255;f=b&255;if((f|0)!=(a[d+75>>0]|0)?(g=d+20|0,h=c[g>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[g>>2]=h+1;a[h>>0]=e;i=f;}else i=Bz(d,b)|0;Wy(d);j=i;}else k=3;do{if((k|0)==3){i=b&255;f=b&255;if((f|0)!=(a[d+75>>0]|0)?(e=d+20|0,h=c[e>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[e>>2]=h+1;a[h>>0]=i;j=f;break;}j=Bz(d,b)|0;}}while(0);return j|0;}function Oz(a){a=a|0;var b=0,c=0,d=0;b=(Ty(a)|0)+1|0;c=Cy(b)|0;if(!c)d=0;else d=mE(c|0,a|0,b|0)|0;return d|0;}function Pz(a){a=a|0;return(a+-65|0)>>>0<26|0;}function Qz(a){a=a|0;return(((a|32)+-97|0)>>>0<6|(Sy(a)|0)!=0)&1|0;}function Rz(a){a=a|0;return;}function Sz(a){a=a|0;Rz(a);Vz(a);return;}function Tz(a){a=a|0;return 17890;}function Uz(a){a=a|0;var b=0,c=0;b=(a|0)==0?1:a;while(1){a=Cy(b)|0;if(a|0){c=a;break;}a=ZD()|0;if(!a){c=0;break;}vc[a&3]();}return c|0;}function Vz(a){a=a|0;Dy(a);return;}function Wz(a){a=a|0;lb();}function Xz(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a=l;l=l+48|0;b=a+32|0;d=a+24|0;e=a+16|0;f=a;g=a+36|0;a=Yz()|0;if(a|0?(h=c[a>>2]|0,h|0):0){a=h+48|0;i=c[a>>2]|0;j=c[a+4>>2]|0;if(!((i&-256|0)==1126902528&(j|0)==1129074247)){c[d>>2]=18077;Zz(18027,d);}if((i|0)==1126902529&(j|0)==1129074247)k=c[h+44>>2]|0;else k=h+80|0;c[g>>2]=k;k=c[h>>2]|0;h=c[k+4>>2]|0;if(rc[c[(c[2704]|0)+16>>2]&31](10816,k,g)|0){k=c[g>>2]|0;g=pc[c[(c[k>>2]|0)+8>>2]&63](k)|0;c[f>>2]=18077;c[f+4>>2]=h;c[f+8>>2]=g;Zz(17941,f);}else{c[e>>2]=18077;c[e+4>>2]=h;Zz(17986,e);}}Zz(18065,b);}function Yz(){var a=0,b=0;a=l;l=l+16|0;if(!(rb(22248,3)|0)){b=pb(c[5563]|0)|0;l=a;return b|0;}else Zz(18216,a);return 0;}function Zz(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=c[3033]|0;dz(b,a,e)|0;Nz(10,b)|0;lb();}function _z(a){a=a|0;return;}function $z(a){a=a|0;_z(a);Vz(a);return;}function aA(a){a=a|0;return;}function bA(a){a=a|0;return;}function cA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+64|0;f=e;if(!(gA(a,b,0)|0)){if((b|0)!=0?(g=kA(b,10840,10824,0)|0,(g|0)!=0):0){b=f+4|0;h=b+52|0;do{c[b>>2]=0;b=b+4|0;}while((b|0)<(h|0));c[f>>2]=g;c[f+8>>2]=a;c[f+12>>2]=-1;c[f+48>>2]=1;zc[c[(c[g>>2]|0)+28>>2]&7](g,f,c[d>>2]|0,1);if((c[f+24>>2]|0)==1){c[d>>2]=c[f+16>>2];i=1;}else i=0;j=i;}else j=0;}else j=1;l=e;return j|0;}function dA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(gA(a,c[b+8>>2]|0,g)|0)jA(0,b,d,e,f);return;}function eA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;do{if(!(gA(b,c[d+8>>2]|0,g)|0)){if(gA(b,c[d>>2]|0,g)|0){if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[h>>2]=e;h=d+40|0;c[h>>2]=(c[h>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;break;}if((f|0)==1)c[d+32>>2]=1;}}else iA(0,d,e,f);}while(0);return;}function fA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(gA(a,c[b+8>>2]|0,0)|0)hA(0,b,d,e);return;}function gA(a,b,c){a=a|0;b=b|0;c=c|0;return(a|0)==(b|0)|0;}function hA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;b=d+16|0;g=c[b>>2]|0;do{if(g){if((g|0)!=(e|0)){h=d+36|0;c[h>>2]=(c[h>>2]|0)+1;c[d+24>>2]=2;a[d+54>>0]=1;break;}h=d+24|0;if((c[h>>2]|0)==2)c[h>>2]=f;}else{c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1;}}while(0);return;}function iA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((c[b+4>>2]|0)==(d|0)?(d=b+28|0,(c[d>>2]|0)!=1):0)c[d>>2]=e;return;}function jA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;a[d+53>>0]=1;do{if((c[d+4>>2]|0)==(f|0)){a[d+52>>0]=1;b=d+16|0;h=c[b>>2]|0;if(!h){c[b>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((g|0)==1?(c[d+48>>2]|0)==1:0))break;a[d+54>>0]=1;break;}if((h|0)!=(e|0)){h=d+36|0;c[h>>2]=(c[h>>2]|0)+1;a[d+54>>0]=1;break;}h=d+24|0;b=c[h>>2]|0;if((b|0)==2){c[h>>2]=g;i=g;}else i=b;if((i|0)==1?(c[d+48>>2]|0)==1:0)a[d+54>>0]=1;}}while(0);return;}function kA(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;h=l;l=l+64|0;i=h;j=c[d>>2]|0;k=d+(c[j+-8>>2]|0)|0;m=c[j+-4>>2]|0;c[i>>2]=f;c[i+4>>2]=d;c[i+8>>2]=e;c[i+12>>2]=g;g=i+16|0;e=i+20|0;d=i+24|0;j=i+28|0;n=i+32|0;o=i+40|0;p=g;q=p+36|0;do{c[p>>2]=0;p=p+4|0;}while((p|0)<(q|0));b[g+36>>1]=0;a[g+38>>0]=0;a:do{if(gA(m,f,0)|0){c[i+48>>2]=1;Bc[c[(c[m>>2]|0)+20>>2]&3](m,i,k,k,1,0);r=(c[d>>2]|0)==1?k:0;}else{Ac[c[(c[m>>2]|0)+24>>2]&3](m,i,k,1,0);switch(c[i+36>>2]|0){case 0:{r=(c[o>>2]|0)==1&(c[j>>2]|0)==1&(c[n>>2]|0)==1?c[e>>2]|0:0;break a;break;}case 1:break;default:{r=0;break a;}}if((c[d>>2]|0)!=1?!((c[o>>2]|0)==0&(c[j>>2]|0)==1&(c[n>>2]|0)==1):0){r=0;break;}r=c[g>>2]|0;}}while(0);l=h;return r|0;}function lA(a){a=a|0;_z(a);Vz(a);return;}function mA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;if(gA(a,c[b+8>>2]|0,g)|0)jA(0,b,d,e,f);else{h=c[a+8>>2]|0;Bc[c[(c[h>>2]|0)+20>>2]&3](h,b,d,e,f,g);}return;}function nA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;do{if(!(gA(b,c[d+8>>2]|0,g)|0)){if(!(gA(b,c[d>>2]|0,g)|0)){h=c[b+8>>2]|0;Ac[c[(c[h>>2]|0)+24>>2]&3](h,d,e,f,g);break;}if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;i=d+44|0;if((c[i>>2]|0)==4)break;j=d+52|0;a[j>>0]=0;k=d+53|0;a[k>>0]=0;l=c[b+8>>2]|0;Bc[c[(c[l>>2]|0)+20>>2]&3](l,d,e,e,1,g);if(a[k>>0]|0){if(!(a[j>>0]|0)){m=1;n=11;}else n=15;}else{m=0;n=11;}do{if((n|0)==11){c[h>>2]=e;j=d+40|0;c[j>>2]=(c[j>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(m){n=15;break;}else{o=4;break;}}if(m)n=15;else o=4;}}while(0);if((n|0)==15)o=3;c[i>>2]=o;break;}if((f|0)==1)c[d+32>>2]=1;}else iA(0,d,e,f);}while(0);return;}function oA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if(gA(a,c[b+8>>2]|0,0)|0)hA(0,b,d,e);else{f=c[a+8>>2]|0;zc[c[(c[f>>2]|0)+28>>2]&7](f,b,d,e);}return;}function pA(a){a=a|0;return;}function qA(){var a=0;a=l;l=l+16|0;if(!(qb(22252,72)|0)){l=a;return;}else Zz(18265,a);}function rA(a){a=a|0;var b=0;b=l;l=l+16|0;Dy(a);if(!(sb(c[5563]|0,0)|0)){l=b;return;}else Zz(18315,b);}function sA(){var a=0,b=0;a=Yz()|0;if((a|0?(b=c[a>>2]|0,b|0):0)?(a=b+48|0,(c[a>>2]&-256|0)==1126902528?(c[a+4>>2]|0)==1129074247:0):0)tA(c[b+12>>2]|0);tA(uA()|0);}function tA(a){a=a|0;var b=0;b=l;l=l+16|0;vc[a&3]();Zz(18368,b);}function uA(){var a=0;a=c[3162]|0;c[3162]=a+0;return a|0;}function vA(a){a=a|0;return;}function wA(a){a=a|0;_z(a);Vz(a);return;}function xA(a,b,c){a=a|0;b=b|0;c=c|0;return gA(a,b,0)|0;}function yA(a){a=a|0;_z(a);Vz(a);return;}function zA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+64|0;f=e;c[d>>2]=c[c[d>>2]>>2];if(!(AA(a,b,0)|0)){if(((b|0)!=0?(g=kA(b,10840,10896,0)|0,(g|0)!=0):0)?(c[g+8>>2]&~c[a+8>>2]|0)==0:0){b=a+12|0;a=g+12|0;if(!(gA(c[b>>2]|0,c[a>>2]|0,0)|0)?!(gA(c[b>>2]|0,10928,0)|0):0){g=c[b>>2]|0;if((((g|0)!=0?(b=kA(g,10840,10824,0)|0,(b|0)!=0):0)?(g=c[a>>2]|0,(g|0)!=0):0)?(a=kA(g,10840,10824,0)|0,(a|0)!=0):0){g=f+4|0;h=g+52|0;do{c[g>>2]=0;g=g+4|0;}while((g|0)<(h|0));c[f>>2]=a;c[f+8>>2]=b;c[f+12>>2]=-1;c[f+48>>2]=1;zc[c[(c[a>>2]|0)+28>>2]&7](a,f,c[d>>2]|0,1);if((c[f+24>>2]|0)==1){c[d>>2]=c[f+16>>2];i=1;}else i=0;j=i;}else j=0;}else j=1;}else j=0;}else j=1;l=e;return j|0;}function AA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(gA(a,b,0)|0)d=1;else d=gA(b,10936,0)|0;return d|0;}function BA(a){a=a|0;_z(a);Vz(a);return;}function CA(a,b,c){a=a|0;b=b|0;c=c|0;return 0;}function DA(a){a=a|0;_z(a);Vz(a);return;}function EA(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(gA(b,c[d+8>>2]|0,h)|0)jA(0,d,e,f,g);else{i=d+52|0;j=a[i>>0]|0;k=d+53|0;l=a[k>>0]|0;m=c[b+12>>2]|0;n=b+16+(m<<3)|0;a[i>>0]=0;a[k>>0]=0;IA(b+16|0,d,e,f,g,h);a:do{if((m|0)>1){o=d+24|0;p=b+8|0;q=d+54|0;r=b+24|0;do{if(a[q>>0]|0)break a;if(!(a[i>>0]|0)){if(a[k>>0]|0?(c[p>>2]&1|0)==0:0)break a;}else{if((c[o>>2]|0)==1)break a;if(!(c[p>>2]&2))break a;}a[i>>0]=0;a[k>>0]=0;IA(r,d,e,f,g,h);r=r+8|0;}while(r>>>0<n>>>0);}}while(0);a[i>>0]=j;a[k>>0]=l;}return;}function FA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;a:do{if(!(gA(b,c[d+8>>2]|0,g)|0)){if(!(gA(b,c[d>>2]|0,g)|0)){h=c[b+12>>2]|0;i=b+16+(h<<3)|0;JA(b+16|0,d,e,f,g);j=b+24|0;if((h|0)<=1)break;h=c[b+8>>2]|0;if((h&2|0)==0?(k=d+36|0,(c[k>>2]|0)!=1):0){if(!(h&1)){h=d+54|0;l=j;while(1){if(a[h>>0]|0)break a;if((c[k>>2]|0)==1)break a;JA(l,d,e,f,g);l=l+8|0;if(l>>>0>=i>>>0)break a;}}l=d+24|0;h=d+54|0;m=j;while(1){if(a[h>>0]|0)break a;if((c[k>>2]|0)==1?(c[l>>2]|0)==1:0)break a;JA(m,d,e,f,g);m=m+8|0;if(m>>>0>=i>>>0)break a;}}m=d+54|0;l=j;while(1){if(a[m>>0]|0)break a;JA(l,d,e,f,g);l=l+8|0;if(l>>>0>=i>>>0)break a;}}if((c[d+16>>2]|0)!=(e|0)?(i=d+20|0,(c[i>>2]|0)!=(e|0)):0){c[d+32>>2]=f;l=d+44|0;if((c[l>>2]|0)==4)break;m=b+16+(c[b+12>>2]<<3)|0;j=d+52|0;k=d+53|0;h=d+54|0;n=b+8|0;o=d+24|0;p=0;q=b+16|0;r=0;b:while(1){if(q>>>0>=m>>>0){s=p;t=18;break;}a[j>>0]=0;a[k>>0]=0;IA(q,d,e,e,1,g);if(a[h>>0]|0){s=p;t=18;break;}do{if(a[k>>0]|0){if(!(a[j>>0]|0))if(!(c[n>>2]&1)){s=1;t=18;break b;}else{u=1;v=r;break;}if((c[o>>2]|0)==1){t=23;break b;}if(!(c[n>>2]&2)){t=23;break b;}else{u=1;v=1;}}else{u=p;v=r;}}while(0);p=u;q=q+8|0;r=v;}do{if((t|0)==18){if((!r?(c[i>>2]=e,q=d+40|0,c[q>>2]=(c[q>>2]|0)+1,(c[d+36>>2]|0)==1):0)?(c[o>>2]|0)==2:0){a[h>>0]=1;if(s){t=23;break;}else{w=4;break;}}if(s)t=23;else w=4;}}while(0);if((t|0)==23)w=3;c[l>>2]=w;break;}if((f|0)==1)c[d+32>>2]=1;}else iA(0,d,e,f);}while(0);return;}function GA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:do{if(!(gA(b,c[d+8>>2]|0,0)|0)){g=c[b+12>>2]|0;h=b+16+(g<<3)|0;HA(b+16|0,d,e,f);if((g|0)>1){g=d+54|0;i=b+24|0;do{HA(i,d,e,f);if(a[g>>0]|0)break a;i=i+8|0;}while(i>>>0<h>>>0);}}else hA(0,d,e,f);}while(0);return;}function HA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=c[a+4>>2]|0;g=f>>8;if(!(f&1))h=g;else h=c[(c[d>>2]|0)+g>>2]|0;g=c[a>>2]|0;zc[c[(c[g>>2]|0)+28>>2]&7](g,b,d+h|0,(f&2|0)==0?2:e);return;}function IA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=c[a+4>>2]|0;i=h>>8;if(!(h&1))j=i;else j=c[(c[e>>2]|0)+i>>2]|0;i=c[a>>2]|0;Bc[c[(c[i>>2]|0)+20>>2]&3](i,b,d,e+j|0,(h&2|0)==0?2:f,g);return;}function JA(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[a+4>>2]|0;h=g>>8;if(!(g&1))i=h;else i=c[(c[d>>2]|0)+h>>2]|0;h=c[a>>2]|0;Ac[c[(c[h>>2]|0)+24>>2]&3](h,b,d+i|0,(g&2|0)==0?2:e,f);return;}function KA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;g=l;l=l+4192|0;h=g+4176|0;i=g;j=g+4112|0;if((b|0)!=0?(k=(d|0)!=0,m=(e|0)==0,!(k&m)):0){if(k)n=c[e>>2]|0;else n=0;LA(i);MA(j,i);k=j+48|0;o=j+61|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;a[k+12>>0]=0;a[o>>0]=1;k=j+32|0;p=j+36|0;q=c[p>>2]|0;if(q>>>0<(c[j+40>>2]|0)>>>0){NA(h,i);c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=c[h>>2];c[p>>2]=(c[p>>2]|0)+16;}else OA(k,i);q=j+62|0;a[q>>0]=0;a[j+63>>0]=1;c[h>>2]=0;r=b+(Ty(b)|0)|0;PA(b,r,j,h);s=c[h>>2]|0;do{if(!((s|0)!=0|(a[q>>0]|0)==0)){t=c[k>>2]|0;if((t|0)!=(c[p>>2]|0)?(c[t>>2]|0)!=(c[t+4>>2]|0):0){a[q>>0]=0;a[o>>0]=0;t=c[j>>2]|0;u=j+4|0;v=c[u>>2]|0;while(1){if((v|0)==(t|0))break;w=v+-24|0;QA(w);v=w;}c[u>>2]=t;v=c[j+16>>2]|0;w=j+20|0;x=c[w>>2]|0;while(1){if((x|0)==(v|0))break;y=x+-16|0;RA(y);x=y;}c[w>>2]=v;PA(b,r,j,h);if(!(a[q>>0]|0)){z=c[h>>2]|0;A=22;break;}else{c[h>>2]=-2;B=0;C=-2;break;}}else A=23;}else{z=s;A=22;}}while(0);if((A|0)==22)if(!z)A=23;else{B=0;C=z;}do{if((A|0)==23){z=j+4|0;s=SA((c[z>>2]|0)+-24|0)|0;q=s+1|0;if(q>>>0>n>>>0){r=Fy(d,q)|0;if(!r){c[h>>2]=-1;B=0;C=-1;break;}if(m)D=r;else{c[e>>2]=q;D=r;}}else if(!d){B=0;C=0;break;}else D=d;r=c[z>>2]|0;q=r+-12|0;b=a[q+11>>0]|0;o=b<<24>>24<0;TA(r+-24|0,o?c[q>>2]|0:q,o?c[r+-8>>2]|0:b&255)|0;b=(c[z>>2]|0)+-24|0;if((a[b+11>>0]|0)<0)E=c[b>>2]|0;else E=b;mE(D|0,E|0,s|0)|0;a[D+s>>0]=0;B=D;C=0;}}while(0);if(f|0)c[f>>2]=C;UA(j);VA(i);F=B;}else if(!f)F=0;else{c[f>>2]=-3;F=0;}l=g;return F|0;}function LA(a){a=a|0;c[a+4096>>2]=a;return;}function MA(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;SD(e,b);c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=c[e>>2];NA(e,b);TD(a+16|0,e);UD(e,b);VD(a+32|0,e);l=d;return;}function NA(a,b){a=a|0;b=b|0;c[a>>2]=b;return;}function OA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;d=l;l=l+32|0;e=d+20|0;f=d;g=a+4|0;h=((c[g>>2]|0)-(c[a>>2]|0)>>4)+1|0;i=qD(a)|0;if(i>>>0<h>>>0)Wz(a);else{j=c[a>>2]|0;k=(c[a+8>>2]|0)-j|0;m=k>>3;rD(f,k>>4>>>0<i>>>1>>>0?m>>>0<h>>>0?h:m:i,(c[g>>2]|0)-j>>4,a+12|0);j=f+8|0;g=c[j>>2]|0;NA(e,b);c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=c[e>>2];c[j>>2]=g+16;sD(a,f);tD(f);l=d;return;}}function PA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a:do{if(b>>>0<d>>>0){b:do{if((a[b>>0]|0)!=95){if((mB(b,d,e)|0)!=(d|0)){c[f>>2]=-2;break a;}}else{if((d-b|0)<=3){c[f>>2]=-2;break a;}switch(a[b+1>>0]|0){case 90:{g=b+2|0;h=jB(g,d,e)|0;if(!((h|0)==(g|0)|(h|0)==(d|0))?(a[h>>0]|0)==46:0)i=kB(h,d,e)|0;else i=h;if((i|0)==(d|0))break b;c[f>>2]=-2;break a;break;}case 95:{j=11;break;}default:{}}if(((j|0)==11?(a[b+2>>0]|0)==95:0)?(a[b+3>>0]|0)==90:0){h=b+4|0;g=jB(h,d,e)|0;if((g|0)==(h|0)|(g|0)==(d|0)){c[f>>2]=-2;break a;}if((lB(g,d,e)|0)==(d|0))break;c[f>>2]=-2;break a;}c[f>>2]=-2;break a;}}while(0);if((c[f>>2]|0)==0?(c[e>>2]|0)==(c[e+4>>2]|0):0)c[f>>2]=-2;}else c[f>>2]=-2;}while(0);return;}function QA(a){a=a|0;iB(a+12|0);iB(a);return;}function RA(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;if(b|0){d=a+4|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-24|0;QA(f);e=f;}c[d>>2]=b;b=c[a>>2]|0;hB(a+12|0,b,((c[a+8>>2]|0)-b|0)/24|0);}return;}function SA(b){b=b|0;var d=0,e=0,f=0;d=a[b+11>>0]|0;if(d<<24>>24<0)e=c[b+4>>2]|0;else e=d&255;d=a[b+12+11>>0]|0;if(d<<24>>24<0)f=c[b+16>>2]|0;else f=d&255;return f+e|0;}function TA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+16|0;g=f;h=b+11|0;i=a[h>>0]|0;j=i<<24>>24<0;if(j){k=c[b+4>>2]|0;m=(c[b+8>>2]&2147483647)+-1|0;}else{k=i&255;m=10;}if((m-k|0)>>>0>=e>>>0){if(e|0){if(j)n=c[b>>2]|0;else n=b;bB(n+k|0,d,e)|0;j=k+e|0;if((a[h>>0]|0)<0)c[b+4>>2]=j;else a[h>>0]=j;a[g>>0]=0;cB(n+j|0,g);}}else dB(b,m,k+e-m|0,k,k,0,e,d);l=f;return b|0;}function UA(a){a=a|0;WA(a+32|0);XA(a+16|0);RA(a);return;}function VA(a){a=a|0;c[a+4096>>2]=0;return;}function WA(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;if(b|0){d=a+4|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-16|0;XA(f);e=f;}c[d>>2]=b;b=c[a>>2]|0;aB(a+12|0,b,(c[a+8>>2]|0)-b>>4);}return;}function XA(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;if(b|0){d=a+4|0;e=c[d>>2]|0;while(1){if((e|0)==(b|0))break;f=e+-16|0;RA(f);e=f;}c[d>>2]=b;b=c[a>>2]|0;YA(a+12|0,b,(c[a+8>>2]|0)-b>>4);}return;}function YA(a,b,d){a=a|0;b=b|0;d=d|0;ZA(c[a>>2]|0,b,d<<4);return;}function ZA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(_A(a,b)|0){e=b+($A(d)|0)|0;d=a+4096|0;if((e|0)==(c[d>>2]|0))c[d>>2]=b;}else Dy(b);return;}function _A(a,b){a=a|0;b=b|0;return(a+4096|0)>>>0>=b>>>0&a>>>0<=b>>>0|0;}function $A(a){a=a|0;return a+15&-16|0;}function aB(a,b,d){a=a|0;b=b|0;d=d|0;ZA(c[a>>2]|0,b,d<<4);return;}function bB(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)mE(a|0,b|0,c|0)|0;return a|0;}function cB(b,c){b=b|0;c=c|0;a[b>>0]=a[c>>0]|0;return;}function dB(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0;k=l;l=l+16|0;m=k;if((-18-d|0)>>>0<e>>>0)eB(b);if((a[b+11>>0]|0)<0)n=c[b>>2]|0;else n=b;if(d>>>0<2147483623){o=e+d|0;e=d<<1;p=o>>>0<e>>>0?e:o;q=p>>>0<11?11:p+16&-16;}else q=-17;p=fB(q)|0;if(g|0)bB(p,n,g)|0;if(i|0)bB(p+g|0,j,i)|0;j=f-h|0;f=j-g|0;if(f|0)bB(p+g+i|0,n+g+h|0,f)|0;if((d|0)!=10)gB(n);c[b>>2]=p;c[b+8>>2]=q|-2147483648;q=j+i|0;c[b+4>>2]=q;a[m>>0]=0;cB(p+q|0,m);l=k;return;}function eB(a){a=a|0;lb();}function fB(a){a=a|0;return Cy(a)|0;}function gB(a){a=a|0;Dy(a);return;}function hB(a,b,d){a=a|0;b=b|0;d=d|0;ZA(c[a>>2]|0,b,d*24|0);return;}function iB(b){b=b|0;if((a[b+11>>0]|0)<0)gB(c[b>>2]|0);return;}function jB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;f=l;l=l+64|0;g=f+48|0;h=f+40|0;i=f+32|0;j=f+24|0;k=f+12|0;m=f;if((b|0)!=(d|0)){n=e+56|0;MD(h,n);c[n>>2]=(c[n>>2]|0)+1;o=e+61|0;ND(i,o);if((c[n>>2]|0)>>>0>1)a[o>>0]=1;a:do{switch(a[b>>0]|0){case 84:case 71:{p=OD(b,d,e)|0;q=1;break;}default:{n=MB(b,d,e)|0;r=c[e+48>>2]|0;s=c[e+52>>2]|0;b:do{if((n|0)!=(b|0)){if((n|0)!=(d|0)){switch(a[n>>0]|0){case 46:case 69:{t=n;break b;break;}default:{}}ND(j,o);a[o>>0]=0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;u=0;while(1){if((u|0)==3)break;c[k+(u<<2)>>2]=0;u=u+1|0;}u=e+4|0;v=c[u>>2]|0;c:do{if((c[e>>2]|0)!=(v|0)){w=v+-24|0;x=a[w+11>>0]|0;y=x<<24>>24<0;if(y)z=c[v+-20>>2]|0;else z=x&255;if(z){if(!(a[e+60>>0]|0)){if(y){A=c[w>>2]|0;B=c[v+-20>>2]|0;}else{A=w;B=x&255;}if((a[A+B+-1>>0]|0)==62){if(y){C=c[v+-20>>2]|0;D=c[w>>2]|0;}else{C=x&255;D=w;}if((a[D+(C+-2)>>0]|0)!=45){if(y){E=c[v+-20>>2]|0;F=c[w>>2]|0;}else{E=x&255;F=w;}if((a[F+(E+-2)>>0]|0)!=62){x=mB(n,d,e)|0;if((x|0)==(n|0)){G=b;H=0;break;}y=c[u>>2]|0;I=y;if(((y-(c[e>>2]|0)|0)/24|0)>>>0<2){G=b;H=0;break;}y=I+-24|0;c[m>>2]=c[y>>2];c[m+4>>2]=c[y+4>>2];c[m+8>>2]=c[y+8>>2];J=0;while(1){if((J|0)==3)break;c[y+(J<<2)>>2]=0;J=J+1|0;}J=I+-12|0;y=k+11|0;if((a[y>>0]|0)<0){K=c[k>>2]|0;a[g>>0]=0;cB(K,g);c[k+4>>2]=0;}else{a[g>>0]=0;cB(k,g);a[y>>0]=0;}TB(k);c[k>>2]=c[J>>2];c[k+4>>2]=c[J+4>>2];c[k+8>>2]=c[J+8>>2];K=0;while(1){if((K|0)==3)break;c[J+(K<<2)>>2]=0;K=K+1|0;}K=a[y>>0]|0;if(!((K<<24>>24<0?c[k+4>>2]|0:K&255)|0))NC(m,32);K=c[u>>2]|0;J=0;while(1){if((J|0)==-1)break;I=J+-1|0;QA(K+(I*24|0)|0);J=I;}c[u>>2]=K+-24;J=a[m+11>>0]|0;y=J<<24>>24<0;zD(K+-48|0,0,y?c[m>>2]|0:m,y?c[m+4>>2]|0:J&255)|0;iB(m);L=x;M=(c[u>>2]|0)+-24|0;}else{L=n;M=w;}}else{L=n;M=w;}}else{L=n;M=w;}}else{L=n;M=w;}NC(M,40);if((L|0)!=(d|0)?(a[L>>0]|0)==118:0){N=L+1|0;O=c[e>>2]|0;P=c[u>>2]|0;}else Q=50;do{if((Q|0)==50){J=g+11|0;y=g+4|0;I=m+11|0;R=m+4|0;S=1;T=L;d:while(1){U=T;while(1){V=((c[u>>2]|0)-(c[e>>2]|0)|0)/24|0;W=mB(U,d,e)|0;X=c[u>>2]|0;Y=c[e>>2]|0;Z=(X-Y|0)/24|0;if((W|0)==(U|0)){Q=74;break d;}if(Z>>>0>V>>>0)break;else U=W;}c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;_=0;while(1){if((_|0)==3)break;c[g+(_<<2)>>2]=0;_=_+1|0;}_=V;while(1){if(_>>>0>=Z>>>0)break;$=a[J>>0]|0;if(($<<24>>24<0?c[y>>2]|0:$&255)|0)qB(g,18897)|0;FB(m,(c[e>>2]|0)+(_*24|0)|0);$=a[I>>0]|0;aa=$<<24>>24<0;TA(g,aa?c[m>>2]|0:m,aa?c[R>>2]|0:$&255)|0;iB(m);_=_+1|0;}_=V;while(1){if(_>>>0>=Z>>>0)break;$=c[u>>2]|0;aa=0;while(1){if((aa|0)==-1)break;ba=aa+-1|0;QA($+(ba*24|0)|0);aa=ba;}c[u>>2]=$+-24;_=_+1|0;}_=a[J>>0]|0;aa=c[y>>2]|0;ba=_&255;if(!((_<<24>>24<0?aa:ba)|0))ca=S;else{da=c[u>>2]|0;if((c[e>>2]|0)==(da|0)){Q=86;break;}if(S){ea=ba;fa=da;ga=_;ha=aa;}else{qB(da+-24|0,18897)|0;da=a[J>>0]|0;ea=da&255;fa=c[u>>2]|0;ga=da;ha=c[y>>2]|0;}da=ga<<24>>24<0;TA(fa+-24|0,da?c[g>>2]|0:g,da?ha:ea)|0;ca=0;}iB(g);S=ca;T=W;}if((Q|0)==74){N=U;O=Y;P=X;break;}else if((Q|0)==86){iB(g);G=b;H=0;break c;}}}while(0);if((O|0)!=(P|0)){NC(P+-24|0,41);if(r&1|0)qB((c[u>>2]|0)+-24|0,18620)|0;if(r&2|0)qB((c[u>>2]|0)+-24|0,18627)|0;if(r&4|0)qB((c[u>>2]|0)+-24|0,18637)|0;switch(s|0){case 1:{qB((c[u>>2]|0)+-24|0,20101)|0;break;}case 2:{qB((c[u>>2]|0)+-24|0,20104)|0;break;}default:{}}w=a[k+11>>0]|0;x=w<<24>>24<0;TA((c[u>>2]|0)+-24|0,x?c[k>>2]|0:k,x?c[k+4>>2]|0:w&255)|0;G=N;H=1;}else{G=b;H=0;}}else{G=b;H=0;}}else{G=b;H=0;}}while(0);iB(k);PD(j);if(H)t=G;else{p=G;q=0;break a;}}else t=d;}else t=b;}while(0);p=t;q=1;}}}while(0);PD(i);QD(h);if(q){ia=p;Q=90;}else ja=b;}else{ia=b;Q=90;}if((Q|0)==90)ja=ia;l=f;return ja|0;}function kB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+48|0;g=f+24|0;h=f+12|0;i=f;if(((b|0)!=(d|0)?(a[b>>0]|0)==46:0)?(j=e+4|0,(c[e>>2]|0)!=(c[j>>2]|0)):0){c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;QC(i,b,d);pB(i,0,18670)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];e=0;while(1){if((e|0)==3)break;c[i+(e<<2)>>2]=0;e=e+1|0;}qB(h,18673)|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];e=0;while(1){if((e|0)==3)break;c[h+(e<<2)>>2]=0;e=e+1|0;}e=a[g+11>>0]|0;k=e<<24>>24<0;TA((c[j>>2]|0)+-24|0,k?c[g>>2]|0:g,k?c[g+4>>2]|0:e&255)|0;iB(g);iB(h);iB(i);m=d;}else m=b;l=f;return m|0;}function lB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;a:do{if((d-b|0)>12){f=0;g=b;while(1){if(f>>>0>=13)break;if((a[g>>0]|0)!=(a[20306+f>>0]|0)){h=b;break a;}f=f+1|0;g=g+1|0;}b:do{if((g|0)==(d|0))i=d;else{if((a[g>>0]|0)==95){f=g+1|0;if((f|0)==(d|0)){h=b;break a;}if(((a[f>>0]|0)+-48|0)>>>0>=10){h=b;break a;}j=g+2|0;}else j=g;f=j;while(1){if((f|0)==(d|0)){i=d;break b;}if(((a[f>>0]|0)+-48|0)>>>0>=10){i=f;break b;}f=f+1|0;}}}while(0);g=c[e+4>>2]|0;if((c[e>>2]|0)!=(g|0)){pB(g+-24|0,0,20320)|0;h=i;}else h=b;}else h=b;}while(0);return h|0;}function mB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;f=l;l=l+144|0;g=f+128|0;h=f+104|0;i=f+40|0;j=f+88|0;k=f+24|0;m=f+76|0;n=f+12|0;o=f;p=f+64|0;a:do{if((b|0)!=(d|0)){switch(a[b>>0]|0){case 75:case 86:case 114:{c[g>>2]=0;q=nB(b,d,g)|0;b:do{if((q|0)!=(b|0)?(r=(a[q>>0]|0)==70,s=e+4|0,t=((c[s>>2]|0)-(c[e>>2]|0)|0)/24|0,u=mB(q,d,e)|0,v=((c[s>>2]|0)-(c[e>>2]|0)|0)/24|0,(u|0)!=(q|0)):0){s=e+20|0;w=c[s>>2]|0;if(r){x=0;while(1){if((x|0)==-1)break;y=x+-1|0;RA(w+(y<<4)|0);x=y;}x=w+-16|0;c[s>>2]=x;z=x;}else z=w;x=c[e+12>>2]|0;c[h>>2]=x;if(z>>>0<(c[e+24>>2]|0)>>>0){c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=x;c[s>>2]=(c[s>>2]|0)+16;}else oB(e+16|0,h);x=c[g>>2]|0;y=(x&1|0)==0;A=(x&2|0)==0;B=(x&4|0)==0;x=t;while(1){if(x>>>0>=v>>>0){C=u;break b;}if(r){D=c[e>>2]|0;E=D+(x*24|0)+12|0;F=a[E+11>>0]|0;G=F<<24>>24<0;if(G){H=c[D+(x*24|0)+16>>2]|0;I=c[E>>2]|0;}else{H=F&255;I=E;}J=H+-2|0;if((a[I+J>>0]|0)==38)K=H+-3|0;else{if(G){L=c[E>>2]|0;M=c[D+(x*24|0)+16>>2]|0;}else{L=E;M=F&255;}K=(a[L+M+-1>>0]|0)==38?J:H;}if(y)N=K;else{pB(E,K,18620)|0;N=K+6|0;}if(A)O=N;else{pB((c[e>>2]|0)+(x*24|0)+12|0,N,18627)|0;O=N+9|0;}if(!B)pB((c[e>>2]|0)+(x*24|0)+12|0,O,18637)|0;}else{if(!y)qB((c[e>>2]|0)+(x*24|0)|0,18620)|0;if(!A)qB((c[e>>2]|0)+(x*24|0)|0,18627)|0;if(!B)qB((c[e>>2]|0)+(x*24|0)|0,18637)|0;}E=c[s>>2]|0;J=(c[e>>2]|0)+(x*24|0)|0;F=E+-12|0;D=c[F>>2]|0;if((D|0)==(c[E+-8>>2]|0))sB(E+-16|0,J);else{rB(D,J);c[F>>2]=(c[F>>2]|0)+24;}x=x+1|0;}}else C=b;}while(0);P=C;break a;break;}default:{}}q=tB(b,d,e)|0;if((q|0)==(b|0)){c:do{switch(a[b>>0]|0){case 65:{x=uB(b,d,e)|0;if((x|0)==(b|0)){P=b;break a;}s=c[e+4>>2]|0;if((c[e>>2]|0)==(s|0)){P=b;break a;}c[h>>2]=c[e+12>>2];vB(g,s+-24|0,h);s=e+20|0;B=c[s>>2]|0;if(B>>>0<(c[e+24>>2]|0)>>>0){c[B>>2]=0;A=B+4|0;c[A>>2]=0;y=B+8|0;c[y>>2]=0;c[B+12>>2]=c[g+12>>2];c[B>>2]=c[g>>2];B=g+4|0;c[A>>2]=c[B>>2];A=g+8|0;c[y>>2]=c[A>>2];c[A>>2]=0;c[B>>2]=0;c[g>>2]=0;c[s>>2]=(c[s>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=x;break a;break;}case 67:{x=b+1|0;s=mB(x,d,e)|0;if((s|0)==(x|0)){P=b;break a;}x=e+4|0;B=c[x>>2]|0;if((c[e>>2]|0)==(B|0)){P=b;break a;}qB(B+-24|0,18647)|0;B=(c[x>>2]|0)+-24|0;c[h>>2]=c[e+12>>2];vB(g,B,h);B=e+20|0;x=c[B>>2]|0;if(x>>>0<(c[e+24>>2]|0)>>>0){c[x>>2]=0;A=x+4|0;c[A>>2]=0;y=x+8|0;c[y>>2]=0;c[x+12>>2]=c[g+12>>2];c[x>>2]=c[g>>2];x=g+4|0;c[A>>2]=c[x>>2];A=g+8|0;c[y>>2]=c[A>>2];c[A>>2]=0;c[x>>2]=0;c[g>>2]=0;c[B>>2]=(c[B>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=s;break a;break;}case 70:{s=xB(b,d,e)|0;if((s|0)==(b|0)){P=b;break a;}B=c[e+4>>2]|0;if((c[e>>2]|0)==(B|0)){P=b;break a;}c[h>>2]=c[e+12>>2];vB(g,B+-24|0,h);B=e+20|0;x=c[B>>2]|0;if(x>>>0<(c[e+24>>2]|0)>>>0){c[x>>2]=0;A=x+4|0;c[A>>2]=0;y=x+8|0;c[y>>2]=0;c[x+12>>2]=c[g+12>>2];c[x>>2]=c[g>>2];x=g+4|0;c[A>>2]=c[x>>2];A=g+8|0;c[y>>2]=c[A>>2];c[A>>2]=0;c[x>>2]=0;c[g>>2]=0;c[B>>2]=(c[B>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=s;break a;break;}case 71:{s=b+1|0;B=mB(s,d,e)|0;if((B|0)==(s|0)){P=b;break a;}s=e+4|0;x=c[s>>2]|0;if((c[e>>2]|0)==(x|0)){P=b;break a;}qB(x+-24|0,18656)|0;x=(c[s>>2]|0)+-24|0;c[h>>2]=c[e+12>>2];vB(g,x,h);x=e+20|0;s=c[x>>2]|0;if(s>>>0<(c[e+24>>2]|0)>>>0){c[s>>2]=0;A=s+4|0;c[A>>2]=0;y=s+8|0;c[y>>2]=0;c[s+12>>2]=c[g+12>>2];c[s>>2]=c[g>>2];s=g+4|0;c[A>>2]=c[s>>2];A=g+8|0;c[y>>2]=c[A>>2];c[A>>2]=0;c[s>>2]=0;c[g>>2]=0;c[x>>2]=(c[x>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=B;break a;break;}case 77:{B=yB(b,d,e)|0;if((B|0)==(b|0)){P=b;break a;}x=c[e+4>>2]|0;if((c[e>>2]|0)==(x|0)){P=b;break a;}c[h>>2]=c[e+12>>2];vB(g,x+-24|0,h);x=e+20|0;s=c[x>>2]|0;if(s>>>0<(c[e+24>>2]|0)>>>0){c[s>>2]=0;A=s+4|0;c[A>>2]=0;y=s+8|0;c[y>>2]=0;c[s+12>>2]=c[g+12>>2];c[s>>2]=c[g>>2];s=g+4|0;c[A>>2]=c[s>>2];A=g+8|0;c[y>>2]=c[A>>2];c[A>>2]=0;c[s>>2]=0;c[g>>2]=0;c[x>>2]=(c[x>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=B;break a;break;}case 79:{B=e+4|0;x=((c[B>>2]|0)-(c[e>>2]|0)|0)/24|0;s=b+1|0;A=mB(s,d,e)|0;y=((c[B>>2]|0)-(c[e>>2]|0)|0)/24|0;if((A|0)==(s|0)){P=b;break a;}s=c[e+12>>2]|0;c[g>>2]=s;B=e+20|0;r=c[B>>2]|0;if(r>>>0<(c[e+24>>2]|0)>>>0){c[r>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=s;c[B>>2]=(c[B>>2]|0)+16;}else oB(e+16|0,g);s=g+11|0;r=g+4|0;u=x;while(1){if(u>>>0>=y>>>0){P=A;break a;}zB(g,(c[e>>2]|0)+(u*24|0)+12|0,2);x=AB(18667)|0;v=a[s>>0]|0;if((x|0)==((v<<24>>24<0?c[r>>2]|0:v&255)|0))Q=(BB(g,18667,x)|0)==0;else Q=0;iB(g);x=c[e>>2]|0;v=x+(u*24|0)|0;if(!Q){t=x+(u*24|0)+12|0;if((a[t+11>>0]|0)<0)R=c[t>>2]|0;else R=t;if((a[R>>0]|0)==40){qB(v,18675)|0;pB((c[e>>2]|0)+(u*24|0)+12|0,0,18673)|0;}}else{qB(v,18670)|0;pB((c[e>>2]|0)+(u*24|0)+12|0,0,18673)|0;}qB((c[e>>2]|0)+(u*24|0)|0,18677)|0;v=c[B>>2]|0;t=(c[e>>2]|0)+(u*24|0)|0;x=v+-12|0;w=c[x>>2]|0;if((w|0)==(c[v+-8>>2]|0))sB(v+-16|0,t);else{rB(w,t);c[x>>2]=(c[x>>2]|0)+24;}u=u+1|0;}break;}case 80:{u=e+4|0;B=((c[u>>2]|0)-(c[e>>2]|0)|0)/24|0;r=b+1|0;s=mB(r,d,e)|0;A=((c[u>>2]|0)-(c[e>>2]|0)|0)/24|0;if((s|0)==(r|0)){P=b;break a;}u=c[e+12>>2]|0;c[g>>2]=u;y=e+20|0;x=c[y>>2]|0;if(x>>>0<(c[e+24>>2]|0)>>>0){c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=u;c[y>>2]=(c[y>>2]|0)+16;}else oB(e+16|0,g);u=g+11|0;x=g+4|0;t=g+11|0;w=g+4|0;v=B;while(1){if(v>>>0>=A>>>0){P=s;break a;}zB(g,(c[e>>2]|0)+(v*24|0)+12|0,2);B=AB(18667)|0;F=a[u>>0]|0;if((B|0)==((F<<24>>24<0?c[x>>2]|0:F&255)|0))S=(BB(g,18667,B)|0)==0;else S=0;iB(g);B=c[e>>2]|0;F=B+(v*24|0)|0;if(!S){J=B+(v*24|0)+12|0;if((a[J+11>>0]|0)<0)T=c[J>>2]|0;else T=J;if((a[T>>0]|0)==40){qB(F,18675)|0;pB((c[e>>2]|0)+(v*24|0)+12|0,0,18673)|0;}}else{qB(F,18670)|0;pB((c[e>>2]|0)+(v*24|0)+12|0,0,18673)|0;}if((a[r>>0]|0)==85){zB(g,(c[e>>2]|0)+(v*24|0)|0,12);F=AB(18680)|0;J=a[t>>0]|0;if((F|0)==((J<<24>>24<0?c[w>>2]|0:J&255)|0))U=(BB(g,18680,F)|0)!=0;else U=1;iB(g);F=(c[e>>2]|0)+(v*24|0)|0;if(U){V=F;W=113;}else CB(F);}else{V=(c[e>>2]|0)+(v*24|0)|0;W=113;}if((W|0)==113){W=0;qB(V,18693)|0;}F=c[y>>2]|0;J=(c[e>>2]|0)+(v*24|0)|0;B=F+-12|0;D=c[B>>2]|0;if((D|0)==(c[F+-8>>2]|0))sB(F+-16|0,J);else{rB(D,J);c[B>>2]=(c[B>>2]|0)+24;}v=v+1|0;}break;}case 82:{v=e+4|0;y=((c[v>>2]|0)-(c[e>>2]|0)|0)/24|0;w=b+1|0;t=mB(w,d,e)|0;r=((c[v>>2]|0)-(c[e>>2]|0)|0)/24|0;if((t|0)==(w|0)){P=b;break a;}w=c[e+12>>2]|0;c[g>>2]=w;v=e+20|0;x=c[v>>2]|0;if(x>>>0<(c[e+24>>2]|0)>>>0){c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=w;c[v>>2]=(c[v>>2]|0)+16;}else oB(e+16|0,g);w=g+11|0;x=g+4|0;u=y;while(1){if(u>>>0>=r>>>0){P=t;break a;}zB(g,(c[e>>2]|0)+(u*24|0)+12|0,2);y=AB(18667)|0;s=a[w>>0]|0;if((y|0)==((s<<24>>24<0?c[x>>2]|0:s&255)|0))X=(BB(g,18667,y)|0)==0;else X=0;iB(g);y=c[e>>2]|0;s=y+(u*24|0)|0;if(!X){A=y+(u*24|0)+12|0;if((a[A+11>>0]|0)<0)Y=c[A>>2]|0;else Y=A;if((a[Y>>0]|0)==40){qB(s,18675)|0;pB((c[e>>2]|0)+(u*24|0)+12|0,0,18673)|0;}}else{qB(s,18670)|0;pB((c[e>>2]|0)+(u*24|0)+12|0,0,18673)|0;}qB((c[e>>2]|0)+(u*24|0)|0,18695)|0;s=c[v>>2]|0;A=(c[e>>2]|0)+(u*24|0)|0;y=s+-12|0;B=c[y>>2]|0;if((B|0)==(c[s+-8>>2]|0))sB(s+-16|0,A);else{rB(B,A);c[y>>2]=(c[y>>2]|0)+24;}u=u+1|0;}break;}case 84:{u=e+4|0;v=((c[u>>2]|0)-(c[e>>2]|0)|0)/24|0;x=DB(b,d,e)|0;w=((c[u>>2]|0)-(c[e>>2]|0)|0)/24|0;if((x|0)==(b|0)){P=b;break a;}t=e+16|0;r=e+12|0;y=c[r>>2]|0;c[g>>2]=y;A=e+20|0;B=c[A>>2]|0;s=e+24|0;if(B>>>0<(c[s>>2]|0)>>>0){c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;c[B+12>>2]=y;c[A>>2]=(c[A>>2]|0)+16;}else oB(t,g);y=v;while(1){if(y>>>0>=w>>>0)break;B=c[A>>2]|0;J=(c[e>>2]|0)+(y*24|0)|0;D=B+-12|0;F=c[D>>2]|0;if((F|0)==(c[B+-8>>2]|0))sB(B+-16|0,J);else{rB(F,J);c[D>>2]=(c[D>>2]|0)+24;}y=y+1|0;}if(!((w|0)==(v+1|0)&(a[e+63>>0]|0)!=0)){P=x;break a;}y=EB(x,d,e)|0;if((y|0)==(x|0)){P=x;break a;}FB(g,(c[u>>2]|0)+-24|0);D=c[u>>2]|0;J=0;while(1){if((J|0)==-1)break;F=J+-1|0;QA(D+(F*24|0)|0);J=F;}c[u>>2]=D+-24;J=a[g+11>>0]|0;x=J<<24>>24<0;TA(D+-48|0,x?c[g>>2]|0:g,x?c[g+4>>2]|0:J&255)|0;J=(c[u>>2]|0)+-24|0;c[i>>2]=c[r>>2];vB(h,J,i);J=c[A>>2]|0;if(J>>>0<(c[s>>2]|0)>>>0){c[J>>2]=0;x=J+4|0;c[x>>2]=0;v=J+8|0;c[v>>2]=0;c[J+12>>2]=c[h+12>>2];c[J>>2]=c[h>>2];J=h+4|0;c[x>>2]=c[J>>2];x=h+8|0;c[v>>2]=c[x>>2];c[x>>2]=0;c[J>>2]=0;c[h>>2]=0;c[A>>2]=(c[A>>2]|0)+16;}else wB(t,h);RA(h);iB(g);P=y;break a;break;}case 85:{J=b+1|0;if((J|0)==(d|0)){P=b;break a;}x=GB(J,d,e)|0;if((x|0)==(J|0)){P=b;break a;}J=mB(x,d,e)|0;if((J|0)==(x|0)){P=b;break a;}x=e+4|0;v=c[x>>2]|0;if(((v-(c[e>>2]|0)|0)/24|0)>>>0<2){P=b;break a;}FB(g,v+-24|0);v=c[x>>2]|0;w=0;while(1){if((w|0)==-1)break;F=w+-1|0;QA(v+(F*24|0)|0);w=F;}c[x>>2]=v+-24;zB(h,v+-48|0,9);w=AB(18697)|0;y=a[h+11>>0]|0;if((w|0)==((y<<24>>24<0?c[h+4>>2]|0:y&255)|0)){y=(BB(h,18697,w)|0)==0;iB(h);if(y){FB(h,(c[x>>2]|0)+-24|0);y=c[x>>2]|0;w=0;while(1){if((w|0)==-1)break;t=w+-1|0;QA(y+(t*24|0)|0);w=t;}c[x>>2]=y+-24;w=h+11|0;v=a[w>>0]|0;t=v<<24>>24<0;A=h+4|0;s=t?c[h>>2]|0:h;r=GB(s+9|0,s+(t?c[A>>2]|0:v&255)|0,e)|0;if((r|0)==(((a[w>>0]|0)<0?c[h>>2]|0:h)+9|0)){HB(k,g,18707);r=a[w>>0]|0;w=r<<24>>24<0;TA(k,w?c[h>>2]|0:h,w?c[A>>2]|0:r&255)|0;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];c[p+8>>2]=c[k+8>>2];r=0;while(1){if((r|0)==3)break;c[k+(r<<2)>>2]=0;r=r+1|0;}IB(i,p);r=c[x>>2]|0;if(r>>>0<(c[e+8>>2]|0)>>>0){KB(r,i);c[x>>2]=(c[x>>2]|0)+24;}else LB(e,i);QA(i);iB(p);iB(k);}else{HB(n,g,18709);FB(o,(c[x>>2]|0)+-24|0);r=a[o+11>>0]|0;y=r<<24>>24<0;TA(n,y?c[o>>2]|0:o,y?c[o+4>>2]|0:r&255)|0;c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];r=0;while(1){if((r|0)==3)break;c[n+(r<<2)>>2]=0;r=r+1|0;}qB(k,18711)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];r=0;while(1){if((r|0)==3)break;c[k+(r<<2)>>2]=0;r=r+1|0;}IB(i,m);JB((c[x>>2]|0)+-24|0,i);QA(i);iB(m);iB(k);iB(o);iB(n);}iB(h);}else W=167;}else{iB(h);W=167;}if((W|0)==167){HB(i,g,18707);FB(k,(c[x>>2]|0)+-24|0);r=a[k+11>>0]|0;y=r<<24>>24<0;TA(i,y?c[k>>2]|0:k,y?c[k+4>>2]|0:r&255)|0;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];r=0;while(1){if((r|0)==3)break;c[i+(r<<2)>>2]=0;r=r+1|0;}IB(h,j);JB((c[x>>2]|0)+-24|0,h);QA(h);iB(j);iB(k);iB(i);}r=(c[x>>2]|0)+-24|0;c[i>>2]=c[e+12>>2];vB(h,r,i);r=e+20|0;y=c[r>>2]|0;if(y>>>0<(c[e+24>>2]|0)>>>0){c[y>>2]=0;A=y+4|0;c[A>>2]=0;w=y+8|0;c[w>>2]=0;c[y+12>>2]=c[h+12>>2];c[y>>2]=c[h>>2];y=h+4|0;c[A>>2]=c[y>>2];A=h+8|0;c[w>>2]=c[A>>2];c[A>>2]=0;c[y>>2]=0;c[h>>2]=0;c[r>>2]=(c[r>>2]|0)+16;}else wB(e+16|0,h);RA(h);iB(g);P=J;break a;break;}case 83:{r=b+1|0;if((r|0)!=(d|0)?(a[r>>0]|0)==116:0){r=MB(b,d,e)|0;if((r|0)==(b|0)){P=b;break a;}y=c[e+4>>2]|0;if((c[e>>2]|0)==(y|0)){P=b;break a;}c[h>>2]=c[e+12>>2];vB(g,y+-24|0,h);y=e+20|0;A=c[y>>2]|0;if(A>>>0<(c[e+24>>2]|0)>>>0){c[A>>2]=0;w=A+4|0;c[w>>2]=0;v=A+8|0;c[v>>2]=0;c[A+12>>2]=c[g+12>>2];c[A>>2]=c[g>>2];A=g+4|0;c[w>>2]=c[A>>2];w=g+8|0;c[v>>2]=c[w>>2];c[w>>2]=0;c[A>>2]=0;c[g>>2]=0;c[y>>2]=(c[y>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=r;break a;}r=NB(b,d,e)|0;if((r|0)==(b|0)){P=b;break a;}y=EB(r,d,e)|0;if((y|0)==(r|0)){P=r;break a;}A=e+4|0;w=c[A>>2]|0;if(((w-(c[e>>2]|0)|0)/24|0)>>>0<2){P=r;break a;}FB(g,w+-24|0);w=c[A>>2]|0;r=0;while(1){if((r|0)==-1)break;v=r+-1|0;QA(w+(v*24|0)|0);r=v;}c[A>>2]=w+-24;r=a[g+11>>0]|0;J=r<<24>>24<0;TA(w+-48|0,J?c[g>>2]|0:g,J?c[g+4>>2]|0:r&255)|0;r=(c[A>>2]|0)+-24|0;c[i>>2]=c[e+12>>2];vB(h,r,i);r=e+20|0;J=c[r>>2]|0;if(J>>>0<(c[e+24>>2]|0)>>>0){c[J>>2]=0;x=J+4|0;c[x>>2]=0;v=J+8|0;c[v>>2]=0;c[J+12>>2]=c[h+12>>2];c[J>>2]=c[h>>2];J=h+4|0;c[x>>2]=c[J>>2];x=h+8|0;c[v>>2]=c[x>>2];c[x>>2]=0;c[J>>2]=0;c[h>>2]=0;c[r>>2]=(c[r>>2]|0)+16;}else wB(e+16|0,h);RA(h);iB(g);P=y;break a;break;}case 68:{r=b+1|0;if((r|0)!=(d|0))switch(a[r>>0]|0){case 112:{r=e+4|0;J=((c[r>>2]|0)-(c[e>>2]|0)|0)/24|0;x=b+2|0;v=mB(x,d,e)|0;t=((c[r>>2]|0)-(c[e>>2]|0)|0)/24|0;if((v|0)==(x|0))break c;x=c[e+12>>2]|0;c[g>>2]=x;r=e+20|0;s=c[r>>2]|0;if(s>>>0<(c[e+24>>2]|0)>>>0){c[s>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=x;c[r>>2]=(c[r>>2]|0)+16;}else oB(e+16|0,g);x=J;while(1){if(x>>>0>=t>>>0){P=v;break a;}J=c[r>>2]|0;s=(c[e>>2]|0)+(x*24|0)|0;u=J+-12|0;D=c[u>>2]|0;if((D|0)==(c[J+-8>>2]|0))sB(J+-16|0,s);else{rB(D,s);c[u>>2]=(c[u>>2]|0)+24;}x=x+1|0;}break;}case 84:case 116:{x=OB(b,d,e)|0;if((x|0)==(b|0))break c;r=c[e+4>>2]|0;if((c[e>>2]|0)==(r|0)){P=b;break a;}c[h>>2]=c[e+12>>2];vB(g,r+-24|0,h);r=e+20|0;v=c[r>>2]|0;if(v>>>0<(c[e+24>>2]|0)>>>0){c[v>>2]=0;t=v+4|0;c[t>>2]=0;y=v+8|0;c[y>>2]=0;c[v+12>>2]=c[g+12>>2];c[v>>2]=c[g>>2];v=g+4|0;c[t>>2]=c[v>>2];t=g+8|0;c[y>>2]=c[t>>2];c[t>>2]=0;c[v>>2]=0;c[g>>2]=0;c[r>>2]=(c[r>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=x;break a;break;}case 118:{x=PB(b,d,e)|0;if((x|0)==(b|0))break c;r=c[e+4>>2]|0;if((c[e>>2]|0)==(r|0)){P=b;break a;}c[h>>2]=c[e+12>>2];vB(g,r+-24|0,h);r=e+20|0;v=c[r>>2]|0;if(v>>>0<(c[e+24>>2]|0)>>>0){c[v>>2]=0;t=v+4|0;c[t>>2]=0;y=v+8|0;c[y>>2]=0;c[v+12>>2]=c[g+12>>2];c[v>>2]=c[g>>2];v=g+4|0;c[t>>2]=c[v>>2];t=g+8|0;c[y>>2]=c[t>>2];c[t>>2]=0;c[v>>2]=0;c[g>>2]=0;c[r>>2]=(c[r>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=x;break a;break;}default:break c;}break;}default:{}}}while(0);x=tB(b,d,e)|0;if((x|0)==(b|0)){r=MB(b,d,e)|0;if((r|0)!=(b|0)?(v=c[e+4>>2]|0,(c[e>>2]|0)!=(v|0)):0){c[h>>2]=c[e+12>>2];vB(g,v+-24|0,h);v=e+20|0;t=c[v>>2]|0;if(t>>>0<(c[e+24>>2]|0)>>>0){c[t>>2]=0;y=t+4|0;c[y>>2]=0;A=t+8|0;c[A>>2]=0;c[t+12>>2]=c[g+12>>2];c[t>>2]=c[g>>2];t=g+4|0;c[y>>2]=c[t>>2];y=g+8|0;c[A>>2]=c[y>>2];c[y>>2]=0;c[t>>2]=0;c[g>>2]=0;c[v>>2]=(c[v>>2]|0)+16;}else wB(e+16|0,g);RA(g);P=r;}else P=b;}else P=x;}else P=q;}else P=b;}while(0);l=f;return P|0;}function nB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c[e>>2]=0;if((b|0)!=(d|0)){d=a[b>>0]|0;if(d<<24>>24==114){c[e>>2]=4;f=b+1|0;g=f;h=4;i=a[f>>0]|0;}else{g=b;h=0;i=d;}if(i<<24>>24==86){d=h|2;c[e>>2]=d;f=g+1|0;j=f;k=a[f>>0]|0;l=d;}else{j=g;k=i;l=h;}if(k<<24>>24==75){c[e>>2]=l|1;m=j+1|0;}else m=j;}else m=b;return m|0;}function oB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=l;l=l+32|0;e=d;f=a+4|0;g=((c[f>>2]|0)-(c[a>>2]|0)>>4)+1|0;h=AD(a)|0;if(h>>>0<g>>>0)Wz(a);else{i=c[a>>2]|0;j=(c[a+8>>2]|0)-i|0;k=j>>3;BD(e,j>>4>>>0<h>>>1>>>0?k>>>0<g>>>0?g:k:h,(c[f>>2]|0)-i>>4,a+12|0);i=e+8|0;f=c[i>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=c[b>>2];c[i>>2]=f+16;CD(a,e);DD(e);l=d;return;}}function pB(a,b,c){a=a|0;b=b|0;c=c|0;return zD(a,b,c,AB(c)|0)|0;}function qB(a,b){a=a|0;b=b|0;return TA(a,b,AB(b)|0)|0;}function rB(a,b){a=a|0;b=b|0;TC(a,b);TC(a+12|0,b+12|0);return;}function sB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=l;l=l+32|0;e=d;f=a+4|0;g=(((c[f>>2]|0)-(c[a>>2]|0)|0)/24|0)+1|0;h=XC(a)|0;if(h>>>0<g>>>0)Wz(a);else{i=c[a>>2]|0;j=((c[a+8>>2]|0)-i|0)/24|0;k=j<<1;YC(e,j>>>0<h>>>1>>>0?k>>>0<g>>>0?g:k:h,((c[f>>2]|0)-i|0)/24|0,a+12|0);i=e+8|0;f=c[i>>2]|0;rB(f,b);c[i>>2]=f+24;ZC(a,e);_C(e);l=d;return;}}function tB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+32|0;g=f;a:do{if((b|0)==(d|0))h=b;else do{switch(a[b>>0]|0){case 118:{cD(g,20112);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 119:{HD(g);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 98:{cD(g,20117);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 99:{cD(g,19886);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 97:{JC(g,19891);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 104:{gD(g,19903);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 115:{sC(g,19917);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 116:{KC(g,19923);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 105:{ID(g,20122);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 106:{LC(g,20126);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 108:{cD(g,20139);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 109:{gD(g,20144);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 120:{GC(g,20158);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 121:{JD(g);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 110:{KD(g,19952);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 111:{HC(g,19961);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 102:{sC(g,20168);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 100:{LD(g);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 101:{JC(g,20174);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 103:{FC(g,20186);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 122:{ID(g,20197);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);h=b+1|0;break a;break;}case 117:{i=b+1|0;j=GB(i,d,e)|0;h=(j|0)==(i|0)?b:j;break a;break;}case 68:{j=b+1|0;if((j|0)==(d|0)){h=b;break a;}switch(a[j>>0]|0){case 100:{GC(g,20201);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}case 101:{FC(g,20211);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}case 102:{GC(g,20222);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}case 104:{GC(g,20232);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}case 105:{KD(g,20242);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}case 115:{KD(g,20251);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}case 97:{cD(g,20260);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}case 110:{KC(g,20265);j=e+4|0;i=c[j>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);h=b+2|0;break a;break;}default:{h=b;break a;}}break;}default:{h=b;break a;}}}while(0);}while(0);l=f;return h|0;}function uB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=l;l=l+112|0;g=f+96|0;h=f+72|0;i=f+48|0;j=f+36|0;k=f+24|0;m=f+12|0;n=f;do{if(((b|0)!=(d|0)?(a[b>>0]|0)==65:0)?(o=b+1|0,(o|0)!=(d|0)):0){p=a[o>>0]|0;if(p<<24>>24==95){q=b+2|0;r=mB(q,d,e)|0;if((r|0)==(q|0)){s=b;break;}q=e+4|0;t=c[q>>2]|0;if((c[e>>2]|0)==(t|0)){s=b;break;}zB(g,t+-12|0,2);t=AB(18667)|0;u=a[g+11>>0]|0;if((t|0)==((u<<24>>24<0?c[g+4>>2]|0:u&255)|0)){u=(BB(g,18667,t)|0)==0;iB(g);if(u)GD((c[q>>2]|0)+-12|0);}else iB(g);pB((c[q>>2]|0)+-12|0,0,20108)|0;s=r;break;}if((p+-49&255)<9){p=QB(o,d)|0;if((p|0)==(d|0)){s=b;break;}if((a[p>>0]|0)!=95){s=b;break;}r=p+1|0;q=mB(r,d,e)|0;if((q|0)==(r|0)){s=b;break;}r=e+4|0;u=c[r>>2]|0;if((c[e>>2]|0)==(u|0)){s=b;break;}zB(g,u+-12|0,2);u=AB(18667)|0;t=a[g+11>>0]|0;if((u|0)==((t<<24>>24<0?c[g+4>>2]|0:t&255)|0)){t=(BB(g,18667,u)|0)==0;iB(g);if(t)GD((c[r>>2]|0)+-12|0);}else iB(g);t=(c[r>>2]|0)+-12|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;QC(i,o,p);pB(i,0,18667)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];p=0;while(1){if((p|0)==3)break;c[i+(p<<2)>>2]=0;p=p+1|0;}qB(h,18722)|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];p=0;while(1){if((p|0)==3)break;c[h+(p<<2)>>2]=0;p=p+1|0;}p=a[g+11>>0]|0;r=p<<24>>24<0;zD(t,0,r?c[g>>2]|0:g,r?c[g+4>>2]|0:p&255)|0;iB(g);iB(h);iB(i);s=q;break;}p=SB(o,d,e)|0;if(((!((p|0)==(o|0)|(p|0)==(d|0))?(a[p>>0]|0)==95:0)?(r=p+1|0,p=mB(r,d,e)|0,(p|0)!=(r|0)):0)?(r=e+4|0,u=c[r>>2]|0,((u-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){KB(h,u+-24|0);u=c[r>>2]|0;v=0;while(1){if((v|0)==-1)break;w=v+-1|0;QA(u+(w*24|0)|0);v=w;}c[r>>2]=u+-24;KB(i,u+-48|0);v=c[r>>2]|0;o=v+-24|0;q=o+11|0;if((a[q>>0]|0)<0){t=c[o>>2]|0;a[g>>0]=0;cB(t,g);c[v+-20>>2]=0;}else{a[g>>0]=0;cB(o,g);a[q>>0]=0;}TB(o);c[o>>2]=c[h>>2];c[o+4>>2]=c[h+4>>2];c[o+8>>2]=c[h+8>>2];o=0;while(1){if((o|0)==3)break;c[h+(o<<2)>>2]=0;o=o+1|0;}o=h+12|0;zB(g,o,2);u=AB(18667)|0;q=a[g+11>>0]|0;if((u|0)==((q<<24>>24<0?c[g+4>>2]|0:q&255)|0)){q=(BB(g,18667,u)|0)==0;iB(g);if(q)GD(o);}else iB(g);FB(n,i);pB(n,0,18667)|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];q=0;while(1){if((q|0)==3)break;c[n+(q<<2)>>2]=0;q=q+1|0;}qB(m,18722)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];q=0;while(1){if((q|0)==3)break;c[m+(q<<2)>>2]=0;q=q+1|0;}q=a[o+11>>0]|0;u=q<<24>>24<0;TA(k,u?c[o>>2]|0:o,u?c[h+16>>2]|0:q&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];q=0;while(1){if((q|0)==3)break;c[k+(q<<2)>>2]=0;q=q+1|0;}q=c[r>>2]|0;o=q+-12|0;u=o+11|0;if((a[u>>0]|0)<0){v=c[o>>2]|0;a[g>>0]=0;cB(v,g);c[q+-8>>2]=0;}else{a[g>>0]=0;cB(o,g);a[u>>0]=0;}TB(o);c[o>>2]=c[j>>2];c[o+4>>2]=c[j+4>>2];c[o+8>>2]=c[j+8>>2];o=0;while(1){if((o|0)==3)break;c[j+(o<<2)>>2]=0;o=o+1|0;}iB(j);iB(k);iB(m);iB(n);QA(i);QA(h);s=p;}else s=b;}else s=b;}while(0);l=f;return s|0;}function vB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[a>>2]=0;e=a+4|0;c[e>>2]=0;c[a+8>>2]=0;c[a+12>>2]=c[d>>2];FD(a);rB(c[e>>2]|0,b);c[e>>2]=(c[e>>2]|0)+24;return;}function wB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=l;l=l+32|0;e=d;f=a+4|0;g=((c[f>>2]|0)-(c[a>>2]|0)>>4)+1|0;h=AD(a)|0;if(h>>>0<g>>>0)Wz(a);else{i=c[a>>2]|0;j=(c[a+8>>2]|0)-i|0;k=j>>3;BD(e,j>>4>>>0<h>>>1>>>0?k>>>0<g>>>0?g:k:h,(c[f>>2]|0)-i>>4,a+12|0);i=e+8|0;f=c[i>>2]|0;c[f>>2]=0;h=f+4|0;c[h>>2]=0;k=f+8|0;c[k>>2]=0;c[f+12>>2]=c[b+12>>2];c[f>>2]=c[b>>2];g=b+4|0;c[h>>2]=c[g>>2];h=b+8|0;c[k>>2]=c[h>>2];c[h>>2]=0;c[g>>2]=0;c[b>>2]=0;c[i>>2]=f+16;CD(a,e);DD(e);l=d;return;}}function xB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=l;l=l+32|0;g=f+12|0;h=f;do{if(((b|0)!=(d|0)?(a[b>>0]|0)==70:0)?(i=b+1|0,(i|0)!=(d|0)):0){if((a[i>>0]|0)==89){j=b+2|0;if((j|0)==(d|0)){k=b;break;}else m=j;}else m=i;i=mB(m,d,e)|0;if((i|0)!=(m|0)){c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18675,AB(18675)|0);j=e+4|0;n=g+11|0;o=g+4|0;p=h+11|0;q=h+4|0;r=0;s=i;a:while(1){t=s;b:while(1){if((t|0)==(d|0)){u=11;break a;}switch(a[t>>0]|0){case 69:{u=16;break a;break;}case 118:{v=t+1|0;break;}case 82:{i=t+1|0;if((i|0)!=(d|0)?(a[i>>0]|0)==69:0){w=1;x=i;break b;}else u=23;break;}case 79:{i=t+1|0;if((i|0)!=(d|0)?(a[i>>0]|0)==69:0){w=2;x=i;break b;}else u=23;break;}default:u=23;}c:do{if((u|0)==23){u=0;i=((c[j>>2]|0)-(c[e>>2]|0)|0)/24|0;y=mB(t,d,e)|0;z=((c[j>>2]|0)-(c[e>>2]|0)|0)/24|0;if((y|0)==(t|0)|(y|0)==(d|0))break a;A=i;while(1){if(A>>>0>=z>>>0)break;B=a[n>>0]|0;if((B<<24>>24<0?c[o>>2]|0:B&255)>>>0>1)qB(g,18897)|0;FB(h,(c[e>>2]|0)+(A*24|0)|0);B=a[p>>0]|0;C=B<<24>>24<0;TA(g,C?c[h>>2]|0:h,C?c[q>>2]|0:B&255)|0;iB(h);A=A+1|0;}A=i;while(1){if(A>>>0>=z>>>0){v=y;break c;}B=c[j>>2]|0;C=0;while(1){if((C|0)==-1)break;D=C+-1|0;QA(B+(D*24|0)|0);C=D;}c[j>>2]=B+-24;A=A+1|0;}}}while(0);t=v;}r=w;s=x;}if((u|0)==11){s=c[j>>2]|0;q=0;while(1){if((q|0)==-1)break;p=q+-1|0;QA(s+(p*24|0)|0);q=p;}c[j>>2]=s+-24;}else if((u|0)==16){q=t+1|0;qB(g,18673)|0;switch(r&3){case 1:{qB(g,20101)|0;break;}case 2:{qB(g,20104)|0;break;}default:{}}p=c[j>>2]|0;if((c[e>>2]|0)!=(p|0)){qB(p+-24|0,18707)|0;p=a[n>>0]|0;A=p<<24>>24<0;zD((c[j>>2]|0)+-12|0,0,A?c[g>>2]|0:g,A?c[o>>2]|0:p&255)|0;iB(g);k=q;break;}}iB(g);k=b;}else k=b;}else k=b;}while(0);l=f;return k|0;}function yB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=l;l=l+112|0;g=f+96|0;h=f+72|0;i=f+48|0;j=f+36|0;k=f+24|0;m=f+12|0;n=f;if(((((b|0)!=(d|0)?(a[b>>0]|0)==77:0)?(o=b+1|0,p=mB(o,d,e)|0,(p|0)!=(o|0)):0)?(o=mB(p,d,e)|0,(o|0)!=(p|0)):0)?(p=e+4|0,d=c[p>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){KB(h,d+-24|0);d=c[p>>2]|0;e=0;while(1){if((e|0)==-1)break;q=e+-1|0;QA(d+(q*24|0)|0);e=q;}c[p>>2]=d+-24;KB(i,d+-48|0);d=h+12|0;a:do{if((a[((a[d+11>>0]|0)<0?c[d>>2]|0:d)>>0]|0)==40){qB(h,18675)|0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];e=0;while(1){if((e|0)==3)break;c[h+(e<<2)>>2]=0;e=e+1|0;}FB(n,i);e=a[n+11>>0]|0;q=e<<24>>24<0;TA(m,q?c[n>>2]|0:n,q?c[n+4>>2]|0:e&255)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];e=0;while(1){if((e|0)==3)break;c[m+(e<<2)>>2]=0;e=e+1|0;}qB(k,20097)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];e=0;while(1){if((e|0)==3)break;c[k+(e<<2)>>2]=0;e=e+1|0;}e=c[p>>2]|0;q=e+-24|0;r=q+11|0;if((a[r>>0]|0)<0){s=c[q>>2]|0;a[g>>0]=0;cB(s,g);c[e+-20>>2]=0;}else{a[g>>0]=0;cB(q,g);a[r>>0]=0;}TB(q);c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];q=0;while(1){if((q|0)==3)break;c[j+(q<<2)>>2]=0;q=q+1|0;}iB(j);iB(k);iB(n);iB(m);pB(d,0,18673)|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];q=0;while(1){if((q|0)==3)break;c[d+(q<<2)>>2]=0;q=q+1|0;}q=c[p>>2]|0;r=q+-12|0;e=r+11|0;if((a[e>>0]|0)<0){s=c[r>>2]|0;a[g>>0]=0;cB(s,g);c[q+-8>>2]=0;}else{a[g>>0]=0;cB(r,g);a[e>>0]=0;}TB(r);c[r>>2]=c[j>>2];c[r+4>>2]=c[j+4>>2];c[r+8>>2]=c[j+8>>2];r=0;while(1){if((r|0)==3)break;c[j+(r<<2)>>2]=0;r=r+1|0;}iB(j);}else{qB(h,18707)|0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];r=0;while(1){if((r|0)==3)break;c[h+(r<<2)>>2]=0;r=r+1|0;}FB(n,i);r=a[n+11>>0]|0;e=r<<24>>24<0;TA(m,e?c[n>>2]|0:n,e?c[n+4>>2]|0:r&255)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];r=0;while(1){if((r|0)==3)break;c[m+(r<<2)>>2]=0;r=r+1|0;}qB(k,20097)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];r=0;while(1){if((r|0)==3)break;c[k+(r<<2)>>2]=0;r=r+1|0;}r=c[p>>2]|0;e=r+-24|0;q=e+11|0;if((a[q>>0]|0)<0){s=c[e>>2]|0;a[g>>0]=0;cB(s,g);c[r+-20>>2]=0;}else{a[g>>0]=0;cB(e,g);a[q>>0]=0;}TB(e);c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];e=0;while(1){if((e|0)==3)break;c[j+(e<<2)>>2]=0;e=e+1|0;}iB(j);iB(k);iB(n);iB(m);e=c[p>>2]|0;q=e+-12|0;r=q+11|0;if((a[r>>0]|0)<0){s=c[q>>2]|0;a[g>>0]=0;cB(s,g);c[e+-8>>2]=0;}else{a[g>>0]=0;cB(q,g);a[r>>0]=0;}TB(q);c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];q=0;while(1){if((q|0)==3)break a;c[d+(q<<2)>>2]=0;q=q+1|0;}}}while(0);QA(i);QA(h);t=o;}else t=b;l=f;return t|0;}function zB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;f=a[d+11>>0]|0;g=f<<24>>24<0;h=g?c[d+4>>2]|0:f&255;RB(b,g?c[d>>2]|0:d,h>>>0<e>>>0?h:e);return;}function AB(a){a=a|0;return Ty(a)|0;}function BB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=a[b+11>>0]|0;g=f<<24>>24<0;if(g)h=c[b+4>>2]|0;else h=f&255;if((e|0)==-1)xD(b);if(g)i=c[b>>2]|0;else i=b;b=h>>>0>e>>>0;g=yD(i,d,b?e:h)|0;if(!g)return(h>>>0<e>>>0?-1:b&1)|0;else return g|0;return 0;}function CB(a){a=a|0;wD(a,AB(20094)|0);return;}function DB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=l;l=l+48|0;g=f+16|0;h=f;a:do{if((d-b|0)>1?(a[b>>0]|0)==84:0){i=a[b+1>>0]|0;if(i<<24>>24==95){j=c[e+36>>2]|0;if((c[e+32>>2]|0)==(j|0)){k=b;break;}m=c[j+-16>>2]|0;if((m|0)==(c[j+-12>>2]|0)){vD(g);j=e+4|0;n=c[j>>2]|0;if(n>>>0<(c[e+8>>2]|0)>>>0){KB(n,g);c[j>>2]=(c[j>>2]|0)+24;}else LB(e,g);QA(g);a[e+62>>0]=1;k=b+2|0;break;}j=c[m+4>>2]|0;n=e+4|0;o=e+8|0;p=c[m>>2]|0;while(1){if((p|0)==(j|0))break;m=c[n>>2]|0;if((m|0)==(c[o>>2]|0))sB(e,p);else{rB(m,p);c[n>>2]=(c[n>>2]|0)+24;}p=p+24|0;}k=b+2|0;break;}p=(i<<24>>24)+-48|0;if(p>>>0<10){n=p;p=b+2|0;while(1){if((p|0)==(d|0)){k=b;break a;}q=a[p>>0]|0;o=(q<<24>>24)+-48|0;if(o>>>0>=10)break;n=o+(n*10|0)|0;p=p+1|0;}if(q<<24>>24==95?(i=c[e+36>>2]|0,(c[e+32>>2]|0)!=(i|0)):0){o=n+1|0;j=c[i+-16>>2]|0;m=j;if(o>>>0>=(c[i+-12>>2]|0)-j>>4>>>0){j=p+1|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;QC(h,b,j);IB(g,h);i=e+4|0;r=c[i>>2]|0;if(r>>>0<(c[e+8>>2]|0)>>>0){KB(r,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);iB(h);a[e+62>>0]=1;k=j;break;}j=c[m+(o<<4)+4>>2]|0;i=e+4|0;r=e+8|0;s=c[m+(o<<4)>>2]|0;while(1){if((s|0)==(j|0))break;o=c[i>>2]|0;if((o|0)==(c[r>>2]|0))sB(e,s);else{rB(o,s);c[i>>2]=(c[i>>2]|0)+24;}s=s+24|0;}k=p+1|0;}else k=b;}else k=b;}else k=b;}while(0);l=f;return k|0;}function EB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;f=l;l=l+64|0;g=f+32|0;h=f+16|0;i=f+12|0;j=f;do{if((d-b|0)>1?(a[b>>0]|0)==73:0){k=e+61|0;m=e+36|0;if(a[k>>0]|0){n=c[m>>2]|0;o=c[n+-16>>2]|0;p=n+-12|0;n=c[p>>2]|0;while(1){if((n|0)==(o|0))break;q=n+-16|0;RA(q);n=q;}c[p>>2]=o;}c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;RB(h,18709,AB(18709)|0);n=e+4|0;q=e+12|0;r=e+40|0;s=e+32|0;t=h+11|0;u=h+4|0;v=g+11|0;w=g+4|0;x=b+1|0;while(1){if((a[x>>0]|0)==69)break;if(a[k>>0]|0){c[i>>2]=c[q>>2];y=c[m>>2]|0;if(y>>>0<(c[r>>2]|0)>>>0){nD(g,i);c[y>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;c[y+12>>2]=c[g>>2];c[m>>2]=(c[m>>2]|0)+16;}else oD(s,i);}y=((c[n>>2]|0)-(c[e>>2]|0)|0)/24|0;z=pD(x,d,e)|0;A=((c[n>>2]|0)-(c[e>>2]|0)|0)/24|0;if(a[k>>0]|0){B=c[m>>2]|0;C=0;while(1){if((C|0)==-1)break;D=C+-1|0;XA(B+(D<<4)|0);C=D;}c[m>>2]=B+-16;}if((z|0)==(x|0)|(z|0)==(d|0)){E=53;break;}a:do{if(a[k>>0]|0){C=c[m>>2]|0;D=c[q>>2]|0;c[g>>2]=D;F=C+-12|0;G=c[F>>2]|0;if(G>>>0<(c[C+-8>>2]|0)>>>0){c[G>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+12>>2]=D;c[F>>2]=(c[F>>2]|0)+16;}else oB(C+-16|0,g);C=y;while(1){if(C>>>0>=A>>>0)break a;F=c[(c[m>>2]|0)+-12>>2]|0;D=(c[e>>2]|0)+(C*24|0)|0;G=F+-12|0;H=c[G>>2]|0;if((H|0)==(c[F+-8>>2]|0))sB(F+-16|0,D);else{rB(H,D);c[G>>2]=(c[G>>2]|0)+24;}C=C+1|0;}}}while(0);B=y;while(1){if(B>>>0>=A>>>0)break;C=a[t>>0]|0;if((C<<24>>24<0?c[u>>2]|0:C&255)>>>0>1)qB(h,18897)|0;FB(g,(c[e>>2]|0)+(B*24|0)|0);C=a[v>>0]|0;G=C<<24>>24<0;TA(h,G?c[g>>2]|0:g,G?c[w>>2]|0:C&255)|0;iB(g);B=B+1|0;}B=A;while(1){if((B|0)==(y|0))break;C=c[n>>2]|0;G=0;while(1){if((G|0)==-1)break;D=G+-1|0;QA(C+(D*24|0)|0);G=D;}c[n>>2]=C+-24;B=B+-1|0;}x=z;}if((E|0)==53){iB(h);I=b;break;}w=x+1|0;v=a[t>>0]|0;m=v<<24>>24<0;if((a[(m?c[h>>2]|0:h)+(m?c[u>>2]|0:v&255)+-1>>0]|0)==62)qB(h,20088)|0;else qB(h,18711)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];v=0;while(1){if((v|0)==3)break;c[h+(v<<2)>>2]=0;v=v+1|0;}IB(g,j);v=c[n>>2]|0;if(v>>>0<(c[e+8>>2]|0)>>>0){KB(v,g);c[n>>2]=(c[n>>2]|0)+24;}else LB(e,g);QA(g);iB(j);iB(h);I=w;}else I=b;}while(0);l=f;return I|0;}function FB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=d+12|0;f=a[e+11>>0]|0;g=f<<24>>24<0;TA(d,g?c[e>>2]|0:e,g?c[d+16>>2]|0:f&255)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];b=0;while(1){if((b|0)==3)break;c[d+(b<<2)>>2]=0;b=b+1|0;}return;}function GB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;f=l;l=l+64|0;g=f+40|0;h=f+16|0;i=f;a:do{if(((b|0)!=(d|0)?(j=(a[b>>0]|0)+-48|0,j>>>0<10):0)?(k=b+1|0,(k|0)!=(d|0)):0){m=j;j=k;while(1){k=(a[j>>0]|0)+-48|0;if(k>>>0>=10)break;n=j+1|0;if((n|0)==(d|0)){o=b;break a;}m=k+(m*10|0)|0;j=n;}if((d-j|0)>>>0>=m>>>0){c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,j,m);zB(h,g,10);n=AB(20055)|0;k=a[h+11>>0]|0;if((n|0)==((k<<24>>24<0?c[h+4>>2]|0:k&255)|0))p=(BB(h,20055,n)|0)==0;else p=0;iB(h);if(p){mD(h);n=e+4|0;k=c[n>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,h);c[n>>2]=(c[n>>2]|0)+24;}else LB(e,h);QA(h);}else{c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];n=0;while(1){if((n|0)==3)break;c[g+(n<<2)>>2]=0;n=n+1|0;}IB(h,i);n=e+4|0;k=c[n>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,h);c[n>>2]=(c[n>>2]|0)+24;}else LB(e,h);QA(h);iB(i);}iB(g);o=j+m|0;}else o=b;}else o=b;}while(0);l=f;return o|0;}function HB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;f=0;while(1){if((f|0)==3)break;c[b+(f<<2)>>2]=0;f=f+1|0;}f=d+11|0;g=a[f>>0]|0;h=g<<24>>24<0?c[d+4>>2]|0:g&255;g=AB(e)|0;VB(b,(a[f>>0]|0)<0?c[d>>2]|0:d,h,h+g|0);TA(b,e,g)|0;return;}function IB(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];d=0;while(1){if((d|0)==3)break;c[b+(d<<2)>>2]=0;d=d+1|0;}d=a+12|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[d+(a<<2)>>2]=0;a=a+1|0;}return;}function JB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|0;f=e;g=b+11|0;if((a[g>>0]|0)<0){h=c[b>>2]|0;a[f>>0]=0;cB(h,f);c[b+4>>2]=0;}else{a[f>>0]=0;cB(b,f);a[g>>0]=0;}TB(b);c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];g=0;while(1){if((g|0)==3)break;c[d+(g<<2)>>2]=0;g=g+1|0;}g=b+12|0;h=d+12|0;d=g+11|0;if((a[d>>0]|0)<0){i=c[g>>2]|0;a[f>>0]=0;cB(i,f);c[b+16>>2]=0;}else{a[f>>0]=0;cB(g,f);a[d>>0]=0;}TB(g);c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];g=0;while(1){if((g|0)==3)break;c[h+(g<<2)>>2]=0;g=g+1|0;}l=e;return;}function KB(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];d=0;while(1){if((d|0)==3)break;c[b+(d<<2)>>2]=0;d=d+1|0;}d=a+12|0;a=b+12|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];d=0;while(1){if((d|0)==3)break;c[a+(d<<2)>>2]=0;d=d+1|0;}return;}function LB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=l;l=l+32|0;e=d;f=a+4|0;g=(((c[f>>2]|0)-(c[a>>2]|0)|0)/24|0)+1|0;h=XC(a)|0;if(h>>>0<g>>>0)Wz(a);else{i=c[a>>2]|0;j=((c[a+8>>2]|0)-i|0)/24|0;k=j<<1;YC(e,j>>>0<h>>>1>>>0?k>>>0<g>>>0?g:k:h,((c[f>>2]|0)-i|0)/24|0,a+12|0);i=e+8|0;f=c[i>>2]|0;KB(f,b);c[i>>2]=f+24;ZC(a,e);_C(e);l=d;return;}}function MB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=l;l=l+32|0;g=f+8|0;h=f;a:do{if((d-b|0)>1){i=(a[b>>0]|0)==76?b+1|0:b;switch(a[i>>0]|0){case 78:{j=hD(i,d,e)|0;k=(j|0)==(i|0)?b:j;break a;break;}case 90:{j=iD(i,d,e)|0;k=(j|0)==(i|0)?b:j;break a;break;}default:{j=jD(i,d,e)|0;if((j|0)==(i|0)){m=NB(i,d,e)|0;if((m|0)==(i|0)|(m|0)==(d|0)){k=b;break a;}if((a[m>>0]|0)!=73){k=b;break a;}i=EB(m,d,e)|0;if((i|0)==(m|0)){k=b;break a;}m=e+4|0;n=c[m>>2]|0;if(((n-(c[e>>2]|0)|0)/24|0)>>>0<2){k=b;break a;}FB(g,n+-24|0);n=c[m>>2]|0;o=0;while(1){if((o|0)==-1)break;p=o+-1|0;QA(n+(p*24|0)|0);o=p;}c[m>>2]=n+-24;o=a[g+11>>0]|0;p=o<<24>>24<0;TA(n+-48|0,p?c[g>>2]|0:g,p?c[g+4>>2]|0:o&255)|0;iB(g);k=i;break a;}if((j|0)==(d|0)){k=d;break a;}if((a[j>>0]|0)!=73){k=j;break a;}o=e+4|0;p=c[o>>2]|0;if((c[e>>2]|0)==(p|0)){k=b;break a;}c[h>>2]=c[e+12>>2];vB(g,p+-24|0,h);p=e+20|0;q=c[p>>2]|0;if(q>>>0<(c[e+24>>2]|0)>>>0){c[q>>2]=0;r=q+4|0;c[r>>2]=0;s=q+8|0;c[s>>2]=0;c[q+12>>2]=c[g+12>>2];c[q>>2]=c[g>>2];q=g+4|0;c[r>>2]=c[q>>2];r=g+8|0;c[s>>2]=c[r>>2];c[r>>2]=0;c[q>>2]=0;c[g>>2]=0;c[p>>2]=(c[p>>2]|0)+16;}else wB(e+16|0,g);RA(g);p=EB(j,d,e)|0;if((p|0)==(j|0)){k=b;break a;}q=c[o>>2]|0;if(((q-(c[e>>2]|0)|0)/24|0)>>>0<2){k=b;break a;}FB(g,q+-24|0);q=c[o>>2]|0;r=0;while(1){if((r|0)==-1)break;s=r+-1|0;QA(q+(s*24|0)|0);r=s;}c[o>>2]=q+-24;r=a[g+11>>0]|0;j=r<<24>>24<0;TA(q+-48|0,j?c[g>>2]|0:g,j?c[g+4>>2]|0:r&255)|0;iB(g);k=p;break a;}}}else k=b;}while(0);l=f;return k|0;}function NB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+32|0;g=f;a:do{if((d-b|0)>1?(a[b>>0]|0)==83:0){h=a[b+1>>0]|0;switch(h|0){case 97:{KC(g,20001);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);k=b+2|0;break a;break;}case 98:{HC(g,20016);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);k=b+2|0;break a;break;}case 115:{JC(g,19495);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);k=b+2|0;break a;break;}case 105:{LC(g,19591);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);k=b+2|0;break a;break;}case 111:{LC(g,19668);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);k=b+2|0;break a;break;}case 100:{gD(g,19745);i=e+4|0;j=c[i>>2]|0;if(j>>>0<(c[e+8>>2]|0)>>>0){KB(j,g);c[i>>2]=(c[i>>2]|0)+24;}else LB(e,g);QA(g);k=b+2|0;break a;break;}case 95:{i=c[e+16>>2]|0;if((i|0)==(c[e+20>>2]|0)){k=b;break a;}j=c[i+4>>2]|0;m=e+4|0;n=e+8|0;o=c[i>>2]|0;while(1){if((o|0)==(j|0))break;i=c[m>>2]|0;if((i|0)==(c[n>>2]|0))sB(e,o);else{rB(i,o);c[m>>2]=(c[m>>2]|0)+24;}o=o+24|0;}k=b+2|0;break a;break;}default:{o=h+-48|0;m=o>>>0<10;if(!m?(Pz(h)|0)==0:0){k=b;break a;}n=b+2|0;j=m?o:h+-55|0;while(1){if((n|0)==(d|0)){k=b;break a;}p=a[n>>0]|0;o=p<<24>>24;m=o+-48|0;i=m>>>0<10;if(!i?(Pz(o)|0)==0:0)break;n=n+1|0;j=(i?m:o+-55|0)+(j*36|0)|0;}if(p<<24>>24!=95){k=b;break a;}h=j+1|0;o=c[e+16>>2]|0;m=o;if(h>>>0>=(c[e+20>>2]|0)-o>>4>>>0){k=b;break a;}o=c[m+(h<<4)+4>>2]|0;i=e+4|0;q=e+8|0;r=c[m+(h<<4)>>2]|0;while(1){if((r|0)==(o|0))break;h=c[i>>2]|0;if((h|0)==(c[q>>2]|0))sB(e,r);else{rB(h,r);c[i>>2]=(c[i>>2]|0)+24;}r=r+24|0;}k=n+1|0;break a;}}}else k=b;}while(0);l=f;return k|0;}function OB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+64|0;g=f+40|0;h=f+12|0;i=f+24|0;j=f;a:do{if((d-b|0)>3?(a[b>>0]|0)==68:0){switch(a[b+1>>0]|0){case 84:case 116:break;default:{k=b;break a;}}m=b+2|0;n=SB(m,d,e)|0;if((!((n|0)==(m|0)|(n|0)==(d|0))?(a[n>>0]|0)==69:0)?(m=e+4|0,o=c[m>>2]|0,(c[e>>2]|0)!=(o|0)):0){FB(j,o+-24|0);pB(j,0,19991)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];o=0;while(1){if((o|0)==3)break;c[j+(o<<2)>>2]=0;o=o+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];o=0;while(1){if((o|0)==3)break;c[i+(o<<2)>>2]=0;o=o+1|0;}IB(g,h);JB((c[m>>2]|0)+-24|0,g);QA(g);iB(h);iB(i);iB(j);k=n+1|0;}else k=b;}else k=b;}while(0);l=f;return k|0;}function PB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=l;l=l+64|0;g=f+40|0;h=f+12|0;i=f;j=f+24|0;a:do{if(((d-b|0)>3?(a[b>>0]|0)==68:0)?(a[b+1>>0]|0)==118:0){k=b+2|0;m=a[k>>0]|0;if((m+-49&255)<9){n=QB(k,d)|0;if((n|0)==(d|0)){o=b;break;}if((a[n>>0]|0)!=95){o=b;break;}p=n-k|0;q=n+1|0;if((q|0)==(d|0)){o=b;break;}if((a[q>>0]|0)!=112){r=mB(q,d,e)|0;if((r|0)==(q|0)){o=b;break;}q=e+4|0;if((c[e>>2]|0)==(c[q>>2]|0)){o=b;break;};c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;RB(i,k,p);pB(i,0,18713)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];s=0;while(1){if((s|0)==3)break;c[i+(s<<2)>>2]=0;s=s+1|0;}qB(h,18722)|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];s=0;while(1){if((s|0)==3)break;c[h+(s<<2)>>2]=0;s=s+1|0;}s=a[g+11>>0]|0;t=s<<24>>24<0;TA((c[q>>2]|0)+-24|0,t?c[g>>2]|0:g,t?c[g+4>>2]|0:s&255)|0;iB(g);iB(h);iB(i);o=r;break;}s=n+2|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;RB(i,k,p);pB(i,0,18724)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];t=0;while(1){if((t|0)==3)break;c[i+(t<<2)>>2]=0;t=t+1|0;}qB(h,18722)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];t=0;while(1){if((t|0)==3)break;c[h+(t<<2)>>2]=0;t=t+1|0;}IB(g,j);t=e+4|0;p=c[t>>2]|0;if(p>>>0<(c[e+8>>2]|0)>>>0){KB(p,g);c[t>>2]=(c[t>>2]|0)+24;}else LB(e,g);QA(g);iB(j);iB(h);iB(i);o=s;break;};c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;t=0;while(1){if((t|0)==3)break;c[h+(t<<2)>>2]=0;t=t+1|0;}if(m<<24>>24!=95?(t=SB(k,d,e)|0,(t|0)!=(k|0)):0){s=e+4|0;p=c[s>>2]|0;if((c[e>>2]|0)!=(p|0)){FB(i,p+-24|0);p=h+11|0;if((a[p>>0]|0)<0){n=c[h>>2]|0;a[g>>0]=0;cB(n,g);c[h+4>>2]=0;}else{a[g>>0]=0;cB(h,g);a[p>>0]=0;}TB(h);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];p=0;while(1){if((p|0)==3)break;c[i+(p<<2)>>2]=0;p=p+1|0;}iB(i);p=c[s>>2]|0;m=0;while(1){if((m|0)==-1)break;n=m+-1|0;QA(p+(n*24|0)|0);m=n;}c[s>>2]=p+-24;u=t;v=44;}}else{u=k;v=44;}do{if((v|0)==44){if((((u|0)!=(d|0)?(a[u>>0]|0)==95:0)?(m=u+1|0,(m|0)!=(d|0)):0)?(n=mB(m,d,e)|0,(n|0)!=(m|0)):0){m=e+4|0;if((c[e>>2]|0)==(c[m>>2]|0))break;UB(i,18713,h);qB(i,18722)|0;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];c[g+8>>2]=c[i+8>>2];r=0;while(1){if((r|0)==3)break;c[i+(r<<2)>>2]=0;r=r+1|0;}r=a[g+11>>0]|0;q=r<<24>>24<0;TA((c[m>>2]|0)+-24|0,q?c[g>>2]|0:g,q?c[g+4>>2]|0:r&255)|0;iB(g);iB(i);w=n;}else w=b;iB(h);o=w;break a;}}while(0);iB(h);o=b;}else o=b;}while(0);l=f;return o|0;}function QB(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;a:do{if((b|0)!=(c|0)?(d=(a[b>>0]|0)==110?b+1|0:b,(d|0)!=(c|0)):0){e=a[d>>0]|0;if(e<<24>>24==48){f=d+1|0;break;}if((e+-49&255)<9){e=d;while(1){d=e+1|0;if((d|0)==(c|0)){f=c;break a;}if(((a[d>>0]|0)+-48|0)>>>0<10)e=d;else{f=d;break;}}}else f=b;}else f=b;}while(0);return f|0;}function RB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+16|0;g=f;if(e>>>0>4294967279)eB(b);if(e>>>0<11){a[b+11>>0]=e;h=b;}else{i=e+16&-16;j=fB(i)|0;c[b>>2]=j;c[b+8>>2]=i|-2147483648;c[b+4>>2]=e;h=j;}bB(h,d,e)|0;a[g>>0]=0;cB(h+e|0,g);l=f;return;}function SB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;f=l;l=l+208|0;g=f+176|0;h=f+112|0;i=f+88|0;j=f+64|0;k=f+48|0;m=f+160|0;n=f+36|0;o=f+148|0;p=f+136|0;q=f+124|0;r=f+24|0;s=f+12|0;t=f;u=d;v=u-b|0;a:do{if((v|0)>1){if((v|0)>3?(a[b>>0]|0)==103:0){w=(a[b+1>>0]|0)==115;x=w?b+2|0:b;y=w;}else{x=b;y=0;}do{switch(a[x>>0]|0){case 76:{z=WB(b,d,e)|0;break a;break;}case 84:{z=DB(b,d,e)|0;break a;break;}case 102:{z=XB(b,d,e)|0;break a;break;}case 97:{switch(a[x+1>>0]|0){case 97:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18677,AB(18677)|0);A=YB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 100:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18695,AB(18695)|0);w=ZB(A,d,g,e)|0;iB(g);z=(w|0)==(A|0)?b:w;break a;break;}case 110:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18695,AB(18695)|0);A=YB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 78:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18738,AB(18738)|0);w=YB(A,d,g,e)|0;iB(g);z=(w|0)==(A|0)?b:w;break a;break;}case 83:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18741,AB(18741)|0);A=YB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 116:{z=_B(b,d,e)|0;break a;break;}case 122:{z=$B(b,d,e)|0;break a;break;}default:{z=b;break a;}}break;}case 99:{switch(a[x+1>>0]|0){case 99:{z=aC(b,d,e)|0;break a;break;}case 108:{z=bC(b,d,e)|0;break a;break;}case 109:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18743,AB(18743)|0);w=YB(A,d,g,e)|0;iB(g);z=(w|0)==(A|0)?b:w;break a;break;}case 111:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18745,AB(18745)|0);A=ZB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 118:{z=cC(b,d,e)|0;break a;break;}default:{z=b;break a;}}break;}case 100:{switch(a[x+1>>0]|0){case 97:{A=x+2|0;w=SB(A,d,e)|0;if((w|0)==(A|0)){z=b;break a;}A=e+4|0;if((c[e>>2]|0)==(c[A>>2]|0)){z=b;break a;};c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;b:do{if(y)RB(j,18747,AB(18747)|0);else{B=0;while(1){if((B|0)==3)break b;c[j+(B<<2)>>2]=0;B=B+1|0;}}}while(0);qB(j,18750)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];B=0;while(1){if((B|0)==3)break;c[j+(B<<2)>>2]=0;B=B+1|0;}FB(k,(c[A>>2]|0)+-24|0);B=a[k+11>>0]|0;C=B<<24>>24<0;TA(i,C?c[k>>2]|0:k,C?c[k+4>>2]|0:B&255)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];B=0;while(1){if((B|0)==3)break;c[i+(B<<2)>>2]=0;B=B+1|0;}B=c[A>>2]|0;C=B+-24|0;D=C+11|0;if((a[D>>0]|0)<0){E=c[C>>2]|0;a[g>>0]=0;cB(E,g);c[B+-20>>2]=0;}else{a[g>>0]=0;cB(C,g);a[D>>0]=0;}TB(C);c[C>>2]=c[h>>2];c[C+4>>2]=c[h+4>>2];c[C+8>>2]=c[h+8>>2];C=0;while(1){if((C|0)==3)break;c[h+(C<<2)>>2]=0;C=C+1|0;}iB(h);iB(k);iB(i);iB(j);z=w;break a;break;}case 99:{z=dC(b,d,e)|0;break a;break;}case 101:{C=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18693,AB(18693)|0);A=ZB(C,d,g,e)|0;iB(g);z=(A|0)==(C|0)?b:A;break a;break;}case 108:{A=x+2|0;C=SB(A,d,e)|0;if((C|0)==(A|0)){z=b;break a;}A=e+4|0;if((c[e>>2]|0)==(c[A>>2]|0)){z=b;break a;};c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c:do{if(y)RB(j,18747,AB(18747)|0);else{D=0;while(1){if((D|0)==3)break c;c[j+(D<<2)>>2]=0;D=D+1|0;}}}while(0);qB(j,18760)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];w=0;while(1){if((w|0)==3)break;c[j+(w<<2)>>2]=0;w=w+1|0;}FB(k,(c[A>>2]|0)+-24|0);w=a[k+11>>0]|0;D=w<<24>>24<0;TA(i,D?c[k>>2]|0:k,D?c[k+4>>2]|0:w&255)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];w=0;while(1){if((w|0)==3)break;c[i+(w<<2)>>2]=0;w=w+1|0;}w=c[A>>2]|0;D=w+-24|0;B=D+11|0;if((a[B>>0]|0)<0){E=c[D>>2]|0;a[g>>0]=0;cB(E,g);c[w+-20>>2]=0;}else{a[g>>0]=0;cB(D,g);a[B>>0]=0;}TB(D);c[D>>2]=c[h>>2];c[D+4>>2]=c[h+4>>2];c[D+8>>2]=c[h+8>>2];D=0;while(1){if((D|0)==3)break;c[h+(D<<2)>>2]=0;D=D+1|0;}iB(h);iB(k);iB(i);iB(j);z=C;break a;break;}case 110:{z=eC(b,d,e)|0;break a;break;}case 115:{z=fC(b,d,e)|0;break a;break;}case 116:{z=gC(b,d,e)|0;break a;break;}case 118:{D=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18768,AB(18768)|0);A=YB(D,d,g,e)|0;iB(g);z=(A|0)==(D|0)?b:A;break a;break;}case 86:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18770,AB(18770)|0);D=YB(A,d,g,e)|0;iB(g);z=(D|0)==(A|0)?b:D;break a;break;}default:{z=b;break a;}}break;}case 101:{switch(a[x+1>>0]|0){case 111:{D=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18773,AB(18773)|0);A=YB(D,d,g,e)|0;iB(g);z=(A|0)==(D|0)?b:A;break a;break;}case 79:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18775,AB(18775)|0);D=YB(A,d,g,e)|0;iB(g);z=(D|0)==(A|0)?b:D;break a;break;}case 113:{D=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18778,AB(18778)|0);A=YB(D,d,g,e)|0;iB(g);z=(A|0)==(D|0)?b:A;break a;break;}default:{z=b;break a;}}break;}case 103:{switch(a[x+1>>0]|0){case 101:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18781,AB(18781)|0);D=YB(A,d,g,e)|0;iB(g);z=(D|0)==(A|0)?b:D;break a;break;}case 116:{D=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18711,AB(18711)|0);A=YB(D,d,g,e)|0;iB(g);z=(A|0)==(D|0)?b:A;break a;break;}default:{z=b;break a;}}break;}case 105:{if((a[x+1>>0]|0)!=120){z=b;break a;}A=b+2|0;D=SB(A,d,e)|0;if((D|0)==(A|0)){z=b;break a;}A=SB(D,d,e)|0;B=e+4|0;if((A|0)==(D|0)){D=c[B>>2]|0;w=0;while(1){if((w|0)==-1)break;E=w+-1|0;QA(D+(E*24|0)|0);w=E;}c[B>>2]=D+-24;z=b;break a;}w=c[B>>2]|0;if(((w-(c[e>>2]|0)|0)/24|0)>>>0<2){z=b;break a;}FB(g,w+-24|0);w=c[B>>2]|0;C=0;while(1){if((C|0)==-1)break;E=C+-1|0;QA(w+(E*24|0)|0);C=E;}c[B>>2]=w+-24;FB(h,w+-48|0);UB(n,18675,h);qB(n,18784)|0;c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];C=0;while(1){if((C|0)==3)break;c[n+(C<<2)>>2]=0;C=C+1|0;}C=a[g+11>>0]|0;w=C<<24>>24<0;TA(k,w?c[g>>2]|0:g,w?c[g+4>>2]|0:C&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];C=0;while(1){if((C|0)==3)break;c[k+(C<<2)>>2]=0;C=C+1|0;}qB(j,18722)|0;c[m>>2]=c[j>>2];c[m+4>>2]=c[j+4>>2];c[m+8>>2]=c[j+8>>2];C=0;while(1){if((C|0)==3)break;c[j+(C<<2)>>2]=0;C=C+1|0;}IB(i,m);JB((c[B>>2]|0)+-24|0,i);QA(i);iB(m);iB(j);iB(k);iB(n);iB(h);iB(g);z=A;break a;break;}case 108:{switch(a[x+1>>0]|0){case 101:{C=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18787,AB(18787)|0);w=YB(C,d,g,e)|0;iB(g);z=(w|0)==(C|0)?b:w;break a;break;}case 115:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18790,AB(18790)|0);C=YB(w,d,g,e)|0;iB(g);z=(C|0)==(w|0)?b:C;break a;break;}case 83:{C=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18793,AB(18793)|0);w=YB(C,d,g,e)|0;iB(g);z=(w|0)==(C|0)?b:w;break a;break;}case 116:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18709,AB(18709)|0);C=YB(w,d,g,e)|0;iB(g);z=(C|0)==(w|0)?b:C;break a;break;}default:{z=b;break a;}}break;}case 109:{switch(a[x+1>>0]|0){case 105:{C=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18797,AB(18797)|0);w=YB(C,d,g,e)|0;iB(g);z=(w|0)==(C|0)?b:w;break a;break;}case 73:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18799,AB(18799)|0);C=YB(w,d,g,e)|0;iB(g);z=(C|0)==(w|0)?b:C;break a;break;}case 108:{C=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18693,AB(18693)|0);w=YB(C,d,g,e)|0;iB(g);z=(w|0)==(C|0)?b:w;break a;break;}case 76:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18802,AB(18802)|0);C=YB(w,d,g,e)|0;iB(g);z=(C|0)==(w|0)?b:C;break a;break;}case 109:{C=b+2|0;if((C|0)!=(d|0)?(a[C>>0]|0)==95:0){w=b+3|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18805,AB(18805)|0);D=ZB(w,d,g,e)|0;iB(g);z=(D|0)==(w|0)?b:D;break a;}D=SB(C,d,e)|0;if((D|0)==(C|0)){z=b;break a;}C=e+4|0;w=c[C>>2]|0;if((c[e>>2]|0)==(w|0)){z=b;break a;}FB(i,w+-24|0);pB(i,0,18675)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];w=0;while(1){if((w|0)==3)break;c[i+(w<<2)>>2]=0;w=w+1|0;}qB(h,18808)|0;c[o>>2]=c[h>>2];c[o+4>>2]=c[h+4>>2];c[o+8>>2]=c[h+8>>2];w=0;while(1){if((w|0)==3)break;c[h+(w<<2)>>2]=0;w=w+1|0;}IB(g,o);JB((c[C>>2]|0)+-24|0,g);QA(g);iB(o);iB(h);iB(i);z=D;break a;break;}default:{z=b;break a;}}break;}case 110:{switch(a[x+1>>0]|0){case 119:case 97:{z=hC(b,d,e)|0;break a;break;}case 101:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18812,AB(18812)|0);A=YB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 103:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18797,AB(18797)|0);w=ZB(A,d,g,e)|0;iB(g);z=(w|0)==(A|0)?b:w;break a;break;}case 116:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18815,AB(18815)|0);A=ZB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 120:{A=b+2|0;w=iC(A,d,e)|0;z=(w|0)==(A|0)?b:w;break a;break;}default:{z=b;break a;}}break;}case 111:{switch(a[x+1>>0]|0){case 110:{z=eC(b,d,e)|0;break a;break;}case 111:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18817,AB(18817)|0);A=YB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 114:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18820,AB(18820)|0);w=YB(A,d,g,e)|0;iB(g);z=(w|0)==(A|0)?b:w;break a;break;}case 82:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18822,AB(18822)|0);A=YB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}default:{z=b;break a;}}break;}case 112:{switch(a[x+1>>0]|0){case 109:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18825,AB(18825)|0);w=YB(A,d,g,e)|0;iB(g);z=(w|0)==(A|0)?b:w;break a;break;}case 108:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18829,AB(18829)|0);A=YB(w,d,g,e)|0;iB(g);z=(A|0)==(w|0)?b:A;break a;break;}case 76:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18831,AB(18831)|0);w=YB(A,d,g,e)|0;iB(g);z=(w|0)==(A|0)?b:w;break a;break;}case 112:{w=b+2|0;if((w|0)!=(d|0)?(a[w>>0]|0)==95:0){A=b+3|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18834,AB(18834)|0);B=ZB(A,d,g,e)|0;iB(g);z=(B|0)==(A|0)?b:B;break a;}B=SB(w,d,e)|0;if((B|0)==(w|0)){z=b;break a;}w=e+4|0;A=c[w>>2]|0;if((c[e>>2]|0)==(A|0)){z=b;break a;}FB(i,A+-24|0);pB(i,0,18675)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];A=0;while(1){if((A|0)==3)break;c[i+(A<<2)>>2]=0;A=A+1|0;}qB(h,18837)|0;c[p>>2]=c[h>>2];c[p+4>>2]=c[h+4>>2];c[p+8>>2]=c[h+8>>2];A=0;while(1){if((A|0)==3)break;c[h+(A<<2)>>2]=0;A=A+1|0;}IB(g,p);JB((c[w>>2]|0)+-24|0,g);QA(g);iB(p);iB(h);iB(i);z=B;break a;break;}case 115:{A=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18829,AB(18829)|0);D=ZB(A,d,g,e)|0;iB(g);z=(D|0)==(A|0)?b:D;break a;break;}case 116:{z=jC(b,d,e)|0;break a;break;}default:{z=b;break a;}}break;}case 113:{if((a[x+1>>0]|0)!=117){z=b;break a;}D=b+2|0;A=SB(D,d,e)|0;if((A|0)==(D|0)){z=b;break a;}D=SB(A,d,e)|0;if((D|0)==(A|0)){A=e+4|0;C=c[A>>2]|0;E=0;while(1){if((E|0)==-1)break;F=E+-1|0;QA(C+(F*24|0)|0);E=F;}c[A>>2]=C+-24;z=b;break a;}E=SB(D,d,e)|0;B=e+4|0;if((E|0)==(D|0)){w=c[B>>2]|0;F=0;while(1){if((F|0)==-1)break;G=F+-1|0;QA(w+(G*24|0)|0);F=G;}F=w+-24|0;c[B>>2]=F;D=0;while(1){if((D|0)==-1)break;C=D+-1|0;QA(F+(C*24|0)|0);D=C;}c[B>>2]=w+-48;z=b;break a;}D=c[B>>2]|0;if(((D-(c[e>>2]|0)|0)/24|0)>>>0<3){z=b;break a;}FB(g,D+-24|0);D=c[B>>2]|0;F=0;while(1){if((F|0)==-1)break;C=F+-1|0;QA(D+(C*24|0)|0);F=C;}c[B>>2]=D+-24;FB(h,D+-48|0);F=c[B>>2]|0;w=0;while(1){if((w|0)==-1)break;C=w+-1|0;QA(F+(C*24|0)|0);w=C;}c[B>>2]=F+-24;FB(i,F+-48|0);UB(t,18675,i);qB(t,18841)|0;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];w=0;while(1){if((w|0)==3)break;c[t+(w<<2)>>2]=0;w=w+1|0;}w=a[h+11>>0]|0;F=w<<24>>24<0;TA(s,F?c[h>>2]|0:h,F?c[h+4>>2]|0:w&255)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];w=0;while(1){if((w|0)==3)break;c[s+(w<<2)>>2]=0;w=w+1|0;}qB(r,18847)|0;c[n>>2]=c[r>>2];c[n+4>>2]=c[r+4>>2];c[n+8>>2]=c[r+8>>2];w=0;while(1){if((w|0)==3)break;c[r+(w<<2)>>2]=0;w=w+1|0;}w=a[g+11>>0]|0;F=w<<24>>24<0;TA(n,F?c[g>>2]|0:g,F?c[g+4>>2]|0:w&255)|0;c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];w=0;while(1){if((w|0)==3)break;c[n+(w<<2)>>2]=0;w=w+1|0;}qB(k,18673)|0;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];w=0;while(1){if((w|0)==3)break;c[k+(w<<2)>>2]=0;w=w+1|0;}IB(j,q);JB((c[B>>2]|0)+-24|0,j);QA(j);iB(q);iB(k);iB(n);iB(r);iB(s);iB(t);iB(i);iB(h);iB(g);z=E;break a;break;}case 114:{switch(a[x+1>>0]|0){case 99:{z=kC(b,d,e)|0;break a;break;}case 109:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18853,AB(18853)|0);F=YB(w,d,g,e)|0;iB(g);z=(F|0)==(w|0)?b:F;break a;break;}case 77:{F=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18855,AB(18855)|0);w=YB(F,d,g,e)|0;iB(g);z=(w|0)==(F|0)?b:w;break a;break;}case 115:{w=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18858,AB(18858)|0);F=YB(w,d,g,e)|0;iB(g);z=(F|0)==(w|0)?b:F;break a;break;}case 83:{F=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18861,AB(18861)|0);w=YB(F,d,g,e)|0;iB(g);z=(w|0)==(F|0)?b:w;break a;break;}default:{z=b;break a;}}break;}case 115:{switch(a[x+1>>0]|0){case 99:{z=lC(b,d,e)|0;break a;break;}case 112:{z=mC(b,d,e)|0;break a;break;}case 114:{z=eC(b,d,e)|0;break a;break;}case 116:{z=nC(b,d,e)|0;break a;break;}case 122:{z=oC(b,d,e)|0;break a;break;}case 90:{if((u-x|0)<=2){z=b;break a;}switch(a[x+2>>0]|0){case 84:{z=pC(b,d,e)|0;break a;break;}case 102:{z=qC(b,d,e)|0;break a;break;}default:{z=b;break a;}}break;}default:{z=b;break a;}}break;}case 116:{switch(a[x+1>>0]|0){case 105:case 101:{z=rC(b,d,e)|0;break a;break;}case 114:{sC(g,18865);w=e+4|0;F=c[w>>2]|0;if(F>>>0<(c[e+8>>2]|0)>>>0){KB(F,g);c[w>>2]=(c[w>>2]|0)+24;}else LB(e,g);QA(g);z=b+2|0;break a;break;}case 119:{z=tC(b,d,e)|0;break a;break;}default:{z=b;break a;}}break;}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{z=eC(b,d,e)|0;break a;break;}default:{z=b;break a;}}}while(0);}else z=b;}while(0);l=f;return z|0;}function TB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=b+11|0;e=a[d>>0]|0;f=e<<24>>24<0;if(f){g=c[b+4>>2]|0;h=(c[b+8>>2]&2147483647)+-1|0;}else{g=e&255;h=10;}i=g>>>0<11;j=i?10:(g+16&-16)+-1|0;a:do{if((j|0)!=(h|0)){do{if(i){k=c[b>>2]|0;if(f){l=0;m=k;n=b;o=12;}else{bB(b,k,(e&255)+1|0)|0;gB(k);o=15;}}else{k=j+1|0;p=fB(k)|0;if(j>>>0<=h>>>0&(p|0)==0)break a;q=a[d>>0]|0;if(q<<24>>24<0){l=1;m=c[b>>2]|0;n=p;o=12;break;}else{bB(p,b,(q&255)+1|0)|0;r=p;s=k;t=b+4|0;o=14;break;}}}while(0);if((o|0)==12){k=b+4|0;bB(n,m,(c[k>>2]|0)+1|0)|0;gB(m);if(l){r=n;s=j+1|0;t=k;o=14;}else o=15;}if((o|0)==14){c[b+8>>2]=s|-2147483648;c[t>>2]=g;c[b>>2]=r;break;}else if((o|0)==15){a[d>>0]=g;break;}}}while(0);return;}function UB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;f=0;while(1){if((f|0)==3)break;c[b+(f<<2)>>2]=0;f=f+1|0;}f=AB(d)|0;g=e+11|0;h=a[g>>0]|0;i=h<<24>>24<0?c[e+4>>2]|0:h&255;VB(b,d,f,i+f|0);TA(b,(a[g>>0]|0)<0?c[e>>2]|0:e,i)|0;return;}function VB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g;if(f>>>0>4294967279)eB(b);if(f>>>0<11){a[b+11>>0]=e;i=b;}else{j=f+16&-16;f=fB(j)|0;c[b>>2]=f;c[b+8>>2]=j|-2147483648;c[b+4>>2]=e;i=f;}bB(i,d,e)|0;a[h>>0]=0;cB(i+e|0,h);l=g;return;}function WB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+96|0;g=f+64|0;h=f+48|0;i=f+36|0;j=f+24|0;k=f+12|0;m=f;a:do{if((d-b|0)>3?(a[b>>0]|0)==76:0){n=b+1|0;do{switch(a[n>>0]|0){case 84:{o=b;break a;break;}case 119:{p=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19867,AB(19867)|0);q=bD(p,d,g,e)|0;iB(g);o=(q|0)==(p|0)?b:q;break a;break;}case 98:{if((a[b+3>>0]|0)!=69){o=b;break a;}switch(a[b+2>>0]|0){case 48:{sC(g,19875);q=e+4|0;p=c[q>>2]|0;if(p>>>0<(c[e+8>>2]|0)>>>0){KB(p,g);c[q>>2]=(c[q>>2]|0)+24;}else LB(e,g);QA(g);o=b+4|0;break a;break;}case 49:{cD(g,19881);q=e+4|0;p=c[q>>2]|0;if(p>>>0<(c[e+8>>2]|0)>>>0){KB(p,g);c[q>>2]=(c[q>>2]|0)+24;}else LB(e,g);QA(g);o=b+4|0;break a;break;}default:{o=b;break a;}}break;}case 99:{q=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19886,AB(19886)|0);p=bD(q,d,g,e)|0;iB(g);o=(p|0)==(q|0)?b:p;break a;break;}case 97:{p=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19891,AB(19891)|0);q=bD(p,d,g,e)|0;iB(g);o=(q|0)==(p|0)?b:q;break a;break;}case 104:{q=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19903,AB(19903)|0);p=bD(q,d,g,e)|0;iB(g);o=(p|0)==(q|0)?b:p;break a;break;}case 115:{p=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19917,AB(19917)|0);q=bD(p,d,g,e)|0;iB(g);o=(q|0)==(p|0)?b:q;break a;break;}case 116:{q=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19923,AB(19923)|0);p=bD(q,d,g,e)|0;iB(g);o=(p|0)==(q|0)?b:p;break a;break;}case 105:{p=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,22268,AB(22268)|0);q=bD(p,d,g,e)|0;iB(g);o=(q|0)==(p|0)?b:q;break a;break;}case 106:{q=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19938,AB(19938)|0);p=bD(q,d,g,e)|0;iB(g);o=(p|0)==(q|0)?b:p;break a;break;}case 108:{p=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19940,AB(19940)|0);q=bD(p,d,g,e)|0;iB(g);o=(q|0)==(p|0)?b:q;break a;break;}case 109:{q=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19942,AB(19942)|0);p=bD(q,d,g,e)|0;iB(g);o=(p|0)==(q|0)?b:p;break a;break;}case 120:{p=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19945,AB(19945)|0);q=bD(p,d,g,e)|0;iB(g);o=(q|0)==(p|0)?b:q;break a;break;}case 121:{q=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19948,AB(19948)|0);p=bD(q,d,g,e)|0;iB(g);o=(p|0)==(q|0)?b:p;break a;break;}case 110:{p=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19952,AB(19952)|0);q=bD(p,d,g,e)|0;iB(g);o=(q|0)==(p|0)?b:q;break a;break;}case 111:{q=b+2|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,19961,AB(19961)|0);p=bD(q,d,g,e)|0;iB(g);o=(p|0)==(q|0)?b:p;break a;break;}case 102:{p=b+2|0;q=dD(p,d,e)|0;o=(q|0)==(p|0)?b:q;break a;break;}case 100:{q=b+2|0;p=eD(q,d,e)|0;o=(p|0)==(q|0)?b:p;break a;break;}case 101:{p=b+2|0;q=fD(p,d,e)|0;o=(q|0)==(p|0)?b:q;break a;break;}case 95:{if((a[b+2>>0]|0)!=90){o=b;break a;}q=b+3|0;p=jB(q,d,e)|0;if((p|0)==(q|0)|(p|0)==(d|0)){o=b;break a;}o=(a[p>>0]|0)==69?p+1|0:b;break a;break;}default:{p=mB(n,d,e)|0;if((p|0)==(n|0)|(p|0)==(d|0)){o=b;break a;}if((a[p>>0]|0)==69){o=p+1|0;break a;}q=p;while(1){if((q|0)==(d|0)){o=b;break a;}r=a[q>>0]|0;if(((r<<24>>24)+-48|0)>>>0>=10)break;q=q+1|0;}if(!((q|0)!=(p|0)&r<<24>>24==69)){o=b;break a;}s=e+4|0;t=c[s>>2]|0;if((c[e>>2]|0)==(t|0)){o=b;break a;}FB(k,t+-24|0);pB(k,0,18675)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];t=0;while(1){if((t|0)==3)break;c[k+(t<<2)>>2]=0;t=t+1|0;}qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];t=0;while(1){if((t|0)==3)break;c[j+(t<<2)>>2]=0;t=t+1|0;}c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;QC(m,p,q);t=a[m+11>>0]|0;u=t<<24>>24<0;TA(i,u?c[m>>2]|0:m,u?c[m+4>>2]|0:t&255)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];t=0;while(1){if((t|0)==3)break;c[i+(t<<2)>>2]=0;t=t+1|0;}IB(g,h);JB((c[s>>2]|0)+-24|0,g);QA(g);iB(h);iB(m);iB(i);iB(j);iB(k);o=q+1|0;break a;}}}while(0);}else o=b;}while(0);l=f;return o|0;}function XB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+80|0;g=f+64|0;h=f+40|0;i=f+12|0;j=f+24|0;k=f;a:do{if((d-b|0)>2?(a[b>>0]|0)==102:0){switch(a[b+1>>0]|0){case 112:{m=nB(b+2|0,d,g)|0;n=QB(m,d)|0;if((n|0)!=(d|0)?(a[n>>0]|0)==95:0){c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;QC(j,m,n);pB(j,0,19864)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];m=0;while(1){if((m|0)==3)break;c[j+(m<<2)>>2]=0;m=m+1|0;}IB(h,i);m=e+4|0;o=c[m>>2]|0;if(o>>>0<(c[e+8>>2]|0)>>>0){KB(o,h);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,h);QA(h);iB(i);iB(j);p=n+1|0;}else p=b;q=p;break a;break;}case 76:break;default:{q=b;break a;}}m=QB(b+2|0,d)|0;if((((m|0)!=(d|0)?(a[m>>0]|0)==112:0)?(o=nB(m+1|0,d,g)|0,m=QB(o,d)|0,(m|0)!=(d|0)):0)?(a[m>>0]|0)==95:0){c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;QC(j,o,m);pB(j,0,19864)|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];o=0;while(1){if((o|0)==3)break;c[j+(o<<2)>>2]=0;o=o+1|0;}IB(h,k);o=e+4|0;n=c[o>>2]|0;if(n>>>0<(c[e+8>>2]|0)>>>0){KB(n,h);c[o>>2]=(c[o>>2]|0)+24;}else LB(e,h);QA(h);iB(k);iB(j);r=m+1|0;}else r=b;q=r;}else q=b;}while(0);l=f;return q|0;}function YB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;g=l;l=l+96|0;h=g+84|0;i=g+72|0;j=g+60|0;k=g+48|0;m=g+36|0;n=g+24|0;o=g+12|0;p=g;q=SB(b,d,f)|0;do{if((q|0)!=(b|0)){r=SB(q,d,f)|0;s=f+4|0;if((r|0)==(q|0)){t=c[s>>2]|0;u=0;while(1){if((u|0)==-1)break;v=u+-1|0;QA(t+(v*24|0)|0);u=v;}c[s>>2]=t+-24;w=b;break;}u=c[s>>2]|0;if(((u-(c[f>>2]|0)|0)/24|0)>>>0>=2){FB(i,u+-24|0);u=c[s>>2]|0;v=0;while(1){if((v|0)==-1)break;x=v+-1|0;QA(u+(x*24|0)|0);v=x;}c[s>>2]=u+-24;FB(j,u+-48|0);v=c[s>>2]|0;t=v+-24|0;x=t+11|0;if((a[x>>0]|0)<0){y=c[t>>2]|0;a[h>>0]=0;cB(y,h);c[v+-20>>2]=0;}else{a[h>>0]=0;cB(t,h);a[x>>0]=0;}x=AB(18711)|0;v=e+11|0;y=a[v>>0]|0;z=e+4|0;if((x|0)==((y<<24>>24<0?c[z>>2]|0:y&255)|0)?(BB(e,18711,x)|0)==0:0)NC(t,40);UB(p,18675,j);qB(p,18961)|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];x=0;while(1){if((x|0)==3)break;c[p+(x<<2)>>2]=0;x=x+1|0;}x=a[v>>0]|0;s=x<<24>>24<0;TA(o,s?c[e>>2]|0:e,s?c[z>>2]|0:x&255)|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];x=0;while(1){if((x|0)==3)break;c[o+(x<<2)>>2]=0;x=x+1|0;}qB(n,18670)|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];x=0;while(1){if((x|0)==3)break;c[n+(x<<2)>>2]=0;x=x+1|0;}x=a[i+11>>0]|0;s=x<<24>>24<0;TA(m,s?c[i>>2]|0:i,s?c[i+4>>2]|0:x&255)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];x=0;while(1){if((x|0)==3)break;c[m+(x<<2)>>2]=0;x=x+1|0;}qB(k,18673)|0;c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];c[h+8>>2]=c[k+8>>2];x=0;while(1){if((x|0)==3)break;c[k+(x<<2)>>2]=0;x=x+1|0;}x=a[h+11>>0]|0;s=x<<24>>24<0;TA(t,s?c[h>>2]|0:h,s?c[h+4>>2]|0:x&255)|0;iB(h);iB(k);iB(m);iB(n);iB(o);iB(p);x=AB(18711)|0;s=a[v>>0]|0;if((x|0)==((s<<24>>24<0?c[z>>2]|0:s&255)|0)?(BB(e,18711,x)|0)==0:0)NC(t,41);iB(j);iB(i);w=r;}else w=b;}else w=b;}while(0);l=g;return w|0;}function ZB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+64|0;h=g+48|0;i=g+36|0;j=g+24|0;k=g+12|0;m=g;n=SB(b,d,f)|0;if((n|0)!=(b|0)?(d=f+4|0,(c[f>>2]|0)!=(c[d>>2]|0)):0){HB(k,e,18675);FB(m,(c[d>>2]|0)+-24|0);e=a[m+11>>0]|0;f=e<<24>>24<0;TA(k,f?c[m>>2]|0:m,f?c[m+4>>2]|0:e&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];e=0;while(1){if((e|0)==3)break;c[k+(e<<2)>>2]=0;e=e+1|0;}qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];e=0;while(1){if((e|0)==3)break;c[j+(e<<2)>>2]=0;e=e+1|0;}e=c[d>>2]|0;d=e+-24|0;f=d+11|0;if((a[f>>0]|0)<0){o=c[d>>2]|0;a[h>>0]=0;cB(o,h);c[e+-20>>2]=0;}else{a[h>>0]=0;cB(d,h);a[f>>0]=0;}TB(d);c[d>>2]=c[i>>2];c[d+4>>2]=c[i+4>>2];c[d+8>>2]=c[i+8>>2];d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0;}iB(i);iB(j);iB(m);iB(k);p=n;}else p=b;l=g;return p|0;}function _B(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+48|0;g=f+36|0;h=f+24|0;i=f+12|0;j=f;if(((((d-b|0)>2?(a[b>>0]|0)==97:0)?(a[b+1>>0]|0)==116:0)?(k=b+2|0,m=mB(k,d,e)|0,(m|0)!=(k|0)):0)?(k=e+4|0,d=c[k>>2]|0,(c[e>>2]|0)!=(d|0)):0){FB(j,d+-24|0);pB(j,0,19854)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0;}d=c[k>>2]|0;k=d+-24|0;e=k+11|0;if((a[e>>0]|0)<0){n=c[k>>2]|0;a[g>>0]=0;cB(n,g);c[d+-20>>2]=0;}else{a[g>>0]=0;cB(k,g);a[e>>0]=0;}TB(k);c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];k=0;while(1){if((k|0)==3)break;c[h+(k<<2)>>2]=0;k=k+1|0;}iB(h);iB(i);iB(j);o=m;}else o=b;l=f;return o|0;}function $B(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+48|0;g=f+36|0;h=f+24|0;i=f+12|0;j=f;if(((((d-b|0)>2?(a[b>>0]|0)==97:0)?(a[b+1>>0]|0)==122:0)?(k=b+2|0,m=SB(k,d,e)|0,(m|0)!=(k|0)):0)?(k=e+4|0,d=c[k>>2]|0,(c[e>>2]|0)!=(d|0)):0){FB(j,d+-24|0);pB(j,0,19854)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0;}d=c[k>>2]|0;k=d+-24|0;e=k+11|0;if((a[e>>0]|0)<0){n=c[k>>2]|0;a[g>>0]=0;cB(n,g);c[d+-20>>2]=0;}else{a[g>>0]=0;cB(k,g);a[e>>0]=0;}TB(k);c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];k=0;while(1){if((k|0)==3)break;c[h+(k<<2)>>2]=0;k=k+1|0;}iB(h);iB(i);iB(j);o=m;}else o=b;l=f;return o|0;}function aC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+112|0;g=f+88|0;h=f+64|0;i=f+36|0;j=f+48|0;k=f+24|0;m=f+12|0;n=f;if((((((d-b|0)>2?(a[b>>0]|0)==99:0)?(a[b+1>>0]|0)==99:0)?(o=b+2|0,p=mB(o,d,e)|0,(p|0)!=(o|0)):0)?(o=SB(p,d,e)|0,(o|0)!=(p|0)):0)?(p=e+4|0,d=c[p>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){FB(g,d+-24|0);d=c[p>>2]|0;e=0;while(1){if((e|0)==-1)break;q=e+-1|0;QA(d+(q*24|0)|0);e=q;}c[p>>2]=d+-24;FB(n,d+-48|0);pB(n,0,19842)|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];d=0;while(1){if((d|0)==3)break;c[n+(d<<2)>>2]=0;d=d+1|0;}qB(m,18922)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];d=0;while(1){if((d|0)==3)break;c[m+(d<<2)>>2]=0;d=d+1|0;}d=a[g+11>>0]|0;e=d<<24>>24<0;TA(k,e?c[g>>2]|0:g,e?c[g+4>>2]|0:d&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];d=0;while(1){if((d|0)==3)break;c[k+(d<<2)>>2]=0;d=d+1|0;}qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}IB(h,i);JB((c[p>>2]|0)+-24|0,h);QA(h);iB(i);iB(j);iB(k);iB(m);iB(n);iB(g);r=o;}else r=b;l=f;return r|0;}function bC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;f=l;l=l+32|0;g=f+12|0;h=f;a:do{if(((((d-b|0)>3?(a[b>>0]|0)==99:0)?(a[b+1>>0]|0)==108:0)?(i=b+2|0,j=SB(i,d,e)|0,!((j|0)==(i|0)|(j|0)==(d|0))):0)?(i=e+4|0,k=c[i>>2]|0,(c[e>>2]|0)!=(k|0)):0){m=k+-12|0;n=a[m+11>>0]|0;o=n<<24>>24<0;TA(k+-24|0,o?c[m>>2]|0:m,o?c[k+-8>>2]|0:n&255)|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;n=0;while(1){if((n|0)==3)break;c[h+(n<<2)>>2]=0;n=n+1|0;}n=c[i>>2]|0;k=n+-12|0;o=k+11|0;if((a[o>>0]|0)<0){m=c[k>>2]|0;a[g>>0]=0;cB(m,g);c[n+-8>>2]=0;}else{a[g>>0]=0;cB(k,g);a[o>>0]=0;}TB(k);c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];k=0;while(1){if((k|0)==3)break;c[h+(k<<2)>>2]=0;k=k+1|0;}iB(h);qB((c[i>>2]|0)+-24|0,18675)|0;k=g+11|0;o=g+4|0;n=0;m=j;while(1){if((a[m>>0]|0)==69)break;p=SB(m,d,e)|0;if((p|0)==(m|0)|(p|0)==(d|0)){q=b;break a;}r=c[i>>2]|0;if((c[e>>2]|0)==(r|0)){q=b;break a;}FB(g,r+-24|0);r=c[i>>2]|0;s=0;while(1){if((s|0)==-1)break;t=s+-1|0;QA(r+(t*24|0)|0);s=t;}s=r+-24|0;c[i>>2]=s;t=a[k>>0]|0;u=t<<24>>24<0;v=u?c[o>>2]|0:t&255;if(v){if((c[e>>2]|0)==(s|0)){w=0;x=b;y=m;}else{TA(r+-48|0,u?c[g>>2]|0:g,v)|0;w=1;x=n;y=p;}}else{w=1;x=n;y=p;}iB(g);if(w){n=x;m=y;}else{q=x;break a;}}n=c[i>>2]|0;if((c[e>>2]|0)!=(n|0)){qB(n+-24|0,18673)|0;q=m+1|0;}else q=b;}else q=b;}while(0);l=f;return q|0;}function cC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;f=l;l=l+112|0;g=f+88|0;h=f+64|0;i=f+36|0;j=f+48|0;k=f+24|0;m=f+12|0;n=f;a:do{if((((d-b|0)>2?(a[b>>0]|0)==99:0)?(a[b+1>>0]|0)==118:0)?(o=e+63|0,p=a[o>>0]|0,a[o>>0]=0,q=b+2|0,r=mB(q,d,e)|0,a[o>>0]=p,!((r|0)==(q|0)|(r|0)==(d|0))):0){if((a[r>>0]|0)!=95){q=SB(r,d,e)|0;if((q|0)==(r|0)){s=b;break;}else t=q;}else{q=r+1|0;if((q|0)==(d|0)){s=b;break;}r=a[q>>0]|0;b:do{if(r<<24>>24==69){p=e+4|0;o=c[p>>2]|0;if(o>>>0<(c[e+8>>2]|0)>>>0){c[o>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[o+16>>2]=0;c[o+20>>2]=0;VC(o);c[p>>2]=(c[p>>2]|0)+24;u=q;break;}else{WC(e);u=q;break;}}else{p=q;o=r;while(1){if(o<<24>>24==69){u=p;break b;}v=SB(p,d,e)|0;if((v|0)==(p|0)|(v|0)==(d|0)){s=b;break a;}p=v;o=a[v>>0]|0;}}}while(0);t=u+1|0;}r=e+4|0;q=c[r>>2]|0;if(((q-(c[e>>2]|0)|0)/24|0)>>>0>=2){FB(g,q+-24|0);q=c[r>>2]|0;o=0;while(1){if((o|0)==-1)break;p=o+-1|0;QA(q+(p*24|0)|0);o=p;}c[r>>2]=q+-24;FB(n,q+-48|0);pB(n,0,18675)|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];o=0;while(1){if((o|0)==3)break;c[n+(o<<2)>>2]=0;o=o+1|0;}qB(m,19839)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];o=0;while(1){if((o|0)==3)break;c[m+(o<<2)>>2]=0;o=o+1|0;}o=a[g+11>>0]|0;q=o<<24>>24<0;TA(k,q?c[g>>2]|0:g,q?c[g+4>>2]|0:o&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];o=0;while(1){if((o|0)==3)break;c[k+(o<<2)>>2]=0;o=o+1|0;}qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];o=0;while(1){if((o|0)==3)break;c[j+(o<<2)>>2]=0;o=o+1|0;}IB(h,i);JB((c[r>>2]|0)+-24|0,h);QA(h);iB(i);iB(j);iB(k);iB(m);iB(n);iB(g);s=t;}else s=b;}else s=b;}while(0);l=f;return s|0;}function dC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+112|0;g=f+88|0;h=f+64|0;i=f+36|0;j=f+48|0;k=f+24|0;m=f+12|0;n=f;if((((((d-b|0)>2?(a[b>>0]|0)==100:0)?(a[b+1>>0]|0)==99:0)?(o=b+2|0,p=mB(o,d,e)|0,(p|0)!=(o|0)):0)?(o=SB(p,d,e)|0,(o|0)!=(p|0)):0)?(p=e+4|0,d=c[p>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){FB(g,d+-24|0);d=c[p>>2]|0;e=0;while(1){if((e|0)==-1)break;q=e+-1|0;QA(d+(q*24|0)|0);e=q;}c[p>>2]=d+-24;FB(n,d+-48|0);pB(n,0,19825)|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];d=0;while(1){if((d|0)==3)break;c[n+(d<<2)>>2]=0;d=d+1|0;}qB(m,18922)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];d=0;while(1){if((d|0)==3)break;c[m+(d<<2)>>2]=0;d=d+1|0;}d=a[g+11>>0]|0;e=d<<24>>24<0;TA(k,e?c[g>>2]|0:g,e?c[g+4>>2]|0:d&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];d=0;while(1){if((d|0)==3)break;c[k+(d<<2)>>2]=0;d=d+1|0;}qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}IB(h,i);JB((c[p>>2]|0)+-24|0,h);QA(h);iB(i);iB(j);iB(k);iB(m);iB(n);iB(g);r=o;}else r=b;l=f;return r|0;}function eC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;f=l;l=l+32|0;g=f+12|0;h=f;i=d;a:do{if((i-b|0)>2){if((a[b>>0]|0)==103){j=(a[b+1>>0]|0)==115;k=j;m=j?b+2|0:b;}else{k=0;m=b;}j=xC(m,d,e)|0;if((j|0)!=(m|0)){if(!k){n=j;break;}o=c[e+4>>2]|0;if((c[e>>2]|0)==(o|0)){n=b;break;}pB(o+-24|0,0,18747)|0;n=j;break;}if(((i-m|0)>2?(a[m>>0]|0)==115:0)?(a[m+1>>0]|0)==114:0){j=m+2|0;if((a[j>>0]|0)==78){o=m+3|0;p=yC(o,d,e)|0;if((p|0)==(o|0)|(p|0)==(d|0)){n=b;break;}o=EB(p,d,e)|0;q=e+4|0;do{if((o|0)==(p|0)){r=p;s=e;}else{t=c[q>>2]|0;if(((t-(c[e>>2]|0)|0)/24|0)>>>0<2){n=b;break a;}FB(g,t+-24|0);t=c[q>>2]|0;u=0;while(1){if((u|0)==-1)break;v=u+-1|0;QA(t+(v*24|0)|0);u=v;}c[q>>2]=t+-24;u=a[g+11>>0]|0;v=u<<24>>24<0;TA(t+-48|0,v?c[g>>2]|0:g,v?c[g+4>>2]|0:u&255)|0;if((o|0)!=(d|0)){iB(g);r=o;s=e;break;}u=c[q>>2]|0;v=0;while(1){if((v|0)==-1)break;w=v+-1|0;QA(u+(w*24|0)|0);v=w;}c[q>>2]=u+-24;iB(g);n=b;break a;}}while(0);o=h+11|0;p=h+4|0;v=r;while(1){if((a[v>>0]|0)==69)break;t=zC(v,d,e)|0;if((t|0)==(v|0)|(t|0)==(d|0)){n=b;break a;}w=c[q>>2]|0;if(((w-(c[s>>2]|0)|0)/24|0)>>>0<2){n=b;break a;}FB(g,w+-24|0);w=c[q>>2]|0;x=0;while(1){if((x|0)==-1)break;y=x+-1|0;QA(w+(y*24|0)|0);x=y;}c[q>>2]=w+-24;pB(g,0,18747)|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];x=0;while(1){if((x|0)==3)break;c[g+(x<<2)>>2]=0;x=x+1|0;}x=a[o>>0]|0;w=x<<24>>24<0;TA((c[q>>2]|0)+-24|0,w?c[h>>2]|0:h,w?c[p>>2]|0:x&255)|0;iB(h);iB(g);v=t;}p=v+1|0;o=xC(p,d,e)|0;if((o|0)==(p|0)){p=c[q>>2]|0;if((c[e>>2]|0)==(p|0)){n=b;break;}x=0;while(1){if((x|0)==-1)break;w=x+-1|0;QA(p+(w*24|0)|0);x=w;}c[q>>2]=p+-24;n=b;break;}x=c[q>>2]|0;if(((x-(c[s>>2]|0)|0)/24|0)>>>0<2){n=b;break;}FB(g,x+-24|0);x=c[q>>2]|0;v=0;while(1){if((v|0)==-1)break;w=v+-1|0;QA(x+(w*24|0)|0);v=w;}c[q>>2]=x+-24;pB(g,0,18747)|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];v=0;while(1){if((v|0)==3)break;c[g+(v<<2)>>2]=0;v=v+1|0;}v=a[h+11>>0]|0;x=v<<24>>24<0;TA((c[q>>2]|0)+-24|0,x?c[h>>2]|0:h,x?c[h+4>>2]|0:v&255)|0;iB(h);iB(g);n=o;break;}v=yC(j,d,e)|0;if((v|0)!=(j|0)){x=EB(v,d,e)|0;if((x|0)==(v|0))z=v;else{v=e+4|0;p=c[v>>2]|0;if(((p-(c[e>>2]|0)|0)/24|0)>>>0<2){n=b;break;}FB(g,p+-24|0);p=c[v>>2]|0;w=0;while(1){if((w|0)==-1)break;u=w+-1|0;QA(p+(u*24|0)|0);w=u;}c[v>>2]=p+-24;w=a[g+11>>0]|0;o=w<<24>>24<0;TA(p+-48|0,o?c[g>>2]|0:g,o?c[g+4>>2]|0:w&255)|0;iB(g);z=x;}w=xC(z,d,e)|0;if((w|0)==(z|0)){o=e+4|0;q=c[o>>2]|0;if((c[e>>2]|0)==(q|0)){n=b;break;}u=0;while(1){if((u|0)==-1)break;y=u+-1|0;QA(q+(y*24|0)|0);u=y;}c[o>>2]=q+-24;n=b;break;}u=e+4|0;x=c[u>>2]|0;if(((x-(c[e>>2]|0)|0)/24|0)>>>0<2){n=b;break;}FB(g,x+-24|0);x=c[u>>2]|0;p=0;while(1){if((p|0)==-1)break;v=p+-1|0;QA(x+(v*24|0)|0);p=v;}c[u>>2]=x+-24;pB(g,0,18747)|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];p=0;while(1){if((p|0)==3)break;c[g+(p<<2)>>2]=0;p=p+1|0;}p=a[h+11>>0]|0;x=p<<24>>24<0;TA((c[u>>2]|0)+-24|0,x?c[h>>2]|0:h,x?c[h+4>>2]|0:p&255)|0;iB(h);iB(g);n=w;break;}p=zC(j,d,e)|0;if(!((p|0)==(j|0)|(p|0)==(d|0))){if(k){x=e+4|0;q=c[x>>2]|0;if((c[e>>2]|0)==(q|0)){n=b;break;}pB(q+-24|0,0,18747)|0;A=x;}else A=e+4|0;x=h+11|0;q=h+4|0;o=p;while(1){if((a[o>>0]|0)==69)break;p=zC(o,d,e)|0;if((p|0)==(o|0)|(p|0)==(d|0)){n=b;break a;}v=c[A>>2]|0;if(((v-(c[e>>2]|0)|0)/24|0)>>>0<2){n=b;break a;}FB(g,v+-24|0);v=c[A>>2]|0;y=0;while(1){if((y|0)==-1)break;B=y+-1|0;QA(v+(B*24|0)|0);y=B;}c[A>>2]=v+-24;pB(g,0,18747)|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];y=0;while(1){if((y|0)==3)break;c[g+(y<<2)>>2]=0;y=y+1|0;}y=a[x>>0]|0;v=y<<24>>24<0;TA((c[A>>2]|0)+-24|0,v?c[h>>2]|0:h,v?c[q>>2]|0:y&255)|0;iB(h);iB(g);o=p;}q=o+1|0;x=xC(q,d,e)|0;if((x|0)==(q|0)){q=c[A>>2]|0;if((c[e>>2]|0)==(q|0)){n=b;break;}j=0;while(1){if((j|0)==-1)break;w=j+-1|0;QA(q+(w*24|0)|0);j=w;}c[A>>2]=q+-24;n=b;break;}j=c[A>>2]|0;if(((j-(c[e>>2]|0)|0)/24|0)>>>0>=2){FB(g,j+-24|0);j=c[A>>2]|0;o=0;while(1){if((o|0)==-1)break;w=o+-1|0;QA(j+(w*24|0)|0);o=w;}c[A>>2]=j+-24;pB(g,0,18747)|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];o=0;while(1){if((o|0)==3)break;c[g+(o<<2)>>2]=0;o=o+1|0;}o=a[h+11>>0]|0;j=o<<24>>24<0;TA((c[A>>2]|0)+-24|0,j?c[h>>2]|0:h,j?c[h+4>>2]|0:o&255)|0;iB(h);iB(g);n=x;}else n=b;}else n=b;}else n=b;}else n=b;}while(0);l=f;return n|0;}function fC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+12|0;h=f;if((((((d-b|0)>2?(a[b>>0]|0)==100:0)?(a[b+1>>0]|0)==115:0)?(i=b+2|0,j=SB(i,d,e)|0,(j|0)!=(i|0)):0)?(i=SB(j,d,e)|0,(i|0)!=(j|0)):0)?(j=e+4|0,d=c[j>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){FB(g,d+-24|0);d=c[j>>2]|0;e=0;while(1){if((e|0)==-1)break;k=e+-1|0;QA(d+(k*24|0)|0);e=k;}c[j>>2]=d+-24;UB(h,18966,g);d=a[h+11>>0]|0;e=d<<24>>24<0;TA((c[j>>2]|0)+-24|0,e?c[h>>2]|0:h,e?c[h+4>>2]|0:d&255)|0;iB(h);iB(g);m=i;}else m=b;l=f;return m|0;}function gC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f+12|0;h=f;if((((((d-b|0)>2?(a[b>>0]|0)==100:0)?(a[b+1>>0]|0)==116:0)?(i=b+2|0,j=SB(i,d,e)|0,(j|0)!=(i|0)):0)?(i=eC(j,d,e)|0,(i|0)!=(j|0)):0)?(j=e+4|0,d=c[j>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){FB(g,d+-24|0);d=c[j>>2]|0;e=0;while(1){if((e|0)==-1)break;k=e+-1|0;QA(d+(k*24|0)|0);e=k;}c[j>>2]=d+-24;UB(h,18964,g);d=a[h+11>>0]|0;e=d<<24>>24<0;TA((c[j>>2]|0)+-24|0,e?c[h>>2]|0:h,e?c[h+4>>2]|0:d&255)|0;iB(h);iB(g);m=i;}else m=b;l=f;return m|0;}function hC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;f=l;l=l+112|0;g=f+88|0;h=f+76|0;i=f+64|0;j=f+40|0;k=f+16|0;m=f;n=f+52|0;o=d;a:do{if((o-b|0)>3){p=a[b>>0]|0;if(p<<24>>24==103){q=(a[b+1>>0]|0)==115;r=q?b+2|0:b;s=q;t=r;u=a[r>>0]|0;}else{s=0;t=b;u=p;}if(u<<24>>24==110){p=a[t+1>>0]|0;switch(p<<24>>24){case 97:case 119:break;default:{v=b;break a;}}r=p<<24>>24==97;p=t+2|0;b:do{if((p|0)!=(d|0)){q=0;w=p;while(1){if((a[w>>0]|0)==95)break;x=SB(w,d,e)|0;if((x|0)==(w|0)|(x|0)==(d|0))break b;else{q=1;w=x;}}x=w+1|0;y=mB(x,d,e)|0;if(!((y|0)==(x|0)|(y|0)==(d|0))){x=a[y>>0]|0;c:do{if(!((o-y|0)>2&x<<24>>24==112)){if(x<<24>>24==69){z=0;A=y;}else break b;}else{if((a[y+1>>0]|0)!=105)break b;B=y+2|0;while(1){if((a[B>>0]|0)==69){z=1;A=B;break c;}C=B;B=SB(B,d,e)|0;if((B|0)==(C|0)|(B|0)==(d|0))break b;}}}while(0);c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;y=0;while(1){if((y|0)==3)break;c[h+(y<<2)>>2]=0;y=y+1|0;}if(z){y=e+4|0;x=c[y>>2]|0;if((c[e>>2]|0)==(x|0)){D=b;E=1;}else{FB(i,x+-24|0);x=h+11|0;if((a[x>>0]|0)<0){w=c[h>>2]|0;a[g>>0]=0;cB(w,g);c[h+4>>2]=0;}else{a[g>>0]=0;cB(h,g);a[x>>0]=0;}TB(h);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];x=0;while(1){if((x|0)==3)break;c[i+(x<<2)>>2]=0;x=x+1|0;}iB(i);x=c[y>>2]|0;w=0;while(1){if((w|0)==-1)break;B=w+-1|0;QA(x+(B*24|0)|0);w=B;}w=x+-24|0;c[y>>2]=w;F=y;G=e;H=w;I=33;}}else{w=e+4|0;F=w;G=e;H=c[w>>2]|0;I=33;}if((I|0)==33)if((c[G>>2]|0)==(H|0)){D=b;E=1;}else{FB(i,H+-24|0);w=c[F>>2]|0;B=0;while(1){if((B|0)==-1)break;C=B+-1|0;QA(w+(C*24|0)|0);B=C;}B=w+-24|0;c[F>>2]=B;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;y=0;while(1){if((y|0)==3)break;c[j+(y<<2)>>2]=0;y=y+1|0;}if(q){if((c[G>>2]|0)==(B|0)){J=b;K=1;}else{FB(k,w+-48|0);y=j+11|0;if((a[y>>0]|0)<0){x=c[j>>2]|0;a[g>>0]=0;cB(x,g);c[j+4>>2]=0;}else{a[g>>0]=0;cB(j,g);a[y>>0]=0;}TB(j);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];y=0;while(1){if((y|0)==3)break;c[k+(y<<2)>>2]=0;y=y+1|0;}iB(k);y=c[F>>2]|0;w=0;while(1){if((w|0)==-1)break;B=w+-1|0;QA(y+(B*24|0)|0);w=B;}c[F>>2]=y+-24;I=52;}}else I=52;if((I|0)==52){c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;w=0;while(1){if((w|0)==3)break;c[g+(w<<2)>>2]=0;w=w+1|0;}if(s)uC(g,18747);if(r)qB(g,18957)|0;else qB(g,18707)|0;if(q){UB(m,18675,j);qB(m,18961)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];w=0;while(1){if((w|0)==3)break;c[m+(w<<2)>>2]=0;w=w+1|0;}w=a[k+11>>0]|0;q=w<<24>>24<0;TA(g,q?c[k>>2]|0:k,q?c[k+4>>2]|0:w&255)|0;iB(k);iB(m);}w=a[i+11>>0]|0;q=w<<24>>24<0;TA(g,q?c[i>>2]|0:i,q?c[i+4>>2]|0:w&255)|0;if(z){UB(m,18670,h);qB(m,18673)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];w=0;while(1){if((w|0)==3)break;c[m+(w<<2)>>2]=0;w=w+1|0;}w=a[k+11>>0]|0;q=w<<24>>24<0;TA(g,q?c[k>>2]|0:k,q?c[k+4>>2]|0:w&255)|0;iB(k);iB(m);};c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];w=0;while(1){if((w|0)==3)break;c[g+(w<<2)>>2]=0;w=w+1|0;}IB(k,n);w=c[F>>2]|0;if(w>>>0<(c[e+8>>2]|0)>>>0){KB(w,k);c[F>>2]=(c[F>>2]|0)+24;}else LB(e,k);QA(k);iB(n);iB(g);J=A+1|0;K=0;}iB(j);iB(i);D=J;E=K;}iB(h);if(!E){v=D;break a;}}}}while(0);v=b;}else v=b;}else v=b;}while(0);l=f;return v|0;}function iC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+48|0;g=f+36|0;h=f+24|0;i=f+12|0;j=f;k=SB(b,d,e)|0;if((k|0)!=(b|0)?(d=e+4|0,m=c[d>>2]|0,(c[e>>2]|0)!=(m|0)):0){FB(j,m+-24|0);pB(j,0,18946)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];m=0;while(1){if((m|0)==3)break;c[j+(m<<2)>>2]=0;m=m+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];m=0;while(1){if((m|0)==3)break;c[i+(m<<2)>>2]=0;m=m+1|0;}m=c[d>>2]|0;d=m+-24|0;e=d+11|0;if((a[e>>0]|0)<0){n=c[d>>2]|0;a[g>>0]=0;cB(n,g);c[m+-20>>2]=0;}else{a[g>>0]=0;cB(d,g);a[e>>0]=0;}TB(d);c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];d=0;while(1){if((d|0)==3)break;c[h+(d<<2)>>2]=0;d=d+1|0;}iB(h);iB(i);iB(j);o=k;}else o=b;l=f;return o|0;}function jC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=l;l=l+16|0;g=f;if((((((d-b|0)>2?(a[b>>0]|0)==112:0)?(a[b+1>>0]|0)==116:0)?(h=b+2|0,i=SB(h,d,e)|0,(i|0)!=(h|0)):0)?(h=SB(i,d,e)|0,(h|0)!=(i|0)):0)?(i=e+4|0,d=c[i>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){FB(g,d+-24|0);d=c[i>>2]|0;e=0;while(1){if((e|0)==-1)break;j=e+-1|0;QA(d+(j*24|0)|0);e=j;}c[i>>2]=d+-24;qB(d+-48|0,18943)|0;d=a[g+11>>0]|0;e=d<<24>>24<0;TA((c[i>>2]|0)+-24|0,e?c[g>>2]|0:g,e?c[g+4>>2]|0:d&255)|0;iB(g);k=h;}else k=b;l=f;return k|0;}function kC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+112|0;g=f+88|0;h=f+64|0;i=f+36|0;j=f+48|0;k=f+24|0;m=f+12|0;n=f;if((((((d-b|0)>2?(a[b>>0]|0)==114:0)?(a[b+1>>0]|0)==99:0)?(o=b+2|0,p=mB(o,d,e)|0,(p|0)!=(o|0)):0)?(o=SB(p,d,e)|0,(o|0)!=(p|0)):0)?(p=e+4|0,d=c[p>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){FB(g,d+-24|0);d=c[p>>2]|0;e=0;while(1){if((e|0)==-1)break;q=e+-1|0;QA(d+(q*24|0)|0);e=q;}c[p>>2]=d+-24;FB(n,d+-48|0);pB(n,0,18925)|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];d=0;while(1){if((d|0)==3)break;c[n+(d<<2)>>2]=0;d=d+1|0;}qB(m,18922)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];d=0;while(1){if((d|0)==3)break;c[m+(d<<2)>>2]=0;d=d+1|0;}d=a[g+11>>0]|0;e=d<<24>>24<0;TA(k,e?c[g>>2]|0:g,e?c[g+4>>2]|0:d&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];d=0;while(1){if((d|0)==3)break;c[k+(d<<2)>>2]=0;d=d+1|0;}qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}IB(h,i);JB((c[p>>2]|0)+-24|0,h);QA(h);iB(i);iB(j);iB(k);iB(m);iB(n);iB(g);r=o;}else r=b;l=f;return r|0;}function lC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+112|0;g=f+88|0;h=f+64|0;i=f+36|0;j=f+48|0;k=f+24|0;m=f+12|0;n=f;if((((((d-b|0)>2?(a[b>>0]|0)==115:0)?(a[b+1>>0]|0)==99:0)?(o=b+2|0,p=mB(o,d,e)|0,(p|0)!=(o|0)):0)?(o=SB(p,d,e)|0,(o|0)!=(p|0)):0)?(p=e+4|0,d=c[p>>2]|0,((d-(c[e>>2]|0)|0)/24|0)>>>0>=2):0){FB(g,d+-24|0);d=c[p>>2]|0;e=0;while(1){if((e|0)==-1)break;q=e+-1|0;QA(d+(q*24|0)|0);e=q;}c[p>>2]=d+-24;FB(n,d+-48|0);pB(n,0,18909)|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];d=0;while(1){if((d|0)==3)break;c[n+(d<<2)>>2]=0;d=d+1|0;}qB(m,18922)|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];d=0;while(1){if((d|0)==3)break;c[m+(d<<2)>>2]=0;d=d+1|0;}d=a[g+11>>0]|0;e=d<<24>>24<0;TA(k,e?c[g>>2]|0:g,e?c[g+4>>2]|0:d&255)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];d=0;while(1){if((d|0)==3)break;c[k+(d<<2)>>2]=0;d=d+1|0;}qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}IB(h,i);JB((c[p>>2]|0)+-24|0,h);QA(h);iB(i);iB(j);iB(k);iB(m);iB(n);iB(g);r=o;}else r=b;l=f;return r|0;}function mC(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(((c-b|0)>2?(a[b>>0]|0)==115:0)?(a[b+1>>0]|0)==112:0){e=b+2|0;f=SB(e,c,d)|0;g=(f|0)==(e|0)?b:f;}else g=b;return g|0;}function nC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+64|0;g=f+40|0;h=f+12|0;i=f+24|0;j=f;if(((((d-b|0)>2?(a[b>>0]|0)==115:0)?(a[b+1>>0]|0)==116:0)?(k=b+2|0,m=mB(k,d,e)|0,(m|0)!=(k|0)):0)?(k=e+4|0,d=c[k>>2]|0,(c[e>>2]|0)!=(d|0)):0){FB(j,d+-24|0);pB(j,0,18900)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0;}IB(g,h);JB((c[k>>2]|0)+-24|0,g);QA(g);iB(h);iB(i);iB(j);n=m;}else n=b;l=f;return n|0;}function oC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+64|0;g=f+40|0;h=f+12|0;i=f+24|0;j=f;if(((((d-b|0)>2?(a[b>>0]|0)==115:0)?(a[b+1>>0]|0)==122:0)?(k=b+2|0,m=SB(k,d,e)|0,(m|0)!=(k|0)):0)?(k=e+4|0,d=c[k>>2]|0,(c[e>>2]|0)!=(d|0)):0){FB(j,d+-24|0);pB(j,0,18900)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0;}IB(g,h);JB((c[k>>2]|0)+-24|0,g);QA(g);iB(h);iB(i);iB(j);n=m;}else n=b;l=f;return n|0;}function pC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+64|0;g=f+48|0;h=f+24|0;i=f;j=f+12|0;if(((((d-b|0)>2?(a[b>>0]|0)==115:0)?(a[b+1>>0]|0)==90:0)?(k=b+2|0,(a[k>>0]|0)==84):0)?(m=e+4|0,n=((c[m>>2]|0)-(c[e>>2]|0)|0)/24|0,o=DB(k,d,e)|0,d=((c[m>>2]|0)-(c[e>>2]|0)|0)/24|0,(o|0)!=(k|0)):0){c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;RB(g,18886,AB(18886)|0);a:do{if((n|0)!=(d|0)){FB(h,(c[e>>2]|0)+(n*24|0)|0);k=a[h+11>>0]|0;p=k<<24>>24<0;TA(g,p?c[h>>2]|0:h,p?c[h+4>>2]|0:k&255)|0;iB(h);k=h+11|0;p=h+4|0;q=n;while(1){r=q+1|0;if((r|0)==(d|0))break a;FB(i,(c[e>>2]|0)+(r*24|0)|0);pB(i,0,18897)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];s=0;while(1){if((s|0)==3)break;c[i+(s<<2)>>2]=0;s=s+1|0;}s=a[k>>0]|0;t=s<<24>>24<0;TA(g,t?c[h>>2]|0:h,t?c[p>>2]|0:s&255)|0;iB(h);iB(i);q=r;}}}while(0);qB(g,18673)|0;i=d;while(1){if((i|0)==(n|0))break;d=c[m>>2]|0;q=0;while(1){if((q|0)==-1)break;p=q+-1|0;QA(d+(p*24|0)|0);q=p;}c[m>>2]=d+-24;i=i+-1|0;}c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];i=0;while(1){if((i|0)==3)break;c[g+(i<<2)>>2]=0;i=i+1|0;}IB(h,j);i=c[m>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,h);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,h);QA(h);iB(j);iB(g);u=o;}else u=b;l=f;return u|0;}function qC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+64|0;g=f+40|0;h=f+12|0;i=f+24|0;j=f;if((((((d-b|0)>2?(a[b>>0]|0)==115:0)?(a[b+1>>0]|0)==90:0)?(k=b+2|0,(a[k>>0]|0)==102):0)?(m=XB(k,d,e)|0,(m|0)!=(k|0)):0)?(k=e+4|0,d=c[k>>2]|0,(c[e>>2]|0)!=(d|0)):0){FB(j,d+-24|0);pB(j,0,18886)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];d=0;while(1){if((d|0)==3)break;c[j+(d<<2)>>2]=0;d=d+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0;}IB(g,h);JB((c[k>>2]|0)+-24|0,g);QA(g);iB(h);iB(i);iB(j);n=m;}else n=b;l=f;return n|0;}function rC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+64|0;g=f+40|0;h=f+12|0;i=f+24|0;j=f;a:do{if((d-b|0)>2?(a[b>>0]|0)==116:0){k=a[b+1>>0]|0;switch(k<<24>>24){case 105:case 101:break;default:{m=b;break a;}}n=b+2|0;if(k<<24>>24==101)o=SB(n,d,e)|0;else o=mB(n,d,e)|0;if((o|0)!=(n|0)?(n=e+4|0,k=c[n>>2]|0,(c[e>>2]|0)!=(k|0)):0){FB(j,k+-24|0);pB(j,0,18878)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];k=0;while(1){if((k|0)==3)break;c[j+(k<<2)>>2]=0;k=k+1|0;}qB(i,18673)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];k=0;while(1){if((k|0)==3)break;c[i+(k<<2)>>2]=0;k=k+1|0;}IB(g,h);JB((c[n>>2]|0)+-24|0,g);QA(g);iB(h);iB(i);iB(j);m=o;}else m=b;}else m=b;}while(0);l=f;return m|0;}function sC(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,5);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function tC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+48|0;g=f+24|0;h=f;i=f+12|0;if(((((d-b|0)>2?(a[b>>0]|0)==116:0)?(a[b+1>>0]|0)==119:0)?(j=b+2|0,k=SB(j,d,e)|0,(k|0)!=(j|0)):0)?(j=e+4|0,d=c[j>>2]|0,(c[e>>2]|0)!=(d|0)):0){FB(i,d+-24|0);pB(i,0,18871)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];d=0;while(1){if((d|0)==3)break;c[i+(d<<2)>>2]=0;d=d+1|0;}IB(g,h);JB((c[j>>2]|0)+-24|0,g);QA(g);iB(h);iB(i);m=k;}else m=b;l=f;return m|0;}function uC(a,b){a=a|0;b=b|0;vC(a,b,AB(b)|0);return;}function vC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;f=l;l=l+16|0;g=f;h=b+11|0;i=a[h>>0]|0;j=i<<24>>24<0;if(j)k=(c[b+8>>2]&2147483647)+-1|0;else k=10;do{if(k>>>0>=e>>>0){if(j)m=c[b>>2]|0;else m=b;wC(m,d,e)|0;a[g>>0]=0;cB(m+e|0,g);if((a[h>>0]|0)<0){c[b+4>>2]=e;break;}else{a[h>>0]=e;break;}}else{if(j)n=c[b+4>>2]|0;else n=i&255;dB(b,k,e-k|0,n,0,n,e,d);}}while(0);l=f;return;}function wC(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)nE(a|0,b|0,c|0)|0;return a|0;}function xC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=l;l=l+16|0;g=f;a:do{if((d-b|0)>1){h=a[b>>0]|0;switch(h<<24>>24){case 100:case 111:{if((a[b+1>>0]|0)==110){i=b+2|0;if(h<<24>>24!=111){h=UC(i,d,e)|0;j=(h|0)==(i|0)?b:h;break a;}h=EC(i,d,e)|0;if((h|0)==(i|0)){j=b;break a;}i=EB(h,d,e)|0;if((i|0)==(h|0)){j=h;break a;}h=e+4|0;k=c[h>>2]|0;if(((k-(c[e>>2]|0)|0)/24|0)>>>0<2){j=i;break a;}FB(g,k+-24|0);k=c[h>>2]|0;m=0;while(1){if((m|0)==-1)break;n=m+-1|0;QA(k+(n*24|0)|0);m=n;}c[h>>2]=k+-24;m=a[g+11>>0]|0;n=m<<24>>24<0;TA(k+-48|0,n?c[g>>2]|0:g,n?c[g+4>>2]|0:m&255)|0;iB(g);j=i;break a;}break;}default:{}}m=AC(b,d,e)|0;if((m|0)==(b|0)){n=EC(b,d,e)|0;if((n|0)!=(b|0)){o=EB(n,d,e)|0;if((o|0)!=(n|0)){p=e+4|0;q=c[p>>2]|0;if(((q-(c[e>>2]|0)|0)/24|0)>>>0<2)j=o;else{FB(g,q+-24|0);q=c[p>>2]|0;r=0;while(1){if((r|0)==-1)break;s=r+-1|0;QA(q+(s*24|0)|0);r=s;}c[p>>2]=q+-24;r=a[g+11>>0]|0;i=r<<24>>24<0;TA(q+-48|0,i?c[g>>2]|0:g,i?c[g+4>>2]|0:r&255)|0;iB(g);j=o;}}else j=n;}else j=b;}else j=m;}else j=b;}while(0);l=f;return j|0;}function yC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=l;l=l+32|0;g=f+8|0;h=f;a:do{if((b|0)==(d|0))i=b;else switch(a[b>>0]|0){case 84:{j=e+4|0;k=((c[j>>2]|0)-(c[e>>2]|0)|0)/24|0;m=DB(b,d,e)|0;n=c[j>>2]|0;o=(n-(c[e>>2]|0)|0)/24|0;p=n;if((m|0)!=(b|0)&(o|0)==(k+1|0)){c[h>>2]=c[e+12>>2];vB(g,p+-24|0,h);n=e+20|0;q=c[n>>2]|0;if(q>>>0<(c[e+24>>2]|0)>>>0){c[q>>2]=0;r=q+4|0;c[r>>2]=0;s=q+8|0;c[s>>2]=0;c[q+12>>2]=c[g+12>>2];c[q>>2]=c[g>>2];q=g+4|0;c[r>>2]=c[q>>2];r=g+8|0;c[s>>2]=c[r>>2];c[r>>2]=0;c[q>>2]=0;c[g>>2]=0;c[n>>2]=(c[n>>2]|0)+16;}else wB(e+16|0,g);RA(g);i=m;break a;}m=o;o=p;while(1){if((m|0)==(k|0)){i=b;break a;}p=0;while(1){if((p|0)==-1)break;n=p+-1|0;QA(o+(n*24|0)|0);p=n;}p=o+-24|0;c[j>>2]=p;m=m+-1|0;o=p;}break;}case 68:{o=OB(b,d,e)|0;if((o|0)==(b|0)){i=b;break a;}m=c[e+4>>2]|0;if((c[e>>2]|0)==(m|0)){i=b;break a;}c[h>>2]=c[e+12>>2];vB(g,m+-24|0,h);m=e+20|0;j=c[m>>2]|0;if(j>>>0<(c[e+24>>2]|0)>>>0){c[j>>2]=0;k=j+4|0;c[k>>2]=0;p=j+8|0;c[p>>2]=0;c[j+12>>2]=c[g+12>>2];c[j>>2]=c[g>>2];j=g+4|0;c[k>>2]=c[j>>2];k=g+8|0;c[p>>2]=c[k>>2];c[k>>2]=0;c[j>>2]=0;c[g>>2]=0;c[m>>2]=(c[m>>2]|0)+16;}else wB(e+16|0,g);RA(g);i=o;break a;break;}case 83:{o=NB(b,d,e)|0;if((o|0)!=(b|0)){i=o;break a;}if((d-b|0)<=2){i=b;break a;}if((a[b+1>>0]|0)!=116){i=b;break a;}o=b+2|0;m=BC(o,d,e)|0;if((m|0)==(o|0)){i=b;break a;}o=e+4|0;j=c[o>>2]|0;if((c[e>>2]|0)==(j|0)){i=b;break a;}pB(j+-24|0,0,18969)|0;j=(c[o>>2]|0)+-24|0;c[h>>2]=c[e+12>>2];vB(g,j,h);j=e+20|0;o=c[j>>2]|0;if(o>>>0<(c[e+24>>2]|0)>>>0){c[o>>2]=0;k=o+4|0;c[k>>2]=0;p=o+8|0;c[p>>2]=0;c[o+12>>2]=c[g+12>>2];c[o>>2]=c[g>>2];o=g+4|0;c[k>>2]=c[o>>2];k=g+8|0;c[p>>2]=c[k>>2];c[k>>2]=0;c[o>>2]=0;c[g>>2]=0;c[j>>2]=(c[j>>2]|0)+16;}else wB(e+16|0,g);RA(g);i=m;break a;break;}default:{i=b;break a;}}}while(0);l=f;return i|0;}function zC(a,b,c){a=a|0;b=b|0;c=c|0;return AC(a,b,c)|0;}function AC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+16|0;g=f;if((b|0)!=(d|0)?(h=GB(b,d,e)|0,(h|0)!=(b|0)):0){i=EB(h,d,e)|0;if((i|0)!=(h|0)){d=e+4|0;j=c[d>>2]|0;if(((j-(c[e>>2]|0)|0)/24|0)>>>0<2)k=b;else{FB(g,j+-24|0);j=c[d>>2]|0;e=0;while(1){if((e|0)==-1)break;m=e+-1|0;QA(j+(m*24|0)|0);e=m;}c[d>>2]=j+-24;d=a[g+11>>0]|0;e=d<<24>>24<0;TA(j+-48|0,e?c[g>>2]|0:g,e?c[g+4>>2]|0:d&255)|0;iB(g);k=i;}}else k=h;}else k=b;l=f;return k|0;}function BC(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do{if((b|0)==(c|0))e=b;else switch(a[b>>0]|0){case 68:case 67:{e=CC(b,c,d)|0;break a;break;}case 85:{e=DC(b,c,d)|0;break a;break;}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{e=GB(b,c,d)|0;break a;break;}default:return EC(b,c,d)|0;}}while(0);return e|0;}function CC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+64|0;g=f+40|0;h=f+24|0;i=f;j=f+12|0;a:do{if((d-b|0)>1?(k=e+4|0,m=c[k>>2]|0,(c[e>>2]|0)!=(m|0)):0){switch(a[b>>0]|0){case 67:{switch(a[b+1>>0]|0){case 53:case 51:case 50:case 49:break;default:{n=b;break a;}}SC(h,m+-24|0);IB(g,h);o=c[k>>2]|0;if(o>>>0<(c[e+8>>2]|0)>>>0){KB(o,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);iB(h);a[e+60>>0]=1;n=b+2|0;break a;break;}case 68:break;default:{n=b;break a;}}switch(a[b+1>>0]|0){case 53:case 50:case 49:case 48:break;default:{n=b;break a;}}SC(j,m+-24|0);pB(j,0,18745)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];m=0;while(1){if((m|0)==3)break;c[j+(m<<2)>>2]=0;m=m+1|0;}IB(g,i);m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);iB(i);iB(j);a[e+60>>0]=1;n=b+2|0;}else n=b;}while(0);l=f;return n|0;}function Zl(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;i=l;l=l+192|0;j=i+176|0;k=i+172|0;m=i+168|0;n=i+164|0;o=i+160|0;p=i+156|0;q=i+152|0;r=i+148|0;s=i+144|0;t=i+140|0;u=i+136|0;v=i+132|0;w=i+128|0;x=i+124|0;y=i+120|0;z=i+116|0;A=i+112|0;B=i+108|0;C=i+104|0;D=i+100|0;E=i+96|0;F=i+92|0;G=i+88|0;H=i+84|0;I=i+80|0;J=i+76|0;K=i+72|0;L=i+68|0;M=i+64|0;N=i+60|0;O=i+56|0;P=i+52|0;Q=i+48|0;R=i+44|0;S=i+40|0;T=i+36|0;U=i+32|0;V=i+28|0;W=i+24|0;X=i+20|0;Y=i+16|0;Z=i+12|0;_=i+8|0;$=i+4|0;aa=i;c[X>>2]=a;c[Y>>2]=b;c[Z>>2]=e;c[_>>2]=f;c[$>>2]=g;c[aa>>2]=h;h=c[Y>>2]|0;Y=c[Z>>2]|0;Z=c[_>>2]|0;_=c[$>>2]|0;$=c[aa>>2]|0;c[j>>2]=c[X>>2];c[k>>2]=h;c[m>>2]=Y;c[n>>2]=Z;c[o>>2]=_;c[p>>2]=$;c[q>>2]=0;c[r>>2]=0;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+12>>2]|0);c[y>>2]=c[q>>2]|0?5:4;c[z>>2]=c[c[m>>2]>>2];c[A>>2]=c[(c[m>>2]|0)+4>>2];c[B>>2]=0;c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[x>>2]|0)&1);c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[C>>2]=(c[t>>2]|0)-(c[x>>2]|0);if((c[A>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[A>>2];c[A>>2]=0;}if((c[z>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[z>>2];c[z>>2]=0;}while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[D>>2]=0;c[E>>2]=0;c[F>>2]=(c[t>>2]|0)+1;C=(c[z>>2]|0)>>>0>0&1;q=Bk((c[t>>2]|0)+1|0)|0;if(!(C&(q|0)==(Bk((c[t>>2]|0)+1+(0-(c[z>>2]|0))|0)|0)|0?(c[D>>2]=(Qm((c[t>>2]|0)+1+4|0,(c[t>>2]|0)+1+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[G>>2]=99999999;c[H>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,G)|0;if((c[H>>2]|0)>>>0>(c[D>>2]|0)>>>0){c[D>>2]=c[H>>2];c[F>>2]=c[t>>2];c[E>>2]=c[G>>2];}if((c[D>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;if(((c[E>>2]|0?(q=(c[z>>2]|0)>>>0>0&1,C=Bk(c[t>>2]|0)|0,q&(C|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[I>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[J>>2]=(c[I>>2]|0)*3,C=(c[D>>2]|0)*3|0,c[K>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[I>>2]|0)>>>0>=4):0)?(c[J>>2]|0)>(c[K>>2]|0):0){c[D>>2]=c[I>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}c[L>>2]=99999999;c[M>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,L)|0;C=c[M>>2]<<2;c[N>>2]=C-(Mm((c[L>>2]|0)+1|0)|0);C=c[D>>2]<<2;c[O>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+4;if((c[M>>2]|0)>>>0>=4?(c[N>>2]|0)>(c[O>>2]|0):0){c[D>>2]=c[M>>2];c[E>>2]=c[L>>2];c[F>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;do{if((c[E>>2]|0?(C=(c[z>>2]|0)>>>0>0&1,q=Bk(c[t>>2]|0)|0,C&(q|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[P>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[Q>>2]=c[P>>2]<<2,q=c[D>>2]<<2,c[R>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[P>>2]|0)>>>0>=4):0){if((c[Q>>2]|0)<=(c[R>>2]|0))break;c[D>>2]=c[P>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}}while(0);c[S>>2]=99999999;c[T>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,S)|0;q=c[T>>2]<<2;c[U>>2]=q-(Mm((c[S>>2]|0)+1|0)|0);q=c[D>>2]<<2;c[V>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+7;if((c[T>>2]|0)>>>0<4)break a;if((c[U>>2]|0)<=(c[V>>2]|0))break a;c[D>>2]=c[T>>2];c[E>>2]=c[S>>2];c[F>>2]=c[t>>2];}}while(0);if(c[E>>2]|0){while(1){if(!(((c[F>>2]|0)>>>0>(c[u>>2]|0)>>>0?((c[F>>2]|0)+(0-((c[E>>2]|0)-2))|0)>>>0>(c[x>>2]|0)>>>0:0)|0))break;if((d[(c[F>>2]|0)+-1>>0]|0|0)!=(d[(c[F>>2]|0)+(0-((c[E>>2]|0)-2))+-1>>0]|0|0))break;c[F>>2]=(c[F>>2]|0)+-1;c[D>>2]=(c[D>>2]|0)+1;}c[A>>2]=c[z>>2];c[z>>2]=(c[E>>2]|0)-2;}}c[W>>2]=(c[F>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[W>>2]|0,c[u>>2]|0,c[E>>2]|0,(c[D>>2]|0)-3|0);q=(c[F>>2]|0)+(c[D>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if(!(((c[A>>2]|0)>>>0>0?(c[t>>2]|0)>>>0<=(c[w>>2]|0)>>>0:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk((c[t>>2]|0)+(0-(c[A>>2]|0))|0)|0))break;c[D>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[A>>2]|0))|0,c[v>>2]|0)|0)+4;c[E>>2]=c[A>>2];c[A>>2]=c[z>>2];c[z>>2]=c[E>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[D>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[D>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[z>>2]|0?c[z>>2]|0:c[B>>2]|0;c[(c[m>>2]|0)+4>>2]=c[A>>2]|0?c[A>>2]|0:c[B>>2]|0;l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function _l(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;i=l;l=l+192|0;j=i+176|0;k=i+172|0;m=i+168|0;n=i+164|0;o=i+160|0;p=i+156|0;q=i+152|0;r=i+148|0;s=i+144|0;t=i+140|0;u=i+136|0;v=i+132|0;w=i+128|0;x=i+124|0;y=i+120|0;z=i+116|0;A=i+112|0;B=i+108|0;C=i+104|0;D=i+100|0;E=i+96|0;F=i+92|0;G=i+88|0;H=i+84|0;I=i+80|0;J=i+76|0;K=i+72|0;L=i+68|0;M=i+64|0;N=i+60|0;O=i+56|0;P=i+52|0;Q=i+48|0;R=i+44|0;S=i+40|0;T=i+36|0;U=i+32|0;V=i+28|0;W=i+24|0;X=i+20|0;Y=i+16|0;Z=i+12|0;_=i+8|0;$=i+4|0;aa=i;c[X>>2]=a;c[Y>>2]=b;c[Z>>2]=e;c[_>>2]=f;c[$>>2]=g;c[aa>>2]=h;h=c[Y>>2]|0;Y=c[Z>>2]|0;Z=c[_>>2]|0;_=c[$>>2]|0;$=c[aa>>2]|0;c[j>>2]=c[X>>2];c[k>>2]=h;c[m>>2]=Y;c[n>>2]=Z;c[o>>2]=_;c[p>>2]=$;c[q>>2]=0;c[r>>2]=1;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+12>>2]|0);c[y>>2]=c[q>>2]|0?5:4;c[z>>2]=c[c[m>>2]>>2];c[A>>2]=c[(c[m>>2]|0)+4>>2];c[B>>2]=0;c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[x>>2]|0)&1);c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[C>>2]=(c[t>>2]|0)-(c[x>>2]|0);if((c[A>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[A>>2];c[A>>2]=0;}if((c[z>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[z>>2];c[z>>2]=0;}while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[D>>2]=0;c[E>>2]=0;c[F>>2]=(c[t>>2]|0)+1;C=(c[z>>2]|0)>>>0>0&1;q=Bk((c[t>>2]|0)+1|0)|0;if(!(C&(q|0)==(Bk((c[t>>2]|0)+1+(0-(c[z>>2]|0))|0)|0)|0?(c[D>>2]=(Qm((c[t>>2]|0)+1+4|0,(c[t>>2]|0)+1+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[G>>2]=99999999;c[H>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,G)|0;if((c[H>>2]|0)>>>0>(c[D>>2]|0)>>>0){c[D>>2]=c[H>>2];c[F>>2]=c[t>>2];c[E>>2]=c[G>>2];}if((c[D>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;if(((c[E>>2]|0?(q=(c[z>>2]|0)>>>0>0&1,C=Bk(c[t>>2]|0)|0,q&(C|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[I>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[J>>2]=(c[I>>2]|0)*3,C=(c[D>>2]|0)*3|0,c[K>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[I>>2]|0)>>>0>=4):0)?(c[J>>2]|0)>(c[K>>2]|0):0){c[D>>2]=c[I>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}c[L>>2]=99999999;c[M>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,L)|0;C=c[M>>2]<<2;c[N>>2]=C-(Mm((c[L>>2]|0)+1|0)|0);C=c[D>>2]<<2;c[O>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+4;if((c[M>>2]|0)>>>0>=4?(c[N>>2]|0)>(c[O>>2]|0):0){c[D>>2]=c[M>>2];c[E>>2]=c[L>>2];c[F>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;do{if((c[E>>2]|0?(C=(c[z>>2]|0)>>>0>0&1,q=Bk(c[t>>2]|0)|0,C&(q|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[P>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[Q>>2]=c[P>>2]<<2,q=c[D>>2]<<2,c[R>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[P>>2]|0)>>>0>=4):0){if((c[Q>>2]|0)<=(c[R>>2]|0))break;c[D>>2]=c[P>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}}while(0);c[S>>2]=99999999;c[T>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,S)|0;q=c[T>>2]<<2;c[U>>2]=q-(Mm((c[S>>2]|0)+1|0)|0);q=c[D>>2]<<2;c[V>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+7;if((c[T>>2]|0)>>>0<4)break a;if((c[U>>2]|0)<=(c[V>>2]|0))break a;c[D>>2]=c[T>>2];c[E>>2]=c[S>>2];c[F>>2]=c[t>>2];}}while(0);if(c[E>>2]|0){while(1){if(!(((c[F>>2]|0)>>>0>(c[u>>2]|0)>>>0?((c[F>>2]|0)+(0-((c[E>>2]|0)-2))|0)>>>0>(c[x>>2]|0)>>>0:0)|0))break;if((d[(c[F>>2]|0)+-1>>0]|0|0)!=(d[(c[F>>2]|0)+(0-((c[E>>2]|0)-2))+-1>>0]|0|0))break;c[F>>2]=(c[F>>2]|0)+-1;c[D>>2]=(c[D>>2]|0)+1;}c[A>>2]=c[z>>2];c[z>>2]=(c[E>>2]|0)-2;}}c[W>>2]=(c[F>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[W>>2]|0,c[u>>2]|0,c[E>>2]|0,(c[D>>2]|0)-3|0);q=(c[F>>2]|0)+(c[D>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if(!(((c[A>>2]|0)>>>0>0?(c[t>>2]|0)>>>0<=(c[w>>2]|0)>>>0:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk((c[t>>2]|0)+(0-(c[A>>2]|0))|0)|0))break;c[D>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[A>>2]|0))|0,c[v>>2]|0)|0)+4;c[E>>2]=c[A>>2];c[A>>2]=c[z>>2];c[z>>2]=c[E>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[D>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[D>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[z>>2]|0?c[z>>2]|0:c[B>>2]|0;c[(c[m>>2]|0)+4>>2]=c[A>>2]|0?c[A>>2]|0:c[B>>2]|0;l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function $l(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;i=l;l=l+192|0;j=i+176|0;k=i+172|0;m=i+168|0;n=i+164|0;o=i+160|0;p=i+156|0;q=i+152|0;r=i+148|0;s=i+144|0;t=i+140|0;u=i+136|0;v=i+132|0;w=i+128|0;x=i+124|0;y=i+120|0;z=i+116|0;A=i+112|0;B=i+108|0;C=i+104|0;D=i+100|0;E=i+96|0;F=i+92|0;G=i+88|0;H=i+84|0;I=i+80|0;J=i+76|0;K=i+72|0;L=i+68|0;M=i+64|0;N=i+60|0;O=i+56|0;P=i+52|0;Q=i+48|0;R=i+44|0;S=i+40|0;T=i+36|0;U=i+32|0;V=i+28|0;W=i+24|0;X=i+20|0;Y=i+16|0;Z=i+12|0;_=i+8|0;$=i+4|0;aa=i;c[X>>2]=a;c[Y>>2]=b;c[Z>>2]=e;c[_>>2]=f;c[$>>2]=g;c[aa>>2]=h;h=c[Y>>2]|0;Y=c[Z>>2]|0;Z=c[_>>2]|0;_=c[$>>2]|0;$=c[aa>>2]|0;c[j>>2]=c[X>>2];c[k>>2]=h;c[m>>2]=Y;c[n>>2]=Z;c[o>>2]=_;c[p>>2]=$;c[q>>2]=0;c[r>>2]=2;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+12>>2]|0);c[y>>2]=c[q>>2]|0?5:4;c[z>>2]=c[c[m>>2]>>2];c[A>>2]=c[(c[m>>2]|0)+4>>2];c[B>>2]=0;c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[x>>2]|0)&1);c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[C>>2]=(c[t>>2]|0)-(c[x>>2]|0);if((c[A>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[A>>2];c[A>>2]=0;}if((c[z>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[z>>2];c[z>>2]=0;}while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[D>>2]=0;c[E>>2]=0;c[F>>2]=(c[t>>2]|0)+1;C=(c[z>>2]|0)>>>0>0&1;q=Bk((c[t>>2]|0)+1|0)|0;if(!(C&(q|0)==(Bk((c[t>>2]|0)+1+(0-(c[z>>2]|0))|0)|0)|0?(c[D>>2]=(Qm((c[t>>2]|0)+1+4|0,(c[t>>2]|0)+1+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[G>>2]=99999999;c[H>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,G)|0;if((c[H>>2]|0)>>>0>(c[D>>2]|0)>>>0){c[D>>2]=c[H>>2];c[F>>2]=c[t>>2];c[E>>2]=c[G>>2];}if((c[D>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;if(((c[E>>2]|0?(q=(c[z>>2]|0)>>>0>0&1,C=Bk(c[t>>2]|0)|0,q&(C|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[I>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[J>>2]=(c[I>>2]|0)*3,C=(c[D>>2]|0)*3|0,c[K>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[I>>2]|0)>>>0>=4):0)?(c[J>>2]|0)>(c[K>>2]|0):0){c[D>>2]=c[I>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}c[L>>2]=99999999;c[M>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,L)|0;C=c[M>>2]<<2;c[N>>2]=C-(Mm((c[L>>2]|0)+1|0)|0);C=c[D>>2]<<2;c[O>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+4;if((c[M>>2]|0)>>>0>=4?(c[N>>2]|0)>(c[O>>2]|0):0){c[D>>2]=c[M>>2];c[E>>2]=c[L>>2];c[F>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;do{if((c[E>>2]|0?(C=(c[z>>2]|0)>>>0>0&1,q=Bk(c[t>>2]|0)|0,C&(q|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[P>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[Q>>2]=c[P>>2]<<2,q=c[D>>2]<<2,c[R>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[P>>2]|0)>>>0>=4):0){if((c[Q>>2]|0)<=(c[R>>2]|0))break;c[D>>2]=c[P>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}}while(0);c[S>>2]=99999999;c[T>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,S)|0;q=c[T>>2]<<2;c[U>>2]=q-(Mm((c[S>>2]|0)+1|0)|0);q=c[D>>2]<<2;c[V>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+7;if((c[T>>2]|0)>>>0<4)break a;if((c[U>>2]|0)<=(c[V>>2]|0))break a;c[D>>2]=c[T>>2];c[E>>2]=c[S>>2];c[F>>2]=c[t>>2];}}while(0);if(c[E>>2]|0){while(1){if(!(((c[F>>2]|0)>>>0>(c[u>>2]|0)>>>0?((c[F>>2]|0)+(0-((c[E>>2]|0)-2))|0)>>>0>(c[x>>2]|0)>>>0:0)|0))break;if((d[(c[F>>2]|0)+-1>>0]|0|0)!=(d[(c[F>>2]|0)+(0-((c[E>>2]|0)-2))+-1>>0]|0|0))break;c[F>>2]=(c[F>>2]|0)+-1;c[D>>2]=(c[D>>2]|0)+1;}c[A>>2]=c[z>>2];c[z>>2]=(c[E>>2]|0)-2;}}c[W>>2]=(c[F>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[W>>2]|0,c[u>>2]|0,c[E>>2]|0,(c[D>>2]|0)-3|0);q=(c[F>>2]|0)+(c[D>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if(!(((c[A>>2]|0)>>>0>0?(c[t>>2]|0)>>>0<=(c[w>>2]|0)>>>0:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk((c[t>>2]|0)+(0-(c[A>>2]|0))|0)|0))break;c[D>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[A>>2]|0))|0,c[v>>2]|0)|0)+4;c[E>>2]=c[A>>2];c[A>>2]=c[z>>2];c[z>>2]=c[E>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[D>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[D>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[z>>2]|0?c[z>>2]|0:c[B>>2]|0;c[(c[m>>2]|0)+4>>2]=c[A>>2]|0?c[A>>2]|0:c[B>>2]|0;l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function am(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;i=l;l=l+192|0;j=i+176|0;k=i+172|0;m=i+168|0;n=i+164|0;o=i+160|0;p=i+156|0;q=i+152|0;r=i+148|0;s=i+144|0;t=i+140|0;u=i+136|0;v=i+132|0;w=i+128|0;x=i+124|0;y=i+120|0;z=i+116|0;A=i+112|0;B=i+108|0;C=i+104|0;D=i+100|0;E=i+96|0;F=i+92|0;G=i+88|0;H=i+84|0;I=i+80|0;J=i+76|0;K=i+72|0;L=i+68|0;M=i+64|0;N=i+60|0;O=i+56|0;P=i+52|0;Q=i+48|0;R=i+44|0;S=i+40|0;T=i+36|0;U=i+32|0;V=i+28|0;W=i+24|0;X=i+20|0;Y=i+16|0;Z=i+12|0;_=i+8|0;$=i+4|0;aa=i;c[X>>2]=a;c[Y>>2]=b;c[Z>>2]=e;c[_>>2]=f;c[$>>2]=g;c[aa>>2]=h;h=c[Y>>2]|0;Y=c[Z>>2]|0;Z=c[_>>2]|0;_=c[$>>2]|0;$=c[aa>>2]|0;c[j>>2]=c[X>>2];c[k>>2]=h;c[m>>2]=Y;c[n>>2]=Z;c[o>>2]=_;c[p>>2]=$;c[q>>2]=1;c[r>>2]=2;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+12>>2]|0);c[y>>2]=c[q>>2]|0?5:4;c[z>>2]=c[c[m>>2]>>2];c[A>>2]=c[(c[m>>2]|0)+4>>2];c[B>>2]=0;c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[x>>2]|0)&1);c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[C>>2]=(c[t>>2]|0)-(c[x>>2]|0);if((c[A>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[A>>2];c[A>>2]=0;}if((c[z>>2]|0)>>>0>(c[C>>2]|0)>>>0){c[B>>2]=c[z>>2];c[z>>2]=0;}while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[D>>2]=0;c[E>>2]=0;c[F>>2]=(c[t>>2]|0)+1;C=(c[z>>2]|0)>>>0>0&1;q=Bk((c[t>>2]|0)+1|0)|0;if(!(C&(q|0)==(Bk((c[t>>2]|0)+1+(0-(c[z>>2]|0))|0)|0)|0?(c[D>>2]=(Qm((c[t>>2]|0)+1+4|0,(c[t>>2]|0)+1+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[G>>2]=99999999;c[H>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,G)|0;if((c[H>>2]|0)>>>0>(c[D>>2]|0)>>>0){c[D>>2]=c[H>>2];c[F>>2]=c[t>>2];c[E>>2]=c[G>>2];}if((c[D>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;if(((c[E>>2]|0?(q=(c[z>>2]|0)>>>0>0&1,C=Bk(c[t>>2]|0)|0,q&(C|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[I>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[J>>2]=(c[I>>2]|0)*3,C=(c[D>>2]|0)*3|0,c[K>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[I>>2]|0)>>>0>=4):0)?(c[J>>2]|0)>(c[K>>2]|0):0){c[D>>2]=c[I>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}c[L>>2]=99999999;c[M>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,L)|0;C=c[M>>2]<<2;c[N>>2]=C-(Mm((c[L>>2]|0)+1|0)|0);C=c[D>>2]<<2;c[O>>2]=C-(Mm((c[E>>2]|0)+1|0)|0)+4;if((c[M>>2]|0)>>>0>=4?(c[N>>2]|0)>(c[O>>2]|0):0){c[D>>2]=c[M>>2];c[E>>2]=c[L>>2];c[F>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;do{if((c[E>>2]|0?(C=(c[z>>2]|0)>>>0>0&1,q=Bk(c[t>>2]|0)|0,C&(q|0)==(Bk((c[t>>2]|0)+(0-(c[z>>2]|0))|0)|0)|0):0)?(c[P>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[z>>2]|0))|0,c[v>>2]|0)|0)+4,c[Q>>2]=c[P>>2]<<2,q=c[D>>2]<<2,c[R>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+1,(c[P>>2]|0)>>>0>=4):0){if((c[Q>>2]|0)<=(c[R>>2]|0))break;c[D>>2]=c[P>>2];c[E>>2]=0;c[F>>2]=c[t>>2];}}while(0);c[S>>2]=99999999;c[T>>2]=tc[c[y>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,S)|0;q=c[T>>2]<<2;c[U>>2]=q-(Mm((c[S>>2]|0)+1|0)|0);q=c[D>>2]<<2;c[V>>2]=q-(Mm((c[E>>2]|0)+1|0)|0)+7;if((c[T>>2]|0)>>>0<4)break a;if((c[U>>2]|0)<=(c[V>>2]|0))break a;c[D>>2]=c[T>>2];c[E>>2]=c[S>>2];c[F>>2]=c[t>>2];}}while(0);if(c[E>>2]|0){while(1){if(!(((c[F>>2]|0)>>>0>(c[u>>2]|0)>>>0?((c[F>>2]|0)+(0-((c[E>>2]|0)-2))|0)>>>0>(c[x>>2]|0)>>>0:0)|0))break;if((d[(c[F>>2]|0)+-1>>0]|0|0)!=(d[(c[F>>2]|0)+(0-((c[E>>2]|0)-2))+-1>>0]|0|0))break;c[F>>2]=(c[F>>2]|0)+-1;c[D>>2]=(c[D>>2]|0)+1;}c[A>>2]=c[z>>2];c[z>>2]=(c[E>>2]|0)-2;}}c[W>>2]=(c[F>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[W>>2]|0,c[u>>2]|0,c[E>>2]|0,(c[D>>2]|0)-3|0);q=(c[F>>2]|0)+(c[D>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if(!(((c[A>>2]|0)>>>0>0?(c[t>>2]|0)>>>0<=(c[w>>2]|0)>>>0:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk((c[t>>2]|0)+(0-(c[A>>2]|0))|0)|0))break;c[D>>2]=(Qm((c[t>>2]|0)+4|0,(c[t>>2]|0)+4+(0-(c[A>>2]|0))|0,c[v>>2]|0)|0)+4;c[E>>2]=c[A>>2];c[A>>2]=c[z>>2];c[z>>2]=c[E>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[D>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[D>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[z>>2]|0?c[z>>2]|0:c[B>>2]|0;c[(c[m>>2]|0)+4>>2]=c[A>>2]|0?c[A>>2]|0:c[B>>2]|0;l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function bm(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,dg=0,eg=0,fg=0,gg=0,hg=0,ig=0,jg=0,kg=0,lg=0,mg=0,ng=0,og=0,pg=0,qg=0,rg=0,sg=0,tg=0,ug=0,vg=0,wg=0,xg=0,yg=0,zg=0,Ag=0,Bg=0,Cg=0,Dg=0,Eg=0,Fg=0,Gg=0,Hg=0,Ig=0,Jg=0,Kg=0,Lg=0,Mg=0,Ng=0,Og=0,Pg=0,Qg=0,Rg=0,Sg=0,Tg=0,Ug=0,Vg=0,Wg=0,Xg=0,Yg=0,Zg=0,_g=0,$g=0,ah=0,bh=0,ch=0,dh=0,eh=0,fh=0,gh=0,hh=0,ih=0,jh=0,kh=0,lh=0,mh=0,nh=0,oh=0,ph=0,qh=0,rh=0,sh=0,th=0,uh=0,vh=0,wh=0,xh=0,yh=0,zh=0,Ah=0,Bh=0,Ch=0,Dh=0,Eh=0,Fh=0,Gh=0,Hh=0,Ih=0,Jh=0,Kh=0,Lh=0,Mh=0,Nh=0,Oh=0,Ph=0,Qh=0,Rh=0,Sh=0,Th=0,Uh=0,Vh=0,Wh=0,Xh=0,Yh=0,Zh=0,_h=0,$h=0,ai=0,bi=0,ci=0,di=0,ei=0,fi=0,gi=0,hi=0,ii=0,ji=0,ki=0,li=0,mi=0,ni=0,oi=0,pi=0,qi=0,ri=0,si=0,ti=0,ui=0,vi=0,wi=0,xi=0,yi=0,zi=0,Ai=0,Bi=0,Ci=0,Di=0,Ei=0,Fi=0,Gi=0,Hi=0,Ii=0,Ji=0,Ki=0,Li=0,Mi=0,Ni=0,Oi=0,Pi=0,Qi=0,Ri=0,Si=0,Ti=0,Ui=0,Vi=0,Wi=0,Xi=0,Yi=0,Zi=0,_i=0,$i=0,aj=0,bj=0,cj=0,dj=0,ej=0,fj=0,gj=0,hj=0,ij=0,jj=0,kj=0,lj=0,mj=0,nj=0,oj=0,pj=0,qj=0,rj=0,sj=0,tj=0,uj=0,vj=0,wj=0,xj=0,yj=0,zj=0,Aj=0,Bj=0,Cj=0,Dj=0,Ej=0;i=l;l=l+2144|0;j=i+2136|0;k=i+2132|0;m=i+2128|0;n=i+2124|0;o=i+2120|0;p=i+2116|0;q=i+2112|0;r=i+2108|0;s=i+2104|0;t=i+2100|0;u=i+2096|0;v=i+2092|0;w=i+2088|0;x=i+2084|0;y=i+2080|0;z=i+2076|0;A=i+2072|0;B=i+2068|0;C=i+2064|0;D=i+2060|0;E=i+2056|0;F=i+2052|0;G=i+2048|0;H=i+2044|0;I=i+2040|0;J=i+2036|0;K=i+2032|0;L=i+2028|0;M=i+2024|0;N=i+2020|0;O=i+2016|0;P=i+2012|0;Q=i+2008|0;R=i+2004|0;S=i+2e3|0;T=i+1996|0;U=i+1992|0;V=i+1988|0;W=i+1984|0;X=i+1980|0;Y=i+1976|0;Z=i+1972|0;_=i+1968|0;$=i+1964|0;aa=i+1960|0;ba=i+1956|0;ca=i+1952|0;da=i+1948|0;ea=i+1944|0;fa=i+1940|0;ga=i+1936|0;ha=i+1932|0;ia=i+1928|0;ja=i+1924|0;ka=i+1920|0;la=i+1916|0;ma=i+1912|0;na=i+1908|0;oa=i+1904|0;pa=i+1900|0;qa=i+1896|0;ra=i+1892|0;sa=i+1888|0;ta=i+1884|0;ua=i+1880|0;va=i+1876|0;wa=i+1872|0;xa=i+1868|0;ya=i+1864|0;za=i+1860|0;Aa=i+1856|0;Ba=i+1852|0;Ca=i+1848|0;Da=i+1844|0;Ea=i+1840|0;Fa=i+1836|0;Ga=i+1832|0;Ha=i+1828|0;Ia=i+1824|0;Ja=i+1820|0;Ka=i+1816|0;La=i+1812|0;Ma=i+1808|0;Na=i+1804|0;Oa=i+1800|0;Pa=i+1796|0;Qa=i+1792|0;Ra=i+1788|0;Sa=i+1784|0;Ta=i+1780|0;Ua=i+1776|0;Va=i+1772|0;Wa=i+1768|0;Xa=i+1764|0;Ya=i+1760|0;Za=i+1756|0;_a=i+1752|0;$a=i+1748|0;ab=i+1744|0;bb=i+1740|0;cb=i+1736|0;db=i+1732|0;eb=i+1728|0;fb=i+1724|0;gb=i+1720|0;hb=i+1716|0;ib=i+1712|0;jb=i+1708|0;kb=i+1704|0;lb=i+1700|0;mb=i+1696|0;nb=i+1692|0;ob=i+1688|0;pb=i+1684|0;qb=i+1680|0;rb=i+1676|0;sb=i+1672|0;tb=i+1668|0;ub=i+1664|0;vb=i+1660|0;wb=i+1656|0;xb=i+1652|0;yb=i+1648|0;zb=i+1644|0;Ab=i+1640|0;Bb=i+1636|0;Cb=i+1632|0;Db=i+1628|0;Eb=i+1624|0;Fb=i+1620|0;Gb=i+1616|0;Hb=i+1612|0;Ib=i+1608|0;Jb=i+1604|0;Kb=i+1600|0;Lb=i+1596|0;Mb=i+1592|0;Nb=i+1588|0;Ob=i+1584|0;Pb=i+1580|0;Qb=i+1576|0;Rb=i+1572|0;Sb=i+1568|0;Tb=i+1564|0;Ub=i+1560|0;Vb=i+1556|0;Wb=i+1552|0;Xb=i+1548|0;Yb=i+1544|0;Zb=i+1540|0;_b=i+1536|0;$b=i+1532|0;ac=i+1528|0;bc=i+1524|0;cc=i+1520|0;dc=i+1516|0;ec=i+1512|0;fc=i+1508|0;gc=i+1504|0;hc=i+1500|0;ic=i+1496|0;jc=i+1492|0;kc=i+1488|0;lc=i+1484|0;mc=i+1480|0;nc=i+1476|0;oc=i+1472|0;pc=i+1468|0;qc=i+1464|0;rc=i+1460|0;sc=i+1456|0;tc=i+1452|0;uc=i+1448|0;vc=i+1444|0;wc=i+1440|0;xc=i+1436|0;yc=i+1432|0;zc=i+1428|0;Ac=i+1424|0;Bc=i+1420|0;Cc=i+1416|0;Dc=i+1412|0;Ec=i+1408|0;Fc=i+1404|0;Gc=i+1400|0;Hc=i+1396|0;Ic=i+1392|0;Jc=i+1388|0;Kc=i+1384|0;Lc=i+1380|0;Mc=i+1376|0;Nc=i+1372|0;Oc=i+1368|0;Pc=i+1364|0;Qc=i+1360|0;Rc=i+1356|0;Sc=i+1352|0;Tc=i+1348|0;Uc=i+1344|0;Vc=i+1340|0;Wc=i+1336|0;Xc=i+1332|0;Yc=i+1328|0;Zc=i+1324|0;_c=i+1320|0;$c=i+1316|0;ad=i+1312|0;bd=i+1308|0;cd=i+1304|0;dd=i+1300|0;ed=i+1296|0;fd=i+1292|0;gd=i+1288|0;hd=i+1284|0;id=i+1280|0;jd=i+1276|0;kd=i+1272|0;ld=i+1268|0;md=i+1264|0;nd=i+1260|0;od=i+1256|0;pd=i+1252|0;qd=i+1248|0;rd=i+1244|0;sd=i+1240|0;td=i+1236|0;ud=i+1232|0;vd=i+1228|0;wd=i+1224|0;xd=i+1220|0;yd=i+1216|0;zd=i+1212|0;Ad=i+1208|0;Bd=i+1204|0;Cd=i+1200|0;Dd=i+1196|0;Ed=i+1192|0;Fd=i+1188|0;Gd=i+1184|0;Hd=i+1180|0;Id=i+1176|0;Jd=i+1172|0;Kd=i+1168|0;Ld=i+1164|0;Md=i+1160|0;Nd=i+1156|0;Od=i+1152|0;Pd=i+1148|0;Qd=i+1144|0;Rd=i+1140|0;Sd=i+1136|0;Td=i+1132|0;Ud=i+1128|0;Vd=i+1124|0;Wd=i+1120|0;Xd=i+1116|0;Yd=i+1112|0;Zd=i+1108|0;_d=i+1104|0;$d=i+1100|0;ae=i+1096|0;be=i+1092|0;ce=i+1088|0;de=i+1084|0;ee=i+1080|0;fe=i+1076|0;ge=i+1072|0;he=i+1068|0;ie=i+1064|0;je=i+1060|0;ke=i+1056|0;le=i+1052|0;me=i+1048|0;ne=i+1044|0;oe=i+1040|0;pe=i+1036|0;qe=i+1032|0;re=i+1028|0;se=i+1024|0;te=i+1020|0;ue=i+1016|0;ve=i+1012|0;we=i+1008|0;xe=i+1004|0;ye=i+1e3|0;ze=i+996|0;Ae=i+992|0;Be=i+988|0;Ce=i+984|0;De=i+980|0;Ee=i+976|0;Fe=i+972|0;Ge=i+968|0;He=i+964|0;Ie=i+960|0;Je=i+956|0;Ke=i+952|0;Le=i+948|0;Me=i+944|0;Ne=i+940|0;Oe=i+936|0;Pe=i+932|0;Qe=i+928|0;Re=i+924|0;Se=i+920|0;Te=i+916|0;Ue=i+912|0;Ve=i+908|0;We=i+904|0;Xe=i+900|0;Ye=i+896|0;Ze=i+892|0;_e=i+888|0;$e=i+884|0;af=i+880|0;bf=i+876|0;cf=i+872|0;df=i+868|0;ef=i+864|0;ff=i+860|0;gf=i+856|0;hf=i+852|0;jf=i+848|0;kf=i+844|0;lf=i+840|0;mf=i+836|0;nf=i+832|0;of=i+828|0;pf=i+824|0;qf=i+820|0;rf=i+816|0;sf=i+812|0;tf=i+808|0;uf=i+804|0;vf=i+800|0;wf=i+796|0;xf=i+792|0;yf=i+788|0;zf=i+784|0;Af=i+780|0;Bf=i+776|0;Cf=i+772|0;Df=i+768|0;Ef=i+764|0;Ff=i+760|0;Gf=i+756|0;Hf=i+752|0;If=i+748|0;Jf=i+744|0;Kf=i+740|0;Lf=i+736|0;Mf=i+732|0;Nf=i+728|0;Of=i+724|0;Pf=i+720|0;Qf=i+716|0;Rf=i+712|0;Sf=i+708|0;Tf=i+704|0;Uf=i+700|0;Vf=i+696|0;Wf=i+692|0;Xf=i+688|0;Yf=i+684|0;Zf=i+680|0;_f=i+676|0;$f=i+672|0;ag=i+668|0;bg=i+664|0;cg=i+660|0;dg=i+656|0;eg=i+652|0;fg=i+648|0;gg=i+644|0;hg=i+640|0;ig=i+636|0;jg=i+632|0;kg=i+628|0;lg=i+624|0;mg=i+620|0;ng=i+616|0;og=i+612|0;pg=i+608|0;qg=i+604|0;rg=i+600|0;sg=i+596|0;tg=i+592|0;ug=i+588|0;vg=i+584|0;wg=i+580|0;xg=i+576|0;yg=i+572|0;zg=i+568|0;Ag=i+564|0;Bg=i+560|0;Cg=i+556|0;Dg=i+552|0;Eg=i+548|0;Fg=i+544|0;Gg=i+540|0;Hg=i+536|0;Ig=i+532|0;Jg=i+528|0;Kg=i+524|0;Lg=i+520|0;Mg=i+516|0;Ng=i+512|0;Og=i+508|0;Pg=i+504|0;Qg=i+500|0;Rg=i+496|0;Sg=i+492|0;Tg=i+488|0;Ug=i+484|0;Vg=i+480|0;Wg=i+476|0;Xg=i+472|0;Yg=i+468|0;Zg=i+464|0;_g=i+460|0;$g=i+456|0;ah=i+452|0;bh=i+448|0;ch=i+444|0;dh=i+440|0;eh=i+436|0;fh=i+432|0;gh=i+428|0;hh=i+424|0;ih=i+420|0;jh=i+416|0;kh=i+412|0;lh=i+408|0;mh=i+404|0;nh=i+400|0;oh=i+396|0;ph=i+392|0;qh=i+388|0;rh=i+384|0;sh=i+380|0;th=i+376|0;uh=i+372|0;vh=i+368|0;wh=i+364|0;xh=i+360|0;yh=i+356|0;zh=i+352|0;Ah=i+348|0;Bh=i+344|0;Ch=i+340|0;Dh=i+336|0;Eh=i+332|0;Fh=i+328|0;Gh=i+324|0;Hh=i+320|0;Ih=i+316|0;Jh=i+312|0;Kh=i+308|0;Lh=i+304|0;Mh=i+300|0;Nh=i+296|0;Oh=i+292|0;Ph=i+288|0;Qh=i+284|0;Rh=i+280|0;Sh=i+276|0;Th=i+272|0;Uh=i+268|0;Vh=i+264|0;Wh=i+260|0;Xh=i+256|0;Yh=i+252|0;Zh=i+248|0;_h=i+244|0;$h=i+240|0;ai=i+236|0;bi=i+232|0;ci=i+228|0;di=i+216|0;ei=i+212|0;fi=i+208|0;gi=i+204|0;hi=i+200|0;ii=i+196|0;ji=i+192|0;ki=i+188|0;li=i+184|0;mi=i+180|0;ni=i+176|0;oi=i+172|0;pi=i+168|0;qi=i+164|0;ri=i+160|0;si=i+148|0;ti=i+144|0;ui=i+140|0;vi=i+136|0;wi=i+132|0;xi=i+128|0;yi=i+124|0;zi=i+120|0;Ai=i+116|0;Bi=i+112|0;Ci=i+108|0;Di=i+104|0;Ei=i+100|0;Fi=i+88|0;Gi=i+84|0;Hi=i+80|0;Ii=i+76|0;Ji=i+72|0;Ki=i+68|0;Li=i+64|0;Mi=i+60|0;Ni=i+56|0;Oi=i+52|0;Pi=i+48|0;Qi=i+44|0;Ri=i+40|0;Si=i+36|0;Ti=i+32|0;Ui=i+28|0;Vi=i+24|0;Wi=i+20|0;Xi=i+16|0;Yi=i+12|0;Zi=i+8|0;_i=i+4|0;$i=i;c[Wi>>2]=a;c[Xi>>2]=b;c[Yi>>2]=e;c[Zi>>2]=f;c[_i>>2]=g;c[$i>>2]=h;h=c[Xi>>2]|0;Xi=c[Yi>>2]|0;Yi=c[Zi>>2]|0;Zi=c[_i>>2]|0;_i=c[$i>>2]|0;c[Lh>>2]=c[Wi>>2];c[Mh>>2]=h;c[Nh>>2]=Xi;c[Oh>>2]=Yi;c[Ph>>2]=Zi;c[Qh>>2]=_i;c[Rh>>2]=0;c[Sh>>2]=0;c[Th>>2]=(c[Lh>>2]|0)+48;c[Uh>>2]=c[Ph>>2];c[Vh>>2]=c[Uh>>2];c[Wh>>2]=c[Uh>>2];c[Xh>>2]=(c[Uh>>2]|0)+(c[Qh>>2]|0);c[Yh>>2]=(c[Xh>>2]|0)+-8;c[Zh>>2]=c[(c[Lh>>2]|0)+4>>2];c[_h>>2]=(c[Zh>>2]|0)+(c[(c[Lh>>2]|0)+12>>2]|0);if((c[(c[Oh>>2]|0)+20>>2]|0)>>>0<4095)aj=c[(c[Oh>>2]|0)+20>>2]|0;else aj=4095;c[$h>>2]=aj;c[ai>>2]=(c[(c[Oh>>2]|0)+16>>2]|0)==3?3:4;c[bi>>2]=c[(c[Th>>2]|0)+20>>2];c[ci>>2]=c[(c[Th>>2]|0)+16>>2];c[(c[Lh>>2]|0)+28>>2]=c[(c[Lh>>2]|0)+24>>2];lm(c[Th>>2]|0,c[Ph>>2]|0,c[Qh>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+((c[Vh>>2]|0)==(c[_h>>2]|0)&1);c[di>>2]=0;c[di+4>>2]=0;c[di+8>>2]=0;while(1){if((c[Vh>>2]|0)>>>0>=(c[Yh>>2]|0)>>>0)break;c[fi>>2]=0;c[ii>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[ji>>2]=((c[ii>>2]|0)!=0^1)&1;_h=c[Oh>>2]|0;Qh=c[Vh>>2]|0;Ph=c[Xh>>2]|0;aj=c[Sh>>2]|0;Zh=c[Nh>>2]|0;Uh=c[ji>>2]|0;_i=c[ci>>2]|0;Zi=c[ai>>2]|0;c[Bh>>2]=c[Lh>>2];c[Ch>>2]=_h;c[Dh>>2]=Qh;c[Eh>>2]=Ph;c[Fh>>2]=aj;c[Gh>>2]=Zh;c[Hh>>2]=Uh;c[Ih>>2]=_i;c[Jh>>2]=Zi;c[Kh>>2]=c[(c[Ch>>2]|0)+16>>2];a:do{if((c[Dh>>2]|0)>>>0<((c[(c[Bh>>2]|0)+4>>2]|0)+(c[(c[Bh>>2]|0)+24>>2]|0)|0)>>>0)c[Ah>>2]=0;else{Zi=c[Ch>>2]|0;_i=c[Dh>>2]|0;Uh=c[Eh>>2]|0;Zh=c[Kh>>2]|0;aj=c[Fh>>2]|0;c[rh>>2]=c[Bh>>2];c[sh>>2]=Zi;c[th>>2]=_i;c[uh>>2]=Uh;c[vh>>2]=Zh;c[wh>>2]=aj;c[xh>>2]=c[(c[rh>>2]|0)+4>>2];c[yh>>2]=(c[th>>2]|0)-(c[xh>>2]|0);c[zh>>2]=c[(c[rh>>2]|0)+24>>2];while(1){if((c[zh>>2]|0)>>>0>=(c[yh>>2]|0)>>>0)break;aj=Rj(c[rh>>2]|0,c[sh>>2]|0,(c[xh>>2]|0)+(c[zh>>2]|0)|0,c[uh>>2]|0,c[vh>>2]|0,c[wh>>2]|0)|0;c[zh>>2]=(c[zh>>2]|0)+aj;}c[(c[rh>>2]|0)+24>>2]=c[yh>>2];switch(c[Kh>>2]|0){case 3:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[wg>>2]=c[Bh>>2];c[xg>>2]=aj;c[yg>>2]=Zh;c[zg>>2]=Uh;c[Ag>>2]=_i;c[Bg>>2]=Zi;c[Cg>>2]=Ph;c[Dg>>2]=Qh;c[Eg>>2]=_h;c[Fg>>2]=3;if((c[(c[xg>>2]|0)+20>>2]|0)>>>0<4095)bj=c[(c[xg>>2]|0)+20>>2]|0;else bj=4095;c[Gg>>2]=bj;c[Hg>>2]=c[(c[wg>>2]|0)+4>>2];c[Ig>>2]=(c[yg>>2]|0)-(c[Hg>>2]|0);c[Jg>>2]=c[(c[xg>>2]|0)+8>>2];c[Kg>>2]=(c[Fg>>2]|0)==3?3:4;c[Lg>>2]=c[(c[wg>>2]|0)+36>>2];c[Mg>>2]=Sj(c[yg>>2]|0,c[Jg>>2]|0,c[Fg>>2]|0)|0;c[Ng>>2]=c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2];c[Og>>2]=c[(c[wg>>2]|0)+44>>2];c[Pg>>2]=(c[(c[xg>>2]|0)+4>>2]|0)-1;c[Qg>>2]=(1<<c[Pg>>2])-1;c[Rg>>2]=0;c[Sg>>2]=0;c[Tg>>2]=c[(c[wg>>2]|0)+8>>2];c[Ug>>2]=c[(c[wg>>2]|0)+12>>2];c[Vg>>2]=(c[Tg>>2]|0)+(c[Ug>>2]|0);c[Wg>>2]=(c[Hg>>2]|0)+(c[Ug>>2]|0);if((c[Qg>>2]|0)>>>0>=(c[Ig>>2]|0)>>>0)cj=0;else cj=(c[Ig>>2]|0)-(c[Qg>>2]|0)|0;c[Xg>>2]=cj;c[Yg>>2]=c[(c[wg>>2]|0)+16>>2];c[Zg>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2);c[_g>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2)+4;c[$g>>2]=(c[Ig>>2]|0)+8+1;c[bh>>2]=0;c[ch>>2]=1<<c[(c[xg>>2]|0)+12>>2];c[dh>>2]=(c[Eg>>2]|0)-1;c[eh>>2]=3+(c[Cg>>2]|0);c[fh>>2]=c[Cg>>2];while(1){if((c[fh>>2]|0)>>>0>=(c[eh>>2]|0)>>>0){dj=31;break;}_h=c[Bg>>2]|0;if((c[fh>>2]|0)==3)ej=(c[_h>>2]|0)-1|0;else ej=c[_h+(c[fh>>2]<<2)>>2]|0;c[gh>>2]=ej;c[hh>>2]=(c[Ig>>2]|0)-(c[gh>>2]|0);c[ih>>2]=0;if(((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Ug>>2]|0)|0)>>>0){_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0;if((_h|0)==(mm((c[yg>>2]|0)+(0-(c[gh>>2]|0))|0,c[Kg>>2]|0)|0)){_h=Tj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[yg>>2]|0)+(c[Kg>>2]|0)+(0-(c[gh>>2]|0))|0,c[zg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}else{c[jh>>2]=(c[Tg>>2]|0)+(c[hh>>2]|0);if((c[Ag>>2]|0?(((c[Ug>>2]|0)-1-(c[hh>>2]|0)|0)>>>0>=3?((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Yg>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0,(_h|0)==(mm(c[jh>>2]|0,c[Kg>>2]|0)|0)):0){_h=Uj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[jh>>2]|0)+(c[Kg>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}if((c[ih>>2]|0)>>>0>(c[dh>>2]|0)>>>0?(c[dh>>2]=c[ih>>2],c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[fh>>2]|0)-(c[Cg>>2]|0),c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ih>>2],c[bh>>2]=(c[bh>>2]|0)+1,((c[ih>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[ih>>2]|0)|0)==(c[zg>>2]|0))|0):0){dj=29;break;}c[fh>>2]=(c[fh>>2]|0)+1;}do{if((dj|0)==29){dj=0;c[vg>>2]=c[bh>>2];}else if((dj|0)==31){dj=0;if(((c[Fg>>2]|0)==3?(c[dh>>2]|0)>>>0<(c[Fg>>2]|0)>>>0:0)?(c[kh>>2]=nm(c[wg>>2]|0,c[yg>>2]|0)|0,((c[kh>>2]|0)>>>0>(c[Yg>>2]|0)>>>0?((c[Ig>>2]|0)-(c[kh>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ag>>2]|0?(c[kh>>2]|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[nh>>2]=(c[Tg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Uj(c[yg>>2]|0,c[nh>>2]|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;}else{c[mh>>2]=(c[Hg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Tj(c[yg>>2]|0,c[mh>>2]|0,c[zg>>2]|0)|0;}if((c[lh>>2]|0)>>>0>=(c[Fg>>2]|0)>>>0?(c[dh>>2]=c[lh>>2],c[c[Dg>>2]>>2]=(c[Ig>>2]|0)-(c[kh>>2]|0)+2,c[(c[Dg>>2]|0)+4>>2]=c[lh>>2],c[bh>>2]=1,((c[lh>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[lh>>2]|0)|0)==(c[zg>>2]|0))|0):0){c[(c[wg>>2]|0)+24>>2]=(c[Ig>>2]|0)+1;c[vg>>2]=1;break;}}c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2]=c[Ig>>2];while(1){_h=c[ch>>2]|0;c[ch>>2]=_h+-1;if(!_h)break;if((c[Ng>>2]|0)>>>0<=(c[Yg>>2]|0)>>>0)break;c[oh>>2]=(c[Og>>2]|0)+((c[Ng>>2]&c[Qg>>2])<<1<<2);c[ph>>2]=(c[Rg>>2]|0)>>>0<(c[Sg>>2]|0)>>>0?c[Rg>>2]|0:c[Sg>>2]|0;if(c[Ag>>2]|0?((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[qh>>2]=(c[Tg>>2]|0)+(c[Ng>>2]|0);_h=Uj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;if(((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0>=(c[Ug>>2]|0)>>>0)c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);}else{c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);_h=Tj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;}if((c[ph>>2]|0)>>>0>(c[dh>>2]|0)>>>0){if((c[ph>>2]|0)>>>0>((c[$g>>2]|0)-(c[Ng>>2]|0)|0)>>>0)c[$g>>2]=(c[Ng>>2]|0)+(c[ph>>2]|0);c[dh>>2]=c[ph>>2];c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[Ig>>2]|0)-(c[Ng>>2]|0)+2;c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ph>>2];c[bh>>2]=(c[bh>>2]|0)+1;if((c[ph>>2]|0)>>>0>4096)break;if(((c[yg>>2]|0)+(c[ph>>2]|0)|0)==(c[zg>>2]|0))break;}_h=c[Ng>>2]|0;if((d[(c[qh>>2]|0)+(c[ph>>2]|0)>>0]|0|0)<(d[(c[yg>>2]|0)+(c[ph>>2]|0)>>0]|0|0)){c[c[Zg>>2]>>2]=_h;c[Rg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=56;break;}c[Zg>>2]=(c[oh>>2]|0)+4;c[Ng>>2]=c[(c[oh>>2]|0)+4>>2];}else{c[c[_g>>2]>>2]=_h;c[Sg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=59;break;}c[_g>>2]=c[oh>>2];c[Ng>>2]=c[c[oh>>2]>>2];}}if((dj|0)==56){dj=0;c[Zg>>2]=ah;}else if((dj|0)==59){dj=0;c[_g>>2]=ah;}c[c[_g>>2]>>2]=0;c[c[Zg>>2]>>2]=0;c[(c[wg>>2]|0)+24>>2]=(c[$g>>2]|0)-8;c[vg>>2]=c[bh>>2];}}while(0);c[Ah>>2]=c[vg>>2];break a;break;}case 7:case 6:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Hd>>2]=c[Bh>>2];c[Id>>2]=_h;c[Jd>>2]=Qh;c[Kd>>2]=Ph;c[Ld>>2]=Zi;c[Md>>2]=_i;c[Nd>>2]=Uh;c[Od>>2]=Zh;c[Pd>>2]=aj;c[Qd>>2]=6;if((c[(c[Id>>2]|0)+20>>2]|0)>>>0<4095)fj=c[(c[Id>>2]|0)+20>>2]|0;else fj=4095;c[Rd>>2]=fj;c[Sd>>2]=c[(c[Hd>>2]|0)+4>>2];c[Td>>2]=(c[Jd>>2]|0)-(c[Sd>>2]|0);c[Ud>>2]=c[(c[Id>>2]|0)+8>>2];c[Vd>>2]=(c[Qd>>2]|0)==3?3:4;c[Wd>>2]=c[(c[Hd>>2]|0)+36>>2];c[Xd>>2]=Sj(c[Jd>>2]|0,c[Ud>>2]|0,c[Qd>>2]|0)|0;c[Yd>>2]=c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2];c[Zd>>2]=c[(c[Hd>>2]|0)+44>>2];c[_d>>2]=(c[(c[Id>>2]|0)+4>>2]|0)-1;c[$d>>2]=(1<<c[_d>>2])-1;c[ae>>2]=0;c[be>>2]=0;c[ce>>2]=c[(c[Hd>>2]|0)+8>>2];c[de>>2]=c[(c[Hd>>2]|0)+12>>2];c[ee>>2]=(c[ce>>2]|0)+(c[de>>2]|0);c[fe>>2]=(c[Sd>>2]|0)+(c[de>>2]|0);if((c[$d>>2]|0)>>>0>=(c[Td>>2]|0)>>>0)gj=0;else gj=(c[Td>>2]|0)-(c[$d>>2]|0)|0;c[ge>>2]=gj;c[he>>2]=c[(c[Hd>>2]|0)+16>>2];c[ie>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2);c[je>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2)+4;c[ke>>2]=(c[Td>>2]|0)+8+1;c[me>>2]=0;c[ne>>2]=1<<c[(c[Id>>2]|0)+12>>2];c[oe>>2]=(c[Pd>>2]|0)-1;c[pe>>2]=3+(c[Nd>>2]|0);c[qe>>2]=c[Nd>>2];while(1){if((c[qe>>2]|0)>>>0>=(c[pe>>2]|0)>>>0){dj=190;break;}aj=c[Md>>2]|0;if((c[qe>>2]|0)==3)hj=(c[aj>>2]|0)-1|0;else hj=c[aj+(c[qe>>2]<<2)>>2]|0;c[re>>2]=hj;c[se>>2]=(c[Td>>2]|0)-(c[re>>2]|0);c[te>>2]=0;if(((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[de>>2]|0)|0)>>>0){aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0;if((aj|0)==(mm((c[Jd>>2]|0)+(0-(c[re>>2]|0))|0,c[Vd>>2]|0)|0)){aj=Tj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[Jd>>2]|0)+(c[Vd>>2]|0)+(0-(c[re>>2]|0))|0,c[Kd>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}else{c[ue>>2]=(c[ce>>2]|0)+(c[se>>2]|0);if((c[Ld>>2]|0?(((c[de>>2]|0)-1-(c[se>>2]|0)|0)>>>0>=3?((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[he>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0,(aj|0)==(mm(c[ue>>2]|0,c[Vd>>2]|0)|0)):0){aj=Uj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[ue>>2]|0)+(c[Vd>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}if((c[te>>2]|0)>>>0>(c[oe>>2]|0)>>>0?(c[oe>>2]=c[te>>2],c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[qe>>2]|0)-(c[Nd>>2]|0),c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[te>>2],c[me>>2]=(c[me>>2]|0)+1,((c[te>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[te>>2]|0)|0)==(c[Kd>>2]|0))|0):0){dj=188;break;}c[qe>>2]=(c[qe>>2]|0)+1;}do{if((dj|0)==188){dj=0;c[Gd>>2]=c[me>>2];}else if((dj|0)==190){dj=0;if(((c[Qd>>2]|0)==3?(c[oe>>2]|0)>>>0<(c[Qd>>2]|0)>>>0:0)?(c[ve>>2]=nm(c[Hd>>2]|0,c[Jd>>2]|0)|0,((c[ve>>2]|0)>>>0>(c[he>>2]|0)>>>0?((c[Td>>2]|0)-(c[ve>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ld>>2]|0?(c[ve>>2]|0)>>>0<(c[de>>2]|0)>>>0:0){c[ye>>2]=(c[ce>>2]|0)+(c[ve>>2]|0);c[we>>2]=Uj(c[Jd>>2]|0,c[ye>>2]|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;}else{c[xe>>2]=(c[Sd>>2]|0)+(c[ve>>2]|0);c[we>>2]=Tj(c[Jd>>2]|0,c[xe>>2]|0,c[Kd>>2]|0)|0;}if((c[we>>2]|0)>>>0>=(c[Qd>>2]|0)>>>0?(c[oe>>2]=c[we>>2],c[c[Od>>2]>>2]=(c[Td>>2]|0)-(c[ve>>2]|0)+2,c[(c[Od>>2]|0)+4>>2]=c[we>>2],c[me>>2]=1,((c[we>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[we>>2]|0)|0)==(c[Kd>>2]|0))|0):0){c[(c[Hd>>2]|0)+24>>2]=(c[Td>>2]|0)+1;c[Gd>>2]=1;break;}}c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2]=c[Td>>2];while(1){aj=c[ne>>2]|0;c[ne>>2]=aj+-1;if(!aj)break;if((c[Yd>>2]|0)>>>0<=(c[he>>2]|0)>>>0)break;c[ze>>2]=(c[Zd>>2]|0)+((c[Yd>>2]&c[$d>>2])<<1<<2);c[Ae>>2]=(c[ae>>2]|0)>>>0<(c[be>>2]|0)>>>0?c[ae>>2]|0:c[be>>2]|0;if(c[Ld>>2]|0?((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0<(c[de>>2]|0)>>>0:0){c[Be>>2]=(c[ce>>2]|0)+(c[Yd>>2]|0);aj=Uj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;if(((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0>=(c[de>>2]|0)>>>0)c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);}else{c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);aj=Tj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;}if((c[Ae>>2]|0)>>>0>(c[oe>>2]|0)>>>0){if((c[Ae>>2]|0)>>>0>((c[ke>>2]|0)-(c[Yd>>2]|0)|0)>>>0)c[ke>>2]=(c[Yd>>2]|0)+(c[Ae>>2]|0);c[oe>>2]=c[Ae>>2];c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[Td>>2]|0)-(c[Yd>>2]|0)+2;c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[Ae>>2];c[me>>2]=(c[me>>2]|0)+1;if((c[Ae>>2]|0)>>>0>4096)break;if(((c[Jd>>2]|0)+(c[Ae>>2]|0)|0)==(c[Kd>>2]|0))break;}aj=c[Yd>>2]|0;if((d[(c[Be>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)<(d[(c[Jd>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)){c[c[ie>>2]>>2]=aj;c[ae>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=215;break;}c[ie>>2]=(c[ze>>2]|0)+4;c[Yd>>2]=c[(c[ze>>2]|0)+4>>2];}else{c[c[je>>2]>>2]=aj;c[be>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=218;break;}c[je>>2]=c[ze>>2];c[Yd>>2]=c[c[ze>>2]>>2];}}if((dj|0)==215){dj=0;c[ie>>2]=le;}else if((dj|0)==218){dj=0;c[je>>2]=le;}c[c[je>>2]>>2]=0;c[c[ie>>2]>>2]=0;c[(c[Hd>>2]|0)+24>>2]=(c[ke>>2]|0)-8;c[Gd>>2]=c[me>>2];}}while(0);c[Ah>>2]=c[Gd>>2];break a;break;}case 5:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[De>>2]=c[Bh>>2];c[Ee>>2]=aj;c[Fe>>2]=Zh;c[Ge>>2]=Uh;c[He>>2]=_i;c[Ie>>2]=Zi;c[Je>>2]=Ph;c[Ke>>2]=Qh;c[Le>>2]=_h;c[Me>>2]=5;if((c[(c[Ee>>2]|0)+20>>2]|0)>>>0<4095)ij=c[(c[Ee>>2]|0)+20>>2]|0;else ij=4095;c[Ne>>2]=ij;c[Oe>>2]=c[(c[De>>2]|0)+4>>2];c[Pe>>2]=(c[Fe>>2]|0)-(c[Oe>>2]|0);c[Qe>>2]=c[(c[Ee>>2]|0)+8>>2];c[Re>>2]=(c[Me>>2]|0)==3?3:4;c[Se>>2]=c[(c[De>>2]|0)+36>>2];c[Te>>2]=Sj(c[Fe>>2]|0,c[Qe>>2]|0,c[Me>>2]|0)|0;c[Ue>>2]=c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2];c[Ve>>2]=c[(c[De>>2]|0)+44>>2];c[We>>2]=(c[(c[Ee>>2]|0)+4>>2]|0)-1;c[Xe>>2]=(1<<c[We>>2])-1;c[Ye>>2]=0;c[Ze>>2]=0;c[_e>>2]=c[(c[De>>2]|0)+8>>2];c[$e>>2]=c[(c[De>>2]|0)+12>>2];c[af>>2]=(c[_e>>2]|0)+(c[$e>>2]|0);c[bf>>2]=(c[Oe>>2]|0)+(c[$e>>2]|0);if((c[Xe>>2]|0)>>>0>=(c[Pe>>2]|0)>>>0)jj=0;else jj=(c[Pe>>2]|0)-(c[Xe>>2]|0)|0;c[cf>>2]=jj;c[df>>2]=c[(c[De>>2]|0)+16>>2];c[ef>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2);c[ff>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2)+4;c[gf>>2]=(c[Pe>>2]|0)+8+1;c[jf>>2]=0;c[kf>>2]=1<<c[(c[Ee>>2]|0)+12>>2];c[lf>>2]=(c[Le>>2]|0)-1;c[mf>>2]=3+(c[Je>>2]|0);c[nf>>2]=c[Je>>2];while(1){if((c[nf>>2]|0)>>>0>=(c[mf>>2]|0)>>>0){dj=137;break;}_h=c[Ie>>2]|0;if((c[nf>>2]|0)==3)kj=(c[_h>>2]|0)-1|0;else kj=c[_h+(c[nf>>2]<<2)>>2]|0;c[of>>2]=kj;c[pf>>2]=(c[Pe>>2]|0)-(c[of>>2]|0);c[qf>>2]=0;if(((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[$e>>2]|0)|0)>>>0){_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0;if((_h|0)==(mm((c[Fe>>2]|0)+(0-(c[of>>2]|0))|0,c[Re>>2]|0)|0)){_h=Tj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[Fe>>2]|0)+(c[Re>>2]|0)+(0-(c[of>>2]|0))|0,c[Ge>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}else{c[rf>>2]=(c[_e>>2]|0)+(c[pf>>2]|0);if((c[He>>2]|0?(((c[$e>>2]|0)-1-(c[pf>>2]|0)|0)>>>0>=3?((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[df>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0,(_h|0)==(mm(c[rf>>2]|0,c[Re>>2]|0)|0)):0){_h=Uj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[rf>>2]|0)+(c[Re>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}if((c[qf>>2]|0)>>>0>(c[lf>>2]|0)>>>0?(c[lf>>2]=c[qf>>2],c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[nf>>2]|0)-(c[Je>>2]|0),c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[qf>>2],c[jf>>2]=(c[jf>>2]|0)+1,((c[qf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[qf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){dj=135;break;}c[nf>>2]=(c[nf>>2]|0)+1;}do{if((dj|0)==135){dj=0;c[Ce>>2]=c[jf>>2];}else if((dj|0)==137){dj=0;if(((c[Me>>2]|0)==3?(c[lf>>2]|0)>>>0<(c[Me>>2]|0)>>>0:0)?(c[sf>>2]=nm(c[De>>2]|0,c[Fe>>2]|0)|0,((c[sf>>2]|0)>>>0>(c[df>>2]|0)>>>0?((c[Pe>>2]|0)-(c[sf>>2]|0)|0)>>>0<262144:0)|0):0){if(c[He>>2]|0?(c[sf>>2]|0)>>>0<(c[$e>>2]|0)>>>0:0){c[vf>>2]=(c[_e>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Uj(c[Fe>>2]|0,c[vf>>2]|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;}else{c[uf>>2]=(c[Oe>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Tj(c[Fe>>2]|0,c[uf>>2]|0,c[Ge>>2]|0)|0;}if((c[tf>>2]|0)>>>0>=(c[Me>>2]|0)>>>0?(c[lf>>2]=c[tf>>2],c[c[Ke>>2]>>2]=(c[Pe>>2]|0)-(c[sf>>2]|0)+2,c[(c[Ke>>2]|0)+4>>2]=c[tf>>2],c[jf>>2]=1,((c[tf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[tf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){c[(c[De>>2]|0)+24>>2]=(c[Pe>>2]|0)+1;c[Ce>>2]=1;break;}}c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2]=c[Pe>>2];while(1){_h=c[kf>>2]|0;c[kf>>2]=_h+-1;if(!_h)break;if((c[Ue>>2]|0)>>>0<=(c[df>>2]|0)>>>0)break;c[wf>>2]=(c[Ve>>2]|0)+((c[Ue>>2]&c[Xe>>2])<<1<<2);c[xf>>2]=(c[Ye>>2]|0)>>>0<(c[Ze>>2]|0)>>>0?c[Ye>>2]|0:c[Ze>>2]|0;if(c[He>>2]|0?((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0<(c[$e>>2]|0)>>>0:0){c[yf>>2]=(c[_e>>2]|0)+(c[Ue>>2]|0);_h=Uj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;if(((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0>=(c[$e>>2]|0)>>>0)c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);}else{c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);_h=Tj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;}if((c[xf>>2]|0)>>>0>(c[lf>>2]|0)>>>0){if((c[xf>>2]|0)>>>0>((c[gf>>2]|0)-(c[Ue>>2]|0)|0)>>>0)c[gf>>2]=(c[Ue>>2]|0)+(c[xf>>2]|0);c[lf>>2]=c[xf>>2];c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[Pe>>2]|0)-(c[Ue>>2]|0)+2;c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[xf>>2];c[jf>>2]=(c[jf>>2]|0)+1;if((c[xf>>2]|0)>>>0>4096)break;if(((c[Fe>>2]|0)+(c[xf>>2]|0)|0)==(c[Ge>>2]|0))break;}_h=c[Ue>>2]|0;if((d[(c[yf>>2]|0)+(c[xf>>2]|0)>>0]|0|0)<(d[(c[Fe>>2]|0)+(c[xf>>2]|0)>>0]|0|0)){c[c[ef>>2]>>2]=_h;c[Ye>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=162;break;}c[ef>>2]=(c[wf>>2]|0)+4;c[Ue>>2]=c[(c[wf>>2]|0)+4>>2];}else{c[c[ff>>2]>>2]=_h;c[Ze>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=165;break;}c[ff>>2]=c[wf>>2];c[Ue>>2]=c[c[wf>>2]>>2];}}if((dj|0)==162){dj=0;c[ef>>2]=hf;}else if((dj|0)==165){dj=0;c[ff>>2]=hf;}c[c[ff>>2]>>2]=0;c[c[ef>>2]>>2]=0;c[(c[De>>2]|0)+24>>2]=(c[gf>>2]|0)-8;c[Ce>>2]=c[jf>>2];}}while(0);c[Ah>>2]=c[Ce>>2];break a;break;}default:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Af>>2]=c[Bh>>2];c[Bf>>2]=_h;c[Cf>>2]=Qh;c[Df>>2]=Ph;c[Ef>>2]=Zi;c[Ff>>2]=_i;c[Gf>>2]=Uh;c[Hf>>2]=Zh;c[If>>2]=aj;c[Jf>>2]=4;if((c[(c[Bf>>2]|0)+20>>2]|0)>>>0<4095)lj=c[(c[Bf>>2]|0)+20>>2]|0;else lj=4095;c[Kf>>2]=lj;c[Lf>>2]=c[(c[Af>>2]|0)+4>>2];c[Mf>>2]=(c[Cf>>2]|0)-(c[Lf>>2]|0);c[Nf>>2]=c[(c[Bf>>2]|0)+8>>2];c[Of>>2]=(c[Jf>>2]|0)==3?3:4;c[Pf>>2]=c[(c[Af>>2]|0)+36>>2];c[Qf>>2]=Sj(c[Cf>>2]|0,c[Nf>>2]|0,c[Jf>>2]|0)|0;c[Rf>>2]=c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2];c[Sf>>2]=c[(c[Af>>2]|0)+44>>2];c[Tf>>2]=(c[(c[Bf>>2]|0)+4>>2]|0)-1;c[Uf>>2]=(1<<c[Tf>>2])-1;c[Vf>>2]=0;c[Wf>>2]=0;c[Xf>>2]=c[(c[Af>>2]|0)+8>>2];c[Yf>>2]=c[(c[Af>>2]|0)+12>>2];c[Zf>>2]=(c[Xf>>2]|0)+(c[Yf>>2]|0);c[_f>>2]=(c[Lf>>2]|0)+(c[Yf>>2]|0);if((c[Uf>>2]|0)>>>0>=(c[Mf>>2]|0)>>>0)mj=0;else mj=(c[Mf>>2]|0)-(c[Uf>>2]|0)|0;c[$f>>2]=mj;c[ag>>2]=c[(c[Af>>2]|0)+16>>2];c[bg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2);c[cg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2)+4;c[dg>>2]=(c[Mf>>2]|0)+8+1;c[fg>>2]=0;c[gg>>2]=1<<c[(c[Bf>>2]|0)+12>>2];c[hg>>2]=(c[If>>2]|0)-1;c[ig>>2]=3+(c[Gf>>2]|0);c[jg>>2]=c[Gf>>2];while(1){if((c[jg>>2]|0)>>>0>=(c[ig>>2]|0)>>>0){dj=84;break;}aj=c[Ff>>2]|0;if((c[jg>>2]|0)==3)nj=(c[aj>>2]|0)-1|0;else nj=c[aj+(c[jg>>2]<<2)>>2]|0;c[kg>>2]=nj;c[lg>>2]=(c[Mf>>2]|0)-(c[kg>>2]|0);c[mg>>2]=0;if(((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[Yf>>2]|0)|0)>>>0){aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0;if((aj|0)==(mm((c[Cf>>2]|0)+(0-(c[kg>>2]|0))|0,c[Of>>2]|0)|0)){aj=Tj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[Cf>>2]|0)+(c[Of>>2]|0)+(0-(c[kg>>2]|0))|0,c[Df>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}else{c[ng>>2]=(c[Xf>>2]|0)+(c[lg>>2]|0);if((c[Ef>>2]|0?(((c[Yf>>2]|0)-1-(c[lg>>2]|0)|0)>>>0>=3?((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[ag>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0,(aj|0)==(mm(c[ng>>2]|0,c[Of>>2]|0)|0)):0){aj=Uj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[ng>>2]|0)+(c[Of>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}if((c[mg>>2]|0)>>>0>(c[hg>>2]|0)>>>0?(c[hg>>2]=c[mg>>2],c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[jg>>2]|0)-(c[Gf>>2]|0),c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[mg>>2],c[fg>>2]=(c[fg>>2]|0)+1,((c[mg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[mg>>2]|0)|0)==(c[Df>>2]|0))|0):0){dj=82;break;}c[jg>>2]=(c[jg>>2]|0)+1;}do{if((dj|0)==82){dj=0;c[zf>>2]=c[fg>>2];}else if((dj|0)==84){dj=0;if(((c[Jf>>2]|0)==3?(c[hg>>2]|0)>>>0<(c[Jf>>2]|0)>>>0:0)?(c[og>>2]=nm(c[Af>>2]|0,c[Cf>>2]|0)|0,((c[og>>2]|0)>>>0>(c[ag>>2]|0)>>>0?((c[Mf>>2]|0)-(c[og>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ef>>2]|0?(c[og>>2]|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[rg>>2]=(c[Xf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Uj(c[Cf>>2]|0,c[rg>>2]|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;}else{c[qg>>2]=(c[Lf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Tj(c[Cf>>2]|0,c[qg>>2]|0,c[Df>>2]|0)|0;}if((c[pg>>2]|0)>>>0>=(c[Jf>>2]|0)>>>0?(c[hg>>2]=c[pg>>2],c[c[Hf>>2]>>2]=(c[Mf>>2]|0)-(c[og>>2]|0)+2,c[(c[Hf>>2]|0)+4>>2]=c[pg>>2],c[fg>>2]=1,((c[pg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[pg>>2]|0)|0)==(c[Df>>2]|0))|0):0){c[(c[Af>>2]|0)+24>>2]=(c[Mf>>2]|0)+1;c[zf>>2]=1;break;}}c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2]=c[Mf>>2];while(1){aj=c[gg>>2]|0;c[gg>>2]=aj+-1;if(!aj)break;if((c[Rf>>2]|0)>>>0<=(c[ag>>2]|0)>>>0)break;c[sg>>2]=(c[Sf>>2]|0)+((c[Rf>>2]&c[Uf>>2])<<1<<2);c[tg>>2]=(c[Vf>>2]|0)>>>0<(c[Wf>>2]|0)>>>0?c[Vf>>2]|0:c[Wf>>2]|0;if(c[Ef>>2]|0?((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[ug>>2]=(c[Xf>>2]|0)+(c[Rf>>2]|0);aj=Uj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;if(((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0>=(c[Yf>>2]|0)>>>0)c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);}else{c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);aj=Tj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;}if((c[tg>>2]|0)>>>0>(c[hg>>2]|0)>>>0){if((c[tg>>2]|0)>>>0>((c[dg>>2]|0)-(c[Rf>>2]|0)|0)>>>0)c[dg>>2]=(c[Rf>>2]|0)+(c[tg>>2]|0);c[hg>>2]=c[tg>>2];c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[Mf>>2]|0)-(c[Rf>>2]|0)+2;c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[tg>>2];c[fg>>2]=(c[fg>>2]|0)+1;if((c[tg>>2]|0)>>>0>4096)break;if(((c[Cf>>2]|0)+(c[tg>>2]|0)|0)==(c[Df>>2]|0))break;}aj=c[Rf>>2]|0;if((d[(c[ug>>2]|0)+(c[tg>>2]|0)>>0]|0|0)<(d[(c[Cf>>2]|0)+(c[tg>>2]|0)>>0]|0|0)){c[c[bg>>2]>>2]=aj;c[Vf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=109;break;}c[bg>>2]=(c[sg>>2]|0)+4;c[Rf>>2]=c[(c[sg>>2]|0)+4>>2];}else{c[c[cg>>2]>>2]=aj;c[Wf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=112;break;}c[cg>>2]=c[sg>>2];c[Rf>>2]=c[c[sg>>2]>>2];}}if((dj|0)==109){dj=0;c[bg>>2]=eg;}else if((dj|0)==112){dj=0;c[cg>>2]=eg;}c[c[cg>>2]>>2]=0;c[c[bg>>2]>>2]=0;c[(c[Af>>2]|0)+24>>2]=(c[dg>>2]|0)-8;c[zf>>2]=c[fg>>2];}}while(0);c[Ah>>2]=c[zf>>2];break a;}}}}while(0);c[ki>>2]=c[Ah>>2];if(!(c[ki>>2]|0)){c[Vh>>2]=(c[Vh>>2]|0)+1;continue;}c[li>>2]=0;while(1){if((c[li>>2]|0)>>>0>=3)break;c[(c[bi>>2]|0)+16+(c[li>>2]<<2)>>2]=c[(c[Nh>>2]|0)+(c[li>>2]<<2)>>2];c[li>>2]=(c[li>>2]|0)+1;}c[(c[bi>>2]|0)+8>>2]=1;c[(c[bi>>2]|0)+12>>2]=c[ii>>2];c[mi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)+4>>2];do{if((c[mi>>2]|0)>>>0<=(c[$h>>2]|0)>>>0){c[ni>>2]=om(di,c[Wh>>2]|0,c[ii>>2]|0,c[Th>>2]|0)|0;c[oi>>2]=0;while(1){if((c[oi>>2]|0)>>>0>=(c[ai>>2]|0)>>>0)break;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=1073741824;c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=0;while(1){if((c[pi>>2]|0)>>>0>=(c[ki>>2]|0)>>>0)break;c[qi>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)>>2];c[ri>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)+4>>2];pm(si,c[Nh>>2]|0,c[qi>>2]|0,c[ji>>2]|0);while(1){if((c[oi>>2]|0)>>>0>(c[ri>>2]|0)>>>0)break;aj=c[ni>>2]|0;Zh=c[oi>>2]|0;Uh=c[Th>>2]|0;_i=c[Rh>>2]|0;c[yd>>2]=c[qi>>2];c[zd>>2]=Zh;c[Ad>>2]=Uh;c[Bd>>2]=_i;c[Dd>>2]=qm((c[yd>>2]|0)+1|0)|0;c[Ed>>2]=(c[zd>>2]|0)-3;if(c[(c[Ad>>2]|0)+56>>2]|0){_i=(qm((c[Ed>>2]|0)+1|0)|0)+16|0;c[xd>>2]=_i+(c[Dd>>2]|0);}else{_i=(c[Dd>>2]|0)+(c[(c[Ad>>2]|0)+52>>2]|0)|0;c[Cd>>2]=_i-(qm((c[(c[(c[Ad>>2]|0)+12>>2]|0)+(c[Dd>>2]<<2)>>2]|0)+1|0)|0);if((c[Bd>>2]|0)<2&(c[Dd>>2]|0)>>>0>=20)c[Cd>>2]=(c[Cd>>2]|0)+((c[Dd>>2]|0)-19<<1);c[Fd>>2]=rm(c[Ed>>2]|0)|0;_i=(c[5840+(c[Fd>>2]<<2)>>2]|0)+(c[(c[Ad>>2]|0)+48>>2]|0)|0;Uh=_i-(qm((c[(c[(c[Ad>>2]|0)+8>>2]|0)+(c[Fd>>2]<<2)>>2]|0)+1|0)|0)|0;c[Cd>>2]=(c[Cd>>2]|0)+Uh;c[xd>>2]=c[Cd>>2];}c[ti>>2]=aj+(c[xd>>2]|0);c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=c[oi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+4>>2]=c[qi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+12>>2]=c[ii>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=c[ti>>2];aj=(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+16|0;c[aj>>2]=c[si>>2];c[aj+4>>2]=c[si+4>>2];c[aj+8>>2]=c[si+8>>2];c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=(c[pi>>2]|0)+1;}c[fi>>2]=(c[oi>>2]|0)-1;c[ei>>2]=1;b:while(1){if((c[ei>>2]|0)>>>0>(c[fi>>2]|0)>>>0){dj=504;break;}c[ui>>2]=(c[Vh>>2]|0)+(c[ei>>2]|0);if((c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+8>>2]|0)==1)oj=(c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+12>>2]|0)+1|0;else oj=1;c[vi>>2]=oj;if((c[ei>>2]|0)>>>0>(c[vi>>2]|0)>>>0){aj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[vi>>2]|0)|0)*28|0)>>2]|0;c[wi>>2]=aj+(sm((c[ui>>2]|0)+(0-(c[vi>>2]|0))|0,c[vi>>2]|0,c[Th>>2]|0)|0);}else c[wi>>2]=tm(di,c[Wh>>2]|0,c[vi>>2]|0,c[Th>>2]|0)|0;if((c[wi>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0)){c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+4>>2]=0;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]=c[vi>>2];c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]=c[wi>>2];aj=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Uh=(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+16|0;c[aj>>2]=c[Uh>>2];c[aj+4>>2]=c[Uh+4>>2];c[aj+8>>2]=c[Uh+8>>2];}c:do{if((c[ui>>2]|0)>>>0<=(c[Yh>>2]|0)>>>0){if((c[ei>>2]|0)==(c[fi>>2]|0)){dj=504;break b;}if((c[Rh>>2]|0)==0?(c[(c[bi>>2]|0)+(((c[ei>>2]|0)+1|0)*28|0)>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0):0)break;c[xi>>2]=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)!=1&1;if((c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)==1)pj=c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]|0;else pj=0;c[yi>>2]=pj;if((c[ei>>2]|0)>>>0>(c[yi>>2]|0)>>>0)qj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[yi>>2]|0)|0)*28|0)>>2]|0;else qj=0;c[zi>>2]=qj;Uh=c[zi>>2]|0;c[Ai>>2]=Uh+(um((c[ui>>2]|0)+(0-(c[yi>>2]|0))|0,c[yi>>2]|0,c[Th>>2]|0)|0);Uh=c[Oh>>2]|0;aj=c[ui>>2]|0;_i=c[Xh>>2]|0;Zh=c[Sh>>2]|0;Zi=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Ph=c[xi>>2]|0;Qh=c[ci>>2]|0;_h=c[ai>>2]|0;c[nd>>2]=c[Lh>>2];c[od>>2]=Uh;c[pd>>2]=aj;c[qd>>2]=_i;c[rd>>2]=Zh;c[sd>>2]=Zi;c[td>>2]=Ph;c[ud>>2]=Qh;c[vd>>2]=_h;c[wd>>2]=c[(c[od>>2]|0)+16>>2];d:do{if((c[pd>>2]|0)>>>0<((c[(c[nd>>2]|0)+4>>2]|0)+(c[(c[nd>>2]|0)+24>>2]|0)|0)>>>0)c[md>>2]=0;else{_h=c[od>>2]|0;Qh=c[pd>>2]|0;Ph=c[qd>>2]|0;Zi=c[wd>>2]|0;Zh=c[rd>>2]|0;c[dd>>2]=c[nd>>2];c[ed>>2]=_h;c[fd>>2]=Qh;c[gd>>2]=Ph;c[hd>>2]=Zi;c[id>>2]=Zh;c[jd>>2]=c[(c[dd>>2]|0)+4>>2];c[kd>>2]=(c[fd>>2]|0)-(c[jd>>2]|0);c[ld>>2]=c[(c[dd>>2]|0)+24>>2];while(1){if((c[ld>>2]|0)>>>0>=(c[kd>>2]|0)>>>0)break;Zh=Rj(c[dd>>2]|0,c[ed>>2]|0,(c[jd>>2]|0)+(c[ld>>2]|0)|0,c[gd>>2]|0,c[hd>>2]|0,c[id>>2]|0)|0;c[ld>>2]=(c[ld>>2]|0)+Zh;}c[(c[dd>>2]|0)+24>>2]=c[kd>>2];switch(c[wd>>2]|0){case 3:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[ic>>2]=c[nd>>2];c[jc>>2]=Zh;c[kc>>2]=Zi;c[lc>>2]=Ph;c[mc>>2]=Qh;c[nc>>2]=_h;c[oc>>2]=_i;c[pc>>2]=aj;c[qc>>2]=Uh;c[rc>>2]=3;if((c[(c[jc>>2]|0)+20>>2]|0)>>>0<4095)rj=c[(c[jc>>2]|0)+20>>2]|0;else rj=4095;c[sc>>2]=rj;c[tc>>2]=c[(c[ic>>2]|0)+4>>2];c[uc>>2]=(c[kc>>2]|0)-(c[tc>>2]|0);c[vc>>2]=c[(c[jc>>2]|0)+8>>2];c[wc>>2]=(c[rc>>2]|0)==3?3:4;c[xc>>2]=c[(c[ic>>2]|0)+36>>2];c[yc>>2]=Sj(c[kc>>2]|0,c[vc>>2]|0,c[rc>>2]|0)|0;c[zc>>2]=c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2];c[Ac>>2]=c[(c[ic>>2]|0)+44>>2];c[Bc>>2]=(c[(c[jc>>2]|0)+4>>2]|0)-1;c[Cc>>2]=(1<<c[Bc>>2])-1;c[Dc>>2]=0;c[Ec>>2]=0;c[Fc>>2]=c[(c[ic>>2]|0)+8>>2];c[Gc>>2]=c[(c[ic>>2]|0)+12>>2];c[Hc>>2]=(c[Fc>>2]|0)+(c[Gc>>2]|0);c[Ic>>2]=(c[tc>>2]|0)+(c[Gc>>2]|0);if((c[Cc>>2]|0)>>>0>=(c[uc>>2]|0)>>>0)sj=0;else sj=(c[uc>>2]|0)-(c[Cc>>2]|0)|0;c[Jc>>2]=sj;c[Kc>>2]=c[(c[ic>>2]|0)+16>>2];c[Lc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2);c[Mc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2)+4;c[Nc>>2]=(c[uc>>2]|0)+8+1;c[Pc>>2]=0;c[Qc>>2]=1<<c[(c[jc>>2]|0)+12>>2];c[Rc>>2]=(c[qc>>2]|0)-1;c[Sc>>2]=3+(c[oc>>2]|0);c[Tc>>2]=c[oc>>2];while(1){if((c[Tc>>2]|0)>>>0>=(c[Sc>>2]|0)>>>0){dj=287;break;}Uh=c[nc>>2]|0;if((c[Tc>>2]|0)==3)tj=(c[Uh>>2]|0)-1|0;else tj=c[Uh+(c[Tc>>2]<<2)>>2]|0;c[Uc>>2]=tj;c[Vc>>2]=(c[uc>>2]|0)-(c[Uc>>2]|0);c[Wc>>2]=0;do{if(((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Gc>>2]|0)|0)>>>0){Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm((c[kc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[wc>>2]|0)|0))break;Uh=Tj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[kc>>2]|0)+(c[wc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[lc>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}else{c[Xc>>2]=(c[Fc>>2]|0)+(c[Vc>>2]|0);if(!(c[mc>>2]|0))break;if(!((((c[Gc>>2]|0)-1-(c[Vc>>2]|0)|0)>>>0>=3?((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Kc>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm(c[Xc>>2]|0,c[wc>>2]|0)|0))break;Uh=Uj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[Xc>>2]|0)+(c[wc>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}}while(0);if((c[Wc>>2]|0)>>>0>(c[Rc>>2]|0)>>>0?(c[Rc>>2]=c[Wc>>2],c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[Tc>>2]|0)-(c[oc>>2]|0),c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[Wc>>2],c[Pc>>2]=(c[Pc>>2]|0)+1,((c[Wc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Wc>>2]|0)|0)==(c[lc>>2]|0))|0):0){dj=285;break;}c[Tc>>2]=(c[Tc>>2]|0)+1;}e:do{if((dj|0)==285){dj=0;c[hc>>2]=c[Pc>>2];}else if((dj|0)==287){dj=0;do{if((c[rc>>2]|0)==3){if((c[Rc>>2]|0)>>>0>=(c[rc>>2]|0)>>>0)break;c[Yc>>2]=nm(c[ic>>2]|0,c[kc>>2]|0)|0;if(!(((c[Yc>>2]|0)>>>0>(c[Kc>>2]|0)>>>0?((c[uc>>2]|0)-(c[Yc>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[mc>>2]|0){if((c[Yc>>2]|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=292;break;}c[$c>>2]=(c[Fc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Uj(c[kc>>2]|0,c[$c>>2]|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;}else dj=292;}while(0);if((dj|0)==292){dj=0;c[_c>>2]=(c[tc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Tj(c[kc>>2]|0,c[_c>>2]|0,c[lc>>2]|0)|0;}if((c[Zc>>2]|0)>>>0<(c[rc>>2]|0)>>>0)break;c[Rc>>2]=c[Zc>>2];c[c[pc>>2]>>2]=(c[uc>>2]|0)-(c[Yc>>2]|0)+2;c[(c[pc>>2]|0)+4>>2]=c[Zc>>2];c[Pc>>2]=1;if(!(((c[Zc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Zc>>2]|0)|0)==(c[lc>>2]|0))|0))break;c[(c[ic>>2]|0)+24>>2]=(c[uc>>2]|0)+1;c[hc>>2]=1;break e;}}while(0);c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2]=c[uc>>2];while(1){Uh=c[Qc>>2]|0;c[Qc>>2]=Uh+-1;if(!Uh)break;if((c[zc>>2]|0)>>>0<=(c[Kc>>2]|0)>>>0)break;c[ad>>2]=(c[Ac>>2]|0)+((c[zc>>2]&c[Cc>>2])<<1<<2);c[bd>>2]=(c[Dc>>2]|0)>>>0<(c[Ec>>2]|0)>>>0?c[Dc>>2]|0:c[Ec>>2]|0;do{if(c[mc>>2]|0){if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=302;break;}c[cd>>2]=(c[Fc>>2]|0)+(c[zc>>2]|0);Uh=Uj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0<(c[Gc>>2]|0)>>>0)break;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);}else dj=302;}while(0);if((dj|0)==302){dj=0;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);Uh=Tj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;}if((c[bd>>2]|0)>>>0>(c[Rc>>2]|0)>>>0){if((c[bd>>2]|0)>>>0>((c[Nc>>2]|0)-(c[zc>>2]|0)|0)>>>0)c[Nc>>2]=(c[zc>>2]|0)+(c[bd>>2]|0);c[Rc>>2]=c[bd>>2];c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[uc>>2]|0)-(c[zc>>2]|0)+2;c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[bd>>2];c[Pc>>2]=(c[Pc>>2]|0)+1;if((c[bd>>2]|0)>>>0>4096)break;if(((c[kc>>2]|0)+(c[bd>>2]|0)|0)==(c[lc>>2]|0))break;}Uh=c[zc>>2]|0;if((d[(c[cd>>2]|0)+(c[bd>>2]|0)>>0]|0|0)<(d[(c[kc>>2]|0)+(c[bd>>2]|0)>>0]|0|0)){c[c[Lc>>2]>>2]=Uh;c[Dc>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=312;break;}c[Lc>>2]=(c[ad>>2]|0)+4;c[zc>>2]=c[(c[ad>>2]|0)+4>>2];}else{c[c[Mc>>2]>>2]=Uh;c[Ec>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=315;break;}c[Mc>>2]=c[ad>>2];c[zc>>2]=c[c[ad>>2]>>2];}}if((dj|0)==312){dj=0;c[Lc>>2]=Oc;}else if((dj|0)==315){dj=0;c[Mc>>2]=Oc;}c[c[Mc>>2]>>2]=0;c[c[Lc>>2]>>2]=0;c[(c[ic>>2]|0)+24>>2]=(c[Nc>>2]|0)-8;c[hc>>2]=c[Pc>>2];}}while(0);c[md>>2]=c[hc>>2];break d;break;}case 7:case 6:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[u>>2]=c[nd>>2];c[v>>2]=Uh;c[w>>2]=aj;c[x>>2]=_i;c[y>>2]=_h;c[z>>2]=Qh;c[A>>2]=Ph;c[B>>2]=Zi;c[C>>2]=Zh;c[D>>2]=6;if((c[(c[v>>2]|0)+20>>2]|0)>>>0<4095)uj=c[(c[v>>2]|0)+20>>2]|0;else uj=4095;c[E>>2]=uj;c[F>>2]=c[(c[u>>2]|0)+4>>2];c[G>>2]=(c[w>>2]|0)-(c[F>>2]|0);c[H>>2]=c[(c[v>>2]|0)+8>>2];c[I>>2]=(c[D>>2]|0)==3?3:4;c[J>>2]=c[(c[u>>2]|0)+36>>2];c[K>>2]=Sj(c[w>>2]|0,c[H>>2]|0,c[D>>2]|0)|0;c[L>>2]=c[(c[J>>2]|0)+(c[K>>2]<<2)>>2];c[M>>2]=c[(c[u>>2]|0)+44>>2];c[N>>2]=(c[(c[v>>2]|0)+4>>2]|0)-1;c[O>>2]=(1<<c[N>>2])-1;c[P>>2]=0;c[Q>>2]=0;c[R>>2]=c[(c[u>>2]|0)+8>>2];c[S>>2]=c[(c[u>>2]|0)+12>>2];c[T>>2]=(c[R>>2]|0)+(c[S>>2]|0);c[U>>2]=(c[F>>2]|0)+(c[S>>2]|0);if((c[O>>2]|0)>>>0>=(c[G>>2]|0)>>>0)vj=0;else vj=(c[G>>2]|0)-(c[O>>2]|0)|0;c[V>>2]=vj;c[W>>2]=c[(c[u>>2]|0)+16>>2];c[X>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2);c[Y>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2)+4;c[Z>>2]=(c[G>>2]|0)+8+1;c[$>>2]=0;c[aa>>2]=1<<c[(c[v>>2]|0)+12>>2];c[ba>>2]=(c[C>>2]|0)-1;c[ca>>2]=3+(c[A>>2]|0);c[da>>2]=c[A>>2];while(1){if((c[da>>2]|0)>>>0>=(c[ca>>2]|0)>>>0){dj=446;break;}Zh=c[z>>2]|0;if((c[da>>2]|0)==3)wj=(c[Zh>>2]|0)-1|0;else wj=c[Zh+(c[da>>2]<<2)>>2]|0;c[ea>>2]=wj;c[fa>>2]=(c[G>>2]|0)-(c[ea>>2]|0);c[ga>>2]=0;do{if(((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[S>>2]|0)|0)>>>0){Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm((c[w>>2]|0)+(0-(c[ea>>2]|0))|0,c[I>>2]|0)|0))break;Zh=Tj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[w>>2]|0)+(c[I>>2]|0)+(0-(c[ea>>2]|0))|0,c[x>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}else{c[ha>>2]=(c[R>>2]|0)+(c[fa>>2]|0);if(!(c[y>>2]|0))break;if(!((((c[S>>2]|0)-1-(c[fa>>2]|0)|0)>>>0>=3?((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[W>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm(c[ha>>2]|0,c[I>>2]|0)|0))break;Zh=Uj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[ha>>2]|0)+(c[I>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}}while(0);if((c[ga>>2]|0)>>>0>(c[ba>>2]|0)>>>0?(c[ba>>2]=c[ga>>2],c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[da>>2]|0)-(c[A>>2]|0),c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[ga>>2],c[$>>2]=(c[$>>2]|0)+1,((c[ga>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ga>>2]|0)|0)==(c[x>>2]|0))|0):0){dj=444;break;}c[da>>2]=(c[da>>2]|0)+1;}f:do{if((dj|0)==444){dj=0;c[t>>2]=c[$>>2];}else if((dj|0)==446){dj=0;do{if((c[D>>2]|0)==3){if((c[ba>>2]|0)>>>0>=(c[D>>2]|0)>>>0)break;c[ia>>2]=nm(c[u>>2]|0,c[w>>2]|0)|0;if(!(((c[ia>>2]|0)>>>0>(c[W>>2]|0)>>>0?((c[G>>2]|0)-(c[ia>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[y>>2]|0){if((c[ia>>2]|0)>>>0>=(c[S>>2]|0)>>>0){dj=451;break;}c[la>>2]=(c[R>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Uj(c[w>>2]|0,c[la>>2]|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;}else dj=451;}while(0);if((dj|0)==451){dj=0;c[ka>>2]=(c[F>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Tj(c[w>>2]|0,c[ka>>2]|0,c[x>>2]|0)|0;}if((c[ja>>2]|0)>>>0<(c[D>>2]|0)>>>0)break;c[ba>>2]=c[ja>>2];c[c[B>>2]>>2]=(c[G>>2]|0)-(c[ia>>2]|0)+2;c[(c[B>>2]|0)+4>>2]=c[ja>>2];c[$>>2]=1;if(!(((c[ja>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ja>>2]|0)|0)==(c[x>>2]|0))|0))break;c[(c[u>>2]|0)+24>>2]=(c[G>>2]|0)+1;c[t>>2]=1;break f;}}while(0);c[(c[J>>2]|0)+(c[K>>2]<<2)>>2]=c[G>>2];while(1){Zh=c[aa>>2]|0;c[aa>>2]=Zh+-1;if(!Zh)break;if((c[L>>2]|0)>>>0<=(c[W>>2]|0)>>>0)break;c[ma>>2]=(c[M>>2]|0)+((c[L>>2]&c[O>>2])<<1<<2);c[na>>2]=(c[P>>2]|0)>>>0<(c[Q>>2]|0)>>>0?c[P>>2]|0:c[Q>>2]|0;do{if(c[y>>2]|0){if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0>=(c[S>>2]|0)>>>0){dj=461;break;}c[oa>>2]=(c[R>>2]|0)+(c[L>>2]|0);Zh=Uj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0<(c[S>>2]|0)>>>0)break;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);}else dj=461;}while(0);if((dj|0)==461){dj=0;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);Zh=Tj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;}if((c[na>>2]|0)>>>0>(c[ba>>2]|0)>>>0){if((c[na>>2]|0)>>>0>((c[Z>>2]|0)-(c[L>>2]|0)|0)>>>0)c[Z>>2]=(c[L>>2]|0)+(c[na>>2]|0);c[ba>>2]=c[na>>2];c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[G>>2]|0)-(c[L>>2]|0)+2;c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[na>>2];c[$>>2]=(c[$>>2]|0)+1;if((c[na>>2]|0)>>>0>4096)break;if(((c[w>>2]|0)+(c[na>>2]|0)|0)==(c[x>>2]|0))break;}Zh=c[L>>2]|0;if((d[(c[oa>>2]|0)+(c[na>>2]|0)>>0]|0|0)<(d[(c[w>>2]|0)+(c[na>>2]|0)>>0]|0|0)){c[c[X>>2]>>2]=Zh;c[P>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=471;break;}c[X>>2]=(c[ma>>2]|0)+4;c[L>>2]=c[(c[ma>>2]|0)+4>>2];}else{c[c[Y>>2]>>2]=Zh;c[Q>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=474;break;}c[Y>>2]=c[ma>>2];c[L>>2]=c[c[ma>>2]>>2];}}if((dj|0)==471){dj=0;c[X>>2]=_;}else if((dj|0)==474){dj=0;c[Y>>2]=_;}c[c[Y>>2]>>2]=0;c[c[X>>2]>>2]=0;c[(c[u>>2]|0)+24>>2]=(c[Z>>2]|0)-8;c[t>>2]=c[$>>2];}}while(0);c[md>>2]=c[t>>2];break d;break;}case 5:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[qa>>2]=c[nd>>2];c[ra>>2]=Zh;c[sa>>2]=Zi;c[ta>>2]=Ph;c[ua>>2]=Qh;c[va>>2]=_h;c[wa>>2]=_i;c[xa>>2]=aj;c[ya>>2]=Uh;c[za>>2]=5;if((c[(c[ra>>2]|0)+20>>2]|0)>>>0<4095)xj=c[(c[ra>>2]|0)+20>>2]|0;else xj=4095;c[Aa>>2]=xj;c[Ba>>2]=c[(c[qa>>2]|0)+4>>2];c[Ca>>2]=(c[sa>>2]|0)-(c[Ba>>2]|0);c[Da>>2]=c[(c[ra>>2]|0)+8>>2];c[Ea>>2]=(c[za>>2]|0)==3?3:4;c[Fa>>2]=c[(c[qa>>2]|0)+36>>2];c[Ga>>2]=Sj(c[sa>>2]|0,c[Da>>2]|0,c[za>>2]|0)|0;c[Ha>>2]=c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2];c[Ia>>2]=c[(c[qa>>2]|0)+44>>2];c[Ja>>2]=(c[(c[ra>>2]|0)+4>>2]|0)-1;c[Ka>>2]=(1<<c[Ja>>2])-1;c[La>>2]=0;c[Ma>>2]=0;c[Na>>2]=c[(c[qa>>2]|0)+8>>2];c[Oa>>2]=c[(c[qa>>2]|0)+12>>2];c[Pa>>2]=(c[Na>>2]|0)+(c[Oa>>2]|0);c[Qa>>2]=(c[Ba>>2]|0)+(c[Oa>>2]|0);if((c[Ka>>2]|0)>>>0>=(c[Ca>>2]|0)>>>0)yj=0;else yj=(c[Ca>>2]|0)-(c[Ka>>2]|0)|0;c[Ra>>2]=yj;c[Sa>>2]=c[(c[qa>>2]|0)+16>>2];c[Ta>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2);c[Ua>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2)+4;c[Va>>2]=(c[Ca>>2]|0)+8+1;c[Xa>>2]=0;c[Ya>>2]=1<<c[(c[ra>>2]|0)+12>>2];c[Za>>2]=(c[ya>>2]|0)-1;c[_a>>2]=3+(c[wa>>2]|0);c[$a>>2]=c[wa>>2];while(1){if((c[$a>>2]|0)>>>0>=(c[_a>>2]|0)>>>0){dj=393;break;}Uh=c[va>>2]|0;if((c[$a>>2]|0)==3)zj=(c[Uh>>2]|0)-1|0;else zj=c[Uh+(c[$a>>2]<<2)>>2]|0;c[ab>>2]=zj;c[bb>>2]=(c[Ca>>2]|0)-(c[ab>>2]|0);c[cb>>2]=0;do{if(((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Oa>>2]|0)|0)>>>0){Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm((c[sa>>2]|0)+(0-(c[ab>>2]|0))|0,c[Ea>>2]|0)|0))break;Uh=Tj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[sa>>2]|0)+(c[Ea>>2]|0)+(0-(c[ab>>2]|0))|0,c[ta>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}else{c[db>>2]=(c[Na>>2]|0)+(c[bb>>2]|0);if(!(c[ua>>2]|0))break;if(!((((c[Oa>>2]|0)-1-(c[bb>>2]|0)|0)>>>0>=3?((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Sa>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm(c[db>>2]|0,c[Ea>>2]|0)|0))break;Uh=Uj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[db>>2]|0)+(c[Ea>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}}while(0);if((c[cb>>2]|0)>>>0>(c[Za>>2]|0)>>>0?(c[Za>>2]=c[cb>>2],c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[$a>>2]|0)-(c[wa>>2]|0),c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[cb>>2],c[Xa>>2]=(c[Xa>>2]|0)+1,((c[cb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[cb>>2]|0)|0)==(c[ta>>2]|0))|0):0){dj=391;break;}c[$a>>2]=(c[$a>>2]|0)+1;}g:do{if((dj|0)==391){dj=0;c[pa>>2]=c[Xa>>2];}else if((dj|0)==393){dj=0;do{if((c[za>>2]|0)==3){if((c[Za>>2]|0)>>>0>=(c[za>>2]|0)>>>0)break;c[eb>>2]=nm(c[qa>>2]|0,c[sa>>2]|0)|0;if(!(((c[eb>>2]|0)>>>0>(c[Sa>>2]|0)>>>0?((c[Ca>>2]|0)-(c[eb>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[ua>>2]|0){if((c[eb>>2]|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=398;break;}c[hb>>2]=(c[Na>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Uj(c[sa>>2]|0,c[hb>>2]|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;}else dj=398;}while(0);if((dj|0)==398){dj=0;c[gb>>2]=(c[Ba>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Tj(c[sa>>2]|0,c[gb>>2]|0,c[ta>>2]|0)|0;}if((c[fb>>2]|0)>>>0<(c[za>>2]|0)>>>0)break;c[Za>>2]=c[fb>>2];c[c[xa>>2]>>2]=(c[Ca>>2]|0)-(c[eb>>2]|0)+2;c[(c[xa>>2]|0)+4>>2]=c[fb>>2];c[Xa>>2]=1;if(!(((c[fb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[fb>>2]|0)|0)==(c[ta>>2]|0))|0))break;c[(c[qa>>2]|0)+24>>2]=(c[Ca>>2]|0)+1;c[pa>>2]=1;break g;}}while(0);c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2]=c[Ca>>2];while(1){Uh=c[Ya>>2]|0;c[Ya>>2]=Uh+-1;if(!Uh)break;if((c[Ha>>2]|0)>>>0<=(c[Sa>>2]|0)>>>0)break;c[ib>>2]=(c[Ia>>2]|0)+((c[Ha>>2]&c[Ka>>2])<<1<<2);c[jb>>2]=(c[La>>2]|0)>>>0<(c[Ma>>2]|0)>>>0?c[La>>2]|0:c[Ma>>2]|0;do{if(c[ua>>2]|0){if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=408;break;}c[kb>>2]=(c[Na>>2]|0)+(c[Ha>>2]|0);Uh=Uj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0<(c[Oa>>2]|0)>>>0)break;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);}else dj=408;}while(0);if((dj|0)==408){dj=0;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);Uh=Tj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;}if((c[jb>>2]|0)>>>0>(c[Za>>2]|0)>>>0){if((c[jb>>2]|0)>>>0>((c[Va>>2]|0)-(c[Ha>>2]|0)|0)>>>0)c[Va>>2]=(c[Ha>>2]|0)+(c[jb>>2]|0);c[Za>>2]=c[jb>>2];c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[Ca>>2]|0)-(c[Ha>>2]|0)+2;c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[jb>>2];c[Xa>>2]=(c[Xa>>2]|0)+1;if((c[jb>>2]|0)>>>0>4096)break;if(((c[sa>>2]|0)+(c[jb>>2]|0)|0)==(c[ta>>2]|0))break;}Uh=c[Ha>>2]|0;if((d[(c[kb>>2]|0)+(c[jb>>2]|0)>>0]|0|0)<(d[(c[sa>>2]|0)+(c[jb>>2]|0)>>0]|0|0)){c[c[Ta>>2]>>2]=Uh;c[La>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=418;break;}c[Ta>>2]=(c[ib>>2]|0)+4;c[Ha>>2]=c[(c[ib>>2]|0)+4>>2];}else{c[c[Ua>>2]>>2]=Uh;c[Ma>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=421;break;}c[Ua>>2]=c[ib>>2];c[Ha>>2]=c[c[ib>>2]>>2];}}if((dj|0)==418){dj=0;c[Ta>>2]=Wa;}else if((dj|0)==421){dj=0;c[Ua>>2]=Wa;}c[c[Ua>>2]>>2]=0;c[c[Ta>>2]>>2]=0;c[(c[qa>>2]|0)+24>>2]=(c[Va>>2]|0)-8;c[pa>>2]=c[Xa>>2];}}while(0);c[md>>2]=c[pa>>2];break d;break;}default:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[mb>>2]=c[nd>>2];c[nb>>2]=Uh;c[ob>>2]=aj;c[pb>>2]=_i;c[qb>>2]=_h;c[rb>>2]=Qh;c[sb>>2]=Ph;c[tb>>2]=Zi;c[ub>>2]=Zh;c[vb>>2]=4;if((c[(c[nb>>2]|0)+20>>2]|0)>>>0<4095)Aj=c[(c[nb>>2]|0)+20>>2]|0;else Aj=4095;c[wb>>2]=Aj;c[xb>>2]=c[(c[mb>>2]|0)+4>>2];c[yb>>2]=(c[ob>>2]|0)-(c[xb>>2]|0);c[zb>>2]=c[(c[nb>>2]|0)+8>>2];c[Ab>>2]=(c[vb>>2]|0)==3?3:4;c[Bb>>2]=c[(c[mb>>2]|0)+36>>2];c[Cb>>2]=Sj(c[ob>>2]|0,c[zb>>2]|0,c[vb>>2]|0)|0;c[Db>>2]=c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2];c[Eb>>2]=c[(c[mb>>2]|0)+44>>2];c[Fb>>2]=(c[(c[nb>>2]|0)+4>>2]|0)-1;c[Gb>>2]=(1<<c[Fb>>2])-1;c[Hb>>2]=0;c[Ib>>2]=0;c[Jb>>2]=c[(c[mb>>2]|0)+8>>2];c[Kb>>2]=c[(c[mb>>2]|0)+12>>2];c[Lb>>2]=(c[Jb>>2]|0)+(c[Kb>>2]|0);c[Mb>>2]=(c[xb>>2]|0)+(c[Kb>>2]|0);if((c[Gb>>2]|0)>>>0>=(c[yb>>2]|0)>>>0)Bj=0;else Bj=(c[yb>>2]|0)-(c[Gb>>2]|0)|0;c[Nb>>2]=Bj;c[Ob>>2]=c[(c[mb>>2]|0)+16>>2];c[Pb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2);c[Qb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2)+4;c[Rb>>2]=(c[yb>>2]|0)+8+1;c[Tb>>2]=0;c[Ub>>2]=1<<c[(c[nb>>2]|0)+12>>2];c[Vb>>2]=(c[ub>>2]|0)-1;c[Wb>>2]=3+(c[sb>>2]|0);c[Xb>>2]=c[sb>>2];while(1){if((c[Xb>>2]|0)>>>0>=(c[Wb>>2]|0)>>>0){dj=340;break;}Zh=c[rb>>2]|0;if((c[Xb>>2]|0)==3)Cj=(c[Zh>>2]|0)-1|0;else Cj=c[Zh+(c[Xb>>2]<<2)>>2]|0;c[Yb>>2]=Cj;c[Zb>>2]=(c[yb>>2]|0)-(c[Yb>>2]|0);c[_b>>2]=0;do{if(((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Kb>>2]|0)|0)>>>0){Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm((c[ob>>2]|0)+(0-(c[Yb>>2]|0))|0,c[Ab>>2]|0)|0))break;Zh=Tj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[ob>>2]|0)+(c[Ab>>2]|0)+(0-(c[Yb>>2]|0))|0,c[pb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}else{c[$b>>2]=(c[Jb>>2]|0)+(c[Zb>>2]|0);if(!(c[qb>>2]|0))break;if(!((((c[Kb>>2]|0)-1-(c[Zb>>2]|0)|0)>>>0>=3?((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Ob>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm(c[$b>>2]|0,c[Ab>>2]|0)|0))break;Zh=Uj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[$b>>2]|0)+(c[Ab>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}}while(0);if((c[_b>>2]|0)>>>0>(c[Vb>>2]|0)>>>0?(c[Vb>>2]=c[_b>>2],c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[Xb>>2]|0)-(c[sb>>2]|0),c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[_b>>2],c[Tb>>2]=(c[Tb>>2]|0)+1,((c[_b>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[_b>>2]|0)|0)==(c[pb>>2]|0))|0):0){dj=338;break;}c[Xb>>2]=(c[Xb>>2]|0)+1;}h:do{if((dj|0)==338){dj=0;c[lb>>2]=c[Tb>>2];}else if((dj|0)==340){dj=0;do{if((c[vb>>2]|0)==3){if((c[Vb>>2]|0)>>>0>=(c[vb>>2]|0)>>>0)break;c[ac>>2]=nm(c[mb>>2]|0,c[ob>>2]|0)|0;if(!(((c[ac>>2]|0)>>>0>(c[Ob>>2]|0)>>>0?((c[yb>>2]|0)-(c[ac>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[qb>>2]|0){if((c[ac>>2]|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=345;break;}c[dc>>2]=(c[Jb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Uj(c[ob>>2]|0,c[dc>>2]|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;}else dj=345;}while(0);if((dj|0)==345){dj=0;c[cc>>2]=(c[xb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Tj(c[ob>>2]|0,c[cc>>2]|0,c[pb>>2]|0)|0;}if((c[bc>>2]|0)>>>0<(c[vb>>2]|0)>>>0)break;c[Vb>>2]=c[bc>>2];c[c[tb>>2]>>2]=(c[yb>>2]|0)-(c[ac>>2]|0)+2;c[(c[tb>>2]|0)+4>>2]=c[bc>>2];c[Tb>>2]=1;if(!(((c[bc>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[bc>>2]|0)|0)==(c[pb>>2]|0))|0))break;c[(c[mb>>2]|0)+24>>2]=(c[yb>>2]|0)+1;c[lb>>2]=1;break h;}}while(0);c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2]=c[yb>>2];while(1){Zh=c[Ub>>2]|0;c[Ub>>2]=Zh+-1;if(!Zh)break;if((c[Db>>2]|0)>>>0<=(c[Ob>>2]|0)>>>0)break;c[ec>>2]=(c[Eb>>2]|0)+((c[Db>>2]&c[Gb>>2])<<1<<2);c[fc>>2]=(c[Hb>>2]|0)>>>0<(c[Ib>>2]|0)>>>0?c[Hb>>2]|0:c[Ib>>2]|0;do{if(c[qb>>2]|0){if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=355;break;}c[gc>>2]=(c[Jb>>2]|0)+(c[Db>>2]|0);Zh=Uj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0<(c[Kb>>2]|0)>>>0)break;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);}else dj=355;}while(0);if((dj|0)==355){dj=0;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);Zh=Tj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;}if((c[fc>>2]|0)>>>0>(c[Vb>>2]|0)>>>0){if((c[fc>>2]|0)>>>0>((c[Rb>>2]|0)-(c[Db>>2]|0)|0)>>>0)c[Rb>>2]=(c[Db>>2]|0)+(c[fc>>2]|0);c[Vb>>2]=c[fc>>2];c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[yb>>2]|0)-(c[Db>>2]|0)+2;c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[fc>>2];c[Tb>>2]=(c[Tb>>2]|0)+1;if((c[fc>>2]|0)>>>0>4096)break;if(((c[ob>>2]|0)+(c[fc>>2]|0)|0)==(c[pb>>2]|0))break;}Zh=c[Db>>2]|0;if((d[(c[gc>>2]|0)+(c[fc>>2]|0)>>0]|0|0)<(d[(c[ob>>2]|0)+(c[fc>>2]|0)>>0]|0|0)){c[c[Pb>>2]>>2]=Zh;c[Hb>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=365;break;}c[Pb>>2]=(c[ec>>2]|0)+4;c[Db>>2]=c[(c[ec>>2]|0)+4>>2];}else{c[c[Qb>>2]>>2]=Zh;c[Ib>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=368;break;}c[Qb>>2]=c[ec>>2];c[Db>>2]=c[c[ec>>2]>>2];}}if((dj|0)==365){dj=0;c[Pb>>2]=Sb;}else if((dj|0)==368){dj=0;c[Qb>>2]=Sb;}c[c[Qb>>2]>>2]=0;c[c[Pb>>2]>>2]=0;c[(c[mb>>2]|0)+24>>2]=(c[Rb>>2]|0)-8;c[lb>>2]=c[Tb>>2];}}while(0);c[md>>2]=c[lb>>2];break d;}}}}while(0);c[Bi>>2]=c[md>>2];if(c[Bi>>2]|0){c[Di>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)+4>>2];if(((c[Di>>2]|0)>>>0>(c[$h>>2]|0)>>>0?1:((c[ei>>2]|0)+(c[Di>>2]|0)|0)>>>0>=4096)|0){dj=481;break b;}c[Ci>>2]=0;while(1){if((c[Ci>>2]|0)>>>0>=(c[Bi>>2]|0)>>>0)break c;c[Ei>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)>>2];pm(Fi,(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0,c[Ei>>2]|0,c[xi>>2]|0);c[Gi>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)+4>>2];if((c[Ci>>2]|0)>>>0>0)Dj=(c[(c[ci>>2]|0)+((c[Ci>>2]|0)-1<<3)+4>>2]|0)+1|0;else Dj=c[ai>>2]|0;c[Hi>>2]=Dj;c[Ii>>2]=c[Gi>>2];i:while(1){if((c[Ii>>2]|0)>>>0<(c[Hi>>2]|0)>>>0)break;c[Ji>>2]=(c[ei>>2]|0)+(c[Ii>>2]|0);Zh=c[Ai>>2]|0;Zi=c[Ii>>2]|0;Ph=c[Th>>2]|0;Qh=c[Rh>>2]|0;c[k>>2]=c[Ei>>2];c[m>>2]=Zi;c[n>>2]=Ph;c[o>>2]=Qh;c[q>>2]=qm((c[k>>2]|0)+1|0)|0;c[r>>2]=(c[m>>2]|0)-3;if(c[(c[n>>2]|0)+56>>2]|0){Qh=(qm((c[r>>2]|0)+1|0)|0)+16|0;c[j>>2]=Qh+(c[q>>2]|0);}else{Qh=(c[q>>2]|0)+(c[(c[n>>2]|0)+52>>2]|0)|0;c[p>>2]=Qh-(qm((c[(c[(c[n>>2]|0)+12>>2]|0)+(c[q>>2]<<2)>>2]|0)+1|0)|0);if((c[o>>2]|0)<2&(c[q>>2]|0)>>>0>=20)c[p>>2]=(c[p>>2]|0)+((c[q>>2]|0)-19<<1);c[s>>2]=rm(c[r>>2]|0)|0;Qh=(c[5840+(c[s>>2]<<2)>>2]|0)+(c[(c[n>>2]|0)+48>>2]|0)|0;Ph=Qh-(qm((c[(c[(c[n>>2]|0)+8>>2]|0)+(c[s>>2]<<2)>>2]|0)+1|0)|0)|0;c[p>>2]=(c[p>>2]|0)+Ph;c[j>>2]=c[p>>2];}c[Ki>>2]=Zh+(c[j>>2]|0);do{if((c[Ji>>2]|0)>>>0<=(c[fi>>2]|0)>>>0){if((c[Ki>>2]|0)<(c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]|0)){dj=496;break;}if(!(c[Rh>>2]|0))break i;}else dj=496;}while(0);if((dj|0)==496){dj=0;while(1){if((c[fi>>2]|0)>>>0>=(c[Ji>>2]|0)>>>0)break;c[(c[bi>>2]|0)+(((c[fi>>2]|0)+1|0)*28|0)>>2]=1073741824;c[fi>>2]=(c[fi>>2]|0)+1;}c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+8>>2]=c[Ii>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+4>>2]=c[Ei>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+12>>2]=c[yi>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]=c[Ki>>2];Zh=(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+16|0;c[Zh>>2]=c[Fi>>2];c[Zh+4>>2]=c[Fi+4>>2];c[Zh+8>>2]=c[Fi+8>>2];}c[Ii>>2]=(c[Ii>>2]|0)+-1;}c[Ci>>2]=(c[Ci>>2]|0)+1;}}}}while(0);c[ei>>2]=(c[ei>>2]|0)+1;}if((dj|0)==481){dj=0;c[gi>>2]=c[Di>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)>>2];c[fi>>2]=(c[ei>>2]|0)+1;break;}else if((dj|0)==504){dj=0;c[gi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+8>>2];c[hi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+4>>2];c[ei>>2]=(c[fi>>2]|0)-(c[gi>>2]|0);break;}}else{c[gi>>2]=c[mi>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)>>2];c[ei>>2]=0;c[fi>>2]=1;}}while(0);c[Li>>2]=c[gi>>2];c[Mi>>2]=c[hi>>2];c[Ni>>2]=c[ei>>2];while(1){c[Oi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2];c[Pi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2]=c[Li>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2]=c[Mi>>2];c[Li>>2]=c[Oi>>2];c[Mi>>2]=c[Pi>>2];if((c[Oi>>2]|0)>>>0>(c[Ni>>2]|0)>>>0)break;c[Ni>>2]=(c[Ni>>2]|0)-(c[Oi>>2]|0);}c[Qi>>2]=0;while(1){if((c[Qi>>2]|0)>>>0>=(c[fi>>2]|0)>>>0)break;c[Ri>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[Si>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+8>>2];c[Ti>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+4>>2];if((c[Si>>2]|0)==1){c[Vh>>2]=(c[Vh>>2]|0)+1;c[Qi>>2]=(c[Qi>>2]|0)+1;continue;}c[Qi>>2]=(c[Qi>>2]|0)+(c[Si>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+(c[Si>>2]|0);if((c[Ti>>2]|0)>>>0<3){c[Ui>>2]=(c[Ti>>2]|0)+((c[Ri>>2]|0)==0&1);if(c[Ui>>2]|0){Zh=c[Nh>>2]|0;if((c[Ui>>2]|0)==3)Ej=(c[Zh>>2]|0)-1|0;else Ej=c[Zh+(c[Ui>>2]<<2)>>2]|0;c[Vi>>2]=Ej;if((c[Ui>>2]|0)>>>0>=2)c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=c[Vi>>2];}}else{c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=(c[Ti>>2]|0)-2;}vm(c[Th>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,c[Si>>2]|0);wm(c[Mh>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,(c[Si>>2]|0)-3|0);c[Wh>>2]=c[Vh>>2];}xm(c[Th>>2]|0);}l=i;return(c[Xh>>2]|0)-(c[Wh>>2]|0)|0;}function cm(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,dg=0,eg=0,fg=0,gg=0,hg=0,ig=0,jg=0,kg=0,lg=0,mg=0,ng=0,og=0,pg=0,qg=0,rg=0,sg=0,tg=0,ug=0,vg=0,wg=0,xg=0,yg=0,zg=0,Ag=0,Bg=0,Cg=0,Dg=0,Eg=0,Fg=0,Gg=0,Hg=0,Ig=0,Jg=0,Kg=0,Lg=0,Mg=0,Ng=0,Og=0,Pg=0,Qg=0,Rg=0,Sg=0,Tg=0,Ug=0,Vg=0,Wg=0,Xg=0,Yg=0,Zg=0,_g=0,$g=0,ah=0,bh=0,ch=0,dh=0,eh=0,fh=0,gh=0,hh=0,ih=0,jh=0,kh=0,lh=0,mh=0,nh=0,oh=0,ph=0,qh=0,rh=0,sh=0,th=0,uh=0,vh=0,wh=0,xh=0,yh=0,zh=0,Ah=0,Bh=0,Ch=0,Dh=0,Eh=0,Fh=0,Gh=0,Hh=0,Ih=0,Jh=0,Kh=0,Lh=0,Mh=0,Nh=0,Oh=0,Ph=0,Qh=0,Rh=0,Sh=0,Th=0,Uh=0,Vh=0,Wh=0,Xh=0,Yh=0,Zh=0,_h=0,$h=0,ai=0,bi=0,ci=0,di=0,ei=0,fi=0,gi=0,hi=0,ii=0,ji=0,ki=0,li=0,mi=0,ni=0,oi=0,pi=0,qi=0,ri=0,si=0,ti=0,ui=0,vi=0,wi=0,xi=0,yi=0,zi=0,Ai=0,Bi=0,Ci=0,Di=0,Ei=0,Fi=0,Gi=0,Hi=0,Ii=0,Ji=0,Ki=0,Li=0,Mi=0,Ni=0,Oi=0,Pi=0,Qi=0,Ri=0,Si=0,Ti=0,Ui=0,Vi=0,Wi=0,Xi=0,Yi=0,Zi=0,_i=0,$i=0,aj=0,bj=0,cj=0,dj=0,ej=0,fj=0,gj=0,hj=0,ij=0,jj=0,kj=0,lj=0,mj=0,nj=0,oj=0,pj=0,qj=0,rj=0,sj=0,tj=0,uj=0,vj=0,wj=0,xj=0,yj=0,zj=0,Aj=0,Bj=0,Cj=0,Dj=0,Ej=0;i=l;l=l+2144|0;j=i+2136|0;k=i+2132|0;m=i+2128|0;n=i+2124|0;o=i+2120|0;p=i+2116|0;q=i+2112|0;r=i+2108|0;s=i+2104|0;t=i+2100|0;u=i+2096|0;v=i+2092|0;w=i+2088|0;x=i+2084|0;y=i+2080|0;z=i+2076|0;A=i+2072|0;B=i+2068|0;C=i+2064|0;D=i+2060|0;E=i+2056|0;F=i+2052|0;G=i+2048|0;H=i+2044|0;I=i+2040|0;J=i+2036|0;K=i+2032|0;L=i+2028|0;M=i+2024|0;N=i+2020|0;O=i+2016|0;P=i+2012|0;Q=i+2008|0;R=i+2004|0;S=i+2e3|0;T=i+1996|0;U=i+1992|0;V=i+1988|0;W=i+1984|0;X=i+1980|0;Y=i+1976|0;Z=i+1972|0;_=i+1968|0;$=i+1964|0;aa=i+1960|0;ba=i+1956|0;ca=i+1952|0;da=i+1948|0;ea=i+1944|0;fa=i+1940|0;ga=i+1936|0;ha=i+1932|0;ia=i+1928|0;ja=i+1924|0;ka=i+1920|0;la=i+1916|0;ma=i+1912|0;na=i+1908|0;oa=i+1904|0;pa=i+1900|0;qa=i+1896|0;ra=i+1892|0;sa=i+1888|0;ta=i+1884|0;ua=i+1880|0;va=i+1876|0;wa=i+1872|0;xa=i+1868|0;ya=i+1864|0;za=i+1860|0;Aa=i+1856|0;Ba=i+1852|0;Ca=i+1848|0;Da=i+1844|0;Ea=i+1840|0;Fa=i+1836|0;Ga=i+1832|0;Ha=i+1828|0;Ia=i+1824|0;Ja=i+1820|0;Ka=i+1816|0;La=i+1812|0;Ma=i+1808|0;Na=i+1804|0;Oa=i+1800|0;Pa=i+1796|0;Qa=i+1792|0;Ra=i+1788|0;Sa=i+1784|0;Ta=i+1780|0;Ua=i+1776|0;Va=i+1772|0;Wa=i+1768|0;Xa=i+1764|0;Ya=i+1760|0;Za=i+1756|0;_a=i+1752|0;$a=i+1748|0;ab=i+1744|0;bb=i+1740|0;cb=i+1736|0;db=i+1732|0;eb=i+1728|0;fb=i+1724|0;gb=i+1720|0;hb=i+1716|0;ib=i+1712|0;jb=i+1708|0;kb=i+1704|0;lb=i+1700|0;mb=i+1696|0;nb=i+1692|0;ob=i+1688|0;pb=i+1684|0;qb=i+1680|0;rb=i+1676|0;sb=i+1672|0;tb=i+1668|0;ub=i+1664|0;vb=i+1660|0;wb=i+1656|0;xb=i+1652|0;yb=i+1648|0;zb=i+1644|0;Ab=i+1640|0;Bb=i+1636|0;Cb=i+1632|0;Db=i+1628|0;Eb=i+1624|0;Fb=i+1620|0;Gb=i+1616|0;Hb=i+1612|0;Ib=i+1608|0;Jb=i+1604|0;Kb=i+1600|0;Lb=i+1596|0;Mb=i+1592|0;Nb=i+1588|0;Ob=i+1584|0;Pb=i+1580|0;Qb=i+1576|0;Rb=i+1572|0;Sb=i+1568|0;Tb=i+1564|0;Ub=i+1560|0;Vb=i+1556|0;Wb=i+1552|0;Xb=i+1548|0;Yb=i+1544|0;Zb=i+1540|0;_b=i+1536|0;$b=i+1532|0;ac=i+1528|0;bc=i+1524|0;cc=i+1520|0;dc=i+1516|0;ec=i+1512|0;fc=i+1508|0;gc=i+1504|0;hc=i+1500|0;ic=i+1496|0;jc=i+1492|0;kc=i+1488|0;lc=i+1484|0;mc=i+1480|0;nc=i+1476|0;oc=i+1472|0;pc=i+1468|0;qc=i+1464|0;rc=i+1460|0;sc=i+1456|0;tc=i+1452|0;uc=i+1448|0;vc=i+1444|0;wc=i+1440|0;xc=i+1436|0;yc=i+1432|0;zc=i+1428|0;Ac=i+1424|0;Bc=i+1420|0;Cc=i+1416|0;Dc=i+1412|0;Ec=i+1408|0;Fc=i+1404|0;Gc=i+1400|0;Hc=i+1396|0;Ic=i+1392|0;Jc=i+1388|0;Kc=i+1384|0;Lc=i+1380|0;Mc=i+1376|0;Nc=i+1372|0;Oc=i+1368|0;Pc=i+1364|0;Qc=i+1360|0;Rc=i+1356|0;Sc=i+1352|0;Tc=i+1348|0;Uc=i+1344|0;Vc=i+1340|0;Wc=i+1336|0;Xc=i+1332|0;Yc=i+1328|0;Zc=i+1324|0;_c=i+1320|0;$c=i+1316|0;ad=i+1312|0;bd=i+1308|0;cd=i+1304|0;dd=i+1300|0;ed=i+1296|0;fd=i+1292|0;gd=i+1288|0;hd=i+1284|0;id=i+1280|0;jd=i+1276|0;kd=i+1272|0;ld=i+1268|0;md=i+1264|0;nd=i+1260|0;od=i+1256|0;pd=i+1252|0;qd=i+1248|0;rd=i+1244|0;sd=i+1240|0;td=i+1236|0;ud=i+1232|0;vd=i+1228|0;wd=i+1224|0;xd=i+1220|0;yd=i+1216|0;zd=i+1212|0;Ad=i+1208|0;Bd=i+1204|0;Cd=i+1200|0;Dd=i+1196|0;Ed=i+1192|0;Fd=i+1188|0;Gd=i+1184|0;Hd=i+1180|0;Id=i+1176|0;Jd=i+1172|0;Kd=i+1168|0;Ld=i+1164|0;Md=i+1160|0;Nd=i+1156|0;Od=i+1152|0;Pd=i+1148|0;Qd=i+1144|0;Rd=i+1140|0;Sd=i+1136|0;Td=i+1132|0;Ud=i+1128|0;Vd=i+1124|0;Wd=i+1120|0;Xd=i+1116|0;Yd=i+1112|0;Zd=i+1108|0;_d=i+1104|0;$d=i+1100|0;ae=i+1096|0;be=i+1092|0;ce=i+1088|0;de=i+1084|0;ee=i+1080|0;fe=i+1076|0;ge=i+1072|0;he=i+1068|0;ie=i+1064|0;je=i+1060|0;ke=i+1056|0;le=i+1052|0;me=i+1048|0;ne=i+1044|0;oe=i+1040|0;pe=i+1036|0;qe=i+1032|0;re=i+1028|0;se=i+1024|0;te=i+1020|0;ue=i+1016|0;ve=i+1012|0;we=i+1008|0;xe=i+1004|0;ye=i+1e3|0;ze=i+996|0;Ae=i+992|0;Be=i+988|0;Ce=i+984|0;De=i+980|0;Ee=i+976|0;Fe=i+972|0;Ge=i+968|0;He=i+964|0;Ie=i+960|0;Je=i+956|0;Ke=i+952|0;Le=i+948|0;Me=i+944|0;Ne=i+940|0;Oe=i+936|0;Pe=i+932|0;Qe=i+928|0;Re=i+924|0;Se=i+920|0;Te=i+916|0;Ue=i+912|0;Ve=i+908|0;We=i+904|0;Xe=i+900|0;Ye=i+896|0;Ze=i+892|0;_e=i+888|0;$e=i+884|0;af=i+880|0;bf=i+876|0;cf=i+872|0;df=i+868|0;ef=i+864|0;ff=i+860|0;gf=i+856|0;hf=i+852|0;jf=i+848|0;kf=i+844|0;lf=i+840|0;mf=i+836|0;nf=i+832|0;of=i+828|0;pf=i+824|0;qf=i+820|0;rf=i+816|0;sf=i+812|0;tf=i+808|0;uf=i+804|0;vf=i+800|0;wf=i+796|0;xf=i+792|0;yf=i+788|0;zf=i+784|0;Af=i+780|0;Bf=i+776|0;Cf=i+772|0;Df=i+768|0;Ef=i+764|0;Ff=i+760|0;Gf=i+756|0;Hf=i+752|0;If=i+748|0;Jf=i+744|0;Kf=i+740|0;Lf=i+736|0;Mf=i+732|0;Nf=i+728|0;Of=i+724|0;Pf=i+720|0;Qf=i+716|0;Rf=i+712|0;Sf=i+708|0;Tf=i+704|0;Uf=i+700|0;Vf=i+696|0;Wf=i+692|0;Xf=i+688|0;Yf=i+684|0;Zf=i+680|0;_f=i+676|0;$f=i+672|0;ag=i+668|0;bg=i+664|0;cg=i+660|0;dg=i+656|0;eg=i+652|0;fg=i+648|0;gg=i+644|0;hg=i+640|0;ig=i+636|0;jg=i+632|0;kg=i+628|0;lg=i+624|0;mg=i+620|0;ng=i+616|0;og=i+612|0;pg=i+608|0;qg=i+604|0;rg=i+600|0;sg=i+596|0;tg=i+592|0;ug=i+588|0;vg=i+584|0;wg=i+580|0;xg=i+576|0;yg=i+572|0;zg=i+568|0;Ag=i+564|0;Bg=i+560|0;Cg=i+556|0;Dg=i+552|0;Eg=i+548|0;Fg=i+544|0;Gg=i+540|0;Hg=i+536|0;Ig=i+532|0;Jg=i+528|0;Kg=i+524|0;Lg=i+520|0;Mg=i+516|0;Ng=i+512|0;Og=i+508|0;Pg=i+504|0;Qg=i+500|0;Rg=i+496|0;Sg=i+492|0;Tg=i+488|0;Ug=i+484|0;Vg=i+480|0;Wg=i+476|0;Xg=i+472|0;Yg=i+468|0;Zg=i+464|0;_g=i+460|0;$g=i+456|0;ah=i+452|0;bh=i+448|0;ch=i+444|0;dh=i+440|0;eh=i+436|0;fh=i+432|0;gh=i+428|0;hh=i+424|0;ih=i+420|0;jh=i+416|0;kh=i+412|0;lh=i+408|0;mh=i+404|0;nh=i+400|0;oh=i+396|0;ph=i+392|0;qh=i+388|0;rh=i+384|0;sh=i+380|0;th=i+376|0;uh=i+372|0;vh=i+368|0;wh=i+364|0;xh=i+360|0;yh=i+356|0;zh=i+352|0;Ah=i+348|0;Bh=i+344|0;Ch=i+340|0;Dh=i+336|0;Eh=i+332|0;Fh=i+328|0;Gh=i+324|0;Hh=i+320|0;Ih=i+316|0;Jh=i+312|0;Kh=i+308|0;Lh=i+304|0;Mh=i+300|0;Nh=i+296|0;Oh=i+292|0;Ph=i+288|0;Qh=i+284|0;Rh=i+280|0;Sh=i+276|0;Th=i+272|0;Uh=i+268|0;Vh=i+264|0;Wh=i+260|0;Xh=i+256|0;Yh=i+252|0;Zh=i+248|0;_h=i+244|0;$h=i+240|0;ai=i+236|0;bi=i+232|0;ci=i+228|0;di=i+216|0;ei=i+212|0;fi=i+208|0;gi=i+204|0;hi=i+200|0;ii=i+196|0;ji=i+192|0;ki=i+188|0;li=i+184|0;mi=i+180|0;ni=i+176|0;oi=i+172|0;pi=i+168|0;qi=i+164|0;ri=i+160|0;si=i+148|0;ti=i+144|0;ui=i+140|0;vi=i+136|0;wi=i+132|0;xi=i+128|0;yi=i+124|0;zi=i+120|0;Ai=i+116|0;Bi=i+112|0;Ci=i+108|0;Di=i+104|0;Ei=i+100|0;Fi=i+88|0;Gi=i+84|0;Hi=i+80|0;Ii=i+76|0;Ji=i+72|0;Ki=i+68|0;Li=i+64|0;Mi=i+60|0;Ni=i+56|0;Oi=i+52|0;Pi=i+48|0;Qi=i+44|0;Ri=i+40|0;Si=i+36|0;Ti=i+32|0;Ui=i+28|0;Vi=i+24|0;Wi=i+20|0;Xi=i+16|0;Yi=i+12|0;Zi=i+8|0;_i=i+4|0;$i=i;c[Wi>>2]=a;c[Xi>>2]=b;c[Yi>>2]=e;c[Zi>>2]=f;c[_i>>2]=g;c[$i>>2]=h;h=c[Xi>>2]|0;Xi=c[Yi>>2]|0;Yi=c[Zi>>2]|0;Zi=c[_i>>2]|0;_i=c[$i>>2]|0;c[Lh>>2]=c[Wi>>2];c[Mh>>2]=h;c[Nh>>2]=Xi;c[Oh>>2]=Yi;c[Ph>>2]=Zi;c[Qh>>2]=_i;c[Rh>>2]=2;c[Sh>>2]=0;c[Th>>2]=(c[Lh>>2]|0)+48;c[Uh>>2]=c[Ph>>2];c[Vh>>2]=c[Uh>>2];c[Wh>>2]=c[Uh>>2];c[Xh>>2]=(c[Uh>>2]|0)+(c[Qh>>2]|0);c[Yh>>2]=(c[Xh>>2]|0)+-8;c[Zh>>2]=c[(c[Lh>>2]|0)+4>>2];c[_h>>2]=(c[Zh>>2]|0)+(c[(c[Lh>>2]|0)+12>>2]|0);if((c[(c[Oh>>2]|0)+20>>2]|0)>>>0<4095)aj=c[(c[Oh>>2]|0)+20>>2]|0;else aj=4095;c[$h>>2]=aj;c[ai>>2]=(c[(c[Oh>>2]|0)+16>>2]|0)==3?3:4;c[bi>>2]=c[(c[Th>>2]|0)+20>>2];c[ci>>2]=c[(c[Th>>2]|0)+16>>2];c[(c[Lh>>2]|0)+28>>2]=c[(c[Lh>>2]|0)+24>>2];lm(c[Th>>2]|0,c[Ph>>2]|0,c[Qh>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+((c[Vh>>2]|0)==(c[_h>>2]|0)&1);c[di>>2]=0;c[di+4>>2]=0;c[di+8>>2]=0;while(1){if((c[Vh>>2]|0)>>>0>=(c[Yh>>2]|0)>>>0)break;c[fi>>2]=0;c[ii>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[ji>>2]=((c[ii>>2]|0)!=0^1)&1;_h=c[Oh>>2]|0;Qh=c[Vh>>2]|0;Ph=c[Xh>>2]|0;aj=c[Sh>>2]|0;Zh=c[Nh>>2]|0;Uh=c[ji>>2]|0;_i=c[ci>>2]|0;Zi=c[ai>>2]|0;c[Bh>>2]=c[Lh>>2];c[Ch>>2]=_h;c[Dh>>2]=Qh;c[Eh>>2]=Ph;c[Fh>>2]=aj;c[Gh>>2]=Zh;c[Hh>>2]=Uh;c[Ih>>2]=_i;c[Jh>>2]=Zi;c[Kh>>2]=c[(c[Ch>>2]|0)+16>>2];a:do{if((c[Dh>>2]|0)>>>0<((c[(c[Bh>>2]|0)+4>>2]|0)+(c[(c[Bh>>2]|0)+24>>2]|0)|0)>>>0)c[Ah>>2]=0;else{Zi=c[Ch>>2]|0;_i=c[Dh>>2]|0;Uh=c[Eh>>2]|0;Zh=c[Kh>>2]|0;aj=c[Fh>>2]|0;c[rh>>2]=c[Bh>>2];c[sh>>2]=Zi;c[th>>2]=_i;c[uh>>2]=Uh;c[vh>>2]=Zh;c[wh>>2]=aj;c[xh>>2]=c[(c[rh>>2]|0)+4>>2];c[yh>>2]=(c[th>>2]|0)-(c[xh>>2]|0);c[zh>>2]=c[(c[rh>>2]|0)+24>>2];while(1){if((c[zh>>2]|0)>>>0>=(c[yh>>2]|0)>>>0)break;aj=Rj(c[rh>>2]|0,c[sh>>2]|0,(c[xh>>2]|0)+(c[zh>>2]|0)|0,c[uh>>2]|0,c[vh>>2]|0,c[wh>>2]|0)|0;c[zh>>2]=(c[zh>>2]|0)+aj;}c[(c[rh>>2]|0)+24>>2]=c[yh>>2];switch(c[Kh>>2]|0){case 3:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[wg>>2]=c[Bh>>2];c[xg>>2]=aj;c[yg>>2]=Zh;c[zg>>2]=Uh;c[Ag>>2]=_i;c[Bg>>2]=Zi;c[Cg>>2]=Ph;c[Dg>>2]=Qh;c[Eg>>2]=_h;c[Fg>>2]=3;if((c[(c[xg>>2]|0)+20>>2]|0)>>>0<4095)bj=c[(c[xg>>2]|0)+20>>2]|0;else bj=4095;c[Gg>>2]=bj;c[Hg>>2]=c[(c[wg>>2]|0)+4>>2];c[Ig>>2]=(c[yg>>2]|0)-(c[Hg>>2]|0);c[Jg>>2]=c[(c[xg>>2]|0)+8>>2];c[Kg>>2]=(c[Fg>>2]|0)==3?3:4;c[Lg>>2]=c[(c[wg>>2]|0)+36>>2];c[Mg>>2]=Sj(c[yg>>2]|0,c[Jg>>2]|0,c[Fg>>2]|0)|0;c[Ng>>2]=c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2];c[Og>>2]=c[(c[wg>>2]|0)+44>>2];c[Pg>>2]=(c[(c[xg>>2]|0)+4>>2]|0)-1;c[Qg>>2]=(1<<c[Pg>>2])-1;c[Rg>>2]=0;c[Sg>>2]=0;c[Tg>>2]=c[(c[wg>>2]|0)+8>>2];c[Ug>>2]=c[(c[wg>>2]|0)+12>>2];c[Vg>>2]=(c[Tg>>2]|0)+(c[Ug>>2]|0);c[Wg>>2]=(c[Hg>>2]|0)+(c[Ug>>2]|0);if((c[Qg>>2]|0)>>>0>=(c[Ig>>2]|0)>>>0)cj=0;else cj=(c[Ig>>2]|0)-(c[Qg>>2]|0)|0;c[Xg>>2]=cj;c[Yg>>2]=c[(c[wg>>2]|0)+16>>2];c[Zg>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2);c[_g>>2]=(c[Og>>2]|0)+((c[Ig>>2]&c[Qg>>2])<<1<<2)+4;c[$g>>2]=(c[Ig>>2]|0)+8+1;c[bh>>2]=0;c[ch>>2]=1<<c[(c[xg>>2]|0)+12>>2];c[dh>>2]=(c[Eg>>2]|0)-1;c[eh>>2]=3+(c[Cg>>2]|0);c[fh>>2]=c[Cg>>2];while(1){if((c[fh>>2]|0)>>>0>=(c[eh>>2]|0)>>>0){dj=31;break;}_h=c[Bg>>2]|0;if((c[fh>>2]|0)==3)ej=(c[_h>>2]|0)-1|0;else ej=c[_h+(c[fh>>2]<<2)>>2]|0;c[gh>>2]=ej;c[hh>>2]=(c[Ig>>2]|0)-(c[gh>>2]|0);c[ih>>2]=0;if(((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Ug>>2]|0)|0)>>>0){_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0;if((_h|0)==(mm((c[yg>>2]|0)+(0-(c[gh>>2]|0))|0,c[Kg>>2]|0)|0)){_h=Tj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[yg>>2]|0)+(c[Kg>>2]|0)+(0-(c[gh>>2]|0))|0,c[zg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}else{c[jh>>2]=(c[Tg>>2]|0)+(c[hh>>2]|0);if((c[Ag>>2]|0?(((c[Ug>>2]|0)-1-(c[hh>>2]|0)|0)>>>0>=3?((c[gh>>2]|0)-1|0)>>>0<((c[Ig>>2]|0)-(c[Yg>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[yg>>2]|0,c[Kg>>2]|0)|0,(_h|0)==(mm(c[jh>>2]|0,c[Kg>>2]|0)|0)):0){_h=Uj((c[yg>>2]|0)+(c[Kg>>2]|0)|0,(c[jh>>2]|0)+(c[Kg>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ih>>2]=_h+(c[Kg>>2]|0);}}if((c[ih>>2]|0)>>>0>(c[dh>>2]|0)>>>0?(c[dh>>2]=c[ih>>2],c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[fh>>2]|0)-(c[Cg>>2]|0),c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ih>>2],c[bh>>2]=(c[bh>>2]|0)+1,((c[ih>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[ih>>2]|0)|0)==(c[zg>>2]|0))|0):0){dj=29;break;}c[fh>>2]=(c[fh>>2]|0)+1;}do{if((dj|0)==29){dj=0;c[vg>>2]=c[bh>>2];}else if((dj|0)==31){dj=0;if(((c[Fg>>2]|0)==3?(c[dh>>2]|0)>>>0<(c[Fg>>2]|0)>>>0:0)?(c[kh>>2]=nm(c[wg>>2]|0,c[yg>>2]|0)|0,((c[kh>>2]|0)>>>0>(c[Yg>>2]|0)>>>0?((c[Ig>>2]|0)-(c[kh>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ag>>2]|0?(c[kh>>2]|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[nh>>2]=(c[Tg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Uj(c[yg>>2]|0,c[nh>>2]|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;}else{c[mh>>2]=(c[Hg>>2]|0)+(c[kh>>2]|0);c[lh>>2]=Tj(c[yg>>2]|0,c[mh>>2]|0,c[zg>>2]|0)|0;}if((c[lh>>2]|0)>>>0>=(c[Fg>>2]|0)>>>0?(c[dh>>2]=c[lh>>2],c[c[Dg>>2]>>2]=(c[Ig>>2]|0)-(c[kh>>2]|0)+2,c[(c[Dg>>2]|0)+4>>2]=c[lh>>2],c[bh>>2]=1,((c[lh>>2]|0)>>>0>(c[Gg>>2]|0)>>>0?1:((c[yg>>2]|0)+(c[lh>>2]|0)|0)==(c[zg>>2]|0))|0):0){c[(c[wg>>2]|0)+24>>2]=(c[Ig>>2]|0)+1;c[vg>>2]=1;break;}}c[(c[Lg>>2]|0)+(c[Mg>>2]<<2)>>2]=c[Ig>>2];while(1){_h=c[ch>>2]|0;c[ch>>2]=_h+-1;if(!_h)break;if((c[Ng>>2]|0)>>>0<=(c[Yg>>2]|0)>>>0)break;c[oh>>2]=(c[Og>>2]|0)+((c[Ng>>2]&c[Qg>>2])<<1<<2);c[ph>>2]=(c[Rg>>2]|0)>>>0<(c[Sg>>2]|0)>>>0?c[Rg>>2]|0:c[Sg>>2]|0;if(c[Ag>>2]|0?((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0<(c[Ug>>2]|0)>>>0:0){c[qh>>2]=(c[Tg>>2]|0)+(c[Ng>>2]|0);_h=Uj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0,c[Vg>>2]|0,c[Wg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;if(((c[Ng>>2]|0)+(c[ph>>2]|0)|0)>>>0>=(c[Ug>>2]|0)>>>0)c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);}else{c[qh>>2]=(c[Hg>>2]|0)+(c[Ng>>2]|0);_h=Tj((c[yg>>2]|0)+(c[ph>>2]|0)|0,(c[qh>>2]|0)+(c[ph>>2]|0)|0,c[zg>>2]|0)|0;c[ph>>2]=(c[ph>>2]|0)+_h;}if((c[ph>>2]|0)>>>0>(c[dh>>2]|0)>>>0){if((c[ph>>2]|0)>>>0>((c[$g>>2]|0)-(c[Ng>>2]|0)|0)>>>0)c[$g>>2]=(c[Ng>>2]|0)+(c[ph>>2]|0);c[dh>>2]=c[ph>>2];c[(c[Dg>>2]|0)+(c[bh>>2]<<3)>>2]=(c[Ig>>2]|0)-(c[Ng>>2]|0)+2;c[(c[Dg>>2]|0)+(c[bh>>2]<<3)+4>>2]=c[ph>>2];c[bh>>2]=(c[bh>>2]|0)+1;if((c[ph>>2]|0)>>>0>4096)break;if(((c[yg>>2]|0)+(c[ph>>2]|0)|0)==(c[zg>>2]|0))break;}_h=c[Ng>>2]|0;if((d[(c[qh>>2]|0)+(c[ph>>2]|0)>>0]|0|0)<(d[(c[yg>>2]|0)+(c[ph>>2]|0)>>0]|0|0)){c[c[Zg>>2]>>2]=_h;c[Rg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=56;break;}c[Zg>>2]=(c[oh>>2]|0)+4;c[Ng>>2]=c[(c[oh>>2]|0)+4>>2];}else{c[c[_g>>2]>>2]=_h;c[Sg>>2]=c[ph>>2];if((c[Ng>>2]|0)>>>0<=(c[Xg>>2]|0)>>>0){dj=59;break;}c[_g>>2]=c[oh>>2];c[Ng>>2]=c[c[oh>>2]>>2];}}if((dj|0)==56){dj=0;c[Zg>>2]=ah;}else if((dj|0)==59){dj=0;c[_g>>2]=ah;}c[c[_g>>2]>>2]=0;c[c[Zg>>2]>>2]=0;c[(c[wg>>2]|0)+24>>2]=(c[$g>>2]|0)-8;c[vg>>2]=c[bh>>2];}}while(0);c[Ah>>2]=c[vg>>2];break a;break;}case 7:case 6:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Hd>>2]=c[Bh>>2];c[Id>>2]=_h;c[Jd>>2]=Qh;c[Kd>>2]=Ph;c[Ld>>2]=Zi;c[Md>>2]=_i;c[Nd>>2]=Uh;c[Od>>2]=Zh;c[Pd>>2]=aj;c[Qd>>2]=6;if((c[(c[Id>>2]|0)+20>>2]|0)>>>0<4095)fj=c[(c[Id>>2]|0)+20>>2]|0;else fj=4095;c[Rd>>2]=fj;c[Sd>>2]=c[(c[Hd>>2]|0)+4>>2];c[Td>>2]=(c[Jd>>2]|0)-(c[Sd>>2]|0);c[Ud>>2]=c[(c[Id>>2]|0)+8>>2];c[Vd>>2]=(c[Qd>>2]|0)==3?3:4;c[Wd>>2]=c[(c[Hd>>2]|0)+36>>2];c[Xd>>2]=Sj(c[Jd>>2]|0,c[Ud>>2]|0,c[Qd>>2]|0)|0;c[Yd>>2]=c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2];c[Zd>>2]=c[(c[Hd>>2]|0)+44>>2];c[_d>>2]=(c[(c[Id>>2]|0)+4>>2]|0)-1;c[$d>>2]=(1<<c[_d>>2])-1;c[ae>>2]=0;c[be>>2]=0;c[ce>>2]=c[(c[Hd>>2]|0)+8>>2];c[de>>2]=c[(c[Hd>>2]|0)+12>>2];c[ee>>2]=(c[ce>>2]|0)+(c[de>>2]|0);c[fe>>2]=(c[Sd>>2]|0)+(c[de>>2]|0);if((c[$d>>2]|0)>>>0>=(c[Td>>2]|0)>>>0)gj=0;else gj=(c[Td>>2]|0)-(c[$d>>2]|0)|0;c[ge>>2]=gj;c[he>>2]=c[(c[Hd>>2]|0)+16>>2];c[ie>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2);c[je>>2]=(c[Zd>>2]|0)+((c[Td>>2]&c[$d>>2])<<1<<2)+4;c[ke>>2]=(c[Td>>2]|0)+8+1;c[me>>2]=0;c[ne>>2]=1<<c[(c[Id>>2]|0)+12>>2];c[oe>>2]=(c[Pd>>2]|0)-1;c[pe>>2]=3+(c[Nd>>2]|0);c[qe>>2]=c[Nd>>2];while(1){if((c[qe>>2]|0)>>>0>=(c[pe>>2]|0)>>>0){dj=190;break;}aj=c[Md>>2]|0;if((c[qe>>2]|0)==3)hj=(c[aj>>2]|0)-1|0;else hj=c[aj+(c[qe>>2]<<2)>>2]|0;c[re>>2]=hj;c[se>>2]=(c[Td>>2]|0)-(c[re>>2]|0);c[te>>2]=0;if(((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[de>>2]|0)|0)>>>0){aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0;if((aj|0)==(mm((c[Jd>>2]|0)+(0-(c[re>>2]|0))|0,c[Vd>>2]|0)|0)){aj=Tj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[Jd>>2]|0)+(c[Vd>>2]|0)+(0-(c[re>>2]|0))|0,c[Kd>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}else{c[ue>>2]=(c[ce>>2]|0)+(c[se>>2]|0);if((c[Ld>>2]|0?(((c[de>>2]|0)-1-(c[se>>2]|0)|0)>>>0>=3?((c[re>>2]|0)-1|0)>>>0<((c[Td>>2]|0)-(c[he>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Jd>>2]|0,c[Vd>>2]|0)|0,(aj|0)==(mm(c[ue>>2]|0,c[Vd>>2]|0)|0)):0){aj=Uj((c[Jd>>2]|0)+(c[Vd>>2]|0)|0,(c[ue>>2]|0)+(c[Vd>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[te>>2]=aj+(c[Vd>>2]|0);}}if((c[te>>2]|0)>>>0>(c[oe>>2]|0)>>>0?(c[oe>>2]=c[te>>2],c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[qe>>2]|0)-(c[Nd>>2]|0),c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[te>>2],c[me>>2]=(c[me>>2]|0)+1,((c[te>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[te>>2]|0)|0)==(c[Kd>>2]|0))|0):0){dj=188;break;}c[qe>>2]=(c[qe>>2]|0)+1;}do{if((dj|0)==188){dj=0;c[Gd>>2]=c[me>>2];}else if((dj|0)==190){dj=0;if(((c[Qd>>2]|0)==3?(c[oe>>2]|0)>>>0<(c[Qd>>2]|0)>>>0:0)?(c[ve>>2]=nm(c[Hd>>2]|0,c[Jd>>2]|0)|0,((c[ve>>2]|0)>>>0>(c[he>>2]|0)>>>0?((c[Td>>2]|0)-(c[ve>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ld>>2]|0?(c[ve>>2]|0)>>>0<(c[de>>2]|0)>>>0:0){c[ye>>2]=(c[ce>>2]|0)+(c[ve>>2]|0);c[we>>2]=Uj(c[Jd>>2]|0,c[ye>>2]|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;}else{c[xe>>2]=(c[Sd>>2]|0)+(c[ve>>2]|0);c[we>>2]=Tj(c[Jd>>2]|0,c[xe>>2]|0,c[Kd>>2]|0)|0;}if((c[we>>2]|0)>>>0>=(c[Qd>>2]|0)>>>0?(c[oe>>2]=c[we>>2],c[c[Od>>2]>>2]=(c[Td>>2]|0)-(c[ve>>2]|0)+2,c[(c[Od>>2]|0)+4>>2]=c[we>>2],c[me>>2]=1,((c[we>>2]|0)>>>0>(c[Rd>>2]|0)>>>0?1:((c[Jd>>2]|0)+(c[we>>2]|0)|0)==(c[Kd>>2]|0))|0):0){c[(c[Hd>>2]|0)+24>>2]=(c[Td>>2]|0)+1;c[Gd>>2]=1;break;}}c[(c[Wd>>2]|0)+(c[Xd>>2]<<2)>>2]=c[Td>>2];while(1){aj=c[ne>>2]|0;c[ne>>2]=aj+-1;if(!aj)break;if((c[Yd>>2]|0)>>>0<=(c[he>>2]|0)>>>0)break;c[ze>>2]=(c[Zd>>2]|0)+((c[Yd>>2]&c[$d>>2])<<1<<2);c[Ae>>2]=(c[ae>>2]|0)>>>0<(c[be>>2]|0)>>>0?c[ae>>2]|0:c[be>>2]|0;if(c[Ld>>2]|0?((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0<(c[de>>2]|0)>>>0:0){c[Be>>2]=(c[ce>>2]|0)+(c[Yd>>2]|0);aj=Uj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0,c[ee>>2]|0,c[fe>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;if(((c[Yd>>2]|0)+(c[Ae>>2]|0)|0)>>>0>=(c[de>>2]|0)>>>0)c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);}else{c[Be>>2]=(c[Sd>>2]|0)+(c[Yd>>2]|0);aj=Tj((c[Jd>>2]|0)+(c[Ae>>2]|0)|0,(c[Be>>2]|0)+(c[Ae>>2]|0)|0,c[Kd>>2]|0)|0;c[Ae>>2]=(c[Ae>>2]|0)+aj;}if((c[Ae>>2]|0)>>>0>(c[oe>>2]|0)>>>0){if((c[Ae>>2]|0)>>>0>((c[ke>>2]|0)-(c[Yd>>2]|0)|0)>>>0)c[ke>>2]=(c[Yd>>2]|0)+(c[Ae>>2]|0);c[oe>>2]=c[Ae>>2];c[(c[Od>>2]|0)+(c[me>>2]<<3)>>2]=(c[Td>>2]|0)-(c[Yd>>2]|0)+2;c[(c[Od>>2]|0)+(c[me>>2]<<3)+4>>2]=c[Ae>>2];c[me>>2]=(c[me>>2]|0)+1;if((c[Ae>>2]|0)>>>0>4096)break;if(((c[Jd>>2]|0)+(c[Ae>>2]|0)|0)==(c[Kd>>2]|0))break;}aj=c[Yd>>2]|0;if((d[(c[Be>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)<(d[(c[Jd>>2]|0)+(c[Ae>>2]|0)>>0]|0|0)){c[c[ie>>2]>>2]=aj;c[ae>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=215;break;}c[ie>>2]=(c[ze>>2]|0)+4;c[Yd>>2]=c[(c[ze>>2]|0)+4>>2];}else{c[c[je>>2]>>2]=aj;c[be>>2]=c[Ae>>2];if((c[Yd>>2]|0)>>>0<=(c[ge>>2]|0)>>>0){dj=218;break;}c[je>>2]=c[ze>>2];c[Yd>>2]=c[c[ze>>2]>>2];}}if((dj|0)==215){dj=0;c[ie>>2]=le;}else if((dj|0)==218){dj=0;c[je>>2]=le;}c[c[je>>2]>>2]=0;c[c[ie>>2]>>2]=0;c[(c[Hd>>2]|0)+24>>2]=(c[ke>>2]|0)-8;c[Gd>>2]=c[me>>2];}}while(0);c[Ah>>2]=c[Gd>>2];break a;break;}case 5:{aj=c[Ch>>2]|0;Zh=c[Dh>>2]|0;Uh=c[Eh>>2]|0;_i=c[Fh>>2]|0;Zi=c[Gh>>2]|0;Ph=c[Hh>>2]|0;Qh=c[Ih>>2]|0;_h=c[Jh>>2]|0;c[De>>2]=c[Bh>>2];c[Ee>>2]=aj;c[Fe>>2]=Zh;c[Ge>>2]=Uh;c[He>>2]=_i;c[Ie>>2]=Zi;c[Je>>2]=Ph;c[Ke>>2]=Qh;c[Le>>2]=_h;c[Me>>2]=5;if((c[(c[Ee>>2]|0)+20>>2]|0)>>>0<4095)ij=c[(c[Ee>>2]|0)+20>>2]|0;else ij=4095;c[Ne>>2]=ij;c[Oe>>2]=c[(c[De>>2]|0)+4>>2];c[Pe>>2]=(c[Fe>>2]|0)-(c[Oe>>2]|0);c[Qe>>2]=c[(c[Ee>>2]|0)+8>>2];c[Re>>2]=(c[Me>>2]|0)==3?3:4;c[Se>>2]=c[(c[De>>2]|0)+36>>2];c[Te>>2]=Sj(c[Fe>>2]|0,c[Qe>>2]|0,c[Me>>2]|0)|0;c[Ue>>2]=c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2];c[Ve>>2]=c[(c[De>>2]|0)+44>>2];c[We>>2]=(c[(c[Ee>>2]|0)+4>>2]|0)-1;c[Xe>>2]=(1<<c[We>>2])-1;c[Ye>>2]=0;c[Ze>>2]=0;c[_e>>2]=c[(c[De>>2]|0)+8>>2];c[$e>>2]=c[(c[De>>2]|0)+12>>2];c[af>>2]=(c[_e>>2]|0)+(c[$e>>2]|0);c[bf>>2]=(c[Oe>>2]|0)+(c[$e>>2]|0);if((c[Xe>>2]|0)>>>0>=(c[Pe>>2]|0)>>>0)jj=0;else jj=(c[Pe>>2]|0)-(c[Xe>>2]|0)|0;c[cf>>2]=jj;c[df>>2]=c[(c[De>>2]|0)+16>>2];c[ef>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2);c[ff>>2]=(c[Ve>>2]|0)+((c[Pe>>2]&c[Xe>>2])<<1<<2)+4;c[gf>>2]=(c[Pe>>2]|0)+8+1;c[jf>>2]=0;c[kf>>2]=1<<c[(c[Ee>>2]|0)+12>>2];c[lf>>2]=(c[Le>>2]|0)-1;c[mf>>2]=3+(c[Je>>2]|0);c[nf>>2]=c[Je>>2];while(1){if((c[nf>>2]|0)>>>0>=(c[mf>>2]|0)>>>0){dj=137;break;}_h=c[Ie>>2]|0;if((c[nf>>2]|0)==3)kj=(c[_h>>2]|0)-1|0;else kj=c[_h+(c[nf>>2]<<2)>>2]|0;c[of>>2]=kj;c[pf>>2]=(c[Pe>>2]|0)-(c[of>>2]|0);c[qf>>2]=0;if(((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[$e>>2]|0)|0)>>>0){_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0;if((_h|0)==(mm((c[Fe>>2]|0)+(0-(c[of>>2]|0))|0,c[Re>>2]|0)|0)){_h=Tj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[Fe>>2]|0)+(c[Re>>2]|0)+(0-(c[of>>2]|0))|0,c[Ge>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}else{c[rf>>2]=(c[_e>>2]|0)+(c[pf>>2]|0);if((c[He>>2]|0?(((c[$e>>2]|0)-1-(c[pf>>2]|0)|0)>>>0>=3?((c[of>>2]|0)-1|0)>>>0<((c[Pe>>2]|0)-(c[df>>2]|0)|0)>>>0:0)|0:0)?(_h=mm(c[Fe>>2]|0,c[Re>>2]|0)|0,(_h|0)==(mm(c[rf>>2]|0,c[Re>>2]|0)|0)):0){_h=Uj((c[Fe>>2]|0)+(c[Re>>2]|0)|0,(c[rf>>2]|0)+(c[Re>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[qf>>2]=_h+(c[Re>>2]|0);}}if((c[qf>>2]|0)>>>0>(c[lf>>2]|0)>>>0?(c[lf>>2]=c[qf>>2],c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[nf>>2]|0)-(c[Je>>2]|0),c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[qf>>2],c[jf>>2]=(c[jf>>2]|0)+1,((c[qf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[qf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){dj=135;break;}c[nf>>2]=(c[nf>>2]|0)+1;}do{if((dj|0)==135){dj=0;c[Ce>>2]=c[jf>>2];}else if((dj|0)==137){dj=0;if(((c[Me>>2]|0)==3?(c[lf>>2]|0)>>>0<(c[Me>>2]|0)>>>0:0)?(c[sf>>2]=nm(c[De>>2]|0,c[Fe>>2]|0)|0,((c[sf>>2]|0)>>>0>(c[df>>2]|0)>>>0?((c[Pe>>2]|0)-(c[sf>>2]|0)|0)>>>0<262144:0)|0):0){if(c[He>>2]|0?(c[sf>>2]|0)>>>0<(c[$e>>2]|0)>>>0:0){c[vf>>2]=(c[_e>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Uj(c[Fe>>2]|0,c[vf>>2]|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;}else{c[uf>>2]=(c[Oe>>2]|0)+(c[sf>>2]|0);c[tf>>2]=Tj(c[Fe>>2]|0,c[uf>>2]|0,c[Ge>>2]|0)|0;}if((c[tf>>2]|0)>>>0>=(c[Me>>2]|0)>>>0?(c[lf>>2]=c[tf>>2],c[c[Ke>>2]>>2]=(c[Pe>>2]|0)-(c[sf>>2]|0)+2,c[(c[Ke>>2]|0)+4>>2]=c[tf>>2],c[jf>>2]=1,((c[tf>>2]|0)>>>0>(c[Ne>>2]|0)>>>0?1:((c[Fe>>2]|0)+(c[tf>>2]|0)|0)==(c[Ge>>2]|0))|0):0){c[(c[De>>2]|0)+24>>2]=(c[Pe>>2]|0)+1;c[Ce>>2]=1;break;}}c[(c[Se>>2]|0)+(c[Te>>2]<<2)>>2]=c[Pe>>2];while(1){_h=c[kf>>2]|0;c[kf>>2]=_h+-1;if(!_h)break;if((c[Ue>>2]|0)>>>0<=(c[df>>2]|0)>>>0)break;c[wf>>2]=(c[Ve>>2]|0)+((c[Ue>>2]&c[Xe>>2])<<1<<2);c[xf>>2]=(c[Ye>>2]|0)>>>0<(c[Ze>>2]|0)>>>0?c[Ye>>2]|0:c[Ze>>2]|0;if(c[He>>2]|0?((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0<(c[$e>>2]|0)>>>0:0){c[yf>>2]=(c[_e>>2]|0)+(c[Ue>>2]|0);_h=Uj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0,c[af>>2]|0,c[bf>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;if(((c[Ue>>2]|0)+(c[xf>>2]|0)|0)>>>0>=(c[$e>>2]|0)>>>0)c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);}else{c[yf>>2]=(c[Oe>>2]|0)+(c[Ue>>2]|0);_h=Tj((c[Fe>>2]|0)+(c[xf>>2]|0)|0,(c[yf>>2]|0)+(c[xf>>2]|0)|0,c[Ge>>2]|0)|0;c[xf>>2]=(c[xf>>2]|0)+_h;}if((c[xf>>2]|0)>>>0>(c[lf>>2]|0)>>>0){if((c[xf>>2]|0)>>>0>((c[gf>>2]|0)-(c[Ue>>2]|0)|0)>>>0)c[gf>>2]=(c[Ue>>2]|0)+(c[xf>>2]|0);c[lf>>2]=c[xf>>2];c[(c[Ke>>2]|0)+(c[jf>>2]<<3)>>2]=(c[Pe>>2]|0)-(c[Ue>>2]|0)+2;c[(c[Ke>>2]|0)+(c[jf>>2]<<3)+4>>2]=c[xf>>2];c[jf>>2]=(c[jf>>2]|0)+1;if((c[xf>>2]|0)>>>0>4096)break;if(((c[Fe>>2]|0)+(c[xf>>2]|0)|0)==(c[Ge>>2]|0))break;}_h=c[Ue>>2]|0;if((d[(c[yf>>2]|0)+(c[xf>>2]|0)>>0]|0|0)<(d[(c[Fe>>2]|0)+(c[xf>>2]|0)>>0]|0|0)){c[c[ef>>2]>>2]=_h;c[Ye>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=162;break;}c[ef>>2]=(c[wf>>2]|0)+4;c[Ue>>2]=c[(c[wf>>2]|0)+4>>2];}else{c[c[ff>>2]>>2]=_h;c[Ze>>2]=c[xf>>2];if((c[Ue>>2]|0)>>>0<=(c[cf>>2]|0)>>>0){dj=165;break;}c[ff>>2]=c[wf>>2];c[Ue>>2]=c[c[wf>>2]>>2];}}if((dj|0)==162){dj=0;c[ef>>2]=hf;}else if((dj|0)==165){dj=0;c[ff>>2]=hf;}c[c[ff>>2]>>2]=0;c[c[ef>>2]>>2]=0;c[(c[De>>2]|0)+24>>2]=(c[gf>>2]|0)-8;c[Ce>>2]=c[jf>>2];}}while(0);c[Ah>>2]=c[Ce>>2];break a;break;}default:{_h=c[Ch>>2]|0;Qh=c[Dh>>2]|0;Ph=c[Eh>>2]|0;Zi=c[Fh>>2]|0;_i=c[Gh>>2]|0;Uh=c[Hh>>2]|0;Zh=c[Ih>>2]|0;aj=c[Jh>>2]|0;c[Af>>2]=c[Bh>>2];c[Bf>>2]=_h;c[Cf>>2]=Qh;c[Df>>2]=Ph;c[Ef>>2]=Zi;c[Ff>>2]=_i;c[Gf>>2]=Uh;c[Hf>>2]=Zh;c[If>>2]=aj;c[Jf>>2]=4;if((c[(c[Bf>>2]|0)+20>>2]|0)>>>0<4095)lj=c[(c[Bf>>2]|0)+20>>2]|0;else lj=4095;c[Kf>>2]=lj;c[Lf>>2]=c[(c[Af>>2]|0)+4>>2];c[Mf>>2]=(c[Cf>>2]|0)-(c[Lf>>2]|0);c[Nf>>2]=c[(c[Bf>>2]|0)+8>>2];c[Of>>2]=(c[Jf>>2]|0)==3?3:4;c[Pf>>2]=c[(c[Af>>2]|0)+36>>2];c[Qf>>2]=Sj(c[Cf>>2]|0,c[Nf>>2]|0,c[Jf>>2]|0)|0;c[Rf>>2]=c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2];c[Sf>>2]=c[(c[Af>>2]|0)+44>>2];c[Tf>>2]=(c[(c[Bf>>2]|0)+4>>2]|0)-1;c[Uf>>2]=(1<<c[Tf>>2])-1;c[Vf>>2]=0;c[Wf>>2]=0;c[Xf>>2]=c[(c[Af>>2]|0)+8>>2];c[Yf>>2]=c[(c[Af>>2]|0)+12>>2];c[Zf>>2]=(c[Xf>>2]|0)+(c[Yf>>2]|0);c[_f>>2]=(c[Lf>>2]|0)+(c[Yf>>2]|0);if((c[Uf>>2]|0)>>>0>=(c[Mf>>2]|0)>>>0)mj=0;else mj=(c[Mf>>2]|0)-(c[Uf>>2]|0)|0;c[$f>>2]=mj;c[ag>>2]=c[(c[Af>>2]|0)+16>>2];c[bg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2);c[cg>>2]=(c[Sf>>2]|0)+((c[Mf>>2]&c[Uf>>2])<<1<<2)+4;c[dg>>2]=(c[Mf>>2]|0)+8+1;c[fg>>2]=0;c[gg>>2]=1<<c[(c[Bf>>2]|0)+12>>2];c[hg>>2]=(c[If>>2]|0)-1;c[ig>>2]=3+(c[Gf>>2]|0);c[jg>>2]=c[Gf>>2];while(1){if((c[jg>>2]|0)>>>0>=(c[ig>>2]|0)>>>0){dj=84;break;}aj=c[Ff>>2]|0;if((c[jg>>2]|0)==3)nj=(c[aj>>2]|0)-1|0;else nj=c[aj+(c[jg>>2]<<2)>>2]|0;c[kg>>2]=nj;c[lg>>2]=(c[Mf>>2]|0)-(c[kg>>2]|0);c[mg>>2]=0;if(((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[Yf>>2]|0)|0)>>>0){aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0;if((aj|0)==(mm((c[Cf>>2]|0)+(0-(c[kg>>2]|0))|0,c[Of>>2]|0)|0)){aj=Tj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[Cf>>2]|0)+(c[Of>>2]|0)+(0-(c[kg>>2]|0))|0,c[Df>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}else{c[ng>>2]=(c[Xf>>2]|0)+(c[lg>>2]|0);if((c[Ef>>2]|0?(((c[Yf>>2]|0)-1-(c[lg>>2]|0)|0)>>>0>=3?((c[kg>>2]|0)-1|0)>>>0<((c[Mf>>2]|0)-(c[ag>>2]|0)|0)>>>0:0)|0:0)?(aj=mm(c[Cf>>2]|0,c[Of>>2]|0)|0,(aj|0)==(mm(c[ng>>2]|0,c[Of>>2]|0)|0)):0){aj=Uj((c[Cf>>2]|0)+(c[Of>>2]|0)|0,(c[ng>>2]|0)+(c[Of>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[mg>>2]=aj+(c[Of>>2]|0);}}if((c[mg>>2]|0)>>>0>(c[hg>>2]|0)>>>0?(c[hg>>2]=c[mg>>2],c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[jg>>2]|0)-(c[Gf>>2]|0),c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[mg>>2],c[fg>>2]=(c[fg>>2]|0)+1,((c[mg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[mg>>2]|0)|0)==(c[Df>>2]|0))|0):0){dj=82;break;}c[jg>>2]=(c[jg>>2]|0)+1;}do{if((dj|0)==82){dj=0;c[zf>>2]=c[fg>>2];}else if((dj|0)==84){dj=0;if(((c[Jf>>2]|0)==3?(c[hg>>2]|0)>>>0<(c[Jf>>2]|0)>>>0:0)?(c[og>>2]=nm(c[Af>>2]|0,c[Cf>>2]|0)|0,((c[og>>2]|0)>>>0>(c[ag>>2]|0)>>>0?((c[Mf>>2]|0)-(c[og>>2]|0)|0)>>>0<262144:0)|0):0){if(c[Ef>>2]|0?(c[og>>2]|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[rg>>2]=(c[Xf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Uj(c[Cf>>2]|0,c[rg>>2]|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;}else{c[qg>>2]=(c[Lf>>2]|0)+(c[og>>2]|0);c[pg>>2]=Tj(c[Cf>>2]|0,c[qg>>2]|0,c[Df>>2]|0)|0;}if((c[pg>>2]|0)>>>0>=(c[Jf>>2]|0)>>>0?(c[hg>>2]=c[pg>>2],c[c[Hf>>2]>>2]=(c[Mf>>2]|0)-(c[og>>2]|0)+2,c[(c[Hf>>2]|0)+4>>2]=c[pg>>2],c[fg>>2]=1,((c[pg>>2]|0)>>>0>(c[Kf>>2]|0)>>>0?1:((c[Cf>>2]|0)+(c[pg>>2]|0)|0)==(c[Df>>2]|0))|0):0){c[(c[Af>>2]|0)+24>>2]=(c[Mf>>2]|0)+1;c[zf>>2]=1;break;}}c[(c[Pf>>2]|0)+(c[Qf>>2]<<2)>>2]=c[Mf>>2];while(1){aj=c[gg>>2]|0;c[gg>>2]=aj+-1;if(!aj)break;if((c[Rf>>2]|0)>>>0<=(c[ag>>2]|0)>>>0)break;c[sg>>2]=(c[Sf>>2]|0)+((c[Rf>>2]&c[Uf>>2])<<1<<2);c[tg>>2]=(c[Vf>>2]|0)>>>0<(c[Wf>>2]|0)>>>0?c[Vf>>2]|0:c[Wf>>2]|0;if(c[Ef>>2]|0?((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0<(c[Yf>>2]|0)>>>0:0){c[ug>>2]=(c[Xf>>2]|0)+(c[Rf>>2]|0);aj=Uj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0,c[Zf>>2]|0,c[_f>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;if(((c[Rf>>2]|0)+(c[tg>>2]|0)|0)>>>0>=(c[Yf>>2]|0)>>>0)c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);}else{c[ug>>2]=(c[Lf>>2]|0)+(c[Rf>>2]|0);aj=Tj((c[Cf>>2]|0)+(c[tg>>2]|0)|0,(c[ug>>2]|0)+(c[tg>>2]|0)|0,c[Df>>2]|0)|0;c[tg>>2]=(c[tg>>2]|0)+aj;}if((c[tg>>2]|0)>>>0>(c[hg>>2]|0)>>>0){if((c[tg>>2]|0)>>>0>((c[dg>>2]|0)-(c[Rf>>2]|0)|0)>>>0)c[dg>>2]=(c[Rf>>2]|0)+(c[tg>>2]|0);c[hg>>2]=c[tg>>2];c[(c[Hf>>2]|0)+(c[fg>>2]<<3)>>2]=(c[Mf>>2]|0)-(c[Rf>>2]|0)+2;c[(c[Hf>>2]|0)+(c[fg>>2]<<3)+4>>2]=c[tg>>2];c[fg>>2]=(c[fg>>2]|0)+1;if((c[tg>>2]|0)>>>0>4096)break;if(((c[Cf>>2]|0)+(c[tg>>2]|0)|0)==(c[Df>>2]|0))break;}aj=c[Rf>>2]|0;if((d[(c[ug>>2]|0)+(c[tg>>2]|0)>>0]|0|0)<(d[(c[Cf>>2]|0)+(c[tg>>2]|0)>>0]|0|0)){c[c[bg>>2]>>2]=aj;c[Vf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=109;break;}c[bg>>2]=(c[sg>>2]|0)+4;c[Rf>>2]=c[(c[sg>>2]|0)+4>>2];}else{c[c[cg>>2]>>2]=aj;c[Wf>>2]=c[tg>>2];if((c[Rf>>2]|0)>>>0<=(c[$f>>2]|0)>>>0){dj=112;break;}c[cg>>2]=c[sg>>2];c[Rf>>2]=c[c[sg>>2]>>2];}}if((dj|0)==109){dj=0;c[bg>>2]=eg;}else if((dj|0)==112){dj=0;c[cg>>2]=eg;}c[c[cg>>2]>>2]=0;c[c[bg>>2]>>2]=0;c[(c[Af>>2]|0)+24>>2]=(c[dg>>2]|0)-8;c[zf>>2]=c[fg>>2];}}while(0);c[Ah>>2]=c[zf>>2];break a;}}}}while(0);c[ki>>2]=c[Ah>>2];if(!(c[ki>>2]|0)){c[Vh>>2]=(c[Vh>>2]|0)+1;continue;}c[li>>2]=0;while(1){if((c[li>>2]|0)>>>0>=3)break;c[(c[bi>>2]|0)+16+(c[li>>2]<<2)>>2]=c[(c[Nh>>2]|0)+(c[li>>2]<<2)>>2];c[li>>2]=(c[li>>2]|0)+1;}c[(c[bi>>2]|0)+8>>2]=1;c[(c[bi>>2]|0)+12>>2]=c[ii>>2];c[mi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)+4>>2];do{if((c[mi>>2]|0)>>>0<=(c[$h>>2]|0)>>>0){c[ni>>2]=om(di,c[Wh>>2]|0,c[ii>>2]|0,c[Th>>2]|0)|0;c[oi>>2]=0;while(1){if((c[oi>>2]|0)>>>0>=(c[ai>>2]|0)>>>0)break;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=1073741824;c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=0;while(1){if((c[pi>>2]|0)>>>0>=(c[ki>>2]|0)>>>0)break;c[qi>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)>>2];c[ri>>2]=c[(c[ci>>2]|0)+(c[pi>>2]<<3)+4>>2];pm(si,c[Nh>>2]|0,c[qi>>2]|0,c[ji>>2]|0);while(1){if((c[oi>>2]|0)>>>0>(c[ri>>2]|0)>>>0)break;aj=c[ni>>2]|0;Zh=c[oi>>2]|0;Uh=c[Th>>2]|0;_i=c[Rh>>2]|0;c[yd>>2]=c[qi>>2];c[zd>>2]=Zh;c[Ad>>2]=Uh;c[Bd>>2]=_i;c[Dd>>2]=qm((c[yd>>2]|0)+1|0)|0;c[Ed>>2]=(c[zd>>2]|0)-3;if(c[(c[Ad>>2]|0)+56>>2]|0){_i=(qm((c[Ed>>2]|0)+1|0)|0)+16|0;c[xd>>2]=_i+(c[Dd>>2]|0);}else{_i=(c[Dd>>2]|0)+(c[(c[Ad>>2]|0)+52>>2]|0)|0;c[Cd>>2]=_i-(qm((c[(c[(c[Ad>>2]|0)+12>>2]|0)+(c[Dd>>2]<<2)>>2]|0)+1|0)|0);if((c[Bd>>2]|0)<2&(c[Dd>>2]|0)>>>0>=20)c[Cd>>2]=(c[Cd>>2]|0)+((c[Dd>>2]|0)-19<<1);c[Fd>>2]=rm(c[Ed>>2]|0)|0;_i=(c[5840+(c[Fd>>2]<<2)>>2]|0)+(c[(c[Ad>>2]|0)+48>>2]|0)|0;Uh=_i-(qm((c[(c[(c[Ad>>2]|0)+8>>2]|0)+(c[Fd>>2]<<2)>>2]|0)+1|0)|0)|0;c[Cd>>2]=(c[Cd>>2]|0)+Uh;c[xd>>2]=c[Cd>>2];}c[ti>>2]=aj+(c[xd>>2]|0);c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+8>>2]=c[oi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+4>>2]=c[qi>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+12>>2]=c[ii>>2];c[(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)>>2]=c[ti>>2];aj=(c[bi>>2]|0)+((c[oi>>2]|0)*28|0)+16|0;c[aj>>2]=c[si>>2];c[aj+4>>2]=c[si+4>>2];c[aj+8>>2]=c[si+8>>2];c[oi>>2]=(c[oi>>2]|0)+1;}c[pi>>2]=(c[pi>>2]|0)+1;}c[fi>>2]=(c[oi>>2]|0)-1;c[ei>>2]=1;b:while(1){if((c[ei>>2]|0)>>>0>(c[fi>>2]|0)>>>0){dj=504;break;}c[ui>>2]=(c[Vh>>2]|0)+(c[ei>>2]|0);if((c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+8>>2]|0)==1)oj=(c[(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+12>>2]|0)+1|0;else oj=1;c[vi>>2]=oj;if((c[ei>>2]|0)>>>0>(c[vi>>2]|0)>>>0){aj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[vi>>2]|0)|0)*28|0)>>2]|0;c[wi>>2]=aj+(sm((c[ui>>2]|0)+(0-(c[vi>>2]|0))|0,c[vi>>2]|0,c[Th>>2]|0)|0);}else c[wi>>2]=tm(di,c[Wh>>2]|0,c[vi>>2]|0,c[Th>>2]|0)|0;if((c[wi>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0)){c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]=1;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+4>>2]=0;c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]=c[vi>>2];c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]=c[wi>>2];aj=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Uh=(c[bi>>2]|0)+(((c[ei>>2]|0)-1|0)*28|0)+16|0;c[aj>>2]=c[Uh>>2];c[aj+4>>2]=c[Uh+4>>2];c[aj+8>>2]=c[Uh+8>>2];}c:do{if((c[ui>>2]|0)>>>0<=(c[Yh>>2]|0)>>>0){if((c[ei>>2]|0)==(c[fi>>2]|0)){dj=504;break b;}if((c[Rh>>2]|0)==0?(c[(c[bi>>2]|0)+(((c[ei>>2]|0)+1|0)*28|0)>>2]|0)<=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)>>2]|0):0)break;c[xi>>2]=(c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)!=1&1;if((c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+8>>2]|0)==1)pj=c[(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+12>>2]|0;else pj=0;c[yi>>2]=pj;if((c[ei>>2]|0)>>>0>(c[yi>>2]|0)>>>0)qj=c[(c[bi>>2]|0)+(((c[ei>>2]|0)-(c[yi>>2]|0)|0)*28|0)>>2]|0;else qj=0;c[zi>>2]=qj;Uh=c[zi>>2]|0;c[Ai>>2]=Uh+(um((c[ui>>2]|0)+(0-(c[yi>>2]|0))|0,c[yi>>2]|0,c[Th>>2]|0)|0);Uh=c[Oh>>2]|0;aj=c[ui>>2]|0;_i=c[Xh>>2]|0;Zh=c[Sh>>2]|0;Zi=(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0;Ph=c[xi>>2]|0;Qh=c[ci>>2]|0;_h=c[ai>>2]|0;c[nd>>2]=c[Lh>>2];c[od>>2]=Uh;c[pd>>2]=aj;c[qd>>2]=_i;c[rd>>2]=Zh;c[sd>>2]=Zi;c[td>>2]=Ph;c[ud>>2]=Qh;c[vd>>2]=_h;c[wd>>2]=c[(c[od>>2]|0)+16>>2];d:do{if((c[pd>>2]|0)>>>0<((c[(c[nd>>2]|0)+4>>2]|0)+(c[(c[nd>>2]|0)+24>>2]|0)|0)>>>0)c[md>>2]=0;else{_h=c[od>>2]|0;Qh=c[pd>>2]|0;Ph=c[qd>>2]|0;Zi=c[wd>>2]|0;Zh=c[rd>>2]|0;c[dd>>2]=c[nd>>2];c[ed>>2]=_h;c[fd>>2]=Qh;c[gd>>2]=Ph;c[hd>>2]=Zi;c[id>>2]=Zh;c[jd>>2]=c[(c[dd>>2]|0)+4>>2];c[kd>>2]=(c[fd>>2]|0)-(c[jd>>2]|0);c[ld>>2]=c[(c[dd>>2]|0)+24>>2];while(1){if((c[ld>>2]|0)>>>0>=(c[kd>>2]|0)>>>0)break;Zh=Rj(c[dd>>2]|0,c[ed>>2]|0,(c[jd>>2]|0)+(c[ld>>2]|0)|0,c[gd>>2]|0,c[hd>>2]|0,c[id>>2]|0)|0;c[ld>>2]=(c[ld>>2]|0)+Zh;}c[(c[dd>>2]|0)+24>>2]=c[kd>>2];switch(c[wd>>2]|0){case 3:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[ic>>2]=c[nd>>2];c[jc>>2]=Zh;c[kc>>2]=Zi;c[lc>>2]=Ph;c[mc>>2]=Qh;c[nc>>2]=_h;c[oc>>2]=_i;c[pc>>2]=aj;c[qc>>2]=Uh;c[rc>>2]=3;if((c[(c[jc>>2]|0)+20>>2]|0)>>>0<4095)rj=c[(c[jc>>2]|0)+20>>2]|0;else rj=4095;c[sc>>2]=rj;c[tc>>2]=c[(c[ic>>2]|0)+4>>2];c[uc>>2]=(c[kc>>2]|0)-(c[tc>>2]|0);c[vc>>2]=c[(c[jc>>2]|0)+8>>2];c[wc>>2]=(c[rc>>2]|0)==3?3:4;c[xc>>2]=c[(c[ic>>2]|0)+36>>2];c[yc>>2]=Sj(c[kc>>2]|0,c[vc>>2]|0,c[rc>>2]|0)|0;c[zc>>2]=c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2];c[Ac>>2]=c[(c[ic>>2]|0)+44>>2];c[Bc>>2]=(c[(c[jc>>2]|0)+4>>2]|0)-1;c[Cc>>2]=(1<<c[Bc>>2])-1;c[Dc>>2]=0;c[Ec>>2]=0;c[Fc>>2]=c[(c[ic>>2]|0)+8>>2];c[Gc>>2]=c[(c[ic>>2]|0)+12>>2];c[Hc>>2]=(c[Fc>>2]|0)+(c[Gc>>2]|0);c[Ic>>2]=(c[tc>>2]|0)+(c[Gc>>2]|0);if((c[Cc>>2]|0)>>>0>=(c[uc>>2]|0)>>>0)sj=0;else sj=(c[uc>>2]|0)-(c[Cc>>2]|0)|0;c[Jc>>2]=sj;c[Kc>>2]=c[(c[ic>>2]|0)+16>>2];c[Lc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2);c[Mc>>2]=(c[Ac>>2]|0)+((c[uc>>2]&c[Cc>>2])<<1<<2)+4;c[Nc>>2]=(c[uc>>2]|0)+8+1;c[Pc>>2]=0;c[Qc>>2]=1<<c[(c[jc>>2]|0)+12>>2];c[Rc>>2]=(c[qc>>2]|0)-1;c[Sc>>2]=3+(c[oc>>2]|0);c[Tc>>2]=c[oc>>2];while(1){if((c[Tc>>2]|0)>>>0>=(c[Sc>>2]|0)>>>0){dj=287;break;}Uh=c[nc>>2]|0;if((c[Tc>>2]|0)==3)tj=(c[Uh>>2]|0)-1|0;else tj=c[Uh+(c[Tc>>2]<<2)>>2]|0;c[Uc>>2]=tj;c[Vc>>2]=(c[uc>>2]|0)-(c[Uc>>2]|0);c[Wc>>2]=0;do{if(((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Gc>>2]|0)|0)>>>0){Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm((c[kc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[wc>>2]|0)|0))break;Uh=Tj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[kc>>2]|0)+(c[wc>>2]|0)+(0-(c[Uc>>2]|0))|0,c[lc>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}else{c[Xc>>2]=(c[Fc>>2]|0)+(c[Vc>>2]|0);if(!(c[mc>>2]|0))break;if(!((((c[Gc>>2]|0)-1-(c[Vc>>2]|0)|0)>>>0>=3?((c[Uc>>2]|0)-1|0)>>>0<((c[uc>>2]|0)-(c[Kc>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[kc>>2]|0,c[wc>>2]|0)|0;if((Uh|0)!=(mm(c[Xc>>2]|0,c[wc>>2]|0)|0))break;Uh=Uj((c[kc>>2]|0)+(c[wc>>2]|0)|0,(c[Xc>>2]|0)+(c[wc>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[Wc>>2]=Uh+(c[wc>>2]|0);}}while(0);if((c[Wc>>2]|0)>>>0>(c[Rc>>2]|0)>>>0?(c[Rc>>2]=c[Wc>>2],c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[Tc>>2]|0)-(c[oc>>2]|0),c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[Wc>>2],c[Pc>>2]=(c[Pc>>2]|0)+1,((c[Wc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Wc>>2]|0)|0)==(c[lc>>2]|0))|0):0){dj=285;break;}c[Tc>>2]=(c[Tc>>2]|0)+1;}e:do{if((dj|0)==285){dj=0;c[hc>>2]=c[Pc>>2];}else if((dj|0)==287){dj=0;do{if((c[rc>>2]|0)==3){if((c[Rc>>2]|0)>>>0>=(c[rc>>2]|0)>>>0)break;c[Yc>>2]=nm(c[ic>>2]|0,c[kc>>2]|0)|0;if(!(((c[Yc>>2]|0)>>>0>(c[Kc>>2]|0)>>>0?((c[uc>>2]|0)-(c[Yc>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[mc>>2]|0){if((c[Yc>>2]|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=292;break;}c[$c>>2]=(c[Fc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Uj(c[kc>>2]|0,c[$c>>2]|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;}else dj=292;}while(0);if((dj|0)==292){dj=0;c[_c>>2]=(c[tc>>2]|0)+(c[Yc>>2]|0);c[Zc>>2]=Tj(c[kc>>2]|0,c[_c>>2]|0,c[lc>>2]|0)|0;}if((c[Zc>>2]|0)>>>0<(c[rc>>2]|0)>>>0)break;c[Rc>>2]=c[Zc>>2];c[c[pc>>2]>>2]=(c[uc>>2]|0)-(c[Yc>>2]|0)+2;c[(c[pc>>2]|0)+4>>2]=c[Zc>>2];c[Pc>>2]=1;if(!(((c[Zc>>2]|0)>>>0>(c[sc>>2]|0)>>>0?1:((c[kc>>2]|0)+(c[Zc>>2]|0)|0)==(c[lc>>2]|0))|0))break;c[(c[ic>>2]|0)+24>>2]=(c[uc>>2]|0)+1;c[hc>>2]=1;break e;}}while(0);c[(c[xc>>2]|0)+(c[yc>>2]<<2)>>2]=c[uc>>2];while(1){Uh=c[Qc>>2]|0;c[Qc>>2]=Uh+-1;if(!Uh)break;if((c[zc>>2]|0)>>>0<=(c[Kc>>2]|0)>>>0)break;c[ad>>2]=(c[Ac>>2]|0)+((c[zc>>2]&c[Cc>>2])<<1<<2);c[bd>>2]=(c[Dc>>2]|0)>>>0<(c[Ec>>2]|0)>>>0?c[Dc>>2]|0:c[Ec>>2]|0;do{if(c[mc>>2]|0){if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0>=(c[Gc>>2]|0)>>>0){dj=302;break;}c[cd>>2]=(c[Fc>>2]|0)+(c[zc>>2]|0);Uh=Uj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0,c[Hc>>2]|0,c[Ic>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;if(((c[zc>>2]|0)+(c[bd>>2]|0)|0)>>>0<(c[Gc>>2]|0)>>>0)break;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);}else dj=302;}while(0);if((dj|0)==302){dj=0;c[cd>>2]=(c[tc>>2]|0)+(c[zc>>2]|0);Uh=Tj((c[kc>>2]|0)+(c[bd>>2]|0)|0,(c[cd>>2]|0)+(c[bd>>2]|0)|0,c[lc>>2]|0)|0;c[bd>>2]=(c[bd>>2]|0)+Uh;}if((c[bd>>2]|0)>>>0>(c[Rc>>2]|0)>>>0){if((c[bd>>2]|0)>>>0>((c[Nc>>2]|0)-(c[zc>>2]|0)|0)>>>0)c[Nc>>2]=(c[zc>>2]|0)+(c[bd>>2]|0);c[Rc>>2]=c[bd>>2];c[(c[pc>>2]|0)+(c[Pc>>2]<<3)>>2]=(c[uc>>2]|0)-(c[zc>>2]|0)+2;c[(c[pc>>2]|0)+(c[Pc>>2]<<3)+4>>2]=c[bd>>2];c[Pc>>2]=(c[Pc>>2]|0)+1;if((c[bd>>2]|0)>>>0>4096)break;if(((c[kc>>2]|0)+(c[bd>>2]|0)|0)==(c[lc>>2]|0))break;}Uh=c[zc>>2]|0;if((d[(c[cd>>2]|0)+(c[bd>>2]|0)>>0]|0|0)<(d[(c[kc>>2]|0)+(c[bd>>2]|0)>>0]|0|0)){c[c[Lc>>2]>>2]=Uh;c[Dc>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=312;break;}c[Lc>>2]=(c[ad>>2]|0)+4;c[zc>>2]=c[(c[ad>>2]|0)+4>>2];}else{c[c[Mc>>2]>>2]=Uh;c[Ec>>2]=c[bd>>2];if((c[zc>>2]|0)>>>0<=(c[Jc>>2]|0)>>>0){dj=315;break;}c[Mc>>2]=c[ad>>2];c[zc>>2]=c[c[ad>>2]>>2];}}if((dj|0)==312){dj=0;c[Lc>>2]=Oc;}else if((dj|0)==315){dj=0;c[Mc>>2]=Oc;}c[c[Mc>>2]>>2]=0;c[c[Lc>>2]>>2]=0;c[(c[ic>>2]|0)+24>>2]=(c[Nc>>2]|0)-8;c[hc>>2]=c[Pc>>2];}}while(0);c[md>>2]=c[hc>>2];break d;break;}case 7:case 6:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[u>>2]=c[nd>>2];c[v>>2]=Uh;c[w>>2]=aj;c[x>>2]=_i;c[y>>2]=_h;c[z>>2]=Qh;c[A>>2]=Ph;c[B>>2]=Zi;c[C>>2]=Zh;c[D>>2]=6;if((c[(c[v>>2]|0)+20>>2]|0)>>>0<4095)uj=c[(c[v>>2]|0)+20>>2]|0;else uj=4095;c[E>>2]=uj;c[F>>2]=c[(c[u>>2]|0)+4>>2];c[G>>2]=(c[w>>2]|0)-(c[F>>2]|0);c[H>>2]=c[(c[v>>2]|0)+8>>2];c[I>>2]=(c[D>>2]|0)==3?3:4;c[J>>2]=c[(c[u>>2]|0)+36>>2];c[K>>2]=Sj(c[w>>2]|0,c[H>>2]|0,c[D>>2]|0)|0;c[L>>2]=c[(c[J>>2]|0)+(c[K>>2]<<2)>>2];c[M>>2]=c[(c[u>>2]|0)+44>>2];c[N>>2]=(c[(c[v>>2]|0)+4>>2]|0)-1;c[O>>2]=(1<<c[N>>2])-1;c[P>>2]=0;c[Q>>2]=0;c[R>>2]=c[(c[u>>2]|0)+8>>2];c[S>>2]=c[(c[u>>2]|0)+12>>2];c[T>>2]=(c[R>>2]|0)+(c[S>>2]|0);c[U>>2]=(c[F>>2]|0)+(c[S>>2]|0);if((c[O>>2]|0)>>>0>=(c[G>>2]|0)>>>0)vj=0;else vj=(c[G>>2]|0)-(c[O>>2]|0)|0;c[V>>2]=vj;c[W>>2]=c[(c[u>>2]|0)+16>>2];c[X>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2);c[Y>>2]=(c[M>>2]|0)+((c[G>>2]&c[O>>2])<<1<<2)+4;c[Z>>2]=(c[G>>2]|0)+8+1;c[$>>2]=0;c[aa>>2]=1<<c[(c[v>>2]|0)+12>>2];c[ba>>2]=(c[C>>2]|0)-1;c[ca>>2]=3+(c[A>>2]|0);c[da>>2]=c[A>>2];while(1){if((c[da>>2]|0)>>>0>=(c[ca>>2]|0)>>>0){dj=446;break;}Zh=c[z>>2]|0;if((c[da>>2]|0)==3)wj=(c[Zh>>2]|0)-1|0;else wj=c[Zh+(c[da>>2]<<2)>>2]|0;c[ea>>2]=wj;c[fa>>2]=(c[G>>2]|0)-(c[ea>>2]|0);c[ga>>2]=0;do{if(((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[S>>2]|0)|0)>>>0){Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm((c[w>>2]|0)+(0-(c[ea>>2]|0))|0,c[I>>2]|0)|0))break;Zh=Tj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[w>>2]|0)+(c[I>>2]|0)+(0-(c[ea>>2]|0))|0,c[x>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}else{c[ha>>2]=(c[R>>2]|0)+(c[fa>>2]|0);if(!(c[y>>2]|0))break;if(!((((c[S>>2]|0)-1-(c[fa>>2]|0)|0)>>>0>=3?((c[ea>>2]|0)-1|0)>>>0<((c[G>>2]|0)-(c[W>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[w>>2]|0,c[I>>2]|0)|0;if((Zh|0)!=(mm(c[ha>>2]|0,c[I>>2]|0)|0))break;Zh=Uj((c[w>>2]|0)+(c[I>>2]|0)|0,(c[ha>>2]|0)+(c[I>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[ga>>2]=Zh+(c[I>>2]|0);}}while(0);if((c[ga>>2]|0)>>>0>(c[ba>>2]|0)>>>0?(c[ba>>2]=c[ga>>2],c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[da>>2]|0)-(c[A>>2]|0),c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[ga>>2],c[$>>2]=(c[$>>2]|0)+1,((c[ga>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ga>>2]|0)|0)==(c[x>>2]|0))|0):0){dj=444;break;}c[da>>2]=(c[da>>2]|0)+1;}f:do{if((dj|0)==444){dj=0;c[t>>2]=c[$>>2];}else if((dj|0)==446){dj=0;do{if((c[D>>2]|0)==3){if((c[ba>>2]|0)>>>0>=(c[D>>2]|0)>>>0)break;c[ia>>2]=nm(c[u>>2]|0,c[w>>2]|0)|0;if(!(((c[ia>>2]|0)>>>0>(c[W>>2]|0)>>>0?((c[G>>2]|0)-(c[ia>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[y>>2]|0){if((c[ia>>2]|0)>>>0>=(c[S>>2]|0)>>>0){dj=451;break;}c[la>>2]=(c[R>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Uj(c[w>>2]|0,c[la>>2]|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;}else dj=451;}while(0);if((dj|0)==451){dj=0;c[ka>>2]=(c[F>>2]|0)+(c[ia>>2]|0);c[ja>>2]=Tj(c[w>>2]|0,c[ka>>2]|0,c[x>>2]|0)|0;}if((c[ja>>2]|0)>>>0<(c[D>>2]|0)>>>0)break;c[ba>>2]=c[ja>>2];c[c[B>>2]>>2]=(c[G>>2]|0)-(c[ia>>2]|0)+2;c[(c[B>>2]|0)+4>>2]=c[ja>>2];c[$>>2]=1;if(!(((c[ja>>2]|0)>>>0>(c[E>>2]|0)>>>0?1:((c[w>>2]|0)+(c[ja>>2]|0)|0)==(c[x>>2]|0))|0))break;c[(c[u>>2]|0)+24>>2]=(c[G>>2]|0)+1;c[t>>2]=1;break f;}}while(0);c[(c[J>>2]|0)+(c[K>>2]<<2)>>2]=c[G>>2];while(1){Zh=c[aa>>2]|0;c[aa>>2]=Zh+-1;if(!Zh)break;if((c[L>>2]|0)>>>0<=(c[W>>2]|0)>>>0)break;c[ma>>2]=(c[M>>2]|0)+((c[L>>2]&c[O>>2])<<1<<2);c[na>>2]=(c[P>>2]|0)>>>0<(c[Q>>2]|0)>>>0?c[P>>2]|0:c[Q>>2]|0;do{if(c[y>>2]|0){if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0>=(c[S>>2]|0)>>>0){dj=461;break;}c[oa>>2]=(c[R>>2]|0)+(c[L>>2]|0);Zh=Uj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0,c[T>>2]|0,c[U>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;if(((c[L>>2]|0)+(c[na>>2]|0)|0)>>>0<(c[S>>2]|0)>>>0)break;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);}else dj=461;}while(0);if((dj|0)==461){dj=0;c[oa>>2]=(c[F>>2]|0)+(c[L>>2]|0);Zh=Tj((c[w>>2]|0)+(c[na>>2]|0)|0,(c[oa>>2]|0)+(c[na>>2]|0)|0,c[x>>2]|0)|0;c[na>>2]=(c[na>>2]|0)+Zh;}if((c[na>>2]|0)>>>0>(c[ba>>2]|0)>>>0){if((c[na>>2]|0)>>>0>((c[Z>>2]|0)-(c[L>>2]|0)|0)>>>0)c[Z>>2]=(c[L>>2]|0)+(c[na>>2]|0);c[ba>>2]=c[na>>2];c[(c[B>>2]|0)+(c[$>>2]<<3)>>2]=(c[G>>2]|0)-(c[L>>2]|0)+2;c[(c[B>>2]|0)+(c[$>>2]<<3)+4>>2]=c[na>>2];c[$>>2]=(c[$>>2]|0)+1;if((c[na>>2]|0)>>>0>4096)break;if(((c[w>>2]|0)+(c[na>>2]|0)|0)==(c[x>>2]|0))break;}Zh=c[L>>2]|0;if((d[(c[oa>>2]|0)+(c[na>>2]|0)>>0]|0|0)<(d[(c[w>>2]|0)+(c[na>>2]|0)>>0]|0|0)){c[c[X>>2]>>2]=Zh;c[P>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=471;break;}c[X>>2]=(c[ma>>2]|0)+4;c[L>>2]=c[(c[ma>>2]|0)+4>>2];}else{c[c[Y>>2]>>2]=Zh;c[Q>>2]=c[na>>2];if((c[L>>2]|0)>>>0<=(c[V>>2]|0)>>>0){dj=474;break;}c[Y>>2]=c[ma>>2];c[L>>2]=c[c[ma>>2]>>2];}}if((dj|0)==471){dj=0;c[X>>2]=_;}else if((dj|0)==474){dj=0;c[Y>>2]=_;}c[c[Y>>2]>>2]=0;c[c[X>>2]>>2]=0;c[(c[u>>2]|0)+24>>2]=(c[Z>>2]|0)-8;c[t>>2]=c[$>>2];}}while(0);c[md>>2]=c[t>>2];break d;break;}case 5:{Zh=c[od>>2]|0;Zi=c[pd>>2]|0;Ph=c[qd>>2]|0;Qh=c[rd>>2]|0;_h=c[sd>>2]|0;_i=c[td>>2]|0;aj=c[ud>>2]|0;Uh=c[vd>>2]|0;c[qa>>2]=c[nd>>2];c[ra>>2]=Zh;c[sa>>2]=Zi;c[ta>>2]=Ph;c[ua>>2]=Qh;c[va>>2]=_h;c[wa>>2]=_i;c[xa>>2]=aj;c[ya>>2]=Uh;c[za>>2]=5;if((c[(c[ra>>2]|0)+20>>2]|0)>>>0<4095)xj=c[(c[ra>>2]|0)+20>>2]|0;else xj=4095;c[Aa>>2]=xj;c[Ba>>2]=c[(c[qa>>2]|0)+4>>2];c[Ca>>2]=(c[sa>>2]|0)-(c[Ba>>2]|0);c[Da>>2]=c[(c[ra>>2]|0)+8>>2];c[Ea>>2]=(c[za>>2]|0)==3?3:4;c[Fa>>2]=c[(c[qa>>2]|0)+36>>2];c[Ga>>2]=Sj(c[sa>>2]|0,c[Da>>2]|0,c[za>>2]|0)|0;c[Ha>>2]=c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2];c[Ia>>2]=c[(c[qa>>2]|0)+44>>2];c[Ja>>2]=(c[(c[ra>>2]|0)+4>>2]|0)-1;c[Ka>>2]=(1<<c[Ja>>2])-1;c[La>>2]=0;c[Ma>>2]=0;c[Na>>2]=c[(c[qa>>2]|0)+8>>2];c[Oa>>2]=c[(c[qa>>2]|0)+12>>2];c[Pa>>2]=(c[Na>>2]|0)+(c[Oa>>2]|0);c[Qa>>2]=(c[Ba>>2]|0)+(c[Oa>>2]|0);if((c[Ka>>2]|0)>>>0>=(c[Ca>>2]|0)>>>0)yj=0;else yj=(c[Ca>>2]|0)-(c[Ka>>2]|0)|0;c[Ra>>2]=yj;c[Sa>>2]=c[(c[qa>>2]|0)+16>>2];c[Ta>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2);c[Ua>>2]=(c[Ia>>2]|0)+((c[Ca>>2]&c[Ka>>2])<<1<<2)+4;c[Va>>2]=(c[Ca>>2]|0)+8+1;c[Xa>>2]=0;c[Ya>>2]=1<<c[(c[ra>>2]|0)+12>>2];c[Za>>2]=(c[ya>>2]|0)-1;c[_a>>2]=3+(c[wa>>2]|0);c[$a>>2]=c[wa>>2];while(1){if((c[$a>>2]|0)>>>0>=(c[_a>>2]|0)>>>0){dj=393;break;}Uh=c[va>>2]|0;if((c[$a>>2]|0)==3)zj=(c[Uh>>2]|0)-1|0;else zj=c[Uh+(c[$a>>2]<<2)>>2]|0;c[ab>>2]=zj;c[bb>>2]=(c[Ca>>2]|0)-(c[ab>>2]|0);c[cb>>2]=0;do{if(((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Oa>>2]|0)|0)>>>0){Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm((c[sa>>2]|0)+(0-(c[ab>>2]|0))|0,c[Ea>>2]|0)|0))break;Uh=Tj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[sa>>2]|0)+(c[Ea>>2]|0)+(0-(c[ab>>2]|0))|0,c[ta>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}else{c[db>>2]=(c[Na>>2]|0)+(c[bb>>2]|0);if(!(c[ua>>2]|0))break;if(!((((c[Oa>>2]|0)-1-(c[bb>>2]|0)|0)>>>0>=3?((c[ab>>2]|0)-1|0)>>>0<((c[Ca>>2]|0)-(c[Sa>>2]|0)|0)>>>0:0)|0))break;Uh=mm(c[sa>>2]|0,c[Ea>>2]|0)|0;if((Uh|0)!=(mm(c[db>>2]|0,c[Ea>>2]|0)|0))break;Uh=Uj((c[sa>>2]|0)+(c[Ea>>2]|0)|0,(c[db>>2]|0)+(c[Ea>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[cb>>2]=Uh+(c[Ea>>2]|0);}}while(0);if((c[cb>>2]|0)>>>0>(c[Za>>2]|0)>>>0?(c[Za>>2]=c[cb>>2],c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[$a>>2]|0)-(c[wa>>2]|0),c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[cb>>2],c[Xa>>2]=(c[Xa>>2]|0)+1,((c[cb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[cb>>2]|0)|0)==(c[ta>>2]|0))|0):0){dj=391;break;}c[$a>>2]=(c[$a>>2]|0)+1;}g:do{if((dj|0)==391){dj=0;c[pa>>2]=c[Xa>>2];}else if((dj|0)==393){dj=0;do{if((c[za>>2]|0)==3){if((c[Za>>2]|0)>>>0>=(c[za>>2]|0)>>>0)break;c[eb>>2]=nm(c[qa>>2]|0,c[sa>>2]|0)|0;if(!(((c[eb>>2]|0)>>>0>(c[Sa>>2]|0)>>>0?((c[Ca>>2]|0)-(c[eb>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[ua>>2]|0){if((c[eb>>2]|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=398;break;}c[hb>>2]=(c[Na>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Uj(c[sa>>2]|0,c[hb>>2]|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;}else dj=398;}while(0);if((dj|0)==398){dj=0;c[gb>>2]=(c[Ba>>2]|0)+(c[eb>>2]|0);c[fb>>2]=Tj(c[sa>>2]|0,c[gb>>2]|0,c[ta>>2]|0)|0;}if((c[fb>>2]|0)>>>0<(c[za>>2]|0)>>>0)break;c[Za>>2]=c[fb>>2];c[c[xa>>2]>>2]=(c[Ca>>2]|0)-(c[eb>>2]|0)+2;c[(c[xa>>2]|0)+4>>2]=c[fb>>2];c[Xa>>2]=1;if(!(((c[fb>>2]|0)>>>0>(c[Aa>>2]|0)>>>0?1:((c[sa>>2]|0)+(c[fb>>2]|0)|0)==(c[ta>>2]|0))|0))break;c[(c[qa>>2]|0)+24>>2]=(c[Ca>>2]|0)+1;c[pa>>2]=1;break g;}}while(0);c[(c[Fa>>2]|0)+(c[Ga>>2]<<2)>>2]=c[Ca>>2];while(1){Uh=c[Ya>>2]|0;c[Ya>>2]=Uh+-1;if(!Uh)break;if((c[Ha>>2]|0)>>>0<=(c[Sa>>2]|0)>>>0)break;c[ib>>2]=(c[Ia>>2]|0)+((c[Ha>>2]&c[Ka>>2])<<1<<2);c[jb>>2]=(c[La>>2]|0)>>>0<(c[Ma>>2]|0)>>>0?c[La>>2]|0:c[Ma>>2]|0;do{if(c[ua>>2]|0){if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0>=(c[Oa>>2]|0)>>>0){dj=408;break;}c[kb>>2]=(c[Na>>2]|0)+(c[Ha>>2]|0);Uh=Uj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0,c[Pa>>2]|0,c[Qa>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;if(((c[Ha>>2]|0)+(c[jb>>2]|0)|0)>>>0<(c[Oa>>2]|0)>>>0)break;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);}else dj=408;}while(0);if((dj|0)==408){dj=0;c[kb>>2]=(c[Ba>>2]|0)+(c[Ha>>2]|0);Uh=Tj((c[sa>>2]|0)+(c[jb>>2]|0)|0,(c[kb>>2]|0)+(c[jb>>2]|0)|0,c[ta>>2]|0)|0;c[jb>>2]=(c[jb>>2]|0)+Uh;}if((c[jb>>2]|0)>>>0>(c[Za>>2]|0)>>>0){if((c[jb>>2]|0)>>>0>((c[Va>>2]|0)-(c[Ha>>2]|0)|0)>>>0)c[Va>>2]=(c[Ha>>2]|0)+(c[jb>>2]|0);c[Za>>2]=c[jb>>2];c[(c[xa>>2]|0)+(c[Xa>>2]<<3)>>2]=(c[Ca>>2]|0)-(c[Ha>>2]|0)+2;c[(c[xa>>2]|0)+(c[Xa>>2]<<3)+4>>2]=c[jb>>2];c[Xa>>2]=(c[Xa>>2]|0)+1;if((c[jb>>2]|0)>>>0>4096)break;if(((c[sa>>2]|0)+(c[jb>>2]|0)|0)==(c[ta>>2]|0))break;}Uh=c[Ha>>2]|0;if((d[(c[kb>>2]|0)+(c[jb>>2]|0)>>0]|0|0)<(d[(c[sa>>2]|0)+(c[jb>>2]|0)>>0]|0|0)){c[c[Ta>>2]>>2]=Uh;c[La>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=418;break;}c[Ta>>2]=(c[ib>>2]|0)+4;c[Ha>>2]=c[(c[ib>>2]|0)+4>>2];}else{c[c[Ua>>2]>>2]=Uh;c[Ma>>2]=c[jb>>2];if((c[Ha>>2]|0)>>>0<=(c[Ra>>2]|0)>>>0){dj=421;break;}c[Ua>>2]=c[ib>>2];c[Ha>>2]=c[c[ib>>2]>>2];}}if((dj|0)==418){dj=0;c[Ta>>2]=Wa;}else if((dj|0)==421){dj=0;c[Ua>>2]=Wa;}c[c[Ua>>2]>>2]=0;c[c[Ta>>2]>>2]=0;c[(c[qa>>2]|0)+24>>2]=(c[Va>>2]|0)-8;c[pa>>2]=c[Xa>>2];}}while(0);c[md>>2]=c[pa>>2];break d;break;}default:{Uh=c[od>>2]|0;aj=c[pd>>2]|0;_i=c[qd>>2]|0;_h=c[rd>>2]|0;Qh=c[sd>>2]|0;Ph=c[td>>2]|0;Zi=c[ud>>2]|0;Zh=c[vd>>2]|0;c[mb>>2]=c[nd>>2];c[nb>>2]=Uh;c[ob>>2]=aj;c[pb>>2]=_i;c[qb>>2]=_h;c[rb>>2]=Qh;c[sb>>2]=Ph;c[tb>>2]=Zi;c[ub>>2]=Zh;c[vb>>2]=4;if((c[(c[nb>>2]|0)+20>>2]|0)>>>0<4095)Aj=c[(c[nb>>2]|0)+20>>2]|0;else Aj=4095;c[wb>>2]=Aj;c[xb>>2]=c[(c[mb>>2]|0)+4>>2];c[yb>>2]=(c[ob>>2]|0)-(c[xb>>2]|0);c[zb>>2]=c[(c[nb>>2]|0)+8>>2];c[Ab>>2]=(c[vb>>2]|0)==3?3:4;c[Bb>>2]=c[(c[mb>>2]|0)+36>>2];c[Cb>>2]=Sj(c[ob>>2]|0,c[zb>>2]|0,c[vb>>2]|0)|0;c[Db>>2]=c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2];c[Eb>>2]=c[(c[mb>>2]|0)+44>>2];c[Fb>>2]=(c[(c[nb>>2]|0)+4>>2]|0)-1;c[Gb>>2]=(1<<c[Fb>>2])-1;c[Hb>>2]=0;c[Ib>>2]=0;c[Jb>>2]=c[(c[mb>>2]|0)+8>>2];c[Kb>>2]=c[(c[mb>>2]|0)+12>>2];c[Lb>>2]=(c[Jb>>2]|0)+(c[Kb>>2]|0);c[Mb>>2]=(c[xb>>2]|0)+(c[Kb>>2]|0);if((c[Gb>>2]|0)>>>0>=(c[yb>>2]|0)>>>0)Bj=0;else Bj=(c[yb>>2]|0)-(c[Gb>>2]|0)|0;c[Nb>>2]=Bj;c[Ob>>2]=c[(c[mb>>2]|0)+16>>2];c[Pb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2);c[Qb>>2]=(c[Eb>>2]|0)+((c[yb>>2]&c[Gb>>2])<<1<<2)+4;c[Rb>>2]=(c[yb>>2]|0)+8+1;c[Tb>>2]=0;c[Ub>>2]=1<<c[(c[nb>>2]|0)+12>>2];c[Vb>>2]=(c[ub>>2]|0)-1;c[Wb>>2]=3+(c[sb>>2]|0);c[Xb>>2]=c[sb>>2];while(1){if((c[Xb>>2]|0)>>>0>=(c[Wb>>2]|0)>>>0){dj=340;break;}Zh=c[rb>>2]|0;if((c[Xb>>2]|0)==3)Cj=(c[Zh>>2]|0)-1|0;else Cj=c[Zh+(c[Xb>>2]<<2)>>2]|0;c[Yb>>2]=Cj;c[Zb>>2]=(c[yb>>2]|0)-(c[Yb>>2]|0);c[_b>>2]=0;do{if(((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Kb>>2]|0)|0)>>>0){Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm((c[ob>>2]|0)+(0-(c[Yb>>2]|0))|0,c[Ab>>2]|0)|0))break;Zh=Tj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[ob>>2]|0)+(c[Ab>>2]|0)+(0-(c[Yb>>2]|0))|0,c[pb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}else{c[$b>>2]=(c[Jb>>2]|0)+(c[Zb>>2]|0);if(!(c[qb>>2]|0))break;if(!((((c[Kb>>2]|0)-1-(c[Zb>>2]|0)|0)>>>0>=3?((c[Yb>>2]|0)-1|0)>>>0<((c[yb>>2]|0)-(c[Ob>>2]|0)|0)>>>0:0)|0))break;Zh=mm(c[ob>>2]|0,c[Ab>>2]|0)|0;if((Zh|0)!=(mm(c[$b>>2]|0,c[Ab>>2]|0)|0))break;Zh=Uj((c[ob>>2]|0)+(c[Ab>>2]|0)|0,(c[$b>>2]|0)+(c[Ab>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[_b>>2]=Zh+(c[Ab>>2]|0);}}while(0);if((c[_b>>2]|0)>>>0>(c[Vb>>2]|0)>>>0?(c[Vb>>2]=c[_b>>2],c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[Xb>>2]|0)-(c[sb>>2]|0),c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[_b>>2],c[Tb>>2]=(c[Tb>>2]|0)+1,((c[_b>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[_b>>2]|0)|0)==(c[pb>>2]|0))|0):0){dj=338;break;}c[Xb>>2]=(c[Xb>>2]|0)+1;}h:do{if((dj|0)==338){dj=0;c[lb>>2]=c[Tb>>2];}else if((dj|0)==340){dj=0;do{if((c[vb>>2]|0)==3){if((c[Vb>>2]|0)>>>0>=(c[vb>>2]|0)>>>0)break;c[ac>>2]=nm(c[mb>>2]|0,c[ob>>2]|0)|0;if(!(((c[ac>>2]|0)>>>0>(c[Ob>>2]|0)>>>0?((c[yb>>2]|0)-(c[ac>>2]|0)|0)>>>0<262144:0)|0))break;do{if(c[qb>>2]|0){if((c[ac>>2]|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=345;break;}c[dc>>2]=(c[Jb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Uj(c[ob>>2]|0,c[dc>>2]|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;}else dj=345;}while(0);if((dj|0)==345){dj=0;c[cc>>2]=(c[xb>>2]|0)+(c[ac>>2]|0);c[bc>>2]=Tj(c[ob>>2]|0,c[cc>>2]|0,c[pb>>2]|0)|0;}if((c[bc>>2]|0)>>>0<(c[vb>>2]|0)>>>0)break;c[Vb>>2]=c[bc>>2];c[c[tb>>2]>>2]=(c[yb>>2]|0)-(c[ac>>2]|0)+2;c[(c[tb>>2]|0)+4>>2]=c[bc>>2];c[Tb>>2]=1;if(!(((c[bc>>2]|0)>>>0>(c[wb>>2]|0)>>>0?1:((c[ob>>2]|0)+(c[bc>>2]|0)|0)==(c[pb>>2]|0))|0))break;c[(c[mb>>2]|0)+24>>2]=(c[yb>>2]|0)+1;c[lb>>2]=1;break h;}}while(0);c[(c[Bb>>2]|0)+(c[Cb>>2]<<2)>>2]=c[yb>>2];while(1){Zh=c[Ub>>2]|0;c[Ub>>2]=Zh+-1;if(!Zh)break;if((c[Db>>2]|0)>>>0<=(c[Ob>>2]|0)>>>0)break;c[ec>>2]=(c[Eb>>2]|0)+((c[Db>>2]&c[Gb>>2])<<1<<2);c[fc>>2]=(c[Hb>>2]|0)>>>0<(c[Ib>>2]|0)>>>0?c[Hb>>2]|0:c[Ib>>2]|0;do{if(c[qb>>2]|0){if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0>=(c[Kb>>2]|0)>>>0){dj=355;break;}c[gc>>2]=(c[Jb>>2]|0)+(c[Db>>2]|0);Zh=Uj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0,c[Lb>>2]|0,c[Mb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;if(((c[Db>>2]|0)+(c[fc>>2]|0)|0)>>>0<(c[Kb>>2]|0)>>>0)break;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);}else dj=355;}while(0);if((dj|0)==355){dj=0;c[gc>>2]=(c[xb>>2]|0)+(c[Db>>2]|0);Zh=Tj((c[ob>>2]|0)+(c[fc>>2]|0)|0,(c[gc>>2]|0)+(c[fc>>2]|0)|0,c[pb>>2]|0)|0;c[fc>>2]=(c[fc>>2]|0)+Zh;}if((c[fc>>2]|0)>>>0>(c[Vb>>2]|0)>>>0){if((c[fc>>2]|0)>>>0>((c[Rb>>2]|0)-(c[Db>>2]|0)|0)>>>0)c[Rb>>2]=(c[Db>>2]|0)+(c[fc>>2]|0);c[Vb>>2]=c[fc>>2];c[(c[tb>>2]|0)+(c[Tb>>2]<<3)>>2]=(c[yb>>2]|0)-(c[Db>>2]|0)+2;c[(c[tb>>2]|0)+(c[Tb>>2]<<3)+4>>2]=c[fc>>2];c[Tb>>2]=(c[Tb>>2]|0)+1;if((c[fc>>2]|0)>>>0>4096)break;if(((c[ob>>2]|0)+(c[fc>>2]|0)|0)==(c[pb>>2]|0))break;}Zh=c[Db>>2]|0;if((d[(c[gc>>2]|0)+(c[fc>>2]|0)>>0]|0|0)<(d[(c[ob>>2]|0)+(c[fc>>2]|0)>>0]|0|0)){c[c[Pb>>2]>>2]=Zh;c[Hb>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=365;break;}c[Pb>>2]=(c[ec>>2]|0)+4;c[Db>>2]=c[(c[ec>>2]|0)+4>>2];}else{c[c[Qb>>2]>>2]=Zh;c[Ib>>2]=c[fc>>2];if((c[Db>>2]|0)>>>0<=(c[Nb>>2]|0)>>>0){dj=368;break;}c[Qb>>2]=c[ec>>2];c[Db>>2]=c[c[ec>>2]>>2];}}if((dj|0)==365){dj=0;c[Pb>>2]=Sb;}else if((dj|0)==368){dj=0;c[Qb>>2]=Sb;}c[c[Qb>>2]>>2]=0;c[c[Pb>>2]>>2]=0;c[(c[mb>>2]|0)+24>>2]=(c[Rb>>2]|0)-8;c[lb>>2]=c[Tb>>2];}}while(0);c[md>>2]=c[lb>>2];break d;}}}}while(0);c[Bi>>2]=c[md>>2];if(c[Bi>>2]|0){c[Di>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)+4>>2];if(((c[Di>>2]|0)>>>0>(c[$h>>2]|0)>>>0?1:((c[ei>>2]|0)+(c[Di>>2]|0)|0)>>>0>=4096)|0){dj=481;break b;}c[Ci>>2]=0;while(1){if((c[Ci>>2]|0)>>>0>=(c[Bi>>2]|0)>>>0)break c;c[Ei>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)>>2];pm(Fi,(c[bi>>2]|0)+((c[ei>>2]|0)*28|0)+16|0,c[Ei>>2]|0,c[xi>>2]|0);c[Gi>>2]=c[(c[ci>>2]|0)+(c[Ci>>2]<<3)+4>>2];if((c[Ci>>2]|0)>>>0>0)Dj=(c[(c[ci>>2]|0)+((c[Ci>>2]|0)-1<<3)+4>>2]|0)+1|0;else Dj=c[ai>>2]|0;c[Hi>>2]=Dj;c[Ii>>2]=c[Gi>>2];i:while(1){if((c[Ii>>2]|0)>>>0<(c[Hi>>2]|0)>>>0)break;c[Ji>>2]=(c[ei>>2]|0)+(c[Ii>>2]|0);Zh=c[Ai>>2]|0;Zi=c[Ii>>2]|0;Ph=c[Th>>2]|0;Qh=c[Rh>>2]|0;c[k>>2]=c[Ei>>2];c[m>>2]=Zi;c[n>>2]=Ph;c[o>>2]=Qh;c[q>>2]=qm((c[k>>2]|0)+1|0)|0;c[r>>2]=(c[m>>2]|0)-3;if(c[(c[n>>2]|0)+56>>2]|0){Qh=(qm((c[r>>2]|0)+1|0)|0)+16|0;c[j>>2]=Qh+(c[q>>2]|0);}else{Qh=(c[q>>2]|0)+(c[(c[n>>2]|0)+52>>2]|0)|0;c[p>>2]=Qh-(qm((c[(c[(c[n>>2]|0)+12>>2]|0)+(c[q>>2]<<2)>>2]|0)+1|0)|0);if((c[o>>2]|0)<2&(c[q>>2]|0)>>>0>=20)c[p>>2]=(c[p>>2]|0)+((c[q>>2]|0)-19<<1);c[s>>2]=rm(c[r>>2]|0)|0;Qh=(c[5840+(c[s>>2]<<2)>>2]|0)+(c[(c[n>>2]|0)+48>>2]|0)|0;Ph=Qh-(qm((c[(c[(c[n>>2]|0)+8>>2]|0)+(c[s>>2]<<2)>>2]|0)+1|0)|0)|0;c[p>>2]=(c[p>>2]|0)+Ph;c[j>>2]=c[p>>2];}c[Ki>>2]=Zh+(c[j>>2]|0);do{if((c[Ji>>2]|0)>>>0<=(c[fi>>2]|0)>>>0){if((c[Ki>>2]|0)<(c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]|0)){dj=496;break;}if(!(c[Rh>>2]|0))break i;}else dj=496;}while(0);if((dj|0)==496){dj=0;while(1){if((c[fi>>2]|0)>>>0>=(c[Ji>>2]|0)>>>0)break;c[(c[bi>>2]|0)+(((c[fi>>2]|0)+1|0)*28|0)>>2]=1073741824;c[fi>>2]=(c[fi>>2]|0)+1;}c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+8>>2]=c[Ii>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+4>>2]=c[Ei>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+12>>2]=c[yi>>2];c[(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)>>2]=c[Ki>>2];Zh=(c[bi>>2]|0)+((c[Ji>>2]|0)*28|0)+16|0;c[Zh>>2]=c[Fi>>2];c[Zh+4>>2]=c[Fi+4>>2];c[Zh+8>>2]=c[Fi+8>>2];}c[Ii>>2]=(c[Ii>>2]|0)+-1;}c[Ci>>2]=(c[Ci>>2]|0)+1;}}}}while(0);c[ei>>2]=(c[ei>>2]|0)+1;}if((dj|0)==481){dj=0;c[gi>>2]=c[Di>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[Bi>>2]|0)-1<<3)>>2];c[fi>>2]=(c[ei>>2]|0)+1;break;}else if((dj|0)==504){dj=0;c[gi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+8>>2];c[hi>>2]=c[(c[bi>>2]|0)+((c[fi>>2]|0)*28|0)+4>>2];c[ei>>2]=(c[fi>>2]|0)-(c[gi>>2]|0);break;}}else{c[gi>>2]=c[mi>>2];c[hi>>2]=c[(c[ci>>2]|0)+((c[ki>>2]|0)-1<<3)>>2];c[ei>>2]=0;c[fi>>2]=1;}}while(0);c[Li>>2]=c[gi>>2];c[Mi>>2]=c[hi>>2];c[Ni>>2]=c[ei>>2];while(1){c[Oi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2];c[Pi>>2]=c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+8>>2]=c[Li>>2];c[(c[bi>>2]|0)+((c[Ni>>2]|0)*28|0)+4>>2]=c[Mi>>2];c[Li>>2]=c[Oi>>2];c[Mi>>2]=c[Pi>>2];if((c[Oi>>2]|0)>>>0>(c[Ni>>2]|0)>>>0)break;c[Ni>>2]=(c[Ni>>2]|0)-(c[Oi>>2]|0);}c[Qi>>2]=0;while(1){if((c[Qi>>2]|0)>>>0>=(c[fi>>2]|0)>>>0)break;c[Ri>>2]=(c[Vh>>2]|0)-(c[Wh>>2]|0);c[Si>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+8>>2];c[Ti>>2]=c[(c[bi>>2]|0)+((c[Qi>>2]|0)*28|0)+4>>2];if((c[Si>>2]|0)==1){c[Vh>>2]=(c[Vh>>2]|0)+1;c[Qi>>2]=(c[Qi>>2]|0)+1;continue;}c[Qi>>2]=(c[Qi>>2]|0)+(c[Si>>2]|0);c[Vh>>2]=(c[Vh>>2]|0)+(c[Si>>2]|0);if((c[Ti>>2]|0)>>>0<3){c[Ui>>2]=(c[Ti>>2]|0)+((c[Ri>>2]|0)==0&1);if(c[Ui>>2]|0){Zh=c[Nh>>2]|0;if((c[Ui>>2]|0)==3)Ej=(c[Zh>>2]|0)-1|0;else Ej=c[Zh+(c[Ui>>2]<<2)>>2]|0;c[Vi>>2]=Ej;if((c[Ui>>2]|0)>>>0>=2)c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=c[Vi>>2];}}else{c[(c[Nh>>2]|0)+8>>2]=c[(c[Nh>>2]|0)+4>>2];c[(c[Nh>>2]|0)+4>>2]=c[c[Nh>>2]>>2];c[c[Nh>>2]>>2]=(c[Ti>>2]|0)-2;}vm(c[Th>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,c[Si>>2]|0);wm(c[Mh>>2]|0,c[Ri>>2]|0,c[Wh>>2]|0,c[Ti>>2]|0,(c[Si>>2]|0)-3|0);c[Wh>>2]=c[Vh>>2];}xm(c[Th>>2]|0);}l=i;return(c[Xh>>2]|0)-(c[Wh>>2]|0)|0;}function dm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;h=l;l=l+48|0;i=h+36|0;j=h+32|0;k=h+28|0;m=h+24|0;n=h+20|0;o=h+16|0;p=h+12|0;q=h+8|0;r=h+4|0;s=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=c[(c[n>>2]|0)+8>>2];c[r>>2]=c[(c[n>>2]|0)+16>>2];c[s>>2]=c[(c[n>>2]|0)+20>>2];switch(c[r>>2]|0){case 7:{c[i>>2]=hn(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[s>>2]|0,7)|0;t=c[i>>2]|0;l=h;return t|0;}case 5:{c[i>>2]=hn(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[s>>2]|0,5)|0;t=c[i>>2]|0;l=h;return t|0;}case 6:{c[i>>2]=hn(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[s>>2]|0,6)|0;t=c[i>>2]|0;l=h;return t|0;}default:{c[i>>2]=hn(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[s>>2]|0,4)|0;t=c[i>>2]|0;l=h;return t|0;}}return 0;}function em(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;h=l;l=l+32|0;i=h+28|0;j=h+24|0;k=h+20|0;m=h+16|0;n=h+12|0;o=h+8|0;p=h+4|0;q=h;c[j>>2]=a;c[k>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=c[(c[n>>2]|0)+16>>2];switch(c[q>>2]|0){case 7:{c[i>>2]=Zm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,7)|0;r=c[i>>2]|0;l=h;return r|0;}case 5:{c[i>>2]=Zm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,5)|0;r=c[i>>2]|0;l=h;return r|0;}case 6:{c[i>>2]=Zm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,6)|0;r=c[i>>2]|0;l=h;return r|0;}default:{c[i>>2]=Zm(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,4)|0;r=c[i>>2]|0;l=h;return r|0;}}return 0;}function fm(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;i=l;l=l+288|0;j=i+272|0;k=i+268|0;m=i+264|0;n=i+260|0;o=i+256|0;p=i+252|0;q=i+248|0;r=i+244|0;s=i+240|0;t=i+236|0;u=i+232|0;v=i+228|0;w=i+224|0;x=i+220|0;y=i+216|0;z=i+212|0;A=i+208|0;B=i+204|0;C=i+200|0;D=i+196|0;E=i+192|0;F=i+188|0;G=i+184|0;H=i+180|0;I=i+176|0;J=i+172|0;K=i+168|0;L=i+164|0;M=i+160|0;N=i+156|0;O=i+152|0;P=i+148|0;Q=i+144|0;R=i+140|0;S=i+136|0;T=i+132|0;U=i+128|0;V=i+124|0;W=i+120|0;X=i+116|0;Y=i+112|0;Z=i+108|0;_=i+104|0;$=i+100|0;aa=i+96|0;ba=i+92|0;ca=i+88|0;da=i+84|0;ea=i+80|0;fa=i+76|0;ga=i+72|0;ha=i+68|0;ia=i+64|0;ja=i+60|0;ka=i+56|0;la=i+52|0;ma=i+48|0;na=i+44|0;oa=i+40|0;pa=i+36|0;qa=i+32|0;ra=i+28|0;sa=i+24|0;ta=i+20|0;ua=i+16|0;va=i+12|0;wa=i+8|0;xa=i+4|0;ya=i;c[ta>>2]=a;c[ua>>2]=b;c[va>>2]=e;c[wa>>2]=f;c[xa>>2]=g;c[ya>>2]=h;h=c[ua>>2]|0;ua=c[va>>2]|0;va=c[wa>>2]|0;wa=c[xa>>2]|0;xa=c[ya>>2]|0;c[j>>2]=c[ta>>2];c[k>>2]=h;c[m>>2]=ua;c[n>>2]=va;c[o>>2]=wa;c[p>>2]=xa;c[q>>2]=0;c[r>>2]=0;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=c[(c[j>>2]|0)+4>>2];c[y>>2]=c[(c[j>>2]|0)+12>>2];c[z>>2]=c[(c[j>>2]|0)+16>>2];c[A>>2]=(c[x>>2]|0)+(c[y>>2]|0);c[B>>2]=c[(c[j>>2]|0)+8>>2];c[C>>2]=(c[B>>2]|0)+(c[y>>2]|0);c[D>>2]=(c[B>>2]|0)+(c[z>>2]|0);c[E>>2]=c[q>>2]|0?7:6;c[F>>2]=c[c[m>>2]>>2];c[G>>2]=c[(c[m>>2]|0)+4>>2];c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[A>>2]|0)&1);while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[H>>2]=0;c[I>>2]=0;c[J>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[t>>2]|0)-(c[x>>2]|0);c[L>>2]=(c[K>>2]|0)+1-(c[F>>2]|0);c[M>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[N>>2]=(c[M>>2]|0)+(c[L>>2]|0);if(!((((c[L>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[L>>2]|0)|0)>>>0>=3:0)|0?(q=Bk((c[t>>2]|0)+1|0)|0,(q|0)==(Bk(c[N>>2]|0)|0)):0)?(c[O>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[H>>2]=(Lm((c[t>>2]|0)+1+4|0,(c[N>>2]|0)+4|0,c[v>>2]|0,c[O>>2]|0,c[A>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[P>>2]=99999999;c[Q>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,P)|0;if((c[Q>>2]|0)>>>0>(c[H>>2]|0)>>>0){c[H>>2]=c[Q>>2];c[J>>2]=c[t>>2];c[I>>2]=c[P>>2];}if((c[H>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[R>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[S>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[T>>2]=(c[S>>2]|0)+(c[R>>2]|0),((c[R>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[R>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[T>>2]|0)|0)):0)?(c[U>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[V>>2]=(Lm((c[t>>2]|0)+4|0,(c[T>>2]|0)+4|0,c[v>>2]|0,c[U>>2]|0,c[A>>2]|0)|0)+4,c[W>>2]=(c[V>>2]|0)*3,q=(c[H>>2]|0)*3|0,c[X>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[V>>2]|0)>>>0>=4):0)?(c[W>>2]|0)>(c[X>>2]|0):0){c[H>>2]=c[V>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[Y>>2]=99999999;c[Z>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,Y)|0;q=c[Z>>2]<<2;c[_>>2]=q-(Mm((c[Y>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[$>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+4;if((c[Z>>2]|0)>>>0>=4?(c[_>>2]|0)>(c[$>>2]|0):0){c[H>>2]=c[Z>>2];c[I>>2]=c[Y>>2];c[J>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[aa>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[ba>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[ca>>2]=(c[ba>>2]|0)+(c[aa>>2]|0),((c[aa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[aa>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[ca>>2]|0)|0)):0)?(c[da>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[ea>>2]=(Lm((c[t>>2]|0)+4|0,(c[ca>>2]|0)+4|0,c[v>>2]|0,c[da>>2]|0,c[A>>2]|0)|0)+4,c[fa>>2]=c[ea>>2]<<2,q=c[H>>2]<<2,c[ga>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[ea>>2]|0)>>>0>=4):0)?(c[fa>>2]|0)>(c[ga>>2]|0):0){c[H>>2]=c[ea>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[ha>>2]=99999999;c[ia>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,ha)|0;q=c[ia>>2]<<2;c[ja>>2]=q-(Mm((c[ha>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[ka>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+7;if((c[ia>>2]|0)>>>0<4)break a;if((c[ja>>2]|0)<=(c[ka>>2]|0))break a;c[H>>2]=c[ia>>2];c[I>>2]=c[ha>>2];c[J>>2]=c[t>>2];}}while(0);if(c[I>>2]|0){c[la>>2]=(c[J>>2]|0)-(c[x>>2]|0)-((c[I>>2]|0)-2);c[ma>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?(c[B>>2]|0)+(c[la>>2]|0)|0:(c[x>>2]|0)+(c[la>>2]|0)|0;c[na>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[D>>2]|0:c[A>>2]|0;while(1){if((c[J>>2]|0)>>>0<=(c[u>>2]|0)>>>0)break;if((c[ma>>2]|0)>>>0<=(c[na>>2]|0)>>>0)break;if((d[(c[J>>2]|0)+-1>>0]|0|0)!=(d[(c[ma>>2]|0)+-1>>0]|0|0))break;c[J>>2]=(c[J>>2]|0)+-1;c[ma>>2]=(c[ma>>2]|0)+-1;c[H>>2]=(c[H>>2]|0)+1;}c[G>>2]=c[F>>2];c[F>>2]=(c[I>>2]|0)-2;}}c[oa>>2]=(c[J>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[oa>>2]|0,c[u>>2]|0,c[I>>2]|0,(c[H>>2]|0)-3|0);q=(c[J>>2]|0)+(c[H>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if((c[t>>2]|0)>>>0>(c[w>>2]|0)>>>0)break;c[pa>>2]=(c[t>>2]|0)-(c[x>>2]|0)-(c[G>>2]|0);c[qa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[ra>>2]=(c[qa>>2]|0)+(c[pa>>2]|0);if(!(((c[pa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[pa>>2]|0)|0)>>>0>=3:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk(c[ra>>2]|0)|0))break;c[sa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0;c[H>>2]=(Lm((c[t>>2]|0)+4|0,(c[ra>>2]|0)+4|0,c[v>>2]|0,c[sa>>2]|0,c[A>>2]|0)|0)+4;c[I>>2]=c[G>>2];c[G>>2]=c[F>>2];c[F>>2]=c[I>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[H>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[H>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[F>>2];c[(c[m>>2]|0)+4>>2]=c[G>>2];l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function gm(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;i=l;l=l+288|0;j=i+272|0;k=i+268|0;m=i+264|0;n=i+260|0;o=i+256|0;p=i+252|0;q=i+248|0;r=i+244|0;s=i+240|0;t=i+236|0;u=i+232|0;v=i+228|0;w=i+224|0;x=i+220|0;y=i+216|0;z=i+212|0;A=i+208|0;B=i+204|0;C=i+200|0;D=i+196|0;E=i+192|0;F=i+188|0;G=i+184|0;H=i+180|0;I=i+176|0;J=i+172|0;K=i+168|0;L=i+164|0;M=i+160|0;N=i+156|0;O=i+152|0;P=i+148|0;Q=i+144|0;R=i+140|0;S=i+136|0;T=i+132|0;U=i+128|0;V=i+124|0;W=i+120|0;X=i+116|0;Y=i+112|0;Z=i+108|0;_=i+104|0;$=i+100|0;aa=i+96|0;ba=i+92|0;ca=i+88|0;da=i+84|0;ea=i+80|0;fa=i+76|0;ga=i+72|0;ha=i+68|0;ia=i+64|0;ja=i+60|0;ka=i+56|0;la=i+52|0;ma=i+48|0;na=i+44|0;oa=i+40|0;pa=i+36|0;qa=i+32|0;ra=i+28|0;sa=i+24|0;ta=i+20|0;ua=i+16|0;va=i+12|0;wa=i+8|0;xa=i+4|0;ya=i;c[ta>>2]=a;c[ua>>2]=b;c[va>>2]=e;c[wa>>2]=f;c[xa>>2]=g;c[ya>>2]=h;h=c[ua>>2]|0;ua=c[va>>2]|0;va=c[wa>>2]|0;wa=c[xa>>2]|0;xa=c[ya>>2]|0;c[j>>2]=c[ta>>2];c[k>>2]=h;c[m>>2]=ua;c[n>>2]=va;c[o>>2]=wa;c[p>>2]=xa;c[q>>2]=0;c[r>>2]=1;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=c[(c[j>>2]|0)+4>>2];c[y>>2]=c[(c[j>>2]|0)+12>>2];c[z>>2]=c[(c[j>>2]|0)+16>>2];c[A>>2]=(c[x>>2]|0)+(c[y>>2]|0);c[B>>2]=c[(c[j>>2]|0)+8>>2];c[C>>2]=(c[B>>2]|0)+(c[y>>2]|0);c[D>>2]=(c[B>>2]|0)+(c[z>>2]|0);c[E>>2]=c[q>>2]|0?7:6;c[F>>2]=c[c[m>>2]>>2];c[G>>2]=c[(c[m>>2]|0)+4>>2];c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[A>>2]|0)&1);while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[H>>2]=0;c[I>>2]=0;c[J>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[t>>2]|0)-(c[x>>2]|0);c[L>>2]=(c[K>>2]|0)+1-(c[F>>2]|0);c[M>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[N>>2]=(c[M>>2]|0)+(c[L>>2]|0);if(!((((c[L>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[L>>2]|0)|0)>>>0>=3:0)|0?(q=Bk((c[t>>2]|0)+1|0)|0,(q|0)==(Bk(c[N>>2]|0)|0)):0)?(c[O>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[H>>2]=(Lm((c[t>>2]|0)+1+4|0,(c[N>>2]|0)+4|0,c[v>>2]|0,c[O>>2]|0,c[A>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[P>>2]=99999999;c[Q>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,P)|0;if((c[Q>>2]|0)>>>0>(c[H>>2]|0)>>>0){c[H>>2]=c[Q>>2];c[J>>2]=c[t>>2];c[I>>2]=c[P>>2];}if((c[H>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[R>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[S>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[T>>2]=(c[S>>2]|0)+(c[R>>2]|0),((c[R>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[R>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[T>>2]|0)|0)):0)?(c[U>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[V>>2]=(Lm((c[t>>2]|0)+4|0,(c[T>>2]|0)+4|0,c[v>>2]|0,c[U>>2]|0,c[A>>2]|0)|0)+4,c[W>>2]=(c[V>>2]|0)*3,q=(c[H>>2]|0)*3|0,c[X>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[V>>2]|0)>>>0>=4):0)?(c[W>>2]|0)>(c[X>>2]|0):0){c[H>>2]=c[V>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[Y>>2]=99999999;c[Z>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,Y)|0;q=c[Z>>2]<<2;c[_>>2]=q-(Mm((c[Y>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[$>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+4;if((c[Z>>2]|0)>>>0>=4?(c[_>>2]|0)>(c[$>>2]|0):0){c[H>>2]=c[Z>>2];c[I>>2]=c[Y>>2];c[J>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[aa>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[ba>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[ca>>2]=(c[ba>>2]|0)+(c[aa>>2]|0),((c[aa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[aa>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[ca>>2]|0)|0)):0)?(c[da>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[ea>>2]=(Lm((c[t>>2]|0)+4|0,(c[ca>>2]|0)+4|0,c[v>>2]|0,c[da>>2]|0,c[A>>2]|0)|0)+4,c[fa>>2]=c[ea>>2]<<2,q=c[H>>2]<<2,c[ga>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[ea>>2]|0)>>>0>=4):0)?(c[fa>>2]|0)>(c[ga>>2]|0):0){c[H>>2]=c[ea>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[ha>>2]=99999999;c[ia>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,ha)|0;q=c[ia>>2]<<2;c[ja>>2]=q-(Mm((c[ha>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[ka>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+7;if((c[ia>>2]|0)>>>0<4)break a;if((c[ja>>2]|0)<=(c[ka>>2]|0))break a;c[H>>2]=c[ia>>2];c[I>>2]=c[ha>>2];c[J>>2]=c[t>>2];}}while(0);if(c[I>>2]|0){c[la>>2]=(c[J>>2]|0)-(c[x>>2]|0)-((c[I>>2]|0)-2);c[ma>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?(c[B>>2]|0)+(c[la>>2]|0)|0:(c[x>>2]|0)+(c[la>>2]|0)|0;c[na>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[D>>2]|0:c[A>>2]|0;while(1){if((c[J>>2]|0)>>>0<=(c[u>>2]|0)>>>0)break;if((c[ma>>2]|0)>>>0<=(c[na>>2]|0)>>>0)break;if((d[(c[J>>2]|0)+-1>>0]|0|0)!=(d[(c[ma>>2]|0)+-1>>0]|0|0))break;c[J>>2]=(c[J>>2]|0)+-1;c[ma>>2]=(c[ma>>2]|0)+-1;c[H>>2]=(c[H>>2]|0)+1;}c[G>>2]=c[F>>2];c[F>>2]=(c[I>>2]|0)-2;}}c[oa>>2]=(c[J>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[oa>>2]|0,c[u>>2]|0,c[I>>2]|0,(c[H>>2]|0)-3|0);q=(c[J>>2]|0)+(c[H>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if((c[t>>2]|0)>>>0>(c[w>>2]|0)>>>0)break;c[pa>>2]=(c[t>>2]|0)-(c[x>>2]|0)-(c[G>>2]|0);c[qa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[ra>>2]=(c[qa>>2]|0)+(c[pa>>2]|0);if(!(((c[pa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[pa>>2]|0)|0)>>>0>=3:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk(c[ra>>2]|0)|0))break;c[sa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0;c[H>>2]=(Lm((c[t>>2]|0)+4|0,(c[ra>>2]|0)+4|0,c[v>>2]|0,c[sa>>2]|0,c[A>>2]|0)|0)+4;c[I>>2]=c[G>>2];c[G>>2]=c[F>>2];c[F>>2]=c[I>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[H>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[H>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[F>>2];c[(c[m>>2]|0)+4>>2]=c[G>>2];l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function hm(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;i=l;l=l+288|0;j=i+272|0;k=i+268|0;m=i+264|0;n=i+260|0;o=i+256|0;p=i+252|0;q=i+248|0;r=i+244|0;s=i+240|0;t=i+236|0;u=i+232|0;v=i+228|0;w=i+224|0;x=i+220|0;y=i+216|0;z=i+212|0;A=i+208|0;B=i+204|0;C=i+200|0;D=i+196|0;E=i+192|0;F=i+188|0;G=i+184|0;H=i+180|0;I=i+176|0;J=i+172|0;K=i+168|0;L=i+164|0;M=i+160|0;N=i+156|0;O=i+152|0;P=i+148|0;Q=i+144|0;R=i+140|0;S=i+136|0;T=i+132|0;U=i+128|0;V=i+124|0;W=i+120|0;X=i+116|0;Y=i+112|0;Z=i+108|0;_=i+104|0;$=i+100|0;aa=i+96|0;ba=i+92|0;ca=i+88|0;da=i+84|0;ea=i+80|0;fa=i+76|0;ga=i+72|0;ha=i+68|0;ia=i+64|0;ja=i+60|0;ka=i+56|0;la=i+52|0;ma=i+48|0;na=i+44|0;oa=i+40|0;pa=i+36|0;qa=i+32|0;ra=i+28|0;sa=i+24|0;ta=i+20|0;ua=i+16|0;va=i+12|0;wa=i+8|0;xa=i+4|0;ya=i;c[ta>>2]=a;c[ua>>2]=b;c[va>>2]=e;c[wa>>2]=f;c[xa>>2]=g;c[ya>>2]=h;h=c[ua>>2]|0;ua=c[va>>2]|0;va=c[wa>>2]|0;wa=c[xa>>2]|0;xa=c[ya>>2]|0;c[j>>2]=c[ta>>2];c[k>>2]=h;c[m>>2]=ua;c[n>>2]=va;c[o>>2]=wa;c[p>>2]=xa;c[q>>2]=0;c[r>>2]=2;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=c[(c[j>>2]|0)+4>>2];c[y>>2]=c[(c[j>>2]|0)+12>>2];c[z>>2]=c[(c[j>>2]|0)+16>>2];c[A>>2]=(c[x>>2]|0)+(c[y>>2]|0);c[B>>2]=c[(c[j>>2]|0)+8>>2];c[C>>2]=(c[B>>2]|0)+(c[y>>2]|0);c[D>>2]=(c[B>>2]|0)+(c[z>>2]|0);c[E>>2]=c[q>>2]|0?7:6;c[F>>2]=c[c[m>>2]>>2];c[G>>2]=c[(c[m>>2]|0)+4>>2];c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[A>>2]|0)&1);while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[H>>2]=0;c[I>>2]=0;c[J>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[t>>2]|0)-(c[x>>2]|0);c[L>>2]=(c[K>>2]|0)+1-(c[F>>2]|0);c[M>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[N>>2]=(c[M>>2]|0)+(c[L>>2]|0);if(!((((c[L>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[L>>2]|0)|0)>>>0>=3:0)|0?(q=Bk((c[t>>2]|0)+1|0)|0,(q|0)==(Bk(c[N>>2]|0)|0)):0)?(c[O>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[H>>2]=(Lm((c[t>>2]|0)+1+4|0,(c[N>>2]|0)+4|0,c[v>>2]|0,c[O>>2]|0,c[A>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[P>>2]=99999999;c[Q>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,P)|0;if((c[Q>>2]|0)>>>0>(c[H>>2]|0)>>>0){c[H>>2]=c[Q>>2];c[J>>2]=c[t>>2];c[I>>2]=c[P>>2];}if((c[H>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[R>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[S>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[T>>2]=(c[S>>2]|0)+(c[R>>2]|0),((c[R>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[R>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[T>>2]|0)|0)):0)?(c[U>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[V>>2]=(Lm((c[t>>2]|0)+4|0,(c[T>>2]|0)+4|0,c[v>>2]|0,c[U>>2]|0,c[A>>2]|0)|0)+4,c[W>>2]=(c[V>>2]|0)*3,q=(c[H>>2]|0)*3|0,c[X>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[V>>2]|0)>>>0>=4):0)?(c[W>>2]|0)>(c[X>>2]|0):0){c[H>>2]=c[V>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[Y>>2]=99999999;c[Z>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,Y)|0;q=c[Z>>2]<<2;c[_>>2]=q-(Mm((c[Y>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[$>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+4;if((c[Z>>2]|0)>>>0>=4?(c[_>>2]|0)>(c[$>>2]|0):0){c[H>>2]=c[Z>>2];c[I>>2]=c[Y>>2];c[J>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[aa>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[ba>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[ca>>2]=(c[ba>>2]|0)+(c[aa>>2]|0),((c[aa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[aa>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[ca>>2]|0)|0)):0)?(c[da>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[ea>>2]=(Lm((c[t>>2]|0)+4|0,(c[ca>>2]|0)+4|0,c[v>>2]|0,c[da>>2]|0,c[A>>2]|0)|0)+4,c[fa>>2]=c[ea>>2]<<2,q=c[H>>2]<<2,c[ga>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[ea>>2]|0)>>>0>=4):0)?(c[fa>>2]|0)>(c[ga>>2]|0):0){c[H>>2]=c[ea>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[ha>>2]=99999999;c[ia>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,ha)|0;q=c[ia>>2]<<2;c[ja>>2]=q-(Mm((c[ha>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[ka>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+7;if((c[ia>>2]|0)>>>0<4)break a;if((c[ja>>2]|0)<=(c[ka>>2]|0))break a;c[H>>2]=c[ia>>2];c[I>>2]=c[ha>>2];c[J>>2]=c[t>>2];}}while(0);if(c[I>>2]|0){c[la>>2]=(c[J>>2]|0)-(c[x>>2]|0)-((c[I>>2]|0)-2);c[ma>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?(c[B>>2]|0)+(c[la>>2]|0)|0:(c[x>>2]|0)+(c[la>>2]|0)|0;c[na>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[D>>2]|0:c[A>>2]|0;while(1){if((c[J>>2]|0)>>>0<=(c[u>>2]|0)>>>0)break;if((c[ma>>2]|0)>>>0<=(c[na>>2]|0)>>>0)break;if((d[(c[J>>2]|0)+-1>>0]|0|0)!=(d[(c[ma>>2]|0)+-1>>0]|0|0))break;c[J>>2]=(c[J>>2]|0)+-1;c[ma>>2]=(c[ma>>2]|0)+-1;c[H>>2]=(c[H>>2]|0)+1;}c[G>>2]=c[F>>2];c[F>>2]=(c[I>>2]|0)-2;}}c[oa>>2]=(c[J>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[oa>>2]|0,c[u>>2]|0,c[I>>2]|0,(c[H>>2]|0)-3|0);q=(c[J>>2]|0)+(c[H>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if((c[t>>2]|0)>>>0>(c[w>>2]|0)>>>0)break;c[pa>>2]=(c[t>>2]|0)-(c[x>>2]|0)-(c[G>>2]|0);c[qa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[ra>>2]=(c[qa>>2]|0)+(c[pa>>2]|0);if(!(((c[pa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[pa>>2]|0)|0)>>>0>=3:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk(c[ra>>2]|0)|0))break;c[sa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0;c[H>>2]=(Lm((c[t>>2]|0)+4|0,(c[ra>>2]|0)+4|0,c[v>>2]|0,c[sa>>2]|0,c[A>>2]|0)|0)+4;c[I>>2]=c[G>>2];c[G>>2]=c[F>>2];c[F>>2]=c[I>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[H>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[H>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[F>>2];c[(c[m>>2]|0)+4>>2]=c[G>>2];l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function im(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;i=l;l=l+288|0;j=i+272|0;k=i+268|0;m=i+264|0;n=i+260|0;o=i+256|0;p=i+252|0;q=i+248|0;r=i+244|0;s=i+240|0;t=i+236|0;u=i+232|0;v=i+228|0;w=i+224|0;x=i+220|0;y=i+216|0;z=i+212|0;A=i+208|0;B=i+204|0;C=i+200|0;D=i+196|0;E=i+192|0;F=i+188|0;G=i+184|0;H=i+180|0;I=i+176|0;J=i+172|0;K=i+168|0;L=i+164|0;M=i+160|0;N=i+156|0;O=i+152|0;P=i+148|0;Q=i+144|0;R=i+140|0;S=i+136|0;T=i+132|0;U=i+128|0;V=i+124|0;W=i+120|0;X=i+116|0;Y=i+112|0;Z=i+108|0;_=i+104|0;$=i+100|0;aa=i+96|0;ba=i+92|0;ca=i+88|0;da=i+84|0;ea=i+80|0;fa=i+76|0;ga=i+72|0;ha=i+68|0;ia=i+64|0;ja=i+60|0;ka=i+56|0;la=i+52|0;ma=i+48|0;na=i+44|0;oa=i+40|0;pa=i+36|0;qa=i+32|0;ra=i+28|0;sa=i+24|0;ta=i+20|0;ua=i+16|0;va=i+12|0;wa=i+8|0;xa=i+4|0;ya=i;c[ta>>2]=a;c[ua>>2]=b;c[va>>2]=e;c[wa>>2]=f;c[xa>>2]=g;c[ya>>2]=h;h=c[ua>>2]|0;ua=c[va>>2]|0;va=c[wa>>2]|0;wa=c[xa>>2]|0;xa=c[ya>>2]|0;c[j>>2]=c[ta>>2];c[k>>2]=h;c[m>>2]=ua;c[n>>2]=va;c[o>>2]=wa;c[p>>2]=xa;c[q>>2]=1;c[r>>2]=2;c[s>>2]=c[o>>2];c[t>>2]=c[s>>2];c[u>>2]=c[s>>2];c[v>>2]=(c[s>>2]|0)+(c[p>>2]|0);c[w>>2]=(c[v>>2]|0)+-8;c[x>>2]=c[(c[j>>2]|0)+4>>2];c[y>>2]=c[(c[j>>2]|0)+12>>2];c[z>>2]=c[(c[j>>2]|0)+16>>2];c[A>>2]=(c[x>>2]|0)+(c[y>>2]|0);c[B>>2]=c[(c[j>>2]|0)+8>>2];c[C>>2]=(c[B>>2]|0)+(c[y>>2]|0);c[D>>2]=(c[B>>2]|0)+(c[z>>2]|0);c[E>>2]=c[q>>2]|0?7:6;c[F>>2]=c[c[m>>2]>>2];c[G>>2]=c[(c[m>>2]|0)+4>>2];c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];c[t>>2]=(c[t>>2]|0)+((c[t>>2]|0)==(c[A>>2]|0)&1);while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;c[H>>2]=0;c[I>>2]=0;c[J>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[t>>2]|0)-(c[x>>2]|0);c[L>>2]=(c[K>>2]|0)+1-(c[F>>2]|0);c[M>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[N>>2]=(c[M>>2]|0)+(c[L>>2]|0);if(!((((c[L>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[L>>2]|0)|0)>>>0>=3:0)|0?(q=Bk((c[t>>2]|0)+1|0)|0,(q|0)==(Bk(c[N>>2]|0)|0)):0)?(c[O>>2]=(c[L>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[H>>2]=(Lm((c[t>>2]|0)+1+4|0,(c[N>>2]|0)+4|0,c[v>>2]|0,c[O>>2]|0,c[A>>2]|0)|0)+4,!(c[r>>2]|0)):0)){c[P>>2]=99999999;c[Q>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,P)|0;if((c[Q>>2]|0)>>>0>(c[H>>2]|0)>>>0){c[H>>2]=c[Q>>2];c[J>>2]=c[t>>2];c[I>>2]=c[P>>2];}if((c[H>>2]|0)>>>0<4){c[t>>2]=(c[t>>2]|0)+(((c[t>>2]|0)-(c[u>>2]|0)>>8)+1);continue;}a:do{if((c[r>>2]|0)>>>0>=1)while(1){if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[R>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[S>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[T>>2]=(c[S>>2]|0)+(c[R>>2]|0),((c[R>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[R>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[T>>2]|0)|0)):0)?(c[U>>2]=(c[R>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[V>>2]=(Lm((c[t>>2]|0)+4|0,(c[T>>2]|0)+4|0,c[v>>2]|0,c[U>>2]|0,c[A>>2]|0)|0)+4,c[W>>2]=(c[V>>2]|0)*3,q=(c[H>>2]|0)*3|0,c[X>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[V>>2]|0)>>>0>=4):0)?(c[W>>2]|0)>(c[X>>2]|0):0){c[H>>2]=c[V>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[Y>>2]=99999999;c[Z>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,Y)|0;q=c[Z>>2]<<2;c[_>>2]=q-(Mm((c[Y>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[$>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+4;if((c[Z>>2]|0)>>>0>=4?(c[_>>2]|0)>(c[$>>2]|0):0){c[H>>2]=c[Z>>2];c[I>>2]=c[Y>>2];c[J>>2]=c[t>>2];continue;}if((c[r>>2]|0)!=2)break a;if((c[t>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break a;c[t>>2]=(c[t>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+1;if((((c[I>>2]|0?(c[aa>>2]=(c[K>>2]|0)-(c[F>>2]|0),c[ba>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0,c[ca>>2]=(c[ba>>2]|0)+(c[aa>>2]|0),((c[aa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[aa>>2]|0)|0)>>>0>=3:0)|0):0)?(q=Bk(c[t>>2]|0)|0,(q|0)==(Bk(c[ca>>2]|0)|0)):0)?(c[da>>2]=(c[aa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0,c[ea>>2]=(Lm((c[t>>2]|0)+4|0,(c[ca>>2]|0)+4|0,c[v>>2]|0,c[da>>2]|0,c[A>>2]|0)|0)+4,c[fa>>2]=c[ea>>2]<<2,q=c[H>>2]<<2,c[ga>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+1,(c[ea>>2]|0)>>>0>=4):0)?(c[fa>>2]|0)>(c[ga>>2]|0):0){c[H>>2]=c[ea>>2];c[I>>2]=0;c[J>>2]=c[t>>2];}c[ha>>2]=99999999;c[ia>>2]=tc[c[E>>2]&7](c[j>>2]|0,c[n>>2]|0,c[t>>2]|0,c[v>>2]|0,ha)|0;q=c[ia>>2]<<2;c[ja>>2]=q-(Mm((c[ha>>2]|0)+1|0)|0);q=c[H>>2]<<2;c[ka>>2]=q-(Mm((c[I>>2]|0)+1|0)|0)+7;if((c[ia>>2]|0)>>>0<4)break a;if((c[ja>>2]|0)<=(c[ka>>2]|0))break a;c[H>>2]=c[ia>>2];c[I>>2]=c[ha>>2];c[J>>2]=c[t>>2];}}while(0);if(c[I>>2]|0){c[la>>2]=(c[J>>2]|0)-(c[x>>2]|0)-((c[I>>2]|0)-2);c[ma>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?(c[B>>2]|0)+(c[la>>2]|0)|0:(c[x>>2]|0)+(c[la>>2]|0)|0;c[na>>2]=(c[la>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[D>>2]|0:c[A>>2]|0;while(1){if((c[J>>2]|0)>>>0<=(c[u>>2]|0)>>>0)break;if((c[ma>>2]|0)>>>0<=(c[na>>2]|0)>>>0)break;if((d[(c[J>>2]|0)+-1>>0]|0|0)!=(d[(c[ma>>2]|0)+-1>>0]|0|0))break;c[J>>2]=(c[J>>2]|0)+-1;c[ma>>2]=(c[ma>>2]|0)+-1;c[H>>2]=(c[H>>2]|0)+1;}c[G>>2]=c[F>>2];c[F>>2]=(c[I>>2]|0)-2;}}c[oa>>2]=(c[J>>2]|0)-(c[u>>2]|0);Nm(c[k>>2]|0,c[oa>>2]|0,c[u>>2]|0,c[I>>2]|0,(c[H>>2]|0)-3|0);q=(c[J>>2]|0)+(c[H>>2]|0)|0;c[t>>2]=q;c[u>>2]=q;while(1){if((c[t>>2]|0)>>>0>(c[w>>2]|0)>>>0)break;c[pa>>2]=(c[t>>2]|0)-(c[x>>2]|0)-(c[G>>2]|0);c[qa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[B>>2]|0:c[x>>2]|0;c[ra>>2]=(c[qa>>2]|0)+(c[pa>>2]|0);if(!(((c[pa>>2]|0)>>>0>(c[z>>2]|0)>>>0?((c[y>>2]|0)-1-(c[pa>>2]|0)|0)>>>0>=3:0)|0))break;q=Bk(c[t>>2]|0)|0;if((q|0)!=(Bk(c[ra>>2]|0)|0))break;c[sa>>2]=(c[pa>>2]|0)>>>0<(c[y>>2]|0)>>>0?c[C>>2]|0:c[v>>2]|0;c[H>>2]=(Lm((c[t>>2]|0)+4|0,(c[ra>>2]|0)+4|0,c[v>>2]|0,c[sa>>2]|0,c[A>>2]|0)|0)+4;c[I>>2]=c[G>>2];c[G>>2]=c[F>>2];c[F>>2]=c[I>>2];Nm(c[k>>2]|0,0,c[u>>2]|0,0,(c[H>>2]|0)-3|0);c[t>>2]=(c[t>>2]|0)+(c[H>>2]|0);c[u>>2]=c[t>>2];}}c[c[m>>2]>>2]=c[F>>2];c[(c[m>>2]|0)+4>>2]=c[G>>2];l=i;return(c[v>>2]|0)-(c[u>>2]|0)|0;}function DC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;f=l;l=l+80|0;g=f+56|0;h=f+40|0;i=f+28|0;j=f+12|0;k=f;m=f+24|0;a:do{if((d-b|0)>2?(a[b>>0]|0)==85:0){switch(a[b+1>>0]|0){case 116:{c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;RB(h,19476,AB(19476)|0);IB(g,h);n=e+4|0;o=c[n>>2]|0;if(o>>>0<(c[e+8>>2]|0)>>>0){KB(o,g);c[n>>2]=(c[n>>2]|0)+24;}else LB(e,g);QA(g);iB(h);o=b+2|0;if((o|0)==(d|0)){p=c[n>>2]|0;q=0;while(1){if((q|0)==-1)break;r=q+-1|0;QA(p+(r*24|0)|0);q=r;}c[n>>2]=p+-24;s=b;break a;}if(((a[o>>0]|0)+-48|0)>>>0<10){q=b+3|0;while(1){if((q|0)==(d|0)){t=d;break;}if(((a[q>>0]|0)+-48|0)>>>0>=10){t=q;break;}q=q+1|0;}MC((c[n>>2]|0)+-24|0,o,t);u=t;}else u=o;NC((c[n>>2]|0)+-24|0,39);if((u|0)!=(d|0)?(a[u>>0]|0)==95:0){s=u+1|0;break a;}q=c[n>>2]|0;p=0;while(1){if((p|0)==-1)break;r=p+-1|0;QA(q+(r*24|0)|0);p=r;}c[n>>2]=q+-24;s=b;break a;break;}case 108:break;default:{s=b;break a;}}c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;RB(i,19485,AB(19485)|0);IB(g,i);p=e+4|0;o=c[p>>2]|0;if(o>>>0<(c[e+8>>2]|0)>>>0){KB(o,g);c[p>>2]=(c[p>>2]|0)+24;}else LB(e,g);QA(g);iB(i);o=b+2|0;do{if((a[o>>0]|0)!=118){r=mB(o,d,e)|0;if((r|0)==(o|0)){v=c[p>>2]|0;w=0;while(1){if((w|0)==-1)break;x=w+-1|0;QA(v+(x*24|0)|0);w=x;}c[p>>2]=v+-24;s=b;break a;}w=c[p>>2]|0;if(((w-(c[e>>2]|0)|0)/24|0)>>>0<2){s=b;break a;}FB(j,w+-24|0);w=c[p>>2]|0;x=0;while(1){if((x|0)==-1)break;y=x+-1|0;QA(w+(y*24|0)|0);x=y;}c[p>>2]=w+-24;x=j+11|0;v=a[x>>0]|0;y=v<<24>>24<0;z=j+4|0;TA(w+-48|0,y?c[j>>2]|0:j,y?c[z>>2]|0:v&255)|0;v=r;while(1){y=mB(v,d,e)|0;if((y|0)==(v|0)){A=54;break;}B=c[p>>2]|0;if(((B-(c[e>>2]|0)|0)/24|0)>>>0<2){A=82;break;}FB(k,B+-24|0);if((a[x>>0]|0)<0){B=c[j>>2]|0;a[g>>0]=0;cB(B,g);c[z>>2]=0;}else{a[g>>0]=0;cB(j,g);a[x>>0]=0;}TB(j);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];B=0;while(1){if((B|0)==3)break;c[k+(B<<2)>>2]=0;B=B+1|0;}iB(k);B=c[p>>2]|0;C=0;while(1){if((C|0)==-1)break;D=C+-1|0;QA(B+(D*24|0)|0);C=D;}c[p>>2]=B+-24;C=a[x>>0]|0;if((C<<24>>24<0?c[z>>2]|0:C&255)|0){qB(B+-48|0,18897)|0;C=a[x>>0]|0;D=C<<24>>24<0;TA((c[p>>2]|0)+-24|0,D?c[j>>2]|0:j,D?c[z>>2]|0:C&255)|0;}v=y;}if((A|0)==54){qB((c[p>>2]|0)+-24|0,18673)|0;iB(j);E=v;break;}else if((A|0)==82){iB(j);s=b;break a;}}else{NC((c[p>>2]|0)+-24|0,41);E=b+3|0;}}while(0);if((E|0)!=(d|0)?(a[E>>0]|0)==69:0){o=E+1|0;if((o|0)==(d|0)){q=c[p>>2]|0;n=0;while(1){if((n|0)==-1)break;z=n+-1|0;QA(q+(z*24|0)|0);n=z;}c[p>>2]=q+-24;s=b;break;}if(((a[o>>0]|0)+-48|0)>>>0<10){n=E+2|0;while(1){if((n|0)==(d|0)){F=d;break;}if(((a[n>>0]|0)+-48|0)>>>0>=10){F=n;break;}n=n+1|0;}n=(c[p>>2]|0)+-24|0;if((a[n+11>>0]|0)<0)G=c[n>>2]|0;else G=n;c[m>>2]=G+7;c[g>>2]=c[m>>2];OC(n,g,o,F)|0;H=F;}else H=o;if((H|0)!=(d|0)?(a[H>>0]|0)==95:0){s=H+1|0;break;}n=c[p>>2]|0;q=0;while(1){if((q|0)==-1)break;z=q+-1|0;QA(n+(z*24|0)|0);q=z;}c[p>>2]=n+-24;s=b;break;}q=c[p>>2]|0;o=0;while(1){if((o|0)==-1)break;z=o+-1|0;QA(q+(z*24|0)|0);o=z;}c[p>>2]=q+-24;s=b;}else s=b;}while(0);l=f;return s|0;}function EC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+32|0;g=f;a:do{if((d-b|0)>1)do{switch(a[b>>0]|0){case 97:{switch(a[b+1>>0]|0){case 97:{FC(g,18975);h=e+4|0;i=c[h>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[h>>2]=(c[h>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 110:case 100:{GC(g,18986);h=e+4|0;i=c[h>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[h>>2]=(c[h>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 78:{FC(g,18996);h=e+4|0;i=c[h>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[h>>2]=(c[h>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 83:{GC(g,19007);h=e+4|0;i=c[h>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[h>>2]=(c[h>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 99:{switch(a[b+1>>0]|0){case 108:{FC(g,19017);h=e+4|0;i=c[h>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[h>>2]=(c[h>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 109:{GC(g,19028);h=e+4|0;i=c[h>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[h>>2]=(c[h>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 111:{GC(g,19038);h=e+4|0;i=c[h>>2]|0;if(i>>>0<(c[e+8>>2]|0)>>>0){KB(i,g);c[h>>2]=(c[h>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 118:{h=e+63|0;i=a[h>>0]|0;a[h>>0]=0;k=b+2|0;m=mB(k,d,e)|0;a[h>>0]=i;if((m|0)==(k|0)){j=b;break a;}k=c[e+4>>2]|0;if((c[e>>2]|0)==(k|0)){j=b;break a;}pB(k+-24|0,0,19048)|0;a[e+60>>0]=1;j=m;break a;break;}default:{j=b;break a;}}break;}case 100:{switch(a[b+1>>0]|0){case 97:{HC(g,19058);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 101:{GC(g,19076);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 108:{IC(g);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 118:{GC(g,19086);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 86:{FC(g,19096);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 101:{switch(a[b+1>>0]|0){case 111:{GC(g,19107);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 79:{FC(g,19117);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 113:{FC(g,19128);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 103:{switch(a[b+1>>0]|0){case 101:{FC(g,19139);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 116:{GC(g,19150);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 105:{if((a[b+1>>0]|0)!=120){j=b;break a;}FC(g,19160);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 108:{switch(a[b+1>>0]|0){case 101:{FC(g,19171);m=e+4|0;k=c[m>>2]|0;if(k>>>0<(c[e+8>>2]|0)>>>0){KB(k,g);c[m>>2]=(c[m>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 105:{m=b+2|0;k=GB(m,d,e)|0;if((k|0)==(m|0)){j=b;break a;}m=c[e+4>>2]|0;if((c[e>>2]|0)==(m|0)){j=b;break a;}pB(m+-24|0,0,19182)|0;j=k;break a;break;}case 115:{FC(g,19194);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 83:{JC(g,19205);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 116:{GC(g,19217);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 109:{switch(a[b+1>>0]|0){case 105:{GC(g,19227);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 73:{FC(g,19237);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 108:{GC(g,19076);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 76:{FC(g,19248);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 109:{FC(g,19259);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 110:{switch(a[b+1>>0]|0){case 97:{KC(g,19270);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 101:{FC(g,19285);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 103:{GC(g,19227);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 116:{GC(g,19296);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 119:{LC(g,19306);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 111:{switch(a[b+1>>0]|0){case 111:{FC(g,19319);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 114:{GC(g,19330);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 82:{FC(g,19340);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 112:{switch(a[b+1>>0]|0){case 109:{JC(g,19351);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 108:{GC(g,19363);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 76:{FC(g,19373);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 112:{FC(g,19384);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 115:{GC(g,19363);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 116:{FC(g,19395);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 113:{if((a[b+1>>0]|0)!=117){j=b;break a;}GC(g,19406);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 114:{switch(a[b+1>>0]|0){case 109:{GC(g,19416);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 77:{FC(g,19426);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 115:{FC(g,19437);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}case 83:{JC(g,19448);k=e+4|0;m=c[k>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[k>>2]=(c[k>>2]|0)+24;}else LB(e,g);QA(g);j=b+2|0;break a;break;}default:{j=b;break a;}}break;}case 118:{if(((a[b+1>>0]|0)+-48|0)>>>0>=10){j=b;break a;}k=b+2|0;m=GB(k,d,e)|0;if((m|0)==(k|0)){j=b;break a;}k=c[e+4>>2]|0;if((c[e>>2]|0)==(k|0)){j=b;break a;}pB(k+-24|0,0,19048)|0;j=m;break a;break;}default:{j=b;break a;}}}while(0);else j=b;}while(0);l=f;return j|0;}function FC(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,10);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function GC(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,9);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function HC(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,17);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function IC(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,19460,15);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function JC(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,11);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function KC(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,14);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function LC(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,12);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function MC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+16|0;g=d;h=f;i=b+11|0;j=a[i>>0]|0;k=j<<24>>24<0;if(k){m=c[b+4>>2]|0;n=(c[b+8>>2]&2147483647)+-1|0;}else{m=j&255;n=10;}o=e-g|0;do{if(o|0){if(k){p=c[b>>2]|0;q=c[b+4>>2]|0;}else{p=b;q=j&255;}if(PC(d,p,p+q|0)|0){c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;QC(h,d,e);r=a[h+11>>0]|0;s=r<<24>>24<0;TA(b,s?c[h>>2]|0:h,s?c[h+4>>2]|0:r&255)|0;iB(h);break;}if((n-m|0)>>>0<o>>>0)RC(b,n,m+o-n|0,m,m,0);if((a[i>>0]|0)<0)t=c[b>>2]|0;else t=b;r=e+(m-g)|0;s=t+m|0;u=d;while(1){if((u|0)==(e|0))break;cB(s,u);s=s+1|0;u=u+1|0;}a[h>>0]=0;cB(t+r|0,h);u=m+o|0;if((a[i>>0]|0)<0){c[b+4>>2]=u;break;}else{a[i>>0]=u;break;}}}while(0);l=f;return;}function NC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;e=l;l=l+16|0;f=e;g=e+1|0;a[f>>0]=d;d=b+11|0;h=a[d>>0]|0;i=h<<24>>24<0;if(i){j=c[b+4>>2]|0;k=(c[b+8>>2]&2147483647)+-1|0;}else{j=h&255;k=10;}if((j|0)==(k|0)){RC(b,k,1,k,k,0);if((a[d>>0]|0)<0)m=8;else m=7;}else if(i)m=8;else m=7;if((m|0)==7){a[d>>0]=j+1;n=b;}else if((m|0)==8){m=c[b>>2]|0;c[b+4>>2]=j+1;n=m;}m=n+j|0;cB(m,f);a[g>>0]=0;cB(m+1|0,g);l=e;return;}function OC(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;g=l;l=l+32|0;h=g+16|0;i=g+4|0;j=g;k=b+11|0;m=a[k>>0]|0;n=m<<24>>24<0;if(n)o=c[b>>2]|0;else o=b;p=c[d>>2]|0;d=p-o|0;o=f-e|0;do{if(!o){q=m;r=27;}else{if(n){s=c[b>>2]|0;t=c[b+4>>2]|0;}else{s=b;t=m&255;}if(PC(e,s,s+t|0)|0){c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;QC(i,e,f);c[j>>2]=p;u=a[i+11>>0]|0;v=u<<24>>24<0;w=v?c[i>>2]|0:i;x=w+(v?c[i+4>>2]|0:u&255)|0;c[h>>2]=c[j>>2];u=OC(b,h,w,x)|0;iB(i);y=u;break;}u=a[k>>0]|0;x=u<<24>>24<0;if(x){z=c[b+4>>2]|0;A=(c[b+8>>2]&2147483647)+-1|0;}else{z=u&255;A=10;}if((A-z|0)>>>0>=o>>>0){if(x)B=c[b>>2]|0;else B=b;x=z-d|0;if(!x)C=B;else{u=B+d|0;wC(u+o|0,u,x)|0;C=B;}}else{RC(b,A,z+o-A|0,z,d,o);C=c[b>>2]|0;}x=z+o|0;if((a[k>>0]|0)<0)c[b+4>>2]=x;else a[k>>0]=x;a[h>>0]=0;cB(C+x|0,h);x=e;u=C+d|0;while(1){if((x|0)==(f|0))break;cB(u,x);x=x+1|0;u=u+1|0;}q=a[k>>0]|0;r=27;}}while(0);if((r|0)==27){if(q<<24>>24<0)D=c[b>>2]|0;else D=b;y=D+d|0;}l=g;return y|0;}function PC(a,b,c){a=a|0;b=b|0;c=c|0;return b>>>0<=a>>>0&a>>>0<c>>>0|0;}function QC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;f=l;l=l+16|0;g=d;h=f;i=e-g|0;if(i>>>0>4294967279)eB(b);if(i>>>0<11){a[b+11>>0]=i;j=b;}else{k=i+16&-16;m=fB(k)|0;c[b>>2]=m;c[b+8>>2]=k|-2147483648;c[b+4>>2]=i;j=m;}m=e-g|0;g=d;d=j;while(1){if((g|0)==(e|0))break;cB(d,g);g=g+1|0;d=d+1|0;}a[h>>0]=0;cB(j+m|0,h);l=f;return;}function RC(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;if((-17-d|0)>>>0<e>>>0)eB(b);if((a[b+11>>0]|0)<0)i=c[b>>2]|0;else i=b;if(d>>>0<2147483623){j=e+d|0;e=d<<1;k=j>>>0<e>>>0?e:j;l=k>>>0<11?11:k+16&-16;}else l=-17;k=fB(l)|0;if(g|0)bB(k,i,g)|0;j=f-g|0;if(j|0)bB(k+g+h|0,i+g|0,j)|0;if((d|0)!=10)gB(i);c[b>>2]=k;c[b+8>>2]=l|-2147483648;return;}function SC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=d+11|0;f=a[e>>0]|0;g=d+4|0;a:do{if(!((f<<24>>24<0?c[g>>2]|0:f&255)|0))TC(b,d);else{h=AB(19495)|0;i=a[e>>0]|0;if((h|0)==((i<<24>>24<0?c[g>>2]|0:i&255)|0)?(BB(d,19495,h)|0)==0:0){uC(d,19507);c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;RB(b,19578,AB(19578)|0);break;}h=AB(19591)|0;i=a[e>>0]|0;if((h|0)==((i<<24>>24<0?c[g>>2]|0:i&255)|0)?(BB(d,19591,h)|0)==0:0){uC(d,19604);c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;RB(b,19654,AB(19654)|0);break;}h=AB(19668)|0;i=a[e>>0]|0;if((h|0)==((i<<24>>24<0?c[g>>2]|0:i&255)|0)?(BB(d,19668,h)|0)==0:0){uC(d,19681);c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;RB(b,19731,AB(19731)|0);break;}h=AB(19745)|0;i=a[e>>0]|0;j=c[g>>2]|0;k=i&255;do{if((h|0)==((i<<24>>24<0?j:k)|0)){if(!(BB(d,19745,h)|0)){uC(d,19759);c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;RB(b,19810,AB(19810)|0);break a;}else{l=a[e>>0]|0;m=l&255;n=l;o=c[g>>2]|0;break;}}else{m=k;n=i;o=j;}}while(0);j=n<<24>>24<0;i=j?c[d>>2]|0:d;k=i+(j?o:m)|0;do{if((a[k+-1>>0]|0)==62){j=1;h=k;b:while(1){p=h;c:while(1){q=p+-1|0;if((q|0)==(i|0))break b;switch(a[p+-2>>0]|0){case 60:{r=24;break c;break;}case 62:{r=25;break c;break;}default:p=q;}}if((r|0)==24){r=0;l=j+-1|0;if(!l){r=27;break;}else s=l;}else if((r|0)==25){r=0;s=j+1|0;}j=s;h=q;}if((r|0)==27){t=p+-2|0;break;};c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;h=0;while(1){if((h|0)==3)break a;c[b+(h<<2)>>2]=0;h=h+1|0;}}else t=k;}while(0);k=t;while(1){h=k+-1|0;if((h|0)==(i|0)){u=i;break;}if((a[h>>0]|0)==58){u=k;break;}else k=h;}c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;QC(b,u,t);}}while(0);return;}function TC(b,d){b=b|0;d=d|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;if((a[d+11>>0]|0)<0)RB(b,c[d>>2]|0,c[d+4>>2]|0);else{c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];}return;}function UC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if((a|0)!=(b|0)){e=yC(a,b,d)|0;if((e|0)==(a|0))f=AC(a,b,d)|0;else f=e;if((f|0)!=(a|0)?(e=c[d+4>>2]|0,(c[d>>2]|0)!=(e|0)):0){pB(e+-24|0,0,18745)|0;g=f;}else g=a;}else g=a;return g|0;}function VC(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;c[a+(b<<2)>>2]=0;b=b+1|0;}b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function WC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b;e=a+4|0;f=(((c[e>>2]|0)-(c[a>>2]|0)|0)/24|0)+1|0;g=XC(a)|0;if(g>>>0<f>>>0)Wz(a);else{h=c[a>>2]|0;i=((c[a+8>>2]|0)-h|0)/24|0;j=i<<1;YC(d,i>>>0<g>>>1>>>0?j>>>0<f>>>0?f:j:g,((c[e>>2]|0)-h|0)/24|0,a+12|0);h=d+8|0;e=c[h>>2]|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;VC(e);c[h>>2]=e+24;ZC(a,d);_C(d);l=b;return;}}function XC(a){a=a|0;return 178956970;}function YC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;if(!b)g=0;else g=$C(e,b)|0;c[a>>2]=g;e=g+(d*24|0)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[f>>2]=g+(b*24|0);return;}function ZC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[a>>2]|0;e=a+4|0;f=b+4|0;g=c[e>>2]|0;while(1){if((g|0)==(d|0))break;h=g+-24|0;KB((c[f>>2]|0)+-24|0,h);c[f>>2]=(c[f>>2]|0)+-24;g=h;}g=c[a>>2]|0;c[a>>2]=c[f>>2];c[f>>2]=g;g=b+8|0;d=c[e>>2]|0;c[e>>2]=c[g>>2];c[g>>2]=d;d=a+8|0;a=b+12|0;g=c[d>>2]|0;c[d>>2]=c[a>>2];c[a>>2]=g;c[b>>2]=c[f>>2];return;}function _C(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;f=e+-24|0;c[d>>2]=f;QA(f);}d=c[a>>2]|0;if(d|0)hB(c[a+16>>2]|0,d,((c[a+12>>2]|0)-d|0)/24|0);return;}function $C(a,b){a=a|0;b=b|0;return aD(c[a>>2]|0,b*24|0)|0;}function aD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=$A(b)|0;b=a+4096|0;e=c[b>>2]|0;if((a+4096-e|0)>>>0<d>>>0)f=Cy(d)|0;else{c[b>>2]=e+d;f=e;}return f|0;}function bD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;g=l;l=l+48|0;h=g+24|0;i=g;j=g+12|0;k=QB(b,d)|0;if(!((k|0)==(b|0)|(k|0)==(d|0))?(a[k>>0]|0)==69:0){d=e+11|0;m=a[d>>0]|0;n=e+4|0;do{if((m<<24>>24<0?c[n>>2]|0:m&255)>>>0<=3){o=f+4|0;p=c[o>>2]|0;if(p>>>0<(c[f+8>>2]|0)>>>0){c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;c[p+20>>2]=0;VC(p);c[o>>2]=(c[o>>2]|0)+24;break;}else{WC(f);break;}}else{UB(j,18675,e);qB(j,18673)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];o=0;while(1){if((o|0)==3)break;c[j+(o<<2)>>2]=0;o=o+1|0;}IB(h,i);o=f+4|0;p=c[o>>2]|0;if(p>>>0<(c[f+8>>2]|0)>>>0){KB(p,h);c[o>>2]=(c[o>>2]|0)+24;}else LB(f,h);QA(h);iB(i);iB(j);}}while(0);j=f+4|0;if((a[b>>0]|0)==110){NC((c[j>>2]|0)+-24|0,45);q=b+1|0;}else q=b;MC((c[j>>2]|0)+-24|0,q,k);q=a[d>>0]|0;d=q<<24>>24<0;f=d?c[n>>2]|0:q&255;if(f>>>0<4)TA((c[j>>2]|0)+-24|0,d?c[e>>2]|0:e,f)|0;r=k+1|0;}else r=b;l=g;return r|0;}function cD(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,4);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function dD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;f=l;l=l+64|0;i=f+24|0;j=f+60|0;k=f;m=f+48|0;a:do{if((d-b|0)>>>0>8){n=0;o=j;while(1){p=a[b+n>>0]|0;q=p<<24>>24;if((n|0)==8){r=6;break;}if(!(Qz(q)|0))break;s=a[b+(n|1)>>0]|0;a[o>>0]=(((q+-48|0)>>>0<10?0:9)+q<<4)+s+((s+-48|0)>>>0<10?208:169);n=n+2|0;o=o+1|0;}do{if((r|0)==6){if(p<<24>>24==69){b:do{if((o|0)!=(j|0)){n=o;s=j;while(1){q=n+-1|0;if(s>>>0>=q>>>0)break b;t=a[s>>0]|0;a[s>>0]=a[q>>0]|0;a[q>>0]=t;n=q;s=s+1|0;}}}while(0);c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;h[i>>3]=+g[j>>2];s=bz(k,24,19987,i)|0;if(s>>>0>23)break;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;RB(m,k,s);IB(i,m);s=e+4|0;n=c[s>>2]|0;if(n>>>0<(c[e+8>>2]|0)>>>0){KB(n,i);c[s>>2]=(c[s>>2]|0)+24;}else LB(e,i);QA(i);iB(m);u=b+9|0;}else u=b;v=u;break a;}}while(0);v=b;}else v=b;}while(0);l=f;return v|0;}function eD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+80|0;g=f+40|0;i=f+32|0;j=f;k=f+64|0;a:do{if((d-b|0)>>>0>16){m=0;n=i;while(1){o=a[b+m>>0]|0;p=o<<24>>24;if((m|0)==16){q=6;break;}if(!(Qz(p)|0))break;r=a[b+(m|1)>>0]|0;a[n>>0]=(((p+-48|0)>>>0<10?0:9)+p<<4)+r+((r+-48|0)>>>0<10?208:169);m=m+2|0;n=n+1|0;}do{if((q|0)==6){if(o<<24>>24==69){b:do{if((n|0)!=(i|0)){m=n;r=i;while(1){p=m+-1|0;if(r>>>0>=p>>>0)break b;s=a[r>>0]|0;a[r>>0]=a[p>>0]|0;a[p>>0]=s;m=p;r=r+1|0;}}}while(0);c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=0;c[j+20>>2]=0;c[j+24>>2]=0;c[j+28>>2]=0;h[g>>3]=+h[i>>3];r=bz(j,32,19984,g)|0;if(r>>>0>31)break;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;RB(k,j,r);IB(g,k);r=e+4|0;m=c[r>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[r>>2]=(c[r>>2]|0)+24;}else LB(e,g);QA(g);iB(k);t=b+17|0;}else t=b;u=t;break a;}}while(0);u=b;}else u=b;}while(0);l=f;return u|0;}function fD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=l;l=l+96|0;g=f+48|0;i=f+40|0;j=f;k=f+72|0;a:do{if((d-b|0)>>>0>20){m=0;n=i;while(1){o=a[b+m>>0]|0;p=o<<24>>24;if((m|0)==20){q=6;break;}if(!(Qz(p)|0))break;r=a[b+(m|1)>>0]|0;a[n>>0]=(((p+-48|0)>>>0<10?0:9)+p<<4)+r+((r+-48|0)>>>0<10?208:169);m=m+2|0;n=n+1|0;}do{if((q|0)==6){if(o<<24>>24==69){b:do{if((n|0)!=(i|0)){m=n;r=i;while(1){p=m+-1|0;if(r>>>0>=p>>>0)break b;s=a[r>>0]|0;a[r>>0]=a[p>>0]|0;a[p>>0]=s;m=p;r=r+1|0;}}}while(0);r=j;m=r+40|0;do{c[r>>2]=0;r=r+4|0;}while((r|0)<(m|0));h[g>>3]=+h[i>>3];r=bz(j,40,19979,g)|0;if(r>>>0>39)break;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;RB(k,j,r);IB(g,k);r=e+4|0;m=c[r>>2]|0;if(m>>>0<(c[e+8>>2]|0)>>>0){KB(m,g);c[r>>2]=(c[r>>2]|0)+24;}else LB(e,g);QA(g);iB(k);t=b+21|0;}else t=b;u=t;break a;}}while(0);u=b;}else u=b;}while(0);l=f;return u|0;}function gD(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,13);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function hD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;f=l;l=l+48|0;g=f+36|0;h=f+24|0;i=f+8|0;j=f;a:do{if((b|0)!=(d|0)?(a[b>>0]|0)==78:0){k=nB(b+1|0,d,g)|0;b:do{if((k|0)!=(d|0)){m=e+52|0;c[m>>2]=0;switch(a[k>>0]|0){case 82:{n=1;o=6;break;}case 79:{n=2;o=6;break;}default:p=k;}if((o|0)==6){c[m>>2]=n;p=k+1|0;}m=e+4|0;q=c[m>>2]|0;if(q>>>0<(c[e+8>>2]|0)>>>0){c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;VC(q);c[m>>2]=(c[m>>2]|0)+24;}else WC(e);if(((d-p|0)>1?(a[p>>0]|0)==83:0)?(a[p+1>>0]|0)==116:0){uC((c[m>>2]|0)+-24|0,20051);r=p+2|0;}else r=p;if((r|0)==(d|0)){q=c[m>>2]|0;s=0;while(1){if((s|0)==-1)break;t=s+-1|0;QA(q+(t*24|0)|0);s=t;}c[m>>2]=q+-24;break;}s=h+11|0;t=h+4|0;u=e+12|0;v=e+20|0;w=e+24|0;x=i+11|0;y=i+4|0;z=i+11|0;A=i+4|0;B=i+12|0;C=i+4|0;D=i+8|0;E=e+16|0;F=i+12|0;G=i+4|0;H=i+8|0;I=i+11|0;J=i+4|0;K=i+12|0;L=i+4|0;M=i+8|0;N=i+11|0;O=i+4|0;P=i+12|0;Q=i+4|0;R=i+8|0;S=i+12|0;T=i+4|0;U=i+8|0;V=0;W=r;c:while(1){X=W;d:while(1){Y=a[X>>0]|0;if(Y<<24>>24==69)break c;switch(Y<<24>>24|0){case 83:{o=23;break d;break;}case 84:{o=39;break d;break;}case 68:{o=53;break d;break;}case 73:{Y=EB(X,d,e)|0;if((Y|0)==(X|0)|(Y|0)==(d|0))break b;FB(h,(c[m>>2]|0)+-24|0);Z=c[m>>2]|0;_=0;while(1){if((_|0)==-1)break;$=_+-1|0;QA(Z+($*24|0)|0);_=$;}c[m>>2]=Z+-24;_=a[s>>0]|0;$=_<<24>>24<0;TA(Z+-48|0,$?c[h>>2]|0:h,$?c[t>>2]|0:_&255)|0;_=(c[m>>2]|0)+-24|0;c[j>>2]=c[u>>2];vB(i,_,j);_=c[v>>2]|0;if(_>>>0<(c[w>>2]|0)>>>0){c[_>>2]=0;$=_+4|0;c[$>>2]=0;aa=_+8|0;c[aa>>2]=0;c[_+12>>2]=c[B>>2];c[_>>2]=c[i>>2];c[$>>2]=c[C>>2];c[aa>>2]=c[D>>2];c[D>>2]=0;c[C>>2]=0;c[i>>2]=0;c[v>>2]=(c[v>>2]|0)+16;}else wB(E,i);RA(i);iB(h);ba=Y;break;}case 76:{aa=X+1|0;if((aa|0)==(d|0))break b;else ba=aa;break;}default:{o=79;break d;}}X=ba;}e:do{if((o|0)==23){o=0;aa=X+1|0;if((aa|0)!=(d|0)?(a[aa>>0]|0)==116:0){o=79;break;}aa=NB(X,d,e)|0;if((aa|0)==(X|0)|(aa|0)==(d|0))break b;FB(h,(c[m>>2]|0)+-24|0);$=c[m>>2]|0;_=0;while(1){if((_|0)==-1)break;ca=_+-1|0;QA($+(ca*24|0)|0);_=ca;}c[m>>2]=$+-24;_=$+-48|0;Y=a[_+11>>0]|0;if(Y<<24>>24<0)da=c[$+-44>>2]|0;else da=Y&255;if(!da)lD(_,h);else{UB(i,18747,h);_=a[I>>0]|0;Y=_<<24>>24<0;TA((c[m>>2]|0)+-24|0,Y?c[i>>2]|0:i,Y?c[J>>2]|0:_&255)|0;iB(i);_=(c[m>>2]|0)+-24|0;c[j>>2]=c[u>>2];vB(i,_,j);_=c[v>>2]|0;if(_>>>0<(c[w>>2]|0)>>>0){c[_>>2]=0;Y=_+4|0;c[Y>>2]=0;Z=_+8|0;c[Z>>2]=0;c[_+12>>2]=c[S>>2];c[_>>2]=c[i>>2];c[Y>>2]=c[T>>2];c[Z>>2]=c[U>>2];c[U>>2]=0;c[T>>2]=0;c[i>>2]=0;c[v>>2]=(c[v>>2]|0)+16;}else wB(E,i);RA(i);}iB(h);ea=aa;}else if((o|0)==39){o=0;Z=DB(X,d,e)|0;if((Z|0)==(X|0)|(Z|0)==(d|0))break b;FB(h,(c[m>>2]|0)+-24|0);Y=c[m>>2]|0;_=0;while(1){if((_|0)==-1)break;ca=_+-1|0;QA(Y+(ca*24|0)|0);_=ca;}c[m>>2]=Y+-24;_=Y+-48|0;aa=a[_+11>>0]|0;if(aa<<24>>24<0)fa=c[Y+-44>>2]|0;else fa=aa&255;if(!fa)lD(_,h);else{UB(i,18747,h);_=a[z>>0]|0;aa=_<<24>>24<0;TA((c[m>>2]|0)+-24|0,aa?c[i>>2]|0:i,aa?c[A>>2]|0:_&255)|0;iB(i);}_=(c[m>>2]|0)+-24|0;c[j>>2]=c[u>>2];vB(i,_,j);_=c[v>>2]|0;if(_>>>0<(c[w>>2]|0)>>>0){c[_>>2]=0;aa=_+4|0;c[aa>>2]=0;$=_+8|0;c[$>>2]=0;c[_+12>>2]=c[K>>2];c[_>>2]=c[i>>2];c[aa>>2]=c[L>>2];c[$>>2]=c[M>>2];c[M>>2]=0;c[L>>2]=0;c[i>>2]=0;c[v>>2]=(c[v>>2]|0)+16;}else wB(E,i);RA(i);iB(h);ea=Z;}else if((o|0)==53){o=0;$=X+1|0;if(($|0)!=(d|0))switch(a[$>>0]|0){case 84:case 116:break;default:{o=79;break e;}}$=OB(X,d,e)|0;if(($|0)==(X|0)|($|0)==(d|0))break b;FB(h,(c[m>>2]|0)+-24|0);aa=c[m>>2]|0;_=0;while(1){if((_|0)==-1)break;ca=_+-1|0;QA(aa+(ca*24|0)|0);_=ca;}c[m>>2]=aa+-24;_=aa+-48|0;Z=a[_+11>>0]|0;if(Z<<24>>24<0)ga=c[aa+-44>>2]|0;else ga=Z&255;if(!ga)lD(_,h);else{UB(i,18747,h);_=a[N>>0]|0;Z=_<<24>>24<0;TA((c[m>>2]|0)+-24|0,Z?c[i>>2]|0:i,Z?c[O>>2]|0:_&255)|0;iB(i);}_=(c[m>>2]|0)+-24|0;c[j>>2]=c[u>>2];vB(i,_,j);_=c[v>>2]|0;if(_>>>0<(c[w>>2]|0)>>>0){c[_>>2]=0;Z=_+4|0;c[Z>>2]=0;Y=_+8|0;c[Y>>2]=0;c[_+12>>2]=c[P>>2];c[_>>2]=c[i>>2];c[Z>>2]=c[Q>>2];c[Y>>2]=c[R>>2];c[R>>2]=0;c[Q>>2]=0;c[i>>2]=0;c[v>>2]=(c[v>>2]|0)+16;}else wB(E,i);RA(i);iB(h);ea=$;}}while(0);if((o|0)==79){o=0;Y=BC(X,d,e)|0;if((Y|0)==(X|0)|(Y|0)==(d|0))break b;FB(h,(c[m>>2]|0)+-24|0);Z=c[m>>2]|0;_=0;while(1){if((_|0)==-1)break;ca=_+-1|0;QA(Z+(ca*24|0)|0);_=ca;}c[m>>2]=Z+-24;_=Z+-48|0;ca=a[_+11>>0]|0;if(ca<<24>>24<0)ha=c[Z+-44>>2]|0;else ha=ca&255;if(!ha)lD(_,h);else{UB(i,18747,h);_=a[x>>0]|0;ca=_<<24>>24<0;TA((c[m>>2]|0)+-24|0,ca?c[i>>2]|0:i,ca?c[y>>2]|0:_&255)|0;iB(i);}_=(c[m>>2]|0)+-24|0;c[j>>2]=c[u>>2];vB(i,_,j);_=c[v>>2]|0;if(_>>>0<(c[w>>2]|0)>>>0){c[_>>2]=0;ca=_+4|0;c[ca>>2]=0;ia=_+8|0;c[ia>>2]=0;c[_+12>>2]=c[F>>2];c[_>>2]=c[i>>2];c[ca>>2]=c[G>>2];c[ia>>2]=c[H>>2];c[H>>2]=0;c[G>>2]=0;c[i>>2]=0;c[v>>2]=(c[v>>2]|0)+16;}else wB(E,i);RA(i);iB(h);ea=Y;}V=1;W=ea;}W=X+1|0;c[e+48>>2]=c[g>>2];if(V?(E=c[v>>2]|0,(c[e+16>>2]|0)!=(E|0)):0){G=0;while(1){if((G|0)==-1)break;H=G+-1|0;RA(E+(H<<4)|0);G=H;}c[v>>2]=E+-16;}ja=W;break a;}}while(0);ja=b;}else ja=b;}while(0);l=f;return ja|0;}function iD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+16|0;g=f;a:do{if(((((b|0)!=(d|0)?(a[b>>0]|0)==90:0)?(h=b+1|0,i=jB(h,d,e)|0,!((i|0)==(h|0)|(i|0)==(d|0))):0)?(a[i>>0]|0)==69:0)?(h=i+1|0,(h|0)!=(d|0)):0)switch(a[h>>0]|0){case 115:{j=kD(i+2|0,d)|0;k=c[e+4>>2]|0;if((c[e>>2]|0)==(k|0)){m=j;break a;}qB(k+-24|0,20034)|0;m=j;break a;break;}case 100:{j=i+2|0;if((j|0)==(d|0)){m=b;break a;}i=QB(j,d)|0;if((i|0)==(d|0)){m=b;break a;}if((a[i>>0]|0)!=95){m=b;break a;}j=i+1|0;i=MB(j,d,e)|0;k=e+4|0;if((i|0)==(j|0)){j=c[k>>2]|0;n=0;while(1){if((n|0)==-1)break;o=n+-1|0;QA(j+(o*24|0)|0);n=o;}c[k>>2]=j+-24;m=b;break a;}n=c[k>>2]|0;if(((n-(c[e>>2]|0)|0)/24|0)>>>0<2){m=b;break a;}FB(g,n+-24|0);n=c[k>>2]|0;o=0;while(1){if((o|0)==-1)break;p=o+-1|0;QA(n+(p*24|0)|0);o=p;}c[k>>2]=n+-24;qB(n+-48|0,18747)|0;o=a[g+11>>0]|0;j=o<<24>>24<0;TA((c[k>>2]|0)+-24|0,j?c[g>>2]|0:g,j?c[g+4>>2]|0:o&255)|0;iB(g);m=i;break a;break;}default:{o=MB(h,d,e)|0;if((o|0)==(h|0)){j=e+4|0;p=c[j>>2]|0;q=0;while(1){if((q|0)==-1)break;r=q+-1|0;QA(p+(r*24|0)|0);q=r;}c[j>>2]=p+-24;m=b;break a;}q=kD(o,d)|0;h=e+4|0;i=c[h>>2]|0;if(((i-(c[e>>2]|0)|0)/24|0)>>>0<2){m=q;break a;}FB(g,i+-24|0);i=c[h>>2]|0;k=0;while(1){if((k|0)==-1)break;n=k+-1|0;QA(i+(n*24|0)|0);k=n;}c[h>>2]=i+-24;qB(i+-48|0,18747)|0;k=a[g+11>>0]|0;o=k<<24>>24<0;TA((c[h>>2]|0)+-24|0,o?c[g>>2]|0:g,o?c[g+4>>2]|0:k&255)|0;iB(g);m=q;break a;}}else m=b;}while(0);l=f;return m|0;}function jD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((d-b|0)>1){if((a[b>>0]|0)==83?(a[b+1>>0]|0)==116:0){f=b+2|0;if((f|0)==(d|0)){g=0;h=d;}else{g=0;h=(a[f>>0]|0)==76?b+3|0:f;}}else{g=1;h=b;}f=BC(h,d,e)|0;d=(f|0)==(h|0);if(!(g|d)){g=c[e+4>>2]|0;if((c[e>>2]|0)==(g|0))i=b;else{pB(g+-24|0,0,18969)|0;i=f;}}else i=d?b:f;}else i=b;return i|0;}function kD(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a:do{if((b|0)!=(c|0)){d=a[b>>0]|0;if(d<<24>>24!=95){if(((d<<24>>24)+-48|0)>>>0>=10){e=b;break;}d=b;while(1){f=d+1|0;if((f|0)==(c|0)){e=c;break a;}if(((a[f>>0]|0)+-48|0)>>>0<10)d=f;else{e=f;break a;}}}d=b+1|0;if((d|0)!=(c|0)){f=a[d>>0]|0;if(((f<<24>>24)+-48|0)>>>0<10){e=b+2|0;break;}if(f<<24>>24==95){f=b+2|0;while(1){if((f|0)==(c|0)){e=b;break a;}g=a[f>>0]|0;if(((g<<24>>24)+-48|0)>>>0>=10)break;f=f+1|0;}return(g<<24>>24==95?f+1|0:b)|0;}else e=b;}else e=b;}else e=b;}while(0);return e|0;}function lD(b,d){b=b|0;d=d|0;var e=0,f=0;if((b|0)!=(d|0)){e=a[d+11>>0]|0;f=e<<24>>24<0;vC(b,f?c[d>>2]|0:d,f?c[d+4>>2]|0:e&255);}return;}function mD(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,20066,21);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function nD(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];return;}function oD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;d=l;l=l+32|0;e=d+20|0;f=d;g=a+4|0;h=((c[g>>2]|0)-(c[a>>2]|0)>>4)+1|0;i=qD(a)|0;if(i>>>0<h>>>0)Wz(a);else{j=c[a>>2]|0;k=(c[a+8>>2]|0)-j|0;m=k>>3;rD(f,k>>4>>>0<i>>>1>>>0?m>>>0<h>>>0?h:m:i,(c[g>>2]|0)-j>>4,a+12|0);j=f+8|0;g=c[j>>2]|0;nD(e,b);c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=c[e>>2];c[j>>2]=g+16;sD(a,f);tD(f);l=d;return;}}function pD(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;a:do{if((b|0)==(c|0))e=b;else switch(a[b>>0]|0){case 88:{f=b+1|0;g=SB(f,c,d)|0;if((g|0)==(f|0)|(g|0)==(c|0)){e=b;break a;}e=(a[g>>0]|0)==69?g+1|0:b;break a;break;}case 74:{g=b+1|0;if((g|0)==(c|0)){e=b;break a;}f=g;while(1){if((a[f>>0]|0)==69)break;g=pD(f,c,d)|0;if((g|0)==(f|0)){e=b;break a;}else f=g;}e=f+1|0;break a;break;}case 76:{g=b+1|0;if((g|0)!=(c|0)?(a[g>>0]|0)==90:0){g=b+2|0;h=jB(g,c,d)|0;if((h|0)==(g|0)|(h|0)==(c|0)){e=b;break a;}e=(a[h>>0]|0)==69?h+1|0:b;break a;}e=WB(b,c,d)|0;break a;break;}default:{e=mB(b,c,d)|0;break a;}}}while(0);return e|0;}function qD(a){a=a|0;return 268435455;}function rD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;if(!b)g=0;else g=uD(e,b)|0;c[a>>2]=g;e=g+(d<<4)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[f>>2]=g+(b<<4);return;}function sD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=c[a>>2]|0;e=a+4|0;f=b+4|0;g=c[e>>2]|0;while(1){if((g|0)==(d|0))break;h=c[f>>2]|0;i=h+-16|0;j=g+-16|0;c[i>>2]=0;k=h+-12|0;c[k>>2]=0;l=h+-8|0;c[l>>2]=0;c[h+-4>>2]=c[g+-4>>2];c[i>>2]=c[j>>2];i=g+-12|0;c[k>>2]=c[i>>2];k=g+-8|0;c[l>>2]=c[k>>2];c[k>>2]=0;c[i>>2]=0;c[j>>2]=0;c[f>>2]=(c[f>>2]|0)+-16;g=j;}g=c[a>>2]|0;c[a>>2]=c[f>>2];c[f>>2]=g;g=b+8|0;d=c[e>>2]|0;c[e>>2]=c[g>>2];c[g>>2]=d;d=a+8|0;a=b+12|0;g=c[d>>2]|0;c[d>>2]=c[a>>2];c[a>>2]=g;c[b>>2]=c[f>>2];return;}function tD(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;f=e+-16|0;c[d>>2]=f;XA(f);}d=c[a>>2]|0;if(d|0)aB(c[a+16>>2]|0,d,(c[a+12>>2]|0)-d>>4);return;}function uD(a,b){a=a|0;b=b|0;return aD(c[a>>2]|0,b<<4)|0;}function vD(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,20091,2);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function wD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=l;l=l+16|0;f=e;g=b+11|0;h=a[g>>0]|0;i=h<<24>>24<0;if(i){j=c[b+4>>2]|0;k=j>>>0<11?j:11;m=j;n=(c[b+8>>2]&2147483647)+-1|0;}else{j=h&255;k=j>>>0<11?j:11;m=j;n=10;}if((k-m+n|0)>>>0<d>>>0)dB(b,n,d-k+m-n|0,m,0,k,d,20094);else{if(i)o=c[b>>2]|0;else o=b;do{if((k|0)!=(d|0)){i=m-k|0;if(!i){p=k;q=0;r=20094;s=d;t=17;}else{if(k>>>0>d>>>0){wC(o,20094,d)|0;wC(o+d|0,o+k|0,i)|0;u=k;v=d;break;}do{if(o>>>0<20094>>>0&(o+m|0)>>>0>20094>>>0){if((o+k|0)>>>0>20094>>>0){wC(o,20094,k)|0;w=0;x=k;y=20094+d|0;z=d-k|0;break;}else{w=k;x=0;y=20094+(d-k)|0;z=d;break;}}else{w=k;x=0;y=20094;z=d;}}while(0);n=o+x|0;wC(n+z|0,n+w|0,i)|0;p=w;q=x;r=y;s=z;t=17;}}else{p=d;q=0;r=20094;s=d;t=17;}}while(0);if((t|0)==17){wC(o+q|0,r,s)|0;u=p;v=s;}s=v-u+m|0;if((a[g>>0]|0)<0)c[b+4>>2]=s;else a[g>>0]=s;a[f>>0]=0;cB(o+s|0,f);}l=e;return;}function xD(a){a=a|0;lb();}function yD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!c)d=0;else d=Qy(a,b,c)|0;return d|0;}function zD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;g=l;l=l+16|0;h=g;i=b+11|0;j=a[i>>0]|0;k=j<<24>>24<0;if(k)m=c[b+4>>2]|0;else m=j&255;if(m>>>0<d>>>0)xD(b);if(k)n=(c[b+8>>2]&2147483647)+-1|0;else n=10;if((n-m|0)>>>0>=f>>>0){if(f|0){if(k)o=c[b>>2]|0;else o=b;k=m-d|0;j=o+d|0;if(!k)p=e;else{wC(j+f|0,j,k)|0;p=j>>>0<=e>>>0&(o+m|0)>>>0>e>>>0?e+f|0:e;}wC(j,p,f)|0;p=m+f|0;if((a[i>>0]|0)<0)c[b+4>>2]=p;else a[i>>0]=p;a[h>>0]=0;cB(o+p|0,h);}}else dB(b,n,m+f-n|0,m,d,0,f,e);l=g;return b|0;}function AD(a){a=a|0;return 268435455;}function BD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+12|0;c[f>>2]=0;c[a+16>>2]=e;if(!b)g=0;else g=ED(e,b)|0;c[a>>2]=g;e=g+(d<<4)|0;c[a+8>>2]=e;c[a+4>>2]=e;c[f>>2]=g+(b<<4);return;}function CD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=c[a>>2]|0;e=a+4|0;f=b+4|0;g=c[e>>2]|0;while(1){if((g|0)==(d|0))break;h=c[f>>2]|0;i=h+-16|0;j=g+-16|0;c[i>>2]=0;k=h+-12|0;c[k>>2]=0;l=h+-8|0;c[l>>2]=0;c[h+-4>>2]=c[g+-4>>2];c[i>>2]=c[j>>2];i=g+-12|0;c[k>>2]=c[i>>2];k=g+-8|0;c[l>>2]=c[k>>2];c[k>>2]=0;c[i>>2]=0;c[j>>2]=0;c[f>>2]=(c[f>>2]|0)+-16;g=j;}g=c[a>>2]|0;c[a>>2]=c[f>>2];c[f>>2]=g;g=b+8|0;d=c[e>>2]|0;c[e>>2]=c[g>>2];c[g>>2]=d;d=a+8|0;a=b+12|0;g=c[d>>2]|0;c[d>>2]=c[a>>2];c[a>>2]=g;c[b>>2]=c[f>>2];return;}function DD(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+4>>2]|0;d=a+8|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;f=e+-16|0;c[d>>2]=f;RA(f);}d=c[a>>2]|0;if(d|0)YA(c[a+16>>2]|0,d,(c[a+12>>2]|0)-d>>4);return;}function ED(a,b){a=a|0;b=b|0;return aD(c[a>>2]|0,b<<4)|0;}function FD(a){a=a|0;var b=0;if(!(XC(a)|0))Wz(a);else{b=$C(a+12|0,1)|0;c[a+4>>2]=b;c[a>>2]=b;c[a+8>>2]=b+24;return;}}function GD(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;d=l;l=l+16|0;e=d;f=b+11|0;g=a[f>>0]|0;if(g<<24>>24<0){h=c[b>>2]|0;i=c[b+4>>2]|0;}else{h=b;i=g&255;}j=(i|0)!=0&1;k=i-j|0;if(!k)m=g;else{wC(h,h+j|0,k)|0;m=a[f>>0]|0;}if(m<<24>>24<0)c[b+4>>2]=k;else a[f>>0]=k;a[e>>0]=0;cB(h+k|0,e);l=d;return;}function HD(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,19867,7);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function ID(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,3);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function JD(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,20287,18);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function KD(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,b,8);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function LD(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;RB(a,20280,6);b=a+12|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;c[b+(a<<2)>>2]=0;a=a+1|0;}return;}function MD(a,b){a=a|0;b=b|0;c[a>>2]=b;c[a+4>>2]=c[b>>2];return;}function ND(b,d){b=b|0;d=d|0;c[b>>2]=d;a[b+4>>0]=a[d>>0]|0;return;}function OD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;f=l;l=l+64|0;g=f+60|0;h=f+48|0;i=f+36|0;j=f+24|0;k=f+12|0;m=f;a:do{if((d-b|0)>2){switch(a[b>>0]|0){case 84:break;case 71:{switch(a[b+1>>0]|0){case 86:{n=b+2|0;o=MB(n,d,e)|0;if((o|0)==(n|0)){p=b;q=60;break a;}n=c[e+4>>2]|0;if((c[e>>2]|0)==(n|0)){r=b;break a;}pB(n+-24|0,0,20505)|0;p=o;q=60;break a;break;}case 82:{o=b+2|0;n=MB(o,d,e)|0;if((n|0)==(o|0)){p=b;q=60;break a;}o=c[e+4>>2]|0;if((c[e>>2]|0)==(o|0)){r=b;break a;}pB(o+-24|0,0,20525)|0;p=n;q=60;break a;break;}default:{p=b;q=60;break a;}}break;}default:{p=b;q=60;break a;}}n=b+1|0;switch(a[n>>0]|0){case 86:{o=b+2|0;s=mB(o,d,e)|0;if((s|0)==(o|0)){p=b;q=60;break a;}o=c[e+4>>2]|0;if((c[e>>2]|0)==(o|0)){r=b;break a;}pB(o+-24|0,0,20354)|0;p=s;q=60;break a;break;}case 84:{s=b+2|0;o=mB(s,d,e)|0;if((o|0)==(s|0)){p=b;q=60;break a;}s=c[e+4>>2]|0;if((c[e>>2]|0)==(s|0)){r=b;break a;}pB(s+-24|0,0,20366)|0;p=o;q=60;break a;break;}case 73:{o=b+2|0;s=mB(o,d,e)|0;if((s|0)==(o|0)){p=b;q=60;break a;}o=c[e+4>>2]|0;if((c[e>>2]|0)==(o|0)){r=b;break a;}pB(o+-24|0,0,20375)|0;p=s;q=60;break a;break;}case 83:{s=b+2|0;o=mB(s,d,e)|0;if((o|0)==(s|0)){p=b;q=60;break a;}s=c[e+4>>2]|0;if((c[e>>2]|0)==(s|0)){r=b;break a;}pB(s+-24|0,0,20389)|0;p=o;q=60;break a;break;}case 99:{o=b+2|0;s=RD(o,d)|0;if((s|0)==(o|0)){p=b;q=60;break a;}o=RD(s,d)|0;if((o|0)==(s|0)){p=b;q=60;break a;}s=jB(o,d,e)|0;if((s|0)==(o|0)){p=b;q=60;break a;}o=c[e+4>>2]|0;if((c[e>>2]|0)==(o|0)){r=b;break a;}pB(o+-24|0,0,20408)|0;p=s;q=60;break a;break;}case 67:{s=b+2|0;o=mB(s,d,e)|0;if((o|0)==(s|0)){p=b;q=60;break a;}s=QB(o,d)|0;if((s|0)==(o|0)|(s|0)==(d|0)){p=b;q=60;break a;}if((a[s>>0]|0)!=95){p=b;q=60;break a;}o=s+1|0;s=mB(o,d,e)|0;if((s|0)==(o|0)){p=b;q=60;break a;}o=e+4|0;t=c[o>>2]|0;if(((t-(c[e>>2]|0)|0)/24|0)>>>0<2){r=b;break a;}FB(h,t+-24|0);t=c[o>>2]|0;u=0;while(1){if((u|0)==-1)break;v=u+-1|0;QA(t+(v*24|0)|0);u=v;}c[o>>2]=t+-24;pB(h,0,20435)|0;c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];u=0;while(1){if((u|0)==3)break;c[h+(u<<2)>>2]=0;u=u+1|0;}qB(k,20460)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];u=0;while(1){if((u|0)==3)break;c[k+(u<<2)>>2]=0;u=u+1|0;}FB(m,(c[o>>2]|0)+-24|0);u=a[m+11>>0]|0;t=u<<24>>24<0;TA(j,t?c[m>>2]|0:m,t?c[m+4>>2]|0:u&255)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];u=0;while(1){if((u|0)==3)break;c[j+(u<<2)>>2]=0;u=u+1|0;}u=c[o>>2]|0;t=u+-24|0;v=t+11|0;if((a[v>>0]|0)<0){w=c[t>>2]|0;a[g>>0]=0;cB(w,g);c[u+-20>>2]=0;}else{a[g>>0]=0;cB(t,g);a[v>>0]=0;}TB(t);c[t>>2]=c[i>>2];c[t+4>>2]=c[i+4>>2];c[t+8>>2]=c[i+8>>2];t=0;while(1){if((t|0)==3)break;c[i+(t<<2)>>2]=0;t=t+1|0;}iB(i);iB(m);iB(j);iB(k);iB(h);p=s;q=60;break a;break;}default:{t=RD(n,d)|0;do{if((t|0)!=(n|0)){o=jB(t,d,e)|0;if((o|0)!=(t|0)){v=c[e+4>>2]|0;if((c[e>>2]|0)!=(v|0)){u=v+-24|0;if((a[b+2>>0]|0)==118){pB(u,0,20465)|0;x=0;y=o;break;}else{pB(u,0,20483)|0;x=0;y=o;break;}}else{x=1;y=b;}}else{x=0;y=b;}}else{x=3;y=b;}}while(0);switch(x&3){case 3:case 0:{p=y;q=60;break a;break;}default:{}}if(!x){p=y;q=60;break a;}else{r=b;break a;}}}}else{p=b;q=60;}}while(0);if((q|0)==60)r=p;l=f;return r|0;}function PD(b){b=b|0;a[c[b>>2]>>0]=a[b+4>>0]|0;return;}function QD(a){a=a|0;c[c[a>>2]>>2]=c[a+4>>2];return;}function RD(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;a:do{if((b|0)!=(c|0)){switch(a[b>>0]|0){case 104:{d=b+1|0;e=QB(d,c)|0;if((e|0)==(d|0)|(e|0)==(c|0)){f=b;break a;}return((a[e>>0]|0)==95?e+1|0:b)|0;}case 118:break;default:{f=b;break a;}}e=b+1|0;d=QB(e,c)|0;if((!((d|0)==(e|0)|(d|0)==(c|0))?(a[d>>0]|0)==95:0)?(e=d+1|0,d=QB(e,c)|0,!((d|0)==(e|0)|(d|0)==(c|0))):0)f=(a[d>>0]|0)==95?d+1|0:b;else f=b;}else f=b;}while(0);return f|0;}function SD(a,b){a=a|0;b=b|0;c[a>>2]=b;return;}function TD(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=c[b>>2];return;}function UD(a,b){a=a|0;b=b|0;c[a>>2]=b;return;}function VD(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=c[b>>2];return;}function WD(b){b=b|0;var c=0;if((a[b>>0]|0)==1)c=0;else{a[b>>0]=1;c=1;}return c|0;}function XD(a){a=a|0;return;}function YD(a){a=a|0;return;}function ZD(){var a=0;a=c[5564]|0;c[5564]=a+0;return a|0;}function _D(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;c[f>>2]=c[d>>2];g=rc[c[(c[a>>2]|0)+16>>2]&31](a,b,f)|0;if(g)c[d>>2]=c[f>>2];l=e;return g&1|0;}function $D(a){a=a|0;var b=0;if(!a)b=0;else b=(kA(a,10840,10896,0)|0)!=0&1;return b|0;}function aE(){}function bE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a&65535;d=b&65535;e=N(d,c)|0;f=a>>>16;a=(e>>>16)+(N(d,f)|0)|0;d=b>>>16;b=N(d,c)|0;return(y=(a>>>16)+(N(d,f)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|e&65535|0)|0;}function cE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;a=c;c=bE(e,a)|0;f=y;return(y=(N(b,a)|0)+(N(d,e)|0)+f|f&0,c|0|0)|0;}function dE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+c>>>0;return(y=b+d+(e>>>0<a>>>0|0)>>>0,e|0)|0;}function eE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=b-d>>>0;e=b-d-(c>>>0>a>>>0|0)>>>0;return(y=e,a-c>>>0|0)|0;}function fE(a){a=a|0;return(a?31-(Q(a^a-1)|0)|0:32)|0;}function gE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;g=a;h=b;i=h;j=d;k=e;l=k;if(!i){m=(f|0)!=0;if(!l){if(m){c[f>>2]=(g>>>0)%(j>>>0);c[f+4>>2]=0;}n=0;o=(g>>>0)/(j>>>0)>>>0;return(y=n,o)|0;}else{if(!m){n=0;o=0;return(y=n,o)|0;}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;o=0;return(y=n,o)|0;}}m=(l|0)==0;do{if(j){if(!m){p=(Q(l|0)|0)-(Q(i|0)|0)|0;if(p>>>0<=31){q=p+1|0;r=31-p|0;s=p-31>>31;t=q;u=g>>>(q>>>0)&s|i<<r;v=i>>>(q>>>0)&s;w=0;x=g<<r;break;}if(!f){n=0;o=0;return(y=n,o)|0;}c[f>>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return(y=n,o)|0;}r=j-1|0;if(r&j|0){s=(Q(j|0)|0)+33-(Q(i|0)|0)|0;q=64-s|0;p=32-s|0;z=p>>31;A=s-32|0;B=A>>31;t=s;u=p-1>>31&i>>>(A>>>0)|(i<<p|g>>>(s>>>0))&B;v=B&i>>>(s>>>0);w=g<<q&z;x=(i<<q|g>>>(A>>>0))&z|g<<p&s-33>>31;break;}if(f|0){c[f>>2]=r&g;c[f+4>>2]=0;}if((j|0)==1){n=h|b&0;o=a|0|0;return(y=n,o)|0;}else{r=fE(j|0)|0;n=i>>>(r>>>0)|0;o=i<<32-r|g>>>(r>>>0)|0;return(y=n,o)|0;}}else{if(m){if(f|0){c[f>>2]=(i>>>0)%(j>>>0);c[f+4>>2]=0;}n=0;o=(i>>>0)/(j>>>0)>>>0;return(y=n,o)|0;}if(!g){if(f|0){c[f>>2]=0;c[f+4>>2]=(i>>>0)%(l>>>0);}n=0;o=(i>>>0)/(l>>>0)>>>0;return(y=n,o)|0;}r=l-1|0;if(!(r&l)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=r&i|b&0;}n=0;o=i>>>((fE(l|0)|0)>>>0);return(y=n,o)|0;}r=(Q(l|0)|0)-(Q(i|0)|0)|0;if(r>>>0<=30){s=r+1|0;p=31-r|0;t=s;u=i<<p|g>>>(s>>>0);v=i>>>(s>>>0);w=0;x=g<<p;break;}if(!f){n=0;o=0;return(y=n,o)|0;}c[f>>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return(y=n,o)|0;}}while(0);if(!t){C=x;D=w;E=v;F=u;G=0;H=0;}else{b=d|0|0;d=k|e&0;e=dE(b|0,d|0,-1,-1)|0;k=y;h=x;x=w;w=v;v=u;u=t;t=0;do{a=h;h=x>>>31|h<<1;x=t|x<<1;g=v<<1|a>>>31|0;a=v>>>31|w<<1|0;eE(e|0,k|0,g|0,a|0)|0;i=y;l=i>>31|((i|0)<0?-1:0)<<1;t=l&1;v=eE(g|0,a|0,l&b|0,(((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1)&d|0)|0;w=y;u=u-1|0;}while((u|0)!=0);C=h;D=x;E=w;F=v;G=0;H=t;}t=D;D=0;if(f|0){c[f>>2]=F;c[f+4>>2]=E;}n=(t|0)>>>31|(C|D)<<1|(D<<1|t>>>31)&0|G;o=(t<<1|0>>>31)&-2|H;return(y=n,o)|0;}function hE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return gE(a,b,c,d,0)|0;}function iE(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){y=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c;}y=0;return b>>>c-32|0;}function jE(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){y=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c;}y=a<<c-32;return 0;}function kE(a){a=a|0;return(a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0;}function lE(a,b,c){a=a|0;b=b|0;c=c|0;c=Q(b)|0;if((c|0)==32)c=c+(Q(a)|0)|0;y=0;return c|0;}function mE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192)return nb(b|0,d|0,e|0)|0;f=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0;}h=g&-4|0;e=h-64|0;while((b|0)<=(e|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0;}while((b|0)<(h|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;}}else{h=g-4|0;while((b|0)<(h|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0;}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;}return f|0;}function nE(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0;}b=e;}else mE(b,c,d)|0;return b|0;}function oE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0;}g=f&-4|0;h=g-64|0;i=d|d<<8|d<<16|d<<24;while((b|0)<=(h|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0;}while((b|0)<(g|0)){c[b>>2]=i;b=b+4|0;}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0;}return f-e|0;}function pE(a){a=a|0;var b=0,d=0;b=c[i>>2]|0;d=b+a|0;if((a|0)>0&(d|0)<(b|0)|(d|0)<0){V()|0;Ca(12);return-1;}c[i>>2]=d;if((d|0)>(U()|0)?(T()|0)==0:0){c[i>>2]=b;Ca(12);return-1;}return b|0;}function qE(a){a=a|0;return oc[a&7]()|0;}function rE(a,b){a=a|0;b=b|0;return pc[a&63](b|0)|0;}function sE(a,b,c){a=a|0;b=b|0;c=c|0;return qc[a&63](b|0,c|0)|0;}function tE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return rc[a&31](b|0,c|0,d|0)|0;}function uE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return sc[a&15](b|0,c|0,d|0,e|0)|0;}function vE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return tc[a&7](b|0,c|0,d|0,e|0,f|0)|0;}function wE(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return uc[a&31](b|0,c|0,d|0,e|0,f|0,g|0)|0;}function xE(a){a=a|0;vc[a&3]();}function yE(a,b){a=a|0;b=b|0;wc[a&127](b|0);}function zE(a,b,c){a=a|0;b=b|0;c=c|0;xc[a&31](b|0,c|0);}function AE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;yc[a&7](b|0,c|0,d|0);}function BE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;zc[a&7](b|0,c|0,d|0,e|0);}function CE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Ac[a&3](b|0,c|0,d|0,e|0,f|0);}function DE(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Bc[a&3](b|0,c|0,d|0,e|0,f|0,g|0);}function EE(){R(0);return 0;}function FE(a){a=a|0;R(1);return 0;}function GE(a,b){a=a|0;b=b|0;R(2);return 0;}function HE(a,b,c){a=a|0;b=b|0;c=c|0;R(3);return 0;}function IE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;R(4);return 0;}function JE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;R(5);return 0;}function KE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;R(6);return 0;}function LE(){R(7);}function ME(a){a=a|0;R(8);}function NE(a,b){a=a|0;b=b|0;R(9);}function OE(a,b,c){a=a|0;b=b|0;c=c|0;R(10);}function PE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;R(11);}function QE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;R(12);}function RE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;R(13);}// EMSCRIPTEN_END_FUNCS
- var oc=[EE,Ce,Me,Ue,ge,EE,EE,EE];var pc=[FE,fd,ld,nd,td,vd,Bd,Ed,Kd,Md,Sd,Ud,_d,kf,qf,xf,Df,If,Of,Tf,Zf,fg,lg,og,ug,Fg,Lg,Og,Ug,Iy,Tz,qe,ve,Qc,Ae,De,Ke,Ne,Se,Ve,Wc,ee,he,Mc,Oo,Gx,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE,FE];var qc=[GE,kd,sd,Ad,Jd,Rd,Zd,pf,Cf,Nf,Yf,jg,kg,sg,tg,Jg,Kg,Sg,Tg,Ht,pe,Oc,ze,$e,af,Rc,Sc,Uc,Vc,We,Xc,Zc,_c,ke,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE,GE];var rc=[HE,Jy,Ky,Ny,zz,cA,xA,zA,CA,ue,Ee,Fe,cf,Oe,Pe,Tc,Re,Xe,Yc,Ze,le,ce,Py,HE,HE,HE,HE,HE,HE,HE,HE,HE];var sc=[IE,vu,wu,Kv,Lv,Xw,Yw,bf,He,df,rf,Qe,Ye,me,IE,IE];var tc=[JE,Ge,Ie,Je,tn,sn,Km,Jm];var uc=[KE,Xl,Yl,Zl,_l,$l,am,bm,cm,dm,em,fm,gm,hm,im,jm,km,KE,KE,KE,KE,KE,KE,KE,KE,KE,KE,KE,KE,KE,KE,KE];var vc=[LE,Xz,Jc,qA];var wc=[ME,Cd,ed,hd,id,md,pd,qd,ud,xd,yd,Dd,Gd,Hd,Ld,Od,Pd,Td,Wd,Xd,hf,jf,mf,nf,vf,wf,zf,Af,Gf,Hf,Kf,Lf,Rf,Sf,Vf,Wf,dg,eg,hg,ig,ng,qg,rg,Dg,Eg,Hg,Ig,Ng,Qg,Rg,Rz,Sz,_z,$z,aA,bA,lA,wA,yA,BA,DA,ne,re,we,Be,Le,Te,fe,ef,sf,Ff,Qf,rA,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME,ME];var xc=[NE,gd,jd,od,rd,wd,zd,Fd,Id,Nd,Qd,Vd,Yd,lf,of,yf,Bf,Jf,Mf,Uf,Xf,gg,pg,Gg,Pg,It,Kc,Lc,Nc,$d,NE,NE];var yc=[OE,oe,ie,ae,be,OE,OE,OE];var zc=[PE,fA,oA,GA,je,PE,PE,PE];var Ac=[QE,eA,nA,FA];var Bc=[RE,dA,mA,EA];return{__GLOBAL__sub_I_bind_cpp:zy,__GLOBAL__sub_I_zstd_binding_cc:_e,___cxa_can_catch:_D,___cxa_demangle:KA,___cxa_is_pointer_type:$D,___errno_location:My,___getTypeName:By,___muldi3:cE,___udivdi3:hE,_bitshift64Lshr:iE,_bitshift64Shl:jE,_free:Dy,_i64Add:dE,_i64Subtract:eE,_llvm_bswap_i32:kE,_llvm_ctlz_i64:lE,_llvm_cttz_i32:fE,_malloc:Cy,_memcpy:mE,_memmove:nE,_memset:oE,_sbrk:pE,dynCall_i:qE,dynCall_ii:rE,dynCall_iii:sE,dynCall_iiii:tE,dynCall_iiiii:uE,dynCall_iiiiii:vE,dynCall_iiiiiii:wE,dynCall_v:xE,dynCall_vi:yE,dynCall_vii:zE,dynCall_viii:AE,dynCall_viiii:BE,dynCall_viiiii:CE,dynCall_viiiiii:DE,establishStackSpace:Fc,getTempRet0:Ic,runPostSets:aE,setTempRet0:Hc,setThrew:Gc,stackAlloc:Cc,stackRestore:Ec,stackSave:Dc};}(// EMSCRIPTEN_END_ASM
- Module.asmGlobalArg,Module.asmLibraryArg,buffer);var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var __GLOBAL__sub_I_zstd_binding_cc=Module["__GLOBAL__sub_I_zstd_binding_cc"]=asm["__GLOBAL__sub_I_zstd_binding_cc"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var ___cxa_demangle=Module["___cxa_demangle"]=asm["___cxa_demangle"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _free=Module["_free"]=asm["_free"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _llvm_ctlz_i64=Module["_llvm_ctlz_i64"]=asm["_llvm_ctlz_i64"];var _llvm_cttz_i32=Module["_llvm_cttz_i32"]=asm["_llvm_cttz_i32"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _memmove=Module["_memmove"]=asm["_memmove"];var _memset=Module["_memset"]=asm["_memset"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var setThrew=Module["setThrew"]=asm["setThrew"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var _stackRestore=Module["stackRestore"]=asm["stackRestore"];var _stackSave=Module["stackSave"]=asm["stackSave"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];Module["asm"]=asm;Module["FS"]=FS;if(memoryInitializer){if(!isDataURI(memoryInitializer)){memoryInitializer=locateFile(memoryInitializer);}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,GLOBAL_BASE);}else{var doBrowserLoad=function doBrowserLoad(){Module["readAsync"](memoryInitializer,applyMemoryInitializer,function(){throw"could not load memory initializer "+memoryInitializer;});};addRunDependency("memory initializer");var applyMemoryInitializer=function applyMemoryInitializer(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer");};var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer);}else if(Module["memoryInitializerRequest"]){var useRequest=function useRequest(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module["memoryInitializerRequestURL"]);if(data){response=data.buffer;}else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return;}}applyMemoryInitializer(response);};if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0);}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest);}}else{doBrowserLoad();}}}Module["then"]=function(func){if(Module["calledRun"]){func(Module);}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=function(){if(old)old();func(Module);};}return Module;};function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status;}ExitStatus.prototype=new Error();ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller;};function run(args){args=args||Module["arguments"];if(runDependencies>0){return;}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun();}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("");},1);doRun();},1);}else{doRun();}}Module["run"]=run;function abort(what){if(Module["onAbort"]){Module["onAbort"](what);}if(what!==undefined){out(what);err(what);what=JSON.stringify(what);}else{what="";}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info.";}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()();}}Module["noExitRuntime"]=true;run();return Module;};}();if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof(module))==='object')module.exports=Module;else if(typeof define==='function'&&define['amd'])define([],function(){return Module;});else if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object')exports["Module"]=Module;
- }).call(this,require('_process'),require("buffer").Buffer,"/lib")
- },{"_process":126,"buffer":54,"crypto":63,"fs":9,"path":119}],7:[function(require,module,exports){
- 'use strict';var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var ArrayBufferHelper=require('./helpers.js').ArrayBufferHelper;var constants=require('./constants.js');var onReady=function onReady(binding){var codec=new binding.ZstdCodec();var withBindingInstance=function withBindingInstance(instance,callback){try{return callback(instance);}finally{instance.delete();}};var withCppVector=function withCppVector(callback){var vector=new binding.VectorU8();return withBindingInstance(vector,callback);};var correctCompressionLevel=function correctCompressionLevel(compression_level){return compression_level||constants.DEFAULT_COMPRESSION_LEVEL;};var compressBoundImpl=function compressBoundImpl(content_size){var rc=codec.compressBound(content_size);return rc>=0?rc:null;};var contentSizeImpl=function contentSizeImpl(src_vec){var rc=codec.contentSize(src_vec);return rc>=0?rc:null;};var ArrayBufferSink=function(){function ArrayBufferSink(initial_size){_classCallCheck(this,ArrayBufferSink);this._buffer=new ArrayBuffer(initial_size);this._array=new Uint8Array(this._buffer);this._offset=0;}_createClass(ArrayBufferSink,[{key:'concat',value:function concat(array){if(array.length+this._offset>this._array.length){this._grow(Math.max(this._array.length,array.length)*2);}this._array.set(array,this._offset);this._offset+=array.length;}},{key:'array',value:function array(){// NOTE: clone buffer to shrink to fit
- var buffer=ArrayBufferHelper.transfer(this._buffer,this._offset);return new Uint8Array(buffer);}},{key:'_grow',value:function _grow(new_size){this._buffer=ArrayBufferHelper.transfer(this._buffer,new_size);this._array=new Uint8Array(this._buffer);}}]);return ArrayBufferSink;}();var Generic=function(){function Generic(){_classCallCheck(this,Generic);}_createClass(Generic,[{key:'compressBound',value:function compressBound(content_bytes){return compressBoundImpl(content_bytes.length);}},{key:'contentSize',value:function contentSize(compressed_bytes){return withCppVector(function(src){binding.cloneToVector(src,compressed_bytes);return contentSizeImpl(src);});}}]);return Generic;}();var Simple=function(){function Simple(){_classCallCheck(this,Simple);}_createClass(Simple,[{key:'compress',value:function compress(content_bytes,compression_level){// use basic-api `compress`, to embed `frameContentSize`.
- var compressBound=compressBoundImpl(content_bytes.length);if(!compressBound)return null;compression_level=correctCompressionLevel(compression_level);return withCppVector(function(src){return withCppVector(function(dest){binding.cloneToVector(src,content_bytes);dest.resize(compressBound,0);var rc=codec.compress(dest,src,compression_level);if(rc<0)return null;// `rc` is compressed size
- dest.resize(rc,0);return binding.cloneAsTypedArray(dest);});});}},{key:'decompress',value:function decompress(compressed_bytes){// use streaming-api, to support data without `frameContentSize`.
- return withCppVector(function(src){return withCppVector(function(dest){binding.cloneToVector(src,compressed_bytes);var contentSize=contentSizeImpl(src);if(!contentSize)return null;dest.resize(contentSize,0);var rc=codec.decompress(dest,src);if(rc<0||rc!=contentSize)return null;// `rc` is compressed size
- return binding.cloneAsTypedArray(dest);});});}},{key:'compressUsingDict',value:function compressUsingDict(content_bytes,cdict){// use basic-api `compress`, to embed `frameContentSize`.
- var compressBound=compressBoundImpl(content_bytes.length);if(!compressBound)return null;return withCppVector(function(src){return withCppVector(function(dest){binding.cloneToVector(src,content_bytes);dest.resize(compressBound,0);var rc=codec.compressUsingDict(dest,src,cdict.get());if(rc<0)return null;// `rc` is original content size
- dest.resize(rc,0);return binding.cloneAsTypedArray(dest);});});}},{key:'decompressUsingDict',value:function decompressUsingDict(compressed_bytes,ddict){// use streaming-api, to support data without `frameContentSize`.
- return withCppVector(function(src){return withCppVector(function(dest){binding.cloneToVector(src,compressed_bytes);var contentSize=contentSizeImpl(src);if(!contentSize)return null;dest.resize(contentSize,0);var rc=codec.decompressUsingDict(dest,src,ddict.get());if(rc<0||rc!=contentSize)return null;// `rc` is compressed size
- return binding.cloneAsTypedArray(dest);});});}}]);return Simple;}();var Streaming=function(){function Streaming(){_classCallCheck(this,Streaming);}_createClass(Streaming,[{key:'compress',value:function compress(content_bytes,compression_level){return withBindingInstance(new binding.ZstdCompressStreamBinding(),function(stream){var initial_size=compressBoundImpl(content_bytes.length);var sink=new ArrayBufferSink(initial_size);var callback=function callback(compressed){sink.concat(compressed);};var level=correctCompressionLevel(compression_level);if(!stream.begin(level))return null;if(!stream.transform(content_bytes,callback))return null;if(!stream.end(callback))return null;return sink.array();});}},{key:'compressChunks',value:function compressChunks(chunks,size_hint,compression_level){return withBindingInstance(new binding.ZstdCompressStreamBinding(),function(stream){var initial_size=size_hint||constants.STREAMING_DEFAULT_BUFFER_SIZE;var sink=new ArrayBufferSink(initial_size);var callback=function callback(compressed){sink.concat(compressed);};var level=correctCompressionLevel(compression_level);if(!stream.begin(level))return null;var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=chunks[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var chunk=_step.value;if(!stream.transform(chunk,callback))return null;}}catch(err){_didIteratorError=true;_iteratorError=err;}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return();}}finally{if(_didIteratorError){throw _iteratorError;}}}if(!stream.end(callback))return null;return sink.array();});}},{key:'compressUsingDict',value:function compressUsingDict(content_bytes,cdict){return withBindingInstance(new binding.ZstdCompressStreamBinding(),function(stream){var initial_size=compressBoundImpl(content_bytes.length);var sink=new ArrayBufferSink(initial_size);var callback=function callback(compressed){sink.concat(compressed);};if(!stream.beginUsingDict(cdict.get()))return null;if(!stream.transform(content_bytes,callback))return null;if(!stream.end(callback))return null;return sink.array();});}},{key:'compressChunksUsingDict',value:function compressChunksUsingDict(chunks,size_hint,cdict){return withBindingInstance(new binding.ZstdCompressStreamBinding(),function(stream){var initial_size=size_hint||constants.STREAMING_DEFAULT_BUFFER_SIZE;var sink=new ArrayBufferSink(initial_size);var callback=function callback(compressed){sink.concat(compressed);};if(!stream.beginUsingDict(cdict.get()))return null;var _iteratorNormalCompletion2=true;var _didIteratorError2=false;var _iteratorError2=undefined;try{for(var _iterator2=chunks[Symbol.iterator](),_step2;!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){var chunk=_step2.value;if(!stream.transform(chunk,callback))return null;}}catch(err){_didIteratorError2=true;_iteratorError2=err;}finally{try{if(!_iteratorNormalCompletion2&&_iterator2.return){_iterator2.return();}}finally{if(_didIteratorError2){throw _iteratorError2;}}}if(!stream.end(callback))return null;return sink.array();});}},{key:'decompress',value:function decompress(compressed_bytes,size_hint){var _this=this;return withBindingInstance(new binding.ZstdDecompressStreamBinding(),function(stream){var initial_size=size_hint||_this._estimateContentSize(compressed_bytes);var sink=new ArrayBufferSink(initial_size);var callback=function callback(decompressed){sink.concat(decompressed);};if(!stream.begin())return null;if(!stream.transform(compressed_bytes,callback))return null;if(!stream.end(callback))return null;return sink.array();});}},{key:'decompressChunks',value:function decompressChunks(chunks,size_hint){return withBindingInstance(new binding.ZstdDecompressStreamBinding(),function(stream){var initial_size=size_hint||constants.STREAMING_DEFAULT_BUFFER_SIZE;var sink=new ArrayBufferSink(initial_size);var callback=function callback(decompressed){sink.concat(decompressed);};if(!stream.begin())return null;var _iteratorNormalCompletion3=true;var _didIteratorError3=false;var _iteratorError3=undefined;try{for(var _iterator3=chunks[Symbol.iterator](),_step3;!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=true){var chunk=_step3.value;if(!stream.transform(chunk,callback))return null;}}catch(err){_didIteratorError3=true;_iteratorError3=err;}finally{try{if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return();}}finally{if(_didIteratorError3){throw _iteratorError3;}}}if(!stream.end(callback))return null;return sink.array();});}},{key:'decompressUsingDict',value:function decompressUsingDict(compressed_bytes,size_hint,ddict){var _this2=this;return withBindingInstance(new binding.ZstdDecompressStreamBinding(),function(stream){var initial_size=size_hint||_this2._estimateContentSize(compressed_bytes);var sink=new ArrayBufferSink(initial_size);var callback=function callback(decompressed){sink.concat(decompressed);};if(!stream.beginUsingDict(ddict.get()))return null;if(!stream.transform(compressed_bytes,callback))return null;if(!stream.end(callback))return null;return sink.array();});}},{key:'decompressChunksUsingDict',value:function decompressChunksUsingDict(chunks,size_hint,ddict){return withBindingInstance(new binding.ZstdDecompressStreamBinding(),function(stream){var initial_size=size_hint||constants.STREAMING_DEFAULT_BUFFER_SIZE;var sink=new ArrayBufferSink(initial_size);var callback=function callback(decompressed){sink.concat(decompressed);};if(!stream.beginUsingDict(ddict.get()))return null;var _iteratorNormalCompletion4=true;var _didIteratorError4=false;var _iteratorError4=undefined;try{for(var _iterator4=chunks[Symbol.iterator](),_step4;!(_iteratorNormalCompletion4=(_step4=_iterator4.next()).done);_iteratorNormalCompletion4=true){var chunk=_step4.value;if(!stream.transform(chunk,callback))return null;}}catch(err){_didIteratorError4=true;_iteratorError4=err;}finally{try{if(!_iteratorNormalCompletion4&&_iterator4.return){_iterator4.return();}}finally{if(_didIteratorError4){throw _iteratorError4;}}}if(!stream.end(callback))return null;return sink.array();});}},{key:'_estimateContentSize',value:function _estimateContentSize(compressed_bytes){// REF: https://code.facebook.com/posts/1658392934479273/smaller-and-faster-data-compression-with-zstandard/
- // with lzbench, ratio=3.11 .. 3.14. round up to integer
- return compressed_bytes.length*4;}}]);return Streaming;}();var ZstdCompressionDict=function(){function ZstdCompressionDict(dict_bytes,compression_level){_classCallCheck(this,ZstdCompressionDict);this.binding=binding.createCompressionDict(dict_bytes,compression_level);}_createClass(ZstdCompressionDict,[{key:'get',value:function get(){return this.binding;}},{key:'close',value:function close(){if(this.binding){this.binding.delete();}}},{key:'delete',value:function _delete(){this.close();}}]);return ZstdCompressionDict;}();var ZstdDecompressionDict=function(){function ZstdDecompressionDict(dict_bytes){_classCallCheck(this,ZstdDecompressionDict);this.binding=new binding.createDecompressionDict(dict_bytes);}_createClass(ZstdDecompressionDict,[{key:'get',value:function get(){return this.binding;}},{key:'close',value:function close(){if(this.binding){this.binding.delete();}}},{key:'delete',value:function _delete(){this.close();}}]);return ZstdDecompressionDict;}();var zstd={};zstd.Generic=Generic;zstd.Simple=Simple;zstd.Streaming=Streaming;zstd.Dict={};zstd.Dict.Compress=ZstdCompressionDict;zstd.Dict.Decompress=ZstdDecompressionDict;return zstd;};exports.run=function(f){return require('./module.js').run(function(binding){var zstd=onReady(binding);f(zstd);});};
- },{"./constants.js":2,"./helpers.js":3,"./module.js":4}],8:[function(require,module,exports){
- 'use strict';var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}var stream=require('stream');var binding=require('./module.js').Binding;var constants=require('./constants.js');var helpers=require('./helpers.js');var getClassName=helpers.getClassName;var toTypedArray=helpers.toTypedArray;var fromTypedArrayToBuffer=helpers.fromTypedArrayToBuffer;var onReady=function onReady(binding){var ZstdCompressTransform=function(_stream$Transform){_inherits(ZstdCompressTransform,_stream$Transform);function ZstdCompressTransform(compression_level,string_decoder,option){_classCallCheck(this,ZstdCompressTransform);var _this=_possibleConstructorReturn(this,(ZstdCompressTransform.__proto__||Object.getPrototypeOf(ZstdCompressTransform)).call(this,option||{}));_this.string_decoder=string_decoder;_this.binding=new binding.ZstdCompressStreamBinding();_this.binding.begin(compression_level||constants.DEFAULT_COMPRESSION_LEVEL);_this.callback=function(compressed){_this.push(fromTypedArrayToBuffer(compressed),'buffer');};return _this;}_createClass(ZstdCompressTransform,[{key:'_transform',value:function _transform(chunk,encoding,callback){var chunkBytes=toTypedArray(chunk,encoding,this.string_decoder);if(!chunkBytes){var type_name=getClassName(chunk)||(typeof chunk==='undefined'?'undefined':_typeof(chunk));callback(new Error('unsupported chunk type: '+type_name));return;}if(this.binding.transform(chunkBytes,this.callback)){callback();}else{callback(new Error('ZstdDecompressTransform: Error on _transform'));}}},{key:'_flush',value:function _flush(callback){if(this.binding.flush(this.callback)){callback();}else{callback(new Error('ZstdDecompressTransform: Error on _flush'));}}},{key:'_final',value:function _final(callback){if(this.binding.end(this.callback)){callback();}else{callback(new Error('ZstdDecompressTransform: Error on _final'));}}}]);return ZstdCompressTransform;}(stream.Transform);var ZstdDecompressTransform=function(_stream$Transform2){_inherits(ZstdDecompressTransform,_stream$Transform2);function ZstdDecompressTransform(option){_classCallCheck(this,ZstdDecompressTransform);var _this2=_possibleConstructorReturn(this,(ZstdDecompressTransform.__proto__||Object.getPrototypeOf(ZstdDecompressTransform)).call(this,option||{}));_this2.binding=new binding.ZstdDecompressStreamBinding();_this2.binding.begin();_this2.callback=function(decompressed){_this2.push(fromTypedArrayToBuffer(decompressed),'buffer');};return _this2;}_createClass(ZstdDecompressTransform,[{key:'_transform',value:function _transform(chunk,encoding,callback){var chunkBytes=toTypedArray(chunk,encoding,this.string_decoder);if(!chunkBytes){var type_name=getClassName(chunk)||(typeof chunk==='undefined'?'undefined':_typeof(chunk));callback(new Error('unsupported chunk type: '+type_name));return;}if(this.binding.transform(chunk,this.callback)){callback();}else{callback(new Error('ZstdDecompressTransform: Error on _transform'));}}},{key:'_flush',value:function _flush(callback){if(this.binding.flush(this.callback)){callback();}else{callback(new Error('ZstdDecompressTransform: Error on _flush'));}}},{key:'_final',value:function _final(callback){if(this.binding.end(this.callback)){callback();}else{callback(new Error('ZstdDecompressTransform: Error on _final'));}}}]);return ZstdDecompressTransform;}(stream.Transform);var streams={};streams.ZstdCompressTransform=ZstdCompressTransform;streams.ZstdDecompressTransform=ZstdDecompressTransform;return streams;};exports=function exports(f){return require('./module.js').then(function(binding){var streams=onReady(binding);f(streams);});};
- },{"./constants.js":2,"./helpers.js":3,"./module.js":4,"stream":157}],9:[function(require,module,exports){
- },{}],10:[function(require,module,exports){
- var asn1 = exports;
- asn1.bignum = require('bn.js');
- asn1.define = require('./asn1/api').define;
- asn1.base = require('./asn1/base');
- asn1.constants = require('./asn1/constants');
- asn1.decoders = require('./asn1/decoders');
- asn1.encoders = require('./asn1/encoders');
- },{"./asn1/api":11,"./asn1/base":13,"./asn1/constants":17,"./asn1/decoders":19,"./asn1/encoders":22,"bn.js":25}],11:[function(require,module,exports){
- var asn1 = require('../asn1');
- var inherits = require('inherits');
- var api = exports;
- api.define = function define(name, body) {
- return new Entity(name, body);
- };
- function Entity(name, body) {
- this.name = name;
- this.body = body;
- this.decoders = {};
- this.encoders = {};
- };
- Entity.prototype._createNamed = function createNamed(base) {
- var named;
- try {
- named = require('vm').runInThisContext(
- '(function ' + this.name + '(entity) {\n' +
- ' this._initNamed(entity);\n' +
- '})'
- );
- } catch (e) {
- named = function (entity) {
- this._initNamed(entity);
- };
- }
- inherits(named, base);
- named.prototype._initNamed = function initnamed(entity) {
- base.call(this, entity);
- };
- return new named(this);
- };
- Entity.prototype._getDecoder = function _getDecoder(enc) {
- enc = enc || 'der';
- // Lazily create decoder
- if (!this.decoders.hasOwnProperty(enc))
- this.decoders[enc] = this._createNamed(asn1.decoders[enc]);
- return this.decoders[enc];
- };
- Entity.prototype.decode = function decode(data, enc, options) {
- return this._getDecoder(enc).decode(data, options);
- };
- Entity.prototype._getEncoder = function _getEncoder(enc) {
- enc = enc || 'der';
- // Lazily create encoder
- if (!this.encoders.hasOwnProperty(enc))
- this.encoders[enc] = this._createNamed(asn1.encoders[enc]);
- return this.encoders[enc];
- };
- Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) {
- return this._getEncoder(enc).encode(data, reporter);
- };
- },{"../asn1":10,"inherits":108,"vm":160}],12:[function(require,module,exports){
- var inherits = require('inherits');
- var Reporter = require('../base').Reporter;
- var Buffer = require('buffer').Buffer;
- function DecoderBuffer(base, options) {
- Reporter.call(this, options);
- if (!Buffer.isBuffer(base)) {
- this.error('Input not Buffer');
- return;
- }
- this.base = base;
- this.offset = 0;
- this.length = base.length;
- }
- inherits(DecoderBuffer, Reporter);
- exports.DecoderBuffer = DecoderBuffer;
- DecoderBuffer.prototype.save = function save() {
- return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };
- };
- DecoderBuffer.prototype.restore = function restore(save) {
- // Return skipped data
- var res = new DecoderBuffer(this.base);
- res.offset = save.offset;
- res.length = this.offset;
- this.offset = save.offset;
- Reporter.prototype.restore.call(this, save.reporter);
- return res;
- };
- DecoderBuffer.prototype.isEmpty = function isEmpty() {
- return this.offset === this.length;
- };
- DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {
- if (this.offset + 1 <= this.length)
- return this.base.readUInt8(this.offset++, true);
- else
- return this.error(fail || 'DecoderBuffer overrun');
- }
- DecoderBuffer.prototype.skip = function skip(bytes, fail) {
- if (!(this.offset + bytes <= this.length))
- return this.error(fail || 'DecoderBuffer overrun');
- var res = new DecoderBuffer(this.base);
- // Share reporter state
- res._reporterState = this._reporterState;
- res.offset = this.offset;
- res.length = this.offset + bytes;
- this.offset += bytes;
- return res;
- }
- DecoderBuffer.prototype.raw = function raw(save) {
- return this.base.slice(save ? save.offset : this.offset, this.length);
- }
- function EncoderBuffer(value, reporter) {
- if (Array.isArray(value)) {
- this.length = 0;
- this.value = value.map(function(item) {
- if (!(item instanceof EncoderBuffer))
- item = new EncoderBuffer(item, reporter);
- this.length += item.length;
- return item;
- }, this);
- } else if (typeof value === 'number') {
- if (!(0 <= value && value <= 0xff))
- return reporter.error('non-byte EncoderBuffer value');
- this.value = value;
- this.length = 1;
- } else if (typeof value === 'string') {
- this.value = value;
- this.length = Buffer.byteLength(value);
- } else if (Buffer.isBuffer(value)) {
- this.value = value;
- this.length = value.length;
- } else {
- return reporter.error('Unsupported type: ' + typeof value);
- }
- }
- exports.EncoderBuffer = EncoderBuffer;
- EncoderBuffer.prototype.join = function join(out, offset) {
- if (!out)
- out = new Buffer(this.length);
- if (!offset)
- offset = 0;
- if (this.length === 0)
- return out;
- if (Array.isArray(this.value)) {
- this.value.forEach(function(item) {
- item.join(out, offset);
- offset += item.length;
- });
- } else {
- if (typeof this.value === 'number')
- out[offset] = this.value;
- else if (typeof this.value === 'string')
- out.write(this.value, offset);
- else if (Buffer.isBuffer(this.value))
- this.value.copy(out, offset);
- offset += this.length;
- }
- return out;
- };
- },{"../base":13,"buffer":54,"inherits":108}],13:[function(require,module,exports){
- var base = exports;
- base.Reporter = require('./reporter').Reporter;
- base.DecoderBuffer = require('./buffer').DecoderBuffer;
- base.EncoderBuffer = require('./buffer').EncoderBuffer;
- base.Node = require('./node');
- },{"./buffer":12,"./node":14,"./reporter":15}],14:[function(require,module,exports){
- var Reporter = require('../base').Reporter;
- var EncoderBuffer = require('../base').EncoderBuffer;
- var DecoderBuffer = require('../base').DecoderBuffer;
- var assert = require('minimalistic-assert');
- // Supported tags
- var tags = [
- 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',
- 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',
- 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',
- 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'
- ];
- // Public methods list
- var methods = [
- 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',
- 'any', 'contains'
- ].concat(tags);
- // Overrided methods list
- var overrided = [
- '_peekTag', '_decodeTag', '_use',
- '_decodeStr', '_decodeObjid', '_decodeTime',
- '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',
- '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',
- '_encodeNull', '_encodeInt', '_encodeBool'
- ];
- function Node(enc, parent) {
- var state = {};
- this._baseState = state;
- state.enc = enc;
- state.parent = parent || null;
- state.children = null;
- // State
- state.tag = null;
- state.args = null;
- state.reverseArgs = null;
- state.choice = null;
- state.optional = false;
- state.any = false;
- state.obj = false;
- state.use = null;
- state.useDecoder = null;
- state.key = null;
- state['default'] = null;
- state.explicit = null;
- state.implicit = null;
- state.contains = null;
- // Should create new instance on each method
- if (!state.parent) {
- state.children = [];
- this._wrap();
- }
- }
- module.exports = Node;
- var stateProps = [
- 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',
- 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',
- 'implicit', 'contains'
- ];
- Node.prototype.clone = function clone() {
- var state = this._baseState;
- var cstate = {};
- stateProps.forEach(function(prop) {
- cstate[prop] = state[prop];
- });
- var res = new this.constructor(cstate.parent);
- res._baseState = cstate;
- return res;
- };
- Node.prototype._wrap = function wrap() {
- var state = this._baseState;
- methods.forEach(function(method) {
- this[method] = function _wrappedMethod() {
- var clone = new this.constructor(this);
- state.children.push(clone);
- return clone[method].apply(clone, arguments);
- };
- }, this);
- };
- Node.prototype._init = function init(body) {
- var state = this._baseState;
- assert(state.parent === null);
- body.call(this);
- // Filter children
- state.children = state.children.filter(function(child) {
- return child._baseState.parent === this;
- }, this);
- assert.equal(state.children.length, 1, 'Root node can have only one child');
- };
- Node.prototype._useArgs = function useArgs(args) {
- var state = this._baseState;
- // Filter children and args
- var children = args.filter(function(arg) {
- return arg instanceof this.constructor;
- }, this);
- args = args.filter(function(arg) {
- return !(arg instanceof this.constructor);
- }, this);
- if (children.length !== 0) {
- assert(state.children === null);
- state.children = children;
- // Replace parent to maintain backward link
- children.forEach(function(child) {
- child._baseState.parent = this;
- }, this);
- }
- if (args.length !== 0) {
- assert(state.args === null);
- state.args = args;
- state.reverseArgs = args.map(function(arg) {
- if (typeof arg !== 'object' || arg.constructor !== Object)
- return arg;
- var res = {};
- Object.keys(arg).forEach(function(key) {
- if (key == (key | 0))
- key |= 0;
- var value = arg[key];
- res[value] = key;
- });
- return res;
- });
- }
- };
- //
- // Overrided methods
- //
- overrided.forEach(function(method) {
- Node.prototype[method] = function _overrided() {
- var state = this._baseState;
- throw new Error(method + ' not implemented for encoding: ' + state.enc);
- };
- });
- //
- // Public methods
- //
- tags.forEach(function(tag) {
- Node.prototype[tag] = function _tagMethod() {
- var state = this._baseState;
- var args = Array.prototype.slice.call(arguments);
- assert(state.tag === null);
- state.tag = tag;
- this._useArgs(args);
- return this;
- };
- });
- Node.prototype.use = function use(item) {
- assert(item);
- var state = this._baseState;
- assert(state.use === null);
- state.use = item;
- return this;
- };
- Node.prototype.optional = function optional() {
- var state = this._baseState;
- state.optional = true;
- return this;
- };
- Node.prototype.def = function def(val) {
- var state = this._baseState;
- assert(state['default'] === null);
- state['default'] = val;
- state.optional = true;
- return this;
- };
- Node.prototype.explicit = function explicit(num) {
- var state = this._baseState;
- assert(state.explicit === null && state.implicit === null);
- state.explicit = num;
- return this;
- };
- Node.prototype.implicit = function implicit(num) {
- var state = this._baseState;
- assert(state.explicit === null && state.implicit === null);
- state.implicit = num;
- return this;
- };
- Node.prototype.obj = function obj() {
- var state = this._baseState;
- var args = Array.prototype.slice.call(arguments);
- state.obj = true;
- if (args.length !== 0)
- this._useArgs(args);
- return this;
- };
- Node.prototype.key = function key(newKey) {
- var state = this._baseState;
- assert(state.key === null);
- state.key = newKey;
- return this;
- };
- Node.prototype.any = function any() {
- var state = this._baseState;
- state.any = true;
- return this;
- };
- Node.prototype.choice = function choice(obj) {
- var state = this._baseState;
- assert(state.choice === null);
- state.choice = obj;
- this._useArgs(Object.keys(obj).map(function(key) {
- return obj[key];
- }));
- return this;
- };
- Node.prototype.contains = function contains(item) {
- var state = this._baseState;
- assert(state.use === null);
- state.contains = item;
- return this;
- };
- //
- // Decoding
- //
- Node.prototype._decode = function decode(input, options) {
- var state = this._baseState;
- // Decode root node
- if (state.parent === null)
- return input.wrapResult(state.children[0]._decode(input, options));
- var result = state['default'];
- var present = true;
- var prevKey = null;
- if (state.key !== null)
- prevKey = input.enterKey(state.key);
- // Check if tag is there
- if (state.optional) {
- var tag = null;
- if (state.explicit !== null)
- tag = state.explicit;
- else if (state.implicit !== null)
- tag = state.implicit;
- else if (state.tag !== null)
- tag = state.tag;
- if (tag === null && !state.any) {
- // Trial and Error
- var save = input.save();
- try {
- if (state.choice === null)
- this._decodeGeneric(state.tag, input, options);
- else
- this._decodeChoice(input, options);
- present = true;
- } catch (e) {
- present = false;
- }
- input.restore(save);
- } else {
- present = this._peekTag(input, tag, state.any);
- if (input.isError(present))
- return present;
- }
- }
- // Push object on stack
- var prevObj;
- if (state.obj && present)
- prevObj = input.enterObject();
- if (present) {
- // Unwrap explicit values
- if (state.explicit !== null) {
- var explicit = this._decodeTag(input, state.explicit);
- if (input.isError(explicit))
- return explicit;
- input = explicit;
- }
- var start = input.offset;
- // Unwrap implicit and normal values
- if (state.use === null && state.choice === null) {
- if (state.any)
- var save = input.save();
- var body = this._decodeTag(
- input,
- state.implicit !== null ? state.implicit : state.tag,
- state.any
- );
- if (input.isError(body))
- return body;
- if (state.any)
- result = input.raw(save);
- else
- input = body;
- }
- if (options && options.track && state.tag !== null)
- options.track(input.path(), start, input.length, 'tagged');
- if (options && options.track && state.tag !== null)
- options.track(input.path(), input.offset, input.length, 'content');
- // Select proper method for tag
- if (state.any)
- result = result;
- else if (state.choice === null)
- result = this._decodeGeneric(state.tag, input, options);
- else
- result = this._decodeChoice(input, options);
- if (input.isError(result))
- return result;
- // Decode children
- if (!state.any && state.choice === null && state.children !== null) {
- state.children.forEach(function decodeChildren(child) {
- // NOTE: We are ignoring errors here, to let parser continue with other
- // parts of encoded data
- child._decode(input, options);
- });
- }
- // Decode contained/encoded by schema, only in bit or octet strings
- if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {
- var data = new DecoderBuffer(result);
- result = this._getUse(state.contains, input._reporterState.obj)
- ._decode(data, options);
- }
- }
- // Pop object
- if (state.obj && present)
- result = input.leaveObject(prevObj);
- // Set key
- if (state.key !== null && (result !== null || present === true))
- input.leaveKey(prevKey, state.key, result);
- else if (prevKey !== null)
- input.exitKey(prevKey);
- return result;
- };
- Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {
- var state = this._baseState;
- if (tag === 'seq' || tag === 'set')
- return null;
- if (tag === 'seqof' || tag === 'setof')
- return this._decodeList(input, tag, state.args[0], options);
- else if (/str$/.test(tag))
- return this._decodeStr(input, tag, options);
- else if (tag === 'objid' && state.args)
- return this._decodeObjid(input, state.args[0], state.args[1], options);
- else if (tag === 'objid')
- return this._decodeObjid(input, null, null, options);
- else if (tag === 'gentime' || tag === 'utctime')
- return this._decodeTime(input, tag, options);
- else if (tag === 'null_')
- return this._decodeNull(input, options);
- else if (tag === 'bool')
- return this._decodeBool(input, options);
- else if (tag === 'objDesc')
- return this._decodeStr(input, tag, options);
- else if (tag === 'int' || tag === 'enum')
- return this._decodeInt(input, state.args && state.args[0], options);
- if (state.use !== null) {
- return this._getUse(state.use, input._reporterState.obj)
- ._decode(input, options);
- } else {
- return input.error('unknown tag: ' + tag);
- }
- };
- Node.prototype._getUse = function _getUse(entity, obj) {
- var state = this._baseState;
- // Create altered use decoder if implicit is set
- state.useDecoder = this._use(entity, obj);
- assert(state.useDecoder._baseState.parent === null);
- state.useDecoder = state.useDecoder._baseState.children[0];
- if (state.implicit !== state.useDecoder._baseState.implicit) {
- state.useDecoder = state.useDecoder.clone();
- state.useDecoder._baseState.implicit = state.implicit;
- }
- return state.useDecoder;
- };
- Node.prototype._decodeChoice = function decodeChoice(input, options) {
- var state = this._baseState;
- var result = null;
- var match = false;
- Object.keys(state.choice).some(function(key) {
- var save = input.save();
- var node = state.choice[key];
- try {
- var value = node._decode(input, options);
- if (input.isError(value))
- return false;
- result = { type: key, value: value };
- match = true;
- } catch (e) {
- input.restore(save);
- return false;
- }
- return true;
- }, this);
- if (!match)
- return input.error('Choice not matched');
- return result;
- };
- //
- // Encoding
- //
- Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) {
- return new EncoderBuffer(data, this.reporter);
- };
- Node.prototype._encode = function encode(data, reporter, parent) {
- var state = this._baseState;
- if (state['default'] !== null && state['default'] === data)
- return;
- var result = this._encodeValue(data, reporter, parent);
- if (result === undefined)
- return;
- if (this._skipDefault(result, reporter, parent))
- return;
- return result;
- };
- Node.prototype._encodeValue = function encode(data, reporter, parent) {
- var state = this._baseState;
- // Decode root node
- if (state.parent === null)
- return state.children[0]._encode(data, reporter || new Reporter());
- var result = null;
- // Set reporter to share it with a child class
- this.reporter = reporter;
- // Check if data is there
- if (state.optional && data === undefined) {
- if (state['default'] !== null)
- data = state['default']
- else
- return;
- }
- // Encode children first
- var content = null;
- var primitive = false;
- if (state.any) {
- // Anything that was given is translated to buffer
- result = this._createEncoderBuffer(data);
- } else if (state.choice) {
- result = this._encodeChoice(data, reporter);
- } else if (state.contains) {
- content = this._getUse(state.contains, parent)._encode(data, reporter);
- primitive = true;
- } else if (state.children) {
- content = state.children.map(function(child) {
- if (child._baseState.tag === 'null_')
- return child._encode(null, reporter, data);
- if (child._baseState.key === null)
- return reporter.error('Child should have a key');
- var prevKey = reporter.enterKey(child._baseState.key);
- if (typeof data !== 'object')
- return reporter.error('Child expected, but input is not object');
- var res = child._encode(data[child._baseState.key], reporter, data);
- reporter.leaveKey(prevKey);
- return res;
- }, this).filter(function(child) {
- return child;
- });
- content = this._createEncoderBuffer(content);
- } else {
- if (state.tag === 'seqof' || state.tag === 'setof') {
- // TODO(indutny): this should be thrown on DSL level
- if (!(state.args && state.args.length === 1))
- return reporter.error('Too many args for : ' + state.tag);
- if (!Array.isArray(data))
- return reporter.error('seqof/setof, but data is not Array');
- var child = this.clone();
- child._baseState.implicit = null;
- content = this._createEncoderBuffer(data.map(function(item) {
- var state = this._baseState;
- return this._getUse(state.args[0], data)._encode(item, reporter);
- }, child));
- } else if (state.use !== null) {
- result = this._getUse(state.use, parent)._encode(data, reporter);
- } else {
- content = this._encodePrimitive(state.tag, data);
- primitive = true;
- }
- }
- // Encode data itself
- var result;
- if (!state.any && state.choice === null) {
- var tag = state.implicit !== null ? state.implicit : state.tag;
- var cls = state.implicit === null ? 'universal' : 'context';
- if (tag === null) {
- if (state.use === null)
- reporter.error('Tag could be ommited only for .use()');
- } else {
- if (state.use === null)
- result = this._encodeComposite(tag, primitive, cls, content);
- }
- }
- // Wrap in explicit
- if (state.explicit !== null)
- result = this._encodeComposite(state.explicit, false, 'context', result);
- return result;
- };
- Node.prototype._encodeChoice = function encodeChoice(data, reporter) {
- var state = this._baseState;
- var node = state.choice[data.type];
- if (!node) {
- assert(
- false,
- data.type + ' not found in ' +
- JSON.stringify(Object.keys(state.choice)));
- }
- return node._encode(data.value, reporter);
- };
- Node.prototype._encodePrimitive = function encodePrimitive(tag, data) {
- var state = this._baseState;
- if (/str$/.test(tag))
- return this._encodeStr(data, tag);
- else if (tag === 'objid' && state.args)
- return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);
- else if (tag === 'objid')
- return this._encodeObjid(data, null, null);
- else if (tag === 'gentime' || tag === 'utctime')
- return this._encodeTime(data, tag);
- else if (tag === 'null_')
- return this._encodeNull();
- else if (tag === 'int' || tag === 'enum')
- return this._encodeInt(data, state.args && state.reverseArgs[0]);
- else if (tag === 'bool')
- return this._encodeBool(data);
- else if (tag === 'objDesc')
- return this._encodeStr(data, tag);
- else
- throw new Error('Unsupported tag: ' + tag);
- };
- Node.prototype._isNumstr = function isNumstr(str) {
- return /^[0-9 ]*$/.test(str);
- };
- Node.prototype._isPrintstr = function isPrintstr(str) {
- return /^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(str);
- };
- },{"../base":13,"minimalistic-assert":112}],15:[function(require,module,exports){
- var inherits = require('inherits');
- function Reporter(options) {
- this._reporterState = {
- obj: null,
- path: [],
- options: options || {},
- errors: []
- };
- }
- exports.Reporter = Reporter;
- Reporter.prototype.isError = function isError(obj) {
- return obj instanceof ReporterError;
- };
- Reporter.prototype.save = function save() {
- var state = this._reporterState;
- return { obj: state.obj, pathLen: state.path.length };
- };
- Reporter.prototype.restore = function restore(data) {
- var state = this._reporterState;
- state.obj = data.obj;
- state.path = state.path.slice(0, data.pathLen);
- };
- Reporter.prototype.enterKey = function enterKey(key) {
- return this._reporterState.path.push(key);
- };
- Reporter.prototype.exitKey = function exitKey(index) {
- var state = this._reporterState;
- state.path = state.path.slice(0, index - 1);
- };
- Reporter.prototype.leaveKey = function leaveKey(index, key, value) {
- var state = this._reporterState;
- this.exitKey(index);
- if (state.obj !== null)
- state.obj[key] = value;
- };
- Reporter.prototype.path = function path() {
- return this._reporterState.path.join('/');
- };
- Reporter.prototype.enterObject = function enterObject() {
- var state = this._reporterState;
- var prev = state.obj;
- state.obj = {};
- return prev;
- };
- Reporter.prototype.leaveObject = function leaveObject(prev) {
- var state = this._reporterState;
- var now = state.obj;
- state.obj = prev;
- return now;
- };
- Reporter.prototype.error = function error(msg) {
- var err;
- var state = this._reporterState;
- var inherited = msg instanceof ReporterError;
- if (inherited) {
- err = msg;
- } else {
- err = new ReporterError(state.path.map(function(elem) {
- return '[' + JSON.stringify(elem) + ']';
- }).join(''), msg.message || msg, msg.stack);
- }
- if (!state.options.partial)
- throw err;
- if (!inherited)
- state.errors.push(err);
- return err;
- };
- Reporter.prototype.wrapResult = function wrapResult(result) {
- var state = this._reporterState;
- if (!state.options.partial)
- return result;
- return {
- result: this.isError(result) ? null : result,
- errors: state.errors
- };
- };
- function ReporterError(path, msg) {
- this.path = path;
- this.rethrow(msg);
- };
- inherits(ReporterError, Error);
- ReporterError.prototype.rethrow = function rethrow(msg) {
- this.message = msg + ' at: ' + (this.path || '(shallow)');
- if (Error.captureStackTrace)
- Error.captureStackTrace(this, ReporterError);
- if (!this.stack) {
- try {
- // IE only adds stack when thrown
- throw new Error(this.message);
- } catch (e) {
- this.stack = e.stack;
- }
- }
- return this;
- };
- },{"inherits":108}],16:[function(require,module,exports){
- var constants = require('../constants');
- exports.tagClass = {
- 0: 'universal',
- 1: 'application',
- 2: 'context',
- 3: 'private'
- };
- exports.tagClassByName = constants._reverse(exports.tagClass);
- exports.tag = {
- 0x00: 'end',
- 0x01: 'bool',
- 0x02: 'int',
- 0x03: 'bitstr',
- 0x04: 'octstr',
- 0x05: 'null_',
- 0x06: 'objid',
- 0x07: 'objDesc',
- 0x08: 'external',
- 0x09: 'real',
- 0x0a: 'enum',
- 0x0b: 'embed',
- 0x0c: 'utf8str',
- 0x0d: 'relativeOid',
- 0x10: 'seq',
- 0x11: 'set',
- 0x12: 'numstr',
- 0x13: 'printstr',
- 0x14: 't61str',
- 0x15: 'videostr',
- 0x16: 'ia5str',
- 0x17: 'utctime',
- 0x18: 'gentime',
- 0x19: 'graphstr',
- 0x1a: 'iso646str',
- 0x1b: 'genstr',
- 0x1c: 'unistr',
- 0x1d: 'charstr',
- 0x1e: 'bmpstr'
- };
- exports.tagByName = constants._reverse(exports.tag);
- },{"../constants":17}],17:[function(require,module,exports){
- var constants = exports;
- // Helper
- constants._reverse = function reverse(map) {
- var res = {};
- Object.keys(map).forEach(function(key) {
- // Convert key to integer if it is stringified
- if ((key | 0) == key)
- key = key | 0;
- var value = map[key];
- res[value] = key;
- });
- return res;
- };
- constants.der = require('./der');
- },{"./der":16}],18:[function(require,module,exports){
- var inherits = require('inherits');
- var asn1 = require('../../asn1');
- var base = asn1.base;
- var bignum = asn1.bignum;
- // Import DER constants
- var der = asn1.constants.der;
- function DERDecoder(entity) {
- this.enc = 'der';
- this.name = entity.name;
- this.entity = entity;
- // Construct base tree
- this.tree = new DERNode();
- this.tree._init(entity.body);
- };
- module.exports = DERDecoder;
- DERDecoder.prototype.decode = function decode(data, options) {
- if (!(data instanceof base.DecoderBuffer))
- data = new base.DecoderBuffer(data, options);
- return this.tree._decode(data, options);
- };
- // Tree methods
- function DERNode(parent) {
- base.Node.call(this, 'der', parent);
- }
- inherits(DERNode, base.Node);
- DERNode.prototype._peekTag = function peekTag(buffer, tag, any) {
- if (buffer.isEmpty())
- return false;
- var state = buffer.save();
- var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: "' + tag + '"');
- if (buffer.isError(decodedTag))
- return decodedTag;
- buffer.restore(state);
- return decodedTag.tag === tag || decodedTag.tagStr === tag ||
- (decodedTag.tagStr + 'of') === tag || any;
- };
- DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {
- var decodedTag = derDecodeTag(buffer,
- 'Failed to decode tag of "' + tag + '"');
- if (buffer.isError(decodedTag))
- return decodedTag;
- var len = derDecodeLen(buffer,
- decodedTag.primitive,
- 'Failed to get length of "' + tag + '"');
- // Failure
- if (buffer.isError(len))
- return len;
- if (!any &&
- decodedTag.tag !== tag &&
- decodedTag.tagStr !== tag &&
- decodedTag.tagStr + 'of' !== tag) {
- return buffer.error('Failed to match tag: "' + tag + '"');
- }
- if (decodedTag.primitive || len !== null)
- return buffer.skip(len, 'Failed to match body of: "' + tag + '"');
- // Indefinite length... find END tag
- var state = buffer.save();
- var res = this._skipUntilEnd(
- buffer,
- 'Failed to skip indefinite length body: "' + this.tag + '"');
- if (buffer.isError(res))
- return res;
- len = buffer.offset - state.offset;
- buffer.restore(state);
- return buffer.skip(len, 'Failed to match body of: "' + tag + '"');
- };
- DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {
- while (true) {
- var tag = derDecodeTag(buffer, fail);
- if (buffer.isError(tag))
- return tag;
- var len = derDecodeLen(buffer, tag.primitive, fail);
- if (buffer.isError(len))
- return len;
- var res;
- if (tag.primitive || len !== null)
- res = buffer.skip(len)
- else
- res = this._skipUntilEnd(buffer, fail);
- // Failure
- if (buffer.isError(res))
- return res;
- if (tag.tagStr === 'end')
- break;
- }
- };
- DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,
- options) {
- var result = [];
- while (!buffer.isEmpty()) {
- var possibleEnd = this._peekTag(buffer, 'end');
- if (buffer.isError(possibleEnd))
- return possibleEnd;
- var res = decoder.decode(buffer, 'der', options);
- if (buffer.isError(res) && possibleEnd)
- break;
- result.push(res);
- }
- return result;
- };
- DERNode.prototype._decodeStr = function decodeStr(buffer, tag) {
- if (tag === 'bitstr') {
- var unused = buffer.readUInt8();
- if (buffer.isError(unused))
- return unused;
- return { unused: unused, data: buffer.raw() };
- } else if (tag === 'bmpstr') {
- var raw = buffer.raw();
- if (raw.length % 2 === 1)
- return buffer.error('Decoding of string type: bmpstr length mismatch');
- var str = '';
- for (var i = 0; i < raw.length / 2; i++) {
- str += String.fromCharCode(raw.readUInt16BE(i * 2));
- }
- return str;
- } else if (tag === 'numstr') {
- var numstr = buffer.raw().toString('ascii');
- if (!this._isNumstr(numstr)) {
- return buffer.error('Decoding of string type: ' +
- 'numstr unsupported characters');
- }
- return numstr;
- } else if (tag === 'octstr') {
- return buffer.raw();
- } else if (tag === 'objDesc') {
- return buffer.raw();
- } else if (tag === 'printstr') {
- var printstr = buffer.raw().toString('ascii');
- if (!this._isPrintstr(printstr)) {
- return buffer.error('Decoding of string type: ' +
- 'printstr unsupported characters');
- }
- return printstr;
- } else if (/str$/.test(tag)) {
- return buffer.raw().toString();
- } else {
- return buffer.error('Decoding of string type: ' + tag + ' unsupported');
- }
- };
- DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {
- var result;
- var identifiers = [];
- var ident = 0;
- while (!buffer.isEmpty()) {
- var subident = buffer.readUInt8();
- ident <<= 7;
- ident |= subident & 0x7f;
- if ((subident & 0x80) === 0) {
- identifiers.push(ident);
- ident = 0;
- }
- }
- if (subident & 0x80)
- identifiers.push(ident);
- var first = (identifiers[0] / 40) | 0;
- var second = identifiers[0] % 40;
- if (relative)
- result = identifiers;
- else
- result = [first, second].concat(identifiers.slice(1));
- if (values) {
- var tmp = values[result.join(' ')];
- if (tmp === undefined)
- tmp = values[result.join('.')];
- if (tmp !== undefined)
- result = tmp;
- }
- return result;
- };
- DERNode.prototype._decodeTime = function decodeTime(buffer, tag) {
- var str = buffer.raw().toString();
- if (tag === 'gentime') {
- var year = str.slice(0, 4) | 0;
- var mon = str.slice(4, 6) | 0;
- var day = str.slice(6, 8) | 0;
- var hour = str.slice(8, 10) | 0;
- var min = str.slice(10, 12) | 0;
- var sec = str.slice(12, 14) | 0;
- } else if (tag === 'utctime') {
- var year = str.slice(0, 2) | 0;
- var mon = str.slice(2, 4) | 0;
- var day = str.slice(4, 6) | 0;
- var hour = str.slice(6, 8) | 0;
- var min = str.slice(8, 10) | 0;
- var sec = str.slice(10, 12) | 0;
- if (year < 70)
- year = 2000 + year;
- else
- year = 1900 + year;
- } else {
- return buffer.error('Decoding ' + tag + ' time is not supported yet');
- }
- return Date.UTC(year, mon - 1, day, hour, min, sec, 0);
- };
- DERNode.prototype._decodeNull = function decodeNull(buffer) {
- return null;
- };
- DERNode.prototype._decodeBool = function decodeBool(buffer) {
- var res = buffer.readUInt8();
- if (buffer.isError(res))
- return res;
- else
- return res !== 0;
- };
- DERNode.prototype._decodeInt = function decodeInt(buffer, values) {
- // Bigint, return as it is (assume big endian)
- var raw = buffer.raw();
- var res = new bignum(raw);
- if (values)
- res = values[res.toString(10)] || res;
- return res;
- };
- DERNode.prototype._use = function use(entity, obj) {
- if (typeof entity === 'function')
- entity = entity(obj);
- return entity._getDecoder('der').tree;
- };
- // Utility methods
- function derDecodeTag(buf, fail) {
- var tag = buf.readUInt8(fail);
- if (buf.isError(tag))
- return tag;
- var cls = der.tagClass[tag >> 6];
- var primitive = (tag & 0x20) === 0;
- // Multi-octet tag - load
- if ((tag & 0x1f) === 0x1f) {
- var oct = tag;
- tag = 0;
- while ((oct & 0x80) === 0x80) {
- oct = buf.readUInt8(fail);
- if (buf.isError(oct))
- return oct;
- tag <<= 7;
- tag |= oct & 0x7f;
- }
- } else {
- tag &= 0x1f;
- }
- var tagStr = der.tag[tag];
- return {
- cls: cls,
- primitive: primitive,
- tag: tag,
- tagStr: tagStr
- };
- }
- function derDecodeLen(buf, primitive, fail) {
- var len = buf.readUInt8(fail);
- if (buf.isError(len))
- return len;
- // Indefinite form
- if (!primitive && len === 0x80)
- return null;
- // Definite form
- if ((len & 0x80) === 0) {
- // Short form
- return len;
- }
- // Long form
- var num = len & 0x7f;
- if (num > 4)
- return buf.error('length octect is too long');
- len = 0;
- for (var i = 0; i < num; i++) {
- len <<= 8;
- var j = buf.readUInt8(fail);
- if (buf.isError(j))
- return j;
- len |= j;
- }
- return len;
- }
- },{"../../asn1":10,"inherits":108}],19:[function(require,module,exports){
- var decoders = exports;
- decoders.der = require('./der');
- decoders.pem = require('./pem');
- },{"./der":18,"./pem":20}],20:[function(require,module,exports){
- var inherits = require('inherits');
- var Buffer = require('buffer').Buffer;
- var DERDecoder = require('./der');
- function PEMDecoder(entity) {
- DERDecoder.call(this, entity);
- this.enc = 'pem';
- };
- inherits(PEMDecoder, DERDecoder);
- module.exports = PEMDecoder;
- PEMDecoder.prototype.decode = function decode(data, options) {
- var lines = data.toString().split(/[\r\n]+/g);
- var label = options.label.toUpperCase();
- var re = /^-----(BEGIN|END) ([^-]+)-----$/;
- var start = -1;
- var end = -1;
- for (var i = 0; i < lines.length; i++) {
- var match = lines[i].match(re);
- if (match === null)
- continue;
- if (match[2] !== label)
- continue;
- if (start === -1) {
- if (match[1] !== 'BEGIN')
- break;
- start = i;
- } else {
- if (match[1] !== 'END')
- break;
- end = i;
- break;
- }
- }
- if (start === -1 || end === -1)
- throw new Error('PEM section not found for: ' + label);
- var base64 = lines.slice(start + 1, end).join('');
- // Remove excessive symbols
- base64.replace(/[^a-z0-9\+\/=]+/gi, '');
- var input = new Buffer(base64, 'base64');
- return DERDecoder.prototype.decode.call(this, input, options);
- };
- },{"./der":18,"buffer":54,"inherits":108}],21:[function(require,module,exports){
- var inherits = require('inherits');
- var Buffer = require('buffer').Buffer;
- var asn1 = require('../../asn1');
- var base = asn1.base;
- // Import DER constants
- var der = asn1.constants.der;
- function DEREncoder(entity) {
- this.enc = 'der';
- this.name = entity.name;
- this.entity = entity;
- // Construct base tree
- this.tree = new DERNode();
- this.tree._init(entity.body);
- };
- module.exports = DEREncoder;
- DEREncoder.prototype.encode = function encode(data, reporter) {
- return this.tree._encode(data, reporter).join();
- };
- // Tree methods
- function DERNode(parent) {
- base.Node.call(this, 'der', parent);
- }
- inherits(DERNode, base.Node);
- DERNode.prototype._encodeComposite = function encodeComposite(tag,
- primitive,
- cls,
- content) {
- var encodedTag = encodeTag(tag, primitive, cls, this.reporter);
- // Short form
- if (content.length < 0x80) {
- var header = new Buffer(2);
- header[0] = encodedTag;
- header[1] = content.length;
- return this._createEncoderBuffer([ header, content ]);
- }
- // Long form
- // Count octets required to store length
- var lenOctets = 1;
- for (var i = content.length; i >= 0x100; i >>= 8)
- lenOctets++;
- var header = new Buffer(1 + 1 + lenOctets);
- header[0] = encodedTag;
- header[1] = 0x80 | lenOctets;
- for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)
- header[i] = j & 0xff;
- return this._createEncoderBuffer([ header, content ]);
- };
- DERNode.prototype._encodeStr = function encodeStr(str, tag) {
- if (tag === 'bitstr') {
- return this._createEncoderBuffer([ str.unused | 0, str.data ]);
- } else if (tag === 'bmpstr') {
- var buf = new Buffer(str.length * 2);
- for (var i = 0; i < str.length; i++) {
- buf.writeUInt16BE(str.charCodeAt(i), i * 2);
- }
- return this._createEncoderBuffer(buf);
- } else if (tag === 'numstr') {
- if (!this._isNumstr(str)) {
- return this.reporter.error('Encoding of string type: numstr supports ' +
- 'only digits and space');
- }
- return this._createEncoderBuffer(str);
- } else if (tag === 'printstr') {
- if (!this._isPrintstr(str)) {
- return this.reporter.error('Encoding of string type: printstr supports ' +
- 'only latin upper and lower case letters, ' +
- 'digits, space, apostrophe, left and rigth ' +
- 'parenthesis, plus sign, comma, hyphen, ' +
- 'dot, slash, colon, equal sign, ' +
- 'question mark');
- }
- return this._createEncoderBuffer(str);
- } else if (/str$/.test(tag)) {
- return this._createEncoderBuffer(str);
- } else if (tag === 'objDesc') {
- return this._createEncoderBuffer(str);
- } else {
- return this.reporter.error('Encoding of string type: ' + tag +
- ' unsupported');
- }
- };
- DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {
- if (typeof id === 'string') {
- if (!values)
- return this.reporter.error('string objid given, but no values map found');
- if (!values.hasOwnProperty(id))
- return this.reporter.error('objid not found in values map');
- id = values[id].split(/[\s\.]+/g);
- for (var i = 0; i < id.length; i++)
- id[i] |= 0;
- } else if (Array.isArray(id)) {
- id = id.slice();
- for (var i = 0; i < id.length; i++)
- id[i] |= 0;
- }
- if (!Array.isArray(id)) {
- return this.reporter.error('objid() should be either array or string, ' +
- 'got: ' + JSON.stringify(id));
- }
- if (!relative) {
- if (id[1] >= 40)
- return this.reporter.error('Second objid identifier OOB');
- id.splice(0, 2, id[0] * 40 + id[1]);
- }
- // Count number of octets
- var size = 0;
- for (var i = 0; i < id.length; i++) {
- var ident = id[i];
- for (size++; ident >= 0x80; ident >>= 7)
- size++;
- }
- var objid = new Buffer(size);
- var offset = objid.length - 1;
- for (var i = id.length - 1; i >= 0; i--) {
- var ident = id[i];
- objid[offset--] = ident & 0x7f;
- while ((ident >>= 7) > 0)
- objid[offset--] = 0x80 | (ident & 0x7f);
- }
- return this._createEncoderBuffer(objid);
- };
- function two(num) {
- if (num < 10)
- return '0' + num;
- else
- return num;
- }
- DERNode.prototype._encodeTime = function encodeTime(time, tag) {
- var str;
- var date = new Date(time);
- if (tag === 'gentime') {
- str = [
- two(date.getFullYear()),
- two(date.getUTCMonth() + 1),
- two(date.getUTCDate()),
- two(date.getUTCHours()),
- two(date.getUTCMinutes()),
- two(date.getUTCSeconds()),
- 'Z'
- ].join('');
- } else if (tag === 'utctime') {
- str = [
- two(date.getFullYear() % 100),
- two(date.getUTCMonth() + 1),
- two(date.getUTCDate()),
- two(date.getUTCHours()),
- two(date.getUTCMinutes()),
- two(date.getUTCSeconds()),
- 'Z'
- ].join('');
- } else {
- this.reporter.error('Encoding ' + tag + ' time is not supported yet');
- }
- return this._encodeStr(str, 'octstr');
- };
- DERNode.prototype._encodeNull = function encodeNull() {
- return this._createEncoderBuffer('');
- };
- DERNode.prototype._encodeInt = function encodeInt(num, values) {
- if (typeof num === 'string') {
- if (!values)
- return this.reporter.error('String int or enum given, but no values map');
- if (!values.hasOwnProperty(num)) {
- return this.reporter.error('Values map doesn\'t contain: ' +
- JSON.stringify(num));
- }
- num = values[num];
- }
- // Bignum, assume big endian
- if (typeof num !== 'number' && !Buffer.isBuffer(num)) {
- var numArray = num.toArray();
- if (!num.sign && numArray[0] & 0x80) {
- numArray.unshift(0);
- }
- num = new Buffer(numArray);
- }
- if (Buffer.isBuffer(num)) {
- var size = num.length;
- if (num.length === 0)
- size++;
- var out = new Buffer(size);
- num.copy(out);
- if (num.length === 0)
- out[0] = 0
- return this._createEncoderBuffer(out);
- }
- if (num < 0x80)
- return this._createEncoderBuffer(num);
- if (num < 0x100)
- return this._createEncoderBuffer([0, num]);
- var size = 1;
- for (var i = num; i >= 0x100; i >>= 8)
- size++;
- var out = new Array(size);
- for (var i = out.length - 1; i >= 0; i--) {
- out[i] = num & 0xff;
- num >>= 8;
- }
- if(out[0] & 0x80) {
- out.unshift(0);
- }
- return this._createEncoderBuffer(new Buffer(out));
- };
- DERNode.prototype._encodeBool = function encodeBool(value) {
- return this._createEncoderBuffer(value ? 0xff : 0);
- };
- DERNode.prototype._use = function use(entity, obj) {
- if (typeof entity === 'function')
- entity = entity(obj);
- return entity._getEncoder('der').tree;
- };
- DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {
- var state = this._baseState;
- var i;
- if (state['default'] === null)
- return false;
- var data = dataBuffer.join();
- if (state.defaultBuffer === undefined)
- state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();
- if (data.length !== state.defaultBuffer.length)
- return false;
- for (i=0; i < data.length; i++)
- if (data[i] !== state.defaultBuffer[i])
- return false;
- return true;
- };
- // Utility methods
- function encodeTag(tag, primitive, cls, reporter) {
- var res;
- if (tag === 'seqof')
- tag = 'seq';
- else if (tag === 'setof')
- tag = 'set';
- if (der.tagByName.hasOwnProperty(tag))
- res = der.tagByName[tag];
- else if (typeof tag === 'number' && (tag | 0) === tag)
- res = tag;
- else
- return reporter.error('Unknown tag: ' + tag);
- if (res >= 0x1f)
- return reporter.error('Multi-octet tag encoding unsupported');
- if (!primitive)
- res |= 0x20;
- res |= (der.tagClassByName[cls || 'universal'] << 6);
- return res;
- }
- },{"../../asn1":10,"buffer":54,"inherits":108}],22:[function(require,module,exports){
- var encoders = exports;
- encoders.der = require('./der');
- encoders.pem = require('./pem');
- },{"./der":21,"./pem":23}],23:[function(require,module,exports){
- var inherits = require('inherits');
- var DEREncoder = require('./der');
- function PEMEncoder(entity) {
- DEREncoder.call(this, entity);
- this.enc = 'pem';
- };
- inherits(PEMEncoder, DEREncoder);
- module.exports = PEMEncoder;
- PEMEncoder.prototype.encode = function encode(data, options) {
- var buf = DEREncoder.prototype.encode.call(this, data);
- var p = buf.toString('base64');
- var out = [ '-----BEGIN ' + options.label + '-----' ];
- for (var i = 0; i < p.length; i += 64)
- out.push(p.slice(i, i + 64));
- out.push('-----END ' + options.label + '-----');
- return out.join('\n');
- };
- },{"./der":21,"inherits":108}],24:[function(require,module,exports){
- 'use strict'
- exports.byteLength = byteLength
- exports.toByteArray = toByteArray
- exports.fromByteArray = fromByteArray
- var lookup = []
- var revLookup = []
- var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
- var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
- for (var i = 0, len = code.length; i < len; ++i) {
- lookup[i] = code[i]
- revLookup[code.charCodeAt(i)] = i
- }
- revLookup['-'.charCodeAt(0)] = 62
- revLookup['_'.charCodeAt(0)] = 63
- function placeHoldersCount (b64) {
- var len = b64.length
- if (len % 4 > 0) {
- throw new Error('Invalid string. Length must be a multiple of 4')
- }
- // the number of equal signs (place holders)
- // if there are two placeholders, than the two characters before it
- // represent one byte
- // if there is only one, then the three characters before it represent 2 bytes
- // this is just a cheap hack to not do indexOf twice
- return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
- }
- function byteLength (b64) {
- // base64 is 4/3 + up to two characters of the original data
- return (b64.length * 3 / 4) - placeHoldersCount(b64)
- }
- function toByteArray (b64) {
- var i, l, tmp, placeHolders, arr
- var len = b64.length
- placeHolders = placeHoldersCount(b64)
- arr = new Arr((len * 3 / 4) - placeHolders)
- // if there are placeholders, only get up to the last complete 4 chars
- l = placeHolders > 0 ? len - 4 : len
- var L = 0
- for (i = 0; i < l; i += 4) {
- tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
- arr[L++] = (tmp >> 16) & 0xFF
- arr[L++] = (tmp >> 8) & 0xFF
- arr[L++] = tmp & 0xFF
- }
- if (placeHolders === 2) {
- tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
- arr[L++] = tmp & 0xFF
- } else if (placeHolders === 1) {
- tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
- arr[L++] = (tmp >> 8) & 0xFF
- arr[L++] = tmp & 0xFF
- }
- return arr
- }
- function tripletToBase64 (num) {
- return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
- }
- function encodeChunk (uint8, start, end) {
- var tmp
- var output = []
- for (var i = start; i < end; i += 3) {
- tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
- output.push(tripletToBase64(tmp))
- }
- return output.join('')
- }
- function fromByteArray (uint8) {
- var tmp
- var len = uint8.length
- var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
- var output = ''
- var parts = []
- var maxChunkLength = 16383 // must be multiple of 3
- // go through the array every three bytes, we'll deal with trailing stuff later
- for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
- parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
- }
- // pad the end with zeros, but make sure to not forget the extra bytes
- if (extraBytes === 1) {
- tmp = uint8[len - 1]
- output += lookup[tmp >> 2]
- output += lookup[(tmp << 4) & 0x3F]
- output += '=='
- } else if (extraBytes === 2) {
- tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
- output += lookup[tmp >> 10]
- output += lookup[(tmp >> 4) & 0x3F]
- output += lookup[(tmp << 2) & 0x3F]
- output += '='
- }
- parts.push(output)
- return parts.join('')
- }
- },{}],25:[function(require,module,exports){
- (function (module, exports) {
- 'use strict';
- // Utils
- function assert (val, msg) {
- if (!val) throw new Error(msg || 'Assertion failed');
- }
- // Could use `inherits` module, but don't want to move from single file
- // architecture yet.
- function inherits (ctor, superCtor) {
- ctor.super_ = superCtor;
- var TempCtor = function () {};
- TempCtor.prototype = superCtor.prototype;
- ctor.prototype = new TempCtor();
- ctor.prototype.constructor = ctor;
- }
- // BN
- function BN (number, base, endian) {
- if (BN.isBN(number)) {
- return number;
- }
- this.negative = 0;
- this.words = null;
- this.length = 0;
- // Reduction context
- this.red = null;
- if (number !== null) {
- if (base === 'le' || base === 'be') {
- endian = base;
- base = 10;
- }
- this._init(number || 0, base || 10, endian || 'be');
- }
- }
- if (typeof module === 'object') {
- module.exports = BN;
- } else {
- exports.BN = BN;
- }
- BN.BN = BN;
- BN.wordSize = 26;
- var Buffer;
- try {
- Buffer = require('buffer').Buffer;
- } catch (e) {
- }
- BN.isBN = function isBN (num) {
- if (num instanceof BN) {
- return true;
- }
- return num !== null && typeof num === 'object' &&
- num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
- };
- BN.max = function max (left, right) {
- if (left.cmp(right) > 0) return left;
- return right;
- };
- BN.min = function min (left, right) {
- if (left.cmp(right) < 0) return left;
- return right;
- };
- BN.prototype._init = function init (number, base, endian) {
- if (typeof number === 'number') {
- return this._initNumber(number, base, endian);
- }
- if (typeof number === 'object') {
- return this._initArray(number, base, endian);
- }
- if (base === 'hex') {
- base = 16;
- }
- assert(base === (base | 0) && base >= 2 && base <= 36);
- number = number.toString().replace(/\s+/g, '');
- var start = 0;
- if (number[0] === '-') {
- start++;
- }
- if (base === 16) {
- this._parseHex(number, start);
- } else {
- this._parseBase(number, base, start);
- }
- if (number[0] === '-') {
- this.negative = 1;
- }
- this.strip();
- if (endian !== 'le') return;
- this._initArray(this.toArray(), base, endian);
- };
- BN.prototype._initNumber = function _initNumber (number, base, endian) {
- if (number < 0) {
- this.negative = 1;
- number = -number;
- }
- if (number < 0x4000000) {
- this.words = [ number & 0x3ffffff ];
- this.length = 1;
- } else if (number < 0x10000000000000) {
- this.words = [
- number & 0x3ffffff,
- (number / 0x4000000) & 0x3ffffff
- ];
- this.length = 2;
- } else {
- assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
- this.words = [
- number & 0x3ffffff,
- (number / 0x4000000) & 0x3ffffff,
- 1
- ];
- this.length = 3;
- }
- if (endian !== 'le') return;
- // Reverse the bytes
- this._initArray(this.toArray(), base, endian);
- };
- BN.prototype._initArray = function _initArray (number, base, endian) {
- // Perhaps a Uint8Array
- assert(typeof number.length === 'number');
- if (number.length <= 0) {
- this.words = [ 0 ];
- this.length = 1;
- return this;
- }
- this.length = Math.ceil(number.length / 3);
- this.words = new Array(this.length);
- for (var i = 0; i < this.length; i++) {
- this.words[i] = 0;
- }
- var j, w;
- var off = 0;
- if (endian === 'be') {
- for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
- w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
- this.words[j] |= (w << off) & 0x3ffffff;
- this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
- off += 24;
- if (off >= 26) {
- off -= 26;
- j++;
- }
- }
- } else if (endian === 'le') {
- for (i = 0, j = 0; i < number.length; i += 3) {
- w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
- this.words[j] |= (w << off) & 0x3ffffff;
- this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
- off += 24;
- if (off >= 26) {
- off -= 26;
- j++;
- }
- }
- }
- return this.strip();
- };
- function parseHex (str, start, end) {
- var r = 0;
- var len = Math.min(str.length, end);
- for (var i = start; i < len; i++) {
- var c = str.charCodeAt(i) - 48;
- r <<= 4;
- // 'a' - 'f'
- if (c >= 49 && c <= 54) {
- r |= c - 49 + 0xa;
- // 'A' - 'F'
- } else if (c >= 17 && c <= 22) {
- r |= c - 17 + 0xa;
- // '0' - '9'
- } else {
- r |= c & 0xf;
- }
- }
- return r;
- }
- BN.prototype._parseHex = function _parseHex (number, start) {
- // Create possibly bigger array to ensure that it fits the number
- this.length = Math.ceil((number.length - start) / 6);
- this.words = new Array(this.length);
- for (var i = 0; i < this.length; i++) {
- this.words[i] = 0;
- }
- var j, w;
- // Scan 24-bit chunks and add them to the number
- var off = 0;
- for (i = number.length - 6, j = 0; i >= start; i -= 6) {
- w = parseHex(number, i, i + 6);
- this.words[j] |= (w << off) & 0x3ffffff;
- // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
- this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
- off += 24;
- if (off >= 26) {
- off -= 26;
- j++;
- }
- }
- if (i + 6 !== start) {
- w = parseHex(number, start, i + 6);
- this.words[j] |= (w << off) & 0x3ffffff;
- this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
- }
- this.strip();
- };
- function parseBase (str, start, end, mul) {
- var r = 0;
- var len = Math.min(str.length, end);
- for (var i = start; i < len; i++) {
- var c = str.charCodeAt(i) - 48;
- r *= mul;
- // 'a'
- if (c >= 49) {
- r += c - 49 + 0xa;
- // 'A'
- } else if (c >= 17) {
- r += c - 17 + 0xa;
- // '0' - '9'
- } else {
- r += c;
- }
- }
- return r;
- }
- BN.prototype._parseBase = function _parseBase (number, base, start) {
- // Initialize as zero
- this.words = [ 0 ];
- this.length = 1;
- // Find length of limb in base
- for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
- limbLen++;
- }
- limbLen--;
- limbPow = (limbPow / base) | 0;
- var total = number.length - start;
- var mod = total % limbLen;
- var end = Math.min(total, total - mod) + start;
- var word = 0;
- for (var i = start; i < end; i += limbLen) {
- word = parseBase(number, i, i + limbLen, base);
- this.imuln(limbPow);
- if (this.words[0] + word < 0x4000000) {
- this.words[0] += word;
- } else {
- this._iaddn(word);
- }
- }
- if (mod !== 0) {
- var pow = 1;
- word = parseBase(number, i, number.length, base);
- for (i = 0; i < mod; i++) {
- pow *= base;
- }
- this.imuln(pow);
- if (this.words[0] + word < 0x4000000) {
- this.words[0] += word;
- } else {
- this._iaddn(word);
- }
- }
- };
- BN.prototype.copy = function copy (dest) {
- dest.words = new Array(this.length);
- for (var i = 0; i < this.length; i++) {
- dest.words[i] = this.words[i];
- }
- dest.length = this.length;
- dest.negative = this.negative;
- dest.red = this.red;
- };
- BN.prototype.clone = function clone () {
- var r = new BN(null);
- this.copy(r);
- return r;
- };
- BN.prototype._expand = function _expand (size) {
- while (this.length < size) {
- this.words[this.length++] = 0;
- }
- return this;
- };
- // Remove leading `0` from `this`
- BN.prototype.strip = function strip () {
- while (this.length > 1 && this.words[this.length - 1] === 0) {
- this.length--;
- }
- return this._normSign();
- };
- BN.prototype._normSign = function _normSign () {
- // -0 = 0
- if (this.length === 1 && this.words[0] === 0) {
- this.negative = 0;
- }
- return this;
- };
- BN.prototype.inspect = function inspect () {
- return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
- };
- /*
- var zeros = [];
- var groupSizes = [];
- var groupBases = [];
- var s = '';
- var i = -1;
- while (++i < BN.wordSize) {
- zeros[i] = s;
- s += '0';
- }
- groupSizes[0] = 0;
- groupSizes[1] = 0;
- groupBases[0] = 0;
- groupBases[1] = 0;
- var base = 2 - 1;
- while (++base < 36 + 1) {
- var groupSize = 0;
- var groupBase = 1;
- while (groupBase < (1 << BN.wordSize) / base) {
- groupBase *= base;
- groupSize += 1;
- }
- groupSizes[base] = groupSize;
- groupBases[base] = groupBase;
- }
- */
- var zeros = [
- '',
- '0',
- '00',
- '000',
- '0000',
- '00000',
- '000000',
- '0000000',
- '00000000',
- '000000000',
- '0000000000',
- '00000000000',
- '000000000000',
- '0000000000000',
- '00000000000000',
- '000000000000000',
- '0000000000000000',
- '00000000000000000',
- '000000000000000000',
- '0000000000000000000',
- '00000000000000000000',
- '000000000000000000000',
- '0000000000000000000000',
- '00000000000000000000000',
- '000000000000000000000000',
- '0000000000000000000000000'
- ];
- var groupSizes = [
- 0, 0,
- 25, 16, 12, 11, 10, 9, 8,
- 8, 7, 7, 7, 7, 6, 6,
- 6, 6, 6, 6, 6, 5, 5,
- 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5
- ];
- var groupBases = [
- 0, 0,
- 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
- 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
- 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
- 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
- 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
- ];
- BN.prototype.toString = function toString (base, padding) {
- base = base || 10;
- padding = padding | 0 || 1;
- var out;
- if (base === 16 || base === 'hex') {
- out = '';
- var off = 0;
- var carry = 0;
- for (var i = 0; i < this.length; i++) {
- var w = this.words[i];
- var word = (((w << off) | carry) & 0xffffff).toString(16);
- carry = (w >>> (24 - off)) & 0xffffff;
- if (carry !== 0 || i !== this.length - 1) {
- out = zeros[6 - word.length] + word + out;
- } else {
- out = word + out;
- }
- off += 2;
- if (off >= 26) {
- off -= 26;
- i--;
- }
- }
- if (carry !== 0) {
- out = carry.toString(16) + out;
- }
- while (out.length % padding !== 0) {
- out = '0' + out;
- }
- if (this.negative !== 0) {
- out = '-' + out;
- }
- return out;
- }
- if (base === (base | 0) && base >= 2 && base <= 36) {
- // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
- var groupSize = groupSizes[base];
- // var groupBase = Math.pow(base, groupSize);
- var groupBase = groupBases[base];
- out = '';
- var c = this.clone();
- c.negative = 0;
- while (!c.isZero()) {
- var r = c.modn(groupBase).toString(base);
- c = c.idivn(groupBase);
- if (!c.isZero()) {
- out = zeros[groupSize - r.length] + r + out;
- } else {
- out = r + out;
- }
- }
- if (this.isZero()) {
- out = '0' + out;
- }
- while (out.length % padding !== 0) {
- out = '0' + out;
- }
- if (this.negative !== 0) {
- out = '-' + out;
- }
- return out;
- }
- assert(false, 'Base should be between 2 and 36');
- };
- BN.prototype.toNumber = function toNumber () {
- var ret = this.words[0];
- if (this.length === 2) {
- ret += this.words[1] * 0x4000000;
- } else if (this.length === 3 && this.words[2] === 0x01) {
- // NOTE: at this stage it is known that the top bit is set
- ret += 0x10000000000000 + (this.words[1] * 0x4000000);
- } else if (this.length > 2) {
- assert(false, 'Number can only safely store up to 53 bits');
- }
- return (this.negative !== 0) ? -ret : ret;
- };
- BN.prototype.toJSON = function toJSON () {
- return this.toString(16);
- };
- BN.prototype.toBuffer = function toBuffer (endian, length) {
- assert(typeof Buffer !== 'undefined');
- return this.toArrayLike(Buffer, endian, length);
- };
- BN.prototype.toArray = function toArray (endian, length) {
- return this.toArrayLike(Array, endian, length);
- };
- BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
- var byteLength = this.byteLength();
- var reqLength = length || Math.max(1, byteLength);
- assert(byteLength <= reqLength, 'byte array longer than desired length');
- assert(reqLength > 0, 'Requested array length <= 0');
- this.strip();
- var littleEndian = endian === 'le';
- var res = new ArrayType(reqLength);
- var b, i;
- var q = this.clone();
- if (!littleEndian) {
- // Assume big-endian
- for (i = 0; i < reqLength - byteLength; i++) {
- res[i] = 0;
- }
- for (i = 0; !q.isZero(); i++) {
- b = q.andln(0xff);
- q.iushrn(8);
- res[reqLength - i - 1] = b;
- }
- } else {
- for (i = 0; !q.isZero(); i++) {
- b = q.andln(0xff);
- q.iushrn(8);
- res[i] = b;
- }
- for (; i < reqLength; i++) {
- res[i] = 0;
- }
- }
- return res;
- };
- if (Math.clz32) {
- BN.prototype._countBits = function _countBits (w) {
- return 32 - Math.clz32(w);
- };
- } else {
- BN.prototype._countBits = function _countBits (w) {
- var t = w;
- var r = 0;
- if (t >= 0x1000) {
- r += 13;
- t >>>= 13;
- }
- if (t >= 0x40) {
- r += 7;
- t >>>= 7;
- }
- if (t >= 0x8) {
- r += 4;
- t >>>= 4;
- }
- if (t >= 0x02) {
- r += 2;
- t >>>= 2;
- }
- return r + t;
- };
- }
- BN.prototype._zeroBits = function _zeroBits (w) {
- // Short-cut
- if (w === 0) return 26;
- var t = w;
- var r = 0;
- if ((t & 0x1fff) === 0) {
- r += 13;
- t >>>= 13;
- }
- if ((t & 0x7f) === 0) {
- r += 7;
- t >>>= 7;
- }
- if ((t & 0xf) === 0) {
- r += 4;
- t >>>= 4;
- }
- if ((t & 0x3) === 0) {
- r += 2;
- t >>>= 2;
- }
- if ((t & 0x1) === 0) {
- r++;
- }
- return r;
- };
- // Return number of used bits in a BN
- BN.prototype.bitLength = function bitLength () {
- var w = this.words[this.length - 1];
- var hi = this._countBits(w);
- return (this.length - 1) * 26 + hi;
- };
- function toBitArray (num) {
- var w = new Array(num.bitLength());
- for (var bit = 0; bit < w.length; bit++) {
- var off = (bit / 26) | 0;
- var wbit = bit % 26;
- w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
- }
- return w;
- }
- // Number of trailing zero bits
- BN.prototype.zeroBits = function zeroBits () {
- if (this.isZero()) return 0;
- var r = 0;
- for (var i = 0; i < this.length; i++) {
- var b = this._zeroBits(this.words[i]);
- r += b;
- if (b !== 26) break;
- }
- return r;
- };
- BN.prototype.byteLength = function byteLength () {
- return Math.ceil(this.bitLength() / 8);
- };
- BN.prototype.toTwos = function toTwos (width) {
- if (this.negative !== 0) {
- return this.abs().inotn(width).iaddn(1);
- }
- return this.clone();
- };
- BN.prototype.fromTwos = function fromTwos (width) {
- if (this.testn(width - 1)) {
- return this.notn(width).iaddn(1).ineg();
- }
- return this.clone();
- };
- BN.prototype.isNeg = function isNeg () {
- return this.negative !== 0;
- };
- // Return negative clone of `this`
- BN.prototype.neg = function neg () {
- return this.clone().ineg();
- };
- BN.prototype.ineg = function ineg () {
- if (!this.isZero()) {
- this.negative ^= 1;
- }
- return this;
- };
- // Or `num` with `this` in-place
- BN.prototype.iuor = function iuor (num) {
- while (this.length < num.length) {
- this.words[this.length++] = 0;
- }
- for (var i = 0; i < num.length; i++) {
- this.words[i] = this.words[i] | num.words[i];
- }
- return this.strip();
- };
- BN.prototype.ior = function ior (num) {
- assert((this.negative | num.negative) === 0);
- return this.iuor(num);
- };
- // Or `num` with `this`
- BN.prototype.or = function or (num) {
- if (this.length > num.length) return this.clone().ior(num);
- return num.clone().ior(this);
- };
- BN.prototype.uor = function uor (num) {
- if (this.length > num.length) return this.clone().iuor(num);
- return num.clone().iuor(this);
- };
- // And `num` with `this` in-place
- BN.prototype.iuand = function iuand (num) {
- // b = min-length(num, this)
- var b;
- if (this.length > num.length) {
- b = num;
- } else {
- b = this;
- }
- for (var i = 0; i < b.length; i++) {
- this.words[i] = this.words[i] & num.words[i];
- }
- this.length = b.length;
- return this.strip();
- };
- BN.prototype.iand = function iand (num) {
- assert((this.negative | num.negative) === 0);
- return this.iuand(num);
- };
- // And `num` with `this`
- BN.prototype.and = function and (num) {
- if (this.length > num.length) return this.clone().iand(num);
- return num.clone().iand(this);
- };
- BN.prototype.uand = function uand (num) {
- if (this.length > num.length) return this.clone().iuand(num);
- return num.clone().iuand(this);
- };
- // Xor `num` with `this` in-place
- BN.prototype.iuxor = function iuxor (num) {
- // a.length > b.length
- var a;
- var b;
- if (this.length > num.length) {
- a = this;
- b = num;
- } else {
- a = num;
- b = this;
- }
- for (var i = 0; i < b.length; i++) {
- this.words[i] = a.words[i] ^ b.words[i];
- }
- if (this !== a) {
- for (; i < a.length; i++) {
- this.words[i] = a.words[i];
- }
- }
- this.length = a.length;
- return this.strip();
- };
- BN.prototype.ixor = function ixor (num) {
- assert((this.negative | num.negative) === 0);
- return this.iuxor(num);
- };
- // Xor `num` with `this`
- BN.prototype.xor = function xor (num) {
- if (this.length > num.length) return this.clone().ixor(num);
- return num.clone().ixor(this);
- };
- BN.prototype.uxor = function uxor (num) {
- if (this.length > num.length) return this.clone().iuxor(num);
- return num.clone().iuxor(this);
- };
- // Not ``this`` with ``width`` bitwidth
- BN.prototype.inotn = function inotn (width) {
- assert(typeof width === 'number' && width >= 0);
- var bytesNeeded = Math.ceil(width / 26) | 0;
- var bitsLeft = width % 26;
- // Extend the buffer with leading zeroes
- this._expand(bytesNeeded);
- if (bitsLeft > 0) {
- bytesNeeded--;
- }
- // Handle complete words
- for (var i = 0; i < bytesNeeded; i++) {
- this.words[i] = ~this.words[i] & 0x3ffffff;
- }
- // Handle the residue
- if (bitsLeft > 0) {
- this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
- }
- // And remove leading zeroes
- return this.strip();
- };
- BN.prototype.notn = function notn (width) {
- return this.clone().inotn(width);
- };
- // Set `bit` of `this`
- BN.prototype.setn = function setn (bit, val) {
- assert(typeof bit === 'number' && bit >= 0);
- var off = (bit / 26) | 0;
- var wbit = bit % 26;
- this._expand(off + 1);
- if (val) {
- this.words[off] = this.words[off] | (1 << wbit);
- } else {
- this.words[off] = this.words[off] & ~(1 << wbit);
- }
- return this.strip();
- };
- // Add `num` to `this` in-place
- BN.prototype.iadd = function iadd (num) {
- var r;
- // negative + positive
- if (this.negative !== 0 && num.negative === 0) {
- this.negative = 0;
- r = this.isub(num);
- this.negative ^= 1;
- return this._normSign();
- // positive + negative
- } else if (this.negative === 0 && num.negative !== 0) {
- num.negative = 0;
- r = this.isub(num);
- num.negative = 1;
- return r._normSign();
- }
- // a.length > b.length
- var a, b;
- if (this.length > num.length) {
- a = this;
- b = num;
- } else {
- a = num;
- b = this;
- }
- var carry = 0;
- for (var i = 0; i < b.length; i++) {
- r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
- this.words[i] = r & 0x3ffffff;
- carry = r >>> 26;
- }
- for (; carry !== 0 && i < a.length; i++) {
- r = (a.words[i] | 0) + carry;
- this.words[i] = r & 0x3ffffff;
- carry = r >>> 26;
- }
- this.length = a.length;
- if (carry !== 0) {
- this.words[this.length] = carry;
- this.length++;
- // Copy the rest of the words
- } else if (a !== this) {
- for (; i < a.length; i++) {
- this.words[i] = a.words[i];
- }
- }
- return this;
- };
- // Add `num` to `this`
- BN.prototype.add = function add (num) {
- var res;
- if (num.negative !== 0 && this.negative === 0) {
- num.negative = 0;
- res = this.sub(num);
- num.negative ^= 1;
- return res;
- } else if (num.negative === 0 && this.negative !== 0) {
- this.negative = 0;
- res = num.sub(this);
- this.negative = 1;
- return res;
- }
- if (this.length > num.length) return this.clone().iadd(num);
- return num.clone().iadd(this);
- };
- // Subtract `num` from `this` in-place
- BN.prototype.isub = function isub (num) {
- // this - (-num) = this + num
- if (num.negative !== 0) {
- num.negative = 0;
- var r = this.iadd(num);
- num.negative = 1;
- return r._normSign();
- // -this - num = -(this + num)
- } else if (this.negative !== 0) {
- this.negative = 0;
- this.iadd(num);
- this.negative = 1;
- return this._normSign();
- }
- // At this point both numbers are positive
- var cmp = this.cmp(num);
- // Optimization - zeroify
- if (cmp === 0) {
- this.negative = 0;
- this.length = 1;
- this.words[0] = 0;
- return this;
- }
- // a > b
- var a, b;
- if (cmp > 0) {
- a = this;
- b = num;
- } else {
- a = num;
- b = this;
- }
- var carry = 0;
- for (var i = 0; i < b.length; i++) {
- r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
- carry = r >> 26;
- this.words[i] = r & 0x3ffffff;
- }
- for (; carry !== 0 && i < a.length; i++) {
- r = (a.words[i] | 0) + carry;
- carry = r >> 26;
- this.words[i] = r & 0x3ffffff;
- }
- // Copy rest of the words
- if (carry === 0 && i < a.length && a !== this) {
- for (; i < a.length; i++) {
- this.words[i] = a.words[i];
- }
- }
- this.length = Math.max(this.length, i);
- if (a !== this) {
- this.negative = 1;
- }
- return this.strip();
- };
- // Subtract `num` from `this`
- BN.prototype.sub = function sub (num) {
- return this.clone().isub(num);
- };
- function smallMulTo (self, num, out) {
- out.negative = num.negative ^ self.negative;
- var len = (self.length + num.length) | 0;
- out.length = len;
- len = (len - 1) | 0;
- // Peel one iteration (compiler can't do it, because of code complexity)
- var a = self.words[0] | 0;
- var b = num.words[0] | 0;
- var r = a * b;
- var lo = r & 0x3ffffff;
- var carry = (r / 0x4000000) | 0;
- out.words[0] = lo;
- for (var k = 1; k < len; k++) {
- // Sum all words with the same `i + j = k` and accumulate `ncarry`,
- // note that ncarry could be >= 0x3ffffff
- var ncarry = carry >>> 26;
- var rword = carry & 0x3ffffff;
- var maxJ = Math.min(k, num.length - 1);
- for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
- var i = (k - j) | 0;
- a = self.words[i] | 0;
- b = num.words[j] | 0;
- r = a * b + rword;
- ncarry += (r / 0x4000000) | 0;
- rword = r & 0x3ffffff;
- }
- out.words[k] = rword | 0;
- carry = ncarry | 0;
- }
- if (carry !== 0) {
- out.words[k] = carry | 0;
- } else {
- out.length--;
- }
- return out.strip();
- }
- // TODO(indutny): it may be reasonable to omit it for users who don't need
- // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
- // multiplication (like elliptic secp256k1).
- var comb10MulTo = function comb10MulTo (self, num, out) {
- var a = self.words;
- var b = num.words;
- var o = out.words;
- var c = 0;
- var lo;
- var mid;
- var hi;
- var a0 = a[0] | 0;
- var al0 = a0 & 0x1fff;
- var ah0 = a0 >>> 13;
- var a1 = a[1] | 0;
- var al1 = a1 & 0x1fff;
- var ah1 = a1 >>> 13;
- var a2 = a[2] | 0;
- var al2 = a2 & 0x1fff;
- var ah2 = a2 >>> 13;
- var a3 = a[3] | 0;
- var al3 = a3 & 0x1fff;
- var ah3 = a3 >>> 13;
- var a4 = a[4] | 0;
- var al4 = a4 & 0x1fff;
- var ah4 = a4 >>> 13;
- var a5 = a[5] | 0;
- var al5 = a5 & 0x1fff;
- var ah5 = a5 >>> 13;
- var a6 = a[6] | 0;
- var al6 = a6 & 0x1fff;
- var ah6 = a6 >>> 13;
- var a7 = a[7] | 0;
- var al7 = a7 & 0x1fff;
- var ah7 = a7 >>> 13;
- var a8 = a[8] | 0;
- var al8 = a8 & 0x1fff;
- var ah8 = a8 >>> 13;
- var a9 = a[9] | 0;
- var al9 = a9 & 0x1fff;
- var ah9 = a9 >>> 13;
- var b0 = b[0] | 0;
- var bl0 = b0 & 0x1fff;
- var bh0 = b0 >>> 13;
- var b1 = b[1] | 0;
- var bl1 = b1 & 0x1fff;
- var bh1 = b1 >>> 13;
- var b2 = b[2] | 0;
- var bl2 = b2 & 0x1fff;
- var bh2 = b2 >>> 13;
- var b3 = b[3] | 0;
- var bl3 = b3 & 0x1fff;
- var bh3 = b3 >>> 13;
- var b4 = b[4] | 0;
- var bl4 = b4 & 0x1fff;
- var bh4 = b4 >>> 13;
- var b5 = b[5] | 0;
- var bl5 = b5 & 0x1fff;
- var bh5 = b5 >>> 13;
- var b6 = b[6] | 0;
- var bl6 = b6 & 0x1fff;
- var bh6 = b6 >>> 13;
- var b7 = b[7] | 0;
- var bl7 = b7 & 0x1fff;
- var bh7 = b7 >>> 13;
- var b8 = b[8] | 0;
- var bl8 = b8 & 0x1fff;
- var bh8 = b8 >>> 13;
- var b9 = b[9] | 0;
- var bl9 = b9 & 0x1fff;
- var bh9 = b9 >>> 13;
- out.negative = self.negative ^ num.negative;
- out.length = 19;
- /* k = 0 */
- lo = Math.imul(al0, bl0);
- mid = Math.imul(al0, bh0);
- mid = (mid + Math.imul(ah0, bl0)) | 0;
- hi = Math.imul(ah0, bh0);
- var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
- w0 &= 0x3ffffff;
- /* k = 1 */
- lo = Math.imul(al1, bl0);
- mid = Math.imul(al1, bh0);
- mid = (mid + Math.imul(ah1, bl0)) | 0;
- hi = Math.imul(ah1, bh0);
- lo = (lo + Math.imul(al0, bl1)) | 0;
- mid = (mid + Math.imul(al0, bh1)) | 0;
- mid = (mid + Math.imul(ah0, bl1)) | 0;
- hi = (hi + Math.imul(ah0, bh1)) | 0;
- var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
- w1 &= 0x3ffffff;
- /* k = 2 */
- lo = Math.imul(al2, bl0);
- mid = Math.imul(al2, bh0);
- mid = (mid + Math.imul(ah2, bl0)) | 0;
- hi = Math.imul(ah2, bh0);
- lo = (lo + Math.imul(al1, bl1)) | 0;
- mid = (mid + Math.imul(al1, bh1)) | 0;
- mid = (mid + Math.imul(ah1, bl1)) | 0;
- hi = (hi + Math.imul(ah1, bh1)) | 0;
- lo = (lo + Math.imul(al0, bl2)) | 0;
- mid = (mid + Math.imul(al0, bh2)) | 0;
- mid = (mid + Math.imul(ah0, bl2)) | 0;
- hi = (hi + Math.imul(ah0, bh2)) | 0;
- var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
- w2 &= 0x3ffffff;
- /* k = 3 */
- lo = Math.imul(al3, bl0);
- mid = Math.imul(al3, bh0);
- mid = (mid + Math.imul(ah3, bl0)) | 0;
- hi = Math.imul(ah3, bh0);
- lo = (lo + Math.imul(al2, bl1)) | 0;
- mid = (mid + Math.imul(al2, bh1)) | 0;
- mid = (mid + Math.imul(ah2, bl1)) | 0;
- hi = (hi + Math.imul(ah2, bh1)) | 0;
- lo = (lo + Math.imul(al1, bl2)) | 0;
- mid = (mid + Math.imul(al1, bh2)) | 0;
- mid = (mid + Math.imul(ah1, bl2)) | 0;
- hi = (hi + Math.imul(ah1, bh2)) | 0;
- lo = (lo + Math.imul(al0, bl3)) | 0;
- mid = (mid + Math.imul(al0, bh3)) | 0;
- mid = (mid + Math.imul(ah0, bl3)) | 0;
- hi = (hi + Math.imul(ah0, bh3)) | 0;
- var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
- w3 &= 0x3ffffff;
- /* k = 4 */
- lo = Math.imul(al4, bl0);
- mid = Math.imul(al4, bh0);
- mid = (mid + Math.imul(ah4, bl0)) | 0;
- hi = Math.imul(ah4, bh0);
- lo = (lo + Math.imul(al3, bl1)) | 0;
- mid = (mid + Math.imul(al3, bh1)) | 0;
- mid = (mid + Math.imul(ah3, bl1)) | 0;
- hi = (hi + Math.imul(ah3, bh1)) | 0;
- lo = (lo + Math.imul(al2, bl2)) | 0;
- mid = (mid + Math.imul(al2, bh2)) | 0;
- mid = (mid + Math.imul(ah2, bl2)) | 0;
- hi = (hi + Math.imul(ah2, bh2)) | 0;
- lo = (lo + Math.imul(al1, bl3)) | 0;
- mid = (mid + Math.imul(al1, bh3)) | 0;
- mid = (mid + Math.imul(ah1, bl3)) | 0;
- hi = (hi + Math.imul(ah1, bh3)) | 0;
- lo = (lo + Math.imul(al0, bl4)) | 0;
- mid = (mid + Math.imul(al0, bh4)) | 0;
- mid = (mid + Math.imul(ah0, bl4)) | 0;
- hi = (hi + Math.imul(ah0, bh4)) | 0;
- var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
- w4 &= 0x3ffffff;
- /* k = 5 */
- lo = Math.imul(al5, bl0);
- mid = Math.imul(al5, bh0);
- mid = (mid + Math.imul(ah5, bl0)) | 0;
- hi = Math.imul(ah5, bh0);
- lo = (lo + Math.imul(al4, bl1)) | 0;
- mid = (mid + Math.imul(al4, bh1)) | 0;
- mid = (mid + Math.imul(ah4, bl1)) | 0;
- hi = (hi + Math.imul(ah4, bh1)) | 0;
- lo = (lo + Math.imul(al3, bl2)) | 0;
- mid = (mid + Math.imul(al3, bh2)) | 0;
- mid = (mid + Math.imul(ah3, bl2)) | 0;
- hi = (hi + Math.imul(ah3, bh2)) | 0;
- lo = (lo + Math.imul(al2, bl3)) | 0;
- mid = (mid + Math.imul(al2, bh3)) | 0;
- mid = (mid + Math.imul(ah2, bl3)) | 0;
- hi = (hi + Math.imul(ah2, bh3)) | 0;
- lo = (lo + Math.imul(al1, bl4)) | 0;
- mid = (mid + Math.imul(al1, bh4)) | 0;
- mid = (mid + Math.imul(ah1, bl4)) | 0;
- hi = (hi + Math.imul(ah1, bh4)) | 0;
- lo = (lo + Math.imul(al0, bl5)) | 0;
- mid = (mid + Math.imul(al0, bh5)) | 0;
- mid = (mid + Math.imul(ah0, bl5)) | 0;
- hi = (hi + Math.imul(ah0, bh5)) | 0;
- var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
- w5 &= 0x3ffffff;
- /* k = 6 */
- lo = Math.imul(al6, bl0);
- mid = Math.imul(al6, bh0);
- mid = (mid + Math.imul(ah6, bl0)) | 0;
- hi = Math.imul(ah6, bh0);
- lo = (lo + Math.imul(al5, bl1)) | 0;
- mid = (mid + Math.imul(al5, bh1)) | 0;
- mid = (mid + Math.imul(ah5, bl1)) | 0;
- hi = (hi + Math.imul(ah5, bh1)) | 0;
- lo = (lo + Math.imul(al4, bl2)) | 0;
- mid = (mid + Math.imul(al4, bh2)) | 0;
- mid = (mid + Math.imul(ah4, bl2)) | 0;
- hi = (hi + Math.imul(ah4, bh2)) | 0;
- lo = (lo + Math.imul(al3, bl3)) | 0;
- mid = (mid + Math.imul(al3, bh3)) | 0;
- mid = (mid + Math.imul(ah3, bl3)) | 0;
- hi = (hi + Math.imul(ah3, bh3)) | 0;
- lo = (lo + Math.imul(al2, bl4)) | 0;
- mid = (mid + Math.imul(al2, bh4)) | 0;
- mid = (mid + Math.imul(ah2, bl4)) | 0;
- hi = (hi + Math.imul(ah2, bh4)) | 0;
- lo = (lo + Math.imul(al1, bl5)) | 0;
- mid = (mid + Math.imul(al1, bh5)) | 0;
- mid = (mid + Math.imul(ah1, bl5)) | 0;
- hi = (hi + Math.imul(ah1, bh5)) | 0;
- lo = (lo + Math.imul(al0, bl6)) | 0;
- mid = (mid + Math.imul(al0, bh6)) | 0;
- mid = (mid + Math.imul(ah0, bl6)) | 0;
- hi = (hi + Math.imul(ah0, bh6)) | 0;
- var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
- w6 &= 0x3ffffff;
- /* k = 7 */
- lo = Math.imul(al7, bl0);
- mid = Math.imul(al7, bh0);
- mid = (mid + Math.imul(ah7, bl0)) | 0;
- hi = Math.imul(ah7, bh0);
- lo = (lo + Math.imul(al6, bl1)) | 0;
- mid = (mid + Math.imul(al6, bh1)) | 0;
- mid = (mid + Math.imul(ah6, bl1)) | 0;
- hi = (hi + Math.imul(ah6, bh1)) | 0;
- lo = (lo + Math.imul(al5, bl2)) | 0;
- mid = (mid + Math.imul(al5, bh2)) | 0;
- mid = (mid + Math.imul(ah5, bl2)) | 0;
- hi = (hi + Math.imul(ah5, bh2)) | 0;
- lo = (lo + Math.imul(al4, bl3)) | 0;
- mid = (mid + Math.imul(al4, bh3)) | 0;
- mid = (mid + Math.imul(ah4, bl3)) | 0;
- hi = (hi + Math.imul(ah4, bh3)) | 0;
- lo = (lo + Math.imul(al3, bl4)) | 0;
- mid = (mid + Math.imul(al3, bh4)) | 0;
- mid = (mid + Math.imul(ah3, bl4)) | 0;
- hi = (hi + Math.imul(ah3, bh4)) | 0;
- lo = (lo + Math.imul(al2, bl5)) | 0;
- mid = (mid + Math.imul(al2, bh5)) | 0;
- mid = (mid + Math.imul(ah2, bl5)) | 0;
- hi = (hi + Math.imul(ah2, bh5)) | 0;
- lo = (lo + Math.imul(al1, bl6)) | 0;
- mid = (mid + Math.imul(al1, bh6)) | 0;
- mid = (mid + Math.imul(ah1, bl6)) | 0;
- hi = (hi + Math.imul(ah1, bh6)) | 0;
- lo = (lo + Math.imul(al0, bl7)) | 0;
- mid = (mid + Math.imul(al0, bh7)) | 0;
- mid = (mid + Math.imul(ah0, bl7)) | 0;
- hi = (hi + Math.imul(ah0, bh7)) | 0;
- var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
- w7 &= 0x3ffffff;
- /* k = 8 */
- lo = Math.imul(al8, bl0);
- mid = Math.imul(al8, bh0);
- mid = (mid + Math.imul(ah8, bl0)) | 0;
- hi = Math.imul(ah8, bh0);
- lo = (lo + Math.imul(al7, bl1)) | 0;
- mid = (mid + Math.imul(al7, bh1)) | 0;
- mid = (mid + Math.imul(ah7, bl1)) | 0;
- hi = (hi + Math.imul(ah7, bh1)) | 0;
- lo = (lo + Math.imul(al6, bl2)) | 0;
- mid = (mid + Math.imul(al6, bh2)) | 0;
- mid = (mid + Math.imul(ah6, bl2)) | 0;
- hi = (hi + Math.imul(ah6, bh2)) | 0;
- lo = (lo + Math.imul(al5, bl3)) | 0;
- mid = (mid + Math.imul(al5, bh3)) | 0;
- mid = (mid + Math.imul(ah5, bl3)) | 0;
- hi = (hi + Math.imul(ah5, bh3)) | 0;
- lo = (lo + Math.imul(al4, bl4)) | 0;
- mid = (mid + Math.imul(al4, bh4)) | 0;
- mid = (mid + Math.imul(ah4, bl4)) | 0;
- hi = (hi + Math.imul(ah4, bh4)) | 0;
- lo = (lo + Math.imul(al3, bl5)) | 0;
- mid = (mid + Math.imul(al3, bh5)) | 0;
- mid = (mid + Math.imul(ah3, bl5)) | 0;
- hi = (hi + Math.imul(ah3, bh5)) | 0;
- lo = (lo + Math.imul(al2, bl6)) | 0;
- mid = (mid + Math.imul(al2, bh6)) | 0;
- mid = (mid + Math.imul(ah2, bl6)) | 0;
- hi = (hi + Math.imul(ah2, bh6)) | 0;
- lo = (lo + Math.imul(al1, bl7)) | 0;
- mid = (mid + Math.imul(al1, bh7)) | 0;
- mid = (mid + Math.imul(ah1, bl7)) | 0;
- hi = (hi + Math.imul(ah1, bh7)) | 0;
- lo = (lo + Math.imul(al0, bl8)) | 0;
- mid = (mid + Math.imul(al0, bh8)) | 0;
- mid = (mid + Math.imul(ah0, bl8)) | 0;
- hi = (hi + Math.imul(ah0, bh8)) | 0;
- var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
- w8 &= 0x3ffffff;
- /* k = 9 */
- lo = Math.imul(al9, bl0);
- mid = Math.imul(al9, bh0);
- mid = (mid + Math.imul(ah9, bl0)) | 0;
- hi = Math.imul(ah9, bh0);
- lo = (lo + Math.imul(al8, bl1)) | 0;
- mid = (mid + Math.imul(al8, bh1)) | 0;
- mid = (mid + Math.imul(ah8, bl1)) | 0;
- hi = (hi + Math.imul(ah8, bh1)) | 0;
- lo = (lo + Math.imul(al7, bl2)) | 0;
- mid = (mid + Math.imul(al7, bh2)) | 0;
- mid = (mid + Math.imul(ah7, bl2)) | 0;
- hi = (hi + Math.imul(ah7, bh2)) | 0;
- lo = (lo + Math.imul(al6, bl3)) | 0;
- mid = (mid + Math.imul(al6, bh3)) | 0;
- mid = (mid + Math.imul(ah6, bl3)) | 0;
- hi = (hi + Math.imul(ah6, bh3)) | 0;
- lo = (lo + Math.imul(al5, bl4)) | 0;
- mid = (mid + Math.imul(al5, bh4)) | 0;
- mid = (mid + Math.imul(ah5, bl4)) | 0;
- hi = (hi + Math.imul(ah5, bh4)) | 0;
- lo = (lo + Math.imul(al4, bl5)) | 0;
- mid = (mid + Math.imul(al4, bh5)) | 0;
- mid = (mid + Math.imul(ah4, bl5)) | 0;
- hi = (hi + Math.imul(ah4, bh5)) | 0;
- lo = (lo + Math.imul(al3, bl6)) | 0;
- mid = (mid + Math.imul(al3, bh6)) | 0;
- mid = (mid + Math.imul(ah3, bl6)) | 0;
- hi = (hi + Math.imul(ah3, bh6)) | 0;
- lo = (lo + Math.imul(al2, bl7)) | 0;
- mid = (mid + Math.imul(al2, bh7)) | 0;
- mid = (mid + Math.imul(ah2, bl7)) | 0;
- hi = (hi + Math.imul(ah2, bh7)) | 0;
- lo = (lo + Math.imul(al1, bl8)) | 0;
- mid = (mid + Math.imul(al1, bh8)) | 0;
- mid = (mid + Math.imul(ah1, bl8)) | 0;
- hi = (hi + Math.imul(ah1, bh8)) | 0;
- lo = (lo + Math.imul(al0, bl9)) | 0;
- mid = (mid + Math.imul(al0, bh9)) | 0;
- mid = (mid + Math.imul(ah0, bl9)) | 0;
- hi = (hi + Math.imul(ah0, bh9)) | 0;
- var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
- w9 &= 0x3ffffff;
- /* k = 10 */
- lo = Math.imul(al9, bl1);
- mid = Math.imul(al9, bh1);
- mid = (mid + Math.imul(ah9, bl1)) | 0;
- hi = Math.imul(ah9, bh1);
- lo = (lo + Math.imul(al8, bl2)) | 0;
- mid = (mid + Math.imul(al8, bh2)) | 0;
- mid = (mid + Math.imul(ah8, bl2)) | 0;
- hi = (hi + Math.imul(ah8, bh2)) | 0;
- lo = (lo + Math.imul(al7, bl3)) | 0;
- mid = (mid + Math.imul(al7, bh3)) | 0;
- mid = (mid + Math.imul(ah7, bl3)) | 0;
- hi = (hi + Math.imul(ah7, bh3)) | 0;
- lo = (lo + Math.imul(al6, bl4)) | 0;
- mid = (mid + Math.imul(al6, bh4)) | 0;
- mid = (mid + Math.imul(ah6, bl4)) | 0;
- hi = (hi + Math.imul(ah6, bh4)) | 0;
- lo = (lo + Math.imul(al5, bl5)) | 0;
- mid = (mid + Math.imul(al5, bh5)) | 0;
- mid = (mid + Math.imul(ah5, bl5)) | 0;
- hi = (hi + Math.imul(ah5, bh5)) | 0;
- lo = (lo + Math.imul(al4, bl6)) | 0;
- mid = (mid + Math.imul(al4, bh6)) | 0;
- mid = (mid + Math.imul(ah4, bl6)) | 0;
- hi = (hi + Math.imul(ah4, bh6)) | 0;
- lo = (lo + Math.imul(al3, bl7)) | 0;
- mid = (mid + Math.imul(al3, bh7)) | 0;
- mid = (mid + Math.imul(ah3, bl7)) | 0;
- hi = (hi + Math.imul(ah3, bh7)) | 0;
- lo = (lo + Math.imul(al2, bl8)) | 0;
- mid = (mid + Math.imul(al2, bh8)) | 0;
- mid = (mid + Math.imul(ah2, bl8)) | 0;
- hi = (hi + Math.imul(ah2, bh8)) | 0;
- lo = (lo + Math.imul(al1, bl9)) | 0;
- mid = (mid + Math.imul(al1, bh9)) | 0;
- mid = (mid + Math.imul(ah1, bl9)) | 0;
- hi = (hi + Math.imul(ah1, bh9)) | 0;
- var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
- w10 &= 0x3ffffff;
- /* k = 11 */
- lo = Math.imul(al9, bl2);
- mid = Math.imul(al9, bh2);
- mid = (mid + Math.imul(ah9, bl2)) | 0;
- hi = Math.imul(ah9, bh2);
- lo = (lo + Math.imul(al8, bl3)) | 0;
- mid = (mid + Math.imul(al8, bh3)) | 0;
- mid = (mid + Math.imul(ah8, bl3)) | 0;
- hi = (hi + Math.imul(ah8, bh3)) | 0;
- lo = (lo + Math.imul(al7, bl4)) | 0;
- mid = (mid + Math.imul(al7, bh4)) | 0;
- mid = (mid + Math.imul(ah7, bl4)) | 0;
- hi = (hi + Math.imul(ah7, bh4)) | 0;
- lo = (lo + Math.imul(al6, bl5)) | 0;
- mid = (mid + Math.imul(al6, bh5)) | 0;
- mid = (mid + Math.imul(ah6, bl5)) | 0;
- hi = (hi + Math.imul(ah6, bh5)) | 0;
- lo = (lo + Math.imul(al5, bl6)) | 0;
- mid = (mid + Math.imul(al5, bh6)) | 0;
- mid = (mid + Math.imul(ah5, bl6)) | 0;
- hi = (hi + Math.imul(ah5, bh6)) | 0;
- lo = (lo + Math.imul(al4, bl7)) | 0;
- mid = (mid + Math.imul(al4, bh7)) | 0;
- mid = (mid + Math.imul(ah4, bl7)) | 0;
- hi = (hi + Math.imul(ah4, bh7)) | 0;
- lo = (lo + Math.imul(al3, bl8)) | 0;
- mid = (mid + Math.imul(al3, bh8)) | 0;
- mid = (mid + Math.imul(ah3, bl8)) | 0;
- hi = (hi + Math.imul(ah3, bh8)) | 0;
- lo = (lo + Math.imul(al2, bl9)) | 0;
- mid = (mid + Math.imul(al2, bh9)) | 0;
- mid = (mid + Math.imul(ah2, bl9)) | 0;
- hi = (hi + Math.imul(ah2, bh9)) | 0;
- var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
- w11 &= 0x3ffffff;
- /* k = 12 */
- lo = Math.imul(al9, bl3);
- mid = Math.imul(al9, bh3);
- mid = (mid + Math.imul(ah9, bl3)) | 0;
- hi = Math.imul(ah9, bh3);
- lo = (lo + Math.imul(al8, bl4)) | 0;
- mid = (mid + Math.imul(al8, bh4)) | 0;
- mid = (mid + Math.imul(ah8, bl4)) | 0;
- hi = (hi + Math.imul(ah8, bh4)) | 0;
- lo = (lo + Math.imul(al7, bl5)) | 0;
- mid = (mid + Math.imul(al7, bh5)) | 0;
- mid = (mid + Math.imul(ah7, bl5)) | 0;
- hi = (hi + Math.imul(ah7, bh5)) | 0;
- lo = (lo + Math.imul(al6, bl6)) | 0;
- mid = (mid + Math.imul(al6, bh6)) | 0;
- mid = (mid + Math.imul(ah6, bl6)) | 0;
- hi = (hi + Math.imul(ah6, bh6)) | 0;
- lo = (lo + Math.imul(al5, bl7)) | 0;
- mid = (mid + Math.imul(al5, bh7)) | 0;
- mid = (mid + Math.imul(ah5, bl7)) | 0;
- hi = (hi + Math.imul(ah5, bh7)) | 0;
- lo = (lo + Math.imul(al4, bl8)) | 0;
- mid = (mid + Math.imul(al4, bh8)) | 0;
- mid = (mid + Math.imul(ah4, bl8)) | 0;
- hi = (hi + Math.imul(ah4, bh8)) | 0;
- lo = (lo + Math.imul(al3, bl9)) | 0;
- mid = (mid + Math.imul(al3, bh9)) | 0;
- mid = (mid + Math.imul(ah3, bl9)) | 0;
- hi = (hi + Math.imul(ah3, bh9)) | 0;
- var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
- w12 &= 0x3ffffff;
- /* k = 13 */
- lo = Math.imul(al9, bl4);
- mid = Math.imul(al9, bh4);
- mid = (mid + Math.imul(ah9, bl4)) | 0;
- hi = Math.imul(ah9, bh4);
- lo = (lo + Math.imul(al8, bl5)) | 0;
- mid = (mid + Math.imul(al8, bh5)) | 0;
- mid = (mid + Math.imul(ah8, bl5)) | 0;
- hi = (hi + Math.imul(ah8, bh5)) | 0;
- lo = (lo + Math.imul(al7, bl6)) | 0;
- mid = (mid + Math.imul(al7, bh6)) | 0;
- mid = (mid + Math.imul(ah7, bl6)) | 0;
- hi = (hi + Math.imul(ah7, bh6)) | 0;
- lo = (lo + Math.imul(al6, bl7)) | 0;
- mid = (mid + Math.imul(al6, bh7)) | 0;
- mid = (mid + Math.imul(ah6, bl7)) | 0;
- hi = (hi + Math.imul(ah6, bh7)) | 0;
- lo = (lo + Math.imul(al5, bl8)) | 0;
- mid = (mid + Math.imul(al5, bh8)) | 0;
- mid = (mid + Math.imul(ah5, bl8)) | 0;
- hi = (hi + Math.imul(ah5, bh8)) | 0;
- lo = (lo + Math.imul(al4, bl9)) | 0;
- mid = (mid + Math.imul(al4, bh9)) | 0;
- mid = (mid + Math.imul(ah4, bl9)) | 0;
- hi = (hi + Math.imul(ah4, bh9)) | 0;
- var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
- w13 &= 0x3ffffff;
- /* k = 14 */
- lo = Math.imul(al9, bl5);
- mid = Math.imul(al9, bh5);
- mid = (mid + Math.imul(ah9, bl5)) | 0;
- hi = Math.imul(ah9, bh5);
- lo = (lo + Math.imul(al8, bl6)) | 0;
- mid = (mid + Math.imul(al8, bh6)) | 0;
- mid = (mid + Math.imul(ah8, bl6)) | 0;
- hi = (hi + Math.imul(ah8, bh6)) | 0;
- lo = (lo + Math.imul(al7, bl7)) | 0;
- mid = (mid + Math.imul(al7, bh7)) | 0;
- mid = (mid + Math.imul(ah7, bl7)) | 0;
- hi = (hi + Math.imul(ah7, bh7)) | 0;
- lo = (lo + Math.imul(al6, bl8)) | 0;
- mid = (mid + Math.imul(al6, bh8)) | 0;
- mid = (mid + Math.imul(ah6, bl8)) | 0;
- hi = (hi + Math.imul(ah6, bh8)) | 0;
- lo = (lo + Math.imul(al5, bl9)) | 0;
- mid = (mid + Math.imul(al5, bh9)) | 0;
- mid = (mid + Math.imul(ah5, bl9)) | 0;
- hi = (hi + Math.imul(ah5, bh9)) | 0;
- var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
- w14 &= 0x3ffffff;
- /* k = 15 */
- lo = Math.imul(al9, bl6);
- mid = Math.imul(al9, bh6);
- mid = (mid + Math.imul(ah9, bl6)) | 0;
- hi = Math.imul(ah9, bh6);
- lo = (lo + Math.imul(al8, bl7)) | 0;
- mid = (mid + Math.imul(al8, bh7)) | 0;
- mid = (mid + Math.imul(ah8, bl7)) | 0;
- hi = (hi + Math.imul(ah8, bh7)) | 0;
- lo = (lo + Math.imul(al7, bl8)) | 0;
- mid = (mid + Math.imul(al7, bh8)) | 0;
- mid = (mid + Math.imul(ah7, bl8)) | 0;
- hi = (hi + Math.imul(ah7, bh8)) | 0;
- lo = (lo + Math.imul(al6, bl9)) | 0;
- mid = (mid + Math.imul(al6, bh9)) | 0;
- mid = (mid + Math.imul(ah6, bl9)) | 0;
- hi = (hi + Math.imul(ah6, bh9)) | 0;
- var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
- w15 &= 0x3ffffff;
- /* k = 16 */
- lo = Math.imul(al9, bl7);
- mid = Math.imul(al9, bh7);
- mid = (mid + Math.imul(ah9, bl7)) | 0;
- hi = Math.imul(ah9, bh7);
- lo = (lo + Math.imul(al8, bl8)) | 0;
- mid = (mid + Math.imul(al8, bh8)) | 0;
- mid = (mid + Math.imul(ah8, bl8)) | 0;
- hi = (hi + Math.imul(ah8, bh8)) | 0;
- lo = (lo + Math.imul(al7, bl9)) | 0;
- mid = (mid + Math.imul(al7, bh9)) | 0;
- mid = (mid + Math.imul(ah7, bl9)) | 0;
- hi = (hi + Math.imul(ah7, bh9)) | 0;
- var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
- w16 &= 0x3ffffff;
- /* k = 17 */
- lo = Math.imul(al9, bl8);
- mid = Math.imul(al9, bh8);
- mid = (mid + Math.imul(ah9, bl8)) | 0;
- hi = Math.imul(ah9, bh8);
- lo = (lo + Math.imul(al8, bl9)) | 0;
- mid = (mid + Math.imul(al8, bh9)) | 0;
- mid = (mid + Math.imul(ah8, bl9)) | 0;
- hi = (hi + Math.imul(ah8, bh9)) | 0;
- var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
- w17 &= 0x3ffffff;
- /* k = 18 */
- lo = Math.imul(al9, bl9);
- mid = Math.imul(al9, bh9);
- mid = (mid + Math.imul(ah9, bl9)) | 0;
- hi = Math.imul(ah9, bh9);
- var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
- c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
- w18 &= 0x3ffffff;
- o[0] = w0;
- o[1] = w1;
- o[2] = w2;
- o[3] = w3;
- o[4] = w4;
- o[5] = w5;
- o[6] = w6;
- o[7] = w7;
- o[8] = w8;
- o[9] = w9;
- o[10] = w10;
- o[11] = w11;
- o[12] = w12;
- o[13] = w13;
- o[14] = w14;
- o[15] = w15;
- o[16] = w16;
- o[17] = w17;
- o[18] = w18;
- if (c !== 0) {
- o[19] = c;
- out.length++;
- }
- return out;
- };
- // Polyfill comb
- if (!Math.imul) {
- comb10MulTo = smallMulTo;
- }
- function bigMulTo (self, num, out) {
- out.negative = num.negative ^ self.negative;
- out.length = self.length + num.length;
- var carry = 0;
- var hncarry = 0;
- for (var k = 0; k < out.length - 1; k++) {
- // Sum all words with the same `i + j = k` and accumulate `ncarry`,
- // note that ncarry could be >= 0x3ffffff
- var ncarry = hncarry;
- hncarry = 0;
- var rword = carry & 0x3ffffff;
- var maxJ = Math.min(k, num.length - 1);
- for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
- var i = k - j;
- var a = self.words[i] | 0;
- var b = num.words[j] | 0;
- var r = a * b;
- var lo = r & 0x3ffffff;
- ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
- lo = (lo + rword) | 0;
- rword = lo & 0x3ffffff;
- ncarry = (ncarry + (lo >>> 26)) | 0;
- hncarry += ncarry >>> 26;
- ncarry &= 0x3ffffff;
- }
- out.words[k] = rword;
- carry = ncarry;
- ncarry = hncarry;
- }
- if (carry !== 0) {
- out.words[k] = carry;
- } else {
- out.length--;
- }
- return out.strip();
- }
- function jumboMulTo (self, num, out) {
- var fftm = new FFTM();
- return fftm.mulp(self, num, out);
- }
- BN.prototype.mulTo = function mulTo (num, out) {
- var res;
- var len = this.length + num.length;
- if (this.length === 10 && num.length === 10) {
- res = comb10MulTo(this, num, out);
- } else if (len < 63) {
- res = smallMulTo(this, num, out);
- } else if (len < 1024) {
- res = bigMulTo(this, num, out);
- } else {
- res = jumboMulTo(this, num, out);
- }
- return res;
- };
- // Cooley-Tukey algorithm for FFT
- // slightly revisited to rely on looping instead of recursion
- function FFTM (x, y) {
- this.x = x;
- this.y = y;
- }
- FFTM.prototype.makeRBT = function makeRBT (N) {
- var t = new Array(N);
- var l = BN.prototype._countBits(N) - 1;
- for (var i = 0; i < N; i++) {
- t[i] = this.revBin(i, l, N);
- }
- return t;
- };
- // Returns binary-reversed representation of `x`
- FFTM.prototype.revBin = function revBin (x, l, N) {
- if (x === 0 || x === N - 1) return x;
- var rb = 0;
- for (var i = 0; i < l; i++) {
- rb |= (x & 1) << (l - i - 1);
- x >>= 1;
- }
- return rb;
- };
- // Performs "tweedling" phase, therefore 'emulating'
- // behaviour of the recursive algorithm
- FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
- for (var i = 0; i < N; i++) {
- rtws[i] = rws[rbt[i]];
- itws[i] = iws[rbt[i]];
- }
- };
- FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
- this.permute(rbt, rws, iws, rtws, itws, N);
- for (var s = 1; s < N; s <<= 1) {
- var l = s << 1;
- var rtwdf = Math.cos(2 * Math.PI / l);
- var itwdf = Math.sin(2 * Math.PI / l);
- for (var p = 0; p < N; p += l) {
- var rtwdf_ = rtwdf;
- var itwdf_ = itwdf;
- for (var j = 0; j < s; j++) {
- var re = rtws[p + j];
- var ie = itws[p + j];
- var ro = rtws[p + j + s];
- var io = itws[p + j + s];
- var rx = rtwdf_ * ro - itwdf_ * io;
- io = rtwdf_ * io + itwdf_ * ro;
- ro = rx;
- rtws[p + j] = re + ro;
- itws[p + j] = ie + io;
- rtws[p + j + s] = re - ro;
- itws[p + j + s] = ie - io;
- /* jshint maxdepth : false */
- if (j !== l) {
- rx = rtwdf * rtwdf_ - itwdf * itwdf_;
- itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
- rtwdf_ = rx;
- }
- }
- }
- }
- };
- FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
- var N = Math.max(m, n) | 1;
- var odd = N & 1;
- var i = 0;
- for (N = N / 2 | 0; N; N = N >>> 1) {
- i++;
- }
- return 1 << i + 1 + odd;
- };
- FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
- if (N <= 1) return;
- for (var i = 0; i < N / 2; i++) {
- var t = rws[i];
- rws[i] = rws[N - i - 1];
- rws[N - i - 1] = t;
- t = iws[i];
- iws[i] = -iws[N - i - 1];
- iws[N - i - 1] = -t;
- }
- };
- FFTM.prototype.normalize13b = function normalize13b (ws, N) {
- var carry = 0;
- for (var i = 0; i < N / 2; i++) {
- var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
- Math.round(ws[2 * i] / N) +
- carry;
- ws[i] = w & 0x3ffffff;
- if (w < 0x4000000) {
- carry = 0;
- } else {
- carry = w / 0x4000000 | 0;
- }
- }
- return ws;
- };
- FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
- var carry = 0;
- for (var i = 0; i < len; i++) {
- carry = carry + (ws[i] | 0);
- rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
- rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
- }
- // Pad with zeroes
- for (i = 2 * len; i < N; ++i) {
- rws[i] = 0;
- }
- assert(carry === 0);
- assert((carry & ~0x1fff) === 0);
- };
- FFTM.prototype.stub = function stub (N) {
- var ph = new Array(N);
- for (var i = 0; i < N; i++) {
- ph[i] = 0;
- }
- return ph;
- };
- FFTM.prototype.mulp = function mulp (x, y, out) {
- var N = 2 * this.guessLen13b(x.length, y.length);
- var rbt = this.makeRBT(N);
- var _ = this.stub(N);
- var rws = new Array(N);
- var rwst = new Array(N);
- var iwst = new Array(N);
- var nrws = new Array(N);
- var nrwst = new Array(N);
- var niwst = new Array(N);
- var rmws = out.words;
- rmws.length = N;
- this.convert13b(x.words, x.length, rws, N);
- this.convert13b(y.words, y.length, nrws, N);
- this.transform(rws, _, rwst, iwst, N, rbt);
- this.transform(nrws, _, nrwst, niwst, N, rbt);
- for (var i = 0; i < N; i++) {
- var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
- iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
- rwst[i] = rx;
- }
- this.conjugate(rwst, iwst, N);
- this.transform(rwst, iwst, rmws, _, N, rbt);
- this.conjugate(rmws, _, N);
- this.normalize13b(rmws, N);
- out.negative = x.negative ^ y.negative;
- out.length = x.length + y.length;
- return out.strip();
- };
- // Multiply `this` by `num`
- BN.prototype.mul = function mul (num) {
- var out = new BN(null);
- out.words = new Array(this.length + num.length);
- return this.mulTo(num, out);
- };
- // Multiply employing FFT
- BN.prototype.mulf = function mulf (num) {
- var out = new BN(null);
- out.words = new Array(this.length + num.length);
- return jumboMulTo(this, num, out);
- };
- // In-place Multiplication
- BN.prototype.imul = function imul (num) {
- return this.clone().mulTo(num, this);
- };
- BN.prototype.imuln = function imuln (num) {
- assert(typeof num === 'number');
- assert(num < 0x4000000);
- // Carry
- var carry = 0;
- for (var i = 0; i < this.length; i++) {
- var w = (this.words[i] | 0) * num;
- var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
- carry >>= 26;
- carry += (w / 0x4000000) | 0;
- // NOTE: lo is 27bit maximum
- carry += lo >>> 26;
- this.words[i] = lo & 0x3ffffff;
- }
- if (carry !== 0) {
- this.words[i] = carry;
- this.length++;
- }
- return this;
- };
- BN.prototype.muln = function muln (num) {
- return this.clone().imuln(num);
- };
- // `this` * `this`
- BN.prototype.sqr = function sqr () {
- return this.mul(this);
- };
- // `this` * `this` in-place
- BN.prototype.isqr = function isqr () {
- return this.imul(this.clone());
- };
- // Math.pow(`this`, `num`)
- BN.prototype.pow = function pow (num) {
- var w = toBitArray(num);
- if (w.length === 0) return new BN(1);
- // Skip leading zeroes
- var res = this;
- for (var i = 0; i < w.length; i++, res = res.sqr()) {
- if (w[i] !== 0) break;
- }
- if (++i < w.length) {
- for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
- if (w[i] === 0) continue;
- res = res.mul(q);
- }
- }
- return res;
- };
- // Shift-left in-place
- BN.prototype.iushln = function iushln (bits) {
- assert(typeof bits === 'number' && bits >= 0);
- var r = bits % 26;
- var s = (bits - r) / 26;
- var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
- var i;
- if (r !== 0) {
- var carry = 0;
- for (i = 0; i < this.length; i++) {
- var newCarry = this.words[i] & carryMask;
- var c = ((this.words[i] | 0) - newCarry) << r;
- this.words[i] = c | carry;
- carry = newCarry >>> (26 - r);
- }
- if (carry) {
- this.words[i] = carry;
- this.length++;
- }
- }
- if (s !== 0) {
- for (i = this.length - 1; i >= 0; i--) {
- this.words[i + s] = this.words[i];
- }
- for (i = 0; i < s; i++) {
- this.words[i] = 0;
- }
- this.length += s;
- }
- return this.strip();
- };
- BN.prototype.ishln = function ishln (bits) {
- // TODO(indutny): implement me
- assert(this.negative === 0);
- return this.iushln(bits);
- };
- // Shift-right in-place
- // NOTE: `hint` is a lowest bit before trailing zeroes
- // NOTE: if `extended` is present - it will be filled with destroyed bits
- BN.prototype.iushrn = function iushrn (bits, hint, extended) {
- assert(typeof bits === 'number' && bits >= 0);
- var h;
- if (hint) {
- h = (hint - (hint % 26)) / 26;
- } else {
- h = 0;
- }
- var r = bits % 26;
- var s = Math.min((bits - r) / 26, this.length);
- var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
- var maskedWords = extended;
- h -= s;
- h = Math.max(0, h);
- // Extended mode, copy masked part
- if (maskedWords) {
- for (var i = 0; i < s; i++) {
- maskedWords.words[i] = this.words[i];
- }
- maskedWords.length = s;
- }
- if (s === 0) {
- // No-op, we should not move anything at all
- } else if (this.length > s) {
- this.length -= s;
- for (i = 0; i < this.length; i++) {
- this.words[i] = this.words[i + s];
- }
- } else {
- this.words[0] = 0;
- this.length = 1;
- }
- var carry = 0;
- for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
- var word = this.words[i] | 0;
- this.words[i] = (carry << (26 - r)) | (word >>> r);
- carry = word & mask;
- }
- // Push carried bits as a mask
- if (maskedWords && carry !== 0) {
- maskedWords.words[maskedWords.length++] = carry;
- }
- if (this.length === 0) {
- this.words[0] = 0;
- this.length = 1;
- }
- return this.strip();
- };
- BN.prototype.ishrn = function ishrn (bits, hint, extended) {
- // TODO(indutny): implement me
- assert(this.negative === 0);
- return this.iushrn(bits, hint, extended);
- };
- // Shift-left
- BN.prototype.shln = function shln (bits) {
- return this.clone().ishln(bits);
- };
- BN.prototype.ushln = function ushln (bits) {
- return this.clone().iushln(bits);
- };
- // Shift-right
- BN.prototype.shrn = function shrn (bits) {
- return this.clone().ishrn(bits);
- };
- BN.prototype.ushrn = function ushrn (bits) {
- return this.clone().iushrn(bits);
- };
- // Test if n bit is set
- BN.prototype.testn = function testn (bit) {
- assert(typeof bit === 'number' && bit >= 0);
- var r = bit % 26;
- var s = (bit - r) / 26;
- var q = 1 << r;
- // Fast case: bit is much higher than all existing words
- if (this.length <= s) return false;
- // Check bit and return
- var w = this.words[s];
- return !!(w & q);
- };
- // Return only lowers bits of number (in-place)
- BN.prototype.imaskn = function imaskn (bits) {
- assert(typeof bits === 'number' && bits >= 0);
- var r = bits % 26;
- var s = (bits - r) / 26;
- assert(this.negative === 0, 'imaskn works only with positive numbers');
- if (this.length <= s) {
- return this;
- }
- if (r !== 0) {
- s++;
- }
- this.length = Math.min(s, this.length);
- if (r !== 0) {
- var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
- this.words[this.length - 1] &= mask;
- }
- return this.strip();
- };
- // Return only lowers bits of number
- BN.prototype.maskn = function maskn (bits) {
- return this.clone().imaskn(bits);
- };
- // Add plain number `num` to `this`
- BN.prototype.iaddn = function iaddn (num) {
- assert(typeof num === 'number');
- assert(num < 0x4000000);
- if (num < 0) return this.isubn(-num);
- // Possible sign change
- if (this.negative !== 0) {
- if (this.length === 1 && (this.words[0] | 0) < num) {
- this.words[0] = num - (this.words[0] | 0);
- this.negative = 0;
- return this;
- }
- this.negative = 0;
- this.isubn(num);
- this.negative = 1;
- return this;
- }
- // Add without checks
- return this._iaddn(num);
- };
- BN.prototype._iaddn = function _iaddn (num) {
- this.words[0] += num;
- // Carry
- for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
- this.words[i] -= 0x4000000;
- if (i === this.length - 1) {
- this.words[i + 1] = 1;
- } else {
- this.words[i + 1]++;
- }
- }
- this.length = Math.max(this.length, i + 1);
- return this;
- };
- // Subtract plain number `num` from `this`
- BN.prototype.isubn = function isubn (num) {
- assert(typeof num === 'number');
- assert(num < 0x4000000);
- if (num < 0) return this.iaddn(-num);
- if (this.negative !== 0) {
- this.negative = 0;
- this.iaddn(num);
- this.negative = 1;
- return this;
- }
- this.words[0] -= num;
- if (this.length === 1 && this.words[0] < 0) {
- this.words[0] = -this.words[0];
- this.negative = 1;
- } else {
- // Carry
- for (var i = 0; i < this.length && this.words[i] < 0; i++) {
- this.words[i] += 0x4000000;
- this.words[i + 1] -= 1;
- }
- }
- return this.strip();
- };
- BN.prototype.addn = function addn (num) {
- return this.clone().iaddn(num);
- };
- BN.prototype.subn = function subn (num) {
- return this.clone().isubn(num);
- };
- BN.prototype.iabs = function iabs () {
- this.negative = 0;
- return this;
- };
- BN.prototype.abs = function abs () {
- return this.clone().iabs();
- };
- BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
- var len = num.length + shift;
- var i;
- this._expand(len);
- var w;
- var carry = 0;
- for (i = 0; i < num.length; i++) {
- w = (this.words[i + shift] | 0) + carry;
- var right = (num.words[i] | 0) * mul;
- w -= right & 0x3ffffff;
- carry = (w >> 26) - ((right / 0x4000000) | 0);
- this.words[i + shift] = w & 0x3ffffff;
- }
- for (; i < this.length - shift; i++) {
- w = (this.words[i + shift] | 0) + carry;
- carry = w >> 26;
- this.words[i + shift] = w & 0x3ffffff;
- }
- if (carry === 0) return this.strip();
- // Subtraction overflow
- assert(carry === -1);
- carry = 0;
- for (i = 0; i < this.length; i++) {
- w = -(this.words[i] | 0) + carry;
- carry = w >> 26;
- this.words[i] = w & 0x3ffffff;
- }
- this.negative = 1;
- return this.strip();
- };
- BN.prototype._wordDiv = function _wordDiv (num, mode) {
- var shift = this.length - num.length;
- var a = this.clone();
- var b = num;
- // Normalize
- var bhi = b.words[b.length - 1] | 0;
- var bhiBits = this._countBits(bhi);
- shift = 26 - bhiBits;
- if (shift !== 0) {
- b = b.ushln(shift);
- a.iushln(shift);
- bhi = b.words[b.length - 1] | 0;
- }
- // Initialize quotient
- var m = a.length - b.length;
- var q;
- if (mode !== 'mod') {
- q = new BN(null);
- q.length = m + 1;
- q.words = new Array(q.length);
- for (var i = 0; i < q.length; i++) {
- q.words[i] = 0;
- }
- }
- var diff = a.clone()._ishlnsubmul(b, 1, m);
- if (diff.negative === 0) {
- a = diff;
- if (q) {
- q.words[m] = 1;
- }
- }
- for (var j = m - 1; j >= 0; j--) {
- var qj = (a.words[b.length + j] | 0) * 0x4000000 +
- (a.words[b.length + j - 1] | 0);
- // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
- // (0x7ffffff)
- qj = Math.min((qj / bhi) | 0, 0x3ffffff);
- a._ishlnsubmul(b, qj, j);
- while (a.negative !== 0) {
- qj--;
- a.negative = 0;
- a._ishlnsubmul(b, 1, j);
- if (!a.isZero()) {
- a.negative ^= 1;
- }
- }
- if (q) {
- q.words[j] = qj;
- }
- }
- if (q) {
- q.strip();
- }
- a.strip();
- // Denormalize
- if (mode !== 'div' && shift !== 0) {
- a.iushrn(shift);
- }
- return {
- div: q || null,
- mod: a
- };
- };
- // NOTE: 1) `mode` can be set to `mod` to request mod only,
- // to `div` to request div only, or be absent to
- // request both div & mod
- // 2) `positive` is true if unsigned mod is requested
- BN.prototype.divmod = function divmod (num, mode, positive) {
- assert(!num.isZero());
- if (this.isZero()) {
- return {
- div: new BN(0),
- mod: new BN(0)
- };
- }
- var div, mod, res;
- if (this.negative !== 0 && num.negative === 0) {
- res = this.neg().divmod(num, mode);
- if (mode !== 'mod') {
- div = res.div.neg();
- }
- if (mode !== 'div') {
- mod = res.mod.neg();
- if (positive && mod.negative !== 0) {
- mod.iadd(num);
- }
- }
- return {
- div: div,
- mod: mod
- };
- }
- if (this.negative === 0 && num.negative !== 0) {
- res = this.divmod(num.neg(), mode);
- if (mode !== 'mod') {
- div = res.div.neg();
- }
- return {
- div: div,
- mod: res.mod
- };
- }
- if ((this.negative & num.negative) !== 0) {
- res = this.neg().divmod(num.neg(), mode);
- if (mode !== 'div') {
- mod = res.mod.neg();
- if (positive && mod.negative !== 0) {
- mod.isub(num);
- }
- }
- return {
- div: res.div,
- mod: mod
- };
- }
- // Both numbers are positive at this point
- // Strip both numbers to approximate shift value
- if (num.length > this.length || this.cmp(num) < 0) {
- return {
- div: new BN(0),
- mod: this
- };
- }
- // Very short reduction
- if (num.length === 1) {
- if (mode === 'div') {
- return {
- div: this.divn(num.words[0]),
- mod: null
- };
- }
- if (mode === 'mod') {
- return {
- div: null,
- mod: new BN(this.modn(num.words[0]))
- };
- }
- return {
- div: this.divn(num.words[0]),
- mod: new BN(this.modn(num.words[0]))
- };
- }
- return this._wordDiv(num, mode);
- };
- // Find `this` / `num`
- BN.prototype.div = function div (num) {
- return this.divmod(num, 'div', false).div;
- };
- // Find `this` % `num`
- BN.prototype.mod = function mod (num) {
- return this.divmod(num, 'mod', false).mod;
- };
- BN.prototype.umod = function umod (num) {
- return this.divmod(num, 'mod', true).mod;
- };
- // Find Round(`this` / `num`)
- BN.prototype.divRound = function divRound (num) {
- var dm = this.divmod(num);
- // Fast case - exact division
- if (dm.mod.isZero()) return dm.div;
- var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
- var half = num.ushrn(1);
- var r2 = num.andln(1);
- var cmp = mod.cmp(half);
- // Round down
- if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
- // Round up
- return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
- };
- BN.prototype.modn = function modn (num) {
- assert(num <= 0x3ffffff);
- var p = (1 << 26) % num;
- var acc = 0;
- for (var i = this.length - 1; i >= 0; i--) {
- acc = (p * acc + (this.words[i] | 0)) % num;
- }
- return acc;
- };
- // In-place division by number
- BN.prototype.idivn = function idivn (num) {
- assert(num <= 0x3ffffff);
- var carry = 0;
- for (var i = this.length - 1; i >= 0; i--) {
- var w = (this.words[i] | 0) + carry * 0x4000000;
- this.words[i] = (w / num) | 0;
- carry = w % num;
- }
- return this.strip();
- };
- BN.prototype.divn = function divn (num) {
- return this.clone().idivn(num);
- };
- BN.prototype.egcd = function egcd (p) {
- assert(p.negative === 0);
- assert(!p.isZero());
- var x = this;
- var y = p.clone();
- if (x.negative !== 0) {
- x = x.umod(p);
- } else {
- x = x.clone();
- }
- // A * x + B * y = x
- var A = new BN(1);
- var B = new BN(0);
- // C * x + D * y = y
- var C = new BN(0);
- var D = new BN(1);
- var g = 0;
- while (x.isEven() && y.isEven()) {
- x.iushrn(1);
- y.iushrn(1);
- ++g;
- }
- var yp = y.clone();
- var xp = x.clone();
- while (!x.isZero()) {
- for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
- if (i > 0) {
- x.iushrn(i);
- while (i-- > 0) {
- if (A.isOdd() || B.isOdd()) {
- A.iadd(yp);
- B.isub(xp);
- }
- A.iushrn(1);
- B.iushrn(1);
- }
- }
- for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
- if (j > 0) {
- y.iushrn(j);
- while (j-- > 0) {
- if (C.isOdd() || D.isOdd()) {
- C.iadd(yp);
- D.isub(xp);
- }
- C.iushrn(1);
- D.iushrn(1);
- }
- }
- if (x.cmp(y) >= 0) {
- x.isub(y);
- A.isub(C);
- B.isub(D);
- } else {
- y.isub(x);
- C.isub(A);
- D.isub(B);
- }
- }
- return {
- a: C,
- b: D,
- gcd: y.iushln(g)
- };
- };
- // This is reduced incarnation of the binary EEA
- // above, designated to invert members of the
- // _prime_ fields F(p) at a maximal speed
- BN.prototype._invmp = function _invmp (p) {
- assert(p.negative === 0);
- assert(!p.isZero());
- var a = this;
- var b = p.clone();
- if (a.negative !== 0) {
- a = a.umod(p);
- } else {
- a = a.clone();
- }
- var x1 = new BN(1);
- var x2 = new BN(0);
- var delta = b.clone();
- while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
- for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
- if (i > 0) {
- a.iushrn(i);
- while (i-- > 0) {
- if (x1.isOdd()) {
- x1.iadd(delta);
- }
- x1.iushrn(1);
- }
- }
- for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
- if (j > 0) {
- b.iushrn(j);
- while (j-- > 0) {
- if (x2.isOdd()) {
- x2.iadd(delta);
- }
- x2.iushrn(1);
- }
- }
- if (a.cmp(b) >= 0) {
- a.isub(b);
- x1.isub(x2);
- } else {
- b.isub(a);
- x2.isub(x1);
- }
- }
- var res;
- if (a.cmpn(1) === 0) {
- res = x1;
- } else {
- res = x2;
- }
- if (res.cmpn(0) < 0) {
- res.iadd(p);
- }
- return res;
- };
- BN.prototype.gcd = function gcd (num) {
- if (this.isZero()) return num.abs();
- if (num.isZero()) return this.abs();
- var a = this.clone();
- var b = num.clone();
- a.negative = 0;
- b.negative = 0;
- // Remove common factor of two
- for (var shift = 0; a.isEven() && b.isEven(); shift++) {
- a.iushrn(1);
- b.iushrn(1);
- }
- do {
- while (a.isEven()) {
- a.iushrn(1);
- }
- while (b.isEven()) {
- b.iushrn(1);
- }
- var r = a.cmp(b);
- if (r < 0) {
- // Swap `a` and `b` to make `a` always bigger than `b`
- var t = a;
- a = b;
- b = t;
- } else if (r === 0 || b.cmpn(1) === 0) {
- break;
- }
- a.isub(b);
- } while (true);
- return b.iushln(shift);
- };
- // Invert number in the field F(num)
- BN.prototype.invm = function invm (num) {
- return this.egcd(num).a.umod(num);
- };
- BN.prototype.isEven = function isEven () {
- return (this.words[0] & 1) === 0;
- };
- BN.prototype.isOdd = function isOdd () {
- return (this.words[0] & 1) === 1;
- };
- // And first word and num
- BN.prototype.andln = function andln (num) {
- return this.words[0] & num;
- };
- // Increment at the bit position in-line
- BN.prototype.bincn = function bincn (bit) {
- assert(typeof bit === 'number');
- var r = bit % 26;
- var s = (bit - r) / 26;
- var q = 1 << r;
- // Fast case: bit is much higher than all existing words
- if (this.length <= s) {
- this._expand(s + 1);
- this.words[s] |= q;
- return this;
- }
- // Add bit and propagate, if needed
- var carry = q;
- for (var i = s; carry !== 0 && i < this.length; i++) {
- var w = this.words[i] | 0;
- w += carry;
- carry = w >>> 26;
- w &= 0x3ffffff;
- this.words[i] = w;
- }
- if (carry !== 0) {
- this.words[i] = carry;
- this.length++;
- }
- return this;
- };
- BN.prototype.isZero = function isZero () {
- return this.length === 1 && this.words[0] === 0;
- };
- BN.prototype.cmpn = function cmpn (num) {
- var negative = num < 0;
- if (this.negative !== 0 && !negative) return -1;
- if (this.negative === 0 && negative) return 1;
- this.strip();
- var res;
- if (this.length > 1) {
- res = 1;
- } else {
- if (negative) {
- num = -num;
- }
- assert(num <= 0x3ffffff, 'Number is too big');
- var w = this.words[0] | 0;
- res = w === num ? 0 : w < num ? -1 : 1;
- }
- if (this.negative !== 0) return -res | 0;
- return res;
- };
- // Compare two numbers and return:
- // 1 - if `this` > `num`
- // 0 - if `this` == `num`
- // -1 - if `this` < `num`
- BN.prototype.cmp = function cmp (num) {
- if (this.negative !== 0 && num.negative === 0) return -1;
- if (this.negative === 0 && num.negative !== 0) return 1;
- var res = this.ucmp(num);
- if (this.negative !== 0) return -res | 0;
- return res;
- };
- // Unsigned comparison
- BN.prototype.ucmp = function ucmp (num) {
- // At this point both numbers have the same sign
- if (this.length > num.length) return 1;
- if (this.length < num.length) return -1;
- var res = 0;
- for (var i = this.length - 1; i >= 0; i--) {
- var a = this.words[i] | 0;
- var b = num.words[i] | 0;
- if (a === b) continue;
- if (a < b) {
- res = -1;
- } else if (a > b) {
- res = 1;
- }
- break;
- }
- return res;
- };
- BN.prototype.gtn = function gtn (num) {
- return this.cmpn(num) === 1;
- };
- BN.prototype.gt = function gt (num) {
- return this.cmp(num) === 1;
- };
- BN.prototype.gten = function gten (num) {
- return this.cmpn(num) >= 0;
- };
- BN.prototype.gte = function gte (num) {
- return this.cmp(num) >= 0;
- };
- BN.prototype.ltn = function ltn (num) {
- return this.cmpn(num) === -1;
- };
- BN.prototype.lt = function lt (num) {
- return this.cmp(num) === -1;
- };
- BN.prototype.lten = function lten (num) {
- return this.cmpn(num) <= 0;
- };
- BN.prototype.lte = function lte (num) {
- return this.cmp(num) <= 0;
- };
- BN.prototype.eqn = function eqn (num) {
- return this.cmpn(num) === 0;
- };
- BN.prototype.eq = function eq (num) {
- return this.cmp(num) === 0;
- };
- //
- // A reduce context, could be using montgomery or something better, depending
- // on the `m` itself.
- //
- BN.red = function red (num) {
- return new Red(num);
- };
- BN.prototype.toRed = function toRed (ctx) {
- assert(!this.red, 'Already a number in reduction context');
- assert(this.negative === 0, 'red works only with positives');
- return ctx.convertTo(this)._forceRed(ctx);
- };
- BN.prototype.fromRed = function fromRed () {
- assert(this.red, 'fromRed works only with numbers in reduction context');
- return this.red.convertFrom(this);
- };
- BN.prototype._forceRed = function _forceRed (ctx) {
- this.red = ctx;
- return this;
- };
- BN.prototype.forceRed = function forceRed (ctx) {
- assert(!this.red, 'Already a number in reduction context');
- return this._forceRed(ctx);
- };
- BN.prototype.redAdd = function redAdd (num) {
- assert(this.red, 'redAdd works only with red numbers');
- return this.red.add(this, num);
- };
- BN.prototype.redIAdd = function redIAdd (num) {
- assert(this.red, 'redIAdd works only with red numbers');
- return this.red.iadd(this, num);
- };
- BN.prototype.redSub = function redSub (num) {
- assert(this.red, 'redSub works only with red numbers');
- return this.red.sub(this, num);
- };
- BN.prototype.redISub = function redISub (num) {
- assert(this.red, 'redISub works only with red numbers');
- return this.red.isub(this, num);
- };
- BN.prototype.redShl = function redShl (num) {
- assert(this.red, 'redShl works only with red numbers');
- return this.red.shl(this, num);
- };
- BN.prototype.redMul = function redMul (num) {
- assert(this.red, 'redMul works only with red numbers');
- this.red._verify2(this, num);
- return this.red.mul(this, num);
- };
- BN.prototype.redIMul = function redIMul (num) {
- assert(this.red, 'redMul works only with red numbers');
- this.red._verify2(this, num);
- return this.red.imul(this, num);
- };
- BN.prototype.redSqr = function redSqr () {
- assert(this.red, 'redSqr works only with red numbers');
- this.red._verify1(this);
- return this.red.sqr(this);
- };
- BN.prototype.redISqr = function redISqr () {
- assert(this.red, 'redISqr works only with red numbers');
- this.red._verify1(this);
- return this.red.isqr(this);
- };
- // Square root over p
- BN.prototype.redSqrt = function redSqrt () {
- assert(this.red, 'redSqrt works only with red numbers');
- this.red._verify1(this);
- return this.red.sqrt(this);
- };
- BN.prototype.redInvm = function redInvm () {
- assert(this.red, 'redInvm works only with red numbers');
- this.red._verify1(this);
- return this.red.invm(this);
- };
- // Return negative clone of `this` % `red modulo`
- BN.prototype.redNeg = function redNeg () {
- assert(this.red, 'redNeg works only with red numbers');
- this.red._verify1(this);
- return this.red.neg(this);
- };
- BN.prototype.redPow = function redPow (num) {
- assert(this.red && !num.red, 'redPow(normalNum)');
- this.red._verify1(this);
- return this.red.pow(this, num);
- };
- // Prime numbers with efficient reduction
- var primes = {
- k256: null,
- p224: null,
- p192: null,
- p25519: null
- };
- // Pseudo-Mersenne prime
- function MPrime (name, p) {
- // P = 2 ^ N - K
- this.name = name;
- this.p = new BN(p, 16);
- this.n = this.p.bitLength();
- this.k = new BN(1).iushln(this.n).isub(this.p);
- this.tmp = this._tmp();
- }
- MPrime.prototype._tmp = function _tmp () {
- var tmp = new BN(null);
- tmp.words = new Array(Math.ceil(this.n / 13));
- return tmp;
- };
- MPrime.prototype.ireduce = function ireduce (num) {
- // Assumes that `num` is less than `P^2`
- // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
- var r = num;
- var rlen;
- do {
- this.split(r, this.tmp);
- r = this.imulK(r);
- r = r.iadd(this.tmp);
- rlen = r.bitLength();
- } while (rlen > this.n);
- var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
- if (cmp === 0) {
- r.words[0] = 0;
- r.length = 1;
- } else if (cmp > 0) {
- r.isub(this.p);
- } else {
- r.strip();
- }
- return r;
- };
- MPrime.prototype.split = function split (input, out) {
- input.iushrn(this.n, 0, out);
- };
- MPrime.prototype.imulK = function imulK (num) {
- return num.imul(this.k);
- };
- function K256 () {
- MPrime.call(
- this,
- 'k256',
- 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
- }
- inherits(K256, MPrime);
- K256.prototype.split = function split (input, output) {
- // 256 = 9 * 26 + 22
- var mask = 0x3fffff;
- var outLen = Math.min(input.length, 9);
- for (var i = 0; i < outLen; i++) {
- output.words[i] = input.words[i];
- }
- output.length = outLen;
- if (input.length <= 9) {
- input.words[0] = 0;
- input.length = 1;
- return;
- }
- // Shift by 9 limbs
- var prev = input.words[9];
- output.words[output.length++] = prev & mask;
- for (i = 10; i < input.length; i++) {
- var next = input.words[i] | 0;
- input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
- prev = next;
- }
- prev >>>= 22;
- input.words[i - 10] = prev;
- if (prev === 0 && input.length > 10) {
- input.length -= 10;
- } else {
- input.length -= 9;
- }
- };
- K256.prototype.imulK = function imulK (num) {
- // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
- num.words[num.length] = 0;
- num.words[num.length + 1] = 0;
- num.length += 2;
- // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
- var lo = 0;
- for (var i = 0; i < num.length; i++) {
- var w = num.words[i] | 0;
- lo += w * 0x3d1;
- num.words[i] = lo & 0x3ffffff;
- lo = w * 0x40 + ((lo / 0x4000000) | 0);
- }
- // Fast length reduction
- if (num.words[num.length - 1] === 0) {
- num.length--;
- if (num.words[num.length - 1] === 0) {
- num.length--;
- }
- }
- return num;
- };
- function P224 () {
- MPrime.call(
- this,
- 'p224',
- 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
- }
- inherits(P224, MPrime);
- function P192 () {
- MPrime.call(
- this,
- 'p192',
- 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
- }
- inherits(P192, MPrime);
- function P25519 () {
- // 2 ^ 255 - 19
- MPrime.call(
- this,
- '25519',
- '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
- }
- inherits(P25519, MPrime);
- P25519.prototype.imulK = function imulK (num) {
- // K = 0x13
- var carry = 0;
- for (var i = 0; i < num.length; i++) {
- var hi = (num.words[i] | 0) * 0x13 + carry;
- var lo = hi & 0x3ffffff;
- hi >>>= 26;
- num.words[i] = lo;
- carry = hi;
- }
- if (carry !== 0) {
- num.words[num.length++] = carry;
- }
- return num;
- };
- // Exported mostly for testing purposes, use plain name instead
- BN._prime = function prime (name) {
- // Cached version of prime
- if (primes[name]) return primes[name];
- var prime;
- if (name === 'k256') {
- prime = new K256();
- } else if (name === 'p224') {
- prime = new P224();
- } else if (name === 'p192') {
- prime = new P192();
- } else if (name === 'p25519') {
- prime = new P25519();
- } else {
- throw new Error('Unknown prime ' + name);
- }
- primes[name] = prime;
- return prime;
- };
- //
- // Base reduction engine
- //
- function Red (m) {
- if (typeof m === 'string') {
- var prime = BN._prime(m);
- this.m = prime.p;
- this.prime = prime;
- } else {
- assert(m.gtn(1), 'modulus must be greater than 1');
- this.m = m;
- this.prime = null;
- }
- }
- Red.prototype._verify1 = function _verify1 (a) {
- assert(a.negative === 0, 'red works only with positives');
- assert(a.red, 'red works only with red numbers');
- };
- Red.prototype._verify2 = function _verify2 (a, b) {
- assert((a.negative | b.negative) === 0, 'red works only with positives');
- assert(a.red && a.red === b.red,
- 'red works only with red numbers');
- };
- Red.prototype.imod = function imod (a) {
- if (this.prime) return this.prime.ireduce(a)._forceRed(this);
- return a.umod(this.m)._forceRed(this);
- };
- Red.prototype.neg = function neg (a) {
- if (a.isZero()) {
- return a.clone();
- }
- return this.m.sub(a)._forceRed(this);
- };
- Red.prototype.add = function add (a, b) {
- this._verify2(a, b);
- var res = a.add(b);
- if (res.cmp(this.m) >= 0) {
- res.isub(this.m);
- }
- return res._forceRed(this);
- };
- Red.prototype.iadd = function iadd (a, b) {
- this._verify2(a, b);
- var res = a.iadd(b);
- if (res.cmp(this.m) >= 0) {
- res.isub(this.m);
- }
- return res;
- };
- Red.prototype.sub = function sub (a, b) {
- this._verify2(a, b);
- var res = a.sub(b);
- if (res.cmpn(0) < 0) {
- res.iadd(this.m);
- }
- return res._forceRed(this);
- };
- Red.prototype.isub = function isub (a, b) {
- this._verify2(a, b);
- var res = a.isub(b);
- if (res.cmpn(0) < 0) {
- res.iadd(this.m);
- }
- return res;
- };
- Red.prototype.shl = function shl (a, num) {
- this._verify1(a);
- return this.imod(a.ushln(num));
- };
- Red.prototype.imul = function imul (a, b) {
- this._verify2(a, b);
- return this.imod(a.imul(b));
- };
- Red.prototype.mul = function mul (a, b) {
- this._verify2(a, b);
- return this.imod(a.mul(b));
- };
- Red.prototype.isqr = function isqr (a) {
- return this.imul(a, a.clone());
- };
- Red.prototype.sqr = function sqr (a) {
- return this.mul(a, a);
- };
- Red.prototype.sqrt = function sqrt (a) {
- if (a.isZero()) return a.clone();
- var mod3 = this.m.andln(3);
- assert(mod3 % 2 === 1);
- // Fast case
- if (mod3 === 3) {
- var pow = this.m.add(new BN(1)).iushrn(2);
- return this.pow(a, pow);
- }
- // Tonelli-Shanks algorithm (Totally unoptimized and slow)
- //
- // Find Q and S, that Q * 2 ^ S = (P - 1)
- var q = this.m.subn(1);
- var s = 0;
- while (!q.isZero() && q.andln(1) === 0) {
- s++;
- q.iushrn(1);
- }
- assert(!q.isZero());
- var one = new BN(1).toRed(this);
- var nOne = one.redNeg();
- // Find quadratic non-residue
- // NOTE: Max is such because of generalized Riemann hypothesis.
- var lpow = this.m.subn(1).iushrn(1);
- var z = this.m.bitLength();
- z = new BN(2 * z * z).toRed(this);
- while (this.pow(z, lpow).cmp(nOne) !== 0) {
- z.redIAdd(nOne);
- }
- var c = this.pow(z, q);
- var r = this.pow(a, q.addn(1).iushrn(1));
- var t = this.pow(a, q);
- var m = s;
- while (t.cmp(one) !== 0) {
- var tmp = t;
- for (var i = 0; tmp.cmp(one) !== 0; i++) {
- tmp = tmp.redSqr();
- }
- assert(i < m);
- var b = this.pow(c, new BN(1).iushln(m - i - 1));
- r = r.redMul(b);
- c = b.redSqr();
- t = t.redMul(c);
- m = i;
- }
- return r;
- };
- Red.prototype.invm = function invm (a) {
- var inv = a._invmp(this.m);
- if (inv.negative !== 0) {
- inv.negative = 0;
- return this.imod(inv).redNeg();
- } else {
- return this.imod(inv);
- }
- };
- Red.prototype.pow = function pow (a, num) {
- if (num.isZero()) return new BN(1).toRed(this);
- if (num.cmpn(1) === 0) return a.clone();
- var windowSize = 4;
- var wnd = new Array(1 << windowSize);
- wnd[0] = new BN(1).toRed(this);
- wnd[1] = a;
- for (var i = 2; i < wnd.length; i++) {
- wnd[i] = this.mul(wnd[i - 1], a);
- }
- var res = wnd[0];
- var current = 0;
- var currentLen = 0;
- var start = num.bitLength() % 26;
- if (start === 0) {
- start = 26;
- }
- for (i = num.length - 1; i >= 0; i--) {
- var word = num.words[i];
- for (var j = start - 1; j >= 0; j--) {
- var bit = (word >> j) & 1;
- if (res !== wnd[0]) {
- res = this.sqr(res);
- }
- if (bit === 0 && current === 0) {
- currentLen = 0;
- continue;
- }
- current <<= 1;
- current |= bit;
- currentLen++;
- if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
- res = this.mul(res, wnd[current]);
- currentLen = 0;
- current = 0;
- }
- start = 26;
- }
- return res;
- };
- Red.prototype.convertTo = function convertTo (num) {
- var r = num.umod(this.m);
- return r === num ? r.clone() : r;
- };
- Red.prototype.convertFrom = function convertFrom (num) {
- var res = num.clone();
- res.red = null;
- return res;
- };
- //
- // Montgomery method engine
- //
- BN.mont = function mont (num) {
- return new Mont(num);
- };
- function Mont (m) {
- Red.call(this, m);
- this.shift = this.m.bitLength();
- if (this.shift % 26 !== 0) {
- this.shift += 26 - (this.shift % 26);
- }
- this.r = new BN(1).iushln(this.shift);
- this.r2 = this.imod(this.r.sqr());
- this.rinv = this.r._invmp(this.m);
- this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
- this.minv = this.minv.umod(this.r);
- this.minv = this.r.sub(this.minv);
- }
- inherits(Mont, Red);
- Mont.prototype.convertTo = function convertTo (num) {
- return this.imod(num.ushln(this.shift));
- };
- Mont.prototype.convertFrom = function convertFrom (num) {
- var r = this.imod(num.mul(this.rinv));
- r.red = null;
- return r;
- };
- Mont.prototype.imul = function imul (a, b) {
- if (a.isZero() || b.isZero()) {
- a.words[0] = 0;
- a.length = 1;
- return a;
- }
- var t = a.imul(b);
- var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
- var u = t.isub(c).iushrn(this.shift);
- var res = u;
- if (u.cmp(this.m) >= 0) {
- res = u.isub(this.m);
- } else if (u.cmpn(0) < 0) {
- res = u.iadd(this.m);
- }
- return res._forceRed(this);
- };
- Mont.prototype.mul = function mul (a, b) {
- if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
- var t = a.mul(b);
- var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
- var u = t.isub(c).iushrn(this.shift);
- var res = u;
- if (u.cmp(this.m) >= 0) {
- res = u.isub(this.m);
- } else if (u.cmpn(0) < 0) {
- res = u.iadd(this.m);
- }
- return res._forceRed(this);
- };
- Mont.prototype.invm = function invm (a) {
- // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
- var res = this.imod(a._invmp(this.m).mul(this.r2));
- return res._forceRed(this);
- };
- })(typeof module === 'undefined' || module, this);
- },{"buffer":27}],26:[function(require,module,exports){
- var r;
- module.exports = function rand(len) {
- if (!r)
- r = new Rand(null);
- return r.generate(len);
- };
- function Rand(rand) {
- this.rand = rand;
- }
- module.exports.Rand = Rand;
- Rand.prototype.generate = function generate(len) {
- return this._rand(len);
- };
- // Emulate crypto API using randy
- Rand.prototype._rand = function _rand(n) {
- if (this.rand.getBytes)
- return this.rand.getBytes(n);
- var res = new Uint8Array(n);
- for (var i = 0; i < res.length; i++)
- res[i] = this.rand.getByte();
- return res;
- };
- if (typeof self === 'object') {
- if (self.crypto && self.crypto.getRandomValues) {
- // Modern browsers
- Rand.prototype._rand = function _rand(n) {
- var arr = new Uint8Array(n);
- self.crypto.getRandomValues(arr);
- return arr;
- };
- } else if (self.msCrypto && self.msCrypto.getRandomValues) {
- // IE
- Rand.prototype._rand = function _rand(n) {
- var arr = new Uint8Array(n);
- self.msCrypto.getRandomValues(arr);
- return arr;
- };
- // Safari's WebWorkers do not have `crypto`
- } else if (typeof window === 'object') {
- // Old junk
- Rand.prototype._rand = function() {
- throw new Error('Not implemented yet');
- };
- }
- } else {
- // Node.js or Web worker with no crypto support
- try {
- var crypto = require('crypto');
- if (typeof crypto.randomBytes !== 'function')
- throw new Error('Not supported');
- Rand.prototype._rand = function _rand(n) {
- return crypto.randomBytes(n);
- };
- } catch (e) {
- }
- }
- },{"crypto":27}],27:[function(require,module,exports){
- arguments[4][9][0].apply(exports,arguments)
- },{"dup":9}],28:[function(require,module,exports){
- (function (Buffer){
- // based on the aes implimentation in triple sec
- // https://github.com/keybase/triplesec
- // which is in turn based on the one from crypto-js
- // https://code.google.com/p/crypto-js/
- var uint_max = Math.pow(2, 32)
- function fixup_uint32 (x) {
- var ret, x_pos
- ret = x > uint_max || x < 0 ? (x_pos = Math.abs(x) % uint_max, x < 0 ? uint_max - x_pos : x_pos) : x
- return ret
- }
- function scrub_vec (v) {
- for (var i = 0; i < v.length; v++) {
- v[i] = 0
- }
- return false
- }
- function Global () {
- this.SBOX = []
- this.INV_SBOX = []
- this.SUB_MIX = [[], [], [], []]
- this.INV_SUB_MIX = [[], [], [], []]
- this.init()
- this.RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]
- }
- Global.prototype.init = function () {
- var d, i, sx, t, x, x2, x4, x8, xi, _i
- d = (function () {
- var _i, _results
- _results = []
- for (i = _i = 0; _i < 256; i = ++_i) {
- if (i < 128) {
- _results.push(i << 1)
- } else {
- _results.push((i << 1) ^ 0x11b)
- }
- }
- return _results
- })()
- x = 0
- xi = 0
- for (i = _i = 0; _i < 256; i = ++_i) {
- sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)
- sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63
- this.SBOX[x] = sx
- this.INV_SBOX[sx] = x
- x2 = d[x]
- x4 = d[x2]
- x8 = d[x4]
- t = (d[sx] * 0x101) ^ (sx * 0x1010100)
- this.SUB_MIX[0][x] = (t << 24) | (t >>> 8)
- this.SUB_MIX[1][x] = (t << 16) | (t >>> 16)
- this.SUB_MIX[2][x] = (t << 8) | (t >>> 24)
- this.SUB_MIX[3][x] = t
- t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)
- this.INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)
- this.INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)
- this.INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)
- this.INV_SUB_MIX[3][sx] = t
- if (x === 0) {
- x = xi = 1
- } else {
- x = x2 ^ d[d[d[x8 ^ x2]]]
- xi ^= d[d[xi]]
- }
- }
- return true
- }
- var G = new Global()
- AES.blockSize = 4 * 4
- AES.prototype.blockSize = AES.blockSize
- AES.keySize = 256 / 8
- AES.prototype.keySize = AES.keySize
- function bufferToArray (buf) {
- var len = buf.length / 4
- var out = new Array(len)
- var i = -1
- while (++i < len) {
- out[i] = buf.readUInt32BE(i * 4)
- }
- return out
- }
- function AES (key) {
- this._key = bufferToArray(key)
- this._doReset()
- }
- AES.prototype._doReset = function () {
- var invKsRow, keySize, keyWords, ksRow, ksRows, t
- keyWords = this._key
- keySize = keyWords.length
- this._nRounds = keySize + 6
- ksRows = (this._nRounds + 1) * 4
- this._keySchedule = []
- for (ksRow = 0; ksRow < ksRows; ksRow++) {
- this._keySchedule[ksRow] = ksRow < keySize ? keyWords[ksRow] : (t = this._keySchedule[ksRow - 1], (ksRow % keySize) === 0 ? (t = (t << 8) | (t >>> 24), t = (G.SBOX[t >>> 24] << 24) | (G.SBOX[(t >>> 16) & 0xff] << 16) | (G.SBOX[(t >>> 8) & 0xff] << 8) | G.SBOX[t & 0xff], t ^= G.RCON[(ksRow / keySize) | 0] << 24) : keySize > 6 && ksRow % keySize === 4 ? t = (G.SBOX[t >>> 24] << 24) | (G.SBOX[(t >>> 16) & 0xff] << 16) | (G.SBOX[(t >>> 8) & 0xff] << 8) | G.SBOX[t & 0xff] : void 0, this._keySchedule[ksRow - keySize] ^ t)
- }
- this._invKeySchedule = []
- for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {
- ksRow = ksRows - invKsRow
- t = this._keySchedule[ksRow - (invKsRow % 4 ? 0 : 4)]
- this._invKeySchedule[invKsRow] = invKsRow < 4 || ksRow <= 4 ? t : G.INV_SUB_MIX[0][G.SBOX[t >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[(t >>> 16) & 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[(t >>> 8) & 0xff]] ^ G.INV_SUB_MIX[3][G.SBOX[t & 0xff]]
- }
- return true
- }
- AES.prototype.encryptBlock = function (M) {
- M = bufferToArray(new Buffer(M))
- var out = this._doCryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX)
- var buf = new Buffer(16)
- buf.writeUInt32BE(out[0], 0)
- buf.writeUInt32BE(out[1], 4)
- buf.writeUInt32BE(out[2], 8)
- buf.writeUInt32BE(out[3], 12)
- return buf
- }
- AES.prototype.decryptBlock = function (M) {
- M = bufferToArray(new Buffer(M))
- var temp = [M[3], M[1]]
- M[1] = temp[0]
- M[3] = temp[1]
- var out = this._doCryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX)
- var buf = new Buffer(16)
- buf.writeUInt32BE(out[0], 0)
- buf.writeUInt32BE(out[3], 4)
- buf.writeUInt32BE(out[2], 8)
- buf.writeUInt32BE(out[1], 12)
- return buf
- }
- AES.prototype.scrub = function () {
- scrub_vec(this._keySchedule)
- scrub_vec(this._invKeySchedule)
- scrub_vec(this._key)
- }
- AES.prototype._doCryptBlock = function (M, keySchedule, SUB_MIX, SBOX) {
- var ksRow, s0, s1, s2, s3, t0, t1, t2, t3
- s0 = M[0] ^ keySchedule[0]
- s1 = M[1] ^ keySchedule[1]
- s2 = M[2] ^ keySchedule[2]
- s3 = M[3] ^ keySchedule[3]
- ksRow = 4
- for (var round = 1; round < this._nRounds; round++) {
- t0 = SUB_MIX[0][s0 >>> 24] ^ SUB_MIX[1][(s1 >>> 16) & 0xff] ^ SUB_MIX[2][(s2 >>> 8) & 0xff] ^ SUB_MIX[3][s3 & 0xff] ^ keySchedule[ksRow++]
- t1 = SUB_MIX[0][s1 >>> 24] ^ SUB_MIX[1][(s2 >>> 16) & 0xff] ^ SUB_MIX[2][(s3 >>> 8) & 0xff] ^ SUB_MIX[3][s0 & 0xff] ^ keySchedule[ksRow++]
- t2 = SUB_MIX[0][s2 >>> 24] ^ SUB_MIX[1][(s3 >>> 16) & 0xff] ^ SUB_MIX[2][(s0 >>> 8) & 0xff] ^ SUB_MIX[3][s1 & 0xff] ^ keySchedule[ksRow++]
- t3 = SUB_MIX[0][s3 >>> 24] ^ SUB_MIX[1][(s0 >>> 16) & 0xff] ^ SUB_MIX[2][(s1 >>> 8) & 0xff] ^ SUB_MIX[3][s2 & 0xff] ^ keySchedule[ksRow++]
- s0 = t0
- s1 = t1
- s2 = t2
- s3 = t3
- }
- t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]
- t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]
- t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]
- t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]
- return [
- fixup_uint32(t0),
- fixup_uint32(t1),
- fixup_uint32(t2),
- fixup_uint32(t3)
- ]
- }
- exports.AES = AES
- }).call(this,require("buffer").Buffer)
- },{"buffer":54}],29:[function(require,module,exports){
- (function (Buffer){
- var aes = require('./aes')
- var Transform = require('cipher-base')
- var inherits = require('inherits')
- var GHASH = require('./ghash')
- var xor = require('buffer-xor')
- inherits(StreamCipher, Transform)
- module.exports = StreamCipher
- function StreamCipher (mode, key, iv, decrypt) {
- if (!(this instanceof StreamCipher)) {
- return new StreamCipher(mode, key, iv)
- }
- Transform.call(this)
- this._finID = Buffer.concat([iv, new Buffer([0, 0, 0, 1])])
- iv = Buffer.concat([iv, new Buffer([0, 0, 0, 2])])
- this._cipher = new aes.AES(key)
- this._prev = new Buffer(iv.length)
- this._cache = new Buffer('')
- this._secCache = new Buffer('')
- this._decrypt = decrypt
- this._alen = 0
- this._len = 0
- iv.copy(this._prev)
- this._mode = mode
- var h = new Buffer(4)
- h.fill(0)
- this._ghash = new GHASH(this._cipher.encryptBlock(h))
- this._authTag = null
- this._called = false
- }
- StreamCipher.prototype._update = function (chunk) {
- if (!this._called && this._alen) {
- var rump = 16 - (this._alen % 16)
- if (rump < 16) {
- rump = new Buffer(rump)
- rump.fill(0)
- this._ghash.update(rump)
- }
- }
- this._called = true
- var out = this._mode.encrypt(this, chunk)
- if (this._decrypt) {
- this._ghash.update(chunk)
- } else {
- this._ghash.update(out)
- }
- this._len += chunk.length
- return out
- }
- StreamCipher.prototype._final = function () {
- if (this._decrypt && !this._authTag) {
- throw new Error('Unsupported state or unable to authenticate data')
- }
- var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))
- if (this._decrypt) {
- if (xorTest(tag, this._authTag)) {
- throw new Error('Unsupported state or unable to authenticate data')
- }
- } else {
- this._authTag = tag
- }
- this._cipher.scrub()
- }
- StreamCipher.prototype.getAuthTag = function getAuthTag () {
- if (!this._decrypt && Buffer.isBuffer(this._authTag)) {
- return this._authTag
- } else {
- throw new Error('Attempting to get auth tag in unsupported state')
- }
- }
- StreamCipher.prototype.setAuthTag = function setAuthTag (tag) {
- if (this._decrypt) {
- this._authTag = tag
- } else {
- throw new Error('Attempting to set auth tag in unsupported state')
- }
- }
- StreamCipher.prototype.setAAD = function setAAD (buf) {
- if (!this._called) {
- this._ghash.update(buf)
- this._alen += buf.length
- } else {
- throw new Error('Attempting to set AAD in unsupported state')
- }
- }
- function xorTest (a, b) {
- var out = 0
- if (a.length !== b.length) {
- out++
- }
- var len = Math.min(a.length, b.length)
- var i = -1
- while (++i < len) {
- out += (a[i] ^ b[i])
- }
- return out
- }
- }).call(this,require("buffer").Buffer)
- },{"./aes":28,"./ghash":33,"buffer":54,"buffer-xor":53,"cipher-base":55,"inherits":108}],30:[function(require,module,exports){
- var ciphers = require('./encrypter')
- exports.createCipher = exports.Cipher = ciphers.createCipher
- exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv
- var deciphers = require('./decrypter')
- exports.createDecipher = exports.Decipher = deciphers.createDecipher
- exports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv
- var modes = require('./modes')
- function getCiphers () {
- return Object.keys(modes)
- }
- exports.listCiphers = exports.getCiphers = getCiphers
- },{"./decrypter":31,"./encrypter":32,"./modes":34}],31:[function(require,module,exports){
- (function (Buffer){
- var aes = require('./aes')
- var Transform = require('cipher-base')
- var inherits = require('inherits')
- var modes = require('./modes')
- var StreamCipher = require('./streamCipher')
- var AuthCipher = require('./authCipher')
- var ebtk = require('evp_bytestokey')
- inherits(Decipher, Transform)
- function Decipher (mode, key, iv) {
- if (!(this instanceof Decipher)) {
- return new Decipher(mode, key, iv)
- }
- Transform.call(this)
- this._cache = new Splitter()
- this._last = void 0
- this._cipher = new aes.AES(key)
- this._prev = new Buffer(iv.length)
- iv.copy(this._prev)
- this._mode = mode
- this._autopadding = true
- }
- Decipher.prototype._update = function (data) {
- this._cache.add(data)
- var chunk
- var thing
- var out = []
- while ((chunk = this._cache.get(this._autopadding))) {
- thing = this._mode.decrypt(this, chunk)
- out.push(thing)
- }
- return Buffer.concat(out)
- }
- Decipher.prototype._final = function () {
- var chunk = this._cache.flush()
- if (this._autopadding) {
- return unpad(this._mode.decrypt(this, chunk))
- } else if (chunk) {
- throw new Error('data not multiple of block length')
- }
- }
- Decipher.prototype.setAutoPadding = function (setTo) {
- this._autopadding = !!setTo
- return this
- }
- function Splitter () {
- if (!(this instanceof Splitter)) {
- return new Splitter()
- }
- this.cache = new Buffer('')
- }
- Splitter.prototype.add = function (data) {
- this.cache = Buffer.concat([this.cache, data])
- }
- Splitter.prototype.get = function (autoPadding) {
- var out
- if (autoPadding) {
- if (this.cache.length > 16) {
- out = this.cache.slice(0, 16)
- this.cache = this.cache.slice(16)
- return out
- }
- } else {
- if (this.cache.length >= 16) {
- out = this.cache.slice(0, 16)
- this.cache = this.cache.slice(16)
- return out
- }
- }
- return null
- }
- Splitter.prototype.flush = function () {
- if (this.cache.length) {
- return this.cache
- }
- }
- function unpad (last) {
- var padded = last[15]
- var i = -1
- while (++i < padded) {
- if (last[(i + (16 - padded))] !== padded) {
- throw new Error('unable to decrypt data')
- }
- }
- if (padded === 16) {
- return
- }
- return last.slice(0, 16 - padded)
- }
- var modelist = {
- ECB: require('./modes/ecb'),
- CBC: require('./modes/cbc'),
- CFB: require('./modes/cfb'),
- CFB8: require('./modes/cfb8'),
- CFB1: require('./modes/cfb1'),
- OFB: require('./modes/ofb'),
- CTR: require('./modes/ctr'),
- GCM: require('./modes/ctr')
- }
- function createDecipheriv (suite, password, iv) {
- var config = modes[suite.toLowerCase()]
- if (!config) {
- throw new TypeError('invalid suite type')
- }
- if (typeof iv === 'string') {
- iv = new Buffer(iv)
- }
- if (typeof password === 'string') {
- password = new Buffer(password)
- }
- if (password.length !== config.key / 8) {
- throw new TypeError('invalid key length ' + password.length)
- }
- if (iv.length !== config.iv) {
- throw new TypeError('invalid iv length ' + iv.length)
- }
- if (config.type === 'stream') {
- return new StreamCipher(modelist[config.mode], password, iv, true)
- } else if (config.type === 'auth') {
- return new AuthCipher(modelist[config.mode], password, iv, true)
- }
- return new Decipher(modelist[config.mode], password, iv)
- }
- function createDecipher (suite, password) {
- var config = modes[suite.toLowerCase()]
- if (!config) {
- throw new TypeError('invalid suite type')
- }
- var keys = ebtk(password, false, config.key, config.iv)
- return createDecipheriv(suite, keys.key, keys.iv)
- }
- exports.createDecipher = createDecipher
- exports.createDecipheriv = createDecipheriv
- }).call(this,require("buffer").Buffer)
- },{"./aes":28,"./authCipher":29,"./modes":34,"./modes/cbc":35,"./modes/cfb":36,"./modes/cfb1":37,"./modes/cfb8":38,"./modes/ctr":39,"./modes/ecb":40,"./modes/ofb":41,"./streamCipher":42,"buffer":54,"cipher-base":55,"evp_bytestokey":91,"inherits":108}],32:[function(require,module,exports){
- (function (Buffer){
- var aes = require('./aes')
- var Transform = require('cipher-base')
- var inherits = require('inherits')
- var modes = require('./modes')
- var ebtk = require('evp_bytestokey')
- var StreamCipher = require('./streamCipher')
- var AuthCipher = require('./authCipher')
- inherits(Cipher, Transform)
- function Cipher (mode, key, iv) {
- if (!(this instanceof Cipher)) {
- return new Cipher(mode, key, iv)
- }
- Transform.call(this)
- this._cache = new Splitter()
- this._cipher = new aes.AES(key)
- this._prev = new Buffer(iv.length)
- iv.copy(this._prev)
- this._mode = mode
- this._autopadding = true
- }
- Cipher.prototype._update = function (data) {
- this._cache.add(data)
- var chunk
- var thing
- var out = []
- while ((chunk = this._cache.get())) {
- thing = this._mode.encrypt(this, chunk)
- out.push(thing)
- }
- return Buffer.concat(out)
- }
- Cipher.prototype._final = function () {
- var chunk = this._cache.flush()
- if (this._autopadding) {
- chunk = this._mode.encrypt(this, chunk)
- this._cipher.scrub()
- return chunk
- } else if (chunk.toString('hex') !== '10101010101010101010101010101010') {
- this._cipher.scrub()
- throw new Error('data not multiple of block length')
- }
- }
- Cipher.prototype.setAutoPadding = function (setTo) {
- this._autopadding = !!setTo
- return this
- }
- function Splitter () {
- if (!(this instanceof Splitter)) {
- return new Splitter()
- }
- this.cache = new Buffer('')
- }
- Splitter.prototype.add = function (data) {
- this.cache = Buffer.concat([this.cache, data])
- }
- Splitter.prototype.get = function () {
- if (this.cache.length > 15) {
- var out = this.cache.slice(0, 16)
- this.cache = this.cache.slice(16)
- return out
- }
- return null
- }
- Splitter.prototype.flush = function () {
- var len = 16 - this.cache.length
- var padBuff = new Buffer(len)
- var i = -1
- while (++i < len) {
- padBuff.writeUInt8(len, i)
- }
- var out = Buffer.concat([this.cache, padBuff])
- return out
- }
- var modelist = {
- ECB: require('./modes/ecb'),
- CBC: require('./modes/cbc'),
- CFB: require('./modes/cfb'),
- CFB8: require('./modes/cfb8'),
- CFB1: require('./modes/cfb1'),
- OFB: require('./modes/ofb'),
- CTR: require('./modes/ctr'),
- GCM: require('./modes/ctr')
- }
- function createCipheriv (suite, password, iv) {
- var config = modes[suite.toLowerCase()]
- if (!config) {
- throw new TypeError('invalid suite type')
- }
- if (typeof iv === 'string') {
- iv = new Buffer(iv)
- }
- if (typeof password === 'string') {
- password = new Buffer(password)
- }
- if (password.length !== config.key / 8) {
- throw new TypeError('invalid key length ' + password.length)
- }
- if (iv.length !== config.iv) {
- throw new TypeError('invalid iv length ' + iv.length)
- }
- if (config.type === 'stream') {
- return new StreamCipher(modelist[config.mode], password, iv)
- } else if (config.type === 'auth') {
- return new AuthCipher(modelist[config.mode], password, iv)
- }
- return new Cipher(modelist[config.mode], password, iv)
- }
- function createCipher (suite, password) {
- var config = modes[suite.toLowerCase()]
- if (!config) {
- throw new TypeError('invalid suite type')
- }
- var keys = ebtk(password, false, config.key, config.iv)
- return createCipheriv(suite, keys.key, keys.iv)
- }
- exports.createCipheriv = createCipheriv
- exports.createCipher = createCipher
- }).call(this,require("buffer").Buffer)
- },{"./aes":28,"./authCipher":29,"./modes":34,"./modes/cbc":35,"./modes/cfb":36,"./modes/cfb1":37,"./modes/cfb8":38,"./modes/ctr":39,"./modes/ecb":40,"./modes/ofb":41,"./streamCipher":42,"buffer":54,"cipher-base":55,"evp_bytestokey":91,"inherits":108}],33:[function(require,module,exports){
- (function (Buffer){
- var zeros = new Buffer(16)
- zeros.fill(0)
- module.exports = GHASH
- function GHASH (key) {
- this.h = key
- this.state = new Buffer(16)
- this.state.fill(0)
- this.cache = new Buffer('')
- }
- // from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html
- // by Juho Vähä-Herttua
- GHASH.prototype.ghash = function (block) {
- var i = -1
- while (++i < block.length) {
- this.state[i] ^= block[i]
- }
- this._multiply()
- }
- GHASH.prototype._multiply = function () {
- var Vi = toArray(this.h)
- var Zi = [0, 0, 0, 0]
- var j, xi, lsb_Vi
- var i = -1
- while (++i < 128) {
- xi = (this.state[~~(i / 8)] & (1 << (7 - i % 8))) !== 0
- if (xi) {
- // Z_i+1 = Z_i ^ V_i
- Zi = xor(Zi, Vi)
- }
- // Store the value of LSB(V_i)
- lsb_Vi = (Vi[3] & 1) !== 0
- // V_i+1 = V_i >> 1
- for (j = 3; j > 0; j--) {
- Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)
- }
- Vi[0] = Vi[0] >>> 1
- // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R
- if (lsb_Vi) {
- Vi[0] = Vi[0] ^ (0xe1 << 24)
- }
- }
- this.state = fromArray(Zi)
- }
- GHASH.prototype.update = function (buf) {
- this.cache = Buffer.concat([this.cache, buf])
- var chunk
- while (this.cache.length >= 16) {
- chunk = this.cache.slice(0, 16)
- this.cache = this.cache.slice(16)
- this.ghash(chunk)
- }
- }
- GHASH.prototype.final = function (abl, bl) {
- if (this.cache.length) {
- this.ghash(Buffer.concat([this.cache, zeros], 16))
- }
- this.ghash(fromArray([
- 0, abl,
- 0, bl
- ]))
- return this.state
- }
- function toArray (buf) {
- return [
- buf.readUInt32BE(0),
- buf.readUInt32BE(4),
- buf.readUInt32BE(8),
- buf.readUInt32BE(12)
- ]
- }
- function fromArray (out) {
- out = out.map(fixup_uint32)
- var buf = new Buffer(16)
- buf.writeUInt32BE(out[0], 0)
- buf.writeUInt32BE(out[1], 4)
- buf.writeUInt32BE(out[2], 8)
- buf.writeUInt32BE(out[3], 12)
- return buf
- }
- var uint_max = Math.pow(2, 32)
- function fixup_uint32 (x) {
- var ret, x_pos
- ret = x > uint_max || x < 0 ? (x_pos = Math.abs(x) % uint_max, x < 0 ? uint_max - x_pos : x_pos) : x
- return ret
- }
- function xor (a, b) {
- return [
- a[0] ^ b[0],
- a[1] ^ b[1],
- a[2] ^ b[2],
- a[3] ^ b[3]
- ]
- }
- }).call(this,require("buffer").Buffer)
- },{"buffer":54}],34:[function(require,module,exports){
- exports['aes-128-ecb'] = {
- cipher: 'AES',
- key: 128,
- iv: 0,
- mode: 'ECB',
- type: 'block'
- }
- exports['aes-192-ecb'] = {
- cipher: 'AES',
- key: 192,
- iv: 0,
- mode: 'ECB',
- type: 'block'
- }
- exports['aes-256-ecb'] = {
- cipher: 'AES',
- key: 256,
- iv: 0,
- mode: 'ECB',
- type: 'block'
- }
- exports['aes-128-cbc'] = {
- cipher: 'AES',
- key: 128,
- iv: 16,
- mode: 'CBC',
- type: 'block'
- }
- exports['aes-192-cbc'] = {
- cipher: 'AES',
- key: 192,
- iv: 16,
- mode: 'CBC',
- type: 'block'
- }
- exports['aes-256-cbc'] = {
- cipher: 'AES',
- key: 256,
- iv: 16,
- mode: 'CBC',
- type: 'block'
- }
- exports['aes128'] = exports['aes-128-cbc']
- exports['aes192'] = exports['aes-192-cbc']
- exports['aes256'] = exports['aes-256-cbc']
- exports['aes-128-cfb'] = {
- cipher: 'AES',
- key: 128,
- iv: 16,
- mode: 'CFB',
- type: 'stream'
- }
- exports['aes-192-cfb'] = {
- cipher: 'AES',
- key: 192,
- iv: 16,
- mode: 'CFB',
- type: 'stream'
- }
- exports['aes-256-cfb'] = {
- cipher: 'AES',
- key: 256,
- iv: 16,
- mode: 'CFB',
- type: 'stream'
- }
- exports['aes-128-cfb8'] = {
- cipher: 'AES',
- key: 128,
- iv: 16,
- mode: 'CFB8',
- type: 'stream'
- }
- exports['aes-192-cfb8'] = {
- cipher: 'AES',
- key: 192,
- iv: 16,
- mode: 'CFB8',
- type: 'stream'
- }
- exports['aes-256-cfb8'] = {
- cipher: 'AES',
- key: 256,
- iv: 16,
- mode: 'CFB8',
- type: 'stream'
- }
- exports['aes-128-cfb1'] = {
- cipher: 'AES',
- key: 128,
- iv: 16,
- mode: 'CFB1',
- type: 'stream'
- }
- exports['aes-192-cfb1'] = {
- cipher: 'AES',
- key: 192,
- iv: 16,
- mode: 'CFB1',
- type: 'stream'
- }
- exports['aes-256-cfb1'] = {
- cipher: 'AES',
- key: 256,
- iv: 16,
- mode: 'CFB1',
- type: 'stream'
- }
- exports['aes-128-ofb'] = {
- cipher: 'AES',
- key: 128,
- iv: 16,
- mode: 'OFB',
- type: 'stream'
- }
- exports['aes-192-ofb'] = {
- cipher: 'AES',
- key: 192,
- iv: 16,
- mode: 'OFB',
- type: 'stream'
- }
- exports['aes-256-ofb'] = {
- cipher: 'AES',
- key: 256,
- iv: 16,
- mode: 'OFB',
- type: 'stream'
- }
- exports['aes-128-ctr'] = {
- cipher: 'AES',
- key: 128,
- iv: 16,
- mode: 'CTR',
- type: 'stream'
- }
- exports['aes-192-ctr'] = {
- cipher: 'AES',
- key: 192,
- iv: 16,
- mode: 'CTR',
- type: 'stream'
- }
- exports['aes-256-ctr'] = {
- cipher: 'AES',
- key: 256,
- iv: 16,
- mode: 'CTR',
- type: 'stream'
- }
- exports['aes-128-gcm'] = {
- cipher: 'AES',
- key: 128,
- iv: 12,
- mode: 'GCM',
- type: 'auth'
- }
- exports['aes-192-gcm'] = {
- cipher: 'AES',
- key: 192,
- iv: 12,
- mode: 'GCM',
- type: 'auth'
- }
- exports['aes-256-gcm'] = {
- cipher: 'AES',
- key: 256,
- iv: 12,
- mode: 'GCM',
- type: 'auth'
- }
- },{}],35:[function(require,module,exports){
- var xor = require('buffer-xor')
- exports.encrypt = function (self, block) {
- var data = xor(block, self._prev)
- self._prev = self._cipher.encryptBlock(data)
- return self._prev
- }
- exports.decrypt = function (self, block) {
- var pad = self._prev
- self._prev = block
- var out = self._cipher.decryptBlock(block)
- return xor(out, pad)
- }
- },{"buffer-xor":53}],36:[function(require,module,exports){
- (function (Buffer){
- var xor = require('buffer-xor')
- exports.encrypt = function (self, data, decrypt) {
- var out = new Buffer('')
- var len
- while (data.length) {
- if (self._cache.length === 0) {
- self._cache = self._cipher.encryptBlock(self._prev)
- self._prev = new Buffer('')
- }
- if (self._cache.length <= data.length) {
- len = self._cache.length
- out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])
- data = data.slice(len)
- } else {
- out = Buffer.concat([out, encryptStart(self, data, decrypt)])
- break
- }
- }
- return out
- }
- function encryptStart (self, data, decrypt) {
- var len = data.length
- var out = xor(data, self._cache)
- self._cache = self._cache.slice(len)
- self._prev = Buffer.concat([self._prev, decrypt ? data : out])
- return out
- }
- }).call(this,require("buffer").Buffer)
- },{"buffer":54,"buffer-xor":53}],37:[function(require,module,exports){
- (function (Buffer){
- function encryptByte (self, byteParam, decrypt) {
- var pad
- var i = -1
- var len = 8
- var out = 0
- var bit, value
- while (++i < len) {
- pad = self._cipher.encryptBlock(self._prev)
- bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0
- value = pad[0] ^ bit
- out += ((value & 0x80) >> (i % 8))
- self._prev = shiftIn(self._prev, decrypt ? bit : value)
- }
- return out
- }
- exports.encrypt = function (self, chunk, decrypt) {
- var len = chunk.length
- var out = new Buffer(len)
- var i = -1
- while (++i < len) {
- out[i] = encryptByte(self, chunk[i], decrypt)
- }
- return out
- }
- function shiftIn (buffer, value) {
- var len = buffer.length
- var i = -1
- var out = new Buffer(buffer.length)
- buffer = Buffer.concat([buffer, new Buffer([value])])
- while (++i < len) {
- out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)
- }
- return out
- }
- }).call(this,require("buffer").Buffer)
- },{"buffer":54}],38:[function(require,module,exports){
- (function (Buffer){
- function encryptByte (self, byteParam, decrypt) {
- var pad = self._cipher.encryptBlock(self._prev)
- var out = pad[0] ^ byteParam
- self._prev = Buffer.concat([self._prev.slice(1), new Buffer([decrypt ? byteParam : out])])
- return out
- }
- exports.encrypt = function (self, chunk, decrypt) {
- var len = chunk.length
- var out = new Buffer(len)
- var i = -1
- while (++i < len) {
- out[i] = encryptByte(self, chunk[i], decrypt)
- }
- return out
- }
- }).call(this,require("buffer").Buffer)
- },{"buffer":54}],39:[function(require,module,exports){
- (function (Buffer){
- var xor = require('buffer-xor')
- function incr32 (iv) {
- var len = iv.length
- var item
- while (len--) {
- item = iv.readUInt8(len)
- if (item === 255) {
- iv.writeUInt8(0, len)
- } else {
- item++
- iv.writeUInt8(item, len)
- break
- }
- }
- }
- function getBlock (self) {
- var out = self._cipher.encryptBlock(self._prev)
- incr32(self._prev)
- return out
- }
- exports.encrypt = function (self, chunk) {
- while (self._cache.length < chunk.length) {
- self._cache = Buffer.concat([self._cache, getBlock(self)])
- }
- var pad = self._cache.slice(0, chunk.length)
- self._cache = self._cache.slice(chunk.length)
- return xor(chunk, pad)
- }
- }).call(this,require("buffer").Buffer)
- },{"buffer":54,"buffer-xor":53}],40:[function(require,module,exports){
- exports.encrypt = function (self, block) {
- return self._cipher.encryptBlock(block)
- }
- exports.decrypt = function (self, block) {
- return self._cipher.decryptBlock(block)
- }
- },{}],41:[function(require,module,exports){
- (function (Buffer){
- var xor = require('buffer-xor')
- function getBlock (self) {
- self._prev = self._cipher.encryptBlock(self._prev)
- return self._prev
- }
- exports.encrypt = function (self, chunk) {
- while (self._cache.length < chunk.length) {
- self._cache = Buffer.concat([self._cache, getBlock(self)])
- }
- var pad = self._cache.slice(0, chunk.length)
- self._cache = self._cache.slice(chunk.length)
- return xor(chunk, pad)
- }
- }).call(this,require("buffer").Buffer)
- },{"buffer":54,"buffer-xor":53}],42:[function(require,module,exports){
- (function (Buffer){
- var aes = require('./aes')
- var Transform = require('cipher-base')
- var inherits = require('inherits')
- inherits(StreamCipher, Transform)
- module.exports = StreamCipher
- function StreamCipher (mode, key, iv, decrypt) {
- if (!(this instanceof StreamCipher)) {
- return new StreamCipher(mode, key, iv)
- }
- Transform.call(this)
- this._cipher = new aes.AES(key)
- this._prev = new Buffer(iv.length)
- this._cache = new Buffer('')
- this._secCache = new Buffer('')
- this._decrypt = decrypt
- iv.copy(this._prev)
- this._mode = mode
- }
- StreamCipher.prototype._update = function (chunk) {
- return this._mode.encrypt(this, chunk, this._decrypt)
- }
- StreamCipher.prototype._final = function () {
- this._cipher.scrub()
- }
- }).call(this,require("buffer").Buffer)
- },{"./aes":28,"buffer":54,"cipher-base":55,"inherits":108}],43:[function(require,module,exports){
- var ebtk = require('evp_bytestokey')
- var aes = require('browserify-aes/browser')
- var DES = require('browserify-des')
- var desModes = require('browserify-des/modes')
- var aesModes = require('browserify-aes/modes')
- function createCipher (suite, password) {
- var keyLen, ivLen
- suite = suite.toLowerCase()
- if (aesModes[suite]) {
- keyLen = aesModes[suite].key
- ivLen = aesModes[suite].iv
- } else if (desModes[suite]) {
- keyLen = desModes[suite].key * 8
- ivLen = desModes[suite].iv
- } else {
- throw new TypeError('invalid suite type')
- }
- var keys = ebtk(password, false, keyLen, ivLen)
- return createCipheriv(suite, keys.key, keys.iv)
- }
- function createDecipher (suite, password) {
- var keyLen, ivLen
- suite = suite.toLowerCase()
- if (aesModes[suite]) {
- keyLen = aesModes[suite].key
- ivLen = aesModes[suite].iv
- } else if (desModes[suite]) {
- keyLen = desModes[suite].key * 8
- ivLen = desModes[suite].iv
- } else {
- throw new TypeError('invalid suite type')
- }
- var keys = ebtk(password, false, keyLen, ivLen)
- return createDecipheriv(suite, keys.key, keys.iv)
- }
- function createCipheriv (suite, key, iv) {
- suite = suite.toLowerCase()
- if (aesModes[suite]) {
- return aes.createCipheriv(suite, key, iv)
- } else if (desModes[suite]) {
- return new DES({
- key: key,
- iv: iv,
- mode: suite
- })
- } else {
- throw new TypeError('invalid suite type')
- }
- }
- function createDecipheriv (suite, key, iv) {
- suite = suite.toLowerCase()
- if (aesModes[suite]) {
- return aes.createDecipheriv(suite, key, iv)
- } else if (desModes[suite]) {
- return new DES({
- key: key,
- iv: iv,
- mode: suite,
- decrypt: true
- })
- } else {
- throw new TypeError('invalid suite type')
- }
- }
- exports.createCipher = exports.Cipher = createCipher
- exports.createCipheriv = exports.Cipheriv = createCipheriv
- exports.createDecipher = exports.Decipher = createDecipher
- exports.createDecipheriv = exports.Decipheriv = createDecipheriv
- function getCiphers () {
- return Object.keys(desModes).concat(aes.getCiphers())
- }
- exports.listCiphers = exports.getCiphers = getCiphers
- },{"browserify-aes/browser":30,"browserify-aes/modes":34,"browserify-des":44,"browserify-des/modes":45,"evp_bytestokey":91}],44:[function(require,module,exports){
- (function (Buffer){
- var CipherBase = require('cipher-base')
- var des = require('des.js')
- var inherits = require('inherits')
- var modes = {
- 'des-ede3-cbc': des.CBC.instantiate(des.EDE),
- 'des-ede3': des.EDE,
- 'des-ede-cbc': des.CBC.instantiate(des.EDE),
- 'des-ede': des.EDE,
- 'des-cbc': des.CBC.instantiate(des.DES),
- 'des-ecb': des.DES
- }
- modes.des = modes['des-cbc']
- modes.des3 = modes['des-ede3-cbc']
- module.exports = DES
- inherits(DES, CipherBase)
- function DES (opts) {
- CipherBase.call(this)
- var modeName = opts.mode.toLowerCase()
- var mode = modes[modeName]
- var type
- if (opts.decrypt) {
- type = 'decrypt'
- } else {
- type = 'encrypt'
- }
- var key = opts.key
- if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {
- key = Buffer.concat([key, key.slice(0, 8)])
- }
- var iv = opts.iv
- this._des = mode.create({
- key: key,
- iv: iv,
- type: type
- })
- }
- DES.prototype._update = function (data) {
- return new Buffer(this._des.update(data))
- }
- DES.prototype._final = function () {
- return new Buffer(this._des.final())
- }
- }).call(this,require("buffer").Buffer)
- },{"buffer":54,"cipher-base":55,"des.js":64,"inherits":108}],45:[function(require,module,exports){
- exports['des-ecb'] = {
- key: 8,
- iv: 0
- }
- exports['des-cbc'] = exports.des = {
- key: 8,
- iv: 8
- }
- exports['des-ede3-cbc'] = exports.des3 = {
- key: 24,
- iv: 8
- }
- exports['des-ede3'] = {
- key: 24,
- iv: 0
- }
- exports['des-ede-cbc'] = {
- key: 16,
- iv: 8
- }
- exports['des-ede'] = {
- key: 16,
- iv: 0
- }
- },{}],46:[function(require,module,exports){
- (function (Buffer){
- var bn = require('bn.js');
- var randomBytes = require('randombytes');
- module.exports = crt;
- function blind(priv) {
- var r = getr(priv);
- var blinder = r.toRed(bn.mont(priv.modulus))
- .redPow(new bn(priv.publicExponent)).fromRed();
- return {
- blinder: blinder,
- unblinder:r.invm(priv.modulus)
- };
- }
- function crt(msg, priv) {
- var blinds = blind(priv);
- var len = priv.modulus.byteLength();
- var mod = bn.mont(priv.modulus);
- var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus);
- var c1 = blinded.toRed(bn.mont(priv.prime1));
- var c2 = blinded.toRed(bn.mont(priv.prime2));
- var qinv = priv.coefficient;
- var p = priv.prime1;
- var q = priv.prime2;
- var m1 = c1.redPow(priv.exponent1);
- var m2 = c2.redPow(priv.exponent2);
- m1 = m1.fromRed();
- m2 = m2.fromRed();
- var h = m1.isub(m2).imul(qinv).umod(p);
- h.imul(q);
- m2.iadd(h);
- return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len));
- }
- crt.getr = getr;
- function getr(priv) {
- var len = priv.modulus.byteLength();
- var r = new bn(randomBytes(len));
- while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) {
- r = new bn(randomBytes(len));
- }
- return r;
- }
- }).call(this,require("buffer").Buffer)
- },{"bn.js":25,"buffer":54,"randombytes":133}],47:[function(require,module,exports){
- module.exports = require('./browser/algorithms.json')
- },{"./browser/algorithms.json":48}],48:[function(require,module,exports){
- module.exports={
- "sha224WithRSAEncryption": {
- "sign": "rsa",
- "hash": "sha224",
- "id": "302d300d06096086480165030402040500041c"
- },
- "RSA-SHA224": {
- "sign": "ecdsa/rsa",
- "hash": "sha224",
- "id": "302d300d06096086480165030402040500041c"
- },
- "sha256WithRSAEncryption": {
- "sign": "rsa",
- "hash": "sha256",
- "id": "3031300d060960864801650304020105000420"
- },
- "RSA-SHA256": {
- "sign": "ecdsa/rsa",
- "hash": "sha256",
- "id": "3031300d060960864801650304020105000420"
- },
- "sha384WithRSAEncryption": {
- "sign": "rsa",
- "hash": "sha384",
- "id": "3041300d060960864801650304020205000430"
- },
- "RSA-SHA384": {
- "sign": "ecdsa/rsa",
- "hash": "sha384",
- "id": "3041300d060960864801650304020205000430"
- },
- "sha512WithRSAEncryption": {
- "sign": "rsa",
- "hash": "sha512",
- "id": "3051300d060960864801650304020305000440"
- },
- "RSA-SHA512": {
- "sign": "ecdsa/rsa",
- "hash": "sha512",
- "id": "3051300d060960864801650304020305000440"
- },
- "RSA-SHA1": {
- "sign": "rsa",
- "hash": "sha1",
- "id": "3021300906052b0e03021a05000414"
- },
- "ecdsa-with-SHA1": {
- "sign": "ecdsa",
- "hash": "sha1",
- "id": ""
- },
- "sha256": {
- "sign": "ecdsa",
- "hash": "sha256",
- "id": ""
- },
- "sha224": {
- "sign": "ecdsa",
- "hash": "sha224",
- "id": ""
- },
- "sha384": {
- "sign": "ecdsa",
- "hash": "sha384",
- "id": ""
- },
- "sha512": {
- "sign": "ecdsa",
- "hash": "sha512",
- "id": ""
- },
- "DSA-SHA": {
- "sign": "dsa",
- "hash": "sha1",
- "id": ""
- },
- "DSA-SHA1": {
- "sign": "dsa",
- "hash": "sha1",
- "id": ""
- },
- "DSA": {
- "sign": "dsa",
- "hash": "sha1",
- "id": ""
- },
- "DSA-WITH-SHA224": {
- "sign": "dsa",
- "hash": "sha224",
- "id": ""
- },
- "DSA-SHA224": {
- "sign": "dsa",
- "hash": "sha224",
- "id": ""
- },
- "DSA-WITH-SHA256": {
- "sign": "dsa",
- "hash": "sha256",
- "id": ""
- },
- "DSA-SHA256": {
- "sign": "dsa",
- "hash": "sha256",
- "id": ""
- },
- "DSA-WITH-SHA384": {
- "sign": "dsa",
- "hash": "sha384",
- "id": ""
- },
- "DSA-SHA384": {
- "sign": "dsa",
- "hash": "sha384",
- "id": ""
- },
- "DSA-WITH-SHA512": {
- "sign": "dsa",
- "hash": "sha512",
- "id": ""
- },
- "DSA-SHA512": {
- "sign": "dsa",
- "hash": "sha512",
- "id": ""
- },
- "DSA-RIPEMD160": {
- "sign": "dsa",
- "hash": "rmd160",
- "id": ""
- },
- "ripemd160WithRSA": {
- "sign": "rsa",
- "hash": "rmd160",
- "id": "3021300906052b2403020105000414"
- },
- "RSA-RIPEMD160": {
- "sign": "rsa",
- "hash": "rmd160",
- "id": "3021300906052b2403020105000414"
- },
- "md5WithRSAEncryption": {
- "sign": "rsa",
- "hash": "md5",
- "id": "3020300c06082a864886f70d020505000410"
- },
- "RSA-MD5": {
- "sign": "rsa",
- "hash": "md5",
- "id": "3020300c06082a864886f70d020505000410"
- }
- }
- },{}],49:[function(require,module,exports){
- module.exports={
- "1.3.132.0.10": "secp256k1",
- "1.3.132.0.33": "p224",
- "1.2.840.10045.3.1.1": "p192",
- "1.2.840.10045.3.1.7": "p256",
- "1.3.132.0.34": "p384",
- "1.3.132.0.35": "p521"
- }
- },{}],50:[function(require,module,exports){
- (function (Buffer){
- var createHash = require('create-hash')
- var stream = require('stream')
- var inherits = require('inherits')
- var sign = require('./sign')
- var verify = require('./verify')
- var algorithms = require('./algorithms.json')
- Object.keys(algorithms).forEach(function (key) {
- algorithms[key].id = new Buffer(algorithms[key].id, 'hex')
- algorithms[key.toLowerCase()] = algorithms[key]
- })
- function Sign (algorithm) {
- stream.Writable.call(this)
- var data = algorithms[algorithm]
- if (!data) throw new Error('Unknown message digest')
- this._hashType = data.hash
- this._hash = createHash(data.hash)
- this._tag = data.id
- this._signType = data.sign
- }
- inherits(Sign, stream.Writable)
- Sign.prototype._write = function _write (data, _, done) {
- this._hash.update(data)
- done()
- }
- Sign.prototype.update = function update (data, enc) {
- if (typeof data === 'string') data = new Buffer(data, enc)
- this._hash.update(data)
- return this
- }
- Sign.prototype.sign = function signMethod (key, enc) {
- this.end()
- var hash = this._hash.digest()
- var sig = sign(hash, key, this._hashType, this._signType, this._tag)
- return enc ? sig.toString(enc) : sig
- }
- function Verify (algorithm) {
- stream.Writable.call(this)
- var data = algorithms[algorithm]
- if (!data) throw new Error('Unknown message digest')
- this._hash = createHash(data.hash)
- this._tag = data.id
- this._signType = data.sign
- }
- inherits(Verify, stream.Writable)
- Verify.prototype._write = function _write (data, _, done) {
- this._hash.update(data)
- done()
- }
- Verify.prototype.update = function update (data, enc) {
- if (typeof data === 'string') data = new Buffer(data, enc)
- this._hash.update(data)
- return this
- }
- Verify.prototype.verify = function verifyMethod (key, sig, enc) {
- if (typeof sig === 'string') sig = new Buffer(sig, enc)
- this.end()
- var hash = this._hash.digest()
- return verify(sig, hash, key, this._signType, this._tag)
- }
- function createSign (algorithm) {
- return new Sign(algorithm)
- }
- function createVerify (algorithm) {
- return new Verify(algorithm)
- }
- module.exports = {
- Sign: createSign,
- Verify: createVerify,
- createSign: createSign,
- createVerify: createVerify
- }
- }).call(this,require("buffer").Buffer)
- },{"./algorithms.json":48,"./sign":51,"./verify":52,"buffer":54,"create-hash":58,"inherits":108,"stream":157}],51:[function(require,module,exports){
- (function (Buffer){
- // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js
- var createHmac = require('create-hmac')
- var crt = require('browserify-rsa')
- var EC = require('elliptic').ec
- var BN = require('bn.js')
- var parseKeys = require('parse-asn1')
- var curves = require('./curves.json')
- function sign (hash, key, hashType, signType, tag) {
- var priv = parseKeys(key)
- if (priv.curve) {
- // rsa keys can be interpreted as ecdsa ones in openssl
- if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')
- return ecSign(hash, priv)
- } else if (priv.type === 'dsa') {
- if (signType !== 'dsa') throw new Error('wrong private key type')
- return dsaSign(hash, priv, hashType)
- } else {
- if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')
- }
- hash = Buffer.concat([tag, hash])
- var len = priv.modulus.byteLength()
- var pad = [ 0, 1 ]
- while (hash.length + pad.length + 1 < len) pad.push(0xff)
- pad.push(0x00)
- var i = -1
- while (++i < hash.length) pad.push(hash[i])
- var out = crt(pad, priv)
- return out
- }
- function ecSign (hash, priv) {
- var curveId = curves[priv.curve.join('.')]
- if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))
- var curve = new EC(curveId)
- var key = curve.keyFromPrivate(priv.privateKey)
- var out = key.sign(hash)
- return new Buffer(out.toDER())
- }
- function dsaSign (hash, priv, algo) {
- var x = priv.params.priv_key
- var p = priv.params.p
- var q = priv.params.q
- var g = priv.params.g
- var r = new BN(0)
- var k
- var H = bits2int(hash, q).mod(q)
- var s = false
- var kv = getKey(x, q, hash, algo)
- while (s === false) {
- k = makeKey(q, kv, algo)
- r = makeR(g, k, p, q)
- s = k.invm(q).imul(H.add(x.mul(r))).mod(q)
- if (s.cmpn(0) === 0) {
- s = false
- r = new BN(0)
- }
- }
- return toDER(r, s)
- }
- function toDER (r, s) {
- r = r.toArray()
- s = s.toArray()
- // Pad values
- if (r[0] & 0x80) r = [ 0 ].concat(r)
- if (s[0] & 0x80) s = [ 0 ].concat(s)
- var total = r.length + s.length + 4
- var res = [ 0x30, total, 0x02, r.length ]
- res = res.concat(r, [ 0x02, s.length ], s)
- return new Buffer(res)
- }
- function getKey (x, q, hash, algo) {
- x = new Buffer(x.toArray())
- if (x.length < q.byteLength()) {
- var zeros = new Buffer(q.byteLength() - x.length)
- zeros.fill(0)
- x = Buffer.concat([ zeros, x ])
- }
- var hlen = hash.length
- var hbits = bits2octets(hash, q)
- var v = new Buffer(hlen)
- v.fill(1)
- var k = new Buffer(hlen)
- k.fill(0)
- k = createHmac(algo, k).update(v).update(new Buffer([ 0 ])).update(x).update(hbits).digest()
- v = createHmac(algo, k).update(v).digest()
- k = createHmac(algo, k).update(v).update(new Buffer([ 1 ])).update(x).update(hbits).digest()
- v = createHmac(algo, k).update(v).digest()
- return { k: k, v: v }
- }
- function bits2int (obits, q) {
- var bits = new BN(obits)
- var shift = (obits.length << 3) - q.bitLength()
- if (shift > 0) bits.ishrn(shift)
- return bits
- }
- function bits2octets (bits, q) {
- bits = bits2int(bits, q)
- bits = bits.mod(q)
- var out = new Buffer(bits.toArray())
- if (out.length < q.byteLength()) {
- var zeros = new Buffer(q.byteLength() - out.length)
- zeros.fill(0)
- out = Buffer.concat([ zeros, out ])
- }
- return out
- }
- function makeKey (q, kv, algo) {
- var t
- var k
- do {
- t = new Buffer(0)
- while (t.length * 8 < q.bitLength()) {
- kv.v = createHmac(algo, kv.k).update(kv.v).digest()
- t = Buffer.concat([ t, kv.v ])
- }
- k = bits2int(t, q)
- kv.k = createHmac(algo, kv.k).update(kv.v).update(new Buffer([ 0 ])).digest()
- kv.v = createHmac(algo, kv.k).update(kv.v).digest()
- } while (k.cmp(q) !== -1)
- return k
- }
- function makeR (g, k, p, q) {
- return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)
- }
- module.exports = sign
- module.exports.getKey = getKey
- module.exports.makeKey = makeKey
- }).call(this,require("buffer").Buffer)
- },{"./curves.json":49,"bn.js":25,"browserify-rsa":46,"buffer":54,"create-hmac":61,"elliptic":74,"parse-asn1":118}],52:[function(require,module,exports){
- (function (Buffer){
- // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js
- var BN = require('bn.js')
- var EC = require('elliptic').ec
- var parseKeys = require('parse-asn1')
- var curves = require('./curves.json')
- function verify (sig, hash, key, signType, tag) {
- var pub = parseKeys(key)
- if (pub.type === 'ec') {
- // rsa keys can be interpreted as ecdsa ones in openssl
- if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')
- return ecVerify(sig, hash, pub)
- } else if (pub.type === 'dsa') {
- if (signType !== 'dsa') throw new Error('wrong public key type')
- return dsaVerify(sig, hash, pub)
- } else {
- if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')
- }
- hash = Buffer.concat([tag, hash])
- var len = pub.modulus.byteLength()
- var pad = [ 1 ]
- var padNum = 0
- while (hash.length + pad.length + 2 < len) {
- pad.push(0xff)
- padNum++
- }
- pad.push(0x00)
- var i = -1
- while (++i < hash.length) {
- pad.push(hash[i])
- }
- pad = new Buffer(pad)
- var red = BN.mont(pub.modulus)
- sig = new BN(sig).toRed(red)
- sig = sig.redPow(new BN(pub.publicExponent))
- sig = new Buffer(sig.fromRed().toArray())
- var out = padNum < 8 ? 1 : 0
- len = Math.min(sig.length, pad.length)
- if (sig.length !== pad.length) out = 1
- i = -1
- while (++i < len) out |= sig[i] ^ pad[i]
- return out === 0
- }
- function ecVerify (sig, hash, pub) {
- var curveId = curves[pub.data.algorithm.curve.join('.')]
- if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))
- var curve = new EC(curveId)
- var pubkey = pub.data.subjectPrivateKey.data
- return curve.verify(hash, sig, pubkey)
- }
- function dsaVerify (sig, hash, pub) {
- var p = pub.data.p
- var q = pub.data.q
- var g = pub.data.g
- var y = pub.data.pub_key
- var unpacked = parseKeys.signature.decode(sig, 'der')
- var s = unpacked.s
- var r = unpacked.r
- checkValue(s, q)
- checkValue(r, q)
- var montp = BN.mont(p)
- var w = s.invm(q)
- var v = g.toRed(montp)
- .redPow(new BN(hash).mul(w).mod(q))
- .fromRed()
- .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())
- .mod(p)
- .mod(q)
- return v.cmp(r) === 0
- }
- function checkValue (b, q) {
- if (b.cmpn(0) <= 0) throw new Error('invalid sig')
- if (b.cmp(q) >= q) throw new Error('invalid sig')
- }
- module.exports = verify
- }).call(this,require("buffer").Buffer)
- },{"./curves.json":49,"bn.js":25,"buffer":54,"elliptic":74,"parse-asn1":118}],53:[function(require,module,exports){
- (function (Buffer){
- module.exports = function xor (a, b) {
- var length = Math.min(a.length, b.length)
- var buffer = new Buffer(length)
- for (var i = 0; i < length; ++i) {
- buffer[i] = a[i] ^ b[i]
- }
- return buffer
- }
- }).call(this,require("buffer").Buffer)
- },{"buffer":54}],54:[function(require,module,exports){
- /*!
- * The buffer module from node.js, for the browser.
- *
- * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
- * @license MIT
- */
- /* eslint-disable no-proto */
- 'use strict'
- var base64 = require('base64-js')
- var ieee754 = require('ieee754')
- exports.Buffer = Buffer
- exports.SlowBuffer = SlowBuffer
- exports.INSPECT_MAX_BYTES = 50
- var K_MAX_LENGTH = 0x7fffffff
- exports.kMaxLength = K_MAX_LENGTH
- /**
- * If `Buffer.TYPED_ARRAY_SUPPORT`:
- * === true Use Uint8Array implementation (fastest)
- * === false Print warning and recommend using `buffer` v4.x which has an Object
- * implementation (most compatible, even IE6)
- *
- * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
- * Opera 11.6+, iOS 4.2+.
- *
- * We report that the browser does not support typed arrays if the are not subclassable
- * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
- * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
- * for __proto__ and has a buggy typed array implementation.
- */
- Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
- if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
- typeof console.error === 'function') {
- console.error(
- 'This browser lacks typed array (Uint8Array) support which is required by ' +
- '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
- )
- }
- function typedArraySupport () {
- // Can typed array instances can be augmented?
- try {
- var arr = new Uint8Array(1)
- arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
- return arr.foo() === 42
- } catch (e) {
- return false
- }
- }
- function createBuffer (length) {
- if (length > K_MAX_LENGTH) {
- throw new RangeError('Invalid typed array length')
- }
- // Return an augmented `Uint8Array` instance
- var buf = new Uint8Array(length)
- buf.__proto__ = Buffer.prototype
- return buf
- }
- /**
- * The Buffer constructor returns instances of `Uint8Array` that have their
- * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
- * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
- * and the `Uint8Array` methods. Square bracket notation works as expected -- it
- * returns a single octet.
- *
- * The `Uint8Array` prototype remains unmodified.
- */
- function Buffer (arg, encodingOrOffset, length) {
- // Common case.
- if (typeof arg === 'number') {
- if (typeof encodingOrOffset === 'string') {
- throw new Error(
- 'If encoding is specified then the first argument must be a string'
- )
- }
- return allocUnsafe(arg)
- }
- return from(arg, encodingOrOffset, length)
- }
- // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
- if (typeof Symbol !== 'undefined' && Symbol.species &&
- Buffer[Symbol.species] === Buffer) {
- Object.defineProperty(Buffer, Symbol.species, {
- value: null,
- configurable: true,
- enumerable: false,
- writable: false
- })
- }
- Buffer.poolSize = 8192 // not used by this implementation
- function from (value, encodingOrOffset, length) {
- if (typeof value === 'number') {
- throw new TypeError('"value" argument must not be a number')
- }
- if (isArrayBuffer(value)) {
- return fromArrayBuffer(value, encodingOrOffset, length)
- }
- if (typeof value === 'string') {
- return fromString(value, encodingOrOffset)
- }
- return fromObject(value)
- }
- /**
- * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
- * if value is a number.
- * Buffer.from(str[, encoding])
- * Buffer.from(array)
- * Buffer.from(buffer)
- * Buffer.from(arrayBuffer[, byteOffset[, length]])
- **/
- Buffer.from = function (value, encodingOrOffset, length) {
- return from(value, encodingOrOffset, length)
- }
- // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
- // https://github.com/feross/buffer/pull/148
- Buffer.prototype.__proto__ = Uint8Array.prototype
- Buffer.__proto__ = Uint8Array
- function assertSize (size) {
- if (typeof size !== 'number') {
- throw new TypeError('"size" argument must be a number')
- } else if (size < 0) {
- throw new RangeError('"size" argument must not be negative')
- }
- }
- function alloc (size, fill, encoding) {
- assertSize(size)
- if (size <= 0) {
- return createBuffer(size)
- }
- if (fill !== undefined) {
- // Only pay attention to encoding if it's a string. This
- // prevents accidentally sending in a number that would
- // be interpretted as a start offset.
- return typeof encoding === 'string'
- ? createBuffer(size).fill(fill, encoding)
- : createBuffer(size).fill(fill)
- }
- return createBuffer(size)
- }
- /**
- * Creates a new filled Buffer instance.
- * alloc(size[, fill[, encoding]])
- **/
- Buffer.alloc = function (size, fill, encoding) {
- return alloc(size, fill, encoding)
- }
- function allocUnsafe (size) {
- assertSize(size)
- return createBuffer(size < 0 ? 0 : checked(size) | 0)
- }
- /**
- * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
- * */
- Buffer.allocUnsafe = function (size) {
- return allocUnsafe(size)
- }
- /**
- * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
- */
- Buffer.allocUnsafeSlow = function (size) {
- return allocUnsafe(size)
- }
- function fromString (string, encoding) {
- if (typeof encoding !== 'string' || encoding === '') {
- encoding = 'utf8'
- }
- if (!Buffer.isEncoding(encoding)) {
- throw new TypeError('"encoding" must be a valid string encoding')
- }
- var length = byteLength(string, encoding) | 0
- var buf = createBuffer(length)
- var actual = buf.write(string, encoding)
- if (actual !== length) {
- // Writing a hex string, for example, that contains invalid characters will
- // cause everything after the first invalid character to be ignored. (e.g.
- // 'abxxcd' will be treated as 'ab')
- buf = buf.slice(0, actual)
- }
- return buf
- }
- function fromArrayLike (array) {
- var length = array.length < 0 ? 0 : checked(array.length) | 0
- var buf = createBuffer(length)
- for (var i = 0; i < length; i += 1) {
- buf[i] = array[i] & 255
- }
- return buf
- }
- function fromArrayBuffer (array, byteOffset, length) {
- if (byteOffset < 0 || array.byteLength < byteOffset) {
- throw new RangeError('\'offset\' is out of bounds')
- }
- if (array.byteLength < byteOffset + (length || 0)) {
- throw new RangeError('\'length\' is out of bounds')
- }
- var buf
- if (byteOffset === undefined && length === undefined) {
- buf = new Uint8Array(array)
- } else if (length === undefined) {
- buf = new Uint8Array(array, byteOffset)
- } else {
- buf = new Uint8Array(array, byteOffset, length)
- }
- // Return an augmented `Uint8Array` instance
- buf.__proto__ = Buffer.prototype
- return buf
- }
- function fromObject (obj) {
- if (Buffer.isBuffer(obj)) {
- var len = checked(obj.length) | 0
- var buf = createBuffer(len)
- if (buf.length === 0) {
- return buf
- }
- obj.copy(buf, 0, 0, len)
- return buf
- }
- if (obj) {
- if (isArrayBufferView(obj) || 'length' in obj) {
- if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
- return createBuffer(0)
- }
- return fromArrayLike(obj)
- }
- if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
- return fromArrayLike(obj.data)
- }
- }
- throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
- }
- function checked (length) {
- // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
- // length is NaN (which is otherwise coerced to zero.)
- if (length >= K_MAX_LENGTH) {
- throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
- 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
- }
- return length | 0
- }
- function SlowBuffer (length) {
- if (+length != length) { // eslint-disable-line eqeqeq
- length = 0
- }
- return Buffer.alloc(+length)
- }
- Buffer.isBuffer = function isBuffer (b) {
- return b != null && b._isBuffer === true
- }
- Buffer.compare = function compare (a, b) {
- if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
- throw new TypeError('Arguments must be Buffers')
- }
- if (a === b) return 0
- var x = a.length
- var y = b.length
- for (var i = 0, len = Math.min(x, y); i < len; ++i) {
- if (a[i] !== b[i]) {
- x = a[i]
- y = b[i]
- break
- }
- }
- if (x < y) return -1
- if (y < x) return 1
- return 0
- }
- Buffer.isEncoding = function isEncoding (encoding) {
- switch (String(encoding).toLowerCase()) {
- case 'hex':
- case 'utf8':
- case 'utf-8':
- case 'ascii':
- case 'latin1':
- case 'binary':
- case 'base64':
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return true
- default:
- return false
- }
- }
- Buffer.concat = function concat (list, length) {
- if (!Array.isArray(list)) {
- throw new TypeError('"list" argument must be an Array of Buffers')
- }
- if (list.length === 0) {
- return Buffer.alloc(0)
- }
- var i
- if (length === undefined) {
- length = 0
- for (i = 0; i < list.length; ++i) {
- length += list[i].length
- }
- }
- var buffer = Buffer.allocUnsafe(length)
- var pos = 0
- for (i = 0; i < list.length; ++i) {
- var buf = list[i]
- if (!Buffer.isBuffer(buf)) {
- throw new TypeError('"list" argument must be an Array of Buffers')
- }
- buf.copy(buffer, pos)
- pos += buf.length
- }
- return buffer
- }
- function byteLength (string, encoding) {
- if (Buffer.isBuffer(string)) {
- return string.length
- }
- if (isArrayBufferView(string) || isArrayBuffer(string)) {
- return string.byteLength
- }
- if (typeof string !== 'string') {
- string = '' + string
- }
- var len = string.length
- if (len === 0) return 0
- // Use a for loop to avoid recursion
- var loweredCase = false
- for (;;) {
- switch (encoding) {
- case 'ascii':
- case 'latin1':
- case 'binary':
- return len
- case 'utf8':
- case 'utf-8':
- case undefined:
- return utf8ToBytes(string).length
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return len * 2
- case 'hex':
- return len >>> 1
- case 'base64':
- return base64ToBytes(string).length
- default:
- if (loweredCase) return utf8ToBytes(string).length // assume utf8
- encoding = ('' + encoding).toLowerCase()
- loweredCase = true
- }
- }
- }
- Buffer.byteLength = byteLength
- function slowToString (encoding, start, end) {
- var loweredCase = false
- // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
- // property of a typed array.
- // This behaves neither like String nor Uint8Array in that we set start/end
- // to their upper/lower bounds if the value passed is out of range.
- // undefined is handled specially as per ECMA-262 6th Edition,
- // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
- if (start === undefined || start < 0) {
- start = 0
- }
- // Return early if start > this.length. Done here to prevent potential uint32
- // coercion fail below.
- if (start > this.length) {
- return ''
- }
- if (end === undefined || end > this.length) {
- end = this.length
- }
- if (end <= 0) {
- return ''
- }
- // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
- end >>>= 0
- start >>>= 0
- if (end <= start) {
- return ''
- }
- if (!encoding) encoding = 'utf8'
- while (true) {
- switch (encoding) {
- case 'hex':
- return hexSlice(this, start, end)
- case 'utf8':
- case 'utf-8':
- return utf8Slice(this, start, end)
- case 'ascii':
- return asciiSlice(this, start, end)
- case 'latin1':
- case 'binary':
- return latin1Slice(this, start, end)
- case 'base64':
- return base64Slice(this, start, end)
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return utf16leSlice(this, start, end)
- default:
- if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
- encoding = (encoding + '').toLowerCase()
- loweredCase = true
- }
- }
- }
- // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
- // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
- // reliably in a browserify context because there could be multiple different
- // copies of the 'buffer' package in use. This method works even for Buffer
- // instances that were created from another copy of the `buffer` package.
- // See: https://github.com/feross/buffer/issues/154
- Buffer.prototype._isBuffer = true
- function swap (b, n, m) {
- var i = b[n]
- b[n] = b[m]
- b[m] = i
- }
- Buffer.prototype.swap16 = function swap16 () {
- var len = this.length
- if (len % 2 !== 0) {
- throw new RangeError('Buffer size must be a multiple of 16-bits')
- }
- for (var i = 0; i < len; i += 2) {
- swap(this, i, i + 1)
- }
- return this
- }
- Buffer.prototype.swap32 = function swap32 () {
- var len = this.length
- if (len % 4 !== 0) {
- throw new RangeError('Buffer size must be a multiple of 32-bits')
- }
- for (var i = 0; i < len; i += 4) {
- swap(this, i, i + 3)
- swap(this, i + 1, i + 2)
- }
- return this
- }
- Buffer.prototype.swap64 = function swap64 () {
- var len = this.length
- if (len % 8 !== 0) {
- throw new RangeError('Buffer size must be a multiple of 64-bits')
- }
- for (var i = 0; i < len; i += 8) {
- swap(this, i, i + 7)
- swap(this, i + 1, i + 6)
- swap(this, i + 2, i + 5)
- swap(this, i + 3, i + 4)
- }
- return this
- }
- Buffer.prototype.toString = function toString () {
- var length = this.length
- if (length === 0) return ''
- if (arguments.length === 0) return utf8Slice(this, 0, length)
- return slowToString.apply(this, arguments)
- }
- Buffer.prototype.equals = function equals (b) {
- if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
- if (this === b) return true
- return Buffer.compare(this, b) === 0
- }
- Buffer.prototype.inspect = function inspect () {
- var str = ''
- var max = exports.INSPECT_MAX_BYTES
- if (this.length > 0) {
- str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
- if (this.length > max) str += ' ... '
- }
- return '<Buffer ' + str + '>'
- }
- Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
- if (!Buffer.isBuffer(target)) {
- throw new TypeError('Argument must be a Buffer')
- }
- if (start === undefined) {
- start = 0
- }
- if (end === undefined) {
- end = target ? target.length : 0
- }
- if (thisStart === undefined) {
- thisStart = 0
- }
- if (thisEnd === undefined) {
- thisEnd = this.length
- }
- if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
- throw new RangeError('out of range index')
- }
- if (thisStart >= thisEnd && start >= end) {
- return 0
- }
- if (thisStart >= thisEnd) {
- return -1
- }
- if (start >= end) {
- return 1
- }
- start >>>= 0
- end >>>= 0
- thisStart >>>= 0
- thisEnd >>>= 0
- if (this === target) return 0
- var x = thisEnd - thisStart
- var y = end - start
- var len = Math.min(x, y)
- var thisCopy = this.slice(thisStart, thisEnd)
- var targetCopy = target.slice(start, end)
- for (var i = 0; i < len; ++i) {
- if (thisCopy[i] !== targetCopy[i]) {
- x = thisCopy[i]
- y = targetCopy[i]
- break
- }
- }
- if (x < y) return -1
- if (y < x) return 1
- return 0
- }
- // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
- // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
- //
- // Arguments:
- // - buffer - a Buffer to search
- // - val - a string, Buffer, or number
- // - byteOffset - an index into `buffer`; will be clamped to an int32
- // - encoding - an optional encoding, relevant is val is a string
- // - dir - true for indexOf, false for lastIndexOf
- function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
- // Empty buffer means no match
- if (buffer.length === 0) return -1
- // Normalize byteOffset
- if (typeof byteOffset === 'string') {
- encoding = byteOffset
- byteOffset = 0
- } else if (byteOffset > 0x7fffffff) {
- byteOffset = 0x7fffffff
- } else if (byteOffset < -0x80000000) {
- byteOffset = -0x80000000
- }
- byteOffset = +byteOffset // Coerce to Number.
- if (numberIsNaN(byteOffset)) {
- // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
- byteOffset = dir ? 0 : (buffer.length - 1)
- }
- // Normalize byteOffset: negative offsets start from the end of the buffer
- if (byteOffset < 0) byteOffset = buffer.length + byteOffset
- if (byteOffset >= buffer.length) {
- if (dir) return -1
- else byteOffset = buffer.length - 1
- } else if (byteOffset < 0) {
- if (dir) byteOffset = 0
- else return -1
- }
- // Normalize val
- if (typeof val === 'string') {
- val = Buffer.from(val, encoding)
- }
- // Finally, search either indexOf (if dir is true) or lastIndexOf
- if (Buffer.isBuffer(val)) {
- // Special case: looking for empty string/buffer always fails
- if (val.length === 0) {
- return -1
- }
- return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
- } else if (typeof val === 'number') {
- val = val & 0xFF // Search for a byte value [0-255]
- if (typeof Uint8Array.prototype.indexOf === 'function') {
- if (dir) {
- return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
- } else {
- return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
- }
- }
- return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
- }
- throw new TypeError('val must be string, number or Buffer')
- }
- function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
- var indexSize = 1
- var arrLength = arr.length
- var valLength = val.length
- if (encoding !== undefined) {
- encoding = String(encoding).toLowerCase()
- if (encoding === 'ucs2' || encoding === 'ucs-2' ||
- encoding === 'utf16le' || encoding === 'utf-16le') {
- if (arr.length < 2 || val.length < 2) {
- return -1
- }
- indexSize = 2
- arrLength /= 2
- valLength /= 2
- byteOffset /= 2
- }
- }
- function read (buf, i) {
- if (indexSize === 1) {
- return buf[i]
- } else {
- return buf.readUInt16BE(i * indexSize)
- }
- }
- var i
- if (dir) {
- var foundIndex = -1
- for (i = byteOffset; i < arrLength; i++) {
- if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
- if (foundIndex === -1) foundIndex = i
- if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
- } else {
- if (foundIndex !== -1) i -= i - foundIndex
- foundIndex = -1
- }
- }
- } else {
- if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
- for (i = byteOffset; i >= 0; i--) {
- var found = true
- for (var j = 0; j < valLength; j++) {
- if (read(arr, i + j) !== read(val, j)) {
- found = false
- break
- }
- }
- if (found) return i
- }
- }
- return -1
- }
- Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
- return this.indexOf(val, byteOffset, encoding) !== -1
- }
- Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
- return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
- }
- Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
- return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
- }
- function hexWrite (buf, string, offset, length) {
- offset = Number(offset) || 0
- var remaining = buf.length - offset
- if (!length) {
- length = remaining
- } else {
- length = Number(length)
- if (length > remaining) {
- length = remaining
- }
- }
- // must be an even number of digits
- var strLen = string.length
- if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
- if (length > strLen / 2) {
- length = strLen / 2
- }
- for (var i = 0; i < length; ++i) {
- var parsed = parseInt(string.substr(i * 2, 2), 16)
- if (numberIsNaN(parsed)) return i
- buf[offset + i] = parsed
- }
- return i
- }
- function utf8Write (buf, string, offset, length) {
- return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
- }
- function asciiWrite (buf, string, offset, length) {
- return blitBuffer(asciiToBytes(string), buf, offset, length)
- }
- function latin1Write (buf, string, offset, length) {
- return asciiWrite(buf, string, offset, length)
- }
- function base64Write (buf, string, offset, length) {
- return blitBuffer(base64ToBytes(string), buf, offset, length)
- }
- function ucs2Write (buf, string, offset, length) {
- return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
- }
- Buffer.prototype.write = function write (string, offset, length, encoding) {
- // Buffer#write(string)
- if (offset === undefined) {
- encoding = 'utf8'
- length = this.length
- offset = 0
- // Buffer#write(string, encoding)
- } else if (length === undefined && typeof offset === 'string') {
- encoding = offset
- length = this.length
- offset = 0
- // Buffer#write(string, offset[, length][, encoding])
- } else if (isFinite(offset)) {
- offset = offset >>> 0
- if (isFinite(length)) {
- length = length >>> 0
- if (encoding === undefined) encoding = 'utf8'
- } else {
- encoding = length
- length = undefined
- }
- } else {
- throw new Error(
- 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
- )
- }
- var remaining = this.length - offset
- if (length === undefined || length > remaining) length = remaining
- if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
- throw new RangeError('Attempt to write outside buffer bounds')
- }
- if (!encoding) encoding = 'utf8'
- var loweredCase = false
- for (;;) {
- switch (encoding) {
- case 'hex':
- return hexWrite(this, string, offset, length)
- case 'utf8':
- case 'utf-8':
- return utf8Write(this, string, offset, length)
- case 'ascii':
- return asciiWrite(this, string, offset, length)
- case 'latin1':
- case 'binary':
- return latin1Write(this, string, offset, length)
- case 'base64':
- // Warning: maxLength not taken into account in base64Write
- return base64Write(this, string, offset, length)
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return ucs2Write(this, string, offset, length)
- default:
- if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
- encoding = ('' + encoding).toLowerCase()
- loweredCase = true
- }
- }
- }
- Buffer.prototype.toJSON = function toJSON () {
- return {
- type: 'Buffer',
- data: Array.prototype.slice.call(this._arr || this, 0)
- }
- }
- function base64Slice (buf, start, end) {
- if (start === 0 && end === buf.length) {
- return base64.fromByteArray(buf)
- } else {
- return base64.fromByteArray(buf.slice(start, end))
- }
- }
- function utf8Slice (buf, start, end) {
- end = Math.min(buf.length, end)
- var res = []
- var i = start
- while (i < end) {
- var firstByte = buf[i]
- var codePoint = null
- var bytesPerSequence = (firstByte > 0xEF) ? 4
- : (firstByte > 0xDF) ? 3
- : (firstByte > 0xBF) ? 2
- : 1
- if (i + bytesPerSequence <= end) {
- var secondByte, thirdByte, fourthByte, tempCodePoint
- switch (bytesPerSequence) {
- case 1:
- if (firstByte < 0x80) {
- codePoint = firstByte
- }
- break
- case 2:
- secondByte = buf[i + 1]
- if ((secondByte & 0xC0) === 0x80) {
- tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
- if (tempCodePoint > 0x7F) {
- codePoint = tempCodePoint
- }
- }
- break
- case 3:
- secondByte = buf[i + 1]
- thirdByte = buf[i + 2]
- if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
- tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
- if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
- codePoint = tempCodePoint
- }
- }
- break
- case 4:
- secondByte = buf[i + 1]
- thirdByte = buf[i + 2]
- fourthByte = buf[i + 3]
- if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
- tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
- if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
- codePoint = tempCodePoint
- }
- }
- }
- }
- if (codePoint === null) {
- // we did not generate a valid codePoint so insert a
- // replacement char (U+FFFD) and advance only 1 byte
- codePoint = 0xFFFD
- bytesPerSequence = 1
- } else if (codePoint > 0xFFFF) {
- // encode to utf16 (surrogate pair dance)
- codePoint -= 0x10000
- res.push(codePoint >>> 10 & 0x3FF | 0xD800)
- codePoint = 0xDC00 | codePoint & 0x3FF
- }
- res.push(codePoint)
- i += bytesPerSequence
- }
- return decodeCodePointsArray(res)
- }
- // Based on http://stackoverflow.com/a/22747272/680742, the browser with
- // the lowest limit is Chrome, with 0x10000 args.
- // We go 1 magnitude less, for safety
- var MAX_ARGUMENTS_LENGTH = 0x1000
- function decodeCodePointsArray (codePoints) {
- var len = codePoints.length
- if (len <= MAX_ARGUMENTS_LENGTH) {
- return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
- }
- // Decode in chunks to avoid "call stack size exceeded".
- var res = ''
- var i = 0
- while (i < len) {
- res += String.fromCharCode.apply(
- String,
- codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
- )
- }
- return res
- }
- function asciiSlice (buf, start, end) {
- var ret = ''
- end = Math.min(buf.length, end)
- for (var i = start; i < end; ++i) {
- ret += String.fromCharCode(buf[i] & 0x7F)
- }
- return ret
- }
- function latin1Slice (buf, start, end) {
- var ret = ''
- end = Math.min(buf.length, end)
- for (var i = start; i < end; ++i) {
- ret += String.fromCharCode(buf[i])
- }
- return ret
- }
- function hexSlice (buf, start, end) {
- var len = buf.length
- if (!start || start < 0) start = 0
- if (!end || end < 0 || end > len) end = len
- var out = ''
- for (var i = start; i < end; ++i) {
- out += toHex(buf[i])
- }
- return out
- }
- function utf16leSlice (buf, start, end) {
- var bytes = buf.slice(start, end)
- var res = ''
- for (var i = 0; i < bytes.length; i += 2) {
- res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
- }
- return res
- }
- Buffer.prototype.slice = function slice (start, end) {
- var len = this.length
- start = ~~start
- end = end === undefined ? len : ~~end
- if (start < 0) {
- start += len
- if (start < 0) start = 0
- } else if (start > len) {
- start = len
- }
- if (end < 0) {
- end += len
- if (end < 0) end = 0
- } else if (end > len) {
- end = len
- }
- if (end < start) end = start
- var newBuf = this.subarray(start, end)
- // Return an augmented `Uint8Array` instance
- newBuf.__proto__ = Buffer.prototype
- return newBuf
- }
- /*
- * Need to make sure that buffer isn't trying to write out of bounds.
- */
- function checkOffset (offset, ext, length) {
- if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
- if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
- }
- Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
- offset = offset >>> 0
- byteLength = byteLength >>> 0
- if (!noAssert) checkOffset(offset, byteLength, this.length)
- var val = this[offset]
- var mul = 1
- var i = 0
- while (++i < byteLength && (mul *= 0x100)) {
- val += this[offset + i] * mul
- }
- return val
- }
- Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
- offset = offset >>> 0
- byteLength = byteLength >>> 0
- if (!noAssert) {
- checkOffset(offset, byteLength, this.length)
- }
- var val = this[offset + --byteLength]
- var mul = 1
- while (byteLength > 0 && (mul *= 0x100)) {
- val += this[offset + --byteLength] * mul
- }
- return val
- }
- Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 1, this.length)
- return this[offset]
- }
- Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 2, this.length)
- return this[offset] | (this[offset + 1] << 8)
- }
- Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 2, this.length)
- return (this[offset] << 8) | this[offset + 1]
- }
- Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 4, this.length)
- return ((this[offset]) |
- (this[offset + 1] << 8) |
- (this[offset + 2] << 16)) +
- (this[offset + 3] * 0x1000000)
- }
- Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 4, this.length)
- return (this[offset] * 0x1000000) +
- ((this[offset + 1] << 16) |
- (this[offset + 2] << 8) |
- this[offset + 3])
- }
- Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
- offset = offset >>> 0
- byteLength = byteLength >>> 0
- if (!noAssert) checkOffset(offset, byteLength, this.length)
- var val = this[offset]
- var mul = 1
- var i = 0
- while (++i < byteLength && (mul *= 0x100)) {
- val += this[offset + i] * mul
- }
- mul *= 0x80
- if (val >= mul) val -= Math.pow(2, 8 * byteLength)
- return val
- }
- Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
- offset = offset >>> 0
- byteLength = byteLength >>> 0
- if (!noAssert) checkOffset(offset, byteLength, this.length)
- var i = byteLength
- var mul = 1
- var val = this[offset + --i]
- while (i > 0 && (mul *= 0x100)) {
- val += this[offset + --i] * mul
- }
- mul *= 0x80
- if (val >= mul) val -= Math.pow(2, 8 * byteLength)
- return val
- }
- Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 1, this.length)
- if (!(this[offset] & 0x80)) return (this[offset])
- return ((0xff - this[offset] + 1) * -1)
- }
- Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 2, this.length)
- var val = this[offset] | (this[offset + 1] << 8)
- return (val & 0x8000) ? val | 0xFFFF0000 : val
- }
- Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 2, this.length)
- var val = this[offset + 1] | (this[offset] << 8)
- return (val & 0x8000) ? val | 0xFFFF0000 : val
- }
- Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 4, this.length)
- return (this[offset]) |
- (this[offset + 1] << 8) |
- (this[offset + 2] << 16) |
- (this[offset + 3] << 24)
- }
- Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 4, this.length)
- return (this[offset] << 24) |
- (this[offset + 1] << 16) |
- (this[offset + 2] << 8) |
- (this[offset + 3])
- }
- Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 4, this.length)
- return ieee754.read(this, offset, true, 23, 4)
- }
- Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 4, this.length)
- return ieee754.read(this, offset, false, 23, 4)
- }
- Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 8, this.length)
- return ieee754.read(this, offset, true, 52, 8)
- }
- Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 8, this.length)
- return ieee754.read(this, offset, false, 52, 8)
- }
- function checkInt (buf, value, offset, ext, max, min) {
- if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
- if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
- if (offset + ext > buf.length) throw new RangeError('Index out of range')
- }
- Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset >>> 0
- byteLength = byteLength >>> 0
- if (!noAssert) {
- var maxBytes = Math.pow(2, 8 * byteLength) - 1
- checkInt(this, value, offset, byteLength, maxBytes, 0)
- }
- var mul = 1
- var i = 0
- this[offset] = value & 0xFF
- while (++i < byteLength && (mul *= 0x100)) {
- this[offset + i] = (value / mul) & 0xFF
- }
- return offset + byteLength
- }
- Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset >>> 0
- byteLength = byteLength >>> 0
- if (!noAssert) {
- var maxBytes = Math.pow(2, 8 * byteLength) - 1
- checkInt(this, value, offset, byteLength, maxBytes, 0)
- }
- var i = byteLength - 1
- var mul = 1
- this[offset + i] = value & 0xFF
- while (--i >= 0 && (mul *= 0x100)) {
- this[offset + i] = (value / mul) & 0xFF
- }
- return offset + byteLength
- }
- Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
- this[offset] = (value & 0xff)
- return offset + 1
- }
- Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
- this[offset] = (value & 0xff)
- this[offset + 1] = (value >>> 8)
- return offset + 2
- }
- Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
- this[offset] = (value >>> 8)
- this[offset + 1] = (value & 0xff)
- return offset + 2
- }
- Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
- this[offset + 3] = (value >>> 24)
- this[offset + 2] = (value >>> 16)
- this[offset + 1] = (value >>> 8)
- this[offset] = (value & 0xff)
- return offset + 4
- }
- Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
- this[offset] = (value >>> 24)
- this[offset + 1] = (value >>> 16)
- this[offset + 2] = (value >>> 8)
- this[offset + 3] = (value & 0xff)
- return offset + 4
- }
- Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) {
- var limit = Math.pow(2, (8 * byteLength) - 1)
- checkInt(this, value, offset, byteLength, limit - 1, -limit)
- }
- var i = 0
- var mul = 1
- var sub = 0
- this[offset] = value & 0xFF
- while (++i < byteLength && (mul *= 0x100)) {
- if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
- sub = 1
- }
- this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
- }
- return offset + byteLength
- }
- Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) {
- var limit = Math.pow(2, (8 * byteLength) - 1)
- checkInt(this, value, offset, byteLength, limit - 1, -limit)
- }
- var i = byteLength - 1
- var mul = 1
- var sub = 0
- this[offset + i] = value & 0xFF
- while (--i >= 0 && (mul *= 0x100)) {
- if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
- sub = 1
- }
- this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
- }
- return offset + byteLength
- }
- Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
- if (value < 0) value = 0xff + value + 1
- this[offset] = (value & 0xff)
- return offset + 1
- }
- Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
- this[offset] = (value & 0xff)
- this[offset + 1] = (value >>> 8)
- return offset + 2
- }
- Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
- this[offset] = (value >>> 8)
- this[offset + 1] = (value & 0xff)
- return offset + 2
- }
- Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
- this[offset] = (value & 0xff)
- this[offset + 1] = (value >>> 8)
- this[offset + 2] = (value >>> 16)
- this[offset + 3] = (value >>> 24)
- return offset + 4
- }
- Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
- if (value < 0) value = 0xffffffff + value + 1
- this[offset] = (value >>> 24)
- this[offset + 1] = (value >>> 16)
- this[offset + 2] = (value >>> 8)
- this[offset + 3] = (value & 0xff)
- return offset + 4
- }
- function checkIEEE754 (buf, value, offset, ext, max, min) {
- if (offset + ext > buf.length) throw new RangeError('Index out of range')
- if (offset < 0) throw new RangeError('Index out of range')
- }
- function writeFloat (buf, value, offset, littleEndian, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) {
- checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
- }
- ieee754.write(buf, value, offset, littleEndian, 23, 4)
- return offset + 4
- }
- Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
- return writeFloat(this, value, offset, true, noAssert)
- }
- Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
- return writeFloat(this, value, offset, false, noAssert)
- }
- function writeDouble (buf, value, offset, littleEndian, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) {
- checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
- }
- ieee754.write(buf, value, offset, littleEndian, 52, 8)
- return offset + 8
- }
- Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
- return writeDouble(this, value, offset, true, noAssert)
- }
- Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
- return writeDouble(this, value, offset, false, noAssert)
- }
- // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
- Buffer.prototype.copy = function copy (target, targetStart, start, end) {
- if (!start) start = 0
- if (!end && end !== 0) end = this.length
- if (targetStart >= target.length) targetStart = target.length
- if (!targetStart) targetStart = 0
- if (end > 0 && end < start) end = start
- // Copy 0 bytes; we're done
- if (end === start) return 0
- if (target.length === 0 || this.length === 0) return 0
- // Fatal error conditions
- if (targetStart < 0) {
- throw new RangeError('targetStart out of bounds')
- }
- if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
- if (end < 0) throw new RangeError('sourceEnd out of bounds')
- // Are we oob?
- if (end > this.length) end = this.length
- if (target.length - targetStart < end - start) {
- end = target.length - targetStart + start
- }
- var len = end - start
- var i
- if (this === target && start < targetStart && targetStart < end) {
- // descending copy from end
- for (i = len - 1; i >= 0; --i) {
- target[i + targetStart] = this[i + start]
- }
- } else if (len < 1000) {
- // ascending copy from start
- for (i = 0; i < len; ++i) {
- target[i + targetStart] = this[i + start]
- }
- } else {
- Uint8Array.prototype.set.call(
- target,
- this.subarray(start, start + len),
- targetStart
- )
- }
- return len
- }
- // Usage:
- // buffer.fill(number[, offset[, end]])
- // buffer.fill(buffer[, offset[, end]])
- // buffer.fill(string[, offset[, end]][, encoding])
- Buffer.prototype.fill = function fill (val, start, end, encoding) {
- // Handle string cases:
- if (typeof val === 'string') {
- if (typeof start === 'string') {
- encoding = start
- start = 0
- end = this.length
- } else if (typeof end === 'string') {
- encoding = end
- end = this.length
- }
- if (val.length === 1) {
- var code = val.charCodeAt(0)
- if (code < 256) {
- val = code
- }
- }
- if (encoding !== undefined && typeof encoding !== 'string') {
- throw new TypeError('encoding must be a string')
- }
- if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
- throw new TypeError('Unknown encoding: ' + encoding)
- }
- } else if (typeof val === 'number') {
- val = val & 255
- }
- // Invalid ranges are not set to a default, so can range check early.
- if (start < 0 || this.length < start || this.length < end) {
- throw new RangeError('Out of range index')
- }
- if (end <= start) {
- return this
- }
- start = start >>> 0
- end = end === undefined ? this.length : end >>> 0
- if (!val) val = 0
- var i
- if (typeof val === 'number') {
- for (i = start; i < end; ++i) {
- this[i] = val
- }
- } else {
- var bytes = Buffer.isBuffer(val)
- ? val
- : new Buffer(val, encoding)
- var len = bytes.length
- for (i = 0; i < end - start; ++i) {
- this[i + start] = bytes[i % len]
- }
- }
- return this
- }
- // HELPER FUNCTIONS
- // ================
- var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
- function base64clean (str) {
- // Node strips out invalid characters like \n and \t from the string, base64-js does not
- str = str.trim().replace(INVALID_BASE64_RE, '')
- // Node converts strings with length < 2 to ''
- if (str.length < 2) return ''
- // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
- while (str.length % 4 !== 0) {
- str = str + '='
- }
- return str
- }
- function toHex (n) {
- if (n < 16) return '0' + n.toString(16)
- return n.toString(16)
- }
- function utf8ToBytes (string, units) {
- units = units || Infinity
- var codePoint
- var length = string.length
- var leadSurrogate = null
- var bytes = []
- for (var i = 0; i < length; ++i) {
- codePoint = string.charCodeAt(i)
- // is surrogate component
- if (codePoint > 0xD7FF && codePoint < 0xE000) {
- // last char was a lead
- if (!leadSurrogate) {
- // no lead yet
- if (codePoint > 0xDBFF) {
- // unexpected trail
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- continue
- } else if (i + 1 === length) {
- // unpaired lead
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- continue
- }
- // valid lead
- leadSurrogate = codePoint
- continue
- }
- // 2 leads in a row
- if (codePoint < 0xDC00) {
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- leadSurrogate = codePoint
- continue
- }
- // valid surrogate pair
- codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
- } else if (leadSurrogate) {
- // valid bmp char, but last char was a lead
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- }
- leadSurrogate = null
- // encode utf8
- if (codePoint < 0x80) {
- if ((units -= 1) < 0) break
- bytes.push(codePoint)
- } else if (codePoint < 0x800) {
- if ((units -= 2) < 0) break
- bytes.push(
- codePoint >> 0x6 | 0xC0,
- codePoint & 0x3F | 0x80
- )
- } else if (codePoint < 0x10000) {
- if ((units -= 3) < 0) break
- bytes.push(
- codePoint >> 0xC | 0xE0,
- codePoint >> 0x6 & 0x3F | 0x80,
- codePoint & 0x3F | 0x80
- )
- } else if (codePoint < 0x110000) {
- if ((units -= 4) < 0) break
- bytes.push(
- codePoint >> 0x12 | 0xF0,
- codePoint >> 0xC & 0x3F | 0x80,
- codePoint >> 0x6 & 0x3F | 0x80,
- codePoint & 0x3F | 0x80
- )
- } else {
- throw new Error('Invalid code point')
- }
- }
- return bytes
- }
- function asciiToBytes (str) {
- var byteArray = []
- for (var i = 0; i < str.length; ++i) {
- // Node's code seems to be doing this and not & 0x7F..
- byteArray.push(str.charCodeAt(i) & 0xFF)
- }
- return byteArray
- }
- function utf16leToBytes (str, units) {
- var c, hi, lo
- var byteArray = []
- for (var i = 0; i < str.length; ++i) {
- if ((units -= 2) < 0) break
- c = str.charCodeAt(i)
- hi = c >> 8
- lo = c % 256
- byteArray.push(lo)
- byteArray.push(hi)
- }
- return byteArray
- }
- function base64ToBytes (str) {
- return base64.toByteArray(base64clean(str))
- }
- function blitBuffer (src, dst, offset, length) {
- for (var i = 0; i < length; ++i) {
- if ((i + offset >= dst.length) || (i >= src.length)) break
- dst[i + offset] = src[i]
- }
- return i
- }
- // ArrayBuffers from another context (i.e. an iframe) do not pass the `instanceof` check
- // but they should be treated as valid. See: https://github.com/feross/buffer/issues/166
- function isArrayBuffer (obj) {
- return obj instanceof ArrayBuffer ||
- (obj != null && obj.constructor != null && obj.constructor.name === 'ArrayBuffer' &&
- typeof obj.byteLength === 'number')
- }
- // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
- function isArrayBufferView (obj) {
- return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
- }
- function numberIsNaN (obj) {
- return obj !== obj // eslint-disable-line no-self-compare
- }
- },{"base64-js":24,"ieee754":106}],55:[function(require,module,exports){
- var Buffer = require('safe-buffer').Buffer
- var Transform = require('stream').Transform
- var StringDecoder = require('string_decoder').StringDecoder
- var inherits = require('inherits')
- function CipherBase (hashMode) {
- Transform.call(this)
- this.hashMode = typeof hashMode === 'string'
- if (this.hashMode) {
- this[hashMode] = this._finalOrDigest
- } else {
- this.final = this._finalOrDigest
- }
- if (this._final) {
- this.__final = this._final
- this._final = null
- }
- this._decoder = null
- this._encoding = null
- }
- inherits(CipherBase, Transform)
- CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
- if (typeof data === 'string') {
- data = Buffer.from(data, inputEnc)
- }
- var outData = this._update(data)
- if (this.hashMode) return this
- if (outputEnc) {
- outData = this._toString(outData, outputEnc)
- }
- return outData
- }
- CipherBase.prototype.setAutoPadding = function () {}
- CipherBase.prototype.getAuthTag = function () {
- throw new Error('trying to get auth tag in unsupported state')
- }
- CipherBase.prototype.setAuthTag = function () {
- throw new Error('trying to set auth tag in unsupported state')
- }
- CipherBase.prototype.setAAD = function () {
- throw new Error('trying to set aad in unsupported state')
- }
- CipherBase.prototype._transform = function (data, _, next) {
- var err
- try {
- if (this.hashMode) {
- this._update(data)
- } else {
- this.push(this._update(data))
- }
- } catch (e) {
- err = e
- } finally {
- next(err)
- }
- }
- CipherBase.prototype._flush = function (done) {
- var err
- try {
- this.push(this.__final())
- } catch (e) {
- err = e
- }
- done(err)
- }
- CipherBase.prototype._finalOrDigest = function (outputEnc) {
- var outData = this.__final() || Buffer.alloc(0)
- if (outputEnc) {
- outData = this._toString(outData, outputEnc, true)
- }
- return outData
- }
- CipherBase.prototype._toString = function (value, enc, fin) {
- if (!this._decoder) {
- this._decoder = new StringDecoder(enc)
- this._encoding = enc
- }
- if (this._encoding !== enc) throw new Error('can\'t switch encodings')
- var out = this._decoder.write(value)
- if (fin) {
- out += this._decoder.end()
- }
- return out
- }
- module.exports = CipherBase
- },{"inherits":108,"safe-buffer":148,"stream":157,"string_decoder":158}],56:[function(require,module,exports){
- (function (Buffer){
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- // NOTE: These type checking functions intentionally don't use `instanceof`
- // because it is fragile and can be easily faked with `Object.create()`.
- function isArray(arg) {
- if (Array.isArray) {
- return Array.isArray(arg);
- }
- return objectToString(arg) === '[object Array]';
- }
- exports.isArray = isArray;
- function isBoolean(arg) {
- return typeof arg === 'boolean';
- }
- exports.isBoolean = isBoolean;
- function isNull(arg) {
- return arg === null;
- }
- exports.isNull = isNull;
- function isNullOrUndefined(arg) {
- return arg == null;
- }
- exports.isNullOrUndefined = isNullOrUndefined;
- function isNumber(arg) {
- return typeof arg === 'number';
- }
- exports.isNumber = isNumber;
- function isString(arg) {
- return typeof arg === 'string';
- }
- exports.isString = isString;
- function isSymbol(arg) {
- return typeof arg === 'symbol';
- }
- exports.isSymbol = isSymbol;
- function isUndefined(arg) {
- return arg === void 0;
- }
- exports.isUndefined = isUndefined;
- function isRegExp(re) {
- return objectToString(re) === '[object RegExp]';
- }
- exports.isRegExp = isRegExp;
- function isObject(arg) {
- return typeof arg === 'object' && arg !== null;
- }
- exports.isObject = isObject;
- function isDate(d) {
- return objectToString(d) === '[object Date]';
- }
- exports.isDate = isDate;
- function isError(e) {
- return (objectToString(e) === '[object Error]' || e instanceof Error);
- }
- exports.isError = isError;
- function isFunction(arg) {
- return typeof arg === 'function';
- }
- exports.isFunction = isFunction;
- function isPrimitive(arg) {
- return arg === null ||
- typeof arg === 'boolean' ||
- typeof arg === 'number' ||
- typeof arg === 'string' ||
- typeof arg === 'symbol' || // ES6 symbol
- typeof arg === 'undefined';
- }
- exports.isPrimitive = isPrimitive;
- exports.isBuffer = Buffer.isBuffer;
- function objectToString(o) {
- return Object.prototype.toString.call(o);
- }
- }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
- },{"../../is-buffer/index.js":109}],57:[function(require,module,exports){
- (function (Buffer){
- var elliptic = require('elliptic');
- var BN = require('bn.js');
- module.exports = function createECDH(curve) {
- return new ECDH(curve);
- };
- var aliases = {
- secp256k1: {
- name: 'secp256k1',
- byteLength: 32
- },
- secp224r1: {
- name: 'p224',
- byteLength: 28
- },
- prime256v1: {
- name: 'p256',
- byteLength: 32
- },
- prime192v1: {
- name: 'p192',
- byteLength: 24
- },
- ed25519: {
- name: 'ed25519',
- byteLength: 32
- },
- secp384r1: {
- name: 'p384',
- byteLength: 48
- },
- secp521r1: {
- name: 'p521',
- byteLength: 66
- }
- };
- aliases.p224 = aliases.secp224r1;
- aliases.p256 = aliases.secp256r1 = aliases.prime256v1;
- aliases.p192 = aliases.secp192r1 = aliases.prime192v1;
- aliases.p384 = aliases.secp384r1;
- aliases.p521 = aliases.secp521r1;
- function ECDH(curve) {
- this.curveType = aliases[curve];
- if (!this.curveType ) {
- this.curveType = {
- name: curve
- };
- }
- this.curve = new elliptic.ec(this.curveType.name);
- this.keys = void 0;
- }
- ECDH.prototype.generateKeys = function (enc, format) {
- this.keys = this.curve.genKeyPair();
- return this.getPublicKey(enc, format);
- };
- ECDH.prototype.computeSecret = function (other, inenc, enc) {
- inenc = inenc || 'utf8';
- if (!Buffer.isBuffer(other)) {
- other = new Buffer(other, inenc);
- }
- var otherPub = this.curve.keyFromPublic(other).getPublic();
- var out = otherPub.mul(this.keys.getPrivate()).getX();
- return formatReturnValue(out, enc, this.curveType.byteLength);
- };
- ECDH.prototype.getPublicKey = function (enc, format) {
- var key = this.keys.getPublic(format === 'compressed', true);
- if (format === 'hybrid') {
- if (key[key.length - 1] % 2) {
- key[0] = 7;
- } else {
- key [0] = 6;
- }
- }
- return formatReturnValue(key, enc);
- };
- ECDH.prototype.getPrivateKey = function (enc) {
- return formatReturnValue(this.keys.getPrivate(), enc);
- };
- ECDH.prototype.setPublicKey = function (pub, enc) {
- enc = enc || 'utf8';
- if (!Buffer.isBuffer(pub)) {
- pub = new Buffer(pub, enc);
- }
- this.keys._importPublic(pub);
- return this;
- };
- ECDH.prototype.setPrivateKey = function (priv, enc) {
- enc = enc || 'utf8';
- if (!Buffer.isBuffer(priv)) {
- priv = new Buffer(priv, enc);
- }
- var _priv = new BN(priv);
- _priv = _priv.toString(16);
- this.keys._importPrivate(_priv);
- return this;
- };
- function formatReturnValue(bn, enc, len) {
- if (!Array.isArray(bn)) {
- bn = bn.toArray();
- }
- var buf = new Buffer(bn);
- if (len && buf.length < len) {
- var zeros = new Buffer(len - buf.length);
- zeros.fill(0);
- buf = Buffer.concat([zeros, buf]);
- }
- if (!enc) {
- return buf;
- } else {
- return buf.toString(enc);
- }
- }
- }).call(this,require("buffer").Buffer)
- },{"bn.js":25,"buffer":54,"elliptic":74}],58:[function(require,module,exports){
- (function (Buffer){
- 'use strict'
- var inherits = require('inherits')
- var md5 = require('./md5')
- var RIPEMD160 = require('ripemd160')
- var sha = require('sha.js')
- var Base = require('cipher-base')
- function HashNoConstructor (hash) {
- Base.call(this, 'digest')
- this._hash = hash
- this.buffers = []
- }
- inherits(HashNoConstructor, Base)
- HashNoConstructor.prototype._update = function (data) {
- this.buffers.push(data)
- }
- HashNoConstructor.prototype._final = function () {
- var buf = Buffer.concat(this.buffers)
- var r = this._hash(buf)
- this.buffers = null
- return r
- }
- function Hash (hash) {
- Base.call(this, 'digest')
- this._hash = hash
- }
- inherits(Hash, Base)
- Hash.prototype._update = function (data) {
- this._hash.update(data)
- }
- Hash.prototype._final = function () {
- return this._hash.digest()
- }
- module.exports = function createHash (alg) {
- alg = alg.toLowerCase()
- if (alg === 'md5') return new HashNoConstructor(md5)
- if (alg === 'rmd160' || alg === 'ripemd160') return new Hash(new RIPEMD160())
- return new Hash(sha(alg))
- }
- }).call(this,require("buffer").Buffer)
- },{"./md5":60,"buffer":54,"cipher-base":55,"inherits":108,"ripemd160":147,"sha.js":150}],59:[function(require,module,exports){
- (function (Buffer){
- 'use strict'
- var intSize = 4
- var zeroBuffer = new Buffer(intSize)
- zeroBuffer.fill(0)
- var charSize = 8
- var hashSize = 16
- function toArray (buf) {
- if ((buf.length % intSize) !== 0) {
- var len = buf.length + (intSize - (buf.length % intSize))
- buf = Buffer.concat([buf, zeroBuffer], len)
- }
- var arr = new Array(buf.length >>> 2)
- for (var i = 0, j = 0; i < buf.length; i += intSize, j++) {
- arr[j] = buf.readInt32LE(i)
- }
- return arr
- }
- module.exports = function hash (buf, fn) {
- var arr = fn(toArray(buf), buf.length * charSize)
- buf = new Buffer(hashSize)
- for (var i = 0; i < arr.length; i++) {
- buf.writeInt32LE(arr[i], i << 2, true)
- }
- return buf
- }
- }).call(this,require("buffer").Buffer)
- },{"buffer":54}],60:[function(require,module,exports){
- 'use strict'
- /*
- * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
- * Digest Algorithm, as defined in RFC 1321.
- * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * Distributed under the BSD License
- * See http://pajhome.org.uk/crypt/md5 for more info.
- */
- var makeHash = require('./make-hash')
- /*
- * Calculate the MD5 of an array of little-endian words, and a bit length
- */
- function core_md5 (x, len) {
- /* append padding */
- x[len >> 5] |= 0x80 << ((len) % 32)
- x[(((len + 64) >>> 9) << 4) + 14] = len
- var a = 1732584193
- var b = -271733879
- var c = -1732584194
- var d = 271733878
- for (var i = 0; i < x.length; i += 16) {
- var olda = a
- var oldb = b
- var oldc = c
- var oldd = d
- a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936)
- d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586)
- c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819)
- b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330)
- a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897)
- d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426)
- c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341)
- b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983)
- a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416)
- d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417)
- c = md5_ff(c, d, a, b, x[i + 10], 17, -42063)
- b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162)
- a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682)
- d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101)
- c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290)
- b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329)
- a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510)
- d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632)
- c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713)
- b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302)
- a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691)
- d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083)
- c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335)
- b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848)
- a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438)
- d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690)
- c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961)
- b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501)
- a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467)
- d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784)
- c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473)
- b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734)
- a = md5_hh(a, b, c, d, x[i + 5], 4, -378558)
- d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463)
- c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562)
- b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556)
- a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060)
- d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353)
- c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632)
- b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640)
- a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174)
- d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222)
- c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979)
- b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189)
- a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487)
- d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835)
- c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520)
- b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651)
- a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844)
- d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415)
- c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905)
- b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055)
- a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571)
- d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606)
- c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523)
- b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799)
- a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359)
- d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744)
- c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380)
- b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649)
- a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070)
- d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379)
- c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259)
- b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551)
- a = safe_add(a, olda)
- b = safe_add(b, oldb)
- c = safe_add(c, oldc)
- d = safe_add(d, oldd)
- }
- return [a, b, c, d]
- }
- /*
- * These functions implement the four basic operations the algorithm uses.
- */
- function md5_cmn (q, a, b, x, s, t) {
- return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
- }
- function md5_ff (a, b, c, d, x, s, t) {
- return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
- }
- function md5_gg (a, b, c, d, x, s, t) {
- return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
- }
- function md5_hh (a, b, c, d, x, s, t) {
- return md5_cmn(b ^ c ^ d, a, b, x, s, t)
- }
- function md5_ii (a, b, c, d, x, s, t) {
- return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
- }
- /*
- * Add integers, wrapping at 2^32. This uses 16-bit operations internally
- * to work around bugs in some JS interpreters.
- */
- function safe_add (x, y) {
- var lsw = (x & 0xFFFF) + (y & 0xFFFF)
- var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
- return (msw << 16) | (lsw & 0xFFFF)
- }
- /*
- * Bitwise rotate a 32-bit number to the left.
- */
- function bit_rol (num, cnt) {
- return (num << cnt) | (num >>> (32 - cnt))
- }
- module.exports = function md5 (buf) {
- return makeHash(buf, core_md5)
- }
- },{"./make-hash":59}],61:[function(require,module,exports){
- 'use strict'
- var inherits = require('inherits')
- var Legacy = require('./legacy')
- var Base = require('cipher-base')
- var Buffer = require('safe-buffer').Buffer
- var md5 = require('create-hash/md5')
- var RIPEMD160 = require('ripemd160')
- var sha = require('sha.js')
- var ZEROS = Buffer.alloc(128)
- function Hmac (alg, key) {
- Base.call(this, 'digest')
- if (typeof key === 'string') {
- key = Buffer.from(key)
- }
- var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
- this._alg = alg
- this._key = key
- if (key.length > blocksize) {
- var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
- key = hash.update(key).digest()
- } else if (key.length < blocksize) {
- key = Buffer.concat([key, ZEROS], blocksize)
- }
- var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
- var opad = this._opad = Buffer.allocUnsafe(blocksize)
- for (var i = 0; i < blocksize; i++) {
- ipad[i] = key[i] ^ 0x36
- opad[i] = key[i] ^ 0x5C
- }
- this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
- this._hash.update(ipad)
- }
- inherits(Hmac, Base)
- Hmac.prototype._update = function (data) {
- this._hash.update(data)
- }
- Hmac.prototype._final = function () {
- var h = this._hash.digest()
- var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)
- return hash.update(this._opad).update(h).digest()
- }
- module.exports = function createHmac (alg, key) {
- alg = alg.toLowerCase()
- if (alg === 'rmd160' || alg === 'ripemd160') {
- return new Hmac('rmd160', key)
- }
- if (alg === 'md5') {
- return new Legacy(md5, key)
- }
- return new Hmac(alg, key)
- }
- },{"./legacy":62,"cipher-base":55,"create-hash/md5":60,"inherits":108,"ripemd160":147,"safe-buffer":148,"sha.js":150}],62:[function(require,module,exports){
- 'use strict'
- var inherits = require('inherits')
- var Buffer = require('safe-buffer').Buffer
- var Base = require('cipher-base')
- var ZEROS = Buffer.alloc(128)
- var blocksize = 64
- function Hmac (alg, key) {
- Base.call(this, 'digest')
- if (typeof key === 'string') {
- key = Buffer.from(key)
- }
- this._alg = alg
- this._key = key
- if (key.length > blocksize) {
- key = alg(key)
- } else if (key.length < blocksize) {
- key = Buffer.concat([key, ZEROS], blocksize)
- }
- var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
- var opad = this._opad = Buffer.allocUnsafe(blocksize)
- for (var i = 0; i < blocksize; i++) {
- ipad[i] = key[i] ^ 0x36
- opad[i] = key[i] ^ 0x5C
- }
- this._hash = [ipad]
- }
- inherits(Hmac, Base)
- Hmac.prototype._update = function (data) {
- this._hash.push(data)
- }
- Hmac.prototype._final = function () {
- var h = this._alg(Buffer.concat(this._hash))
- return this._alg(Buffer.concat([this._opad, h]))
- }
- module.exports = Hmac
- },{"cipher-base":55,"inherits":108,"safe-buffer":148}],63:[function(require,module,exports){
- 'use strict'
- exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')
- exports.createHash = exports.Hash = require('create-hash')
- exports.createHmac = exports.Hmac = require('create-hmac')
- var algos = require('browserify-sign/algos')
- var algoKeys = Object.keys(algos)
- var hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)
- exports.getHashes = function () {
- return hashes
- }
- var p = require('pbkdf2')
- exports.pbkdf2 = p.pbkdf2
- exports.pbkdf2Sync = p.pbkdf2Sync
- var aes = require('browserify-cipher')
- exports.Cipher = aes.Cipher
- exports.createCipher = aes.createCipher
- exports.Cipheriv = aes.Cipheriv
- exports.createCipheriv = aes.createCipheriv
- exports.Decipher = aes.Decipher
- exports.createDecipher = aes.createDecipher
- exports.Decipheriv = aes.Decipheriv
- exports.createDecipheriv = aes.createDecipheriv
- exports.getCiphers = aes.getCiphers
- exports.listCiphers = aes.listCiphers
- var dh = require('diffie-hellman')
- exports.DiffieHellmanGroup = dh.DiffieHellmanGroup
- exports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup
- exports.getDiffieHellman = dh.getDiffieHellman
- exports.createDiffieHellman = dh.createDiffieHellman
- exports.DiffieHellman = dh.DiffieHellman
- var sign = require('browserify-sign')
- exports.createSign = sign.createSign
- exports.Sign = sign.Sign
- exports.createVerify = sign.createVerify
- exports.Verify = sign.Verify
- exports.createECDH = require('create-ecdh')
- var publicEncrypt = require('public-encrypt')
- exports.publicEncrypt = publicEncrypt.publicEncrypt
- exports.privateEncrypt = publicEncrypt.privateEncrypt
- exports.publicDecrypt = publicEncrypt.publicDecrypt
- exports.privateDecrypt = publicEncrypt.privateDecrypt
- // the least I can do is make error messages for the rest of the node.js/crypto api.
- // ;[
- // 'createCredentials'
- // ].forEach(function (name) {
- // exports[name] = function () {
- // throw new Error([
- // 'sorry, ' + name + ' is not implemented yet',
- // 'we accept pull requests',
- // 'https://github.com/crypto-browserify/crypto-browserify'
- // ].join('\n'))
- // }
- // })
- exports.createCredentials = function () {
- throw new Error([
- 'sorry, createCredentials is not implemented yet',
- 'we accept pull requests',
- 'https://github.com/crypto-browserify/crypto-browserify'
- ].join('\n'))
- }
- exports.constants = {
- 'DH_CHECK_P_NOT_SAFE_PRIME': 2,
- 'DH_CHECK_P_NOT_PRIME': 1,
- 'DH_UNABLE_TO_CHECK_GENERATOR': 4,
- 'DH_NOT_SUITABLE_GENERATOR': 8,
- 'NPN_ENABLED': 1,
- 'ALPN_ENABLED': 1,
- 'RSA_PKCS1_PADDING': 1,
- 'RSA_SSLV23_PADDING': 2,
- 'RSA_NO_PADDING': 3,
- 'RSA_PKCS1_OAEP_PADDING': 4,
- 'RSA_X931_PADDING': 5,
- 'RSA_PKCS1_PSS_PADDING': 6,
- 'POINT_CONVERSION_COMPRESSED': 2,
- 'POINT_CONVERSION_UNCOMPRESSED': 4,
- 'POINT_CONVERSION_HYBRID': 6
- }
- },{"browserify-cipher":43,"browserify-sign":50,"browserify-sign/algos":47,"create-ecdh":57,"create-hash":58,"create-hmac":61,"diffie-hellman":70,"pbkdf2":120,"public-encrypt":127,"randombytes":133}],64:[function(require,module,exports){
- 'use strict';
- exports.utils = require('./des/utils');
- exports.Cipher = require('./des/cipher');
- exports.DES = require('./des/des');
- exports.CBC = require('./des/cbc');
- exports.EDE = require('./des/ede');
- },{"./des/cbc":65,"./des/cipher":66,"./des/des":67,"./des/ede":68,"./des/utils":69}],65:[function(require,module,exports){
- 'use strict';
- var assert = require('minimalistic-assert');
- var inherits = require('inherits');
- var proto = {};
- function CBCState(iv) {
- assert.equal(iv.length, 8, 'Invalid IV length');
- this.iv = new Array(8);
- for (var i = 0; i < this.iv.length; i++)
- this.iv[i] = iv[i];
- }
- function instantiate(Base) {
- function CBC(options) {
- Base.call(this, options);
- this._cbcInit();
- }
- inherits(CBC, Base);
- var keys = Object.keys(proto);
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- CBC.prototype[key] = proto[key];
- }
- CBC.create = function create(options) {
- return new CBC(options);
- };
- return CBC;
- }
- exports.instantiate = instantiate;
- proto._cbcInit = function _cbcInit() {
- var state = new CBCState(this.options.iv);
- this._cbcState = state;
- };
- proto._update = function _update(inp, inOff, out, outOff) {
- var state = this._cbcState;
- var superProto = this.constructor.super_.prototype;
- var iv = state.iv;
- if (this.type === 'encrypt') {
- for (var i = 0; i < this.blockSize; i++)
- iv[i] ^= inp[inOff + i];
- superProto._update.call(this, iv, 0, out, outOff);
- for (var i = 0; i < this.blockSize; i++)
- iv[i] = out[outOff + i];
- } else {
- superProto._update.call(this, inp, inOff, out, outOff);
- for (var i = 0; i < this.blockSize; i++)
- out[outOff + i] ^= iv[i];
- for (var i = 0; i < this.blockSize; i++)
- iv[i] = inp[inOff + i];
- }
- };
- },{"inherits":108,"minimalistic-assert":112}],66:[function(require,module,exports){
- 'use strict';
- var assert = require('minimalistic-assert');
- function Cipher(options) {
- this.options = options;
- this.type = this.options.type;
- this.blockSize = 8;
- this._init();
- this.buffer = new Array(this.blockSize);
- this.bufferOff = 0;
- }
- module.exports = Cipher;
- Cipher.prototype._init = function _init() {
- // Might be overrided
- };
- Cipher.prototype.update = function update(data) {
- if (data.length === 0)
- return [];
- if (this.type === 'decrypt')
- return this._updateDecrypt(data);
- else
- return this._updateEncrypt(data);
- };
- Cipher.prototype._buffer = function _buffer(data, off) {
- // Append data to buffer
- var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);
- for (var i = 0; i < min; i++)
- this.buffer[this.bufferOff + i] = data[off + i];
- this.bufferOff += min;
- // Shift next
- return min;
- };
- Cipher.prototype._flushBuffer = function _flushBuffer(out, off) {
- this._update(this.buffer, 0, out, off);
- this.bufferOff = 0;
- return this.blockSize;
- };
- Cipher.prototype._updateEncrypt = function _updateEncrypt(data) {
- var inputOff = 0;
- var outputOff = 0;
- var count = ((this.bufferOff + data.length) / this.blockSize) | 0;
- var out = new Array(count * this.blockSize);
- if (this.bufferOff !== 0) {
- inputOff += this._buffer(data, inputOff);
- if (this.bufferOff === this.buffer.length)
- outputOff += this._flushBuffer(out, outputOff);
- }
- // Write blocks
- var max = data.length - ((data.length - inputOff) % this.blockSize);
- for (; inputOff < max; inputOff += this.blockSize) {
- this._update(data, inputOff, out, outputOff);
- outputOff += this.blockSize;
- }
- // Queue rest
- for (; inputOff < data.length; inputOff++, this.bufferOff++)
- this.buffer[this.bufferOff] = data[inputOff];
- return out;
- };
- Cipher.prototype._updateDecrypt = function _updateDecrypt(data) {
- var inputOff = 0;
- var outputOff = 0;
- var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;
- var out = new Array(count * this.blockSize);
- // TODO(indutny): optimize it, this is far from optimal
- for (; count > 0; count--) {
- inputOff += this._buffer(data, inputOff);
- outputOff += this._flushBuffer(out, outputOff);
- }
- // Buffer rest of the input
- inputOff += this._buffer(data, inputOff);
- return out;
- };
- Cipher.prototype.final = function final(buffer) {
- var first;
- if (buffer)
- first = this.update(buffer);
- var last;
- if (this.type === 'encrypt')
- last = this._finalEncrypt();
- else
- last = this._finalDecrypt();
- if (first)
- return first.concat(last);
- else
- return last;
- };
- Cipher.prototype._pad = function _pad(buffer, off) {
- if (off === 0)
- return false;
- while (off < buffer.length)
- buffer[off++] = 0;
- return true;
- };
- Cipher.prototype._finalEncrypt = function _finalEncrypt() {
- if (!this._pad(this.buffer, this.bufferOff))
- return [];
- var out = new Array(this.blockSize);
- this._update(this.buffer, 0, out, 0);
- return out;
- };
- Cipher.prototype._unpad = function _unpad(buffer) {
- return buffer;
- };
- Cipher.prototype._finalDecrypt = function _finalDecrypt() {
- assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');
- var out = new Array(this.blockSize);
- this._flushBuffer(out, 0);
- return this._unpad(out);
- };
- },{"minimalistic-assert":112}],67:[function(require,module,exports){
- 'use strict';
- var assert = require('minimalistic-assert');
- var inherits = require('inherits');
- var des = require('../des');
- var utils = des.utils;
- var Cipher = des.Cipher;
- function DESState() {
- this.tmp = new Array(2);
- this.keys = null;
- }
- function DES(options) {
- Cipher.call(this, options);
- var state = new DESState();
- this._desState = state;
- this.deriveKeys(state, options.key);
- }
- inherits(DES, Cipher);
- module.exports = DES;
- DES.create = function create(options) {
- return new DES(options);
- };
- var shiftTable = [
- 1, 1, 2, 2, 2, 2, 2, 2,
- 1, 2, 2, 2, 2, 2, 2, 1
- ];
- DES.prototype.deriveKeys = function deriveKeys(state, key) {
- state.keys = new Array(16 * 2);
- assert.equal(key.length, this.blockSize, 'Invalid key length');
- var kL = utils.readUInt32BE(key, 0);
- var kR = utils.readUInt32BE(key, 4);
- utils.pc1(kL, kR, state.tmp, 0);
- kL = state.tmp[0];
- kR = state.tmp[1];
- for (var i = 0; i < state.keys.length; i += 2) {
- var shift = shiftTable[i >>> 1];
- kL = utils.r28shl(kL, shift);
- kR = utils.r28shl(kR, shift);
- utils.pc2(kL, kR, state.keys, i);
- }
- };
- DES.prototype._update = function _update(inp, inOff, out, outOff) {
- var state = this._desState;
- var l = utils.readUInt32BE(inp, inOff);
- var r = utils.readUInt32BE(inp, inOff + 4);
- // Initial Permutation
- utils.ip(l, r, state.tmp, 0);
- l = state.tmp[0];
- r = state.tmp[1];
- if (this.type === 'encrypt')
- this._encrypt(state, l, r, state.tmp, 0);
- else
- this._decrypt(state, l, r, state.tmp, 0);
- l = state.tmp[0];
- r = state.tmp[1];
- utils.writeUInt32BE(out, l, outOff);
- utils.writeUInt32BE(out, r, outOff + 4);
- };
- DES.prototype._pad = function _pad(buffer, off) {
- var value = buffer.length - off;
- for (var i = off; i < buffer.length; i++)
- buffer[i] = value;
- return true;
- };
- DES.prototype._unpad = function _unpad(buffer) {
- var pad = buffer[buffer.length - 1];
- for (var i = buffer.length - pad; i < buffer.length; i++)
- assert.equal(buffer[i], pad);
- return buffer.slice(0, buffer.length - pad);
- };
- DES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {
- var l = lStart;
- var r = rStart;
- // Apply f() x16 times
- for (var i = 0; i < state.keys.length; i += 2) {
- var keyL = state.keys[i];
- var keyR = state.keys[i + 1];
- // f(r, k)
- utils.expand(r, state.tmp, 0);
- keyL ^= state.tmp[0];
- keyR ^= state.tmp[1];
- var s = utils.substitute(keyL, keyR);
- var f = utils.permute(s);
- var t = r;
- r = (l ^ f) >>> 0;
- l = t;
- }
- // Reverse Initial Permutation
- utils.rip(r, l, out, off);
- };
- DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {
- var l = rStart;
- var r = lStart;
- // Apply f() x16 times
- for (var i = state.keys.length - 2; i >= 0; i -= 2) {
- var keyL = state.keys[i];
- var keyR = state.keys[i + 1];
- // f(r, k)
- utils.expand(l, state.tmp, 0);
- keyL ^= state.tmp[0];
- keyR ^= state.tmp[1];
- var s = utils.substitute(keyL, keyR);
- var f = utils.permute(s);
- var t = l;
- l = (r ^ f) >>> 0;
- r = t;
- }
- // Reverse Initial Permutation
- utils.rip(l, r, out, off);
- };
- },{"../des":64,"inherits":108,"minimalistic-assert":112}],68:[function(require,module,exports){
- 'use strict';
- var assert = require('minimalistic-assert');
- var inherits = require('inherits');
- var des = require('../des');
- var Cipher = des.Cipher;
- var DES = des.DES;
- function EDEState(type, key) {
- assert.equal(key.length, 24, 'Invalid key length');
- var k1 = key.slice(0, 8);
- var k2 = key.slice(8, 16);
- var k3 = key.slice(16, 24);
- if (type === 'encrypt') {
- this.ciphers = [
- DES.create({ type: 'encrypt', key: k1 }),
- DES.create({ type: 'decrypt', key: k2 }),
- DES.create({ type: 'encrypt', key: k3 })
- ];
- } else {
- this.ciphers = [
- DES.create({ type: 'decrypt', key: k3 }),
- DES.create({ type: 'encrypt', key: k2 }),
- DES.create({ type: 'decrypt', key: k1 })
- ];
- }
- }
- function EDE(options) {
- Cipher.call(this, options);
- var state = new EDEState(this.type, this.options.key);
- this._edeState = state;
- }
- inherits(EDE, Cipher);
- module.exports = EDE;
- EDE.create = function create(options) {
- return new EDE(options);
- };
- EDE.prototype._update = function _update(inp, inOff, out, outOff) {
- var state = this._edeState;
- state.ciphers[0]._update(inp, inOff, out, outOff);
- state.ciphers[1]._update(out, outOff, out, outOff);
- state.ciphers[2]._update(out, outOff, out, outOff);
- };
- EDE.prototype._pad = DES.prototype._pad;
- EDE.prototype._unpad = DES.prototype._unpad;
- },{"../des":64,"inherits":108,"minimalistic-assert":112}],69:[function(require,module,exports){
- 'use strict';
- exports.readUInt32BE = function readUInt32BE(bytes, off) {
- var res = (bytes[0 + off] << 24) |
- (bytes[1 + off] << 16) |
- (bytes[2 + off] << 8) |
- bytes[3 + off];
- return res >>> 0;
- };
- exports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {
- bytes[0 + off] = value >>> 24;
- bytes[1 + off] = (value >>> 16) & 0xff;
- bytes[2 + off] = (value >>> 8) & 0xff;
- bytes[3 + off] = value & 0xff;
- };
- exports.ip = function ip(inL, inR, out, off) {
- var outL = 0;
- var outR = 0;
- for (var i = 6; i >= 0; i -= 2) {
- for (var j = 0; j <= 24; j += 8) {
- outL <<= 1;
- outL |= (inR >>> (j + i)) & 1;
- }
- for (var j = 0; j <= 24; j += 8) {
- outL <<= 1;
- outL |= (inL >>> (j + i)) & 1;
- }
- }
- for (var i = 6; i >= 0; i -= 2) {
- for (var j = 1; j <= 25; j += 8) {
- outR <<= 1;
- outR |= (inR >>> (j + i)) & 1;
- }
- for (var j = 1; j <= 25; j += 8) {
- outR <<= 1;
- outR |= (inL >>> (j + i)) & 1;
- }
- }
- out[off + 0] = outL >>> 0;
- out[off + 1] = outR >>> 0;
- };
- exports.rip = function rip(inL, inR, out, off) {
- var outL = 0;
- var outR = 0;
- for (var i = 0; i < 4; i++) {
- for (var j = 24; j >= 0; j -= 8) {
- outL <<= 1;
- outL |= (inR >>> (j + i)) & 1;
- outL <<= 1;
- outL |= (inL >>> (j + i)) & 1;
- }
- }
- for (var i = 4; i < 8; i++) {
- for (var j = 24; j >= 0; j -= 8) {
- outR <<= 1;
- outR |= (inR >>> (j + i)) & 1;
- outR <<= 1;
- outR |= (inL >>> (j + i)) & 1;
- }
- }
- out[off + 0] = outL >>> 0;
- out[off + 1] = outR >>> 0;
- };
- exports.pc1 = function pc1(inL, inR, out, off) {
- var outL = 0;
- var outR = 0;
- // 7, 15, 23, 31, 39, 47, 55, 63
- // 6, 14, 22, 30, 39, 47, 55, 63
- // 5, 13, 21, 29, 39, 47, 55, 63
- // 4, 12, 20, 28
- for (var i = 7; i >= 5; i--) {
- for (var j = 0; j <= 24; j += 8) {
- outL <<= 1;
- outL |= (inR >> (j + i)) & 1;
- }
- for (var j = 0; j <= 24; j += 8) {
- outL <<= 1;
- outL |= (inL >> (j + i)) & 1;
- }
- }
- for (var j = 0; j <= 24; j += 8) {
- outL <<= 1;
- outL |= (inR >> (j + i)) & 1;
- }
- // 1, 9, 17, 25, 33, 41, 49, 57
- // 2, 10, 18, 26, 34, 42, 50, 58
- // 3, 11, 19, 27, 35, 43, 51, 59
- // 36, 44, 52, 60
- for (var i = 1; i <= 3; i++) {
- for (var j = 0; j <= 24; j += 8) {
- outR <<= 1;
- outR |= (inR >> (j + i)) & 1;
- }
- for (var j = 0; j <= 24; j += 8) {
- outR <<= 1;
- outR |= (inL >> (j + i)) & 1;
- }
- }
- for (var j = 0; j <= 24; j += 8) {
- outR <<= 1;
- outR |= (inL >> (j + i)) & 1;
- }
- out[off + 0] = outL >>> 0;
- out[off + 1] = outR >>> 0;
- };
- exports.r28shl = function r28shl(num, shift) {
- return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));
- };
- var pc2table = [
- // inL => outL
- 14, 11, 17, 4, 27, 23, 25, 0,
- 13, 22, 7, 18, 5, 9, 16, 24,
- 2, 20, 12, 21, 1, 8, 15, 26,
- // inR => outR
- 15, 4, 25, 19, 9, 1, 26, 16,
- 5, 11, 23, 8, 12, 7, 17, 0,
- 22, 3, 10, 14, 6, 20, 27, 24
- ];
- exports.pc2 = function pc2(inL, inR, out, off) {
- var outL = 0;
- var outR = 0;
- var len = pc2table.length >>> 1;
- for (var i = 0; i < len; i++) {
- outL <<= 1;
- outL |= (inL >>> pc2table[i]) & 0x1;
- }
- for (var i = len; i < pc2table.length; i++) {
- outR <<= 1;
- outR |= (inR >>> pc2table[i]) & 0x1;
- }
- out[off + 0] = outL >>> 0;
- out[off + 1] = outR >>> 0;
- };
- exports.expand = function expand(r, out, off) {
- var outL = 0;
- var outR = 0;
- outL = ((r & 1) << 5) | (r >>> 27);
- for (var i = 23; i >= 15; i -= 4) {
- outL <<= 6;
- outL |= (r >>> i) & 0x3f;
- }
- for (var i = 11; i >= 3; i -= 4) {
- outR |= (r >>> i) & 0x3f;
- outR <<= 6;
- }
- outR |= ((r & 0x1f) << 1) | (r >>> 31);
- out[off + 0] = outL >>> 0;
- out[off + 1] = outR >>> 0;
- };
- var sTable = [
- 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,
- 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,
- 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,
- 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,
- 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,
- 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,
- 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,
- 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,
- 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,
- 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,
- 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,
- 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,
- 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,
- 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,
- 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,
- 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,
- 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,
- 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,
- 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,
- 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,
- 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,
- 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,
- 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,
- 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,
- 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,
- 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,
- 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,
- 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,
- 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,
- 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,
- 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,
- 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11
- ];
- exports.substitute = function substitute(inL, inR) {
- var out = 0;
- for (var i = 0; i < 4; i++) {
- var b = (inL >>> (18 - i * 6)) & 0x3f;
- var sb = sTable[i * 0x40 + b];
- out <<= 4;
- out |= sb;
- }
- for (var i = 0; i < 4; i++) {
- var b = (inR >>> (18 - i * 6)) & 0x3f;
- var sb = sTable[4 * 0x40 + i * 0x40 + b];
- out <<= 4;
- out |= sb;
- }
- return out >>> 0;
- };
- var permuteTable = [
- 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,
- 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7
- ];
- exports.permute = function permute(num) {
- var out = 0;
- for (var i = 0; i < permuteTable.length; i++) {
- out <<= 1;
- out |= (num >>> permuteTable[i]) & 0x1;
- }
- return out >>> 0;
- };
- exports.padSplit = function padSplit(num, size, group) {
- var str = num.toString(2);
- while (str.length < size)
- str = '0' + str;
- var out = [];
- for (var i = 0; i < size; i += group)
- out.push(str.slice(i, i + group));
- return out.join(' ');
- };
- },{}],70:[function(require,module,exports){
- (function (Buffer){
- var generatePrime = require('./lib/generatePrime')
- var primes = require('./lib/primes.json')
- var DH = require('./lib/dh')
- function getDiffieHellman (mod) {
- var prime = new Buffer(primes[mod].prime, 'hex')
- var gen = new Buffer(primes[mod].gen, 'hex')
- return new DH(prime, gen)
- }
- var ENCODINGS = {
- 'binary': true, 'hex': true, 'base64': true
- }
- function createDiffieHellman (prime, enc, generator, genc) {
- if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {
- return createDiffieHellman(prime, 'binary', enc, generator)
- }
- enc = enc || 'binary'
- genc = genc || 'binary'
- generator = generator || new Buffer([2])
- if (!Buffer.isBuffer(generator)) {
- generator = new Buffer(generator, genc)
- }
- if (typeof prime === 'number') {
- return new DH(generatePrime(prime, generator), generator, true)
- }
- if (!Buffer.isBuffer(prime)) {
- prime = new Buffer(prime, enc)
- }
- return new DH(prime, generator, true)
- }
- exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman
- exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman
- }).call(this,require("buffer").Buffer)
- },{"./lib/dh":71,"./lib/generatePrime":72,"./lib/primes.json":73,"buffer":54}],71:[function(require,module,exports){
- (function (Buffer){
- var BN = require('bn.js');
- var MillerRabin = require('miller-rabin');
- var millerRabin = new MillerRabin();
- var TWENTYFOUR = new BN(24);
- var ELEVEN = new BN(11);
- var TEN = new BN(10);
- var THREE = new BN(3);
- var SEVEN = new BN(7);
- var primes = require('./generatePrime');
- var randomBytes = require('randombytes');
- module.exports = DH;
- function setPublicKey(pub, enc) {
- enc = enc || 'utf8';
- if (!Buffer.isBuffer(pub)) {
- pub = new Buffer(pub, enc);
- }
- this._pub = new BN(pub);
- return this;
- }
- function setPrivateKey(priv, enc) {
- enc = enc || 'utf8';
- if (!Buffer.isBuffer(priv)) {
- priv = new Buffer(priv, enc);
- }
- this._priv = new BN(priv);
- return this;
- }
- var primeCache = {};
- function checkPrime(prime, generator) {
- var gen = generator.toString('hex');
- var hex = [gen, prime.toString(16)].join('_');
- if (hex in primeCache) {
- return primeCache[hex];
- }
- var error = 0;
- if (prime.isEven() ||
- !primes.simpleSieve ||
- !primes.fermatTest(prime) ||
- !millerRabin.test(prime)) {
- //not a prime so +1
- error += 1;
- if (gen === '02' || gen === '05') {
- // we'd be able to check the generator
- // it would fail so +8
- error += 8;
- } else {
- //we wouldn't be able to test the generator
- // so +4
- error += 4;
- }
- primeCache[hex] = error;
- return error;
- }
- if (!millerRabin.test(prime.shrn(1))) {
- //not a safe prime
- error += 2;
- }
- var rem;
- switch (gen) {
- case '02':
- if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {
- // unsuidable generator
- error += 8;
- }
- break;
- case '05':
- rem = prime.mod(TEN);
- if (rem.cmp(THREE) && rem.cmp(SEVEN)) {
- // prime mod 10 needs to equal 3 or 7
- error += 8;
- }
- break;
- default:
- error += 4;
- }
- primeCache[hex] = error;
- return error;
- }
- function DH(prime, generator, malleable) {
- this.setGenerator(generator);
- this.__prime = new BN(prime);
- this._prime = BN.mont(this.__prime);
- this._primeLen = prime.length;
- this._pub = undefined;
- this._priv = undefined;
- this._primeCode = undefined;
- if (malleable) {
- this.setPublicKey = setPublicKey;
- this.setPrivateKey = setPrivateKey;
- } else {
- this._primeCode = 8;
- }
- }
- Object.defineProperty(DH.prototype, 'verifyError', {
- enumerable: true,
- get: function () {
- if (typeof this._primeCode !== 'number') {
- this._primeCode = checkPrime(this.__prime, this.__gen);
- }
- return this._primeCode;
- }
- });
- DH.prototype.generateKeys = function () {
- if (!this._priv) {
- this._priv = new BN(randomBytes(this._primeLen));
- }
- this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();
- return this.getPublicKey();
- };
- DH.prototype.computeSecret = function (other) {
- other = new BN(other);
- other = other.toRed(this._prime);
- var secret = other.redPow(this._priv).fromRed();
- var out = new Buffer(secret.toArray());
- var prime = this.getPrime();
- if (out.length < prime.length) {
- var front = new Buffer(prime.length - out.length);
- front.fill(0);
- out = Buffer.concat([front, out]);
- }
- return out;
- };
- DH.prototype.getPublicKey = function getPublicKey(enc) {
- return formatReturnValue(this._pub, enc);
- };
- DH.prototype.getPrivateKey = function getPrivateKey(enc) {
- return formatReturnValue(this._priv, enc);
- };
- DH.prototype.getPrime = function (enc) {
- return formatReturnValue(this.__prime, enc);
- };
- DH.prototype.getGenerator = function (enc) {
- return formatReturnValue(this._gen, enc);
- };
- DH.prototype.setGenerator = function (gen, enc) {
- enc = enc || 'utf8';
- if (!Buffer.isBuffer(gen)) {
- gen = new Buffer(gen, enc);
- }
- this.__gen = gen;
- this._gen = new BN(gen);
- return this;
- };
- function formatReturnValue(bn, enc) {
- var buf = new Buffer(bn.toArray());
- if (!enc) {
- return buf;
- } else {
- return buf.toString(enc);
- }
- }
- }).call(this,require("buffer").Buffer)
- },{"./generatePrime":72,"bn.js":25,"buffer":54,"miller-rabin":111,"randombytes":133}],72:[function(require,module,exports){
- var randomBytes = require('randombytes');
- module.exports = findPrime;
- findPrime.simpleSieve = simpleSieve;
- findPrime.fermatTest = fermatTest;
- var BN = require('bn.js');
- var TWENTYFOUR = new BN(24);
- var MillerRabin = require('miller-rabin');
- var millerRabin = new MillerRabin();
- var ONE = new BN(1);
- var TWO = new BN(2);
- var FIVE = new BN(5);
- var SIXTEEN = new BN(16);
- var EIGHT = new BN(8);
- var TEN = new BN(10);
- var THREE = new BN(3);
- var SEVEN = new BN(7);
- var ELEVEN = new BN(11);
- var FOUR = new BN(4);
- var TWELVE = new BN(12);
- var primes = null;
- function _getPrimes() {
- if (primes !== null)
- return primes;
- var limit = 0x100000;
- var res = [];
- res[0] = 2;
- for (var i = 1, k = 3; k < limit; k += 2) {
- var sqrt = Math.ceil(Math.sqrt(k));
- for (var j = 0; j < i && res[j] <= sqrt; j++)
- if (k % res[j] === 0)
- break;
- if (i !== j && res[j] <= sqrt)
- continue;
- res[i++] = k;
- }
- primes = res;
- return res;
- }
- function simpleSieve(p) {
- var primes = _getPrimes();
- for (var i = 0; i < primes.length; i++)
- if (p.modn(primes[i]) === 0) {
- if (p.cmpn(primes[i]) === 0) {
- return true;
- } else {
- return false;
- }
- }
- return true;
- }
- function fermatTest(p) {
- var red = BN.mont(p);
- return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;
- }
- function findPrime(bits, gen) {
- if (bits < 16) {
- // this is what openssl does
- if (gen === 2 || gen === 5) {
- return new BN([0x8c, 0x7b]);
- } else {
- return new BN([0x8c, 0x27]);
- }
- }
- gen = new BN(gen);
- var num, n2;
- while (true) {
- num = new BN(randomBytes(Math.ceil(bits / 8)));
- while (num.bitLength() > bits) {
- num.ishrn(1);
- }
- if (num.isEven()) {
- num.iadd(ONE);
- }
- if (!num.testn(1)) {
- num.iadd(TWO);
- }
- if (!gen.cmp(TWO)) {
- while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {
- num.iadd(FOUR);
- }
- } else if (!gen.cmp(FIVE)) {
- while (num.mod(TEN).cmp(THREE)) {
- num.iadd(FOUR);
- }
- }
- n2 = num.shrn(1);
- if (simpleSieve(n2) && simpleSieve(num) &&
- fermatTest(n2) && fermatTest(num) &&
- millerRabin.test(n2) && millerRabin.test(num)) {
- return num;
- }
- }
- }
- },{"bn.js":25,"miller-rabin":111,"randombytes":133}],73:[function(require,module,exports){
- module.exports={
- "modp1": {
- "gen": "02",
- "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"
- },
- "modp2": {
- "gen": "02",
- "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"
- },
- "modp5": {
- "gen": "02",
- "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"
- },
- "modp14": {
- "gen": "02",
- "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"
- },
- "modp15": {
- "gen": "02",
- "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"
- },
- "modp16": {
- "gen": "02",
- "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"
- },
- "modp17": {
- "gen": "02",
- "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"
- },
- "modp18": {
- "gen": "02",
- "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"
- }
- }
- },{}],74:[function(require,module,exports){
- 'use strict';
- var elliptic = exports;
- elliptic.version = require('../package.json').version;
- elliptic.utils = require('./elliptic/utils');
- elliptic.rand = require('brorand');
- elliptic.curve = require('./elliptic/curve');
- elliptic.curves = require('./elliptic/curves');
- // Protocols
- elliptic.ec = require('./elliptic/ec');
- elliptic.eddsa = require('./elliptic/eddsa');
- },{"../package.json":89,"./elliptic/curve":77,"./elliptic/curves":80,"./elliptic/ec":81,"./elliptic/eddsa":84,"./elliptic/utils":88,"brorand":26}],75:[function(require,module,exports){
- 'use strict';
- var BN = require('bn.js');
- var elliptic = require('../../elliptic');
- var utils = elliptic.utils;
- var getNAF = utils.getNAF;
- var getJSF = utils.getJSF;
- var assert = utils.assert;
- function BaseCurve(type, conf) {
- this.type = type;
- this.p = new BN(conf.p, 16);
- // Use Montgomery, when there is no fast reduction for the prime
- this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
- // Useful for many curves
- this.zero = new BN(0).toRed(this.red);
- this.one = new BN(1).toRed(this.red);
- this.two = new BN(2).toRed(this.red);
- // Curve configuration, optional
- this.n = conf.n && new BN(conf.n, 16);
- this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
- // Temporary arrays
- this._wnafT1 = new Array(4);
- this._wnafT2 = new Array(4);
- this._wnafT3 = new Array(4);
- this._wnafT4 = new Array(4);
- // Generalized Greg Maxwell's trick
- var adjustCount = this.n && this.p.div(this.n);
- if (!adjustCount || adjustCount.cmpn(100) > 0) {
- this.redN = null;
- } else {
- this._maxwellTrick = true;
- this.redN = this.n.toRed(this.red);
- }
- }
- module.exports = BaseCurve;
- BaseCurve.prototype.point = function point() {
- throw new Error('Not implemented');
- };
- BaseCurve.prototype.validate = function validate() {
- throw new Error('Not implemented');
- };
- BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
- assert(p.precomputed);
- var doubles = p._getDoubles();
- var naf = getNAF(k, 1);
- var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
- I /= 3;
- // Translate into more windowed form
- var repr = [];
- for (var j = 0; j < naf.length; j += doubles.step) {
- var nafW = 0;
- for (var k = j + doubles.step - 1; k >= j; k--)
- nafW = (nafW << 1) + naf[k];
- repr.push(nafW);
- }
- var a = this.jpoint(null, null, null);
- var b = this.jpoint(null, null, null);
- for (var i = I; i > 0; i--) {
- for (var j = 0; j < repr.length; j++) {
- var nafW = repr[j];
- if (nafW === i)
- b = b.mixedAdd(doubles.points[j]);
- else if (nafW === -i)
- b = b.mixedAdd(doubles.points[j].neg());
- }
- a = a.add(b);
- }
- return a.toP();
- };
- BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
- var w = 4;
- // Precompute window
- var nafPoints = p._getNAFPoints(w);
- w = nafPoints.wnd;
- var wnd = nafPoints.points;
- // Get NAF form
- var naf = getNAF(k, w);
- // Add `this`*(N+1) for every w-NAF index
- var acc = this.jpoint(null, null, null);
- for (var i = naf.length - 1; i >= 0; i--) {
- // Count zeroes
- for (var k = 0; i >= 0 && naf[i] === 0; i--)
- k++;
- if (i >= 0)
- k++;
- acc = acc.dblp(k);
- if (i < 0)
- break;
- var z = naf[i];
- assert(z !== 0);
- if (p.type === 'affine') {
- // J +- P
- if (z > 0)
- acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
- else
- acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
- } else {
- // J +- J
- if (z > 0)
- acc = acc.add(wnd[(z - 1) >> 1]);
- else
- acc = acc.add(wnd[(-z - 1) >> 1].neg());
- }
- }
- return p.type === 'affine' ? acc.toP() : acc;
- };
- BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
- points,
- coeffs,
- len,
- jacobianResult) {
- var wndWidth = this._wnafT1;
- var wnd = this._wnafT2;
- var naf = this._wnafT3;
- // Fill all arrays
- var max = 0;
- for (var i = 0; i < len; i++) {
- var p = points[i];
- var nafPoints = p._getNAFPoints(defW);
- wndWidth[i] = nafPoints.wnd;
- wnd[i] = nafPoints.points;
- }
- // Comb small window NAFs
- for (var i = len - 1; i >= 1; i -= 2) {
- var a = i - 1;
- var b = i;
- if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
- naf[a] = getNAF(coeffs[a], wndWidth[a]);
- naf[b] = getNAF(coeffs[b], wndWidth[b]);
- max = Math.max(naf[a].length, max);
- max = Math.max(naf[b].length, max);
- continue;
- }
- var comb = [
- points[a], /* 1 */
- null, /* 3 */
- null, /* 5 */
- points[b] /* 7 */
- ];
- // Try to avoid Projective points, if possible
- if (points[a].y.cmp(points[b].y) === 0) {
- comb[1] = points[a].add(points[b]);
- comb[2] = points[a].toJ().mixedAdd(points[b].neg());
- } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
- comb[1] = points[a].toJ().mixedAdd(points[b]);
- comb[2] = points[a].add(points[b].neg());
- } else {
- comb[1] = points[a].toJ().mixedAdd(points[b]);
- comb[2] = points[a].toJ().mixedAdd(points[b].neg());
- }
- var index = [
- -3, /* -1 -1 */
- -1, /* -1 0 */
- -5, /* -1 1 */
- -7, /* 0 -1 */
- 0, /* 0 0 */
- 7, /* 0 1 */
- 5, /* 1 -1 */
- 1, /* 1 0 */
- 3 /* 1 1 */
- ];
- var jsf = getJSF(coeffs[a], coeffs[b]);
- max = Math.max(jsf[0].length, max);
- naf[a] = new Array(max);
- naf[b] = new Array(max);
- for (var j = 0; j < max; j++) {
- var ja = jsf[0][j] | 0;
- var jb = jsf[1][j] | 0;
- naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
- naf[b][j] = 0;
- wnd[a] = comb;
- }
- }
- var acc = this.jpoint(null, null, null);
- var tmp = this._wnafT4;
- for (var i = max; i >= 0; i--) {
- var k = 0;
- while (i >= 0) {
- var zero = true;
- for (var j = 0; j < len; j++) {
- tmp[j] = naf[j][i] | 0;
- if (tmp[j] !== 0)
- zero = false;
- }
- if (!zero)
- break;
- k++;
- i--;
- }
- if (i >= 0)
- k++;
- acc = acc.dblp(k);
- if (i < 0)
- break;
- for (var j = 0; j < len; j++) {
- var z = tmp[j];
- var p;
- if (z === 0)
- continue;
- else if (z > 0)
- p = wnd[j][(z - 1) >> 1];
- else if (z < 0)
- p = wnd[j][(-z - 1) >> 1].neg();
- if (p.type === 'affine')
- acc = acc.mixedAdd(p);
- else
- acc = acc.add(p);
- }
- }
- // Zeroify references
- for (var i = 0; i < len; i++)
- wnd[i] = null;
- if (jacobianResult)
- return acc;
- else
- return acc.toP();
- };
- function BasePoint(curve, type) {
- this.curve = curve;
- this.type = type;
- this.precomputed = null;
- }
- BaseCurve.BasePoint = BasePoint;
- BasePoint.prototype.eq = function eq(/*other*/) {
- throw new Error('Not implemented');
- };
- BasePoint.prototype.validate = function validate() {
- return this.curve.validate(this);
- };
- BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
- bytes = utils.toArray(bytes, enc);
- var len = this.p.byteLength();
- // uncompressed, hybrid-odd, hybrid-even
- if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
- bytes.length - 1 === 2 * len) {
- if (bytes[0] === 0x06)
- assert(bytes[bytes.length - 1] % 2 === 0);
- else if (bytes[0] === 0x07)
- assert(bytes[bytes.length - 1] % 2 === 1);
- var res = this.point(bytes.slice(1, 1 + len),
- bytes.slice(1 + len, 1 + 2 * len));
- return res;
- } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
- bytes.length - 1 === len) {
- return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
- }
- throw new Error('Unknown point format');
- };
- BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
- return this.encode(enc, true);
- };
- BasePoint.prototype._encode = function _encode(compact) {
- var len = this.curve.p.byteLength();
- var x = this.getX().toArray('be', len);
- if (compact)
- return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
- return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
- };
- BasePoint.prototype.encode = function encode(enc, compact) {
- return utils.encode(this._encode(compact), enc);
- };
- BasePoint.prototype.precompute = function precompute(power) {
- if (this.precomputed)
- return this;
- var precomputed = {
- doubles: null,
- naf: null,
- beta: null
- };
- precomputed.naf = this._getNAFPoints(8);
- precomputed.doubles = this._getDoubles(4, power);
- precomputed.beta = this._getBeta();
- this.precomputed = precomputed;
- return this;
- };
- BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
- if (!this.precomputed)
- return false;
- var doubles = this.precomputed.doubles;
- if (!doubles)
- return false;
- return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
- };
- BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
- if (this.precomputed && this.precomputed.doubles)
- return this.precomputed.doubles;
- var doubles = [ this ];
- var acc = this;
- for (var i = 0; i < power; i += step) {
- for (var j = 0; j < step; j++)
- acc = acc.dbl();
- doubles.push(acc);
- }
- return {
- step: step,
- points: doubles
- };
- };
- BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
- if (this.precomputed && this.precomputed.naf)
- return this.precomputed.naf;
- var res = [ this ];
- var max = (1 << wnd) - 1;
- var dbl = max === 1 ? null : this.dbl();
- for (var i = 1; i < max; i++)
- res[i] = res[i - 1].add(dbl);
- return {
- wnd: wnd,
- points: res
- };
- };
- BasePoint.prototype._getBeta = function _getBeta() {
- return null;
- };
- BasePoint.prototype.dblp = function dblp(k) {
- var r = this;
- for (var i = 0; i < k; i++)
- r = r.dbl();
- return r;
- };
- },{"../../elliptic":74,"bn.js":25}],76:[function(require,module,exports){
- 'use strict';
- var curve = require('../curve');
- var elliptic = require('../../elliptic');
- var BN = require('bn.js');
- var inherits = require('inherits');
- var Base = curve.base;
- var assert = elliptic.utils.assert;
- function EdwardsCurve(conf) {
- // NOTE: Important as we are creating point in Base.call()
- this.twisted = (conf.a | 0) !== 1;
- this.mOneA = this.twisted && (conf.a | 0) === -1;
- this.extended = this.mOneA;
- Base.call(this, 'edwards', conf);
- this.a = new BN(conf.a, 16).umod(this.red.m);
- this.a = this.a.toRed(this.red);
- this.c = new BN(conf.c, 16).toRed(this.red);
- this.c2 = this.c.redSqr();
- this.d = new BN(conf.d, 16).toRed(this.red);
- this.dd = this.d.redAdd(this.d);
- assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
- this.oneC = (conf.c | 0) === 1;
- }
- inherits(EdwardsCurve, Base);
- module.exports = EdwardsCurve;
- EdwardsCurve.prototype._mulA = function _mulA(num) {
- if (this.mOneA)
- return num.redNeg();
- else
- return this.a.redMul(num);
- };
- EdwardsCurve.prototype._mulC = function _mulC(num) {
- if (this.oneC)
- return num;
- else
- return this.c.redMul(num);
- };
- // Just for compatibility with Short curve
- EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
- return this.point(x, y, z, t);
- };
- EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
- x = new BN(x, 16);
- if (!x.red)
- x = x.toRed(this.red);
- var x2 = x.redSqr();
- var rhs = this.c2.redSub(this.a.redMul(x2));
- var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
- var y2 = rhs.redMul(lhs.redInvm());
- var y = y2.redSqrt();
- if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
- throw new Error('invalid point');
- var isOdd = y.fromRed().isOdd();
- if (odd && !isOdd || !odd && isOdd)
- y = y.redNeg();
- return this.point(x, y);
- };
- EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
- y = new BN(y, 16);
- if (!y.red)
- y = y.toRed(this.red);
- // x^2 = (y^2 - 1) / (d y^2 + 1)
- var y2 = y.redSqr();
- var lhs = y2.redSub(this.one);
- var rhs = y2.redMul(this.d).redAdd(this.one);
- var x2 = lhs.redMul(rhs.redInvm());
- if (x2.cmp(this.zero) === 0) {
- if (odd)
- throw new Error('invalid point');
- else
- return this.point(this.zero, y);
- }
- var x = x2.redSqrt();
- if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
- throw new Error('invalid point');
- if (x.isOdd() !== odd)
- x = x.redNeg();
- return this.point(x, y);
- };
- EdwardsCurve.prototype.validate = function validate(point) {
- if (point.isInfinity())
- return true;
- // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
- point.normalize();
- var x2 = point.x.redSqr();
- var y2 = point.y.redSqr();
- var lhs = x2.redMul(this.a).redAdd(y2);
- var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
- return lhs.cmp(rhs) === 0;
- };
- function Point(curve, x, y, z, t) {
- Base.BasePoint.call(this, curve, 'projective');
- if (x === null && y === null && z === null) {
- this.x = this.curve.zero;
- this.y = this.curve.one;
- this.z = this.curve.one;
- this.t = this.curve.zero;
- this.zOne = true;
- } else {
- this.x = new BN(x, 16);
- this.y = new BN(y, 16);
- this.z = z ? new BN(z, 16) : this.curve.one;
- this.t = t && new BN(t, 16);
- if (!this.x.red)
- this.x = this.x.toRed(this.curve.red);
- if (!this.y.red)
- this.y = this.y.toRed(this.curve.red);
- if (!this.z.red)
- this.z = this.z.toRed(this.curve.red);
- if (this.t && !this.t.red)
- this.t = this.t.toRed(this.curve.red);
- this.zOne = this.z === this.curve.one;
- // Use extended coordinates
- if (this.curve.extended && !this.t) {
- this.t = this.x.redMul(this.y);
- if (!this.zOne)
- this.t = this.t.redMul(this.z.redInvm());
- }
- }
- }
- inherits(Point, Base.BasePoint);
- EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
- return Point.fromJSON(this, obj);
- };
- EdwardsCurve.prototype.point = function point(x, y, z, t) {
- return new Point(this, x, y, z, t);
- };
- Point.fromJSON = function fromJSON(curve, obj) {
- return new Point(curve, obj[0], obj[1], obj[2]);
- };
- Point.prototype.inspect = function inspect() {
- if (this.isInfinity())
- return '<EC Point Infinity>';
- return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
- ' y: ' + this.y.fromRed().toString(16, 2) +
- ' z: ' + this.z.fromRed().toString(16, 2) + '>';
- };
- Point.prototype.isInfinity = function isInfinity() {
- // XXX This code assumes that zero is always zero in red
- return this.x.cmpn(0) === 0 &&
- this.y.cmp(this.z) === 0;
- };
- Point.prototype._extDbl = function _extDbl() {
- // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
- // #doubling-dbl-2008-hwcd
- // 4M + 4S
- // A = X1^2
- var a = this.x.redSqr();
- // B = Y1^2
- var b = this.y.redSqr();
- // C = 2 * Z1^2
- var c = this.z.redSqr();
- c = c.redIAdd(c);
- // D = a * A
- var d = this.curve._mulA(a);
- // E = (X1 + Y1)^2 - A - B
- var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
- // G = D + B
- var g = d.redAdd(b);
- // F = G - C
- var f = g.redSub(c);
- // H = D - B
- var h = d.redSub(b);
- // X3 = E * F
- var nx = e.redMul(f);
- // Y3 = G * H
- var ny = g.redMul(h);
- // T3 = E * H
- var nt = e.redMul(h);
- // Z3 = F * G
- var nz = f.redMul(g);
- return this.curve.point(nx, ny, nz, nt);
- };
- Point.prototype._projDbl = function _projDbl() {
- // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
- // #doubling-dbl-2008-bbjlp
- // #doubling-dbl-2007-bl
- // and others
- // Generally 3M + 4S or 2M + 4S
- // B = (X1 + Y1)^2
- var b = this.x.redAdd(this.y).redSqr();
- // C = X1^2
- var c = this.x.redSqr();
- // D = Y1^2
- var d = this.y.redSqr();
- var nx;
- var ny;
- var nz;
- if (this.curve.twisted) {
- // E = a * C
- var e = this.curve._mulA(c);
- // F = E + D
- var f = e.redAdd(d);
- if (this.zOne) {
- // X3 = (B - C - D) * (F - 2)
- nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
- // Y3 = F * (E - D)
- ny = f.redMul(e.redSub(d));
- // Z3 = F^2 - 2 * F
- nz = f.redSqr().redSub(f).redSub(f);
- } else {
- // H = Z1^2
- var h = this.z.redSqr();
- // J = F - 2 * H
- var j = f.redSub(h).redISub(h);
- // X3 = (B-C-D)*J
- nx = b.redSub(c).redISub(d).redMul(j);
- // Y3 = F * (E - D)
- ny = f.redMul(e.redSub(d));
- // Z3 = F * J
- nz = f.redMul(j);
- }
- } else {
- // E = C + D
- var e = c.redAdd(d);
- // H = (c * Z1)^2
- var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
- // J = E - 2 * H
- var j = e.redSub(h).redSub(h);
- // X3 = c * (B - E) * J
- nx = this.curve._mulC(b.redISub(e)).redMul(j);
- // Y3 = c * E * (C - D)
- ny = this.curve._mulC(e).redMul(c.redISub(d));
- // Z3 = E * J
- nz = e.redMul(j);
- }
- return this.curve.point(nx, ny, nz);
- };
- Point.prototype.dbl = function dbl() {
- if (this.isInfinity())
- return this;
- // Double in extended coordinates
- if (this.curve.extended)
- return this._extDbl();
- else
- return this._projDbl();
- };
- Point.prototype._extAdd = function _extAdd(p) {
- // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
- // #addition-add-2008-hwcd-3
- // 8M
- // A = (Y1 - X1) * (Y2 - X2)
- var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
- // B = (Y1 + X1) * (Y2 + X2)
- var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
- // C = T1 * k * T2
- var c = this.t.redMul(this.curve.dd).redMul(p.t);
- // D = Z1 * 2 * Z2
- var d = this.z.redMul(p.z.redAdd(p.z));
- // E = B - A
- var e = b.redSub(a);
- // F = D - C
- var f = d.redSub(c);
- // G = D + C
- var g = d.redAdd(c);
- // H = B + A
- var h = b.redAdd(a);
- // X3 = E * F
- var nx = e.redMul(f);
- // Y3 = G * H
- var ny = g.redMul(h);
- // T3 = E * H
- var nt = e.redMul(h);
- // Z3 = F * G
- var nz = f.redMul(g);
- return this.curve.point(nx, ny, nz, nt);
- };
- Point.prototype._projAdd = function _projAdd(p) {
- // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
- // #addition-add-2008-bbjlp
- // #addition-add-2007-bl
- // 10M + 1S
- // A = Z1 * Z2
- var a = this.z.redMul(p.z);
- // B = A^2
- var b = a.redSqr();
- // C = X1 * X2
- var c = this.x.redMul(p.x);
- // D = Y1 * Y2
- var d = this.y.redMul(p.y);
- // E = d * C * D
- var e = this.curve.d.redMul(c).redMul(d);
- // F = B - E
- var f = b.redSub(e);
- // G = B + E
- var g = b.redAdd(e);
- // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
- var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
- var nx = a.redMul(f).redMul(tmp);
- var ny;
- var nz;
- if (this.curve.twisted) {
- // Y3 = A * G * (D - a * C)
- ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
- // Z3 = F * G
- nz = f.redMul(g);
- } else {
- // Y3 = A * G * (D - C)
- ny = a.redMul(g).redMul(d.redSub(c));
- // Z3 = c * F * G
- nz = this.curve._mulC(f).redMul(g);
- }
- return this.curve.point(nx, ny, nz);
- };
- Point.prototype.add = function add(p) {
- if (this.isInfinity())
- return p;
- if (p.isInfinity())
- return this;
- if (this.curve.extended)
- return this._extAdd(p);
- else
- return this._projAdd(p);
- };
- Point.prototype.mul = function mul(k) {
- if (this._hasDoubles(k))
- return this.curve._fixedNafMul(this, k);
- else
- return this.curve._wnafMul(this, k);
- };
- Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
- return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
- };
- Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
- return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
- };
- Point.prototype.normalize = function normalize() {
- if (this.zOne)
- return this;
- // Normalize coordinates
- var zi = this.z.redInvm();
- this.x = this.x.redMul(zi);
- this.y = this.y.redMul(zi);
- if (this.t)
- this.t = this.t.redMul(zi);
- this.z = this.curve.one;
- this.zOne = true;
- return this;
- };
- Point.prototype.neg = function neg() {
- return this.curve.point(this.x.redNeg(),
- this.y,
- this.z,
- this.t && this.t.redNeg());
- };
- Point.prototype.getX = function getX() {
- this.normalize();
- return this.x.fromRed();
- };
- Point.prototype.getY = function getY() {
- this.normalize();
- return this.y.fromRed();
- };
- Point.prototype.eq = function eq(other) {
- return this === other ||
- this.getX().cmp(other.getX()) === 0 &&
- this.getY().cmp(other.getY()) === 0;
- };
- Point.prototype.eqXToP = function eqXToP(x) {
- var rx = x.toRed(this.curve.red).redMul(this.z);
- if (this.x.cmp(rx) === 0)
- return true;
- var xc = x.clone();
- var t = this.curve.redN.redMul(this.z);
- for (;;) {
- xc.iadd(this.curve.n);
- if (xc.cmp(this.curve.p) >= 0)
- return false;
- rx.redIAdd(t);
- if (this.x.cmp(rx) === 0)
- return true;
- }
- return false;
- };
- // Compatibility with BaseCurve
- Point.prototype.toP = Point.prototype.normalize;
- Point.prototype.mixedAdd = Point.prototype.add;
- },{"../../elliptic":74,"../curve":77,"bn.js":25,"inherits":108}],77:[function(require,module,exports){
- 'use strict';
- var curve = exports;
- curve.base = require('./base');
- curve.short = require('./short');
- curve.mont = require('./mont');
- curve.edwards = require('./edwards');
- },{"./base":75,"./edwards":76,"./mont":78,"./short":79}],78:[function(require,module,exports){
- 'use strict';
- var curve = require('../curve');
- var BN = require('bn.js');
- var inherits = require('inherits');
- var Base = curve.base;
- var elliptic = require('../../elliptic');
- var utils = elliptic.utils;
- function MontCurve(conf) {
- Base.call(this, 'mont', conf);
- this.a = new BN(conf.a, 16).toRed(this.red);
- this.b = new BN(conf.b, 16).toRed(this.red);
- this.i4 = new BN(4).toRed(this.red).redInvm();
- this.two = new BN(2).toRed(this.red);
- this.a24 = this.i4.redMul(this.a.redAdd(this.two));
- }
- inherits(MontCurve, Base);
- module.exports = MontCurve;
- MontCurve.prototype.validate = function validate(point) {
- var x = point.normalize().x;
- var x2 = x.redSqr();
- var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
- var y = rhs.redSqrt();
- return y.redSqr().cmp(rhs) === 0;
- };
- function Point(curve, x, z) {
- Base.BasePoint.call(this, curve, 'projective');
- if (x === null && z === null) {
- this.x = this.curve.one;
- this.z = this.curve.zero;
- } else {
- this.x = new BN(x, 16);
- this.z = new BN(z, 16);
- if (!this.x.red)
- this.x = this.x.toRed(this.curve.red);
- if (!this.z.red)
- this.z = this.z.toRed(this.curve.red);
- }
- }
- inherits(Point, Base.BasePoint);
- MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
- return this.point(utils.toArray(bytes, enc), 1);
- };
- MontCurve.prototype.point = function point(x, z) {
- return new Point(this, x, z);
- };
- MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
- return Point.fromJSON(this, obj);
- };
- Point.prototype.precompute = function precompute() {
- // No-op
- };
- Point.prototype._encode = function _encode() {
- return this.getX().toArray('be', this.curve.p.byteLength());
- };
- Point.fromJSON = function fromJSON(curve, obj) {
- return new Point(curve, obj[0], obj[1] || curve.one);
- };
- Point.prototype.inspect = function inspect() {
- if (this.isInfinity())
- return '<EC Point Infinity>';
- return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
- ' z: ' + this.z.fromRed().toString(16, 2) + '>';
- };
- Point.prototype.isInfinity = function isInfinity() {
- // XXX This code assumes that zero is always zero in red
- return this.z.cmpn(0) === 0;
- };
- Point.prototype.dbl = function dbl() {
- // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
- // 2M + 2S + 4A
- // A = X1 + Z1
- var a = this.x.redAdd(this.z);
- // AA = A^2
- var aa = a.redSqr();
- // B = X1 - Z1
- var b = this.x.redSub(this.z);
- // BB = B^2
- var bb = b.redSqr();
- // C = AA - BB
- var c = aa.redSub(bb);
- // X3 = AA * BB
- var nx = aa.redMul(bb);
- // Z3 = C * (BB + A24 * C)
- var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
- return this.curve.point(nx, nz);
- };
- Point.prototype.add = function add() {
- throw new Error('Not supported on Montgomery curve');
- };
- Point.prototype.diffAdd = function diffAdd(p, diff) {
- // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
- // 4M + 2S + 6A
- // A = X2 + Z2
- var a = this.x.redAdd(this.z);
- // B = X2 - Z2
- var b = this.x.redSub(this.z);
- // C = X3 + Z3
- var c = p.x.redAdd(p.z);
- // D = X3 - Z3
- var d = p.x.redSub(p.z);
- // DA = D * A
- var da = d.redMul(a);
- // CB = C * B
- var cb = c.redMul(b);
- // X5 = Z1 * (DA + CB)^2
- var nx = diff.z.redMul(da.redAdd(cb).redSqr());
- // Z5 = X1 * (DA - CB)^2
- var nz = diff.x.redMul(da.redISub(cb).redSqr());
- return this.curve.point(nx, nz);
- };
- Point.prototype.mul = function mul(k) {
- var t = k.clone();
- var a = this; // (N / 2) * Q + Q
- var b = this.curve.point(null, null); // (N / 2) * Q
- var c = this; // Q
- for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
- bits.push(t.andln(1));
- for (var i = bits.length - 1; i >= 0; i--) {
- if (bits[i] === 0) {
- // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
- a = a.diffAdd(b, c);
- // N * Q = 2 * ((N / 2) * Q + Q))
- b = b.dbl();
- } else {
- // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
- b = a.diffAdd(b, c);
- // N * Q + Q = 2 * ((N / 2) * Q + Q)
- a = a.dbl();
- }
- }
- return b;
- };
- Point.prototype.mulAdd = function mulAdd() {
- throw new Error('Not supported on Montgomery curve');
- };
- Point.prototype.jumlAdd = function jumlAdd() {
- throw new Error('Not supported on Montgomery curve');
- };
- Point.prototype.eq = function eq(other) {
- return this.getX().cmp(other.getX()) === 0;
- };
- Point.prototype.normalize = function normalize() {
- this.x = this.x.redMul(this.z.redInvm());
- this.z = this.curve.one;
- return this;
- };
- Point.prototype.getX = function getX() {
- // Normalize coordinates
- this.normalize();
- return this.x.fromRed();
- };
- },{"../../elliptic":74,"../curve":77,"bn.js":25,"inherits":108}],79:[function(require,module,exports){
- 'use strict';
- var curve = require('../curve');
- var elliptic = require('../../elliptic');
- var BN = require('bn.js');
- var inherits = require('inherits');
- var Base = curve.base;
- var assert = elliptic.utils.assert;
- function ShortCurve(conf) {
- Base.call(this, 'short', conf);
- this.a = new BN(conf.a, 16).toRed(this.red);
- this.b = new BN(conf.b, 16).toRed(this.red);
- this.tinv = this.two.redInvm();
- this.zeroA = this.a.fromRed().cmpn(0) === 0;
- this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
- // If the curve is endomorphic, precalculate beta and lambda
- this.endo = this._getEndomorphism(conf);
- this._endoWnafT1 = new Array(4);
- this._endoWnafT2 = new Array(4);
- }
- inherits(ShortCurve, Base);
- module.exports = ShortCurve;
- ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
- // No efficient endomorphism
- if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
- return;
- // Compute beta and lambda, that lambda * P = (beta * Px; Py)
- var beta;
- var lambda;
- if (conf.beta) {
- beta = new BN(conf.beta, 16).toRed(this.red);
- } else {
- var betas = this._getEndoRoots(this.p);
- // Choose the smallest beta
- beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
- beta = beta.toRed(this.red);
- }
- if (conf.lambda) {
- lambda = new BN(conf.lambda, 16);
- } else {
- // Choose the lambda that is matching selected beta
- var lambdas = this._getEndoRoots(this.n);
- if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
- lambda = lambdas[0];
- } else {
- lambda = lambdas[1];
- assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
- }
- }
- // Get basis vectors, used for balanced length-two representation
- var basis;
- if (conf.basis) {
- basis = conf.basis.map(function(vec) {
- return {
- a: new BN(vec.a, 16),
- b: new BN(vec.b, 16)
- };
- });
- } else {
- basis = this._getEndoBasis(lambda);
- }
- return {
- beta: beta,
- lambda: lambda,
- basis: basis
- };
- };
- ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
- // Find roots of for x^2 + x + 1 in F
- // Root = (-1 +- Sqrt(-3)) / 2
- //
- var red = num === this.p ? this.red : BN.mont(num);
- var tinv = new BN(2).toRed(red).redInvm();
- var ntinv = tinv.redNeg();
- var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
- var l1 = ntinv.redAdd(s).fromRed();
- var l2 = ntinv.redSub(s).fromRed();
- return [ l1, l2 ];
- };
- ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
- // aprxSqrt >= sqrt(this.n)
- var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
- // 3.74
- // Run EGCD, until r(L + 1) < aprxSqrt
- var u = lambda;
- var v = this.n.clone();
- var x1 = new BN(1);
- var y1 = new BN(0);
- var x2 = new BN(0);
- var y2 = new BN(1);
- // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
- var a0;
- var b0;
- // First vector
- var a1;
- var b1;
- // Second vector
- var a2;
- var b2;
- var prevR;
- var i = 0;
- var r;
- var x;
- while (u.cmpn(0) !== 0) {
- var q = v.div(u);
- r = v.sub(q.mul(u));
- x = x2.sub(q.mul(x1));
- var y = y2.sub(q.mul(y1));
- if (!a1 && r.cmp(aprxSqrt) < 0) {
- a0 = prevR.neg();
- b0 = x1;
- a1 = r.neg();
- b1 = x;
- } else if (a1 && ++i === 2) {
- break;
- }
- prevR = r;
- v = u;
- u = r;
- x2 = x1;
- x1 = x;
- y2 = y1;
- y1 = y;
- }
- a2 = r.neg();
- b2 = x;
- var len1 = a1.sqr().add(b1.sqr());
- var len2 = a2.sqr().add(b2.sqr());
- if (len2.cmp(len1) >= 0) {
- a2 = a0;
- b2 = b0;
- }
- // Normalize signs
- if (a1.negative) {
- a1 = a1.neg();
- b1 = b1.neg();
- }
- if (a2.negative) {
- a2 = a2.neg();
- b2 = b2.neg();
- }
- return [
- { a: a1, b: b1 },
- { a: a2, b: b2 }
- ];
- };
- ShortCurve.prototype._endoSplit = function _endoSplit(k) {
- var basis = this.endo.basis;
- var v1 = basis[0];
- var v2 = basis[1];
- var c1 = v2.b.mul(k).divRound(this.n);
- var c2 = v1.b.neg().mul(k).divRound(this.n);
- var p1 = c1.mul(v1.a);
- var p2 = c2.mul(v2.a);
- var q1 = c1.mul(v1.b);
- var q2 = c2.mul(v2.b);
- // Calculate answer
- var k1 = k.sub(p1).sub(p2);
- var k2 = q1.add(q2).neg();
- return { k1: k1, k2: k2 };
- };
- ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
- x = new BN(x, 16);
- if (!x.red)
- x = x.toRed(this.red);
- var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
- var y = y2.redSqrt();
- if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
- throw new Error('invalid point');
- // XXX Is there any way to tell if the number is odd without converting it
- // to non-red form?
- var isOdd = y.fromRed().isOdd();
- if (odd && !isOdd || !odd && isOdd)
- y = y.redNeg();
- return this.point(x, y);
- };
- ShortCurve.prototype.validate = function validate(point) {
- if (point.inf)
- return true;
- var x = point.x;
- var y = point.y;
- var ax = this.a.redMul(x);
- var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
- return y.redSqr().redISub(rhs).cmpn(0) === 0;
- };
- ShortCurve.prototype._endoWnafMulAdd =
- function _endoWnafMulAdd(points, coeffs, jacobianResult) {
- var npoints = this._endoWnafT1;
- var ncoeffs = this._endoWnafT2;
- for (var i = 0; i < points.length; i++) {
- var split = this._endoSplit(coeffs[i]);
- var p = points[i];
- var beta = p._getBeta();
- if (split.k1.negative) {
- split.k1.ineg();
- p = p.neg(true);
- }
- if (split.k2.negative) {
- split.k2.ineg();
- beta = beta.neg(true);
- }
- npoints[i * 2] = p;
- npoints[i * 2 + 1] = beta;
- ncoeffs[i * 2] = split.k1;
- ncoeffs[i * 2 + 1] = split.k2;
- }
- var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
- // Clean-up references to points and coefficients
- for (var j = 0; j < i * 2; j++) {
- npoints[j] = null;
- ncoeffs[j] = null;
- }
- return res;
- };
- function Point(curve, x, y, isRed) {
- Base.BasePoint.call(this, curve, 'affine');
- if (x === null && y === null) {
- this.x = null;
- this.y = null;
- this.inf = true;
- } else {
- this.x = new BN(x, 16);
- this.y = new BN(y, 16);
- // Force redgomery representation when loading from JSON
- if (isRed) {
- this.x.forceRed(this.curve.red);
- this.y.forceRed(this.curve.red);
- }
- if (!this.x.red)
- this.x = this.x.toRed(this.curve.red);
- if (!this.y.red)
- this.y = this.y.toRed(this.curve.red);
- this.inf = false;
- }
- }
- inherits(Point, Base.BasePoint);
- ShortCurve.prototype.point = function point(x, y, isRed) {
- return new Point(this, x, y, isRed);
- };
- ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
- return Point.fromJSON(this, obj, red);
- };
- Point.prototype._getBeta = function _getBeta() {
- if (!this.curve.endo)
- return;
- var pre = this.precomputed;
- if (pre && pre.beta)
- return pre.beta;
- var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
- if (pre) {
- var curve = this.curve;
- var endoMul = function(p) {
- return curve.point(p.x.redMul(curve.endo.beta), p.y);
- };
- pre.beta = beta;
- beta.precomputed = {
- beta: null,
- naf: pre.naf && {
- wnd: pre.naf.wnd,
- points: pre.naf.points.map(endoMul)
- },
- doubles: pre.doubles && {
- step: pre.doubles.step,
- points: pre.doubles.points.map(endoMul)
- }
- };
- }
- return beta;
- };
- Point.prototype.toJSON = function toJSON() {
- if (!this.precomputed)
- return [ this.x, this.y ];
- return [ this.x, this.y, this.precomputed && {
- doubles: this.precomputed.doubles && {
- step: this.precomputed.doubles.step,
- points: this.precomputed.doubles.points.slice(1)
- },
- naf: this.precomputed.naf && {
- wnd: this.precomputed.naf.wnd,
- points: this.precomputed.naf.points.slice(1)
- }
- } ];
- };
- Point.fromJSON = function fromJSON(curve, obj, red) {
- if (typeof obj === 'string')
- obj = JSON.parse(obj);
- var res = curve.point(obj[0], obj[1], red);
- if (!obj[2])
- return res;
- function obj2point(obj) {
- return curve.point(obj[0], obj[1], red);
- }
- var pre = obj[2];
- res.precomputed = {
- beta: null,
- doubles: pre.doubles && {
- step: pre.doubles.step,
- points: [ res ].concat(pre.doubles.points.map(obj2point))
- },
- naf: pre.naf && {
- wnd: pre.naf.wnd,
- points: [ res ].concat(pre.naf.points.map(obj2point))
- }
- };
- return res;
- };
- Point.prototype.inspect = function inspect() {
- if (this.isInfinity())
- return '<EC Point Infinity>';
- return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
- ' y: ' + this.y.fromRed().toString(16, 2) + '>';
- };
- Point.prototype.isInfinity = function isInfinity() {
- return this.inf;
- };
- Point.prototype.add = function add(p) {
- // O + P = P
- if (this.inf)
- return p;
- // P + O = P
- if (p.inf)
- return this;
- // P + P = 2P
- if (this.eq(p))
- return this.dbl();
- // P + (-P) = O
- if (this.neg().eq(p))
- return this.curve.point(null, null);
- // P + Q = O
- if (this.x.cmp(p.x) === 0)
- return this.curve.point(null, null);
- var c = this.y.redSub(p.y);
- if (c.cmpn(0) !== 0)
- c = c.redMul(this.x.redSub(p.x).redInvm());
- var nx = c.redSqr().redISub(this.x).redISub(p.x);
- var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
- return this.curve.point(nx, ny);
- };
- Point.prototype.dbl = function dbl() {
- if (this.inf)
- return this;
- // 2P = O
- var ys1 = this.y.redAdd(this.y);
- if (ys1.cmpn(0) === 0)
- return this.curve.point(null, null);
- var a = this.curve.a;
- var x2 = this.x.redSqr();
- var dyinv = ys1.redInvm();
- var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
- var nx = c.redSqr().redISub(this.x.redAdd(this.x));
- var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
- return this.curve.point(nx, ny);
- };
- Point.prototype.getX = function getX() {
- return this.x.fromRed();
- };
- Point.prototype.getY = function getY() {
- return this.y.fromRed();
- };
- Point.prototype.mul = function mul(k) {
- k = new BN(k, 16);
- if (this._hasDoubles(k))
- return this.curve._fixedNafMul(this, k);
- else if (this.curve.endo)
- return this.curve._endoWnafMulAdd([ this ], [ k ]);
- else
- return this.curve._wnafMul(this, k);
- };
- Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
- var points = [ this, p2 ];
- var coeffs = [ k1, k2 ];
- if (this.curve.endo)
- return this.curve._endoWnafMulAdd(points, coeffs);
- else
- return this.curve._wnafMulAdd(1, points, coeffs, 2);
- };
- Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
- var points = [ this, p2 ];
- var coeffs = [ k1, k2 ];
- if (this.curve.endo)
- return this.curve._endoWnafMulAdd(points, coeffs, true);
- else
- return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
- };
- Point.prototype.eq = function eq(p) {
- return this === p ||
- this.inf === p.inf &&
- (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
- };
- Point.prototype.neg = function neg(_precompute) {
- if (this.inf)
- return this;
- var res = this.curve.point(this.x, this.y.redNeg());
- if (_precompute && this.precomputed) {
- var pre = this.precomputed;
- var negate = function(p) {
- return p.neg();
- };
- res.precomputed = {
- naf: pre.naf && {
- wnd: pre.naf.wnd,
- points: pre.naf.points.map(negate)
- },
- doubles: pre.doubles && {
- step: pre.doubles.step,
- points: pre.doubles.points.map(negate)
- }
- };
- }
- return res;
- };
- Point.prototype.toJ = function toJ() {
- if (this.inf)
- return this.curve.jpoint(null, null, null);
- var res = this.curve.jpoint(this.x, this.y, this.curve.one);
- return res;
- };
- function JPoint(curve, x, y, z) {
- Base.BasePoint.call(this, curve, 'jacobian');
- if (x === null && y === null && z === null) {
- this.x = this.curve.one;
- this.y = this.curve.one;
- this.z = new BN(0);
- } else {
- this.x = new BN(x, 16);
- this.y = new BN(y, 16);
- this.z = new BN(z, 16);
- }
- if (!this.x.red)
- this.x = this.x.toRed(this.curve.red);
- if (!this.y.red)
- this.y = this.y.toRed(this.curve.red);
- if (!this.z.red)
- this.z = this.z.toRed(this.curve.red);
- this.zOne = this.z === this.curve.one;
- }
- inherits(JPoint, Base.BasePoint);
- ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
- return new JPoint(this, x, y, z);
- };
- JPoint.prototype.toP = function toP() {
- if (this.isInfinity())
- return this.curve.point(null, null);
- var zinv = this.z.redInvm();
- var zinv2 = zinv.redSqr();
- var ax = this.x.redMul(zinv2);
- var ay = this.y.redMul(zinv2).redMul(zinv);
- return this.curve.point(ax, ay);
- };
- JPoint.prototype.neg = function neg() {
- return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
- };
- JPoint.prototype.add = function add(p) {
- // O + P = P
- if (this.isInfinity())
- return p;
- // P + O = P
- if (p.isInfinity())
- return this;
- // 12M + 4S + 7A
- var pz2 = p.z.redSqr();
- var z2 = this.z.redSqr();
- var u1 = this.x.redMul(pz2);
- var u2 = p.x.redMul(z2);
- var s1 = this.y.redMul(pz2.redMul(p.z));
- var s2 = p.y.redMul(z2.redMul(this.z));
- var h = u1.redSub(u2);
- var r = s1.redSub(s2);
- if (h.cmpn(0) === 0) {
- if (r.cmpn(0) !== 0)
- return this.curve.jpoint(null, null, null);
- else
- return this.dbl();
- }
- var h2 = h.redSqr();
- var h3 = h2.redMul(h);
- var v = u1.redMul(h2);
- var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
- var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
- var nz = this.z.redMul(p.z).redMul(h);
- return this.curve.jpoint(nx, ny, nz);
- };
- JPoint.prototype.mixedAdd = function mixedAdd(p) {
- // O + P = P
- if (this.isInfinity())
- return p.toJ();
- // P + O = P
- if (p.isInfinity())
- return this;
- // 8M + 3S + 7A
- var z2 = this.z.redSqr();
- var u1 = this.x;
- var u2 = p.x.redMul(z2);
- var s1 = this.y;
- var s2 = p.y.redMul(z2).redMul(this.z);
- var h = u1.redSub(u2);
- var r = s1.redSub(s2);
- if (h.cmpn(0) === 0) {
- if (r.cmpn(0) !== 0)
- return this.curve.jpoint(null, null, null);
- else
- return this.dbl();
- }
- var h2 = h.redSqr();
- var h3 = h2.redMul(h);
- var v = u1.redMul(h2);
- var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
- var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
- var nz = this.z.redMul(h);
- return this.curve.jpoint(nx, ny, nz);
- };
- JPoint.prototype.dblp = function dblp(pow) {
- if (pow === 0)
- return this;
- if (this.isInfinity())
- return this;
- if (!pow)
- return this.dbl();
- if (this.curve.zeroA || this.curve.threeA) {
- var r = this;
- for (var i = 0; i < pow; i++)
- r = r.dbl();
- return r;
- }
- // 1M + 2S + 1A + N * (4S + 5M + 8A)
- // N = 1 => 6M + 6S + 9A
- var a = this.curve.a;
- var tinv = this.curve.tinv;
- var jx = this.x;
- var jy = this.y;
- var jz = this.z;
- var jz4 = jz.redSqr().redSqr();
- // Reuse results
- var jyd = jy.redAdd(jy);
- for (var i = 0; i < pow; i++) {
- var jx2 = jx.redSqr();
- var jyd2 = jyd.redSqr();
- var jyd4 = jyd2.redSqr();
- var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
- var t1 = jx.redMul(jyd2);
- var nx = c.redSqr().redISub(t1.redAdd(t1));
- var t2 = t1.redISub(nx);
- var dny = c.redMul(t2);
- dny = dny.redIAdd(dny).redISub(jyd4);
- var nz = jyd.redMul(jz);
- if (i + 1 < pow)
- jz4 = jz4.redMul(jyd4);
- jx = nx;
- jz = nz;
- jyd = dny;
- }
- return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
- };
- JPoint.prototype.dbl = function dbl() {
- if (this.isInfinity())
- return this;
- if (this.curve.zeroA)
- return this._zeroDbl();
- else if (this.curve.threeA)
- return this._threeDbl();
- else
- return this._dbl();
- };
- JPoint.prototype._zeroDbl = function _zeroDbl() {
- var nx;
- var ny;
- var nz;
- // Z = 1
- if (this.zOne) {
- // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
- // #doubling-mdbl-2007-bl
- // 1M + 5S + 14A
- // XX = X1^2
- var xx = this.x.redSqr();
- // YY = Y1^2
- var yy = this.y.redSqr();
- // YYYY = YY^2
- var yyyy = yy.redSqr();
- // S = 2 * ((X1 + YY)^2 - XX - YYYY)
- var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
- s = s.redIAdd(s);
- // M = 3 * XX + a; a = 0
- var m = xx.redAdd(xx).redIAdd(xx);
- // T = M ^ 2 - 2*S
- var t = m.redSqr().redISub(s).redISub(s);
- // 8 * YYYY
- var yyyy8 = yyyy.redIAdd(yyyy);
- yyyy8 = yyyy8.redIAdd(yyyy8);
- yyyy8 = yyyy8.redIAdd(yyyy8);
- // X3 = T
- nx = t;
- // Y3 = M * (S - T) - 8 * YYYY
- ny = m.redMul(s.redISub(t)).redISub(yyyy8);
- // Z3 = 2*Y1
- nz = this.y.redAdd(this.y);
- } else {
- // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
- // #doubling-dbl-2009-l
- // 2M + 5S + 13A
- // A = X1^2
- var a = this.x.redSqr();
- // B = Y1^2
- var b = this.y.redSqr();
- // C = B^2
- var c = b.redSqr();
- // D = 2 * ((X1 + B)^2 - A - C)
- var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
- d = d.redIAdd(d);
- // E = 3 * A
- var e = a.redAdd(a).redIAdd(a);
- // F = E^2
- var f = e.redSqr();
- // 8 * C
- var c8 = c.redIAdd(c);
- c8 = c8.redIAdd(c8);
- c8 = c8.redIAdd(c8);
- // X3 = F - 2 * D
- nx = f.redISub(d).redISub(d);
- // Y3 = E * (D - X3) - 8 * C
- ny = e.redMul(d.redISub(nx)).redISub(c8);
- // Z3 = 2 * Y1 * Z1
- nz = this.y.redMul(this.z);
- nz = nz.redIAdd(nz);
- }
- return this.curve.jpoint(nx, ny, nz);
- };
- JPoint.prototype._threeDbl = function _threeDbl() {
- var nx;
- var ny;
- var nz;
- // Z = 1
- if (this.zOne) {
- // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
- // #doubling-mdbl-2007-bl
- // 1M + 5S + 15A
- // XX = X1^2
- var xx = this.x.redSqr();
- // YY = Y1^2
- var yy = this.y.redSqr();
- // YYYY = YY^2
- var yyyy = yy.redSqr();
- // S = 2 * ((X1 + YY)^2 - XX - YYYY)
- var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
- s = s.redIAdd(s);
- // M = 3 * XX + a
- var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
- // T = M^2 - 2 * S
- var t = m.redSqr().redISub(s).redISub(s);
- // X3 = T
- nx = t;
- // Y3 = M * (S - T) - 8 * YYYY
- var yyyy8 = yyyy.redIAdd(yyyy);
- yyyy8 = yyyy8.redIAdd(yyyy8);
- yyyy8 = yyyy8.redIAdd(yyyy8);
- ny = m.redMul(s.redISub(t)).redISub(yyyy8);
- // Z3 = 2 * Y1
- nz = this.y.redAdd(this.y);
- } else {
- // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
- // 3M + 5S
- // delta = Z1^2
- var delta = this.z.redSqr();
- // gamma = Y1^2
- var gamma = this.y.redSqr();
- // beta = X1 * gamma
- var beta = this.x.redMul(gamma);
- // alpha = 3 * (X1 - delta) * (X1 + delta)
- var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
- alpha = alpha.redAdd(alpha).redIAdd(alpha);
- // X3 = alpha^2 - 8 * beta
- var beta4 = beta.redIAdd(beta);
- beta4 = beta4.redIAdd(beta4);
- var beta8 = beta4.redAdd(beta4);
- nx = alpha.redSqr().redISub(beta8);
- // Z3 = (Y1 + Z1)^2 - gamma - delta
- nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
- // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
- var ggamma8 = gamma.redSqr();
- ggamma8 = ggamma8.redIAdd(ggamma8);
- ggamma8 = ggamma8.redIAdd(ggamma8);
- ggamma8 = ggamma8.redIAdd(ggamma8);
- ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
- }
- return this.curve.jpoint(nx, ny, nz);
- };
- JPoint.prototype._dbl = function _dbl() {
- var a = this.curve.a;
- // 4M + 6S + 10A
- var jx = this.x;
- var jy = this.y;
- var jz = this.z;
- var jz4 = jz.redSqr().redSqr();
- var jx2 = jx.redSqr();
- var jy2 = jy.redSqr();
- var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
- var jxd4 = jx.redAdd(jx);
- jxd4 = jxd4.redIAdd(jxd4);
- var t1 = jxd4.redMul(jy2);
- var nx = c.redSqr().redISub(t1.redAdd(t1));
- var t2 = t1.redISub(nx);
- var jyd8 = jy2.redSqr();
- jyd8 = jyd8.redIAdd(jyd8);
- jyd8 = jyd8.redIAdd(jyd8);
- jyd8 = jyd8.redIAdd(jyd8);
- var ny = c.redMul(t2).redISub(jyd8);
- var nz = jy.redAdd(jy).redMul(jz);
- return this.curve.jpoint(nx, ny, nz);
- };
- JPoint.prototype.trpl = function trpl() {
- if (!this.curve.zeroA)
- return this.dbl().add(this);
- // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
- // 5M + 10S + ...
- // XX = X1^2
- var xx = this.x.redSqr();
- // YY = Y1^2
- var yy = this.y.redSqr();
- // ZZ = Z1^2
- var zz = this.z.redSqr();
- // YYYY = YY^2
- var yyyy = yy.redSqr();
- // M = 3 * XX + a * ZZ2; a = 0
- var m = xx.redAdd(xx).redIAdd(xx);
- // MM = M^2
- var mm = m.redSqr();
- // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
- var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
- e = e.redIAdd(e);
- e = e.redAdd(e).redIAdd(e);
- e = e.redISub(mm);
- // EE = E^2
- var ee = e.redSqr();
- // T = 16*YYYY
- var t = yyyy.redIAdd(yyyy);
- t = t.redIAdd(t);
- t = t.redIAdd(t);
- t = t.redIAdd(t);
- // U = (M + E)^2 - MM - EE - T
- var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
- // X3 = 4 * (X1 * EE - 4 * YY * U)
- var yyu4 = yy.redMul(u);
- yyu4 = yyu4.redIAdd(yyu4);
- yyu4 = yyu4.redIAdd(yyu4);
- var nx = this.x.redMul(ee).redISub(yyu4);
- nx = nx.redIAdd(nx);
- nx = nx.redIAdd(nx);
- // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
- var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
- ny = ny.redIAdd(ny);
- ny = ny.redIAdd(ny);
- ny = ny.redIAdd(ny);
- // Z3 = (Z1 + E)^2 - ZZ - EE
- var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
- return this.curve.jpoint(nx, ny, nz);
- };
- JPoint.prototype.mul = function mul(k, kbase) {
- k = new BN(k, kbase);
- return this.curve._wnafMul(this, k);
- };
- JPoint.prototype.eq = function eq(p) {
- if (p.type === 'affine')
- return this.eq(p.toJ());
- if (this === p)
- return true;
- // x1 * z2^2 == x2 * z1^2
- var z2 = this.z.redSqr();
- var pz2 = p.z.redSqr();
- if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
- return false;
- // y1 * z2^3 == y2 * z1^3
- var z3 = z2.redMul(this.z);
- var pz3 = pz2.redMul(p.z);
- return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
- };
- JPoint.prototype.eqXToP = function eqXToP(x) {
- var zs = this.z.redSqr();
- var rx = x.toRed(this.curve.red).redMul(zs);
- if (this.x.cmp(rx) === 0)
- return true;
- var xc = x.clone();
- var t = this.curve.redN.redMul(zs);
- for (;;) {
- xc.iadd(this.curve.n);
- if (xc.cmp(this.curve.p) >= 0)
- return false;
- rx.redIAdd(t);
- if (this.x.cmp(rx) === 0)
- return true;
- }
- return false;
- };
- JPoint.prototype.inspect = function inspect() {
- if (this.isInfinity())
- return '<EC JPoint Infinity>';
- return '<EC JPoint x: ' + this.x.toString(16, 2) +
- ' y: ' + this.y.toString(16, 2) +
- ' z: ' + this.z.toString(16, 2) + '>';
- };
- JPoint.prototype.isInfinity = function isInfinity() {
- // XXX This code assumes that zero is always zero in red
- return this.z.cmpn(0) === 0;
- };
- },{"../../elliptic":74,"../curve":77,"bn.js":25,"inherits":108}],80:[function(require,module,exports){
- 'use strict';
- var curves = exports;
- var hash = require('hash.js');
- var elliptic = require('../elliptic');
- var assert = elliptic.utils.assert;
- function PresetCurve(options) {
- if (options.type === 'short')
- this.curve = new elliptic.curve.short(options);
- else if (options.type === 'edwards')
- this.curve = new elliptic.curve.edwards(options);
- else
- this.curve = new elliptic.curve.mont(options);
- this.g = this.curve.g;
- this.n = this.curve.n;
- this.hash = options.hash;
- assert(this.g.validate(), 'Invalid curve');
- assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
- }
- curves.PresetCurve = PresetCurve;
- function defineCurve(name, options) {
- Object.defineProperty(curves, name, {
- configurable: true,
- enumerable: true,
- get: function() {
- var curve = new PresetCurve(options);
- Object.defineProperty(curves, name, {
- configurable: true,
- enumerable: true,
- value: curve
- });
- return curve;
- }
- });
- }
- defineCurve('p192', {
- type: 'short',
- prime: 'p192',
- p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
- a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
- b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
- n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
- hash: hash.sha256,
- gRed: false,
- g: [
- '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
- '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
- ]
- });
- defineCurve('p224', {
- type: 'short',
- prime: 'p224',
- p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
- a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
- b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
- n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
- hash: hash.sha256,
- gRed: false,
- g: [
- 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
- 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
- ]
- });
- defineCurve('p256', {
- type: 'short',
- prime: null,
- p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
- a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
- b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
- n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
- hash: hash.sha256,
- gRed: false,
- g: [
- '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
- '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
- ]
- });
- defineCurve('p384', {
- type: 'short',
- prime: null,
- p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
- 'fffffffe ffffffff 00000000 00000000 ffffffff',
- a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
- 'fffffffe ffffffff 00000000 00000000 fffffffc',
- b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
- '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
- n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
- 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
- hash: hash.sha384,
- gRed: false,
- g: [
- 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
- '5502f25d bf55296c 3a545e38 72760ab7',
- '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
- '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
- ]
- });
- defineCurve('p521', {
- type: 'short',
- prime: null,
- p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
- 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
- 'ffffffff ffffffff ffffffff ffffffff ffffffff',
- a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
- 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
- 'ffffffff ffffffff ffffffff ffffffff fffffffc',
- b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
- '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
- '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
- n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
- 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
- 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
- hash: hash.sha512,
- gRed: false,
- g: [
- '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
- '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
- 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
- '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
- '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
- '3fad0761 353c7086 a272c240 88be9476 9fd16650'
- ]
- });
- defineCurve('curve25519', {
- type: 'mont',
- prime: 'p25519',
- p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
- a: '76d06',
- b: '1',
- n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
- hash: hash.sha256,
- gRed: false,
- g: [
- '9'
- ]
- });
- defineCurve('ed25519', {
- type: 'edwards',
- prime: 'p25519',
- p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
- a: '-1',
- c: '1',
- // -121665 * (121666^(-1)) (mod P)
- d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
- n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
- hash: hash.sha256,
- gRed: false,
- g: [
- '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
- // 4/5
- '6666666666666666666666666666666666666666666666666666666666666658'
- ]
- });
- var pre;
- try {
- pre = require('./precomputed/secp256k1');
- } catch (e) {
- pre = undefined;
- }
- defineCurve('secp256k1', {
- type: 'short',
- prime: 'k256',
- p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
- a: '0',
- b: '7',
- n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
- h: '1',
- hash: hash.sha256,
- // Precomputed endomorphism
- beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
- lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
- basis: [
- {
- a: '3086d221a7d46bcde86c90e49284eb15',
- b: '-e4437ed6010e88286f547fa90abfe4c3'
- },
- {
- a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
- b: '3086d221a7d46bcde86c90e49284eb15'
- }
- ],
- gRed: false,
- g: [
- '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
- '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
- pre
- ]
- });
- },{"../elliptic":74,"./precomputed/secp256k1":87,"hash.js":93}],81:[function(require,module,exports){
- 'use strict';
- var BN = require('bn.js');
- var HmacDRBG = require('hmac-drbg');
- var elliptic = require('../../elliptic');
- var utils = elliptic.utils;
- var assert = utils.assert;
- var KeyPair = require('./key');
- var Signature = require('./signature');
- function EC(options) {
- if (!(this instanceof EC))
- return new EC(options);
- // Shortcut `elliptic.ec(curve-name)`
- if (typeof options === 'string') {
- assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
- options = elliptic.curves[options];
- }
- // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
- if (options instanceof elliptic.curves.PresetCurve)
- options = { curve: options };
- this.curve = options.curve.curve;
- this.n = this.curve.n;
- this.nh = this.n.ushrn(1);
- this.g = this.curve.g;
- // Point on curve
- this.g = options.curve.g;
- this.g.precompute(options.curve.n.bitLength() + 1);
- // Hash for function for DRBG
- this.hash = options.hash || options.curve.hash;
- }
- module.exports = EC;
- EC.prototype.keyPair = function keyPair(options) {
- return new KeyPair(this, options);
- };
- EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
- return KeyPair.fromPrivate(this, priv, enc);
- };
- EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
- return KeyPair.fromPublic(this, pub, enc);
- };
- EC.prototype.genKeyPair = function genKeyPair(options) {
- if (!options)
- options = {};
- // Instantiate Hmac_DRBG
- var drbg = new HmacDRBG({
- hash: this.hash,
- pers: options.pers,
- persEnc: options.persEnc || 'utf8',
- entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
- entropyEnc: options.entropy && options.entropyEnc || 'utf8',
- nonce: this.n.toArray()
- });
- var bytes = this.n.byteLength();
- var ns2 = this.n.sub(new BN(2));
- do {
- var priv = new BN(drbg.generate(bytes));
- if (priv.cmp(ns2) > 0)
- continue;
- priv.iaddn(1);
- return this.keyFromPrivate(priv);
- } while (true);
- };
- EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
- var delta = msg.byteLength() * 8 - this.n.bitLength();
- if (delta > 0)
- msg = msg.ushrn(delta);
- if (!truncOnly && msg.cmp(this.n) >= 0)
- return msg.sub(this.n);
- else
- return msg;
- };
- EC.prototype.sign = function sign(msg, key, enc, options) {
- if (typeof enc === 'object') {
- options = enc;
- enc = null;
- }
- if (!options)
- options = {};
- key = this.keyFromPrivate(key, enc);
- msg = this._truncateToN(new BN(msg, 16));
- // Zero-extend key to provide enough entropy
- var bytes = this.n.byteLength();
- var bkey = key.getPrivate().toArray('be', bytes);
- // Zero-extend nonce to have the same byte size as N
- var nonce = msg.toArray('be', bytes);
- // Instantiate Hmac_DRBG
- var drbg = new HmacDRBG({
- hash: this.hash,
- entropy: bkey,
- nonce: nonce,
- pers: options.pers,
- persEnc: options.persEnc || 'utf8'
- });
- // Number of bytes to generate
- var ns1 = this.n.sub(new BN(1));
- for (var iter = 0; true; iter++) {
- var k = options.k ?
- options.k(iter) :
- new BN(drbg.generate(this.n.byteLength()));
- k = this._truncateToN(k, true);
- if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
- continue;
- var kp = this.g.mul(k);
- if (kp.isInfinity())
- continue;
- var kpX = kp.getX();
- var r = kpX.umod(this.n);
- if (r.cmpn(0) === 0)
- continue;
- var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
- s = s.umod(this.n);
- if (s.cmpn(0) === 0)
- continue;
- var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
- (kpX.cmp(r) !== 0 ? 2 : 0);
- // Use complement of `s`, if it is > `n / 2`
- if (options.canonical && s.cmp(this.nh) > 0) {
- s = this.n.sub(s);
- recoveryParam ^= 1;
- }
- return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
- }
- };
- EC.prototype.verify = function verify(msg, signature, key, enc) {
- msg = this._truncateToN(new BN(msg, 16));
- key = this.keyFromPublic(key, enc);
- signature = new Signature(signature, 'hex');
- // Perform primitive values validation
- var r = signature.r;
- var s = signature.s;
- if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
- return false;
- if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
- return false;
- // Validate signature
- var sinv = s.invm(this.n);
- var u1 = sinv.mul(msg).umod(this.n);
- var u2 = sinv.mul(r).umod(this.n);
- if (!this.curve._maxwellTrick) {
- var p = this.g.mulAdd(u1, key.getPublic(), u2);
- if (p.isInfinity())
- return false;
- return p.getX().umod(this.n).cmp(r) === 0;
- }
- // NOTE: Greg Maxwell's trick, inspired by:
- // https://git.io/vad3K
- var p = this.g.jmulAdd(u1, key.getPublic(), u2);
- if (p.isInfinity())
- return false;
- // Compare `p.x` of Jacobian point with `r`,
- // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
- // inverse of `p.z^2`
- return p.eqXToP(r);
- };
- EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
- assert((3 & j) === j, 'The recovery param is more than two bits');
- signature = new Signature(signature, enc);
- var n = this.n;
- var e = new BN(msg);
- var r = signature.r;
- var s = signature.s;
- // A set LSB signifies that the y-coordinate is odd
- var isYOdd = j & 1;
- var isSecondKey = j >> 1;
- if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
- throw new Error('Unable to find sencond key candinate');
- // 1.1. Let x = r + jn.
- if (isSecondKey)
- r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
- else
- r = this.curve.pointFromX(r, isYOdd);
- var rInv = signature.r.invm(n);
- var s1 = n.sub(e).mul(rInv).umod(n);
- var s2 = s.mul(rInv).umod(n);
- // 1.6.1 Compute Q = r^-1 (sR - eG)
- // Q = r^-1 (sR + -eG)
- return this.g.mulAdd(s1, r, s2);
- };
- EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
- signature = new Signature(signature, enc);
- if (signature.recoveryParam !== null)
- return signature.recoveryParam;
- for (var i = 0; i < 4; i++) {
- var Qprime;
- try {
- Qprime = this.recoverPubKey(e, signature, i);
- } catch (e) {
- continue;
- }
- if (Qprime.eq(Q))
- return i;
- }
- throw new Error('Unable to find valid recovery factor');
- };
- },{"../../elliptic":74,"./key":82,"./signature":83,"bn.js":25,"hmac-drbg":105}],82:[function(require,module,exports){
- 'use strict';
- var BN = require('bn.js');
- var elliptic = require('../../elliptic');
- var utils = elliptic.utils;
- var assert = utils.assert;
- function KeyPair(ec, options) {
- this.ec = ec;
- this.priv = null;
- this.pub = null;
- // KeyPair(ec, { priv: ..., pub: ... })
- if (options.priv)
- this._importPrivate(options.priv, options.privEnc);
- if (options.pub)
- this._importPublic(options.pub, options.pubEnc);
- }
- module.exports = KeyPair;
- KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
- if (pub instanceof KeyPair)
- return pub;
- return new KeyPair(ec, {
- pub: pub,
- pubEnc: enc
- });
- };
- KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
- if (priv instanceof KeyPair)
- return priv;
- return new KeyPair(ec, {
- priv: priv,
- privEnc: enc
- });
- };
- KeyPair.prototype.validate = function validate() {
- var pub = this.getPublic();
- if (pub.isInfinity())
- return { result: false, reason: 'Invalid public key' };
- if (!pub.validate())
- return { result: false, reason: 'Public key is not a point' };
- if (!pub.mul(this.ec.curve.n).isInfinity())
- return { result: false, reason: 'Public key * N != O' };
- return { result: true, reason: null };
- };
- KeyPair.prototype.getPublic = function getPublic(compact, enc) {
- // compact is optional argument
- if (typeof compact === 'string') {
- enc = compact;
- compact = null;
- }
- if (!this.pub)
- this.pub = this.ec.g.mul(this.priv);
- if (!enc)
- return this.pub;
- return this.pub.encode(enc, compact);
- };
- KeyPair.prototype.getPrivate = function getPrivate(enc) {
- if (enc === 'hex')
- return this.priv.toString(16, 2);
- else
- return this.priv;
- };
- KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
- this.priv = new BN(key, enc || 16);
- // Ensure that the priv won't be bigger than n, otherwise we may fail
- // in fixed multiplication method
- this.priv = this.priv.umod(this.ec.curve.n);
- };
- KeyPair.prototype._importPublic = function _importPublic(key, enc) {
- if (key.x || key.y) {
- // Montgomery points only have an `x` coordinate.
- // Weierstrass/Edwards points on the other hand have both `x` and
- // `y` coordinates.
- if (this.ec.curve.type === 'mont') {
- assert(key.x, 'Need x coordinate');
- } else if (this.ec.curve.type === 'short' ||
- this.ec.curve.type === 'edwards') {
- assert(key.x && key.y, 'Need both x and y coordinate');
- }
- this.pub = this.ec.curve.point(key.x, key.y);
- return;
- }
- this.pub = this.ec.curve.decodePoint(key, enc);
- };
- // ECDH
- KeyPair.prototype.derive = function derive(pub) {
- return pub.mul(this.priv).getX();
- };
- // ECDSA
- KeyPair.prototype.sign = function sign(msg, enc, options) {
- return this.ec.sign(msg, this, enc, options);
- };
- KeyPair.prototype.verify = function verify(msg, signature) {
- return this.ec.verify(msg, signature, this);
- };
- KeyPair.prototype.inspect = function inspect() {
- return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
- ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
- };
- },{"../../elliptic":74,"bn.js":25}],83:[function(require,module,exports){
- 'use strict';
- var BN = require('bn.js');
- var elliptic = require('../../elliptic');
- var utils = elliptic.utils;
- var assert = utils.assert;
- function Signature(options, enc) {
- if (options instanceof Signature)
- return options;
- if (this._importDER(options, enc))
- return;
- assert(options.r && options.s, 'Signature without r or s');
- this.r = new BN(options.r, 16);
- this.s = new BN(options.s, 16);
- if (options.recoveryParam === undefined)
- this.recoveryParam = null;
- else
- this.recoveryParam = options.recoveryParam;
- }
- module.exports = Signature;
- function Position() {
- this.place = 0;
- }
- function getLength(buf, p) {
- var initial = buf[p.place++];
- if (!(initial & 0x80)) {
- return initial;
- }
- var octetLen = initial & 0xf;
- var val = 0;
- for (var i = 0, off = p.place; i < octetLen; i++, off++) {
- val <<= 8;
- val |= buf[off];
- }
- p.place = off;
- return val;
- }
- function rmPadding(buf) {
- var i = 0;
- var len = buf.length - 1;
- while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
- i++;
- }
- if (i === 0) {
- return buf;
- }
- return buf.slice(i);
- }
- Signature.prototype._importDER = function _importDER(data, enc) {
- data = utils.toArray(data, enc);
- var p = new Position();
- if (data[p.place++] !== 0x30) {
- return false;
- }
- var len = getLength(data, p);
- if ((len + p.place) !== data.length) {
- return false;
- }
- if (data[p.place++] !== 0x02) {
- return false;
- }
- var rlen = getLength(data, p);
- var r = data.slice(p.place, rlen + p.place);
- p.place += rlen;
- if (data[p.place++] !== 0x02) {
- return false;
- }
- var slen = getLength(data, p);
- if (data.length !== slen + p.place) {
- return false;
- }
- var s = data.slice(p.place, slen + p.place);
- if (r[0] === 0 && (r[1] & 0x80)) {
- r = r.slice(1);
- }
- if (s[0] === 0 && (s[1] & 0x80)) {
- s = s.slice(1);
- }
- this.r = new BN(r);
- this.s = new BN(s);
- this.recoveryParam = null;
- return true;
- };
- function constructLength(arr, len) {
- if (len < 0x80) {
- arr.push(len);
- return;
- }
- var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
- arr.push(octets | 0x80);
- while (--octets) {
- arr.push((len >>> (octets << 3)) & 0xff);
- }
- arr.push(len);
- }
- Signature.prototype.toDER = function toDER(enc) {
- var r = this.r.toArray();
- var s = this.s.toArray();
- // Pad values
- if (r[0] & 0x80)
- r = [ 0 ].concat(r);
- // Pad values
- if (s[0] & 0x80)
- s = [ 0 ].concat(s);
- r = rmPadding(r);
- s = rmPadding(s);
- while (!s[0] && !(s[1] & 0x80)) {
- s = s.slice(1);
- }
- var arr = [ 0x02 ];
- constructLength(arr, r.length);
- arr = arr.concat(r);
- arr.push(0x02);
- constructLength(arr, s.length);
- var backHalf = arr.concat(s);
- var res = [ 0x30 ];
- constructLength(res, backHalf.length);
- res = res.concat(backHalf);
- return utils.encode(res, enc);
- };
- },{"../../elliptic":74,"bn.js":25}],84:[function(require,module,exports){
- 'use strict';
- var hash = require('hash.js');
- var elliptic = require('../../elliptic');
- var utils = elliptic.utils;
- var assert = utils.assert;
- var parseBytes = utils.parseBytes;
- var KeyPair = require('./key');
- var Signature = require('./signature');
- function EDDSA(curve) {
- assert(curve === 'ed25519', 'only tested with ed25519 so far');
- if (!(this instanceof EDDSA))
- return new EDDSA(curve);
- var curve = elliptic.curves[curve].curve;
- this.curve = curve;
- this.g = curve.g;
- this.g.precompute(curve.n.bitLength() + 1);
- this.pointClass = curve.point().constructor;
- this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
- this.hash = hash.sha512;
- }
- module.exports = EDDSA;
- /**
- * @param {Array|String} message - message bytes
- * @param {Array|String|KeyPair} secret - secret bytes or a keypair
- * @returns {Signature} - signature
- */
- EDDSA.prototype.sign = function sign(message, secret) {
- message = parseBytes(message);
- var key = this.keyFromSecret(secret);
- var r = this.hashInt(key.messagePrefix(), message);
- var R = this.g.mul(r);
- var Rencoded = this.encodePoint(R);
- var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
- .mul(key.priv());
- var S = r.add(s_).umod(this.curve.n);
- return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
- };
- /**
- * @param {Array} message - message bytes
- * @param {Array|String|Signature} sig - sig bytes
- * @param {Array|String|Point|KeyPair} pub - public key
- * @returns {Boolean} - true if public key matches sig of message
- */
- EDDSA.prototype.verify = function verify(message, sig, pub) {
- message = parseBytes(message);
- sig = this.makeSignature(sig);
- var key = this.keyFromPublic(pub);
- var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
- var SG = this.g.mul(sig.S());
- var RplusAh = sig.R().add(key.pub().mul(h));
- return RplusAh.eq(SG);
- };
- EDDSA.prototype.hashInt = function hashInt() {
- var hash = this.hash();
- for (var i = 0; i < arguments.length; i++)
- hash.update(arguments[i]);
- return utils.intFromLE(hash.digest()).umod(this.curve.n);
- };
- EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
- return KeyPair.fromPublic(this, pub);
- };
- EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
- return KeyPair.fromSecret(this, secret);
- };
- EDDSA.prototype.makeSignature = function makeSignature(sig) {
- if (sig instanceof Signature)
- return sig;
- return new Signature(this, sig);
- };
- /**
- * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
- *
- * EDDSA defines methods for encoding and decoding points and integers. These are
- * helper convenience methods, that pass along to utility functions implied
- * parameters.
- *
- */
- EDDSA.prototype.encodePoint = function encodePoint(point) {
- var enc = point.getY().toArray('le', this.encodingLength);
- enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
- return enc;
- };
- EDDSA.prototype.decodePoint = function decodePoint(bytes) {
- bytes = utils.parseBytes(bytes);
- var lastIx = bytes.length - 1;
- var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
- var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
- var y = utils.intFromLE(normed);
- return this.curve.pointFromY(y, xIsOdd);
- };
- EDDSA.prototype.encodeInt = function encodeInt(num) {
- return num.toArray('le', this.encodingLength);
- };
- EDDSA.prototype.decodeInt = function decodeInt(bytes) {
- return utils.intFromLE(bytes);
- };
- EDDSA.prototype.isPoint = function isPoint(val) {
- return val instanceof this.pointClass;
- };
- },{"../../elliptic":74,"./key":85,"./signature":86,"hash.js":93}],85:[function(require,module,exports){
- 'use strict';
- var elliptic = require('../../elliptic');
- var utils = elliptic.utils;
- var assert = utils.assert;
- var parseBytes = utils.parseBytes;
- var cachedProperty = utils.cachedProperty;
- /**
- * @param {EDDSA} eddsa - instance
- * @param {Object} params - public/private key parameters
- *
- * @param {Array<Byte>} [params.secret] - secret seed bytes
- * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
- * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
- *
- */
- function KeyPair(eddsa, params) {
- this.eddsa = eddsa;
- this._secret = parseBytes(params.secret);
- if (eddsa.isPoint(params.pub))
- this._pub = params.pub;
- else
- this._pubBytes = parseBytes(params.pub);
- }
- KeyPair.fromPublic = function fromPublic(eddsa, pub) {
- if (pub instanceof KeyPair)
- return pub;
- return new KeyPair(eddsa, { pub: pub });
- };
- KeyPair.fromSecret = function fromSecret(eddsa, secret) {
- if (secret instanceof KeyPair)
- return secret;
- return new KeyPair(eddsa, { secret: secret });
- };
- KeyPair.prototype.secret = function secret() {
- return this._secret;
- };
- cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
- return this.eddsa.encodePoint(this.pub());
- });
- cachedProperty(KeyPair, 'pub', function pub() {
- if (this._pubBytes)
- return this.eddsa.decodePoint(this._pubBytes);
- return this.eddsa.g.mul(this.priv());
- });
- cachedProperty(KeyPair, 'privBytes', function privBytes() {
- var eddsa = this.eddsa;
- var hash = this.hash();
- var lastIx = eddsa.encodingLength - 1;
- var a = hash.slice(0, eddsa.encodingLength);
- a[0] &= 248;
- a[lastIx] &= 127;
- a[lastIx] |= 64;
- return a;
- });
- cachedProperty(KeyPair, 'priv', function priv() {
- return this.eddsa.decodeInt(this.privBytes());
- });
- cachedProperty(KeyPair, 'hash', function hash() {
- return this.eddsa.hash().update(this.secret()).digest();
- });
- cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
- return this.hash().slice(this.eddsa.encodingLength);
- });
- KeyPair.prototype.sign = function sign(message) {
- assert(this._secret, 'KeyPair can only verify');
- return this.eddsa.sign(message, this);
- };
- KeyPair.prototype.verify = function verify(message, sig) {
- return this.eddsa.verify(message, sig, this);
- };
- KeyPair.prototype.getSecret = function getSecret(enc) {
- assert(this._secret, 'KeyPair is public only');
- return utils.encode(this.secret(), enc);
- };
- KeyPair.prototype.getPublic = function getPublic(enc) {
- return utils.encode(this.pubBytes(), enc);
- };
- module.exports = KeyPair;
- },{"../../elliptic":74}],86:[function(require,module,exports){
- 'use strict';
- var BN = require('bn.js');
- var elliptic = require('../../elliptic');
- var utils = elliptic.utils;
- var assert = utils.assert;
- var cachedProperty = utils.cachedProperty;
- var parseBytes = utils.parseBytes;
- /**
- * @param {EDDSA} eddsa - eddsa instance
- * @param {Array<Bytes>|Object} sig -
- * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
- * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
- * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
- * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
- */
- function Signature(eddsa, sig) {
- this.eddsa = eddsa;
- if (typeof sig !== 'object')
- sig = parseBytes(sig);
- if (Array.isArray(sig)) {
- sig = {
- R: sig.slice(0, eddsa.encodingLength),
- S: sig.slice(eddsa.encodingLength)
- };
- }
- assert(sig.R && sig.S, 'Signature without R or S');
- if (eddsa.isPoint(sig.R))
- this._R = sig.R;
- if (sig.S instanceof BN)
- this._S = sig.S;
- this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
- this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
- }
- cachedProperty(Signature, 'S', function S() {
- return this.eddsa.decodeInt(this.Sencoded());
- });
- cachedProperty(Signature, 'R', function R() {
- return this.eddsa.decodePoint(this.Rencoded());
- });
- cachedProperty(Signature, 'Rencoded', function Rencoded() {
- return this.eddsa.encodePoint(this.R());
- });
- cachedProperty(Signature, 'Sencoded', function Sencoded() {
- return this.eddsa.encodeInt(this.S());
- });
- Signature.prototype.toBytes = function toBytes() {
- return this.Rencoded().concat(this.Sencoded());
- };
- Signature.prototype.toHex = function toHex() {
- return utils.encode(this.toBytes(), 'hex').toUpperCase();
- };
- module.exports = Signature;
- },{"../../elliptic":74,"bn.js":25}],87:[function(require,module,exports){
- module.exports = {
- doubles: {
- step: 4,
- points: [
- [
- 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
- 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
- ],
- [
- '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
- '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
- ],
- [
- '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
- 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
- ],
- [
- '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
- '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
- ],
- [
- '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
- '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
- ],
- [
- '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
- '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
- ],
- [
- 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
- '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
- ],
- [
- '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
- 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
- ],
- [
- 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
- '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
- ],
- [
- 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
- 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
- ],
- [
- 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
- '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
- ],
- [
- '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
- '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
- ],
- [
- '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
- '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
- ],
- [
- '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
- '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
- ],
- [
- '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
- '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
- ],
- [
- '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
- '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
- ],
- [
- '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
- '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
- ],
- [
- '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
- '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
- ],
- [
- '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
- 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
- ],
- [
- 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
- '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
- ],
- [
- 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
- '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
- ],
- [
- '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
- '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
- ],
- [
- '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
- '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
- ],
- [
- 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
- '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
- ],
- [
- '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
- 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
- ],
- [
- 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
- '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
- ],
- [
- 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
- 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
- ],
- [
- 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
- '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
- ],
- [
- 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
- 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
- ],
- [
- 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
- '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
- ],
- [
- '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
- 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
- ],
- [
- '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
- '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
- ],
- [
- 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
- '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
- ],
- [
- '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
- 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
- ],
- [
- 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
- '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
- ],
- [
- 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
- '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
- ],
- [
- 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
- 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
- ],
- [
- '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
- '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
- ],
- [
- '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
- '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
- ],
- [
- '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
- 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
- ],
- [
- '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
- '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
- ],
- [
- 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
- '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
- ],
- [
- '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
- '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
- ],
- [
- '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
- 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
- ],
- [
- '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
- '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
- ],
- [
- 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
- '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
- ],
- [
- '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
- 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
- ],
- [
- 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
- 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
- ],
- [
- 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
- '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
- ],
- [
- '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
- 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
- ],
- [
- '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
- 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
- ],
- [
- 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
- '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
- ],
- [
- 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
- '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
- ],
- [
- 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
- '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
- ],
- [
- '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
- 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
- ],
- [
- '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
- '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
- ],
- [
- 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
- 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
- ],
- [
- '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
- 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
- ],
- [
- '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
- '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
- ],
- [
- '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
- '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
- ],
- [
- 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
- 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
- ],
- [
- '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
- '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
- ],
- [
- '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
- '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
- ],
- [
- 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
- '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
- ],
- [
- 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
- 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
- ]
- ]
- },
- naf: {
- wnd: 7,
- points: [
- [
- 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
- '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
- ],
- [
- '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
- 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
- ],
- [
- '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
- '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
- ],
- [
- 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
- 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
- ],
- [
- '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
- 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
- ],
- [
- 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
- 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
- ],
- [
- 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
- '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
- ],
- [
- 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
- '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
- ],
- [
- '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
- '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
- ],
- [
- '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
- '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
- ],
- [
- '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
- '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
- ],
- [
- '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
- '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
- ],
- [
- 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
- 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
- ],
- [
- 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
- '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
- ],
- [
- '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
- 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
- ],
- [
- '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
- 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
- ],
- [
- '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
- '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
- ],
- [
- '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
- '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
- ],
- [
- '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
- '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
- ],
- [
- '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
- 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
- ],
- [
- 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
- 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
- ],
- [
- '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
- '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
- ],
- [
- '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
- '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
- ],
- [
- 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
- 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
- ],
- [
- '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
- '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
- ],
- [
- 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
- 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
- ],
- [
- 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
- 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
- ],
- [
- '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
- '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
- ],
- [
- '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
- '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
- ],
- [
- '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
- '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
- ],
- [
- 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
- '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
- ],
- [
- '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
- '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
- ],
- [
- 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
- '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
- ],
- [
- '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
- 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
- ],
- [
- '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
- 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
- ],
- [
- 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
- 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
- ],
- [
- '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
- '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
- ],
- [
- '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
- 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
- ],
- [
- 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
- 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
- ],
- [
- '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
- '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
- ],
- [
- '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
- 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
- ],
- [
- '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
- '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
- ],
- [
- '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
- 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
- ],
- [
- 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
- '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
- ],
- [
- '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
- '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
- ],
- [
- '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
- 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
- ],
- [
- '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
- 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
- ],
- [
- 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
- 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
- ],
- [
- 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
- 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
- ],
- [
- '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
- '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
- ],
- [
- '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
- '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
- ],
- [
- 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
- '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
- ],
- [
- 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
- 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
- ],
- [
- '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
- '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
- ],
- [
- '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
- '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
- ],
- [
- 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
- '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
- ],
- [
- '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
- '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
- ],
- [
- 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
- 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
- ],
- [
- '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
- 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
- ],
- [
- '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
- '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
- ],
- [
- 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
- '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
- ],
- [
- 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
- '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
- ],
- [
- '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
- '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
- ],
- [
- '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
- '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
- ],
- [
- '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
- 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
- ],
- [
- '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
- 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
- ],
- [
- '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
- '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
- ],
- [
- '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
- '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
- ],
- [
- '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
- '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
- ],
- [
- '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
- 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
- ],
- [
- 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
- 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
- ],
- [
- '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
- 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
- ],
- [
- 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
- '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
- ],
- [
- 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
- '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
- ],
- [
- 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
- '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
- ],
- [
- 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
- '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
- ],
- [
- '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
- 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
- ],
- [
- '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
- '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
- ],
- [
- '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
- 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
- ],
- [
- 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
- 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
- ],
- [
- 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
- '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
- ],
- [
- 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
- 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
- ],
- [
- 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
- '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
- ],
- [
- '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
- '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
- ],
- [
- 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
- '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
- ],
- [
- 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
- '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
- ],
- [
- '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
- '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
- ],
- [
- '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
- 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
- ],
- [
- 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
- '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
- ],
- [
- 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
- '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
- ],
- [
- 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
- '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
- ],
- [
- '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
- '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
- ],
- [
- 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
- 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
- ],
- [
- '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
- 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
- ],
- [
- 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
- 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
- ],
- [
- 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
- '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
- ],
- [
- '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
- 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
- ],
- [
- 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
- '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
- ],
- [
- 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
- '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
- ],
- [
- 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
- '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
- ],
- [
- '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
- 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
- ],
- [
- '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
- 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
- ],
- [
- 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
- '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
- ],
- [
- '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
- 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
- ],
- [
- '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
- '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
- ],
- [
- '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
- 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
- ],
- [
- 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
- 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
- ],
- [
- '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
- 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
- ],
- [
- '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
- '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
- ],
- [
- '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
- 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
- ],
- [
- '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
- '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
- ],
- [
- 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
- 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
- ],
- [
- '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
- '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
- ],
- [
- 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
- '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
- ],
- [
- '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
- '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
- ],
- [
- 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
- 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
- ],
- [
- 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
- '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
- ],
- [
- 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
- 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
- ],
- [
- '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
- 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
- ],
- [
- '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
- '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
- ],
- [
- '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
- 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
- ],
- [
- '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
- '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
- ],
- [
- '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
- '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
- ],
- [
- '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
- 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
- ],
- [
- '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
- '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
- ],
- [
- '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
- '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
- ],
- [
- '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
- '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
- ]
- ]
- }
- };
- },{}],88:[function(require,module,exports){
- 'use strict';
- var utils = exports;
- var BN = require('bn.js');
- var minAssert = require('minimalistic-assert');
- var minUtils = require('minimalistic-crypto-utils');
- utils.assert = minAssert;
- utils.toArray = minUtils.toArray;
- utils.zero2 = minUtils.zero2;
- utils.toHex = minUtils.toHex;
- utils.encode = minUtils.encode;
- // Represent num in a w-NAF form
- function getNAF(num, w) {
- var naf = [];
- var ws = 1 << (w + 1);
- var k = num.clone();
- while (k.cmpn(1) >= 0) {
- var z;
- if (k.isOdd()) {
- var mod = k.andln(ws - 1);
- if (mod > (ws >> 1) - 1)
- z = (ws >> 1) - mod;
- else
- z = mod;
- k.isubn(z);
- } else {
- z = 0;
- }
- naf.push(z);
- // Optimization, shift by word if possible
- var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
- for (var i = 1; i < shift; i++)
- naf.push(0);
- k.iushrn(shift);
- }
- return naf;
- }
- utils.getNAF = getNAF;
- // Represent k1, k2 in a Joint Sparse Form
- function getJSF(k1, k2) {
- var jsf = [
- [],
- []
- ];
- k1 = k1.clone();
- k2 = k2.clone();
- var d1 = 0;
- var d2 = 0;
- while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
- // First phase
- var m14 = (k1.andln(3) + d1) & 3;
- var m24 = (k2.andln(3) + d2) & 3;
- if (m14 === 3)
- m14 = -1;
- if (m24 === 3)
- m24 = -1;
- var u1;
- if ((m14 & 1) === 0) {
- u1 = 0;
- } else {
- var m8 = (k1.andln(7) + d1) & 7;
- if ((m8 === 3 || m8 === 5) && m24 === 2)
- u1 = -m14;
- else
- u1 = m14;
- }
- jsf[0].push(u1);
- var u2;
- if ((m24 & 1) === 0) {
- u2 = 0;
- } else {
- var m8 = (k2.andln(7) + d2) & 7;
- if ((m8 === 3 || m8 === 5) && m14 === 2)
- u2 = -m24;
- else
- u2 = m24;
- }
- jsf[1].push(u2);
- // Second phase
- if (2 * d1 === u1 + 1)
- d1 = 1 - d1;
- if (2 * d2 === u2 + 1)
- d2 = 1 - d2;
- k1.iushrn(1);
- k2.iushrn(1);
- }
- return jsf;
- }
- utils.getJSF = getJSF;
- function cachedProperty(obj, name, computer) {
- var key = '_' + name;
- obj.prototype[name] = function cachedProperty() {
- return this[key] !== undefined ? this[key] :
- this[key] = computer.call(this);
- };
- }
- utils.cachedProperty = cachedProperty;
- function parseBytes(bytes) {
- return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
- bytes;
- }
- utils.parseBytes = parseBytes;
- function intFromLE(bytes) {
- return new BN(bytes, 'hex', 'le');
- }
- utils.intFromLE = intFromLE;
- },{"bn.js":25,"minimalistic-assert":112,"minimalistic-crypto-utils":113}],89:[function(require,module,exports){
- module.exports={
- "_from": "elliptic@^6.0.0",
- "_id": "elliptic@6.4.0",
- "_inBundle": false,
- "_integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
- "_location": "/browserify/elliptic",
- "_phantomChildren": {},
- "_requested": {
- "type": "range",
- "registry": true,
- "raw": "elliptic@^6.0.0",
- "name": "elliptic",
- "escapedName": "elliptic",
- "rawSpec": "^6.0.0",
- "saveSpec": null,
- "fetchSpec": "^6.0.0"
- },
- "_requiredBy": [
- "/browserify/browserify-sign",
- "/browserify/create-ecdh"
- ],
- "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
- "_shasum": "cac9af8762c85836187003c8dfe193e5e2eae5df",
- "_spec": "elliptic@^6.0.0",
- "_where": "/usr/local/lib/node_modules/browserify/node_modules/browserify-sign",
- "author": {
- "name": "Fedor Indutny",
- "email": "fedor@indutny.com"
- },
- "bugs": {
- "url": "https://github.com/indutny/elliptic/issues"
- },
- "bundleDependencies": false,
- "dependencies": {
- "bn.js": "^4.4.0",
- "brorand": "^1.0.1",
- "hash.js": "^1.0.0",
- "hmac-drbg": "^1.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.0"
- },
- "deprecated": false,
- "description": "EC cryptography",
- "devDependencies": {
- "brfs": "^1.4.3",
- "coveralls": "^2.11.3",
- "grunt": "^0.4.5",
- "grunt-browserify": "^5.0.0",
- "grunt-cli": "^1.2.0",
- "grunt-contrib-connect": "^1.0.0",
- "grunt-contrib-copy": "^1.0.0",
- "grunt-contrib-uglify": "^1.0.1",
- "grunt-mocha-istanbul": "^3.0.1",
- "grunt-saucelabs": "^8.6.2",
- "istanbul": "^0.4.2",
- "jscs": "^2.9.0",
- "jshint": "^2.6.0",
- "mocha": "^2.1.0"
- },
- "files": [
- "lib"
- ],
- "homepage": "https://github.com/indutny/elliptic",
- "keywords": [
- "EC",
- "Elliptic",
- "curve",
- "Cryptography"
- ],
- "license": "MIT",
- "main": "lib/elliptic.js",
- "name": "elliptic",
- "repository": {
- "type": "git",
- "url": "git+ssh://git@github.com/indutny/elliptic.git"
- },
- "scripts": {
- "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
- "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
- "lint": "npm run jscs && npm run jshint",
- "test": "npm run lint && npm run unit",
- "unit": "istanbul test _mocha --reporter=spec test/index.js",
- "version": "grunt dist && git add dist/"
- },
- "version": "6.4.0"
- }
- },{}],90:[function(require,module,exports){
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- function EventEmitter() {
- this._events = this._events || {};
- this._maxListeners = this._maxListeners || undefined;
- }
- module.exports = EventEmitter;
- // Backwards-compat with node 0.10.x
- EventEmitter.EventEmitter = EventEmitter;
- EventEmitter.prototype._events = undefined;
- EventEmitter.prototype._maxListeners = undefined;
- // By default EventEmitters will print a warning if more than 10 listeners are
- // added to it. This is a useful default which helps finding memory leaks.
- EventEmitter.defaultMaxListeners = 10;
- // Obviously not all Emitters should be limited to 10. This function allows
- // that to be increased. Set to zero for unlimited.
- EventEmitter.prototype.setMaxListeners = function(n) {
- if (!isNumber(n) || n < 0 || isNaN(n))
- throw TypeError('n must be a positive number');
- this._maxListeners = n;
- return this;
- };
- EventEmitter.prototype.emit = function(type) {
- var er, handler, len, args, i, listeners;
- if (!this._events)
- this._events = {};
- // If there is no 'error' event listener then throw.
- if (type === 'error') {
- if (!this._events.error ||
- (isObject(this._events.error) && !this._events.error.length)) {
- er = arguments[1];
- if (er instanceof Error) {
- throw er; // Unhandled 'error' event
- } else {
- // At least give some kind of context to the user
- var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
- err.context = er;
- throw err;
- }
- }
- }
- handler = this._events[type];
- if (isUndefined(handler))
- return false;
- if (isFunction(handler)) {
- switch (arguments.length) {
- // fast cases
- case 1:
- handler.call(this);
- break;
- case 2:
- handler.call(this, arguments[1]);
- break;
- case 3:
- handler.call(this, arguments[1], arguments[2]);
- break;
- // slower
- default:
- args = Array.prototype.slice.call(arguments, 1);
- handler.apply(this, args);
- }
- } else if (isObject(handler)) {
- args = Array.prototype.slice.call(arguments, 1);
- listeners = handler.slice();
- len = listeners.length;
- for (i = 0; i < len; i++)
- listeners[i].apply(this, args);
- }
- return true;
- };
- EventEmitter.prototype.addListener = function(type, listener) {
- var m;
- if (!isFunction(listener))
- throw TypeError('listener must be a function');
- if (!this._events)
- this._events = {};
- // To avoid recursion in the case that type === "newListener"! Before
- // adding it to the listeners, first emit "newListener".
- if (this._events.newListener)
- this.emit('newListener', type,
- isFunction(listener.listener) ?
- listener.listener : listener);
- if (!this._events[type])
- // Optimize the case of one listener. Don't need the extra array object.
- this._events[type] = listener;
- else if (isObject(this._events[type]))
- // If we've already got an array, just append.
- this._events[type].push(listener);
- else
- // Adding the second element, need to change to array.
- this._events[type] = [this._events[type], listener];
- // Check for listener leak
- if (isObject(this._events[type]) && !this._events[type].warned) {
- if (!isUndefined(this._maxListeners)) {
- m = this._maxListeners;
- } else {
- m = EventEmitter.defaultMaxListeners;
- }
- if (m && m > 0 && this._events[type].length > m) {
- this._events[type].warned = true;
- console.error('(node) warning: possible EventEmitter memory ' +
- 'leak detected. %d listeners added. ' +
- 'Use emitter.setMaxListeners() to increase limit.',
- this._events[type].length);
- if (typeof console.trace === 'function') {
- // not supported in IE 10
- console.trace();
- }
- }
- }
- return this;
- };
- EventEmitter.prototype.on = EventEmitter.prototype.addListener;
- EventEmitter.prototype.once = function(type, listener) {
- if (!isFunction(listener))
- throw TypeError('listener must be a function');
- var fired = false;
- function g() {
- this.removeListener(type, g);
- if (!fired) {
- fired = true;
- listener.apply(this, arguments);
- }
- }
- g.listener = listener;
- this.on(type, g);
- return this;
- };
- // emits a 'removeListener' event iff the listener was removed
- EventEmitter.prototype.removeListener = function(type, listener) {
- var list, position, length, i;
- if (!isFunction(listener))
- throw TypeError('listener must be a function');
- if (!this._events || !this._events[type])
- return this;
- list = this._events[type];
- length = list.length;
- position = -1;
- if (list === listener ||
- (isFunction(list.listener) && list.listener === listener)) {
- delete this._events[type];
- if (this._events.removeListener)
- this.emit('removeListener', type, listener);
- } else if (isObject(list)) {
- for (i = length; i-- > 0;) {
- if (list[i] === listener ||
- (list[i].listener && list[i].listener === listener)) {
- position = i;
- break;
- }
- }
- if (position < 0)
- return this;
- if (list.length === 1) {
- list.length = 0;
- delete this._events[type];
- } else {
- list.splice(position, 1);
- }
- if (this._events.removeListener)
- this.emit('removeListener', type, listener);
- }
- return this;
- };
- EventEmitter.prototype.removeAllListeners = function(type) {
- var key, listeners;
- if (!this._events)
- return this;
- // not listening for removeListener, no need to emit
- if (!this._events.removeListener) {
- if (arguments.length === 0)
- this._events = {};
- else if (this._events[type])
- delete this._events[type];
- return this;
- }
- // emit removeListener for all listeners on all events
- if (arguments.length === 0) {
- for (key in this._events) {
- if (key === 'removeListener') continue;
- this.removeAllListeners(key);
- }
- this.removeAllListeners('removeListener');
- this._events = {};
- return this;
- }
- listeners = this._events[type];
- if (isFunction(listeners)) {
- this.removeListener(type, listeners);
- } else if (listeners) {
- // LIFO order
- while (listeners.length)
- this.removeListener(type, listeners[listeners.length - 1]);
- }
- delete this._events[type];
- return this;
- };
- EventEmitter.prototype.listeners = function(type) {
- var ret;
- if (!this._events || !this._events[type])
- ret = [];
- else if (isFunction(this._events[type]))
- ret = [this._events[type]];
- else
- ret = this._events[type].slice();
- return ret;
- };
- EventEmitter.prototype.listenerCount = function(type) {
- if (this._events) {
- var evlistener = this._events[type];
- if (isFunction(evlistener))
- return 1;
- else if (evlistener)
- return evlistener.length;
- }
- return 0;
- };
- EventEmitter.listenerCount = function(emitter, type) {
- return emitter.listenerCount(type);
- };
- function isFunction(arg) {
- return typeof arg === 'function';
- }
- function isNumber(arg) {
- return typeof arg === 'number';
- }
- function isObject(arg) {
- return typeof arg === 'object' && arg !== null;
- }
- function isUndefined(arg) {
- return arg === void 0;
- }
- },{}],91:[function(require,module,exports){
- (function (Buffer){
- var md5 = require('create-hash/md5')
- module.exports = EVP_BytesToKey
- function EVP_BytesToKey (password, salt, keyLen, ivLen) {
- if (!Buffer.isBuffer(password)) {
- password = new Buffer(password, 'binary')
- }
- if (salt && !Buffer.isBuffer(salt)) {
- salt = new Buffer(salt, 'binary')
- }
- keyLen = keyLen / 8
- ivLen = ivLen || 0
- var ki = 0
- var ii = 0
- var key = new Buffer(keyLen)
- var iv = new Buffer(ivLen)
- var addmd = 0
- var md_buf
- var i
- var bufs = []
- while (true) {
- if (addmd++ > 0) {
- bufs.push(md_buf)
- }
- bufs.push(password)
- if (salt) {
- bufs.push(salt)
- }
- md_buf = md5(Buffer.concat(bufs))
- bufs = []
- i = 0
- if (keyLen > 0) {
- while (true) {
- if (keyLen === 0) {
- break
- }
- if (i === md_buf.length) {
- break
- }
- key[ki++] = md_buf[i]
- keyLen--
- i++
- }
- }
- if (ivLen > 0 && i !== md_buf.length) {
- while (true) {
- if (ivLen === 0) {
- break
- }
- if (i === md_buf.length) {
- break
- }
- iv[ii++] = md_buf[i]
- ivLen--
- i++
- }
- }
- if (keyLen === 0 && ivLen === 0) {
- break
- }
- }
- for (i = 0; i < md_buf.length; i++) {
- md_buf[i] = 0
- }
- return {
- key: key,
- iv: iv
- }
- }
- }).call(this,require("buffer").Buffer)
- },{"buffer":54,"create-hash/md5":60}],92:[function(require,module,exports){
- (function (Buffer){
- 'use strict'
- var Transform = require('stream').Transform
- var inherits = require('inherits')
- function HashBase (blockSize) {
- Transform.call(this)
- this._block = new Buffer(blockSize)
- this._blockSize = blockSize
- this._blockOffset = 0
- this._length = [0, 0, 0, 0]
- this._finalized = false
- }
- inherits(HashBase, Transform)
- HashBase.prototype._transform = function (chunk, encoding, callback) {
- var error = null
- try {
- if (encoding !== 'buffer') chunk = new Buffer(chunk, encoding)
- this.update(chunk)
- } catch (err) {
- error = err
- }
- callback(error)
- }
- HashBase.prototype._flush = function (callback) {
- var error = null
- try {
- this.push(this._digest())
- } catch (err) {
- error = err
- }
- callback(error)
- }
- HashBase.prototype.update = function (data, encoding) {
- if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
- if (this._finalized) throw new Error('Digest already called')
- if (!Buffer.isBuffer(data)) data = new Buffer(data, encoding || 'binary')
- // consume data
- var block = this._block
- var offset = 0
- while (this._blockOffset + data.length - offset >= this._blockSize) {
- for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]
- this._update()
- this._blockOffset = 0
- }
- while (offset < data.length) block[this._blockOffset++] = data[offset++]
- // update length
- for (var j = 0, carry = data.length * 8; carry > 0; ++j) {
- this._length[j] += carry
- carry = (this._length[j] / 0x0100000000) | 0
- if (carry > 0) this._length[j] -= 0x0100000000 * carry
- }
- return this
- }
- HashBase.prototype._update = function (data) {
- throw new Error('_update is not implemented')
- }
- HashBase.prototype.digest = function (encoding) {
- if (this._finalized) throw new Error('Digest already called')
- this._finalized = true
- var digest = this._digest()
- if (encoding !== undefined) digest = digest.toString(encoding)
- return digest
- }
- HashBase.prototype._digest = function () {
- throw new Error('_digest is not implemented')
- }
- module.exports = HashBase
- }).call(this,require("buffer").Buffer)
- },{"buffer":54,"inherits":108,"stream":157}],93:[function(require,module,exports){
- var hash = exports;
- hash.utils = require('./hash/utils');
- hash.common = require('./hash/common');
- hash.sha = require('./hash/sha');
- hash.ripemd = require('./hash/ripemd');
- hash.hmac = require('./hash/hmac');
- // Proxy hash functions to the main object
- hash.sha1 = hash.sha.sha1;
- hash.sha256 = hash.sha.sha256;
- hash.sha224 = hash.sha.sha224;
- hash.sha384 = hash.sha.sha384;
- hash.sha512 = hash.sha.sha512;
- hash.ripemd160 = hash.ripemd.ripemd160;
- },{"./hash/common":94,"./hash/hmac":95,"./hash/ripemd":96,"./hash/sha":97,"./hash/utils":104}],94:[function(require,module,exports){
- 'use strict';
- var utils = require('./utils');
- var assert = require('minimalistic-assert');
- function BlockHash() {
- this.pending = null;
- this.pendingTotal = 0;
- this.blockSize = this.constructor.blockSize;
- this.outSize = this.constructor.outSize;
- this.hmacStrength = this.constructor.hmacStrength;
- this.padLength = this.constructor.padLength / 8;
- this.endian = 'big';
- this._delta8 = this.blockSize / 8;
- this._delta32 = this.blockSize / 32;
- }
- exports.BlockHash = BlockHash;
- BlockHash.prototype.update = function update(msg, enc) {
- // Convert message to array, pad it, and join into 32bit blocks
- msg = utils.toArray(msg, enc);
- if (!this.pending)
- this.pending = msg;
- else
- this.pending = this.pending.concat(msg);
- this.pendingTotal += msg.length;
- // Enough data, try updating
- if (this.pending.length >= this._delta8) {
- msg = this.pending;
- // Process pending data in blocks
- var r = msg.length % this._delta8;
- this.pending = msg.slice(msg.length - r, msg.length);
- if (this.pending.length === 0)
- this.pending = null;
- msg = utils.join32(msg, 0, msg.length - r, this.endian);
- for (var i = 0; i < msg.length; i += this._delta32)
- this._update(msg, i, i + this._delta32);
- }
- return this;
- };
- BlockHash.prototype.digest = function digest(enc) {
- this.update(this._pad());
- assert(this.pending === null);
- return this._digest(enc);
- };
- BlockHash.prototype._pad = function pad() {
- var len = this.pendingTotal;
- var bytes = this._delta8;
- var k = bytes - ((len + this.padLength) % bytes);
- var res = new Array(k + this.padLength);
- res[0] = 0x80;
- for (var i = 1; i < k; i++)
- res[i] = 0;
- // Append length
- len <<= 3;
- if (this.endian === 'big') {
- for (var t = 8; t < this.padLength; t++)
- res[i++] = 0;
- res[i++] = 0;
- res[i++] = 0;
- res[i++] = 0;
- res[i++] = 0;
- res[i++] = (len >>> 24) & 0xff;
- res[i++] = (len >>> 16) & 0xff;
- res[i++] = (len >>> 8) & 0xff;
- res[i++] = len & 0xff;
- } else {
- res[i++] = len & 0xff;
- res[i++] = (len >>> 8) & 0xff;
- res[i++] = (len >>> 16) & 0xff;
- res[i++] = (len >>> 24) & 0xff;
- res[i++] = 0;
- res[i++] = 0;
- res[i++] = 0;
- res[i++] = 0;
- for (t = 8; t < this.padLength; t++)
- res[i++] = 0;
- }
- return res;
- };
- },{"./utils":104,"minimalistic-assert":112}],95:[function(require,module,exports){
- 'use strict';
- var utils = require('./utils');
- var assert = require('minimalistic-assert');
- function Hmac(hash, key, enc) {
- if (!(this instanceof Hmac))
- return new Hmac(hash, key, enc);
- this.Hash = hash;
- this.blockSize = hash.blockSize / 8;
- this.outSize = hash.outSize / 8;
- this.inner = null;
- this.outer = null;
- this._init(utils.toArray(key, enc));
- }
- module.exports = Hmac;
- Hmac.prototype._init = function init(key) {
- // Shorten key, if needed
- if (key.length > this.blockSize)
- key = new this.Hash().update(key).digest();
- assert(key.length <= this.blockSize);
- // Add padding to key
- for (var i = key.length; i < this.blockSize; i++)
- key.push(0);
- for (i = 0; i < key.length; i++)
- key[i] ^= 0x36;
- this.inner = new this.Hash().update(key);
- // 0x36 ^ 0x5c = 0x6a
- for (i = 0; i < key.length; i++)
- key[i] ^= 0x6a;
- this.outer = new this.Hash().update(key);
- };
- Hmac.prototype.update = function update(msg, enc) {
- this.inner.update(msg, enc);
- return this;
- };
- Hmac.prototype.digest = function digest(enc) {
- this.outer.update(this.inner.digest());
- return this.outer.digest(enc);
- };
- },{"./utils":104,"minimalistic-assert":112}],96:[function(require,module,exports){
- 'use strict';
- var utils = require('./utils');
- var common = require('./common');
- var rotl32 = utils.rotl32;
- var sum32 = utils.sum32;
- var sum32_3 = utils.sum32_3;
- var sum32_4 = utils.sum32_4;
- var BlockHash = common.BlockHash;
- function RIPEMD160() {
- if (!(this instanceof RIPEMD160))
- return new RIPEMD160();
- BlockHash.call(this);
- this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
- this.endian = 'little';
- }
- utils.inherits(RIPEMD160, BlockHash);
- exports.ripemd160 = RIPEMD160;
- RIPEMD160.blockSize = 512;
- RIPEMD160.outSize = 160;
- RIPEMD160.hmacStrength = 192;
- RIPEMD160.padLength = 64;
- RIPEMD160.prototype._update = function update(msg, start) {
- var A = this.h[0];
- var B = this.h[1];
- var C = this.h[2];
- var D = this.h[3];
- var E = this.h[4];
- var Ah = A;
- var Bh = B;
- var Ch = C;
- var Dh = D;
- var Eh = E;
- for (var j = 0; j < 80; j++) {
- var T = sum32(
- rotl32(
- sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
- s[j]),
- E);
- A = E;
- E = D;
- D = rotl32(C, 10);
- C = B;
- B = T;
- T = sum32(
- rotl32(
- sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
- sh[j]),
- Eh);
- Ah = Eh;
- Eh = Dh;
- Dh = rotl32(Ch, 10);
- Ch = Bh;
- Bh = T;
- }
- T = sum32_3(this.h[1], C, Dh);
- this.h[1] = sum32_3(this.h[2], D, Eh);
- this.h[2] = sum32_3(this.h[3], E, Ah);
- this.h[3] = sum32_3(this.h[4], A, Bh);
- this.h[4] = sum32_3(this.h[0], B, Ch);
- this.h[0] = T;
- };
- RIPEMD160.prototype._digest = function digest(enc) {
- if (enc === 'hex')
- return utils.toHex32(this.h, 'little');
- else
- return utils.split32(this.h, 'little');
- };
- function f(j, x, y, z) {
- if (j <= 15)
- return x ^ y ^ z;
- else if (j <= 31)
- return (x & y) | ((~x) & z);
- else if (j <= 47)
- return (x | (~y)) ^ z;
- else if (j <= 63)
- return (x & z) | (y & (~z));
- else
- return x ^ (y | (~z));
- }
- function K(j) {
- if (j <= 15)
- return 0x00000000;
- else if (j <= 31)
- return 0x5a827999;
- else if (j <= 47)
- return 0x6ed9eba1;
- else if (j <= 63)
- return 0x8f1bbcdc;
- else
- return 0xa953fd4e;
- }
- function Kh(j) {
- if (j <= 15)
- return 0x50a28be6;
- else if (j <= 31)
- return 0x5c4dd124;
- else if (j <= 47)
- return 0x6d703ef3;
- else if (j <= 63)
- return 0x7a6d76e9;
- else
- return 0x00000000;
- }
- var r = [
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
- 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
- 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
- 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
- ];
- var rh = [
- 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
- 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
- 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
- 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
- 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
- ];
- var s = [
- 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
- 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
- 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
- 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
- 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
- ];
- var sh = [
- 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
- 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
- 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
- 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
- 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
- ];
- },{"./common":94,"./utils":104}],97:[function(require,module,exports){
- 'use strict';
- exports.sha1 = require('./sha/1');
- exports.sha224 = require('./sha/224');
- exports.sha256 = require('./sha/256');
- exports.sha384 = require('./sha/384');
- exports.sha512 = require('./sha/512');
- },{"./sha/1":98,"./sha/224":99,"./sha/256":100,"./sha/384":101,"./sha/512":102}],98:[function(require,module,exports){
- 'use strict';
- var utils = require('../utils');
- var common = require('../common');
- var shaCommon = require('./common');
- var rotl32 = utils.rotl32;
- var sum32 = utils.sum32;
- var sum32_5 = utils.sum32_5;
- var ft_1 = shaCommon.ft_1;
- var BlockHash = common.BlockHash;
- var sha1_K = [
- 0x5A827999, 0x6ED9EBA1,
- 0x8F1BBCDC, 0xCA62C1D6
- ];
- function SHA1() {
- if (!(this instanceof SHA1))
- return new SHA1();
- BlockHash.call(this);
- this.h = [
- 0x67452301, 0xefcdab89, 0x98badcfe,
- 0x10325476, 0xc3d2e1f0 ];
- this.W = new Array(80);
- }
- utils.inherits(SHA1, BlockHash);
- module.exports = SHA1;
- SHA1.blockSize = 512;
- SHA1.outSize = 160;
- SHA1.hmacStrength = 80;
- SHA1.padLength = 64;
- SHA1.prototype._update = function _update(msg, start) {
- var W = this.W;
- for (var i = 0; i < 16; i++)
- W[i] = msg[start + i];
- for(; i < W.length; i++)
- W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
- var a = this.h[0];
- var b = this.h[1];
- var c = this.h[2];
- var d = this.h[3];
- var e = this.h[4];
- for (i = 0; i < W.length; i++) {
- var s = ~~(i / 20);
- var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
- e = d;
- d = c;
- c = rotl32(b, 30);
- b = a;
- a = t;
- }
- this.h[0] = sum32(this.h[0], a);
- this.h[1] = sum32(this.h[1], b);
- this.h[2] = sum32(this.h[2], c);
- this.h[3] = sum32(this.h[3], d);
- this.h[4] = sum32(this.h[4], e);
- };
- SHA1.prototype._digest = function digest(enc) {
- if (enc === 'hex')
- return utils.toHex32(this.h, 'big');
- else
- return utils.split32(this.h, 'big');
- };
- },{"../common":94,"../utils":104,"./common":103}],99:[function(require,module,exports){
- 'use strict';
- var utils = require('../utils');
- var SHA256 = require('./256');
- function SHA224() {
- if (!(this instanceof SHA224))
- return new SHA224();
- SHA256.call(this);
- this.h = [
- 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
- 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
- }
- utils.inherits(SHA224, SHA256);
- module.exports = SHA224;
- SHA224.blockSize = 512;
- SHA224.outSize = 224;
- SHA224.hmacStrength = 192;
- SHA224.padLength = 64;
- SHA224.prototype._digest = function digest(enc) {
- // Just truncate output
- if (enc === 'hex')
- return utils.toHex32(this.h.slice(0, 7), 'big');
- else
- return utils.split32(this.h.slice(0, 7), 'big');
- };
- },{"../utils":104,"./256":100}],100:[function(require,module,exports){
- 'use strict';
- var utils = require('../utils');
- var common = require('../common');
- var shaCommon = require('./common');
- var assert = require('minimalistic-assert');
- var sum32 = utils.sum32;
- var sum32_4 = utils.sum32_4;
- var sum32_5 = utils.sum32_5;
- var ch32 = shaCommon.ch32;
- var maj32 = shaCommon.maj32;
- var s0_256 = shaCommon.s0_256;
- var s1_256 = shaCommon.s1_256;
- var g0_256 = shaCommon.g0_256;
- var g1_256 = shaCommon.g1_256;
- var BlockHash = common.BlockHash;
- var sha256_K = [
- 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
- 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
- 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
- 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
- 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
- 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
- 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
- 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
- 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
- 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
- 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
- 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
- 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
- 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
- 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
- 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
- ];
- function SHA256() {
- if (!(this instanceof SHA256))
- return new SHA256();
- BlockHash.call(this);
- this.h = [
- 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
- 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
- ];
- this.k = sha256_K;
- this.W = new Array(64);
- }
- utils.inherits(SHA256, BlockHash);
- module.exports = SHA256;
- SHA256.blockSize = 512;
- SHA256.outSize = 256;
- SHA256.hmacStrength = 192;
- SHA256.padLength = 64;
- SHA256.prototype._update = function _update(msg, start) {
- var W = this.W;
- for (var i = 0; i < 16; i++)
- W[i] = msg[start + i];
- for (; i < W.length; i++)
- W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
- var a = this.h[0];
- var b = this.h[1];
- var c = this.h[2];
- var d = this.h[3];
- var e = this.h[4];
- var f = this.h[5];
- var g = this.h[6];
- var h = this.h[7];
- assert(this.k.length === W.length);
- for (i = 0; i < W.length; i++) {
- var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
- var T2 = sum32(s0_256(a), maj32(a, b, c));
- h = g;
- g = f;
- f = e;
- e = sum32(d, T1);
- d = c;
- c = b;
- b = a;
- a = sum32(T1, T2);
- }
- this.h[0] = sum32(this.h[0], a);
- this.h[1] = sum32(this.h[1], b);
- this.h[2] = sum32(this.h[2], c);
- this.h[3] = sum32(this.h[3], d);
- this.h[4] = sum32(this.h[4], e);
- this.h[5] = sum32(this.h[5], f);
- this.h[6] = sum32(this.h[6], g);
- this.h[7] = sum32(this.h[7], h);
- };
- SHA256.prototype._digest = function digest(enc) {
- if (enc === 'hex')
- return utils.toHex32(this.h, 'big');
- else
- return utils.split32(this.h, 'big');
- };
- },{"../common":94,"../utils":104,"./common":103,"minimalistic-assert":112}],101:[function(require,module,exports){
- 'use strict';
- var utils = require('../utils');
- var SHA512 = require('./512');
- function SHA384() {
- if (!(this instanceof SHA384))
- return new SHA384();
- SHA512.call(this);
- this.h = [
- 0xcbbb9d5d, 0xc1059ed8,
- 0x629a292a, 0x367cd507,
- 0x9159015a, 0x3070dd17,
- 0x152fecd8, 0xf70e5939,
- 0x67332667, 0xffc00b31,
- 0x8eb44a87, 0x68581511,
- 0xdb0c2e0d, 0x64f98fa7,
- 0x47b5481d, 0xbefa4fa4 ];
- }
- utils.inherits(SHA384, SHA512);
- module.exports = SHA384;
- SHA384.blockSize = 1024;
- SHA384.outSize = 384;
- SHA384.hmacStrength = 192;
- SHA384.padLength = 128;
- SHA384.prototype._digest = function digest(enc) {
- if (enc === 'hex')
- return utils.toHex32(this.h.slice(0, 12), 'big');
- else
- return utils.split32(this.h.slice(0, 12), 'big');
- };
- },{"../utils":104,"./512":102}],102:[function(require,module,exports){
- 'use strict';
- var utils = require('../utils');
- var common = require('../common');
- var assert = require('minimalistic-assert');
- var rotr64_hi = utils.rotr64_hi;
- var rotr64_lo = utils.rotr64_lo;
- var shr64_hi = utils.shr64_hi;
- var shr64_lo = utils.shr64_lo;
- var sum64 = utils.sum64;
- var sum64_hi = utils.sum64_hi;
- var sum64_lo = utils.sum64_lo;
- var sum64_4_hi = utils.sum64_4_hi;
- var sum64_4_lo = utils.sum64_4_lo;
- var sum64_5_hi = utils.sum64_5_hi;
- var sum64_5_lo = utils.sum64_5_lo;
- var BlockHash = common.BlockHash;
- var sha512_K = [
- 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
- 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
- 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
- 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
- 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
- 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
- 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
- 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
- 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
- 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
- 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
- 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
- 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
- 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
- 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
- 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
- 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
- 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
- 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
- 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
- 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
- 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
- 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
- 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
- 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
- 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
- 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
- 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
- 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
- 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
- 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
- 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
- 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
- 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
- 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
- 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
- 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
- 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
- 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
- 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
- ];
- function SHA512() {
- if (!(this instanceof SHA512))
- return new SHA512();
- BlockHash.call(this);
- this.h = [
- 0x6a09e667, 0xf3bcc908,
- 0xbb67ae85, 0x84caa73b,
- 0x3c6ef372, 0xfe94f82b,
- 0xa54ff53a, 0x5f1d36f1,
- 0x510e527f, 0xade682d1,
- 0x9b05688c, 0x2b3e6c1f,
- 0x1f83d9ab, 0xfb41bd6b,
- 0x5be0cd19, 0x137e2179 ];
- this.k = sha512_K;
- this.W = new Array(160);
- }
- utils.inherits(SHA512, BlockHash);
- module.exports = SHA512;
- SHA512.blockSize = 1024;
- SHA512.outSize = 512;
- SHA512.hmacStrength = 192;
- SHA512.padLength = 128;
- SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
- var W = this.W;
- // 32 x 32bit words
- for (var i = 0; i < 32; i++)
- W[i] = msg[start + i];
- for (; i < W.length; i += 2) {
- var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
- var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
- var c1_hi = W[i - 14]; // i - 7
- var c1_lo = W[i - 13];
- var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
- var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
- var c3_hi = W[i - 32]; // i - 16
- var c3_lo = W[i - 31];
- W[i] = sum64_4_hi(
- c0_hi, c0_lo,
- c1_hi, c1_lo,
- c2_hi, c2_lo,
- c3_hi, c3_lo);
- W[i + 1] = sum64_4_lo(
- c0_hi, c0_lo,
- c1_hi, c1_lo,
- c2_hi, c2_lo,
- c3_hi, c3_lo);
- }
- };
- SHA512.prototype._update = function _update(msg, start) {
- this._prepareBlock(msg, start);
- var W = this.W;
- var ah = this.h[0];
- var al = this.h[1];
- var bh = this.h[2];
- var bl = this.h[3];
- var ch = this.h[4];
- var cl = this.h[5];
- var dh = this.h[6];
- var dl = this.h[7];
- var eh = this.h[8];
- var el = this.h[9];
- var fh = this.h[10];
- var fl = this.h[11];
- var gh = this.h[12];
- var gl = this.h[13];
- var hh = this.h[14];
- var hl = this.h[15];
- assert(this.k.length === W.length);
- for (var i = 0; i < W.length; i += 2) {
- var c0_hi = hh;
- var c0_lo = hl;
- var c1_hi = s1_512_hi(eh, el);
- var c1_lo = s1_512_lo(eh, el);
- var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
- var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
- var c3_hi = this.k[i];
- var c3_lo = this.k[i + 1];
- var c4_hi = W[i];
- var c4_lo = W[i + 1];
- var T1_hi = sum64_5_hi(
- c0_hi, c0_lo,
- c1_hi, c1_lo,
- c2_hi, c2_lo,
- c3_hi, c3_lo,
- c4_hi, c4_lo);
- var T1_lo = sum64_5_lo(
- c0_hi, c0_lo,
- c1_hi, c1_lo,
- c2_hi, c2_lo,
- c3_hi, c3_lo,
- c4_hi, c4_lo);
- c0_hi = s0_512_hi(ah, al);
- c0_lo = s0_512_lo(ah, al);
- c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
- c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
- var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
- var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
- hh = gh;
- hl = gl;
- gh = fh;
- gl = fl;
- fh = eh;
- fl = el;
- eh = sum64_hi(dh, dl, T1_hi, T1_lo);
- el = sum64_lo(dl, dl, T1_hi, T1_lo);
- dh = ch;
- dl = cl;
- ch = bh;
- cl = bl;
- bh = ah;
- bl = al;
- ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
- al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
- }
- sum64(this.h, 0, ah, al);
- sum64(this.h, 2, bh, bl);
- sum64(this.h, 4, ch, cl);
- sum64(this.h, 6, dh, dl);
- sum64(this.h, 8, eh, el);
- sum64(this.h, 10, fh, fl);
- sum64(this.h, 12, gh, gl);
- sum64(this.h, 14, hh, hl);
- };
- SHA512.prototype._digest = function digest(enc) {
- if (enc === 'hex')
- return utils.toHex32(this.h, 'big');
- else
- return utils.split32(this.h, 'big');
- };
- function ch64_hi(xh, xl, yh, yl, zh) {
- var r = (xh & yh) ^ ((~xh) & zh);
- if (r < 0)
- r += 0x100000000;
- return r;
- }
- function ch64_lo(xh, xl, yh, yl, zh, zl) {
- var r = (xl & yl) ^ ((~xl) & zl);
- if (r < 0)
- r += 0x100000000;
- return r;
- }
- function maj64_hi(xh, xl, yh, yl, zh) {
- var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
- if (r < 0)
- r += 0x100000000;
- return r;
- }
- function maj64_lo(xh, xl, yh, yl, zh, zl) {
- var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
- if (r < 0)
- r += 0x100000000;
- return r;
- }
- function s0_512_hi(xh, xl) {
- var c0_hi = rotr64_hi(xh, xl, 28);
- var c1_hi = rotr64_hi(xl, xh, 2); // 34
- var c2_hi = rotr64_hi(xl, xh, 7); // 39
- var r = c0_hi ^ c1_hi ^ c2_hi;
- if (r < 0)
- r += 0x100000000;
- return r;
- }
- function s0_512_lo(xh, xl) {
- var c0_lo = rotr64_lo(xh, xl, 28);
- var c1_lo = rotr64_lo(xl, xh, 2); // 34
- var c2_lo = rotr64_lo(xl, xh, 7); // 39
- var r = c0_lo ^ c1_lo ^ c2_lo;
- if (r < 0)
- r += 0x100000000;
- return r;
- }
- function s1_512_hi(xh, xl) {
- var c0_hi = rotr64_hi(xh, xl, 14);
- var c1_hi = rotr64_hi(xh, xl, 18);
- var c2_hi = rotr64_hi(xl, xh, 9); // 41
- var r = c0_hi ^ c1_hi ^ c2_hi;
- if (r < 0)
- r += 0x100000000;
- return r;
- }
- function s1_512_lo(xh, xl) {
- var c0_lo = rotr64_lo(xh, xl, 14);
- var c1_lo = rotr64_lo(xh, xl, 18);
- var c2_lo = rotr64_lo(xl, xh, 9); // 41
- var r = c0_lo ^ c1_lo ^ c2_lo;
- if (r < 0)
- r += 0x100000000;
- return r;
- }
- function g0_512_hi(xh, xl) {
- var c0_hi = rotr64_hi(xh, xl, 1);
- var c1_hi = rotr64_hi(xh, xl, 8);
- var c2_hi = shr64_hi(xh, xl, 7);
- var r = c0_hi ^ c1_hi ^ c2_hi;
- if (r < 0)
- r += 0x100000000;
- return r;
- }
- function g0_512_lo(xh, xl) {
- var c0_lo = rotr64_lo(xh, xl, 1);
- var c1_lo = rotr64_lo(xh, xl, 8);
- var c2_lo = shr64_lo(xh, xl, 7);
- var r = c0_lo ^ c1_lo ^ c2_lo;
- if (r < 0)
- r += 0x100000000;
- return r;
- }
- function g1_512_hi(xh, xl) {
- var c0_hi = rotr64_hi(xh, xl, 19);
- var c1_hi = rotr64_hi(xl, xh, 29); // 61
- var c2_hi = shr64_hi(xh, xl, 6);
- var r = c0_hi ^ c1_hi ^ c2_hi;
- if (r < 0)
- r += 0x100000000;
- return r;
- }
- function g1_512_lo(xh, xl) {
- var c0_lo = rotr64_lo(xh, xl, 19);
- var c1_lo = rotr64_lo(xl, xh, 29); // 61
- var c2_lo = shr64_lo(xh, xl, 6);
- var r = c0_lo ^ c1_lo ^ c2_lo;
- if (r < 0)
- r += 0x100000000;
- return r;
- }
- },{"../common":94,"../utils":104,"minimalistic-assert":112}],103:[function(require,module,exports){
- 'use strict';
- var utils = require('../utils');
- var rotr32 = utils.rotr32;
- function ft_1(s, x, y, z) {
- if (s === 0)
- return ch32(x, y, z);
- if (s === 1 || s === 3)
- return p32(x, y, z);
- if (s === 2)
- return maj32(x, y, z);
- }
- exports.ft_1 = ft_1;
- function ch32(x, y, z) {
- return (x & y) ^ ((~x) & z);
- }
- exports.ch32 = ch32;
- function maj32(x, y, z) {
- return (x & y) ^ (x & z) ^ (y & z);
- }
- exports.maj32 = maj32;
- function p32(x, y, z) {
- return x ^ y ^ z;
- }
- exports.p32 = p32;
- function s0_256(x) {
- return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
- }
- exports.s0_256 = s0_256;
- function s1_256(x) {
- return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
- }
- exports.s1_256 = s1_256;
- function g0_256(x) {
- return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
- }
- exports.g0_256 = g0_256;
- function g1_256(x) {
- return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
- }
- exports.g1_256 = g1_256;
- },{"../utils":104}],104:[function(require,module,exports){
- 'use strict';
- var assert = require('minimalistic-assert');
- var inherits = require('inherits');
- exports.inherits = inherits;
- function toArray(msg, enc) {
- if (Array.isArray(msg))
- return msg.slice();
- if (!msg)
- return [];
- var res = [];
- if (typeof msg === 'string') {
- if (!enc) {
- for (var i = 0; i < msg.length; i++) {
- var c = msg.charCodeAt(i);
- var hi = c >> 8;
- var lo = c & 0xff;
- if (hi)
- res.push(hi, lo);
- else
- res.push(lo);
- }
- } else if (enc === 'hex') {
- msg = msg.replace(/[^a-z0-9]+/ig, '');
- if (msg.length % 2 !== 0)
- msg = '0' + msg;
- for (i = 0; i < msg.length; i += 2)
- res.push(parseInt(msg[i] + msg[i + 1], 16));
- }
- } else {
- for (i = 0; i < msg.length; i++)
- res[i] = msg[i] | 0;
- }
- return res;
- }
- exports.toArray = toArray;
- function toHex(msg) {
- var res = '';
- for (var i = 0; i < msg.length; i++)
- res += zero2(msg[i].toString(16));
- return res;
- }
- exports.toHex = toHex;
- function htonl(w) {
- var res = (w >>> 24) |
- ((w >>> 8) & 0xff00) |
- ((w << 8) & 0xff0000) |
- ((w & 0xff) << 24);
- return res >>> 0;
- }
- exports.htonl = htonl;
- function toHex32(msg, endian) {
- var res = '';
- for (var i = 0; i < msg.length; i++) {
- var w = msg[i];
- if (endian === 'little')
- w = htonl(w);
- res += zero8(w.toString(16));
- }
- return res;
- }
- exports.toHex32 = toHex32;
- function zero2(word) {
- if (word.length === 1)
- return '0' + word;
- else
- return word;
- }
- exports.zero2 = zero2;
- function zero8(word) {
- if (word.length === 7)
- return '0' + word;
- else if (word.length === 6)
- return '00' + word;
- else if (word.length === 5)
- return '000' + word;
- else if (word.length === 4)
- return '0000' + word;
- else if (word.length === 3)
- return '00000' + word;
- else if (word.length === 2)
- return '000000' + word;
- else if (word.length === 1)
- return '0000000' + word;
- else
- return word;
- }
- exports.zero8 = zero8;
- function join32(msg, start, end, endian) {
- var len = end - start;
- assert(len % 4 === 0);
- var res = new Array(len / 4);
- for (var i = 0, k = start; i < res.length; i++, k += 4) {
- var w;
- if (endian === 'big')
- w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
- else
- w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
- res[i] = w >>> 0;
- }
- return res;
- }
- exports.join32 = join32;
- function split32(msg, endian) {
- var res = new Array(msg.length * 4);
- for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
- var m = msg[i];
- if (endian === 'big') {
- res[k] = m >>> 24;
- res[k + 1] = (m >>> 16) & 0xff;
- res[k + 2] = (m >>> 8) & 0xff;
- res[k + 3] = m & 0xff;
- } else {
- res[k + 3] = m >>> 24;
- res[k + 2] = (m >>> 16) & 0xff;
- res[k + 1] = (m >>> 8) & 0xff;
- res[k] = m & 0xff;
- }
- }
- return res;
- }
- exports.split32 = split32;
- function rotr32(w, b) {
- return (w >>> b) | (w << (32 - b));
- }
- exports.rotr32 = rotr32;
- function rotl32(w, b) {
- return (w << b) | (w >>> (32 - b));
- }
- exports.rotl32 = rotl32;
- function sum32(a, b) {
- return (a + b) >>> 0;
- }
- exports.sum32 = sum32;
- function sum32_3(a, b, c) {
- return (a + b + c) >>> 0;
- }
- exports.sum32_3 = sum32_3;
- function sum32_4(a, b, c, d) {
- return (a + b + c + d) >>> 0;
- }
- exports.sum32_4 = sum32_4;
- function sum32_5(a, b, c, d, e) {
- return (a + b + c + d + e) >>> 0;
- }
- exports.sum32_5 = sum32_5;
- function sum64(buf, pos, ah, al) {
- var bh = buf[pos];
- var bl = buf[pos + 1];
- var lo = (al + bl) >>> 0;
- var hi = (lo < al ? 1 : 0) + ah + bh;
- buf[pos] = hi >>> 0;
- buf[pos + 1] = lo;
- }
- exports.sum64 = sum64;
- function sum64_hi(ah, al, bh, bl) {
- var lo = (al + bl) >>> 0;
- var hi = (lo < al ? 1 : 0) + ah + bh;
- return hi >>> 0;
- }
- exports.sum64_hi = sum64_hi;
- function sum64_lo(ah, al, bh, bl) {
- var lo = al + bl;
- return lo >>> 0;
- }
- exports.sum64_lo = sum64_lo;
- function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
- var carry = 0;
- var lo = al;
- lo = (lo + bl) >>> 0;
- carry += lo < al ? 1 : 0;
- lo = (lo + cl) >>> 0;
- carry += lo < cl ? 1 : 0;
- lo = (lo + dl) >>> 0;
- carry += lo < dl ? 1 : 0;
- var hi = ah + bh + ch + dh + carry;
- return hi >>> 0;
- }
- exports.sum64_4_hi = sum64_4_hi;
- function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
- var lo = al + bl + cl + dl;
- return lo >>> 0;
- }
- exports.sum64_4_lo = sum64_4_lo;
- function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
- var carry = 0;
- var lo = al;
- lo = (lo + bl) >>> 0;
- carry += lo < al ? 1 : 0;
- lo = (lo + cl) >>> 0;
- carry += lo < cl ? 1 : 0;
- lo = (lo + dl) >>> 0;
- carry += lo < dl ? 1 : 0;
- lo = (lo + el) >>> 0;
- carry += lo < el ? 1 : 0;
- var hi = ah + bh + ch + dh + eh + carry;
- return hi >>> 0;
- }
- exports.sum64_5_hi = sum64_5_hi;
- function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
- var lo = al + bl + cl + dl + el;
- return lo >>> 0;
- }
- exports.sum64_5_lo = sum64_5_lo;
- function rotr64_hi(ah, al, num) {
- var r = (al << (32 - num)) | (ah >>> num);
- return r >>> 0;
- }
- exports.rotr64_hi = rotr64_hi;
- function rotr64_lo(ah, al, num) {
- var r = (ah << (32 - num)) | (al >>> num);
- return r >>> 0;
- }
- exports.rotr64_lo = rotr64_lo;
- function shr64_hi(ah, al, num) {
- return ah >>> num;
- }
- exports.shr64_hi = shr64_hi;
- function shr64_lo(ah, al, num) {
- var r = (ah << (32 - num)) | (al >>> num);
- return r >>> 0;
- }
- exports.shr64_lo = shr64_lo;
- },{"inherits":108,"minimalistic-assert":112}],105:[function(require,module,exports){
- 'use strict';
- var hash = require('hash.js');
- var utils = require('minimalistic-crypto-utils');
- var assert = require('minimalistic-assert');
- function HmacDRBG(options) {
- if (!(this instanceof HmacDRBG))
- return new HmacDRBG(options);
- this.hash = options.hash;
- this.predResist = !!options.predResist;
- this.outLen = this.hash.outSize;
- this.minEntropy = options.minEntropy || this.hash.hmacStrength;
- this._reseed = null;
- this.reseedInterval = null;
- this.K = null;
- this.V = null;
- var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');
- var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');
- var pers = utils.toArray(options.pers, options.persEnc || 'hex');
- assert(entropy.length >= (this.minEntropy / 8),
- 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
- this._init(entropy, nonce, pers);
- }
- module.exports = HmacDRBG;
- HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
- var seed = entropy.concat(nonce).concat(pers);
- this.K = new Array(this.outLen / 8);
- this.V = new Array(this.outLen / 8);
- for (var i = 0; i < this.V.length; i++) {
- this.K[i] = 0x00;
- this.V[i] = 0x01;
- }
- this._update(seed);
- this._reseed = 1;
- this.reseedInterval = 0x1000000000000; // 2^48
- };
- HmacDRBG.prototype._hmac = function hmac() {
- return new hash.hmac(this.hash, this.K);
- };
- HmacDRBG.prototype._update = function update(seed) {
- var kmac = this._hmac()
- .update(this.V)
- .update([ 0x00 ]);
- if (seed)
- kmac = kmac.update(seed);
- this.K = kmac.digest();
- this.V = this._hmac().update(this.V).digest();
- if (!seed)
- return;
- this.K = this._hmac()
- .update(this.V)
- .update([ 0x01 ])
- .update(seed)
- .digest();
- this.V = this._hmac().update(this.V).digest();
- };
- HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
- // Optional entropy enc
- if (typeof entropyEnc !== 'string') {
- addEnc = add;
- add = entropyEnc;
- entropyEnc = null;
- }
- entropy = utils.toArray(entropy, entropyEnc);
- add = utils.toArray(add, addEnc);
- assert(entropy.length >= (this.minEntropy / 8),
- 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
- this._update(entropy.concat(add || []));
- this._reseed = 1;
- };
- HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
- if (this._reseed > this.reseedInterval)
- throw new Error('Reseed is required');
- // Optional encoding
- if (typeof enc !== 'string') {
- addEnc = add;
- add = enc;
- enc = null;
- }
- // Optional additional data
- if (add) {
- add = utils.toArray(add, addEnc || 'hex');
- this._update(add);
- }
- var temp = [];
- while (temp.length < len) {
- this.V = this._hmac().update(this.V).digest();
- temp = temp.concat(this.V);
- }
- var res = temp.slice(0, len);
- this._update(add);
- this._reseed++;
- return utils.encode(res, enc);
- };
- },{"hash.js":93,"minimalistic-assert":112,"minimalistic-crypto-utils":113}],106:[function(require,module,exports){
- exports.read = function (buffer, offset, isLE, mLen, nBytes) {
- var e, m
- var eLen = nBytes * 8 - mLen - 1
- var eMax = (1 << eLen) - 1
- var eBias = eMax >> 1
- var nBits = -7
- var i = isLE ? (nBytes - 1) : 0
- var d = isLE ? -1 : 1
- var s = buffer[offset + i]
- i += d
- e = s & ((1 << (-nBits)) - 1)
- s >>= (-nBits)
- nBits += eLen
- for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
- m = e & ((1 << (-nBits)) - 1)
- e >>= (-nBits)
- nBits += mLen
- for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
- if (e === 0) {
- e = 1 - eBias
- } else if (e === eMax) {
- return m ? NaN : ((s ? -1 : 1) * Infinity)
- } else {
- m = m + Math.pow(2, mLen)
- e = e - eBias
- }
- return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
- }
- exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
- var e, m, c
- var eLen = nBytes * 8 - mLen - 1
- var eMax = (1 << eLen) - 1
- var eBias = eMax >> 1
- var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
- var i = isLE ? 0 : (nBytes - 1)
- var d = isLE ? 1 : -1
- var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
- value = Math.abs(value)
- if (isNaN(value) || value === Infinity) {
- m = isNaN(value) ? 1 : 0
- e = eMax
- } else {
- e = Math.floor(Math.log(value) / Math.LN2)
- if (value * (c = Math.pow(2, -e)) < 1) {
- e--
- c *= 2
- }
- if (e + eBias >= 1) {
- value += rt / c
- } else {
- value += rt * Math.pow(2, 1 - eBias)
- }
- if (value * c >= 2) {
- e++
- c /= 2
- }
- if (e + eBias >= eMax) {
- m = 0
- e = eMax
- } else if (e + eBias >= 1) {
- m = (value * c - 1) * Math.pow(2, mLen)
- e = e + eBias
- } else {
- m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
- e = 0
- }
- }
- for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
- e = (e << mLen) | m
- eLen += mLen
- for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
- buffer[offset + i - d] |= s * 128
- }
- },{}],107:[function(require,module,exports){
- var indexOf = [].indexOf;
- module.exports = function(arr, obj){
- if (indexOf) return arr.indexOf(obj);
- for (var i = 0; i < arr.length; ++i) {
- if (arr[i] === obj) return i;
- }
- return -1;
- };
- },{}],108:[function(require,module,exports){
- if (typeof Object.create === 'function') {
- // implementation from standard node.js 'util' module
- module.exports = function inherits(ctor, superCtor) {
- ctor.super_ = superCtor
- ctor.prototype = Object.create(superCtor.prototype, {
- constructor: {
- value: ctor,
- enumerable: false,
- writable: true,
- configurable: true
- }
- });
- };
- } else {
- // old school shim for old browsers
- module.exports = function inherits(ctor, superCtor) {
- ctor.super_ = superCtor
- var TempCtor = function () {}
- TempCtor.prototype = superCtor.prototype
- ctor.prototype = new TempCtor()
- ctor.prototype.constructor = ctor
- }
- }
- },{}],109:[function(require,module,exports){
- /*!
- * Determine if an object is a Buffer
- *
- * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
- * @license MIT
- */
- // The _isBuffer check is for Safari 5-7 support, because it's missing
- // Object.prototype.constructor. Remove this eventually
- module.exports = function (obj) {
- return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
- }
- function isBuffer (obj) {
- return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
- }
- // For Node v0.10 support. Remove this eventually.
- function isSlowBuffer (obj) {
- return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
- }
- },{}],110:[function(require,module,exports){
- var toString = {}.toString;
- module.exports = Array.isArray || function (arr) {
- return toString.call(arr) == '[object Array]';
- };
- },{}],111:[function(require,module,exports){
- var bn = require('bn.js');
- var brorand = require('brorand');
- function MillerRabin(rand) {
- this.rand = rand || new brorand.Rand();
- }
- module.exports = MillerRabin;
- MillerRabin.create = function create(rand) {
- return new MillerRabin(rand);
- };
- MillerRabin.prototype._rand = function _rand(n) {
- var len = n.bitLength();
- var buf = this.rand.generate(Math.ceil(len / 8));
- // Set low bits
- buf[0] |= 3;
- // Mask high bits
- var mask = len & 0x7;
- if (mask !== 0)
- buf[buf.length - 1] >>= 7 - mask;
- return new bn(buf);
- }
- MillerRabin.prototype.test = function test(n, k, cb) {
- var len = n.bitLength();
- var red = bn.mont(n);
- var rone = new bn(1).toRed(red);
- if (!k)
- k = Math.max(1, (len / 48) | 0);
- // Find d and s, (n - 1) = (2 ^ s) * d;
- var n1 = n.subn(1);
- var n2 = n1.subn(1);
- for (var s = 0; !n1.testn(s); s++) {}
- var d = n.shrn(s);
- var rn1 = n1.toRed(red);
- var prime = true;
- for (; k > 0; k--) {
- var a = this._rand(n2);
- if (cb)
- cb(a);
- var x = a.toRed(red).redPow(d);
- if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)
- continue;
- for (var i = 1; i < s; i++) {
- x = x.redSqr();
- if (x.cmp(rone) === 0)
- return false;
- if (x.cmp(rn1) === 0)
- break;
- }
- if (i === s)
- return false;
- }
- return prime;
- };
- MillerRabin.prototype.getDivisor = function getDivisor(n, k) {
- var len = n.bitLength();
- var red = bn.mont(n);
- var rone = new bn(1).toRed(red);
- if (!k)
- k = Math.max(1, (len / 48) | 0);
- // Find d and s, (n - 1) = (2 ^ s) * d;
- var n1 = n.subn(1);
- var n2 = n1.subn(1);
- for (var s = 0; !n1.testn(s); s++) {}
- var d = n.shrn(s);
- var rn1 = n1.toRed(red);
- for (; k > 0; k--) {
- var a = this._rand(n2);
- var g = n.gcd(a);
- if (g.cmpn(1) !== 0)
- return g;
- var x = a.toRed(red).redPow(d);
- if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)
- continue;
- for (var i = 1; i < s; i++) {
- x = x.redSqr();
- if (x.cmp(rone) === 0)
- return x.fromRed().subn(1).gcd(n);
- if (x.cmp(rn1) === 0)
- break;
- }
- if (i === s) {
- x = x.redSqr();
- return x.fromRed().subn(1).gcd(n);
- }
- }
- return false;
- };
- },{"bn.js":25,"brorand":26}],112:[function(require,module,exports){
- module.exports = assert;
- function assert(val, msg) {
- if (!val)
- throw new Error(msg || 'Assertion failed');
- }
- assert.equal = function assertEqual(l, r, msg) {
- if (l != r)
- throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));
- };
- },{}],113:[function(require,module,exports){
- 'use strict';
- var utils = exports;
- function toArray(msg, enc) {
- if (Array.isArray(msg))
- return msg.slice();
- if (!msg)
- return [];
- var res = [];
- if (typeof msg !== 'string') {
- for (var i = 0; i < msg.length; i++)
- res[i] = msg[i] | 0;
- return res;
- }
- if (enc === 'hex') {
- msg = msg.replace(/[^a-z0-9]+/ig, '');
- if (msg.length % 2 !== 0)
- msg = '0' + msg;
- for (var i = 0; i < msg.length; i += 2)
- res.push(parseInt(msg[i] + msg[i + 1], 16));
- } else {
- for (var i = 0; i < msg.length; i++) {
- var c = msg.charCodeAt(i);
- var hi = c >> 8;
- var lo = c & 0xff;
- if (hi)
- res.push(hi, lo);
- else
- res.push(lo);
- }
- }
- return res;
- }
- utils.toArray = toArray;
- function zero2(word) {
- if (word.length === 1)
- return '0' + word;
- else
- return word;
- }
- utils.zero2 = zero2;
- function toHex(msg) {
- var res = '';
- for (var i = 0; i < msg.length; i++)
- res += zero2(msg[i].toString(16));
- return res;
- }
- utils.toHex = toHex;
- utils.encode = function encode(arr, enc) {
- if (enc === 'hex')
- return toHex(arr);
- else
- return arr;
- };
- },{}],114:[function(require,module,exports){
- module.exports={"2.16.840.1.101.3.4.1.1": "aes-128-ecb",
- "2.16.840.1.101.3.4.1.2": "aes-128-cbc",
- "2.16.840.1.101.3.4.1.3": "aes-128-ofb",
- "2.16.840.1.101.3.4.1.4": "aes-128-cfb",
- "2.16.840.1.101.3.4.1.21": "aes-192-ecb",
- "2.16.840.1.101.3.4.1.22": "aes-192-cbc",
- "2.16.840.1.101.3.4.1.23": "aes-192-ofb",
- "2.16.840.1.101.3.4.1.24": "aes-192-cfb",
- "2.16.840.1.101.3.4.1.41": "aes-256-ecb",
- "2.16.840.1.101.3.4.1.42": "aes-256-cbc",
- "2.16.840.1.101.3.4.1.43": "aes-256-ofb",
- "2.16.840.1.101.3.4.1.44": "aes-256-cfb"
- }
- },{}],115:[function(require,module,exports){
- // from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js
- // Fedor, you are amazing.
- 'use strict'
- var asn1 = require('asn1.js')
- exports.certificate = require('./certificate')
- var RSAPrivateKey = asn1.define('RSAPrivateKey', function () {
- this.seq().obj(
- this.key('version').int(),
- this.key('modulus').int(),
- this.key('publicExponent').int(),
- this.key('privateExponent').int(),
- this.key('prime1').int(),
- this.key('prime2').int(),
- this.key('exponent1').int(),
- this.key('exponent2').int(),
- this.key('coefficient').int()
- )
- })
- exports.RSAPrivateKey = RSAPrivateKey
- var RSAPublicKey = asn1.define('RSAPublicKey', function () {
- this.seq().obj(
- this.key('modulus').int(),
- this.key('publicExponent').int()
- )
- })
- exports.RSAPublicKey = RSAPublicKey
- var PublicKey = asn1.define('SubjectPublicKeyInfo', function () {
- this.seq().obj(
- this.key('algorithm').use(AlgorithmIdentifier),
- this.key('subjectPublicKey').bitstr()
- )
- })
- exports.PublicKey = PublicKey
- var AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {
- this.seq().obj(
- this.key('algorithm').objid(),
- this.key('none').null_().optional(),
- this.key('curve').objid().optional(),
- this.key('params').seq().obj(
- this.key('p').int(),
- this.key('q').int(),
- this.key('g').int()
- ).optional()
- )
- })
- var PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {
- this.seq().obj(
- this.key('version').int(),
- this.key('algorithm').use(AlgorithmIdentifier),
- this.key('subjectPrivateKey').octstr()
- )
- })
- exports.PrivateKey = PrivateKeyInfo
- var EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {
- this.seq().obj(
- this.key('algorithm').seq().obj(
- this.key('id').objid(),
- this.key('decrypt').seq().obj(
- this.key('kde').seq().obj(
- this.key('id').objid(),
- this.key('kdeparams').seq().obj(
- this.key('salt').octstr(),
- this.key('iters').int()
- )
- ),
- this.key('cipher').seq().obj(
- this.key('algo').objid(),
- this.key('iv').octstr()
- )
- )
- ),
- this.key('subjectPrivateKey').octstr()
- )
- })
- exports.EncryptedPrivateKey = EncryptedPrivateKeyInfo
- var DSAPrivateKey = asn1.define('DSAPrivateKey', function () {
- this.seq().obj(
- this.key('version').int(),
- this.key('p').int(),
- this.key('q').int(),
- this.key('g').int(),
- this.key('pub_key').int(),
- this.key('priv_key').int()
- )
- })
- exports.DSAPrivateKey = DSAPrivateKey
- exports.DSAparam = asn1.define('DSAparam', function () {
- this.int()
- })
- var ECPrivateKey = asn1.define('ECPrivateKey', function () {
- this.seq().obj(
- this.key('version').int(),
- this.key('privateKey').octstr(),
- this.key('parameters').optional().explicit(0).use(ECParameters),
- this.key('publicKey').optional().explicit(1).bitstr()
- )
- })
- exports.ECPrivateKey = ECPrivateKey
- var ECParameters = asn1.define('ECParameters', function () {
- this.choice({
- namedCurve: this.objid()
- })
- })
- exports.signature = asn1.define('signature', function () {
- this.seq().obj(
- this.key('r').int(),
- this.key('s').int()
- )
- })
- },{"./certificate":116,"asn1.js":10}],116:[function(require,module,exports){
- // from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js
- // thanks to @Rantanen
- 'use strict'
- var asn = require('asn1.js')
- var Time = asn.define('Time', function () {
- this.choice({
- utcTime: this.utctime(),
- generalTime: this.gentime()
- })
- })
- var AttributeTypeValue = asn.define('AttributeTypeValue', function () {
- this.seq().obj(
- this.key('type').objid(),
- this.key('value').any()
- )
- })
- var AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {
- this.seq().obj(
- this.key('algorithm').objid(),
- this.key('parameters').optional()
- )
- })
- var SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {
- this.seq().obj(
- this.key('algorithm').use(AlgorithmIdentifier),
- this.key('subjectPublicKey').bitstr()
- )
- })
- var RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {
- this.setof(AttributeTypeValue)
- })
- var RDNSequence = asn.define('RDNSequence', function () {
- this.seqof(RelativeDistinguishedName)
- })
- var Name = asn.define('Name', function () {
- this.choice({
- rdnSequence: this.use(RDNSequence)
- })
- })
- var Validity = asn.define('Validity', function () {
- this.seq().obj(
- this.key('notBefore').use(Time),
- this.key('notAfter').use(Time)
- )
- })
- var Extension = asn.define('Extension', function () {
- this.seq().obj(
- this.key('extnID').objid(),
- this.key('critical').bool().def(false),
- this.key('extnValue').octstr()
- )
- })
- var TBSCertificate = asn.define('TBSCertificate', function () {
- this.seq().obj(
- this.key('version').explicit(0).int(),
- this.key('serialNumber').int(),
- this.key('signature').use(AlgorithmIdentifier),
- this.key('issuer').use(Name),
- this.key('validity').use(Validity),
- this.key('subject').use(Name),
- this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),
- this.key('issuerUniqueID').implicit(1).bitstr().optional(),
- this.key('subjectUniqueID').implicit(2).bitstr().optional(),
- this.key('extensions').explicit(3).seqof(Extension).optional()
- )
- })
- var X509Certificate = asn.define('X509Certificate', function () {
- this.seq().obj(
- this.key('tbsCertificate').use(TBSCertificate),
- this.key('signatureAlgorithm').use(AlgorithmIdentifier),
- this.key('signatureValue').bitstr()
- )
- })
- module.exports = X509Certificate
- },{"asn1.js":10}],117:[function(require,module,exports){
- (function (Buffer){
- // adapted from https://github.com/apatil/pemstrip
- var findProc = /Proc-Type: 4,ENCRYPTED\n\r?DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\n\r?\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?/m
- var startRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----\n/m
- var fullRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?-----END \1-----$/m
- var evp = require('evp_bytestokey')
- var ciphers = require('browserify-aes')
- module.exports = function (okey, password) {
- var key = okey.toString()
- var match = key.match(findProc)
- var decrypted
- if (!match) {
- var match2 = key.match(fullRegex)
- decrypted = new Buffer(match2[2].replace(/\r?\n/g, ''), 'base64')
- } else {
- var suite = 'aes' + match[1]
- var iv = new Buffer(match[2], 'hex')
- var cipherText = new Buffer(match[3].replace(/\r?\n/g, ''), 'base64')
- var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key
- var out = []
- var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)
- out.push(cipher.update(cipherText))
- out.push(cipher.final())
- decrypted = Buffer.concat(out)
- }
- var tag = key.match(startRegex)[1]
- return {
- tag: tag,
- data: decrypted
- }
- }
- }).call(this,require("buffer").Buffer)
- },{"browserify-aes":30,"buffer":54,"evp_bytestokey":91}],118:[function(require,module,exports){
- (function (Buffer){
- var asn1 = require('./asn1')
- var aesid = require('./aesid.json')
- var fixProc = require('./fixProc')
- var ciphers = require('browserify-aes')
- var compat = require('pbkdf2')
- module.exports = parseKeys
- function parseKeys (buffer) {
- var password
- if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {
- password = buffer.passphrase
- buffer = buffer.key
- }
- if (typeof buffer === 'string') {
- buffer = new Buffer(buffer)
- }
- var stripped = fixProc(buffer, password)
- var type = stripped.tag
- var data = stripped.data
- var subtype, ndata
- switch (type) {
- case 'CERTIFICATE':
- ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo
- // falls through
- case 'PUBLIC KEY':
- if (!ndata) {
- ndata = asn1.PublicKey.decode(data, 'der')
- }
- subtype = ndata.algorithm.algorithm.join('.')
- switch (subtype) {
- case '1.2.840.113549.1.1.1':
- return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')
- case '1.2.840.10045.2.1':
- ndata.subjectPrivateKey = ndata.subjectPublicKey
- return {
- type: 'ec',
- data: ndata
- }
- case '1.2.840.10040.4.1':
- ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')
- return {
- type: 'dsa',
- data: ndata.algorithm.params
- }
- default: throw new Error('unknown key id ' + subtype)
- }
- throw new Error('unknown key type ' + type)
- case 'ENCRYPTED PRIVATE KEY':
- data = asn1.EncryptedPrivateKey.decode(data, 'der')
- data = decrypt(data, password)
- // falls through
- case 'PRIVATE KEY':
- ndata = asn1.PrivateKey.decode(data, 'der')
- subtype = ndata.algorithm.algorithm.join('.')
- switch (subtype) {
- case '1.2.840.113549.1.1.1':
- return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')
- case '1.2.840.10045.2.1':
- return {
- curve: ndata.algorithm.curve,
- privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey
- }
- case '1.2.840.10040.4.1':
- ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')
- return {
- type: 'dsa',
- params: ndata.algorithm.params
- }
- default: throw new Error('unknown key id ' + subtype)
- }
- throw new Error('unknown key type ' + type)
- case 'RSA PUBLIC KEY':
- return asn1.RSAPublicKey.decode(data, 'der')
- case 'RSA PRIVATE KEY':
- return asn1.RSAPrivateKey.decode(data, 'der')
- case 'DSA PRIVATE KEY':
- return {
- type: 'dsa',
- params: asn1.DSAPrivateKey.decode(data, 'der')
- }
- case 'EC PRIVATE KEY':
- data = asn1.ECPrivateKey.decode(data, 'der')
- return {
- curve: data.parameters.value,
- privateKey: data.privateKey
- }
- default: throw new Error('unknown key type ' + type)
- }
- }
- parseKeys.signature = asn1.signature
- function decrypt (data, password) {
- var salt = data.algorithm.decrypt.kde.kdeparams.salt
- var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)
- var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]
- var iv = data.algorithm.decrypt.cipher.iv
- var cipherText = data.subjectPrivateKey
- var keylen = parseInt(algo.split('-')[1], 10) / 8
- var key = compat.pbkdf2Sync(password, salt, iters, keylen)
- var cipher = ciphers.createDecipheriv(algo, key, iv)
- var out = []
- out.push(cipher.update(cipherText))
- out.push(cipher.final())
- return Buffer.concat(out)
- }
- }).call(this,require("buffer").Buffer)
- },{"./aesid.json":114,"./asn1":115,"./fixProc":117,"browserify-aes":30,"buffer":54,"pbkdf2":120}],119:[function(require,module,exports){
- (function (process){
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- // resolves . and .. elements in a path array with directory names there
- // must be no slashes, empty elements, or device names (c:\) in the array
- // (so also no leading and trailing slashes - it does not distinguish
- // relative and absolute paths)
- function normalizeArray(parts, allowAboveRoot) {
- // if the path tries to go above the root, `up` ends up > 0
- 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 the path is allowed to go above the root, restore leading ..s
- if (allowAboveRoot) {
- for (; up--; up) {
- parts.unshift('..');
- }
- }
- return parts;
- }
- // Split a filename into [root, dir, basename, ext], unix version
- // 'root' is just a slash, or nothing.
- var splitPathRe =
- /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
- var splitPath = function(filename) {
- return splitPathRe.exec(filename).slice(1);
- };
- // path.resolve([from ...], to)
- // posix version
- exports.resolve = function() {
- var resolvedPath = '',
- resolvedAbsolute = false;
- for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
- var path = (i >= 0) ? arguments[i] : process.cwd();
- // Skip empty and invalid entries
- if (typeof path !== 'string') {
- throw new TypeError('Arguments to path.resolve must be strings');
- } else if (!path) {
- continue;
- }
- resolvedPath = path + '/' + resolvedPath;
- resolvedAbsolute = path.charAt(0) === '/';
- }
- // At this point the path should be resolved to a full absolute path, but
- // handle relative paths to be safe (might happen when process.cwd() fails)
- // Normalize the path
- resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
- return !!p;
- }), !resolvedAbsolute).join('/');
- return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
- };
- // path.normalize(path)
- // posix version
- exports.normalize = function(path) {
- var isAbsolute = exports.isAbsolute(path),
- trailingSlash = substr(path, -1) === '/';
- // Normalize the path
- path = normalizeArray(filter(path.split('/'), function(p) {
- return !!p;
- }), !isAbsolute).join('/');
- if (!path && !isAbsolute) {
- path = '.';
- }
- if (path && trailingSlash) {
- path += '/';
- }
- return (isAbsolute ? '/' : '') + path;
- };
- // posix version
- exports.isAbsolute = function(path) {
- return path.charAt(0) === '/';
- };
- // posix version
- exports.join = function() {
- var paths = Array.prototype.slice.call(arguments, 0);
- return exports.normalize(filter(paths, function(p, index) {
- if (typeof p !== 'string') {
- throw new TypeError('Arguments to path.join must be strings');
- }
- return p;
- }).join('/'));
- };
- // path.relative(from, to)
- // posix version
- exports.relative = function(from, to) {
- from = exports.resolve(from).substr(1);
- to = exports.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('/');
- };
- exports.sep = '/';
- exports.delimiter = ':';
- exports.dirname = function(path) {
- var result = splitPath(path),
- root = result[0],
- dir = result[1];
- if (!root && !dir) {
- // No dirname whatsoever
- return '.';
- }
- if (dir) {
- // It has a dirname, strip trailing slash
- dir = dir.substr(0, dir.length - 1);
- }
- return root + dir;
- };
- exports.basename = function(path, ext) {
- var f = splitPath(path)[2];
- // TODO: make this comparison case-insensitive on windows?
- if (ext && f.substr(-1 * ext.length) === ext) {
- f = f.substr(0, f.length - ext.length);
- }
- return f;
- };
- exports.extname = function(path) {
- return splitPath(path)[3];
- };
- function filter (xs, f) {
- if (xs.filter) return xs.filter(f);
- var res = [];
- for (var i = 0; i < xs.length; i++) {
- if (f(xs[i], i, xs)) res.push(xs[i]);
- }
- return res;
- }
- // String.prototype.substr - negative index don't work in IE8
- var substr = 'ab'.substr(-1) === 'b'
- ? function (str, start, len) { return str.substr(start, len) }
- : function (str, start, len) {
- if (start < 0) start = str.length + start;
- return str.substr(start, len);
- }
- ;
- }).call(this,require('_process'))
- },{"_process":126}],120:[function(require,module,exports){
- exports.pbkdf2 = require('./lib/async')
- exports.pbkdf2Sync = require('./lib/sync')
- },{"./lib/async":121,"./lib/sync":124}],121:[function(require,module,exports){
- (function (process,global){
- var checkParameters = require('./precondition')
- var defaultEncoding = require('./default-encoding')
- var sync = require('./sync')
- var Buffer = require('safe-buffer').Buffer
- var ZERO_BUF
- var subtle = global.crypto && global.crypto.subtle
- var toBrowser = {
- 'sha': 'SHA-1',
- 'sha-1': 'SHA-1',
- 'sha1': 'SHA-1',
- 'sha256': 'SHA-256',
- 'sha-256': 'SHA-256',
- 'sha384': 'SHA-384',
- 'sha-384': 'SHA-384',
- 'sha-512': 'SHA-512',
- 'sha512': 'SHA-512'
- }
- var checks = []
- function checkNative (algo) {
- if (global.process && !global.process.browser) {
- return Promise.resolve(false)
- }
- if (!subtle || !subtle.importKey || !subtle.deriveBits) {
- return Promise.resolve(false)
- }
- if (checks[algo] !== undefined) {
- return checks[algo]
- }
- ZERO_BUF = ZERO_BUF || Buffer.alloc(8)
- var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)
- .then(function () {
- return true
- }).catch(function () {
- return false
- })
- checks[algo] = prom
- return prom
- }
- function browserPbkdf2 (password, salt, iterations, length, algo) {
- return subtle.importKey(
- 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits']
- ).then(function (key) {
- return subtle.deriveBits({
- name: 'PBKDF2',
- salt: salt,
- iterations: iterations,
- hash: {
- name: algo
- }
- }, key, length << 3)
- }).then(function (res) {
- return Buffer.from(res)
- })
- }
- function resolvePromise (promise, callback) {
- promise.then(function (out) {
- process.nextTick(function () {
- callback(null, out)
- })
- }, function (e) {
- process.nextTick(function () {
- callback(e)
- })
- })
- }
- module.exports = function (password, salt, iterations, keylen, digest, callback) {
- if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)
- if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)
- checkParameters(iterations, keylen)
- if (typeof digest === 'function') {
- callback = digest
- digest = undefined
- }
- if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')
- digest = digest || 'sha1'
- var algo = toBrowser[digest.toLowerCase()]
- if (!algo || typeof global.Promise !== 'function') {
- return process.nextTick(function () {
- var out
- try {
- out = sync(password, salt, iterations, keylen, digest)
- } catch (e) {
- return callback(e)
- }
- callback(null, out)
- })
- }
- resolvePromise(checkNative(algo).then(function (resp) {
- if (resp) {
- return browserPbkdf2(password, salt, iterations, keylen, algo)
- } else {
- return sync(password, salt, iterations, keylen, digest)
- }
- }), callback)
- }
- }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- },{"./default-encoding":122,"./precondition":123,"./sync":124,"_process":126,"safe-buffer":148}],122:[function(require,module,exports){
- (function (process){
- var defaultEncoding
- /* istanbul ignore next */
- if (process.browser) {
- defaultEncoding = 'utf-8'
- } else {
- var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)
- defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'
- }
- module.exports = defaultEncoding
- }).call(this,require('_process'))
- },{"_process":126}],123:[function(require,module,exports){
- var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs
- module.exports = function (iterations, keylen) {
- if (typeof iterations !== 'number') {
- throw new TypeError('Iterations not a number')
- }
- if (iterations < 0) {
- throw new TypeError('Bad iterations')
- }
- if (typeof keylen !== 'number') {
- throw new TypeError('Key length not a number')
- }
- if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */
- throw new TypeError('Bad key length')
- }
- }
- },{}],124:[function(require,module,exports){
- var md5 = require('create-hash/md5')
- var rmd160 = require('ripemd160')
- var sha = require('sha.js')
- var checkParameters = require('./precondition')
- var defaultEncoding = require('./default-encoding')
- var Buffer = require('safe-buffer').Buffer
- var ZEROS = Buffer.alloc(128)
- var sizes = {
- md5: 16,
- sha1: 20,
- sha224: 28,
- sha256: 32,
- sha384: 48,
- sha512: 64,
- rmd160: 20,
- ripemd160: 20
- }
- function Hmac (alg, key, saltLen) {
- var hash = getDigest(alg)
- var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
- if (key.length > blocksize) {
- key = hash(key)
- } else if (key.length < blocksize) {
- key = Buffer.concat([key, ZEROS], blocksize)
- }
- var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])
- var opad = Buffer.allocUnsafe(blocksize + sizes[alg])
- for (var i = 0; i < blocksize; i++) {
- ipad[i] = key[i] ^ 0x36
- opad[i] = key[i] ^ 0x5C
- }
- var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)
- ipad.copy(ipad1, 0, 0, blocksize)
- this.ipad1 = ipad1
- this.ipad2 = ipad
- this.opad = opad
- this.alg = alg
- this.blocksize = blocksize
- this.hash = hash
- this.size = sizes[alg]
- }
- Hmac.prototype.run = function (data, ipad) {
- data.copy(ipad, this.blocksize)
- var h = this.hash(ipad)
- h.copy(this.opad, this.blocksize)
- return this.hash(this.opad)
- }
- function getDigest (alg) {
- function shaFunc (data) {
- return sha(alg).update(data).digest()
- }
- if (alg === 'rmd160' || alg === 'ripemd160') return rmd160
- if (alg === 'md5') return md5
- return shaFunc
- }
- function pbkdf2 (password, salt, iterations, keylen, digest) {
- if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)
- if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)
- checkParameters(iterations, keylen)
- digest = digest || 'sha1'
- var hmac = new Hmac(digest, password, salt.length)
- var DK = Buffer.allocUnsafe(keylen)
- var block1 = Buffer.allocUnsafe(salt.length + 4)
- salt.copy(block1, 0, 0, salt.length)
- var destPos = 0
- var hLen = sizes[digest]
- var l = Math.ceil(keylen / hLen)
- for (var i = 1; i <= l; i++) {
- block1.writeUInt32BE(i, salt.length)
- var T = hmac.run(block1, hmac.ipad1)
- var U = T
- for (var j = 1; j < iterations; j++) {
- U = hmac.run(U, hmac.ipad2)
- for (var k = 0; k < hLen; k++) T[k] ^= U[k]
- }
- T.copy(DK, destPos)
- destPos += hLen
- }
- return DK
- }
- module.exports = pbkdf2
- },{"./default-encoding":122,"./precondition":123,"create-hash/md5":60,"ripemd160":147,"safe-buffer":148,"sha.js":150}],125:[function(require,module,exports){
- (function (process){
- 'use strict';
- if (!process.version ||
- process.version.indexOf('v0.') === 0 ||
- process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
- module.exports = nextTick;
- } else {
- module.exports = process.nextTick;
- }
- function nextTick(fn, arg1, arg2, arg3) {
- if (typeof fn !== 'function') {
- throw new TypeError('"callback" argument must be a function');
- }
- var len = arguments.length;
- var args, i;
- switch (len) {
- case 0:
- case 1:
- return process.nextTick(fn);
- case 2:
- return process.nextTick(function afterTickOne() {
- fn.call(null, arg1);
- });
- case 3:
- return process.nextTick(function afterTickTwo() {
- fn.call(null, arg1, arg2);
- });
- case 4:
- return process.nextTick(function afterTickThree() {
- fn.call(null, arg1, arg2, arg3);
- });
- default:
- args = new Array(len - 1);
- i = 0;
- while (i < args.length) {
- args[i++] = arguments[i];
- }
- return process.nextTick(function afterTick() {
- fn.apply(null, args);
- });
- }
- }
- }).call(this,require('_process'))
- },{"_process":126}],126:[function(require,module,exports){
- // shim for using process in browser
- var process = module.exports = {};
- // cached from whatever global is present so that test runners that stub it
- // don't break things. But we need to wrap it in a try catch in case it is
- // wrapped in strict mode code which doesn't define any globals. It's inside a
- // function because try/catches deoptimize in certain engines.
- var cachedSetTimeout;
- var cachedClearTimeout;
- function defaultSetTimout() {
- throw new Error('setTimeout has not been defined');
- }
- function defaultClearTimeout () {
- throw new Error('clearTimeout has not been defined');
- }
- (function () {
- try {
- if (typeof setTimeout === 'function') {
- cachedSetTimeout = setTimeout;
- } else {
- cachedSetTimeout = defaultSetTimout;
- }
- } catch (e) {
- cachedSetTimeout = defaultSetTimout;
- }
- try {
- if (typeof clearTimeout === 'function') {
- cachedClearTimeout = clearTimeout;
- } else {
- cachedClearTimeout = defaultClearTimeout;
- }
- } catch (e) {
- cachedClearTimeout = defaultClearTimeout;
- }
- } ())
- function runTimeout(fun) {
- if (cachedSetTimeout === setTimeout) {
- //normal enviroments in sane situations
- return setTimeout(fun, 0);
- }
- // if setTimeout wasn't available but was latter defined
- if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
- cachedSetTimeout = setTimeout;
- return setTimeout(fun, 0);
- }
- try {
- // when when somebody has screwed with setTimeout but no I.E. maddness
- return cachedSetTimeout(fun, 0);
- } catch(e){
- try {
- // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
- return cachedSetTimeout.call(null, fun, 0);
- } catch(e){
- // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
- return cachedSetTimeout.call(this, fun, 0);
- }
- }
- }
- function runClearTimeout(marker) {
- if (cachedClearTimeout === clearTimeout) {
- //normal enviroments in sane situations
- return clearTimeout(marker);
- }
- // if clearTimeout wasn't available but was latter defined
- if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
- cachedClearTimeout = clearTimeout;
- return clearTimeout(marker);
- }
- try {
- // when when somebody has screwed with setTimeout but no I.E. maddness
- return cachedClearTimeout(marker);
- } catch (e){
- try {
- // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
- return cachedClearTimeout.call(null, marker);
- } catch (e){
- // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
- // Some versions of I.E. have different rules for clearTimeout vs setTimeout
- return cachedClearTimeout.call(this, marker);
- }
- }
- }
- var queue = [];
- var draining = false;
- var currentQueue;
- var queueIndex = -1;
- function cleanUpNextTick() {
- if (!draining || !currentQueue) {
- return;
- }
- draining = false;
- if (currentQueue.length) {
- queue = currentQueue.concat(queue);
- } else {
- queueIndex = -1;
- }
- if (queue.length) {
- drainQueue();
- }
- }
- function drainQueue() {
- if (draining) {
- return;
- }
- var timeout = runTimeout(cleanUpNextTick);
- draining = true;
- var len = queue.length;
- while(len) {
- currentQueue = queue;
- queue = [];
- while (++queueIndex < len) {
- if (currentQueue) {
- currentQueue[queueIndex].run();
- }
- }
- queueIndex = -1;
- len = queue.length;
- }
- currentQueue = null;
- draining = false;
- runClearTimeout(timeout);
- }
- process.nextTick = function (fun) {
- var args = new Array(arguments.length - 1);
- if (arguments.length > 1) {
- for (var i = 1; i < arguments.length; i++) {
- args[i - 1] = arguments[i];
- }
- }
- queue.push(new Item(fun, args));
- if (queue.length === 1 && !draining) {
- runTimeout(drainQueue);
- }
- };
- // v8 likes predictible objects
- function Item(fun, array) {
- this.fun = fun;
- this.array = array;
- }
- Item.prototype.run = function () {
- this.fun.apply(null, this.array);
- };
- process.title = 'browser';
- process.browser = true;
- process.env = {};
- process.argv = [];
- process.version = ''; // empty string to avoid regexp issues
- process.versions = {};
- function noop() {}
- process.on = noop;
- process.addListener = noop;
- process.once = noop;
- process.off = noop;
- process.removeListener = noop;
- process.removeAllListeners = noop;
- process.emit = noop;
- process.prependListener = noop;
- process.prependOnceListener = noop;
- process.listeners = function (name) { return [] }
- process.binding = function (name) {
- throw new Error('process.binding is not supported');
- };
- process.cwd = function () { return '/' };
- process.chdir = function (dir) {
- throw new Error('process.chdir is not supported');
- };
- process.umask = function() { return 0; };
- },{}],127:[function(require,module,exports){
- exports.publicEncrypt = require('./publicEncrypt');
- exports.privateDecrypt = require('./privateDecrypt');
- exports.privateEncrypt = function privateEncrypt(key, buf) {
- return exports.publicEncrypt(key, buf, true);
- };
- exports.publicDecrypt = function publicDecrypt(key, buf) {
- return exports.privateDecrypt(key, buf, true);
- };
- },{"./privateDecrypt":129,"./publicEncrypt":130}],128:[function(require,module,exports){
- (function (Buffer){
- var createHash = require('create-hash');
- module.exports = function (seed, len) {
- var t = new Buffer('');
- var i = 0, c;
- while (t.length < len) {
- c = i2ops(i++);
- t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]);
- }
- return t.slice(0, len);
- };
- function i2ops(c) {
- var out = new Buffer(4);
- out.writeUInt32BE(c,0);
- return out;
- }
- }).call(this,require("buffer").Buffer)
- },{"buffer":54,"create-hash":58}],129:[function(require,module,exports){
- (function (Buffer){
- var parseKeys = require('parse-asn1');
- var mgf = require('./mgf');
- var xor = require('./xor');
- var bn = require('bn.js');
- var crt = require('browserify-rsa');
- var createHash = require('create-hash');
- var withPublic = require('./withPublic');
- module.exports = function privateDecrypt(private_key, enc, reverse) {
- var padding;
- if (private_key.padding) {
- padding = private_key.padding;
- } else if (reverse) {
- padding = 1;
- } else {
- padding = 4;
- }
- var key = parseKeys(private_key);
- var k = key.modulus.byteLength();
- if (enc.length > k || new bn(enc).cmp(key.modulus) >= 0) {
- throw new Error('decryption error');
- }
- var msg;
- if (reverse) {
- msg = withPublic(new bn(enc), key);
- } else {
- msg = crt(enc, key);
- }
- var zBuffer = new Buffer(k - msg.length);
- zBuffer.fill(0);
- msg = Buffer.concat([zBuffer, msg], k);
- if (padding === 4) {
- return oaep(key, msg);
- } else if (padding === 1) {
- return pkcs1(key, msg, reverse);
- } else if (padding === 3) {
- return msg;
- } else {
- throw new Error('unknown padding');
- }
- };
- function oaep(key, msg){
- var n = key.modulus;
- var k = key.modulus.byteLength();
- var mLen = msg.length;
- var iHash = createHash('sha1').update(new Buffer('')).digest();
- var hLen = iHash.length;
- var hLen2 = 2 * hLen;
- if (msg[0] !== 0) {
- throw new Error('decryption error');
- }
- var maskedSeed = msg.slice(1, hLen + 1);
- var maskedDb = msg.slice(hLen + 1);
- var seed = xor(maskedSeed, mgf(maskedDb, hLen));
- var db = xor(maskedDb, mgf(seed, k - hLen - 1));
- if (compare(iHash, db.slice(0, hLen))) {
- throw new Error('decryption error');
- }
- var i = hLen;
- while (db[i] === 0) {
- i++;
- }
- if (db[i++] !== 1) {
- throw new Error('decryption error');
- }
- return db.slice(i);
- }
- function pkcs1(key, msg, reverse){
- var p1 = msg.slice(0, 2);
- var i = 2;
- var status = 0;
- while (msg[i++] !== 0) {
- if (i >= msg.length) {
- status++;
- break;
- }
- }
- var ps = msg.slice(2, i - 1);
- var p2 = msg.slice(i - 1, i);
- if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)){
- status++;
- }
- if (ps.length < 8) {
- status++;
- }
- if (status) {
- throw new Error('decryption error');
- }
- return msg.slice(i);
- }
- function compare(a, b){
- a = new Buffer(a);
- b = new Buffer(b);
- var dif = 0;
- var len = a.length;
- if (a.length !== b.length) {
- dif++;
- len = Math.min(a.length, b.length);
- }
- var i = -1;
- while (++i < len) {
- dif += (a[i] ^ b[i]);
- }
- return dif;
- }
- }).call(this,require("buffer").Buffer)
- },{"./mgf":128,"./withPublic":131,"./xor":132,"bn.js":25,"browserify-rsa":46,"buffer":54,"create-hash":58,"parse-asn1":118}],130:[function(require,module,exports){
- (function (Buffer){
- var parseKeys = require('parse-asn1');
- var randomBytes = require('randombytes');
- var createHash = require('create-hash');
- var mgf = require('./mgf');
- var xor = require('./xor');
- var bn = require('bn.js');
- var withPublic = require('./withPublic');
- var crt = require('browserify-rsa');
- var constants = {
- RSA_PKCS1_OAEP_PADDING: 4,
- RSA_PKCS1_PADDIN: 1,
- RSA_NO_PADDING: 3
- };
- module.exports = function publicEncrypt(public_key, msg, reverse) {
- var padding;
- if (public_key.padding) {
- padding = public_key.padding;
- } else if (reverse) {
- padding = 1;
- } else {
- padding = 4;
- }
- var key = parseKeys(public_key);
- var paddedMsg;
- if (padding === 4) {
- paddedMsg = oaep(key, msg);
- } else if (padding === 1) {
- paddedMsg = pkcs1(key, msg, reverse);
- } else if (padding === 3) {
- paddedMsg = new bn(msg);
- if (paddedMsg.cmp(key.modulus) >= 0) {
- throw new Error('data too long for modulus');
- }
- } else {
- throw new Error('unknown padding');
- }
- if (reverse) {
- return crt(paddedMsg, key);
- } else {
- return withPublic(paddedMsg, key);
- }
- };
- function oaep(key, msg){
- var k = key.modulus.byteLength();
- var mLen = msg.length;
- var iHash = createHash('sha1').update(new Buffer('')).digest();
- var hLen = iHash.length;
- var hLen2 = 2 * hLen;
- if (mLen > k - hLen2 - 2) {
- throw new Error('message too long');
- }
- var ps = new Buffer(k - mLen - hLen2 - 2);
- ps.fill(0);
- var dblen = k - hLen - 1;
- var seed = randomBytes(hLen);
- var maskedDb = xor(Buffer.concat([iHash, ps, new Buffer([1]), msg], dblen), mgf(seed, dblen));
- var maskedSeed = xor(seed, mgf(maskedDb, hLen));
- return new bn(Buffer.concat([new Buffer([0]), maskedSeed, maskedDb], k));
- }
- function pkcs1(key, msg, reverse){
- var mLen = msg.length;
- var k = key.modulus.byteLength();
- if (mLen > k - 11) {
- throw new Error('message too long');
- }
- var ps;
- if (reverse) {
- ps = new Buffer(k - mLen - 3);
- ps.fill(0xff);
- } else {
- ps = nonZero(k - mLen - 3);
- }
- return new bn(Buffer.concat([new Buffer([0, reverse?1:2]), ps, new Buffer([0]), msg], k));
- }
- function nonZero(len, crypto) {
- var out = new Buffer(len);
- var i = 0;
- var cache = randomBytes(len*2);
- var cur = 0;
- var num;
- while (i < len) {
- if (cur === cache.length) {
- cache = randomBytes(len*2);
- cur = 0;
- }
- num = cache[cur++];
- if (num) {
- out[i++] = num;
- }
- }
- return out;
- }
- }).call(this,require("buffer").Buffer)
- },{"./mgf":128,"./withPublic":131,"./xor":132,"bn.js":25,"browserify-rsa":46,"buffer":54,"create-hash":58,"parse-asn1":118,"randombytes":133}],131:[function(require,module,exports){
- (function (Buffer){
- var bn = require('bn.js');
- function withPublic(paddedMsg, key) {
- return new Buffer(paddedMsg
- .toRed(bn.mont(key.modulus))
- .redPow(new bn(key.publicExponent))
- .fromRed()
- .toArray());
- }
- module.exports = withPublic;
- }).call(this,require("buffer").Buffer)
- },{"bn.js":25,"buffer":54}],132:[function(require,module,exports){
- module.exports = function xor(a, b) {
- var len = a.length;
- var i = -1;
- while (++i < len) {
- a[i] ^= b[i];
- }
- return a
- };
- },{}],133:[function(require,module,exports){
- (function (process,global){
- 'use strict'
- function oldBrowser () {
- throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11')
- }
- var Buffer = require('safe-buffer').Buffer
- var crypto = global.crypto || global.msCrypto
- if (crypto && crypto.getRandomValues) {
- module.exports = randomBytes
- } else {
- module.exports = oldBrowser
- }
- function randomBytes (size, cb) {
- // phantomjs needs to throw
- if (size > 65536) throw new Error('requested too many random bytes')
- // in case browserify isn't using the Uint8Array version
- var rawBytes = new global.Uint8Array(size)
- // This will not work in older browsers.
- // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
- if (size > 0) { // getRandomValues fails on IE if size == 0
- crypto.getRandomValues(rawBytes)
- }
- // XXX: phantomjs doesn't like a buffer being passed here
- var bytes = Buffer.from(rawBytes.buffer)
- if (typeof cb === 'function') {
- return process.nextTick(function () {
- cb(null, bytes)
- })
- }
- return bytes
- }
- }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- },{"_process":126,"safe-buffer":148}],134:[function(require,module,exports){
- module.exports = require('./lib/_stream_duplex.js');
- },{"./lib/_stream_duplex.js":135}],135:[function(require,module,exports){
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- // a duplex stream is just a stream that is both readable and writable.
- // Since JS doesn't have multiple prototypal inheritance, this class
- // prototypally inherits from Readable, and then parasitically from
- // Writable.
- 'use strict';
- /*<replacement>*/
- var processNextTick = require('process-nextick-args');
- /*</replacement>*/
- /*<replacement>*/
- var objectKeys = Object.keys || function (obj) {
- var keys = [];
- for (var key in obj) {
- keys.push(key);
- }return keys;
- };
- /*</replacement>*/
- module.exports = Duplex;
- /*<replacement>*/
- var util = require('core-util-is');
- util.inherits = require('inherits');
- /*</replacement>*/
- var Readable = require('./_stream_readable');
- var Writable = require('./_stream_writable');
- util.inherits(Duplex, Readable);
- var keys = objectKeys(Writable.prototype);
- for (var v = 0; v < keys.length; v++) {
- var method = keys[v];
- if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
- }
- function Duplex(options) {
- if (!(this instanceof Duplex)) return new Duplex(options);
- Readable.call(this, options);
- Writable.call(this, options);
- if (options && options.readable === false) this.readable = false;
- if (options && options.writable === false) this.writable = false;
- this.allowHalfOpen = true;
- if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
- this.once('end', onend);
- }
- // the no-half-open enforcer
- function onend() {
- // if we allow half-open state, or if the writable side ended,
- // then we're ok.
- if (this.allowHalfOpen || this._writableState.ended) return;
- // no more data can be written.
- // But allow more writes to happen in this tick.
- processNextTick(onEndNT, this);
- }
- function onEndNT(self) {
- self.end();
- }
- Object.defineProperty(Duplex.prototype, 'destroyed', {
- get: function () {
- if (this._readableState === undefined || this._writableState === undefined) {
- return false;
- }
- return this._readableState.destroyed && this._writableState.destroyed;
- },
- set: function (value) {
- // we ignore the value if the stream
- // has not been initialized yet
- if (this._readableState === undefined || this._writableState === undefined) {
- return;
- }
- // backward compatibility, the user is explicitly
- // managing destroyed
- this._readableState.destroyed = value;
- this._writableState.destroyed = value;
- }
- });
- Duplex.prototype._destroy = function (err, cb) {
- this.push(null);
- this.end();
- processNextTick(cb, err);
- };
- function forEach(xs, f) {
- for (var i = 0, l = xs.length; i < l; i++) {
- f(xs[i], i);
- }
- }
- },{"./_stream_readable":137,"./_stream_writable":139,"core-util-is":56,"inherits":108,"process-nextick-args":125}],136:[function(require,module,exports){
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- // a passthrough stream.
- // basically just the most minimal sort of Transform stream.
- // Every written chunk gets output as-is.
- 'use strict';
- module.exports = PassThrough;
- var Transform = require('./_stream_transform');
- /*<replacement>*/
- var util = require('core-util-is');
- util.inherits = require('inherits');
- /*</replacement>*/
- util.inherits(PassThrough, Transform);
- function PassThrough(options) {
- if (!(this instanceof PassThrough)) return new PassThrough(options);
- Transform.call(this, options);
- }
- PassThrough.prototype._transform = function (chunk, encoding, cb) {
- cb(null, chunk);
- };
- },{"./_stream_transform":138,"core-util-is":56,"inherits":108}],137:[function(require,module,exports){
- (function (process,global){
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- 'use strict';
- /*<replacement>*/
- var processNextTick = require('process-nextick-args');
- /*</replacement>*/
- module.exports = Readable;
- /*<replacement>*/
- var isArray = require('isarray');
- /*</replacement>*/
- /*<replacement>*/
- var Duplex;
- /*</replacement>*/
- Readable.ReadableState = ReadableState;
- /*<replacement>*/
- var EE = require('events').EventEmitter;
- var EElistenerCount = function (emitter, type) {
- return emitter.listeners(type).length;
- };
- /*</replacement>*/
- /*<replacement>*/
- var Stream = require('./internal/streams/stream');
- /*</replacement>*/
- // TODO(bmeurer): Change this back to const once hole checks are
- // properly optimized away early in Ignition+TurboFan.
- /*<replacement>*/
- var Buffer = require('safe-buffer').Buffer;
- var OurUint8Array = global.Uint8Array || function () {};
- function _uint8ArrayToBuffer(chunk) {
- return Buffer.from(chunk);
- }
- function _isUint8Array(obj) {
- return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
- }
- /*</replacement>*/
- /*<replacement>*/
- var util = require('core-util-is');
- util.inherits = require('inherits');
- /*</replacement>*/
- /*<replacement>*/
- var debugUtil = require('util');
- var debug = void 0;
- if (debugUtil && debugUtil.debuglog) {
- debug = debugUtil.debuglog('stream');
- } else {
- debug = function () {};
- }
- /*</replacement>*/
- var BufferList = require('./internal/streams/BufferList');
- var destroyImpl = require('./internal/streams/destroy');
- var StringDecoder;
- util.inherits(Readable, Stream);
- var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
- function prependListener(emitter, event, fn) {
- // Sadly this is not cacheable as some libraries bundle their own
- // event emitter implementation with them.
- if (typeof emitter.prependListener === 'function') {
- return emitter.prependListener(event, fn);
- } else {
- // This is a hack to make sure that our error handler is attached before any
- // userland ones. NEVER DO THIS. This is here only because this code needs
- // to continue to work with older versions of Node.js that do not include
- // the prependListener() method. The goal is to eventually remove this hack.
- if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
- }
- }
- function ReadableState(options, stream) {
- Duplex = Duplex || require('./_stream_duplex');
- options = options || {};
- // object stream flag. Used to make read(n) ignore n and to
- // make all the buffer merging and length checks go away
- this.objectMode = !!options.objectMode;
- if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
- // the point at which it stops calling _read() to fill the buffer
- // Note: 0 is a valid value, means "don't call _read preemptively ever"
- var hwm = options.highWaterMark;
- var defaultHwm = this.objectMode ? 16 : 16 * 1024;
- this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
- // cast to ints.
- this.highWaterMark = Math.floor(this.highWaterMark);
- // A linked list is used to store data chunks instead of an array because the
- // linked list can remove elements from the beginning faster than
- // array.shift()
- this.buffer = new BufferList();
- this.length = 0;
- this.pipes = null;
- this.pipesCount = 0;
- this.flowing = null;
- this.ended = false;
- this.endEmitted = false;
- this.reading = false;
- // a flag to be able to tell if the event 'readable'/'data' is emitted
- // immediately, or on a later tick. We set this to true at first, because
- // any actions that shouldn't happen until "later" should generally also
- // not happen before the first read call.
- this.sync = true;
- // whenever we return null, then we set a flag to say
- // that we're awaiting a 'readable' event emission.
- this.needReadable = false;
- this.emittedReadable = false;
- this.readableListening = false;
- this.resumeScheduled = false;
- // has it been destroyed
- this.destroyed = false;
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
- // the number of writers that are awaiting a drain event in .pipe()s
- this.awaitDrain = 0;
- // if true, a maybeReadMore has been scheduled
- this.readingMore = false;
- this.decoder = null;
- this.encoding = null;
- if (options.encoding) {
- if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
- this.decoder = new StringDecoder(options.encoding);
- this.encoding = options.encoding;
- }
- }
- function Readable(options) {
- Duplex = Duplex || require('./_stream_duplex');
- if (!(this instanceof Readable)) return new Readable(options);
- this._readableState = new ReadableState(options, this);
- // legacy
- this.readable = true;
- if (options) {
- if (typeof options.read === 'function') this._read = options.read;
- if (typeof options.destroy === 'function') this._destroy = options.destroy;
- }
- Stream.call(this);
- }
- Object.defineProperty(Readable.prototype, 'destroyed', {
- get: function () {
- if (this._readableState === undefined) {
- return false;
- }
- return this._readableState.destroyed;
- },
- set: function (value) {
- // we ignore the value if the stream
- // has not been initialized yet
- if (!this._readableState) {
- return;
- }
- // backward compatibility, the user is explicitly
- // managing destroyed
- this._readableState.destroyed = value;
- }
- });
- Readable.prototype.destroy = destroyImpl.destroy;
- Readable.prototype._undestroy = destroyImpl.undestroy;
- Readable.prototype._destroy = function (err, cb) {
- this.push(null);
- cb(err);
- };
- // Manually shove something into the read() buffer.
- // This returns true if the highWaterMark has not been hit yet,
- // similar to how Writable.write() returns true if you should
- // write() some more.
- Readable.prototype.push = function (chunk, encoding) {
- var state = this._readableState;
- var skipChunkCheck;
- if (!state.objectMode) {
- if (typeof chunk === 'string') {
- encoding = encoding || state.defaultEncoding;
- if (encoding !== state.encoding) {
- chunk = Buffer.from(chunk, encoding);
- encoding = '';
- }
- skipChunkCheck = true;
- }
- } else {
- skipChunkCheck = true;
- }
- return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
- };
- // Unshift should *always* be something directly out of read()
- Readable.prototype.unshift = function (chunk) {
- return readableAddChunk(this, chunk, null, true, false);
- };
- function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
- var state = stream._readableState;
- if (chunk === null) {
- state.reading = false;
- onEofChunk(stream, state);
- } else {
- var er;
- if (!skipChunkCheck) er = chunkInvalid(state, chunk);
- if (er) {
- stream.emit('error', er);
- } else if (state.objectMode || chunk && chunk.length > 0) {
- if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
- chunk = _uint8ArrayToBuffer(chunk);
- }
- if (addToFront) {
- if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
- } else if (state.ended) {
- stream.emit('error', new Error('stream.push() after EOF'));
- } else {
- state.reading = false;
- if (state.decoder && !encoding) {
- chunk = state.decoder.write(chunk);
- if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
- } else {
- addChunk(stream, state, chunk, false);
- }
- }
- } else if (!addToFront) {
- state.reading = false;
- }
- }
- return needMoreData(state);
- }
- function addChunk(stream, state, chunk, addToFront) {
- if (state.flowing && state.length === 0 && !state.sync) {
- stream.emit('data', chunk);
- stream.read(0);
- } else {
- // update the buffer info.
- state.length += state.objectMode ? 1 : chunk.length;
- if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
- if (state.needReadable) emitReadable(stream);
- }
- maybeReadMore(stream, state);
- }
- function chunkInvalid(state, chunk) {
- var er;
- if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
- er = new TypeError('Invalid non-string/buffer chunk');
- }
- return er;
- }
- // if it's past the high water mark, we can push in some more.
- // Also, if we have no data yet, we can stand some
- // more bytes. This is to work around cases where hwm=0,
- // such as the repl. Also, if the push() triggered a
- // readable event, and the user called read(largeNumber) such that
- // needReadable was set, then we ought to push more, so that another
- // 'readable' event will be triggered.
- function needMoreData(state) {
- return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
- }
- Readable.prototype.isPaused = function () {
- return this._readableState.flowing === false;
- };
- // backwards compatibility.
- Readable.prototype.setEncoding = function (enc) {
- if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
- this._readableState.decoder = new StringDecoder(enc);
- this._readableState.encoding = enc;
- return this;
- };
- // Don't raise the hwm > 8MB
- var MAX_HWM = 0x800000;
- function computeNewHighWaterMark(n) {
- if (n >= MAX_HWM) {
- n = MAX_HWM;
- } else {
- // Get the next highest power of 2 to prevent increasing hwm excessively in
- // tiny amounts
- n--;
- n |= n >>> 1;
- n |= n >>> 2;
- n |= n >>> 4;
- n |= n >>> 8;
- n |= n >>> 16;
- n++;
- }
- return n;
- }
- // This function is designed to be inlinable, so please take care when making
- // changes to the function body.
- function howMuchToRead(n, state) {
- if (n <= 0 || state.length === 0 && state.ended) return 0;
- if (state.objectMode) return 1;
- if (n !== n) {
- // Only flow one buffer at a time
- if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
- }
- // If we're asking for more than the current hwm, then raise the hwm.
- if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
- if (n <= state.length) return n;
- // Don't have enough
- if (!state.ended) {
- state.needReadable = true;
- return 0;
- }
- return state.length;
- }
- // you can override either this method, or the async _read(n) below.
- Readable.prototype.read = function (n) {
- debug('read', n);
- n = parseInt(n, 10);
- var state = this._readableState;
- var nOrig = n;
- if (n !== 0) state.emittedReadable = false;
- // if we're doing read(0) to trigger a readable event, but we
- // already have a bunch of data in the buffer, then just trigger
- // the 'readable' event and move on.
- if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
- debug('read: emitReadable', state.length, state.ended);
- if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
- return null;
- }
- n = howMuchToRead(n, state);
- // if we've ended, and we're now clear, then finish it up.
- if (n === 0 && state.ended) {
- if (state.length === 0) endReadable(this);
- return null;
- }
- // All the actual chunk generation logic needs to be
- // *below* the call to _read. The reason is that in certain
- // synthetic stream cases, such as passthrough streams, _read
- // may be a completely synchronous operation which may change
- // the state of the read buffer, providing enough data when
- // before there was *not* enough.
- //
- // So, the steps are:
- // 1. Figure out what the state of things will be after we do
- // a read from the buffer.
- //
- // 2. If that resulting state will trigger a _read, then call _read.
- // Note that this may be asynchronous, or synchronous. Yes, it is
- // deeply ugly to write APIs this way, but that still doesn't mean
- // that the Readable class should behave improperly, as streams are
- // designed to be sync/async agnostic.
- // Take note if the _read call is sync or async (ie, if the read call
- // has returned yet), so that we know whether or not it's safe to emit
- // 'readable' etc.
- //
- // 3. Actually pull the requested chunks out of the buffer and return.
- // if we need a readable event, then we need to do some reading.
- var doRead = state.needReadable;
- debug('need readable', doRead);
- // if we currently have less than the highWaterMark, then also read some
- if (state.length === 0 || state.length - n < state.highWaterMark) {
- doRead = true;
- debug('length less than watermark', doRead);
- }
- // however, if we've ended, then there's no point, and if we're already
- // reading, then it's unnecessary.
- if (state.ended || state.reading) {
- doRead = false;
- debug('reading or ended', doRead);
- } else if (doRead) {
- debug('do read');
- state.reading = true;
- state.sync = true;
- // if the length is currently zero, then we *need* a readable event.
- if (state.length === 0) state.needReadable = true;
- // call internal read method
- this._read(state.highWaterMark);
- state.sync = false;
- // If _read pushed data synchronously, then `reading` will be false,
- // and we need to re-evaluate how much data we can return to the user.
- if (!state.reading) n = howMuchToRead(nOrig, state);
- }
- var ret;
- if (n > 0) ret = fromList(n, state);else ret = null;
- if (ret === null) {
- state.needReadable = true;
- n = 0;
- } else {
- state.length -= n;
- }
- if (state.length === 0) {
- // If we have nothing in the buffer, then we want to know
- // as soon as we *do* get something into the buffer.
- if (!state.ended) state.needReadable = true;
- // If we tried to read() past the EOF, then emit end on the next tick.
- if (nOrig !== n && state.ended) endReadable(this);
- }
- if (ret !== null) this.emit('data', ret);
- return ret;
- };
- function onEofChunk(stream, state) {
- if (state.ended) return;
- if (state.decoder) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length) {
- state.buffer.push(chunk);
- state.length += state.objectMode ? 1 : chunk.length;
- }
- }
- state.ended = true;
- // emit 'readable' now to make sure it gets picked up.
- emitReadable(stream);
- }
- // Don't emit readable right away in sync mode, because this can trigger
- // another read() call => stack overflow. This way, it might trigger
- // a nextTick recursion warning, but that's not so bad.
- function emitReadable(stream) {
- var state = stream._readableState;
- state.needReadable = false;
- if (!state.emittedReadable) {
- debug('emitReadable', state.flowing);
- state.emittedReadable = true;
- if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
- }
- }
- function emitReadable_(stream) {
- debug('emit readable');
- stream.emit('readable');
- flow(stream);
- }
- // at this point, the user has presumably seen the 'readable' event,
- // and called read() to consume some data. that may have triggered
- // in turn another _read(n) call, in which case reading = true if
- // it's in progress.
- // However, if we're not ended, or reading, and the length < hwm,
- // then go ahead and try to read some more preemptively.
- function maybeReadMore(stream, state) {
- if (!state.readingMore) {
- state.readingMore = true;
- processNextTick(maybeReadMore_, stream, state);
- }
- }
- function maybeReadMore_(stream, state) {
- var len = state.length;
- while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
- debug('maybeReadMore read 0');
- stream.read(0);
- if (len === state.length)
- // didn't get any data, stop spinning.
- break;else len = state.length;
- }
- state.readingMore = false;
- }
- // abstract method. to be overridden in specific implementation classes.
- // call cb(er, data) where data is <= n in length.
- // for virtual (non-string, non-buffer) streams, "length" is somewhat
- // arbitrary, and perhaps not very meaningful.
- Readable.prototype._read = function (n) {
- this.emit('error', new Error('_read() is not implemented'));
- };
- Readable.prototype.pipe = function (dest, pipeOpts) {
- var src = this;
- var state = this._readableState;
- switch (state.pipesCount) {
- case 0:
- state.pipes = dest;
- break;
- case 1:
- state.pipes = [state.pipes, dest];
- break;
- default:
- state.pipes.push(dest);
- break;
- }
- state.pipesCount += 1;
- debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
- var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
- var endFn = doEnd ? onend : unpipe;
- if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
- dest.on('unpipe', onunpipe);
- function onunpipe(readable, unpipeInfo) {
- debug('onunpipe');
- if (readable === src) {
- if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
- unpipeInfo.hasUnpiped = true;
- cleanup();
- }
- }
- }
- function onend() {
- debug('onend');
- dest.end();
- }
- // when the dest drains, it reduces the awaitDrain counter
- // on the source. This would be more elegant with a .once()
- // handler in flow(), but adding and removing repeatedly is
- // too slow.
- var ondrain = pipeOnDrain(src);
- dest.on('drain', ondrain);
- var cleanedUp = false;
- function cleanup() {
- debug('cleanup');
- // cleanup event handlers once the pipe is broken
- dest.removeListener('close', onclose);
- dest.removeListener('finish', onfinish);
- dest.removeListener('drain', ondrain);
- dest.removeListener('error', onerror);
- dest.removeListener('unpipe', onunpipe);
- src.removeListener('end', onend);
- src.removeListener('end', unpipe);
- src.removeListener('data', ondata);
- cleanedUp = true;
- // if the reader is waiting for a drain event from this
- // specific writer, then it would cause it to never start
- // flowing again.
- // So, if this is awaiting a drain, then we just call it now.
- // If we don't know, then assume that we are waiting for one.
- if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
- }
- // If the user pushes more data while we're writing to dest then we'll end up
- // in ondata again. However, we only want to increase awaitDrain once because
- // dest will only emit one 'drain' event for the multiple writes.
- // => Introduce a guard on increasing awaitDrain.
- var increasedAwaitDrain = false;
- src.on('data', ondata);
- function ondata(chunk) {
- debug('ondata');
- increasedAwaitDrain = false;
- var ret = dest.write(chunk);
- if (false === ret && !increasedAwaitDrain) {
- // If the user unpiped during `dest.write()`, it is possible
- // to get stuck in a permanently paused state if that write
- // also returned false.
- // => Check whether `dest` is still a piping destination.
- if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
- debug('false write response, pause', src._readableState.awaitDrain);
- src._readableState.awaitDrain++;
- increasedAwaitDrain = true;
- }
- src.pause();
- }
- }
- // if the dest has an error, then stop piping into it.
- // however, don't suppress the throwing behavior for this.
- function onerror(er) {
- debug('onerror', er);
- unpipe();
- dest.removeListener('error', onerror);
- if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
- }
- // Make sure our error handler is attached before userland ones.
- prependListener(dest, 'error', onerror);
- // Both close and finish should trigger unpipe, but only once.
- function onclose() {
- dest.removeListener('finish', onfinish);
- unpipe();
- }
- dest.once('close', onclose);
- function onfinish() {
- debug('onfinish');
- dest.removeListener('close', onclose);
- unpipe();
- }
- dest.once('finish', onfinish);
- function unpipe() {
- debug('unpipe');
- src.unpipe(dest);
- }
- // tell the dest that it's being piped to
- dest.emit('pipe', src);
- // start the flow if it hasn't been started already.
- if (!state.flowing) {
- debug('pipe resume');
- src.resume();
- }
- return dest;
- };
- function pipeOnDrain(src) {
- return function () {
- var state = src._readableState;
- debug('pipeOnDrain', state.awaitDrain);
- if (state.awaitDrain) state.awaitDrain--;
- if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
- state.flowing = true;
- flow(src);
- }
- };
- }
- Readable.prototype.unpipe = function (dest) {
- var state = this._readableState;
- var unpipeInfo = { hasUnpiped: false };
- // if we're not piping anywhere, then do nothing.
- if (state.pipesCount === 0) return this;
- // just one destination. most common case.
- if (state.pipesCount === 1) {
- // passed in one, but it's not the right one.
- if (dest && dest !== state.pipes) return this;
- if (!dest) dest = state.pipes;
- // got a match.
- state.pipes = null;
- state.pipesCount = 0;
- state.flowing = false;
- if (dest) dest.emit('unpipe', this, unpipeInfo);
- return this;
- }
- // slow case. multiple pipe destinations.
- if (!dest) {
- // remove all.
- var dests = state.pipes;
- var len = state.pipesCount;
- state.pipes = null;
- state.pipesCount = 0;
- state.flowing = false;
- for (var i = 0; i < len; i++) {
- dests[i].emit('unpipe', this, unpipeInfo);
- }return this;
- }
- // try to find the right one.
- var index = indexOf(state.pipes, dest);
- if (index === -1) return this;
- state.pipes.splice(index, 1);
- state.pipesCount -= 1;
- if (state.pipesCount === 1) state.pipes = state.pipes[0];
- dest.emit('unpipe', this, unpipeInfo);
- return this;
- };
- // set up data events if they are asked for
- // Ensure readable listeners eventually get something
- Readable.prototype.on = function (ev, fn) {
- var res = Stream.prototype.on.call(this, ev, fn);
- if (ev === 'data') {
- // Start flowing on next tick if stream isn't explicitly paused
- if (this._readableState.flowing !== false) this.resume();
- } else if (ev === 'readable') {
- var state = this._readableState;
- if (!state.endEmitted && !state.readableListening) {
- state.readableListening = state.needReadable = true;
- state.emittedReadable = false;
- if (!state.reading) {
- processNextTick(nReadingNextTick, this);
- } else if (state.length) {
- emitReadable(this);
- }
- }
- }
- return res;
- };
- Readable.prototype.addListener = Readable.prototype.on;
- function nReadingNextTick(self) {
- debug('readable nexttick read 0');
- self.read(0);
- }
- // pause() and resume() are remnants of the legacy readable stream API
- // If the user uses them, then switch into old mode.
- Readable.prototype.resume = function () {
- var state = this._readableState;
- if (!state.flowing) {
- debug('resume');
- state.flowing = true;
- resume(this, state);
- }
- return this;
- };
- function resume(stream, state) {
- if (!state.resumeScheduled) {
- state.resumeScheduled = true;
- processNextTick(resume_, stream, state);
- }
- }
- function resume_(stream, state) {
- if (!state.reading) {
- debug('resume read 0');
- stream.read(0);
- }
- state.resumeScheduled = false;
- state.awaitDrain = 0;
- stream.emit('resume');
- flow(stream);
- if (state.flowing && !state.reading) stream.read(0);
- }
- Readable.prototype.pause = function () {
- debug('call pause flowing=%j', this._readableState.flowing);
- if (false !== this._readableState.flowing) {
- debug('pause');
- this._readableState.flowing = false;
- this.emit('pause');
- }
- return this;
- };
- function flow(stream) {
- var state = stream._readableState;
- debug('flow', state.flowing);
- while (state.flowing && stream.read() !== null) {}
- }
- // wrap an old-style stream as the async data source.
- // This is *not* part of the readable stream interface.
- // It is an ugly unfortunate mess of history.
- Readable.prototype.wrap = function (stream) {
- var state = this._readableState;
- var paused = false;
- var self = this;
- stream.on('end', function () {
- debug('wrapped end');
- if (state.decoder && !state.ended) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length) self.push(chunk);
- }
- self.push(null);
- });
- stream.on('data', function (chunk) {
- debug('wrapped data');
- if (state.decoder) chunk = state.decoder.write(chunk);
- // don't skip over falsy values in objectMode
- if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
- var ret = self.push(chunk);
- if (!ret) {
- paused = true;
- stream.pause();
- }
- });
- // proxy all the other methods.
- // important when wrapping filters and duplexes.
- for (var i in stream) {
- if (this[i] === undefined && typeof stream[i] === 'function') {
- this[i] = function (method) {
- return function () {
- return stream[method].apply(stream, arguments);
- };
- }(i);
- }
- }
- // proxy certain important events.
- for (var n = 0; n < kProxyEvents.length; n++) {
- stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));
- }
- // when we try to consume some more bytes, simply unpause the
- // underlying stream.
- self._read = function (n) {
- debug('wrapped _read', n);
- if (paused) {
- paused = false;
- stream.resume();
- }
- };
- return self;
- };
- // exposed for testing purposes only.
- Readable._fromList = fromList;
- // Pluck off n bytes from an array of buffers.
- // Length is the combined lengths of all the buffers in the list.
- // This function is designed to be inlinable, so please take care when making
- // changes to the function body.
- function fromList(n, state) {
- // nothing buffered
- if (state.length === 0) return null;
- var ret;
- if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
- // read it all, truncate the list
- if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
- state.buffer.clear();
- } else {
- // read part of list
- ret = fromListPartial(n, state.buffer, state.decoder);
- }
- return ret;
- }
- // Extracts only enough buffered data to satisfy the amount requested.
- // This function is designed to be inlinable, so please take care when making
- // changes to the function body.
- function fromListPartial(n, list, hasStrings) {
- var ret;
- if (n < list.head.data.length) {
- // slice is the same for buffers and strings
- ret = list.head.data.slice(0, n);
- list.head.data = list.head.data.slice(n);
- } else if (n === list.head.data.length) {
- // first chunk is a perfect match
- ret = list.shift();
- } else {
- // result spans more than one buffer
- ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
- }
- return ret;
- }
- // Copies a specified amount of characters from the list of buffered data
- // chunks.
- // This function is designed to be inlinable, so please take care when making
- // changes to the function body.
- function copyFromBufferString(n, list) {
- var p = list.head;
- var c = 1;
- var ret = p.data;
- n -= ret.length;
- while (p = p.next) {
- var str = p.data;
- var nb = n > str.length ? str.length : n;
- if (nb === str.length) ret += str;else ret += str.slice(0, n);
- n -= nb;
- if (n === 0) {
- if (nb === str.length) {
- ++c;
- if (p.next) list.head = p.next;else list.head = list.tail = null;
- } else {
- list.head = p;
- p.data = str.slice(nb);
- }
- break;
- }
- ++c;
- }
- list.length -= c;
- return ret;
- }
- // Copies a specified amount of bytes from the list of buffered data chunks.
- // This function is designed to be inlinable, so please take care when making
- // changes to the function body.
- function copyFromBuffer(n, list) {
- var ret = Buffer.allocUnsafe(n);
- var p = list.head;
- var c = 1;
- p.data.copy(ret);
- n -= p.data.length;
- while (p = p.next) {
- var buf = p.data;
- var nb = n > buf.length ? buf.length : n;
- buf.copy(ret, ret.length - n, 0, nb);
- n -= nb;
- if (n === 0) {
- if (nb === buf.length) {
- ++c;
- if (p.next) list.head = p.next;else list.head = list.tail = null;
- } else {
- list.head = p;
- p.data = buf.slice(nb);
- }
- break;
- }
- ++c;
- }
- list.length -= c;
- return ret;
- }
- function endReadable(stream) {
- var state = stream._readableState;
- // If we get here before consuming all the bytes, then that is a
- // bug in node. Should never happen.
- if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
- if (!state.endEmitted) {
- state.ended = true;
- processNextTick(endReadableNT, state, stream);
- }
- }
- function endReadableNT(state, stream) {
- // Check that we didn't get one last unshift.
- if (!state.endEmitted && state.length === 0) {
- state.endEmitted = true;
- stream.readable = false;
- stream.emit('end');
- }
- }
- function forEach(xs, f) {
- for (var i = 0, l = xs.length; i < l; i++) {
- f(xs[i], i);
- }
- }
- function indexOf(xs, x) {
- for (var i = 0, l = xs.length; i < l; i++) {
- if (xs[i] === x) return i;
- }
- return -1;
- }
- }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- },{"./_stream_duplex":135,"./internal/streams/BufferList":140,"./internal/streams/destroy":141,"./internal/streams/stream":142,"_process":126,"core-util-is":56,"events":90,"inherits":108,"isarray":110,"process-nextick-args":125,"safe-buffer":148,"string_decoder/":158,"util":27}],138:[function(require,module,exports){
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- // a transform stream is a readable/writable stream where you do
- // something with the data. Sometimes it's called a "filter",
- // but that's not a great name for it, since that implies a thing where
- // some bits pass through, and others are simply ignored. (That would
- // be a valid example of a transform, of course.)
- //
- // While the output is causally related to the input, it's not a
- // necessarily symmetric or synchronous transformation. For example,
- // a zlib stream might take multiple plain-text writes(), and then
- // emit a single compressed chunk some time in the future.
- //
- // Here's how this works:
- //
- // The Transform stream has all the aspects of the readable and writable
- // stream classes. When you write(chunk), that calls _write(chunk,cb)
- // internally, and returns false if there's a lot of pending writes
- // buffered up. When you call read(), that calls _read(n) until
- // there's enough pending readable data buffered up.
- //
- // In a transform stream, the written data is placed in a buffer. When
- // _read(n) is called, it transforms the queued up data, calling the
- // buffered _write cb's as it consumes chunks. If consuming a single
- // written chunk would result in multiple output chunks, then the first
- // outputted bit calls the readcb, and subsequent chunks just go into
- // the read buffer, and will cause it to emit 'readable' if necessary.
- //
- // This way, back-pressure is actually determined by the reading side,
- // since _read has to be called to start processing a new chunk. However,
- // a pathological inflate type of transform can cause excessive buffering
- // here. For example, imagine a stream where every byte of input is
- // interpreted as an integer from 0-255, and then results in that many
- // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
- // 1kb of data being output. In this case, you could write a very small
- // amount of input, and end up with a very large amount of output. In
- // such a pathological inflating mechanism, there'd be no way to tell
- // the system to stop doing the transform. A single 4MB write could
- // cause the system to run out of memory.
- //
- // However, even in such a pathological case, only a single written chunk
- // would be consumed, and then the rest would wait (un-transformed) until
- // the results of the previous transformed chunk were consumed.
- 'use strict';
- module.exports = Transform;
- var Duplex = require('./_stream_duplex');
- /*<replacement>*/
- var util = require('core-util-is');
- util.inherits = require('inherits');
- /*</replacement>*/
- util.inherits(Transform, Duplex);
- function TransformState(stream) {
- this.afterTransform = function (er, data) {
- return afterTransform(stream, er, data);
- };
- this.needTransform = false;
- this.transforming = false;
- this.writecb = null;
- this.writechunk = null;
- this.writeencoding = null;
- }
- function afterTransform(stream, er, data) {
- var ts = stream._transformState;
- ts.transforming = false;
- var cb = ts.writecb;
- if (!cb) {
- return stream.emit('error', new Error('write callback called multiple times'));
- }
- ts.writechunk = null;
- ts.writecb = null;
- if (data !== null && data !== undefined) stream.push(data);
- cb(er);
- var rs = stream._readableState;
- rs.reading = false;
- if (rs.needReadable || rs.length < rs.highWaterMark) {
- stream._read(rs.highWaterMark);
- }
- }
- function Transform(options) {
- if (!(this instanceof Transform)) return new Transform(options);
- Duplex.call(this, options);
- this._transformState = new TransformState(this);
- var stream = this;
- // start out asking for a readable event once data is transformed.
- this._readableState.needReadable = true;
- // we have implemented the _read method, and done the other things
- // that Readable wants before the first _read call, so unset the
- // sync guard flag.
- this._readableState.sync = false;
- if (options) {
- if (typeof options.transform === 'function') this._transform = options.transform;
- if (typeof options.flush === 'function') this._flush = options.flush;
- }
- // When the writable side finishes, then flush out anything remaining.
- this.once('prefinish', function () {
- if (typeof this._flush === 'function') this._flush(function (er, data) {
- done(stream, er, data);
- });else done(stream);
- });
- }
- Transform.prototype.push = function (chunk, encoding) {
- this._transformState.needTransform = false;
- return Duplex.prototype.push.call(this, chunk, encoding);
- };
- // This is the part where you do stuff!
- // override this function in implementation classes.
- // 'chunk' is an input chunk.
- //
- // Call `push(newChunk)` to pass along transformed output
- // to the readable side. You may call 'push' zero or more times.
- //
- // Call `cb(err)` when you are done with this chunk. If you pass
- // an error, then that'll put the hurt on the whole operation. If you
- // never call cb(), then you'll never get another chunk.
- Transform.prototype._transform = function (chunk, encoding, cb) {
- throw new Error('_transform() is not implemented');
- };
- Transform.prototype._write = function (chunk, encoding, cb) {
- var ts = this._transformState;
- ts.writecb = cb;
- ts.writechunk = chunk;
- ts.writeencoding = encoding;
- if (!ts.transforming) {
- var rs = this._readableState;
- if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
- }
- };
- // Doesn't matter what the args are here.
- // _transform does all the work.
- // That we got here means that the readable side wants more data.
- Transform.prototype._read = function (n) {
- var ts = this._transformState;
- if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
- ts.transforming = true;
- this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
- } else {
- // mark that we need a transform, so that any data that comes in
- // will get processed, now that we've asked for it.
- ts.needTransform = true;
- }
- };
- Transform.prototype._destroy = function (err, cb) {
- var _this = this;
- Duplex.prototype._destroy.call(this, err, function (err2) {
- cb(err2);
- _this.emit('close');
- });
- };
- function done(stream, er, data) {
- if (er) return stream.emit('error', er);
- if (data !== null && data !== undefined) stream.push(data);
- // if there's nothing in the write buffer, then that means
- // that nothing more will ever be provided
- var ws = stream._writableState;
- var ts = stream._transformState;
- if (ws.length) throw new Error('Calling transform done when ws.length != 0');
- if (ts.transforming) throw new Error('Calling transform done when still transforming');
- return stream.push(null);
- }
- },{"./_stream_duplex":135,"core-util-is":56,"inherits":108}],139:[function(require,module,exports){
- (function (process,global){
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- // A bit simpler than readable streams.
- // Implement an async ._write(chunk, encoding, cb), and it'll handle all
- // the drain event emission and buffering.
- 'use strict';
- /*<replacement>*/
- var processNextTick = require('process-nextick-args');
- /*</replacement>*/
- module.exports = Writable;
- /* <replacement> */
- function WriteReq(chunk, encoding, cb) {
- this.chunk = chunk;
- this.encoding = encoding;
- this.callback = cb;
- this.next = null;
- }
- // It seems a linked list but it is not
- // there will be only 2 of these for each stream
- function CorkedRequest(state) {
- var _this = this;
- this.next = null;
- this.entry = null;
- this.finish = function () {
- onCorkedFinish(_this, state);
- };
- }
- /* </replacement> */
- /*<replacement>*/
- var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
- /*</replacement>*/
- /*<replacement>*/
- var Duplex;
- /*</replacement>*/
- Writable.WritableState = WritableState;
- /*<replacement>*/
- var util = require('core-util-is');
- util.inherits = require('inherits');
- /*</replacement>*/
- /*<replacement>*/
- var internalUtil = {
- deprecate: require('util-deprecate')
- };
- /*</replacement>*/
- /*<replacement>*/
- var Stream = require('./internal/streams/stream');
- /*</replacement>*/
- /*<replacement>*/
- var Buffer = require('safe-buffer').Buffer;
- var OurUint8Array = global.Uint8Array || function () {};
- function _uint8ArrayToBuffer(chunk) {
- return Buffer.from(chunk);
- }
- function _isUint8Array(obj) {
- return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
- }
- /*</replacement>*/
- var destroyImpl = require('./internal/streams/destroy');
- util.inherits(Writable, Stream);
- function nop() {}
- function WritableState(options, stream) {
- Duplex = Duplex || require('./_stream_duplex');
- options = options || {};
- // object stream flag to indicate whether or not this stream
- // contains buffers or objects.
- this.objectMode = !!options.objectMode;
- if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
- // the point at which write() starts returning false
- // Note: 0 is a valid value, means that we always return false if
- // the entire buffer is not flushed immediately on write()
- var hwm = options.highWaterMark;
- var defaultHwm = this.objectMode ? 16 : 16 * 1024;
- this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
- // cast to ints.
- this.highWaterMark = Math.floor(this.highWaterMark);
- // if _final has been called
- this.finalCalled = false;
- // drain event flag.
- this.needDrain = false;
- // at the start of calling end()
- this.ending = false;
- // when end() has been called, and returned
- this.ended = false;
- // when 'finish' is emitted
- this.finished = false;
- // has it been destroyed
- this.destroyed = false;
- // should we decode strings into buffers before passing to _write?
- // this is here so that some node-core streams can optimize string
- // handling at a lower level.
- var noDecode = options.decodeStrings === false;
- this.decodeStrings = !noDecode;
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
- // not an actual buffer we keep track of, but a measurement
- // of how much we're waiting to get pushed to some underlying
- // socket or file.
- this.length = 0;
- // a flag to see when we're in the middle of a write.
- this.writing = false;
- // when true all writes will be buffered until .uncork() call
- this.corked = 0;
- // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, because any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
- this.sync = true;
- // a flag to know if we're processing previously buffered items, which
- // may call the _write() callback in the same tick, so that we don't
- // end up in an overlapped onwrite situation.
- this.bufferProcessing = false;
- // the callback that's passed to _write(chunk,cb)
- this.onwrite = function (er) {
- onwrite(stream, er);
- };
- // the callback that the user supplies to write(chunk,encoding,cb)
- this.writecb = null;
- // the amount that is being written when _write is called.
- this.writelen = 0;
- this.bufferedRequest = null;
- this.lastBufferedRequest = null;
- // number of pending user-supplied write callbacks
- // this must be 0 before 'finish' can be emitted
- this.pendingcb = 0;
- // emit prefinish if the only thing we're waiting for is _write cbs
- // This is relevant for synchronous Transform streams
- this.prefinished = false;
- // True if the error was already emitted and should not be thrown again
- this.errorEmitted = false;
- // count buffered requests
- this.bufferedRequestCount = 0;
- // allocate the first CorkedRequest, there is always
- // one allocated and free to use, and we maintain at most two
- this.corkedRequestsFree = new CorkedRequest(this);
- }
- WritableState.prototype.getBuffer = function getBuffer() {
- var current = this.bufferedRequest;
- var out = [];
- while (current) {
- out.push(current);
- current = current.next;
- }
- return out;
- };
- (function () {
- try {
- Object.defineProperty(WritableState.prototype, 'buffer', {
- get: internalUtil.deprecate(function () {
- return this.getBuffer();
- }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
- });
- } catch (_) {}
- })();
- // Test _writableState for inheritance to account for Duplex streams,
- // whose prototype chain only points to Readable.
- var realHasInstance;
- if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
- realHasInstance = Function.prototype[Symbol.hasInstance];
- Object.defineProperty(Writable, Symbol.hasInstance, {
- value: function (object) {
- if (realHasInstance.call(this, object)) return true;
- return object && object._writableState instanceof WritableState;
- }
- });
- } else {
- realHasInstance = function (object) {
- return object instanceof this;
- };
- }
- function Writable(options) {
- Duplex = Duplex || require('./_stream_duplex');
- // Writable ctor is applied to Duplexes, too.
- // `realHasInstance` is necessary because using plain `instanceof`
- // would return false, as no `_writableState` property is attached.
- // Trying to use the custom `instanceof` for Writable here will also break the
- // Node.js LazyTransform implementation, which has a non-trivial getter for
- // `_writableState` that would lead to infinite recursion.
- if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
- return new Writable(options);
- }
- this._writableState = new WritableState(options, this);
- // legacy.
- this.writable = true;
- if (options) {
- if (typeof options.write === 'function') this._write = options.write;
- if (typeof options.writev === 'function') this._writev = options.writev;
- if (typeof options.destroy === 'function') this._destroy = options.destroy;
- if (typeof options.final === 'function') this._final = options.final;
- }
- Stream.call(this);
- }
- // Otherwise people can pipe Writable streams, which is just wrong.
- Writable.prototype.pipe = function () {
- this.emit('error', new Error('Cannot pipe, not readable'));
- };
- function writeAfterEnd(stream, cb) {
- var er = new Error('write after end');
- // TODO: defer error events consistently everywhere, not just the cb
- stream.emit('error', er);
- processNextTick(cb, er);
- }
- // Checks that a user-supplied chunk is valid, especially for the particular
- // mode the stream is in. Currently this means that `null` is never accepted
- // and undefined/non-string values are only allowed in object mode.
- function validChunk(stream, state, chunk, cb) {
- var valid = true;
- var er = false;
- if (chunk === null) {
- er = new TypeError('May not write null values to stream');
- } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
- er = new TypeError('Invalid non-string/buffer chunk');
- }
- if (er) {
- stream.emit('error', er);
- processNextTick(cb, er);
- valid = false;
- }
- return valid;
- }
- Writable.prototype.write = function (chunk, encoding, cb) {
- var state = this._writableState;
- var ret = false;
- var isBuf = _isUint8Array(chunk) && !state.objectMode;
- if (isBuf && !Buffer.isBuffer(chunk)) {
- chunk = _uint8ArrayToBuffer(chunk);
- }
- if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
- if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
- if (typeof cb !== 'function') cb = nop;
- if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
- state.pendingcb++;
- ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
- }
- return ret;
- };
- Writable.prototype.cork = function () {
- var state = this._writableState;
- state.corked++;
- };
- Writable.prototype.uncork = function () {
- var state = this._writableState;
- if (state.corked) {
- state.corked--;
- if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
- }
- };
- Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
- // node::ParseEncoding() requires lower case.
- if (typeof encoding === 'string') encoding = encoding.toLowerCase();
- if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
- this._writableState.defaultEncoding = encoding;
- return this;
- };
- function decodeChunk(state, chunk, encoding) {
- if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
- chunk = Buffer.from(chunk, encoding);
- }
- return chunk;
- }
- // if we're already writing something, then just put this
- // in the queue, and wait our turn. Otherwise, call _write
- // If we return false, then we need a drain event, so set that flag.
- function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
- if (!isBuf) {
- var newChunk = decodeChunk(state, chunk, encoding);
- if (chunk !== newChunk) {
- isBuf = true;
- encoding = 'buffer';
- chunk = newChunk;
- }
- }
- var len = state.objectMode ? 1 : chunk.length;
- state.length += len;
- var ret = state.length < state.highWaterMark;
- // we must ensure that previous needDrain will not be reset to false.
- if (!ret) state.needDrain = true;
- if (state.writing || state.corked) {
- var last = state.lastBufferedRequest;
- state.lastBufferedRequest = {
- chunk: chunk,
- encoding: encoding,
- isBuf: isBuf,
- callback: cb,
- next: null
- };
- if (last) {
- last.next = state.lastBufferedRequest;
- } else {
- state.bufferedRequest = state.lastBufferedRequest;
- }
- state.bufferedRequestCount += 1;
- } else {
- doWrite(stream, state, false, len, chunk, encoding, cb);
- }
- return ret;
- }
- function doWrite(stream, state, writev, len, chunk, encoding, cb) {
- state.writelen = len;
- state.writecb = cb;
- state.writing = true;
- state.sync = true;
- if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
- state.sync = false;
- }
- function onwriteError(stream, state, sync, er, cb) {
- --state.pendingcb;
- if (sync) {
- // defer the callback if we are being called synchronously
- // to avoid piling up things on the stack
- processNextTick(cb, er);
- // this can emit finish, and it will always happen
- // after error
- processNextTick(finishMaybe, stream, state);
- stream._writableState.errorEmitted = true;
- stream.emit('error', er);
- } else {
- // the caller expect this to happen before if
- // it is async
- cb(er);
- stream._writableState.errorEmitted = true;
- stream.emit('error', er);
- // this can emit finish, but finish must
- // always follow error
- finishMaybe(stream, state);
- }
- }
- function onwriteStateUpdate(state) {
- state.writing = false;
- state.writecb = null;
- state.length -= state.writelen;
- state.writelen = 0;
- }
- function onwrite(stream, er) {
- var state = stream._writableState;
- var sync = state.sync;
- var cb = state.writecb;
- onwriteStateUpdate(state);
- if (er) onwriteError(stream, state, sync, er, cb);else {
- // Check if we're actually ready to finish, but don't emit yet
- var finished = needFinish(state);
- if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
- clearBuffer(stream, state);
- }
- if (sync) {
- /*<replacement>*/
- asyncWrite(afterWrite, stream, state, finished, cb);
- /*</replacement>*/
- } else {
- afterWrite(stream, state, finished, cb);
- }
- }
- }
- function afterWrite(stream, state, finished, cb) {
- if (!finished) onwriteDrain(stream, state);
- state.pendingcb--;
- cb();
- finishMaybe(stream, state);
- }
- // Must force callback to be called on nextTick, so that we don't
- // emit 'drain' before the write() consumer gets the 'false' return
- // value, and has a chance to attach a 'drain' listener.
- function onwriteDrain(stream, state) {
- if (state.length === 0 && state.needDrain) {
- state.needDrain = false;
- stream.emit('drain');
- }
- }
- // if there's something in the buffer waiting, then process it
- function clearBuffer(stream, state) {
- state.bufferProcessing = true;
- var entry = state.bufferedRequest;
- if (stream._writev && entry && entry.next) {
- // Fast case, write everything using _writev()
- var l = state.bufferedRequestCount;
- var buffer = new Array(l);
- var holder = state.corkedRequestsFree;
- holder.entry = entry;
- var count = 0;
- var allBuffers = true;
- while (entry) {
- buffer[count] = entry;
- if (!entry.isBuf) allBuffers = false;
- entry = entry.next;
- count += 1;
- }
- buffer.allBuffers = allBuffers;
- doWrite(stream, state, true, state.length, buffer, '', holder.finish);
- // doWrite is almost always async, defer these to save a bit of time
- // as the hot path ends with doWrite
- state.pendingcb++;
- state.lastBufferedRequest = null;
- if (holder.next) {
- state.corkedRequestsFree = holder.next;
- holder.next = null;
- } else {
- state.corkedRequestsFree = new CorkedRequest(state);
- }
- } else {
- // Slow case, write chunks one-by-one
- while (entry) {
- var chunk = entry.chunk;
- var encoding = entry.encoding;
- var cb = entry.callback;
- var len = state.objectMode ? 1 : chunk.length;
- doWrite(stream, state, false, len, chunk, encoding, cb);
- entry = entry.next;
- // if we didn't call the onwrite immediately, then
- // it means that we need to wait until it does.
- // also, that means that the chunk and cb are currently
- // being processed, so move the buffer counter past them.
- if (state.writing) {
- break;
- }
- }
- if (entry === null) state.lastBufferedRequest = null;
- }
- state.bufferedRequestCount = 0;
- state.bufferedRequest = entry;
- state.bufferProcessing = false;
- }
- Writable.prototype._write = function (chunk, encoding, cb) {
- cb(new Error('_write() is not implemented'));
- };
- Writable.prototype._writev = null;
- Writable.prototype.end = function (chunk, encoding, cb) {
- var state = this._writableState;
- if (typeof chunk === 'function') {
- cb = chunk;
- chunk = null;
- encoding = null;
- } else if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
- if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
- // .end() fully uncorks
- if (state.corked) {
- state.corked = 1;
- this.uncork();
- }
- // ignore unnecessary end() calls.
- if (!state.ending && !state.finished) endWritable(this, state, cb);
- };
- function needFinish(state) {
- return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
- }
- function callFinal(stream, state) {
- stream._final(function (err) {
- state.pendingcb--;
- if (err) {
- stream.emit('error', err);
- }
- state.prefinished = true;
- stream.emit('prefinish');
- finishMaybe(stream, state);
- });
- }
- function prefinish(stream, state) {
- if (!state.prefinished && !state.finalCalled) {
- if (typeof stream._final === 'function') {
- state.pendingcb++;
- state.finalCalled = true;
- processNextTick(callFinal, stream, state);
- } else {
- state.prefinished = true;
- stream.emit('prefinish');
- }
- }
- }
- function finishMaybe(stream, state) {
- var need = needFinish(state);
- if (need) {
- prefinish(stream, state);
- if (state.pendingcb === 0) {
- state.finished = true;
- stream.emit('finish');
- }
- }
- return need;
- }
- function endWritable(stream, state, cb) {
- state.ending = true;
- finishMaybe(stream, state);
- if (cb) {
- if (state.finished) processNextTick(cb);else stream.once('finish', cb);
- }
- state.ended = true;
- stream.writable = false;
- }
- function onCorkedFinish(corkReq, state, err) {
- var entry = corkReq.entry;
- corkReq.entry = null;
- while (entry) {
- var cb = entry.callback;
- state.pendingcb--;
- cb(err);
- entry = entry.next;
- }
- if (state.corkedRequestsFree) {
- state.corkedRequestsFree.next = corkReq;
- } else {
- state.corkedRequestsFree = corkReq;
- }
- }
- Object.defineProperty(Writable.prototype, 'destroyed', {
- get: function () {
- if (this._writableState === undefined) {
- return false;
- }
- return this._writableState.destroyed;
- },
- set: function (value) {
- // we ignore the value if the stream
- // has not been initialized yet
- if (!this._writableState) {
- return;
- }
- // backward compatibility, the user is explicitly
- // managing destroyed
- this._writableState.destroyed = value;
- }
- });
- Writable.prototype.destroy = destroyImpl.destroy;
- Writable.prototype._undestroy = destroyImpl.undestroy;
- Writable.prototype._destroy = function (err, cb) {
- this.end();
- cb(err);
- };
- }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- },{"./_stream_duplex":135,"./internal/streams/destroy":141,"./internal/streams/stream":142,"_process":126,"core-util-is":56,"inherits":108,"process-nextick-args":125,"safe-buffer":148,"util-deprecate":159}],140:[function(require,module,exports){
- 'use strict';
- /*<replacement>*/
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- var Buffer = require('safe-buffer').Buffer;
- /*</replacement>*/
- function copyBuffer(src, target, offset) {
- src.copy(target, offset);
- }
- module.exports = function () {
- function BufferList() {
- _classCallCheck(this, BufferList);
- this.head = null;
- this.tail = null;
- this.length = 0;
- }
- BufferList.prototype.push = function push(v) {
- var entry = { data: v, next: null };
- if (this.length > 0) this.tail.next = entry;else this.head = entry;
- this.tail = entry;
- ++this.length;
- };
- BufferList.prototype.unshift = function unshift(v) {
- var entry = { data: v, next: this.head };
- if (this.length === 0) this.tail = entry;
- this.head = entry;
- ++this.length;
- };
- BufferList.prototype.shift = function shift() {
- if (this.length === 0) return;
- var ret = this.head.data;
- if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
- --this.length;
- return ret;
- };
- BufferList.prototype.clear = function clear() {
- this.head = this.tail = null;
- this.length = 0;
- };
- BufferList.prototype.join = function join(s) {
- if (this.length === 0) return '';
- var p = this.head;
- var ret = '' + p.data;
- while (p = p.next) {
- ret += s + p.data;
- }return ret;
- };
- BufferList.prototype.concat = function concat(n) {
- if (this.length === 0) return Buffer.alloc(0);
- if (this.length === 1) return this.head.data;
- var ret = Buffer.allocUnsafe(n >>> 0);
- var p = this.head;
- var i = 0;
- while (p) {
- copyBuffer(p.data, ret, i);
- i += p.data.length;
- p = p.next;
- }
- return ret;
- };
- return BufferList;
- }();
- },{"safe-buffer":148}],141:[function(require,module,exports){
- 'use strict';
- /*<replacement>*/
- var processNextTick = require('process-nextick-args');
- /*</replacement>*/
- // undocumented cb() API, needed for core, not for public API
- function destroy(err, cb) {
- var _this = this;
- var readableDestroyed = this._readableState && this._readableState.destroyed;
- var writableDestroyed = this._writableState && this._writableState.destroyed;
- if (readableDestroyed || writableDestroyed) {
- if (cb) {
- cb(err);
- } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
- processNextTick(emitErrorNT, this, err);
- }
- return;
- }
- // we set destroyed to true before firing error callbacks in order
- // to make it re-entrance safe in case destroy() is called within callbacks
- if (this._readableState) {
- this._readableState.destroyed = true;
- }
- // if this is a duplex stream mark the writable part as destroyed as well
- if (this._writableState) {
- this._writableState.destroyed = true;
- }
- this._destroy(err || null, function (err) {
- if (!cb && err) {
- processNextTick(emitErrorNT, _this, err);
- if (_this._writableState) {
- _this._writableState.errorEmitted = true;
- }
- } else if (cb) {
- cb(err);
- }
- });
- }
- function undestroy() {
- if (this._readableState) {
- this._readableState.destroyed = false;
- this._readableState.reading = false;
- this._readableState.ended = false;
- this._readableState.endEmitted = false;
- }
- if (this._writableState) {
- this._writableState.destroyed = false;
- this._writableState.ended = false;
- this._writableState.ending = false;
- this._writableState.finished = false;
- this._writableState.errorEmitted = false;
- }
- }
- function emitErrorNT(self, err) {
- self.emit('error', err);
- }
- module.exports = {
- destroy: destroy,
- undestroy: undestroy
- };
- },{"process-nextick-args":125}],142:[function(require,module,exports){
- module.exports = require('events').EventEmitter;
- },{"events":90}],143:[function(require,module,exports){
- module.exports = require('./readable').PassThrough
- },{"./readable":144}],144:[function(require,module,exports){
- exports = module.exports = require('./lib/_stream_readable.js');
- exports.Stream = exports;
- exports.Readable = exports;
- exports.Writable = require('./lib/_stream_writable.js');
- exports.Duplex = require('./lib/_stream_duplex.js');
- exports.Transform = require('./lib/_stream_transform.js');
- exports.PassThrough = require('./lib/_stream_passthrough.js');
- },{"./lib/_stream_duplex.js":135,"./lib/_stream_passthrough.js":136,"./lib/_stream_readable.js":137,"./lib/_stream_transform.js":138,"./lib/_stream_writable.js":139}],145:[function(require,module,exports){
- module.exports = require('./readable').Transform
- },{"./readable":144}],146:[function(require,module,exports){
- module.exports = require('./lib/_stream_writable.js');
- },{"./lib/_stream_writable.js":139}],147:[function(require,module,exports){
- (function (Buffer){
- 'use strict'
- var inherits = require('inherits')
- var HashBase = require('hash-base')
- function RIPEMD160 () {
- HashBase.call(this, 64)
- // state
- this._a = 0x67452301
- this._b = 0xefcdab89
- this._c = 0x98badcfe
- this._d = 0x10325476
- this._e = 0xc3d2e1f0
- }
- inherits(RIPEMD160, HashBase)
- RIPEMD160.prototype._update = function () {
- var m = new Array(16)
- for (var i = 0; i < 16; ++i) m[i] = this._block.readInt32LE(i * 4)
- var al = this._a
- var bl = this._b
- var cl = this._c
- var dl = this._d
- var el = this._e
- // Mj = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
- // K = 0x00000000
- // Sj = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8
- al = fn1(al, bl, cl, dl, el, m[0], 0x00000000, 11); cl = rotl(cl, 10)
- el = fn1(el, al, bl, cl, dl, m[1], 0x00000000, 14); bl = rotl(bl, 10)
- dl = fn1(dl, el, al, bl, cl, m[2], 0x00000000, 15); al = rotl(al, 10)
- cl = fn1(cl, dl, el, al, bl, m[3], 0x00000000, 12); el = rotl(el, 10)
- bl = fn1(bl, cl, dl, el, al, m[4], 0x00000000, 5); dl = rotl(dl, 10)
- al = fn1(al, bl, cl, dl, el, m[5], 0x00000000, 8); cl = rotl(cl, 10)
- el = fn1(el, al, bl, cl, dl, m[6], 0x00000000, 7); bl = rotl(bl, 10)
- dl = fn1(dl, el, al, bl, cl, m[7], 0x00000000, 9); al = rotl(al, 10)
- cl = fn1(cl, dl, el, al, bl, m[8], 0x00000000, 11); el = rotl(el, 10)
- bl = fn1(bl, cl, dl, el, al, m[9], 0x00000000, 13); dl = rotl(dl, 10)
- al = fn1(al, bl, cl, dl, el, m[10], 0x00000000, 14); cl = rotl(cl, 10)
- el = fn1(el, al, bl, cl, dl, m[11], 0x00000000, 15); bl = rotl(bl, 10)
- dl = fn1(dl, el, al, bl, cl, m[12], 0x00000000, 6); al = rotl(al, 10)
- cl = fn1(cl, dl, el, al, bl, m[13], 0x00000000, 7); el = rotl(el, 10)
- bl = fn1(bl, cl, dl, el, al, m[14], 0x00000000, 9); dl = rotl(dl, 10)
- al = fn1(al, bl, cl, dl, el, m[15], 0x00000000, 8); cl = rotl(cl, 10)
- // Mj = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
- // K = 0x5a827999
- // Sj = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12
- el = fn2(el, al, bl, cl, dl, m[7], 0x5a827999, 7); bl = rotl(bl, 10)
- dl = fn2(dl, el, al, bl, cl, m[4], 0x5a827999, 6); al = rotl(al, 10)
- cl = fn2(cl, dl, el, al, bl, m[13], 0x5a827999, 8); el = rotl(el, 10)
- bl = fn2(bl, cl, dl, el, al, m[1], 0x5a827999, 13); dl = rotl(dl, 10)
- al = fn2(al, bl, cl, dl, el, m[10], 0x5a827999, 11); cl = rotl(cl, 10)
- el = fn2(el, al, bl, cl, dl, m[6], 0x5a827999, 9); bl = rotl(bl, 10)
- dl = fn2(dl, el, al, bl, cl, m[15], 0x5a827999, 7); al = rotl(al, 10)
- cl = fn2(cl, dl, el, al, bl, m[3], 0x5a827999, 15); el = rotl(el, 10)
- bl = fn2(bl, cl, dl, el, al, m[12], 0x5a827999, 7); dl = rotl(dl, 10)
- al = fn2(al, bl, cl, dl, el, m[0], 0x5a827999, 12); cl = rotl(cl, 10)
- el = fn2(el, al, bl, cl, dl, m[9], 0x5a827999, 15); bl = rotl(bl, 10)
- dl = fn2(dl, el, al, bl, cl, m[5], 0x5a827999, 9); al = rotl(al, 10)
- cl = fn2(cl, dl, el, al, bl, m[2], 0x5a827999, 11); el = rotl(el, 10)
- bl = fn2(bl, cl, dl, el, al, m[14], 0x5a827999, 7); dl = rotl(dl, 10)
- al = fn2(al, bl, cl, dl, el, m[11], 0x5a827999, 13); cl = rotl(cl, 10)
- el = fn2(el, al, bl, cl, dl, m[8], 0x5a827999, 12); bl = rotl(bl, 10)
- // Mj = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
- // K = 0x6ed9eba1
- // Sj = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5
- dl = fn3(dl, el, al, bl, cl, m[3], 0x6ed9eba1, 11); al = rotl(al, 10)
- cl = fn3(cl, dl, el, al, bl, m[10], 0x6ed9eba1, 13); el = rotl(el, 10)
- bl = fn3(bl, cl, dl, el, al, m[14], 0x6ed9eba1, 6); dl = rotl(dl, 10)
- al = fn3(al, bl, cl, dl, el, m[4], 0x6ed9eba1, 7); cl = rotl(cl, 10)
- el = fn3(el, al, bl, cl, dl, m[9], 0x6ed9eba1, 14); bl = rotl(bl, 10)
- dl = fn3(dl, el, al, bl, cl, m[15], 0x6ed9eba1, 9); al = rotl(al, 10)
- cl = fn3(cl, dl, el, al, bl, m[8], 0x6ed9eba1, 13); el = rotl(el, 10)
- bl = fn3(bl, cl, dl, el, al, m[1], 0x6ed9eba1, 15); dl = rotl(dl, 10)
- al = fn3(al, bl, cl, dl, el, m[2], 0x6ed9eba1, 14); cl = rotl(cl, 10)
- el = fn3(el, al, bl, cl, dl, m[7], 0x6ed9eba1, 8); bl = rotl(bl, 10)
- dl = fn3(dl, el, al, bl, cl, m[0], 0x6ed9eba1, 13); al = rotl(al, 10)
- cl = fn3(cl, dl, el, al, bl, m[6], 0x6ed9eba1, 6); el = rotl(el, 10)
- bl = fn3(bl, cl, dl, el, al, m[13], 0x6ed9eba1, 5); dl = rotl(dl, 10)
- al = fn3(al, bl, cl, dl, el, m[11], 0x6ed9eba1, 12); cl = rotl(cl, 10)
- el = fn3(el, al, bl, cl, dl, m[5], 0x6ed9eba1, 7); bl = rotl(bl, 10)
- dl = fn3(dl, el, al, bl, cl, m[12], 0x6ed9eba1, 5); al = rotl(al, 10)
- // Mj = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
- // K = 0x8f1bbcdc
- // Sj = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12
- cl = fn4(cl, dl, el, al, bl, m[1], 0x8f1bbcdc, 11); el = rotl(el, 10)
- bl = fn4(bl, cl, dl, el, al, m[9], 0x8f1bbcdc, 12); dl = rotl(dl, 10)
- al = fn4(al, bl, cl, dl, el, m[11], 0x8f1bbcdc, 14); cl = rotl(cl, 10)
- el = fn4(el, al, bl, cl, dl, m[10], 0x8f1bbcdc, 15); bl = rotl(bl, 10)
- dl = fn4(dl, el, al, bl, cl, m[0], 0x8f1bbcdc, 14); al = rotl(al, 10)
- cl = fn4(cl, dl, el, al, bl, m[8], 0x8f1bbcdc, 15); el = rotl(el, 10)
- bl = fn4(bl, cl, dl, el, al, m[12], 0x8f1bbcdc, 9); dl = rotl(dl, 10)
- al = fn4(al, bl, cl, dl, el, m[4], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
- el = fn4(el, al, bl, cl, dl, m[13], 0x8f1bbcdc, 9); bl = rotl(bl, 10)
- dl = fn4(dl, el, al, bl, cl, m[3], 0x8f1bbcdc, 14); al = rotl(al, 10)
- cl = fn4(cl, dl, el, al, bl, m[7], 0x8f1bbcdc, 5); el = rotl(el, 10)
- bl = fn4(bl, cl, dl, el, al, m[15], 0x8f1bbcdc, 6); dl = rotl(dl, 10)
- al = fn4(al, bl, cl, dl, el, m[14], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
- el = fn4(el, al, bl, cl, dl, m[5], 0x8f1bbcdc, 6); bl = rotl(bl, 10)
- dl = fn4(dl, el, al, bl, cl, m[6], 0x8f1bbcdc, 5); al = rotl(al, 10)
- cl = fn4(cl, dl, el, al, bl, m[2], 0x8f1bbcdc, 12); el = rotl(el, 10)
- // Mj = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
- // K = 0xa953fd4e
- // Sj = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
- bl = fn5(bl, cl, dl, el, al, m[4], 0xa953fd4e, 9); dl = rotl(dl, 10)
- al = fn5(al, bl, cl, dl, el, m[0], 0xa953fd4e, 15); cl = rotl(cl, 10)
- el = fn5(el, al, bl, cl, dl, m[5], 0xa953fd4e, 5); bl = rotl(bl, 10)
- dl = fn5(dl, el, al, bl, cl, m[9], 0xa953fd4e, 11); al = rotl(al, 10)
- cl = fn5(cl, dl, el, al, bl, m[7], 0xa953fd4e, 6); el = rotl(el, 10)
- bl = fn5(bl, cl, dl, el, al, m[12], 0xa953fd4e, 8); dl = rotl(dl, 10)
- al = fn5(al, bl, cl, dl, el, m[2], 0xa953fd4e, 13); cl = rotl(cl, 10)
- el = fn5(el, al, bl, cl, dl, m[10], 0xa953fd4e, 12); bl = rotl(bl, 10)
- dl = fn5(dl, el, al, bl, cl, m[14], 0xa953fd4e, 5); al = rotl(al, 10)
- cl = fn5(cl, dl, el, al, bl, m[1], 0xa953fd4e, 12); el = rotl(el, 10)
- bl = fn5(bl, cl, dl, el, al, m[3], 0xa953fd4e, 13); dl = rotl(dl, 10)
- al = fn5(al, bl, cl, dl, el, m[8], 0xa953fd4e, 14); cl = rotl(cl, 10)
- el = fn5(el, al, bl, cl, dl, m[11], 0xa953fd4e, 11); bl = rotl(bl, 10)
- dl = fn5(dl, el, al, bl, cl, m[6], 0xa953fd4e, 8); al = rotl(al, 10)
- cl = fn5(cl, dl, el, al, bl, m[15], 0xa953fd4e, 5); el = rotl(el, 10)
- bl = fn5(bl, cl, dl, el, al, m[13], 0xa953fd4e, 6); dl = rotl(dl, 10)
- var ar = this._a
- var br = this._b
- var cr = this._c
- var dr = this._d
- var er = this._e
- // M'j = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12
- // K' = 0x50a28be6
- // S'j = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6
- ar = fn5(ar, br, cr, dr, er, m[5], 0x50a28be6, 8); cr = rotl(cr, 10)
- er = fn5(er, ar, br, cr, dr, m[14], 0x50a28be6, 9); br = rotl(br, 10)
- dr = fn5(dr, er, ar, br, cr, m[7], 0x50a28be6, 9); ar = rotl(ar, 10)
- cr = fn5(cr, dr, er, ar, br, m[0], 0x50a28be6, 11); er = rotl(er, 10)
- br = fn5(br, cr, dr, er, ar, m[9], 0x50a28be6, 13); dr = rotl(dr, 10)
- ar = fn5(ar, br, cr, dr, er, m[2], 0x50a28be6, 15); cr = rotl(cr, 10)
- er = fn5(er, ar, br, cr, dr, m[11], 0x50a28be6, 15); br = rotl(br, 10)
- dr = fn5(dr, er, ar, br, cr, m[4], 0x50a28be6, 5); ar = rotl(ar, 10)
- cr = fn5(cr, dr, er, ar, br, m[13], 0x50a28be6, 7); er = rotl(er, 10)
- br = fn5(br, cr, dr, er, ar, m[6], 0x50a28be6, 7); dr = rotl(dr, 10)
- ar = fn5(ar, br, cr, dr, er, m[15], 0x50a28be6, 8); cr = rotl(cr, 10)
- er = fn5(er, ar, br, cr, dr, m[8], 0x50a28be6, 11); br = rotl(br, 10)
- dr = fn5(dr, er, ar, br, cr, m[1], 0x50a28be6, 14); ar = rotl(ar, 10)
- cr = fn5(cr, dr, er, ar, br, m[10], 0x50a28be6, 14); er = rotl(er, 10)
- br = fn5(br, cr, dr, er, ar, m[3], 0x50a28be6, 12); dr = rotl(dr, 10)
- ar = fn5(ar, br, cr, dr, er, m[12], 0x50a28be6, 6); cr = rotl(cr, 10)
- // M'j = 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2
- // K' = 0x5c4dd124
- // S'j = 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11
- er = fn4(er, ar, br, cr, dr, m[6], 0x5c4dd124, 9); br = rotl(br, 10)
- dr = fn4(dr, er, ar, br, cr, m[11], 0x5c4dd124, 13); ar = rotl(ar, 10)
- cr = fn4(cr, dr, er, ar, br, m[3], 0x5c4dd124, 15); er = rotl(er, 10)
- br = fn4(br, cr, dr, er, ar, m[7], 0x5c4dd124, 7); dr = rotl(dr, 10)
- ar = fn4(ar, br, cr, dr, er, m[0], 0x5c4dd124, 12); cr = rotl(cr, 10)
- er = fn4(er, ar, br, cr, dr, m[13], 0x5c4dd124, 8); br = rotl(br, 10)
- dr = fn4(dr, er, ar, br, cr, m[5], 0x5c4dd124, 9); ar = rotl(ar, 10)
- cr = fn4(cr, dr, er, ar, br, m[10], 0x5c4dd124, 11); er = rotl(er, 10)
- br = fn4(br, cr, dr, er, ar, m[14], 0x5c4dd124, 7); dr = rotl(dr, 10)
- ar = fn4(ar, br, cr, dr, er, m[15], 0x5c4dd124, 7); cr = rotl(cr, 10)
- er = fn4(er, ar, br, cr, dr, m[8], 0x5c4dd124, 12); br = rotl(br, 10)
- dr = fn4(dr, er, ar, br, cr, m[12], 0x5c4dd124, 7); ar = rotl(ar, 10)
- cr = fn4(cr, dr, er, ar, br, m[4], 0x5c4dd124, 6); er = rotl(er, 10)
- br = fn4(br, cr, dr, er, ar, m[9], 0x5c4dd124, 15); dr = rotl(dr, 10)
- ar = fn4(ar, br, cr, dr, er, m[1], 0x5c4dd124, 13); cr = rotl(cr, 10)
- er = fn4(er, ar, br, cr, dr, m[2], 0x5c4dd124, 11); br = rotl(br, 10)
- // M'j = 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13
- // K' = 0x6d703ef3
- // S'j = 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5
- dr = fn3(dr, er, ar, br, cr, m[15], 0x6d703ef3, 9); ar = rotl(ar, 10)
- cr = fn3(cr, dr, er, ar, br, m[5], 0x6d703ef3, 7); er = rotl(er, 10)
- br = fn3(br, cr, dr, er, ar, m[1], 0x6d703ef3, 15); dr = rotl(dr, 10)
- ar = fn3(ar, br, cr, dr, er, m[3], 0x6d703ef3, 11); cr = rotl(cr, 10)
- er = fn3(er, ar, br, cr, dr, m[7], 0x6d703ef3, 8); br = rotl(br, 10)
- dr = fn3(dr, er, ar, br, cr, m[14], 0x6d703ef3, 6); ar = rotl(ar, 10)
- cr = fn3(cr, dr, er, ar, br, m[6], 0x6d703ef3, 6); er = rotl(er, 10)
- br = fn3(br, cr, dr, er, ar, m[9], 0x6d703ef3, 14); dr = rotl(dr, 10)
- ar = fn3(ar, br, cr, dr, er, m[11], 0x6d703ef3, 12); cr = rotl(cr, 10)
- er = fn3(er, ar, br, cr, dr, m[8], 0x6d703ef3, 13); br = rotl(br, 10)
- dr = fn3(dr, er, ar, br, cr, m[12], 0x6d703ef3, 5); ar = rotl(ar, 10)
- cr = fn3(cr, dr, er, ar, br, m[2], 0x6d703ef3, 14); er = rotl(er, 10)
- br = fn3(br, cr, dr, er, ar, m[10], 0x6d703ef3, 13); dr = rotl(dr, 10)
- ar = fn3(ar, br, cr, dr, er, m[0], 0x6d703ef3, 13); cr = rotl(cr, 10)
- er = fn3(er, ar, br, cr, dr, m[4], 0x6d703ef3, 7); br = rotl(br, 10)
- dr = fn3(dr, er, ar, br, cr, m[13], 0x6d703ef3, 5); ar = rotl(ar, 10)
- // M'j = 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14
- // K' = 0x7a6d76e9
- // S'j = 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8
- cr = fn2(cr, dr, er, ar, br, m[8], 0x7a6d76e9, 15); er = rotl(er, 10)
- br = fn2(br, cr, dr, er, ar, m[6], 0x7a6d76e9, 5); dr = rotl(dr, 10)
- ar = fn2(ar, br, cr, dr, er, m[4], 0x7a6d76e9, 8); cr = rotl(cr, 10)
- er = fn2(er, ar, br, cr, dr, m[1], 0x7a6d76e9, 11); br = rotl(br, 10)
- dr = fn2(dr, er, ar, br, cr, m[3], 0x7a6d76e9, 14); ar = rotl(ar, 10)
- cr = fn2(cr, dr, er, ar, br, m[11], 0x7a6d76e9, 14); er = rotl(er, 10)
- br = fn2(br, cr, dr, er, ar, m[15], 0x7a6d76e9, 6); dr = rotl(dr, 10)
- ar = fn2(ar, br, cr, dr, er, m[0], 0x7a6d76e9, 14); cr = rotl(cr, 10)
- er = fn2(er, ar, br, cr, dr, m[5], 0x7a6d76e9, 6); br = rotl(br, 10)
- dr = fn2(dr, er, ar, br, cr, m[12], 0x7a6d76e9, 9); ar = rotl(ar, 10)
- cr = fn2(cr, dr, er, ar, br, m[2], 0x7a6d76e9, 12); er = rotl(er, 10)
- br = fn2(br, cr, dr, er, ar, m[13], 0x7a6d76e9, 9); dr = rotl(dr, 10)
- ar = fn2(ar, br, cr, dr, er, m[9], 0x7a6d76e9, 12); cr = rotl(cr, 10)
- er = fn2(er, ar, br, cr, dr, m[7], 0x7a6d76e9, 5); br = rotl(br, 10)
- dr = fn2(dr, er, ar, br, cr, m[10], 0x7a6d76e9, 15); ar = rotl(ar, 10)
- cr = fn2(cr, dr, er, ar, br, m[14], 0x7a6d76e9, 8); er = rotl(er, 10)
- // M'j = 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
- // K' = 0x00000000
- // S'j = 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
- br = fn1(br, cr, dr, er, ar, m[12], 0x00000000, 8); dr = rotl(dr, 10)
- ar = fn1(ar, br, cr, dr, er, m[15], 0x00000000, 5); cr = rotl(cr, 10)
- er = fn1(er, ar, br, cr, dr, m[10], 0x00000000, 12); br = rotl(br, 10)
- dr = fn1(dr, er, ar, br, cr, m[4], 0x00000000, 9); ar = rotl(ar, 10)
- cr = fn1(cr, dr, er, ar, br, m[1], 0x00000000, 12); er = rotl(er, 10)
- br = fn1(br, cr, dr, er, ar, m[5], 0x00000000, 5); dr = rotl(dr, 10)
- ar = fn1(ar, br, cr, dr, er, m[8], 0x00000000, 14); cr = rotl(cr, 10)
- er = fn1(er, ar, br, cr, dr, m[7], 0x00000000, 6); br = rotl(br, 10)
- dr = fn1(dr, er, ar, br, cr, m[6], 0x00000000, 8); ar = rotl(ar, 10)
- cr = fn1(cr, dr, er, ar, br, m[2], 0x00000000, 13); er = rotl(er, 10)
- br = fn1(br, cr, dr, er, ar, m[13], 0x00000000, 6); dr = rotl(dr, 10)
- ar = fn1(ar, br, cr, dr, er, m[14], 0x00000000, 5); cr = rotl(cr, 10)
- er = fn1(er, ar, br, cr, dr, m[0], 0x00000000, 15); br = rotl(br, 10)
- dr = fn1(dr, er, ar, br, cr, m[3], 0x00000000, 13); ar = rotl(ar, 10)
- cr = fn1(cr, dr, er, ar, br, m[9], 0x00000000, 11); er = rotl(er, 10)
- br = fn1(br, cr, dr, er, ar, m[11], 0x00000000, 11); dr = rotl(dr, 10)
- // change state
- var t = (this._b + cl + dr) | 0
- this._b = (this._c + dl + er) | 0
- this._c = (this._d + el + ar) | 0
- this._d = (this._e + al + br) | 0
- this._e = (this._a + bl + cr) | 0
- this._a = t
- }
- RIPEMD160.prototype._digest = function () {
- // create padding and handle blocks
- this._block[this._blockOffset++] = 0x80
- if (this._blockOffset > 56) {
- this._block.fill(0, this._blockOffset, 64)
- this._update()
- this._blockOffset = 0
- }
- this._block.fill(0, this._blockOffset, 56)
- this._block.writeUInt32LE(this._length[0], 56)
- this._block.writeUInt32LE(this._length[1], 60)
- this._update()
- // produce result
- var buffer = new Buffer(20)
- buffer.writeInt32LE(this._a, 0)
- buffer.writeInt32LE(this._b, 4)
- buffer.writeInt32LE(this._c, 8)
- buffer.writeInt32LE(this._d, 12)
- buffer.writeInt32LE(this._e, 16)
- return buffer
- }
- function rotl (x, n) {
- return (x << n) | (x >>> (32 - n))
- }
- function fn1 (a, b, c, d, e, m, k, s) {
- return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0
- }
- function fn2 (a, b, c, d, e, m, k, s) {
- return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0
- }
- function fn3 (a, b, c, d, e, m, k, s) {
- return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0
- }
- function fn4 (a, b, c, d, e, m, k, s) {
- return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0
- }
- function fn5 (a, b, c, d, e, m, k, s) {
- return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0
- }
- module.exports = RIPEMD160
- }).call(this,require("buffer").Buffer)
- },{"buffer":54,"hash-base":92,"inherits":108}],148:[function(require,module,exports){
- /* eslint-disable node/no-deprecated-api */
- var buffer = require('buffer')
- var Buffer = buffer.Buffer
- // alternative to using Object.keys for old browsers
- function copyProps (src, dst) {
- for (var key in src) {
- dst[key] = src[key]
- }
- }
- if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
- module.exports = buffer
- } else {
- // Copy properties from require('buffer')
- copyProps(buffer, exports)
- exports.Buffer = SafeBuffer
- }
- function SafeBuffer (arg, encodingOrOffset, length) {
- return Buffer(arg, encodingOrOffset, length)
- }
- // Copy static methods from Buffer
- copyProps(Buffer, SafeBuffer)
- SafeBuffer.from = function (arg, encodingOrOffset, length) {
- if (typeof arg === 'number') {
- throw new TypeError('Argument must not be a number')
- }
- return Buffer(arg, encodingOrOffset, length)
- }
- SafeBuffer.alloc = function (size, fill, encoding) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
- }
- var buf = Buffer(size)
- if (fill !== undefined) {
- if (typeof encoding === 'string') {
- buf.fill(fill, encoding)
- } else {
- buf.fill(fill)
- }
- } else {
- buf.fill(0)
- }
- return buf
- }
- SafeBuffer.allocUnsafe = function (size) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
- }
- return Buffer(size)
- }
- SafeBuffer.allocUnsafeSlow = function (size) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
- }
- return buffer.SlowBuffer(size)
- }
- },{"buffer":54}],149:[function(require,module,exports){
- (function (Buffer){
- // prototype class for hash functions
- function Hash (blockSize, finalSize) {
- this._block = new Buffer(blockSize)
- this._finalSize = finalSize
- this._blockSize = blockSize
- this._len = 0
- this._s = 0
- }
- Hash.prototype.update = function (data, enc) {
- if (typeof data === 'string') {
- enc = enc || 'utf8'
- data = new Buffer(data, enc)
- }
- var l = this._len += data.length
- var s = this._s || 0
- var f = 0
- var buffer = this._block
- while (s < l) {
- var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
- var ch = (t - f)
- for (var i = 0; i < ch; i++) {
- buffer[(s % this._blockSize) + i] = data[i + f]
- }
- s += ch
- f += ch
- if ((s % this._blockSize) === 0) {
- this._update(buffer)
- }
- }
- this._s = s
- return this
- }
- Hash.prototype.digest = function (enc) {
- // Suppose the length of the message M, in bits, is l
- var l = this._len * 8
- // Append the bit 1 to the end of the message
- this._block[this._len % this._blockSize] = 0x80
- // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
- this._block.fill(0, this._len % this._blockSize + 1)
- if (l % (this._blockSize * 8) >= this._finalSize * 8) {
- this._update(this._block)
- this._block.fill(0)
- }
- // to this append the block which is equal to the number l written in binary
- // TODO: handle case where l is > Math.pow(2, 29)
- this._block.writeInt32BE(l, this._blockSize - 4)
- var hash = this._update(this._block) || this._hash()
- return enc ? hash.toString(enc) : hash
- }
- Hash.prototype._update = function () {
- throw new Error('_update must be implemented by subclass')
- }
- module.exports = Hash
- }).call(this,require("buffer").Buffer)
- },{"buffer":54}],150:[function(require,module,exports){
- var exports = module.exports = function SHA (algorithm) {
- algorithm = algorithm.toLowerCase()
- var Algorithm = exports[algorithm]
- if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
- return new Algorithm()
- }
- exports.sha = require('./sha')
- exports.sha1 = require('./sha1')
- exports.sha224 = require('./sha224')
- exports.sha256 = require('./sha256')
- exports.sha384 = require('./sha384')
- exports.sha512 = require('./sha512')
- },{"./sha":151,"./sha1":152,"./sha224":153,"./sha256":154,"./sha384":155,"./sha512":156}],151:[function(require,module,exports){
- (function (Buffer){
- /*
- * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
- * in FIPS PUB 180-1
- * This source code is derived from sha1.js of the same repository.
- * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
- * operation was added.
- */
- var inherits = require('inherits')
- var Hash = require('./hash')
- var K = [
- 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
- ]
- var W = new Array(80)
- function Sha () {
- this.init()
- this._w = W
- Hash.call(this, 64, 56)
- }
- inherits(Sha, Hash)
- Sha.prototype.init = function () {
- this._a = 0x67452301
- this._b = 0xefcdab89
- this._c = 0x98badcfe
- this._d = 0x10325476
- this._e = 0xc3d2e1f0
- return this
- }
- function rotl5 (num) {
- return (num << 5) | (num >>> 27)
- }
- function rotl30 (num) {
- return (num << 30) | (num >>> 2)
- }
- function ft (s, b, c, d) {
- if (s === 0) return (b & c) | ((~b) & d)
- if (s === 2) return (b & c) | (b & d) | (c & d)
- return b ^ c ^ d
- }
- Sha.prototype._update = function (M) {
- var W = this._w
- var a = this._a | 0
- var b = this._b | 0
- var c = this._c | 0
- var d = this._d | 0
- var e = this._e | 0
- for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
- for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
- for (var j = 0; j < 80; ++j) {
- var s = ~~(j / 20)
- var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
- e = d
- d = c
- c = rotl30(b)
- b = a
- a = t
- }
- this._a = (a + this._a) | 0
- this._b = (b + this._b) | 0
- this._c = (c + this._c) | 0
- this._d = (d + this._d) | 0
- this._e = (e + this._e) | 0
- }
- Sha.prototype._hash = function () {
- var H = new Buffer(20)
- H.writeInt32BE(this._a | 0, 0)
- H.writeInt32BE(this._b | 0, 4)
- H.writeInt32BE(this._c | 0, 8)
- H.writeInt32BE(this._d | 0, 12)
- H.writeInt32BE(this._e | 0, 16)
- return H
- }
- module.exports = Sha
- }).call(this,require("buffer").Buffer)
- },{"./hash":149,"buffer":54,"inherits":108}],152:[function(require,module,exports){
- (function (Buffer){
- /*
- * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
- * in FIPS PUB 180-1
- * Version 2.1a Copyright Paul Johnston 2000 - 2002.
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * Distributed under the BSD License
- * See http://pajhome.org.uk/crypt/md5 for details.
- */
- var inherits = require('inherits')
- var Hash = require('./hash')
- var K = [
- 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
- ]
- var W = new Array(80)
- function Sha1 () {
- this.init()
- this._w = W
- Hash.call(this, 64, 56)
- }
- inherits(Sha1, Hash)
- Sha1.prototype.init = function () {
- this._a = 0x67452301
- this._b = 0xefcdab89
- this._c = 0x98badcfe
- this._d = 0x10325476
- this._e = 0xc3d2e1f0
- return this
- }
- function rotl1 (num) {
- return (num << 1) | (num >>> 31)
- }
- function rotl5 (num) {
- return (num << 5) | (num >>> 27)
- }
- function rotl30 (num) {
- return (num << 30) | (num >>> 2)
- }
- function ft (s, b, c, d) {
- if (s === 0) return (b & c) | ((~b) & d)
- if (s === 2) return (b & c) | (b & d) | (c & d)
- return b ^ c ^ d
- }
- Sha1.prototype._update = function (M) {
- var W = this._w
- var a = this._a | 0
- var b = this._b | 0
- var c = this._c | 0
- var d = this._d | 0
- var e = this._e | 0
- for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
- for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
- for (var j = 0; j < 80; ++j) {
- var s = ~~(j / 20)
- var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
- e = d
- d = c
- c = rotl30(b)
- b = a
- a = t
- }
- this._a = (a + this._a) | 0
- this._b = (b + this._b) | 0
- this._c = (c + this._c) | 0
- this._d = (d + this._d) | 0
- this._e = (e + this._e) | 0
- }
- Sha1.prototype._hash = function () {
- var H = new Buffer(20)
- H.writeInt32BE(this._a | 0, 0)
- H.writeInt32BE(this._b | 0, 4)
- H.writeInt32BE(this._c | 0, 8)
- H.writeInt32BE(this._d | 0, 12)
- H.writeInt32BE(this._e | 0, 16)
- return H
- }
- module.exports = Sha1
- }).call(this,require("buffer").Buffer)
- },{"./hash":149,"buffer":54,"inherits":108}],153:[function(require,module,exports){
- (function (Buffer){
- /**
- * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
- * in FIPS 180-2
- * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- *
- */
- var inherits = require('inherits')
- var Sha256 = require('./sha256')
- var Hash = require('./hash')
- var W = new Array(64)
- function Sha224 () {
- this.init()
- this._w = W // new Array(64)
- Hash.call(this, 64, 56)
- }
- inherits(Sha224, Sha256)
- Sha224.prototype.init = function () {
- this._a = 0xc1059ed8
- this._b = 0x367cd507
- this._c = 0x3070dd17
- this._d = 0xf70e5939
- this._e = 0xffc00b31
- this._f = 0x68581511
- this._g = 0x64f98fa7
- this._h = 0xbefa4fa4
- return this
- }
- Sha224.prototype._hash = function () {
- var H = new Buffer(28)
- H.writeInt32BE(this._a, 0)
- H.writeInt32BE(this._b, 4)
- H.writeInt32BE(this._c, 8)
- H.writeInt32BE(this._d, 12)
- H.writeInt32BE(this._e, 16)
- H.writeInt32BE(this._f, 20)
- H.writeInt32BE(this._g, 24)
- return H
- }
- module.exports = Sha224
- }).call(this,require("buffer").Buffer)
- },{"./hash":149,"./sha256":154,"buffer":54,"inherits":108}],154:[function(require,module,exports){
- (function (Buffer){
- /**
- * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
- * in FIPS 180-2
- * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- *
- */
- var inherits = require('inherits')
- var Hash = require('./hash')
- var K = [
- 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
- 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
- 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
- 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
- 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
- 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
- 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
- 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
- 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
- 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
- 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
- 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
- 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
- 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
- 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
- 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
- ]
- var W = new Array(64)
- function Sha256 () {
- this.init()
- this._w = W // new Array(64)
- Hash.call(this, 64, 56)
- }
- inherits(Sha256, Hash)
- Sha256.prototype.init = function () {
- this._a = 0x6a09e667
- this._b = 0xbb67ae85
- this._c = 0x3c6ef372
- this._d = 0xa54ff53a
- this._e = 0x510e527f
- this._f = 0x9b05688c
- this._g = 0x1f83d9ab
- this._h = 0x5be0cd19
- return this
- }
- function ch (x, y, z) {
- return z ^ (x & (y ^ z))
- }
- function maj (x, y, z) {
- return (x & y) | (z & (x | y))
- }
- function sigma0 (x) {
- return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
- }
- function sigma1 (x) {
- return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
- }
- function gamma0 (x) {
- return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
- }
- function gamma1 (x) {
- return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
- }
- Sha256.prototype._update = function (M) {
- var W = this._w
- var a = this._a | 0
- var b = this._b | 0
- var c = this._c | 0
- var d = this._d | 0
- var e = this._e | 0
- var f = this._f | 0
- var g = this._g | 0
- var h = this._h | 0
- for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
- for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
- for (var j = 0; j < 64; ++j) {
- var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
- var T2 = (sigma0(a) + maj(a, b, c)) | 0
- h = g
- g = f
- f = e
- e = (d + T1) | 0
- d = c
- c = b
- b = a
- a = (T1 + T2) | 0
- }
- this._a = (a + this._a) | 0
- this._b = (b + this._b) | 0
- this._c = (c + this._c) | 0
- this._d = (d + this._d) | 0
- this._e = (e + this._e) | 0
- this._f = (f + this._f) | 0
- this._g = (g + this._g) | 0
- this._h = (h + this._h) | 0
- }
- Sha256.prototype._hash = function () {
- var H = new Buffer(32)
- H.writeInt32BE(this._a, 0)
- H.writeInt32BE(this._b, 4)
- H.writeInt32BE(this._c, 8)
- H.writeInt32BE(this._d, 12)
- H.writeInt32BE(this._e, 16)
- H.writeInt32BE(this._f, 20)
- H.writeInt32BE(this._g, 24)
- H.writeInt32BE(this._h, 28)
- return H
- }
- module.exports = Sha256
- }).call(this,require("buffer").Buffer)
- },{"./hash":149,"buffer":54,"inherits":108}],155:[function(require,module,exports){
- (function (Buffer){
- var inherits = require('inherits')
- var SHA512 = require('./sha512')
- var Hash = require('./hash')
- var W = new Array(160)
- function Sha384 () {
- this.init()
- this._w = W
- Hash.call(this, 128, 112)
- }
- inherits(Sha384, SHA512)
- Sha384.prototype.init = function () {
- this._ah = 0xcbbb9d5d
- this._bh = 0x629a292a
- this._ch = 0x9159015a
- this._dh = 0x152fecd8
- this._eh = 0x67332667
- this._fh = 0x8eb44a87
- this._gh = 0xdb0c2e0d
- this._hh = 0x47b5481d
- this._al = 0xc1059ed8
- this._bl = 0x367cd507
- this._cl = 0x3070dd17
- this._dl = 0xf70e5939
- this._el = 0xffc00b31
- this._fl = 0x68581511
- this._gl = 0x64f98fa7
- this._hl = 0xbefa4fa4
- return this
- }
- Sha384.prototype._hash = function () {
- var H = new Buffer(48)
- function writeInt64BE (h, l, offset) {
- H.writeInt32BE(h, offset)
- H.writeInt32BE(l, offset + 4)
- }
- writeInt64BE(this._ah, this._al, 0)
- writeInt64BE(this._bh, this._bl, 8)
- writeInt64BE(this._ch, this._cl, 16)
- writeInt64BE(this._dh, this._dl, 24)
- writeInt64BE(this._eh, this._el, 32)
- writeInt64BE(this._fh, this._fl, 40)
- return H
- }
- module.exports = Sha384
- }).call(this,require("buffer").Buffer)
- },{"./hash":149,"./sha512":156,"buffer":54,"inherits":108}],156:[function(require,module,exports){
- (function (Buffer){
- var inherits = require('inherits')
- var Hash = require('./hash')
- var K = [
- 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
- 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
- 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
- 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
- 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
- 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
- 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
- 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
- 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
- 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
- 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
- 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
- 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
- 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
- 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
- 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
- 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
- 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
- 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
- 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
- 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
- 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
- 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
- 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
- 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
- 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
- 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
- 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
- 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
- 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
- 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
- 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
- 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
- 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
- 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
- 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
- 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
- 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
- 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
- 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
- ]
- var W = new Array(160)
- function Sha512 () {
- this.init()
- this._w = W
- Hash.call(this, 128, 112)
- }
- inherits(Sha512, Hash)
- Sha512.prototype.init = function () {
- this._ah = 0x6a09e667
- this._bh = 0xbb67ae85
- this._ch = 0x3c6ef372
- this._dh = 0xa54ff53a
- this._eh = 0x510e527f
- this._fh = 0x9b05688c
- this._gh = 0x1f83d9ab
- this._hh = 0x5be0cd19
- this._al = 0xf3bcc908
- this._bl = 0x84caa73b
- this._cl = 0xfe94f82b
- this._dl = 0x5f1d36f1
- this._el = 0xade682d1
- this._fl = 0x2b3e6c1f
- this._gl = 0xfb41bd6b
- this._hl = 0x137e2179
- return this
- }
- function Ch (x, y, z) {
- return z ^ (x & (y ^ z))
- }
- function maj (x, y, z) {
- return (x & y) | (z & (x | y))
- }
- function sigma0 (x, xl) {
- return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
- }
- function sigma1 (x, xl) {
- return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
- }
- function Gamma0 (x, xl) {
- return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
- }
- function Gamma0l (x, xl) {
- return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
- }
- function Gamma1 (x, xl) {
- return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
- }
- function Gamma1l (x, xl) {
- return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
- }
- function getCarry (a, b) {
- return (a >>> 0) < (b >>> 0) ? 1 : 0
- }
- Sha512.prototype._update = function (M) {
- var W = this._w
- var ah = this._ah | 0
- var bh = this._bh | 0
- var ch = this._ch | 0
- var dh = this._dh | 0
- var eh = this._eh | 0
- var fh = this._fh | 0
- var gh = this._gh | 0
- var hh = this._hh | 0
- var al = this._al | 0
- var bl = this._bl | 0
- var cl = this._cl | 0
- var dl = this._dl | 0
- var el = this._el | 0
- var fl = this._fl | 0
- var gl = this._gl | 0
- var hl = this._hl | 0
- for (var i = 0; i < 32; i += 2) {
- W[i] = M.readInt32BE(i * 4)
- W[i + 1] = M.readInt32BE(i * 4 + 4)
- }
- for (; i < 160; i += 2) {
- var xh = W[i - 15 * 2]
- var xl = W[i - 15 * 2 + 1]
- var gamma0 = Gamma0(xh, xl)
- var gamma0l = Gamma0l(xl, xh)
- xh = W[i - 2 * 2]
- xl = W[i - 2 * 2 + 1]
- var gamma1 = Gamma1(xh, xl)
- var gamma1l = Gamma1l(xl, xh)
- // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
- var Wi7h = W[i - 7 * 2]
- var Wi7l = W[i - 7 * 2 + 1]
- var Wi16h = W[i - 16 * 2]
- var Wi16l = W[i - 16 * 2 + 1]
- var Wil = (gamma0l + Wi7l) | 0
- var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
- Wil = (Wil + gamma1l) | 0
- Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
- Wil = (Wil + Wi16l) | 0
- Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
- W[i] = Wih
- W[i + 1] = Wil
- }
- for (var j = 0; j < 160; j += 2) {
- Wih = W[j]
- Wil = W[j + 1]
- var majh = maj(ah, bh, ch)
- var majl = maj(al, bl, cl)
- var sigma0h = sigma0(ah, al)
- var sigma0l = sigma0(al, ah)
- var sigma1h = sigma1(eh, el)
- var sigma1l = sigma1(el, eh)
- // t1 = h + sigma1 + ch + K[j] + W[j]
- var Kih = K[j]
- var Kil = K[j + 1]
- var chh = Ch(eh, fh, gh)
- var chl = Ch(el, fl, gl)
- var t1l = (hl + sigma1l) | 0
- var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
- t1l = (t1l + chl) | 0
- t1h = (t1h + chh + getCarry(t1l, chl)) | 0
- t1l = (t1l + Kil) | 0
- t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
- t1l = (t1l + Wil) | 0
- t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
- // t2 = sigma0 + maj
- var t2l = (sigma0l + majl) | 0
- var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
- hh = gh
- hl = gl
- gh = fh
- gl = fl
- fh = eh
- fl = el
- el = (dl + t1l) | 0
- eh = (dh + t1h + getCarry(el, dl)) | 0
- dh = ch
- dl = cl
- ch = bh
- cl = bl
- bh = ah
- bl = al
- al = (t1l + t2l) | 0
- ah = (t1h + t2h + getCarry(al, t1l)) | 0
- }
- this._al = (this._al + al) | 0
- this._bl = (this._bl + bl) | 0
- this._cl = (this._cl + cl) | 0
- this._dl = (this._dl + dl) | 0
- this._el = (this._el + el) | 0
- this._fl = (this._fl + fl) | 0
- this._gl = (this._gl + gl) | 0
- this._hl = (this._hl + hl) | 0
- this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
- this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
- this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
- this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
- this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
- this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
- this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
- this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
- }
- Sha512.prototype._hash = function () {
- var H = new Buffer(64)
- function writeInt64BE (h, l, offset) {
- H.writeInt32BE(h, offset)
- H.writeInt32BE(l, offset + 4)
- }
- writeInt64BE(this._ah, this._al, 0)
- writeInt64BE(this._bh, this._bl, 8)
- writeInt64BE(this._ch, this._cl, 16)
- writeInt64BE(this._dh, this._dl, 24)
- writeInt64BE(this._eh, this._el, 32)
- writeInt64BE(this._fh, this._fl, 40)
- writeInt64BE(this._gh, this._gl, 48)
- writeInt64BE(this._hh, this._hl, 56)
- return H
- }
- module.exports = Sha512
- }).call(this,require("buffer").Buffer)
- },{"./hash":149,"buffer":54,"inherits":108}],157:[function(require,module,exports){
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- module.exports = Stream;
- var EE = require('events').EventEmitter;
- var inherits = require('inherits');
- inherits(Stream, EE);
- Stream.Readable = require('readable-stream/readable.js');
- Stream.Writable = require('readable-stream/writable.js');
- Stream.Duplex = require('readable-stream/duplex.js');
- Stream.Transform = require('readable-stream/transform.js');
- Stream.PassThrough = require('readable-stream/passthrough.js');
- // Backwards-compat with node 0.4.x
- Stream.Stream = Stream;
- // old-style streams. Note that the pipe method (the only relevant
- // part of this class) is overridden in the Readable class.
- function Stream() {
- EE.call(this);
- }
- Stream.prototype.pipe = function(dest, options) {
- var source = this;
- function ondata(chunk) {
- if (dest.writable) {
- if (false === dest.write(chunk) && source.pause) {
- source.pause();
- }
- }
- }
- source.on('data', ondata);
- function ondrain() {
- if (source.readable && source.resume) {
- source.resume();
- }
- }
- dest.on('drain', ondrain);
- // If the 'end' option is not supplied, dest.end() will be called when
- // source gets the 'end' or 'close' events. Only dest.end() once.
- if (!dest._isStdio && (!options || options.end !== false)) {
- source.on('end', onend);
- source.on('close', onclose);
- }
- var didOnEnd = false;
- function onend() {
- if (didOnEnd) return;
- didOnEnd = true;
- dest.end();
- }
- function onclose() {
- if (didOnEnd) return;
- didOnEnd = true;
- if (typeof dest.destroy === 'function') dest.destroy();
- }
- // don't leave dangling pipes when there are errors.
- function onerror(er) {
- cleanup();
- if (EE.listenerCount(this, 'error') === 0) {
- throw er; // Unhandled stream error in pipe.
- }
- }
- source.on('error', onerror);
- dest.on('error', onerror);
- // remove all the event listeners that were added.
- function cleanup() {
- source.removeListener('data', ondata);
- dest.removeListener('drain', ondrain);
- source.removeListener('end', onend);
- source.removeListener('close', onclose);
- source.removeListener('error', onerror);
- dest.removeListener('error', onerror);
- source.removeListener('end', cleanup);
- source.removeListener('close', cleanup);
- dest.removeListener('close', cleanup);
- }
- source.on('end', cleanup);
- source.on('close', cleanup);
- dest.on('close', cleanup);
- dest.emit('pipe', source);
- // Allow for unix-like usage: A.pipe(B).pipe(C)
- return dest;
- };
- },{"events":90,"inherits":108,"readable-stream/duplex.js":134,"readable-stream/passthrough.js":143,"readable-stream/readable.js":144,"readable-stream/transform.js":145,"readable-stream/writable.js":146}],158:[function(require,module,exports){
- 'use strict';
- var Buffer = require('safe-buffer').Buffer;
- var isEncoding = Buffer.isEncoding || function (encoding) {
- encoding = '' + encoding;
- switch (encoding && encoding.toLowerCase()) {
- case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
- return true;
- default:
- return false;
- }
- };
- function _normalizeEncoding(enc) {
- if (!enc) return 'utf8';
- var retried;
- while (true) {
- switch (enc) {
- case 'utf8':
- case 'utf-8':
- return 'utf8';
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return 'utf16le';
- case 'latin1':
- case 'binary':
- return 'latin1';
- case 'base64':
- case 'ascii':
- case 'hex':
- return enc;
- default:
- if (retried) return; // undefined
- enc = ('' + enc).toLowerCase();
- retried = true;
- }
- }
- };
- // Do not cache `Buffer.isEncoding` when checking encoding names as some
- // modules monkey-patch it to support additional encodings
- function normalizeEncoding(enc) {
- var nenc = _normalizeEncoding(enc);
- if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
- return nenc || enc;
- }
- // StringDecoder provides an interface for efficiently splitting a series of
- // buffers into a series of JS strings without breaking apart multi-byte
- // characters.
- exports.StringDecoder = StringDecoder;
- function StringDecoder(encoding) {
- this.encoding = normalizeEncoding(encoding);
- var nb;
- switch (this.encoding) {
- case 'utf16le':
- this.text = utf16Text;
- this.end = utf16End;
- nb = 4;
- break;
- case 'utf8':
- this.fillLast = utf8FillLast;
- nb = 4;
- break;
- case 'base64':
- this.text = base64Text;
- this.end = base64End;
- nb = 3;
- break;
- default:
- this.write = simpleWrite;
- this.end = simpleEnd;
- return;
- }
- this.lastNeed = 0;
- this.lastTotal = 0;
- this.lastChar = Buffer.allocUnsafe(nb);
- }
- StringDecoder.prototype.write = function (buf) {
- if (buf.length === 0) return '';
- var r;
- var i;
- if (this.lastNeed) {
- r = this.fillLast(buf);
- if (r === undefined) return '';
- i = this.lastNeed;
- this.lastNeed = 0;
- } else {
- i = 0;
- }
- if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
- return r || '';
- };
- StringDecoder.prototype.end = utf8End;
- // Returns only complete characters in a Buffer
- StringDecoder.prototype.text = utf8Text;
- // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
- StringDecoder.prototype.fillLast = function (buf) {
- if (this.lastNeed <= buf.length) {
- buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
- return this.lastChar.toString(this.encoding, 0, this.lastTotal);
- }
- buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
- this.lastNeed -= buf.length;
- };
- // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
- // continuation byte.
- function utf8CheckByte(byte) {
- if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
- return -1;
- }
- // Checks at most 3 bytes at the end of a Buffer in order to detect an
- // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
- // needed to complete the UTF-8 character (if applicable) are returned.
- function utf8CheckIncomplete(self, buf, i) {
- var j = buf.length - 1;
- if (j < i) return 0;
- var nb = utf8CheckByte(buf[j]);
- if (nb >= 0) {
- if (nb > 0) self.lastNeed = nb - 1;
- return nb;
- }
- if (--j < i) return 0;
- nb = utf8CheckByte(buf[j]);
- if (nb >= 0) {
- if (nb > 0) self.lastNeed = nb - 2;
- return nb;
- }
- if (--j < i) return 0;
- nb = utf8CheckByte(buf[j]);
- if (nb >= 0) {
- if (nb > 0) {
- if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
- }
- return nb;
- }
- return 0;
- }
- // Validates as many continuation bytes for a multi-byte UTF-8 character as
- // needed or are available. If we see a non-continuation byte where we expect
- // one, we "replace" the validated continuation bytes we've seen so far with
- // UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
- // behavior. The continuation byte check is included three times in the case
- // where all of the continuation bytes for a character exist in the same buffer.
- // It is also done this way as a slight performance increase instead of using a
- // loop.
- function utf8CheckExtraBytes(self, buf, p) {
- if ((buf[0] & 0xC0) !== 0x80) {
- self.lastNeed = 0;
- return '\ufffd'.repeat(p);
- }
- if (self.lastNeed > 1 && buf.length > 1) {
- if ((buf[1] & 0xC0) !== 0x80) {
- self.lastNeed = 1;
- return '\ufffd'.repeat(p + 1);
- }
- if (self.lastNeed > 2 && buf.length > 2) {
- if ((buf[2] & 0xC0) !== 0x80) {
- self.lastNeed = 2;
- return '\ufffd'.repeat(p + 2);
- }
- }
- }
- }
- // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
- function utf8FillLast(buf) {
- var p = this.lastTotal - this.lastNeed;
- var r = utf8CheckExtraBytes(this, buf, p);
- if (r !== undefined) return r;
- if (this.lastNeed <= buf.length) {
- buf.copy(this.lastChar, p, 0, this.lastNeed);
- return this.lastChar.toString(this.encoding, 0, this.lastTotal);
- }
- buf.copy(this.lastChar, p, 0, buf.length);
- this.lastNeed -= buf.length;
- }
- // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
- // partial character, the character's bytes are buffered until the required
- // number of bytes are available.
- function utf8Text(buf, i) {
- var total = utf8CheckIncomplete(this, buf, i);
- if (!this.lastNeed) return buf.toString('utf8', i);
- this.lastTotal = total;
- var end = buf.length - (total - this.lastNeed);
- buf.copy(this.lastChar, 0, end);
- return buf.toString('utf8', i, end);
- }
- // For UTF-8, a replacement character for each buffered byte of a (partial)
- // character needs to be added to the output.
- function utf8End(buf) {
- var r = buf && buf.length ? this.write(buf) : '';
- if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
- return r;
- }
- // UTF-16LE typically needs two bytes per character, but even if we have an even
- // number of bytes available, we need to check if we end on a leading/high
- // surrogate. In that case, we need to wait for the next two bytes in order to
- // decode the last character properly.
- function utf16Text(buf, i) {
- if ((buf.length - i) % 2 === 0) {
- var r = buf.toString('utf16le', i);
- if (r) {
- var c = r.charCodeAt(r.length - 1);
- if (c >= 0xD800 && c <= 0xDBFF) {
- this.lastNeed = 2;
- this.lastTotal = 4;
- this.lastChar[0] = buf[buf.length - 2];
- this.lastChar[1] = buf[buf.length - 1];
- return r.slice(0, -1);
- }
- }
- return r;
- }
- this.lastNeed = 1;
- this.lastTotal = 2;
- this.lastChar[0] = buf[buf.length - 1];
- return buf.toString('utf16le', i, buf.length - 1);
- }
- // For UTF-16LE we do not explicitly append special replacement characters if we
- // end on a partial character, we simply let v8 handle that.
- function utf16End(buf) {
- var r = buf && buf.length ? this.write(buf) : '';
- if (this.lastNeed) {
- var end = this.lastTotal - this.lastNeed;
- return r + this.lastChar.toString('utf16le', 0, end);
- }
- return r;
- }
- function base64Text(buf, i) {
- var n = (buf.length - i) % 3;
- if (n === 0) return buf.toString('base64', i);
- this.lastNeed = 3 - n;
- this.lastTotal = 3;
- if (n === 1) {
- this.lastChar[0] = buf[buf.length - 1];
- } else {
- this.lastChar[0] = buf[buf.length - 2];
- this.lastChar[1] = buf[buf.length - 1];
- }
- return buf.toString('base64', i, buf.length - n);
- }
- function base64End(buf) {
- var r = buf && buf.length ? this.write(buf) : '';
- if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
- return r;
- }
- // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
- function simpleWrite(buf) {
- return buf.toString(this.encoding);
- }
- function simpleEnd(buf) {
- return buf && buf.length ? this.write(buf) : '';
- }
- },{"safe-buffer":148}],159:[function(require,module,exports){
- (function (global){
- /**
- * Module exports.
- */
- module.exports = deprecate;
- /**
- * Mark that a method should not be used.
- * Returns a modified function which warns once by default.
- *
- * If `localStorage.noDeprecation = true` is set, then it is a no-op.
- *
- * If `localStorage.throwDeprecation = true` is set, then deprecated functions
- * will throw an Error when invoked.
- *
- * If `localStorage.traceDeprecation = true` is set, then deprecated functions
- * will invoke `console.trace()` instead of `console.error()`.
- *
- * @param {Function} fn - the function to deprecate
- * @param {String} msg - the string to print to the console when `fn` is invoked
- * @returns {Function} a new "deprecated" version of `fn`
- * @api public
- */
- function deprecate (fn, msg) {
- if (config('noDeprecation')) {
- return fn;
- }
- var warned = false;
- function deprecated() {
- if (!warned) {
- if (config('throwDeprecation')) {
- throw new Error(msg);
- } else if (config('traceDeprecation')) {
- console.trace(msg);
- } else {
- console.warn(msg);
- }
- warned = true;
- }
- return fn.apply(this, arguments);
- }
- return deprecated;
- }
- /**
- * Checks `localStorage` for boolean values for the given `name`.
- *
- * @param {String} name
- * @returns {Boolean}
- * @api private
- */
- function config (name) {
- // accessing global.localStorage can trigger a DOMException in sandboxed iframes
- try {
- if (!global.localStorage) return false;
- } catch (_) {
- return false;
- }
- var val = global.localStorage[name];
- if (null == val) return false;
- return String(val).toLowerCase() === 'true';
- }
- }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- },{}],160:[function(require,module,exports){
- var indexOf = require('indexof');
- var Object_keys = function (obj) {
- if (Object.keys) return Object.keys(obj)
- else {
- var res = [];
- for (var key in obj) res.push(key)
- return res;
- }
- };
- var forEach = function (xs, fn) {
- if (xs.forEach) return xs.forEach(fn)
- else for (var i = 0; i < xs.length; i++) {
- fn(xs[i], i, xs);
- }
- };
- var defineProp = (function() {
- try {
- Object.defineProperty({}, '_', {});
- return function(obj, name, value) {
- Object.defineProperty(obj, name, {
- writable: true,
- enumerable: false,
- configurable: true,
- value: value
- })
- };
- } catch(e) {
- return function(obj, name, value) {
- obj[name] = value;
- };
- }
- }());
- var globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function',
- 'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError',
- 'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError',
- 'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape',
- 'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];
- function Context() {}
- Context.prototype = {};
- var Script = exports.Script = function NodeScript (code) {
- if (!(this instanceof Script)) return new Script(code);
- this.code = code;
- };
- Script.prototype.runInContext = function (context) {
- if (!(context instanceof Context)) {
- throw new TypeError("needs a 'context' argument.");
- }
- var iframe = document.createElement('iframe');
- if (!iframe.style) iframe.style = {};
- iframe.style.display = 'none';
- document.body.appendChild(iframe);
- var win = iframe.contentWindow;
- var wEval = win.eval, wExecScript = win.execScript;
- if (!wEval && wExecScript) {
- // win.eval() magically appears when this is called in IE:
- wExecScript.call(win, 'null');
- wEval = win.eval;
- }
- forEach(Object_keys(context), function (key) {
- win[key] = context[key];
- });
- forEach(globals, function (key) {
- if (context[key]) {
- win[key] = context[key];
- }
- });
- var winKeys = Object_keys(win);
- var res = wEval.call(win, this.code);
- forEach(Object_keys(win), function (key) {
- // Avoid copying circular objects like `top` and `window` by only
- // updating existing context properties or new properties in the `win`
- // that was only introduced after the eval.
- if (key in context || indexOf(winKeys, key) === -1) {
- context[key] = win[key];
- }
- });
- forEach(globals, function (key) {
- if (!(key in context)) {
- defineProp(context, key, win[key]);
- }
- });
- document.body.removeChild(iframe);
- return res;
- };
- Script.prototype.runInThisContext = function () {
- return eval(this.code); // maybe...
- };
- Script.prototype.runInNewContext = function (context) {
- var ctx = Script.createContext(context);
- var res = this.runInContext(ctx);
- forEach(Object_keys(ctx), function (key) {
- context[key] = ctx[key];
- });
- return res;
- };
- forEach(Object_keys(Script.prototype), function (name) {
- exports[name] = Script[name] = function (code) {
- var s = Script(code);
- return s[name].apply(s, [].slice.call(arguments, 1));
- };
- });
- exports.createScript = function (code) {
- return exports.Script(code);
- };
- exports.createContext = Script.createContext = function (context) {
- var copy = new Context();
- if(typeof context === 'object') {
- forEach(Object_keys(context), function (key) {
- copy[key] = context[key];
- });
- }
- return copy;
- };
- },{"indexof":107}]},{},[1]);
- function parseEpt(event) {
- let buffer = event.data.buffer;
- let view = new DataView(buffer);
- let schema = event.data.schema;
- let scale = event.data.scale;
- let offset = event.data.offset;
- let mins = event.data.mins;
- let dimensions = schema.reduce((p, c) => {
- p[c.name] = c;
- return p;
- }, { });
- let dimOffset = (name) => {
- let offset = 0;
- for (var i = 0; i < schema.length; ++i) {
- if (schema[i].name == name) return offset;
- offset += schema[i].size;
- }
- return undefined;
- };
- let getExtractor = (name) => {
- let offset = dimOffset(name);
- let type = dimensions[name].type;
- let size = dimensions[name].size;
- if (type == 'signed') switch (size) {
- case 1: return (p) => view.getInt8(p + offset);
- case 2: return (p) => view.getInt16(p + offset, true);
- case 4: return (p) => view.getInt32(p + offset, true);
- case 8: return (p) => view.getInt64(p + offset, true);
- }
- if (type == 'unsigned') switch (size) {
- case 1: return (p) => view.getUint8(p + offset);
- case 2: return (p) => view.getUint16(p + offset, true);
- case 4: return (p) => view.getUint32(p + offset, true);
- case 8: return (p) => view.getUint64(p + offset, true);
- }
- if (type == 'float') switch (size) {
- case 4: return (p) => view.getFloat32(p + offset, true);
- case 8: return (p) => view.getFloat64(p + offset, true);
- }
- let str = JSON.stringify(dimensions[name]);
- throw new Error(`Invalid dimension specification for ${name}: ${str}`);
- };
- let pointSize = schema.reduce((p, c) => p + c.size, 0);
- let numPoints = buffer.byteLength / pointSize;
- let xyzBuffer, rgbBuffer, intensityBuffer, classificationBuffer,
- returnNumberBuffer, numberOfReturnsBuffer, pointSourceIdBuffer;
- let xyz, rgb, intensity, classification, returnNumber, numberOfReturns,
- pointSourceId;
- let xyzExtractor, rgbExtractor, intensityExtractor, classificationExtractor,
- returnNumberExtractor, numberOfReturnsExtractor, pointSourceIdExtractor;
- let twoByteColor = false;
- if (dimensions['X'] && dimensions['Y'] && dimensions['Z']) {
- xyzBuffer = new ArrayBuffer(numPoints * 4 * 3);
- xyz = new Float32Array(xyzBuffer);
- xyzExtractor = [
- getExtractor('X'),
- getExtractor('Y'),
- getExtractor('Z')
- ];
- }
- if (dimensions['Red'] && dimensions['Green'] && dimensions['Blue']) {
- rgbBuffer = new ArrayBuffer(numPoints * 4);
- rgb = new Uint8Array(rgbBuffer);
- rgbExtractor = [
- getExtractor('Red'),
- getExtractor('Green'),
- getExtractor('Blue')
- ];
- let r, g, b, pos;
- for (let i = 0; i < numPoints && !twoByteColor; ++i) {
- pos = i * pointSize;
- r = rgbExtractor[0](pos);
- g = rgbExtractor[1](pos);
- b = rgbExtractor[2](pos);
- if (r > 255 || g > 255 || b > 255) twoByteColor = true;
- }
- }
- if (dimensions['Intensity']) {
- intensityBuffer = new ArrayBuffer(numPoints * 4);
- intensity = new Float32Array(intensityBuffer);
- intensityExtractor = getExtractor('Intensity');
- }
- if (dimensions['Classification']) {
- classificationBuffer = new ArrayBuffer(numPoints);
- classification = new Uint8Array(classificationBuffer);
- classificationExtractor = getExtractor('Classification');
- }
- if (dimensions['ReturnNumber']) {
- returnNumberBuffer = new ArrayBuffer(numPoints);
- returnNumber = new Uint8Array(returnNumberBuffer);
- returnNumberExtractor = getExtractor('ReturnNumber');
- }
- if (dimensions['NumberOfReturns']) {
- numberOfReturnsBuffer = new ArrayBuffer(numPoints);
- numberOfReturns = new Uint8Array(numberOfReturnsBuffer);
- numberOfReturnsExtractor = getExtractor('NumberOfReturns');
- }
- if (dimensions['PointSourceId']) {
- pointSourceIdBuffer = new ArrayBuffer(numPoints * 2);
- pointSourceId = new Uint16Array(pointSourceIdBuffer);
- pointSourceIdExtractor = getExtractor('PointSourceId');
- }
- let mean = [0, 0, 0];
- let bounds = {
- min: [Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE],
- max: [-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE],
- };
- let x, y, z, r, g, b;
- for (let i = 0; i < numPoints; ++i) {
- let pos = i * pointSize;
- if (xyz) {
- x = xyzExtractor[0](pos) * scale.x + offset.x - mins[0];
- y = xyzExtractor[1](pos) * scale.y + offset.y - mins[1];
- z = xyzExtractor[2](pos) * scale.z + offset.z - mins[2];
- mean[0] += x / numPoints;
- mean[1] += y / numPoints;
- mean[2] += z / numPoints;
- bounds.min[0] = Math.min(bounds.min[0], x);
- bounds.min[1] = Math.min(bounds.min[1], y);
- bounds.min[2] = Math.min(bounds.min[2], z);
- bounds.max[0] = Math.max(bounds.max[0], x);
- bounds.max[1] = Math.max(bounds.max[1], y);
- bounds.max[2] = Math.max(bounds.max[2], z);
- xyz[3 * i + 0] = x;
- xyz[3 * i + 1] = y;
- xyz[3 * i + 2] = z;
- }
- if (rgb) {
- r = rgbExtractor[0](pos);
- g = rgbExtractor[1](pos);
- b = rgbExtractor[2](pos);
- if (twoByteColor) {
- r /= 256;
- g /= 256;
- b /= 256;
- }
- rgb[4 * i + 0] = r;
- rgb[4 * i + 1] = g;
- rgb[4 * i + 2] = b;
- }
- if (intensity) intensity[i] = intensityExtractor(pos);
- if (classification) classification[i] = classificationExtractor(pos);
- if (returnNumber) returnNumber[i] = returnNumberExtractor(pos);
- if (numberOfReturns) numberOfReturns[i] = numberOfReturnsExtractor(pos);
- if (pointSourceId) pointSourceId[i] = pointSourceIdExtractor(pos);
- }
- let indicesBuffer = new ArrayBuffer(numPoints * 4);
- let indices = new Uint32Array(indicesBuffer);
- for (let i = 0; i < numPoints; ++i) {
- indices[i] = i;
- }
- let message = {
- numPoints: numPoints,
- tightBoundingBox: bounds,
- mean: mean,
- position: xyzBuffer,
- color: rgbBuffer,
- intensity: intensityBuffer,
- classification: classificationBuffer,
- returnNumber: returnNumberBuffer,
- numberOfReturns: numberOfReturnsBuffer,
- pointSourceId: pointSourceIdBuffer,
- indices: indicesBuffer
- };
- let transferables = [
- message.position,
- message.color,
- message.intensity,
- message.classification,
- message.returnNumber,
- message.numberOfReturns,
- message.pointSourceId,
- message.indices
- ].filter((v) => v);
- postMessage(message, transferables);
- }
- // window = { };
- // document = { };
- // importScripts('/libs/zstd-codec/bundle.js', '/libs/ept/ParseBuffer.js');
- onmessage = async function(event) {
-
- const zstd = await new Promise(resolve => window.ZstdCodec.run(resolve));
-
- const streaming = new zstd.Streaming();
- const arr = new Uint8Array(event.data.buffer);
- const decompressed = streaming.decompress(arr);
- event.data.buffer = decompressed.buffer
- parseEpt(event);
-
- };
|