Skip to content

Instantly share code, notes, and snippets.

@zilluss
Created April 27, 2015 20:21
Show Gist options
  • Save zilluss/ccdf2c17c2d8577ea4dc to your computer and use it in GitHub Desktop.
Save zilluss/ccdf2c17c2d8577ea4dc to your computer and use it in GitHub Desktop.
var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module)if(Module.hasOwnProperty(key))moduleOverrides[key]=Module[key];var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function";var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;
if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);if(!ret&&filename!=nodePath["resolve"](filename)){filename=path.join(__dirname,"..","src",filename);ret=nodeFS["readFileSync"](filename)}if(ret&&
!binary)ret=ret.toString();return ret};Module["readBinary"]=function readBinary(filename){return Module["read"](filename,true)};Module["load"]=function load(f){globalEval(read(f))};if(process["argv"].length>1)Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/");else Module["thisProgram"]="unknown-program";Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined")module["exports"]=Module;process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex;
})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined")Module["read"]=read;else Module["read"]=function read(){throw"no read() available (jsc?)";};Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function")return new Uint8Array(readbuffer(f));var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined")Module["arguments"]=scriptArgs;
else if(typeof arguments!="undefined")Module["arguments"]=arguments;this["Module"]=Module}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined")Module["arguments"]=arguments;if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=
false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?function(x){dump(x)}:function(x){}}if(ENVIRONMENT_IS_WEB)window["Module"]=Module;else Module["load"]=importScripts}else throw"Unknown runtime environment. Where are we?";function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"])Module["load"]=function load(f){globalEval(Module["read"](f))};if(!Module["print"])Module["print"]=function(){};if(!Module["printErr"])Module["printErr"]=Module["print"];
if(!Module["arguments"])Module["arguments"]=[];if(!Module["thisProgram"])Module["thisProgram"]="./this.program";Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides)if(moduleOverrides.hasOwnProperty(key))Module[key]=moduleOverrides[key];
var Runtime={setTempRet0:function(value){tempRet0=value},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(stackTop){STACKTOP=stackTop},getNativeTypeSize:function(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 Runtime.QUANTUM_SIZE;else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===
0);return bits/8}else return 0}},getNativeFieldSize:function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,getAlignSize:function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)},dynCall:function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+
sig].apply(null,args)}else return Module["dynCall_"+sig].call(null,ptr)},functionPointers:[],addFunction:function(func){for(var i=0;i<Runtime.functionPointers.length;i++)if(!Runtime.functionPointers[i]){Runtime.functionPointers[i]=func;return 2*(1+i)}throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.";},removeFunction:function(index){Runtime.functionPointers[(index-2)/2]=null},getAsmConst:function(code,numArgs){if(!Runtime.asmConstCache)Runtime.asmConstCache=
{};var func=Runtime.asmConstCache[code];if(func)return func;var args=[];for(var i=0;i<numArgs;i++)args.push(String.fromCharCode(36)+i);var source=Pointer_stringify(code);if(source[0]==='"')if(source.indexOf('"',1)===source.length-1)source=source.substr(1,source.length-2);else abort("invalid EM_ASM input |"+source+"|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)");try{var evalled=eval("(function(Module, FS) { return function("+args.join(",")+"){ "+source+
" } })")(Module,typeof FS!=="undefined"?FS:null)}catch(e){Module.printErr("error in executing inline EM_ASM code: "+e+" on: \n\n"+source+"\n\nwith args |"+args+"| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)");throw e;}return Runtime.asmConstCache[code]=evalled},warnOnce:function(text){if(!Runtime.warnOnce.shown)Runtime.warnOnce.shown={};if(!Runtime.warnOnce.shown[text]){Runtime.warnOnce.shown[text]=1;Module.printErr(text)}},funcWrappers:{},getFuncWrapper:function(func,sig){assert(sig);
if(!Runtime.funcWrappers[sig])Runtime.funcWrappers[sig]={};var sigCache=Runtime.funcWrappers[sig];if(!sigCache[func])sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func,arguments)};return sigCache[func]},UTF8Processor:function(){var buffer=[];var needed=0;this.processCChar=function(code){code=code&255;if(buffer.length==0){if((code&128)==0)return String.fromCharCode(code);buffer.push(code);if((code&224)==192)needed=1;else if((code&240)==224)needed=2;else needed=3;return""}if(needed){buffer.push(code);
needed--;if(needed>0)return""}var c1=buffer[0];var c2=buffer[1];var c3=buffer[2];var c4=buffer[3];var ret;if(buffer.length==2)ret=String.fromCharCode((c1&31)<<6|c2&63);else if(buffer.length==3)ret=String.fromCharCode((c1&15)<<12|(c2&63)<<6|c3&63);else{var codePoint=(c1&7)<<18|(c2&63)<<12|(c3&63)<<6|c4&63;ret=String.fromCharCode(((codePoint-65536)/1024|0)+55296,(codePoint-65536)%1024+56320)}buffer.length=0;return ret};this.processJSString=function processJSString(string){string=unescape(encodeURIComponent(string));
var ret=[];for(var i=0;i<string.length;i++)ret.push(string.charCodeAt(i));return ret}},getCompilerSetting:function(name){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work";},stackAlloc:function(size){var ret=STACKTOP;STACKTOP=STACKTOP+size|0;STACKTOP=STACKTOP+15&-16;return ret},staticAlloc:function(size){var ret=STATICTOP;STATICTOP=STATICTOP+size|0;STATICTOP=STATICTOP+15&-16;return ret},dynamicAlloc:function(size){var ret=
DYNAMICTOP;DYNAMICTOP=DYNAMICTOP+size|0;DYNAMICTOP=DYNAMICTOP+15&-16;if(DYNAMICTOP>=TOTAL_MEMORY)enlargeMemory();return ret},alignMemory:function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret},makeBigInt:function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;
var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition)abort("Assertion failed: "+text)}var globalScope=this;
function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(e){}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;
(function(){var JSfuncs={"stackSave":function(){Runtime.stackSave()},"stackRestore":function(){Runtime.stackRestore()},"arrayToC":function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret},"stringToC":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret}};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,
args){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=Runtime.stackSave();cArgs[i]=converter(args[i])}else cArgs[i]=args[i]}var ret=func.apply(null,cArgs);if(returnType==="string")ret=Pointer_stringify(ret);if(stack!==0)Runtime.stackRestore(stack);return ret};var sourceRegex=/^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;function parseJSFunc(jsfunc){var parsed=jsfunc.toString().match(sourceRegex).slice(1);
return{arguments:parsed[0],body:parsed[1],returnValue:parsed[2]}}var JSsource={};for(var fun in JSfuncs)if(JSfuncs.hasOwnProperty(fun))JSsource[fun]=parseJSFunc(JSfuncs[fun]);cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident);var numericArgs=argTypes.every(function(type){return type==="number"});var numericRet=returnType!=="string";if(numericRet&&numericArgs)return cfunc;var argNames=argTypes.map(function(x,i){return"$"+i});var funcstr="(function("+argNames.join(",")+
") {";var nargs=argTypes.length;if(!numericArgs){funcstr+="var stack = "+JSsource["stackSave"].body+";";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type==="number")continue;var convertCode=JSsource[type+"ToC"];funcstr+="var "+convertCode.arguments+" = "+arg+";";funcstr+=convertCode.body+";";funcstr+=arg+"="+convertCode.returnValue+";"}}var cfuncname=parseJSFunc(function(){return cfunc}).returnValue;funcstr+="var ret = "+cfuncname+"("+argNames.join(",")+");";if(!numericRet){var strgfy=
parseJSFunc(function(){return Pointer_stringify}).returnValue;funcstr+="ret = "+strgfy+"(ret);"}if(!numericArgs)funcstr+=JSsource["stackRestore"].body.replace("()","(stack)")+";";funcstr+="return ret})";return eval(funcstr)}})();Module["cwrap"]=cwrap;Module["ccall"]=ccall;
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)}}Module["setValue"]=setValue;
function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case "i1":return HEAP8[ptr>>0];case "i8":return HEAP8[ptr>>0];case "i16":return HEAP16[ptr>>1];case "i32":return HEAP32[ptr>>2];case "i64":return HEAP32[ptr>>2];case "float":return HEAPF32[ptr>>2];case "double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;
var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;
function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE)ret=ptr;else ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length));if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr<stop;ptr+=4)HEAP32[ptr>>
2]=0;stop=ret+size;while(ptr<stop)HEAP8[ptr++>>0]=0;return ret}if(singleType==="i8"){if(slab.subarray||slab.slice)HEAPU8.set(slab,ret);else HEAPU8.set(new Uint8Array(slab),ret);return ret}var i=0,type,typeSize,previousType;while(i<size){var curr=slab[i];if(typeof curr==="function")curr=Runtime.getFunctionIndex(curr);type=singleType||types[i];if(type===0){i++;continue}if(type=="i64")type="i32";setValue(ret+i,curr,type);if(previousType!==type){typeSize=Runtime.getNativeTypeSize(type);previousType=type}i+=
typeSize}return ret}Module["allocate"]=allocate;
function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var hasUtf=false;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];if(t>=128)hasUtf=true;else if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(!hasUtf){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}var utf8=new Runtime.UTF8Processor;for(i=0;i<length;i++){t=
HEAPU8[ptr+i>>0];ret+=utf8.processCChar(t)}return ret}Module["Pointer_stringify"]=Pointer_stringify;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr){for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr+i*2>>1]=codeUnit}HEAP16[outPtr+str.length*2>>1]=0}Module["stringToUTF16"]=stringToUTF16;
function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else str+=String.fromCharCode(utf32)}}Module["UTF32ToString"]=UTF32ToString;
function stringToUTF32(str,outPtr){var iChar=0;for(var iCodeUnit=0;iCodeUnit<str.length;++iCodeUnit){var codeUnit=str.charCodeAt(iCodeUnit);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++iCodeUnit);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr+iChar*4>>2]=codeUnit;++iChar}HEAP32[outPtr+iChar*4>>2]=0}Module["stringToUTF32"]=stringToUTF32;
function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi)try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret)return Pointer_stringify(ret)}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t",
"a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a<i;a++)pre+=" ";Module.print(pre+"^")}function parseNested(){i++;if(func[i]==="K")i++;var parts=[];while(func[i]!=="E"){if(func[i]==="S"){i++;var next=func.indexOf("_",i);var num=func.substring(i,next)||0;parts.push(subs[num]||"?");i=next+1;continue}if(func[i]===
"C"){parts.push(parts[parts.length-1]);i+=2;continue}var size=parseInt(func.substr(i));var pre=size.toString().length;if(!size||!pre){i--;break}var curr=func.substr(i+pre,size);parts.push(curr);subs.push(curr);i+=pre+size}i++;return parts}function parse(rawList,limit,allowVoid){limit=limit||Infinity;var ret="",list=[];function flushList(){return"("+list.join(", ")+")"}var name;if(func[i]==="N"){name=parseNested().join("::");limit--;if(limit===0)return rawList?[name]:name}else{if(func[i]==="K"||first&&
func[i]==="L")i++;var size=parseInt(func.substr(i));if(size){var pre=size.toString().length;name=func.substr(i+pre,size);i+=pre+size}}first=false;if(func[i]==="I"){i++;var iList=parse(true);var iRet=parse(true,1,true);ret+=iRet[0]+" "+name+"<"+iList.join(", ")+">"}else ret=name;paramLoop:while(i<func.length&&limit-- >0){var c=func[i++];if(c in basicTypes)list.push(basicTypes[c]);else switch(c){case "P":list.push(parse(true,1,true)[0]+"*");break;case "R":list.push(parse(true,1,true)[0]+"&");break;
case "L":i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break;case "A":var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break;case "E":break paramLoop;default:ret+="?"+c;break paramLoop}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret)list.push(ret+"?");return list}else return ret+flushList()}var parsed=func;try{if(func=="Object._main"||func==
"_main")return"main()";if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case "n":return"operator new()";case "d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi)Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return parsed}
function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,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(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){return x+4095&-4096}var HEAP;
var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;
function enlargeMemory(){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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.")}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||33554432;var FAST_MEMORY=Module["FAST_MEMORY"]||2097152;var totalMemory=64*1024;
while(totalMemory<TOTAL_MEMORY||totalMemory<2*TOTAL_STACK)if(totalMemory<16*1024*1024)totalMemory*=2;else totalMemory+=16*1024*1024;if(totalMemory!==TOTAL_MEMORY){Module.printErr("increasing TOTAL_MEMORY to "+totalMemory+" to be compliant with the asm.js spec");TOTAL_MEMORY=totalMemory}assert(typeof Int32Array!=="undefined"&&typeof Float64Array!=="undefined"&&!!(new Int32Array(1))["subarray"]&&!!(new Int32Array(1))["set"],"JS engine does not provide full typed array support");var buffer=new ArrayBuffer(TOTAL_MEMORY);
HEAP8=new Int8Array(buffer);HEAP16=new Int16Array(buffer);HEAP32=new Int32Array(buffer);HEAPU8=new Uint8Array(buffer);HEAPU16=new Uint16Array(buffer);HEAPU32=new Uint32Array(buffer);HEAPF32=new Float32Array(buffer);HEAPF64=new Float64Array(buffer);HEAP32[0]=255;assert(HEAPU8[0]===255&&HEAPU8[3]===0,"Typed arrays 2 must be run on a little-endian system");Module["HEAP"]=HEAP;Module["buffer"]=buffer;Module["HEAP8"]=HEAP8;Module["HEAP16"]=HEAP16;Module["HEAP32"]=HEAP32;Module["HEAPU8"]=HEAPU8;
Module["HEAPU16"]=HEAPU16;Module["HEAPU32"]=HEAPU32;Module["HEAPF32"]=HEAPF32;Module["HEAPF64"]=HEAPF64;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)Runtime.dynCall("v",func);else Runtime.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)}Module["addOnPreRun"]=Module.addOnPreRun=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=Module.addOnInit=addOnInit;
function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=Module.addOnPreMain=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=Module.addOnExit=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=Module.addOnPostRun=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var ret=(new Runtime.UTF8Processor).processJSString(stringy);if(length)ret.length=length;if(!dontAddNull)ret.push(0);return ret}
Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255)chr&=255;ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i<array.length){var chr=array[i];HEAP8[buffer+i>>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;
function writeArrayToMemory(array,buffer){for(var i=0;i<array.length;i++)HEAP8[buffer+i>>0]=array[i]}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;i++)HEAP8[buffer+i>>0]=str.charCodeAt(i);if(!dontAddNull)HEAP8[buffer+str.length>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0)return value;return bits<=32?2*Math.abs(1<<bits-1)+value:Math.pow(2,bits)+value}
function reSign(value,bits,ignore){if(value<=0)return value;var half=bits<=32?Math.abs(1<<bits-1):Math.pow(2,bits-1);if(value>=half&&(bits<=32||value>half))value=-2*half+value;return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;
var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;
function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"])Module["monitorRunDependencies"](runDependencies)}Module["addRunDependency"]=addRunDependency;
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["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;
STATIC_BASE=8;STATICTOP=STATIC_BASE+10320;__ATINIT__.push({func:function(){__GLOBAL__I_a()}});
allocate([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,49,53,82,97,121,67,97,115,116,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,49,55,98,50,82,97,121,67,97,115,116,67,97,108,108,98,97,99,107,0,0,0,0,0,216,37,0,0,120,0,0,0,0,38,0,0,96,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,0,0,0,4,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,49,55,81,117,101,114,121,65,65,66,66,67,97,108,108,
98,97,99,107,0,0,0,0,0,49,53,98,50,81,117,101,114,121,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,216,37,0,0,224,0,0,0,0,38,0,0,200,0,0,0,248,0,0,0,0,0,0,0,0,0,0,0,128,1,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,50,50,98,50,87,111,114,108,100,67,111,110,116,97,99,116,76,105,115,116,101,110,101,114,0,0,0,0,0,0,0,0,49,55,98,50,67,111,110,116,97,99,116,76,105,115,116,101,110,101,114,0,0,0,0,0,216,37,0,0,96,1,0,0,0,38,0,0,64,1,0,0,120,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,2,0,0,7,0,0,0,8,0,0,0,4,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,49,49,98,50,69,100,103,101,83,104,97,112,101,0,0,0,55,98,50,83,104,97,112,101,0,0,0,0,0,0,0,0,216,37,0,0,32,2,0,0,0,38,0,0,16,2,0,0,48,2,0,0,0,0,0,0,0,0,0,0,144,2,0,0,7,0,0,0,9,0,0,0,5,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,2,0,0,0,4,0,0,0,2,0,0,0,0,0,0,0,49,52,98,50,
80,111,108,121,103,111,110,83,104,97,112,101,0,0,0,0,0,0,0,0,0,38,0,0,120,2,0,0,48,2,0,0,0,0,0,0,0,0,0,0,224,2,0,0,7,0,0,0,10,0,0,0,6,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,0,0,0,0,49,51,98,50,67,105,114,99,108,101,83,104,97,112,101,0,0,38,0,0,208,2,0,0,48,2,0,0,0,0,0,0,0,0,0,0,48,3,0,0,11,0,0,0,12,0,0,0,7,0,0,0,4,0,0,0,5,0,0,0,4,0,0,0,4,0,0,0,6,0,0,0,4,0,0,0,0,0,0,0,49,50,98,50,67,104,97,105,110,83,104,97,112,101,0,0,0,38,0,0,32,3,0,0,48,2,0,0,0,0,0,0,0,0,0,0,120,3,0,0,13,0,0,0,14,
0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,49,53,98,50,67,111,110,116,97,99,116,70,105,108,116,101,114,0,0,0,0,0,0,0,216,37,0,0,96,3,0,0,0,0,0,0,224,3,0,0,3,0,0,0,4,0,0,0,5,0,0,0,1,0,0,0,15,0,0,0,5,0,0,0,16,0,0,0,17,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,49,50,98,50,77,111,117,115,101,74,111,105,110,116,0,0,55,98,50,74,111,105,110,116,0,0,0,0,0,0,0,0,216,37,0,0,200,3,0,0,0,38,0,0,184,3,0,0,216,3,0,0,0,0,0,0,77,111,117,115,101,32,106,111,105,110,116,32,100,117,109,112,105,110,103,32,105,115,32,110,111,116,
32,115,117,112,112,111,114,116,101,100,46,10,0,0,0,0,0,0,200,5,0,0,8,0,0,0,9,0,0,0,6,0,0,0,2,0,0,0,18,0,0,0,10,0,0,0,16,0,0,0,19,0,0,0,11,0,0,0,12,0,0,0,9,0,0,0,0,0,0,0,32,32,98,50,77,111,116,111,114,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,
110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,105,110,101,97,114,79,102,102,115,101,116,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,97,110,103,117,108,97,114,79,102,102,115,101,116,32,61,32,37,46,49,53,108,101,102,59,10,0,0,32,32,106,100,46,109,97,120,70,111,114,99,101,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,0,32,32,106,100,46,109,97,120,84,111,114,113,117,101,32,
61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,32,32,106,100,46,99,111,114,114,101,99,116,105,111,110,70,97,99,116,111,114,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,50,98,50,77,111,116,111,114,74,111,105,110,116,0,0,0,38,0,0,184,5,0,0,216,3,0,0,0,0,0,0,0,0,0,0,152,7,0,0,13,0,0,0,14,0,0,0,7,0,0,0,3,0,0,0,20,0,0,0,10,0,0,0,16,
0,0,0,21,0,0,0,15,0,0,0,16,0,0,0,10,0,0,0,0,0,0,0,32,32,98,50,68,105,115,116,97,110,99,101,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,
108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,101,110,103,116,104,32,61,32,37,46,49,53,108,101,102,59,10,0,32,32,106,100,46,102,114,101,113,117,101,110,99,121,72,122,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,32,32,106,100,46,100,97,
109,112,105,110,103,82,97,116,105,111,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,53,98,50,68,105,115,116,97,110,99,101,74,111,105,110,116,0,0,0,0,0,0,0,0,38,0,0,128,7,0,0,216,3,0,0,0,0,0,0,0,0,0,0,80,9,0,0,17,0,0,0,18,0,0,0,8,0,0,0,4,0,0,0,22,0,0,0,10,0,0,0,16,0,0,0,23,0,0,0,19,0,0,0,20,0,0,0,11,0,0,0,0,0,0,0,32,32,98,50,70,114,105,99,
116,105,111,110,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,
101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,109,97,120,70,111,114,99,101,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,0,32,32,106,100,46,109,97,120,84,111,114,113,117,101,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,
67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,53,98,50,70,114,105,99,116,105,111,110,74,111,105,110,116,0,0,0,0,0,0,0,0,38,0,0,56,9,0,0,216,3,0,0,0,0,0,0,0,0,0,0,24,11,0,0,21,0,0,0,22,0,0,0,9,0,0,0,5,0,0,0,24,0,0,0,10,0,0,0,16,0,0,0,25,0,0,0,23,0,0,0,24,0,0,0,12,0,0,0,0,0,0,0,32,32,98,50,87,101,108,100,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,
46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,
41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,114,101,102,101,114,101,110,99,101,65,110,103,108,101,32,61,32,37,46,49,53,108,101,102,59,10,0,32,32,106,100,46,102,114,101,113,117,101,110,99,121,72,122,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,32,32,106,100,46,100,97,109,112,105,110,103,82,97,116,105,111,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,
0,0,0,0,49,49,98,50,87,101,108,100,74,111,105,110,116,0,0,0,0,38,0,0,8,11,0,0,216,3,0,0,0,0,0,0,0,0,0,0,120,12,0,0,25,0,0,0,26,0,0,0,10,0,0,0,6,0,0,0,26,0,0,0,10,0,0,0,16,0,0,0,27,0,0,0,27,0,0,0,28,0,0,0,13,0,0,0,0,0,0,0,32,32,98,50,71,101,97,114,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,
32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,106,111,105,110,116,49,32,61,32,106,111,105,110,116,115,91,37,100,93,59,10,0,0,0,0,0,0,32,32,106,100,46,106,111,105,110,116,50,32,61,32,106,111,105,110,116,115,91,37,100,93,59,10,0,0,0,0,0,0,32,32,106,100,46,114,97,116,105,111,32,61,32,37,46,49,53,108,101,102,59,10,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,
67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,49,98,50,71,101,97,114,74,111,105,110,116,0,0,0,0,38,0,0,104,12,0,0,216,3,0,0,0,0,0,0,0,0,0,0,8,15,0,0,29,0,0,0,30,0,0,0,11,0,0,0,7,0,0,0,28,0,0,0,10,0,0,0,16,0,0,0,29,0,0,0,31,0,0,0,32,0,0,0,14,0,0,0,0,0,0,0,32,32,98,50,80,114,105,115,109,97,116,105,99,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,
100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,
102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,120,105,115,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,32,32,106,100,46,114,101,102,101,114,101,110,99,101,65,110,103,108,101,32,61,32,37,46,49,53,108,101,102,59,10,0,32,32,106,100,46,101,110,97,98,108,101,76,105,109,105,116,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,32,32,106,100,46,108,111,119,101,114,84,114,97,110,115,108,97,116,105,111,110,32,61,32,37,46,49,53,108,101,102,59,10,0,0,
0,0,0,0,0,32,32,106,100,46,117,112,112,101,114,84,114,97,110,115,108,97,116,105,111,110,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,0,32,32,106,100,46,101,110,97,98,108,101,77,111,116,111,114,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,32,32,106,100,46,109,111,116,111,114,83,112,101,101,100,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,32,32,106,100,46,109,97,120,77,111,116,111,114,70,111,114,99,101,32,61,32,37,46,49,53,108,101,102,59,10,0,0,32,32,106,111,105,110,116,115,91,37,100,
93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,54,98,50,80,114,105,115,109,97,116,105,99,74,111,105,110,116,0,0,0,0,0,0,0,38,0,0,240,14,0,0,216,3,0,0,0,0,0,0,0,0,0,0,144,16,0,0,33,0,0,0,34,0,0,0,12,0,0,0,8,0,0,0,30,0,0,0,10,0,0,0,16,0,0,0,31,0,0,0,35,0,0,0,36,0,0,0,15,0,0,0,0,0,0,0,32,32,98,50,82,111,112,101,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,
115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,101,116,40,
37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,109,97,120,76,101,110,103,116,104,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,49,98,50,82,111,112,101,74,111,105,110,116,0,0,0,0,38,0,0,128,16,0,0,216,3,0,0,0,0,0,0,0,0,0,0,216,3,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,32,0,0,0,10,0,0,0,16,
0,0,0,33,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,47,47,32,68,117,109,112,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,116,104,105,115,32,106,111,105,110,116,32,116,121,112,101,46,10,0,0,0,0,0,0,80,19,0,0,37,0,0,0,38,0,0,0,13,0,0,0,9,0,0,0,34,0,0,0,10,0,0,0,16,0,0,0,35,0,0,0,39,0,0,0,40,0,0,0,16,0,0,0,0,0,0,0,32,32,98,50,82,101,118,111,108,117,116,101,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,
100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,
101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,114,101,102,101,114,101,110,99,101,65,110,103,108,101,32,61,32,37,46,49,53,108,101,102,59,10,0,32,32,106,100,46,101,110,97,98,108,101,76,105,109,105,116,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,32,32,106,100,46,108,111,119,101,114,65,110,103,108,101,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,32,32,106,100,46,117,112,112,101,114,65,110,103,108,101,32,61,32,37,46,49,53,108,101,102,
59,10,0,0,0,0,0,32,32,106,100,46,101,110,97,98,108,101,77,111,116,111,114,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,32,32,106,100,46,109,111,116,111,114,83,112,101,101,100,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,32,32,106,100,46,109,97,120,77,111,116,111,114,84,111,114,113,117,101,32,61,32,37,46,49,53,108,101,102,59,10,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,
53,98,50,82,101,118,111,108,117,116,101,74,111,105,110,116,0,0,0,0,0,0,0,0,38,0,0,56,19,0,0,216,3,0,0,0,0,0,0,0,0,0,0,128,21,0,0,41,0,0,0,42,0,0,0,14,0,0,0,10,0,0,0,36,0,0,0,10,0,0,0,16,0,0,0,37,0,0,0,43,0,0,0,44,0,0,0,17,0,0,0,0,0,0,0,32,32,98,50,87,104,101,101,108,74,111,105,110,116,68,101,102,32,106,100,59,10,0,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,
10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,120,105,
115,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,32,32,106,100,46,101,110,97,98,108,101,77,111,116,111,114,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,32,32,106,100,46,109,111,116,111,114,83,112,101,101,100,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,32,32,106,100,46,109,97,120,77,111,116,111,114,84,111,114,113,117,101,32,61,32,37,46,49,53,108,101,102,59,10,0,32,32,106,100,46,102,114,101,113,117,101,110,99,121,72,122,32,61,32,37,46,49,53,108,101,102,
59,10,0,0,0,0,32,32,106,100,46,100,97,109,112,105,110,103,82,97,116,105,111,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,50,98,50,87,104,101,101,108,74,111,105,110,116,0,0,0,38,0,0,112,21,0,0,216,3,0,0,0,0,0,0,0,0,0,0,160,23,0,0,45,0,0,0,46,0,0,0,15,0,0,0,11,0,0,0,38,0,0,0,47,0,0,0,16,0,0,0,39,0,0,0,48,0,0,0,49,0,0,0,18,0,0,0,0,0,0,0,32,
32,98,50,80,117,108,108,101,121,74,111,105,110,116,68,101,102,32,106,100,59,10,0,32,32,106,100,46,98,111,100,121,65,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,98,111,100,121,66,32,61,32,98,111,100,105,101,115,91,37,100,93,59,10,0,0,0,0,0,0,0,32,32,106,100,46,99,111,108,108,105,100,101,67,111,110,110,101,99,116,101,100,32,61,32,98,111,111,108,40,37,100,41,59,10,0,0,0,0,0,0,32,32,106,100,46,103,114,111,117,110,100,65,110,99,104,111,114,65,46,83,101,116,40,37,46,
49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,32,32,106,100,46,103,114,111,117,110,100,65,110,99,104,111,114,66,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,65,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,111,99,97,108,65,110,99,104,111,114,66,46,83,101,116,40,37,46,49,53,108,101,102,44,32,37,46,49,53,108,
101,102,41,59,10,0,0,0,0,0,0,0,32,32,106,100,46,108,101,110,103,116,104,65,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,0,0,32,32,106,100,46,108,101,110,103,116,104,66,32,61,32,37,46,49,53,108,101,102,59,10,0,0,0,0,0,0,0,0,32,32,106,100,46,114,97,116,105,111,32,61,32,37,46,49,53,108,101,102,59,10,0,0,32,32,106,111,105,110,116,115,91,37,100,93,32,61,32,109,95,119,111,114,108,100,45,62,67,114,101,97,116,101,74,111,105,110,116,40,38,106,100,41,59,10,0,0,0,0,0,0,49,51,98,50,80,117,108,108,101,121,
74,111,105,110,116,0,0,38,0,0,144,23,0,0,216,3,0,0,0,0,0,0,0,0,0,0,0,24,0,0,7,0,0,0,40,0,0,0,41,0,0,0,0,0,0,0,50,52,98,50,67,104,97,105,110,65,110,100,80,111,108,121,103,111,110,67,111,110,116,97,99,116,0,0,0,0,0,0,57,98,50,67,111,110,116,97,99,116,0,0,0,0,0,0,216,37,0,0,232,23,0,0,0,38,0,0,200,23,0,0,248,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,23,0,0,1,0,0,0,40,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,40,25,0,0,8,0,0,0,40,0,0,0,43,0,0,0,0,0,0,0,50,53,98,50,80,111,108,121,103,111,110,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,0,0,0,0,0,0,38,0,0,8,25,0,0,248,23,0,0,0,0,0,0,0,0,0,0,104,25,0,0,9,0,0,0,40,0,
0,0,44,0,0,0,0,0,0,0,49,53,98,50,67,105,114,99,108,101,67,111,110,116,97,99,116,0,0,0,0,0,0,0,0,38,0,0,80,25,0,0,248,23,0,0,0,0,0,0,0,0,0,0,176,25,0,0,10,0,0,0,40,0,0,0,45,0,0,0,0,0,0,0,50,50,98,50,69,100,103,101,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,0,0,0,0,0,0,0,0,0,38,0,0,144,25,0,0,248,23,0,0,0,0,0,0,0,0,0,0,248,25,0,0,11,0,0,0,40,0,0,0,46,0,0,0,0,0,0,0,50,51,98,50,67,104,97,105,110,65,110,100,67,105,114,99,108,101,67,111,110,116,97,99,116,0,0,0,0,0,0,0,0,38,0,0,216,25,0,0,
248,23,0,0,0,0,0,0,0,0,0,0,64,26,0,0,12,0,0,0,40,0,0,0,47,0,0,0,0,0,0,0,50,51,98,50,69,100,103,101,65,110,100,80,111,108,121,103,111,110,67,111,110,116,97,99,116,0,0,0,0,0,0,0,0,38,0,0,32,26,0,0,248,23,0,0,0,0,0,0,0,0,0,0,128,26,0,0,13,0,0,0,40,0,0,0,48,0,0,0,0,0,0,0,49,54,98,50,80,111,108,121,103,111,110,67,111,110,116,97,99,116,0,0,0,0,0,0,0,38,0,0,104,26,0,0,248,23,0,0,0,0,0,0,72,3,0,0,0,0,0,0,168,26,0,0,0,0,0,0,0,0,0,0,120,1,0,0,5,0,0,0,49,0,0,0,50,0,0,0,51,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,
0,5,0,0,0,6,0,0,0,0,0,0,0,120,27,0,0,3,0,0,0,50,0,0,0,19,0,0,0,1,0,0,0,20,0,0,0,14,0,0,0,90,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,49,52,83,111,108,118,101,67,111,108,108,105,115,105,111,110,69,82,75,49,48,98,50,84,105,109,101,83,116,101,112,69,50,50,83,111,108,118,101,67,111,108,108,105,115,105,111,110,67,97,108,108,98,97,99,107,0,0,0,0,51,48,98,50,70,105,120,116,117,114,101,80,97,114,116,105,99,108,101,81,117,101,114,121,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,0,0,38,
0,0,64,27,0,0,248,0,0,0,0,0,0,0,0,38,0,0,240,26,0,0,104,27,0,0,0,0,0,0,0,0,0,0,240,27,0,0,3,0,0,0,51,0,0,0,19,0,0,0,1,0,0,0,20,0,0,0,15,0,0,0,90,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,49,56,85,112,100,97,116,101,66,111,100,121,67,111,110,116,97,99,116,115,69,118,69,50,54,85,112,100,97,116,101,66,111,100,121,67,111,110,116,97,99,116,115,67,97,108,108,98,97,99,107,0,0,38,0,0,168,27,0,0,104,27,0,0,0,0,0,0,0,0,0,0,168,28,0,0,52,0,0,0,53,0,0,0,16,0,0,0,0,0,0,0,90,78,49,54,98,
50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,50,48,85,112,100,97,116,101,80,97,105,114,115,65,110,100,84,114,105,97,100,115,69,105,105,82,75,78,83,95,49,54,67,111,110,110,101,99,116,105,111,110,70,105,108,116,101,114,69,69,50,48,85,112,100,97,116,101,84,114,105,97,100,115,67,97,108,108,98,97,99,107,0,0,0,0,78,49,54,98,50,86,111,114,111,110,111,105,68,105,97,103,114,97,109,49,50,78,111,100,101,67,97,108,108,98,97,99,107,69,0,0,0,0,0,0,216,37,0,0,120,28,0,0,0,38,0,0,24,28,0,0,160,28,0,0,0,
0,0,0,0,0,0,0,96,29,0,0,54,0,0,0,55,0,0,0,21,0,0,0,7,0,0,0,3,0,0,0,0,0,0,0,90,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,52,49,85,112,100,97,116,101,80,97,105,114,115,65,110,100,84,114,105,97,100,115,87,105,116,104,82,101,97,99,116,105,118,101,80,97,114,116,105,99,108,101,115,69,118,69,49,52,82,101,97,99,116,105,118,101,70,105,108,116,101,114,0,0,0,0,0,0,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,49,54,67,111,110,110,101,99,116,105,111,110,70,105,108,
116,101,114,69,0,0,216,37,0,0,48,29,0,0,0,38,0,0,216,28,0,0,88,29,0,0,0,0,0,0,0,0,0,0,88,29,0,0,54,0,0,0,56,0,0,0,22,0,0,0,7,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,16,30,0,0,54,0,0,0,57,0,0,0,22,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,90,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,49,56,74,111,105,110,80,97,114,116,105,99,108,101,71,114,111,117,112,115,69,80,49,53,98,50,80,97,114,116,105,99,108,101,71,114,111,117,112,83,49,95,69,50,52,74,111,105,110,80,97,114,116,105,99,108,101,71,114,111,117,
112,115,70,105,108,116,101,114,0,0,0,0,0,0,0,0,38,0,0,176,29,0,0,88,29,0,0,0,0,0,0,0,0,0,0,208,30,0,0,7,0,0,0,58,0,0,0,23,0,0,0,5,0,0,0,9,0,0,0,5,0,0,0,5,0,0,0,17,0,0,0,16,0,0,0,0,0,0,0,90,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,51,51,67,114,101,97,116,101,80,97,114,116,105,99,108,101,115,87,105,116,104,83,104,97,112,101,115,70,111,114,71,114,111,117,112,69,80,75,80,75,55,98,50,83,104,97,112,101,105,82,75,49,56,98,50,80,97,114,116,105,99,108,101,71,114,111,117,112,68,101,
102,82,75,49,49,98,50,84,114,97,110,115,102,111,114,109,69,49,52,67,111,109,112,111,115,105,116,101,83,104,97,112,101,0,0,0,0,0,0,38,0,0,80,30,0,0,48,2,0,0,0,0,0,0,0,0,0,0,112,31,0,0,3,0,0,0,59,0,0,0,24,0,0,0,10,0,0,0,3,0,0,0,0,0,0,0,90,78,49,54,98,50,80,97,114,116,105,99,108,101,83,121,115,116,101,109,50,51,68,101,115,116,114,111,121,80,97,114,116,105,99,108,101,115,73,110,83,104,97,112,101,69,82,75,55,98,50,83,104,97,112,101,82,75,49,49,98,50,84,114,97,110,115,102,111,114,109,98,69,51,49,68,101,
115,116,114,111,121,80,97,114,116,105,99,108,101,115,73,110,83,104,97,112,101,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,38,0,0,0,31,0,0,248,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,96,0,0,0,128,0,0,0,160,0,0,0,192,0,0,0,224,0,0,0,0,1,0,0,64,1,0,0,128,1,0,0,192,1,0,0,0,2,0,0,128,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,76,105,113,117,105,100,70,117,110,32,49,46,49,46,48,0,104,34,0,0,0,0,0,0,25,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,176,34,0,0,0,0,0,0,117,110,99,97,117,103,104,116,0,0,0,0,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,
121,112,101,32,37,115,58,32,37,115,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,0,0,0,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,0,0,116,101,114,109,105,110,97,116,105,110,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,
117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,0,0,0,0,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,0,0,0,0,0,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,
41,0,0,0,0,0,0,0,0,72,36,0,0,60,0,0,0,61,0,0,0,6,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,0,83,116,57,98,97,100,95,97,108,108,111,99,0,0,0,0,0,38,0,0,56,36,0,0,208,36,0,0,0,0,0,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,116,104,114,101,119,32,97,110,
32,101,120,99,101,112,116,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,116,57,101,120,99,101,112,116,105,111,110,0,0,0,0,216,37,0,0,192,36,0,0,83,116,57,116,121,112,101,95,105,110,102,111,0,0,0,0,216,37,0,0,216,36,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,0,0,38,0,0,240,36,0,0,232,36,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,
0,0,0,0,0,0,0,38,0,0,40,37,0,0,24,37,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,0,38,0,0,136,37,0,0,24,37,0,0,0,0,0,0,0,38,0,0,96,37,0,0,176,37,0,0,0,0,0,0,0,0,0,0,80,37,0,0,62,0,0,0,63,0,0,0,64,0,0,0,65,0,0,0,11,0,0,0,6,0,0,0,1,0,0,0,18,0,0,0,0,0,0,0,72,38,0,0,62,0,0,0,
66,0,0,0,64,0,0,0,65,0,0,0,11,0,0,0,7,0,0,0,2,0,0,0,19,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,38,0,0,32,38,0,0,80,37],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);
function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}var _cosf=Math_cos;
var _floorf=Math_floor;function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}
var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted)return ptr}return adjusted},addRef:function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++},decRef:function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0){if(info.destructor)Runtime.dynCall("vi",info.destructor,
[ptr]);delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}},clearRef:function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0}};function ___resumeException(ptr){if(!EXCEPTIONS.last)EXCEPTIONS.last=ptr;EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(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(asm["setTempRet0"](0),0)|0;var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype)return(asm["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(asm["setTempRet0"](typeArray[i]),thrown)|0}thrown=HEAP32[thrown>>2];return(asm["setTempRet0"](throwntype),thrown)|0}
function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0};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.";}Module["_memset"]=_memset;
function _b2WorldRayCastCallback(fixturePtr,pointX,pointY,normalX,normalY,fraction){return b2World.RayCast(fixturePtr,pointX,pointY,normalX,normalY,fraction)}var _FtoIHigh=true;function _abort(){Module["abort"]()}function _b2WorldBeginContactBody(contactPtr){b2World.BeginContactBody(contactPtr)}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Runtime.dynCall("v",func);_pthread_once.seen[ptr]=1}Module["_strlen"]=_strlen;var _sqrtf=Math_sqrt;
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"};var ___errno_state=0;function ___setErrNo(value){HEAP32[___errno_state>>2]=value;return value}
var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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(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(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(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;
return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)},resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string")throw new TypeError("Arguments to path.resolve must be strings");else if(!path)return"";
resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty)throw new FS.ErrnoError(ERRNO_CODES.ENODEV);stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(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(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(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){result=process["stdin"]["read"]();if(!result){if(process["stdin"]["_readableState"]&&process["stdin"]["_readableState"]["ended"])return null;return undefined}}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()},flush:function(tty){if(tty.output&&tty.output.length>0){Module["print"](tty.output.join(""));tty.output=[]}},put_char:function(tty,val){if(val===null||val===10){Module["print"](tty.output.join(""));tty.output=[]}else tty.output.push(TTY.utf8.processCChar(val))}},
default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){Module["printErr"](tty.output.join(""));tty.output=[]}else tty.output.push(TTY.utf8.processCChar(val))},flush:function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](tty.output.join(""));tty.output=[]}}}};
var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode))throw new FS.ErrnoError(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}},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(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(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(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.buffer.byteLength: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(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(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode))attr.size=
4096;else if(FS.isFile(node.mode))attr.size=node.usedBytes;else if(FS.isLink(node.mode))attr.size=node.link.length;else attr.size=0;attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined)node.mode=attr.mode;if(attr.timestamp!==undefined)node.timestamp=attr.timestamp;if(attr.size!==undefined)MEMFS.resizeFileStorage(node,
attr.size)},lookup:function(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT];},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node)for(var i in new_node.contents)throw new FS.ErrnoError(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(parent,name){delete parent.contents[name]},rmdir:function(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(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key))continue;entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,
0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);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(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(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(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(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}}}};
var IDBFS={dbs:{},indexedDB:function(){if(typeof indexedDB!=="undefined")return indexedDB;var ret=null;if(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){return MEMFS.mount.apply(null,arguments)},syncfs:function(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(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)}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);fileStore.createIndex("timestamp","timestamp",{unique:false})};req.onsuccess=function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db)};req.onerror=function(){callback(this.error)}},getLocalSet:function(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(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,function(err,db){if(err)return callback(err);var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readonly");transaction.onerror=
function(){callback(this.error)};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()}})},loadLocalEntry:function(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(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,{encoding:"binary",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(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(store,path,callback){var req=store.get(path);req.onsuccess=function(event){callback(null,event.target.result)};req.onerror=function(){callback(this.error)}},
storeRemoteEntry:function(store,path,entry,callback){var req=store.put(entry,path);req.onsuccess=function(){callback(null)};req.onerror=function(){callback(this.error)}},removeRemoteEntry:function(store,path,callback){var req=store.delete(path);req.onsuccess=function(){callback(null)};req.onerror=function(){callback(this.error)}},reconcile:function(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 errored=false;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(){done(this.error)};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(){NODEFS.isWindows=!!process.platform.match(/^win/)},mount:function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)},createNode:function(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(path){var stat;try{stat=
fs.lstatSync(path);if(NODEFS.isWindows)stat.mode=stat.mode|(stat.mode&146)>>1}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}return stat.mode},realPath:function(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)},flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",
1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function(flags){if(flags in NODEFS.flagsToPermissionStringMap)return NODEFS.flagsToPermissionStringMap[flags];else return flags},node_ops:{getattr:function(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(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(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)},mknod:function(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(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(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(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(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(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(node){var path=NODEFS.realPath(node);try{return fs.readlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}}},stream_ops:{open:function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode))stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code]);}},close:function(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(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}if(res>0)for(var i=0;i<res;i++)buffer[offset+i]=nbuffer[i];return res},write:function(stream,buffer,offset,length,position){var nbuffer=new Buffer(buffer.subarray(offset,offset+length));var res;try{res=fs.writeSync(stream.nfd,
nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code]);}return res},llseek:function(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 _stdin=allocate(1,"i32*",ALLOC_STATIC);
var _stdout=allocate(1,"i32*",ALLOC_STATIC);var _stderr=allocate(1,"i32*",ALLOC_STATIC);function _fflush(stream){}
var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},handleFSError:function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)},lookupPath:function(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(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(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(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(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(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(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(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&
writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&
61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(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(str){var flags=FS.flagModes[str];if(typeof flags===
"undefined")throw new Error("Unknown file open mode: "+str);return flags},flagsToPermissionString:function(flag){var accmode=flag&2097155;var perms=["r","w","rw"][accmode];if(flag&512)perms+="w";return perms},nodePermissions:function(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(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(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(node,flags){if(!node)return ERRNO_CODES.ENOENT;if(FS.isLink(node.mode))return ERRNO_CODES.ELOOP;else if(FS.isDir(node.mode))if((flags&2097155)!==0||flags&512)return ERRNO_CODES.EISDIR;return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(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(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==
0}},isAppend:{get:function(){return this.flags&1024}}})}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(fd){FS.streams[fd]=null},getStreamFromPtr:function(ptr){return FS.streams[ptr-1]},getPtrForStream:function(stream){return stream?stream.fd+1:0},chrdev_stream_ops:{open:function(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(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(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(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length)callback(null)}mounts.forEach(function(mount){if(!mount.type.syncfs)return done(null);mount.type.syncfs(mount,populate,done)})},mount:function(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(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(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(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(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(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(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(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(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(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){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;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(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 link.node_ops.readlink(link)},stat:function(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(path){return FS.stat(path,
true)},chmod:function(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(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);FS.chmod(stream.node,mode)},
chown:function(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(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(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(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(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(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(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==="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(!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;Module["printErr"]("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(stream){try{if(stream.stream_ops.close)stream.stream_ops.close(stream)}catch(e){throw e;}finally{FS.closeStream(stream.fd)}},
llseek:function(stream,offset,whence){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(stream,buffer,offset,length,position){if(length<0||position<0)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);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=true;if(typeof position==="undefined"){position=stream.position;seeking=false}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(stream,buffer,offset,length,position,canOwn){if(length<0||position<0)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);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=true;if(typeof position==="undefined"){position=stream.position;seeking=false}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(stream,offset,length){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(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(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)},ioctl:function(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(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="";var utf8=new Runtime.UTF8Processor;for(var i=0;i<
length;i++)ret+=utf8.processCChar(buf[i])}else if(opts.encoding==="binary")ret=buf;FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&opts.encoding!=="binary")throw new Error('Invalid encoding type "'+opts.encoding+'"');var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var utf8=new Runtime.UTF8Processor;var buf=new Uint8Array(utf8.processJSString(data));FS.write(stream,
buf,0,buf.length,0,opts.canOwn)}else if(opts.encoding==="binary")FS.write(stream,data,0,data.length,0,opts.canOwn);FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});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(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},
createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(){return 0}});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(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE)random_device=
function(){return require("crypto").randomBytes(1)[0]};else random_device=function(){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")},createStandardStreams:function(){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");HEAP32[_stdin>>2]=FS.getPtrForStream(stdin);assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");HEAP32[_stdout>>2]=FS.getPtrForStream(stdout);assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");HEAP32[_stderr>>2]=FS.getPtrForStream(stderr);assert(stderr.fd===
2,"invalid handle for stderr ("+stderr.fd+")")},ensureErrnoError:function(){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]};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(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices()},init:function(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(){FS.init.initialized=false;for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream)continue;FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},joinPath:function(parts,forceRelative){var path=PATH.join.apply(null,parts);if(forceRelative&&path[0]=="/")path=path.substr(1);
return path},absolutePath:function(relative,base){return PATH.resolve(base,relative)},standardizePath:function(path){return PATH.normalize(path)},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists)return ret.object;else{___setErrNo(ret.error);return null}},analyzePath:function(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(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(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(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(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(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(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&
output.buffer.length)output(10)},read:function(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(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(parent,name,target,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);return FS.symlink(target,path)},forceLoadFile:function(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(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 chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(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]});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.defineProperty(lazyArray,"length",{get:function(){if(!this.lengthKnown)this.cacheLength();return this._length}});Object.defineProperty(lazyArray,"chunkSize",{get:function(){if(!this.lengthKnown)this.cacheLength();return this._chunkSize}});var properties={isDevice:false,contents:lazyArray}}else var properties={isDevice:false,url:url};var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents)node.contents=properties.contents;else if(properties.url){node.contents=
null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:function(){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(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn){Browser.init();var fullname=name?PATH.resolve(PATH.join2(parent,
name)):parent;function processData(byteArray){function finish(byteArray){if(!dontCreateFile)FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn);if(onload)onload();removeRunDependency("cp "+fullname)}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("cp "+fullname)});handled=true}});if(!handled)finish(byteArray)}addRunDependency("cp "+
fullname);if(typeof url=="string")Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror);else processData(url)},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(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(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}};function _mkport(){throw"TODO";}
var SOCKFS={mount:function(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=function(event,callback){if("function"===typeof callback)this._callbacks[event]=callback;return this};Module["websocket"].emit=function(event,param){if("function"===typeof this._callbacks[event])this._callbacks[event].call(this,param)};return FS.createNode(null,"/",16384|511,0)},createSocket:function(family,
type,protocol){var streaming=type==1;if(protocol)assert(streaming==(protocol==6));var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:FS.modeStringToFlags("r+"),seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket:function(fd){var stream=
FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode))return null;return stream.node.sock},stream_ops:{poll:function(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl:function(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read:function(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg)return 0;buffer.set(msg.buffer,offset);return msg.buffer.length},write:function(stream,
buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close:function(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname:function(){if(!SOCKFS.nextname.current)SOCKFS.nextname.current=0;return"socket["+SOCKFS.nextname.current++ +"]"},websocket_sock_ops:{createPeer:function(sock,addr,port){var ws;if(typeof addr==="object"){ws=addr;addr=null;port=null}if(ws)if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=
/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result)throw new Error("WebSocket URL must be in the format ws(s)://address:port");addr=result[1];port=parseInt(result[2],10)}else try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig)if("string"===typeof Module["websocket"]["url"])url=Module["websocket"]["url"];if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols=
"binary";if(runtimeConfig)if("string"===typeof Module["websocket"]["subprotocol"])subProtocols=Module["websocket"]["subprotocol"];subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);var opts=ENVIRONMENT_IS_NODE?{"protocol":subProtocols.toString()}:subProtocols;var WebSocket=ENVIRONMENT_IS_NODE?require("ws"):window["WebSocket"];ws=new WebSocket(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH);}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};
SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!=="undefined")peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]));return peer},getPeer:function(sock,addr,port){return sock.peers[addr+":"+port]},addPeer:function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer:function(sock,peer){delete sock.peers[peer.addr+
":"+peer.port]},handlePeerEvents:function(sock,peer){var first=true;var handleOpen=function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){assert(typeof data!=="string"&&data.byteLength!==undefined);data=new Uint8Array(data);var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&
data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,
flags){if(!flags.binary)return;handleMessage((new Uint8Array(data)).buffer)});peer.socket.on("close",function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module["websocket"].emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};
peer.socket.onerror=function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll:function(sock){if(sock.type===1&&sock.server)return sock.pending.length?64|1:0;var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED)mask|=64|
1;if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN)mask|=4;if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED)mask|=16;return mask},ioctl:function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length)bytes=sock.recv_queue[0].data.length;HEAP32[arg>>2]=bytes;return 0;default:return ERRNO_CODES.EINVAL}},close:function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);
for(var i=0;i<peers.length;i++){var peer=sock.peers[peers[i]];try{peer.socket.close()}catch(e){}SOCKFS.websocket_sock_ops.removePeer(sock,peer)}return 0},bind:function(sock,addr,port){if(typeof sock.saddr!=="undefined"||typeof sock.sport!=="undefined")throw new FS.ErrnoError(ERRNO_CODES.EINVAL);sock.saddr=addr;sock.sport=port||_mkport();if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e instanceof FS.ErrnoError))throw e;if(e.errno!==
ERRNO_CODES.EOPNOTSUPP)throw e;}}},connect:function(sock,addr,port){if(sock.server)throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);if(typeof sock.daddr!=="undefined"&&typeof sock.dport!=="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest)if(dest.socket.readyState===dest.socket.CONNECTING)throw new FS.ErrnoError(ERRNO_CODES.EALREADY);else throw new FS.ErrnoError(ERRNO_CODES.EISCONN);}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;
sock.dport=peer.port;throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS);},listen:function(sock,backlog){if(!ENVIRONMENT_IS_NODE)throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);if(sock.server)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var WebSocketServer=require("ws").Server;var host=sock.saddr;sock.server=new WebSocketServer({host:host,port:sock.sport});Module["websocket"].emit("listen",sock.stream.fd);sock.server.on("connection",function(ws){if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,
sock.type,sock.protocol);var peer=SOCKFS.websocket_sock_ops.createPeer(newsock,ws);newsock.daddr=peer.addr;newsock.dport=peer.port;sock.pending.push(newsock);Module["websocket"].emit("connection",newsock.stream.fd)}else{SOCKFS.websocket_sock_ops.createPeer(sock,ws);Module["websocket"].emit("connection",sock.stream.fd)}});sock.server.on("closed",function(){Module["websocket"].emit("close",sock.stream.fd);sock.server=null});sock.server.on("error",function(error){sock.error=ERRNO_CODES.EHOSTUNREACH;
Module["websocket"].emit("error",[sock.stream.fd,sock.error,"EHOSTUNREACH: Host is unreachable"])})},accept:function(listensock){if(!listensock.server)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname:function(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined)throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=
sock.sport||0}return{addr:addr,port:port}},sendmsg:function(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined)throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ);}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1)if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED)throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
else if(dest.socket.readyState===dest.socket.CONNECTING)throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);var data;if(buffer instanceof Array||buffer instanceof ArrayBuffer)data=buffer.slice(offset,offset+length);else data=buffer.buffer.slice(buffer.byteOffset+offset,buffer.byteOffset+offset+length);if(sock.type===2)if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED)dest=SOCKFS.websocket_sock_ops.createPeer(sock,
addr,port);dest.dgram_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EINVAL);}},recvmsg:function(sock,length){if(sock.type===1&&sock.server)throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);var queued=sock.recv_queue.shift();if(!queued)if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest)throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);else if(dest.socket.readyState===dest.socket.CLOSING||
dest.socket.readyState===dest.socket.CLOSED)return null;else throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);}else throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead<queuedLength){var bytesRemaining=
queuedLength-bytesRead;queued.data=new Uint8Array(queuedBuffer,queuedOffset+bytesRead,bytesRemaining);sock.recv_queue.unshift(queued)}return res}}};function _send(fd,buf,len,flags){var sock=SOCKFS.getSocket(fd);if(!sock){___setErrNo(ERRNO_CODES.EBADF);return-1}return _write(fd,buf,len)}
function _pwrite(fildes,buf,nbyte,offset){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}try{var slab=HEAP8;return FS.write(stream,slab,buf,nbyte,offset)}catch(e){FS.handleFSError(e);return-1}}function _write(fildes,buf,nbyte){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}try{var slab=HEAP8;return FS.write(stream,slab,buf,nbyte)}catch(e){FS.handleFSError(e);return-1}}
function _fileno(stream){stream=FS.getStreamFromPtr(stream);if(!stream)return-1;return stream.fd}function _fputc(c,stream){var chr=unSign(c&255);HEAP8[_fputc.ret>>0]=chr;var fd=_fileno(stream);var ret=_write(fd,_fputc.ret,1);if(ret==-1){var streamObj=FS.getStreamFromPtr(stream);if(streamObj)streamObj.error=true;return-1}else return chr}var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}
function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 79:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;
case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;
case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}___setErrNo(ERRNO_CODES.EINVAL);return-1}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 _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func)return 1;if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler(){setTimeout(Browser.mainLoop.runner,value)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}return 0}
function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop,arg){Module["noExitRuntime"]=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=func;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;
if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted)Browser.mainLoop.remainingBlockers=next;else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();
setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}if(Browser.mainLoop.method==="timeout"&&Module.ctx){Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");
Browser.mainLoop.method=""}Browser.mainLoop.runIter(function(){if(typeof arg!=="undefined")Runtime.dynCall("vi",func,[arg]);else Runtime.dynCall("v",func)});if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1E3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler();if(simulateInfiniteLoop)throw"SimulateInfiniteLoop";
}
var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg);_emscripten_set_main_loop_timing(timingMode,
timingValue)},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining)if(remaining<expected)Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")");else Module["setStatus"](message);else Module["setStatus"]("")}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false)return}try{func()}catch(e){if(e instanceof
ExitStatus)return;else{if(e&&typeof e==="object"&&e.stack)Module.printErr("exception thrown: "+[e,e.stack]);throw e;}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=
typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin=
{};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor)try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length)b=new Blob([(new Uint8Array(byteArray)).buffer],{type:Browser.getMimetype(name)})}catch(e){Runtime.warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}if(!b){var bb=
new Browser.BlobBuilder;bb.append((new Uint8Array(byteArray)).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=
function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}
function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");
function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);
finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1E4)}else return fail()};Module["preloadPlugins"].push(audioPlugin);var canvas=Module["canvas"];function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===canvas||document["mozPointerLockElement"]===canvas||document["webkitPointerLockElement"]===canvas||document["msPointerLockElement"]===canvas}if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||
canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",
pointerLockChange,false);if(Module["elementPointerLock"])canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&canvas.requestPointerLock){canvas.requestPointerLock();ev.preventDefault()}},false)}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes)for(var attribute in webGLContextAttributes)contextAttributes[attribute]=
webGLContextAttributes[attribute];contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle)ctx=GL.getContext(contextHandle).GLctx;canvas.style.backgroundColor="black"}else ctx=canvas.getContext("2d");if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});
Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullScreenChange(){Browser.isFullScreen=false;
var canvasContainer=canvas.parentNode;if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.cancelFullScreen=document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||document["msExitFullscreen"]||
document["exitFullscreen"]||function(){};canvas.cancelFullScreen=canvas.cancelFullScreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullScreen=true;if(Browser.resizeCanvas)Browser.setFullScreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullScreen);Browser.updateCanvasDimensions(canvas)}
if(!Browser.fullScreenHandlersInstalled){Browser.fullScreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullScreenChange,false);document.addEventListener("mozfullscreenchange",fullScreenChange,false);document.addEventListener("webkitfullscreenchange",fullScreenChange,false);document.addEventListener("MSFullscreenChange",fullScreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);
canvasContainer.requestFullScreen=canvasContainer["requestFullScreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullScreen()},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=now+1E3/60;else while(now+2>=Browser.nextRAF)Browser.nextRAF+=1E3/
60;var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function requestAnimationFrame(func){if(typeof window==="undefined")Browser.fakeRequestAnimationFrame(func);else{if(!window.requestAnimationFrame)window.requestAnimationFrame=window["requestAnimationFrame"]||window["mozRequestAnimationFrame"]||window["webkitRequestAnimationFrame"]||window["msRequestAnimationFrame"]||window["oRequestAnimationFrame"]||Browser.fakeRequestAnimationFrame;window.requestAnimationFrame(func)}},
safeCallback:function(func){return function(){if(!ABORT)return func.apply(null,arguments)}},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(!ABORT)func()})},safeSetTimeout:function(func,timeout){Module["noExitRuntime"]=true;return setTimeout(function(){if(!ABORT)func()},timeout)},safeSetInterval:function(func,timeout){Module["noExitRuntime"]=true;return setInterval(function(){if(!ABORT)func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg",
"jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia)window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"];window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||
0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case "DOMMouseScroll":delta=event.detail;break;case "mousewheel":delta=event.wheelDelta;break;case "wheel":delta=event["deltaY"];break;default:throw"unrecognized mouse wheel event: "+event.type;}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event)Browser.mouseMovementX=Browser.mouseMovementY=
0;else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;
var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined)return;var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=
coords}else if(event.type==="touchend"||event.type==="touchmove"){Browser.lastTouches[touch.identifier]=Browser.touches[touch.identifier];Browser.touches[touch.identifier]={x:adjustedX,y:adjustedY}}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},xhrLoad:function(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);else onerror()};xhr.onerror=onerror;xhr.send(null)},asyncLoad:function(url,onload,onerror,noRunDep){Browser.xhrLoad(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(!noRunDep)removeRunDependency("al "+url)},function(event){if(onerror)onerror();else throw'Loading data file "'+
url+'" failed.';});if(!noRunDep)addRunDependency("al "+url)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=
HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=
canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0)if(w/h<Module["forcedAspectRatio"])w=Math.round(h*Module["forcedAspectRatio"]);else h=Math.round(w/Module["forcedAspectRatio"]);if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||
document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=
hNative)canvas.height=hNative;if(typeof canvas.style!="undefined")if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};
function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC))return ERRNO_CODES.EINVAL;PTHREAD_SPECIFIC[key]=value;return 0}function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function ___cxa_allocate_exception(size){return _malloc(size)}Module["_i64Add"]=_i64Add;function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!";}function _b2WorldEndContactBody(contactPtr){b2World.EndContactBody(contactPtr)}
function _time(ptr){var ret=Date.now()/1E3|0;if(ptr)HEAP32[ptr>>2]=ret;return ret}function _b2WorldPreSolve(contactPtr,oldManifoldPtr){b2World.PreSolve(contactPtr,oldManifoldPtr)}function _fwrite(ptr,size,nitems,stream){var bytesToWrite=nitems*size;if(bytesToWrite==0)return 0;var fd=_fileno(stream);var bytesWritten=_write(fd,ptr,bytesToWrite);if(bytesWritten==-1){var streamObj=FS.getStreamFromPtr(stream);if(streamObj)streamObj.error=true;return 0}else return bytesWritten/size|0}
function __reallyNegative(x){return x<0||x===0&&1/x===-Infinity}
function __formatString(format,varargs){var textIndex=format;var argIndex=0;function getNextArg(type){var ret;if(type==="double")ret=(HEAP32[tempDoublePtr>>2]=HEAP32[varargs+argIndex>>2],HEAP32[tempDoublePtr+4>>2]=HEAP32[varargs+(argIndex+4)>>2],+HEAPF64[tempDoublePtr>>3]);else if(type=="i64")ret=[HEAP32[varargs+argIndex>>2],HEAP32[varargs+(argIndex+4)>>2]];else{type="i32";ret=HEAP32[varargs+argIndex>>2]}argIndex+=Runtime.getNativeFieldSize(type);return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=
textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad)break flagsLoop;else{flagZeroPad=true;break}case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+
1>>0]}var width=0;if(next==42){width=getNextArg("i32");textIndex++;next=HEAP8[textIndex+1>>0]}else while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg("i32");textIndex++}else while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}next=
HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case "h":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else argSize=2;break;case "l":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else argSize=4;break;case "L":case "q":case "j":argSize=8;break;case "z":case "t":case "I":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case "d":case "i":case "u":case "o":case "x":case "X":case "p":var signed=
next==100||next==105;argSize=argSize||4;var currArg=getNextArg("i"+argSize*8);var origArg=currArg;var argText;if(argSize==8)currArg=Runtime.makeBigInt(currArg[0],currArg[1],next==117);if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix="";if(next==100||next==105)if(argSize==8&&i64Math)argText=i64Math.stringify(origArg[0],origArg[1],null);else argText=reSign(currArg,8*argSize,1).toString(10);else if(next==
117){if(argSize==8&&i64Math)argText=i64Math.stringify(origArg[0],origArg[1],true);else argText=unSign(currArg,8*argSize,1).toString(10);currArg=Math.abs(currArg)}else if(next==111)argText=(flagAlternative?"0":"")+currAbsArg.toString(8);else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?"0x":"";if(argSize==8&&i64Math)if(origArg[1]){argText=(origArg[1]>>>0).toString(16);var lower=(origArg[0]>>>0).toString(16);while(lower.length<8)lower="0"+lower;argText+=lower}else argText=(origArg[0]>>>
0).toString(16);else if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i<argText.length;i++)buffer.push((15-parseInt(argText[i],16)).toString(16));argText=buffer.join("");while(argText.length<argSize*2)argText="f"+argText}else argText=currAbsArg.toString(16);if(next==88){prefix=prefix.toUpperCase();argText=argText.toUpperCase()}}else if(next==112)if(currAbsArg===0)argText="(nil)";else{prefix="0x";argText=currAbsArg.toString(16)}if(precisionSet)while(argText.length<
precision)argText="0"+argText;if(currArg>=0)if(flagAlwaysSigned)prefix="+"+prefix;else if(flagPadSign)prefix=" "+prefix;if(argText.charAt(0)=="-"){prefix="-"+prefix;argText=argText.substr(1)}while(prefix.length+argText.length<width)if(flagLeftAlign)argText+=" ";else if(flagZeroPad)argText="0"+argText;else prefix=" "+prefix;argText=prefix+argText;argText.split("").forEach(function(chr){ret.push(chr.charCodeAt(0))});break;case "f":case "F":case "e":case "E":case "g":case "G":var currArg=getNextArg("double");
var argText;if(isNaN(currArg)){argText="nan";flagZeroPad=false}else if(!isFinite(currArg)){argText=(currArg<0?"-":"")+"inf";flagZeroPad=false}else{var isGeneral=false;var effectivePrecision=Math.min(precision,20);if(next==103||next==71){isGeneral=true;precision=precision||1;var exponent=parseInt(currArg.toExponential(effectivePrecision).split("e")[1],10);if(precision>exponent&&exponent>=-4){next=(next==103?"f":"F").charCodeAt(0);precision-=exponent+1}else{next=(next==103?"e":"E").charCodeAt(0);precision--}effectivePrecision=
Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\d$/.test(argText))argText=argText.slice(0,-1)+"0"+argText.slice(-1)}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&__reallyNegative(currArg))argText="-"+argText}var parts=argText.split("e");if(isGeneral&&!flagAlternative)while(parts[0].length>1&&parts[0].indexOf(".")!=-1&&(parts[0].slice(-1)=="0"||parts[0].slice(-1)=="."))parts[0]=parts[0].slice(0,
-1);else{if(flagAlternative&&argText.indexOf(".")==-1)parts[0]+=".";while(precision>effectivePrecision++)parts[0]+="0"}argText=parts[0]+(parts.length>1?"e"+parts[1]:"");if(next==69)argText=argText.toUpperCase();if(currArg>=0)if(flagAlwaysSigned)argText="+"+argText;else if(flagPadSign)argText=" "+argText}while(argText.length<width)if(flagLeftAlign)argText+=" ";else if(flagZeroPad&&(argText[0]=="-"||argText[0]=="+"))argText=argText[0]+"0"+argText.slice(1);else argText=(flagZeroPad?"0":" ")+argText;
if(next<97)argText=argText.toUpperCase();argText.split("").forEach(function(chr){ret.push(chr.charCodeAt(0))});break;case "s":var arg=getNextArg("i8*");var argLength=arg?_strlen(arg):"(null)".length;if(precisionSet)argLength=Math.min(argLength,precision);if(!flagLeftAlign)while(argLength<width--)ret.push(32);if(arg)for(var i=0;i<argLength;i++)ret.push(HEAPU8[arg++>>0]);else ret=ret.concat(intArrayFromString("(null)".substr(0,argLength),true));if(flagLeftAlign)while(argLength<width--)ret.push(32);
break;case "c":if(flagLeftAlign)ret.push(getNextArg("i8"));while(--width>0)ret.push(32);if(!flagLeftAlign)ret.push(getNextArg("i8"));break;case "n":var ptr=getNextArg("i32*");HEAP32[ptr>>2]=ret.length;break;case "%":ret.push(curr);break;default:for(var i=startTextIndex;i<textIndex+2;i++)ret.push(HEAP8[i>>0])}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}
function _fprintf(stream,format,varargs){var result=__formatString(format,varargs);var stack=Runtime.stackSave();var ret=_fwrite(allocate(result,"i8",ALLOC_STACK),1,result.length,stream);Runtime.stackRestore(stack);return ret}function _vfprintf(s,f,va_arg){return _fprintf(s,f,HEAP32[va_arg>>2])}function ___cxa_begin_catch(ptr){__ZSt18uncaught_exceptionv.uncaught_exception--;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}var _sinf=Math_sin;
function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function _b2WorldQueryAABB(fixturePtr){return b2World.QueryAABB(fixturePtr)}
function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=function(){abort("cannot dynamically allocate, sbrk now has control")}}var ret=DYNAMICTOP;if(bytes!=0)self.alloc(bytes);return ret}Module["_memmove"]=_memmove;function ___errno_location(){return ___errno_state}function _b2WorldPostSolve(contactPtr,impulsePtr){b2World.PostSolve(contactPtr,impulsePtr)}
var _FtoILow=true;_fputc.ret=allocate([0],"i8",ALLOC_STATIC);FS.staticInit();__ATINIT__.unshift({func:function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}});__ATMAIN__.push({func:function(){FS.ignorePermissions=false}});__ATEXIT__.push({func:function(){FS.quit()}});Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;
Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;___errno_state=Runtime.staticAlloc(4);HEAP32[___errno_state>>2]=0;__ATINIT__.unshift({func:function(){TTY.init()}});__ATEXIT__.push({func:function(){TTY.shutdown()}});TTY.utf8=new Runtime.UTF8Processor;if(ENVIRONMENT_IS_NODE){var fs=require("fs");NODEFS.staticInit()}__ATINIT__.push({func:function(){SOCKFS.root=FS.mount(SOCKFS,{},null)}});
Module["requestFullScreen"]=function Module_requestFullScreen(lockPointer,resizeCanvas){Browser.requestFullScreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};
Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE<TOTAL_MEMORY,"TOTAL_MEMORY not big enough for stack");
var ctlz_i8=allocate([8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"i8",ALLOC_DYNAMIC);
var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_DYNAMIC);function invoke_diiiiid(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_diiiiid"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}
function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_did(index,a1,a2){try{return Module["dynCall_did"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}
function invoke_diiiid(index,a1,a2,a3,a4,a5){try{return Module["dynCall_diiiid"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_vii(index,a1,a2){try{Module["dynCall_vii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}
function invoke_viii(index,a1,a2,a3){try{Module["dynCall_viii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_v(index){try{Module["dynCall_v"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viid(index,a1,a2,a3){try{Module["dynCall_viid"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}
function invoke_iiiii(index,a1,a2,a3,a4){try{return Module["dynCall_iiiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}
function invoke_iii(index,a1,a2){try{return Module["dynCall_iii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){try{return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}
function invoke_viiii(index,a1,a2,a3,a4){try{Module["dynCall_viiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array};
Module.asmLibraryArg={"abort":abort,"assert":assert,"min":Math_min,"invoke_diiiiid":invoke_diiiiid,"invoke_ii":invoke_ii,"invoke_viiiii":invoke_viiiii,"invoke_did":invoke_did,"invoke_vi":invoke_vi,"invoke_diiiid":invoke_diiiid,"invoke_vii":invoke_vii,"invoke_iiii":invoke_iiii,"invoke_viii":invoke_viii,"invoke_v":invoke_v,"invoke_viid":invoke_viid,"invoke_iiiii":invoke_iiiii,"invoke_viiiiii":invoke_viiiiii,"invoke_iii":invoke_iii,"invoke_iiiiii":invoke_iiiiii,"invoke_viiii":invoke_viiii,"__formatString":__formatString,
"_cosf":_cosf,"_send":_send,"_sqrtf":_sqrtf,"_emscripten_set_main_loop_timing":_emscripten_set_main_loop_timing,"_vfprintf":_vfprintf,"___cxa_allocate_exception":___cxa_allocate_exception,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"_fflush":_fflush,"_pwrite":_pwrite,"__reallyNegative":__reallyNegative,"___setErrNo":___setErrNo,"_sbrk":_sbrk,"___cxa_begin_catch":___cxa_begin_catch,"_sinf":_sinf,"_fileno":_fileno,"___resumeException":___resumeException,"___cxa_find_matching_catch":___cxa_find_matching_catch,
"_b2WorldRayCastCallback":_b2WorldRayCastCallback,"_pthread_getspecific":_pthread_getspecific,"_emscripten_memcpy_big":_emscripten_memcpy_big,"_pthread_once":_pthread_once,"_mkport":_mkport,"_floorf":_floorf,"_pthread_key_create":_pthread_key_create,"_write":_write,"_b2WorldBeginContactBody":_b2WorldBeginContactBody,"___errno_location":___errno_location,"_pthread_setspecific":_pthread_setspecific,"_fputc":_fputc,"___cxa_throw":___cxa_throw,"_sysconf":_sysconf,"_emscripten_set_main_loop":_emscripten_set_main_loop,
"_abort":_abort,"_fwrite":_fwrite,"_time":_time,"_fprintf":_fprintf,"_b2WorldEndContactBody":_b2WorldEndContactBody,"_b2WorldQueryAABB":_b2WorldQueryAABB,"_b2WorldPostSolve":_b2WorldPostSolve,"___cxa_pure_virtual":___cxa_pure_virtual,"_b2WorldPreSolve":_b2WorldPreSolve,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"cttz_i8":cttz_i8,"ctlz_i8":ctlz_i8,"NaN":NaN,"Infinity":Infinity,"_stderr":_stderr};
var asm=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.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.cttz_i8|0;var n=env.ctlz_i8|0;var o=env._stderr|0;var p=0;var q=0;
var r=0;var s=0;var t=+env.NaN,u=+env.Infinity;var v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=0;var N=0;var O=global.Math.floor;var P=global.Math.abs;var Q=global.Math.sqrt;var R=global.Math.pow;var S=global.Math.cos;var T=global.Math.sin;var U=global.Math.tan;var V=global.Math.acos;var W=global.Math.asin;var X=global.Math.atan;var Y=global.Math.atan2;var Z=global.Math.exp;var _=global.Math.log;var $=global.Math.ceil;var aa=global.Math.imul;
var ba=env.abort;var ca=env.assert;var da=env.min;var ea=env.invoke_diiiiid;var fa=env.invoke_ii;var ga=env.invoke_viiiii;var ha=env.invoke_did;var ia=env.invoke_vi;var ja=env.invoke_diiiid;var ka=env.invoke_vii;var la=env.invoke_iiii;var ma=env.invoke_viii;var na=env.invoke_v;var oa=env.invoke_viid;var pa=env.invoke_iiiii;var qa=env.invoke_viiiiii;var ra=env.invoke_iii;var sa=env.invoke_iiiiii;var ta=env.invoke_viiii;var ua=env.__formatString;var va=env._cosf;var wa=env._send;var xa=env._sqrtf;var ya=
env._emscripten_set_main_loop_timing;var za=env._vfprintf;var Aa=env.___cxa_allocate_exception;var Ba=env.__ZSt18uncaught_exceptionv;var Ca=env._fflush;var Da=env._pwrite;var Ea=env.__reallyNegative;var Fa=env.___setErrNo;var Ga=env._sbrk;var Ha=env.___cxa_begin_catch;var Ia=env._sinf;var Ja=env._fileno;var Ka=env.___resumeException;var La=env.___cxa_find_matching_catch;var Ma=env._b2WorldRayCastCallback;var Na=env._pthread_getspecific;var Oa=env._emscripten_memcpy_big;var Pa=env._pthread_once;var Qa=
env._mkport;var Ra=env._floorf;var Sa=env._pthread_key_create;var Ta=env._write;var Ua=env._b2WorldBeginContactBody;var Va=env.___errno_location;var Wa=env._pthread_setspecific;var Xa=env._fputc;var Ya=env.___cxa_throw;var Za=env._sysconf;var _a=env._emscripten_set_main_loop;var $a=env._abort;var ab=env._fwrite;var bb=env._time;var cb=env._fprintf;var db=env._b2WorldEndContactBody;var eb=env._b2WorldQueryAABB;var fb=env._b2WorldPostSolve;var gb=env.___cxa_pure_virtual;var hb=env._b2WorldPreSolve;
var ib=0;function Tk(b,d){b=b|0;d=d|0;var e=0,f=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=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;e=i;i=i+48|0;f=e;h=e+16|0;j=b+44|0;k=c[j>>2]|0;if((k|0)>0){l=c[b+88>>2]|0;m=b+104|0;n=0;do{if((c[l+(n<<2)>>2]&1028|0)==1028){o=c[m>>2]|0;g[o+(n<<3)>>2]=0;g[o+(n<<3)+4>>2]=0}n=n+1|0}while((n|0)<(k|0))}p=+g[d>>2]*
2.5;k=b+252|0;if((c[k>>2]|0)<=0){i=e;return}n=b+248|0;m=b+96|0;l=f+8|0;o=b+144|0;q=b+104|0;r=h+16|0;s=h+20|0;t=h+4|0;u=b+32|0;v=b+320|0;w=d+4|0;d=b+88|0;x=b+21|0;y=b+112|0;z=0;do{A=c[n>>2]|0;a:do if(c[A+(z*20|0)+8>>2]&1024){B=c[A+(z*20|0)>>2]|0;C=c[A+(z*20|0)+4>>2]|0;D=c[m>>2]|0;E=D+(B<<3)|0;F=+g[E>>2];G=+g[E+4>>2];E=D+(C<<3)|0;H=+g[E>>2];I=+g[E+4>>2];J=+(F<H?F:H);K=+(G<I?G:I);E=f;g[E>>2]=J;g[E+4>>2]=K;K=+(F>H?F:H);J=+(G>I?G:I);E=l;g[E>>2]=K;g[E+4>>2]=J;E=c[o>>2]|0;D=c[E+(B<<2)>>2]|0;L=c[E+(C<<2)>>
2]|0;if((D|0)!=0?(c[D+12>>2]&2|0)!=0:0){ik(D);J=+g[D+56>>2];M=+g[D+48>>2]-J*(G-+g[D+44>>2]);N=J*(F-+g[D+40>>2])+ +g[D+52>>2]}else{E=(c[q>>2]|0)+(B<<3)|0;J=+g[E>>2];M=J;N=+g[E+4>>2]}if((L|0)!=0?(c[L+12>>2]&2|0)!=0:0){ik(L);J=+g[L+56>>2];O=+g[L+48>>2]-J*(I-+g[L+44>>2]);P=J*(H-+g[L+40>>2])+ +g[L+52>>2]}else{E=(c[q>>2]|0)+(C<<3)|0;J=+g[E>>2];O=J;P=+g[E+4>>2]}J=H-F;H=I-G;I=O-M;K=P-N;Hk(h,b,f);E=c[r>>2]|0;C=c[s>>2]|0;if(E>>>0<C>>>0){B=c[h>>2]|0;R=c[t>>2]|0;S=E;while(1){E=c[S+4>>2]&1048575;T=S;S=S+8|0;if(E>>>
0<B>>>0|E>>>0>R>>>0)if(S>>>0<C>>>0){S=S;continue}else break;c[r>>2]=S;E=c[T>>2]|0;if((E|0)<=-1)break a;T=(c[m>>2]|0)+(E<<3)|0;U=+g[T>>2];V=+g[T+4>>2];T=c[(c[o>>2]|0)+(E<<2)>>2]|0;b:do if(!((D|0)==(T|0)|(L|0)==(T|0))){W=(T|0)==0;if(!W?(c[T+12>>2]&2|0)!=0:0){ik(T);X=+g[T+56>>2];Y=+g[T+48>>2]-X*(V-+g[T+44>>2]);Z=X*(U-+g[T+40>>2])+ +g[T+52>>2]}else{_=(c[q>>2]|0)+(E<<3)|0;X=+g[_>>2];Y=X;Z=+g[_+4>>2]}X=U-F;$=V-G;aa=Y-M;ba=Z-N;ca=I*ba-K*aa;da=J*ba-H*aa-(K*X-I*$);ea=J*$-H*X;do if(ca==0){if(da==0)break b;
fa=-ea/da;if(!(fa>=0&fa<p))break b;ga=J+I*fa;ha=H+K*fa;ia=(ga*(X+aa*fa)+ha*($+ba*fa))/(ga*ga+ha*ha);if(ia>=0&ia<=1)ja=ia;else break b}else{ia=da*da-ea*4*ca;if(ia<0)break b;ha=+Q(+ia);ia=ca*2;ga=(-da-ha)/ia;fa=(ha-da)/ia;_=ga>fa;ia=_?fa:ga;ha=_?ga:fa;fa=J+I*ia;ga=H+K*ia;ka=(fa*(X+aa*ia)+ga*($+ba*ia))/(fa*fa+ga*ga);if(ia>=0?ia<p&ka>=0&ka<=1:0){ja=ka;break}if(!(ha>=0&ha<p))break b;ka=J+I*ha;ia=H+K*ha;ga=(ka*(X+aa*ha)+ia*($+ba*ha))/(ka*ka+ia*ia);if(ga>=0&ga<=1)ja=ga;else break b}while(0);ba=M+I*ja-Y;
$=N+K*ja-Z;aa=+g[u>>2]*.75;X=aa*(+g[v>>2]*aa);aa=ba*X;da=$*X;if(!W?(c[T+12>>2]&2|0)!=0:0){ik(T);X=+g[T+32>>2];ik(T);ca=+g[T+36>>2];if(X>0){ea=1/X;_=T+48|0;g[_>>2]=aa*ea+ +g[_>>2];_=T+52|0;g[_>>2]=da*ea+ +g[_>>2]}if(ca>0){ik(T);_=T+40|0;ea=+g[_>>2];la=T+56|0;g[la>>2]=(da*(U-ea)-aa*(V-+g[_+4>>2]))/ca+ +g[la>>2]}}else{la=c[q>>2]|0;_=la+(E<<3)|0;g[_>>2]=ba+ +g[_>>2];_=la+(E<<3)+4|0;g[_>>2]=$+ +g[_>>2]}$=-+g[w>>2];ba=aa*$;aa=da*$;if(ba!=0|aa!=0?(c[(c[d>>2]|0)+(E<<2)>>2]&4|0)==0:0){if(!(a[x>>0]|0)){An(c[y>>
2]|0,0,c[j>>2]<<3|0)|0;a[x>>0]=1}_=c[y>>2]|0;la=_+(E<<3)|0;g[la>>2]=ba+ +g[la>>2];la=_+(E<<3)+4|0;g[la>>2]=aa+ +g[la>>2]}}while(0);if(S>>>0>=C>>>0)break a}c[r>>2]=S}}while(0);z=z+1|0}while((z|0)<(c[k>>2]|0));i=e;return}function Uk(b,d){b=b|0;d=d|0;var e=0,f=0,h=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,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;e=i;i=i+48|0;f=e+32|0;h=e+28|0;j=
e;k=b+44|0;l=c[k>>2]|0;if(!l){i=e;return}m=c[b+280>>2]|0;a:do if(m){n=b+296|0;o=n;p=+g[d>>2]/+g[b+396>>2]*4294967296;q=Cn(~~p>>>0|0,(+P(p)>=1?p>0?(da(+O(p/4294967296),4294967295)|0)>>>0:~~+$((p-+(~~p>>>0))/4294967296)>>>0:0)|0,c[o>>2]|0,c[o+4>>2]|0)|0;o=E;r=n;c[r>>2]=q;c[r+4>>2]=o;r=c[b+288>>2]|0;q=b+304|0;if(a[q>>0]|0){c[h>>2]=m;Zl(r,r+(l<<2)|0,h);a[q>>0]=0}if((l|0)>0){q=b+88|0;n=l;do{n=n+-1|0;s=c[r+(n<<2)>>2]|0;t=c[m+(s<<2)>>2]|0;if((o|0)<(t|0)|(t|0)<1)break a;vk(b,s,c[(c[q>>2]|0)+(s<<2)>>2]|2)}while((n|
0)>0)}}while(0);m=b+8|0;if(c[m>>2]&2)sk(b);l=b+12|0;if(a[l>>0]|0){c[m>>2]=0;h=c[k>>2]|0;if((h|0)>0){n=c[b+88>>2]|0;q=0;o=0;do{q=c[n+(o<<2)>>2]|q;c[m>>2]=q;o=o+1|0}while((o|0)!=(h|0))}a[l>>0]=0}l=b+20|0;if(a[l>>0]|0){h=b+16|0;c[h>>2]=0;o=c[b+312>>2]|0;if(o){q=0;n=o;do{q=c[n+12>>2]|q;c[h>>2]=q;n=c[n+24>>2]|0}while((n|0)!=0)}a[l>>0]=0}if(a[b>>0]|0){i=e;return}l=b+24|0;c[l>>2]=0;n=d+20|0;q=c[n>>2]|0;if((q|0)<=0){i=e;return}h=b+4|0;o=j+4|0;r=b+116|0;s=b+236|0;t=b+232|0;u=b+220|0;v=b+216|0;w=b+16|0;x=b+
21|0;y=b+324|0;z=b+400|0;A=b+104|0;B=b+32|0;C=b+88|0;D=b+96|0;F=b+372|0;G=b+144|0;H=b+132|0;I=b+368|0;J=b+364|0;K=b+36|0;L=b+28|0;M=b+112|0;N=f+4|0;R=q;do{c[h>>2]=(c[h>>2]|0)+1;c[j+0>>2]=c[d+0>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];c[j+20>>2]=c[d+20>>2];c[j+24>>2]=c[d+24>>2];p=+(R|0);S=+g[j>>2]/p;g[j>>2]=S;T=+g[o>>2]*p;g[o>>2]=T;Bk(b,0);Pk(b);An(c[r>>2]|0,0,c[k>>2]<<2|0)|0;q=c[s>>2]|0;if((q|0)>0){U=c[t>>2]|0;V=c[r>>2]|0;W=0;do{X=V+(c[U+(W*28|0)>>2]<<
2)|0;g[X>>2]=+g[U+(W*28|0)+12>>2]+ +g[X>>2];W=W+1|0}while((W|0)!=(q|0))}q=c[u>>2]|0;if((q|0)>0){W=c[v>>2]|0;U=c[r>>2]|0;V=0;do{X=c[W+(V*24|0)+4>>2]|0;p=+g[W+(V*24|0)+8>>2];Y=U+(c[W+(V*24|0)>>2]<<2)|0;g[Y>>2]=p+ +g[Y>>2];Y=U+(X<<2)|0;g[Y>>2]=p+ +g[Y>>2];V=V+1|0}while((V|0)!=(q|0))}if(c[w>>2]&16)Gk(b);q=c[m>>2]|0;if(!(q&4096))Z=q;else{q=c[C>>2]|0;c[f>>2]=7360;c[N>>2]=q;Ck(b,0,c[k>>2]|0,f);if((c[k>>2]|0)>0){q=c[C>>2]|0;V=0;do{U=q+(V<<2)|0;c[U>>2]=c[U>>2]&-4097;V=V+1|0}while((V|0)<(c[k>>2]|0))}V=c[m>>
2]&-4097;c[m>>2]=V;Z=V}if(a[x>>0]|0){p=+g[K>>2]*1.3333333730697632;_=S*(p*(+g[L>>2]*p));V=c[k>>2]|0;if((V|0)>0){q=c[A>>2]|0;U=c[M>>2]|0;W=0;do{p=_*+g[U+(W<<3)+4>>2];Y=q+(W<<3)|0;g[Y>>2]=_*+g[U+(W<<3)>>2]+ +g[Y>>2];Y=q+(W<<3)+4|0;g[Y>>2]=p+ +g[Y>>2];W=W+1|0}while((W|0)!=(V|0))}a[x>>0]=0}if(!(Z&32))aa=Z;else{Vk(b);aa=c[m>>2]|0}if((aa&8192|0)!=0?(_=+g[J>>2]*(+g[B>>2]*T),V=c[u>>2]|0,(V|0)>0):0){W=c[v>>2]|0;q=0;do{do if(c[W+(q*24|0)+20>>2]&8192){U=c[W+(q*24|0)>>2]|0;Y=c[W+(q*24|0)+4>>2]|0;X=c[G>>2]|0;
if((c[X+(U<<2)>>2]|0)==(c[X+(Y<<2)>>2]|0))break;X=W+(q*24|0)+12|0;p=+g[X>>2];ba=_*+g[W+(q*24|0)+8>>2];ca=ba*p;p=ba*+g[X+4>>2];X=c[A>>2]|0;ea=X+(U<<3)|0;g[ea>>2]=+g[ea>>2]-ca;ea=X+(U<<3)+4|0;g[ea>>2]=+g[ea>>2]-p;ea=X+(Y<<3)|0;g[ea>>2]=ca+ +g[ea>>2];ea=X+(Y<<3)+4|0;g[ea>>2]=p+ +g[ea>>2]}while(0);q=q+1|0}while((q|0)!=(V|0))}if((aa&64|0)!=0?(_=+g[I>>2]*(+g[B>>2]*T),V=c[u>>2]|0,(V|0)>0):0){q=c[v>>2]|0;W=0;do{do if(c[q+(W*24|0)+20>>2]&64){p=+g[q+(W*24|0)+8>>2];if(!(p>.25))break;ea=c[q+(W*24|0)>>2]|0;Y=
c[q+(W*24|0)+4>>2]|0;X=q+(W*24|0)+12|0;ca=+g[X>>2];ba=_*(p+-.25);p=ba*ca;ca=ba*+g[X+4>>2];X=c[A>>2]|0;U=X+(ea<<3)|0;g[U>>2]=+g[U>>2]-p;U=X+(ea<<3)+4|0;g[U>>2]=+g[U>>2]-ca;U=X+(Y<<3)|0;g[U>>2]=p+ +g[U>>2];U=X+(Y<<3)+4|0;g[U>>2]=ca+ +g[U>>2]}while(0);W=W+1|0}while((W|0)!=(V|0))}if(aa&128)Wk(b,j);if((c[w>>2]&1|0)!=0?(_=T*+g[F>>2],V=c[u>>2]|0,(V|0)>0):0){W=c[v>>2]|0;q=c[G>>2]|0;U=0;do{Y=c[W+(U*24|0)>>2]|0;X=c[W+(U*24|0)+4>>2]|0;if((c[q+(Y<<2)>>2]|0)!=(c[q+(X<<2)>>2]|0)){ea=W+(U*24|0)+12|0;ca=+g[ea>>2];
fa=c[H>>2]|0;p=+g[W+(U*24|0)+8>>2]*(_*(+g[fa+(Y<<2)>>2]+ +g[fa+(X<<2)>>2]));ba=ca*p;ca=+g[ea+4>>2]*p;ea=c[A>>2]|0;fa=ea+(Y<<3)|0;g[fa>>2]=+g[fa>>2]-ba;fa=ea+(Y<<3)+4|0;g[fa>>2]=+g[fa>>2]-ca;fa=ea+(X<<3)|0;g[fa>>2]=ba+ +g[fa>>2];fa=ea+(X<<3)+4|0;g[fa>>2]=ca+ +g[fa>>2]}U=U+1|0}while((U|0)!=(V|0))}if(c[m>>2]&256)Xk(b);_=S*+g[y>>2];V=(c[z>>2]|0)+102980|0;ca=+g[V>>2];ba=_*ca;ca=_*+g[V+4>>2];V=c[k>>2]|0;if((V|0)>0){U=c[A>>2]|0;W=0;do{q=U+(W<<3)|0;g[q>>2]=ba+ +g[q>>2];q=U+(W<<3)+4|0;g[q>>2]=ca+ +g[q>>2];
W=W+1|0}while((W|0)!=(V|0))}if(c[m>>2]&2048)Yk(b,j);Zk(b,j);_k(b,j);V=c[m>>2]|0;if(!(V&2048))ga=V;else{$k(b);ga=c[m>>2]|0}if(!(ga&16))ha=ga;else{al(b,j);ha=c[m>>2]|0}if(ha&8)bl(b,j);ca=+g[B>>2]*T;ba=ca*ca;V=c[k>>2]|0;if((V|0)>0){W=c[A>>2]|0;U=0;do{q=W+(U<<3)|0;ca=+g[q>>2];fa=W+(U<<3)+4|0;_=+g[fa>>2];p=ca*ca+_*_;if(p>ba){ia=+Q(+(ba/p));g[q>>2]=ca*ia;g[fa>>2]=_*ia}U=U+1|0}while((U|0)!=(V|0))}if(c[w>>2]&2)cl(b);if(c[m>>2]&1024)Tk(b,j);Sk(b,j);if(c[w>>2]&2)dl(b,j);V=c[k>>2]|0;do if(!(c[m>>2]&4))ja=95;
else{if((V|0)<=0)break;U=c[C>>2]|0;W=0;do{if(c[U+(W<<2)>>2]&4){fa=c[A>>2]|0;g[fa+(W<<3)>>2]=0;g[fa+(W<<3)+4>>2]=0}W=W+1|0}while((W|0)!=(V|0));ja=95}while(0);do if((ja|0)==95){ja=0;if((V|0)<=0)break;W=c[D>>2]|0;U=c[A>>2]|0;fa=0;do{ba=S*+g[U+(fa<<3)+4>>2];q=W+(fa<<3)|0;g[q>>2]=S*+g[U+(fa<<3)>>2]+ +g[q>>2];q=W+(fa<<3)+4|0;g[q>>2]=ba+ +g[q>>2];fa=fa+1|0}while((fa|0)<(V|0))}while(0);V=(c[l>>2]|0)+1|0;c[l>>2]=V;R=c[n>>2]|0}while((V|0)<(R|0));i=e;return}function Vk(a){a=a|0;var d=0,e=0,f=0,h=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;d=i;e=+g[a+352>>2];f=c[a+236>>2]|0;if((f|0)>0){h=a+96|0;j=a+104|0;k=a+36|0;l=a+28|0;m=c[a+232>>2]|0;n=c[a+88>>2]|0;o=0;do{p=c[m+(o*28|0)>>2]|0;if((c[n+(p<<2)>>2]&32|0)!=0?(q=c[m+(o*28|0)+4>>2]|0,r=(c[h>>2]|0)+(p<<3)|0,s=+g[r>>2],t=+g[r+4>>2],r=q+88|0,u=+g[r>>2],v=q+60|0,w=q+64|0,x=q+80|0,y=q+84|0,z=c[j>>2]|0,A=z+(p<<3)|0,B=+g[A>>2],C=z+(p<<3)+4|0,D=+g[C>>2],E=+g[m+(o*28|0)+12>>2]*(e*+g[m+(o*28|0)+24>>2]),
F=E*(+g[x>>2]-u*(t-+g[w>>2])-B),G=E*(u*(s-+g[v>>2])+ +g[y>>2]-D),E=+g[k>>2]*1.3333333730697632,H=E*(+g[l>>2]*E),g[A>>2]=B+F*H,g[C>>2]=D+G*H,H=-F,F=-G,(c[q>>2]|0)==2):0){C=q+4|0;A=b[C>>1]|0;if((A&2)==0?(p=A&65535,(p&2|0)==0):0){z=(p|2)&65535;b[C>>1]=z;g[q+160>>2]=0;I=z}else I=A;if(I&2){G=+g[q+136>>2];g[x>>2]=G*H+ +g[x>>2];g[y>>2]=G*F+ +g[y>>2];g[r>>2]=u+ +g[q+144>>2]*((s-+g[v>>2])*F-(t-+g[w>>2])*H)}}o=o+1|0}while((o|0)<(f|0))}f=c[a+220>>2]|0;if((f|0)<=0){i=d;return}o=c[a+216>>2]|0;I=a+104|0;a=0;do{if(c[o+
(a*24|0)+20>>2]&32){l=c[o+(a*24|0)>>2]|0;k=c[o+(a*24|0)+4>>2]|0;m=c[I>>2]|0;j=m+(k<<3)|0;h=m+(l<<3)|0;H=+g[h>>2];n=m+(k<<3)+4|0;k=m+(l<<3)+4|0;t=+g[k>>2];F=e*+g[o+(a*24|0)+8>>2];s=F*(+g[j>>2]-H);u=F*(+g[n>>2]-t);g[h>>2]=H+s;g[k>>2]=t+u;g[j>>2]=+g[j>>2]-s;g[n>>2]=+g[n>>2]-u}a=a+1|0}while((a|0)<(f|0));i=d;return}function Wk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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;d=i;e=a+44|0;if((c[e>>2]|0)>0){f=a+128|0;h=0;do{j=8784;k=c[j+4>>2]|0;l=(c[f>>2]|0)+(h<<
3)|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;h=h+1|0}while((h|0)<(c[e>>2]|0))}e=a+216|0;h=c[a+220>>2]|0;f=(h|0)>0;if(f){k=a+128|0;l=c[e>>2]|0;j=0;do{if(c[l+(j*24|0)+20>>2]&128){m=c[l+(j*24|0)>>2]|0;n=c[l+(j*24|0)+4>>2]|0;o=+g[l+(j*24|0)+8>>2];p=l+(j*24|0)+12|0;q=+g[p>>2];r=o*(1-o);o=r*q;q=r*+g[p+4>>2];p=c[k>>2]|0;s=p+(m<<3)|0;g[s>>2]=+g[s>>2]-o;s=p+(m<<3)+4|0;g[s>>2]=+g[s>>2]-q;s=p+(n<<3)|0;g[s>>2]=o+ +g[s>>2];s=p+(n<<3)+4|0;g[s>>2]=q+ +g[s>>2]}j=j+1|0}while((j|0)<(h|0))}q=+g[a+32>>2]*+g[b+4>>2];o=+g[a+356>>
2]*q;r=q*+g[a+360>>2];t=q*.5;if(!f){i=d;return}f=a+116|0;b=a+128|0;j=a+104|0;a=c[e>>2]|0;e=0;do{if(c[a+(e*24|0)+20>>2]&128){k=c[a+(e*24|0)>>2]|0;l=c[a+(e*24|0)+4>>2]|0;s=a+(e*24|0)+12|0;q=+g[s>>2];u=+g[s+4>>2];s=c[f>>2]|0;n=c[b>>2]|0;v=o*(+g[s+(k<<2)>>2]+ +g[s+(l<<2)>>2]+-2)+r*(q*(+g[n+(l<<3)>>2]-+g[n+(k<<3)>>2])+u*(+g[n+(l<<3)+4>>2]-+g[n+(k<<3)+4>>2]));w=+g[a+(e*24|0)+8>>2]*(v<t?v:t);v=q*w;q=u*w;n=c[j>>2]|0;s=n+(k<<3)|0;g[s>>2]=+g[s>>2]-v;s=n+(k<<3)+4|0;g[s>>2]=+g[s>>2]-q;s=n+(l<<3)|0;g[s>>2]=+g[s>>
2]+v;s=n+(l<<3)+4|0;g[s>>2]=+g[s>>2]+q}e=e+1|0}while((e|0)<(h|0));i=d;return}function Xk(b){b=b|0;var e=0,f=0,h=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;e=i;f=~~(+g[b+388>>2]*128);if(!f){i=e;return}h=c[b+220>>2]|0;if((h|0)<=0){i=e;return}j=b+136|0;k=d[8064]|0;l=c[b+216>>2]|0;m=c[b+88>>2]|0;b=0;do{n=c[l+(b*24|0)>>2]|0;o=c[l+(b*24|0)+4>>2]|0;if(c[m+(n<<2)>>2]&256&c[m+(o<<2)>>2]){p=c[j>>2]|0;q=p+(o<<2)|0;r=p+(n<<2)|0;s=d[r>>0]|0;t=(aa((d[q>>0]|0)-s|0,f)|0)>>k;
u=p+(o<<2)+1|0;v=p+(n<<2)+1|0;w=d[v>>0]|0;x=(aa((d[u>>0]|0)-w|0,f)|0)>>k;y=p+(o<<2)+2|0;z=p+(n<<2)+2|0;A=d[z>>0]|0;B=(aa((d[y>>0]|0)-A|0,f)|0)>>k;C=p+(o<<2)+3|0;o=p+(n<<2)+3|0;n=d[o>>0]|0;p=(aa((d[C>>0]|0)-n|0,f)|0)>>k;a[r>>0]=t+s;a[v>>0]=x+w;a[z>>0]=B+A;a[o>>0]=p+n;a[q>>0]=(d[q>>0]|0)-t;a[u>>0]=(d[u>>0]|0)-x;a[y>>0]=(d[y>>0]|0)-B;a[C>>0]=(d[C>>0]|0)-p}b=b+1|0}while((b|0)<(h|0));i=e;return}function Yk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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;d=i;e=a+120|0;f=c[e>>2]|0;if(!f){h=a+48|0;j=c[h>>2]|0;if(!j){qk(a,256);k=c[h>>2]|0}else k=j;j=um(c[a+400>>2]|0,k<<2)|0;An(j|0,0,c[h>>2]<<2|0)|0;l=j}else l=f;c[e>>2]=l;m=+g[a+32>>2]*+g[b+4>>2];n=+g[a+320>>2]*(m*m);m=+g[a+376>>2]*n;o=n*.25;n=+g[a+380>>2];b=a+384|0;if((c[b>>2]|0)<=0){i=d;return}l=a+124|0;f=a+44|0;j=a+220|0;h=a+116|0;k=a+88|0;p=a+216|0;a=c[f>>2]|0;q=0;do{An(c[l>>2]|0,0,a<<2|0)|0;r=c[j>>2]|0;if((r|0)>0){s=c[p>>2]|0;t=0;do{if(c[s+(t*24|0)+20>>2]&2048){u=c[s+(t*24|0)>>2]|0;v=
c[s+(t*24|0)+4>>2]|0;w=+g[s+(t*24|0)+8>>2];x=c[e>>2]|0;y=c[l>>2]|0;z=y+(u<<2)|0;g[z>>2]=w*+g[x+(v<<2)>>2]+ +g[z>>2];z=y+(v<<2)|0;g[z>>2]=w*+g[x+(u<<2)>>2]+ +g[z>>2]}t=t+1|0}while((t|0)<(r|0))}a=c[f>>2]|0;if((a|0)>0){r=c[h>>2]|0;t=c[k>>2]|0;s=0;do{w=+g[r+(s<<2)>>2];if(!(c[t+(s<<2)>>2]&2048))g[(c[e>>2]|0)+(s<<2)>>2]=0;else{A=(m*(w+-1)+ +g[(c[l>>2]|0)+(s<<2)>>2])/(n+w);w=A<o?A:o;g[(c[e>>2]|0)+(s<<2)>>2]=w<0?0:w}s=s+1|0}while((s|0)<(a|0))}q=q+1|0}while((q|0)<(c[b>>2]|0));i=d;return}function Zk(a,d){a=
a|0;d=d|0;var e=0,f=0,h=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;e=i;f=a+320|0;h=a+32|0;j=+g[h>>2]*+g[d+4>>2];k=+g[f>>2]*(j*j);j=+g[a+336>>2]*k;l=k*.25;m=c[a+44>>2]|0;n=(m|0)>0;if(n){o=c[a+116>>2]|0;p=c[a+124>>2]|0;q=0;do{k=+g[o+(q<<2)>>2]+-1;r=j*(k<0?0:k);g[p+(q<<2)>>2]=r<l?r:l;q=q+1|0}while((q|0)<(m|0))}q=c[a+8>>2]|0;if(!((q&192|0)==0|n^1)){p=c[a+88>>2]|0;o=a+124|0;s=0;do{if(c[p+(s<<2)>>2]&192)g[(c[o>>2]|0)+(s<<2)>>2]=0;s=s+1|0}while((s|0)<(m|0))}if(!((q&2048|
0)==0|n^1)){n=c[a+88>>2]|0;q=a+120|0;s=a+124|0;o=0;do{if(c[n+(o<<2)>>2]&2048){p=(c[s>>2]|0)+(o<<2)|0;g[p>>2]=+g[(c[q>>2]|0)+(o<<2)>>2]+ +g[p>>2]}o=o+1|0}while((o|0)<(m|0))}l=+g[d>>2]/(+g[f>>2]*+g[h>>2]);h=c[a+236>>2]|0;if((h|0)>0){f=c[a+232>>2]|0;d=c[a+96>>2]|0;m=c[a+124>>2]|0;o=c[a+104>>2]|0;r=+g[a+36>>2];k=+g[a+28>>2];q=0;do{s=c[f+(q*28|0)>>2]|0;n=c[f+(q*28|0)+4>>2]|0;t=+g[f+(q*28|0)+12>>2];p=f+(q*28|0)+16|0;u=+g[p>>2];v=+g[p+4>>2];p=d+(s<<3)|0;w=+g[p>>2];x=+g[p+4>>2];y=l*t*+g[f+(q*28|0)+24>>2]*
(j*t+ +g[m+(s<<2)>>2]);t=u*y;u=v*y;y=r*1.3333333730697632;v=y*(k*y);p=o+(s<<3)|0;g[p>>2]=+g[p>>2]-t*v;p=o+(s<<3)+4|0;g[p>>2]=+g[p>>2]-u*v;if((c[n>>2]|0)==2){p=n+4|0;s=b[p>>1]|0;if((s&2)==0?(z=s&65535,(z&2|0)==0):0){A=(z|2)&65535;b[p>>1]=A;g[n+160>>2]=0;B=A}else B=s;if(B&2){v=+g[n+136>>2];s=n+80|0;g[s>>2]=t*v+ +g[s>>2];s=n+84|0;g[s>>2]=u*v+ +g[s>>2];s=n+88|0;g[s>>2]=+g[s>>2]+ +g[n+144>>2]*(u*(w-+g[n+60>>2])-t*(x-+g[n+64>>2]))}}q=q+1|0}while((q|0)<(h|0))}h=c[a+220>>2]|0;if((h|0)<=0){i=e;return}q=c[a+
216>>2]|0;B=c[a+124>>2]|0;o=c[a+104>>2]|0;a=0;do{m=c[q+(a*24|0)>>2]|0;f=c[q+(a*24|0)+4>>2]|0;d=q+(a*24|0)+12|0;k=+g[d>>2];r=l*+g[q+(a*24|0)+8>>2]*(+g[B+(m<<2)>>2]+ +g[B+(f<<2)>>2]);j=k*r;k=+g[d+4>>2]*r;d=o+(m<<3)|0;g[d>>2]=+g[d>>2]-j;d=o+(m<<3)+4|0;g[d>>2]=+g[d>>2]-k;d=o+(f<<3)|0;g[d>>2]=j+ +g[d>>2];d=o+(f<<3)+4|0;g[d>>2]=k+ +g[d>>2];a=a+1|0}while((a|0)<(h|0));i=e;return}function _k(a,d){a=a|0;d=d|0;var e=0,f=0,h=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,J=0,K=0;e=i;f=+g[a+340>>2];h=1/(+g[a+32>>2]*+g[d+4>>2]);d=c[a+236>>2]|0;if((d|0)>0){j=a+36|0;k=a+28|0;l=c[a+232>>2]|0;m=c[a+96>>2]|0;n=c[a+104>>2]|0;o=0;do{p=c[l+(o*28|0)>>2]|0;q=c[l+(o*28|0)+4>>2]|0;r=l+(o*28|0)+16|0;s=+g[r>>2];t=+g[r+4>>2];r=m+(p<<3)|0;u=+g[r>>2];v=+g[r+4>>2];r=q+88|0;w=+g[r>>2];x=q+60|0;y=q+64|0;z=q+80|0;A=q+84|0;B=n+(p<<3)|0;C=+g[B>>2];D=n+(p<<3)+4|0;E=+g[D>>2];F=s*(+g[z>>2]-w*(v-+g[y>>2])-C)+t*(w*(u-+g[x>>2])+ +g[A>>2]-E);if(F<0?(G=f*+g[l+(o*28|0)+12>>2],
H=h*F,I=H>-.5?-H:.5,H=F*(+g[l+(o*28|0)+24>>2]*(G>I?G:I)),I=s*H,s=t*H,H=+g[j>>2]*1.3333333730697632,t=H*(+g[k>>2]*H),g[B>>2]=C+t*I,g[D>>2]=E+t*s,t=-I,I=-s,(c[q>>2]|0)==2):0){D=q+4|0;B=b[D>>1]|0;if((B&2)==0?(p=B&65535,(p&2|0)==0):0){J=(p|2)&65535;b[D>>1]=J;g[q+160>>2]=0;K=J}else K=B;if(K&2){s=+g[q+136>>2];g[z>>2]=s*t+ +g[z>>2];g[A>>2]=s*I+ +g[A>>2];g[r>>2]=w+ +g[q+144>>2]*((u-+g[x>>2])*I-(v-+g[y>>2])*t)}}o=o+1|0}while((o|0)<(d|0))}d=c[a+220>>2]|0;if((d|0)<=0){i=e;return}o=c[a+216>>2]|0;K=c[a+104>>2]|
0;a=0;do{k=c[o+(a*24|0)>>2]|0;j=c[o+(a*24|0)+4>>2]|0;l=o+(a*24|0)+12|0;t=+g[l>>2];v=+g[l+4>>2];l=K+(j<<3)|0;n=K+(k<<3)|0;I=+g[n>>2];m=K+(j<<3)+4|0;j=K+(k<<3)+4|0;u=+g[j>>2];w=t*(+g[l>>2]-I)+v*(+g[m>>2]-u);if(w<0){s=f*+g[o+(a*24|0)+8>>2];E=h*w;C=E>-.5?-E:.5;E=w*(s>C?s:C);C=t*E;t=v*E;g[n>>2]=I+C;g[j>>2]=u+t;g[l>>2]=+g[l>>2]-C;g[m>>2]=+g[m>>2]-t}a=a+1|0}while((a|0)<(d|0));i=e;return}function $k(a){a=a|0;var d=0,e=0,f=0,h=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=i;e=c[a+236>>2]|0;if((e|0)<=0){i=d;return}f=a+96|0;h=a+104|0;j=a+36|0;k=a+28|0;l=c[a+232>>2]|0;m=c[a+88>>2]|0;a=0;do{n=c[l+(a*28|0)>>2]|0;if(((c[m+(n<<2)>>2]&2048|0)!=0?(o=c[l+(a*28|0)+4>>2]|0,p=l+(a*28|0)+16|0,q=+g[p>>2],r=+g[p+4>>2],p=(c[f>>2]|0)+(n<<3)|0,s=+g[p>>2],t=+g[p+4>>2],p=o+88|0,u=+g[p>>2],v=o+60|0,w=o+64|0,x=o+80|0,y=o+84|0,z=c[h>>2]|0,A=z+(n<<3)|0,B=+g[A>>2],C=z+(n<<3)+4|0,D=+g[C>>2],E=q*(+g[x>>2]-u*(t-+g[w>>2])-B)+r*(u*(s-+g[v>>2])+ +g[y>>2]-D),E<0):0)?(F=E*(+g[l+
(a*28|0)+24>>2]*.5),E=q*F,q=r*F,F=+g[j>>2]*1.3333333730697632,r=F*(+g[k>>2]*F),g[A>>2]=B+E*r,g[C>>2]=D+q*r,r=-E,E=-q,(c[o>>2]|0)==2):0){C=o+4|0;A=b[C>>1]|0;if((A&2)==0?(n=A&65535,(n&2|0)==0):0){z=(n|2)&65535;b[C>>1]=z;g[o+160>>2]=0;G=z}else G=A;if(G&2){q=+g[o+136>>2];g[x>>2]=q*r+ +g[x>>2];g[y>>2]=q*E+ +g[y>>2];g[p>>2]=u+ +g[o+144>>2]*((s-+g[v>>2])*E-(t-+g[w>>2])*r)}}a=a+1|0}while((a|0)<(e|0));i=d;return}function al(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0;d=i;e=+g[b+4>>2]*+g[a+344>>2];f=a+268|0;h=c[f>>2]|0;if((h|0)<=0){i=d;return}j=a+264|0;l=a+96|0;m=a+104|0;a=h;h=0;while(1){n=c[j>>2]|0;if(!(c[n+(h*60|0)+12>>2]&16))o=a;else{p=c[n+(h*60|0)>>2]|0;q=c[n+(h*60|0)+4>>2]|0;r=c[n+(h*60|0)+8>>2]|0;s=c[l>>2]|0;t=s+(p<<3)|0;u=+g[t>>2];v=+g[t+4>>2];t=s+(q<<3)|0;w=+g[t>>2];x=+g[t+4>>2];t=s+(r<<3)|0;y=+g[t>>2];s=c[m>>2]|0;z=+g[b>>2];A=s+(p<<3)|0;B=+g[A>>2];C=s+(p<<3)+4|0;D=+g[C>>2];E=
u+z*B;u=v+z*D;p=s+(q<<3)|0;F=s+(q<<3)+4|0;v=w+z*+g[p>>2];w=x+z*+g[F>>2];q=s+(r<<3)|0;G=s+(r<<3)+4|0;x=y+z*+g[q>>2];y=+g[t+4>>2]+z*+g[G>>2];z=(E+v+x)*.3333333432674408;H=(u+w+y)*.3333333432674408;I=E-z;E=u-H;u=v-z;v=w-H;w=x-z;z=y-H;H=+g[n+(h*60|0)+20>>2];y=+g[n+(h*60|0)+24>>2];t=n+(h*60|0)+28|0;x=+g[t>>2];r=n+(h*60|0)+32|0;J=+g[r>>2];s=n+(h*60|0)+36|0;K=+g[s>>2];L=n+(h*60|0)+40|0;M=+g[L>>2];N=H*E-y*I+(x*v-J*u)+(K*z-w*M);O=H*I+y*E+(x*u+J*v)+(w*K+z*M);M=N*N+O*O;K=(c[k>>2]=1597463007-((g[k>>2]=M,c[k>>
2]|0)>>1),+g[k>>2]);J=K*(1.5-K*(M*.5*K));K=N*J;N=O*J;J=e*+g[n+(h*60|0)+16>>2];g[A>>2]=B+J*(H*N-y*K-I);g[C>>2]=D+J*(H*K+y*N-E);E=+g[t>>2];y=+g[r>>2];g[p>>2]=+g[p>>2]+J*(E*N-y*K-u);g[F>>2]=+g[F>>2]+J*(E*K+y*N-v);v=+g[s>>2];y=+g[L>>2];g[q>>2]=+g[q>>2]+J*(v*N-y*K-w);g[G>>2]=+g[G>>2]+J*(v*K+y*N-z);o=c[f>>2]|0}h=h+1|0;if((h|0)>=(o|0))break;else a=o}i=d;return}function bl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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;d=i;e=+g[b+4>>2]*+g[a+348>>2];f=
c[a+252>>2]|0;if((f|0)<=0){i=d;return}h=a+96|0;j=a+104|0;k=c[a+248>>2]|0;a=0;do{if(c[k+(a*20|0)+8>>2]&8){l=c[k+(a*20|0)>>2]|0;m=c[k+(a*20|0)+4>>2]|0;n=c[h>>2]|0;o=n+(l<<3)|0;p=+g[o>>2];q=+g[o+4>>2];o=n+(m<<3)|0;r=+g[o>>2];n=c[j>>2]|0;s=+g[b>>2];t=n+(l<<3)|0;u=+g[t>>2];v=n+(l<<3)+4|0;w=+g[v>>2];l=n+(m<<3)|0;x=n+(m<<3)+4|0;y=r+s*+g[l>>2]-(p+s*u);p=+g[o+4>>2]+s*+g[x>>2]-(q+s*w);s=+Q(+(y*y+p*p));q=(+g[k+(a*20|0)+16>>2]-s)*(e*+g[k+(a*20|0)+12>>2])/s;s=y*q;y=p*q;g[t>>2]=u-s;g[v>>2]=w-y;g[l>>2]=s+ +g[l>>
2];g[x>>2]=y+ +g[x>>2]}a=a+1|0}while((a|0)<(f|0));i=d;return}function cl(a){a=a|0;var d=0,e=0,f=0,h=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,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;d=i;e=+g[a+340>>2];f=a+236|0;if((c[f>>2]|0)>0){h=a+232|0;j=a+144|0;k=a+96|0;l=0;do{m=c[h>>2]|0;n=c[m+(l*28|0)>>2]|0;o=c[(c[j>>2]|0)+(n<<2)>>2]|0;if(((o|0)!=0?(c[o+12>>2]&2|0)!=0:0)?(p=c[m+(l*28|
0)+4>>2]|0,q=m+(l*28|0)+16|0,r=+g[q>>2],s=+g[q+4>>2],t=+g[m+(l*28|0)+12>>2],m=(c[k>>2]|0)+(n<<3)|0,u=+g[m>>2],v=+g[m+4>>2],m=p+88|0,w=+g[m>>2],n=p+60|0,q=p+64|0,x=p+80|0,y=+g[x>>2]-w*(v-+g[q>>2]),z=p+84|0,A=w*(u-+g[n>>2])+ +g[z>>2],ik(o),B=o+56|0,w=+g[B>>2],C=o+48|0,D=o+52|0,E=r*(y-(+g[C>>2]-w*(v-+g[o+44>>2])))+s*(A-(w*(u-+g[o+40>>2])+ +g[D>>2])),E<0):0){ik(o);w=+g[o+32>>2];ik(o);A=+g[o+36>>2];ik(o);F=o+40|0;y=+g[F>>2];if(w>0)G=1/w;else G=0;if(A>0)H=1/A;else H=0;A=s*(u-y)-r*(v-+g[F+4>>2]);y=+g[p+
132>>2];w=+g[p+44>>2];I=+g[p+48>>2];J=y*(w*w+I*I);I=+g[p+140>>2]+J-J;if(y>0)K=1/y;else K=0;if(I>0)L=1/I;else L=0;I=s*(u-+g[n>>2])-r*(v-+g[q>>2]);y=G+A*(A*H)+K+I*(L*I);if(y>0)M=E/y;else M=0;y=e*(t<1?t:1)*M;t=G*y;g[C>>2]=+g[C>>2]+r*t;g[D>>2]=+g[D>>2]+s*t;g[B>>2]=H*(A*y)+ +g[B>>2];A=-y;y=r*A;r=s*A;if((c[p>>2]|0)==2){B=p+4|0;D=b[B>>1]|0;if((D&2)==0?(C=D&65535,(C&2|0)==0):0){F=(C|2)&65535;b[B>>1]=F;g[p+160>>2]=0;N=F}else N=D;if(N&2){A=+g[p+136>>2];g[x>>2]=y*A+ +g[x>>2];g[z>>2]=r*A+ +g[z>>2];g[m>>2]=+g[m>>
2]+ +g[p+144>>2]*(r*(u-+g[n>>2])-y*(v-+g[q>>2]))}}}l=l+1|0}while((l|0)<(c[f>>2]|0))}f=a+220|0;if((c[f>>2]|0)<=0){i=d;return}l=a+216|0;N=a+144|0;k=a+96|0;j=a+104|0;h=a+88|0;q=a+32|0;n=a+320|0;a=0;do{p=c[l>>2]|0;m=c[p+(a*24|0)>>2]|0;z=c[p+(a*24|0)+4>>2]|0;x=p+(a*24|0)+12|0;H=+g[x>>2];G=+g[x+4>>2];M=+g[p+(a*24|0)+8>>2];p=c[N>>2]|0;x=c[p+(m<<2)>>2]|0;D=c[p+(z<<2)>>2]|0;p=(x|0)==0;if(p)O=0;else O=(c[x+12>>2]&2|0)!=0;F=(D|0)==0;if(F)P=0;else P=(c[D+12>>2]&2|0)!=0;do if((x|0)!=(D|0)&(O|P)){B=c[k>>2]|0;L=
(+g[B+(m<<3)>>2]+ +g[B+(z<<3)>>2])*.5;K=(+g[B+(m<<3)+4>>2]+ +g[B+(z<<3)+4>>2])*.5;if(!F?(c[D+12>>2]&2|0)!=0:0){ik(D);v=+g[D+56>>2];Q=+g[D+48>>2]-v*(K-+g[D+44>>2]);R=v*(L-+g[D+40>>2])+ +g[D+52>>2]}else{B=(c[j>>2]|0)+(z<<3)|0;v=+g[B>>2];Q=v;R=+g[B+4>>2]}if(!p?(c[x+12>>2]&2|0)!=0:0){ik(x);v=+g[x+56>>2];S=+g[x+48>>2]-v*(K-+g[x+44>>2]);T=v*(L-+g[x+40>>2])+ +g[x+52>>2]}else{B=(c[j>>2]|0)+(m<<3)|0;v=+g[B>>2];S=v;T=+g[B+4>>2]}v=G*(R-T)+H*(Q-S);if(v<0){if(O){ik(x);y=+g[x+32>>2];ik(x);u=+g[x+36>>2];ik(x);B=
x+40|0;r=+g[B>>2];if(y>0)U=1/y;else U=0;if(u>0)V=1/u;else V=0;W=V;X=U;Y=G*(L-r)-H*(K-+g[B+4>>2])}else{if((c[(c[h>>2]|0)+(m<<2)>>2]&4|0)==0?(r=+g[q>>2]*.75,u=r*(+g[n>>2]*r),u>0):0)Z=1/u;else Z=0;W=0;X=Z;Y=G*(L-L)-H*(K-K)}if(P){ik(D);u=+g[D+32>>2];ik(D);r=+g[D+36>>2];ik(D);B=D+40|0;y=+g[B>>2];if(u>0)_=1/u;else _=0;if(r>0)$=1/r;else $=0;aa=_;ba=$;ca=G*(L-y)-H*(K-+g[B+4>>2])}else{if((c[(c[h>>2]|0)+(z<<2)>>2]&4|0)==0?(y=+g[q>>2]*.75,r=y*(+g[n>>2]*y),r>0):0)da=1/r;else da=0;aa=da;ba=0;ca=G*(L-L)-H*(K-K)}K=
X+Y*(W*Y)+aa+ca*(ba*ca);if(K>0)ea=v/K;else ea=0;K=e*M*ea;if(O){v=X*K;B=x+48|0;g[B>>2]=H*v+ +g[B>>2];B=x+52|0;g[B>>2]=G*v+ +g[B>>2];B=x+56|0;g[B>>2]=W*(Y*K)+ +g[B>>2]}else{B=c[j>>2]|0;v=X*K;C=B+(m<<3)|0;g[C>>2]=H*v+ +g[C>>2];C=B+(m<<3)+4|0;g[C>>2]=G*v+ +g[C>>2]}v=-K;if(P){K=aa*v;C=D+48|0;g[C>>2]=H*K+ +g[C>>2];C=D+52|0;g[C>>2]=G*K+ +g[C>>2];C=D+56|0;g[C>>2]=ba*(ca*v)+ +g[C>>2];break}else{C=c[j>>2]|0;K=aa*v;B=C+(z<<3)|0;g[B>>2]=H*K+ +g[B>>2];B=C+(z<<3)+4|0;g[B>>2]=G*K+ +g[B>>2];break}}}while(0);a=a+
1|0}while((a|0)<(c[f>>2]|0));i=d;return}function dl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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;d=i;e=c[a+312>>2]|0;if(!e){i=d;return}f=b+4|0;h=a+104|0;j=a+96|0;a=e;do{if((c[a+12>>2]&2|0)!=0?(ik(a),k=+g[b>>2],l=k*+g[a+56>>2],m=+T(+l),n=+S(+l),l=+g[a+40>>2],o=+g[a+44>>2],p=k*+g[a+48>>2]+l-(n*l-m*o),q=k*+g[a+52>>2]+o-(m*l+n*o),e=a+60|0,o=+g[a+72>>2],l=+g[a+68>>2],k=+(m*o+n*l),r=+(n*o-m*l),l=+g[e>>2],o=+g[a+64>>2],s=+(p+(n*l-m*o)),t=+(q+(m*l+n*o)),u=e,g[u>>
2]=s,g[u+4>>2]=t,u=a+68|0,g[u>>2]=k,g[u+4>>2]=r,r=+g[f>>2],k=p*r,p=q*r,q=m*r,m=(n+-1)*r,u=c[a+4>>2]|0,e=a+8|0,(u|0)<(c[e>>2]|0)):0){v=u;do{u=c[j>>2]|0;r=+g[u+(v<<3)>>2];n=+g[u+(v<<3)+4>>2];t=+(k+(m*r-q*n));s=+(p+(q*r+m*n));u=(c[h>>2]|0)+(v<<3)|0;g[u>>2]=t;g[u+4>>2]=s;v=v+1|0}while((v|0)<(c[e>>2]|0))}a=c[a+24>>2]|0}while((a|0)!=0);i=d;return}function el(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;e=a+280|0;f=c[e>>2]|0;if(!f){h=a+48|0;j=c[h>>2]|0;if(!j){qk(a,256);k=c[h>>
2]|0}else k=j;j=um(c[a+400>>2]|0,k<<2)|0;An(j|0,0,c[h>>2]<<2|0)|0;l=j}else l=f;c[e>>2]=l;e=c[l+(b<<2)>>2]|0;if((e|0)<=0){m=e;n=+(m|0);o=a+396|0;p=+g[o>>2];q=n*p;i=d;return+q}m=e-(c[a+300>>2]|0)|0;n=+(m|0);o=a+396|0;p=+g[o>>2];q=n*p;i=d;return+q}function fl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0;h=i;j=+(e-d|0);k=+g[f>>2]/j;l=+g[f+4>>2]/j;if(!(k!=0|l!=0)){i=h;return}f=b+21|0;if(!(a[f>>0]|0)){An(c[b+112>>2]|0,0,c[b+44>>2]<<3|0)|0;a[f>>0]=1}if((e|0)<=(d|0)){i=h;return}f=c[b+112>>2]|0;b=
d;do{d=f+(b<<3)|0;g[d>>2]=k+ +g[d>>2];d=f+(b<<3)+4|0;g[d>>2]=l+ +g[d>>2];b=b+1|0}while((b|0)!=(e|0));i=h;return}function gl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0;f=i;h=+g[a+32>>2]*.75;j=+(d-b|0)*(h*(+g[a+320>>2]*h));h=+g[e>>2]/j;k=+g[e+4>>2]/j;if((d|0)<=(b|0)){i=f;return}e=c[a+104>>2]|0;a=b;do{b=e+(a<<3)|0;g[b>>2]=h+ +g[b>>2];b=e+(a<<3)+4|0;g[b>>2]=k+ +g[b>>2];a=a+1|0}while((a|0)!=(d|0));i=f;return}function hl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=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=i;f=c[a+204>>2]|0;if(!f){i=e;return}h=c[a+200>>2]|0;j=+g[a+36>>2];k=+g[d>>2];l=d+4|0;m=(~~(j*+g[l>>2]+2048)>>>0<<20)+(~~(j*k*256+524288)>>>0)|0;n=h;o=f<<3>>3;a:while(1){p=o;while(1){if(!p)break a;q=(p|0)/2|0;if((c[n+(q<<3)+4>>2]|0)>>>0<m>>>0)break;else p=q}n=n+(q+1<<3)|0;o=p+-1-q|0}q=d+8|0;o=d+12|0;m=(~~(j*+g[o>>2]+2048)>>>0<<20)+(~~(j*+g[q>>2]*256+524288)>>>0)|0;r=n;s=h+(f<<3)-n>>3;b:while(1){f=s;while(1){if(!f)break b;t=(f|0)/2|0;if((c[r+(t<<3)+4>>2]|0)>>>0>m>>>0)f=t;else break}r=
r+(t+1<<3)|0;s=f+-1-t|0}if(n>>>0>=r>>>0){i=e;return}t=a+96|0;j=k;s=n;while(1){n=c[s>>2]|0;m=c[t>>2]|0;k=+g[m+(n<<3)>>2];if((((j<k?k<+g[q>>2]:0)?(k=+g[m+(n<<3)+4>>2],+g[l>>2]<k):0)?k<+g[o>>2]:0)?!(qb[c[(c[b>>2]|0)+12>>2]&15](b,a,n)|0):0){u=21;break}n=s+8|0;if(n>>>0>=r>>>0){u=21;break}j=+g[d>>2];s=n}if((u|0)==21){i=e;return}}function il(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=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,J=0,K=0,L=0,M=0,
N=0;f=i;i=i+64|0;h=f;j=f+32|0;k=f+24|0;l=f+16|0;if(!(c[a+204>>2]|0)){i=f;return}m=+g[d>>2];n=+g[e>>2];o=d+4|0;p=+g[o>>2];q=+g[e+4>>2];r=+(m<n?m:n);s=+(p<q?p:q);e=h;g[e>>2]=r;g[e+4>>2]=s;s=+(m>n?m:n);r=+(p>q?p:q);e=h+8|0;g[e>>2]=s;g[e+4>>2]=r;r=n-m;m=q-p;p=r*r+m*m;Hk(j,a,h);h=j+16|0;e=c[j>>2]|0;t=j+4|0;u=a+96|0;v=a+40|0;w=k+4|0;x=l+4|0;y=c[j+20>>2]|0;j=c[h>>2]|0;q=1;a:while(1){if(j>>>0>=y>>>0){z=17;break}A=c[t>>2]|0;B=j;while(1){C=c[B+4>>2]&1048575;D=B;B=B+8|0;if(C>>>0<e>>>0|C>>>0>A>>>0)if(B>>>0<y>>>
0){B=B;continue}else{z=16;break a}c[h>>2]=B;E=c[D>>2]|0;if((E|0)<=-1){z=17;break a}D=c[u>>2]|0;F=+g[d>>2];G=F-+g[D+(E<<3)>>2];H=+g[o>>2];I=H-+g[D+(E<<3)+4>>2];n=r*G+m*I;s=n*n-p*(G*G+I*I-+g[v>>2]);if(s>=0?(J=+Q(+s),s=(-n-J)/p,!(s>q)):0){if(!(s<0)){K=s;break}s=(J-n)/p;if(!(s<0|s>q)){K=s;break}}if(B>>>0>=y>>>0){z=17;break a}}s=r*K;n=m*K;J=G+s;L=I+n;g[k>>2]=J;g[w>>2]=L;M=+Q(+(J*J+L*L));if(!(M<1.1920928955078125E-7)){N=1/M;g[k>>2]=J*N;g[w>>2]=L*N}A=c[(c[b>>2]|0)+12>>2]|0;g[l>>2]=s+F;g[x>>2]=n+H;n=+jb[A&
1](b,a,E,l,k,K);q=q<n?q:n;if(q<=0){z=17;break}else j=B}if((z|0)==16){c[h>>2]=B;i=f;return}else if((z|0)==17){i=f;return}}function jl(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function kl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;i=i+48|0;f=e+24|0;g=e;if(a[d+38>>0]|0){i=e;return 1}h=c[d+12>>2]|0;j=kb[c[(c[h>>2]|0)+12>>2]&7](h)|0;if((j|0)<=0){i=e;return 1}h=d+24|0;k=b+4|0;l=g+16|0;m=g+20|0;n=g+4|0;o=0;do{p=(c[h>>2]|0)+(o*28|0)|0;c[f+0>>2]=c[p+0>>2];c[f+
4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];Hk(g,c[k>>2]|0,f);p=c[l>>2]|0;q=c[m>>2]|0;a:do if(p>>>0<q>>>0){r=c[g>>2]|0;s=c[n>>2]|0;t=p;while(1){u=c[t+4>>2]&1048575;v=t;t=t+8|0;if(u>>>0<r>>>0|u>>>0>s>>>0)if(t>>>0<q>>>0){t=t;continue}else break;c[l>>2]=t;u=c[v>>2]|0;if((u|0)<=-1)break a;yb[c[(c[b>>2]|0)+20>>2]&31](b,d,o,u);if(t>>>0>=q>>>0)break a}c[l>>2]=t}while(0);o=o+1|0}while((o|0)!=(j|0));i=e;return 1}function ll(a,b){a=a|0;b=b|0;return 0}function ml(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|
0;var h=0,j=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,J=0,K=0,L=0;h=i;i=i+48|0;j=h+24|0;l=h;m=c[b+36>>2]|0;n=b+4|0;if(((m|0)!=0?(o=c[n>>2]|0,(c[(c[o+88>>2]|0)+(f<<2)>>2]&65536|0)!=0):0)?!(ub[c[(c[m>>2]|0)+12>>2]&7](m,d,o,f)|0):0){i=h;return}o=c[d+8>>2]|0;m=c[n>>2]|0;p=(c[m+96>>2]|0)+(f<<3)|0;q=c[p>>2]|0;r=c[p+4>>2]|0;s=(c[k>>2]=r,+g[k>>2]);p=(c[m+104>>2]|0)+(f<<3)|0;t=+g[p>>2];u=+g[p+4>>2];if(!(c[m+24>>2]|0)){v=(c[k>>2]=q,+g[k>>2]);w=v-+g[o+
28>>2];x=s-+g[o+32>>2];y=+g[o+40>>2];z=+g[o+36>>2];A=w*y+x*z;B=y*x-w*z;m=c[d+12>>2]|0;if(!(c[m+4>>2]|0)){w=+g[o+44>>2];x=A-w;C=+g[o+48>>2];D=B-C;E=x*y-D*z;F=y*D+x*z;z=+g[o+24>>2];x=+g[o+20>>2];G=w+(z*E+x*F);H=z;I=C+(z*F-E*x);J=x}else{G=A;H=+g[o+24>>2];I=B;J=+g[o+20>>2]}B=+(+g[o+12>>2]+(G*H-I*J));A=+(I*H+G*J+ +g[o+16>>2]);p=l;g[p>>2]=B;g[p+4>>2]=A;K=v;L=m}else{m=l;c[m>>2]=q;c[m+4>>2]=r;K=(c[k>>2]=q,+g[k>>2]);L=c[d+12>>2]|0}d=l+8|0;v=+g[b+8>>2];A=+(K+t*v);B=+(s+u*v);q=d;g[q>>2]=A;g[q+4>>2]=B;g[l+16>>
2]=1;if(!(xb[c[(c[L>>2]|0)+24>>2]&15](L,j,l,o+12|0,e)|0)){i=h;return}e=j;B=+g[e>>2];A=+g[j+8>>2];v=1-A;j=b+12|0;J=+g[j>>2];G=J*(B*.004999999888241291+(+g[l>>2]*v+A*+g[d>>2])-K);K=J*(+g[e+4>>2]*.004999999888241291+(v*+g[l+4>>2]+A*+g[l+12>>2])-s);s=+G;A=+K;l=(c[(c[n>>2]|0)+104>>2]|0)+(f<<3)|0;g[l>>2]=s;g[l+4>>2]=A;l=c[n>>2]|0;A=+g[l+32>>2]*.75;s=+g[j>>2]*(A*(+g[l+320>>2]*A));A=(t-G)*s;G=(u-K)*s;if(!(A!=0|G!=0)){i=h;return}if(c[(c[l+88>>2]|0)+(f<<2)>>2]&4){i=h;return}j=l+21|0;n=l+112|0;if(!(a[j>>0]|
0)){An(c[n>>2]|0,0,c[l+44>>2]<<3|0)|0;a[j>>0]=1}j=c[n>>2]|0;n=j+(f<<3)|0;g[n>>2]=A+ +g[n>>2];n=j+(f<<3)+4|0;g[n>>2]=G+ +g[n>>2];i=h;return}function nl(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function ol(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=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;f=i;i=i+32|0;h=f;j=f+16|0;k=f+8|0;l=a+4|0;m=(c[(c[l>>2]|0)+96>>2]|0)+(e<<3)|0;n=c[m+4>>2]|0;o=h;c[o>>2]=c[m>>2];c[o+4>>2]=n;n=c[b+12>>2]|0;o=b+8|0;vb[c[(c[n>>2]|
0)+20>>2]&7](n,(c[o>>2]|0)+12|0,h,j,k,d);d=c[l>>2]|0;if(!(+g[j>>2]<+g[d+32>>2])){i=f;return}n=c[a+8>>2]|0;if(((n|0)!=0?(c[(c[d+88>>2]|0)+(e<<2)>>2]&65536|0)!=0:0)?!(ub[c[(c[n>>2]|0)+12>>2]&7](n,b,d,e)|0):0){i=f;return}d=c[o>>2]|0;o=d+60|0;p=+g[o>>2];q=+g[d+132>>2];r=+g[d+44>>2];s=+g[d+48>>2];t=q*(r*r+s*s);s=+g[d+140>>2]+t-t;if(q>0)u=1/q;else u=0;if(s>0)v=1/s;else v=0;n=c[l>>2]|0;if(!(c[(c[n+88>>2]|0)+(e<<2)>>2]&4)){s=+g[n+36>>2]*1.3333333730697632;w=s*(+g[n+28>>2]*s)}else w=0;a=k+4|0;s=+g[a>>2];q=
+g[k>>2];t=(+g[h>>2]-p)*s-(+g[h+4>>2]-+g[o+4>>2])*q;p=u+w+t*(v*t);o=n+232|0;h=n+236|0;m=c[h>>2]|0;x=n+240|0;y=c[x>>2]|0;if((m|0)>=(y|0)?(z=(y|0)==0?256:y<<1,(y|0)<(z|0)):0){y=n+244|0;A=um(c[y>>2]|0,z*28|0)|0;B=c[o>>2]|0;if(B){Dn(A|0,B|0,(c[h>>2]|0)*28|0)|0;vm(c[y>>2]|0,c[o>>2]|0,(c[x>>2]|0)*28|0)}c[x>>2]=z;c[o>>2]=A;C=c[h>>2]|0;D=c[l>>2]|0;E=+g[k>>2];F=+g[a>>2]}else{C=m;D=n;E=q;F=s}c[h>>2]=C+1;h=c[o>>2]|0;c[h+(C*28|0)>>2]=e;c[h+(C*28|0)+4>>2]=d;c[h+(C*28|0)+8>>2]=b;g[h+(C*28|0)+12>>2]=1-+g[j>>2]*
+g[D+36>>2];s=+-E;E=+-F;D=h+(C*28|0)+16|0;g[D>>2]=s;g[D+4>>2]=E;if(p>0)G=1/p;else G=0;g[h+(C*28|0)+24>>2]=G;Mk(c[l>>2]|0,e);i=f;return}function pl(a){a=a|0;return}function ql(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function rl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=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,J=0,K=0,L=0;f=i;h=a+4|0;j=c[(c[h>>2]|0)+88>>2]|0;k=c[j+(d<<2)>>2]|c[j+(b<<2)>>2]|c[j+(e<<2)>>2];if(!(k&16)){i=f;return}j=c[a+8>>
2]|0;if(!(ub[c[(c[j>>2]|0)+16>>2]&7](j,b,d,e)|0)){i=f;return}j=c[h>>2]|0;h=c[j+96>>2]|0;a=h+(b<<3)|0;l=+g[a>>2];m=h+(d<<3)|0;n=+g[m>>2];o=l-n;p=h+(b<<3)+4|0;q=+g[p>>2];r=h+(d<<3)+4|0;s=+g[r>>2];t=q-s;u=h+(e<<3)|0;v=+g[u>>2];w=n-v;x=h+(e<<3)+4|0;n=+g[x>>2];y=s-n;s=v-l;l=n-q;q=+g[j+40>>2]*4;if(o*o+t*t>q){i=f;return}if(w*w+y*y>q){i=f;return}if(s*s+l*l>q){i=f;return}h=c[j+144>>2]|0;z=c[h+(b<<2)>>2]|0;A=c[h+(d<<2)>>2]|0;B=c[h+(e<<2)>>2]|0;h=j+264|0;C=j+268|0;D=c[C>>2]|0;E=j+272|0;F=c[E>>2]|0;if((D|0)>=
(F|0)?(G=(F|0)==0?256:F<<1,(F|0)<(G|0)):0){F=j+276|0;j=um(c[F>>2]|0,G*60|0)|0;H=c[h>>2]|0;if(H){Dn(j|0,H|0,(c[C>>2]|0)*60|0)|0;vm(c[F>>2]|0,c[h>>2]|0,(c[E>>2]|0)*60|0)}c[E>>2]=G;c[h>>2]=j;I=c[C>>2]|0}else I=D;c[C>>2]=I+1;C=c[h>>2]|0;c[C+(I*60|0)>>2]=b;c[C+(I*60|0)+4>>2]=d;c[C+(I*60|0)+8>>2]=e;c[C+(I*60|0)+12>>2]=k;if(!z)J=1;else J=+g[z+16>>2];if(!A)K=1;else K=+g[A+16>>2];q=J<K?J:K;if(!B)L=1;else L=+g[B+16>>2];g[C+(I*60|0)+16>>2]=q<L?q:L;L=+g[a>>2];q=+g[p>>2];K=(L+ +g[m>>2]+ +g[u>>2])*.3333333432674408;
J=(q+ +g[r>>2]+ +g[x>>2])*.3333333432674408;n=+(L-K);L=+(q-J);B=C+(I*60|0)+20|0;g[B>>2]=n;g[B+4>>2]=L;L=+(+g[m>>2]-K);n=+(+g[r>>2]-J);B=C+(I*60|0)+28|0;g[B>>2]=L;g[B+4>>2]=n;n=+(+g[u>>2]-K);K=+(+g[x>>2]-J);B=C+(I*60|0)+36|0;g[B>>2]=n;g[B+4>>2]=K;g[C+(I*60|0)+44>>2]=-(o*s+t*l);g[C+(I*60|0)+48>>2]=-(o*w+t*y);g[C+(I*60|0)+52>>2]=-(w*s+y*l);l=+g[a>>2];y=+g[r>>2];s=+g[p>>2];w=+g[m>>2];t=+g[x>>2];o=+g[u>>2];g[C+(I*60|0)+56>>2]=s*o-l*t+(l*y-s*w+(w*t-y*o));i=f;return}function sl(a){a=a|0;return}function tl(a){a=
a|0;var b=0;b=i;Vm(a);i=b;return}function ul(a,b){a=a|0;b=b|0;return(c[(c[a+4>>2]|0)+(b<<2)>>2]&4096|0)!=0|0}function vl(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function wl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function xl(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function yl(a,b){a=a|0;b=b|0;return 1}function zl(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Al(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;f=c[a+4>>2]|0;a=(f|0)<=(b|0);b=(f|0)>(d|0);if(a|b){i=e;return b&a|0}else{i=e;return 1}return 0}function Bl(a,
b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;g=c[a+4>>2]|0;a=(g|0)>(b|0);b=(g|0)>(d|0);if(a|b|(g|0)>(e|0)){i=f;return(g|0)<=(e|0)|a&b^1|0}else{i=f;return 0}return 0}function Cl(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Dl(a,b){a=a|0;b=b|0;return 0}function El(a){a=a|0;return 1}function Fl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;f=a+16|0;if((c[f>>2]|0)<=0){g=0;i=e;return g|0}h=a+12|0;a=0;while(1){j=c[(c[h>>2]|0)+(a<<2)>>2]|0;a=a+1|0;if(qb[c[(c[j>>2]|0)+16>>2]&15](j,b,d)|0){g=
1;k=5;break}if((a|0)>=(c[f>>2]|0)){g=0;k=5;break}}if((k|0)==5){i=e;return g|0}return 0}function Gl(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}function Hl(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}function Il(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=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;e=i;i=i+16|0;f=e;g[b>>2]=3.4028234663852886E38;h=b+4|0;g[h>>2]=3.4028234663852886E38;g[b+8>>2]=-3.4028234663852886E38;j=b+12|0;g[j>>2]=-3.4028234663852886E38;k=a+16|0;
if((c[k>>2]|0)<=0){i=e;return}l=a+12|0;a=f+4|0;m=b+8|0;n=f+8|0;o=f+12|0;p=0;do{q=c[(c[l>>2]|0)+(p<<2)>>2]|0;r=kb[c[(c[q>>2]|0)+12>>2]&7](q)|0;if((r|0)>0){q=0;do{s=c[(c[l>>2]|0)+(p<<2)>>2]|0;yb[c[(c[s>>2]|0)+28>>2]&31](s,f,d,q);t=+g[b>>2];u=+g[f>>2];v=+g[h>>2];w=+g[a>>2];x=+(t<u?t:u);u=+(v<w?v:w);s=b;g[s>>2]=x;g[s+4>>2]=u;u=+g[m>>2];x=+g[n>>2];w=+g[j>>2];v=+g[o>>2];t=+(u>x?u:x);x=+(w>v?w:v);s=m;g[s>>2]=t;g[s+4>>2]=x;q=q+1|0}while((q|0)!=(r|0))}p=p+1|0}while((p|0)<(c[k>>2]|0));i=e;return}function Jl(a,
b,c){a=a|0;b=b|0;c=+c;return}function Kl(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Ll(a,b){a=a|0;b=b|0;return 0}function Ml(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;g=b+4|0;if((c[g>>2]|0)!=(d|0)){h=0;i=f;return h|0}j=c[b+8>>2]|0;if(!(qb[c[(c[j>>2]|0)+16>>2]&15](j,b+12|0,(c[d+96>>2]|0)+(e<<3)|0)|0)){h=1;i=f;return h|0}d=c[g>>2]|0;vk(d,e,c[(c[d+88>>2]|0)+(e<<2)>>2]|((a[b+28>>0]|0)!=0?514:2));e=b+32|0;c[e>>2]=(c[e>>2]|0)+1;h=1;i=f;return h|0}function Nl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,
h=0,j=0,k=0,l=0;b=i;d=a+4|0;e=c[d>>2]|0;if((e|0)!=(a|0)){f=e;do{e=Im(f)|0;g=c[e>>2]|0;if(g){h=0;j=e+32|0;while(1){k=j+4|0;l=c[j>>2]|0;c[l+4>>2]=c[k>>2];c[c[k>>2]>>2]=l;c[k>>2]=j;c[j>>2]=j;h=h+1|0;if((h|0)==(g|0))break;else j=j+12|0}}Km(a,e);f=c[d>>2]|0}while((f|0)!=(a|0))}f=a+12|0;j=a+20|0;g=a+24|0;h=c[j>>2]|0;c[h+4>>2]=c[g>>2];c[c[g>>2]>>2]=h;c[g>>2]=j;c[j>>2]=j;j=a+16|0;g=c[f>>2]|0;c[g+4>>2]=c[j>>2];c[c[j>>2]>>2]=g;c[j>>2]=f;c[f>>2]=f;Lm(a);f=c[a>>2]|0;c[f+4>>2]=c[d>>2];c[c[d>>2]>>2]=f;c[d>>2]=
a;c[a>>2]=a;i=b;return}function Ol(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=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;f=i;g=((e+-4-c|0)>>>2)+1|0;h=b;j=c;k=c;while(1){c=d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24;l=k+1|0;m=a[l>>0]|0;n=k+2|0;o=a[n>>0]|0;p=k+3|0;q=a[p>>0]|0;a[h>>0]=a[k>>0]|0;a[h+1>>0]=m;a[h+2>>0]=o;a[h+3>>0]=q;a[k>>0]=c;a[l>>0]=c>>>8;a[n>>0]=c>>>16;a[p>>0]=c>>>24;c=h+4|0;p=k+4|0;r=(c|0)==(j|0);if((p|0)==(e|0))break;h=c;j=r?p:j;k=p}k=b+(g<<2)|0;if(r){i=f;return k|0}else{s=
k;t=j;u=j}a:while(1){j=s;r=u;while(1){g=d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24;b=r+1|0;h=a[b>>0]|0;p=r+2|0;c=a[p>>0]|0;n=r+3|0;l=a[n>>0]|0;a[j>>0]=a[r>>0]|0;a[j+1>>0]=h;a[j+2>>0]=c;a[j+3>>0]=l;a[r>>0]=g;a[b>>0]=g>>>8;a[p>>0]=g>>>16;a[n>>0]=g>>>24;j=j+4|0;v=r+4|0;w=(j|0)==(t|0);if((v|0)!=(e|0))break;if(w)break a;else r=t}s=j;t=w?v:t;u=v}i=f;return k|0}function Pl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=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,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=i;f=a;a=b;a:while(1){b=a;g=a+-8|0;h=a+-4|0;j=f;b:while(1){k=j;l=b-k|0;m=l>>3;switch(m|0){case 3:n=6;break a;break;case 2:n=4;break a;break;case 4:n=14;break a;break;case 5:n=15;break a;break;case 1:case 0:n=82;break a;break;default:}if((l|0)<248){n=21;break a}o=(m|0)/2|0;p=j+(o<<3)|0;do if((l|0)>7992){q=(m|0)/4|0;r=j+(q<<3)|0;s=q+o|0;t=j+(s<<3)|0;u=_l(j,r,p,t,d)|0;v=j+(s<<3)+4|0;if((c[h>>2]|0)>>>0>=(c[v>>2]|0)>>>0){w=j+(o<<3)+
4|0;x=u;break}s=t;y=c[s>>2]|0;z=c[s+4>>2]|0;s=g;A=c[s+4>>2]|0;B=t;c[B>>2]=c[s>>2];c[B+4>>2]=A;A=g;c[A>>2]=y;c[A+4>>2]=z;z=u+1|0;A=j+(o<<3)+4|0;if((c[v>>2]|0)>>>0<(c[A>>2]|0)>>>0){v=p;y=c[v>>2]|0;B=c[v+4>>2]|0;v=t;s=c[v+4>>2]|0;C=p;c[C>>2]=c[v>>2];c[C+4>>2]=s;s=t;c[s>>2]=y;c[s+4>>2]=B;B=u+2|0;s=j+(q<<3)+4|0;if((c[A>>2]|0)>>>0<(c[s>>2]|0)>>>0){q=r;y=c[q>>2]|0;t=c[q+4>>2]|0;q=p;C=c[q+4>>2]|0;v=r;c[v>>2]=c[q>>2];c[v+4>>2]=C;C=p;c[C>>2]=y;c[C+4>>2]=t;if((c[s>>2]|0)>>>0<(c[j+4>>2]|0)>>>0){s=j;t=c[s>>2]|
0;C=c[s+4>>2]|0;s=r;y=c[s+4>>2]|0;v=j;c[v>>2]=c[s>>2];c[v+4>>2]=y;y=r;c[y>>2]=t;c[y+4>>2]=C;w=A;x=u+4|0}else{w=A;x=u+3|0}}else{w=A;x=B}}else{w=A;x=z}}else{z=j+(o<<3)+4|0;A=c[z>>2]|0;B=j+4|0;u=(c[h>>2]|0)>>>0<A>>>0;if(A>>>0>=(c[B>>2]|0)>>>0){if(!u){w=z;x=0;break}A=p;C=c[A>>2]|0;y=c[A+4>>2]|0;A=g;t=c[A+4>>2]|0;r=p;c[r>>2]=c[A>>2];c[r+4>>2]=t;t=g;c[t>>2]=C;c[t+4>>2]=y;if((c[z>>2]|0)>>>0>=(c[B>>2]|0)>>>0){w=z;x=1;break}B=j;y=c[B>>2]|0;t=c[B+4>>2]|0;B=p;C=c[B+4>>2]|0;r=j;c[r>>2]=c[B>>2];c[r+4>>2]=C;C=
p;c[C>>2]=y;c[C+4>>2]=t;w=z;x=2;break}t=j;C=c[t>>2]|0;y=c[t+4>>2]|0;if(u){u=g;t=c[u+4>>2]|0;r=j;c[r>>2]=c[u>>2];c[r+4>>2]=t;t=g;c[t>>2]=C;c[t+4>>2]=y;w=z;x=1;break}t=p;r=c[t+4>>2]|0;u=j;c[u>>2]=c[t>>2];c[u+4>>2]=r;r=p;c[r>>2]=C;c[r+4>>2]=y;if((c[h>>2]|0)>>>0<y>>>0){r=g;u=c[r+4>>2]|0;t=p;c[t>>2]=c[r>>2];c[t+4>>2]=u;u=g;c[u>>2]=C;c[u+4>>2]=y;w=z;x=2}else{w=z;x=1}}while(0);o=j+4|0;m=c[o>>2]|0;l=c[w>>2]|0;do if(m>>>0<l>>>0){D=g;E=x}else{z=g;while(1){y=z;z=z+-8|0;if((j|0)==(z|0))break;if((c[y+-4>>2]|0)>>>
0<l>>>0){n=65;break}}if((n|0)==65){n=0;y=j;u=c[y>>2]|0;C=c[y+4>>2]|0;y=z;t=c[y+4>>2]|0;r=j;c[r>>2]=c[y>>2];c[r+4>>2]=t;t=z;c[t>>2]=u;c[t+4>>2]=C;D=z;E=x+1|0;break}C=j+8|0;if(m>>>0<(c[h>>2]|0)>>>0)F=C;else{if((C|0)==(g|0)){n=82;break a}else G=C;while(1){H=G+8|0;if(m>>>0<(c[G+4>>2]|0)>>>0)break;if((H|0)==(g|0)){n=82;break a}else G=H}z=G;C=c[z>>2]|0;t=c[z+4>>2]|0;z=g;u=c[z+4>>2]|0;r=G;c[r>>2]=c[z>>2];c[r+4>>2]=u;u=g;c[u>>2]=C;c[u+4>>2]=t;F=H}if((F|0)==(g|0)){n=82;break a}else{I=F;J=g}while(1){t=c[o>>
2]|0;u=I;while(1){K=u+8|0;if(t>>>0<(c[u+4>>2]|0)>>>0){L=J;break}else u=K}do{C=L;L=L+-8|0}while(t>>>0<(c[C+-4>>2]|0)>>>0);if(u>>>0>=L>>>0){j=u;continue b}t=u;C=c[t>>2]|0;r=c[t+4>>2]|0;t=L;z=c[t+4>>2]|0;y=u;c[y>>2]=c[t>>2];c[y+4>>2]=z;z=L;c[z>>2]=C;c[z+4>>2]=r;I=K;J=L}}while(0);o=j+8|0;c:do if(o>>>0<D>>>0){m=o;l=D;r=p;z=E;while(1){C=c[r+4>>2]|0;y=m;while(1){M=y+8|0;if((c[y+4>>2]|0)>>>0<C>>>0)y=M;else{N=l;break}}do{u=N;N=N+-8|0}while((c[u+-4>>2]|0)>>>0>=C>>>0);if(y>>>0>N>>>0){O=y;P=r;Q=z;break c}C=y;
u=c[C>>2]|0;t=c[C+4>>2]|0;C=N;B=c[C+4>>2]|0;A=y;c[A>>2]=c[C>>2];c[A+4>>2]=B;B=N;c[B>>2]=u;c[B+4>>2]=t;m=M;l=N;r=(r|0)==(y|0)?N:r;z=z+1|0}}else{O=o;P=p;Q=E}while(0);if((O|0)!=(P|0)?(c[P+4>>2]|0)>>>0<(c[O+4>>2]|0)>>>0:0){p=O;o=c[p>>2]|0;z=c[p+4>>2]|0;p=P;r=c[p+4>>2]|0;l=O;c[l>>2]=c[p>>2];c[l+4>>2]=r;r=P;c[r>>2]=o;c[r+4>>2]=z;R=Q+1|0}else R=Q;if(!R){S=$l(j,O,d)|0;z=O+8|0;if($l(z,a,d)|0){n=77;break}if(S){j=z;continue}}z=O;if((z-k|0)>=(b-z|0)){n=81;break}Pl(j,O,d);j=O+8|0}if((n|0)==77){n=0;if(S){n=82;
break}else{f=j;a=O;continue}}else if((n|0)==81){n=0;Pl(O+8|0,a,d);f=j;a=O;continue}}if((n|0)==4){if((c[h>>2]|0)>>>0>=(c[j+4>>2]|0)>>>0){i=e;return}O=j;f=c[O>>2]|0;S=c[O+4>>2]|0;O=g;R=c[O+4>>2]|0;Q=j;c[Q>>2]=c[O>>2];c[Q+4>>2]=R;R=g;c[R>>2]=f;c[R+4>>2]=S;i=e;return}else if((n|0)==6){S=j+8|0;R=j+12|0;f=c[R>>2]|0;Q=j+4|0;O=(c[h>>2]|0)>>>0<f>>>0;if(f>>>0>=(c[Q>>2]|0)>>>0){if(!O){i=e;return}f=S;P=c[f>>2]|0;E=c[f+4>>2]|0;f=g;N=c[f+4>>2]|0;M=S;c[M>>2]=c[f>>2];c[M+4>>2]=N;N=g;c[N>>2]=P;c[N+4>>2]=E;if((c[R>>
2]|0)>>>0>=(c[Q>>2]|0)>>>0){i=e;return}Q=j;R=c[Q>>2]|0;E=c[Q+4>>2]|0;Q=S;N=c[Q+4>>2]|0;P=j;c[P>>2]=c[Q>>2];c[P+4>>2]=N;N=S;c[N>>2]=R;c[N+4>>2]=E;i=e;return}E=j;N=c[E>>2]|0;R=c[E+4>>2]|0;if(O){O=g;E=c[O+4>>2]|0;P=j;c[P>>2]=c[O>>2];c[P+4>>2]=E;E=g;c[E>>2]=N;c[E+4>>2]=R;i=e;return}E=S;P=c[E+4>>2]|0;O=j;c[O>>2]=c[E>>2];c[O+4>>2]=P;P=S;c[P>>2]=N;c[P+4>>2]=R;if((c[h>>2]|0)>>>0>=R>>>0){i=e;return}P=g;O=c[P+4>>2]|0;E=S;c[E>>2]=c[P>>2];c[E+4>>2]=O;O=g;c[O>>2]=N;c[O+4>>2]=R;i=e;return}else if((n|0)==14){_l(j,
j+8|0,j+16|0,g,d)|0;i=e;return}else if((n|0)==15){R=j+8|0;O=j+16|0;N=j+24|0;_l(j,R,O,N,d)|0;d=j+28|0;if((c[h>>2]|0)>>>0>=(c[d>>2]|0)>>>0){i=e;return}h=N;E=c[h>>2]|0;P=c[h+4>>2]|0;h=g;S=c[h+4>>2]|0;Q=N;c[Q>>2]=c[h>>2];c[Q+4>>2]=S;S=g;c[S>>2]=E;c[S+4>>2]=P;if((c[d>>2]|0)>>>0>=(c[j+20>>2]|0)>>>0){i=e;return}d=O;P=c[d>>2]|0;S=c[d+4>>2]|0;d=N;E=c[d>>2]|0;g=c[d+4>>2]|0;d=O;c[d>>2]=E;c[d+4>>2]=g;d=N;c[d>>2]=P;c[d+4>>2]=S;if(g>>>0>=(c[j+12>>2]|0)>>>0){i=e;return}S=R;d=c[S>>2]|0;P=c[S+4>>2]|0;S=R;c[S>>2]=
E;c[S+4>>2]=g;S=O;c[S>>2]=d;c[S+4>>2]=P;if(g>>>0>=(c[j+4>>2]|0)>>>0){i=e;return}P=j;S=c[P>>2]|0;d=c[P+4>>2]|0;P=j;c[P>>2]=E;c[P+4>>2]=g;g=R;c[g>>2]=S;c[g+4>>2]=d;i=e;return}else if((n|0)==21){d=j+16|0;g=j+8|0;S=c[j+12>>2]|0;R=c[j+4>>2]|0;P=c[j+20>>2]|0;E=P>>>0<S>>>0;do if(S>>>0<R>>>0){O=j;N=c[O>>2]|0;Q=c[O+4>>2]|0;if(E){O=d;h=c[O+4>>2]|0;M=j;c[M>>2]=c[O>>2];c[M+4>>2]=h;h=d;c[h>>2]=N;c[h+4>>2]=Q;break}h=g;M=c[h+4>>2]|0;O=j;c[O>>2]=c[h>>2];c[O+4>>2]=M;M=g;c[M>>2]=N;c[M+4>>2]=Q;if(P>>>0<Q>>>0){M=d;O=
c[M+4>>2]|0;h=g;c[h>>2]=c[M>>2];c[h+4>>2]=O;O=d;c[O>>2]=N;c[O+4>>2]=Q}}else if(E?(Q=g,O=c[Q>>2]|0,N=c[Q+4>>2]|0,Q=d,h=c[Q>>2]|0,M=c[Q+4>>2]|0,Q=g,c[Q>>2]=h,c[Q+4>>2]=M,Q=d,c[Q>>2]=O,c[Q+4>>2]=N,M>>>0<R>>>0):0){N=j;Q=c[N>>2]|0;O=c[N+4>>2]|0;N=j;c[N>>2]=h;c[N+4>>2]=M;M=g;c[M>>2]=Q;c[M+4>>2]=O}while(0);g=j+24|0;if((g|0)==(a|0)){i=e;return}else{T=g;U=d}while(1){if((c[T+4>>2]|0)>>>0<(c[U+4>>2]|0)>>>0){d=T;g=c[d>>2]|0;R=c[d+4>>2]|0;d=T;E=U;while(1){P=E;S=c[P+4>>2]|0;O=d;c[O>>2]=c[P>>2];c[O+4>>2]=S;if((E|
0)==(j|0))break;if(R>>>0<(c[E+-4>>2]|0)>>>0){S=E;E=E+-8|0;d=S}else break}d=E;c[d>>2]=g;c[d+4>>2]=R}d=T+8|0;if((d|0)==(a|0))break;else{S=T;T=d;U=S}}i=e;return}else if((n|0)==82){i=e;return}}function Ql(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,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=i;i=i+32|0;j=h;if((e|0)==2){k=b+-20|0;if(!(wb[c[d>>2]&31](k,a)|0)){i=h;return}c[j+0>>2]=c[a+0>>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[a+0>>
2]=c[k+0>>2];c[a+4>>2]=c[k+4>>2];c[a+8>>2]=c[k+8>>2];c[a+12>>2]=c[k+12>>2];c[a+16>>2]=c[k+16>>2];c[k+0>>2]=c[j+0>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];c[k+16>>2]=c[j+16>>2];i=h;return}else if((e|0)==1|(e|0)==0){i=h;return}else{if((e|0)<129){if((a|0)==(b|0)){i=h;return}k=a+20|0;if((k|0)==(b|0)){i=h;return}else l=k;do{c[j+0>>2]=c[l+0>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];c[j+16>>2]=c[l+16>>2];a:do if((l|0)==(a|0))m=a;else{k=l;while(1){n=k;k=k+
-20|0;if(!(wb[c[d>>2]&31](j,k)|0)){m=n;break a}c[n+0>>2]=c[k+0>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];c[n+16>>2]=c[k+16>>2];if((k|0)==(a|0)){m=a;break}}}while(0);c[m+0>>2]=c[j+0>>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];l=l+20|0}while((l|0)!=(b|0));i=h;return}l=(e|0)/2|0;j=a+(l*20|0)|0;if((e|0)>(g|0)){Ql(a,j,d,l,f,g);m=e-l|0;Ql(j,b,d,m,f,g);bm(a,j,b,d,l,m,f,g);i=h;return}am(a,j,d,l,f);g=f+(l*20|0)|0;am(j,b,d,e-l|0,g);l=f+(e*
20|0)|0;b:do if((e+1|0)>>>0<3){o=a;p=g}else{b=a;j=f;m=g;while(1){if((m|0)==(l|0))break;if(wb[c[d>>2]&31](m,j)|0){c[b+0>>2]=c[m+0>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2];c[b+16>>2]=c[m+16>>2];q=m+20|0;r=j}else{c[b+0>>2]=c[j+0>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];c[b+12>>2]=c[j+12>>2];c[b+16>>2]=c[j+16>>2];q=m;r=j+20|0}k=b+20|0;if((r|0)==(g|0)){o=k;p=q;break b}else{b=k;j=r;m=q}}if((j|0)==(g|0)){i=h;return}else{s=j;t=b}while(1){c[t+0>>2]=c[s+0>>2];c[t+4>>2]=c[s+4>>2];
c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];c[t+16>>2]=c[s+16>>2];s=s+20|0;if((s|0)==(g|0))break;else t=t+20|0}i=h;return}while(0);if((p|0)==(l|0)){i=h;return}else{u=o;v=p}while(1){c[u+0>>2]=c[v+0>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];v=v+20|0;if((v|0)==(l|0))break;else u=u+20|0}i=h;return}}function Rl(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,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;h=i;i=i+64|0;j=h;if((e|0)==2){k=
b+-60|0;if(!(wb[c[d>>2]&31](k,a)|0)){i=h;return}l=j+0|0;m=a+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));l=a+0|0;m=k+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));l=k+0|0;m=j+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));i=h;return}else if((e|0)==1|(e|0)==0){i=h;return}else{if((e|0)<129){if((a|0)==(b|0)){i=h;return}k=a+60|0;if((k|0)==(b|0)){i=h;return}o=k;do{l=j+0|0;m=o+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));
a:do if((o|0)==(a|0))p=a;else{k=o;while(1){q=k;k=k+-60|0;if(!(wb[c[d>>2]&31](j,k)|0)){p=q;break a}l=q+0|0;m=k+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));if((k|0)==(a|0)){p=a;break}}}while(0);l=p+0|0;m=j+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));o=o+60|0}while((o|0)!=(b|0));i=h;return}o=(e|0)/2|0;j=a+(o*60|0)|0;if((e|0)>(g|0)){Rl(a,j,d,o,f,g);p=e-o|0;Rl(j,b,d,p,f,g);dm(a,j,b,d,o,p,f,g);i=h;return}cm(a,j,d,o,f);g=f+(o*60|0)|0;cm(j,b,d,e-o|0,g);o=f+(e*
60|0)|0;b:do if((e+1|0)>>>0<3){r=a;s=g}else{b=a;j=f;p=g;while(1){if((p|0)==(o|0))break;if(wb[c[d>>2]&31](p,j)|0){l=b+0|0;m=p+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));t=p+60|0;u=j}else{l=b+0|0;m=j+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));t=p;u=j+60|0}k=b+60|0;if((u|0)==(g|0)){r=k;s=t;break b}else{b=k;j=u;p=t}}if((j|0)==(g|0)){i=h;return}else{v=j;w=b}while(1){l=w+0|0;m=v+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));v=v+60|0;if((v|
0)==(g|0))break;else w=w+60|0}i=h;return}while(0);if((s|0)==(o|0)){i=h;return}else{x=r;y=s}while(1){l=x+0|0;m=y+0|0;n=l+60|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));y=y+60|0;if((y|0)==(o|0))break;else x=x+60|0}i=h;return}}function Sl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;f=i;h=c[a+96>>2]|0;j=+g[h+(d<<3)>>2]-+g[h+(b<<3)>>2];l=+g[h+(d<<3)+4>>2]-+g[h+(b<<3)+4>>2];m=j*j+l*l;if(!(m<+g[a+40>>2])){i=f;return}n=(c[k>>2]=1597463007-((g[k>>
2]=m,c[k>>2]|0)>>1),+g[k>>2]);o=n*(1.5-n*(m*.5*n));h=e+4|0;p=c[h>>2]|0;q=e+8|0;r=c[q>>2]|0;if((p|0)>=(r|0)?(s=(r|0)==0?256:r<<1,(r|0)<(s|0)):0){r=e+12|0;t=um(c[r>>2]|0,s*24|0)|0;u=c[e>>2]|0;if(u){Dn(t|0,u|0,(c[h>>2]|0)*24|0)|0;vm(c[r>>2]|0,c[e>>2]|0,(c[q>>2]|0)*24|0)}c[q>>2]=s;c[e>>2]=t;v=c[h>>2]|0}else v=p;c[h>>2]=v+1;h=c[e>>2]|0;c[h+(v*24|0)>>2]=b;c[h+(v*24|0)+4>>2]=d;e=c[a+88>>2]|0;c[h+(v*24|0)+20>>2]=c[e+(d<<2)>>2]|c[e+(b<<2)>>2];g[h+(v*24|0)+8>>2]=1-m*o*+g[a+36>>2];m=+(j*o);j=+(l*o);a=h+(v*24|
0)+12|0;g[a>>2]=m;g[a+4>>2]=j;i=f;return}function Tl(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if((c[a>>2]|0)>=(c[b>>2]|0)){e=0;i=d;return e|0}e=(c[a+4>>2]|0)<(c[b+4>>2]|0);i=d;return e|0}function Ul(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;e=i;i=i+16|0;f=e;g=a;a=b;a:while(1){b=a;h=a+-8|0;j=g;b:while(1){k=j;l=b-k|0;m=l>>3;switch(m|0){case 2:n=4;break a;break;case 3:n=
6;break a;break;case 4:n=14;break a;break;case 5:n=26;break a;break;case 1:case 0:n=84;break a;break;default:}if((l|0)<248){n=28;break a}o=(m|0)/2|0;p=j+(o<<3)|0;do if((l|0)<=7992){q=wb[c[d>>2]&31](p,j)|0;r=wb[c[d>>2]&31](h,p)|0;if(!q){if(!r){s=0;break}q=p;t=c[q>>2]|0;u=c[q+4>>2]|0;q=h;v=c[q+4>>2]|0;w=p;c[w>>2]=c[q>>2];c[w+4>>2]=v;v=h;c[v>>2]=t;c[v+4>>2]=u;if(!(wb[c[d>>2]&31](p,j)|0)){s=1;break}u=j;v=c[u>>2]|0;t=c[u+4>>2]|0;u=p;w=c[u+4>>2]|0;q=j;c[q>>2]=c[u>>2];c[q+4>>2]=w;w=p;c[w>>2]=v;c[w+4>>2]=
t;s=2;break}t=j;w=c[t>>2]|0;v=c[t+4>>2]|0;if(r){r=h;t=c[r+4>>2]|0;q=j;c[q>>2]=c[r>>2];c[q+4>>2]=t;t=h;c[t>>2]=w;c[t+4>>2]=v;s=1;break}t=p;q=c[t+4>>2]|0;r=j;c[r>>2]=c[t>>2];c[r+4>>2]=q;q=p;c[q>>2]=w;c[q+4>>2]=v;if(wb[c[d>>2]&31](h,p)|0){v=p;q=c[v>>2]|0;w=c[v+4>>2]|0;v=h;r=c[v+4>>2]|0;t=p;c[t>>2]=c[v>>2];c[t+4>>2]=r;r=h;c[r>>2]=q;c[r+4>>2]=w;s=2}else s=1}else{w=(m|0)/4|0;s=em(j,j+(w<<3)|0,p,j+(w+o<<3)|0,h,d)|0}while(0);do if(wb[c[d>>2]&31](j,p)|0){x=h;y=s}else{o=h;while(1){o=o+-8|0;if((j|0)==(o|0))break;
if(wb[c[d>>2]&31](o,p)|0){n=67;break}}if((n|0)==67){n=0;m=j;l=c[m>>2]|0;w=c[m+4>>2]|0;m=o;r=c[m+4>>2]|0;q=j;c[q>>2]=c[m>>2];c[q+4>>2]=r;r=o;c[r>>2]=l;c[r+4>>2]=w;x=o;y=s+1|0;break}w=j+8|0;if(wb[c[d>>2]&31](j,h)|0)z=w;else{if((w|0)==(h|0)){n=84;break a}else A=w;while(1){B=A+8|0;if(wb[c[d>>2]&31](j,A)|0)break;if((B|0)==(h|0)){n=84;break a}else A=B}o=A;w=c[o>>2]|0;r=c[o+4>>2]|0;o=h;l=c[o+4>>2]|0;q=A;c[q>>2]=c[o>>2];c[q+4>>2]=l;l=h;c[l>>2]=w;c[l+4>>2]=r;z=B}if((z|0)==(h|0)){n=84;break a}else{C=z;D=h}while(1){r=
C;while(1){E=r+8|0;if(wb[c[d>>2]&31](j,r)|0){F=D;break}else r=E}do F=F+-8|0;while(wb[c[d>>2]&31](j,F)|0);if(r>>>0>=F>>>0){j=r;continue b}l=r;w=c[l>>2]|0;q=c[l+4>>2]|0;l=F;o=c[l+4>>2]|0;m=r;c[m>>2]=c[l>>2];c[m+4>>2]=o;o=F;c[o>>2]=w;c[o+4>>2]=q;C=E;D=F}}while(0);q=j+8|0;c:do if(q>>>0<x>>>0){o=q;w=x;m=p;l=y;while(1){t=o;while(1){G=t+8|0;if(wb[c[d>>2]&31](t,m)|0)t=G;else{H=w;break}}do H=H+-8|0;while(!(wb[c[d>>2]&31](H,m)|0));if(t>>>0>H>>>0){I=t;J=m;K=l;break c}r=t;v=c[r>>2]|0;u=c[r+4>>2]|0;r=H;L=c[r+
4>>2]|0;M=t;c[M>>2]=c[r>>2];c[M+4>>2]=L;L=H;c[L>>2]=v;c[L+4>>2]=u;o=G;w=H;m=(m|0)==(t|0)?H:m;l=l+1|0}}else{I=q;J=p;K=y}while(0);if((I|0)!=(J|0)?wb[c[d>>2]&31](J,I)|0:0){p=I;q=c[p>>2]|0;l=c[p+4>>2]|0;p=J;m=c[p+4>>2]|0;w=I;c[w>>2]=c[p>>2];c[w+4>>2]=m;m=J;c[m>>2]=q;c[m+4>>2]=l;N=K+1|0}else N=K;if(!N){O=fm(j,I,d)|0;l=I+8|0;if(fm(l,a,d)|0){n=79;break}if(O){j=l;continue}}l=I;if((l-k|0)>=(b-l|0)){n=83;break}Ul(j,I,d);j=I+8|0}if((n|0)==79){n=0;if(O){n=84;break}else{g=j;a=I;continue}}else if((n|0)==83){n=
0;Ul(I+8|0,a,d);g=j;a=I;continue}}if((n|0)==4){if(!(wb[c[d>>2]&31](h,j)|0)){i=e;return}I=j;g=c[I>>2]|0;O=c[I+4>>2]|0;I=h;N=c[I+4>>2]|0;K=j;c[K>>2]=c[I>>2];c[K+4>>2]=N;N=h;c[N>>2]=g;c[N+4>>2]=O;i=e;return}else if((n|0)==6){O=j+8|0;N=wb[c[d>>2]&31](O,j)|0;g=wb[c[d>>2]&31](h,O)|0;if(!N){if(!g){i=e;return}N=O;K=c[N>>2]|0;I=c[N+4>>2]|0;N=h;J=c[N+4>>2]|0;y=O;c[y>>2]=c[N>>2];c[y+4>>2]=J;J=h;c[J>>2]=K;c[J+4>>2]=I;if(!(wb[c[d>>2]&31](O,j)|0)){i=e;return}I=j;J=c[I>>2]|0;K=c[I+4>>2]|0;I=O;y=c[I+4>>2]|0;N=j;
c[N>>2]=c[I>>2];c[N+4>>2]=y;y=O;c[y>>2]=J;c[y+4>>2]=K;i=e;return}K=j;y=c[K>>2]|0;J=c[K+4>>2]|0;if(g){g=h;K=c[g+4>>2]|0;N=j;c[N>>2]=c[g>>2];c[N+4>>2]=K;K=h;c[K>>2]=y;c[K+4>>2]=J;i=e;return}K=O;N=c[K+4>>2]|0;g=j;c[g>>2]=c[K>>2];c[g+4>>2]=N;N=O;c[N>>2]=y;c[N+4>>2]=J;if(!(wb[c[d>>2]&31](h,O)|0)){i=e;return}J=O;N=c[J>>2]|0;y=c[J+4>>2]|0;J=h;g=c[J+4>>2]|0;K=O;c[K>>2]=c[J>>2];c[K+4>>2]=g;g=h;c[g>>2]=N;c[g+4>>2]=y;i=e;return}else if((n|0)==14){y=j+8|0;g=j+16|0;N=wb[c[d>>2]&31](y,j)|0;K=wb[c[d>>2]&31](g,y)|
0;do if(N){J=j;O=c[J>>2]|0;I=c[J+4>>2]|0;if(K){J=g;H=c[J+4>>2]|0;G=j;c[G>>2]=c[J>>2];c[G+4>>2]=H;H=g;c[H>>2]=O;c[H+4>>2]=I;break}H=y;G=c[H+4>>2]|0;J=j;c[J>>2]=c[H>>2];c[J+4>>2]=G;G=y;c[G>>2]=O;c[G+4>>2]=I;if(wb[c[d>>2]&31](g,y)|0){I=y;G=c[I>>2]|0;O=c[I+4>>2]|0;I=g;J=c[I+4>>2]|0;H=y;c[H>>2]=c[I>>2];c[H+4>>2]=J;J=g;c[J>>2]=G;c[J+4>>2]=O}}else if(K?(O=y,J=c[O>>2]|0,G=c[O+4>>2]|0,O=g,H=c[O+4>>2]|0,I=y,c[I>>2]=c[O>>2],c[I+4>>2]=H,H=g,c[H>>2]=J,c[H+4>>2]=G,wb[c[d>>2]&31](y,j)|0):0){G=j;H=c[G>>2]|0;J=c[G+
4>>2]|0;G=y;I=c[G+4>>2]|0;O=j;c[O>>2]=c[G>>2];c[O+4>>2]=I;I=y;c[I>>2]=H;c[I+4>>2]=J}while(0);if(!(wb[c[d>>2]&31](h,g)|0)){i=e;return}K=g;N=c[K>>2]|0;J=c[K+4>>2]|0;K=h;I=c[K+4>>2]|0;H=g;c[H>>2]=c[K>>2];c[H+4>>2]=I;I=h;c[I>>2]=N;c[I+4>>2]=J;if(!(wb[c[d>>2]&31](g,y)|0)){i=e;return}J=y;I=c[J>>2]|0;N=c[J+4>>2]|0;J=g;H=c[J+4>>2]|0;K=y;c[K>>2]=c[J>>2];c[K+4>>2]=H;H=g;c[H>>2]=I;c[H+4>>2]=N;if(!(wb[c[d>>2]&31](y,j)|0)){i=e;return}N=j;H=c[N>>2]|0;I=c[N+4>>2]|0;N=y;g=c[N+4>>2]|0;K=j;c[K>>2]=c[N>>2];c[K+4>>2]=
g;g=y;c[g>>2]=H;c[g+4>>2]=I;i=e;return}else if((n|0)==26){em(j,j+8|0,j+16|0,j+24|0,h,d)|0;i=e;return}else if((n|0)==28){h=j+16|0;I=j+8|0;g=wb[c[d>>2]&31](I,j)|0;H=wb[c[d>>2]&31](h,I)|0;do if(g){y=j;K=c[y>>2]|0;N=c[y+4>>2]|0;if(H){y=h;J=c[y+4>>2]|0;O=j;c[O>>2]=c[y>>2];c[O+4>>2]=J;J=h;c[J>>2]=K;c[J+4>>2]=N;break}J=I;O=c[J+4>>2]|0;y=j;c[y>>2]=c[J>>2];c[y+4>>2]=O;O=I;c[O>>2]=K;c[O+4>>2]=N;if(wb[c[d>>2]&31](h,I)|0){N=I;O=c[N>>2]|0;K=c[N+4>>2]|0;N=h;y=c[N+4>>2]|0;J=I;c[J>>2]=c[N>>2];c[J+4>>2]=y;y=h;c[y>>
2]=O;c[y+4>>2]=K}}else if(H?(K=I,y=c[K>>2]|0,O=c[K+4>>2]|0,K=h,J=c[K+4>>2]|0,N=I,c[N>>2]=c[K>>2],c[N+4>>2]=J,J=h,c[J>>2]=y,c[J+4>>2]=O,wb[c[d>>2]&31](I,j)|0):0){O=j;J=c[O>>2]|0;y=c[O+4>>2]|0;O=I;N=c[O+4>>2]|0;K=j;c[K>>2]=c[O>>2];c[K+4>>2]=N;N=I;c[N>>2]=J;c[N+4>>2]=y}while(0);I=j+24|0;if((I|0)==(a|0)){i=e;return}else{P=I;Q=h}while(1){if(wb[c[d>>2]&31](P,Q)|0){h=P;I=c[h+4>>2]|0;H=f;c[H>>2]=c[h>>2];c[H+4>>2]=I;I=P;H=Q;while(1){h=H;g=c[h+4>>2]|0;y=I;c[y>>2]=c[h>>2];c[y+4>>2]=g;if((H|0)==(j|0))break;g=
H+-8|0;if(wb[c[d>>2]&31](f,g)|0){y=H;H=g;I=y}else break}I=f;y=c[I+4>>2]|0;g=H;c[g>>2]=c[I>>2];c[g+4>>2]=y}y=P+8|0;if((y|0)==(a|0))break;else{g=P;P=y;Q=g}}i=e;return}else if((n|0)==84){i=e;return}}function Vl(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if((c[a>>2]|0)>>>0>=(c[b>>2]|0)>>>0){e=0;i=d;return e|0}e=(c[a+4>>2]|0)<(c[b+4>>2]|0);i=d;return e|0}function Wl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;e=i;i=i+16|0;f=e;g=a;a=b;a:while(1){b=a;h=a+-8|0;j=g;b:while(1){k=j;l=b-k|0;m=l>>3;switch(m|0){case 2:n=4;break a;break;case 3:n=6;break a;break;case 4:n=14;break a;break;case 1:case 0:n=84;break a;break;case 5:n=26;break a;break;default:}if((l|0)<248){n=28;break a}o=(m|0)/2|0;p=j+(o<<3)|0;do if((l|0)<=7992){q=wb[c[d>>2]&31](p,j)|0;r=wb[c[d>>2]&31](h,p)|0;if(!q){if(!r){s=0;break}q=p;t=c[q>>2]|0;u=c[q+4>>2]|0;q=h;v=c[q+4>>2]|0;w=p;c[w>>2]=c[q>>2];c[w+4>>2]=v;v=h;c[v>>
2]=t;c[v+4>>2]=u;if(!(wb[c[d>>2]&31](p,j)|0)){s=1;break}u=j;v=c[u>>2]|0;t=c[u+4>>2]|0;u=p;w=c[u+4>>2]|0;q=j;c[q>>2]=c[u>>2];c[q+4>>2]=w;w=p;c[w>>2]=v;c[w+4>>2]=t;s=2;break}t=j;w=c[t>>2]|0;v=c[t+4>>2]|0;if(r){r=h;t=c[r+4>>2]|0;q=j;c[q>>2]=c[r>>2];c[q+4>>2]=t;t=h;c[t>>2]=w;c[t+4>>2]=v;s=1;break}t=p;q=c[t+4>>2]|0;r=j;c[r>>2]=c[t>>2];c[r+4>>2]=q;q=p;c[q>>2]=w;c[q+4>>2]=v;if(wb[c[d>>2]&31](h,p)|0){v=p;q=c[v>>2]|0;w=c[v+4>>2]|0;v=h;r=c[v+4>>2]|0;t=p;c[t>>2]=c[v>>2];c[t+4>>2]=r;r=h;c[r>>2]=q;c[r+4>>2]=w;
s=2}else s=1}else{w=(m|0)/4|0;s=gm(j,j+(w<<3)|0,p,j+(w+o<<3)|0,h,d)|0}while(0);do if(wb[c[d>>2]&31](j,p)|0){x=h;y=s}else{o=h;while(1){o=o+-8|0;if((j|0)==(o|0))break;if(wb[c[d>>2]&31](o,p)|0){n=67;break}}if((n|0)==67){n=0;m=j;l=c[m>>2]|0;w=c[m+4>>2]|0;m=o;r=c[m+4>>2]|0;q=j;c[q>>2]=c[m>>2];c[q+4>>2]=r;r=o;c[r>>2]=l;c[r+4>>2]=w;x=o;y=s+1|0;break}w=j+8|0;if(wb[c[d>>2]&31](j,h)|0)z=w;else{if((w|0)==(h|0)){n=84;break a}else A=w;while(1){B=A+8|0;if(wb[c[d>>2]&31](j,A)|0)break;if((B|0)==(h|0)){n=84;break a}else A=
B}o=A;w=c[o>>2]|0;r=c[o+4>>2]|0;o=h;l=c[o+4>>2]|0;q=A;c[q>>2]=c[o>>2];c[q+4>>2]=l;l=h;c[l>>2]=w;c[l+4>>2]=r;z=B}if((z|0)==(h|0)){n=84;break a}else{C=z;D=h}while(1){r=C;while(1){E=r+8|0;if(wb[c[d>>2]&31](j,r)|0){F=D;break}else r=E}do F=F+-8|0;while(wb[c[d>>2]&31](j,F)|0);if(r>>>0>=F>>>0){j=r;continue b}l=r;w=c[l>>2]|0;q=c[l+4>>2]|0;l=F;o=c[l+4>>2]|0;m=r;c[m>>2]=c[l>>2];c[m+4>>2]=o;o=F;c[o>>2]=w;c[o+4>>2]=q;C=E;D=F}}while(0);q=j+8|0;c:do if(q>>>0<x>>>0){o=q;w=x;m=p;l=y;while(1){t=o;while(1){G=t+8|0;
if(wb[c[d>>2]&31](t,m)|0)t=G;else{H=w;break}}do H=H+-8|0;while(!(wb[c[d>>2]&31](H,m)|0));if(t>>>0>H>>>0){I=t;J=m;K=l;break c}r=t;v=c[r>>2]|0;u=c[r+4>>2]|0;r=H;L=c[r+4>>2]|0;M=t;c[M>>2]=c[r>>2];c[M+4>>2]=L;L=H;c[L>>2]=v;c[L+4>>2]=u;o=G;w=H;m=(m|0)==(t|0)?H:m;l=l+1|0}}else{I=q;J=p;K=y}while(0);if((I|0)!=(J|0)?wb[c[d>>2]&31](J,I)|0:0){p=I;q=c[p>>2]|0;l=c[p+4>>2]|0;p=J;m=c[p+4>>2]|0;w=I;c[w>>2]=c[p>>2];c[w+4>>2]=m;m=J;c[m>>2]=q;c[m+4>>2]=l;N=K+1|0}else N=K;if(!N){O=hm(j,I,d)|0;l=I+8|0;if(hm(l,a,d)|0){n=
79;break}if(O){j=l;continue}}l=I;if((l-k|0)>=(b-l|0)){n=83;break}Wl(j,I,d);j=I+8|0}if((n|0)==79){n=0;if(O){n=84;break}else{g=j;a=I;continue}}else if((n|0)==83){n=0;Wl(I+8|0,a,d);g=j;a=I;continue}}if((n|0)==4){if(!(wb[c[d>>2]&31](h,j)|0)){i=e;return}I=j;g=c[I>>2]|0;O=c[I+4>>2]|0;I=h;N=c[I+4>>2]|0;K=j;c[K>>2]=c[I>>2];c[K+4>>2]=N;N=h;c[N>>2]=g;c[N+4>>2]=O;i=e;return}else if((n|0)==6){O=j+8|0;N=wb[c[d>>2]&31](O,j)|0;g=wb[c[d>>2]&31](h,O)|0;if(!N){if(!g){i=e;return}N=O;K=c[N>>2]|0;I=c[N+4>>2]|0;N=h;J=
c[N+4>>2]|0;y=O;c[y>>2]=c[N>>2];c[y+4>>2]=J;J=h;c[J>>2]=K;c[J+4>>2]=I;if(!(wb[c[d>>2]&31](O,j)|0)){i=e;return}I=j;J=c[I>>2]|0;K=c[I+4>>2]|0;I=O;y=c[I+4>>2]|0;N=j;c[N>>2]=c[I>>2];c[N+4>>2]=y;y=O;c[y>>2]=J;c[y+4>>2]=K;i=e;return}K=j;y=c[K>>2]|0;J=c[K+4>>2]|0;if(g){g=h;K=c[g+4>>2]|0;N=j;c[N>>2]=c[g>>2];c[N+4>>2]=K;K=h;c[K>>2]=y;c[K+4>>2]=J;i=e;return}K=O;N=c[K+4>>2]|0;g=j;c[g>>2]=c[K>>2];c[g+4>>2]=N;N=O;c[N>>2]=y;c[N+4>>2]=J;if(!(wb[c[d>>2]&31](h,O)|0)){i=e;return}J=O;N=c[J>>2]|0;y=c[J+4>>2]|0;J=h;g=
c[J+4>>2]|0;K=O;c[K>>2]=c[J>>2];c[K+4>>2]=g;g=h;c[g>>2]=N;c[g+4>>2]=y;i=e;return}else if((n|0)==14){y=j+8|0;g=j+16|0;N=wb[c[d>>2]&31](y,j)|0;K=wb[c[d>>2]&31](g,y)|0;do if(N){J=j;O=c[J>>2]|0;I=c[J+4>>2]|0;if(K){J=g;H=c[J+4>>2]|0;G=j;c[G>>2]=c[J>>2];c[G+4>>2]=H;H=g;c[H>>2]=O;c[H+4>>2]=I;break}H=y;G=c[H+4>>2]|0;J=j;c[J>>2]=c[H>>2];c[J+4>>2]=G;G=y;c[G>>2]=O;c[G+4>>2]=I;if(wb[c[d>>2]&31](g,y)|0){I=y;G=c[I>>2]|0;O=c[I+4>>2]|0;I=g;J=c[I+4>>2]|0;H=y;c[H>>2]=c[I>>2];c[H+4>>2]=J;J=g;c[J>>2]=G;c[J+4>>2]=O}}else if(K?
(O=y,J=c[O>>2]|0,G=c[O+4>>2]|0,O=g,H=c[O+4>>2]|0,I=y,c[I>>2]=c[O>>2],c[I+4>>2]=H,H=g,c[H>>2]=J,c[H+4>>2]=G,wb[c[d>>2]&31](y,j)|0):0){G=j;H=c[G>>2]|0;J=c[G+4>>2]|0;G=y;I=c[G+4>>2]|0;O=j;c[O>>2]=c[G>>2];c[O+4>>2]=I;I=y;c[I>>2]=H;c[I+4>>2]=J}while(0);if(!(wb[c[d>>2]&31](h,g)|0)){i=e;return}K=g;N=c[K>>2]|0;J=c[K+4>>2]|0;K=h;I=c[K+4>>2]|0;H=g;c[H>>2]=c[K>>2];c[H+4>>2]=I;I=h;c[I>>2]=N;c[I+4>>2]=J;if(!(wb[c[d>>2]&31](g,y)|0)){i=e;return}J=y;I=c[J>>2]|0;N=c[J+4>>2]|0;J=g;H=c[J+4>>2]|0;K=y;c[K>>2]=c[J>>2];
c[K+4>>2]=H;H=g;c[H>>2]=I;c[H+4>>2]=N;if(!(wb[c[d>>2]&31](y,j)|0)){i=e;return}N=j;H=c[N>>2]|0;I=c[N+4>>2]|0;N=y;g=c[N+4>>2]|0;K=j;c[K>>2]=c[N>>2];c[K+4>>2]=g;g=y;c[g>>2]=H;c[g+4>>2]=I;i=e;return}else if((n|0)==26){gm(j,j+8|0,j+16|0,j+24|0,h,d)|0;i=e;return}else if((n|0)==28){h=j+16|0;I=j+8|0;g=wb[c[d>>2]&31](I,j)|0;H=wb[c[d>>2]&31](h,I)|0;do if(g){y=j;K=c[y>>2]|0;N=c[y+4>>2]|0;if(H){y=h;J=c[y+4>>2]|0;O=j;c[O>>2]=c[y>>2];c[O+4>>2]=J;J=h;c[J>>2]=K;c[J+4>>2]=N;break}J=I;O=c[J+4>>2]|0;y=j;c[y>>2]=c[J>>
2];c[y+4>>2]=O;O=I;c[O>>2]=K;c[O+4>>2]=N;if(wb[c[d>>2]&31](h,I)|0){N=I;O=c[N>>2]|0;K=c[N+4>>2]|0;N=h;y=c[N+4>>2]|0;J=I;c[J>>2]=c[N>>2];c[J+4>>2]=y;y=h;c[y>>2]=O;c[y+4>>2]=K}}else if(H?(K=I,y=c[K>>2]|0,O=c[K+4>>2]|0,K=h,J=c[K+4>>2]|0,N=I,c[N>>2]=c[K>>2],c[N+4>>2]=J,J=h,c[J>>2]=y,c[J+4>>2]=O,wb[c[d>>2]&31](I,j)|0):0){O=j;J=c[O>>2]|0;y=c[O+4>>2]|0;O=I;N=c[O+4>>2]|0;K=j;c[K>>2]=c[O>>2];c[K+4>>2]=N;N=I;c[N>>2]=J;c[N+4>>2]=y}while(0);I=j+24|0;if((I|0)==(a|0)){i=e;return}else{P=I;Q=h}while(1){if(wb[c[d>>
2]&31](P,Q)|0){h=P;I=c[h+4>>2]|0;H=f;c[H>>2]=c[h>>2];c[H+4>>2]=I;I=P;H=Q;while(1){h=H;g=c[h+4>>2]|0;y=I;c[y>>2]=c[h>>2];c[y+4>>2]=g;if((H|0)==(j|0))break;g=H+-8|0;if(wb[c[d>>2]&31](f,g)|0){y=H;H=g;I=y}else break}I=f;y=c[I+4>>2]|0;g=H;c[g>>2]=c[I>>2];c[g+4>>2]=y}y=P+8|0;if((y|0)==(a|0))break;else{g=P;P=y;Q=g}}i=e;return}else if((n|0)==84){i=e;return}}function Xl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=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,J=0,K=0;e=i;i=i+32|0;f=e;g=a;a=b;a:while(1){b=a;h=a+-28|0;j=g;b:while(1){k=j;l=b-k|0;switch((l|0)/28|0|0){case 3:m=6;break a;break;case 4:m=14;break a;break;case 5:m=15;break a;break;case 2:m=4;break a;break;case 1:case 0:m=67;break a;break;default:}if((l|0)<868){m=21;break a}n=(l|0)/56|0;o=j+(n*28|0)|0;do if((l|0)>27972){p=(l|0)/112|0;q=j+(p*28|0)|0;r=j+((p+n|0)*28|0)|0;p=im(j,q,o,r,d)|0;if(wb[c[d>>2]&31](h,r)|0){c[f+0>>2]=c[r+0>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=
c[r+12>>2];c[f+16>>2]=c[r+16>>2];c[f+20>>2]=c[r+20>>2];c[f+24>>2]=c[r+24>>2];c[r+0>>2]=c[h+0>>2];c[r+4>>2]=c[h+4>>2];c[r+8>>2]=c[h+8>>2];c[r+12>>2]=c[h+12>>2];c[r+16>>2]=c[h+16>>2];c[r+20>>2]=c[h+20>>2];c[r+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];s=p+1|0;if(wb[c[d>>2]&31](r,o)|0){c[f+0>>2]=c[o+0>>2];c[f+4>>2]=c[o+4>>2];c[f+8>>2]=c[o+8>>2];c[f+12>>2]=c[o+12>>2];c[f+16>>2]=c[o+
16>>2];c[f+20>>2]=c[o+20>>2];c[f+24>>2]=c[o+24>>2];c[o+0>>2]=c[r+0>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];c[o+12>>2]=c[r+12>>2];c[o+16>>2]=c[r+16>>2];c[o+20>>2]=c[r+20>>2];c[o+24>>2]=c[r+24>>2];c[r+0>>2]=c[f+0>>2];c[r+4>>2]=c[f+4>>2];c[r+8>>2]=c[f+8>>2];c[r+12>>2]=c[f+12>>2];c[r+16>>2]=c[f+16>>2];c[r+20>>2]=c[f+20>>2];c[r+24>>2]=c[f+24>>2];r=p+2|0;if(wb[c[d>>2]&31](o,q)|0){c[f+0>>2]=c[q+0>>2];c[f+4>>2]=c[q+4>>2];c[f+8>>2]=c[q+8>>2];c[f+12>>2]=c[q+12>>2];c[f+16>>2]=c[q+16>>2];c[f+20>>2]=c[q+20>>
2];c[f+24>>2]=c[q+24>>2];c[q+0>>2]=c[o+0>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];c[q+16>>2]=c[o+16>>2];c[q+20>>2]=c[o+20>>2];c[q+24>>2]=c[o+24>>2];c[o+0>>2]=c[f+0>>2];c[o+4>>2]=c[f+4>>2];c[o+8>>2]=c[f+8>>2];c[o+12>>2]=c[f+12>>2];c[o+16>>2]=c[f+16>>2];c[o+20>>2]=c[f+20>>2];c[o+24>>2]=c[f+24>>2];if(wb[c[d>>2]&31](q,j)|0){c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>
2]=c[q+0>>2];c[j+4>>2]=c[q+4>>2];c[j+8>>2]=c[q+8>>2];c[j+12>>2]=c[q+12>>2];c[j+16>>2]=c[q+16>>2];c[j+20>>2]=c[q+20>>2];c[j+24>>2]=c[q+24>>2];c[q+0>>2]=c[f+0>>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];t=p+4|0}else t=p+3|0}else t=r}else t=s}else t=p}else{p=wb[c[d>>2]&31](o,j)|0;s=wb[c[d>>2]&31](h,o)|0;if(!p){if(!s){t=0;break}c[f+0>>2]=c[o+0>>2];c[f+4>>2]=c[o+4>>2];c[f+8>>2]=c[o+8>>2];c[f+12>>2]=c[o+12>>2];c[f+16>>
2]=c[o+16>>2];c[f+20>>2]=c[o+20>>2];c[f+24>>2]=c[o+24>>2];c[o+0>>2]=c[h+0>>2];c[o+4>>2]=c[h+4>>2];c[o+8>>2]=c[h+8>>2];c[o+12>>2]=c[h+12>>2];c[o+16>>2]=c[h+16>>2];c[o+20>>2]=c[h+20>>2];c[o+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];if(!(wb[c[d>>2]&31](o,j)|0)){t=1;break}c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+
20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[o+0>>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];c[o+0>>2]=c[f+0>>2];c[o+4>>2]=c[f+4>>2];c[o+8>>2]=c[f+8>>2];c[o+12>>2]=c[f+12>>2];c[o+16>>2]=c[f+16>>2];c[o+20>>2]=c[f+20>>2];c[o+24>>2]=c[f+24>>2];t=2;break}if(s){c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+
0>>2]=c[h+0>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];t=1;break}c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[o+0>>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];c[o+0>>2]=c[f+0>>2];c[o+4>>2]=c[f+4>>2];c[o+8>>2]=c[f+8>>2];c[o+12>>2]=c[f+12>>2];c[o+16>>2]=c[f+16>>2];c[o+20>>2]=c[f+20>>2];c[o+24>>2]=c[f+24>>2];if(wb[c[d>>2]&31](h,o)|0){c[f+0>>2]=c[o+0>>2];c[f+4>>2]=c[o+4>>2];c[f+8>>2]=c[o+8>>2];c[f+12>>2]=c[o+12>>2];c[f+16>>2]=c[o+16>>2];c[f+20>>2]=c[o+20>>2];c[f+24>>2]=c[o+24>>2];c[o+0>>2]=c[h+0>>2];c[o+4>>2]=c[h+4>>2];c[o+8>>2]=c[h+8>>2];c[o+12>>2]=c[h+12>>2];c[o+
16>>2]=c[h+16>>2];c[o+20>>2]=c[h+20>>2];c[o+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];t=2}else t=1}while(0);do if(wb[c[d>>2]&31](j,o)|0){u=h;v=t}else{n=h;while(1){n=n+-28|0;if((j|0)==(n|0))break;if(wb[c[d>>2]&31](n,o)|0){m=50;break}}if((m|0)==50){m=0;c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];
c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[n+0>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2];c[j+16>>2]=c[n+16>>2];c[j+20>>2]=c[n+20>>2];c[j+24>>2]=c[n+24>>2];c[n+0>>2]=c[f+0>>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[n+16>>2]=c[f+16>>2];c[n+20>>2]=c[f+20>>2];c[n+24>>2]=c[f+24>>2];u=n;v=t+1|0;break}l=j+28|0;if(wb[c[d>>2]&31](j,h)|0)w=l;else{if((l|0)==(h|0)){m=67;break a}else x=l;while(1){y=x+28|0;if(wb[c[d>>2]&31](j,x)|0)break;if((y|0)==(h|0)){m=67;break a}else x=
y}c[f+0>>2]=c[x+0>>2];c[f+4>>2]=c[x+4>>2];c[f+8>>2]=c[x+8>>2];c[f+12>>2]=c[x+12>>2];c[f+16>>2]=c[x+16>>2];c[f+20>>2]=c[x+20>>2];c[f+24>>2]=c[x+24>>2];c[x+0>>2]=c[h+0>>2];c[x+4>>2]=c[h+4>>2];c[x+8>>2]=c[h+8>>2];c[x+12>>2]=c[h+12>>2];c[x+16>>2]=c[h+16>>2];c[x+20>>2]=c[h+20>>2];c[x+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];w=y}if((w|0)==(h|0)){m=67;break a}else{z=w;A=h}while(1){n=
z;while(1){B=n+28|0;if(wb[c[d>>2]&31](j,n)|0){C=A;break}else n=B}do C=C+-28|0;while(wb[c[d>>2]&31](j,C)|0);if(n>>>0>=C>>>0){j=n;continue b}c[f+0>>2]=c[n+0>>2];c[f+4>>2]=c[n+4>>2];c[f+8>>2]=c[n+8>>2];c[f+12>>2]=c[n+12>>2];c[f+16>>2]=c[n+16>>2];c[f+20>>2]=c[n+20>>2];c[f+24>>2]=c[n+24>>2];c[n+0>>2]=c[C+0>>2];c[n+4>>2]=c[C+4>>2];c[n+8>>2]=c[C+8>>2];c[n+12>>2]=c[C+12>>2];c[n+16>>2]=c[C+16>>2];c[n+20>>2]=c[C+20>>2];c[n+24>>2]=c[C+24>>2];c[C+0>>2]=c[f+0>>2];c[C+4>>2]=c[f+4>>2];c[C+8>>2]=c[f+8>>2];c[C+12>>
2]=c[f+12>>2];c[C+16>>2]=c[f+16>>2];c[C+20>>2]=c[f+20>>2];c[C+24>>2]=c[f+24>>2];z=B;A=C}}while(0);l=j+28|0;c:do if(l>>>0<u>>>0){s=l;p=u;r=o;q=v;while(1){D=s;while(1){E=D+28|0;if(wb[c[d>>2]&31](D,r)|0)D=E;else{F=p;break}}do F=F+-28|0;while(!(wb[c[d>>2]&31](F,r)|0));if(D>>>0>F>>>0){G=D;H=r;I=q;break c}c[f+0>>2]=c[D+0>>2];c[f+4>>2]=c[D+4>>2];c[f+8>>2]=c[D+8>>2];c[f+12>>2]=c[D+12>>2];c[f+16>>2]=c[D+16>>2];c[f+20>>2]=c[D+20>>2];c[f+24>>2]=c[D+24>>2];c[D+0>>2]=c[F+0>>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];c[D+16>>2]=c[F+16>>2];c[D+20>>2]=c[F+20>>2];c[D+24>>2]=c[F+24>>2];c[F+0>>2]=c[f+0>>2];c[F+4>>2]=c[f+4>>2];c[F+8>>2]=c[f+8>>2];c[F+12>>2]=c[f+12>>2];c[F+16>>2]=c[f+16>>2];c[F+20>>2]=c[f+20>>2];c[F+24>>2]=c[f+24>>2];s=E;p=F;r=(r|0)==(D|0)?F:r;q=q+1|0}}else{G=l;H=o;I=v}while(0);if((G|0)!=(H|0)?wb[c[d>>2]&31](H,G)|0:0){c[f+0>>2]=c[G+0>>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];c[G+0>>2]=
c[H+0>>2];c[G+4>>2]=c[H+4>>2];c[G+8>>2]=c[H+8>>2];c[G+12>>2]=c[H+12>>2];c[G+16>>2]=c[H+16>>2];c[G+20>>2]=c[H+20>>2];c[G+24>>2]=c[H+24>>2];c[H+0>>2]=c[f+0>>2];c[H+4>>2]=c[f+4>>2];c[H+8>>2]=c[f+8>>2];c[H+12>>2]=c[f+12>>2];c[H+16>>2]=c[f+16>>2];c[H+20>>2]=c[f+20>>2];c[H+24>>2]=c[f+24>>2];J=I+1|0}else J=I;if(!J){K=km(j,G,d)|0;o=G+28|0;if(km(o,a,d)|0){m=62;break}if(K){j=o;continue}}o=G;if((o-k|0)>=(b-o|0)){m=66;break}Xl(j,G,d);j=G+28|0}if((m|0)==62){m=0;if(K){m=67;break}else{g=j;a=G;continue}}else if((m|
0)==66){m=0;Xl(G+28|0,a,d);g=j;a=G;continue}}if((m|0)==4){if(!(wb[c[d>>2]&31](h,j)|0)){i=e;return}c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[h+0>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+
20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];i=e;return}else if((m|0)==6){G=j+28|0;g=wb[c[d>>2]&31](G,j)|0;K=wb[c[d>>2]&31](h,G)|0;if(!g){if(!K){i=e;return}c[f+0>>2]=c[G+0>>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];c[G+0>>2]=c[h+0>>2];c[G+4>>2]=c[h+4>>2];c[G+8>>2]=c[h+8>>2];c[G+12>>2]=c[h+12>>2];c[G+16>>2]=c[h+16>>2];c[G+20>>2]=c[h+20>>2];c[G+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+
8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];if(!(wb[c[d>>2]&31](G,j)|0)){i=e;return}c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[G+0>>2];c[j+4>>2]=c[G+4>>2];c[j+8>>2]=c[G+8>>2];c[j+12>>2]=c[G+12>>2];c[j+16>>2]=c[G+16>>2];c[j+20>>2]=c[G+20>>2];c[j+24>>2]=c[G+24>>2];c[G+0>>2]=c[f+0>>2];c[G+4>>2]=c[f+4>>2];c[G+8>>2]=c[f+8>>2];c[G+12>>2]=
c[f+12>>2];c[G+16>>2]=c[f+16>>2];c[G+20>>2]=c[f+20>>2];c[G+24>>2]=c[f+24>>2];i=e;return}if(K){c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[h+0>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>
2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];i=e;return}c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[G+0>>2];c[j+4>>2]=c[G+4>>2];c[j+8>>2]=c[G+8>>2];c[j+12>>2]=c[G+12>>2];c[j+16>>2]=c[G+16>>2];c[j+20>>2]=c[G+20>>2];c[j+24>>2]=c[G+24>>2];c[G+0>>2]=c[f+0>>2];c[G+4>>2]=c[f+4>>2];c[G+8>>2]=c[f+8>>2];c[G+12>>2]=c[f+12>>2];c[G+16>>2]=c[f+16>>2];c[G+20>>2]=c[f+20>>2];c[G+24>>2]=c[f+24>>2];if(!(wb[c[d>>
2]&31](h,G)|0)){i=e;return}c[f+0>>2]=c[G+0>>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];c[G+0>>2]=c[h+0>>2];c[G+4>>2]=c[h+4>>2];c[G+8>>2]=c[h+8>>2];c[G+12>>2]=c[h+12>>2];c[G+16>>2]=c[h+16>>2];c[G+20>>2]=c[h+20>>2];c[G+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];i=e;return}else if((m|0)==14){im(j,
j+28|0,j+56|0,h,d)|0;i=e;return}else if((m|0)==15){G=j+28|0;K=j+56|0;g=j+84|0;im(j,G,K,g,d)|0;if(!(wb[c[d>>2]&31](h,g)|0)){i=e;return}c[f+0>>2]=c[g+0>>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];c[g+0>>2]=c[h+0>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[g+16>>2]=c[h+16>>2];c[g+20>>2]=c[h+20>>2];c[g+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=
c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];if(!(wb[c[d>>2]&31](g,K)|0)){i=e;return}c[f+0>>2]=c[K+0>>2];c[f+4>>2]=c[K+4>>2];c[f+8>>2]=c[K+8>>2];c[f+12>>2]=c[K+12>>2];c[f+16>>2]=c[K+16>>2];c[f+20>>2]=c[K+20>>2];c[f+24>>2]=c[K+24>>2];c[K+0>>2]=c[g+0>>2];c[K+4>>2]=c[g+4>>2];c[K+8>>2]=c[g+8>>2];c[K+12>>2]=c[g+12>>2];c[K+16>>2]=c[g+16>>2];c[K+20>>2]=c[g+20>>2];c[K+24>>2]=c[g+24>>2];c[g+0>>2]=c[f+0>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];c[g+16>>
2]=c[f+16>>2];c[g+20>>2]=c[f+20>>2];c[g+24>>2]=c[f+24>>2];if(!(wb[c[d>>2]&31](K,G)|0)){i=e;return}c[f+0>>2]=c[G+0>>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];c[G+0>>2]=c[K+0>>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[K+0>>2]=c[f+0>>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[K+24>>2]=c[f+24>>2];if(!(wb[c[d>>2]&31](G,j)|0)){i=e;return}c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[G+0>>2];c[j+4>>2]=c[G+4>>2];c[j+8>>2]=c[G+8>>2];c[j+12>>2]=c[G+12>>2];c[j+16>>2]=c[G+16>>2];c[j+20>>2]=c[G+20>>2];c[j+24>>2]=c[G+24>>2];c[G+0>>2]=c[f+0>>2];c[G+4>>2]=c[f+4>>2];c[G+8>>2]=c[f+8>>2];c[G+12>>2]=c[f+12>>2];c[G+16>>2]=c[f+16>>2];c[G+20>>2]=c[f+20>>2];
c[G+24>>2]=c[f+24>>2];i=e;return}else if((m|0)==21){jm(j,a,d);i=e;return}else if((m|0)==67){i=e;return}}function Yl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;i=i+32|0;e=d+16|0;f=d+8|0;h=d;j=c[b>>2]|0;k=a+4|0;if((j|0)==(c[k>>2]|0)){l=c[a+8>>2]|0;c[a+8>>2]=l+1;if((l|0)>3){l=c[a+12>>2]|0;c[l>>2]=(c[l>>2]|0)+1;m=1;i=d;return m|0}}else{c[k>>2]=j;c[a+8>>2]=1}k=b+16|0;n=+g[k>>2];l=c[a>>2]|0;o=+g[l+32>>2]*(1-+g[b+12>>2]);p=c[l+96>>2]|0;q=+g[k+4>>2]*o+ +g[p+(j<<3)+4>>2];g[e>>
2]=+g[p+(j<<3)>>2]+n*o;g[e+4>>2]=q;j=b+8|0;b=c[j>>2]|0;p=c[b+12>>2]|0;if(qb[c[(c[p>>2]|0)+16>>2]&15](p,(c[b+8>>2]|0)+12|0,e)|0){m=0;i=d;return m|0}b=c[(c[j>>2]|0)+12>>2]|0;p=kb[c[(c[b>>2]|0)+12>>2]&7](b)|0;a:do if((p|0)>0){b=0;while(1){k=c[j>>2]|0;l=c[k+12>>2]|0;vb[c[(c[l>>2]|0)+20>>2]&7](l,(c[k+8>>2]|0)+12|0,e,f,h,b);b=b+1|0;if(+g[f>>2]<.004999999888241291){m=0;break}if((b|0)>=(p|0))break a}i=d;return m|0}while(0);p=c[a+12>>2]|0;c[p>>2]=(c[p>>2]|0)+1;m=1;i=d;return m|0}function Zl(a,b,d){a=a|0;b=
b|0;d=d|0;var e=0,f=0,g=0,h=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,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;e=i;f=a;a=b;a:while(1){b=a;g=a+-4|0;h=f;b:while(1){j=h;k=b-j|0;l=k>>2;switch(l|0){case 5:m=8;break a;break;case 2:m=4;break a;break;case 3:m=6;break a;break;case 1:case 0:m=51;break a;break;case 4:m=7;break a;break;default:}if((k|0)<124){m=10;break a}n=(l|0)/2|0;o=h+(n<<2)|0;if((k|0)>3996){k=(l|0)/4|0;p=nm(h,h+(k<<
2)|0,o,h+(k+n<<2)|0,g,d)|0}else p=lm(h,o,g,c[d>>2]|0)|0;n=c[h>>2]|0;k=c[d>>2]|0;l=c[k+(n<<2)>>2]|0;q=c[k+(c[o>>2]<<2)>>2]|0;r=+(l|0)<=0;s=+(q|0)<=0;do if(r^s?r:(l|0)>(q|0)){t=g;u=p}else{v=g;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=c[v>>2]|0;x=c[k+(w<<2)>>2]|0;y=+(x|0)<=0;if(y^s?y:(x|0)>(q|0)){m=34;break}}if((m|0)==34){m=0;c[h>>2]=w;c[v>>2]=n;t=v;u=p+1|0;break}x=h+4|0;y=c[g>>2]|0;z=c[k+(y<<2)>>2]|0;if(r^+(z|0)<=0?r:(l|0)>(z|0))A=x;else{if((x|0)==(g|0)){m=51;break a}else B=x;while(1){C=c[B>>2]|0;x=
c[k+(C<<2)>>2]|0;D=B+4|0;if(r^+(x|0)<=0?r:(l|0)>(x|0))break;if((D|0)==(g|0)){m=51;break a}else B=D}c[B>>2]=y;c[g>>2]=C;A=D}if((A|0)==(g|0)){m=51;break a}else{E=A;F=g}while(1){v=c[k+(c[h>>2]<<2)>>2]|0;x=+(v|0)<=0;z=E;while(1){G=c[z>>2]|0;H=c[k+(G<<2)>>2]|0;I=z+4|0;if(x^+(H|0)<=0?x:(v|0)>(H|0)){J=F;break}else z=I}do{J=J+-4|0;K=c[J>>2]|0;H=c[k+(K<<2)>>2]|0}while(x^+(H|0)<=0?x:(v|0)>(H|0));if(z>>>0>=J>>>0){h=z;continue b}c[z>>2]=K;c[J>>2]=G;E=I;F=J}}while(0);l=h+4|0;c:do if(l>>>0<t>>>0){r=l;n=t;q=o;s=
u;while(1){y=c[k+(c[q>>2]<<2)>>2]|0;v=+(y|0)<=0;x=r;while(1){L=c[x>>2]|0;H=c[k+(L<<2)>>2]|0;M=+(H|0)<=0;N=x+4|0;if(M^v?M:(H|0)>(y|0))x=N;else{O=n;break}}do{O=O+-4|0;P=c[O>>2]|0;z=c[k+(P<<2)>>2]|0;H=+(z|0)<=0}while(!(H^v?H:(z|0)>(y|0)));if(x>>>0>O>>>0){Q=x;R=q;S=s;break c}c[x>>2]=P;c[O>>2]=L;r=N;n=O;q=(q|0)==(x|0)?O:q;s=s+1|0}}else{Q=l;R=o;S=u}while(0);if((Q|0)!=(R|0)?(o=c[R>>2]|0,l=c[Q>>2]|0,s=c[k+(o<<2)>>2]|0,q=c[k+(l<<2)>>2]|0,n=+(s|0)<=0,n^+(q|0)<=0?n:(s|0)>(q|0)):0){c[Q>>2]=o;c[R>>2]=l;T=S+1|
0}else T=S;if(!T){U=om(h,Q,d)|0;l=Q+4|0;if(om(l,a,d)|0){m=46;break}if(U){h=l;continue}}l=Q;if((l-j|0)>=(b-l|0)){m=50;break}Zl(h,Q,d);h=Q+4|0}if((m|0)==46){m=0;if(U){m=51;break}else{f=h;a=Q;continue}}else if((m|0)==50){m=0;Zl(Q+4|0,a,d);f=h;a=Q;continue}}if((m|0)==4){Q=c[g>>2]|0;f=c[h>>2]|0;U=c[d>>2]|0;T=c[U+(Q<<2)>>2]|0;S=c[U+(f<<2)>>2]|0;U=+(T|0)<=0;if(!(U^+(S|0)<=0?U:(T|0)>(S|0))){i=e;return}c[h>>2]=Q;c[g>>2]=f;i=e;return}else if((m|0)==6){lm(h,h+4|0,g,c[d>>2]|0)|0;i=e;return}else if((m|0)==7){mm(h,
h+4|0,h+8|0,g,d)|0;i=e;return}else if((m|0)==8){nm(h,h+4|0,h+8|0,h+12|0,g,d)|0;i=e;return}else if((m|0)==10){g=h+8|0;lm(h,h+4|0,g,c[d>>2]|0)|0;f=h+12|0;if((f|0)==(a|0)){i=e;return}Q=c[d>>2]|0;d=f;f=g;while(1){g=c[d>>2]|0;S=c[f>>2]|0;T=Q+(g<<2)|0;U=c[T>>2]|0;R=c[Q+(S<<2)>>2]|0;u=+(U|0)<=0;if(u^+(R|0)<=0?u:(U|0)>(R|0)){R=S;S=d;U=f;while(1){c[S>>2]=R;if((U|0)==(h|0)){V=h;break}u=U+-4|0;R=c[u>>2]|0;O=c[T>>2]|0;N=c[Q+(R<<2)>>2]|0;L=+(O|0)<=0;if(!(L^+(N|0)<=0?L:(O|0)>(N|0))){V=U;break}else{N=U;U=u;S=N}}c[V>>
2]=g}S=d+4|0;if((S|0)==(a|0))break;else{U=d;d=S;f=U}}i=e;return}else if((m|0)==51){i=e;return}}function _l(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,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;f=i;g=b+4|0;h=c[g>>2]|0;j=a+4|0;k=d+4|0;l=c[k>>2]|0;m=l>>>0<h>>>0;do if(h>>>0<(c[j>>2]|0)>>>0){n=a;o=c[n>>2]|0;p=c[n+4>>2]|0;if(m){n=d;q=c[n+4>>2]|0;r=a;c[r>>2]=c[n>>2];c[r+4>>2]=q;q=d;c[q>>2]=o;c[q+4>>2]=p;s=1;t=p;break}q=b;r=c[q+4>>2]|0;n=a;c[n>>2]=c[q>>2];c[n+4>>2]=r;r=b;c[r>>2]=o;c[r+
4>>2]=p;r=c[k>>2]|0;if(r>>>0<p>>>0){n=d;q=c[n+4>>2]|0;u=b;c[u>>2]=c[n>>2];c[u+4>>2]=q;q=d;c[q>>2]=o;c[q+4>>2]=p;s=2;t=p}else{s=1;t=r}}else if(m){r=b;p=c[r>>2]|0;q=c[r+4>>2]|0;r=d;o=c[r+4>>2]|0;u=b;c[u>>2]=c[r>>2];c[u+4>>2]=o;o=d;c[o>>2]=p;c[o+4>>2]=q;if((c[g>>2]|0)>>>0<(c[j>>2]|0)>>>0){o=a;p=c[o>>2]|0;u=c[o+4>>2]|0;o=b;r=c[o+4>>2]|0;n=a;c[n>>2]=c[o>>2];c[n+4>>2]=r;r=b;c[r>>2]=p;c[r+4>>2]=u;s=2;t=c[k>>2]|0}else{s=1;t=q}}else{s=0;t=l}while(0);if((c[e+4>>2]|0)>>>0>=t>>>0){v=s;i=f;return v|0}t=d;l=c[t>>
2]|0;m=c[t+4>>2]|0;t=e;h=c[t+4>>2]|0;q=d;c[q>>2]=c[t>>2];c[q+4>>2]=h;h=e;c[h>>2]=l;c[h+4>>2]=m;if((c[k>>2]|0)>>>0>=(c[g>>2]|0)>>>0){v=s+1|0;i=f;return v|0}k=b;m=c[k>>2]|0;h=c[k+4>>2]|0;k=d;l=c[k+4>>2]|0;e=b;c[e>>2]=c[k>>2];c[e+4>>2]=l;l=d;c[l>>2]=m;c[l+4>>2]=h;if((c[g>>2]|0)>>>0>=(c[j>>2]|0)>>>0){v=s+2|0;i=f;return v|0}j=a;g=c[j>>2]|0;h=c[j+4>>2]|0;j=b;l=c[j+4>>2]|0;m=a;c[m>>2]=c[j>>2];c[m+4>>2]=l;l=b;c[l>>2]=g;c[l+4>>2]=h;v=s+3|0;i=f;return v|0}function $l(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=
0,h=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;e=i;switch(b-a>>3|0){case 3:f=a+8|0;g=b+-8|0;h=a+12|0;j=c[h>>2]|0;k=a+4|0;l=b+-4|0;m=(c[l>>2]|0)>>>0<j>>>0;if(j>>>0>=(c[k>>2]|0)>>>0){if(!m){n=1;i=e;return n|0}j=f;o=c[j>>2]|0;p=c[j+4>>2]|0;j=g;q=c[j+4>>2]|0;r=f;c[r>>2]=c[j>>2];c[r+4>>2]=q;q=g;c[q>>2]=o;c[q+4>>2]=p;if((c[h>>2]|0)>>>0>=(c[k>>2]|0)>>>0){n=1;i=e;return n|0}k=a;h=c[k>>2]|0;p=c[k+4>>2]|0;k=f;q=c[k+4>>2]|0;o=a;c[o>>2]=c[k>>2];c[o+4>>2]=q;q=f;c[q>>2]=h;c[q+4>>2]=p;n=1;i=e;return n|
0}p=a;q=c[p>>2]|0;h=c[p+4>>2]|0;if(m){m=g;p=c[m+4>>2]|0;o=a;c[o>>2]=c[m>>2];c[o+4>>2]=p;p=g;c[p>>2]=q;c[p+4>>2]=h;n=1;i=e;return n|0}p=f;o=c[p+4>>2]|0;m=a;c[m>>2]=c[p>>2];c[m+4>>2]=o;o=f;c[o>>2]=q;c[o+4>>2]=h;if((c[l>>2]|0)>>>0>=h>>>0){n=1;i=e;return n|0}l=g;o=c[l+4>>2]|0;m=f;c[m>>2]=c[l>>2];c[m+4>>2]=o;o=g;c[o>>2]=q;c[o+4>>2]=h;n=1;i=e;return n|0;case 2:if((c[b+-4>>2]|0)>>>0>=(c[a+4>>2]|0)>>>0){n=1;i=e;return n|0}h=b+-8|0;o=a;q=c[o>>2]|0;g=c[o+4>>2]|0;o=h;m=c[o+4>>2]|0;l=a;c[l>>2]=c[o>>2];c[l+4>>
2]=m;m=h;c[m>>2]=q;c[m+4>>2]=g;n=1;i=e;return n|0;case 5:g=a+8|0;m=a+16|0;q=a+24|0;_l(a,g,m,q,d)|0;h=a+28|0;if((c[b+-4>>2]|0)>>>0>=(c[h>>2]|0)>>>0){n=1;i=e;return n|0}l=b+-8|0;o=q;f=c[o>>2]|0;p=c[o+4>>2]|0;o=l;k=c[o+4>>2]|0;r=q;c[r>>2]=c[o>>2];c[r+4>>2]=k;k=l;c[k>>2]=f;c[k+4>>2]=p;if((c[h>>2]|0)>>>0>=(c[a+20>>2]|0)>>>0){n=1;i=e;return n|0}h=m;p=c[h>>2]|0;k=c[h+4>>2]|0;h=q;f=c[h>>2]|0;l=c[h+4>>2]|0;h=m;c[h>>2]=f;c[h+4>>2]=l;h=q;c[h>>2]=p;c[h+4>>2]=k;if(l>>>0>=(c[a+12>>2]|0)>>>0){n=1;i=e;return n|0}k=
g;h=c[k>>2]|0;p=c[k+4>>2]|0;k=g;c[k>>2]=f;c[k+4>>2]=l;k=m;c[k>>2]=h;c[k+4>>2]=p;if(l>>>0>=(c[a+4>>2]|0)>>>0){n=1;i=e;return n|0}p=a;k=c[p>>2]|0;h=c[p+4>>2]|0;p=a;c[p>>2]=f;c[p+4>>2]=l;l=g;c[l>>2]=k;c[l+4>>2]=h;n=1;i=e;return n|0;case 4:_l(a,a+8|0,a+16|0,b+-8|0,d)|0;n=1;i=e;return n|0;case 1:case 0:n=1;i=e;return n|0;default:d=a+16|0;h=a+8|0;l=c[a+12>>2]|0;k=c[a+4>>2]|0;g=c[a+20>>2]|0;p=g>>>0<l>>>0;do if(l>>>0<k>>>0){f=a;m=c[f>>2]|0;q=c[f+4>>2]|0;if(p){f=d;r=c[f+4>>2]|0;o=a;c[o>>2]=c[f>>2];c[o+4>>
2]=r;r=d;c[r>>2]=m;c[r+4>>2]=q;break}r=h;o=c[r+4>>2]|0;f=a;c[f>>2]=c[r>>2];c[f+4>>2]=o;o=h;c[o>>2]=m;c[o+4>>2]=q;if(g>>>0<q>>>0){o=d;f=c[o+4>>2]|0;r=h;c[r>>2]=c[o>>2];c[r+4>>2]=f;f=d;c[f>>2]=m;c[f+4>>2]=q}}else if(p?(q=h,f=c[q>>2]|0,m=c[q+4>>2]|0,q=d,r=c[q>>2]|0,o=c[q+4>>2]|0,q=h,c[q>>2]=r,c[q+4>>2]=o,q=d,c[q>>2]=f,c[q+4>>2]=m,o>>>0<k>>>0):0){m=a;q=c[m>>2]|0;f=c[m+4>>2]|0;m=a;c[m>>2]=r;c[m+4>>2]=o;o=h;c[o>>2]=q;c[o+4>>2]=f}while(0);h=a+24|0;if((h|0)==(b|0)){n=1;i=e;return n|0}else{s=0;t=h;u=d}while(1){if((c[t+
4>>2]|0)>>>0<(c[u+4>>2]|0)>>>0){d=t;h=c[d>>2]|0;k=c[d+4>>2]|0;d=t;p=u;while(1){g=p;l=c[g+4>>2]|0;f=d;c[f>>2]=c[g>>2];c[f+4>>2]=l;if((p|0)==(a|0))break;if(k>>>0<(c[p+-4>>2]|0)>>>0){l=p;p=p+-8|0;d=l}else break}d=p;c[d>>2]=h;c[d+4>>2]=k;d=s+1|0;if((d|0)==8)break;else v=d}else v=s;d=t+8|0;if((d|0)==(b|0)){n=1;w=34;break}else{l=t;s=v;t=d;u=l}}if((w|0)==34){i=e;return n|0}n=(t+8|0)==(b|0);i=e;return n|0}return 0}function am(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,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;g=i;if(!e){i=g;return}else if((e|0)==2){h=b+-20|0;j=(f|0)==0;if(wb[c[d>>2]&31](h,a)|0){if(!j){c[f+0>>2]=c[h+0>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];c[f+16>>2]=c[h+16>>2]}k=f+20|0;c[k+0>>2]=c[a+0>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[k+16>>2]=c[a+16>>2];i=g;return}else{if(!j){c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2]}j=f+20|0;c[j+0>>2]=c[h+0>>2];c[j+
4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];i=g;return}}else if((e|0)==1){if(!f){i=g;return}c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];i=g;return}else{if((e|0)<9){if((a|0)==(b|0)){i=g;return}if(!f)l=0;else{c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];l=f}h=a+20|0;if((h|0)==(b|0)){i=g;return}else{m=h;n=l}do{l=n;n=n+20|0;if(wb[c[d>>2]&31](m,l)|0){c[n+
0>>2]=c[l+0>>2];c[n+4>>2]=c[l+4>>2];c[n+8>>2]=c[l+8>>2];c[n+12>>2]=c[l+12>>2];c[n+16>>2]=c[l+16>>2];a:do if((l|0)==(f|0))o=f;else{h=l;while(1){j=h;h=h+-20|0;if(!(wb[c[d>>2]&31](m,h)|0)){o=j;break a}c[j+0>>2]=c[h+0>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];if((h|0)==(f|0)){o=f;break}}}while(0);c[o+0>>2]=c[m+0>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];c[o+16>>2]=c[m+16>>2]}else{c[n+0>>2]=c[m+0>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+
8>>2];c[n+12>>2]=c[m+12>>2];c[n+16>>2]=c[m+16>>2]}m=m+20|0}while((m|0)!=(b|0));i=g;return}m=(e|0)/2|0;n=a+(m*20|0)|0;Ql(a,n,d,m,f,m);o=e-m|0;Ql(n,b,d,o,f+(m*20|0)|0,o);b:do if((e+1|0)>>>0<3){p=n;q=f}else{o=n;m=a;l=f;while(1){if((o|0)==(b|0))break;h=(l|0)==0;if(wb[c[d>>2]&31](o,m)|0){if(!h){c[l+0>>2]=c[o+0>>2];c[l+4>>2]=c[o+4>>2];c[l+8>>2]=c[o+8>>2];c[l+12>>2]=c[o+12>>2];c[l+16>>2]=c[o+16>>2]}r=m;s=o+20|0}else{if(!h){c[l+0>>2]=c[m+0>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];
c[l+16>>2]=c[m+16>>2]}r=m+20|0;s=o}h=l+20|0;if((r|0)==(n|0)){p=s;q=h;break b}else{o=s;m=r;l=h}}if((m|0)==(n|0)){i=g;return}else{t=m;u=l}while(1){if(u){c[u+0>>2]=c[t+0>>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]}t=t+20|0;if((t|0)==(n|0))break;else u=u+20|0}i=g;return}while(0);if((p|0)==(b|0)){i=g;return}else{v=p;w=q}while(1){if(w){c[w+0>>2]=c[v+0>>2];c[w+4>>2]=c[v+4>>2];c[w+8>>2]=c[v+8>>2];c[w+12>>2]=c[v+12>>2];c[w+16>>2]=c[v+16>>2]}v=v+20|0;if((v|0)==(b|
0))break;else w=w+20|0}i=g;return}}function bm(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;k=i;i=i+48|0;l=k+20|0;m=k;if((g|0)==0|(f|0)==0){i=k;return}n=a;a=b;b=d;d=f;f=g;a:while(1){g=b;o=a;p=n;q=d;r=f;while(1){s=p;t=q;while(1){if(wb[c[e>>2]&31](o,s)|0)break;u=t+-1|0;if(!u){v=45;break a}else{s=s+20|0;t=u}}if(!((t|0)>(j|0)&(r|0)>(j|0))){v=8;
break a}if((t|0)<(r|0)){u=(r|0)/2|0;w=o+(u*20|0)|0;x=s;y=s;z=(o-x|0)/20|0;b:while(1){A=z;while(1){if(!A)break b;B=(A|0)/2|0;if(wb[c[e>>2]&31](w,y+(B*20|0)|0)|0)A=B;else break}y=y+((B+1|0)*20|0)|0;z=A+-1-B|0}C=y;D=w;E=(y-x|0)/20|0;F=u}else{if((t|0)==1){v=17;break a}z=(t|0)/2|0;G=s+(z*20|0)|0;H=o;I=o;J=(g-H|0)/20|0;c:while(1){K=J;while(1){if(!K)break c;L=(K|0)/2|0;if(wb[c[e>>2]&31](I+(L*20|0)|0,G)|0)break;else K=L}I=I+((L+1|0)*20|0)|0;J=K+-1-L|0}C=G;D=I;E=z;F=(I-H|0)/20|0}q=t-E|0;M=r-F|0;d:do if((C|
0)!=(o|0))if((o|0)==(D|0))N=C;else{if((C+20|0)==(o|0)){c[l+0>>2]=c[C+0>>2];c[l+4>>2]=c[C+4>>2];c[l+8>>2]=c[C+8>>2];c[l+12>>2]=c[C+12>>2];c[l+16>>2]=c[C+16>>2];J=D-o|0;En(C|0,o|0,J|0)|0;u=C+(((J|0)/20|0)*20|0)|0;c[u+0>>2]=c[l+0>>2];c[u+4>>2]=c[l+4>>2];c[u+8>>2]=c[l+8>>2];c[u+12>>2]=c[l+12>>2];c[u+16>>2]=c[l+16>>2];N=u;break}if((o+20|0)==(D|0)){u=D+-20|0;c[l+0>>2]=c[u+0>>2];c[l+4>>2]=c[u+4>>2];c[l+8>>2]=c[u+8>>2];c[l+12>>2]=c[u+12>>2];c[l+16>>2]=c[u+16>>2];J=u-C|0;u=D+(((J|0)/-20|0)*20|0)|0;En(u|0,
C|0,J|0)|0;c[C+0>>2]=c[l+0>>2];c[C+4>>2]=c[l+4>>2];c[C+8>>2]=c[l+8>>2];c[C+12>>2]=c[l+12>>2];c[C+16>>2]=c[l+16>>2];N=u;break}u=o;J=(u-C|0)/20|0;x=D;y=(x-u|0)/20|0;if((J|0)==(y|0)){u=C;w=o;while(1){c[l+0>>2]=c[u+0>>2];c[l+4>>2]=c[u+4>>2];c[l+8>>2]=c[u+8>>2];c[l+12>>2]=c[u+12>>2];c[l+16>>2]=c[u+16>>2];c[u+0>>2]=c[w+0>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];c[u+16>>2]=c[w+16>>2];c[w+0>>2]=c[l+0>>2];c[w+4>>2]=c[l+4>>2];c[w+8>>2]=c[l+8>>2];c[w+12>>2]=c[l+12>>2];c[w+16>>2]=c[l+
16>>2];u=u+20|0;if((u|0)==(o|0)){N=o;break d}else w=w+20|0}}else{O=J;P=y}while(1){w=(O|0)%(P|0)|0;if(!w)break;else{u=P;P=w;O=u}}if(P){u=J+-1|0;w=C+(P*20|0)|0;do{K=w;w=w+-20|0;c[m+0>>2]=c[w+0>>2];c[m+4>>2]=c[w+4>>2];c[m+8>>2]=c[w+8>>2];c[m+12>>2]=c[w+12>>2];c[m+16>>2]=c[w+16>>2];A=w;Q=K+(u*20|0)|0;while(1){c[A+0>>2]=c[Q+0>>2];c[A+4>>2]=c[Q+4>>2];c[A+8>>2]=c[Q+8>>2];c[A+12>>2]=c[Q+12>>2];c[A+16>>2]=c[Q+16>>2];K=(x-Q|0)/20|0;if((J|0)<(K|0))R=Q+(J*20|0)|0;else R=C+((J-K|0)*20|0)|0;if((R|0)==(w|0))break;
else{K=Q;Q=R;A=K}}c[Q+0>>2]=c[m+0>>2];c[Q+4>>2]=c[m+4>>2];c[Q+8>>2]=c[m+8>>2];c[Q+12>>2]=c[m+12>>2];c[Q+16>>2]=c[m+16>>2]}while((w|0)!=(C|0))}N=C+(y*20|0)|0}else N=D;while(0);if((F+E|0)>=(M+q|0))break;bm(s,C,N,e,E,F,h,j);if((r|0)==(F|0)|(t|0)==(E|0)){v=45;break a}else{o=D;p=N;r=M}}bm(N,D,b,e,q,M,h,j);if((F|0)==0|(E|0)==0){v=45;break}else{n=s;a=C;b=N;d=E;f=F}}if((v|0)==8){pm(s,o,b,e,t,r,h);i=k;return}else if((v|0)==17){c[l+0>>2]=c[s+0>>2];c[l+4>>2]=c[s+4>>2];c[l+8>>2]=c[s+8>>2];c[l+12>>2]=c[s+12>>
2];c[l+16>>2]=c[s+16>>2];c[s+0>>2]=c[o+0>>2];c[s+4>>2]=c[o+4>>2];c[s+8>>2]=c[o+8>>2];c[s+12>>2]=c[o+12>>2];c[s+16>>2]=c[o+16>>2];c[o+0>>2]=c[l+0>>2];c[o+4>>2]=c[l+4>>2];c[o+8>>2]=c[l+8>>2];c[o+12>>2]=c[l+12>>2];c[o+16>>2]=c[l+16>>2];i=k;return}else if((v|0)==45){i=k;return}}function cm(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,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;g=i;if(!e){i=g;return}else if((e|0)==2){h=b+-60|0;j=(f|0)==0;if(wb[c[d>>2]&31](h,a)|0){if(!j){k=f+
0|0;l=h+0|0;m=k+60|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0))}k=f+60|0;l=a+0|0;m=k+60|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0));i=g;return}else{if(!j){k=f+0|0;l=a+0|0;m=k+60|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0))}k=f+60|0;l=h+0|0;m=k+60|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0));i=g;return}}else if((e|0)==1){if(!f){i=g;return}k=f+0|0;l=a+0|0;m=k+60|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0));i=g;return}else{if((e|0)<9){if((a|0)==
(b|0)){i=g;return}if(!f)n=0;else{k=f+0|0;l=a+0|0;m=k+60|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0));n=f}h=a+60|0;if((h|0)==(b|0)){i=g;return}else{o=h;p=n}do{n=p;p=p+60|0;if(wb[c[d>>2]&31](o,n)|0){k=p+0|0;l=n+0|0;m=k+60|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0));a:do if((n|0)==(f|0))q=f;else{h=n;while(1){j=h;h=h+-60|0;if(!(wb[c[d>>2]&31](o,h)|0)){q=j;break a}k=j+0|0;l=h+0|0;m=k+60|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0));if((h|0)==(f|0)){q=f;break}}}while(0);
k=q+0|0;l=o+0|0;m=k+60|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0))}else{k=p+0|0;l=o+0|0;m=k+60|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0))}o=o+60|0}while((o|0)!=(b|0));i=g;return}o=(e|0)/2|0;p=a+(o*60|0)|0;Rl(a,p,d,o,f,o);q=e-o|0;Rl(p,b,d,q,f+(o*60|0)|0,q);b:do if((e+1|0)>>>0<3){r=p;s=f}else{q=p;o=a;n=f;while(1){if((q|0)==(b|0))break;h=(n|0)==0;if(wb[c[d>>2]&31](q,o)|0){if(!h){k=n+0|0;l=q+0|0;m=k+60|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0))}t=o;u=q+60|0}else{if(!h){k=
n+0|0;l=o+0|0;m=k+60|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0))}t=o+60|0;u=q}h=n+60|0;if((t|0)==(p|0)){r=u;s=h;break b}else{q=u;o=t;n=h}}if((o|0)==(p|0)){i=g;return}else{v=o;w=n}while(1){if(w){k=w+0|0;l=v+0|0;m=k+60|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0))}v=v+60|0;if((v|0)==(p|0))break;else w=w+60|0}i=g;return}while(0);if((r|0)==(b|0)){i=g;return}else{x=r;y=s}while(1){if(y){k=y+0|0;l=x+0|0;m=k+60|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0))}x=x+60|0;if((x|0)==
(b|0))break;else y=y+60|0}i=g;return}}function dm(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;k=i;i=i+64|0;l=k;if((g|0)==0|(f|0)==0){i=k;return}m=a;a=b;b=d;d=f;f=g;a:while(1){g=b;n=a;o=m;p=d;q=f;while(1){r=o;s=p;while(1){if(wb[c[e>>2]&31](n,r)|0)break;t=s+-1|0;if(!t){u=45;break a}else{r=r+60|0;s=t}}if(!((s|0)>(j|0)&(q|0)>(j|0))){u=
8;break a}if((s|0)<(q|0)){t=(q|0)/2|0;v=n+(t*60|0)|0;w=r;x=r;y=(n-w|0)/60|0;b:while(1){z=y;while(1){if(!z)break b;A=(z|0)/2|0;if(wb[c[e>>2]&31](v,x+(A*60|0)|0)|0)z=A;else break}x=x+((A+1|0)*60|0)|0;y=z+-1-A|0}B=x;C=v;D=(x-w|0)/60|0;E=t}else{if((s|0)==1){u=17;break a}y=(s|0)/2|0;F=r+(y*60|0)|0;G=n;H=n;I=(g-G|0)/60|0;c:while(1){J=I;while(1){if(!J)break c;K=(J|0)/2|0;if(wb[c[e>>2]&31](H+(K*60|0)|0,F)|0)break;else J=K}H=H+((K+1|0)*60|0)|0;I=J+-1-K|0}B=F;C=H;D=y;E=(H-G|0)/60|0}p=s-D|0;L=q-E|0;d:do if((B|
0)!=(n|0))if((n|0)==(C|0))M=B;else{if((B+60|0)==(n|0)){N=l+0|0;O=B+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));J=C-n|0;En(B|0,n|0,J|0)|0;I=B+(((J|0)/60|0)*60|0)|0;N=I+0|0;O=l+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));M=I;break}if((n+60|0)==(C|0)){J=C+-60|0;N=l+0|0;O=J+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));I=J-B|0;t=C+(((I|0)/-60|0)*60|0)|0;En(t|0,B|0,I|0)|0;N=B+0|0;O=l+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|
0)<(P|0));M=t;break}J=n;I=(J-B|0)/60|0;w=C;x=(w-J|0)/60|0;if((I|0)==(x|0)){J=B;v=n;while(1){N=l+0|0;O=J+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));N=J+0|0;O=v+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));N=v+0|0;O=l+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));J=J+60|0;if((J|0)==(n|0)){M=n;break d}else v=v+60|0}}else{Q=I;R=x}while(1){v=(Q|0)%(R|0)|0;if(!v)break;else{J=R;R=v;Q=J}}if(R){J=I+-1|0;v=B+(R*60|0)|0;do{t=v;v=v+-60|0;N=l+
0|0;O=v+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));z=v;S=t+(J*60|0)|0;while(1){N=z+0|0;O=S+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));T=(w-S|0)/60|0;if((I|0)<(T|0))U=S+(I*60|0)|0;else U=B+((I-T|0)*60|0)|0;if((U|0)==(v|0))break;else{T=S;S=U;z=T}}N=S+0|0;O=l+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0))}while((v|0)!=(B|0))}M=B+(x*60|0)|0}else M=C;while(0);if((E+D|0)>=(L+p|0))break;dm(r,B,M,e,D,E,h,j);if((q|0)==(E|0)|(s|0)==(D|0)){u=
45;break a}else{n=C;o=M;q=L}}dm(M,C,b,e,p,L,h,j);if((E|0)==0|(D|0)==0){u=45;break}else{m=r;a=B;b=M;d=D;f=E}}if((u|0)==8){qm(r,n,b,e,s,q,h);i=k;return}else if((u|0)==17){N=l+0|0;O=r+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));N=r+0|0;O=n+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));N=n+0|0;O=l+0|0;P=N+60|0;do{c[N>>2]=c[O>>2];N=N+4|0;O=O+4|0}while((N|0)<(P|0));i=k;return}else if((u|0)==45){i=k;return}}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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=i;j=wb[c[g>>2]&31](b,a)|0;k=wb[c[g>>2]&31](d,b)|0;do if(j){l=a;m=c[l>>2]|0;n=c[l+4>>2]|0;if(k){l=d;o=c[l+4>>2]|0;p=a;c[p>>2]=c[l>>2];c[p+4>>2]=o;o=d;c[o>>2]=m;c[o+4>>2]=n;q=1;break}o=b;p=c[o+4>>2]|0;l=a;c[l>>2]=c[o>>2];c[l+4>>2]=p;p=b;c[p>>2]=m;c[p+4>>2]=n;if(wb[c[g>>2]&31](d,b)|0){n=b;p=c[n>>2]|0;m=c[n+4>>2]|0;n=d;l=c[n+4>>2]|0;o=b;c[o>>2]=c[n>>2];c[o+4>>2]=l;l=d;c[l>>2]=p;c[l+4>>2]=m;q=2}else q=1}else if(k){m=b;l=c[m>>2]|0;p=c[m+4>>2]|0;
m=d;o=c[m+4>>2]|0;n=b;c[n>>2]=c[m>>2];c[n+4>>2]=o;o=d;c[o>>2]=l;c[o+4>>2]=p;if(wb[c[g>>2]&31](b,a)|0){p=a;o=c[p>>2]|0;l=c[p+4>>2]|0;p=b;n=c[p+4>>2]|0;m=a;c[m>>2]=c[p>>2];c[m+4>>2]=n;n=b;c[n>>2]=o;c[n+4>>2]=l;q=2}else q=1}else q=0;while(0);if(wb[c[g>>2]&31](e,d)|0){k=d;j=c[k>>2]|0;l=c[k+4>>2]|0;k=e;n=c[k+4>>2]|0;o=d;c[o>>2]=c[k>>2];c[o+4>>2]=n;n=e;c[n>>2]=j;c[n+4>>2]=l;l=q+1|0;if(wb[c[g>>2]&31](d,b)|0){n=b;j=c[n>>2]|0;o=c[n+4>>2]|0;n=d;k=c[n+4>>2]|0;m=b;c[m>>2]=c[n>>2];c[m+4>>2]=k;k=d;c[k>>2]=j;c[k+
4>>2]=o;if(wb[c[g>>2]&31](b,a)|0){o=a;k=c[o>>2]|0;j=c[o+4>>2]|0;o=b;m=c[o+4>>2]|0;n=a;c[n>>2]=c[o>>2];c[n+4>>2]=m;m=b;c[m>>2]=k;c[m+4>>2]=j;r=q+3|0}else r=q+2|0}else r=l}else r=q;if(!(wb[c[g>>2]&31](f,e)|0)){s=r;i=h;return s|0}q=e;l=c[q>>2]|0;j=c[q+4>>2]|0;q=f;m=c[q+4>>2]|0;k=e;c[k>>2]=c[q>>2];c[k+4>>2]=m;m=f;c[m>>2]=l;c[m+4>>2]=j;if(!(wb[c[g>>2]&31](e,d)|0)){s=r+1|0;i=h;return s|0}j=d;m=c[j>>2]|0;l=c[j+4>>2]|0;j=e;f=c[j+4>>2]|0;k=d;c[k>>2]=c[j>>2];c[k+4>>2]=f;f=e;c[f>>2]=m;c[f+4>>2]=l;if(!(wb[c[g>>
2]&31](d,b)|0)){s=r+2|0;i=h;return s|0}l=b;f=c[l>>2]|0;m=c[l+4>>2]|0;l=d;e=c[l+4>>2]|0;k=b;c[k>>2]=c[l>>2];c[k+4>>2]=e;e=d;c[e>>2]=f;c[e+4>>2]=m;if(!(wb[c[g>>2]&31](b,a)|0)){s=r+3|0;i=h;return s|0}g=a;m=c[g>>2]|0;e=c[g+4>>2]|0;g=b;f=c[g+4>>2]|0;d=a;c[d>>2]=c[g>>2];c[d+4>>2]=f;f=b;c[f>>2]=m;c[f+4>>2]=e;s=r+4|0;i=h;return s|0}function fm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;i=i+16|0;f=e;switch(b-a>>3|0){case 1:case 0:g=1;i=e;return g|
0;case 4:h=a+8|0;j=a+16|0;k=b+-8|0;l=wb[c[d>>2]&31](h,a)|0;m=wb[c[d>>2]&31](j,h)|0;do if(l){n=a;o=c[n>>2]|0;p=c[n+4>>2]|0;if(m){n=j;q=c[n+4>>2]|0;r=a;c[r>>2]=c[n>>2];c[r+4>>2]=q;q=j;c[q>>2]=o;c[q+4>>2]=p;break}q=h;r=c[q+4>>2]|0;n=a;c[n>>2]=c[q>>2];c[n+4>>2]=r;r=h;c[r>>2]=o;c[r+4>>2]=p;if(wb[c[d>>2]&31](j,h)|0){p=h;r=c[p>>2]|0;o=c[p+4>>2]|0;p=j;n=c[p+4>>2]|0;q=h;c[q>>2]=c[p>>2];c[q+4>>2]=n;n=j;c[n>>2]=r;c[n+4>>2]=o}}else if(m?(o=h,n=c[o>>2]|0,r=c[o+4>>2]|0,o=j,q=c[o+4>>2]|0,p=h,c[p>>2]=c[o>>2],c[p+
4>>2]=q,q=j,c[q>>2]=n,c[q+4>>2]=r,wb[c[d>>2]&31](h,a)|0):0){r=a;q=c[r>>2]|0;n=c[r+4>>2]|0;r=h;p=c[r+4>>2]|0;o=a;c[o>>2]=c[r>>2];c[o+4>>2]=p;p=h;c[p>>2]=q;c[p+4>>2]=n}while(0);if(!(wb[c[d>>2]&31](k,j)|0)){g=1;i=e;return g|0}m=j;l=c[m>>2]|0;n=c[m+4>>2]|0;m=k;p=c[m+4>>2]|0;q=j;c[q>>2]=c[m>>2];c[q+4>>2]=p;p=k;c[p>>2]=l;c[p+4>>2]=n;if(!(wb[c[d>>2]&31](j,h)|0)){g=1;i=e;return g|0}n=h;p=c[n>>2]|0;l=c[n+4>>2]|0;n=j;k=c[n+4>>2]|0;q=h;c[q>>2]=c[n>>2];c[q+4>>2]=k;k=j;c[k>>2]=p;c[k+4>>2]=l;if(!(wb[c[d>>2]&31](h,
a)|0)){g=1;i=e;return g|0}l=a;k=c[l>>2]|0;p=c[l+4>>2]|0;l=h;j=c[l+4>>2]|0;q=a;c[q>>2]=c[l>>2];c[q+4>>2]=j;j=h;c[j>>2]=k;c[j+4>>2]=p;g=1;i=e;return g|0;case 2:p=b+-8|0;if(!(wb[c[d>>2]&31](p,a)|0)){g=1;i=e;return g|0}j=a;k=c[j>>2]|0;h=c[j+4>>2]|0;j=p;q=c[j+4>>2]|0;l=a;c[l>>2]=c[j>>2];c[l+4>>2]=q;q=p;c[q>>2]=k;c[q+4>>2]=h;g=1;i=e;return g|0;case 3:h=a+8|0;q=b+-8|0;k=wb[c[d>>2]&31](h,a)|0;p=wb[c[d>>2]&31](q,h)|0;if(!k){if(!p){g=1;i=e;return g|0}k=h;l=c[k>>2]|0;j=c[k+4>>2]|0;k=q;n=c[k+4>>2]|0;m=h;c[m>>
2]=c[k>>2];c[m+4>>2]=n;n=q;c[n>>2]=l;c[n+4>>2]=j;if(!(wb[c[d>>2]&31](h,a)|0)){g=1;i=e;return g|0}j=a;n=c[j>>2]|0;l=c[j+4>>2]|0;j=h;m=c[j+4>>2]|0;k=a;c[k>>2]=c[j>>2];c[k+4>>2]=m;m=h;c[m>>2]=n;c[m+4>>2]=l;g=1;i=e;return g|0}l=a;m=c[l>>2]|0;n=c[l+4>>2]|0;if(p){p=q;l=c[p+4>>2]|0;k=a;c[k>>2]=c[p>>2];c[k+4>>2]=l;l=q;c[l>>2]=m;c[l+4>>2]=n;g=1;i=e;return g|0}l=h;k=c[l+4>>2]|0;p=a;c[p>>2]=c[l>>2];c[p+4>>2]=k;k=h;c[k>>2]=m;c[k+4>>2]=n;if(!(wb[c[d>>2]&31](q,h)|0)){g=1;i=e;return g|0}n=h;k=c[n>>2]|0;m=c[n+4>>
2]|0;n=q;p=c[n+4>>2]|0;l=h;c[l>>2]=c[n>>2];c[l+4>>2]=p;p=q;c[p>>2]=k;c[p+4>>2]=m;g=1;i=e;return g|0;case 5:em(a,a+8|0,a+16|0,a+24|0,b+-8|0,d)|0;g=1;i=e;return g|0;default:m=a+16|0;p=a+8|0;k=wb[c[d>>2]&31](p,a)|0;q=wb[c[d>>2]&31](m,p)|0;do if(k){l=a;n=c[l>>2]|0;h=c[l+4>>2]|0;if(q){l=m;j=c[l+4>>2]|0;o=a;c[o>>2]=c[l>>2];c[o+4>>2]=j;j=m;c[j>>2]=n;c[j+4>>2]=h;break}j=p;o=c[j+4>>2]|0;l=a;c[l>>2]=c[j>>2];c[l+4>>2]=o;o=p;c[o>>2]=n;c[o+4>>2]=h;if(wb[c[d>>2]&31](m,p)|0){h=p;o=c[h>>2]|0;n=c[h+4>>2]|0;h=m;l=
c[h+4>>2]|0;j=p;c[j>>2]=c[h>>2];c[j+4>>2]=l;l=m;c[l>>2]=o;c[l+4>>2]=n}}else if(q?(n=p,l=c[n>>2]|0,o=c[n+4>>2]|0,n=m,j=c[n+4>>2]|0,h=p,c[h>>2]=c[n>>2],c[h+4>>2]=j,j=m,c[j>>2]=l,c[j+4>>2]=o,wb[c[d>>2]&31](p,a)|0):0){o=a;j=c[o>>2]|0;l=c[o+4>>2]|0;o=p;h=c[o+4>>2]|0;n=a;c[n>>2]=c[o>>2];c[n+4>>2]=h;h=p;c[h>>2]=j;c[h+4>>2]=l}while(0);p=a+24|0;if((p|0)==(b|0)){g=1;i=e;return g|0}else{s=0;t=p;u=m}while(1){if(wb[c[d>>2]&31](t,u)|0){m=t;p=c[m+4>>2]|0;q=f;c[q>>2]=c[m>>2];c[q+4>>2]=p;p=t;q=u;while(1){m=q;k=c[m+
4>>2]|0;l=p;c[l>>2]=c[m>>2];c[l+4>>2]=k;if((q|0)==(a|0))break;k=q+-8|0;if(wb[c[d>>2]&31](f,k)|0){l=q;q=k;p=l}else break}p=f;l=c[p+4>>2]|0;k=q;c[k>>2]=c[p>>2];c[k+4>>2]=l;l=s+1|0;if((l|0)==8)break;else v=l}else v=s;l=t+8|0;if((l|0)==(b|0)){g=1;w=41;break}else{k=t;s=v;t=l;u=k}}if((w|0)==41){i=e;return g|0}g=(t+8|0)==(b|0);i=e;return g|0}return 0}function gm(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=i;j=wb[c[g>>2]&31](b,a)|0;k=wb[c[g>>2]&31](d,
b)|0;do if(j){l=a;m=c[l>>2]|0;n=c[l+4>>2]|0;if(k){l=d;o=c[l+4>>2]|0;p=a;c[p>>2]=c[l>>2];c[p+4>>2]=o;o=d;c[o>>2]=m;c[o+4>>2]=n;q=1;break}o=b;p=c[o+4>>2]|0;l=a;c[l>>2]=c[o>>2];c[l+4>>2]=p;p=b;c[p>>2]=m;c[p+4>>2]=n;if(wb[c[g>>2]&31](d,b)|0){n=b;p=c[n>>2]|0;m=c[n+4>>2]|0;n=d;l=c[n+4>>2]|0;o=b;c[o>>2]=c[n>>2];c[o+4>>2]=l;l=d;c[l>>2]=p;c[l+4>>2]=m;q=2}else q=1}else if(k){m=b;l=c[m>>2]|0;p=c[m+4>>2]|0;m=d;o=c[m+4>>2]|0;n=b;c[n>>2]=c[m>>2];c[n+4>>2]=o;o=d;c[o>>2]=l;c[o+4>>2]=p;if(wb[c[g>>2]&31](b,a)|0){p=
a;o=c[p>>2]|0;l=c[p+4>>2]|0;p=b;n=c[p+4>>2]|0;m=a;c[m>>2]=c[p>>2];c[m+4>>2]=n;n=b;c[n>>2]=o;c[n+4>>2]=l;q=2}else q=1}else q=0;while(0);if(wb[c[g>>2]&31](e,d)|0){k=d;j=c[k>>2]|0;l=c[k+4>>2]|0;k=e;n=c[k+4>>2]|0;o=d;c[o>>2]=c[k>>2];c[o+4>>2]=n;n=e;c[n>>2]=j;c[n+4>>2]=l;l=q+1|0;if(wb[c[g>>2]&31](d,b)|0){n=b;j=c[n>>2]|0;o=c[n+4>>2]|0;n=d;k=c[n+4>>2]|0;m=b;c[m>>2]=c[n>>2];c[m+4>>2]=k;k=d;c[k>>2]=j;c[k+4>>2]=o;if(wb[c[g>>2]&31](b,a)|0){o=a;k=c[o>>2]|0;j=c[o+4>>2]|0;o=b;m=c[o+4>>2]|0;n=a;c[n>>2]=c[o>>2];
c[n+4>>2]=m;m=b;c[m>>2]=k;c[m+4>>2]=j;r=q+3|0}else r=q+2|0}else r=l}else r=q;if(!(wb[c[g>>2]&31](f,e)|0)){s=r;i=h;return s|0}q=e;l=c[q>>2]|0;j=c[q+4>>2]|0;q=f;m=c[q+4>>2]|0;k=e;c[k>>2]=c[q>>2];c[k+4>>2]=m;m=f;c[m>>2]=l;c[m+4>>2]=j;if(!(wb[c[g>>2]&31](e,d)|0)){s=r+1|0;i=h;return s|0}j=d;m=c[j>>2]|0;l=c[j+4>>2]|0;j=e;f=c[j+4>>2]|0;k=d;c[k>>2]=c[j>>2];c[k+4>>2]=f;f=e;c[f>>2]=m;c[f+4>>2]=l;if(!(wb[c[g>>2]&31](d,b)|0)){s=r+2|0;i=h;return s|0}l=b;f=c[l>>2]|0;m=c[l+4>>2]|0;l=d;e=c[l+4>>2]|0;k=b;c[k>>2]=
c[l>>2];c[k+4>>2]=e;e=d;c[e>>2]=f;c[e+4>>2]=m;if(!(wb[c[g>>2]&31](b,a)|0)){s=r+3|0;i=h;return s|0}g=a;m=c[g>>2]|0;e=c[g+4>>2]|0;g=b;f=c[g+4>>2]|0;d=a;c[d>>2]=c[g>>2];c[d+4>>2]=f;f=b;c[f>>2]=m;c[f+4>>2]=e;s=r+4|0;i=h;return s|0}function hm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;i=i+16|0;f=e;switch(b-a>>3|0){case 3:g=a+8|0;h=b+-8|0;j=wb[c[d>>2]&31](g,a)|0;k=wb[c[d>>2]&31](h,g)|0;if(!j){if(!k){l=1;i=e;return l|0}j=g;m=c[j>>2]|0;n=c[j+
4>>2]|0;j=h;o=c[j+4>>2]|0;p=g;c[p>>2]=c[j>>2];c[p+4>>2]=o;o=h;c[o>>2]=m;c[o+4>>2]=n;if(!(wb[c[d>>2]&31](g,a)|0)){l=1;i=e;return l|0}n=a;o=c[n>>2]|0;m=c[n+4>>2]|0;n=g;p=c[n+4>>2]|0;j=a;c[j>>2]=c[n>>2];c[j+4>>2]=p;p=g;c[p>>2]=o;c[p+4>>2]=m;l=1;i=e;return l|0}m=a;p=c[m>>2]|0;o=c[m+4>>2]|0;if(k){k=h;m=c[k+4>>2]|0;j=a;c[j>>2]=c[k>>2];c[j+4>>2]=m;m=h;c[m>>2]=p;c[m+4>>2]=o;l=1;i=e;return l|0}m=g;j=c[m+4>>2]|0;k=a;c[k>>2]=c[m>>2];c[k+4>>2]=j;j=g;c[j>>2]=p;c[j+4>>2]=o;if(!(wb[c[d>>2]&31](h,g)|0)){l=1;i=e;
return l|0}o=g;j=c[o>>2]|0;p=c[o+4>>2]|0;o=h;k=c[o+4>>2]|0;m=g;c[m>>2]=c[o>>2];c[m+4>>2]=k;k=h;c[k>>2]=j;c[k+4>>2]=p;l=1;i=e;return l|0;case 4:p=a+8|0;k=a+16|0;j=b+-8|0;h=wb[c[d>>2]&31](p,a)|0;m=wb[c[d>>2]&31](k,p)|0;do if(h){o=a;g=c[o>>2]|0;n=c[o+4>>2]|0;if(m){o=k;q=c[o+4>>2]|0;r=a;c[r>>2]=c[o>>2];c[r+4>>2]=q;q=k;c[q>>2]=g;c[q+4>>2]=n;break}q=p;r=c[q+4>>2]|0;o=a;c[o>>2]=c[q>>2];c[o+4>>2]=r;r=p;c[r>>2]=g;c[r+4>>2]=n;if(wb[c[d>>2]&31](k,p)|0){n=p;r=c[n>>2]|0;g=c[n+4>>2]|0;n=k;o=c[n+4>>2]|0;q=p;c[q>>
2]=c[n>>2];c[q+4>>2]=o;o=k;c[o>>2]=r;c[o+4>>2]=g}}else if(m?(g=p,o=c[g>>2]|0,r=c[g+4>>2]|0,g=k,q=c[g+4>>2]|0,n=p,c[n>>2]=c[g>>2],c[n+4>>2]=q,q=k,c[q>>2]=o,c[q+4>>2]=r,wb[c[d>>2]&31](p,a)|0):0){r=a;q=c[r>>2]|0;o=c[r+4>>2]|0;r=p;n=c[r+4>>2]|0;g=a;c[g>>2]=c[r>>2];c[g+4>>2]=n;n=p;c[n>>2]=q;c[n+4>>2]=o}while(0);if(!(wb[c[d>>2]&31](j,k)|0)){l=1;i=e;return l|0}m=k;h=c[m>>2]|0;o=c[m+4>>2]|0;m=j;n=c[m+4>>2]|0;q=k;c[q>>2]=c[m>>2];c[q+4>>2]=n;n=j;c[n>>2]=h;c[n+4>>2]=o;if(!(wb[c[d>>2]&31](k,p)|0)){l=1;i=e;return l|
0}o=p;n=c[o>>2]|0;h=c[o+4>>2]|0;o=k;j=c[o+4>>2]|0;q=p;c[q>>2]=c[o>>2];c[q+4>>2]=j;j=k;c[j>>2]=n;c[j+4>>2]=h;if(!(wb[c[d>>2]&31](p,a)|0)){l=1;i=e;return l|0}h=a;j=c[h>>2]|0;n=c[h+4>>2]|0;h=p;k=c[h+4>>2]|0;q=a;c[q>>2]=c[h>>2];c[q+4>>2]=k;k=p;c[k>>2]=j;c[k+4>>2]=n;l=1;i=e;return l|0;case 2:n=b+-8|0;if(!(wb[c[d>>2]&31](n,a)|0)){l=1;i=e;return l|0}k=a;j=c[k>>2]|0;p=c[k+4>>2]|0;k=n;q=c[k+4>>2]|0;h=a;c[h>>2]=c[k>>2];c[h+4>>2]=q;q=n;c[q>>2]=j;c[q+4>>2]=p;l=1;i=e;return l|0;case 1:case 0:l=1;i=e;return l|
0;case 5:gm(a,a+8|0,a+16|0,a+24|0,b+-8|0,d)|0;l=1;i=e;return l|0;default:p=a+16|0;q=a+8|0;j=wb[c[d>>2]&31](q,a)|0;n=wb[c[d>>2]&31](p,q)|0;do if(j){h=a;k=c[h>>2]|0;o=c[h+4>>2]|0;if(n){h=p;m=c[h+4>>2]|0;g=a;c[g>>2]=c[h>>2];c[g+4>>2]=m;m=p;c[m>>2]=k;c[m+4>>2]=o;break}m=q;g=c[m+4>>2]|0;h=a;c[h>>2]=c[m>>2];c[h+4>>2]=g;g=q;c[g>>2]=k;c[g+4>>2]=o;if(wb[c[d>>2]&31](p,q)|0){o=q;g=c[o>>2]|0;k=c[o+4>>2]|0;o=p;h=c[o+4>>2]|0;m=q;c[m>>2]=c[o>>2];c[m+4>>2]=h;h=p;c[h>>2]=g;c[h+4>>2]=k}}else if(n?(k=q,h=c[k>>2]|0,
g=c[k+4>>2]|0,k=p,m=c[k+4>>2]|0,o=q,c[o>>2]=c[k>>2],c[o+4>>2]=m,m=p,c[m>>2]=h,c[m+4>>2]=g,wb[c[d>>2]&31](q,a)|0):0){g=a;m=c[g>>2]|0;h=c[g+4>>2]|0;g=q;o=c[g+4>>2]|0;k=a;c[k>>2]=c[g>>2];c[k+4>>2]=o;o=q;c[o>>2]=m;c[o+4>>2]=h}while(0);q=a+24|0;if((q|0)==(b|0)){l=1;i=e;return l|0}else{s=0;t=q;u=p}while(1){if(wb[c[d>>2]&31](t,u)|0){p=t;q=c[p+4>>2]|0;n=f;c[n>>2]=c[p>>2];c[n+4>>2]=q;q=t;n=u;while(1){p=n;j=c[p+4>>2]|0;h=q;c[h>>2]=c[p>>2];c[h+4>>2]=j;if((n|0)==(a|0))break;j=n+-8|0;if(wb[c[d>>2]&31](f,j)|0){h=
n;n=j;q=h}else break}q=f;h=c[q+4>>2]|0;j=n;c[j>>2]=c[q>>2];c[j+4>>2]=h;h=s+1|0;if((h|0)==8)break;else v=h}else v=s;h=t+8|0;if((h|0)==(b|0)){l=1;w=41;break}else{j=t;s=v;t=h;u=j}}if((w|0)==41){i=e;return l|0}l=(t+8|0)==(b|0);i=e;return l|0}return 0}function im(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,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g;j=wb[c[f>>2]&31](b,a)|0;k=wb[c[f>>2]&31](d,b)|0;do if(j){if(k){c[h+0>>2]=c[a+0>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];c[h+16>>2]=
c[a+16>>2];c[h+20>>2]=c[a+20>>2];c[h+24>>2]=c[a+24>>2];c[a+0>>2]=c[d+0>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[d+0>>2]=c[h+0>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];c[d+16>>2]=c[h+16>>2];c[d+20>>2]=c[h+20>>2];c[d+24>>2]=c[h+24>>2];l=1;break}c[h+0>>2]=c[a+0>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];c[h+16>>2]=c[a+16>>2];c[h+20>>2]=c[a+20>>2];c[h+24>>2]=c[a+
24>>2];c[a+0>>2]=c[b+0>>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];c[b+0>>2]=c[h+0>>2];c[b+4>>2]=c[h+4>>2];c[b+8>>2]=c[h+8>>2];c[b+12>>2]=c[h+12>>2];c[b+16>>2]=c[h+16>>2];c[b+20>>2]=c[h+20>>2];c[b+24>>2]=c[h+24>>2];if(wb[c[f>>2]&31](d,b)|0){c[h+0>>2]=c[b+0>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];c[h+16>>2]=c[b+16>>2];c[h+20>>2]=c[b+20>>2];c[h+24>>2]=c[b+24>>2];c[b+0>>2]=c[d+0>>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[d+0>>2]=c[h+0>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];c[d+16>>2]=c[h+16>>2];c[d+20>>2]=c[h+20>>2];c[d+24>>2]=c[h+24>>2];l=2}else l=1}else if(k){c[h+0>>2]=c[b+0>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];c[h+16>>2]=c[b+16>>2];c[h+20>>2]=c[b+20>>2];c[h+24>>2]=c[b+24>>2];c[b+0>>2]=c[d+0>>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[d+0>>2]=c[h+0>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];c[d+16>>2]=c[h+16>>2];c[d+20>>2]=c[h+20>>2];c[d+24>>2]=c[h+24>>2];if(wb[c[f>>2]&31](b,a)|0){c[h+0>>2]=c[a+0>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];c[h+16>>2]=c[a+16>>2];c[h+20>>2]=c[a+20>>2];c[h+24>>2]=c[a+24>>2];c[a+0>>2]=c[b+0>>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];c[b+0>>2]=c[h+0>>2];c[b+4>>2]=c[h+4>>2];c[b+8>>2]=c[h+8>>2];c[b+12>>2]=c[h+12>>2];c[b+16>>2]=c[h+16>>2];c[b+20>>2]=c[h+20>>2];c[b+24>>2]=c[h+24>>2];l=2}else l=1}else l=0;while(0);if(!(wb[c[f>>2]&31](e,d)|0)){m=l;i=g;return m|0}c[h+0>>2]=c[d+0>>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[h+20>>2]=c[d+20>>2];c[h+24>>2]=c[d+24>>2];c[d+0>>2]=c[e+0>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>
2]=c[e+12>>2];c[d+16>>2]=c[e+16>>2];c[d+20>>2]=c[e+20>>2];c[d+24>>2]=c[e+24>>2];c[e+0>>2]=c[h+0>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];c[e+16>>2]=c[h+16>>2];c[e+20>>2]=c[h+20>>2];c[e+24>>2]=c[h+24>>2];if(!(wb[c[f>>2]&31](d,b)|0)){m=l+1|0;i=g;return m|0}c[h+0>>2]=c[b+0>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];c[h+16>>2]=c[b+16>>2];c[h+20>>2]=c[b+20>>2];c[h+24>>2]=c[b+24>>2];c[b+0>>2]=c[d+0>>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[d+0>>2]=c[h+0>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];c[d+16>>2]=c[h+16>>2];c[d+20>>2]=c[h+20>>2];c[d+24>>2]=c[h+24>>2];if(!(wb[c[f>>2]&31](b,a)|0)){m=l+2|0;i=g;return m|0}c[h+0>>2]=c[a+0>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];c[h+16>>2]=c[a+16>>2];c[h+20>>2]=c[a+20>>2];c[h+24>>2]=c[a+24>>2];c[a+0>>2]=c[b+0>>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];c[b+0>>2]=c[h+0>>2];c[b+4>>2]=c[h+4>>2];c[b+8>>2]=c[h+8>>2];c[b+12>>2]=c[h+12>>2];c[b+16>>2]=c[h+16>>2];c[b+20>>2]=c[h+20>>2];c[b+24>>2]=c[h+24>>2];m=l+3|0;i=g;return m|0}function jm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+64|0;f=e+28|0;g=e;h=a+56|0;j=a+28|0;k=wb[c[d>>2]&31](j,a)|0;l=wb[c[d>>2]&31](h,j)|0;do if(k){if(l){c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+
16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[h+0>>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];c[a+16>>2]=c[h+16>>2];c[a+20>>2]=c[h+20>>2];c[a+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];break}c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=
c[a+24>>2];c[a+0>>2]=c[j+0>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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(wb[c[d>>2]&31](h,j)|0){c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[h+0>>2];
c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2]}}else if(l?(c[f+0>>2]=c[j+0>>2],c[f+4>>2]=c[j+4>>2],c[f+8>>2]=c[j+8>>2],c[f+12>>2]=c[j+12>>2],c[f+16>>2]=c[j+16>>2],c[f+20>>2]=c[j+20>>2],c[f+24>>2]=c[j+24>>2],c[j+0>>2]=c[h+0>>2],c[j+4>>2]=c[h+4>>2],c[j+8>>2]=c[h+8>>2],c[j+12>>
2]=c[h+12>>2],c[j+16>>2]=c[h+16>>2],c[j+20>>2]=c[h+20>>2],c[j+24>>2]=c[h+24>>2],c[h+0>>2]=c[f+0>>2],c[h+4>>2]=c[f+4>>2],c[h+8>>2]=c[f+8>>2],c[h+12>>2]=c[f+12>>2],c[h+16>>2]=c[f+16>>2],c[h+20>>2]=c[f+20>>2],c[h+24>>2]=c[f+24>>2],wb[c[d>>2]&31](j,a)|0):0){c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[j+0>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>
2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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]}while(0);f=a+84|0;if((f|0)==(b|0)){i=e;return}j=f;f=h;while(1){if(wb[c[d>>2]&31](j,f)|0){c[g+0>>2]=c[j+0>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];c[g+16>>2]=c[j+16>>2];c[g+20>>2]=c[j+20>>2];c[g+24>>2]=c[j+24>>2];h=j;l=f;while(1){c[h+0>>2]=c[l+0>>2];c[h+4>>2]=c[l+4>>2];c[h+8>>2]=c[l+
8>>2];c[h+12>>2]=c[l+12>>2];c[h+16>>2]=c[l+16>>2];c[h+20>>2]=c[l+20>>2];c[h+24>>2]=c[l+24>>2];if((l|0)==(a|0))break;k=l+-28|0;if(wb[c[d>>2]&31](g,k)|0){m=l;l=k;h=m}else break}c[l+0>>2]=c[g+0>>2];c[l+4>>2]=c[g+4>>2];c[l+8>>2]=c[g+8>>2];c[l+12>>2]=c[g+12>>2];c[l+16>>2]=c[g+16>>2];c[l+20>>2]=c[g+20>>2];c[l+24>>2]=c[g+24>>2]}h=j+28|0;if((h|0)==(b|0))break;else{m=j;j=h;f=m}}i=e;return}function km(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;i=i+64|0;f=e+28|0;g=e;switch((b-
a|0)/28|0|0){case 4:im(a,a+28|0,a+56|0,b+-28|0,d)|0;h=1;i=e;return h|0;case 2:j=b+-28|0;if(!(wb[c[d>>2]&31](j,a)|0)){h=1;i=e;return h|0}c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[j+0>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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];h=1;i=e;return h|0;case 5:j=a+28|0;k=a+56|0;l=a+84|0;m=b+-28|0;im(a,j,k,l,d)|0;if(!(wb[c[d>>2]&31](m,l)|0)){h=1;i=e;return h|0}c[f+0>>2]=c[l+0>>2];c[f+4>>2]=c[l+4>>2];c[f+8>>2]=c[l+8>>2];c[f+12>>2]=c[l+12>>2];c[f+16>>2]=c[l+16>>2];c[f+20>>2]=c[l+20>>2];c[f+24>>2]=c[l+24>>2];c[l+0>>2]=c[m+0>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];c[l+16>>2]=c[m+16>>2];c[l+20>>2]=c[m+20>>2];c[l+24>>2]=c[m+24>>2];c[m+
0>>2]=c[f+0>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[m+16>>2]=c[f+16>>2];c[m+20>>2]=c[f+20>>2];c[m+24>>2]=c[f+24>>2];if(!(wb[c[d>>2]&31](l,k)|0)){h=1;i=e;return h|0}c[f+0>>2]=c[k+0>>2];c[f+4>>2]=c[k+4>>2];c[f+8>>2]=c[k+8>>2];c[f+12>>2]=c[k+12>>2];c[f+16>>2]=c[k+16>>2];c[f+20>>2]=c[k+20>>2];c[f+24>>2]=c[k+24>>2];c[k+0>>2]=c[l+0>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];c[k+16>>2]=c[l+16>>2];c[k+20>>2]=c[l+20>>2];c[k+24>>2]=c[l+24>>2];c[l+0>>2]=c[f+
0>>2];c[l+4>>2]=c[f+4>>2];c[l+8>>2]=c[f+8>>2];c[l+12>>2]=c[f+12>>2];c[l+16>>2]=c[f+16>>2];c[l+20>>2]=c[f+20>>2];c[l+24>>2]=c[f+24>>2];if(!(wb[c[d>>2]&31](k,j)|0)){h=1;i=e;return h|0}c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[k+0>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[k+0>>2]=c[f+0>>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[k+24>>2]=c[f+24>>2];if(!(wb[c[d>>2]&31](j,a)|0)){h=1;i=e;return h|0}c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[j+0>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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];h=1;i=e;return h|0;case 3:j=a+28|0;k=b+-28|0;l=wb[c[d>>2]&31](j,a)|0;m=wb[c[d>>2]&31](k,j)|0;if(!l){if(!m){h=1;i=e;return h|0}c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[k+0>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=
c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[k+0>>2]=c[f+0>>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[k+24>>2]=c[f+24>>2];if(!(wb[c[d>>2]&31](j,a)|0)){h=1;i=e;return h|0}c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[j+0>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];
c[a+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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];h=1;i=e;return h|0}if(m){c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[k+0>>2];c[a+4>>2]=c[k+4>>2];c[a+8>>2]=c[k+8>>2];c[a+12>>2]=c[k+12>>2];c[a+16>>2]=c[k+16>>2];c[a+20>>2]=c[k+20>>2];c[a+24>>2]=c[k+24>>2];c[k+0>>2]=
c[f+0>>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[k+24>>2]=c[f+24>>2];h=1;i=e;return h|0}c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[j+0>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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(!(wb[c[d>>2]&31](k,j)|0)){h=1;i=e;return h|0}c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[k+0>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[k+0>>2]=c[f+0>>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[k+24>>2]=c[f+24>>2];h=1;i=e;return h|0;case 1:case 0:h=1;i=e;return h|0;default:k=a+56|0;j=a+28|0;m=wb[c[d>>2]&31](j,a)|0;l=wb[c[d>>2]&31](k,j)|0;do if(m){if(l){c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[k+0>>2];c[a+4>>2]=c[k+4>>2];c[a+8>>2]=c[k+8>>2];c[a+12>>2]=c[k+12>>2];c[a+16>>2]=c[k+16>>2];c[a+20>>2]=c[k+20>>2];
c[a+24>>2]=c[k+24>>2];c[k+0>>2]=c[f+0>>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[k+24>>2]=c[f+24>>2];break}c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[j+0>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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(wb[c[d>>2]&31](k,j)|0){c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];c[f+16>>2]=c[j+16>>2];c[f+20>>2]=c[j+20>>2];c[f+24>>2]=c[j+24>>2];c[j+0>>2]=c[k+0>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[k+0>>2]=c[f+0>>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[k+24>>2]=c[f+24>>2]}}else if(l?(c[f+0>>2]=c[j+0>>2],c[f+4>>2]=c[j+4>>2],c[f+8>>2]=c[j+8>>2],c[f+12>>2]=c[j+12>>2],c[f+16>>2]=c[j+16>>2],c[f+20>>2]=c[j+20>>2],c[f+24>>2]=c[j+24>>2],c[j+0>>2]=c[k+0>>2],c[j+4>>2]=c[k+4>>2],c[j+8>>2]=c[k+8>>2],c[j+12>>2]=c[k+12>>2],c[j+16>>2]=c[k+16>>2],c[j+20>>2]=c[k+20>>2],c[j+24>>2]=c[k+24>>2],c[k+0>>2]=c[f+0>>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[k+24>>2]=c[f+24>>2],wb[c[d>>2]&31](j,a)|0):0){c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[a+0>>2]=c[j+0>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[j+0>>2]=c[f+0>>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]}while(0);f=a+84|0;if((f|0)==(b|0)){h=1;i=e;return h|0}j=0;l=f;f=k;while(1){if(wb[c[d>>2]&31](l,f)|0){c[g+0>>2]=c[l+0>>2];c[g+4>>2]=c[l+4>>2];c[g+8>>2]=c[l+8>>2];c[g+12>>2]=c[l+12>>2];c[g+16>>2]=c[l+16>>2];c[g+20>>2]=c[l+20>>2];c[g+24>>2]=c[l+24>>2];k=l;m=f;while(1){c[k+0>>2]=c[m+0>>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];if((m|0)==(a|0))break;n=m+-28|0;if(wb[c[d>>2]&31](g,n)|0){o=m;m=n;k=o}else break}c[m+
0>>2]=c[g+0>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];c[m+16>>2]=c[g+16>>2];c[m+20>>2]=c[g+20>>2];c[m+24>>2]=c[g+24>>2];k=j+1|0;if((k|0)==8)break;else p=k}else p=j;k=l+28|0;if((k|0)==(b|0)){h=1;q=35;break}else{o=l;j=p;l=k;f=o}}if((q|0)==35){i=e;return h|0}h=(l+28|0)==(b|0);i=e;return h|0}return 0}function lm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;g=c[b>>2]|0;h=c[a>>2]|0;j=c[e+(g<<2)>>2]|0;k=e+(h<<2)|0;l=c[k>>2]|0;m=+(j|0)<=
0;n=c[d>>2]|0;o=c[e+(n<<2)>>2]|0;p=+(o|0)<=0;q=p^m?p:(o|0)>(j|0);if(!(m^+(l|0)<=0?m:(j|0)>(l|0))){if(!q){r=0;i=f;return r|0}c[b>>2]=n;c[d>>2]=g;l=c[b>>2]|0;j=c[a>>2]|0;m=c[e+(l<<2)>>2]|0;o=c[e+(j<<2)>>2]|0;p=+(m|0)<=0;if(!(p^+(o|0)<=0?p:(m|0)>(o|0))){r=1;i=f;return r|0}c[a>>2]=l;c[b>>2]=j;r=2;i=f;return r|0}if(q){c[a>>2]=n;c[d>>2]=h;r=1;i=f;return r|0}c[a>>2]=g;c[b>>2]=h;g=c[d>>2]|0;a=c[e+(g<<2)>>2]|0;e=c[k>>2]|0;k=+(a|0)<=0;if(!(k^+(e|0)<=0?k:(a|0)>(e|0))){r=1;i=f;return r|0}c[b>>2]=g;c[d>>2]=h;
r=2;i=f;return r|0}function mm(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,j=0,k=0,l=0,m=0,n=0,o=0;g=i;h=lm(a,b,d,c[f>>2]|0)|0;j=c[e>>2]|0;k=c[d>>2]|0;l=c[f>>2]|0;f=c[l+(j<<2)>>2]|0;m=c[l+(k<<2)>>2]|0;n=+(f|0)<=0;if(!(n^+(m|0)<=0?n:(f|0)>(m|0))){o=h;i=g;return o|0}c[d>>2]=j;c[e>>2]=k;k=c[d>>2]|0;e=c[b>>2]|0;j=c[l+(k<<2)>>2]|0;m=c[l+(e<<2)>>2]|0;f=+(j|0)<=0;if(!(f^+(m|0)<=0?f:(j|0)>(m|0))){o=h+1|0;i=g;return o|0}c[b>>2]=k;c[d>>2]=e;e=c[b>>2]|0;d=c[a>>2]|0;k=c[l+(e<<2)>>2]|0;m=c[l+(d<<2)>>
2]|0;l=+(k|0)<=0;if(!(l^+(m|0)<=0?l:(k|0)>(m|0))){o=h+2|0;i=g;return o|0}c[a>>2]=e;c[b>>2]=d;o=h+3|0;i=g;return o|0}function Vf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;c[a+8>>2]=b;c[a+12>>2]=d;f=d+12|0;h=+g[f>>2];j=h-+g[b+12>>2];h=+g[f+4>>2]-+g[b+16>>2];k=+g[b+24>>2];l=+g[b+20>>2];m=+(j*k+h*l);n=+(k*h-j*l);f=a+20|0;g[f>>2]=m;g[f+4>>2]=n;g[a+28>>2]=+g[d+72>>2]-+g[b+72>>2];i=e;return}function Wf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=i;Bh(a,b);c[a>>2]=1056;e=b+20|0;f=c[e+4>>
2]|0;h=a+68|0;c[h>>2]=c[e>>2];c[h+4>>2]=f;g[a+76>>2]=+g[b+28>>2];g[a+80>>2]=0;g[a+84>>2]=0;g[a+88>>2]=0;g[a+92>>2]=+g[b+32>>2];g[a+96>>2]=+g[b+36>>2];g[a+100>>2]=+g[b+40>>2];i=d;return}function Xf(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=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;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+104|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+108|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+128|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+136|0;c[o>>2]=r;c[o+4>>2]=s;o=b+156|0;g[o>>2]=+g[f+136>>2];t=b+160|0;g[t>>2]=+g[l+136>>2];u=b+164|0;g[u>>2]=+g[f+144>>2];v=+g[l+144>>2];g[b+168>>2]=v;l=c[d+28>>2]|0;f=l+(h*12|0)|0;w=+g[f>>2];x=+g[f+4>>2];y=+g[l+(h*12|0)+8>>2];f=d+32|0;z=c[f>>2]|0;A=z+(h*12|0)|0;
B=c[A>>2]|0;C=+g[A+4>>2];D=+g[z+(h*12|0)+8>>2];h=l+(m*12|0)|0;E=+g[h>>2];F=+g[h+4>>2];G=+g[l+(m*12|0)+8>>2];l=z+(m*12|0)|0;h=c[l>>2]|0;H=+g[l+4>>2];I=+g[z+(m*12|0)+8>>2];J=+T(+y);K=+S(+y);L=+T(+G);M=+S(+G);N=-(c[k>>2]=p,+g[k>>2]);O=-(c[k>>2]=q,+g[k>>2]);P=K*N-J*O;Q=J*N+K*O;O=+P;N=+Q;q=b+112|0;g[q>>2]=O;g[q+4>>2]=N;N=-(c[k>>2]=r,+g[k>>2]);O=-(c[k>>2]=s,+g[k>>2]);R=M*N-L*O;U=L*N+M*O;O=+R;M=+U;s=b+120|0;g[s>>2]=O;g[s+4>>2]=M;M=+g[o>>2];O=+g[t>>2];N=+g[u>>2];L=M+O;V=L+Q*(N*Q)+U*(v*U);W=N*P;X=v*R;Y=-(Q*
W)-U*X;Z=L+P*W+R*X;X=V*Z-Y*Y;if(X!=0)_=1/X;else _=X;X=-(Y*_);g[b+172>>2]=Z*_;g[b+176>>2]=X;g[b+180>>2]=X;g[b+184>>2]=V*_;_=N+v;if(_>0)$=1/_;else $=_;g[b+188>>2]=$;$=+g[b+68>>2];_=+g[b+72>>2];V=+(E+R-w-P-(K*$-J*_));w=+(F+U-x-Q-(J*$+K*_));u=b+144|0;g[u>>2]=V;g[u+4>>2]=w;g[b+152>>2]=G-y-+g[b+76>>2];u=b+80|0;if(!(a[d+24>>0]|0)){g[u>>2]=0;g[b+84>>2]=0;g[b+88>>2]=0;aa=C;ba=B;ca=H;da=h;ea=D;fa=I;ga=c[j>>2]|0;ha=c[f>>2]|0;ia=ha+(ga*12|0)|0;ja=+aa;ka=ia;la=ka;c[la>>2]=ba;ma=ka+4|0;na=ma;g[na>>2]=ja;oa=c[j>>
2]|0;pa=c[f>>2]|0;qa=pa+(oa*12|0)+8|0;g[qa>>2]=ea;ra=c[n>>2]|0;sa=pa+(ra*12|0)|0;ta=+ca;ua=sa;va=ua;c[va>>2]=da;wa=ua+4|0;xa=wa;g[xa>>2]=ta;ya=c[n>>2]|0;za=c[f>>2]|0;Aa=za+(ya*12|0)+8|0;g[Aa>>2]=fa;i=e;return}else{y=+g[d+8>>2];G=y*+g[u>>2];g[u>>2]=G;u=b+84|0;w=y*+g[u>>2];g[u>>2]=w;u=b+88|0;V=y*+g[u>>2];g[u>>2]=V;u=(g[k>>2]=(c[k>>2]=B,+g[k>>2])-M*G,c[k>>2]|0);aa=C-M*w;ba=u;ca=H+O*w;da=(g[k>>2]=(c[k>>2]=h,+g[k>>2])+O*G,c[k>>2]|0);ea=D-N*(V+(w*P-G*Q));fa=I+v*(V+(w*R-G*U));ga=c[j>>2]|0;ha=c[f>>2]|0;ia=
ha+(ga*12|0)|0;ja=+aa;ka=ia;la=ka;c[la>>2]=ba;ma=ka+4|0;na=ma;g[na>>2]=ja;oa=c[j>>2]|0;pa=c[f>>2]|0;qa=pa+(oa*12|0)+8|0;g[qa>>2]=ea;ra=c[n>>2]|0;sa=pa+(ra*12|0)|0;ta=+ca;ua=sa;va=ua;c[va>>2]=da;wa=ua+4|0;xa=wa;g[xa>>2]=ta;ya=c[n>>2]|0;za=c[f>>2]|0;Aa=za+(ya*12|0)+8|0;g[Aa>>2]=fa;i=e;return}}function Yf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0;d=i;e=a+104|0;f=c[e>>2]|0;h=b+32|0;j=
c[h>>2]|0;l=j+(f*12|0)|0;m=c[l>>2]|0;n=+g[l+4>>2];o=+g[j+(f*12|0)+8>>2];f=a+108|0;l=c[f>>2]|0;p=j+(l*12|0)|0;q=c[p>>2]|0;r=+g[p+4>>2];s=+g[j+(l*12|0)+8>>2];t=+g[a+156>>2];u=+g[a+160>>2];v=+g[a+164>>2];w=+g[a+168>>2];x=+g[b>>2];y=+g[b+4>>2]*+g[a+100>>2];b=a+88|0;z=+g[b>>2];A=x*+g[a+96>>2];B=z-+g[a+188>>2]*(s-o+y*+g[a+152>>2]);C=-A;D=B<A?B:A;A=D<C?C:D;g[b>>2]=A;D=A-z;z=o-v*D;o=s+w*D;D=+g[a+124>>2];s=+g[a+120>>2];A=(c[k>>2]=q,+g[k>>2]);C=(c[k>>2]=m,+g[k>>2]);B=+g[a+116>>2];E=+g[a+112>>2];F=+g[a+144>>
2]*y+(B*z+(A-D*o-C));G=y*+g[a+148>>2]+(r+s*o-n-E*z);y=+g[a+176>>2]*F+ +g[a+184>>2]*G;m=a+80|0;q=m;H=+g[q>>2];I=+g[q+4>>2];J=H-(+g[a+172>>2]*F+ +g[a+180>>2]*G);g[m>>2]=J;q=a+84|0;G=+g[q>>2]-y;g[q>>2]=G;y=x*+g[a+92>>2];x=J*J+G*G;if(x>y*y){F=+Q(+x);if(F<1.1920928955078125E-7){K=J;L=G}else{x=1/F;F=J*x;g[m>>2]=F;M=G*x;g[q>>2]=M;K=F;L=M}M=y*K;g[m>>2]=M;K=y*L;g[q>>2]=K;N=M;O=K}else{N=J;O=G}G=N-H;H=O-I;I=+(C-t*G);C=+(A+u*G);A=+(n-t*H);q=(c[h>>2]|0)+((c[e>>2]|0)*12|0)|0;g[q>>2]=I;g[q+4>>2]=A;q=c[h>>2]|0;g[q+
((c[e>>2]|0)*12|0)+8>>2]=z-v*(E*H-G*B);B=+(r+u*H);e=q+((c[f>>2]|0)*12|0)|0;g[e>>2]=C;g[e+4>>2]=B;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=o+w*(H*s-G*D);i=d;return}function Zf(a,b){a=a|0;b=b|0;return 1}function _f(a,b){a=a|0;b=b|0;var d=0,e=0;d=(c[b+48>>2]|0)+12|0;b=c[d+4>>2]|0;e=a;c[e>>2]=c[d>>2];c[e+4>>2]=b;return}function $f(a,b){a=a|0;b=b|0;var d=0,e=0;d=(c[b+52>>2]|0)+12|0;b=c[d+4>>2]|0;e=a;c[e>>2]=c[d>>2];c[e+4>>2]=b;return}function ag(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=+g[b+84>>2]*c;g[a>>2]=+g[b+
80>>2]*c;g[a+4>>2]=d;return}function bg(a,b){a=a|0;b=+b;return+(+g[a+88>>2]*b)}function cg(a,d){a=a|0;d=d|0;var f=0,h=0,j=0,k=0,l=0;f=i;h=a+68|0;if(!(+g[d>>2]!=+g[h>>2])?!(+g[d+4>>2]!=+g[a+72>>2]):0){i=f;return}j=c[a+48>>2]|0;k=j+4|0;l=e[k>>1]|0;if(!(l&2)){b[k>>1]=l|2;g[j+160>>2]=0}j=c[a+52>>2]|0;a=j+4|0;l=e[a>>1]|0;if(!(l&2)){b[a>>1]=l|2;g[j+160>>2]=0}j=d;d=c[j+4>>2]|0;l=h;c[l>>2]=c[j>>2];c[l+4>>2]=d;i=f;return}function dg(a,d){a=a|0;d=+d;var f=0,h=0,j=0,k=0,l=0;f=i;h=a+76|0;if(!(+g[h>>2]!=d)){i=
f;return}j=c[a+48>>2]|0;k=j+4|0;l=e[k>>1]|0;if(!(l&2)){b[k>>1]=l|2;g[j+160>>2]=0}j=c[a+52>>2]|0;a=j+4|0;l=e[a>>1]|0;if(!(l&2)){b[a>>1]=l|2;g[j+160>>2]=0}g[h>>2]=d;i=f;return}function eg(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Fm(1104,e);c[e>>2]=f;Fm(1128,e);c[e>>2]=j;Fm(1160,e);c[e>>2]=d[a+61>>0];Fm(1192,e);l=+g[a+72>>2];h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(1232,
e);h[k>>3]=+g[a+76>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(1280,e);h[k>>3]=+g[a+92>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(1312,e);h[k>>3]=+g[a+96>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(1344,e);h[k>>3]=+g[a+100>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(1376,e);c[e>>2]=c[a+56>>2];Fm(1416,e);i=b;return}function fg(a,b){a=a|0;b=b|0;return}function gg(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function hg(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=i;c[a+8>>2]=
b;c[a+12>>2]=d;j=+g[e>>2]-+g[b+12>>2];k=e+4|0;l=+g[k>>2]-+g[b+16>>2];m=+g[b+24>>2];n=+g[b+20>>2];o=+(j*m+l*n);p=+(m*l-j*n);b=a+20|0;g[b>>2]=o;g[b+4>>2]=p;p=+g[f>>2]-+g[d+12>>2];b=f+4|0;o=+g[b>>2]-+g[d+16>>2];n=+g[d+24>>2];j=+g[d+20>>2];l=+(p*n+o*j);m=+(n*o-p*j);d=a+28|0;g[d>>2]=l;g[d+4>>2]=m;m=+g[f>>2]-+g[e>>2];l=+g[b>>2]-+g[k>>2];g[a+36>>2]=+Q(+(m*m+l*l));i=h;return}function ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=i;Bh(a,b);c[a>>2]=1504;e=b+20|0;f=c[e+4>>2]|0;h=a+80|0;c[h>>2]=c[e>>2];c[h+4>>2]=
f;f=b+28|0;h=c[f+4>>2]|0;e=a+88|0;c[e>>2]=c[f>>2];c[e+4>>2]=h;g[a+104>>2]=+g[b+36>>2];g[a+68>>2]=+g[b+40>>2];g[a+72>>2]=+g[b+44>>2];g[a+100>>2]=0;g[a+96>>2]=0;g[a+76>>2]=0;i=d;return}function jg(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=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;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+108|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+112|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+140|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+148|0;c[o>>2]=r;c[o+4>>2]=s;s=b+156|0;g[s>>2]=+g[f+136>>2];o=b+160|0;g[o>>2]=+g[l+136>>2];t=b+164|0;g[t>>2]=+g[f+144>>2];f=b+168|0;g[f>>2]=+g[l+144>>2];l=c[d+28>>2]|0;u=l+(h*12|0)|0;v=+g[u>>2];w=+g[u+4>>2];x=+g[l+(h*12|0)+8>>2];u=d+32|0;y=c[u>>2]|0;z=y+(h*12|0)|0;A=c[z>>2]|0;B=+g[z+4>>2];
C=+g[y+(h*12|0)+8>>2];h=l+(m*12|0)|0;D=+g[h>>2];E=+g[h+4>>2];F=+g[l+(m*12|0)+8>>2];l=y+(m*12|0)|0;h=c[l>>2]|0;G=+g[l+4>>2];H=+g[y+(m*12|0)+8>>2];I=+T(+x);J=+S(+x);x=+T(+F);K=+S(+F);F=+g[b+80>>2]-(c[k>>2]=p,+g[k>>2]);L=+g[b+84>>2]-(c[k>>2]=q,+g[k>>2]);M=J*F-I*L;N=I*F+J*L;L=+M;J=+N;q=b+124|0;g[q>>2]=L;g[q+4>>2]=J;J=+g[b+88>>2]-(c[k>>2]=r,+g[k>>2]);L=+g[b+92>>2]-+g[b+152>>2];F=K*J-x*L;I=x*J+K*L;L=+F;K=+I;r=b+132|0;g[r>>2]=L;g[r+4>>2]=K;r=b+116|0;K=D+F-v-M;v=E+I-w-N;w=+K;E=+v;q=r;g[q>>2]=w;g[q+4>>2]=
E;E=+Q(+(K*K+v*v));if(E>.004999999888241291){w=1/E;D=K*w;g[r>>2]=D;O=w*v;P=D}else{g[r>>2]=0;O=0;P=0}g[b+120>>2]=O;D=O*M-N*P;v=O*F-P*I;w=+g[s>>2];K=+g[t>>2];L=+g[o>>2];J=+g[f>>2];x=L+(w+D*(D*K))+v*(v*J);if(x!=0)R=1/x;else R=0;f=b+172|0;g[f>>2]=R;v=+g[b+68>>2];if(v>0){D=E-+g[b+104>>2];E=v*6.2831854820251465;v=E*(R*E);U=+g[d>>2];V=U*(E*(R*2*+g[b+72>>2])+v*U);o=b+96|0;g[o>>2]=V;if(V!=0)W=1/V;else W=0;g[o>>2]=W;g[b+76>>2]=v*(D*U)*W;U=x+W;if(U!=0)X=1/U;else X=0;g[f>>2]=X}else{g[b+96>>2]=0;g[b+76>>2]=0}if(!(a[d+
24>>0]|0)){g[b+100>>2]=0;Y=B;Z=A;_=G;$=h;aa=C;ba=H;ca=c[j>>2]|0;da=c[u>>2]|0;ea=da+(ca*12|0)|0;fa=+Y;ga=ea;ha=ga;c[ha>>2]=Z;ia=ga+4|0;ja=ia;g[ja>>2]=fa;ka=c[j>>2]|0;la=c[u>>2]|0;ma=la+(ka*12|0)+8|0;g[ma>>2]=aa;na=c[n>>2]|0;oa=la+(na*12|0)|0;pa=+_;qa=oa;ra=qa;c[ra>>2]=$;sa=qa+4|0;ta=sa;g[ta>>2]=pa;ua=c[n>>2]|0;va=c[u>>2]|0;wa=va+(ua*12|0)+8|0;g[wa>>2]=ba;i=e;return}else{f=b+100|0;X=+g[d+8>>2]*+g[f>>2];g[f>>2]=X;U=P*X;P=X*O;f=(g[k>>2]=(c[k>>2]=A,+g[k>>2])-U*w,c[k>>2]|0);Y=B-P*w;Z=f;_=G+P*L;$=(g[k>>
2]=(c[k>>2]=h,+g[k>>2])+U*L,c[k>>2]|0);aa=C-K*(P*M-U*N);ba=H+J*(P*F-U*I);ca=c[j>>2]|0;da=c[u>>2]|0;ea=da+(ca*12|0)|0;fa=+Y;ga=ea;ha=ga;c[ha>>2]=Z;ia=ga+4|0;ja=ia;g[ja>>2]=fa;ka=c[j>>2]|0;la=c[u>>2]|0;ma=la+(ka*12|0)+8|0;g[ma>>2]=aa;na=c[n>>2]|0;oa=la+(na*12|0)|0;pa=+_;qa=oa;ra=qa;c[ra>>2]=$;sa=qa+4|0;ta=sa;g[ta>>2]=pa;ua=c[n>>2]|0;va=c[u>>2]|0;wa=va+(ua*12|0)+8|0;g[wa>>2]=ba;i=e;return}}function kg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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;d=i;e=a+108|0;f=c[e>>2]|0;h=b+32|0;b=c[h>>2]|0;j=b+(f*12|0)|0;k=j;l=+g[k+4>>2];m=+g[b+(f*12|0)+8>>2];f=a+112|0;n=c[f>>2]|0;o=b+(n*12|0)|0;p=+g[o+4>>2];q=+g[b+(n*12|0)+8>>2];r=+g[a+128>>2];s=+g[a+124>>2];t=+g[k>>2];u=+g[a+136>>2];v=+g[a+132>>2];w=+g[o>>2];x=+g[a+116>>2];y=+g[a+120>>2];o=a+100|0;z=+g[o>>2];A=+g[a+172>>2]*(+g[a+76>>2]+(x*(w-q*u-(t-m*r))+y*(p+q*v-(l+m*s)))+ +g[a+96>>2]*z);B=-A;g[o>>2]=z-A;A=x*B;x=y*B;B=+g[a+156>>2];y=+(t-B*A);t=m-+g[a+164>>2]*(s*x-A*r);r=+g[a+160>>2];s=
+(w+A*r);w=q+ +g[a+168>>2]*(x*v-A*u);u=+(l-B*x);a=j;g[a>>2]=y;g[a+4>>2]=u;a=c[h>>2]|0;g[a+((c[e>>2]|0)*12|0)+8>>2]=t;t=+(p+x*r);e=a+((c[f>>2]|0)*12|0)|0;g[e>>2]=s;g[e+4>>2]=t;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=w;i=d;return}function lg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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;d=i;if(+g[a+68>>2]>0){e=1;i=d;return e|0}f=a+108|0;h=c[f>>2]|0;j=b+28|0;b=c[j>>2]|0;k=b+(h*12|0)|0;l=k;m=+g[l+4>>2];n=+g[b+(h*12|0)+8>>
2];h=a+112|0;o=c[h>>2]|0;p=b+(o*12|0)|0;q=+g[p+4>>2];r=+g[b+(o*12|0)+8>>2];s=+T(+n);t=+S(+n);u=+T(+r);v=+S(+r);w=+g[a+80>>2]-+g[a+140>>2];x=+g[a+84>>2]-+g[a+144>>2];y=t*w-s*x;z=s*w+t*x;x=+g[a+88>>2]-+g[a+148>>2];t=+g[a+92>>2]-+g[a+152>>2];w=v*x-u*t;s=u*x+v*t;t=+g[p>>2];v=+g[l>>2];x=t+w-v-y;u=q+s-m-z;A=+Q(+(x*x+u*u));if(A<1.1920928955078125E-7){B=0;C=x;D=u}else{E=1/A;B=A;C=x*E;D=u*E}E=B-+g[a+104>>2];B=E<.20000000298023224?E:.20000000298023224;E=B<-.20000000298023224?-.20000000298023224:B;B=-(+g[a+
172>>2]*E);u=C*B;C=D*B;B=+g[a+156>>2];D=+(v-B*u);v=n-+g[a+164>>2]*(y*C-z*u);z=+g[a+160>>2];y=+(t+z*u);t=r+ +g[a+168>>2]*(w*C-s*u);u=+(m-B*C);a=k;g[a>>2]=D;g[a+4>>2]=u;a=c[j>>2]|0;g[a+((c[f>>2]|0)*12|0)+8>>2]=v;v=+(q+z*C);f=a+((c[h>>2]|0)*12|0)|0;g[f>>2]=y;g[f+4>>2]=v;g[(c[j>>2]|0)+((c[h>>2]|0)*12|0)+8>>2]=t;if(E>0)F=E;else F=-E;e=F<.004999999888241291;i=d;return e|0}function mg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+80>>2];h=+g[d+20>>2];i=+g[b+84>>2];j=f*
h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function ng(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+88>>2];h=+g[d+20>>2];i=+g[b+92>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function og(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=+g[b+100>>2]*c;c=d*+g[b+120>>2];g[a>>2]=+g[b+116>>2]*d;g[a+4>>2]=c;return}function pg(a,b){a=a|0;b=+b;return 0}function qg(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|
0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Fm(1552,e);c[e>>2]=f;Fm(1584,e);c[e>>2]=j;Fm(1616,e);c[e>>2]=d[a+61>>0];Fm(1648,e);l=+g[a+84>>2];h[k>>3]=+g[a+80>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(1688,e);l=+g[a+92>>2];h[k>>3]=+g[a+88>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(1736,e);h[k>>3]=+g[a+104>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(1784,e);h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>
2]=c[k+4>>2];Fm(1808,e);h[k>>3]=+g[a+72>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(1840,e);c[e>>2]=c[a+56>>2];Fm(1872,e);i=b;return}function rg(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function sg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;c[a+8>>2]=b;c[a+12>>2]=d;h=+g[e>>2]-+g[b+12>>2];j=e+4|0;k=+g[j>>2]-+g[b+16>>2];l=+g[b+24>>2];m=+g[b+20>>2];n=+(h*l+k*m);o=+(l*k-h*m);b=a+20|0;g[b>>2]=n;g[b+4>>2]=o;o=+g[e>>2]-+g[d+12>>2];n=+g[j>>2]-+g[d+16>>2];m=+g[d+24>>2];h=+g[d+20>>
2];k=+(o*m+n*h);l=+(m*n-o*h);d=a+28|0;g[d>>2]=k;g[d+4>>2]=l;i=f;return}function tg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=i;Bh(a,b);c[a>>2]=1968;e=b+20|0;f=c[e+4>>2]|0;h=a+68|0;c[h>>2]=c[e>>2];c[h+4>>2]=f;f=b+28|0;h=c[f+4>>2]|0;e=a+76|0;c[e>>2]=c[f>>2];c[e+4>>2]=h;g[a+84>>2]=0;g[a+88>>2]=0;g[a+92>>2]=0;g[a+96>>2]=+g[b+36>>2];g[a+100>>2]=+g[b+40>>2];i=d;return}function ug(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=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;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+104|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+108|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+128|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+136|0;c[o>>2]=r;c[o+4>>2]=s;t=+g[f+136>>2];g[b+144>>2]=t;u=+g[l+136>>2];g[b+148>>2]=u;v=+g[f+144>>2];g[b+152>>2]=v;w=+g[l+144>>2];g[b+156>>
2]=w;l=c[d+28>>2]|0;x=+g[l+(h*12|0)+8>>2];f=d+32|0;o=c[f>>2]|0;y=o+(h*12|0)|0;z=c[y>>2]|0;A=+g[y+4>>2];B=+g[o+(h*12|0)+8>>2];C=+g[l+(m*12|0)+8>>2];l=o+(m*12|0)|0;h=c[l>>2]|0;D=+g[l+4>>2];E=+g[o+(m*12|0)+8>>2];F=+T(+x);G=+S(+x);x=+T(+C);H=+S(+C);C=+g[b+68>>2]-(c[k>>2]=p,+g[k>>2]);I=+g[b+72>>2]-(c[k>>2]=q,+g[k>>2]);J=G*C-F*I;K=F*C+G*I;I=+J;G=+K;q=b+112|0;g[q>>2]=I;g[q+4>>2]=G;G=+g[b+76>>2]-(c[k>>2]=r,+g[k>>2]);I=+g[b+80>>2]-(c[k>>2]=s,+g[k>>2]);C=H*G-x*I;F=x*G+H*I;I=+C;H=+F;s=b+120|0;g[s>>2]=I;g[s+
4>>2]=H;H=t+u;I=H+K*(v*K)+F*(w*F);G=v*J;x=w*C;L=-(K*G)-F*x;M=H+J*G+C*x;x=I*M-L*L;if(x!=0)N=1/x;else N=x;x=-(L*N);g[b+160>>2]=M*N;g[b+164>>2]=x;g[b+168>>2]=x;g[b+172>>2]=I*N;N=v+w;if(N>0)O=1/N;else O=N;g[b+176>>2]=O;s=b+84|0;if(!(a[d+24>>0]|0)){g[s>>2]=0;g[b+88>>2]=0;g[b+92>>2]=0;P=A;Q=z;R=D;U=h;V=B;W=E;X=c[j>>2]|0;Y=c[f>>2]|0;Z=Y+(X*12|0)|0;_=+P;$=Z;aa=$;c[aa>>2]=Q;ba=$+4|0;ca=ba;g[ca>>2]=_;da=c[j>>2]|0;ea=c[f>>2]|0;fa=ea+(da*12|0)+8|0;g[fa>>2]=V;ga=c[n>>2]|0;ha=ea+(ga*12|0)|0;ia=+R;ja=ha;ka=ja;c[ka>>
2]=U;la=ja+4|0;ma=la;g[ma>>2]=ia;na=c[n>>2]|0;oa=c[f>>2]|0;pa=oa+(na*12|0)+8|0;g[pa>>2]=W;i=e;return}else{O=+g[d+8>>2];N=O*+g[s>>2];g[s>>2]=N;s=b+88|0;I=O*+g[s>>2];g[s>>2]=I;s=b+92|0;x=O*+g[s>>2];g[s>>2]=x;s=(g[k>>2]=(c[k>>2]=z,+g[k>>2])-t*N,c[k>>2]|0);P=A-t*I;Q=s;R=D+u*I;U=(g[k>>2]=(c[k>>2]=h,+g[k>>2])+u*N,c[k>>2]|0);V=B-v*(x+(I*J-N*K));W=E+w*(x+(I*C-N*F));X=c[j>>2]|0;Y=c[f>>2]|0;Z=Y+(X*12|0)|0;_=+P;$=Z;aa=$;c[aa>>2]=Q;ba=$+4|0;ca=ba;g[ca>>2]=_;da=c[j>>2]|0;ea=c[f>>2]|0;fa=ea+(da*12|0)+8|0;g[fa>>
2]=V;ga=c[n>>2]|0;ha=ea+(ga*12|0)|0;ia=+R;ja=ha;ka=ja;c[ka>>2]=U;la=ja+4|0;ma=la;g[ma>>2]=ia;na=c[n>>2]|0;oa=c[f>>2]|0;pa=oa+(na*12|0)+8|0;g[pa>>2]=W;i=e;return}}function vg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0;d=i;e=a+104|0;f=c[e>>2]|0;h=b+32|0;j=c[h>>2]|0;l=j+(f*12|0)|0;m=c[l>>2]|0;n=+g[l+4>>2];o=+g[j+(f*12|0)+8>>2];f=a+108|0;l=c[f>>2]|0;p=j+(l*12|0)|0;q=c[p>>2]|0;r=+g[p+4>>
2];s=+g[j+(l*12|0)+8>>2];t=+g[a+144>>2];u=+g[a+148>>2];v=+g[a+152>>2];w=+g[a+156>>2];x=+g[b>>2];b=a+92|0;y=+g[b>>2];z=x*+g[a+100>>2];A=y-(s-o)*+g[a+176>>2];B=-z;C=A<z?A:z;z=C<B?B:C;g[b>>2]=z;C=z-y;y=o-v*C;o=s+w*C;C=+g[a+124>>2];s=+g[a+120>>2];z=(c[k>>2]=q,+g[k>>2]);B=(c[k>>2]=m,+g[k>>2]);A=+g[a+116>>2];D=+g[a+112>>2];E=A*y+(z-C*o-B);F=r+s*o-n-D*y;G=+g[a+164>>2]*E+ +g[a+172>>2]*F;m=a+84|0;q=m;H=+g[q>>2];I=+g[q+4>>2];J=H-(+g[a+160>>2]*E+ +g[a+168>>2]*F);g[m>>2]=J;q=a+88|0;F=+g[q>>2]-G;g[q>>2]=F;G=x*
+g[a+96>>2];x=J*J+F*F;if(x>G*G){E=+Q(+x);if(E<1.1920928955078125E-7){K=J;L=F}else{x=1/E;E=J*x;g[m>>2]=E;M=F*x;g[q>>2]=M;K=E;L=M}M=G*K;g[m>>2]=M;K=G*L;g[q>>2]=K;N=M;O=K}else{N=J;O=F}F=N-H;H=O-I;I=+(B-t*F);B=+(z+u*F);z=+(n-t*H);q=(c[h>>2]|0)+((c[e>>2]|0)*12|0)|0;g[q>>2]=I;g[q+4>>2]=z;q=c[h>>2]|0;g[q+((c[e>>2]|0)*12|0)+8>>2]=y-v*(D*H-F*A);A=+(r+u*H);e=q+((c[f>>2]|0)*12|0)|0;g[e>>2]=B;g[e+4>>2]=A;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=o+w*(H*s-F*C);i=d;return}function wg(a,b){a=a|0;b=b|0;return 1}function xg(a,
b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+68>>2];h=+g[d+20>>2];i=+g[b+72>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function yg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+76>>2];h=+g[d+20>>2];i=+g[b+80>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function zg(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=+g[b+88>>2]*c;g[a>>2]=+g[b+84>>2]*c;g[a+4>>2]=d;return}function Ag(a,
b){a=a|0;b=+b;return+(+g[a+92>>2]*b)}function Bg(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Fm(2016,e);c[e>>2]=f;Fm(2048,e);c[e>>2]=j;Fm(2080,e);c[e>>2]=d[a+61>>0];Fm(2112,e);l=+g[a+72>>2];h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(2152,e);l=+g[a+80>>2];h[k>>3]=+g[a+76>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(2200,
e);h[k>>3]=+g[a+96>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(2248,e);h[k>>3]=+g[a+100>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(2280,e);c[e>>2]=c[a+56>>2];Fm(2312,e);i=b;return}function Cg(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Dg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;c[a+8>>2]=b;c[a+12>>2]=d;h=+g[e>>2]-+g[b+12>>2];j=e+4|0;k=+g[j>>2]-+g[b+16>>2];l=+g[b+24>>2];m=+g[b+20>>2];n=+(h*l+k*m);o=+(l*k-h*m);p=a+20|0;g[p>>2]=n;g[p+4>>2]=o;o=+g[e>>2]-+g[d+12>>
2];n=+g[j>>2]-+g[d+16>>2];m=+g[d+24>>2];h=+g[d+20>>2];k=+(o*m+n*h);l=+(m*n-o*h);j=a+28|0;g[j>>2]=k;g[j+4>>2]=l;g[a+36>>2]=+g[d+72>>2]-+g[b+72>>2];i=f;return}function Eg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=i;Bh(a,b);c[a>>2]=2408;e=b+20|0;f=c[e+4>>2]|0;h=a+80|0;c[h>>2]=c[e>>2];c[h+4>>2]=f;f=b+28|0;h=c[f+4>>2]|0;e=a+88|0;c[e>>2]=c[f>>2];c[e+4>>2]=h;g[a+96>>2]=+g[b+36>>2];g[a+68>>2]=+g[b+40>>2];g[a+72>>2]=+g[b+44>>2];g[a+104>>2]=0;g[a+108>>2]=0;g[a+112>>2]=0;i=d;return}function Fg(b,d){b=b|0;d=d|0;
var e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=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;e=i;i=i+48|0;f=e;h=c[b+48>>2]|0;j=c[h+8>>2]|0;l=b+116|0;c[l>>2]=j;m=c[b+52>>2]|0;n=c[m+8>>2]|0;o=b+120|0;c[o>>2]=n;p=h+44|0;q=c[p>>2]|0;r=c[p+4>>2]|0;p=b+140|0;c[p>>2]=q;c[p+4>>2]=r;p=m+44|0;s=c[p>>2]|0;t=c[p+4>>2]|0;p=b+148|0;
c[p>>2]=s;c[p+4>>2]=t;u=+g[h+136>>2];g[b+156>>2]=u;v=+g[m+136>>2];g[b+160>>2]=v;w=+g[h+144>>2];g[b+164>>2]=w;x=+g[m+144>>2];g[b+168>>2]=x;m=c[d+28>>2]|0;y=+g[m+(j*12|0)+8>>2];h=d+32|0;p=c[h>>2]|0;z=p+(j*12|0)|0;A=c[z>>2]|0;B=+g[z+4>>2];C=+g[p+(j*12|0)+8>>2];D=+g[m+(n*12|0)+8>>2];m=p+(n*12|0)|0;j=c[m>>2]|0;E=+g[m+4>>2];F=+g[p+(n*12|0)+8>>2];G=+T(+y);H=+S(+y);I=+T(+D);J=+S(+D);n=b+124|0;K=+g[b+80>>2]-(c[k>>2]=q,+g[k>>2]);L=+g[b+84>>2]-(c[k>>2]=r,+g[k>>2]);M=H*K-G*L;N=G*K+H*L;L=+M;H=+N;r=n;g[r>>2]=L;
g[r+4>>2]=H;r=b+132|0;H=+g[b+88>>2]-(c[k>>2]=s,+g[k>>2]);L=+g[b+92>>2]-(c[k>>2]=t,+g[k>>2]);K=J*H-I*L;G=I*H+J*L;L=+K;J=+G;t=r;g[t>>2]=L;g[t+4>>2]=J;J=u+v;t=b+128|0;s=b+136|0;g[f>>2]=J+w*(N*N)+x*(G*G);L=-(w*(N*M))-x*(G*K);g[f+12>>2]=L;H=-(w*N)-x*G;g[f+24>>2]=H;g[f+4>>2]=L;g[f+16>>2]=J+w*(M*M)+x*(K*K);J=w*M+x*K;g[f+28>>2]=J;g[f+8>>2]=H;g[f+20>>2]=J;J=w+x;g[f+32>>2]=J;q=b+68|0;p=b+172|0;if(+g[q>>2]>0){ym(f,p);if(J>0)O=1/J;else O=0;H=D-y-+g[b+96>>2];y=+g[q>>2]*6.2831854820251465;D=y*(O*y);K=+g[d>>2];
M=K*(y*(O*2*+g[b+72>>2])+K*D);q=b+100|0;g[q>>2]=M;if(M!=0)P=1/M;else P=0;g[q>>2]=P;g[b+76>>2]=H*K*D*P;D=J+P;if(D!=0)Q=1/D;else Q=0;g[b+204>>2]=Q}else{zm(f,p);g[b+100>>2]=0;g[b+76>>2]=0}p=b+104|0;if(!(a[d+24>>0]|0)){g[p>>2]=0;g[b+108>>2]=0;g[b+112>>2]=0;R=B;U=A;V=E;W=j;X=C;Y=F;Z=c[l>>2]|0;_=c[h>>2]|0;$=_+(Z*12|0)|0;aa=+R;ba=$;ca=ba;c[ca>>2]=U;da=ba+4|0;ea=da;g[ea>>2]=aa;fa=c[l>>2]|0;ga=c[h>>2]|0;ha=ga+(fa*12|0)+8|0;g[ha>>2]=X;ia=c[o>>2]|0;ja=ga+(ia*12|0)|0;ka=+V;la=ja;ma=la;c[ma>>2]=W;na=la+4|0;oa=
na;g[oa>>2]=ka;pa=c[o>>2]|0;qa=c[h>>2]|0;ra=qa+(pa*12|0)+8|0;g[ra>>2]=Y;i=e;return}else{Q=+g[d+8>>2];D=Q*+g[p>>2];g[p>>2]=D;p=b+108|0;P=Q*+g[p>>2];g[p>>2]=P;p=b+112|0;J=Q*+g[p>>2];g[p>>2]=J;p=(g[k>>2]=(c[k>>2]=A,+g[k>>2])-u*D,c[k>>2]|0);R=B-u*P;U=p;V=E+v*P;W=(g[k>>2]=(c[k>>2]=j,+g[k>>2])+v*D,c[k>>2]|0);X=C-w*(J+(P*+g[n>>2]-D*+g[t>>2]));Y=F+x*(J+(P*+g[r>>2]-D*+g[s>>2]));Z=c[l>>2]|0;_=c[h>>2]|0;$=_+(Z*12|0)|0;aa=+R;ba=$;ca=ba;c[ca>>2]=U;da=ba+4|0;ea=da;g[ea>>2]=aa;fa=c[l>>2]|0;ga=c[h>>2]|0;ha=ga+(fa*
12|0)+8|0;g[ha>>2]=X;ia=c[o>>2]|0;ja=ga+(ia*12|0)|0;ka=+V;la=ja;ma=la;c[ma>>2]=W;na=la+4|0;oa=na;g[oa>>2]=ka;pa=c[o>>2]|0;qa=c[h>>2]|0;ra=qa+(pa*12|0)+8|0;g[ra>>2]=Y;i=e;return}}function Gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=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,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;d=i;e=a+116|0;f=c[e>>2]|0;h=b+32|0;b=c[h>>2]|0;j=
b+(f*12|0)|0;l=j;m=c[l>>2]|0;n=+g[l+4>>2];o=+g[b+(f*12|0)+8>>2];f=a+120|0;l=c[f>>2]|0;p=b+(l*12|0)|0;q=c[p>>2]|0;r=+g[p+4>>2];s=+g[b+(l*12|0)+8>>2];t=+g[a+156>>2];u=+g[a+160>>2];v=+g[a+164>>2];w=+g[a+168>>2];if(+g[a+68>>2]>0){l=a+112|0;x=+g[l>>2];y=+g[a+204>>2]*(s-o+ +g[a+76>>2]+ +g[a+100>>2]*x);z=-y;g[l>>2]=x-y;y=o-v*z;x=s+w*z;z=+g[a+136>>2];A=+g[a+132>>2];B=(c[k>>2]=q,+g[k>>2]);C=(c[k>>2]=m,+g[k>>2]);D=+g[a+128>>2];E=+g[a+124>>2];F=D*y+(B-z*x-C);G=r+A*x-n-E*y;H=+g[a+172>>2]*F+ +g[a+184>>2]*G;I=
+g[a+176>>2]*F+ +g[a+188>>2]*G;G=-H;F=-I;l=a+104|0;g[l>>2]=+g[l>>2]-H;l=a+108|0;g[l>>2]=+g[l>>2]-I;J=C-t*G;K=B+u*G;L=F;M=y-v*(E*F-D*G);N=x+w*(A*F-z*G);O=u*L;P=t*L;Q=r+O;R=+K;S=n-P;T=+J;U=+S;V=j;W=V;g[W>>2]=T;X=V+4|0;Y=X;g[Y>>2]=U;Z=c[e>>2]|0;_=c[h>>2]|0;$=_+(Z*12|0)+8|0;g[$>>2]=M;aa=c[f>>2]|0;ba=_+(aa*12|0)|0;ca=+Q;da=ba;ea=da;g[ea>>2]=R;fa=da+4|0;ga=fa;g[ga>>2]=ca;ha=c[f>>2]|0;ia=c[h>>2]|0;ja=ia+(ha*12|0)+8|0;g[ja>>2]=N;i=d;return}else{G=+g[a+136>>2];z=+g[a+132>>2];F=(c[k>>2]=q,+g[k>>2]);A=(c[k>>
2]=m,+g[k>>2]);x=+g[a+128>>2];D=+g[a+124>>2];E=F-s*G-A+o*x;y=r+s*z-n-o*D;B=s-o;C=E*+g[a+172>>2]+y*+g[a+184>>2]+B*+g[a+196>>2];I=E*+g[a+176>>2]+y*+g[a+188>>2]+B*+g[a+200>>2];H=E*+g[a+180>>2]+y*+g[a+192>>2]+B*+g[a+204>>2];B=-C;y=-I;m=a+104|0;g[m>>2]=+g[m>>2]-C;m=a+108|0;g[m>>2]=+g[m>>2]-I;m=a+112|0;g[m>>2]=+g[m>>2]-H;J=A-t*B;K=F+u*B;L=y;M=o-v*(D*y-x*B-H);N=s+w*(z*y-G*B-H);O=u*L;P=t*L;Q=r+O;R=+K;S=n-P;T=+J;U=+S;V=j;W=V;g[W>>2]=T;X=V+4|0;Y=X;g[Y>>2]=U;Z=c[e>>2]|0;_=c[h>>2]|0;$=_+(Z*12|0)+8|0;g[$>>2]=
M;aa=c[f>>2]|0;ba=_+(aa*12|0)|0;ca=+Q;da=ba;ea=da;g[ea>>2]=R;fa=da+4|0;ga=fa;g[ga>>2]=ca;ha=c[f>>2]|0;ia=c[h>>2]|0;ja=ia+(ha*12|0)+8|0;g[ja>>2]=N;i=d;return}}function Hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,U=0,V=0,W=0;d=i;i=i+80|0;e=d+40|0;f=d+32|0;h=d+24|0;j=d+12|0;l=d;m=a+116|0;n=c[m>>2]|0;o=b+28|0;b=c[o>>2]|0;p=b+(n*12|0)|0;q=c[p>>2]|0;r=+g[p+4>>2];s=+g[b+(n*12|0)+
8>>2];n=a+120|0;p=c[n>>2]|0;t=b+(p*12|0)|0;u=c[t>>2]|0;v=+g[t+4>>2];w=+g[b+(p*12|0)+8>>2];x=+T(+s);y=+S(+s);z=+T(+w);A=+S(+w);B=+g[a+156>>2];C=+g[a+160>>2];D=+g[a+164>>2];E=+g[a+168>>2];F=+g[a+80>>2]-+g[a+140>>2];G=+g[a+84>>2]-+g[a+144>>2];H=y*F-x*G;I=x*F+y*G;G=+g[a+88>>2]-+g[a+148>>2];y=+g[a+92>>2]-+g[a+152>>2];F=A*G-z*y;x=z*G+A*y;y=B+C;g[e>>2]=y+D*(I*I)+E*(x*x);A=-(D*(I*H))-E*(x*F);g[e+12>>2]=A;G=-(D*I)-E*x;g[e+24>>2]=G;g[e+4>>2]=A;g[e+16>>2]=y+D*(H*H)+E*(F*F);y=D*H+E*F;g[e+28>>2]=y;g[e+8>>2]=G;
g[e+20>>2]=y;g[e+32>>2]=D+E;y=(c[k>>2]=u,+g[k>>2]);G=(c[k>>2]=q,+g[k>>2]);A=y+F-G-H;z=v+x-r-I;if(+g[a+68>>2]>0){g[f>>2]=A;g[f+4>>2]=z;J=+Q(+(z*z+A*A));xm(h,e,f);K=-+g[h>>2];L=-+g[h+4>>2];M=L;N=F*L-x*K;O=K;P=H*L-I*K;R=0;U=J}else{J=w-s-+g[a+96>>2];K=+Q(+(A*A+z*z));if(J>0)V=J;else V=-J;g[j>>2]=A;g[j+4>>2]=z;g[j+8>>2]=J;wm(l,e,j);J=-+g[l>>2];z=-+g[l+4>>2];A=+g[l+8>>2];M=z;N=F*z-x*J-A;O=J;P=H*z-I*J-A;R=V;U=K}K=+(y+C*O);y=+(G-B*O);O=+(r-B*M);l=(c[o>>2]|0)+((c[m>>2]|0)*12|0)|0;g[l>>2]=y;g[l+4>>2]=O;l=c[o>>
2]|0;g[l+((c[m>>2]|0)*12|0)+8>>2]=s-D*P;P=+(v+C*M);m=l+((c[n>>2]|0)*12|0)|0;g[m>>2]=K;g[m+4>>2]=P;g[(c[o>>2]|0)+((c[n>>2]|0)*12|0)+8>>2]=w+E*N;if(!(U<=.004999999888241291)){W=0;i=d;return W|0}W=R<=.03490658849477768;i=d;return W|0}function Ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+80>>2];h=+g[d+20>>2];i=+g[b+84>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|
0;e=+g[d+24>>2];f=+g[b+88>>2];h=+g[d+20>>2];i=+g[b+92>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Kg(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=+g[b+108>>2]*c;g[a>>2]=+g[b+104>>2]*c;g[a+4>>2]=d;return}function Lg(a,b){a=a|0;b=+b;return+(+g[a+112>>2]*b)}function Mg(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Fm(2456,e);c[e>>2]=f;Fm(2480,e);c[e>>2]=j;Fm(2512,e);c[e>>2]=d[a+61>>0];Fm(2544,e);l=+g[a+84>>2];h[k>>
3]=+g[a+80>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(2584,e);l=+g[a+92>>2];h[k>>3]=+g[a+88>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(2632,e);h[k>>3]=+g[a+96>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(2680,e);h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(2712,e);h[k>>3]=+g[a+72>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(2744,e);c[e>>2]=c[a+56>>2];Fm(2776,e);i=b;return}function Ng(a){a=
a|0;var b=0;b=i;Vm(a);i=b;return}function Og(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;d=i;Bh(a,b);c[a>>2]=2864;e=a+92|0;f=a+100|0;h=a+108|0;j=a+116|0;l=a+124|0;m=a+132|0;n=c[b+20>>2]|0;c[a+68>>2]=n;o=b+24|0;p=c[o>>2]|0;c[a+72>>2]=p;q=c[n+4>>2]|0;c[a+76>>2]=q;r=c[p+4>>2]|0;c[a+80>>2]=r;s=c[n+48>>2]|0;c[a+84>>2]=s;t=c[n+52>>2]|0;c[a+48>>2]=t;u=+g[t+20>>2];v=+g[t+24>>2];
w=+g[s+20>>2];x=+g[s+24>>2];if((q|0)==1){y=+g[t+72>>2];z=+g[s+72>>2];q=n+68|0;A=c[q+4>>2]|0;B=h;c[B>>2]=c[q>>2];c[B+4>>2]=A;A=n+76|0;B=c[A+4>>2]|0;q=e;c[q>>2]=c[A>>2];c[q+4>>2]=B;C=+g[n+116>>2];g[a+140>>2]=C;g[l>>2]=0;g[a+128>>2]=0;D=y-z-C}else{C=+g[s+16>>2];z=+g[s+12>>2];y=+g[t+16>>2];E=+g[t+12>>2];t=n+68|0;s=c[t>>2]|0;B=c[t+4>>2]|0;t=h;c[t>>2]=s;c[t+4>>2]=B;t=n+76|0;h=c[t>>2]|0;q=c[t+4>>2]|0;t=e;c[t>>2]=h;c[t+4>>2]=q;g[a+140>>2]=+g[n+100>>2];t=n+84|0;n=c[t>>2]|0;e=c[t+4>>2]|0;t=l;c[t>>2]=n;c[t+
4>>2]=e;F=(c[k>>2]=s,+g[k>>2]);G=(c[k>>2]=B,+g[k>>2]);H=(c[k>>2]=h,+g[k>>2]);I=(c[k>>2]=q,+g[k>>2]);J=E-z+(v*H-u*I);z=y-C+(u*H+v*I);I=(c[k>>2]=n,+g[k>>2])*(x*J+w*z-F);D=I+(c[k>>2]=e,+g[k>>2])*(x*z-w*J-G)}e=c[p+48>>2]|0;c[a+88>>2]=e;n=c[p+52>>2]|0;c[a+52>>2]=n;G=+g[n+20>>2];J=+g[n+24>>2];w=+g[e+20>>2];z=+g[e+24>>2];p=c[o>>2]|0;if((r|0)==1){x=+g[n+72>>2];I=+g[e+72>>2];r=p+68|0;o=c[r+4>>2]|0;q=j;c[q>>2]=c[r>>2];c[q+4>>2]=o;o=p+76|0;q=c[o+4>>2]|0;r=f;c[r>>2]=c[o>>2];c[r+4>>2]=q;F=+g[p+116>>2];g[a+144>>
2]=F;g[m>>2]=0;g[a+136>>2]=0;K=x-I-F;L=b+28|0;M=+g[L>>2];N=a+152|0;g[N>>2]=M;O=K*M;P=D+O;Q=a+148|0;g[Q>>2]=P;R=a+156|0;g[R>>2]=0;i=d;return}else{F=+g[e+16>>2];I=+g[e+12>>2];x=+g[n+16>>2];v=+g[n+12>>2];n=p+68|0;e=c[n>>2]|0;q=c[n+4>>2]|0;n=j;c[n>>2]=e;c[n+4>>2]=q;n=p+76|0;j=c[n>>2]|0;r=c[n+4>>2]|0;n=f;c[n>>2]=j;c[n+4>>2]=r;g[a+144>>2]=+g[p+100>>2];n=p+84|0;p=c[n>>2]|0;f=c[n+4>>2]|0;n=m;c[n>>2]=p;c[n+4>>2]=f;H=(c[k>>2]=e,+g[k>>2]);u=(c[k>>2]=q,+g[k>>2]);C=(c[k>>2]=j,+g[k>>2]);y=(c[k>>2]=r,+g[k>>2]);
E=v-I+(J*C-G*y);I=x-F+(G*C+J*y);y=(c[k>>2]=p,+g[k>>2])*(z*E+w*I-H);K=y+(c[k>>2]=f,+g[k>>2])*(z*I-w*E-u);L=b+28|0;M=+g[L>>2];N=a+152|0;g[N>>2]=M;O=K*M;P=D+O;Q=a+148|0;g[Q>>2]=P;R=a+156|0;g[R>>2]=0;i=d;return}}function Pg(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=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;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+160|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+164|0;c[n>>2]=m;o=c[b+84>>2]|0;p=c[o+8>>2]|0;q=b+168|0;c[q>>2]=p;r=c[b+88>>2]|0;s=c[r+8>>2]|0;t=b+172|0;c[t>>2]=s;u=b+176|0;v=f+44|0;w=
c[v+4>>2]|0;x=u;c[x>>2]=c[v>>2];c[x+4>>2]=w;w=b+184|0;x=l+44|0;v=c[x+4>>2]|0;y=w;c[y>>2]=c[x>>2];c[y+4>>2]=v;v=b+192|0;y=o+44|0;x=c[y+4>>2]|0;z=v;c[z>>2]=c[y>>2];c[z+4>>2]=x;x=r+44|0;z=c[x>>2]|0;y=c[x+4>>2]|0;x=b+200|0;c[x>>2]=z;c[x+4>>2]=y;A=+g[f+136>>2];g[b+208>>2]=A;B=+g[l+136>>2];g[b+212>>2]=B;C=+g[o+136>>2];g[b+216>>2]=C;D=+g[r+136>>2];g[b+220>>2]=D;E=+g[f+144>>2];g[b+224>>2]=E;F=+g[l+144>>2];g[b+228>>2]=F;G=+g[o+144>>2];g[b+232>>2]=G;H=+g[r+144>>2];g[b+236>>2]=H;r=c[d+28>>2]|0;I=+g[r+(h*12|
0)+8>>2];o=d+32|0;l=c[o>>2]|0;f=l+(h*12|0)|0;x=c[f>>2]|0;J=+g[f+4>>2];K=+g[l+(h*12|0)+8>>2];L=+g[r+(m*12|0)+8>>2];h=l+(m*12|0)|0;f=c[h>>2]|0;M=+g[h+4>>2];N=+g[l+(m*12|0)+8>>2];O=+g[r+(p*12|0)+8>>2];m=l+(p*12|0)|0;h=c[m>>2]|0;P=+g[m+4>>2];Q=+g[l+(p*12|0)+8>>2];R=+g[r+(s*12|0)+8>>2];r=l+(s*12|0)|0;p=c[r>>2]|0;U=+g[r+4>>2];V=+g[l+(s*12|0)+8>>2];W=+T(+I);X=+S(+I);I=+T(+L);Y=+S(+L);L=+T(+O);Z=+S(+O);O=+T(+R);_=+S(+R);s=b+272|0;g[s>>2]=0;R=(c[k>>2]=z,+g[k>>2]);$=(c[k>>2]=y,+g[k>>2]);if((c[b+76>>2]|0)==
1){g[b+240>>2]=0;g[b+244>>2]=0;g[b+256>>2]=1;g[b+264>>2]=1;aa=E+G;ba=0;ca=0;da=1;ea=1}else{fa=+g[b+124>>2];ga=+g[b+128>>2];ha=Z*fa-L*ga;ia=L*fa+Z*ga;ga=+ha;fa=+g[b+108>>2]-+g[v>>2];ja=+g[b+112>>2]-+g[b+196>>2];ka=+g[b+92>>2]-+g[u>>2];la=+g[b+96>>2]-+g[b+180>>2];ma=+ia;u=b+240|0;g[u>>2]=ga;g[u+4>>2]=ma;ma=ia*(Z*fa-L*ja)-ha*(L*fa+Z*ja);g[b+264>>2]=ma;ja=ia*(X*ka-W*la)-ha*(W*ka+X*la);g[b+256>>2]=ja;aa=C+A+ma*(G*ma)+ja*(E*ja);ba=ha;ca=ia;da=ja;ea=ma}ma=aa+0;g[s>>2]=ma;if((c[b+80>>2]|0)==1){g[b+248>>2]=
0;g[b+252>>2]=0;aa=+g[b+152>>2];g[b+260>>2]=aa;g[b+268>>2]=aa;na=aa*aa*(F+H);oa=0;pa=0;qa=aa;ra=aa}else{aa=+g[b+132>>2];ja=+g[b+136>>2];ia=_*aa-O*ja;ha=O*aa+_*ja;ja=+g[b+116>>2]-R;R=+g[b+120>>2]-$;$=+g[b+100>>2]-+g[w>>2];aa=+g[b+104>>2]-+g[b+188>>2];la=+g[b+152>>2];X=ia*la;ka=ha*la;W=+X;Z=+ka;w=b+248|0;g[w>>2]=W;g[w+4>>2]=Z;Z=(ha*(_*ja-O*R)-ia*(O*ja+_*R))*la;g[b+268>>2]=Z;R=la*(ha*(Y*$-I*aa)-ia*(I*$+Y*aa));g[b+260>>2]=R;na=la*la*(D+B)+Z*(H*Z)+R*(R*F);oa=X;pa=ka;qa=R;ra=Z}Z=ma+na;g[s>>2]=Z;if(Z>0)sa=
1/Z;else sa=0;g[s>>2]=sa;s=b+156|0;if(!(a[d+24>>0]|0)){g[s>>2]=0;ta=J;ua=x;va=M;wa=f;xa=P;ya=h;za=U;Aa=p;Ba=K;Ca=N;Da=Q;Ea=V;Fa=c[j>>2]|0;Ga=c[o>>2]|0;Ha=Ga+(Fa*12|0)|0;Ia=+ta;Ja=Ha;Ka=Ja;c[Ka>>2]=ua;La=Ja+4|0;Ma=La;g[Ma>>2]=Ia;Na=c[j>>2]|0;Oa=c[o>>2]|0;Pa=Oa+(Na*12|0)+8|0;g[Pa>>2]=Ba;Qa=c[n>>2]|0;Ra=Oa+(Qa*12|0)|0;Sa=+va;Ta=Ra;Ua=Ta;c[Ua>>2]=wa;Va=Ta+4|0;Wa=Va;g[Wa>>2]=Sa;Xa=c[n>>2]|0;Ya=c[o>>2]|0;Za=Ya+(Xa*12|0)+8|0;g[Za>>2]=Ca;_a=c[q>>2]|0;$a=Ya+(_a*12|0)|0;ab=+xa;bb=$a;cb=bb;c[cb>>2]=ya;db=bb+
4|0;eb=db;g[eb>>2]=ab;fb=c[q>>2]|0;gb=c[o>>2]|0;hb=gb+(fb*12|0)+8|0;g[hb>>2]=Da;ib=c[t>>2]|0;jb=gb+(ib*12|0)|0;kb=+za;lb=jb;mb=lb;c[mb>>2]=Aa;nb=lb+4|0;ob=nb;g[ob>>2]=kb;pb=c[t>>2]|0;qb=c[o>>2]|0;rb=qb+(pb*12|0)+8|0;g[rb>>2]=Ea;i=e;return}else{sa=+g[s>>2];Z=A*sa;s=(g[k>>2]=(c[k>>2]=x,+g[k>>2])+ba*Z,c[k>>2]|0);A=sa*B;x=(g[k>>2]=(c[k>>2]=f,+g[k>>2])+oa*A,c[k>>2]|0);B=sa*C;f=(g[k>>2]=(c[k>>2]=h,+g[k>>2])-ba*B,c[k>>2]|0);ba=sa*D;ta=J+Z*ca;ua=s;va=M+A*pa;wa=x;xa=P-ca*B;ya=f;za=U-pa*ba;Aa=(g[k>>2]=(c[k>>
2]=p,+g[k>>2])-oa*ba,c[k>>2]|0);Ba=K+sa*E*da;Ca=N+sa*F*qa;Da=Q-sa*G*ea;Ea=V-sa*H*ra;Fa=c[j>>2]|0;Ga=c[o>>2]|0;Ha=Ga+(Fa*12|0)|0;Ia=+ta;Ja=Ha;Ka=Ja;c[Ka>>2]=ua;La=Ja+4|0;Ma=La;g[Ma>>2]=Ia;Na=c[j>>2]|0;Oa=c[o>>2]|0;Pa=Oa+(Na*12|0)+8|0;g[Pa>>2]=Ba;Qa=c[n>>2]|0;Ra=Oa+(Qa*12|0)|0;Sa=+va;Ta=Ra;Ua=Ta;c[Ua>>2]=wa;Va=Ta+4|0;Wa=Va;g[Wa>>2]=Sa;Xa=c[n>>2]|0;Ya=c[o>>2]|0;Za=Ya+(Xa*12|0)+8|0;g[Za>>2]=Ca;_a=c[q>>2]|0;$a=Ya+(_a*12|0)|0;ab=+xa;bb=$a;cb=bb;c[cb>>2]=ya;db=bb+4|0;eb=db;g[eb>>2]=ab;fb=c[q>>2]|0;gb=c[o>>
2]|0;hb=gb+(fb*12|0)+8|0;g[hb>>2]=Da;ib=c[t>>2]|0;jb=gb+(ib*12|0)|0;kb=+za;lb=jb;mb=lb;c[mb>>2]=Aa;nb=lb+4|0;ob=nb;g[ob>>2]=kb;pb=c[t>>2]|0;qb=c[o>>2]|0;rb=qb+(pb*12|0)+8|0;g[rb>>2]=Ea;i=e;return}}function Qg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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,J=0,K=0,L=0,M=0;d=i;e=a+160|0;f=c[e>>2]|0;h=b+32|0;b=c[h>>2]|0;j=b+(f*12|0)|0;k=+g[j+4>>2];l=+g[b+(f*12|0)+8>>2];f=a+164|0;m=c[f>>2]|0;n=b+(m*12|0)|0;o=
+g[n+4>>2];p=+g[b+(m*12|0)+8>>2];m=a+168|0;q=c[m>>2]|0;r=b+(q*12|0)|0;s=+g[r+4>>2];t=+g[b+(q*12|0)+8>>2];q=a+172|0;u=c[q>>2]|0;v=b+(u*12|0)|0;w=+g[v+4>>2];x=+g[b+(u*12|0)+8>>2];y=+g[j>>2];z=+g[r>>2];A=+g[a+240>>2];B=+g[a+244>>2];C=+g[n>>2];D=+g[v>>2];E=+g[a+248>>2];F=+g[a+252>>2];G=+g[a+256>>2];H=+g[a+264>>2];I=+g[a+260>>2];J=+g[a+268>>2];K=+g[a+272>>2]*((y-z)*A+(k-s)*B+((C-D)*E+(o-w)*F)+(l*G-t*H+(p*I-x*J)));L=-K;v=a+156|0;g[v>>2]=+g[v>>2]-K;K=+g[a+208>>2]*L;M=+(y+A*K);y=l+ +g[a+224>>2]*L*G;G=+g[a+
212>>2]*L;l=+(C+E*G);C=p+ +g[a+228>>2]*L*I;I=+g[a+216>>2]*L;p=+(z-A*I);A=t-+g[a+232>>2]*L*H;H=+g[a+220>>2]*L;t=+(D-E*H);E=x-+g[a+236>>2]*L*J;J=+(k+B*K);a=(c[h>>2]|0)+((c[e>>2]|0)*12|0)|0;g[a>>2]=M;g[a+4>>2]=J;a=c[h>>2]|0;g[a+((c[e>>2]|0)*12|0)+8>>2]=y;y=+(o+G*F);e=a+((c[f>>2]|0)*12|0)|0;g[e>>2]=l;g[e+4>>2]=y;e=c[h>>2]|0;g[e+((c[f>>2]|0)*12|0)+8>>2]=C;C=+(s-B*I);f=e+((c[m>>2]|0)*12|0)|0;g[f>>2]=p;g[f+4>>2]=C;f=c[h>>2]|0;g[f+((c[m>>2]|0)*12|0)+8>>2]=A;A=+(w-F*H);m=f+((c[q>>2]|0)*12|0)|0;g[m>>2]=t;g[m+
4>>2]=A;g[(c[h>>2]|0)+((c[q>>2]|0)*12|0)+8>>2]=E;i=d;return}function Rg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=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;d=i;e=a+160|0;f=c[e>>2]|0;h=b+28|0;b=c[h>>2]|0;j=b+(f*12|0)|0;l=j;m=c[l>>2]|0;n=+g[l+4>>2];o=+g[b+(f*12|0)+8>>2];f=a+164|0;l=c[f>>2]|0;p=b+(l*12|0)|0;q=c[p>>2]|
0;r=+g[p+4>>2];s=+g[b+(l*12|0)+8>>2];l=a+168|0;p=c[l>>2]|0;t=b+(p*12|0)|0;u=c[t>>2]|0;v=+g[t+4>>2];w=+g[b+(p*12|0)+8>>2];p=a+172|0;t=c[p>>2]|0;x=b+(t*12|0)|0;y=c[x>>2]|0;z=+g[x+4>>2];A=+g[b+(t*12|0)+8>>2];B=+T(+o);C=+S(+o);D=+T(+s);E=+S(+s);F=+T(+w);G=+S(+w);H=+T(+A);I=+S(+A);if((c[a+76>>2]|0)==1){J=+g[a+224>>2];K=+g[a+232>>2];L=0;M=0;N=J;O=K;P=1;Q=1;R=o-w-+g[a+140>>2];U=J+K}else{K=+g[a+124>>2];J=+g[a+128>>2];V=G*K-F*J;W=F*K+G*J;X=+g[a+108>>2]-+g[a+192>>2];Y=+g[a+112>>2]-+g[a+196>>2];Z=+g[a+92>>2]-
+g[a+176>>2];_=+g[a+96>>2]-+g[a+180>>2];$=C*Z-B*_;aa=B*Z+C*_;_=W*(G*X-F*Y)-V*(F*X+G*Y);C=W*$-V*aa;Z=+g[a+232>>2];B=+g[a+224>>2];ba=(c[k>>2]=m,+g[k>>2]);ca=ba-(c[k>>2]=u,+g[k>>2])+$;$=n-v+aa;L=V;M=W;N=B;O=Z;P=C;Q=_;R=K*(G*ca+F*$-X)+J*(G*$-F*ca-Y);U=+g[a+216>>2]+ +g[a+208>>2]+_*(_*Z)+C*(B*C)}if((c[a+80>>2]|0)==1){C=+g[a+152>>2];B=+g[a+228>>2];Z=+g[a+236>>2];da=C*C*(B+Z);ea=C;fa=0;ga=0;ha=B;ia=Z;ja=C;ka=C;la=s-A-+g[a+144>>2]}else{C=+g[a+132>>2];Z=+g[a+136>>2];B=I*C-H*Z;_=H*C+I*Z;Y=+g[a+116>>2]-+g[a+
200>>2];ca=+g[a+120>>2]-+g[a+204>>2];F=+g[a+100>>2]-+g[a+184>>2];$=+g[a+104>>2]-+g[a+188>>2];G=E*F-D*$;J=D*F+E*$;$=+g[a+152>>2];E=$*(_*(I*Y-H*ca)-B*(H*Y+I*ca));F=$*(_*G-B*J);D=+g[a+236>>2];X=+g[a+228>>2];K=(c[k>>2]=q,+g[k>>2]);W=K-(c[k>>2]=y,+g[k>>2])+G;G=r-z+J;da=$*$*(+g[a+220>>2]+ +g[a+212>>2])+E*(E*D)+F*(X*F);ea=$;fa=B*$;ga=_*$;ha=X;ia=D;ja=F;ka=E;la=C*(I*W+H*G-Y)+Z*(I*G-H*W-ca)}ca=U+0+da;if(ca>0)ma=-(R+la*ea-+g[a+148>>2])/ca;else ma=0;ca=ma*+g[a+208>>2];ea=+((c[k>>2]=m,+g[k>>2])+L*ca);la=ma*+g[a+
212>>2];R=+((c[k>>2]=q,+g[k>>2])+fa*la);da=ma*+g[a+216>>2];U=+((c[k>>2]=u,+g[k>>2])-L*da);L=ma*+g[a+220>>2];W=+((c[k>>2]=y,+g[k>>2])-fa*L);fa=+(n+M*ca);y=j;g[y>>2]=ea;g[y+4>>2]=fa;y=c[h>>2]|0;g[y+((c[e>>2]|0)*12|0)+8>>2]=o+P*(ma*N);N=+(r+ga*la);e=y+((c[f>>2]|0)*12|0)|0;g[e>>2]=R;g[e+4>>2]=N;e=c[h>>2]|0;g[e+((c[f>>2]|0)*12|0)+8>>2]=s+ja*(ma*ha);ha=+(v-M*da);f=e+((c[l>>2]|0)*12|0)|0;g[f>>2]=U;g[f+4>>2]=ha;f=c[h>>2]|0;g[f+((c[l>>2]|0)*12|0)+8>>2]=w-Q*(ma*O);O=+(z-ga*L);l=f+((c[p>>2]|0)*12|0)|0;g[l>>
2]=W;g[l+4>>2]=O;g[(c[h>>2]|0)+((c[p>>2]|0)*12|0)+8>>2]=A-ka*(ma*ia);i=d;return 1}function Sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+92>>2];h=+g[d+20>>2];i=+g[b+96>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Tg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+100>>2];h=+g[d+20>>2];i=+g[b+104>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Ug(a,b,c){a=
a|0;b=b|0;c=+c;var d=0,e=0;d=+g[b+156>>2];e=d*+g[b+244>>2]*c;g[a>>2]=d*+g[b+240>>2]*c;g[a+4>>2]=e;return}function Vg(a,b){a=a|0;b=+b;return+(+g[a+156>>2]*+g[a+256>>2]*b)}function Wg(a){a=a|0;return+ +g[a+152>>2]}function Xg(a){a=a|0;var b=0,e=0,f=0,j=0,l=0,m=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;l=c[(c[a+68>>2]|0)+56>>2]|0;m=c[(c[a+72>>2]|0)+56>>2]|0;Fm(2912,e);c[e>>2]=f;Fm(2936,e);c[e>>2]=j;Fm(2968,e);c[e>>2]=d[a+61>>0];Fm(3E3,e);c[e>>2]=l;Fm(3040,e);c[e>>2]=m;
Fm(3072,e);h[k>>3]=+g[a+152>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(3104,e);c[e>>2]=c[a+56>>2];Fm(3128,e);i=b;return}function Yg(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Zg(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=i;c[a+8>>2]=b;c[a+12>>2]=d;j=+g[e>>2]-+g[b+12>>2];k=e+4|0;l=+g[k>>2]-+g[b+16>>2];m=b+24|0;n=+g[m>>2];o=b+20|0;p=+g[o>>2];q=+(j*n+l*p);r=+(n*l-j*p);s=a+20|0;g[s>>2]=q;g[s+4>>2]=r;r=+g[e>>2]-+g[d+12>>2];q=+g[k>>2]-+g[d+16>>2];p=+g[d+
24>>2];j=+g[d+20>>2];l=+(r*p+q*j);n=+(p*q-r*j);k=a+28|0;g[k>>2]=l;g[k+4>>2]=n;n=+g[m>>2];l=+g[f>>2];j=+g[o>>2];r=+g[f+4>>2];q=+(n*l+j*r);p=+(n*r-l*j);f=a+36|0;g[f>>2]=q;g[f+4>>2]=p;g[a+44>>2]=+g[d+72>>2]-+g[b+72>>2];i=h;return}function _g(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;Bh(b,d);c[b>>2]=3216;f=b+84|0;h=d+20|0;j=c[h+4>>2]|0;l=b+68|0;c[l>>2]=c[h>>2];c[l+4>>2]=j;j=d+28|0;l=c[j+4>>2]|0;h=b+76|0;c[h>>2]=c[j>>2];c[h+4>>2]=l;l=d+36|0;h=c[l>>2]|0;j=c[l+4>>2]|0;l=f;c[l>>
2]=h;c[l+4>>2]=j;m=(c[k>>2]=h,+g[k>>2]);n=(c[k>>2]=j,+g[k>>2]);o=+Q(+(m*m+n*n));if(o<1.1920928955078125E-7){p=n;q=m}else{r=1/o;o=m*r;g[f>>2]=o;m=n*r;g[b+88>>2]=m;p=m;q=o}o=+-p;p=+q;f=b+92|0;g[f>>2]=o;g[f+4>>2]=p;g[b+100>>2]=+g[d+44>>2];f=b+104|0;g[b+252>>2]=0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;g[b+120>>2]=+g[d+52>>2];g[b+124>>2]=+g[d+56>>2];g[b+128>>2]=+g[d+64>>2];g[b+132>>2]=+g[d+68>>2];a[b+136>>0]=a[d+48>>0]|0;a[b+137>>0]=a[d+60>>0]|0;c[b+140>>2]=0;d=b+184|0;c[d+0>>2]=0;c[d+4>>2]=
0;c[d+8>>2]=0;c[d+12>>2]=0;i=e;return}function $g(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=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;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+144|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+148|0;c[n>>2]=m;o=f+44|0;p=c[o>>
2]|0;q=c[o+4>>2]|0;o=b+152|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+160|0;c[o>>2]=r;c[o+4>>2]=s;o=b+168|0;g[o>>2]=+g[f+136>>2];t=b+172|0;g[t>>2]=+g[l+136>>2];u=+g[f+144>>2];g[b+176>>2]=u;v=+g[l+144>>2];g[b+180>>2]=v;l=c[d+28>>2]|0;f=l+(h*12|0)|0;w=+g[f>>2];x=+g[f+4>>2];y=+g[l+(h*12|0)+8>>2];f=d+32|0;z=c[f>>2]|0;A=z+(h*12|0)|0;B=c[A>>2]|0;C=+g[A+4>>2];D=+g[z+(h*12|0)+8>>2];h=l+(m*12|0)|0;E=+g[h>>2];F=+g[h+4>>2];G=+g[l+(m*12|0)+8>>2];l=z+(m*12|0)|0;h=c[l>>2]|0;H=+g[l+4>>2];I=+g[z+
(m*12|0)+8>>2];J=+T(+y);K=+S(+y);y=+T(+G);L=+S(+G);G=+g[b+68>>2]-(c[k>>2]=p,+g[k>>2]);M=+g[b+72>>2]-(c[k>>2]=q,+g[k>>2]);N=K*G-J*M;O=J*G+K*M;M=+g[b+76>>2]-(c[k>>2]=r,+g[k>>2]);G=+g[b+80>>2]-(c[k>>2]=s,+g[k>>2]);P=L*M-y*G;Q=y*M+L*G;G=E-w+P-N;w=F-x+Q-O;x=+g[o>>2];F=+g[t>>2];E=+g[b+84>>2];L=+g[b+88>>2];M=K*E-J*L;y=J*E+K*L;L=+M;E=+y;t=b+184|0;g[t>>2]=L;g[t+4>>2]=E;E=N+G;N=O+w;O=E*y-N*M;g[b+208>>2]=O;L=P*y-Q*M;g[b+212>>2]=L;R=x+F;U=u*O;V=v*L;W=R+O*U+L*V;if(W>0)X=1/W;else X=W;g[b+252>>2]=X;X=+g[b+92>>2];
Y=+g[b+96>>2];Z=K*X-J*Y;_=J*X+K*Y;Y=+Z;K=+_;t=b+192|0;g[t>>2]=Y;g[t+4>>2]=K;K=E*_-N*Z;g[b+200>>2]=K;N=P*_-Q*Z;g[b+204>>2]=N;Q=u*K;P=v*N;E=Q+P;Y=Q*O+P*L;X=v+u;J=U+V;g[b+216>>2]=R+K*Q+N*P;g[b+220>>2]=E;g[b+224>>2]=Y;g[b+228>>2]=E;g[b+232>>2]=X==0?1:X;g[b+236>>2]=J;g[b+240>>2]=Y;g[b+244>>2]=J;g[b+248>>2]=W;do if(a[b+136>>0]|0){W=G*M+w*y;J=+g[b+124>>2];Y=+g[b+120>>2];X=J-Y;if(X>0)$=X;else $=-X;if($<.009999999776482582){c[b+140>>2]=3;break}if(W<=Y){t=b+140|0;if((c[t>>2]|0)==1)break;c[t>>2]=1;g[b+112>>
2]=0;break}t=b+140|0;if(!(W>=J)){c[t>>2]=0;g[b+112>>2]=0;break}if((c[t>>2]|0)!=2){c[t>>2]=2;g[b+112>>2]=0}}else{c[b+140>>2]=0;g[b+112>>2]=0}while(0);if(!(a[b+137>>0]|0))g[b+116>>2]=0;t=b+104|0;if(!(a[d+24>>0]|0)){c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;aa=C;ba=B;ca=H;da=h;ea=D;fa=I;ga=c[j>>2]|0;ha=c[f>>2]|0;ia=ha+(ga*12|0)|0;ja=+aa;ka=ia;la=ka;c[la>>2]=ba;ma=ka+4|0;na=ma;g[na>>2]=ja;oa=c[j>>2]|0;pa=c[f>>2]|0;qa=pa+(oa*12|0)+8|0;g[qa>>2]=ea;ra=c[n>>2]|0;sa=pa+(ra*12|0)|0;ta=+ca;ua=sa;va=ua;
c[va>>2]=da;wa=ua+4|0;xa=wa;g[xa>>2]=ta;ya=c[n>>2]|0;za=c[f>>2]|0;Aa=za+(ya*12|0)+8|0;g[Aa>>2]=fa;i=e;return}else{$=+g[d+8>>2];w=$*+g[t>>2];g[t>>2]=w;t=b+108|0;G=$*+g[t>>2];g[t>>2]=G;t=b+112|0;J=$*+g[t>>2];g[t>>2]=J;t=b+116|0;W=$*+g[t>>2];g[t>>2]=W;$=W+J;J=w*Z+M*$;M=w*_+$*y;t=(g[k>>2]=(c[k>>2]=B,+g[k>>2])-x*J,c[k>>2]|0);aa=C-x*M;ba=t;ca=H+F*M;da=(g[k>>2]=(c[k>>2]=h,+g[k>>2])+F*J,c[k>>2]|0);ea=D-u*(w*K+G+$*O);fa=I+v*(G+w*N+$*L);ga=c[j>>2]|0;ha=c[f>>2]|0;ia=ha+(ga*12|0)|0;ja=+aa;ka=ia;la=ka;c[la>>2]=
ba;ma=ka+4|0;na=ma;g[na>>2]=ja;oa=c[j>>2]|0;pa=c[f>>2]|0;qa=pa+(oa*12|0)+8|0;g[qa>>2]=ea;ra=c[n>>2]|0;sa=pa+(ra*12|0)|0;ta=+ca;ua=sa;va=ua;c[va>>2]=da;wa=ua+4|0;xa=wa;g[xa>>2]=ta;ya=c[n>>2]|0;za=c[f>>2]|0;Aa=za+(ya*12|0)+8|0;g[Aa>>2]=fa;i=e;return}}function ah(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,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;e=i;i=i+64|0;f=e+44|0;h=e+32|0;j=e+24|0;l=e+16|0;m=e+8|0;n=e;o=b+144|0;p=c[o>>2]|0;q=d+32|0;r=c[q>>2]|0;s=r+(p*12|0)|0;t=c[s>>2]|0;u=+g[s+4>>2];v=+g[r+(p*12|0)+8>>2];p=b+148|0;s=c[p>>2]|0;w=r+(s*12|0)|0;x=c[w>>2]|0;y=+g[w+4>>2];z=+g[r+(s*12|0)+8>>2];A=+g[b+168>>2];B=+g[b+172>>2];C=+g[b+176>>2];D=+g[b+180>>2];if((a[b+137>>0]|0)!=0?(c[b+
140>>2]|0)!=3:0){E=(c[k>>2]=x,+g[k>>2]);F=(c[k>>2]=t,+g[k>>2]);G=+g[b+184>>2];H=+g[b+188>>2];I=+g[b+212>>2];J=+g[b+208>>2];s=b+116|0;K=+g[s>>2];L=+g[d>>2]*+g[b+128>>2];M=K+ +g[b+252>>2]*(+g[b+132>>2]-((E-F)*G+(y-u)*H+z*I-v*J));N=-L;O=M<L?M:L;L=O<N?N:O;g[s>>2]=L;O=L-K;K=G*O;G=H*O;s=(g[k>>2]=F-A*K,c[k>>2]|0);P=(g[k>>2]=E+B*K,c[k>>2]|0);Q=s;R=y+B*G;S=u-A*G;T=v-C*(J*O);U=z+D*(I*O)}else{P=x;Q=t;R=y;S=u;T=v;U=z}z=(c[k>>2]=P,+g[k>>2]);v=(c[k>>2]=Q,+g[k>>2]);u=z-v;y=R-S;Q=b+192|0;P=b+196|0;t=b+204|0;x=b+
200|0;O=u*+g[Q>>2]+y*+g[P>>2]+U*+g[t>>2]-T*+g[x>>2];I=U-T;if((a[b+136>>0]|0)!=0?(s=b+140|0,(c[s>>2]|0)!=0):0){d=b+184|0;r=b+188|0;w=b+212|0;V=b+208|0;W=b+104|0;J=+g[W>>2];X=b+108|0;G=+g[X>>2];Y=b+112|0;K=+g[Y>>2];Z=b+216|0;E=-O;F=-I;H=-(u*+g[d>>2]+y*+g[r>>2]+U*+g[w>>2]-T*+g[V>>2]);g[h>>2]=E;g[h+4>>2]=F;g[h+8>>2]=H;wm(f,Z,h);g[W>>2]=+g[f>>2]+ +g[W>>2];h=f+4|0;g[X>>2]=+g[h>>2]+ +g[X>>2];_=f+8|0;H=+g[_>>2]+ +g[Y>>2];g[Y>>2]=H;$=c[s>>2]|0;if(($|0)==1){y=H>0?H:0;g[Y>>2]=y;aa=y}else if(($|0)==2){y=H<0?
H:0;g[Y>>2]=y;aa=y}else aa=H;H=aa-K;aa=F-H*+g[b+244>>2];g[j>>2]=E-+g[b+240>>2]*H;g[j+4>>2]=aa;xm(l,Z,j);aa=J+ +g[l>>2];H=G+ +g[l+4>>2];g[W>>2]=aa;g[X>>2]=H;E=aa-J;J=H-G;G=+g[Y>>2]-K;g[f>>2]=E;g[h>>2]=J;g[_>>2]=G;ba=J+E*+g[t>>2]+G*+g[w>>2];ca=E*+g[x>>2]+J+G*+g[V>>2];da=E*+g[Q>>2]+G*+g[d>>2];ea=E*+g[P>>2]+G*+g[r>>2];fa=A*ea;ga=A*da;ha=v-ga;ia=+ha;ja=S-fa;ka=B*da;la=B*ea;ma=z+ka;na=+ma;oa=R+la;pa=C*ca;qa=D*ba;ra=T-pa;sa=U+qa;ta=c[o>>2]|0;ua=c[q>>2]|0;va=ua+(ta*12|0)|0;wa=+ja;xa=va;ya=xa;g[ya>>2]=ia;
za=xa+4|0;Aa=za;g[Aa>>2]=wa;Ba=c[o>>2]|0;Ca=c[q>>2]|0;Da=Ca+(Ba*12|0)+8|0;g[Da>>2]=ra;Ea=c[p>>2]|0;Fa=Ca+(Ea*12|0)|0;Ga=+oa;Ha=Fa;Ia=Ha;g[Ia>>2]=na;Ja=Ha+4|0;Ka=Ja;g[Ka>>2]=Ga;La=c[p>>2]|0;Ma=c[q>>2]|0;Na=Ma+(La*12|0)+8|0;g[Na>>2]=sa;i=e;return}g[n>>2]=-O;g[n+4>>2]=-I;xm(m,b+216|0,n);I=+g[m>>2];n=b+104|0;g[n>>2]=I+ +g[n>>2];O=+g[m+4>>2];m=b+108|0;g[m>>2]=O+ +g[m>>2];ba=O+I*+g[t>>2];ca=I*+g[x>>2]+O;da=I*+g[Q>>2];ea=I*+g[P>>2];fa=A*ea;ga=A*da;ha=v-ga;ia=+ha;ja=S-fa;ka=B*da;la=B*ea;ma=z+ka;na=+ma;oa=
R+la;pa=C*ca;qa=D*ba;ra=T-pa;sa=U+qa;ta=c[o>>2]|0;ua=c[q>>2]|0;va=ua+(ta*12|0)|0;wa=+ja;xa=va;ya=xa;g[ya>>2]=ia;za=xa+4|0;Aa=za;g[Aa>>2]=wa;Ba=c[o>>2]|0;Ca=c[q>>2]|0;Da=Ca+(Ba*12|0)+8|0;g[Da>>2]=ra;Ea=c[p>>2]|0;Fa=Ca+(Ea*12|0)|0;Ga=+oa;Ha=Fa;Ia=Ha;g[Ia>>2]=na;Ja=Ha+4|0;Ka=Ja;g[Ka>>2]=Ga;La=c[p>>2]|0;Ma=c[q>>2]|0;Na=Ma+(La*12|0)+8|0;g[Na>>2]=sa;i=e;return}function bh(b,d){b=b|0;d=d|0;var e=0,f=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;e=i;i=i+64|0;f=e+24|0;h=e+12|0;j=e;k=b+144|0;l=c[k>>2]|0;m=d+28|0;d=c[m>>2]|0;n=d+(l*12|0)|0;o=+g[n+4>>2];p=+g[d+(l*12|0)+8>>2];l=b+148|0;q=c[l>>2]|0;r=d+(q*12|0)|0;s=+g[r+4>>2];t=+g[d+(q*12|0)+8>>2];u=+T(+p);v=+S(+p);w=+T(+t);x=+S(+t);y=+g[b+168>>2];z=+g[b+172>>2];A=+g[b+176>>2];B=+g[b+180>>2];C=+g[b+68>>2]-+g[b+152>>2];D=+g[b+72>>2]-+g[b+156>>2];E=v*C-u*D;F=u*C+v*D;D=+g[b+76>>2]-+g[b+160>>2];C=+g[b+80>>2]-+g[b+
164>>2];G=x*D-w*C;H=w*D+x*C;C=+g[r>>2];x=+g[n>>2];D=C+G-x-E;w=s+H-o-F;I=+g[b+84>>2];J=+g[b+88>>2];K=v*I-u*J;L=u*I+v*J;J=E+D;E=F+w;F=L*J-K*E;I=G*L-H*K;M=+g[b+92>>2];N=+g[b+96>>2];O=v*M-u*N;P=u*M+v*N;N=P*J-O*E;E=G*P-H*O;H=O*D+P*w;G=t-p-+g[b+100>>2];if(H>0)Q=H;else Q=-H;if(G>0)R=G;else R=-G;do if(a[b+136>>0]|0){J=K*D+L*w;v=+g[b+124>>2];M=+g[b+120>>2];u=v-M;if(u>0)U=u;else U=-u;if(U<.009999999776482582){u=J<.20000000298023224?J:.20000000298023224;if(J>0)V=J;else V=-J;W=u<-.20000000298023224?-.20000000298023224:
u;X=1;Y=Q>V?Q:V;break}if(J<=M){u=J-M+.004999999888241291;Z=u<0?u:0;u=M-J;W=Z<-.20000000298023224?-.20000000298023224:Z;X=1;Y=Q>u?Q:u;break}if(J>=v){u=J-v;v=u+-.004999999888241291;J=v<.20000000298023224?v:.20000000298023224;W=J<0?0:J;X=1;Y=Q>u?Q:u}else{W=0;X=0;Y=Q}}else{W=0;X=0;Y=Q}while(0);Q=y+z;V=A*N;U=B*E;w=E*U+(Q+N*V);D=U+V;if(X){u=I*U+F*V;V=A+B;U=A*F;J=B*I;v=J+U;g[f>>2]=w;g[f+4>>2]=D;g[f+8>>2]=u;g[f+12>>2]=D;g[f+16>>2]=V==0?1:V;g[f+20>>2]=v;g[f+24>>2]=u;g[f+28>>2]=v;g[f+32>>2]=I*J+(Q+F*U);g[j>>
2]=-H;g[j+4>>2]=-G;g[j+8>>2]=-W;wm(h,f,j);_=+g[h>>2];$=+g[h+8>>2];aa=+g[h+4>>2]}else{W=A+B;U=W==0?1:W;W=-H;H=-G;G=U*w-D*D;if(G!=0)ba=1/G;else ba=G;_=(U*W-D*H)*ba;$=0;aa=(w*H-D*W)*ba}ba=K*$+O*_;O=L*$+P*_;P=+(x-y*ba);x=+(C+z*ba);ba=+(o-y*O);h=(c[m>>2]|0)+((c[k>>2]|0)*12|0)|0;g[h>>2]=P;g[h+4>>2]=ba;h=c[m>>2]|0;g[h+((c[k>>2]|0)*12|0)+8>>2]=p-A*(F*$+(aa+N*_));N=+(s+z*O);k=h+((c[l>>2]|0)*12|0)|0;g[k>>2]=x;g[k+4>>2]=N;g[(c[m>>2]|0)+((c[l>>2]|0)*12|0)+8>>2]=t+B*(I*$+(aa+E*_));if(!(Y<=.004999999888241291)){ca=
0;i=e;return ca|0}ca=R<=.03490658849477768;i=e;return ca|0}function ch(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+68>>2];h=+g[d+20>>2];i=+g[b+72>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function dh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+76>>2];h=+g[d+20>>2];i=+g[b+80>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function eh(a,b,c){a=a|0;b=b|0;c=+c;var d=
0,e=0,f=0;d=+g[b+104>>2];e=+g[b+116>>2]+ +g[b+112>>2];f=(d*+g[b+196>>2]+e*+g[b+188>>2])*c;g[a>>2]=(d*+g[b+192>>2]+ +g[b+184>>2]*e)*c;g[a+4>>2]=f;return}function fh(a,b){a=a|0;b=+b;return+(+g[a+108>>2]*b)}function gh(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;b=c[a+48>>2]|0;d=+g[b+24>>2];e=+g[a+68>>2];f=+g[b+20>>2];h=+g[a+72>>2];i=c[a+52>>2]|0;j=+g[i+24>>2];k=+g[a+76>>2];l=+g[i+20>>2];m=+g[a+80>>2];n=+g[a+84>>2];o=+g[a+88>>2];return+((+g[i+12>>2]+(j*k-l*m)-(+g[b+12>>2]+(d*e-f*h)))*
(d*n-f*o)+(k*l+j*m+ +g[i+16>>2]-(e*f+d*h+ +g[b+16>>2]))*(f*n+d*o))}function hh(b){b=b|0;return(a[b+136>>0]|0)!=0|0}function ih(f,h){f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;k=f+136|0;if((h&1|0)==(d[k>>0]|0|0)){i=j;return}l=c[f+48>>2]|0;m=l+4|0;n=e[m>>1]|0;if(!(n&2)){b[m>>1]=n|2;g[l+160>>2]=0}l=c[f+52>>2]|0;n=l+4|0;m=e[n>>1]|0;if(!(m&2)){b[n>>1]=m|2;g[l+160>>2]=0}a[k>>0]=h&1;g[f+112>>2]=0;i=j;return}function jh(b){b=b|0;return(a[b+137>>0]|0)!=0|0}function kh(d,f){d=d|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,
n=0;h=i;j=c[d+48>>2]|0;k=j+4|0;l=e[k>>1]|0;if(!(l&2)){b[k>>1]=l|2;g[j+160>>2]=0}j=c[d+52>>2]|0;l=j+4|0;k=e[l>>1]|0;if(k&2){m=d+137|0;n=f&1;a[m>>0]=n;i=h;return}b[l>>1]=k|2;g[j+160>>2]=0;m=d+137|0;n=f&1;a[m>>0]=n;i=h;return}function lh(a,d){a=a|0;d=+d;var f=0,h=0,j=0,k=0,l=0;f=i;h=c[a+48>>2]|0;j=h+4|0;k=e[j>>1]|0;if(!(k&2)){b[j>>1]=k|2;g[h+160>>2]=0}h=c[a+52>>2]|0;k=h+4|0;j=e[k>>1]|0;if(j&2){l=a+132|0;g[l>>2]=d;i=f;return}b[k>>1]=j|2;g[h+160>>2]=0;l=a+132|0;g[l>>2]=d;i=f;return}function mh(a,b){a=
a|0;b=+b;return+(+g[a+116>>2]*b)}function nh(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Fm(3264,e);c[e>>2]=f;Fm(3296,e);c[e>>2]=j;Fm(3328,e);c[e>>2]=d[a+61>>0];Fm(3360,e);l=+g[a+72>>2];h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(3400,e);l=+g[a+80>>2];h[k>>3]=+g[a+76>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(3448,e);
l=+g[a+88>>2];h[k>>3]=+g[a+84>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(3496,e);h[k>>3]=+g[a+100>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(3536,e);c[e>>2]=d[a+136>>0];Fm(3568,e);h[k>>3]=+g[a+120>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(3600,e);h[k>>3]=+g[a+124>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(3640,e);c[e>>2]=d[a+137>>0];Fm(3680,e);h[k>>3]=+g[a+132>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(3712,e);h[k>>3]=+g[a+128>>2];c[e>>2]=c[k>>
2];c[e+4>>2]=c[k+4>>2];Fm(3744,e);c[e>>2]=c[a+56>>2];Fm(3776,e);i=b;return}function oh(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function ph(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=i;Bh(a,b);c[a>>2]=3872;e=b+20|0;f=c[e+4>>2]|0;h=a+68|0;c[h>>2]=c[e>>2];c[h+4>>2]=f;f=b+28|0;h=c[f+4>>2]|0;e=a+76|0;c[e>>2]=c[f>>2];c[e+4>>2]=h;g[a+84>>2]=+g[b+36>>2];g[a+160>>2]=0;g[a+92>>2]=0;c[a+164>>2]=0;g[a+88>>2]=0;i=d;return}function qh(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,U=0,V=0,W=0,X=0,Y=0;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+96|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+100|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+128|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+136|0;c[o>>2]=r;c[o+4>>2]=s;s=b+144|0;g[s>>2]=+g[f+136>>2];o=b+148|0;g[o>>2]=+g[l+136>>2];t=b+152|0;g[t>>2]=+g[f+144>>2];f=b+156|0;g[f>>2]=+g[l+144>>2];l=c[d+28>>2]|0;u=l+(h*12|0)|0;v=+g[u>>2];
w=+g[u+4>>2];x=+g[l+(h*12|0)+8>>2];u=d+32|0;y=c[u>>2]|0;z=y+(h*12|0)|0;A=c[z>>2]|0;B=+g[z+4>>2];C=+g[y+(h*12|0)+8>>2];h=l+(m*12|0)|0;D=+g[h>>2];E=+g[h+4>>2];F=+g[l+(m*12|0)+8>>2];l=y+(m*12|0)|0;h=c[l>>2]|0;G=+g[l+4>>2];H=+g[y+(m*12|0)+8>>2];I=+T(+x);J=+S(+x);x=+T(+F);K=+S(+F);F=+g[b+68>>2]-(c[k>>2]=p,+g[k>>2]);L=+g[b+72>>2]-(c[k>>2]=q,+g[k>>2]);M=J*F-I*L;N=I*F+J*L;L=+M;J=+N;q=b+112|0;g[q>>2]=L;g[q+4>>2]=J;J=+g[b+76>>2]-(c[k>>2]=r,+g[k>>2]);L=+g[b+80>>2]-+g[b+140>>2];F=K*J-x*L;I=x*J+K*L;L=+F;K=+I;
r=b+120|0;g[r>>2]=L;g[r+4>>2]=K;r=b+104|0;K=D+F-v-M;v=E+I-w-N;w=+K;E=+v;q=r;g[q>>2]=w;g[q+4>>2]=E;q=b+108|0;E=+Q(+(K*K+v*v));g[b+88>>2]=E;c[b+164>>2]=E-+g[b+84>>2]>0?2:0;if(!(E>.004999999888241291)){g[r>>2]=0;g[q>>2]=0;g[b+160>>2]=0;g[b+92>>2]=0;i=e;return}w=1/E;E=w*K;g[r>>2]=E;K=w*v;g[q>>2]=K;v=M*K-N*E;w=K*F-E*I;D=+g[s>>2];L=+g[t>>2];J=+g[o>>2];x=+g[f>>2];O=J+(D+v*(v*L))+w*(w*x);if(O!=0)P=1/O;else P=0;g[b+160>>2]=P;if(!(a[d+24>>0]|0)){g[b+92>>2]=0;R=B;U=A;V=G;W=h;X=C;Y=H}else{f=b+92|0;P=+g[d+8>>
2]*+g[f>>2];g[f>>2]=P;O=E*P;E=P*K;f=(g[k>>2]=(c[k>>2]=A,+g[k>>2])-O*D,c[k>>2]|0);R=B-E*D;U=f;V=G+E*J;W=(g[k>>2]=(c[k>>2]=h,+g[k>>2])+O*J,c[k>>2]|0);X=C-L*(E*M-O*N);Y=H+x*(E*F-O*I)}I=+R;h=(c[u>>2]|0)+((c[j>>2]|0)*12|0)|0;c[h>>2]=U;g[h+4>>2]=I;h=c[u>>2]|0;g[h+((c[j>>2]|0)*12|0)+8>>2]=X;X=+V;j=h+((c[n>>2]|0)*12|0)|0;c[j>>2]=W;g[j+4>>2]=X;g[(c[u>>2]|0)+((c[n>>2]|0)*12|0)+8>>2]=Y;i=e;return}function rh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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=i;e=a+96|0;f=c[e>>2]|0;h=b+32|0;j=c[h>>2]|0;k=j+(f*12|0)|0;l=k;m=+g[l+4>>2];n=+g[j+(f*12|0)+8>>2];f=a+100|0;o=c[f>>2]|0;p=j+(o*12|0)|0;q=+g[p+4>>2];r=+g[j+(o*12|0)+8>>2];s=+g[a+116>>2];t=+g[a+112>>2];u=+g[l>>2];v=+g[a+124>>2];w=+g[a+120>>2];x=+g[p>>2];y=+g[a+88>>2]-+g[a+84>>2];z=+g[a+104>>2];A=+g[a+108>>2];B=(x-r*v-(u-n*s))*z+(q+r*w-(m+n*t))*A;if(y<0)C=B+y*+g[b+4>>2];else C=B;b=a+92|0;B=+g[b>>2];y=B-C*+g[a+160>>2];C=y>0?0:y;g[b>>2]=C;y=C-B;B=z*y;z=A*y;y=+g[a+144>>2];A=+(u-y*B);u=
n-+g[a+152>>2]*(t*z-B*s);s=+g[a+148>>2];t=+(x+B*s);x=r+ +g[a+156>>2]*(z*w-B*v);v=+(m-y*z);a=k;g[a>>2]=A;g[a+4>>2]=v;a=c[h>>2]|0;g[a+((c[e>>2]|0)*12|0)+8>>2]=u;u=+(q+z*s);e=a+((c[f>>2]|0)*12|0)|0;g[e>>2]=t;g[e+4>>2]=u;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=x;i=d;return}function sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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;d=i;e=a+96|0;f=c[e>>2]|0;h=b+28|0;b=c[h>>2]|0;j=b+(f*12|0)|0;k=j;l=+g[k+4>>2];m=+g[b+(f*12|0)+8>>2];
f=a+100|0;n=c[f>>2]|0;o=b+(n*12|0)|0;p=+g[o+4>>2];q=+g[b+(n*12|0)+8>>2];r=+T(+m);s=+S(+m);t=+T(+q);u=+S(+q);v=+g[a+68>>2]-+g[a+128>>2];w=+g[a+72>>2]-+g[a+132>>2];x=s*v-r*w;y=r*v+s*w;w=+g[a+76>>2]-+g[a+136>>2];s=+g[a+80>>2]-+g[a+140>>2];v=u*w-t*s;r=t*w+u*s;s=+g[o>>2];u=+g[k>>2];w=s+v-u-x;t=p+r-l-y;z=+Q(+(w*w+t*t));if(z<1.1920928955078125E-7){A=0;B=w;C=t}else{D=1/z;A=z;B=w*D;C=t*D}k=a+84|0;D=A-+g[k>>2];t=D<.20000000298023224?D:.20000000298023224;D=-(+g[a+160>>2]*(t<0?0:t));t=B*D;B=C*D;D=+g[a+144>>2];
C=+(u-D*t);u=m-+g[a+152>>2]*(x*B-y*t);y=+g[a+148>>2];x=+(s+y*t);s=q+ +g[a+156>>2]*(v*B-r*t);t=+(l-D*B);a=j;g[a>>2]=C;g[a+4>>2]=t;a=c[h>>2]|0;g[a+((c[e>>2]|0)*12|0)+8>>2]=u;u=+(p+y*B);e=a+((c[f>>2]|0)*12|0)|0;g[e>>2]=x;g[e+4>>2]=u;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=s;i=d;return A-+g[k>>2]<.004999999888241291|0}function th(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+68>>2];h=+g[d+20>>2];i=+g[b+72>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>
2]=j;return}function uh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+76>>2];h=+g[d+20>>2];i=+g[b+80>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function vh(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=+g[b+92>>2]*c;c=d*+g[b+108>>2];g[a>>2]=+g[b+104>>2]*d;g[a+4>>2]=c;return}function wh(a,b){a=a|0;b=+b;return 0}function xh(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Fm(3920,e);c[e>>2]=
f;Fm(3944,e);c[e>>2]=j;Fm(3976,e);c[e>>2]=d[a+61>>0];Fm(4008,e);l=+g[a+72>>2];h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(4048,e);l=+g[a+80>>2];h[k>>3]=+g[a+76>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(4096,e);h[k>>3]=+g[a+84>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(4144,e);c[e>>2]=c[a+56>>2];Fm(4176,e);i=b;return}function yh(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function zh(a,
b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;do switch(c[a>>2]|0){case 3:e=um(b,176)|0;if(!e)f=0;else{ig(e,a);f=e}g=f;break;case 9:e=um(b,180)|0;if(!e)h=0;else{tg(e,a);h=e}g=h;break;case 2:e=um(b,256)|0;if(!e)j=0;else{_g(e,a);j=e}g=j;break;case 8:e=um(b,208)|0;if(!e)k=0;else{Eg(e,a);k=e}g=k;break;case 11:e=um(b,192)|0;if(!e)l=0;else{Wf(e,a);l=e}g=l;break;case 6:e=um(b,276)|0;if(!e)m=0;else{Og(e,a);m=e}g=m;break;case 7:e=um(b,224)|0;if(!e)n=0;else{Wh(e,a);n=e}g=n;
break;case 10:e=um(b,168)|0;if(!e)o=0;else{ph(e,a);o=e}g=o;break;case 4:e=um(b,196)|0;if(!e)p=0;else{gi(e,a);p=e}g=p;break;case 5:e=um(b,168)|0;if(!e)q=0;else{If(e,a);q=e}g=q;break;case 1:e=um(b,228)|0;if(!e)r=0;else{Fh(e,a);r=e}g=r;break;default:g=0}while(0);i=d;return g|0}function Ah(a,b){a=a|0;b=b|0;var d=0;d=i;nb[c[(c[a>>2]|0)+24>>2]&127](a);do switch(c[a+4>>2]|0){case 1:vm(b,a,228);break;case 7:vm(b,a,224);break;case 11:vm(b,a,192);break;case 3:vm(b,a,176);break;case 8:vm(b,a,208);break;case 5:vm(b,
a,168);break;case 2:vm(b,a,256);break;case 4:vm(b,a,196);break;case 6:vm(b,a,276);break;case 9:vm(b,a,180);break;case 10:vm(b,a,168);break;default:}while(0);i=d;return}function Bh(b,d){b=b|0;d=d|0;c[b>>2]=4264;c[b+4>>2]=c[d>>2];c[b+8>>2]=0;c[b+12>>2]=0;c[b+48>>2]=c[d+8>>2];c[b+52>>2]=c[d+12>>2];c[b+56>>2]=0;a[b+61>>0]=a[d+16>>0]|0;a[b+60>>0]=0;c[b+64>>2]=c[d+4>>2];d=b+16|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;return}function Ch(a){a=
a|0;a=i;i=i+16|0;Fm(4312,a);i=a;return}function Dh(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Eh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;c[a+8>>2]=b;c[a+12>>2]=d;h=+g[e>>2]-+g[b+12>>2];j=e+4|0;k=+g[j>>2]-+g[b+16>>2];l=+g[b+24>>2];m=+g[b+20>>2];n=+(h*l+k*m);o=+(l*k-h*m);p=a+20|0;g[p>>2]=n;g[p+4>>2]=o;o=+g[e>>2]-+g[d+12>>2];n=+g[j>>2]-+g[d+16>>2];m=+g[d+24>>2];h=+g[d+20>>2];k=+(o*m+n*h);l=+(m*n-o*h);j=a+28|0;g[j>>2]=k;g[j+4>>2]=l;g[a+36>>2]=+g[d+72>>2]-+g[b+
72>>2];i=f;return}function Fh(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0;e=i;Bh(b,d);c[b>>2]=4368;f=d+20|0;h=c[f+4>>2]|0;j=b+68|0;c[j>>2]=c[f>>2];c[j+4>>2]=h;h=d+28|0;j=c[h+4>>2]|0;f=b+76|0;c[f>>2]=c[h>>2];c[f+4>>2]=j;g[b+116>>2]=+g[d+36>>2];j=b+84|0;c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;g[b+120>>2]=+g[d+44>>2];g[b+124>>2]=+g[d+48>>2];g[b+104>>2]=+g[d+60>>2];g[b+108>>2]=+g[d+56>>2];a[b+112>>0]=a[d+40>>0]|0;a[b+100>>0]=a[d+52>>0]|0;c[b+224>>2]=0;i=e;return}function Gh(b,d){b=b|0;d=d|0;var e=0,
f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=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;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+128|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+132|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+152|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+160|0;c[o>>2]=r;c[o+4>>2]=s;t=+g[f+136>>
2];g[b+168>>2]=t;u=+g[l+136>>2];g[b+172>>2]=u;v=+g[f+144>>2];g[b+176>>2]=v;w=+g[l+144>>2];g[b+180>>2]=w;l=c[d+28>>2]|0;x=+g[l+(h*12|0)+8>>2];f=d+32|0;o=c[f>>2]|0;y=o+(h*12|0)|0;z=c[y>>2]|0;A=+g[y+4>>2];B=+g[o+(h*12|0)+8>>2];C=+g[l+(m*12|0)+8>>2];l=o+(m*12|0)|0;h=c[l>>2]|0;D=+g[l+4>>2];E=+g[o+(m*12|0)+8>>2];F=+T(+x);G=+S(+x);H=+T(+C);I=+S(+C);m=b+136|0;J=+g[b+68>>2]-(c[k>>2]=p,+g[k>>2]);K=+g[b+72>>2]-(c[k>>2]=q,+g[k>>2]);L=G*J-F*K;M=F*J+G*K;K=+L;G=+M;q=m;g[q>>2]=K;g[q+4>>2]=G;G=+g[b+76>>2]-(c[k>>2]=
r,+g[k>>2]);K=+g[b+80>>2]-(c[k>>2]=s,+g[k>>2]);J=I*G-H*K;F=H*G+I*K;K=+J;I=+F;s=b+144|0;g[s>>2]=K;g[s+4>>2]=I;I=v+w;s=I==0;K=t+u;r=b+140|0;g[b+184>>2]=K+v*(M*M)+w*(F*F);G=-(v*(M*L))-w*(F*J);g[b+196>>2]=G;H=-(v*M)-w*F;g[b+208>>2]=H;g[b+188>>2]=G;g[b+200>>2]=K+v*(L*L)+w*(J*J);K=v*L+w*J;g[b+212>>2]=K;g[b+192>>2]=H;g[b+204>>2]=K;g[b+216>>2]=I;if(I>0)N=1/I;else N=I;g[b+220>>2]=N;if((a[b+100>>0]|0)==0|s)g[b+96>>2]=0;do if((a[b+112>>0]|0)==0|s)c[b+224>>2]=0;else{N=C-x-+g[b+116>>2];I=+g[b+124>>2];K=+g[b+120>>
2];H=I-K;if(H>0)O=H;else O=-H;if(O<.06981317698955536){c[b+224>>2]=3;break}if(N<=K){q=b+224|0;if((c[q>>2]|0)!=1)g[b+92>>2]=0;c[q>>2]=1;break}q=b+224|0;if(!(N>=I)){c[q>>2]=0;g[b+92>>2]=0;break}if((c[q>>2]|0)!=2)g[b+92>>2]=0;c[q>>2]=2}while(0);s=b+84|0;if(!(a[d+24>>0]|0)){c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;P=A;Q=z;R=D;U=h;V=B;W=E;X=c[j>>2]|0;Y=c[f>>2]|0;Z=Y+(X*12|0)|0;_=+P;$=Z;aa=$;c[aa>>2]=Q;ba=$+4|0;ca=ba;g[ca>>2]=_;da=c[j>>2]|0;ea=c[f>>2]|0;fa=ea+(da*12|0)+8|0;g[fa>>2]=V;ga=c[n>>2]|
0;ha=ea+(ga*12|0)|0;ia=+R;ja=ha;ka=ja;c[ka>>2]=U;la=ja+4|0;ma=la;g[ma>>2]=ia;na=c[n>>2]|0;oa=c[f>>2]|0;pa=oa+(na*12|0)+8|0;g[pa>>2]=W;i=e;return}else{O=+g[d+8>>2];x=O*+g[s>>2];g[s>>2]=x;s=b+88|0;C=O*+g[s>>2];g[s>>2]=C;s=b+92|0;I=O*+g[s>>2];g[s>>2]=I;s=b+96|0;N=O*+g[s>>2];g[s>>2]=N;s=(g[k>>2]=(c[k>>2]=z,+g[k>>2])-t*x,c[k>>2]|0);P=A-t*C;Q=s;R=D+u*C;U=(g[k>>2]=(c[k>>2]=h,+g[k>>2])+u*x,c[k>>2]|0);V=B-v*(I+(N+(C*+g[m>>2]-x*+g[r>>2])));W=E+w*(I+(N+(C*J-x*F)));X=c[j>>2]|0;Y=c[f>>2]|0;Z=Y+(X*12|0)|0;_=+P;
$=Z;aa=$;c[aa>>2]=Q;ba=$+4|0;ca=ba;g[ca>>2]=_;da=c[j>>2]|0;ea=c[f>>2]|0;fa=ea+(da*12|0)+8|0;g[fa>>2]=V;ga=c[n>>2]|0;ha=ea+(ga*12|0)|0;ia=+R;ja=ha;ka=ja;c[ka>>2]=U;la=ja+4|0;ma=la;g[ma>>2]=ia;na=c[n>>2]|0;oa=c[f>>2]|0;pa=oa+(na*12|0)+8|0;g[pa>>2]=W;i=e;return}}function Hh(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,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;e=i;i=i+80|0;f=e+8|0;h=e+40|0;j=e+24|0;l=e+56|0;m=e+72|0;n=e;o=e+32|0;p=e+64|0;q=b+128|0;r=c[q>>2]|0;s=d+32|0;t=c[s>>2]|0;u=t+(r*12|0)|0;v=c[u>>2]|0;w=+g[u+4>>2];x=+g[t+(r*12|0)+8>>2];r=b+132|0;u=c[r>>2]|0;y=t+(u*12|0)|0;z=c[y>>2]|0;A=+g[y+4>>2];B=+g[t+(u*12|0)+8>>2];C=+g[b+168>>2];D=+g[b+172>>2];E=+g[b+176>>2];F=+g[b+180>>2];u=E+F==0;if((a[b+100>>0]|
0)!=0?!((c[b+224>>2]|0)==3|u):0){t=b+96|0;G=+g[t>>2];H=+g[d>>2]*+g[b+104>>2];I=G-+g[b+220>>2]*(B-x-+g[b+108>>2]);J=-H;K=I<H?I:H;H=K<J?J:K;g[t>>2]=H;K=H-G;L=x-E*K;M=B+F*K}else{L=x;M=B}if((a[b+112>>0]|0)!=0?(t=b+224|0,!((c[t>>2]|0)==0|u)):0){u=b+148|0;d=b+144|0;B=(c[k>>2]=z,+g[k>>2]);x=(c[k>>2]=v,+g[k>>2]);y=b+140|0;N=b+136|0;K=B-M*+g[u>>2]-x+L*+g[y>>2];G=A+M*+g[d>>2]-w-L*+g[N>>2];g[f>>2]=K;g[f+4>>2]=G;g[f+8>>2]=M-L;O=b+184|0;wm(h,O,f);H=+g[h>>2];J=-H;I=+g[h+4>>2];P=-I;Q=+g[h+8>>2];R=-Q;h=c[t>>2]|0;
do if((h|0)==3){t=b+84|0;g[t>>2]=+g[t>>2]-H;t=b+88|0;g[t>>2]=+g[t>>2]-I;t=b+92|0;g[t>>2]=+g[t>>2]-Q;S=J;T=P;U=R}else if((h|0)==2){t=b+84|0;f=b+92|0;V=+g[f>>2];W=V-Q;if(W>0){X=V*+g[b+212>>2]-G;g[m>>2]=V*+g[b+208>>2]-K;g[m+4>>2]=X;xm(n,O,m);X=+g[n>>2];V=+g[n+4>>2];Y=-+g[f>>2];g[t>>2]=X+ +g[t>>2];Z=b+88|0;g[Z>>2]=V+ +g[Z>>2];g[f>>2]=0;S=X;T=V;U=Y;break}else{g[t>>2]=+g[t>>2]-H;t=b+88|0;g[t>>2]=+g[t>>2]-I;g[f>>2]=W;S=J;T=P;U=R;break}}else if((h|0)==1){f=b+84|0;t=b+92|0;W=+g[t>>2];Y=W-Q;if(Y<0){V=W*+g[b+
212>>2]-G;g[j>>2]=W*+g[b+208>>2]-K;g[j+4>>2]=V;xm(l,O,j);V=+g[l>>2];W=+g[l+4>>2];X=-+g[t>>2];g[f>>2]=V+ +g[f>>2];Z=b+88|0;g[Z>>2]=W+ +g[Z>>2];g[t>>2]=0;S=V;T=W;U=X;break}else{g[f>>2]=+g[f>>2]-H;f=b+88|0;g[f>>2]=+g[f>>2]-I;g[t>>2]=Y;S=J;T=P;U=R;break}}else{S=J;T=P;U=R}while(0);_=x-C*S;$=B+D*S;aa=U+(T*+g[d>>2]-S*+g[u>>2]);ba=U+(T*+g[N>>2]-S*+g[y>>2]);ca=T;da=D*ca;ea=C*ca;fa=A+da;ga=+$;ha=w-ea;ia=+_;ja=E*ba;ka=F*aa;la=L-ja;ma=M+ka;na=c[q>>2]|0;oa=c[s>>2]|0;pa=oa+(na*12|0)|0;qa=+ha;ra=pa;sa=ra;g[sa>>
2]=ia;ta=ra+4|0;ua=ta;g[ua>>2]=qa;va=c[q>>2]|0;wa=c[s>>2]|0;xa=wa+(va*12|0)+8|0;g[xa>>2]=la;ya=c[r>>2]|0;za=wa+(ya*12|0)|0;Aa=+fa;Ba=za;Ca=Ba;g[Ca>>2]=ga;Da=Ba+4|0;Ea=Da;g[Ea>>2]=Aa;Fa=c[r>>2]|0;Ga=c[s>>2]|0;Ha=Ga+(Fa*12|0)+8|0;g[Ha>>2]=ma;i=e;return}y=b+148|0;N=b+144|0;T=(c[k>>2]=z,+g[k>>2]);S=(c[k>>2]=v,+g[k>>2]);v=b+140|0;z=b+136|0;U=-(A+M*+g[N>>2]-w-L*+g[z>>2]);g[p>>2]=-(T-M*+g[y>>2]-S+L*+g[v>>2]);g[p+4>>2]=U;xm(o,b+184|0,p);U=+g[o>>2];p=b+84|0;g[p>>2]=U+ +g[p>>2];B=+g[o+4>>2];o=b+88|0;g[o>>2]=
B+ +g[o>>2];_=S-C*U;$=T+D*U;aa=B*+g[N>>2]-U*+g[y>>2];ba=B*+g[z>>2]-U*+g[v>>2];ca=B;da=D*ca;ea=C*ca;fa=A+da;ga=+$;ha=w-ea;ia=+_;ja=E*ba;ka=F*aa;la=L-ja;ma=M+ka;na=c[q>>2]|0;oa=c[s>>2]|0;pa=oa+(na*12|0)|0;qa=+ha;ra=pa;sa=ra;g[sa>>2]=ia;ta=ra+4|0;ua=ta;g[ua>>2]=qa;va=c[q>>2]|0;wa=c[s>>2]|0;xa=wa+(va*12|0)+8|0;g[xa>>2]=la;ya=c[r>>2]|0;za=wa+(ya*12|0)|0;Aa=+fa;Ba=za;Ca=Ba;g[Ca>>2]=ga;Da=Ba+4|0;Ea=Da;g[Ea>>2]=Aa;Fa=c[r>>2]|0;Ga=c[s>>2]|0;Ha=Ga+(Fa*12|0)+8|0;g[Ha>>2]=ma;i=e;return}function Ih(b,d){b=b|0;
d=d|0;var e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0;e=i;f=b+128|0;h=c[f>>2]|0;j=d+28|0;d=c[j>>2]|0;l=d+(h*12|0)|0;m=l;n=c[m>>2]|0;o=+g[m+4>>2];p=+g[d+(h*12|0)+8>>2];h=b+132|0;m=c[h>>2]|0;q=d+(m*12|0)|0;r=c[q>>2]|0;s=+g[q+4>>2];t=+g[d+(m*12|0)+8>>2];m=b+176|0;d=b+180|0;if(a[b+112>>0]|0){u=+g[d>>2];v=+g[m>>2];q=c[b+224>>2]|0;if((q|0)==0|u+v==0){w=v;x=u;y=p;z=t;A=0}else{B=t-p-+g[b+116>>2];if((q|0)==1){C=
B-+g[b+120>>2];D=C+.03490658849477768;E=D<0?D:0;F=-C;G=-(+g[b+220>>2]*(E<-.13962635397911072?-.13962635397911072:E))}else if((q|0)==2){E=B-+g[b+124>>2];C=E+-.03490658849477768;D=C<.13962635397911072?C:.13962635397911072;F=E;G=-(+g[b+220>>2]*(D<0?0:D))}else if((q|0)==3){D=B-+g[b+120>>2];B=D<.13962635397911072?D:.13962635397911072;D=B<-.13962635397911072?-.13962635397911072:B;B=-(+g[b+220>>2]*D);if(D>0){F=D;G=B}else{F=-D;G=B}}else{F=0;G=0}w=v;x=u;y=p-G*v;z=t+G*u;A=F}}else{w=+g[m>>2];x=+g[d>>2];y=p;
z=t;A=0}t=+T(+y);p=+S(+y);F=+T(+z);u=+S(+z);G=+g[b+68>>2]-+g[b+152>>2];v=+g[b+72>>2]-+g[b+156>>2];B=p*G-t*v;D=t*G+p*v;v=+g[b+76>>2]-+g[b+160>>2];p=+g[b+80>>2]-+g[b+164>>2];G=u*v-F*p;t=F*v+u*p;p=(c[k>>2]=r,+g[k>>2]);u=(c[k>>2]=n,+g[k>>2]);v=p+G-u-B;F=s+t-o-D;E=+Q(+(v*v+F*F));C=+g[b+168>>2];H=+g[b+172>>2];I=C+H;J=I+D*(D*w)+t*(t*x);K=B*w;L=G*x;M=-(D*K)-t*L;N=I+B*K+G*L;L=J*N-M*M;if(L!=0)O=1/L;else O=L;L=-((v*N-F*M)*O);N=-((F*J-v*M)*O);O=+(u-C*L);u=+(p+H*L);p=+(o-C*N);b=l;g[b>>2]=O;g[b+4>>2]=p;b=c[j>>
2]|0;g[b+((c[f>>2]|0)*12|0)+8>>2]=y-w*(B*N-D*L);D=+(s+H*N);f=b+((c[h>>2]|0)*12|0)|0;g[f>>2]=u;g[f+4>>2]=D;g[(c[j>>2]|0)+((c[h>>2]|0)*12|0)+8>>2]=z+x*(G*N-t*L);if(!(E<=.004999999888241291)){P=0;i=e;return P|0}P=A<=.03490658849477768;i=e;return P|0}function Jh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+68>>2];h=+g[d+20>>2];i=+g[b+72>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Kh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=
0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+76>>2];h=+g[d+20>>2];i=+g[b+80>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Lh(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=+g[b+88>>2]*c;g[a>>2]=+g[b+84>>2]*c;g[a+4>>2]=d;return}function Mh(a,b){a=a|0;b=+b;return+(+g[a+92>>2]*b)}function Nh(a){a=a|0;return+(+g[(c[a+52>>2]|0)+72>>2]-+g[(c[a+48>>2]|0)+72>>2]-+g[a+116>>2])}function Oh(b){b=b|0;return(a[b+100>>0]|0)!=0|0}function Ph(d,f){d=d|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;j=
c[d+48>>2]|0;k=j+4|0;l=e[k>>1]|0;if(!(l&2)){b[k>>1]=l|2;g[j+160>>2]=0}j=c[d+52>>2]|0;l=j+4|0;k=e[l>>1]|0;if(k&2){m=d+100|0;n=f&1;a[m>>0]=n;i=h;return}b[l>>1]=k|2;g[j+160>>2]=0;m=d+100|0;n=f&1;a[m>>0]=n;i=h;return}function Qh(a,d){a=a|0;d=+d;var f=0,h=0,j=0,k=0,l=0;f=i;h=c[a+48>>2]|0;j=h+4|0;k=e[j>>1]|0;if(!(k&2)){b[j>>1]=k|2;g[h+160>>2]=0}h=c[a+52>>2]|0;k=h+4|0;j=e[k>>1]|0;if(j&2){l=a+108|0;g[l>>2]=d;i=f;return}b[k>>1]=j|2;g[h+160>>2]=0;l=a+108|0;g[l>>2]=d;i=f;return}function Rh(b){b=b|0;return(a[b+
112>>0]|0)!=0|0}function Sh(f,h){f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;k=f+112|0;if((h&1|0)==(d[k>>0]|0|0)){i=j;return}l=c[f+48>>2]|0;m=l+4|0;n=e[m>>1]|0;if(!(n&2)){b[m>>1]=n|2;g[l+160>>2]=0}l=c[f+52>>2]|0;n=l+4|0;m=e[n>>1]|0;if(!(m&2)){b[n>>1]=m|2;g[l+160>>2]=0}a[k>>0]=h&1;g[f+92>>2]=0;i=j;return}function Th(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Fm(4416,e);c[e>>2]=f;Fm(4448,e);c[e>>2]=j;Fm(4480,e);c[e>>2]=d[a+61>>0];Fm(4512,e);l=
+g[a+72>>2];h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(4552,e);l=+g[a+80>>2];h[k>>3]=+g[a+76>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(4600,e);h[k>>3]=+g[a+116>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(4648,e);c[e>>2]=d[a+112>>0];Fm(4680,e);h[k>>3]=+g[a+120>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(4712,e);h[k>>3]=+g[a+124>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(4744,e);
c[e>>2]=d[a+100>>0];Fm(4776,e);h[k>>3]=+g[a+108>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(4808,e);h[k>>3]=+g[a+104>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(4840,e);c[e>>2]=c[a+56>>2];Fm(4872,e);i=b;return}function Uh(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Vh(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=i;c[a+8>>2]=b;c[a+12>>2]=d;j=+g[e>>2]-+g[b+12>>2];k=e+4|0;l=+g[k>>2]-+g[b+16>>2];m=b+24|0;n=+g[m>>2];o=b+20|0;p=+g[o>>2];q=+(j*n+l*p);r=+(n*l-j*
p);b=a+20|0;g[b>>2]=q;g[b+4>>2]=r;r=+g[e>>2]-+g[d+12>>2];q=+g[k>>2]-+g[d+16>>2];p=+g[d+24>>2];j=+g[d+20>>2];l=+(r*p+q*j);n=+(p*q-r*j);d=a+28|0;g[d>>2]=l;g[d+4>>2]=n;n=+g[m>>2];l=+g[f>>2];j=+g[o>>2];r=+g[f+4>>2];q=+(n*l+j*r);p=+(n*r-l*j);f=a+36|0;g[f>>2]=q;g[f+4>>2]=p;i=h;return}function Wh(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0;e=i;Bh(b,d);c[b>>2]=4968;f=d+20|0;h=c[f+4>>2]|0;j=b+76|0;c[j>>2]=c[f>>2];c[j+4>>2]=h;h=d+28|0;j=c[h+4>>2]|0;f=b+84|0;c[f>>2]=c[h>>2];c[f+4>>2]=j;j=d+36|0;f=c[j>>2]|0;h=c[j+4>>
2]|0;j=b+92|0;c[j>>2]=f;c[j+4>>2]=h;j=b+100|0;g[j>>2]=-(c[k>>2]=h,+g[k>>2]);c[j+4>>2]=f;g[b+204>>2]=0;g[b+108>>2]=0;g[b+208>>2]=0;g[b+112>>2]=0;g[b+212>>2]=0;g[b+116>>2]=0;g[b+120>>2]=+g[d+48>>2];g[b+124>>2]=+g[d+52>>2];a[b+128>>0]=a[d+44>>0]|0;g[b+68>>2]=+g[d+56>>2];g[b+72>>2]=+g[d+60>>2];g[b+216>>2]=0;g[b+220>>2]=0;d=b+172|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;i=e;return}function Xh(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=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;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+132|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+136|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+140|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+148|0;c[o>>2]=r;c[o+4>>2]=s;t=+g[f+136>>2];o=b+156|0;g[o>>2]=t;u=+g[l+
136>>2];v=b+160|0;g[v>>2]=u;w=+g[f+144>>2];f=b+164|0;g[f>>2]=w;x=+g[l+144>>2];l=b+168|0;g[l>>2]=x;y=c[d+28>>2]|0;z=y+(h*12|0)|0;A=+g[z>>2];B=+g[z+4>>2];C=+g[y+(h*12|0)+8>>2];z=d+32|0;D=c[z>>2]|0;E=D+(h*12|0)|0;F=c[E>>2]|0;G=+g[E+4>>2];H=+g[D+(h*12|0)+8>>2];h=y+(m*12|0)|0;I=+g[h>>2];J=+g[h+4>>2];K=+g[y+(m*12|0)+8>>2];y=D+(m*12|0)|0;h=c[y>>2]|0;L=+g[y+4>>2];M=+g[D+(m*12|0)+8>>2];N=+T(+C);O=+S(+C);C=+T(+K);P=+S(+K);K=+g[b+76>>2]-(c[k>>2]=p,+g[k>>2]);Q=+g[b+80>>2]-(c[k>>2]=q,+g[k>>2]);R=O*K-N*Q;U=N*K+
O*Q;Q=+g[b+84>>2]-(c[k>>2]=r,+g[k>>2]);K=+g[b+88>>2]-(c[k>>2]=s,+g[k>>2]);V=P*Q-C*K;W=C*Q+P*K;K=I+V-A-R;A=J+W-B-U;B=+g[b+100>>2];J=+g[b+104>>2];I=O*B-N*J;P=N*B+O*J;J=+I;B=+P;s=b+180|0;g[s>>2]=J;g[s+4>>2]=B;B=R+K;R=U+A;U=P*B-I*R;g[b+196>>2]=U;J=V*P-W*I;g[b+200>>2]=J;Q=t+u;u=Q+U*(w*U)+J*(x*J);if(u>0)X=1/u;else X=u;g[b+204>>2]=X;s=b+212|0;g[s>>2]=0;r=b+216|0;g[r>>2]=0;q=b+220|0;g[q>>2]=0;X=+g[b+68>>2];if(X>0){u=+g[b+92>>2];t=+g[b+96>>2];C=O*u-N*t;Y=N*u+O*t;t=+C;O=+Y;p=b+172|0;g[p>>2]=t;g[p+4>>2]=O;O=
B*Y-R*C;g[b+188>>2]=O;R=V*Y-W*C;g[b+192>>2]=R;W=Q+O*(w*O)+R*(x*R);if(W>0){R=1/W;g[s>>2]=R;O=X*6.2831854820251465;X=O*(R*O);Q=+g[d>>2];V=Q*(O*(R*2*+g[b+72>>2])+Q*X);if(V>0)Z=1/V;else Z=V;g[q>>2]=Z;g[r>>2]=(K*C+A*Y)*Q*X*Z;X=W+Z;g[s>>2]=X;if(X>0)g[s>>2]=1/X}}else g[b+116>>2]=0;if(a[b+128>>0]|0){X=x+w;s=b+208|0;g[s>>2]=X;if(X>0)g[s>>2]=1/X}else{g[b+208>>2]=0;g[b+112>>2]=0}if(!(a[d+24>>0]|0)){g[b+108>>2]=0;g[b+116>>2]=0;g[b+112>>2]=0;_=G;$=F;aa=L;ba=h;ca=H;da=M;ea=c[j>>2]|0;fa=c[z>>2]|0;ga=fa+(ea*12|0)|
0;ha=+_;ia=ga;ja=ia;c[ja>>2]=$;ka=ia+4|0;la=ka;g[la>>2]=ha;ma=c[j>>2]|0;na=c[z>>2]|0;oa=na+(ma*12|0)+8|0;g[oa>>2]=ca;pa=c[n>>2]|0;qa=na+(pa*12|0)|0;ra=+aa;sa=qa;ta=sa;c[ta>>2]=ba;ua=sa+4|0;va=ua;g[va>>2]=ra;wa=c[n>>2]|0;xa=c[z>>2]|0;ya=xa+(wa*12|0)+8|0;g[ya>>2]=da;i=e;return}else{X=+g[d+8>>2];d=b+108|0;w=X*+g[d>>2];g[d>>2]=w;d=b+116|0;x=X*+g[d>>2];g[d>>2]=x;d=b+112|0;Z=X*+g[d>>2];g[d>>2]=Z;X=w*I+x*+g[b+172>>2];I=w*P+x*+g[b+176>>2];P=+g[o>>2];o=(g[k>>2]=(c[k>>2]=F,+g[k>>2])-X*P,c[k>>2]|0);W=+g[v>>
2];_=G-I*P;$=o;aa=L+I*W;ba=(g[k>>2]=(c[k>>2]=h,+g[k>>2])+X*W,c[k>>2]|0);ca=H-(Z+(w*U+x*+g[b+188>>2]))*+g[f>>2];da=M+(Z+(w*J+x*+g[b+192>>2]))*+g[l>>2];ea=c[j>>2]|0;fa=c[z>>2]|0;ga=fa+(ea*12|0)|0;ha=+_;ia=ga;ja=ia;c[ja>>2]=$;ka=ia+4|0;la=ka;g[la>>2]=ha;ma=c[j>>2]|0;na=c[z>>2]|0;oa=na+(ma*12|0)+8|0;g[oa>>2]=ca;pa=c[n>>2]|0;qa=na+(pa*12|0)|0;ra=+aa;sa=qa;ta=sa;c[ta>>2]=ba;ua=sa+4|0;va=ua;g[va>>2]=ra;wa=c[n>>2]|0;xa=c[z>>2]|0;ya=xa+(wa*12|0)+8|0;g[ya>>2]=da;i=e;return}}function Yh(a,b){a=a|0;b=b|0;var d=
0,e=0,f=0,h=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;d=i;e=+g[a+156>>2];f=+g[a+160>>2];h=+g[a+164>>2];j=+g[a+168>>2];k=a+132|0;l=c[k>>2]|0;m=b+32|0;n=c[m>>2]|0;o=n+(l*12|0)|0;p=+g[o+4>>2];q=+g[n+(l*12|0)+8>>2];l=a+136|0;r=c[l>>2]|0;s=n+(r*12|0)|0;t=+g[s+4>>2];u=+g[n+(r*12|0)+8>>2];v=+g[s>>2];w=+g[o>>2];x=+g[a+172>>2];y=+g[a+176>>2];z=+g[a+192>>2];A=+g[a+188>>2];o=a+116|0;B=+g[o>>2];C=+g[a+212>>2]*(+g[a+216>>2]+(u*z+(x*(v-w)+y*(t-p))-q*A)+ +g[a+220>>2]*
B);D=-C;g[o>>2]=B-C;C=x*D;x=y*D;y=w-e*C;w=p-e*x;p=q-h*(A*D);A=v+f*C;C=t+f*x;x=u+j*(z*D);o=a+112|0;D=+g[o>>2];z=+g[b>>2]*+g[a+120>>2];u=D-+g[a+208>>2]*(x-p-+g[a+124>>2]);t=-z;v=u<z?u:z;z=v<t?t:v;g[o>>2]=z;v=z-D;D=p-h*v;p=x+j*v;v=+g[a+180>>2];x=+g[a+184>>2];z=+g[a+200>>2];t=+g[a+196>>2];u=+g[a+204>>2]*((A-y)*v+(C-w)*x+z*p-t*D);q=-u;o=a+108|0;g[o>>2]=+g[o>>2]-u;u=v*q;v=x*q;x=+(y-e*u);y=+(A+f*u);u=+(w-e*v);o=(c[m>>2]|0)+((c[k>>2]|0)*12|0)|0;g[o>>2]=x;g[o+4>>2]=u;o=c[m>>2]|0;g[o+((c[k>>2]|0)*12|0)+8>>
2]=D-h*(t*q);t=+(C+f*v);k=o+((c[l>>2]|0)*12|0)|0;g[k>>2]=y;g[k+4>>2]=t;g[(c[m>>2]|0)+((c[l>>2]|0)*12|0)+8>>2]=p+j*(z*q);i=d;return}function Zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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,J=0,K=0;d=i;e=a+132|0;f=c[e>>2]|0;h=b+28|0;b=c[h>>2]|0;j=b+(f*12|0)|0;k=+g[j+4>>2];l=+g[b+(f*12|0)+8>>2];f=a+136|0;m=c[f>>2]|0;n=b+(m*12|0)|0;o=+g[n+4>>2];p=+g[b+(m*12|0)+8>>2];q=+T(+l);r=+S(+l);s=+T(+p);t=+S(+p);u=+g[a+
76>>2]-+g[a+140>>2];v=+g[a+80>>2]-+g[a+144>>2];w=r*u-q*v;x=q*u+r*v;v=+g[a+84>>2]-+g[a+148>>2];u=+g[a+88>>2]-+g[a+152>>2];y=t*v-s*u;z=s*v+t*u;u=+g[n>>2];t=+g[j>>2];v=u-t+y-w;s=o-k+z-x;A=+g[a+100>>2];B=+g[a+104>>2];C=r*A-q*B;D=q*A+r*B;B=C*v+D*s;r=+g[a+156>>2];A=+g[a+160>>2];q=+g[a+164>>2];E=+g[a+196>>2];F=+g[a+168>>2];G=+g[a+200>>2];H=r+A+E*(q*E)+G*(F*G);if(H!=0)I=-B/H;else I=0;H=C*I;G=D*I;E=+(t-H*r);t=+(u+H*A);H=+(k-G*r);a=(c[h>>2]|0)+((c[e>>2]|0)*12|0)|0;g[a>>2]=E;g[a+4>>2]=H;a=c[h>>2]|0;g[a+((c[e>>
2]|0)*12|0)+8>>2]=l-(D*(w+v)-C*(x+s))*I*q;q=+(o+G*A);e=a+((c[f>>2]|0)*12|0)|0;g[e>>2]=t;g[e+4>>2]=q;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=p+(y*D-z*C)*I*F;if(B>0){J=B;K=J<=.004999999888241291;i=d;return K|0}J=-B;K=J<=.004999999888241291;i=d;return K|0}function _h(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+76>>2];h=+g[d+20>>2];i=+g[b+80>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function $h(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,
i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+84>>2];h=+g[d+20>>2];i=+g[b+88>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function ai(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0;d=+g[b+108>>2];e=+g[b+116>>2];f=(d*+g[b+184>>2]+e*+g[b+176>>2])*c;g[a>>2]=(d*+g[b+180>>2]+e*+g[b+172>>2])*c;g[a+4>>2]=f;return}function bi(a,b){a=a|0;b=+b;return+(+g[a+112>>2]*b)}function ci(a,d){a=a|0;d=+d;var f=0,h=0,j=0,k=0,l=0;f=i;h=c[a+48>>2]|0;j=h+4|0;k=e[j>>1]|0;if(!(k&2)){b[j>>1]=k|2;g[h+160>>
2]=0}h=c[a+52>>2]|0;k=h+4|0;j=e[k>>1]|0;if(j&2){l=a+124|0;g[l>>2]=d;i=f;return}b[k>>1]=j|2;g[h+160>>2]=0;l=a+124|0;g[l>>2]=d;i=f;return}function di(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Fm(5016,e);c[e>>2]=f;Fm(5040,e);c[e>>2]=j;Fm(5072,e);c[e>>2]=d[a+61>>0];Fm(5104,e);l=+g[a+80>>2];h[k>>3]=+g[a+76>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(5144,e);l=+g[a+88>>2];h[k>>3]=+g[a+84>>
2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(5192,e);l=+g[a+96>>2];h[k>>3]=+g[a+92>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(5240,e);c[e>>2]=d[a+128>>0];Fm(5280,e);h[k>>3]=+g[a+124>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(5312,e);h[k>>3]=+g[a+120>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(5344,e);h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(5376,e);h[k>>3]=+g[a+72>>2];c[e>>2]=
c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(5408,e);c[e>>2]=c[a+56>>2];Fm(5440,e);i=b;return}function ei(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function fi(a,b,d,e,f,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=+k;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;l=i;c[a+8>>2]=b;c[a+12>>2]=d;m=e;n=c[m+4>>2]|0;o=a+20|0;c[o>>2]=c[m>>2];c[o+4>>2]=n;n=f;o=c[n+4>>2]|0;m=a+28|0;c[m>>2]=c[n>>2];c[m+4>>2]=o;p=+g[h>>2]-+g[b+12>>2];o=h+4|0;q=+g[o>>2]-+g[b+16>>2];r=+g[b+24>>2];s=+g[b+20>>2];t=+(p*r+q*s);u=+(r*q-p*s);b=a+
36|0;g[b>>2]=t;g[b+4>>2]=u;u=+g[j>>2]-+g[d+12>>2];b=j+4|0;t=+g[b>>2]-+g[d+16>>2];s=+g[d+24>>2];p=+g[d+20>>2];q=+(u*s+t*p);r=+(s*t-u*p);d=a+44|0;g[d>>2]=q;g[d+4>>2]=r;r=+g[h>>2]-+g[e>>2];q=+g[o>>2]-+g[e+4>>2];g[a+52>>2]=+Q(+(r*r+q*q));q=+g[j>>2]-+g[f>>2];r=+g[b>>2]-+g[f+4>>2];g[a+56>>2]=+Q(+(q*q+r*r));g[a+60>>2]=k;i=l;return}function gi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0;d=i;Bh(a,b);c[a>>2]=5528;e=b+20|0;f=c[e+4>>2]|0;h=a+68|0;c[h>>2]=c[e>>2];c[h+4>>2]=f;f=b+28|0;h=c[f+4>>2]|0;e=a+76|
0;c[e>>2]=c[f>>2];c[e+4>>2]=h;h=b+36|0;e=c[h+4>>2]|0;f=a+92|0;c[f>>2]=c[h>>2];c[f+4>>2]=e;e=b+44|0;f=c[e+4>>2]|0;h=a+100|0;c[h>>2]=c[e>>2];c[h+4>>2]=f;j=+g[b+52>>2];g[a+84>>2]=j;k=+g[b+56>>2];g[a+88>>2]=k;l=+g[b+60>>2];g[a+112>>2]=l;g[a+108>>2]=j+l*k;g[a+116>>2]=0;i=d;return}function hi(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=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;e=i;f=c[b+48>>2]|0;h=c[f+8>>2]|0;j=b+120|0;c[j>>2]=h;l=c[b+52>>2]|0;m=c[l+8>>2]|0;n=b+124|0;c[n>>2]=m;o=f+44|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=b+160|0;c[o>>2]=p;c[o+4>>2]=q;o=l+44|0;r=c[o>>2]|0;s=c[o+4>>2]|0;o=b+168|0;c[o>>2]=r;c[o+4>>2]=s;s=b+176|0;g[s>>2]=+g[f+136>>2];o=b+180|0;g[o>>2]=+g[l+136>>2];t=b+184|0;g[t>>2]=+g[f+144>>2];f=b+188|0;g[f>>2]=+g[l+144>>2];l=c[d+28>>2]|0;u=l+(h*12|0)|0;v=+g[u>>2];w=+g[u+4>>2];
x=+g[l+(h*12|0)+8>>2];u=d+32|0;y=c[u>>2]|0;z=y+(h*12|0)|0;A=c[z>>2]|0;B=+g[z+4>>2];C=+g[y+(h*12|0)+8>>2];h=l+(m*12|0)|0;D=+g[h>>2];E=+g[h+4>>2];F=+g[l+(m*12|0)+8>>2];l=y+(m*12|0)|0;h=c[l>>2]|0;G=+g[l+4>>2];H=+g[y+(m*12|0)+8>>2];I=+T(+x);J=+S(+x);x=+T(+F);K=+S(+F);m=b+144|0;F=+g[b+92>>2]-(c[k>>2]=p,+g[k>>2]);L=+g[b+96>>2]-(c[k>>2]=q,+g[k>>2]);M=J*F-I*L;N=I*F+J*L;L=+M;J=+N;q=m;g[q>>2]=L;g[q+4>>2]=J;J=+g[b+100>>2]-(c[k>>2]=r,+g[k>>2]);L=+g[b+104>>2]-+g[b+172>>2];F=K*J-x*L;I=x*J+K*L;L=+F;K=+I;r=b+152|
0;g[r>>2]=L;g[r+4>>2]=K;r=b+128|0;K=v+M-+g[b+68>>2];M=w+N-+g[b+72>>2];N=+K;w=+M;q=r;g[q>>2]=N;g[q+4>>2]=w;q=b+136|0;w=D+F-+g[b+76>>2];D=E+I-+g[b+80>>2];E=+w;N=+D;p=q;g[p>>2]=E;g[p+4>>2]=N;N=+Q(+(K*K+M*M));E=+Q(+(w*w+D*D));if(N>.04999999701976776){v=1/N;N=K*v;g[r>>2]=N;O=v*M;P=N}else{g[r>>2]=0;O=0;P=0}g[b+132>>2]=O;if(E>.04999999701976776){N=1/E;E=N*w;g[q>>2]=E;R=N*D;U=E}else{g[q>>2]=0;R=0;U=0}g[b+140>>2]=R;E=+g[m>>2];D=+g[b+148>>2];N=E*O-D*P;w=F*R-I*U;M=+g[s>>2];v=+g[t>>2];K=+g[o>>2];L=+g[f>>2];J=
+g[b+112>>2];x=M+N*(N*v)+J*J*(K+w*(w*L));if(x>0)V=1/x;else V=x;g[b+192>>2]=V;if(!(a[d+24>>0]|0)){g[b+116>>2]=0;W=B;X=A;Y=G;Z=h;_=C;$=H;aa=c[j>>2]|0;ba=c[u>>2]|0;ca=ba+(aa*12|0)|0;da=+W;ea=ca;fa=ea;c[fa>>2]=X;ga=ea+4|0;ha=ga;g[ha>>2]=da;ia=c[j>>2]|0;ja=c[u>>2]|0;ka=ja+(ia*12|0)+8|0;g[ka>>2]=_;la=c[n>>2]|0;ma=ja+(la*12|0)|0;na=+Y;oa=ma;pa=oa;c[pa>>2]=Z;qa=oa+4|0;ra=qa;g[ra>>2]=na;sa=c[n>>2]|0;ta=c[u>>2]|0;ua=ta+(sa*12|0)+8|0;g[ua>>2]=$;i=e;return}else{f=b+116|0;V=+g[d+8>>2]*+g[f>>2];g[f>>2]=V;x=-V;
w=P*x;P=O*x;x=-(V*J);J=U*x;U=R*x;f=(g[k>>2]=(c[k>>2]=A,+g[k>>2])+w*M,c[k>>2]|0);W=B+P*M;X=f;Y=G+U*K;Z=(g[k>>2]=(c[k>>2]=h,+g[k>>2])+J*K,c[k>>2]|0);_=C+v*(P*E-w*D);$=H+L*(U*F-J*I);aa=c[j>>2]|0;ba=c[u>>2]|0;ca=ba+(aa*12|0)|0;da=+W;ea=ca;fa=ea;c[fa>>2]=X;ga=ea+4|0;ha=ga;g[ha>>2]=da;ia=c[j>>2]|0;ja=c[u>>2]|0;ka=ja+(ia*12|0)+8|0;g[ka>>2]=_;la=c[n>>2]|0;ma=ja+(la*12|0)|0;na=+Y;oa=ma;pa=oa;c[pa>>2]=Z;qa=oa+4|0;ra=qa;g[ra>>2]=na;sa=c[n>>2]|0;ta=c[u>>2]|0;ua=ta+(sa*12|0)+8|0;g[ua>>2]=$;i=e;return}}function ii(a,
b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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=i;e=a+120|0;f=c[e>>2]|0;h=b+32|0;b=c[h>>2]|0;j=b+(f*12|0)|0;k=+g[j+4>>2];l=+g[b+(f*12|0)+8>>2];f=a+124|0;m=c[f>>2]|0;n=b+(m*12|0)|0;o=+g[n+4>>2];p=+g[b+(m*12|0)+8>>2];q=+g[a+148>>2];r=+g[a+144>>2];s=+g[j>>2];t=+g[a+156>>2];u=+g[a+152>>2];v=+g[n>>2];w=+g[a+128>>2];x=+g[a+132>>2];y=+g[a+112>>2];z=+g[a+136>>2];A=+g[a+140>>2];B=+g[a+192>>2]*(-((s-l*q)*w+(k+l*r)*x)-y*((v-p*t)*z+(o+p*u)*
A));n=a+116|0;g[n>>2]=+g[n>>2]-B;C=w*B;w=x*B;x=y*B;B=z*x;z=x*A;A=+g[a+176>>2];x=+(s+C*A);s=l+ +g[a+184>>2]*(w*r-C*q);q=+g[a+180>>2];C=+(v+B*q);v=p+ +g[a+188>>2]*(z*u-B*t);t=+(k+w*A);a=b+((c[e>>2]|0)*12|0)|0;g[a>>2]=x;g[a+4>>2]=t;a=c[h>>2]|0;g[a+((c[e>>2]|0)*12|0)+8>>2]=s;s=+(o+z*q);e=a+((c[f>>2]|0)*12|0)|0;g[e>>2]=C;g[e+4>>2]=s;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=v;i=d;return}function ji(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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,J=0,K=0,L=0,M=0;d=i;e=a+120|0;f=c[e>>2]|0;h=b+28|0;b=c[h>>2]|0;j=b+(f*12|0)|0;k=j;l=+g[k+4>>2];m=+g[b+(f*12|0)+8>>2];f=a+124|0;n=c[f>>2]|0;o=b+(n*12|0)|0;p=+g[o+4>>2];q=+g[b+(n*12|0)+8>>2];r=+T(+m);s=+S(+m);t=+T(+q);u=+S(+q);v=+g[a+92>>2]-+g[a+160>>2];w=+g[a+96>>2]-+g[a+164>>2];x=s*v-r*w;y=r*v+s*w;w=+g[a+100>>2]-+g[a+168>>2];s=+g[a+104>>2]-+g[a+172>>2];v=u*w-t*s;r=t*w+u*s;s=+g[k>>2];u=s+x-+g[a+68>>2];w=l+y-+g[a+72>>2];t=+g[o>>2];z=t+v-+g[a+76>>2];A=p+r-+g[a+80>>2];
B=+Q(+(u*u+w*w));C=+Q(+(z*z+A*A));if(B>.04999999701976776){D=1/B;E=w*D;F=u*D}else{E=0;F=0}if(C>.04999999701976776){D=1/C;G=A*D;H=z*D}else{G=0;H=0}D=x*E-y*F;z=v*G-r*H;A=+g[a+176>>2];u=+g[a+184>>2];w=+g[a+180>>2];I=+g[a+188>>2];J=+g[a+112>>2];K=A+D*(D*u)+J*J*(w+z*(z*I));if(K>0)L=1/K;else L=K;K=+g[a+108>>2]-B-C*J;if(K>0)M=K;else M=-K;C=L*K;K=F*C;F=E*C;E=C*J;J=H*E;H=G*E;E=+(s+K*A);s=+(t+J*w);t=+(l+F*A);a=j;g[a>>2]=E;g[a+4>>2]=t;a=c[h>>2]|0;g[a+((c[e>>2]|0)*12|0)+8>>2]=m+(x*F-y*K)*u;u=+(p+H*w);e=a+((c[f>>
2]|0)*12|0)|0;g[e>>2]=s;g[e+4>>2]=u;g[(c[h>>2]|0)+((c[f>>2]|0)*12|0)+8>>2]=q+I*(v*H-r*J);i=d;return M<.004999999888241291|0}function ki(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+48>>2]|0;e=+g[d+24>>2];f=+g[b+92>>2];h=+g[d+20>>2];i=+g[b+96>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function li(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+100>>2];h=+g[d+20>>2];i=+g[b+104>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-
h*i);g[a+4>>2]=j;return}function mi(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0;d=+g[b+116>>2];e=d*+g[b+140>>2]*c;g[a>>2]=d*+g[b+136>>2]*c;g[a+4>>2]=e;return}function ni(a,b){a=a|0;b=+b;return 0}function oi(a){a=a|0;var b=0,e=0,f=0,j=0,l=0;b=i;i=i+16|0;e=b;f=c[(c[a+48>>2]|0)+8>>2]|0;j=c[(c[a+52>>2]|0)+8>>2]|0;Fm(5576,e);c[e>>2]=f;Fm(5600,e);c[e>>2]=j;Fm(5632,e);c[e>>2]=d[a+61>>0];Fm(5664,e);l=+g[a+72>>2];h[k>>3]=+g[a+68>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+
4>>2];Fm(5704,e);l=+g[a+80>>2];h[k>>3]=+g[a+76>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(5752,e);l=+g[a+96>>2];h[k>>3]=+g[a+92>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(5800,e);l=+g[a+104>>2];h[k>>3]=+g[a+100>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];j=e+8|0;h[k>>3]=l;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];Fm(5848,e);h[k>>3]=+g[a+84>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(5896,e);h[k>>3]=+g[a+
88>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(5928,e);h[k>>3]=+g[a+112>>2];c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];Fm(5960,e);c[e>>2]=c[a+56>>2];Fm(5984,e);i=b;return}function pi(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+68|0;g[c>>2]=+g[c>>2]-+g[b>>2];c=b+4|0;d=a+72|0;g[d>>2]=+g[d>>2]-+g[c>>2];d=a+76|0;g[d>>2]=+g[d>>2]-+g[b>>2];b=a+80|0;g[b>>2]=+g[b>>2]-+g[c>>2];return}function qi(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function ri(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,j=0;g=i;h=um(f,148)|0;if(!h){j=
0;i=g;return j|0}yi(h,a,b,d,e);c[h>>2]=6072;j=h;i=g;return j|0}function si(a,b){a=a|0;b=b|0;var d=0;d=i;nb[c[(c[a>>2]|0)+4>>2]&127](a);vm(b,a,148);i=d;return}function ti(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0;h=i;i=i+48|0;j=h;k=c[(c[a+48>>2]|0)+12>>2]|0;c[j>>2]=488;c[j+4>>2]=1;g[j+8>>2]=.009999999776482582;l=j+28|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;b[l+16>>1]=0;Te(k,j,c[a+56>>2]|0);tf(d,j,e,c[(c[a+52>>2]|0)+12>>2]|0,f);i=h;return}function ui(a){a=a|0;return}function vi(a){a=
a|0;var b=0;b=i;Vm(a);i=b;return}function wi(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;if(!(a[6352]|0)){c[1540]=6;c[1541]=53;a[6168]=1;c[1564]=7;c[1565]=54;a[6264]=1;c[1546]=7;c[1547]=54;a[6192]=0;c[1570]=8;c[1571]=55;a[6288]=1;c[1552]=9;c[1553]=56;a[6216]=1;c[1543]=9;c[1544]=56;a[6180]=0;c[1558]=10;c[1559]=57;a[6240]=1;c[1567]=10;c[1568]=57;a[6276]=0;c[1576]=11;c[1577]=58;a[6312]=1;c[1549]=11;c[1550]=58;a[6204]=0;c[1582]=12;c[1583]=59;a[6336]=1;c[1573]=12;c[1574]=59;a[6300]=
0;a[6352]=1}j=c[(c[b+12>>2]|0)+4>>2]|0;k=c[(c[e+12>>2]|0)+4>>2]|0;l=c[6160+(j*48|0)+(k*12|0)>>2]|0;if(!l){m=0;i=h;return m|0}if(!(a[6160+(j*48|0)+(k*12|0)+8>>0]|0)){m=xb[l&15](e,f,b,d,g)|0;i=h;return m|0}else{m=xb[l&15](b,d,e,f,g)|0;i=h;return m|0}return 0}function xi(d,f){d=d|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;j=c[d+48>>2]|0;k=c[d+52>>2]|0;if(((c[d+124>>2]|0)>0?(a[j+38>>0]|0)==0:0)?(a[k+38>>0]|0)==0:0){l=c[j+8>>2]|0;m=l+4|0;n=e[m>>1]|0;if(!(n&2)){b[m>>1]=n|2;g[l+160>>2]=0}l=c[k+8>>2]|0;n=l+
4|0;m=e[n>>1]|0;if(!(m&2)){b[n>>1]=m|2;g[l+160>>2]=0}}pb[c[6160+((c[(c[j+12>>2]|0)+4>>2]|0)*48|0)+((c[(c[k+12>>2]|0)+4>>2]|0)*12|0)+4>>2]&63](d,f);i=h;return}function yi(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0;h=i;c[a>>2]=6368;c[a+4>>2]=4;c[a+48>>2]=b;c[a+52>>2]=e;c[a+56>>2]=d;c[a+60>>2]=f;c[a+124>>2]=0;c[a+128>>2]=0;f=b+16|0;d=a+8|0;j=d+40|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(j|0));g[a+136>>2]=+Q(+(+g[f>>2]*+g[e+16>>2]));k=+g[b+20>>2];l=+g[e+20>>2];g[a+140>>2]=k>l?k:l;g[a+144>>
2]=0;i=h;return}function zi(d,f){d=d|0;f=f|0;var h=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;h=i;i=i+64|0;j=h;k=d+64|0;l=j+0|0;m=k+0|0;n=l+64|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));m=d+4|0;l=c[m>>2]|0;c[m>>2]=l|4;n=l>>>1;l=c[d+48>>2]|0;o=c[d+52>>2]|0;p=(a[o+38>>0]|a[l+38>>0])<<24>>24!=0;q=c[l+8>>2]|0;r=c[o+8>>2]|0;s=q+12|0;t=r+12|0;if(!p){yb[c[c[d>>2]>>2]&31](d,k,s,t);k=d+124|0;u=(c[k>>2]|0)>0;a:do if(u){v=c[j+60>>2]|0;if((v|0)>0)w=
0;else{x=0;while(1){g[d+(x*20|0)+72>>2]=0;g[d+(x*20|0)+76>>2]=0;x=x+1|0;if((x|0)>=(c[k>>2]|0))break a}}do{x=d+(w*20|0)+72|0;g[x>>2]=0;y=d+(w*20|0)+76|0;g[y>>2]=0;z=c[d+(w*20|0)+80>>2]|0;A=0;while(1){B=A+1|0;if((c[j+(A*20|0)+16>>2]|0)==(z|0)){C=7;break}if((B|0)<(v|0))A=B;else break}if((C|0)==7){C=0;g[x>>2]=+g[j+(A*20|0)+8>>2];g[y>>2]=+g[j+(A*20|0)+12>>2]}w=w+1|0}while((w|0)<(c[k>>2]|0))}while(0);k=n&1;if(u^(k|0)!=0){w=q+4|0;C=e[w>>1]|0;if(!(C&2)){b[w>>1]=C|2;g[q+160>>2]=0}q=r+4|0;C=e[q>>1]|0;if(!(C&
2)){b[q>>1]=C|2;g[r+160>>2]=0;D=k;E=u}else{D=k;E=u}}else{D=k;E=u}}else{u=yf(c[l+12>>2]|0,c[d+56>>2]|0,c[o+12>>2]|0,c[d+60>>2]|0,s,t)|0;c[d+124>>2]=0;D=n&1;E=u}u=c[m>>2]|0;c[m>>2]=E?u|2:u&-3;u=(D|0)==0;D=(f|0)!=0;m=E&D;if(u&m)pb[c[(c[f>>2]|0)+8>>2]&63](f,d);if(D&(E^1)&(u^1))pb[c[(c[f>>2]|0)+12>>2]&63](f,d);if(!(m&(p^1))){i=h;return}rb[c[(c[f>>2]|0)+32>>2]&7](f,d,j);i=h;return}function Ai(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}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;e=i;b=um(f,148)|
0;if(!b){g=0;i=e;return g|0}yi(b,a,0,d,0);c[b>>2]=6392;g=b;i=e;return g|0}function Ci(a,b){a=a|0;b=b|0;var d=0;d=i;nb[c[(c[a>>2]|0)+4>>2]&127](a);vm(b,a,148);i=d;return}function Di(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;ff(b,c[(c[a+48>>2]|0)+12>>2]|0,d,c[(c[a+52>>2]|0)+12>>2]|0,e);i=f;return}function Ei(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Fi(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=i;b=um(f,148)|0;if(!b){g=0;i=e;return g|0}yi(b,a,0,d,0);c[b>>2]=6464;g=b;i=e;return g|0}function Gi(a,
b){a=a|0;b=b|0;var d=0;d=i;nb[c[(c[a>>2]|0)+4>>2]&127](a);vm(b,a,148);i=d;return}function Hi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;ef(b,c[(c[a+48>>2]|0)+12>>2]|0,d,c[(c[a+52>>2]|0)+12>>2]|0,e);i=f;return}function Ii(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Ji(b,d){b=b|0;d=d|0;var e=0,f=0,h=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;e=i;c[b+0>>2]=c[d+0>>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];f=c[d+44>>2]|0;h=b+36|0;c[h>>2]=f;j=c[d+32>>2]|0;k=b+52|0;c[k>>2]=j;l=b+40|0;c[l>>2]=Om(f,j*88|0)|0;j=Om(c[h>>2]|0,(c[k>>2]|0)*156|0)|0;h=b+44|0;c[h>>2]=j;c[b+28>>2]=c[d+36>>2];c[b+32>>2]=c[d+40>>2];f=c[d+28>>2]|0;d=b+48|0;c[d>>2]=f;if((c[k>>2]|0)<=0){i=e;return}m=b+24|0;n=b+8|0;b=f;f=j;j=0;while(1){o=c[b+(j<<2)>>2]|0;p=c[o+48>>2]|0;q=c[o+52>>2]|0;r=+g[(c[p+12>>2]|0)+8>>2];s=+g[(c[q+12>>2]|0)+8>>2];t=c[p+8>>2]|0;p=c[q+8>>2]|0;q=c[o+124>>2]|0;g[f+(j*156|0)+136>>2]=+g[o+
136>>2];g[f+(j*156|0)+140>>2]=+g[o+140>>2];g[f+(j*156|0)+144>>2]=+g[o+144>>2];u=t+8|0;c[f+(j*156|0)+112>>2]=c[u>>2];v=p+8|0;c[f+(j*156|0)+116>>2]=c[v>>2];w=t+136|0;g[f+(j*156|0)+120>>2]=+g[w>>2];x=p+136|0;g[f+(j*156|0)+124>>2]=+g[x>>2];y=t+144|0;g[f+(j*156|0)+128>>2]=+g[y>>2];z=p+144|0;g[f+(j*156|0)+132>>2]=+g[z>>2];c[f+(j*156|0)+152>>2]=j;c[f+(j*156|0)+148>>2]=q;A=f+(j*156|0)+80|0;c[A+0>>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[A+28>>2]=0;A=c[l>>2]|0;c[A+
(j*88|0)+32>>2]=c[u>>2];c[A+(j*88|0)+36>>2]=c[v>>2];g[A+(j*88|0)+40>>2]=+g[w>>2];g[A+(j*88|0)+44>>2]=+g[x>>2];x=t+44|0;t=c[x+4>>2]|0;w=A+(j*88|0)+48|0;c[w>>2]=c[x>>2];c[w+4>>2]=t;t=p+44|0;p=c[t+4>>2]|0;w=A+(j*88|0)+56|0;c[w>>2]=c[t>>2];c[w+4>>2]=p;g[A+(j*88|0)+64>>2]=+g[y>>2];g[A+(j*88|0)+68>>2]=+g[z>>2];z=o+104|0;y=c[z+4>>2]|0;p=A+(j*88|0)+16|0;c[p>>2]=c[z>>2];c[p+4>>2]=y;y=o+112|0;p=c[y+4>>2]|0;z=A+(j*88|0)+24|0;c[z>>2]=c[y>>2];c[z+4>>2]=p;c[A+(j*88|0)+84>>2]=q;g[A+(j*88|0)+76>>2]=r;g[A+(j*88|0)+
80>>2]=s;c[A+(j*88|0)+72>>2]=c[o+120>>2];if((q|0)>0){p=0;do{if(!(a[m>>0]|0)){g[f+(j*156|0)+(p*36|0)+16>>2]=0;g[f+(j*156|0)+(p*36|0)+20>>2]=0}else{s=+g[n>>2];g[f+(j*156|0)+(p*36|0)+16>>2]=s*+g[o+(p*20|0)+72>>2];g[f+(j*156|0)+(p*36|0)+20>>2]=s*+g[o+(p*20|0)+76>>2]}z=f+(j*156|0)+(p*36|0)|0;g[f+(j*156|0)+(p*36|0)+24>>2]=0;g[f+(j*156|0)+(p*36|0)+28>>2]=0;g[f+(j*156|0)+(p*36|0)+32>>2]=0;c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;z=o+(p*20|0)+64|0;y=c[z+4>>2]|0;w=A+(j*88|0)+(p<<3)|0;c[w>>2]=c[z>>2];
c[w+4>>2]=y;p=p+1|0}while((p|0)!=(q|0))}q=j+1|0;if((q|0)>=(c[k>>2]|0))break;b=c[d>>2]|0;f=c[h>>2]|0;j=q}i=e;return}function Ki(a){a=a|0;var b=0,d=0;b=i;d=a+36|0;Qm(c[d>>2]|0,c[a+44>>2]|0);Qm(c[d>>2]|0,c[a+40>>2]|0);i=b;return}function Li(a){a=a|0;var b=0,d=0,e=0,f=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=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;b=i;i=i+64|0;d=b+48|0;e=b+32|0;f=
b;h=a+52|0;if((c[h>>2]|0)<=0){i=b;return}j=a+44|0;k=a+40|0;l=a+48|0;m=a+28|0;n=a+32|0;a=d+8|0;o=d+12|0;p=e+8|0;q=e+12|0;r=0;do{s=c[j>>2]|0;t=c[k>>2]|0;u=+g[t+(r*88|0)+76>>2];v=+g[t+(r*88|0)+80>>2];w=(c[(c[l>>2]|0)+(c[s+(r*156|0)+152>>2]<<2)>>2]|0)+64|0;x=c[s+(r*156|0)+112>>2]|0;y=c[s+(r*156|0)+116>>2]|0;z=+g[s+(r*156|0)+120>>2];A=+g[s+(r*156|0)+124>>2];B=+g[s+(r*156|0)+128>>2];C=+g[s+(r*156|0)+132>>2];D=t+(r*88|0)+48|0;E=+g[D>>2];F=+g[D+4>>2];D=t+(r*88|0)+56|0;G=+g[D>>2];H=+g[D+4>>2];D=c[m>>2]|0;
t=D+(x*12|0)|0;I=+g[t>>2];J=+g[t+4>>2];K=+g[D+(x*12|0)+8>>2];t=c[n>>2]|0;L=t+(x*12|0)|0;M=+g[L>>2];N=+g[L+4>>2];O=+g[t+(x*12|0)+8>>2];x=D+(y*12|0)|0;P=+g[x>>2];Q=+g[x+4>>2];R=+g[D+(y*12|0)+8>>2];D=t+(y*12|0)|0;U=+g[D>>2];V=+g[D+4>>2];W=+g[t+(y*12|0)+8>>2];X=+T(+K);g[a>>2]=X;Y=+S(+K);g[o>>2]=Y;K=+T(+R);g[p>>2]=K;Z=+S(+R);g[q>>2]=Z;R=+(I-(E*Y-F*X));_=+(J-(F*Y+E*X));y=d;g[y>>2]=R;g[y+4>>2]=_;_=+(P-(G*Z-H*K));R=+(Q-(H*Z+G*K));y=e;g[y>>2]=_;g[y+4>>2]=R;wf(f,w,d,u,e,v);w=s+(r*156|0)+72|0;y=f;t=c[y+4>>2]|
0;D=w;c[D>>2]=c[y>>2];c[D+4>>2]=t;t=s+(r*156|0)+148|0;D=c[t>>2]|0;do if((D|0)>0){y=s+(r*156|0)+76|0;v=z+A;x=s+(r*156|0)+140|0;L=0;do{$=f+(L<<3)+8|0;u=+g[$>>2]-I;aa=f+(L<<3)+12|0;R=+u;_=+(+g[aa>>2]-J);ba=s+(r*156|0)+(L*36|0)|0;g[ba>>2]=R;g[ba+4>>2]=_;_=+g[$>>2]-P;R=+_;K=+(+g[aa>>2]-Q);aa=s+(r*156|0)+(L*36|0)+8|0;g[aa>>2]=R;g[aa+4>>2]=K;K=+g[y>>2];R=+g[s+(r*156|0)+(L*36|0)+4>>2];G=+g[w>>2];Z=u*K-R*G;H=+g[s+(r*156|0)+(L*36|0)+12>>2];X=K*_-G*H;G=v+Z*(B*Z)+X*(C*X);if(G>0)ca=1/G;else ca=0;g[s+(r*156|0)+
(L*36|0)+24>>2]=ca;G=+g[y>>2];X=-+g[w>>2];Z=u*X-G*R;K=_*X-G*H;G=v+Z*(B*Z)+K*(C*K);if(G>0)da=1/G;else da=0;g[s+(r*156|0)+(L*36|0)+28>>2]=da;aa=s+(r*156|0)+(L*36|0)+32|0;g[aa>>2]=0;G=+g[w>>2]*(U-W*H-M+O*R)+ +g[y>>2]*(V+W*_-N-O*u);if(G<-1)g[aa>>2]=-(G*+g[x>>2]);L=L+1|0}while((L|0)!=(D|0));if((c[t>>2]|0)==2){v=+g[s+(r*156|0)+76>>2];G=+g[w>>2];u=+g[s+(r*156|0)>>2]*v-+g[s+(r*156|0)+4>>2]*G;_=v*+g[s+(r*156|0)+8>>2]-G*+g[s+(r*156|0)+12>>2];R=v*+g[s+(r*156|0)+36>>2]-G*+g[s+(r*156|0)+40>>2];H=v*+g[s+(r*156|
0)+44>>2]-G*+g[s+(r*156|0)+48>>2];G=z+A;v=B*u;K=C*_;Z=G+u*v+_*K;_=G+R*(B*R)+H*(C*H);u=G+v*R+K*H;H=Z*_-u*u;if(!(Z*Z<H*1E3)){c[t>>2]=1;break}g[s+(r*156|0)+96>>2]=Z;g[s+(r*156|0)+100>>2]=u;g[s+(r*156|0)+104>>2]=u;g[s+(r*156|0)+108>>2]=_;if(H!=0)ea=1/H;else ea=H;H=-(ea*u);g[s+(r*156|0)+80>>2]=_*ea;g[s+(r*156|0)+84>>2]=H;g[s+(r*156|0)+88>>2]=H;g[s+(r*156|0)+92>>2]=Z*ea}}while(0);r=r+1|0}while((r|0)<(c[h>>2]|0));i=b;return}function Mi(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;b=i;d=a+52|0;if((c[d>>2]|0)<=0){i=b;return}e=a+44|0;f=a+32|0;a=c[f>>2]|0;h=0;do{j=c[e>>2]|0;l=c[j+(h*156|0)+112>>2]|0;m=c[j+(h*156|0)+116>>2]|0;n=+g[j+(h*156|0)+120>>2];o=+g[j+(h*156|0)+128>>2];p=+g[j+(h*156|0)+124>>2];q=+g[j+(h*156|0)+132>>2];r=c[j+(h*156|0)+148>>2]|0;s=a+(l*12|0)|0;t=s;u=c[t>>2]|0;v=+g[t+4>>2];w=+g[a+(l*12|0)+8>>2];t=a+(m*12|0)|0;x=c[t>>2]|0;y=+g[t+4>>2];z=+g[a+(m*12|
0)+8>>2];t=j+(h*156|0)+72|0;A=+g[t>>2];B=+g[t+4>>2];if((r|0)>0){t=u;C=v;D=x;E=y;F=0;G=w;H=z;while(1){I=+g[j+(h*156|0)+(F*36|0)+16>>2];J=+g[j+(h*156|0)+(F*36|0)+20>>2];K=A*I+B*J;L=B*I-A*J;J=G-o*(+g[j+(h*156|0)+(F*36|0)>>2]*L-+g[j+(h*156|0)+(F*36|0)+4>>2]*K);M=(g[k>>2]=(c[k>>2]=t,+g[k>>2])-n*K,c[k>>2]|0);I=C-n*L;N=H+q*(L*+g[j+(h*156|0)+(F*36|0)+8>>2]-K*+g[j+(h*156|0)+(F*36|0)+12>>2]);O=(g[k>>2]=(c[k>>2]=D,+g[k>>2])+p*K,c[k>>2]|0);K=E+p*L;F=F+1|0;if((F|0)==(r|0)){P=M;Q=O;R=K;S=I;T=J;U=N;break}else{t=
M;C=I;D=O;E=K;G=J;H=N}}}else{P=u;Q=x;R=y;S=v;T=w;U=z}H=+S;D=s;c[D>>2]=P;g[D+4>>2]=H;D=c[f>>2]|0;g[D+(l*12|0)+8>>2]=T;H=+R;t=D+(m*12|0)|0;c[t>>2]=Q;g[t+4>>2]=H;a=c[f>>2]|0;g[a+(m*12|0)+8>>2]=U;h=h+1|0}while((h|0)<(c[d>>2]|0));i=b;return}function Ni(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=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,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;b=i;d=a+52|0;if((c[d>>2]|0)<=0){i=b;return}e=a+44|0;f=a+32|0;a=c[f>>2]|0;h=0;do{j=c[e>>2]|0;l=j+(h*156|0)|0;m=c[j+(h*156|0)+112>>2]|0;n=c[j+(h*156|0)+116>>2]|0;o=+g[j+(h*156|0)+120>>2];p=+g[j+(h*156|0)+128>>2];q=+g[j+(h*156|0)+124>>2];r=+g[j+(h*156|0)+132>>2];s=j+(h*156|0)+148|0;t=c[s>>2]|0;u=a+(m*12|0)|0;v=u;w=c[v>>2]|0;x=+g[v+4>>2];y=+g[a+(m*12|0)+8>>2];v=a+(n*12|0)|0;z=c[v>>2]|0;A=+g[v+4>>2];B=+g[a+(n*12|0)+8>>2];v=j+(h*156|
0)+72|0;C=+g[v>>2];D=+g[v+4>>2];E=-C;F=+g[j+(h*156|0)+136>>2];if((t|0)>0){v=j+(h*156|0)+144|0;G=z;H=A;I=w;J=x;K=0;L=y;M=B;do{N=+g[j+(h*156|0)+(K*36|0)+12>>2];O=+g[j+(h*156|0)+(K*36|0)+8>>2];P=(c[k>>2]=G,+g[k>>2]);Q=(c[k>>2]=I,+g[k>>2]);R=+g[j+(h*156|0)+(K*36|0)+4>>2];S=+g[j+(h*156|0)+(K*36|0)>>2];T=F*+g[j+(h*156|0)+(K*36|0)+16>>2];U=j+(h*156|0)+(K*36|0)+20|0;V=+g[U>>2];W=V-+g[j+(h*156|0)+(K*36|0)+28>>2]*(D*(P-M*N-Q+L*R)+(H+M*O-J-L*S)*E-+g[v>>2]);X=-T;Y=W<T?W:T;T=Y<X?X:Y;Y=T-V;g[U>>2]=T;T=D*Y;V=Y*
E;Z=Q-o*T;I=(g[k>>2]=Z,c[k>>2]|0);J=J-o*V;L=L-p*(S*V-R*T);_=P+q*T;G=(g[k>>2]=_,c[k>>2]|0);H=H+q*V;M=M+r*(O*V-N*T);K=K+1|0}while((K|0)!=(t|0));if((c[s>>2]|0)==1){E=+g[j+(h*156|0)+12>>2];F=+g[j+(h*156|0)+8>>2];T=+g[j+(h*156|0)+4>>2];N=+g[l>>2];t=j+(h*156|0)+16|0;V=+g[t>>2];O=V-+g[j+(h*156|0)+24>>2]*(C*(_-M*E-Z+L*T)+D*(H+M*F-J-L*N)-+g[j+(h*156|0)+32>>2]);P=O>0?O:0;O=P-V;g[t>>2]=P;P=C*O;V=D*O;t=(g[k>>2]=Z-o*P,c[k>>2]|0);$=J-o*V;aa=t;ba=H+q*V;ca=(g[k>>2]=_+q*P,c[k>>2]|0);da=L-p*(N*V-T*P);ea=M+r*(F*V-E*
P)}else{fa=I;ga=J;ha=G;ia=H;ja=L;ka=M;la=8}}else{fa=w;ga=x;ha=z;ia=A;ja=y;ka=B;la=8}do if((la|0)==8){la=0;t=j+(h*156|0)+16|0;P=+g[t>>2];K=j+(h*156|0)+52|0;E=+g[K>>2];V=+g[j+(h*156|0)+12>>2];F=+g[j+(h*156|0)+8>>2];T=(c[k>>2]=ha,+g[k>>2]);N=(c[k>>2]=fa,+g[k>>2]);O=+g[j+(h*156|0)+4>>2];R=+g[l>>2];S=+g[j+(h*156|0)+48>>2];Q=+g[j+(h*156|0)+44>>2];Y=+g[j+(h*156|0)+40>>2];X=+g[j+(h*156|0)+36>>2];W=+g[j+(h*156|0)+104>>2];ma=+g[j+(h*156|0)+100>>2];na=C*(T-ka*V-N+ja*O)+D*(ia+ka*F-ga-ja*R)-+g[j+(h*156|0)+32>>
2]-(P*+g[j+(h*156|0)+96>>2]+E*W);oa=C*(T-ka*S-N+ja*Y)+D*(ia+ka*Q-ga-ja*X)-+g[j+(h*156|0)+68>>2]-(P*ma+E*+g[j+(h*156|0)+108>>2]);pa=+g[j+(h*156|0)+80>>2]*na+ +g[j+(h*156|0)+88>>2]*oa;qa=na*+g[j+(h*156|0)+84>>2]+oa*+g[j+(h*156|0)+92>>2];ra=-pa;sa=-qa;if(!(!(pa<=-0)|!(qa<=-0))){qa=ra-P;pa=sa-E;ta=C*qa;ua=D*qa;qa=C*pa;va=D*pa;pa=ta+qa;wa=ua+va;v=(g[k>>2]=N-o*pa,c[k>>2]|0);U=(g[k>>2]=T+q*pa,c[k>>2]|0);g[t>>2]=ra;g[K>>2]=sa;$=ga-o*wa;aa=v;ba=ia+q*wa;ca=U;da=ja-p*(R*ua-O*ta+(X*va-Y*qa));ea=ka+r*(F*ua-V*
ta+(Q*va-S*qa));break}qa=na*+g[j+(h*156|0)+24>>2];va=-qa;if(qa<=-0&oa+ma*va>=0){ma=va-P;qa=0-E;ta=C*ma;ua=D*ma;ma=C*qa;wa=D*qa;qa=ma+ta;sa=wa+ua;U=(g[k>>2]=N-o*qa,c[k>>2]|0);v=(g[k>>2]=T+q*qa,c[k>>2]|0);g[t>>2]=va;g[K>>2]=0;$=ga-o*sa;aa=U;ba=ia+q*sa;ca=v;da=ja-p*(ua*R-ta*O+(wa*X-ma*Y));ea=ka+r*(ua*F-ta*V+(wa*Q-ma*S));break}ma=oa*+g[j+(h*156|0)+60>>2];wa=-ma;if(ma<=-0&na+W*wa>=0){W=0-P;ma=wa-E;ta=C*W;ua=D*W;W=C*ma;sa=D*ma;ma=ta+W;va=ua+sa;v=(g[k>>2]=N-o*ma,c[k>>2]|0);U=(g[k>>2]=T+q*ma,c[k>>2]|0);g[t>>
2]=0;g[K>>2]=wa;$=ga-o*va;aa=v;ba=ia+q*va;ca=U;da=ja-p*(ua*R-ta*O+(sa*X-W*Y));ea=ka+r*(ua*F-ta*V+(sa*Q-W*S));break}if(na>=0&oa>=0){oa=0-P;P=0-E;E=C*oa;na=D*oa;oa=C*P;W=D*P;P=E+oa;sa=na+W;U=(g[k>>2]=N-o*P,c[k>>2]|0);v=(g[k>>2]=T+q*P,c[k>>2]|0);g[t>>2]=0;g[K>>2]=0;$=ga-o*sa;aa=U;ba=ia+q*sa;ca=v;da=ja-p*(na*R-E*O+(W*X-oa*Y));ea=ka+r*(na*F-E*V+(W*Q-oa*S))}else{$=ga;aa=fa;ba=ia;ca=ha;da=ja;ea=ka}}while(0);r=+$;j=u;c[j>>2]=aa;g[j+4>>2]=r;j=c[f>>2]|0;g[j+(m*12|0)+8>>2]=da;r=+ba;l=j+(n*12|0)|0;c[l>>2]=ca;
g[l+4>>2]=r;a=c[f>>2]|0;g[a+(n*12|0)+8>>2]=ea;h=h+1|0}while((h|0)<(c[d>>2]|0));i=b;return}function Oi(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0;b=i;d=c[a+52>>2]|0;if((d|0)<=0){i=b;return}e=c[a+44>>2]|0;f=c[a+48>>2]|0;a=0;do{h=c[f+(c[e+(a*156|0)+152>>2]<<2)>>2]|0;j=c[e+(a*156|0)+148>>2]|0;if((j|0)>0){k=0;do{g[h+(k*20|0)+72>>2]=+g[e+(a*156|0)+(k*36|0)+16>>2];g[h+(k*20|0)+76>>2]=+g[e+(a*156|0)+(k*36|0)+20>>2];k=k+1|0}while((k|0)<(j|0))}a=a+1|0}while((a|0)<(d|0));i=b;return}function Pi(a){a=a|0;var b=
0,d=0,e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=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;b=i;i=i+64|0;d=b+40|0;e=b+24|0;f=b;h=a+52|0;if((c[h>>2]|0)<=0){j=0;l=j>=-.014999999664723873;i=b;return l|0}m=a+40|0;n=a+28|0;a=d+8|0;o=d+12|0;p=e+8|0;q=e+12|0;r=f+8|0;s=f+16|0;t=c[n>>2]|0;u=0;v=0;while(1){w=c[m>>2]|0;x=
w+(u*88|0)|0;y=c[w+(u*88|0)+32>>2]|0;z=c[w+(u*88|0)+36>>2]|0;A=w+(u*88|0)+48|0;B=+g[A>>2];C=+g[A+4>>2];D=+g[w+(u*88|0)+40>>2];E=+g[w+(u*88|0)+64>>2];A=w+(u*88|0)+56|0;F=+g[A>>2];G=+g[A+4>>2];H=+g[w+(u*88|0)+44>>2];I=+g[w+(u*88|0)+68>>2];A=c[w+(u*88|0)+84>>2]|0;w=t+(y*12|0)|0;J=c[w>>2]|0;K=+g[w+4>>2];L=+g[t+(y*12|0)+8>>2];w=t+(z*12|0)|0;M=c[w>>2]|0;N=+g[w+4>>2];O=+g[t+(z*12|0)+8>>2];if((A|0)>0){P=D+H;w=J;Q=K;R=M;U=N;V=L;W=O;X=0;Y=v;do{Z=+T(+V);g[a>>2]=Z;_=+S(+V);g[o>>2]=_;$=+T(+W);g[p>>2]=$;aa=+S(+W);
g[q>>2]=aa;ba=(c[k>>2]=w,+g[k>>2]);ca=+(ba-(B*_-C*Z));da=+(Q-(C*_+B*Z));ea=d;g[ea>>2]=ca;g[ea+4>>2]=da;da=(c[k>>2]=R,+g[k>>2]);ca=+(da-(F*aa-G*$));Z=+(U-(G*aa+F*$));ea=e;g[ea>>2]=ca;g[ea+4>>2]=Z;Ri(f,x,d,e,X);ea=f;Z=+g[ea>>2];ca=+g[ea+4>>2];ea=r;$=+g[ea>>2];aa=+g[ea+4>>2];_=+g[s>>2];fa=$-ba;ga=aa-Q;ha=$-da;$=aa-U;Y=Y<_?Y:_;aa=(_+.004999999888241291)*.20000000298023224;_=aa<0?aa:0;aa=ca*fa-Z*ga;ia=ca*ha-Z*$;ja=ia*(I*ia)+(P+aa*(E*aa));if(ja>0)ka=(_<-.20000000298023224?.20000000298023224:-_)/ja;else ka=
0;ja=Z*ka;Z=ca*ka;w=(g[k>>2]=ba-D*ja,c[k>>2]|0);Q=Q-D*Z;V=V-E*(fa*Z-ga*ja);R=(g[k>>2]=da+H*ja,c[k>>2]|0);U=U+H*Z;W=W+I*(ha*Z-$*ja);X=X+1|0}while((X|0)!=(A|0));la=w;ma=Q;na=R;oa=U;pa=c[n>>2]|0;qa=V;ra=W;sa=Y}else{la=J;ma=K;na=M;oa=N;pa=t;qa=L;ra=O;sa=v}I=+ma;A=pa+(y*12|0)|0;c[A>>2]=la;g[A+4>>2]=I;A=c[n>>2]|0;g[A+(y*12|0)+8>>2]=qa;I=+oa;X=A+(z*12|0)|0;c[X>>2]=na;g[X+4>>2]=I;t=c[n>>2]|0;g[t+(z*12|0)+8>>2]=ra;u=u+1|0;if((u|0)>=(c[h>>2]|0)){j=sa;break}else v=sa}l=j>=-.014999999664723873;i=b;return l|0}
function Qi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=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;e=i;i=i+64|0;f=e+40|0;h=e+24|0;j=e;l=a+52|0;if((c[l>>2]|0)<=0){m=0;n=m>=-.007499999832361937;i=e;return n|0}o=a+40|0;p=a+28|0;a=f+8|0;q=f+12|0;r=h+8|0;s=h+12|0;t=j+8|0;u=j+16|
0;v=0;w=0;while(1){x=c[o>>2]|0;y=x+(v*88|0)|0;z=c[x+(v*88|0)+32>>2]|0;A=c[x+(v*88|0)+36>>2]|0;B=x+(v*88|0)+48|0;C=+g[B>>2];D=+g[B+4>>2];B=x+(v*88|0)+56|0;E=+g[B>>2];F=+g[B+4>>2];B=c[x+(v*88|0)+84>>2]|0;if((z|0)==(b|0)|(z|0)==(d|0)){G=+g[x+(v*88|0)+64>>2];H=+g[x+(v*88|0)+40>>2]}else{G=0;H=0}if((A|0)==(b|0)|(A|0)==(d|0)){I=+g[x+(v*88|0)+68>>2];J=+g[x+(v*88|0)+44>>2]}else{I=0;J=0}x=c[p>>2]|0;K=x+(z*12|0)|0;L=c[K>>2]|0;M=+g[K+4>>2];N=+g[x+(z*12|0)+8>>2];K=x+(A*12|0)|0;O=c[K>>2]|0;P=+g[K+4>>2];Q=+g[x+
(A*12|0)+8>>2];if((B|0)>0){R=H+J;K=O;U=P;V=L;W=M;X=N;Y=Q;Z=0;_=w;do{$=+T(+X);g[a>>2]=$;aa=+S(+X);g[q>>2]=aa;ba=+T(+Y);g[r>>2]=ba;ca=+S(+Y);g[s>>2]=ca;da=(c[k>>2]=V,+g[k>>2]);ea=+(da-(C*aa-D*$));fa=+(W-(D*aa+C*$));ga=f;g[ga>>2]=ea;g[ga+4>>2]=fa;fa=(c[k>>2]=K,+g[k>>2]);ea=+(fa-(E*ca-F*ba));$=+(U-(F*ca+E*ba));ga=h;g[ga>>2]=ea;g[ga+4>>2]=$;Ri(j,y,f,h,Z);ga=j;$=+g[ga>>2];ea=+g[ga+4>>2];ga=t;ba=+g[ga>>2];ca=+g[ga+4>>2];aa=+g[u>>2];ha=ba-da;ia=ca-W;ja=ba-fa;ba=ca-U;_=_<aa?_:aa;ca=(aa+.004999999888241291)*
.75;aa=ca<0?ca:0;ca=ea*ha-$*ia;ka=ea*ja-$*ba;la=ka*(I*ka)+(R+ca*(G*ca));if(la>0)ma=(aa<-.20000000298023224?.20000000298023224:-aa)/la;else ma=0;la=$*ma;$=ea*ma;V=(g[k>>2]=da-H*la,c[k>>2]|0);W=W-H*$;X=X-G*(ha*$-ia*la);K=(g[k>>2]=fa+J*la,c[k>>2]|0);U=U+J*$;Y=Y+I*(ja*$-ba*la);Z=Z+1|0}while((Z|0)!=(B|0));na=V;oa=W;pa=K;qa=U;ra=c[p>>2]|0;sa=X;ta=Y;ua=_}else{na=L;oa=M;pa=O;qa=P;ra=x;sa=N;ta=Q;ua=w}R=+oa;B=ra+(z*12|0)|0;c[B>>2]=na;g[B+4>>2]=R;B=c[p>>2]|0;g[B+(z*12|0)+8>>2]=sa;R=+qa;Z=B+(A*12|0)|0;c[Z>>2]=
pa;g[Z+4>>2]=R;g[(c[p>>2]|0)+(A*12|0)+8>>2]=ta;v=v+1|0;if((v|0)>=(c[l>>2]|0)){m=ua;break}else w=ua}n=m>=-.007499999832361937;i=e;return n|0}function Ri(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=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;h=i;j=c[b+72>>2]|0;if(!j){k=+g[d+12>>2];l=+g[b+24>>2];m=+g[d+8>>2];n=+g[b+28>>2];o=+g[d>>2]+(k*l-m*n);p=l*m+k*n+ +g[d+4>>2];n=+g[e+12>>2];k=+g[b>>2];m=+g[e+8>>2];l=+g[b+4>>2];q=+g[e>>2]+(n*k-m*l);r=k*m+n*l+ +g[e+4>>2];l=q-o;n=r-p;m=+l;k=
+n;s=a;g[s>>2]=m;g[s+4>>2]=k;k=+Q(+(l*l+n*n));if(k<1.1920928955078125E-7){t=l;u=n}else{m=1/k;k=l*m;g[a>>2]=k;v=n*m;g[a+4>>2]=v;t=k;u=v}v=+((o+q)*.5);q=+((p+r)*.5);s=a+8|0;g[s>>2]=v;g[s+4>>2]=q;g[a+16>>2]=l*t+n*u-+g[b+76>>2]-+g[b+80>>2];i=h;return}else if((j|0)==1){s=d+12|0;u=+g[s>>2];n=+g[b+16>>2];w=d+8|0;t=+g[w>>2];l=+g[b+20>>2];q=u*n-t*l;v=n*t+u*l;l=+q;u=+v;x=a;g[x>>2]=l;g[x+4>>2]=u;u=+g[s>>2];l=+g[b+24>>2];t=+g[w>>2];n=+g[b+28>>2];r=+g[e+12>>2];p=+g[b+(f<<3)>>2];o=+g[e+8>>2];k=+g[b+(f<<3)+4>>2];
m=+g[e>>2]+(r*p-o*k);y=p*o+r*k+ +g[e+4>>2];k=+m;g[a+16>>2]=q*(m-(+g[d>>2]+(u*l-t*n)))+(y-(l*t+u*n+ +g[d+4>>2]))*v-+g[b+76>>2]-+g[b+80>>2];v=+y;w=a+8|0;g[w>>2]=k;g[w+4>>2]=v;i=h;return}else if((j|0)==2){j=e+12|0;v=+g[j>>2];k=+g[b+16>>2];w=e+8|0;y=+g[w>>2];n=+g[b+20>>2];u=v*k-y*n;t=k*y+v*n;n=+u;v=+t;s=a;g[s>>2]=n;g[s+4>>2]=v;v=+g[j>>2];n=+g[b+24>>2];y=+g[w>>2];k=+g[b+28>>2];l=+g[d+12>>2];m=+g[b+(f<<3)>>2];q=+g[d+8>>2];r=+g[b+(f<<3)+4>>2];o=+g[d>>2]+(l*m-q*r);p=m*q+l*r+ +g[d+4>>2];r=+o;g[a+16>>2]=u*
(o-(+g[e>>2]+(v*n-y*k)))+(p-(n*y+v*k+ +g[e+4>>2]))*t-+g[b+76>>2]-+g[b+80>>2];k=+p;b=a+8|0;g[b>>2]=r;g[b+4>>2]=k;k=+-u;u=+-t;b=a;g[b>>2]=k;g[b+4>>2]=u;i=h;return}else{g[a+16>>2]=0;b=8784;e=c[b+4>>2]|0;d=a;c[d>>2]=c[b>>2];c[d+4>>2]=e;e=8784;d=c[e+4>>2]|0;b=a+8|0;c[b>>2]=c[e>>2];c[b+4>>2]=d;i=h;return}}function Si(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=i;b=um(f,148)|0;if(!b){g=0;i=e;return g|0}yi(b,a,0,d,0);c[b>>2]=6528;g=b;i=e;return g|0}function Ti(a,b){a=a|0;b=b|0;var d=0;d=i;nb[c[(c[a>>
2]|0)+4>>2]&127](a);vm(b,a,148);i=d;return}function Ui(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;qf(b,c[(c[a+48>>2]|0)+12>>2]|0,d,c[(c[a+52>>2]|0)+12>>2]|0,e);i=f;return}function Vi(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Wi(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,j=0;g=i;h=um(f,148)|0;if(!h){j=0;i=g;return j|0}yi(h,a,b,d,e);c[h>>2]=6600;j=h;i=g;return j|0}function Xi(a,b){a=a|0;b=b|0;var d=0;d=i;nb[c[(c[a>>2]|0)+4>>2]&127](a);vm(b,a,148);i=d;return}function Yi(a,d,e,f){a=a|
0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0;h=i;i=i+48|0;j=h;k=c[(c[a+48>>2]|0)+12>>2]|0;c[j>>2]=488;c[j+4>>2]=1;g[j+8>>2]=.009999999776482582;l=j+28|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;b[l+16>>1]=0;Te(k,j,c[a+56>>2]|0);qf(d,j,e,c[(c[a+52>>2]|0)+12>>2]|0,f);i=h;return}function Zi(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function _i(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=i;b=um(f,148)|0;if(!b){g=0;i=e;return g|0}yi(b,a,0,d,0);c[b>>2]=6672;g=b;i=e;return g|0}function $i(a,b){a=a|
0;b=b|0;var d=0;d=i;nb[c[(c[a>>2]|0)+4>>2]&127](a);vm(b,a,148);i=d;return}function aj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;tf(b,c[(c[a+48>>2]|0)+12>>2]|0,d,c[(c[a+52>>2]|0)+12>>2]|0,e);i=f;return}function bj(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function cj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=i;b=um(f,148)|0;if(!b){g=0;i=e;return g|0}yi(b,a,0,d,0);c[b>>2]=6744;g=b;i=e;return g|0}function dj(a,b){a=a|0;b=b|0;var d=0;d=i;nb[c[(c[a>>2]|0)+4>>2]&127](a);vm(b,a,148);i=d;return}function ej(a,
b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;uf(b,c[(c[a+48>>2]|0)+12>>2]|0,d,c[(c[a+52>>2]|0)+12>>2]|0,e);i=f;return}function fj(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function gj(a){a=a|0;b[a+32>>1]=1;b[a+34>>1]=-1;b[a+36>>1]=0;c[a+40>>2]=0;c[a+24>>2]=0;c[a+28>>2]=0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;return}function hj(d,e,f,h){d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;j=i;c[d+40>>2]=c[h+4>>2];g[d+16>>2]=+g[h+8>>2];g[d+20>>2]=+g[h+12>>2];c[d+8>>2]=f;c[d+4>>2]=0;f=d+32|0;k=h+
22|0;b[f+0>>1]=b[k+0>>1]|0;b[f+2>>1]=b[k+2>>1]|0;b[f+4>>1]=b[k+4>>1]|0;a[d+38>>0]=a[h+20>>0]|0;k=c[h>>2]|0;f=wb[c[(c[k>>2]|0)+8>>2]&31](k,e)|0;c[d+12>>2]=f;k=kb[c[(c[f>>2]|0)+12>>2]&7](f)|0;f=um(e,k*28|0)|0;c[d+24>>2]=f;if((k|0)>0)l=0;else{m=d+28|0;c[m>>2]=0;n=h+16|0;o=+g[n>>2];g[d>>2]=o;i=j;return}do{c[f+(l*28|0)+16>>2]=0;c[f+(l*28|0)+24>>2]=-1;l=l+1|0}while((l|0)!=(k|0));m=d+28|0;c[m>>2]=0;n=h+16|0;o=+g[n>>2];g[d>>2]=o;i=j;return}function ij(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=a+12|0;f=c[e>>
2]|0;g=kb[c[(c[f>>2]|0)+12>>2]&7](f)|0;f=a+24|0;vm(b,c[f>>2]|0,g*28|0);c[f>>2]=0;f=c[e>>2]|0;g=c[f+4>>2]|0;if((g|0)==2){nb[c[c[f>>2]>>2]&127](f);vm(b,f,152);c[e>>2]=0;i=d;return}else if((g|0)==3){nb[c[c[f>>2]>>2]&127](f);vm(b,f,40);c[e>>2]=0;i=d;return}else if(!g){nb[c[c[f>>2]>>2]&127](f);vm(b,f,20);c[e>>2]=0;i=d;return}else if((g|0)==1){nb[c[c[f>>2]>>2]&127](f);vm(b,f,48);c[e>>2]=0;i=d;return}else{c[e>>2]=0;i=d;return}}function jj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;
f=a+12|0;g=c[f>>2]|0;h=kb[c[(c[g>>2]|0)+12>>2]&7](g)|0;g=a+28|0;c[g>>2]=h;if((h|0)<=0){i=e;return}h=a+24|0;j=0;do{k=c[h>>2]|0;l=k+(j*28|0)|0;m=c[f>>2]|0;yb[c[(c[m>>2]|0)+28>>2]&31](m,l,d,j);c[k+(j*28|0)+24>>2]=$e(b,l,l)|0;c[k+(j*28|0)+16>>2]=a;c[k+(j*28|0)+20>>2]=j;j=j+1|0}while((j|0)<(c[g>>2]|0));i=e;return}function kj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=a+28|0;if((c[e>>2]|0)<=0){c[e>>2]=0;i=d;return}f=a+24|0;a=0;do{g=(c[f>>2]|0)+(a*28|0)+24|0;af(b,c[g>>2]|0);c[g>>2]=-1;a=a+1|0}while((a|0)<
(c[e>>2]|0));c[e>>2]=0;i=d;return}function lj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=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=i;i=i+48|0;h=f+24|0;j=f+8|0;k=f;l=a+28|0;if((c[l>>2]|0)<=0){i=f;return}m=a+24|0;n=a+12|0;a=h+4|0;o=j+4|0;p=h+8|0;q=j+8|0;r=h+12|0;s=j+12|0;t=e+4|0;u=d+4|0;v=k+4|0;w=0;do{x=c[m>>2]|0;y=c[n>>2]|0;z=x+(w*28|0)+20|0;yb[c[(c[y>>2]|0)+28>>2]&31](y,h,d,c[z>>2]|0);y=c[n>>2]|0;yb[c[(c[y>>2]|0)+28>>2]&31](y,j,e,c[z>>2]|0);z=x+(w*
28|0)|0;A=+g[h>>2];B=+g[j>>2];C=+g[a>>2];D=+g[o>>2];E=+(A<B?A:B);B=+(C<D?C:D);y=z;g[y>>2]=E;g[y+4>>2]=B;B=+g[p>>2];E=+g[q>>2];D=+g[r>>2];C=+g[s>>2];A=+(B>E?B:E);E=+(D>C?D:C);y=x+(w*28|0)+8|0;g[y>>2]=A;g[y+4>>2]=E;E=+g[t>>2]-+g[u>>2];g[k>>2]=+g[e>>2]-+g[d>>2];g[v>>2]=E;bf(b,c[x+(w*28|0)+24>>2]|0,z,k);w=w+1|0}while((w|0)<(c[l>>2]|0));i=f;return}function mj(b,d){b=b|0;d=d|0;var e=0,f=0,h=0;e=i;sm(b);Mm(b+76|0);Nj(b+102880|0);c[b+102992>>2]=0;c[b+102996>>2]=0;f=b+102960|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+
8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[b+103004>>0]=1;a[b+103005>>0]=1;a[b+103006>>0]=0;a[b+103007>>0]=1;a[b+102988>>0]=1;f=d;d=c[f+4>>2]|0;h=b+102980|0;c[h>>2]=c[f>>2];c[h+4>>2]=d;c[b+102876>>2]=4;g[b+103E3>>2]=0;c[b+102956>>2]=b;c[b+103040>>2]=8792;c[b+103044>>2]=c[2206];d=b+103008|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;i=e;return}function nj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;b=i;d=c[a+102960>>2]|0;if(d){e=d;do{d=e;
e=c[e+112>>2]|0;f=c[d+116>>2]|0;while(1){if(!f)break;d=c[f+4>>2]|0;c[f+28>>2]=0;ij(f,a);f=d}}while((e|0)!=0)}e=a+102968|0;f=c[e>>2]|0;if(!f){g=a+102880|0;_e(g);h=a+76|0;Nm(h);tm(a);i=b;return}d=a+102876|0;j=f;while(1){if(!(c[d>>2]&2)){f=c[j+404>>2]|0;k=j+408|0;if(f)c[f+408>>2]=c[k>>2];l=c[k>>2]|0;if(l)c[l+404>>2]=f;c[e>>2]=l;nk(j);vm(a,j,416);m=c[e>>2]|0}else m=j;if(!m)break;else j=m}g=a+102880|0;_e(g);h=a+76|0;Nm(h);tm(a);i=b;return}function oj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;if(c[a+102876>>
2]&2){i=d;return}e=c[b+404>>2]|0;f=b+408|0;if(e)c[e+408>>2]=c[f>>2];g=c[f>>2]|0;if(g)c[g+404>>2]=e;e=a+102968|0;if((c[e>>2]|0)==(b|0))c[e>>2]=g;nk(b);vm(a,b,416);i=d;return}function pj(a,b){a=a|0;b=b|0;c[a+102952>>2]=b;return}function qj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;if(c[a+102876>>2]&2){e=0;i=d;return e|0}f=um(a,168)|0;if(!f)g=0;else{Cj(f,b,a);g=f}c[g+108>>2]=0;f=a+102960|0;b=c[f>>2]|0;c[g+112>>2]=b;if(b)c[b+108>>2]=g;c[f>>2]=g;f=a+102972|0;c[f>>2]=(c[f>>2]|0)+1;e=g;i=d;return e|0}function rj(a,
b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;if(c[a+102876>>2]&2){i=d;return}e=b+124|0;f=c[e>>2]|0;if(f){g=a+102992|0;h=f;do{f=h;h=c[h+12>>2]|0;j=c[g>>2]|0;if(!j)k=f+4|0;else{l=f+4|0;pb[c[(c[j>>2]|0)+8>>2]&63](j,c[l>>2]|0);k=l}sj(a,c[k>>2]|0);c[e>>2]=h}while((h|0)!=0)}c[e>>2]=0;e=b+128|0;h=c[e>>2]|0;if(h){k=a+102880|0;g=h;do{h=g;g=c[g+12>>2]|0;Oj(k,c[h+4>>2]|0)}while((g|0)!=0)}c[e>>2]=0;e=b+116|0;g=c[e>>2]|0;if(!g)m=b+120|0;else{k=a+102992|0;h=a+102880|0;l=b+120|0;j=g;do{g=j;j=c[j+4>>
2]|0;f=c[k>>2]|0;if(f)pb[c[(c[f>>2]|0)+12>>2]&63](f,g);kj(g,h);ij(g,a);vm(a,g,44);c[e>>2]=j;c[l>>2]=(c[l>>2]|0)+-1}while((j|0)!=0);m=l}c[e>>2]=0;c[m>>2]=0;m=c[b+108>>2]|0;e=b+112|0;if(m)c[m+112>>2]=c[e>>2];l=c[e>>2]|0;if(l)c[l+108>>2]=m;m=a+102960|0;if((c[m>>2]|0)==(b|0))c[m>>2]=l;l=a+102972|0;c[l>>2]=(c[l>>2]|0)+-1;Dj(b);vm(a,b,168);i=d;return}function sj(d,f){d=d|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=i;if(c[d+102876>>2]&2){i=h;return}j=a[f+61>>0]|0;k=c[f+8>>2]|0;l=f+12|0;if(k)c[k+12>>
2]=c[l>>2];m=c[l>>2]|0;if(m)c[m+8>>2]=k;k=d+102964|0;if((c[k>>2]|0)==(f|0))c[k>>2]=m;m=c[f+48>>2]|0;k=c[f+52>>2]|0;l=m+4|0;n=e[l>>1]|0;if(!(n&2)){b[l>>1]=n|2;g[m+160>>2]=0}n=k+4|0;l=e[n>>1]|0;if(!(l&2)){b[n>>1]=l|2;g[k+160>>2]=0}l=f+24|0;n=c[l>>2]|0;o=f+28|0;if(n)c[n+12>>2]=c[o>>2];p=c[o>>2]|0;if(p)c[p+8>>2]=n;n=m+124|0;if((f+16|0)==(c[n>>2]|0))c[n>>2]=p;c[l>>2]=0;c[o>>2]=0;o=f+40|0;l=c[o>>2]|0;p=f+44|0;if(l)c[l+12>>2]=c[p>>2];n=c[p>>2]|0;if(n)c[n+8>>2]=l;l=k+124|0;if((f+32|0)==(c[l>>2]|0))c[l>>2]=
n;c[o>>2]=0;c[p>>2]=0;Ah(f,d);f=d+102976|0;c[f>>2]=(c[f>>2]|0)+-1;if(j<<24>>24){i=h;return}j=c[k+128>>2]|0;if(!j){i=h;return}else q=j;do{if((c[q>>2]|0)==(m|0)){j=(c[q+4>>2]|0)+4|0;c[j>>2]=c[j>>2]|8}q=c[q+12>>2]|0}while((q|0)!=0);i=h;return}function tj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;if(c[b+102876>>2]&2){f=0;i=e;return f|0}g=zh(d,b)|0;c[g+8>>2]=0;h=b+102964|0;j=c[h>>2]|0;c[g+12>>2]=j;if(j)c[j+8>>2]=g;c[h>>2]=g;h=b+102976|0;c[h>>2]=(c[h>>2]|0)+1;h=g+16|0;c[g+20>>2]=g;b=c[g+
52>>2]|0;c[h>>2]=b;c[g+24>>2]=0;j=c[g+48>>2]|0;k=j+124|0;l=c[k>>2]|0;c[g+28>>2]=l;if(l)c[l+8>>2]=h;c[k>>2]=h;h=g+32|0;c[g+36>>2]=g;c[h>>2]=j;c[g+40>>2]=0;j=b+124|0;b=c[j>>2]|0;c[g+44>>2]=b;if(b)c[b+8>>2]=h;c[j>>2]=h;h=c[d+8>>2]|0;if(a[d+16>>0]|0){f=g;i=e;return f|0}j=c[(c[d+12>>2]|0)+128>>2]|0;if(!j){f=g;i=e;return f|0}else m=j;do{if((c[m>>2]|0)==(h|0)){j=(c[m+4>>2]|0)+4|0;c[j>>2]=c[j>>2]|8}m=c[m+12>>2]|0}while((m|0)!=0);f=g;i=e;return f|0}function uj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;if(c[a+
102876>>2]&2){e=0;i=d;return e|0}f=um(a,416)|0;if(!f)g=0;else{mk(f,b,a);g=f}c[g+404>>2]=0;f=a+102968|0;a=c[f>>2]|0;c[g+408>>2]=a;if(a)c[a+404>>2]=g;c[f>>2]=g;e=g;i=d;return e|0}function vj(d,f){d=d|0;f=f|0;var h=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,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;h=i;i=i+96|0;j=h+40|0;k=h+8|0;l=h;m=d+102960|0;n=c[m>>2]|0;if(n){o=n;do{n=o+28|0;p=
o+12|0;c[n+0>>2]=c[p+0>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2];o=c[o+112>>2]|0}while((o|0)!=0)}o=d+103020|0;g[o>>2]=0;p=d+103024|0;g[p>>2]=0;n=d+103028|0;g[n>>2]=0;q=d+102972|0;r=d+102880|0;s=d+76|0;zf(j,c[q>>2]|0,c[d+102944>>2]|0,c[d+102976>>2]|0,s,c[d+102952>>2]|0);t=c[m>>2]|0;if(t){u=t;do{t=u+4|0;b[t>>1]=e[t>>1]&65534;u=c[u+112>>2]|0}while((u|0)!=0)}u=c[d+102940>>2]|0;if(u){t=u;do{u=t+4|0;c[u>>2]=c[u>>2]&-2;t=c[t+12>>2]|0}while((t|0)!=0)}t=c[d+102964>>2]|0;if(t){u=t;do{a[u+
60>>0]=0;u=c[u+12>>2]|0}while((u|0)!=0)}u=Om(s,c[q>>2]<<2)|0;q=c[m>>2]|0;if(q){t=j+28|0;v=j+36|0;w=j+32|0;x=j+8|0;y=j+16|0;z=j+12|0;A=d+102980|0;B=d+102988|0;C=k+12|0;D=k+16|0;E=k+20|0;F=q;do{q=F+4|0;G=b[q>>1]|0;if((G&35)==34?(c[F>>2]|0)!=0:0){c[t>>2]=0;c[v>>2]=0;c[w>>2]=0;c[u>>2]=F;b[q>>1]=G&65535|1;G=0;q=0;H=0;I=1;while(1){J=I+-1|0;K=c[u+(J<<2)>>2]|0;c[K+8>>2]=H;c[(c[x>>2]|0)+(H<<2)>>2]=K;H=H+1|0;c[t>>2]=H;L=K+4|0;M=e[L>>1]|0;if(!(M&2)){b[L>>1]=M|2;g[K+160>>2]=0}if(c[K>>2]|0){M=c[K+128>>2]|0;if(!M){N=
G;O=J}else{L=G;P=M;M=J;while(1){Q=c[P+4>>2]|0;R=Q+4|0;S=c[R>>2]|0;do if((S&7|0)==6?(a[(c[Q+48>>2]|0)+38>>0]|0)==0:0){if(a[(c[Q+52>>2]|0)+38>>0]|0){T=L;U=M;break}V=L+1|0;c[v>>2]=V;c[(c[z>>2]|0)+(L<<2)>>2]=Q;c[R>>2]=S|1;W=c[P>>2]|0;X=W+4|0;Y=b[X>>1]|0;if(Y&1){T=V;U=M;break}c[u+(M<<2)>>2]=W;b[X>>1]=Y&65535|1;T=V;U=M+1|0}else{T=L;U=M}while(0);P=c[P+12>>2]|0;if(!P){N=T;O=U;break}else{L=T;M=U}}}M=c[K+124>>2]|0;if(!M){Z=N;_=q;$=O}else{L=q;P=M;M=O;while(1){S=P+4|0;R=c[S>>2]|0;do if((a[R+60>>0]|0)==0?(Q=c[P>>
2]|0,V=Q+4|0,Y=b[V>>1]|0,(Y&32)!=0):0){X=L+1|0;c[w>>2]=X;c[(c[y>>2]|0)+(L<<2)>>2]=R;a[(c[S>>2]|0)+60>>0]=1;if(Y&1){aa=X;ba=M;break}c[u+(M<<2)>>2]=Q;b[V>>1]=Y&65535|1;aa=X;ba=M+1|0}else{aa=L;ba=M}while(0);P=c[P+12>>2]|0;if(!P){Z=N;_=aa;$=ba;break}else{L=aa;M=ba}}}}else{Z=G;_=q;$=J}if(($|0)<=0)break;else{G=Z;q=_;I=$}}Bf(j,k,f,A,(a[B>>0]|0)!=0);g[o>>2]=+g[C>>2]+ +g[o>>2];g[p>>2]=+g[D>>2]+ +g[p>>2];g[n>>2]=+g[E>>2]+ +g[n>>2];I=c[t>>2]|0;if((I|0)>0){q=c[x>>2]|0;G=0;do{H=c[q+(G<<2)>>2]|0;if(!(c[H>>2]|0)){M=
H+4|0;b[M>>1]=e[M>>1]&65534}G=G+1|0}while((G|0)<(I|0))}}F=c[F+112>>2]|0}while((F|0)!=0)}Qm(s,u);Am(l);u=c[m>>2]|0;if(!u){Qj(r);ca=+Cm(l);da=d+103032|0;g[da>>2]=ca;Af(j);i=h;return}else ea=u;do{if((b[ea+4>>1]&1)!=0?(c[ea>>2]|0)!=0:0)Gj(ea);ea=c[ea+112>>2]|0}while((ea|0)!=0);Qj(r);ca=+Cm(l);da=d+103032|0;g[da>>2]=ca;Af(j);i=h;return}function wj(d,f){d=d|0;f=f|0;var h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,
R=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;h=i;i=i+352|0;j=h+8|0;l=h+108|0;m=h+64|0;n=h+240|0;o=h+304|0;p=h;q=h+72|0;r=h+276|0;s=d+102880|0;t=d+102952|0;zf(j,64,32,0,d+76|0,c[t>>2]|0);u=d+103007|0;if(a[u>>0]|0){v=c[d+102960>>2]|0;if(v){w=v;do{v=
w+4|0;b[v>>1]=e[v>>1]&65534;g[w+76>>2]=0;w=c[w+112>>2]|0}while((w|0)!=0)}w=d+102940|0;v=c[w>>2]|0;if(!v)x=w;else{y=v;do{v=y+4|0;c[v>>2]=c[v>>2]&-34;c[y+128>>2]=0;g[y+132>>2]=1;y=c[y+12>>2]|0}while((y|0)!=0);x=w}}else x=d+102940|0;w=j+28|0;y=j+36|0;v=j+32|0;z=j+8|0;A=j+12|0;B=p+4|0;C=j+40|0;D=j+44|0;E=r+4|0;F=r+8|0;G=r+16|0;H=f+12|0;I=r+12|0;J=f+20|0;K=r+20|0;L=r+24|0;M=d+103006|0;d=l+16|0;N=l+20|0;O=l+24|0;P=l+44|0;Q=l+48|0;R=l+52|0;U=l+28|0;V=l+56|0;W=l+92|0;X=l+128|0;Y=m+4|0;while(1){Z=c[x>>2]|
0;if(!Z){_=28;break}else{$=Z;aa=1;ba=0}while(1){Z=$+4|0;ca=c[Z>>2]|0;do if((ca&4|0)!=0?(c[$+128>>2]|0)<=8:0){if(!(ca&32)){da=c[$+48>>2]|0;ea=c[$+52>>2]|0;if(a[da+38>>0]|0){fa=aa;ga=ba;break}if(a[ea+38>>0]|0){fa=aa;ga=ba;break}ha=c[da+8>>2]|0;ia=c[ea+8>>2]|0;ja=c[ha>>2]|0;ka=c[ia>>2]|0;la=b[ha+4>>1]|0;ma=b[ia+4>>1]|0;if(!((la&2)!=0&(ja|0)!=0|(ma&2)!=0&(ka|0)!=0)){fa=aa;ga=ba;break}if(!((la&8)!=0|(ja|0)!=2|((ma&8)!=0|(ka|0)!=2))){fa=aa;ga=ba;break}ka=ha+44|0;ma=ha+76|0;na=+g[ma>>2];ja=ia+44|0;la=ia+
76|0;oa=+g[la>>2];if(!(na<oa))if(oa<na){pa=(na-oa)/(1-oa);qa=ia+52|0;ra=+g[qa>>2];sa=ia+56|0;ta=+g[sa>>2];ua=pa*(+g[ia+64>>2]-ta);g[qa>>2]=ra+pa*(+g[ia+60>>2]-ra);g[sa>>2]=ta+ua;sa=ia+68|0;ua=+g[sa>>2];g[sa>>2]=ua+pa*(+g[ia+72>>2]-ua);g[la>>2]=na;va=na}else va=na;else{ua=(oa-na)/(1-na);la=ha+52|0;na=+g[la>>2];ia=ha+56|0;pa=+g[ia>>2];ta=ua*(+g[ha+64>>2]-pa);g[la>>2]=na+ua*(+g[ha+60>>2]-na);g[ia>>2]=pa+ta;ia=ha+68|0;ta=+g[ia>>2];g[ia>>2]=ta+ua*(+g[ha+72>>2]-ta);g[ma>>2]=oa;va=oa}ma=c[$+56>>2]|0;ha=
c[$+60>>2]|0;c[d>>2]=0;c[N>>2]=0;g[O>>2]=0;c[P>>2]=0;c[Q>>2]=0;g[R>>2]=0;ke(l,c[da+12>>2]|0,ma);ke(U,c[ea+12>>2]|0,ha);wa=V+0|0;xa=ka+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));wa=W+0|0;xa=ja+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));g[X>>2]=1;ge(m,l);if((c[m>>2]|0)==3){oa=va+(1-va)*+g[Y>>2];za=oa<1?oa:1}else za=1;g[$+132>>2]=za;c[Z>>2]=c[Z>>2]|32;Aa=za}else Aa=+g[$+132>>2];if(Aa<aa){fa=Aa;ga=$}else{fa=aa;ga=ba}}else{fa=aa;ga=ba}while(0);
$=c[$+12>>2]|0;if(!$)break;else{aa=fa;ba=ga}}if((ga|0)==0|fa>.9999988079071045){_=28;break}Z=c[(c[ga+48>>2]|0)+8>>2]|0;ca=c[(c[ga+52>>2]|0)+8>>2]|0;ja=Z+44|0;wa=n+0|0;xa=ja+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));ka=ca+44|0;wa=o+0|0;xa=ka+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));ha=Z+76|0;oa=+g[ha>>2];ta=(fa-oa)/(1-oa);ea=Z+60|0;ma=Z+52|0;oa=+g[ma>>2];da=Z+64|0;ia=Z+56|0;ua=+g[ia>>2];pa=ta*(+g[da>>2]-ua);g[ma>>2]=oa+ta*(+g[ea>>
2]-oa);g[ia>>2]=ua+pa;ia=Z+72|0;ma=Z+68|0;pa=+g[ma>>2];ua=pa+ta*(+g[ia>>2]-pa);g[ma>>2]=ua;g[ha>>2]=fa;ha=Z+52|0;ma=c[ha>>2]|0;la=c[ha+4>>2]|0;ha=Z+60|0;c[ha>>2]=ma;c[ha+4>>2]=la;g[ia>>2]=ua;pa=+T(+ua);ha=Z+20|0;g[ha>>2]=pa;ta=+S(+ua);sa=Z+24|0;g[sa>>2]=ta;qa=Z+12|0;Ba=Z+44|0;ua=+g[Ba>>2];Ca=Z+48|0;oa=+g[Ca>>2];na=(c[k>>2]=ma,+g[k>>2])-(ta*ua-pa*oa);ra=(c[k>>2]=la,+g[k>>2])-(pa*ua+ta*oa);oa=+na;na=+ra;la=qa;g[la>>2]=oa;g[la+4>>2]=na;la=ca+76|0;na=+g[la>>2];oa=(fa-na)/(1-na);ma=ca+60|0;Da=ca+52|0;
na=+g[Da>>2];Ea=ca+64|0;Fa=ca+56|0;ra=+g[Fa>>2];ta=oa*(+g[Ea>>2]-ra);g[Da>>2]=na+oa*(+g[ma>>2]-na);g[Fa>>2]=ra+ta;Fa=ca+72|0;Da=ca+68|0;ta=+g[Da>>2];ra=ta+oa*(+g[Fa>>2]-ta);g[Da>>2]=ra;g[la>>2]=fa;la=ca+52|0;Da=c[la>>2]|0;Ga=c[la+4>>2]|0;la=ca+60|0;c[la>>2]=Da;c[la+4>>2]=Ga;g[Fa>>2]=ra;ta=+T(+ra);la=ca+20|0;g[la>>2]=ta;oa=+S(+ra);Ha=ca+24|0;g[Ha>>2]=oa;Ia=ca+12|0;Ja=ca+44|0;ra=+g[Ja>>2];Ka=ca+48|0;na=+g[Ka>>2];ua=(c[k>>2]=Da,+g[k>>2])-(oa*ra-ta*na);pa=(c[k>>2]=Ga,+g[k>>2])-(ta*ra+oa*na);na=+ua;ua=
+pa;Ga=Ia;g[Ga>>2]=na;g[Ga+4>>2]=ua;zi(ga,c[t>>2]|0);Ga=ga+4|0;Da=c[Ga>>2]|0;La=Da&-33;c[Ga>>2]=La;Ma=ga+128|0;c[Ma>>2]=(c[Ma>>2]|0)+1;if((Da&6|0)!=6){c[Ga>>2]=Da&-37;wa=ja+0|0;xa=n+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));wa=ka+0|0;xa=o+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));ua=+g[ia>>2];na=+T(+ua);g[ha>>2]=na;pa=+S(+ua);g[sa>>2]=pa;ua=+g[Ba>>2];oa=+g[Ca>>2];ra=+(+g[ea>>2]-(pa*ua-na*oa));ta=+(+g[da>>2]-(na*ua+pa*oa));ka=qa;
g[ka>>2]=ra;g[ka+4>>2]=ta;ta=+g[Fa>>2];ra=+T(+ta);g[la>>2]=ra;oa=+S(+ta);g[Ha>>2]=oa;ta=+g[Ja>>2];pa=+g[Ka>>2];ua=+(+g[ma>>2]-(oa*ta-ra*pa));na=+(+g[Ea>>2]-(ra*ta+oa*pa));ka=Ia;g[ka>>2]=ua;g[ka+4>>2]=na;continue}ka=Z+4|0;ja=b[ka>>1]|0;Da=ja&65535;if(!(Da&2)){Ma=(Da|2)&65535;b[ka>>1]=Ma;g[Z+160>>2]=0;Na=Ma}else Na=ja;ja=ca+4|0;Ma=e[ja>>1]|0;if(!(Ma&2)){b[ja>>1]=Ma|2;g[ca+160>>2]=0;Oa=b[ka>>1]|0}else Oa=Na;c[v>>2]=0;Ma=Z+8|0;c[Ma>>2]=0;c[c[z>>2]>>2]=Z;Da=ca+8|0;c[Da>>2]=1;c[(c[z>>2]|0)+4>>2]=ca;c[w>>
2]=2;c[y>>2]=1;c[c[A>>2]>>2]=ga;b[ka>>1]=Oa&65535|1;b[ja>>1]=e[ja>>1]|1;c[Ga>>2]=La|1;c[p>>2]=Z;c[B>>2]=ca;ja=Z;ka=1;while(1){a:do if((c[ja>>2]|0)==2?(Pa=c[ja+128>>2]|0,(Pa|0)!=0):0){Qa=ja+4|0;Ra=Pa;do{if((c[w>>2]|0)==(c[C>>2]|0))break a;if((c[y>>2]|0)==(c[D>>2]|0))break a;Pa=c[Ra+4>>2]|0;Sa=Pa+4|0;do if(!(c[Sa>>2]&1)){Ta=c[Ra>>2]|0;if(((c[Ta>>2]|0)==2?(b[Qa>>1]&8)==0:0)?(b[Ta+4>>1]&8)==0:0)break;if((a[(c[Pa+48>>2]|0)+38>>0]|0)==0?(a[(c[Pa+52>>2]|0)+38>>0]|0)==0:0){Ua=Ta+44|0;wa=q+0|0;xa=Ua+0|0;ya=
wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));Va=Ta+4|0;if(!(b[Va>>1]&1)){Wa=Ta+76|0;na=+g[Wa>>2];ua=(fa-na)/(1-na);Xa=Ta+52|0;na=+g[Xa>>2];Ya=Ta+56|0;pa=+g[Ya>>2];oa=ua*(+g[Ta+64>>2]-pa);g[Xa>>2]=na+ua*(+g[Ta+60>>2]-na);g[Ya>>2]=pa+oa;Ya=Ta+72|0;Xa=Ta+68|0;oa=+g[Xa>>2];pa=oa+ua*(+g[Ya>>2]-oa);g[Xa>>2]=pa;g[Wa>>2]=fa;Wa=Ta+52|0;Xa=c[Wa>>2]|0;Za=c[Wa+4>>2]|0;Wa=Ta+60|0;c[Wa>>2]=Xa;c[Wa+4>>2]=Za;g[Ya>>2]=pa;oa=+T(+pa);g[Ta+20>>2]=oa;ua=+S(+pa);g[Ta+24>>2]=ua;pa=+g[Ta+44>>2];
na=+g[Ta+48>>2];ta=(c[k>>2]=Xa,+g[k>>2])-(ua*pa-oa*na);ra=(c[k>>2]=Za,+g[k>>2])-(oa*pa+ua*na);na=+ta;ta=+ra;Za=Ta+12|0;g[Za>>2]=na;g[Za+4>>2]=ta}zi(Pa,c[t>>2]|0);Za=c[Sa>>2]|0;if(!(Za&4)){wa=Ua+0|0;xa=q+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));ta=+g[Ta+72>>2];na=+T(+ta);g[Ta+20>>2]=na;ra=+S(+ta);g[Ta+24>>2]=ra;ta=+g[Ta+44>>2];ua=+g[Ta+48>>2];pa=+(+g[Ta+60>>2]-(ra*ta-na*ua));oa=+(+g[Ta+64>>2]-(na*ta+ra*ua));Xa=Ta+12|0;g[Xa>>2]=pa;g[Xa+4>>2]=oa;break}if(!(Za&2)){wa=
Ua+0|0;xa=q+0|0;ya=wa+36|0;do{c[wa>>2]=c[xa>>2];wa=wa+4|0;xa=xa+4|0}while((wa|0)<(ya|0));oa=+g[Ta+72>>2];pa=+T(+oa);g[Ta+20>>2]=pa;ua=+S(+oa);g[Ta+24>>2]=ua;oa=+g[Ta+44>>2];ra=+g[Ta+48>>2];ta=+(+g[Ta+60>>2]-(ua*oa-pa*ra));na=+(+g[Ta+64>>2]-(pa*oa+ua*ra));Ua=Ta+12|0;g[Ua>>2]=ta;g[Ua+4>>2]=na;break}c[Sa>>2]=Za|1;Ua=c[y>>2]|0;c[y>>2]=Ua+1;c[(c[A>>2]|0)+(Ua<<2)>>2]=Pa;Ua=e[Va>>1]|0;if(Ua&1)break;b[Va>>1]=Ua|1;if((c[Ta>>2]|0)!=0&(Ua&2|0)==0){b[Va>>1]=Ua|3;g[Ta+160>>2]=0}Ua=c[w>>2]|0;c[Ta+8>>2]=Ua;c[(c[z>>
2]|0)+(Ua<<2)>>2]=Ta;c[w>>2]=Ua+1}}while(0);Ra=c[Ra+12>>2]|0}while((Ra|0)!=0)}while(0);if((ka|0)>=2)break;ja=c[p+(ka<<2)>>2]|0;ka=ka+1|0}na=(1-fa)*+g[f>>2];g[r>>2]=na;g[E>>2]=1/na;g[F>>2]=1;c[G>>2]=20;c[I>>2]=c[H>>2];c[K>>2]=c[J>>2];a[L>>0]=0;Cf(j,r,c[Ma>>2]|0,c[Da>>2]|0);ka=c[w>>2]|0;if((ka|0)>0){ja=ka;ka=0;while(1){Z=c[(c[z>>2]|0)+(ka<<2)>>2]|0;ca=Z+4|0;b[ca>>1]=e[ca>>1]&65534;if((c[Z>>2]|0)==2){Gj(Z);ca=c[Z+128>>2]|0;if(ca){Z=ca;do{ca=(c[Z+4>>2]|0)+4|0;c[ca>>2]=c[ca>>2]&-34;Z=c[Z+12>>2]|0}while((Z|
0)!=0)}_a=c[w>>2]|0}else _a=ja;ka=ka+1|0;if((ka|0)>=(_a|0))break;else ja=_a}}Qj(s);if(a[M>>0]|0){_=67;break}}if((_|0)==28){a[u>>0]=1;Af(j);i=h;return}else if((_|0)==67){a[u>>0]=0;Af(j);i=h;return}}function xj(b,d,e,f,h){b=b|0;d=+d;e=e|0;f=f|0;h=h|0;var 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;j=i;i=i+64|0;k=j+24|0;l=j+32|0;m=j+16|0;n=j+8|0;o=j;Am(k);p=b+102876|0;q=c[p>>2]|0;if(!(q&1))r=q;else{Qj(b+102880|0);q=c[p>>2]&-2;c[p>>2]=q;r=q}c[p>>2]=r|2;g[l>>2]=d;c[l+12>>2]=e;c[l+16>>2]=
f;c[l+20>>2]=h;h=d>0;if(h)g[l+4>>2]=1/d;else g[l+4>>2]=0;f=b+103E3|0;g[l+8>>2]=+g[f>>2]*d;a[l+24>>0]=a[b+103004>>0]|0;Am(m);Pj(b+102880|0);g[b+103012>>2]=+Cm(m);if((a[b+103007>>0]|0)!=0&h){Am(n);h=c[b+102968>>2]|0;if(h){m=h;do{Uk(m,l);m=c[m+408>>2]|0}while((m|0)!=0)}vj(b,l);g[b+103016>>2]=+Cm(n);s=+g[l>>2]}else s=d;if((a[b+103005>>0]|0)!=0&s>0){Am(o);wj(b,l);g[b+103036>>2]=+Cm(o);t=+g[l>>2]}else t=s;if(t>0)g[f>>2]=+g[l+4>>2];l=c[p>>2]|0;if(!(l&4)){u=l&-3;c[p>>2]=u;v=+Cm(k);w=b+103008|0;g[w>>2]=v;
i=j;return}f=c[b+102960>>2]|0;if(!f){u=l&-3;c[p>>2]=u;v=+Cm(k);w=b+103008|0;g[w>>2]=v;i=j;return}else x=f;do{g[x+92>>2]=0;g[x+96>>2]=0;g[x+100>>2]=0;x=c[x+112>>2]|0}while((x|0)!=0);u=l&-3;c[p>>2]=u;v=+Cm(k);w=b+103008|0;g[w>>2]=v;i=j;return}function yj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e;g=a+102880|0;c[f>>2]=g;c[f+4>>2]=b;Aj(g,f,d);f=c[a+102968>>2]|0;if(!f){i=e;return}a=f;do{if(wb[c[(c[b>>2]|0)+16>>2]&31](b,a)|0)hl(a,b,d);a=c[a+408>>2]|0}while((a|0)!=0);i=e;return}function zj(a,
b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;i=i+32|0;h=f+24|0;j=f;k=a+102880|0;c[h>>2]=k;c[h+4>>2]=b;g[j+16>>2]=1;l=d;m=c[l+4>>2]|0;n=j;c[n>>2]=c[l>>2];c[n+4>>2]=m;m=e;n=c[m+4>>2]|0;l=j+8|0;c[l>>2]=c[m>>2];c[l+4>>2]=n;Bj(k,h,j);j=c[a+102968>>2]|0;if(!j){i=f;return}a=j;do{if(wb[c[(c[b>>2]|0)+16>>2]&31](b,a)|0)il(a,b,d,e);a=c[a+408>>2]|0}while((a|0)!=0);i=f;return}function Aj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=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;e=i;i=i+1040|0;f=e;h=f+4|0;c[f>>2]=h;j=f+1028|0;c[j>>2]=0;k=f+1032|0;c[k>>2]=256;c[h>>2]=c[a>>2];l=c[j>>2]|0;m=l+1|0;c[j>>2]=m;a:do if((l|0)>-1){n=a+4|0;o=d+4|0;p=d+8|0;q=d+12|0;r=b+4|0;s=m;t=h;while(1){u=s+-1|0;c[j>>2]=u;v=c[t+(u<<2)>>2]|0;do if((v|0)!=-1?(w=c[n>>2]|0,!((+g[d>>2]-+g[w+(v*36|0)+8>>2]>0?1:+g[o>>2]-+g[w+(v*36|0)+12>>2]>0)|+g[w+(v*36|0)>>2]-+g[p>>2]>0|+g[w+(v*36|0)+4>>2]-+g[q>>2]>0)):0){x=w+(v*36|0)+24|0;if((c[x>>2]|0)==-1){y=c[r>>2]|0;if(!(wb[c[(c[y>>2]|0)+8>>2]&31](y,c[(c[(c[(c[b>>
2]|0)+4>>2]|0)+(v*36|0)+16>>2]|0)+16>>2]|0)|0))break a;z=c[j>>2]|0;break}if((u|0)==(c[k>>2]|0)?(c[k>>2]=u<<1,y=Dm(u<<3)|0,c[f>>2]=y,Dn(y|0,t|0,c[j>>2]<<2|0)|0,(t|0)!=(h|0)):0)Em(t);y=c[f>>2]|0;c[y+(c[j>>2]<<2)>>2]=c[x>>2];x=(c[j>>2]|0)+1|0;c[j>>2]=x;A=w+(v*36|0)+28|0;if((x|0)==(c[k>>2]|0)?(c[k>>2]=x<<1,w=Dm(x<<3)|0,c[f>>2]=w,Dn(w|0,y|0,c[j>>2]<<2|0)|0,(y|0)!=(h|0)):0)Em(y);c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]=c[A>>2];A=(c[j>>2]|0)+1|0;c[j>>2]=A;z=A}else z=u;while(0);if((z|0)<=0)break a;s=z;t=c[f>>2]|0}}while(0);
z=c[f>>2]|0;if((z|0)==(h|0)){i=e;return}Em(z);c[f>>2]=0;i=e;return}function Bj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=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;e=i;i=i+1088|0;f=e+1064|0;h=e+1056|0;j=e+20|0;k=e;l=d;m=+g[l>>2];n=+g[l+4>>2];l=d+8|0;o=l;p=+g[o>>2];q=p-m;p=+g[o+4>>2]-n;r=+Q(+(q*q+p*p));if(r<
1.1920928955078125E-7){s=p;t=q}else{u=1/r;s=p*u;t=q*u}u=-s;r=s<-0?u:s;if(t>0)v=t;else v=-t;s=+g[d+16>>2];w=m+q*s;x=n+p*s;o=j+4|0;c[j>>2]=o;y=j+1028|0;c[y>>2]=0;z=j+1032|0;c[z>>2]=256;c[o>>2]=c[a>>2];A=c[y>>2]|0;B=A+1|0;c[y>>2]=B;a:do if((A|0)>-1){C=a+4|0;D=k+8|0;E=k+16|0;F=f+8|0;G=k+4|0;H=k+8|0;I=k+12|0;J=h+4|0;K=b+4|0;L=B;M=n<x?n:x;N=m<w?m:w;O=n>x?n:x;P=m>w?m:w;R=o;S=s;while(1){T=L;U=R;while(1){V=T+-1|0;c[y>>2]=V;W=c[U+(V<<2)>>2]|0;if((W|0)==-1){X=V;Y=U}else{Z=c[C>>2]|0;_=+g[Z+(W*36|0)+8>>2];$=+g[Z+
(W*36|0)+12>>2];aa=+g[Z+(W*36|0)>>2];ba=+g[Z+(W*36|0)+4>>2];if(N-_>0|M-$>0|aa-P>0|ba-O>0){ca=M;da=N;ea=O;fa=P;ga=S;break}ha=(m-(_+aa)*.5)*u+t*(n-($+ba)*.5);if(ha>0)ia=ha;else ia=-ha;if(ia-(r*((_-aa)*.5)+v*(($-ba)*.5))>0){ca=M;da=N;ea=O;fa=P;ga=S;break}ja=Z+(W*36|0)+24|0;if((c[ja>>2]|0)==-1){ka=17;break}if((V|0)==(c[z>>2]|0)?(c[z>>2]=V<<1,la=Dm(V<<3)|0,c[j>>2]=la,Dn(la|0,U|0,c[y>>2]<<2|0)|0,(U|0)!=(o|0)):0)Em(U);la=c[j>>2]|0;c[la+(c[y>>2]<<2)>>2]=c[ja>>2];ja=(c[y>>2]|0)+1|0;c[y>>2]=ja;V=Z+(W*36|0)+
28|0;if((ja|0)==(c[z>>2]|0)?(c[z>>2]=ja<<1,Z=Dm(ja<<3)|0,c[j>>2]=Z,Dn(Z|0,la|0,c[y>>2]<<2|0)|0,(la|0)!=(o|0)):0)Em(la);la=c[j>>2]|0;c[la+(c[y>>2]<<2)>>2]=c[V>>2];V=(c[y>>2]|0)+1|0;c[y>>2]=V;X=V;Y=la}if((X|0)>0){T=X;U=Y}else break a}if((ka|0)==17){ka=0;c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;U=d;T=c[U+4>>2]|0;la=k;c[la>>2]=c[U>>2];c[la+4>>2]=T;T=l;la=c[T+4>>2]|0;U=D;c[U>>2]=c[T>>2];c[U+4>>2]=la;g[E>>2]=S;la=c[(c[(c[b>>2]|0)+4>>2]|0)+(W*36|0)+16>>2]|0;U=c[la+16>>2]|0;T=c[U+12>>2]|0;if(xb[c[(c[T>>
2]|0)+24>>2]&15](T,f,k,(c[U+8>>2]|0)+12|0,c[la+20>>2]|0)|0){ba=+g[F>>2];$=1-ba;aa=$*+g[G>>2]+ba*+g[I>>2];g[h>>2]=+g[k>>2]*$+ba*+g[H>>2];g[J>>2]=aa;la=c[K>>2]|0;ma=+ob[c[(c[la>>2]|0)+8>>2]&1](la,U,h,f,ba)}else ma=+g[E>>2];if(ma==0)break a;if(ma>0){ba=m+q*ma;aa=n+p*ma;ca=n<aa?n:aa;da=m<ba?m:ba;ea=n>aa?n:aa;fa=m>ba?m:ba;ga=ma}else{ca=M;da=N;ea=O;fa=P;ga=S}}U=c[y>>2]|0;if((U|0)<=0)break a;L=U;M=ca;N=da;O=ea;P=fa;R=c[j>>2]|0;S=ga}}while(0);y=c[j>>2]|0;if((y|0)==(o|0)){i=e;return}Em(y);c[j>>2]=0;i=e;return}
function Cj(d,e,f){d=d|0;e=e|0;f=f|0;var h=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;h=i;j=d+12|0;k=d+28|0;l=d+4|0;m=(a[e+39>>0]|0)==0?0:8;b[l>>1]=m;if(!(a[e+38>>0]|0))n=m;else{o=(m&65535|16)&65535;b[l>>1]=o;n=o}if(!(a[e+36>>0]|0))p=n;else{o=(n&65535|4)&65535;b[l>>1]=o;p=o}if(!(a[e+37>>0]|0))q=p;else{o=(p&65535|2)&65535;b[l>>1]=o;q=o}if(a[e+40>>0]|0)b[l>>1]=q&65535|32;c[d+104>>2]=f;f=e+4|0;q=c[f>>2]|0;l=c[f+4>>2]|0;f=j;c[f>>2]=q;c[f+4>>2]=l;f=e+12|0;r=+g[f>>2];g[d+20>>2]=+T(+r);
g[d+24>>2]=+S(+r);c[k+0>>2]=c[j+0>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];g[d+44>>2]=0;g[d+48>>2]=0;j=d+52|0;c[j>>2]=q;c[j+4>>2]=l;j=d+60|0;c[j>>2]=q;c[j+4>>2]=l;r=+g[f>>2];g[d+68>>2]=r;g[d+72>>2]=r;g[d+76>>2]=0;c[d+124>>2]=0;c[d+128>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;f=e+16|0;l=c[f+4>>2]|0;j=d+80|0;c[j>>2]=c[f>>2];c[j+4>>2]=l;g[d+88>>2]=+g[e+24>>2];g[d+148>>2]=+g[e+28>>2];g[d+152>>2]=+g[e+32>>2];g[d+156>>2]=+g[e+48>>2];g[d+92>>2]=0;g[d+96>>2]=0;g[d+100>>2]=0;g[d+160>>2]=
0;l=c[e>>2]|0;c[d>>2]=l;j=d+132|0;if((l|0)==2){g[j>>2]=1;g[d+136>>2]=1;s=d+140|0;g[s>>2]=0;t=d+144|0;g[t>>2]=0;u=e+44|0;v=c[u>>2]|0;w=d+164|0;c[w>>2]=v;x=d+116|0;c[x>>2]=0;y=d+120|0;c[y>>2]=0;i=h;return}else{g[j>>2]=0;g[d+136>>2]=0;s=d+140|0;g[s>>2]=0;t=d+144|0;g[t>>2]=0;u=e+44|0;v=c[u>>2]|0;w=d+164|0;c[w>>2]=v;x=d+116|0;c[x>>2]=0;y=d+120|0;c[y>>2]=0;i=h;return}}function Dj(a){a=a|0;return}function Ej(a,d){a=a|0;d=d|0;var f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=i;i=i+16|0;h=f;j=a+104|
0;if(c[(c[j>>2]|0)+102876>>2]&2){i=f;return}if((c[a>>2]|0)==(d|0)){i=f;return}c[a>>2]=d;Fj(a);if((c[a>>2]|0)==0?(g[a+80>>2]=0,g[a+84>>2]=0,g[a+88>>2]=0,l=+g[a+72>>2],g[a+68>>2]=l,d=a+60|0,m=c[d>>2]|0,n=c[d+4>>2]|0,d=a+52|0,c[d>>2]=m,c[d+4>>2]=n,o=+T(+l),g[h+8>>2]=o,p=+S(+l),g[h+12>>2]=p,l=+g[a+44>>2],q=+g[a+48>>2],r=(c[k>>2]=m,+g[k>>2])-(p*l-o*q),s=(c[k>>2]=n,+g[k>>2])-(o*l+p*q),q=+r,r=+s,n=h,g[n>>2]=q,g[n+4>>2]=r,n=(c[j>>2]|0)+102880|0,m=c[a+116>>2]|0,(m|0)!=0):0){d=a+12|0;t=m;do{lj(t,n,h,d);t=c[t+
4>>2]|0}while((t|0)!=0)}t=a+4|0;d=e[t>>1]|0;if(!(d&2)){b[t>>1]=d|2;g[a+160>>2]=0}g[a+92>>2]=0;g[a+96>>2]=0;g[a+100>>2]=0;d=a+128|0;t=c[d>>2]|0;if(t){h=t;do{t=h;h=c[h+12>>2]|0;Oj((c[j>>2]|0)+102880|0,c[t+4>>2]|0)}while((h|0)!=0)}c[d>>2]=0;d=(c[j>>2]|0)+102880|0;j=c[a+116>>2]|0;if(!j){i=f;return}else u=j;do{j=c[u+28>>2]|0;if((j|0)>0){a=u+24|0;h=0;do{cf(d,c[(c[a>>2]|0)+(h*28|0)+24>>2]|0);h=h+1|0}while((h|0)!=(j|0))}u=c[u+4>>2]|0}while((u|0)!=0);i=f;return}function Fj(a){a=a|0;var d=0,e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0;d=i;i=i+16|0;e=d;f=a+132|0;h=a+136|0;j=a+140|0;l=a+144|0;m=a+44|0;g[m>>2]=0;g[a+48>>2]=0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;if((c[a>>2]|0)>>>0<2){n=a+12|0;o=c[n>>2]|0;p=c[n+4>>2]|0;n=a+52|0;c[n>>2]=o;c[n+4>>2]=p;n=a+60|0;c[n>>2]=o;c[n+4>>2]=p;g[a+68>>2]=+g[a+72>>2];i=d;return}p=8784;n=c[p>>2]|0;q=+g[p+4>>2];p=c[a+116>>2]|0;if(p){o=e+4|0;r=e+8|0;s=e+12|0;t=0;u=0;v=n;w=q;
x=p;while(1){y=+g[x>>2];if(y==0){z=t;A=u;B=v;C=w}else{p=c[x+12>>2]|0;tb[c[(c[p>>2]|0)+32>>2]&31](p,e,y);y=+g[e>>2];D=y+ +g[f>>2];g[f>>2]=D;p=(g[k>>2]=(c[k>>2]=v,+g[k>>2])+y*+g[o>>2],c[k>>2]|0);E=w+y*+g[r>>2];y=+g[s>>2]+ +g[j>>2];g[j>>2]=y;z=y;A=D;B=p;C=E}x=c[x+4>>2]|0;if(!x)break;else{t=z;u=A;v=B;w=C}}if(A>0){w=1/A;g[h>>2]=w;F=z;G=(g[k>>2]=(c[k>>2]=B,+g[k>>2])*w,c[k>>2]|0);H=C*w;I=A}else{J=B;K=C;L=z;M=10}}else{J=n;K=q;L=0;M=10}if((M|0)==10){g[f>>2]=1;g[h>>2]=1;F=L;G=J;H=K;I=1}if(F>0?(b[a+4>>1]&16)==
0:0){K=(c[k>>2]=G,+g[k>>2]);L=F-(K*K+H*H)*I;g[j>>2]=L;N=1/L}else{g[j>>2]=0;N=0}g[l>>2]=N;l=a+60|0;j=l;N=+g[j>>2];L=+g[j+4>>2];I=+H;j=m;c[j>>2]=G;g[j+4>>2]=I;I=+g[a+24>>2];K=(c[k>>2]=G,+g[k>>2]);F=+g[a+20>>2];q=+g[a+12>>2]+(I*K-F*H);z=K*F+I*H+ +g[a+16>>2];H=+q;I=+z;G=l;g[G>>2]=H;g[G+4>>2]=I;G=a+52|0;g[G>>2]=H;g[G+4>>2]=I;I=+g[a+88>>2];G=a+80|0;g[G>>2]=+g[G>>2]-I*(z-L);G=a+84|0;g[G>>2]=I*(q-N)+ +g[G>>2];i=d;return}function Gj(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;b=i;i=i+16|0;d=b;
e=+g[a+68>>2];f=+T(+e);g[d+8>>2]=f;h=+S(+e);g[d+12>>2]=h;e=+g[a+44>>2];j=+g[a+48>>2];k=+(+g[a+52>>2]-(h*e-f*j));l=+(+g[a+56>>2]-(e*f+h*j));m=d;g[m>>2]=k;g[m+4>>2]=l;m=(c[a+104>>2]|0)+102880|0;n=c[a+116>>2]|0;if(!n){i=b;return}o=a+12|0;a=n;do{lj(a,m,d,o);a=c[a+4>>2]|0}while((a|0)!=0);i=b;return}function Hj(a,d){a=a|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0;e=i;f=a+104|0;h=c[f>>2]|0;if(c[h+102876>>2]&2){j=0;i=e;return j|0}k=um(h,44)|0;if(!k)l=0;else{gj(k);l=k}hj(l,h,a,d);if(b[a+4>>1]&32)jj(l,(c[f>>2]|0)+
102880|0,a+12|0);d=a+116|0;c[l+4>>2]=c[d>>2];c[d>>2]=l;d=a+120|0;c[d>>2]=(c[d>>2]|0)+1;c[l+8>>2]=a;if(+g[l>>2]>0)Fj(a);a=(c[f>>2]|0)+102876|0;c[a>>2]=c[a>>2]|1;j=l;i=e;return j|0}function Ij(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;f=a+104|0;if(c[(c[f>>2]|0)+102876>>2]&2){i=e;return}g=a+116|0;h=c[g>>2]|0;a:do if(h){j=h;k=g;while(1){l=j+4|0;if((j|0)==(d|0))break;j=c[l>>2]|0;if(!j)break a;else k=l}c[k>>2]=c[d+4>>2]}while(0);g=c[a+128>>2]|0;if(g){h=g;do{g=c[h+4>>2]|0;h=c[h+12>>2]|0;if((c[g+
48>>2]|0)==(d|0)?1:(c[g+52>>2]|0)==(d|0))Oj((c[f>>2]|0)+102880|0,g)}while((h|0)!=0)}h=c[f>>2]|0;if(b[a+4>>1]&32)kj(d,h+102880|0);ij(d,h);c[d+8>>2]=0;c[d+4>>2]=0;vm(h,d,44);d=a+120|0;c[d>>2]=(c[d>>2]|0)+-1;Fj(a);i=e;return}function Jj(a,d){a=a|0;d=d|0;var e=0,f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=i;if(c[(c[a+104>>2]|0)+102876>>2]&2){i=e;return}if((c[a>>2]|0)!=2){i=e;return}f=a+140|0;g[f>>2]=0;h=a+144|0;g[h>>2]=0;j=+g[d>>2];l=!(j<=0)?j:1;g[a+132>>2]=l;g[a+136>>2]=1/l;j=+g[d+12>>2];if(j>0?(b[a+
4>>1]&16)==0:0){m=+g[d+4>>2];n=+g[d+8>>2];o=j-l*(m*m+n*n);g[f>>2]=o;g[h>>2]=1/o}h=a+60|0;f=h;o=+g[f>>2];n=+g[f+4>>2];f=d+4|0;d=c[f>>2]|0;p=c[f+4>>2]|0;f=a+44|0;c[f>>2]=d;c[f+4>>2]=p;m=+g[a+24>>2];l=(c[k>>2]=d,+g[k>>2]);j=+g[a+20>>2];q=(c[k>>2]=p,+g[k>>2]);r=+g[a+12>>2]+(m*l-j*q);s=l*j+m*q+ +g[a+16>>2];q=+r;m=+s;p=h;g[p>>2]=q;g[p+4>>2]=m;p=a+52|0;g[p>>2]=q;g[p+4>>2]=m;m=+g[a+88>>2];p=a+80|0;g[p>>2]=+g[p>>2]-m*(s-n);p=a+84|0;g[p>>2]=m*(r-o)+ +g[p>>2];i=e;return}function Kj(b,d){b=b|0;d=d|0;var e=0,
f=0,g=0,h=0,j=0;e=i;if((c[b>>2]|0)!=2?(c[d>>2]|0)!=2:0)f=0;else g=3;a:do if((g|0)==3){h=c[b+124>>2]|0;if(!h)f=1;else{j=h;while(1){if((c[j>>2]|0)==(d|0)?(a[(c[j+4>>2]|0)+61>>0]|0)==0:0){f=0;break a}j=c[j+12>>2]|0;if(!j){f=1;break}}}}while(0);i=e;return f|0}function Lj(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=i;f=c[a+104>>2]|0;if(c[f+102876>>2]&2){i=e;return}h=a+12|0;j=+T(+d);g[a+20>>2]=j;l=+S(+d);g[a+24>>2]=l;m=b;b=c[m>>2]|0;n=c[m+4>>2]|0;m=h;c[m>>2]=b;c[m+4>>2]=
n;m=a+28|0;c[m+0>>2]=c[h+0>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];o=+g[a+44>>2];p=+g[a+48>>2];q=(c[k>>2]=b,+g[k>>2])+(l*o-j*p);r=o*j+l*p+(c[k>>2]=n,+g[k>>2]);p=+q;q=+r;n=a+60|0;g[n>>2]=p;g[n+4>>2]=q;g[a+72>>2]=d;n=a+52|0;g[n>>2]=p;g[n+4>>2]=q;g[a+68>>2]=d;n=f+102880|0;f=c[a+116>>2]|0;if(!f){i=e;return}else s=f;do{lj(s,n,h,h);s=c[s+4>>2]|0}while((s|0)!=0);i=e;return}function Mj(a,c){a=a|0;c=c|0;var d=0,f=0,h=0;d=i;f=a+4|0;h=e[f>>1]|0;if(!((h&16|0)!=0^c)){i=d;return}b[f>>
1]=c?h|16:h&65519;g[a+88>>2]=0;Fj(a);i=d;return}function Nj(a){a=a|0;var b=0;b=i;Ze(a);c[a+60>>2]=0;c[a+64>>2]=0;c[a+68>>2]=6800;c[a+72>>2]=6808;c[a+76>>2]=0;i=b;return}function Oj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;e=c[(c[b+48>>2]|0)+8>>2]|0;f=c[(c[b+52>>2]|0)+8>>2]|0;g=c[a+72>>2]|0;if((g|0)!=0?(c[b+4>>2]&2|0)!=0:0)pb[c[(c[g>>2]|0)+12>>2]&63](g,b);g=c[b+8>>2]|0;h=b+12|0;if(g)c[g+12>>2]=c[h>>2];j=c[h>>2]|0;if(j)c[j+8>>2]=g;g=a+60|0;if((c[g>>2]|0)==(b|0))c[g>>2]=j;
j=c[b+24>>2]|0;g=b+28|0;if(j)c[j+12>>2]=c[g>>2];h=c[g>>2]|0;if(h)c[h+8>>2]=j;j=e+128|0;if((b+16|0)==(c[j>>2]|0))c[j>>2]=h;h=c[b+40>>2]|0;j=b+44|0;if(h)c[h+12>>2]=c[j>>2];e=c[j>>2]|0;if(e)c[e+8>>2]=h;h=f+128|0;if((b+32|0)!=(c[h>>2]|0)){k=a+76|0;l=c[k>>2]|0;xi(b,l);m=a+64|0;n=c[m>>2]|0;o=n+-1|0;c[m>>2]=o;i=d;return}c[h>>2]=e;k=a+76|0;l=c[k>>2]|0;xi(b,l);m=a+64|0;n=c[m>>2]|0;o=n+-1|0;c[m>>2]=o;i=d;return}function Pj(a){a=a|0;var d=0,e=0,f=0,h=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;
d=i;e=c[a+60>>2]|0;if(!e){i=d;return}f=a+4|0;h=a+72|0;j=a+68|0;k=e;while(1){e=c[k+48>>2]|0;l=c[k+52>>2]|0;m=c[k+56>>2]|0;n=c[k+60>>2]|0;o=c[e+8>>2]|0;p=c[l+8>>2]|0;q=k+4|0;do if(!(c[q>>2]&8))r=11;else{if(!(Kj(p,o)|0)){s=c[k+12>>2]|0;Oj(a,k);t=s;break}s=c[j>>2]|0;if((s|0)!=0?!(qb[c[(c[s>>2]|0)+8>>2]&15](s,e,l)|0):0){s=c[k+12>>2]|0;Oj(a,k);t=s;break}c[q>>2]=c[q>>2]&-9;r=11}while(0);do if((r|0)==11){r=0;if(!(b[o+4>>1]&2))u=0;else u=(c[o>>2]|0)!=0;if(!(b[p+4>>1]&2))v=0;else v=(c[p>>2]|0)!=0;if(!(u|v)){t=
c[k+12>>2]|0;break}q=c[(c[e+24>>2]|0)+(m*28|0)+24>>2]|0;s=c[(c[l+24>>2]|0)+(n*28|0)+24>>2]|0;w=c[f>>2]|0;if((+g[w+(s*36|0)>>2]-+g[w+(q*36|0)+8>>2]>0?1:+g[w+(s*36|0)+4>>2]-+g[w+(q*36|0)+12>>2]>0)|+g[w+(q*36|0)>>2]-+g[w+(s*36|0)+8>>2]>0|+g[w+(q*36|0)+4>>2]-+g[w+(s*36|0)+12>>2]>0){s=c[k+12>>2]|0;Oj(a,k);t=s;break}else{zi(k,c[h>>2]|0);t=c[k+12>>2]|0;break}}while(0);if(!t)break;else k=t}i=d;return}function Qj(a){a=a|0;var b=0;b=i;Xj(a,a);i=b;return}function Rj(d,f,h){d=d|0;f=f|0;h=h|0;var 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;j=i;k=c[f+16>>2]|0;l=c[h+16>>2]|0;m=c[f+20>>2]|0;f=c[h+20>>2]|0;h=c[k+8>>2]|0;n=c[l+8>>2]|0;if((h|0)==(n|0)){i=j;return}o=c[n+128>>2]|0;a:do if(o){p=o;while(1){if((c[p>>2]|0)==(h|0)){q=c[p+4>>2]|0;r=c[q+48>>2]|0;s=c[q+52>>2]|0;t=c[q+56>>2]|0;u=c[q+60>>2]|0;if((r|0)==(k|0)&(s|0)==(l|0)&(t|0)==(m|0)&(u|0)==(f|0)){v=24;break}if((r|0)==(l|0)&(s|0)==(k|0)&(t|0)==(f|0)&(u|0)==(m|0)){v=24;break}}p=c[p+12>>2]|0;if(!p)break a}if((v|0)==24){i=j;return}}while(0);if(!(Kj(n,
h)|0)){i=j;return}h=c[d+68>>2]|0;if((h|0)!=0?!(qb[c[(c[h>>2]|0)+8>>2]&15](h,k,l)|0):0){i=j;return}h=wi(k,m,l,f,c[d+76>>2]|0)|0;if(!h){i=j;return}f=c[h+48>>2]|0;l=c[h+52>>2]|0;m=c[f+8>>2]|0;k=c[l+8>>2]|0;c[h+8>>2]=0;n=d+60|0;v=c[n>>2]|0;c[h+12>>2]=v;if(v)c[v+8>>2]=h;c[n>>2]=h;n=h+16|0;c[h+20>>2]=h;c[n>>2]=k;c[h+24>>2]=0;v=m+128|0;o=c[v>>2]|0;c[h+28>>2]=o;if(o)c[o+8>>2]=n;c[v>>2]=n;n=h+32|0;c[h+36>>2]=h;c[n>>2]=m;c[h+40>>2]=0;v=k+128|0;o=c[v>>2]|0;c[h+44>>2]=o;if(o)c[o+8>>2]=n;c[v>>2]=n;if((a[f+38>>
0]|0)==0?(a[l+38>>0]|0)==0:0){l=m+4|0;f=e[l>>1]|0;if(!(f&2)){b[l>>1]=f|2;g[m+160>>2]=0}m=k+4|0;f=e[m>>1]|0;if(!(f&2)){b[m>>1]=f|2;g[k+160>>2]=0}}k=d+64|0;c[k>>2]=(c[k>>2]|0)+1;i=j;return}function Sj(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Tj(a,b){a=a|0;b=b|0;return}function Uj(a,b){a=a|0;b=b|0;return}function Vj(a,b,c){a=a|0;b=b|0;c=c|0;return}function Wj(a,b,c){a=a|0;b=b|0;c=c|0;return}function Xj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=i;i=i+16|0;e=d;f=a+52|
0;c[f>>2]=0;g=a+40|0;h=c[g>>2]|0;if((h|0)>0){j=a+32|0;k=a+56|0;l=a+4|0;m=h;h=0;while(1){n=c[(c[j>>2]|0)+(h<<2)>>2]|0;c[k>>2]=n;if((n|0)==-1)o=m;else{Yj(a,a,(c[l>>2]|0)+(n*36|0)|0);o=c[g>>2]|0}h=h+1|0;if((h|0)>=(o|0))break;else m=o}p=c[f>>2]|0}else p=0;c[g>>2]=0;g=a+44|0;o=c[g>>2]|0;c[e>>2]=26;_j(o,o+(p<<3)|0,e);if((c[f>>2]|0)<=0){i=d;return}e=a+4|0;a=0;a:while(1){p=c[g>>2]|0;o=p+(a<<3)|0;m=c[e>>2]|0;h=p+(a<<3)+4|0;Rj(b,c[m+((c[o>>2]|0)*36|0)+16>>2]|0,c[m+((c[h>>2]|0)*36|0)+16>>2]|0);m=c[f>>2]|0;p=
a;while(1){l=p+1|0;if((l|0)>=(m|0))break a;k=c[g>>2]|0;if((c[k+(l<<3)>>2]|0)!=(c[o>>2]|0)){a=l;continue a}if((c[k+(l<<3)+4>>2]|0)==(c[h>>2]|0))p=l;else{a=l;continue a}}}i=d;return}function Yj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=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;e=i;i=i+1040|0;f=e;h=f+4|0;c[f>>2]=h;j=f+1028|0;c[j>>2]=0;k=f+1032|0;c[k>>2]=256;c[h>>2]=c[a>>2];l=c[j>>2]|0;m=l+1|0;c[j>>2]=m;a:do if((l|0)>-1){n=a+4|0;o=d+4|0;p=d+8|0;q=d+12|0;r=m;s=h;while(1){t=r+-1|
0;c[j>>2]=t;u=c[s+(t<<2)>>2]|0;do if((u|0)!=-1?(v=c[n>>2]|0,!((+g[d>>2]-+g[v+(u*36|0)+8>>2]>0?1:+g[o>>2]-+g[v+(u*36|0)+12>>2]>0)|+g[v+(u*36|0)>>2]-+g[p>>2]>0|+g[v+(u*36|0)+4>>2]-+g[q>>2]>0)):0){w=v+(u*36|0)+24|0;if((c[w>>2]|0)==-1){if(!(df(b,u)|0))break a;x=c[j>>2]|0;break}if((t|0)==(c[k>>2]|0)?(c[k>>2]=t<<1,y=Dm(t<<3)|0,c[f>>2]=y,Dn(y|0,s|0,c[j>>2]<<2|0)|0,(s|0)!=(h|0)):0)Em(s);y=c[f>>2]|0;c[y+(c[j>>2]<<2)>>2]=c[w>>2];w=(c[j>>2]|0)+1|0;c[j>>2]=w;z=v+(u*36|0)+28|0;if((w|0)==(c[k>>2]|0)?(c[k>>2]=w<<
1,v=Dm(w<<3)|0,c[f>>2]=v,Dn(v|0,y|0,c[j>>2]<<2|0)|0,(y|0)!=(h|0)):0)Em(y);c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]=c[z>>2];z=(c[j>>2]|0)+1|0;c[j>>2]=z;x=z}else x=t;while(0);if((x|0)<=0)break a;r=x;s=c[f>>2]|0}}while(0);x=c[f>>2]|0;if((x|0)==(h|0)){i=e;return}Em(x);c[f>>2]=0;i=e;return}function Zj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[a>>2]|0;f=c[b>>2]|0;if((e|0)>=(f|0))if((e|0)==(f|0))g=(c[a+4>>2]|0)<(c[b+4>>2]|0);else g=0;else g=1;i=d;return g|0}function _j(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,
h=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,J=0,K=0,L=0,M=0,N=0,O=0;e=i;f=a;a=b;a:while(1){b=a;g=a+-8|0;h=f;b:while(1){j=h;k=b-j|0;l=k>>3;switch(l|0){case 4:m=14;break a;break;case 5:m=15;break a;break;case 2:m=4;break a;break;case 3:m=6;break a;break;case 1:case 0:m=67;break a;break;default:}if((k|0)<248){m=21;break a}n=(l|0)/2|0;o=h+(n<<3)|0;do if((k|0)>7992){p=(l|0)/4|0;q=h+(p<<3)|0;r=h+(p+n<<3)|0;p=$j(h,q,o,r,d)|0;if(wb[c[d>>2]&31](g,
r)|0){s=r;t=c[s>>2]|0;u=c[s+4>>2]|0;s=g;v=c[s+4>>2]|0;w=r;c[w>>2]=c[s>>2];c[w+4>>2]=v;v=g;c[v>>2]=t;c[v+4>>2]=u;u=p+1|0;if(wb[c[d>>2]&31](r,o)|0){v=o;t=c[v>>2]|0;w=c[v+4>>2]|0;v=r;s=c[v+4>>2]|0;x=o;c[x>>2]=c[v>>2];c[x+4>>2]=s;s=r;c[s>>2]=t;c[s+4>>2]=w;w=p+2|0;if(wb[c[d>>2]&31](o,q)|0){s=q;t=c[s>>2]|0;r=c[s+4>>2]|0;s=o;x=c[s+4>>2]|0;v=q;c[v>>2]=c[s>>2];c[v+4>>2]=x;x=o;c[x>>2]=t;c[x+4>>2]=r;if(wb[c[d>>2]&31](q,h)|0){r=h;x=c[r>>2]|0;t=c[r+4>>2]|0;r=q;v=c[r+4>>2]|0;s=h;c[s>>2]=c[r>>2];c[s+4>>2]=v;v=q;
c[v>>2]=x;c[v+4>>2]=t;y=p+4|0}else y=p+3|0}else y=w}else y=u}else y=p}else{p=wb[c[d>>2]&31](o,h)|0;u=wb[c[d>>2]&31](g,o)|0;if(!p){if(!u){y=0;break}p=o;w=c[p>>2]|0;t=c[p+4>>2]|0;p=g;v=c[p+4>>2]|0;x=o;c[x>>2]=c[p>>2];c[x+4>>2]=v;v=g;c[v>>2]=w;c[v+4>>2]=t;if(!(wb[c[d>>2]&31](o,h)|0)){y=1;break}t=h;v=c[t>>2]|0;w=c[t+4>>2]|0;t=o;x=c[t+4>>2]|0;p=h;c[p>>2]=c[t>>2];c[p+4>>2]=x;x=o;c[x>>2]=v;c[x+4>>2]=w;y=2;break}w=h;x=c[w>>2]|0;v=c[w+4>>2]|0;if(u){u=g;w=c[u+4>>2]|0;p=h;c[p>>2]=c[u>>2];c[p+4>>2]=w;w=g;c[w>>
2]=x;c[w+4>>2]=v;y=1;break}w=o;p=c[w+4>>2]|0;u=h;c[u>>2]=c[w>>2];c[u+4>>2]=p;p=o;c[p>>2]=x;c[p+4>>2]=v;if(wb[c[d>>2]&31](g,o)|0){v=o;p=c[v>>2]|0;x=c[v+4>>2]|0;v=g;u=c[v+4>>2]|0;w=o;c[w>>2]=c[v>>2];c[w+4>>2]=u;u=g;c[u>>2]=p;c[u+4>>2]=x;y=2}else y=1}while(0);do if(wb[c[d>>2]&31](h,o)|0){z=g;A=y}else{n=g;while(1){n=n+-8|0;if((h|0)==(n|0))break;if(wb[c[d>>2]&31](n,o)|0){m=50;break}}if((m|0)==50){m=0;l=h;k=c[l>>2]|0;x=c[l+4>>2]|0;l=n;u=c[l+4>>2]|0;p=h;c[p>>2]=c[l>>2];c[p+4>>2]=u;u=n;c[u>>2]=k;c[u+4>>2]=
x;z=n;A=y+1|0;break}x=h+8|0;if(wb[c[d>>2]&31](h,g)|0)B=x;else{if((x|0)==(g|0)){m=67;break a}else C=x;while(1){D=C+8|0;if(wb[c[d>>2]&31](h,C)|0)break;if((D|0)==(g|0)){m=67;break a}else C=D}n=C;x=c[n>>2]|0;u=c[n+4>>2]|0;n=g;k=c[n+4>>2]|0;p=C;c[p>>2]=c[n>>2];c[p+4>>2]=k;k=g;c[k>>2]=x;c[k+4>>2]=u;B=D}if((B|0)==(g|0)){m=67;break a}else{E=B;F=g}while(1){u=E;while(1){G=u+8|0;if(wb[c[d>>2]&31](h,u)|0){H=F;break}else u=G}do H=H+-8|0;while(wb[c[d>>2]&31](h,H)|0);if(u>>>0>=H>>>0){h=u;continue b}k=u;x=c[k>>2]|
0;p=c[k+4>>2]|0;k=H;n=c[k+4>>2]|0;l=u;c[l>>2]=c[k>>2];c[l+4>>2]=n;n=H;c[n>>2]=x;c[n+4>>2]=p;E=G;F=H}}while(0);p=h+8|0;c:do if(p>>>0<z>>>0){n=p;x=z;l=o;k=A;while(1){w=n;while(1){I=w+8|0;if(wb[c[d>>2]&31](w,l)|0)w=I;else{J=x;break}}do J=J+-8|0;while(!(wb[c[d>>2]&31](J,l)|0));if(w>>>0>J>>>0){K=w;L=l;M=k;break c}u=w;v=c[u>>2]|0;t=c[u+4>>2]|0;u=J;q=c[u+4>>2]|0;s=w;c[s>>2]=c[u>>2];c[s+4>>2]=q;q=J;c[q>>2]=v;c[q+4>>2]=t;n=I;x=J;l=(l|0)==(w|0)?J:l;k=k+1|0}}else{K=p;L=o;M=A}while(0);if((K|0)!=(L|0)?wb[c[d>>
2]&31](L,K)|0:0){o=K;p=c[o>>2]|0;k=c[o+4>>2]|0;o=L;l=c[o+4>>2]|0;x=K;c[x>>2]=c[o>>2];c[x+4>>2]=l;l=L;c[l>>2]=p;c[l+4>>2]=k;N=M+1|0}else N=M;if(!N){O=bk(h,K,d)|0;k=K+8|0;if(bk(k,a,d)|0){m=62;break}if(O){h=k;continue}}k=K;if((k-j|0)>=(b-k|0)){m=66;break}_j(h,K,d);h=K+8|0}if((m|0)==62){m=0;if(O){m=67;break}else{f=h;a=K;continue}}else if((m|0)==66){m=0;_j(K+8|0,a,d);f=h;a=K;continue}}if((m|0)==4){if(!(wb[c[d>>2]&31](g,h)|0)){i=e;return}K=h;f=c[K>>2]|0;O=c[K+4>>2]|0;K=g;N=c[K+4>>2]|0;M=h;c[M>>2]=c[K>>
2];c[M+4>>2]=N;N=g;c[N>>2]=f;c[N+4>>2]=O;i=e;return}else if((m|0)==6){O=h+8|0;N=wb[c[d>>2]&31](O,h)|0;f=wb[c[d>>2]&31](g,O)|0;if(!N){if(!f){i=e;return}N=O;M=c[N>>2]|0;K=c[N+4>>2]|0;N=g;L=c[N+4>>2]|0;A=O;c[A>>2]=c[N>>2];c[A+4>>2]=L;L=g;c[L>>2]=M;c[L+4>>2]=K;if(!(wb[c[d>>2]&31](O,h)|0)){i=e;return}K=h;L=c[K>>2]|0;M=c[K+4>>2]|0;K=O;A=c[K+4>>2]|0;N=h;c[N>>2]=c[K>>2];c[N+4>>2]=A;A=O;c[A>>2]=L;c[A+4>>2]=M;i=e;return}M=h;A=c[M>>2]|0;L=c[M+4>>2]|0;if(f){f=g;M=c[f+4>>2]|0;N=h;c[N>>2]=c[f>>2];c[N+4>>2]=M;M=
g;c[M>>2]=A;c[M+4>>2]=L;i=e;return}M=O;N=c[M+4>>2]|0;f=h;c[f>>2]=c[M>>2];c[f+4>>2]=N;N=O;c[N>>2]=A;c[N+4>>2]=L;if(!(wb[c[d>>2]&31](g,O)|0)){i=e;return}L=O;N=c[L>>2]|0;A=c[L+4>>2]|0;L=g;f=c[L+4>>2]|0;M=O;c[M>>2]=c[L>>2];c[M+4>>2]=f;f=g;c[f>>2]=N;c[f+4>>2]=A;i=e;return}else if((m|0)==14){$j(h,h+8|0,h+16|0,g,d)|0;i=e;return}else if((m|0)==15){A=h+8|0;f=h+16|0;N=h+24|0;$j(h,A,f,N,d)|0;if(!(wb[c[d>>2]&31](g,N)|0)){i=e;return}M=N;L=c[M>>2]|0;O=c[M+4>>2]|0;M=g;K=c[M+4>>2]|0;J=N;c[J>>2]=c[M>>2];c[J+4>>2]=
K;K=g;c[K>>2]=L;c[K+4>>2]=O;if(!(wb[c[d>>2]&31](N,f)|0)){i=e;return}O=f;K=c[O>>2]|0;L=c[O+4>>2]|0;O=N;g=c[O+4>>2]|0;J=f;c[J>>2]=c[O>>2];c[J+4>>2]=g;g=N;c[g>>2]=K;c[g+4>>2]=L;if(!(wb[c[d>>2]&31](f,A)|0)){i=e;return}L=A;g=c[L>>2]|0;K=c[L+4>>2]|0;L=f;N=c[L+4>>2]|0;J=A;c[J>>2]=c[L>>2];c[J+4>>2]=N;N=f;c[N>>2]=g;c[N+4>>2]=K;if(!(wb[c[d>>2]&31](A,h)|0)){i=e;return}K=h;N=c[K>>2]|0;g=c[K+4>>2]|0;K=A;f=c[K+4>>2]|0;J=h;c[J>>2]=c[K>>2];c[J+4>>2]=f;f=A;c[f>>2]=N;c[f+4>>2]=g;i=e;return}else if((m|0)==21){ak(h,
a,d);i=e;return}else if((m|0)==67){i=e;return}}function $j(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;h=wb[c[f>>2]&31](b,a)|0;j=wb[c[f>>2]&31](d,b)|0;do if(h){k=a;l=c[k>>2]|0;m=c[k+4>>2]|0;if(j){k=d;n=c[k+4>>2]|0;o=a;c[o>>2]=c[k>>2];c[o+4>>2]=n;n=d;c[n>>2]=l;c[n+4>>2]=m;p=1;break}n=b;o=c[n+4>>2]|0;k=a;c[k>>2]=c[n>>2];c[k+4>>2]=o;o=b;c[o>>2]=l;c[o+4>>2]=m;if(wb[c[f>>2]&31](d,b)|0){m=b;o=c[m>>2]|0;l=c[m+4>>2]|0;m=d;k=c[m+4>>2]|0;n=b;c[n>>2]=c[m>>2];c[n+
4>>2]=k;k=d;c[k>>2]=o;c[k+4>>2]=l;p=2}else p=1}else if(j){l=b;k=c[l>>2]|0;o=c[l+4>>2]|0;l=d;n=c[l+4>>2]|0;m=b;c[m>>2]=c[l>>2];c[m+4>>2]=n;n=d;c[n>>2]=k;c[n+4>>2]=o;if(wb[c[f>>2]&31](b,a)|0){o=a;n=c[o>>2]|0;k=c[o+4>>2]|0;o=b;m=c[o+4>>2]|0;l=a;c[l>>2]=c[o>>2];c[l+4>>2]=m;m=b;c[m>>2]=n;c[m+4>>2]=k;p=2}else p=1}else p=0;while(0);if(!(wb[c[f>>2]&31](e,d)|0)){q=p;i=g;return q|0}j=d;h=c[j>>2]|0;k=c[j+4>>2]|0;j=e;m=c[j+4>>2]|0;n=d;c[n>>2]=c[j>>2];c[n+4>>2]=m;m=e;c[m>>2]=h;c[m+4>>2]=k;if(!(wb[c[f>>2]&31](d,
b)|0)){q=p+1|0;i=g;return q|0}k=b;m=c[k>>2]|0;h=c[k+4>>2]|0;k=d;e=c[k+4>>2]|0;n=b;c[n>>2]=c[k>>2];c[n+4>>2]=e;e=d;c[e>>2]=m;c[e+4>>2]=h;if(!(wb[c[f>>2]&31](b,a)|0)){q=p+2|0;i=g;return q|0}f=a;h=c[f>>2]|0;e=c[f+4>>2]|0;f=b;m=c[f+4>>2]|0;d=a;c[d>>2]=c[f>>2];c[d+4>>2]=m;m=b;c[m>>2]=h;c[m+4>>2]=e;q=p+3|0;i=g;return q|0}function ak(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;i=i+16|0;f=e;g=a+16|0;h=a+8|0;j=wb[c[d>>2]&31](h,a)|0;k=wb[c[d>>2]&31](g,h)|0;do if(j){l=
a;m=c[l>>2]|0;n=c[l+4>>2]|0;if(k){l=g;o=c[l+4>>2]|0;p=a;c[p>>2]=c[l>>2];c[p+4>>2]=o;o=g;c[o>>2]=m;c[o+4>>2]=n;break}o=h;p=c[o+4>>2]|0;l=a;c[l>>2]=c[o>>2];c[l+4>>2]=p;p=h;c[p>>2]=m;c[p+4>>2]=n;if(wb[c[d>>2]&31](g,h)|0){n=h;p=c[n>>2]|0;m=c[n+4>>2]|0;n=g;l=c[n+4>>2]|0;o=h;c[o>>2]=c[n>>2];c[o+4>>2]=l;l=g;c[l>>2]=p;c[l+4>>2]=m}}else if(k?(m=h,l=c[m>>2]|0,p=c[m+4>>2]|0,m=g,o=c[m+4>>2]|0,n=h,c[n>>2]=c[m>>2],c[n+4>>2]=o,o=g,c[o>>2]=l,c[o+4>>2]=p,wb[c[d>>2]&31](h,a)|0):0){p=a;o=c[p>>2]|0;l=c[p+4>>2]|0;p=h;
n=c[p+4>>2]|0;m=a;c[m>>2]=c[p>>2];c[m+4>>2]=n;n=h;c[n>>2]=o;c[n+4>>2]=l}while(0);h=a+24|0;if((h|0)==(b|0)){i=e;return}else{q=h;r=g}while(1){if(wb[c[d>>2]&31](q,r)|0){g=q;h=c[g+4>>2]|0;k=f;c[k>>2]=c[g>>2];c[k+4>>2]=h;h=q;k=r;while(1){g=k;j=c[g+4>>2]|0;l=h;c[l>>2]=c[g>>2];c[l+4>>2]=j;if((k|0)==(a|0))break;j=k+-8|0;if(wb[c[d>>2]&31](f,j)|0){l=k;k=j;h=l}else break}h=f;l=c[h+4>>2]|0;j=k;c[j>>2]=c[h>>2];c[j+4>>2]=l}l=q+8|0;if((l|0)==(b|0))break;else{j=q;q=l;r=j}}i=e;return}function bk(a,b,d){a=a|0;b=b|
0;d=d|0;var e=0,f=0,g=0,h=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;e=i;i=i+16|0;f=e;switch(b-a>>3|0){case 1:case 0:g=1;i=e;return g|0;case 5:h=a+8|0;j=a+16|0;k=a+24|0;l=b+-8|0;$j(a,h,j,k,d)|0;if(!(wb[c[d>>2]&31](l,k)|0)){g=1;i=e;return g|0}m=k;n=c[m>>2]|0;o=c[m+4>>2]|0;m=l;p=c[m+4>>2]|0;q=k;c[q>>2]=c[m>>2];c[q+4>>2]=p;p=l;c[p>>2]=n;c[p+4>>2]=o;if(!(wb[c[d>>2]&31](k,j)|0)){g=1;i=e;return g|0}o=j;p=c[o>>2]|0;n=c[o+4>>2]|0;o=k;l=c[o+4>>2]|0;q=j;c[q>>2]=c[o>>2];c[q+4>>2]=l;l=k;c[l>>2]=p;
c[l+4>>2]=n;if(!(wb[c[d>>2]&31](j,h)|0)){g=1;i=e;return g|0}n=h;l=c[n>>2]|0;p=c[n+4>>2]|0;n=j;k=c[n+4>>2]|0;q=h;c[q>>2]=c[n>>2];c[q+4>>2]=k;k=j;c[k>>2]=l;c[k+4>>2]=p;if(!(wb[c[d>>2]&31](h,a)|0)){g=1;i=e;return g|0}p=a;k=c[p>>2]|0;l=c[p+4>>2]|0;p=h;j=c[p+4>>2]|0;q=a;c[q>>2]=c[p>>2];c[q+4>>2]=j;j=h;c[j>>2]=k;c[j+4>>2]=l;g=1;i=e;return g|0;case 3:l=a+8|0;j=b+-8|0;k=wb[c[d>>2]&31](l,a)|0;h=wb[c[d>>2]&31](j,l)|0;if(!k){if(!h){g=1;i=e;return g|0}k=l;q=c[k>>2]|0;p=c[k+4>>2]|0;k=j;n=c[k+4>>2]|0;o=l;c[o>>
2]=c[k>>2];c[o+4>>2]=n;n=j;c[n>>2]=q;c[n+4>>2]=p;if(!(wb[c[d>>2]&31](l,a)|0)){g=1;i=e;return g|0}p=a;n=c[p>>2]|0;q=c[p+4>>2]|0;p=l;o=c[p+4>>2]|0;k=a;c[k>>2]=c[p>>2];c[k+4>>2]=o;o=l;c[o>>2]=n;c[o+4>>2]=q;g=1;i=e;return g|0}q=a;o=c[q>>2]|0;n=c[q+4>>2]|0;if(h){h=j;q=c[h+4>>2]|0;k=a;c[k>>2]=c[h>>2];c[k+4>>2]=q;q=j;c[q>>2]=o;c[q+4>>2]=n;g=1;i=e;return g|0}q=l;k=c[q+4>>2]|0;h=a;c[h>>2]=c[q>>2];c[h+4>>2]=k;k=l;c[k>>2]=o;c[k+4>>2]=n;if(!(wb[c[d>>2]&31](j,l)|0)){g=1;i=e;return g|0}n=l;k=c[n>>2]|0;o=c[n+4>>
2]|0;n=j;h=c[n+4>>2]|0;q=l;c[q>>2]=c[n>>2];c[q+4>>2]=h;h=j;c[h>>2]=k;c[h+4>>2]=o;g=1;i=e;return g|0;case 4:$j(a,a+8|0,a+16|0,b+-8|0,d)|0;g=1;i=e;return g|0;case 2:o=b+-8|0;if(!(wb[c[d>>2]&31](o,a)|0)){g=1;i=e;return g|0}h=a;k=c[h>>2]|0;j=c[h+4>>2]|0;h=o;q=c[h+4>>2]|0;n=a;c[n>>2]=c[h>>2];c[n+4>>2]=q;q=o;c[q>>2]=k;c[q+4>>2]=j;g=1;i=e;return g|0;default:j=a+16|0;q=a+8|0;k=wb[c[d>>2]&31](q,a)|0;o=wb[c[d>>2]&31](j,q)|0;do if(k){n=a;h=c[n>>2]|0;l=c[n+4>>2]|0;if(o){n=j;p=c[n+4>>2]|0;m=a;c[m>>2]=c[n>>2];
c[m+4>>2]=p;p=j;c[p>>2]=h;c[p+4>>2]=l;break}p=q;m=c[p+4>>2]|0;n=a;c[n>>2]=c[p>>2];c[n+4>>2]=m;m=q;c[m>>2]=h;c[m+4>>2]=l;if(wb[c[d>>2]&31](j,q)|0){l=q;m=c[l>>2]|0;h=c[l+4>>2]|0;l=j;n=c[l+4>>2]|0;p=q;c[p>>2]=c[l>>2];c[p+4>>2]=n;n=j;c[n>>2]=m;c[n+4>>2]=h}}else if(o?(h=q,n=c[h>>2]|0,m=c[h+4>>2]|0,h=j,p=c[h+4>>2]|0,l=q,c[l>>2]=c[h>>2],c[l+4>>2]=p,p=j,c[p>>2]=n,c[p+4>>2]=m,wb[c[d>>2]&31](q,a)|0):0){m=a;p=c[m>>2]|0;n=c[m+4>>2]|0;m=q;l=c[m+4>>2]|0;h=a;c[h>>2]=c[m>>2];c[h+4>>2]=l;l=q;c[l>>2]=p;c[l+4>>2]=n}while(0);
q=a+24|0;if((q|0)==(b|0)){g=1;i=e;return g|0}else{r=0;s=q;t=j}while(1){if(wb[c[d>>2]&31](s,t)|0){j=s;q=c[j+4>>2]|0;o=f;c[o>>2]=c[j>>2];c[o+4>>2]=q;q=s;o=t;while(1){j=o;k=c[j+4>>2]|0;n=q;c[n>>2]=c[j>>2];c[n+4>>2]=k;if((o|0)==(a|0))break;k=o+-8|0;if(wb[c[d>>2]&31](f,k)|0){n=o;o=k;q=n}else break}q=f;n=c[q+4>>2]|0;k=o;c[k>>2]=c[q>>2];c[k+4>>2]=n;n=r+1|0;if((n|0)==8)break;else u=n}else u=r;n=s+8|0;if((n|0)==(b|0)){g=1;v=34;break}else{k=s;r=u;s=n;t=k}}if((v|0)==34){i=e;return g|0}g=(s+8|0)==(b|0);i=e;return g|
0}return 0}function ck(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;c[a>>2]=b;c[a+4>>2]=Om(b,d<<4)|0;c[a+8>>2]=d;d=a+12|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;i=e;return}function dk(a){a=a|0;var b=0,d=0;b=i;d=c[a+24>>2]|0;if(d)Qm(c[a>>2]|0,d);Qm(c[a>>2]|0,c[a+4>>2]|0);i=b;return}function ek(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=b+12|0;h=c[g>>2]|0;c[g>>2]=h+1;g=c[b+4>>2]|0;b=d;d=c[b+4>>2]|0;i=g+(h<<4)|0;c[i>>2]=c[b>>2];c[i+4>>2]=d;c[g+(h<<4)+8>>2]=e;a[g+(h<<4)+12>>0]=f&1;return}function fk(b,
d,e){b=b|0;d=+d;e=+e;var f=0,h=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,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,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;f=i;h=1/d;j=b+12|0;k=c[j>>2]|0;if((k|0)>0){l=c[b+4>>2]|0;d=3.4028234663852886E38;m=3.4028234663852886E38;n=-3.4028234663852886E38;o=-3.4028234663852886E38;p=0;while(1){if(!(a[l+(p<<4)+12>>0]|0)){q=m;r=d;s=
o;t=n}else{u=+g[l+(p<<4)>>2];v=+g[l+(p<<4)+4>>2];q=m<v?m:v;r=d<u?d:u;s=o>v?o:v;t=n>u?n:u}p=p+1|0;if((p|0)>=(k|0)){w=q;x=r;y=s;z=t;break}else{d=r;m=q;n=t;o=s}}}else{w=3.4028234663852886E38;x=3.4028234663852886E38;y=-3.4028234663852886E38;z=-3.4028234663852886E38}s=x-e;x=w-e;k=~~(h*(z+e-s))+1|0;p=b+16|0;c[p>>2]=k;l=~~(h*(y+e-x))+1|0;A=b+20|0;c[A>>2]=l;B=Om(c[b>>2]|0,aa(l<<2,k)|0)|0;k=b+24|0;c[k>>2]=B;l=c[p>>2]|0;C=c[A>>2]|0;D=aa(C,l)|0;a:do if((D|0)>0){E=B;F=0;while(1){c[E+(F<<2)>>2]=0;G=F+1|0;if((G|
0)>=(D|0))break a;E=c[k>>2]|0;F=G}}while(0);D=c[b>>2]|0;B=aa(l<<2,C)|0;C=Om(D,B<<4)|0;if((c[j>>2]|0)>0){l=b+4|0;b=0;F=B;E=C;G=0;while(1){H=c[l>>2]|0;I=H+(G<<4)|0;J=H+(G<<4)+4|0;e=h*(+g[I>>2]-s);y=+e;z=+(h*(+g[J>>2]-x));H=I;g[H>>2]=y;g[H+4>>2]=z;H=~~e;K=~~+g[J>>2];if(((K|H|0)>-1?(J=c[p>>2]|0,(H|0)<(J|0)):0)?(K|0)<(c[A>>2]|0):0){L=(aa(J,K)|0)+H|0;if((b|0)<(F|0)){M=F;N=E}else{if((b|0)>0){J=0;do J=J+1|0;while((J|0)!=(b|0))}J=(F|0)>0?F<<1:1;M=J;N=Pm(D,E,J<<4)|0}c[N+(b<<4)>>2]=H;c[N+(b<<4)+4>>2]=K;c[N+
(b<<4)+8>>2]=L;c[N+(b<<4)+12>>2]=I;O=M;P=b+1|0;Q=N}else{O=F;P=b;Q=E}G=G+1|0;if((G|0)>=(c[j>>2]|0)){R=O;S=P;T=0;U=Q;break}else{b=P;F=O;E=Q}}}else{R=B;S=0;T=0;U=C}b:while(1){C=T;do{if((C|0)==(S|0))break b;V=c[U+(C<<4)>>2]|0;W=c[U+(C<<4)+4>>2]|0;X=c[U+(C<<4)+8>>2]|0;Y=c[U+(C<<4)+12>>2]|0;C=C+1|0;Z=(c[k>>2]|0)+(X<<2)|0}while((c[Z>>2]|0)!=0);c[Z>>2]=Y;if((V|0)>0){I=V+-1|0;L=X+-1|0;if((S|0)>=(R|0)){if((S|0)>(C|0)){K=C;do{H=U+(K-C<<4)|0;B=U+(K<<4)|0;c[H+0>>2]=c[B+0>>2];c[H+4>>2]=c[B+4>>2];c[H+8>>2]=c[B+
8>>2];c[H+12>>2]=c[B+12>>2];K=K+1|0}while((K|0)!=(S|0))}K=S-C|0;if((K|0)<(R|0)){_=U;$=K;ba=R;ca=0}else{B=(R|0)>0?R<<1:1;_=Pm(D,U,B<<4)|0;$=K;ba=B;ca=0}}else{_=U;$=S;ba=R;ca=C}c[_+($<<4)>>2]=I;c[_+($<<4)+4>>2]=W;c[_+($<<4)+8>>2]=L;c[_+($<<4)+12>>2]=Y;da=$+1|0;ea=ba;fa=ca;ga=_}else{da=S;ea=R;fa=C;ga=U}if((W|0)>0){B=W+-1|0;K=X-(c[p>>2]|0)|0;if((da|0)>=(ea|0)){if((da|0)>(fa|0)){H=fa;do{Q=ga+(H-fa<<4)|0;E=ga+(H<<4)|0;c[Q+0>>2]=c[E+0>>2];c[Q+4>>2]=c[E+4>>2];c[Q+8>>2]=c[E+8>>2];c[Q+12>>2]=c[E+12>>2];H=H+
1|0}while((H|0)!=(da|0))}H=da-fa|0;if((H|0)<(ea|0)){ha=ga;ia=H;ja=ea;ka=0}else{C=(ea|0)>0?ea<<1:1;ha=Pm(D,ga,C<<4)|0;ia=H;ja=C;ka=0}}else{ha=ga;ia=da;ja=ea;ka=fa}c[ha+(ia<<4)>>2]=V;c[ha+(ia<<4)+4>>2]=B;c[ha+(ia<<4)+8>>2]=K;c[ha+(ia<<4)+12>>2]=Y;la=ia+1|0;ma=ja;na=ka;oa=ha}else{la=da;ma=ea;na=fa;oa=ga}if((V|0)<((c[p>>2]|0)+-1|0)){C=V+1|0;H=X+1|0;if((la|0)>=(ma|0)){if((la|0)>(na|0)){L=na;do{I=oa+(L-na<<4)|0;E=oa+(L<<4)|0;c[I+0>>2]=c[E+0>>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];L=L+1|0}while((L|0)!=(la|0))}L=la-na|0;if((L|0)<(ma|0)){pa=oa;qa=L;ra=ma;sa=0}else{K=(ma|0)>0?ma<<1:1;pa=Pm(D,oa,K<<4)|0;qa=L;ra=K;sa=0}}else{pa=oa;qa=la;ra=ma;sa=na}c[pa+(qa<<4)>>2]=C;c[pa+(qa<<4)+4>>2]=W;c[pa+(qa<<4)+8>>2]=H;c[pa+(qa<<4)+12>>2]=Y;ta=qa+1|0;ua=ra;va=sa;wa=pa}else{ta=la;ua=ma;va=na;wa=oa}if((W|0)>=((c[A>>2]|0)+-1|0)){R=ua;S=ta;T=va;U=wa;continue}K=W+1|0;L=(c[p>>2]|0)+X|0;if((ta|0)>=(ua|0)){if((ta|0)>(va|0)){B=va;do{E=wa+(B-va<<4)|0;I=wa+(B<<4)|0;c[E+0>>2]=c[I+0>>2];c[E+4>>2]=c[I+
4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];B=B+1|0}while((B|0)!=(ta|0))}B=ta-va|0;if((B|0)<(ua|0)){xa=wa;ya=B;za=ua;Aa=0}else{H=(ua|0)>0?ua<<1:1;xa=Pm(D,wa,H<<4)|0;ya=B;za=H;Aa=0}}else{xa=wa;ya=ta;za=ua;Aa=va}c[xa+(ya<<4)>>2]=V;c[xa+(ya<<4)+4>>2]=K;c[xa+(ya<<4)+8>>2]=L;c[xa+(ya<<4)+12>>2]=Y;R=za;S=ya+1|0;T=Aa;U=xa}xa=c[A>>2]|0;if((xa|0)>0){Aa=c[p>>2]|0;T=xa;ya=U;za=S;Y=S;V=R;va=0;while(1){if((Aa+-1|0)>0){ua=Aa;ta=Y;wa=V;X=za;W=ya;oa=0;while(1){na=(aa(ua,va)|0)+oa|0;ma=c[k>>2]|0;la=c[ma+(na<<
2)>>2]|0;pa=na+1|0;sa=c[ma+(pa<<2)>>2]|0;if((la|0)==(sa|0)){Ba=oa+1|0;Ca=ua;Da=wa;Ea=ta;Fa=X;Ga=W}else{if((ta|0)>=(wa|0)){if((ta|0)>(X|0)){ma=X;do{ra=W+(ma-X<<4)|0;qa=W+(ma<<4)|0;c[ra+0>>2]=c[qa+0>>2];c[ra+4>>2]=c[qa+4>>2];c[ra+8>>2]=c[qa+8>>2];c[ra+12>>2]=c[qa+12>>2];ma=ma+1|0}while((ma|0)!=(ta|0))}ma=ta-X|0;if((ma|0)<(wa|0)){Ha=W;Ia=ma;Ja=wa;Ka=0}else{qa=(wa|0)>0?wa<<1:1;Ha=Pm(D,W,qa<<4)|0;Ia=ma;Ja=qa;Ka=0}}else{Ha=W;Ia=ta;Ja=wa;Ka=X}c[Ha+(Ia<<4)>>2]=oa;c[Ha+(Ia<<4)+4>>2]=va;c[Ha+(Ia<<4)+8>>2]=
na;c[Ha+(Ia<<4)+12>>2]=sa;qa=Ia+1|0;ma=oa+1|0;if((qa|0)>=(Ja|0)){if((Ia|0)>=(Ka|0)){ra=Ka;do{ga=Ha+(ra-Ka<<4)|0;fa=Ha+(ra<<4)|0;c[ga+0>>2]=c[fa+0>>2];c[ga+4>>2]=c[fa+4>>2];c[ga+8>>2]=c[fa+8>>2];c[ga+12>>2]=c[fa+12>>2];ra=ra+1|0}while((ra|0)<(qa|0))}ra=qa-Ka|0;if((ra|0)<(Ja|0)){La=Ha;Ma=ra;Na=Ja;Oa=0}else{sa=(Ja|0)>0?Ja<<1:1;La=Pm(D,Ha,sa<<4)|0;Ma=ra;Na=sa;Oa=0}}else{La=Ha;Ma=qa;Na=Ja;Oa=Ka}c[La+(Ma<<4)>>2]=ma;c[La+(Ma<<4)+4>>2]=va;c[La+(Ma<<4)+8>>2]=pa;c[La+(Ma<<4)+12>>2]=la;Ba=ma;Ca=c[p>>2]|0;Da=
Na;Ea=Ma+1|0;Fa=Oa;Ga=La}if((Ba|0)<(Ca+-1|0)){ua=Ca;ta=Ea;wa=Da;X=Fa;W=Ga;oa=Ba}else break}Pa=Da;Qa=Ea;Ra=Fa;Sa=Ga;Ta=c[A>>2]|0;Ua=Ca}else{Pa=V;Qa=Y;Ra=za;Sa=ya;Ta=T;Ua=Aa}va=va+1|0;if((va|0)>=(Ta|0)){Va=Pa;Wa=Qa;Xa=Ra;Ya=Sa;Za=Ta;break}else{Aa=Ua;T=Ta;ya=Sa;za=Ra;Y=Qa;V=Pa}}}else{Va=R;Wa=S;Xa=S;Ya=U;Za=xa}if((Za+-1|0)>0){xa=c[p>>2]|0;U=Za;Za=Ya;S=Xa;R=Wa;Pa=Va;V=0;while(1){Qa=V;V=V+1|0;if((xa|0)>0){Y=xa;Ra=R;za=Pa;Sa=S;ya=Za;Ta=0;while(1){T=(aa(Y,Qa)|0)+Ta|0;Ua=c[k>>2]|0;Aa=c[Ua+(T<<2)>>2]|0;va=
c[Ua+(T+Y<<2)>>2]|0;if((Aa|0)==(va|0)){_a=Y;$a=za;ab=Ra;bb=Sa;cb=ya}else{if((Ra|0)>=(za|0)){if((Ra|0)>(Sa|0)){Ua=Sa;do{Ca=ya+(Ua-Sa<<4)|0;Ga=ya+(Ua<<4)|0;c[Ca+0>>2]=c[Ga+0>>2];c[Ca+4>>2]=c[Ga+4>>2];c[Ca+8>>2]=c[Ga+8>>2];c[Ca+12>>2]=c[Ga+12>>2];Ua=Ua+1|0}while((Ua|0)!=(Ra|0))}Ua=Ra-Sa|0;if((Ua|0)<(za|0)){db=ya;eb=Ua;fb=za;gb=0}else{ma=(za|0)>0?za<<1:1;db=Pm(D,ya,ma<<4)|0;eb=Ua;fb=ma;gb=0}}else{db=ya;eb=Ra;fb=za;gb=Sa}c[db+(eb<<4)>>2]=Ta;c[db+(eb<<4)+4>>2]=Qa;c[db+(eb<<4)+8>>2]=T;c[db+(eb<<4)+12>>2]=
va;ma=eb+1|0;Ua=(c[p>>2]|0)+T|0;if((ma|0)>=(fb|0)){if((eb|0)>=(gb|0)){la=gb;do{pa=db+(la-gb<<4)|0;qa=db+(la<<4)|0;c[pa+0>>2]=c[qa+0>>2];c[pa+4>>2]=c[qa+4>>2];c[pa+8>>2]=c[qa+8>>2];c[pa+12>>2]=c[qa+12>>2];la=la+1|0}while((la|0)<(ma|0))}la=ma-gb|0;if((la|0)<(fb|0)){hb=db;ib=la;jb=fb;kb=0}else{T=(fb|0)>0?fb<<1:1;hb=Pm(D,db,T<<4)|0;ib=la;jb=T;kb=0}}else{hb=db;ib=ma;jb=fb;kb=gb}c[hb+(ib<<4)>>2]=Ta;c[hb+(ib<<4)+4>>2]=V;c[hb+(ib<<4)+8>>2]=Ua;c[hb+(ib<<4)+12>>2]=Aa;_a=c[p>>2]|0;$a=jb;ab=ib+1|0;bb=kb;cb=hb}Ta=
Ta+1|0;if((Ta|0)>=(_a|0))break;else{Y=_a;Ra=ab;za=$a;Sa=bb;ya=cb}}lb=$a;mb=ab;nb=bb;ob=cb;pb=c[A>>2]|0;qb=_a}else{lb=Pa;mb=R;nb=S;ob=Za;pb=U;qb=xa}if((V|0)>=(pb+-1|0)){rb=lb;sb=mb;tb=nb;ub=ob;break}else{xa=qb;U=pb;Za=ob;S=nb;R=mb;Pa=lb}}}else{rb=Va;sb=Wa;tb=Xa;ub=Ya}if((tb|0)==(sb|0)){vb=ub;Qm(D,vb);i=f;return}else{wb=rb;xb=sb;yb=tb;zb=ub}c:while(1){ub=c[k>>2]|0;tb=yb;while(1){Ab=c[zb+(tb<<4)>>2]|0;Bb=c[zb+(tb<<4)+4>>2]|0;Cb=c[zb+(tb<<4)+8>>2]|0;Db=c[zb+(tb<<4)+12>>2]|0;tb=tb+1|0;Eb=ub+(Cb<<2)|0;
sb=c[Eb>>2]|0;if((sb|0)!=(Db|0)?(x=+(Ab|0),h=+g[sb>>2]-x,s=+(Bb|0),e=+g[sb+4>>2]-s,z=+g[Db>>2]-x,x=+g[Db+4>>2]-s,h*h+e*e>z*z+x*x):0)break;if((xb|0)==(tb|0)){vb=zb;Fb=122;break c}}c[Eb>>2]=Db;if((Ab|0)>0){ub=Ab+-1|0;sb=Cb+-1|0;if((xb|0)>=(wb|0)){if((xb|0)>(tb|0)){rb=tb;do{Ya=zb+(rb-tb<<4)|0;Xa=zb+(rb<<4)|0;c[Ya+0>>2]=c[Xa+0>>2];c[Ya+4>>2]=c[Xa+4>>2];c[Ya+8>>2]=c[Xa+8>>2];c[Ya+12>>2]=c[Xa+12>>2];rb=rb+1|0}while((rb|0)!=(xb|0))}rb=xb-tb|0;if((rb|0)<(wb|0)){Gb=zb;Hb=rb;Ib=wb;Jb=0}else{Xa=(wb|0)>0?wb<<
1:1;Gb=Pm(D,zb,Xa<<4)|0;Hb=rb;Ib=Xa;Jb=0}}else{Gb=zb;Hb=xb;Ib=wb;Jb=tb}c[Gb+(Hb<<4)>>2]=ub;c[Gb+(Hb<<4)+4>>2]=Bb;c[Gb+(Hb<<4)+8>>2]=sb;c[Gb+(Hb<<4)+12>>2]=Db;Kb=Hb+1|0;Lb=Ib;Mb=Jb;Nb=Gb}else{Kb=xb;Lb=wb;Mb=tb;Nb=zb}if((Bb|0)>0){Xa=Bb+-1|0;rb=Cb-(c[p>>2]|0)|0;if((Kb|0)>=(Lb|0)){if((Kb|0)>(Mb|0)){Ya=Mb;do{Wa=Nb+(Ya-Mb<<4)|0;Va=Nb+(Ya<<4)|0;c[Wa+0>>2]=c[Va+0>>2];c[Wa+4>>2]=c[Va+4>>2];c[Wa+8>>2]=c[Va+8>>2];c[Wa+12>>2]=c[Va+12>>2];Ya=Ya+1|0}while((Ya|0)!=(Kb|0))}Ya=Kb-Mb|0;if((Ya|0)<(Lb|0)){Ob=Nb;Pb=Ya;
Qb=Lb;Rb=0}else{tb=(Lb|0)>0?Lb<<1:1;Ob=Pm(D,Nb,tb<<4)|0;Pb=Ya;Qb=tb;Rb=0}}else{Ob=Nb;Pb=Kb;Qb=Lb;Rb=Mb}c[Ob+(Pb<<4)>>2]=Ab;c[Ob+(Pb<<4)+4>>2]=Xa;c[Ob+(Pb<<4)+8>>2]=rb;c[Ob+(Pb<<4)+12>>2]=Db;Sb=Pb+1|0;Tb=Qb;Ub=Rb;Vb=Ob}else{Sb=Kb;Tb=Lb;Ub=Mb;Vb=Nb}if((Ab|0)<((c[p>>2]|0)+-1|0)){tb=Ab+1|0;Ya=Cb+1|0;if((Sb|0)>=(Tb|0)){if((Sb|0)>(Ub|0)){sb=Ub;do{ub=Vb+(sb-Ub<<4)|0;Va=Vb+(sb<<4)|0;c[ub+0>>2]=c[Va+0>>2];c[ub+4>>2]=c[Va+4>>2];c[ub+8>>2]=c[Va+8>>2];c[ub+12>>2]=c[Va+12>>2];sb=sb+1|0}while((sb|0)!=(Sb|0))}sb=
Sb-Ub|0;if((sb|0)<(Tb|0)){Wb=Vb;Xb=sb;Yb=Tb;Zb=0}else{rb=(Tb|0)>0?Tb<<1:1;Wb=Pm(D,Vb,rb<<4)|0;Xb=sb;Yb=rb;Zb=0}}else{Wb=Vb;Xb=Sb;Yb=Tb;Zb=Ub}c[Wb+(Xb<<4)>>2]=tb;c[Wb+(Xb<<4)+4>>2]=Bb;c[Wb+(Xb<<4)+8>>2]=Ya;c[Wb+(Xb<<4)+12>>2]=Db;_b=Xb+1|0;$b=Yb;ac=Zb;bc=Wb}else{_b=Sb;$b=Tb;ac=Ub;bc=Vb}if((Bb|0)<((c[A>>2]|0)+-1|0)){rb=Bb+1|0;sb=(c[p>>2]|0)+Cb|0;if((_b|0)>=($b|0)){if((_b|0)>(ac|0)){Xa=ac;do{Va=bc+(Xa-ac<<4)|0;ub=bc+(Xa<<4)|0;c[Va+0>>2]=c[ub+0>>2];c[Va+4>>2]=c[ub+4>>2];c[Va+8>>2]=c[ub+8>>2];c[Va+12>>
2]=c[ub+12>>2];Xa=Xa+1|0}while((Xa|0)!=(_b|0))}Xa=_b-ac|0;if((Xa|0)<($b|0)){cc=bc;dc=Xa;ec=$b;fc=0}else{Ya=($b|0)>0?$b<<1:1;cc=Pm(D,bc,Ya<<4)|0;dc=Xa;ec=Ya;fc=0}}else{cc=bc;dc=_b;ec=$b;fc=ac}c[cc+(dc<<4)>>2]=Ab;c[cc+(dc<<4)+4>>2]=rb;c[cc+(dc<<4)+8>>2]=sb;c[cc+(dc<<4)+12>>2]=Db;gc=ec;hc=dc+1|0;ic=fc;jc=cc}else{gc=$b;hc=_b;ic=ac;jc=bc}if((ic|0)==(hc|0)){vb=jc;Fb=122;break}else{wb=gc;xb=hc;yb=ic;zb=jc}}if((Fb|0)==122){Qm(D,vb);i=f;return}}function gk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,
m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=i;f=b+20|0;if(((c[f>>2]|0)+-1|0)<=0){i=e;return}g=b+16|0;h=b+24|0;b=c[g>>2]|0;j=0;while(1){if((b+-1|0)>0){k=b;l=0;while(1){m=(aa(k,j)|0)+l|0;n=c[h>>2]|0;o=c[n+(m<<2)>>2]|0;p=m+1|0;q=c[n+(p<<2)>>2]|0;r=c[n+(m+k<<2)>>2]|0;m=c[n+(p+k<<2)>>2]|0;do if((q|0)!=(r|0)){do if(!((o|0)==(q|0)|(o|0)==(r|0))){if(((a[o+12>>0]|0)==0?(a[q+12>>0]|0)==0:0)?(a[r+12>>0]|0)==0:0)break;yb[c[(c[d>>2]|0)+8>>2]&31](d,c[o+8>>2]|0,c[q+8>>2]|0,c[r+8>>2]|0)}while(0);if(!((m|0)==(q|0)|(m|0)==(r|0))){if(((a[q+
12>>0]|0)==0?(a[m+12>>0]|0)==0:0)?(a[r+12>>0]|0)==0:0)break;yb[c[(c[d>>2]|0)+8>>2]&31](d,c[q+8>>2]|0,c[m+8>>2]|0,c[r+8>>2]|0)}}while(0);l=l+1|0;r=c[g>>2]|0;if((l|0)>=(r+-1|0)){s=r;break}else k=r}}else s=b;j=j+1|0;if((j|0)>=((c[f>>2]|0)+-1|0))break;else b=s}i=e;return}function hk(a){a=a|0;var b=0,d=0,e=0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;g[a+16>>2]=1;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=-1;g[a+32>>2]=0;g[a+36>>2]=0;b=8784;d=c[b+4>>2]|0;e=a+40|0;c[e>>2]=c[b>>2];c[e+4>>2]=d;d=8784;e=c[d+
4>>2]|0;b=a+48|0;c[b>>2]=c[d>>2];c[b+4>>2]=e;e=a+56|0;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;g[a+72>>2]=1;c[a+76>>2]=0;return}function ik(a){a=a|0;var b=0,d=0,e=0,f=0,h=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;b=i;d=a+28|0;e=c[a>>2]|0;f=c[e+4>>2]|0;if((c[d>>2]|0)==(f|0)){i=b;return}h=+g[e+32>>2]*.75;j=h*(+g[e+320>>2]*h);k=a+32|0;g[k>>2]=0;l=a+40|0;m=a+44|0;n=a+48|0;o=a+52|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;p=c[a+4>>
2]|0;q=c[a+8>>2]|0;r=(p|0)<(q|0);if(r){s=c[e+96>>2]|0;t=c[e+104>>2]|0;h=0;u=0;v=0;w=0;x=0;y=p;do{h=j+h;z=j*+g[s+(y<<3)+4>>2];u=j*+g[s+(y<<3)>>2]+u;g[l>>2]=u;v=z+v;g[m>>2]=v;z=j*+g[t+(y<<3)+4>>2];w=j*+g[t+(y<<3)>>2]+w;g[n>>2]=w;x=z+x;g[o>>2]=x;y=y+1|0}while((y|0)<(q|0));g[k>>2]=h;if(h>0){z=1/h;h=z*u;g[l>>2]=h;A=z*v;g[m>>2]=A;B=z*w;g[n>>2]=B;C=z*x;g[o>>2]=C;D=h;E=A;F=B;G=C}else{D=u;E=v;F=w;G=x}o=a+36|0;g[o>>2]=0;n=a+56|0;g[n>>2]=0;if(r){r=c[e+96>>2]|0;m=c[e+104>>2]|0;x=0;w=0;e=p;do{v=+g[r+(e<<3)>>2]-
D;u=+g[r+(e<<3)+4>>2]-E;x=j*(v*v+u*u)+x;w=w+j*(v*(+g[m+(e<<3)+4>>2]-G)-u*(+g[m+(e<<3)>>2]-F));e=e+1|0}while((e|0)<(q|0));g[o>>2]=x;g[n>>2]=w;if(x>0)g[n>>2]=1/x*w}}else{g[a+36>>2]=0;g[a+56>>2]=0}c[d>>2]=f;i=b;return}function jk(a,b){a=a|0;b=b|0;var d=0;d=i;fl(c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0,b);i=d;return}function kk(a,b){a=a|0;b=b|0;var d=0;d=i;gl(c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0,b);i=d;return}function lk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=c[a>>2]|0;if(c[(c[e+400>>2]|0)+102876>>
2]&2){i=d;return}f=c[a+4>>2]|0;g=a+8|0;if((f|0)<(c[g>>2]|0)){h=e;j=f}else{i=d;return}while(1){wk(h,j,b);f=j+1|0;if((f|0)>=(c[g>>2]|0))break;h=c[a>>2]|0;j=f}i=d;return}function mk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;h=b+52|0;c[b+56>>2]=h;c[h>>2]=h;c[b+60>>2]=256;h=b+64|0;c[b+68>>2]=h;c[h>>2]=h;h=b+72|0;c[b+76>>2]=h;c[h>>2]=h;h=b+80|0;c[b+136>>2]=0;c[b+140>>2]=0;c[b+148>>2]=0;c[b+152>>2]=0;j=b+196|0;c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=
0;c[h+20>>2]=0;c[h+24>>2]=0;c[h+28>>2]=0;h=b+160|0;k=h+36|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(k|0));c[j>>2]=e;c[b+200>>2]=0;c[b+204>>2]=0;c[b+208>>2]=0;c[b+212>>2]=e;c[b+216>>2]=0;c[b+220>>2]=0;c[b+224>>2]=0;c[b+228>>2]=e;c[b+232>>2]=0;c[b+236>>2]=0;c[b+240>>2]=0;c[b+244>>2]=e;c[b+248>>2]=0;c[b+252>>2]=0;c[b+256>>2]=0;c[b+260>>2]=e;c[b+264>>2]=0;c[b+268>>2]=0;c[b+272>>2]=0;c[b+276>>2]=e;j=b+280|0;l=b+316|0;a[l>>0]=0;m=b+320|0;c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;g[m>>2]=1;n=b+324|0;g[n>>
2]=1;g[b+328>>2]=1;o=b+332|0;c[o>>2]=0;g[b+336>>2]=.05000000074505806;g[b+340>>2]=1;g[b+344>>2]=.25;g[b+348>>2]=.25;g[b+352>>2]=.25;g[b+356>>2]=.20000000298023224;g[b+360>>2]=.20000000298023224;g[b+364>>2]=1;g[b+368>>2]=.5;g[b+372>>2]=.5;g[b+376>>2]=.20000000298023224;g[b+380>>2]=.20000000298023224;c[b+384>>2]=8;g[b+388>>2]=.5;p=b+392|0;a[p>>0]=1;g[b+396>>2]=.01666666753590107;a[b>>0]=0;c[b+4>>2]=0;c[b+8>>2]=0;a[b+12>>0]=0;c[b+16>>2]=0;a[b+20>>0]=0;a[b+21>>0]=0;c[b+24>>2]=0;a[l>>0]=a[d>>0]|0;q=+g[d+
4>>2];g[m>>2]=q;g[b+28>>2]=1/q;g[n>>2]=+g[d+8>>2];q=+g[d+12>>2]*2;g[b+32>>2]=q;g[b+40>>2]=q*q;g[b+36>>2]=1/q;c[o>>2]=c[d+16>>2];c[b+44>>2]=0;o=b+48|0;c[o>>2]=0;n=b+112|0;c[b+144>>2]=0;c[b+308>>2]=0;c[b+312>>2]=0;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;c[n+16>>2]=0;c[n+20>>2]=0;h=l+0|0;l=d+0|0;k=h+84|0;do{c[h>>2]=c[l>>2];h=h+4|0;l=l+4|0}while((h|0)<(k|0));l=b+400|0;c[l>>2]=e;c[b+156>>2]=0;e=b+296|0;c[e>>2]=0;c[e+4>>2]=0;a[b+304>>0]=0;e=a[p>>0]|0;if(!(e<<24>>24)){a[p>>0]=e;i=f;return}h=c[j>>
2]|0;if(!h){qk(b,256);b=um(c[l>>2]|0,c[o>>2]<<2)|0;An(b|0,0,c[o>>2]<<2|0)|0;r=b}else r=h;c[j>>2]=r;a[p>>0]=e;i=f;return}function nk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=a+312|0;while(1){e=c[d>>2]|0;if(!e)break;ok(a,e)}if((c[a+84>>2]|0)==0?(d=a+80|0,e=c[d>>2]|0,(e|0)!=0):0){vm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+92>>2]|0)==0?(d=a+88|0,e=c[d>>2]|0,(e|0)!=0):0){vm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+164>>2]|0)==0?(d=a+160|0,e=c[d>>2]|0,(e|0)!=0):0){vm(c[a+400>>2]|0,e,c[a+
48>>2]<<2);c[d>>2]=0}if((c[a+172>>2]|0)==0?(d=a+168|0,e=c[d>>2]|0,(e|0)!=0):0){vm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+180>>2]|0)==0?(d=a+176|0,e=c[d>>2]|0,(e|0)!=0):0){vm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+100>>2]|0)==0?(d=a+96|0,e=c[d>>2]|0,(e|0)!=0):0){vm(c[a+400>>2]|0,e,c[a+48>>2]<<3);c[d>>2]=0}if((c[a+108>>2]|0)==0?(d=a+104|0,e=c[d>>2]|0,(e|0)!=0):0){vm(c[a+400>>2]|0,e,c[a+48>>2]<<3);c[d>>2]=0}if((c[a+140>>2]|0)==0?(d=a+136|0,e=c[d>>2]|0,(e|0)!=0):0){vm(c[a+400>>2]|
0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+152>>2]|0)==0?(d=a+148|0,e=c[d>>2]|0,(e|0)!=0):0){vm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+284>>2]|0)==0?(d=a+280|0,e=c[d>>2]|0,(e|0)!=0):0){vm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}if((c[a+292>>2]|0)==0?(d=a+288|0,e=c[d>>2]|0,(e|0)!=0):0){vm(c[a+400>>2]|0,e,c[a+48>>2]<<2);c[d>>2]=0}d=a+112|0;e=a+48|0;f=c[d>>2]|0;if(f){vm(c[a+400>>2]|0,f,c[e>>2]<<3);c[d>>2]=0}d=a+116|0;f=c[d>>2]|0;if(f){vm(c[a+400>>2]|0,f,c[e>>2]<<2);c[d>>2]=0}d=a+120|0;f=c[d>>2]|
0;if(f){vm(c[a+400>>2]|0,f,c[e>>2]<<2);c[d>>2]=0}d=a+124|0;f=c[d>>2]|0;if(f){vm(c[a+400>>2]|0,f,c[e>>2]<<2);c[d>>2]=0}d=a+128|0;f=c[d>>2]|0;if(f){vm(c[a+400>>2]|0,f,c[e>>2]<<3);c[d>>2]=0}d=a+132|0;f=c[d>>2]|0;if(f){vm(c[a+400>>2]|0,f,c[e>>2]<<2);c[d>>2]=0}d=a+144|0;f=c[d>>2]|0;if(f){vm(c[a+400>>2]|0,f,c[e>>2]<<2);c[d>>2]=0}d=a+264|0;e=c[d>>2]|0;if(e){f=a+272|0;vm(c[a+276>>2]|0,e,(c[f>>2]|0)*60|0);c[d>>2]=0;c[f>>2]=0;c[a+268>>2]=0}f=a+248|0;d=c[f>>2]|0;if(d){e=a+256|0;vm(c[a+260>>2]|0,d,(c[e>>2]|0)*
20|0);c[f>>2]=0;c[e>>2]=0;c[a+252>>2]=0}e=a+232|0;f=c[e>>2]|0;if(f){d=a+240|0;vm(c[a+244>>2]|0,f,(c[d>>2]|0)*28|0);c[e>>2]=0;c[d>>2]=0;c[a+236>>2]=0}d=a+216|0;e=c[d>>2]|0;if(e){f=a+224|0;vm(c[a+228>>2]|0,e,(c[f>>2]|0)*24|0);c[d>>2]=0;c[f>>2]=0;c[a+220>>2]=0}f=a+200|0;d=c[f>>2]|0;if(d){e=a+208|0;vm(c[a+212>>2]|0,d,c[e>>2]<<3);c[f>>2]=0;c[e>>2]=0;c[a+204>>2]=0}e=a+184|0;f=c[e>>2]|0;if(!f){g=a+52|0;Nl(g);i=b;return}d=a+192|0;vm(c[a+196>>2]|0,f,c[d>>2]<<2);c[e>>2]=0;c[d>>2]=0;c[a+188>>2]=0;g=a+52|0;Nl(g);
i=b;return}function ok(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;f=b+400|0;g=c[(c[f>>2]|0)+102992>>2]|0;if(g)pb[c[(c[g>>2]|0)+16>>2]&63](g,d);g=d+12|0;h=c[g>>2]|0;j=h<<4;k=j&16;if(((j|-17)^16)&h)a[b+20>>0]=1;h=b+16|0;j=c[h>>2]|0;if(k&~j)c[h>>2]=j|k;c[g>>2]=k;k=c[d+4>>2]|0;g=c[d+8>>2]|0;if((k|0)<(g|0)){j=b+144|0;h=k;do{c[(c[j>>2]|0)+(h<<2)>>2]=0;h=h+1|0}while((h|0)<(g|0))}g=c[d+20>>2]|0;h=d+24|0;if(g)c[g+24>>2]=c[h>>2];j=c[h>>2]|0;if(j)c[j+20>>2]=g;g=b+312|0;if((c[g>>2]|0)!=
(d|0)){l=b+308|0;m=c[l>>2]|0;n=m+-1|0;c[l>>2]=n;o=c[f>>2]|0;vm(o,d,80);i=e;return}c[g>>2]=j;l=b+308|0;m=c[l>>2]|0;n=m+-1|0;c[l>>2]=n;o=c[f>>2]|0;vm(o,d,80);i=e;return}function pk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=a+136|0;e=c[d>>2]|0;if(e){f=e;c[d>>2]=f;i=b;return f|0}e=a+48|0;g=c[e>>2]|0;if(!g){qk(a,256);h=c[e>>2]|0}else h=g;g=um(c[a+400>>2]|0,h<<2)|0;An(g|0,0,c[e>>2]<<2|0)|0;f=g;c[d>>2]=f;i=b;return f|0}function qk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;e=c[a+332>>2]|0;f=(e|0)!=0&(e|0)<(b|0)?e:b;b=a+92|0;e=c[b>>2]|0;g=(e|0)!=0&(f|0)>(e|0)?e:f;f=a+100|0;h=c[f>>2]|0;j=(h|0)!=0&(g|0)>(h|0)?h:g;g=a+108|0;h=c[g>>2]|0;k=(h|0)!=0&(j|0)>(h|0)?h:j;j=a+140|0;h=c[j>>2]|0;l=(h|0)!=0&(k|0)>(h|0)?h:k;k=a+152|0;h=c[k>>2]|0;m=(h|0)!=0&(l|0)>(h|0)?h:l;l=a+48|0;h=c[l>>2]|0;if((h|0)>=(m|0)){i=d;return}n=a+80|0;o=c[n>>2]|0;if((o|0)==0|(c[a+84>>2]|0)!=0){p=o;q=h;r=e}else{e=a+400|0;s=um(c[e>>
2]|0,m<<2)|0;t=h<<2;Dn(s|0,o|0,t|0)|0;vm(c[e>>2]|0,o,t);p=s;q=c[l>>2]|0;r=c[b>>2]|0}c[n>>2]=p;c[a+60>>2]=m-q;p=a+88|0;n=c[p>>2]|0;if(!r){r=a+400|0;b=um(c[r>>2]|0,m<<2)|0;if(!n)u=b;else{s=q<<2;Dn(b|0,n|0,s|0)|0;vm(c[r>>2]|0,n,s);u=b}}else u=n;c[p>>2]=u;u=(c[a+156>>2]|0)>0;p=c[l>>2]|0;n=a+160|0;b=c[n>>2]|0;s=(b|0)==0;if(!(s&u|(c[a+164>>2]|0)!=0)){r=a+400|0;q=um(c[r>>2]|0,m<<2)|0;if(s)v=q;else{s=p<<2;Dn(q|0,b|0,s|0)|0;vm(c[r>>2]|0,b,s);v=q}}else v=b;c[n>>2]=v;v=c[l>>2]|0;n=a+168|0;b=c[n>>2]|0;q=(b|0)==
0;if(!(q&u|(c[a+172>>2]|0)!=0)){s=a+400|0;r=um(c[s>>2]|0,m<<2)|0;if(q)w=r;else{q=v<<2;Dn(r|0,b|0,q|0)|0;vm(c[s>>2]|0,b,q);w=r}}else w=b;c[n>>2]=w;w=c[l>>2]|0;n=a+176|0;b=c[n>>2]|0;r=(b|0)==0;if(!(r&u|(c[a+180>>2]|0)!=0)){u=a+400|0;q=um(c[u>>2]|0,m<<2)|0;if(r)x=q;else{r=w<<2;Dn(q|0,b|0,r|0)|0;vm(c[u>>2]|0,b,r);x=q}}else x=b;c[n>>2]=x;x=c[l>>2]|0;n=a+96|0;b=c[n>>2]|0;if(!(c[f>>2]|0)){f=a+400|0;q=um(c[f>>2]|0,m<<3)|0;if(!b)y=q;else{r=x<<3;Dn(q|0,b|0,r|0)|0;vm(c[f>>2]|0,b,r);y=q}}else y=b;c[n>>2]=y;y=
c[l>>2]|0;n=a+104|0;b=c[n>>2]|0;if(!(c[g>>2]|0)){g=a+400|0;q=m<<3;r=um(c[g>>2]|0,q)|0;if(!b){z=r;A=q;B=g}else{f=y<<3;Dn(r|0,b|0,f|0)|0;vm(c[g>>2]|0,b,f);z=r;A=q;B=g}}else{z=b;A=m<<3;B=a+400|0}c[n>>2]=z;z=a+112|0;n=c[z>>2]|0;b=c[l>>2]|0;g=um(c[B>>2]|0,A)|0;if(n){q=b<<3;Dn(g|0,n|0,q|0)|0;vm(c[B>>2]|0,n,q)}c[z>>2]=g;g=a+116|0;z=c[g>>2]|0;q=c[l>>2]|0;n=m<<2;b=um(c[B>>2]|0,n)|0;if(z){r=q<<2;Dn(b|0,z|0,r|0)|0;vm(c[B>>2]|0,z,r)}c[g>>2]=b;b=a+120|0;g=c[b>>2]|0;if(!g)C=0;else{r=c[l>>2]|0;z=um(c[B>>2]|0,n)|
0;q=r<<2;Dn(z|0,g|0,q|0)|0;vm(c[B>>2]|0,g,q);C=z}c[b>>2]=C;C=a+124|0;b=c[C>>2]|0;z=c[l>>2]|0;q=um(c[B>>2]|0,n)|0;if(b){g=z<<2;Dn(q|0,b|0,g|0)|0;vm(c[B>>2]|0,b,g)}c[C>>2]=q;q=a+128|0;C=c[q>>2]|0;if(!C)D=0;else{g=c[l>>2]|0;b=um(c[B>>2]|0,A)|0;A=g<<3;Dn(b|0,C|0,A|0)|0;vm(c[B>>2]|0,C,A);D=b}c[q>>2]=D;D=a+132|0;q=c[D>>2]|0;if(!q)E=0;else{b=c[l>>2]|0;A=um(c[B>>2]|0,n)|0;C=b<<2;Dn(A|0,q|0,C|0)|0;vm(c[B>>2]|0,q,C);E=A}c[D>>2]=E;E=a+136|0;D=c[E>>2]|0;if((D|0)==0|(c[j>>2]|0)!=0)F=D;else{j=c[l>>2]|0;A=um(c[B>>
2]|0,n)|0;C=j<<2;Dn(A|0,D|0,C|0)|0;vm(c[B>>2]|0,D,C);F=A}c[E>>2]=F;F=a+144|0;E=c[F>>2]|0;A=c[l>>2]|0;C=um(c[B>>2]|0,n)|0;if(E){D=A<<2;Dn(C|0,E|0,D|0)|0;vm(c[B>>2]|0,E,D)}c[F>>2]=C;C=a+148|0;F=c[C>>2]|0;if((F|0)==0|(c[k>>2]|0)!=0)G=F;else{k=c[l>>2]|0;D=um(c[B>>2]|0,n)|0;E=k<<2;Dn(D|0,F|0,E|0)|0;vm(c[B>>2]|0,F,E);G=D}c[C>>2]=G;G=a+280|0;C=c[G>>2]|0;if((C|0)==0|(c[a+284>>2]|0)!=0)H=C;else{D=c[l>>2]|0;E=um(c[B>>2]|0,n)|0;F=D<<2;Dn(E|0,C|0,F|0)|0;vm(c[B>>2]|0,C,F);H=E}c[G>>2]=H;H=a+288|0;G=c[H>>2]|0;if((G|
0)==0|(c[a+292>>2]|0)!=0)I=G;else{a=c[l>>2]|0;E=um(c[B>>2]|0,n)|0;n=a<<2;Dn(E|0,G|0,n|0)|0;vm(c[B>>2]|0,G,n);I=E}c[H>>2]=I;c[l>>2]=m;i=d;return}function rk(b,d){b=b|0;d=d|0;var e=0,f=0,h=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;e=i;f=b+400|0;if(c[(c[f>>2]|0)+102876>>2]&2){h=0;i=e;return h|0}j=b+44|0;k=c[j>>2]|0;l=b+48|0;m=c[l>>2]|0;if((k|0)<(m|0)){n=k;o=m}else{qk(b,(k|0)==0?256:k<<1);n=c[j>>2]|0;o=c[l>>2]|0}do if((n|0)>=(o|0))if(!(a[b+392>>0]|0)){h=-1;i=e;return h|0}else{k=
c[b+288>>2]|0;m=c[k+(n+-1<<2)>>2]|0;p=+(c[(c[b+280>>2]|0)+(m<<2)>>2]|0)>0?m:c[k>>2]|0;k=b+88|0;vk(b,p,c[(c[k>>2]|0)+(p<<2)>>2]|2);sk(b);q=k;r=c[j>>2]|0;break}else{q=b+88|0;r=n}while(0);n=r+1|0;c[j>>2]=n;c[(c[q>>2]|0)+(r<<2)>>2]=0;q=c[b+160>>2]|0;if(q)c[q+(r<<2)>>2]=0;q=c[b+168>>2]|0;if(q)c[q+(r<<2)>>2]=0;q=c[b+176>>2]|0;if(q)c[q+(r<<2)>>2]=0;q=d+4|0;j=c[q+4>>2]|0;o=(c[b+96>>2]|0)+(r<<3)|0;c[o>>2]=c[q>>2];c[o+4>>2]=j;j=d+12|0;o=c[j+4>>2]|0;q=(c[b+104>>2]|0)+(r<<3)|0;c[q>>2]=c[j>>2];c[q+4>>2]=o;g[(c[b+
116>>2]|0)+(r<<2)>>2]=0;o=8784;q=c[o+4>>2]|0;j=(c[b+112>>2]|0)+(r<<3)|0;c[j>>2]=c[o>>2];c[j+4>>2]=q;q=c[b+120>>2]|0;if(q)g[q+(r<<2)>>2]=0;q=c[b+132>>2]|0;if(q)g[q+(r<<2)>>2]=0;q=b+136|0;j=c[q>>2]|0;o=d+20|0;do if(!j){if((((a[o>>0]|0)==0?(a[d+21>>0]|0)==0:0)?(a[d+22>>0]|0)==0:0)?(a[d+23>>0]|0)==0:0)break;k=c[l>>2]|0;if(!k){qk(b,256);s=c[l>>2]|0}else s=k;k=um(c[f>>2]|0,s<<2)|0;An(k|0,0,c[l>>2]<<2|0)|0;t=k;u=26}else{t=j;u=26}while(0);if((u|0)==26){c[q>>2]=t;q=a[d+21>>0]|0;j=a[d+22>>0]|0;s=a[d+23>>0]|
0;a[t+(r<<2)>>0]=a[o>>0]|0;a[t+(r<<2)+1>>0]=q;a[t+(r<<2)+2>>0]=j;a[t+(r<<2)+3>>0]=s}s=b+148|0;t=c[s>>2]|0;j=d+28|0;if(!t){if(c[j>>2]|0){q=c[l>>2]|0;if(!q){qk(b,256);v=c[l>>2]|0}else v=q;q=um(c[f>>2]|0,v<<2)|0;An(q|0,0,c[l>>2]<<2|0)|0;w=q;u=32}}else{w=t;u=32}if((u|0)==32){c[s>>2]=w;c[w+(r<<2)>>2]=c[j>>2]}j=c[b+80>>2]|0;if(j)c[j+(r<<2)>>2]=0;j=b+200|0;w=b+204|0;s=c[w>>2]|0;u=b+208|0;t=c[u>>2]|0;if((s|0)>=(t|0)?(q=(t|0)==0?256:t<<1,(t|0)<(q|0)):0){t=b+212|0;l=um(c[t>>2]|0,q<<3)|0;v=c[j>>2]|0;if(v){Dn(l|
0,v|0,c[w>>2]<<3|0)|0;vm(c[t>>2]|0,c[j>>2]|0,c[u>>2]<<3)}c[u>>2]=q;c[j>>2]=l;x=c[w>>2]|0}else x=s;c[w>>2]=x+1;w=c[j>>2]|0;y=+g[d+24>>2];j=y>0;if((c[b+280>>2]|0)!=0|j){if(j)z=y;else{j=c[b+300>>2]|0;z=+g[b+396>>2]*+(((j|0)<0?0-j|0:0)-j|0)}tk(b,r,z);c[(c[b+288>>2]|0)+(r<<2)>>2]=r}c[w+(x<<3)>>2]=r;x=c[d+32>>2]|0;c[(c[b+144>>2]|0)+(r<<2)>>2]=x;do if(x){w=x+4|0;j=c[w>>2]|0;s=x+8|0;l=c[s>>2]|0;if((j|0)<(l|0)){uk(b,j,l,r);c[s>>2]=n;break}else{c[w>>2]=r;c[s>>2]=n;break}}while(0);vk(b,r,c[d>>2]|0);h=r;i=e;
return h|0}function sk(b){b=b|0;var d=0,e=0,f=0,h=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,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;d=i;e=b+400|0;f=b+44|0;h=Om((c[e>>2]|0)+76|0,c[f>>2]<<2)|0;if((c[f>>2]|0)>0){j=b+88|0;k=b+80|0;l=b+160|0;m=b+168|0;n=b+176|0;o=b+96|0;p=b+104|0;q=b+144|0;r=b+21|0;s=b+120|0;t=
b+132|0;u=b+136|0;v=b+148|0;w=b+280|0;x=b+112|0;y=b+64|0;z=0;A=0;B=0;while(1){C=c[j>>2]|0;D=c[C+(A<<2)>>2]|0;if(!(D&2)){c[h+(A<<2)>>2]=B;if((A|0)!=(B|0)){E=c[k>>2]|0;if(!E)F=C;else{C=c[E+(A<<2)>>2]|0;if(C)c[C+8>>2]=B;c[E+(B<<2)>>2]=C;F=c[j>>2]|0}c[F+(B<<2)>>2]=c[F+(A<<2)>>2];C=c[l>>2]|0;if(C)c[C+(B<<2)>>2]=c[C+(A<<2)>>2];C=c[m>>2]|0;if(C)c[C+(B<<2)>>2]=c[C+(A<<2)>>2];C=c[n>>2]|0;if(C)c[C+(B<<2)>>2]=c[C+(A<<2)>>2];C=c[o>>2]|0;E=C+(A<<3)|0;G=c[E+4>>2]|0;H=C+(B<<3)|0;c[H>>2]=c[E>>2];c[H+4>>2]=G;G=c[p>>
2]|0;H=G+(A<<3)|0;E=c[H+4>>2]|0;C=G+(B<<3)|0;c[C>>2]=c[H>>2];c[C+4>>2]=E;E=c[q>>2]|0;c[E+(B<<2)>>2]=c[E+(A<<2)>>2];if(a[r>>0]|0){E=c[x>>2]|0;C=E+(A<<3)|0;H=c[C+4>>2]|0;G=E+(B<<3)|0;c[G>>2]=c[C>>2];c[G+4>>2]=H}H=c[s>>2]|0;if(H)g[H+(B<<2)>>2]=+g[H+(A<<2)>>2];H=c[t>>2]|0;if(H)g[H+(B<<2)>>2]=+g[H+(A<<2)>>2];H=c[u>>2]|0;if(H){G=a[H+(A<<2)+1>>0]|0;C=a[H+(A<<2)+2>>0]|0;E=a[H+(A<<2)+3>>0]|0;a[H+(B<<2)>>0]=a[H+(A<<2)>>0]|0;a[H+(B<<2)+1>>0]=G;a[H+(B<<2)+2>>0]=C;a[H+(B<<2)+3>>0]=E}E=c[v>>2]|0;if(E)c[E+(B<<2)>>
2]=c[E+(A<<2)>>2];E=c[w>>2]|0;if(E)c[E+(B<<2)>>2]=c[E+(A<<2)>>2]}I=D|z;J=B+1|0}else{E=c[(c[e>>2]|0)+102992>>2]|0;if((D&512|0)!=0&(E|0)!=0)rb[c[(c[E>>2]|0)+20>>2]&7](E,b,A);E=c[k>>2]|0;if((E|0)!=0?(D=E+(A<<2)|0,E=c[D>>2]|0,(E|0)!=0):0){c[E+8>>2]=-1;c[D>>2]=0;rm(y,E)}c[h+(A<<2)>>2]=-1;I=z;J=B}A=A+1|0;if((A|0)>=(c[f>>2]|0)){K=I;L=J;break}else{z=I;B=J}}}else{K=0;L=0}J=b+204|0;B=c[J>>2]|0;I=b+200|0;z=c[I>>2]|0;if((B|0)>0){A=0;do{y=z+(A<<3)|0;c[y>>2]=c[h+(c[y>>2]<<2)>>2];A=A+1|0}while((A|0)<(B|0))}A=z+
(B<<3)|0;a:do if(!B){M=z;N=40}else{y=z;while(1){if((c[y>>2]|0)<0){M=y;N=40;break a}y=y+8|0;if((y|0)==(A|0)){O=A;P=z;break}}}while(0);if((N|0)==40)if((M|0)==(A|0)){O=A;P=z}else{z=M;B=M;b:while(1){M=B;do{M=M+8|0;if((M|0)==(A|0))break b}while((c[M>>2]|0)<0);y=M;k=c[y+4>>2]|0;w=z;c[w>>2]=c[y>>2];c[w+4>>2]=k;z=z+8|0;B=M}O=z;P=c[I>>2]|0}c[J>>2]=O-P>>3;P=b+220|0;O=c[P>>2]|0;J=b+216|0;I=c[J>>2]|0;if((O|0)>0){z=0;do{B=I+(z*24|0)|0;A=I+(z*24|0)+4|0;k=c[h+(c[A>>2]<<2)>>2]|0;c[B>>2]=c[h+(c[B>>2]<<2)>>2];c[A>>
2]=k;z=z+1|0}while((z|0)<(O|0))}z=I+(O*24|0)|0;c:do if(!O){Q=I;N=52}else{k=I;while(1){if((c[k>>2]|0)<0){Q=k;N=52;break c}if((c[k+4>>2]|0)<0){Q=k;N=52;break c}k=k+24|0;if((k|0)==(z|0)){R=z;S=I;break}}}while(0);if((N|0)==52)if((Q|0)==(z|0)){R=z;S=I}else{I=Q+24|0;d:do if((I|0)==(z|0))T=Q;else{O=Q;k=I;M=Q;while(1){A=k;B=M;while(1){if((c[A>>2]|0)>=0?(c[B+28>>2]|0)>=0:0)break;w=A+24|0;if((w|0)==(z|0)){T=O;break d}else{y=A;A=w;B=y}}c[O+0>>2]=c[A+0>>2];c[O+4>>2]=c[A+4>>2];c[O+8>>2]=c[A+8>>2];c[O+12>>2]=c[A+
12>>2];c[O+16>>2]=c[A+16>>2];c[O+20>>2]=c[A+20>>2];B=O+24|0;k=A+24|0;if((k|0)==(z|0)){T=B;break}else{O=B;M=A}}}while(0);R=T;S=c[J>>2]|0}c[P>>2]=(R-S|0)/24|0;S=b+236|0;R=c[S>>2]|0;P=b+232|0;J=c[P>>2]|0;if((R|0)>0){T=0;do{z=J+(T*28|0)|0;c[z>>2]=c[h+(c[z>>2]<<2)>>2];T=T+1|0}while((T|0)<(R|0))}T=J+(R*28|0)|0;e:do if(!R){U=J;N=65}else{z=J;while(1){if((c[z>>2]|0)<0){U=z;N=65;break e}z=z+28|0;if((z|0)==(T|0)){V=T;W=J;break}}}while(0);if((N|0)==65)if((U|0)==(T|0)){V=T;W=J}else{J=U;R=U;f:while(1){U=R;do{U=
U+28|0;if((U|0)==(T|0))break f}while((c[U>>2]|0)<0);c[J+0>>2]=c[U+0>>2];c[J+4>>2]=c[U+4>>2];c[J+8>>2]=c[U+8>>2];c[J+12>>2]=c[U+12>>2];c[J+16>>2]=c[U+16>>2];c[J+20>>2]=c[U+20>>2];c[J+24>>2]=c[U+24>>2];J=J+28|0;R=U}V=J;W=c[P>>2]|0}c[S>>2]=(V-W|0)/28|0;W=b+252|0;V=c[W>>2]|0;S=b+248|0;P=c[S>>2]|0;if((V|0)>0){J=0;do{R=P+(J*20|0)|0;c[R>>2]=c[h+(c[R>>2]<<2)>>2];R=P+(J*20|0)+4|0;c[R>>2]=c[h+(c[R>>2]<<2)>>2];J=J+1|0}while((J|0)<(V|0))}J=P+(V*20|0)|0;g:do if(!V){X=P;N=77}else{R=P;while(1){if((c[R>>2]|0)<0){X=
R;N=77;break g}if((c[R+4>>2]|0)<0){X=R;N=77;break g}R=R+20|0;if((R|0)==(J|0)){Y=J;Z=P;break}}}while(0);if((N|0)==77)if((X|0)==(J|0)){Y=J;Z=P}else{P=X+20|0;h:do if((P|0)==(J|0))_=X;else{V=X;R=P;U=X;while(1){T=R;z=U;while(1){if((c[T>>2]|0)>=0?(c[z+24>>2]|0)>=0:0)break;Q=T+20|0;if((Q|0)==(J|0)){_=V;break h}else{I=T;T=Q;z=I}}c[V+0>>2]=c[T+0>>2];c[V+4>>2]=c[T+4>>2];c[V+8>>2]=c[T+8>>2];c[V+12>>2]=c[T+12>>2];c[V+16>>2]=c[T+16>>2];z=V+20|0;R=T+20|0;if((R|0)==(J|0)){_=z;break}else{V=z;U=T}}}while(0);Y=_;Z=
c[S>>2]|0}c[W>>2]=(Y-Z|0)/20|0;Z=b+268|0;Y=c[Z>>2]|0;W=b+264|0;S=c[W>>2]|0;if((Y|0)>0){_=0;do{J=S+(_*60|0)|0;c[J>>2]=c[h+(c[J>>2]<<2)>>2];J=S+(_*60|0)+4|0;c[J>>2]=c[h+(c[J>>2]<<2)>>2];J=S+(_*60|0)+8|0;c[J>>2]=c[h+(c[J>>2]<<2)>>2];_=_+1|0}while((_|0)<(Y|0))}_=S+(Y*60|0)|0;i:do if(!Y){$=S;N=92}else{J=S;while(1){if((c[J>>2]|0)<0){$=J;N=92;break i}if((c[J+4>>2]|0)<0){$=J;N=92;break i}if((c[J+8>>2]|0)<0){$=J;N=92;break i}J=J+60|0;if((J|0)==(_|0)){aa=_;ba=S;break}}}while(0);if((N|0)==92)if(($|0)==(_|0)){aa=
_;ba=S}else{S=$+60|0;j:do if((S|0)==(_|0))ca=$;else{N=$;Y=S;J=$;while(1){X=Y;P=J;while(1){if(((c[X>>2]|0)>=0?(c[P+64>>2]|0)>=0:0)?(c[P+68>>2]|0)>=0:0)break;U=X+60|0;if((U|0)==(_|0)){ca=N;break j}else{V=X;X=U;P=V}}P=N+0|0;T=X+0|0;V=P+60|0;do{c[P>>2]=c[T>>2];P=P+4|0;T=T+4|0}while((P|0)<(V|0));T=N+60|0;Y=X+60|0;if((Y|0)==(_|0)){ca=T;break}else{N=T;J=X}}}while(0);aa=ca;ba=c[W>>2]|0}c[Z>>2]=(aa-ba|0)/60|0;ba=c[b+288>>2]|0;if((ba|0)!=0?(aa=c[f>>2]|0,(aa|0)>0):0){Z=aa;aa=0;W=0;while(1){ca=c[h+(c[ba+(aa<<
2)>>2]<<2)>>2]|0;if((ca|0)==-1){da=Z;ea=W}else{c[ba+(W<<2)>>2]=ca;da=c[f>>2]|0;ea=W+1|0}aa=aa+1|0;if((aa|0)>=(da|0))break;else{Z=da;W=ea}}}ea=b+312|0;W=c[ea>>2]|0;if(W){da=b+16|0;Z=b+132|0;aa=b+48|0;ba=b+20|0;ca=W;do{W=ca+4|0;_=c[W>>2]|0;$=ca+8|0;S=c[$>>2]|0;if((_|0)<(S|0)){J=L;N=_;_=0;Y=0;while(1){T=c[h+(N<<2)>>2]|0;if((T|0)>-1){P=T+1|0;fa=(J|0)<(T|0)?J:T;ga=(_|0)>(P|0)?_:P;ha=Y}else{fa=J;ga=_;ha=1}N=N+1|0;if((N|0)>=(S|0)){ia=fa;ja=ga;ka=ha;break}else{J=fa;_=ga;Y=ha}}}else{ia=L;ja=0;ka=0}if((ia|
0)<(ja|0)){c[W>>2]=ia;c[$>>2]=ja;if(ka?(Y=ca+12|0,_=c[Y>>2]|0,(_&1|0)!=0):0){J=_|16;_=c[da>>2]|0;if(J&~_){S=c[Z>>2]|0;if(!S){N=c[aa>>2]|0;if(!N){qk(b,256);la=c[aa>>2]|0}else la=N;N=um(c[e>>2]|0,la<<2)|0;An(N|0,0,c[aa>>2]<<2|0)|0;ma=N;na=c[da>>2]|0}else{ma=S;na=_}c[Z>>2]=ma;c[da>>2]=na|J}c[Y>>2]=J}}else{c[W>>2]=0;c[$>>2]=0;J=ca+12|0;Y=c[J>>2]|0;if(!(Y&4)){_=Y|8;if((Y&-9^-9)&Y)a[ba>>0]=1;S=c[da>>2]|0;if(_&~S){if(!(Y&1))oa=S;else{Y=c[Z>>2]|0;if(!Y){N=c[aa>>2]|0;if(!N){qk(b,256);pa=c[aa>>2]|0}else pa=
N;N=um(c[e>>2]|0,pa<<2)|0;An(N|0,0,c[aa>>2]<<2|0)|0;qa=N;ra=c[da>>2]|0}else{qa=Y;ra=S}c[Z>>2]=qa;oa=ra}c[da>>2]=oa|_}c[J>>2]=_}}ca=c[ca+24>>2]|0}while((ca|0)!=0)}c[f>>2]=L;Qm((c[e>>2]|0)+76|0,h);c[b+8>>2]=K;a[b+12>>0]=0;K=c[ea>>2]|0;if(!K){i=d;return}else sa=K;do{K=sa;sa=c[sa+24>>2]|0;if(c[K+12>>2]&8)ok(b,K)}while((sa|0)!=0);i=d;return}function tk(b,d,e){b=b|0;d=d|0;e=+e;var f=0,h=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;f=i;h=b+288|0;j=c[h>>2]|0;k=(j|0)==0;l=b+280|0;m=c[l>>2]|0;if(!m){n=
b+48|0;o=c[n>>2]|0;if(!o){qk(b,256);p=c[n>>2]|0}else p=o;o=um(c[b+400>>2]|0,p<<2)|0;An(o|0,0,c[n>>2]<<2|0)|0;q=o;r=c[h>>2]|0}else{q=m;r=j}c[l>>2]=q;if(!r){q=b+48|0;j=c[q>>2]|0;if(!j){qk(b,256);s=c[q>>2]|0}else s=j;j=um(c[b+400>>2]|0,s<<2)|0;An(j|0,0,c[q>>2]<<2|0)|0;t=j}else t=r;c[h>>2]=t;if(k?(k=c[b+44>>2]|0,(k|0)>0):0){h=0;do{c[t+(h<<2)>>2]=h;h=h+1|0}while((h|0)!=(k|0))}k=~~(e/+g[b+396>>2]);if((k|0)>0)u=(c[b+300>>2]|0)+k|0;else u=k;k=(c[l>>2]|0)+(d<<2)|0;if((u|0)==(c[k>>2]|0)){i=f;return}c[k>>2]=
u;a[b+304>>0]=1;i=f;return}function uk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=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,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;h=i;if((d|0)==(e|0)|(f|0)==(e|0)){i=h;return}j=c[b+88>>2]|0;k=j+(d<<2)|0;l=j+(e<<2)|0;m=j+(f<<2)|0;a:do if((d+1|0)!=(e|0)){if((e+1|
0)==(f|0)){n=j+(f+-1<<2)|0;o=c[n>>2]|0;p=n-k|0;En(j+(f-(p>>2)<<2)|0,k|0,p|0)|0;c[k>>2]=o;break}o=l;p=o-k>>2;n=m;q=n-o>>2;if((p|0)==(q|0)){o=k;r=l;while(1){s=c[o>>2]|0;c[o>>2]=c[r>>2];c[r>>2]=s;o=o+4|0;if((o|0)==(l|0))break a;else r=r+4|0}}else{t=p;u=q}while(1){r=(t|0)%(u|0)|0;if(!r)break;else{o=u;u=r;t=o}}if(u){q=p+-1|0;o=p+d|0;r=j+(u+d<<2)|0;do{s=r;r=r+-4|0;v=c[r>>2]|0;w=r;x=s+(q<<2)|0;while(1){c[w>>2]=c[x>>2];s=n-x>>2;if((p|0)<(s|0))y=x+(p<<2)|0;else y=j+(o-s<<2)|0;if((y|0)==(r|0))break;else{s=
x;x=y;w=s}}c[x>>2]=v}while((r|0)!=(k|0))}}else{r=c[k>>2]|0;o=m-l|0;En(k|0,l|0,o|0)|0;c[j+((o>>2)+d<<2)>>2]=r}while(0);j=c[b+160>>2]|0;b:do if(j){l=j+(d<<2)|0;k=j+(e<<2)|0;m=j+(f<<2)|0;if((d+1|0)==(e|0)){y=c[l>>2]|0;u=m-k|0;En(l|0,k|0,u|0)|0;c[j+((u>>2)+d<<2)>>2]=y;break}if((e+1|0)==(f|0)){y=j+(f+-1<<2)|0;u=c[y>>2]|0;t=y-l|0;En(j+(f-(t>>2)<<2)|0,l|0,t|0)|0;c[l>>2]=u;break}u=k;t=u-l>>2;y=m;m=y-u>>2;if((t|0)==(m|0)){u=l;r=k;while(1){o=c[u>>2]|0;c[u>>2]=c[r>>2];c[r>>2]=o;u=u+4|0;if((u|0)==(k|0))break b;
else r=r+4|0}}else{z=t;A=m}while(1){r=(z|0)%(A|0)|0;if(!r)break;else{k=A;A=r;z=k}}if(A){m=t+-1|0;k=t+d|0;r=j+(A+d<<2)|0;do{u=r;r=r+-4|0;o=c[r>>2]|0;p=r;n=u+(m<<2)|0;while(1){c[p>>2]=c[n>>2];u=y-n>>2;if((t|0)<(u|0))B=n+(t<<2)|0;else B=j+(k-u<<2)|0;if((B|0)==(r|0))break;else{u=n;n=B;p=u}}c[n>>2]=o}while((r|0)!=(l|0))}}while(0);B=c[b+168>>2]|0;c:do if(B){j=B+(d<<2)|0;A=B+(e<<2)|0;z=B+(f<<2)|0;if((d+1|0)==(e|0)){l=c[j>>2]|0;r=z-A|0;En(j|0,A|0,r|0)|0;c[B+((r>>2)+d<<2)>>2]=l;break}if((e+1|0)==(f|0)){l=
B+(f+-1<<2)|0;r=c[l>>2]|0;k=l-j|0;En(B+(f-(k>>2)<<2)|0,j|0,k|0)|0;c[j>>2]=r;break}r=A;k=r-j>>2;l=z;z=l-r>>2;if((k|0)==(z|0)){r=j;t=A;while(1){y=c[r>>2]|0;c[r>>2]=c[t>>2];c[t>>2]=y;r=r+4|0;if((r|0)==(A|0))break c;else t=t+4|0}}else{C=k;D=z}while(1){t=(C|0)%(D|0)|0;if(!t)break;else{A=D;D=t;C=A}}if(D){z=k+-1|0;A=k+d|0;t=B+(D+d<<2)|0;do{r=t;t=t+-4|0;y=c[t>>2]|0;m=t;p=r+(z<<2)|0;while(1){c[m>>2]=c[p>>2];r=l-p>>2;if((k|0)<(r|0))E=p+(k<<2)|0;else E=B+(A-r<<2)|0;if((E|0)==(t|0))break;else{r=p;p=E;m=r}}c[p>>
2]=y}while((t|0)!=(j|0))}}while(0);E=c[b+176>>2]|0;d:do if(E){B=E+(d<<2)|0;D=E+(e<<2)|0;C=E+(f<<2)|0;if((d+1|0)==(e|0)){j=c[B>>2]|0;t=C-D|0;En(B|0,D|0,t|0)|0;c[E+((t>>2)+d<<2)>>2]=j;break}if((e+1|0)==(f|0)){j=E+(f+-1<<2)|0;t=c[j>>2]|0;A=j-B|0;En(E+(f-(A>>2)<<2)|0,B|0,A|0)|0;c[B>>2]=t;break}t=D;A=t-B>>2;j=C;C=j-t>>2;if((A|0)==(C|0)){t=B;k=D;while(1){l=c[t>>2]|0;c[t>>2]=c[k>>2];c[k>>2]=l;t=t+4|0;if((t|0)==(D|0))break d;else k=k+4|0}}else{F=A;G=C}while(1){k=(F|0)%(G|0)|0;if(!k)break;else{D=G;G=k;F=D}}if(G){C=
A+-1|0;D=A+d|0;k=E+(G+d<<2)|0;do{t=k;k=k+-4|0;l=c[k>>2]|0;z=k;m=t+(C<<2)|0;while(1){c[z>>2]=c[m>>2];t=j-m>>2;if((A|0)<(t|0))H=m+(A<<2)|0;else H=E+(D-t<<2)|0;if((H|0)==(k|0))break;else{t=m;m=H;z=t}}c[m>>2]=l}while((k|0)!=(B|0))}}while(0);H=c[b+96>>2]|0;E=H+(d<<3)|0;G=H+(e<<3)|0;F=H+(f<<3)|0;e:do if((d+1|0)!=(e|0)){if((e+1|0)==(f|0)){B=H+(f+-1<<3)|0;k=B;D=c[k>>2]|0;A=c[k+4>>2]|0;k=B-E|0;En(H+(f-(k>>3)<<3)|0,E|0,k|0)|0;k=E;c[k>>2]=D;c[k+4>>2]=A;break}A=G;k=A-E>>3;D=F;B=D-A>>3;if((k|0)==(B|0)){A=E;j=
G;while(1){C=A;z=c[C>>2]|0;y=c[C+4>>2]|0;C=j;p=c[C+4>>2]|0;t=A;c[t>>2]=c[C>>2];c[t+4>>2]=p;p=j;c[p>>2]=z;c[p+4>>2]=y;A=A+8|0;if((A|0)==(G|0))break e;else j=j+8|0}}else{I=k;J=B}while(1){j=(I|0)%(J|0)|0;if(!j)break;else{A=J;J=j;I=A}}if(J){B=k+-1|0;A=k+d|0;j=H+(J+d<<3)|0;do{y=j;j=j+-8|0;p=j;z=c[p>>2]|0;t=c[p+4>>2]|0;p=j;C=y+(B<<3)|0;while(1){y=C;o=c[y+4>>2]|0;n=p;c[n>>2]=c[y>>2];c[n+4>>2]=o;o=D-C>>3;if((k|0)<(o|0))K=C+(k<<3)|0;else K=H+(A-o<<3)|0;if((K|0)==(j|0))break;else{o=C;C=K;p=o}}p=C;c[p>>2]=z;
c[p+4>>2]=t}while((j|0)!=(E|0))}}else{j=E;A=c[j>>2]|0;k=c[j+4>>2]|0;j=F-G|0;En(E|0,G|0,j|0)|0;D=H+((j>>3)+d<<3)|0;c[D>>2]=A;c[D+4>>2]=k}while(0);H=c[b+104>>2]|0;G=H+(d<<3)|0;E=H+(e<<3)|0;F=H+(f<<3)|0;f:do if((d+1|0)!=(e|0)){if((e+1|0)==(f|0)){K=H+(f+-1<<3)|0;J=K;I=c[J>>2]|0;k=c[J+4>>2]|0;J=K-G|0;En(H+(f-(J>>3)<<3)|0,G|0,J|0)|0;J=G;c[J>>2]=I;c[J+4>>2]=k;break}k=E;J=k-G>>3;I=F;K=I-k>>3;if((J|0)==(K|0)){k=G;D=E;while(1){A=k;j=c[A>>2]|0;B=c[A+4>>2]|0;A=D;p=c[A+4>>2]|0;l=k;c[l>>2]=c[A>>2];c[l+4>>2]=p;
p=D;c[p>>2]=j;c[p+4>>2]=B;k=k+8|0;if((k|0)==(E|0))break f;else D=D+8|0}}else{L=J;M=K}while(1){D=(L|0)%(M|0)|0;if(!D)break;else{k=M;M=D;L=k}}if(M){K=J+-1|0;k=J+d|0;D=H+(M+d<<3)|0;do{B=D;D=D+-8|0;p=D;j=c[p>>2]|0;l=c[p+4>>2]|0;p=D;A=B+(K<<3)|0;while(1){B=A;m=c[B+4>>2]|0;o=p;c[o>>2]=c[B>>2];c[o+4>>2]=m;m=I-A>>3;if((J|0)<(m|0))N=A+(J<<3)|0;else N=H+(k-m<<3)|0;if((N|0)==(D|0))break;else{m=A;A=N;p=m}}p=A;c[p>>2]=j;c[p+4>>2]=l}while((D|0)!=(G|0))}}else{D=G;k=c[D>>2]|0;J=c[D+4>>2]|0;D=F-E|0;En(G|0,E|0,D|0)|
0;I=H+((D>>3)+d<<3)|0;c[I>>2]=k;c[I+4>>2]=J}while(0);H=c[b+144>>2]|0;E=H+(d<<2)|0;G=H+(e<<2)|0;F=H+(f<<2)|0;g:do if((d+1|0)!=(e|0)){if((e+1|0)==(f|0)){N=H+(f+-1<<2)|0;M=c[N>>2]|0;L=N-E|0;En(H+(f-(L>>2)<<2)|0,E|0,L|0)|0;c[E>>2]=M;break}M=G;L=M-E>>2;N=F;J=N-M>>2;if((L|0)==(J|0)){M=E;I=G;while(1){k=c[M>>2]|0;c[M>>2]=c[I>>2];c[I>>2]=k;M=M+4|0;if((M|0)==(G|0))break g;else I=I+4|0}}else{O=L;P=J}while(1){I=(O|0)%(P|0)|0;if(!I)break;else{M=P;P=I;O=M}}if(P){J=L+-1|0;M=L+d|0;I=H+(P+d<<2)|0;do{k=I;I=I+-4|0;
D=c[I>>2]|0;K=I;p=k+(J<<2)|0;while(1){c[K>>2]=c[p>>2];k=N-p>>2;if((L|0)<(k|0))Q=p+(L<<2)|0;else Q=H+(M-k<<2)|0;if((Q|0)==(I|0))break;else{k=p;p=Q;K=k}}c[p>>2]=D}while((I|0)!=(E|0))}}else{I=c[E>>2]|0;M=F-G|0;En(E|0,G|0,M|0)|0;c[H+((M>>2)+d<<2)>>2]=I}while(0);h:do if(a[b+21>>0]|0){H=c[b+112>>2]|0;G=H+(d<<3)|0;E=H+(e<<3)|0;F=H+(f<<3)|0;if((d+1|0)==(e|0)){Q=G;P=c[Q>>2]|0;O=c[Q+4>>2]|0;Q=F-E|0;En(G|0,E|0,Q|0)|0;I=H+((Q>>3)+d<<3)|0;c[I>>2]=P;c[I+4>>2]=O;break}if((e+1|0)==(f|0)){O=H+(f+-1<<3)|0;I=O;P=c[I>>
2]|0;Q=c[I+4>>2]|0;I=O-G|0;En(H+(f-(I>>3)<<3)|0,G|0,I|0)|0;I=G;c[I>>2]=P;c[I+4>>2]=Q;break}Q=E;I=Q-G>>3;P=F;F=P-Q>>3;if((I|0)==(F|0)){Q=G;O=E;while(1){M=Q;L=c[M>>2]|0;N=c[M+4>>2]|0;M=O;J=c[M+4>>2]|0;K=Q;c[K>>2]=c[M>>2];c[K+4>>2]=J;J=O;c[J>>2]=L;c[J+4>>2]=N;Q=Q+8|0;if((Q|0)==(E|0))break h;else O=O+8|0}}else{R=I;S=F}while(1){O=(R|0)%(S|0)|0;if(!O)break;else{E=S;S=O;R=E}}if(S){F=I+-1|0;E=I+d|0;O=H+(S+d<<3)|0;do{Q=O;O=O+-8|0;N=O;J=c[N>>2]|0;L=c[N+4>>2]|0;N=O;K=Q+(F<<3)|0;while(1){Q=K;M=c[Q+4>>2]|0;l=
N;c[l>>2]=c[Q>>2];c[l+4>>2]=M;M=P-K>>3;if((I|0)<(M|0))T=K+(I<<3)|0;else T=H+(E-M<<3)|0;if((T|0)==(O|0))break;else{M=K;K=T;N=M}}N=K;c[N>>2]=J;c[N+4>>2]=L}while((O|0)!=(G|0))}}while(0);T=c[b+120>>2]|0;i:do if(T){S=T+(d<<2)|0;R=T+(e<<2)|0;G=T+(f<<2)|0;if((d+1|0)==(e|0)){U=+g[S>>2];O=G-R|0;En(S|0,R|0,O|0)|0;g[T+((O>>2)+d<<2)>>2]=U;break}if((e+1|0)==(f|0)){O=T+(f+-1<<2)|0;U=+g[O>>2];E=O-S|0;En(T+(f-(E>>2)<<2)|0,S|0,E|0)|0;g[S>>2]=U;break}E=R;O=E-S>>2;H=G;G=H-E>>2;if((O|0)==(G|0)){E=S;I=R;while(1){U=+g[E>>
2];g[E>>2]=+g[I>>2];g[I>>2]=U;E=E+4|0;if((E|0)==(R|0))break i;else I=I+4|0}}else{V=O;W=G}while(1){I=(V|0)%(W|0)|0;if(!I)break;else{R=W;W=I;V=R}}if(W){G=O+-1|0;R=O+d|0;I=T+(W+d<<2)|0;do{E=I;I=I+-4|0;U=+g[I>>2];P=I;F=E+(G<<2)|0;while(1){g[P>>2]=+g[F>>2];E=H-F>>2;if((O|0)<(E|0))X=F+(O<<2)|0;else X=T+(R-E<<2)|0;if((X|0)==(I|0))break;else{E=F;F=X;P=E}}g[F>>2]=U}while((I|0)!=(S|0))}}while(0);X=c[b+132>>2]|0;j:do if(X){T=X+(d<<2)|0;W=X+(e<<2)|0;V=X+(f<<2)|0;if((d+1|0)==(e|0)){Y=+g[T>>2];S=V-W|0;En(T|0,W|
0,S|0)|0;g[X+((S>>2)+d<<2)>>2]=Y;break}if((e+1|0)==(f|0)){S=X+(f+-1<<2)|0;Y=+g[S>>2];I=S-T|0;En(X+(f-(I>>2)<<2)|0,T|0,I|0)|0;g[T>>2]=Y;break}I=W;S=I-T>>2;R=V;V=R-I>>2;if((S|0)==(V|0)){I=T;O=W;while(1){Y=+g[I>>2];g[I>>2]=+g[O>>2];g[O>>2]=Y;I=I+4|0;if((I|0)==(W|0))break j;else O=O+4|0}}else{Z=S;_=V}while(1){O=(Z|0)%(_|0)|0;if(!O)break;else{W=_;_=O;Z=W}}if(_){V=S+-1|0;W=S+d|0;O=X+(_+d<<2)|0;do{I=O;O=O+-4|0;Y=+g[O>>2];H=O;G=I+(V<<2)|0;while(1){g[H>>2]=+g[G>>2];I=R-G>>2;if((S|0)<(I|0))$=G+(S<<2)|0;else $=
X+(W-I<<2)|0;if(($|0)==(O|0))break;else{I=G;G=$;H=I}}g[G>>2]=Y}while((O|0)!=(T|0))}}while(0);$=c[b+136>>2]|0;if($)Ol($+(d<<2)|0,$+(e<<2)|0,$+(f<<2)|0)|0;$=c[b+148>>2]|0;k:do if($){X=$+(d<<2)|0;_=$+(e<<2)|0;Z=$+(f<<2)|0;if((d+1|0)==(e|0)){T=c[X>>2]|0;O=Z-_|0;En(X|0,_|0,O|0)|0;c[$+((O>>2)+d<<2)>>2]=T;break}if((e+1|0)==(f|0)){T=$+(f+-1<<2)|0;O=c[T>>2]|0;W=T-X|0;En($+(f-(W>>2)<<2)|0,X|0,W|0)|0;c[X>>2]=O;break}O=_;W=O-X>>2;T=Z;Z=T-O>>2;if((W|0)==(Z|0)){O=X;S=_;while(1){R=c[O>>2]|0;c[O>>2]=c[S>>2];c[S>>
2]=R;O=O+4|0;if((O|0)==(_|0))break k;else S=S+4|0}}else{aa=W;ba=Z}while(1){S=(aa|0)%(ba|0)|0;if(!S)break;else{_=ba;ba=S;aa=_}}if(ba){Z=W+-1|0;_=W+d|0;S=$+(ba+d<<2)|0;do{O=S;S=S+-4|0;R=c[S>>2]|0;V=S;H=O+(Z<<2)|0;while(1){c[V>>2]=c[H>>2];O=T-H>>2;if((W|0)<(O|0))ca=H+(W<<2)|0;else ca=$+(_-O<<2)|0;if((ca|0)==(S|0))break;else{O=H;H=ca;V=O}}c[H>>2]=R}while((S|0)!=(X|0))}}while(0);ca=b+80|0;$=c[ca>>2]|0;if($){ba=$+(d<<2)|0;aa=$+(e<<2)|0;X=$+(f<<2)|0;l:do if((d+1|0)!=(e|0)){if((e+1|0)==(f|0)){S=$+(f+-1<<
2)|0;_=c[S>>2]|0;W=S-ba|0;En($+(f-(W>>2)<<2)|0,ba|0,W|0)|0;c[ba>>2]=_;break}_=aa;W=_-ba>>2;S=X;T=S-_>>2;if((W|0)==(T|0)){_=ba;Z=aa;while(1){V=c[_>>2]|0;c[_>>2]=c[Z>>2];c[Z>>2]=V;_=_+4|0;if((_|0)==(aa|0))break l;else Z=Z+4|0}}else{da=W;ea=T}while(1){Z=(da|0)%(ea|0)|0;if(!Z)break;else{_=ea;ea=Z;da=_}}if(ea){T=W+-1|0;_=W+d|0;Z=$+(ea+d<<2)|0;do{V=Z;Z=Z+-4|0;G=c[Z>>2]|0;O=Z;F=V+(T<<2)|0;while(1){c[O>>2]=c[F>>2];V=S-F>>2;if((W|0)<(V|0))fa=F+(W<<2)|0;else fa=$+(_-V<<2)|0;if((fa|0)==(Z|0))break;else{V=F;
F=fa;O=V}}c[F>>2]=G}while((Z|0)!=(ba|0))}}else{Z=c[ba>>2]|0;_=X-aa|0;En(ba|0,aa|0,_|0)|0;c[$+((_>>2)+d<<2)>>2]=Z}while(0);if((d|0)<(f|0)){$=c[ca>>2]|0;ca=f-e|0;aa=d-e|0;ba=d;do{X=c[$+(ba<<2)>>2]|0;if(X){fa=X+8|0;X=c[fa>>2]|0;do if((X|0)>=(d|0))if((X|0)<(e|0)){ga=ca+X|0;break}else{ga=X+((X|0)<(f|0)?aa:0)|0;break}else ga=X;while(0);c[fa>>2]=ga}ba=ba+1|0}while((ba|0)!=(f|0))}}ba=c[b+280>>2]|0;if(ba){ga=ba+(d<<2)|0;aa=ba+(e<<2)|0;ca=ba+(f<<2)|0;m:do if((d+1|0)==(e|0)){$=c[ga>>2]|0;X=ca-aa|0;En(ga|0,aa|
0,X|0)|0;c[ba+((X>>2)+d<<2)>>2]=$}else{if((e+1|0)==(f|0)){$=ba+(f+-1<<2)|0;X=c[$>>2]|0;ea=$-ga|0;En(ba+(f-(ea>>2)<<2)|0,ga|0,ea|0)|0;c[ga>>2]=X;break}X=aa;ea=X-ga>>2;$=ca;da=$-X>>2;if((ea|0)==(da|0)){X=ga;Z=aa;while(1){_=c[X>>2]|0;c[X>>2]=c[Z>>2];c[Z>>2]=_;X=X+4|0;if((X|0)==(aa|0))break m;else Z=Z+4|0}}else{ha=ea;ia=da}while(1){Z=(ha|0)%(ia|0)|0;if(!Z)break;else{X=ia;ia=Z;ha=X}}if(!ia)break;da=ea+-1|0;X=ea+d|0;Z=ba+(ia+d<<2)|0;do{fa=Z;Z=Z+-4|0;_=c[Z>>2]|0;W=Z;S=fa+(da<<2)|0;while(1){c[W>>2]=c[S>>
2];fa=$-S>>2;if((ea|0)<(fa|0))ja=S+(ea<<2)|0;else ja=ba+(X-fa<<2)|0;if((ja|0)==(Z|0))break;else{fa=S;S=ja;W=fa}}c[S>>2]=_}while((Z|0)!=(ga|0))}while(0);ga=c[b+44>>2]|0;ja=c[b+288>>2]|0;if((ga|0)>0){ba=f-e|0;ia=d-e|0;ha=0;do{aa=ja+(ha<<2)|0;ca=c[aa>>2]|0;do if((ca|0)>=(d|0))if((ca|0)<(e|0)){ka=ba+ca|0;break}else{ka=ca+((ca|0)<(f|0)?ia:0)|0;break}else ka=ca;while(0);c[aa>>2]=ka;ha=ha+1|0}while((ha|0)!=(ga|0))}}ga=c[b+204>>2]|0;if((ga|0)>0){ha=c[b+200>>2]|0;ka=f-e|0;ia=d-e|0;ba=0;do{ja=ha+(ba<<3)|0;
ca=c[ja>>2]|0;do if((ca|0)>=(d|0))if((ca|0)<(e|0)){la=ka+ca|0;break}else{la=ca+((ca|0)<(f|0)?ia:0)|0;break}else la=ca;while(0);c[ja>>2]=la;ba=ba+1|0}while((ba|0)<(ga|0))}ga=c[b+220>>2]|0;if((ga|0)>0){ba=c[b+216>>2]|0;la=f-e|0;ia=d-e|0;ka=0;do{ha=ba+(ka*24|0)|0;ca=c[ha>>2]|0;do if((ca|0)>=(d|0))if((ca|0)<(e|0)){ma=la+ca|0;break}else{ma=ca+((ca|0)<(f|0)?ia:0)|0;break}else ma=ca;while(0);ca=ba+(ka*24|0)+4|0;ja=c[ca>>2]|0;do if((ja|0)>=(d|0))if((ja|0)<(e|0)){na=la+ja|0;break}else{na=ja+((ja|0)<(f|0)?
ia:0)|0;break}else na=ja;while(0);c[ha>>2]=ma;c[ca>>2]=na;ka=ka+1|0}while((ka|0)<(ga|0))}ga=c[b+236>>2]|0;if((ga|0)>0){ka=c[b+232>>2]|0;na=f-e|0;ma=d-e|0;ia=0;do{la=ka+(ia*28|0)|0;ba=c[la>>2]|0;do if((ba|0)>=(d|0))if((ba|0)<(e|0)){oa=na+ba|0;break}else{oa=ba+((ba|0)<(f|0)?ma:0)|0;break}else oa=ba;while(0);c[la>>2]=oa;ia=ia+1|0}while((ia|0)<(ga|0))}ga=c[b+252>>2]|0;if((ga|0)>0){ia=c[b+248>>2]|0;oa=f-e|0;ma=d-e|0;na=0;do{ka=ia+(na*20|0)|0;ba=c[ka>>2]|0;do if((ba|0)>=(d|0))if((ba|0)<(e|0)){pa=oa+ba|
0;break}else{pa=ba+((ba|0)<(f|0)?ma:0)|0;break}else pa=ba;while(0);c[ka>>2]=pa;ba=ia+(na*20|0)+4|0;la=c[ba>>2]|0;do if((la|0)>=(d|0))if((la|0)<(e|0)){qa=oa+la|0;break}else{qa=la+((la|0)<(f|0)?ma:0)|0;break}else qa=la;while(0);c[ba>>2]=qa;na=na+1|0}while((na|0)<(ga|0))}ga=c[b+268>>2]|0;if((ga|0)>0){na=c[b+264>>2]|0;qa=f-e|0;ma=d-e|0;oa=0;do{ia=na+(oa*60|0)|0;pa=c[ia>>2]|0;do if((pa|0)>=(d|0))if((pa|0)<(e|0)){ra=qa+pa|0;break}else{ra=pa+((pa|0)<(f|0)?ma:0)|0;break}else ra=pa;while(0);c[ia>>2]=ra;pa=
na+(oa*60|0)+4|0;ba=c[pa>>2]|0;do if((ba|0)>=(d|0))if((ba|0)<(e|0)){sa=qa+ba|0;break}else{sa=ba+((ba|0)<(f|0)?ma:0)|0;break}else sa=ba;while(0);c[pa>>2]=sa;ba=na+(oa*60|0)+8|0;ia=c[ba>>2]|0;do if((ia|0)>=(d|0))if((ia|0)<(e|0)){ta=qa+ia|0;break}else{ta=ia+((ia|0)<(f|0)?ma:0)|0;break}else ta=ia;while(0);c[ba>>2]=ta;oa=oa+1|0}while((oa|0)<(ga|0))}ga=c[b+312>>2]|0;if(!ga){i=h;return}b=d-e|0;oa=f-e|0;ta=ga;do{ga=ta+4|0;ma=c[ga>>2]|0;do if((ma|0)>=(d|0))if((ma|0)<(e|0)){ua=oa+ma|0;break}else{ua=ma+((ma|
0)<(f|0)?b:0)|0;break}else ua=ma;while(0);c[ga>>2]=ua;ma=ta+8|0;ba=c[ma>>2]|0;qa=ba+-1|0;do if((ba|0)>(d|0))if((ba|0)>(e|0)){va=qa+((ba|0)>(f|0)?0:b)|0;break}else{va=oa+qa|0;break}else va=qa;while(0);c[ma>>2]=va+1;ta=c[ta+24>>2]|0}while((ta|0)!=0);i=h;return}function vk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;g=(c[b+88>>2]|0)+(d<<2)|0;if(c[g>>2]&~e)a[b+12>>0]=1;d=b+8|0;if(!(~c[d>>2]&e)){c[g>>2]=e;i=f;return}if(e&128){h=b+128|0;j=c[h>>2]|0;if(!j){k=b+48|0;l=c[k>>2]|
0;if(!l){qk(b,256);m=c[k>>2]|0}else m=l;l=um(c[b+400>>2]|0,m<<3)|0;An(l|0,0,c[k>>2]<<3|0)|0;n=l}else n=j;c[h>>2]=n}if(e&256){n=b+136|0;h=c[n>>2]|0;if(!h){j=b+48|0;l=c[j>>2]|0;if(!l){qk(b,256);o=c[j>>2]|0}else o=l;l=um(c[b+400>>2]|0,o<<2)|0;An(l|0,0,c[j>>2]<<2|0)|0;p=l}else p=h;c[n>>2]=p}c[d>>2]=c[d>>2]|e;c[g>>2]=e;i=f;return}function wk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;vk(a,b,c[(c[a+88>>2]|0)+(b<<2)>>2]|(d?514:2));i=e;return}function xk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,
m=0;g=i;i=i+64|0;h=g+16|0;j=g;k=b+400|0;if(c[(c[k>>2]|0)+102876>>2]&2){l=0;i=g;return l|0}c[h>>2]=7912;m=h+12|0;c[h+4>>2]=b;c[h+8>>2]=d;c[m+0>>2]=c[e+0>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];a[h+28>>0]=f&1;f=h+32|0;c[f>>2]=0;yb[c[(c[d>>2]|0)+28>>2]&31](d,j,e,0);yj(c[k>>2]|0,h,j);l=c[f>>2]|0;i=g;return l|0}function yk(d,e,f,h){d=d|0;e=e|0;f=f|0;h=h|0;var 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,J=0,K=0,L=0,M=
0,N=0,O=0,P=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;j=i;i=i+96|0;k=j+48|0;l=j;m=+g[f+52>>2];if(m==0)n=+g[d+32>>2]*.75;else n=m;o=kb[c[(c[e>>2]|0)+12>>2]&7](e)|0;if((o|0)<=0){i=j;return}p=l+4|0;q=l+8|0;r=l+28|0;s=e+4|0;t=l+12|0;u=e+12|0;v=l+20|0;w=l+12|0;x=l+24|0;y=l+16|0;z=k+4|0;A=k+12|0;B=k+20|0;C=k+21|0;D=k+22|0;E=k+23|0;F=k+24|0;G=k+28|0;H=k+32|0;I=h+12|0;J=h+8|0;K=h+4|0;L=f+28|0;M=f+8|0;N=f+12|0;O=f+20|0;P=f+24|0;R=f+
32|0;S=f+33|0;T=f+34|0;U=f+35|0;V=f+64|0;W=f+68|0;X=0;m=0;while(1){c[l>>2]=488;c[p>>2]=1;g[q>>2]=.009999999776482582;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=0;b[r+16>>1]=0;if((c[s>>2]|0)==1){Y=s;Z=c[Y+4>>2]|0;_=p;c[_>>2]=c[Y>>2];c[_+4>>2]=Z;c[t+0>>2]=c[u+0>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];c[t+16>>2]=c[u+16>>2];c[t+20>>2]=c[u+20>>2];c[t+24>>2]=c[u+24>>2];c[t+28>>2]=c[u+28>>2];b[t+32>>1]=b[u+32>>1]|0}else Te(e,l,X);$=+g[w>>2];aa=+g[v>>2]-$;ba=+g[y>>2];ca=+g[x>>
2]-ba;da=+Q(+(aa*aa+ca*ca));a:do if(m<da){ea=$;fa=ba;ga=m;while(1){ha=ga/da;ia=ea+aa*ha;ja=ca*ha+fa;c[H>>2]=0;c[k>>2]=c[f>>2];ha=+g[I>>2];ka=+g[J>>2];la=+g[h>>2]+(ia*ha-ja*ka);ma=ja*ha+ia*ka+ +g[K>>2];ka=+la;ia=+ma;Z=z;g[Z>>2]=ka;g[Z+4>>2]=ia;ia=+g[L>>2];ka=+(+g[O>>2]-ia*(ma-+g[N>>2]));ma=+(ia*(la-+g[M>>2])+ +g[P>>2]);Z=A;g[Z>>2]=ka;g[Z+4>>2]=ma;Z=a[S>>0]|0;_=a[T>>0]|0;Y=a[U>>0]|0;a[B>>0]=a[R>>0]|0;a[C>>0]=Z;a[D>>0]=_;a[E>>0]=Y;g[F>>2]=+g[V>>2];c[G>>2]=c[W>>2];rk(d,k)|0;ma=n+ga;if(!(ma<da)){na=ma;
break a}ea=+g[w>>2];fa=+g[y>>2];ga=ma}}else na=m;while(0);X=X+1|0;if((X|0)==(o|0))break;else m=na-da}i=j;return}function zk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=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,J=0,K=0,L=0,M=0,N=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;h=i;i=i+80|0;j=h+40|0;k=h+24|0;l=h+8|0;m=h;n=+g[e+52>>2];if(n==0)o=+g[b+32>>2]*.75;else o=n;g[k>>2]=0;g[k+4>>2]=0;g[k+8>>2]=0;g[k+12>>2]=1;yb[c[(c[d>>
2]|0)+28>>2]&31](d,l,k,0);n=o*+O(+(+g[l+4>>2]/o));p=l+12|0;q=+g[p>>2];if(!(n<q)){i=h;return}r=l+8|0;s=m+4|0;t=j+4|0;u=j+12|0;v=j+20|0;w=j+21|0;x=j+22|0;y=j+23|0;z=j+24|0;A=j+28|0;B=j+32|0;C=f+12|0;D=f+8|0;E=f+4|0;F=e+28|0;G=e+8|0;H=e+12|0;I=e+20|0;J=e+24|0;K=e+32|0;L=e+33|0;M=e+34|0;N=e+35|0;P=e+64|0;Q=e+68|0;R=q;q=+g[r>>2];S=n;while(1){n=o*+O(+(+g[l>>2]/o));if(n<q){T=n;do{g[m>>2]=T;g[s>>2]=S;if(qb[c[(c[d>>2]|0)+16>>2]&15](d,k,m)|0){c[B>>2]=0;c[j>>2]=c[e>>2];n=+g[C>>2];U=+g[m>>2];V=+g[D>>2];W=+g[s>>
2];X=+g[f>>2]+(n*U-V*W);Y=U*V+n*W+ +g[E>>2];W=+X;n=+Y;Z=t;g[Z>>2]=W;g[Z+4>>2]=n;n=+g[F>>2];W=+(+g[I>>2]-n*(Y-+g[H>>2]));Y=+(n*(X-+g[G>>2])+ +g[J>>2]);Z=u;g[Z>>2]=W;g[Z+4>>2]=Y;Z=a[L>>0]|0;_=a[M>>0]|0;$=a[N>>0]|0;a[v>>0]=a[K>>0]|0;a[w>>0]=Z;a[x>>0]=_;a[y>>0]=$;g[z>>2]=+g[P>>2];c[A>>2]=c[Q>>2];rk(b,j)|0}T=o+T;aa=+g[r>>2]}while(T<aa);ba=+g[p>>2];ca=aa}else{ba=R;ca=q}S=o+S;if(!(S<ba))break;else{R=ba;q=ca}}i=h;return}function Ak(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0;e=i;i=i+64|0;f=e+20|0;h=e;j=e+16|0;l=b+400|0;if(c[(c[l>>2]|0)+102876>>2]&2){m=0;i=e;return m|0}n=+g[d+16>>2];o=d+8|0;p=c[o>>2]|0;q=c[o+4>>2]|0;o=h;c[o>>2]=p;c[o+4>>2]=q;r=+T(+n);g[h+8>>2]=r;s=+S(+n);g[h+12>>2]=s;o=b+44|0;t=c[o>>2]|0;u=c[d+40>>2]|0;n=(c[k>>2]=p,+g[k>>2]);v=(c[k>>2]=q,+g[k>>2]);do if(u){q=c[u+4>>2]|0;if((q|0)==3|(q|0)==1){yk(b,u,d,h);break}else if((q|
0)==0|(q|0)==2){zk(b,u,d,h);break}else break}while(0);u=c[d+44>>2]|0;if(u){q=c[d+48>>2]|0;c[f>>2]=7720;c[f+12>>2]=u;c[f+16>>2]=q;zk(b,f,d,h)}q=d+56|0;if((c[q>>2]|0)>0){u=d+60|0;p=f+4|0;w=f+12|0;x=f+20|0;y=f+21|0;z=f+22|0;A=f+23|0;B=f+24|0;C=f+28|0;D=f+32|0;E=d+28|0;F=d+8|0;G=d+12|0;H=d+20|0;I=d+24|0;J=d+32|0;K=d+33|0;L=d+34|0;M=d+35|0;N=d+64|0;O=d+68|0;P=0;do{Q=(c[u>>2]|0)+(P<<3)|0;R=+g[Q>>2];U=+g[Q+4>>2];c[D>>2]=0;c[f>>2]=c[d>>2];V=n+(R*s-U*r);W=s*U+R*r+v;R=+V;U=+W;Q=p;g[Q>>2]=R;g[Q+4>>2]=U;U=+g[E>>
2];R=+(+g[H>>2]-U*(W-+g[G>>2]));W=+(U*(V-+g[F>>2])+ +g[I>>2]);Q=w;g[Q>>2]=R;g[Q+4>>2]=W;Q=a[K>>0]|0;X=a[L>>0]|0;Y=a[M>>0]|0;a[x>>0]=a[J>>0]|0;a[y>>0]=Q;a[z>>0]=X;a[A>>0]=Y;g[B>>2]=+g[N>>2];c[C>>2]=c[O>>2];rk(b,f)|0;P=P+1|0}while((P|0)<(c[q>>2]|0))}q=c[o>>2]|0;o=um(c[l>>2]|0,80)|0;if(!o)Z=0;else{hk(o);Z=o}c[Z>>2]=b;c[Z+4>>2]=t;c[Z+8>>2]=q;g[Z+16>>2]=+g[d+36>>2];c[Z+76>>2]=c[d+68>>2];o=Z+60|0;c[o+0>>2]=c[h+0>>2];c[o+4>>2]=c[h+4>>2];c[o+8>>2]=c[h+8>>2];c[o+12>>2]=c[h+12>>2];c[Z+20>>2]=0;h=b+312|0;o=
c[h>>2]|0;c[Z+24>>2]=o;if(o)c[o+20>>2]=Z;c[h>>2]=Z;h=b+308|0;c[h>>2]=(c[h>>2]|0)+1;if((t|0)<(q|0)){h=b+144|0;o=t;do{c[(c[h>>2]|0)+(o<<2)>>2]=Z;o=o+1|0}while((o|0)!=(q|0))}o=c[d+4>>2]|0;h=Z+12|0;P=c[h>>2]|0;f=(P^o)<<4&16|o;if(P&~f)a[b+20>>0]=1;P=b+16|0;O=c[P>>2]|0;if(f&~O){if(!(o&1))_=O;else{o=b+132|0;C=c[o>>2]|0;if(!C){N=b+48|0;B=c[N>>2]|0;if(!B){qk(b,256);$=c[N>>2]|0}else $=B;B=um(c[l>>2]|0,$<<2)|0;An(B|0,0,c[N>>2]<<2|0)|0;aa=B;ba=c[P>>2]|0}else{aa=C;ba=O}c[o>>2]=aa;_=ba}c[P>>2]=_|f}c[h>>2]=f;c[j>>
2]=7544;Bk(b,1);Ck(b,t,q,j);j=d+72|0;d=c[j>>2]|0;if(!d){m=Z;i=e;return m|0}Dk(b,d,Z);m=c[j>>2]|0;i=e;return m|0}function Bk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;i=i+32|0;e=d;f=d+8|0;h=c[a+204>>2]|0;j=c[a+200>>2]|0;k=j+(h<<3)|0;if((h|0)>0){h=c[a+96>>2]|0;l=+g[a+36>>2];m=j;do{n=c[m>>2]|0;c[m+4>>2]=(~~(l*+g[h+(n<<3)+4>>2]+2048)>>>0<<20)+(~~(l*+g[h+(n<<3)>>2]*256+524288)>>>0);m=m+8|0}while(m>>>0<k>>>0)}Pl(j,k,e);e=c[a+400>>2]|0;c[f>>2]=0;c[f+4>>2]=0;k=f+8|0;c[k>>
2]=0;j=f+12|0;c[j>>2]=e+76;if((c[a+8>>2]&32768|0)!=0?(c[e+102952>>2]|0)!=0:0)Kk(f,c[a+216>>2]|0,c[a+220>>2]|0,c[a+88>>2]|0);e=a+216|0;Ik(a,e);Jk(a,e);Lk(a,f);if(b){b=c[e>>2]|0;m=a+220|0;a=c[m>>2]|0;h=b+(a*24|0)|0;a:do if(!a){o=b;p=11}else{n=b;while(1){if(c[n+20>>2]&2){o=n;p=11;break a}n=n+24|0;if((n|0)==(h|0)){q=h;r=b;break}}}while(0);if((p|0)==11)if((o|0)==(h|0)){q=h;r=b}else{b=o;p=o;b:while(1){o=p;do{a=o;o=o+24|0;if((o|0)==(h|0))break b}while((c[a+44>>2]&2|0)!=0);c[b+0>>2]=c[o+0>>2];c[b+4>>2]=c[o+
4>>2];c[b+8>>2]=c[o+8>>2];c[b+12>>2]=c[o+12>>2];c[b+16>>2]=c[o+16>>2];c[b+20>>2]=c[o+20>>2];b=b+24|0;p=o}q=b;r=c[e>>2]|0}c[m>>2]=(q-r|0)/24|0}r=c[f>>2]|0;if(!r){i=d;return}Qm(c[j>>2]|0,r);c[f>>2]=0;c[k>>2]=0;i=d;return}function Ck(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;f=i;i=i+48|0;h=f+40|0;j=f+12|0;k=f;l=(d|0)>(b|0);if(!l){i=
f;return}m=c[a+88>>2]|0;n=b;o=0;do{o=c[m+(n<<2)>>2]|o;n=n+1|0}while((n|0)!=(d|0));if(o&1032){n=a+220|0;if((c[n>>2]|0)>0){m=a+216|0;p=a+88|0;q=a+144|0;r=a+252|0;s=a+256|0;t=a+248|0;u=a+96|0;v=a+260|0;w=0;do{x=c[m>>2]|0;y=c[x+(w*24|0)>>2]|0;z=c[x+(w*24|0)+4>>2]|0;A=c[p>>2]|0;B=c[A+(y<<2)>>2]|0;C=c[A+(z<<2)>>2]|0;A=c[q>>2]|0;D=c[A+(y<<2)>>2]|0;E=c[A+(z<<2)>>2]|0;do if((z|0)<(d|0)&(((y|0)>=(d|0)|(y|0)<(b|0)|(z|0)<(b|0))^1)?(A=C|B,!((A&2|0)!=0|(A&1032|0)==0)):0){if(!(wb[c[(c[e>>2]|0)+8>>2]&31](e,y)|0)?
!(wb[c[(c[e>>2]|0)+8>>2]&31](e,z)|0):0)break;if(!(B&28)){if(!D)break;if(!(c[D+12>>2]&2))break}if(!(C&28)){if(!E)break;if(!(c[E+12>>2]&2))break}if(qb[c[(c[e>>2]|0)+12>>2]&15](e,y,z)|0){A=c[r>>2]|0;F=c[s>>2]|0;if((A|0)>=(F|0)?(G=(F|0)==0?256:F<<1,(F|0)<(G|0)):0){F=um(c[v>>2]|0,G*20|0)|0;H=c[t>>2]|0;if(H){Dn(F|0,H|0,(c[r>>2]|0)*20|0)|0;vm(c[v>>2]|0,c[t>>2]|0,(c[s>>2]|0)*20|0)}c[s>>2]=G;c[t>>2]=F;I=c[r>>2]|0}else I=A;c[r>>2]=I+1;A=c[t>>2]|0;c[A+(I*20|0)>>2]=y;c[A+(I*20|0)+4>>2]=z;c[A+(I*20|0)+8>>2]=c[x+
(w*24|0)+20>>2];if(!D)J=1;else J=+g[D+16>>2];if(!E)K=1;else K=+g[E+16>>2];g[A+(I*20|0)+12>>2]=J<K?J:K;F=c[u>>2]|0;L=+g[F+(y<<3)>>2]-+g[F+(z<<3)>>2];M=+g[F+(y<<3)+4>>2]-+g[F+(z<<3)+4>>2];g[A+(I*20|0)+16>>2]=+Q(+(L*L+M*M))}}while(0);w=w+1|0}while((w|0)<(c[n>>2]|0));N=r}else N=a+252|0;r=a+248|0;n=c[r>>2]|0;w=c[N>>2]|0;I=n+(w*20|0)|0;c[h>>2]=27;u=w*20|0;w=(u|0)/20|0;a:do if((u|0)>2560){t=w;while(1){s=Um(t*20|0,9816)|0;if(s){O=s;P=t;break a}if((t|0)>1)t=(t|0)/2|0;else{O=s;P=0;break}}}else{O=0;P=0}while(0);
Ql(n,I,h,w,O,P);if(O)Vm(O);O=c[r>>2]|0;P=c[N>>2]|0;w=O+(P*20|0)|0;b:do if(!P){R=O;S=40}else if((P|0)==1){T=w;U=O}else{I=O;n=O+20|0;u=c[O>>2]|0;while(1){t=u;u=c[n>>2]|0;if((t|0)==(u|0)?(c[I+4>>2]|0)==(c[I+24>>2]|0):0){R=I;S=40;break b}t=n+20|0;if((t|0)==(w|0)){T=w;U=O;break}else{s=n;n=t;I=s}}}while(0);if((S|0)==40)if((R|0)==(w|0)){T=w;U=O}else{O=R;P=R+20|0;c:while(1){R=O+4|0;I=P;do{n=I;I=I+20|0;if((I|0)==(w|0))break c;if((c[O>>2]|0)!=(c[I>>2]|0))break}while((c[R>>2]|0)==(c[n+24>>2]|0));R=O+20|0;c[R+
0>>2]=c[I+0>>2];c[R+4>>2]=c[I+4>>2];c[R+8>>2]=c[I+8>>2];c[R+12>>2]=c[I+12>>2];c[R+16>>2]=c[I+16>>2];O=R;P=I}T=O+20|0;U=c[r>>2]|0}c[N>>2]=(T-U|0)/20|0}if(!(o&16)){i=f;return}ck(j,(c[a+400>>2]|0)+76|0,d-b|0);if(l){l=a+88|0;o=a+144|0;U=a+96|0;T=b;do{b=c[(c[l>>2]|0)+(T<<2)>>2]|0;do if(!(b&2)){N=c[(c[o>>2]|0)+(T<<2)>>2]|0;if(!(b&28)){if(!N)break;if(!(c[N+12>>2]&2))break}N=c[U>>2]|0;ek(j,N+(T<<3)|0,T,wb[c[(c[e>>2]|0)+8>>2]&31](e,T)|0)}while(0);T=T+1|0}while((T|0)<(d|0))}K=+g[a+32>>2]*.75;fk(j,K*.5,K*2);
c[k>>2]=7176;c[k+4>>2]=a;c[k+8>>2]=e;gk(j,k);k=a+264|0;e=c[k>>2]|0;d=a+268|0;a=c[d>>2]|0;T=e+(a*60|0)|0;c[h>>2]=28;U=a*60|0;a=(U|0)/60|0;d:do if((U|0)>7680){o=a;while(1){l=Um(o*60|0,9816)|0;if(l){V=l;W=o;break d}if((o|0)>1)o=(o|0)/2|0;else{V=l;W=0;break}}}else{V=0;W=0}while(0);Rl(e,T,h,a,V,W);if(V)Vm(V);V=c[k>>2]|0;W=c[d>>2]|0;a=V+(W*60|0)|0;e:do if(!W){X=V;S=69}else if((W|0)==1){Y=a;Z=V}else{h=V;T=V+60|0;e=c[V>>2]|0;while(1){U=e;e=c[T>>2]|0;if(((U|0)==(e|0)?(c[h+4>>2]|0)==(c[h+64>>2]|0):0)?(c[h+
8>>2]|0)==(c[h+68>>2]|0):0){X=h;S=69;break e}U=T+60|0;if((U|0)==(a|0)){Y=a;Z=V;break}else{o=T;T=U;h=o}}}while(0);if((S|0)==69)if((X|0)==(a|0)){Y=a;Z=V}else{V=X;S=X+60|0;f:while(1){X=V+4|0;W=V+8|0;h=S;do{T=h;h=h+60|0;if((h|0)==(a|0))break f;if((c[V>>2]|0)!=(c[h>>2]|0))break;if((c[X>>2]|0)!=(c[T+64>>2]|0))break}while((c[W>>2]|0)==(c[T+68>>2]|0));W=V+60|0;X=W+0|0;T=h+0|0;e=X+60|0;do{c[X>>2]=c[T>>2];X=X+4|0;T=T+4|0}while((X|0)<(e|0));V=W;S=h}Y=V+60|0;Z=c[k>>2]|0}c[d>>2]=(Y-Z|0)/60|0;dk(j);i=f;return}
function Dk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;f=i;i=i+16|0;g=f;h=b+400|0;if(c[(c[h>>2]|0)+102876>>2]&2){i=f;return}j=e+4|0;k=e+8|0;uk(b,c[j>>2]|0,c[k>>2]|0,c[b+44>>2]|0);l=d+4|0;m=d+8|0;uk(b,c[l>>2]|0,c[m>>2]|0,c[j>>2]|0);n=c[j>>2]|0;c[g>>2]=7576;c[g+4>>2]=n;Bk(b,1);Ck(b,c[l>>2]|0,c[k>>2]|0,g);g=c[j>>2]|0;l=c[k>>2]|0;if((g|0)<(l|0)){n=b+144|0;o=g;do{c[(c[n>>2]|0)+(o<<2)>>2]=d;o=o+1|0}while((o|0)<(l|0))}l=d+12|0;d=c[l>>2]|0;o=c[e+12>>2]|d;
n=(o^d)<<4&16|o;if(d&~n)a[b+20>>0]=1;d=b+16|0;g=c[d>>2]|0;if(n&~g){if(!(o&1))p=g;else{o=b+132|0;q=c[o>>2]|0;if(!q){r=b+48|0;s=c[r>>2]|0;if(!s){qk(b,256);t=c[r>>2]|0}else t=s;s=um(c[h>>2]|0,t<<2)|0;An(s|0,0,c[r>>2]<<2|0)|0;u=s;v=c[d>>2]|0}else{u=q;v=g}c[o>>2]=u;p=v}c[d>>2]=p|n}c[l>>2]=n;c[m>>2]=c[k>>2];c[j>>2]=c[k>>2];ok(b,e);i=f;return}function Ek(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[a>>2]|0;f=c[b>>2]|0;if((e|0)==(f|0)){g=(c[a+4>>2]|0)<(c[b+4>>2]|0);i=d;return g|0}else{g=(e-f|0)<0;i=d;return g|
0}return 0}function Fk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[a>>2]|0;f=c[b>>2]|0;if((e|0)!=(f|0)){g=(e-f|0)<0;i=d;return g|0}f=c[a+4>>2]|0;e=c[b+4>>2]|0;if((f|0)==(e|0)){g=(c[a+8>>2]|0)<(c[b+8>>2]|0);i=d;return g|0}else{g=(f-e|0)<0;i=d;return g|0}return 0}function Gk(b){b=b|0;var d=0,e=0,f=0,h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0;d=i;e=b+400|0;f=b+220|0;h=Om((c[e>>2]|0)+76|0,(c[f>>2]|0)*24|0)|0;
j=c[f>>2]|0;if((j|0)>0){k=b+216|0;l=b+144|0;m=j;j=0;n=0;while(1){o=c[k>>2]|0;p=o+(n*24|0)|0;q=c[l>>2]|0;r=c[q+(c[p>>2]<<2)>>2]|0;if(((r|0)!=0?(r|0)==(c[q+(c[o+(n*24|0)+4>>2]<<2)>>2]|0):0)?(c[r+12>>2]&16|0)!=0:0){r=h+(j*24|0)|0;c[r+0>>2]=c[p+0>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];c[r+16>>2]=c[p+16>>2];c[r+20>>2]=c[p+20>>2];s=c[f>>2]|0;t=j+1|0}else{s=m;t=j}n=n+1|0;if((n|0)>=(s|0)){u=t;break}else{m=s;j=t}}}else u=0;t=Om((c[e>>2]|0)+76|0,c[b+308>>2]<<2)|0;j=c[b+312>>2]|0;
if(!j)v=0;else{s=b+16|0;m=b+124|0;n=b+132|0;f=b+48|0;l=b+20|0;k=j;j=0;while(1){p=k+12|0;r=c[p>>2]|0;if(r&16){o=j+1|0;c[t+(j<<2)>>2]=k;q=r&-17;if(((r|16)^-17)&r)a[l>>0]=1;w=c[s>>2]|0;if(q&~w){if(!(r&1))x=w;else{r=c[n>>2]|0;if(!r){y=c[f>>2]|0;if(!y){qk(b,256);z=c[f>>2]|0}else z=y;y=um(c[e>>2]|0,z<<2)|0;An(y|0,0,c[f>>2]<<2|0)|0;A=y;B=c[s>>2]|0}else{A=r;B=w}c[n>>2]=A;x=B}c[s>>2]=x|q}c[p>>2]=q;q=c[k+4>>2]|0;p=c[k+8>>2]|0;if((q|0)<(p|0)){w=q+1|0;An((c[m>>2]|0)+(q<<2)|0,0,((p|0)>(w|0)?p:w)-q<<2|0)|0;C=o}else C=
o}else C=j;k=c[k+24>>2]|0;if(!k){v=C;break}else j=C}}C=(u|0)>0;if(C){j=c[b+124>>2]|0;k=0;do{m=c[h+(k*24|0)+4>>2]|0;D=+g[h+(k*24|0)+8>>2];x=j+(c[h+(k*24|0)>>2]<<2)|0;g[x>>2]=D+ +g[x>>2];x=j+(m<<2)|0;g[x>>2]=D+ +g[x>>2];k=k+1|0}while((k|0)!=(u|0))}k=(v|0)>0;if(k){j=b+124|0;x=b+132|0;m=0;do{s=c[t+(m<<2)>>2]|0;B=c[s+4>>2]|0;A=c[s+8>>2]|0;if((B|0)<(A|0)){s=c[j>>2]|0;n=c[x>>2]|0;f=B;do{g[n+(f<<2)>>2]=+g[s+(f<<2)>>2]<.800000011920929?0:3.4028234663852886E38;f=f+1|0}while((f|0)<(A|0))}m=m+1|0}while((m|0)!=
(v|0))}m=~~+Q(+ +(c[b+44>>2]|0));if((m|0)>0?(x=b+132|0,C):0){C=0;do{j=c[x>>2]|0;A=0;f=0;while(1){D=1-+g[h+(A*24|0)+8>>2];s=j+(c[h+(A*24|0)>>2]<<2)|0;n=j+(c[h+(A*24|0)+4>>2]<<2)|0;E=+g[n>>2];F=D+E;G=+g[s>>2];H=D+G;if(G>F){g[s>>2]=F;I=+g[n>>2];J=1}else{I=E;J=f}if(I>H){g[n>>2]=H;K=1}else K=J;A=A+1|0;if((A|0)==(u|0))break;else f=K}C=C+1|0}while(K&(C|0)<(m|0))}if(!k){L=c[e>>2]|0;M=L+76|0;Qm(M,t);N=c[e>>2]|0;O=N+76|0;Qm(O,h);i=d;return}k=b+132|0;m=b+32|0;b=0;do{C=c[t+(b<<2)>>2]|0;K=c[C+4>>2]|0;u=c[C+8>>
2]|0;if((K|0)<(u|0)){C=c[k>>2]|0;J=K;do{K=C+(J<<2)|0;I=+g[K>>2];if(I<3.4028234663852886E38)P=I*+g[m>>2];else P=0;g[K>>2]=P;J=J+1|0}while((J|0)<(u|0))}b=b+1|0}while((b|0)!=(v|0));L=c[e>>2]|0;M=L+76|0;Qm(M,t);N=c[e>>2]|0;O=N+76|0;Qm(O,h);i=d;return}function Hk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;f=+g[b+36>>2];h=(~~(f*+g[d+4>>2]+-1+2048)>>>0<<20)+(~~((f*+g[d>>2]+-1)*256+524288)>>>0)|0;j=~~(f*+g[d+12>>2]+1+2048)>>>0;k=~~((f*+g[d+8>>2]+1)*256+524288)>>>0;d=c[b+200>>2]|
0;l=c[b+204>>2]|0;b=d+(l<<3)|0;m=d;d=l<<3>>3;a:while(1){l=d;while(1){if(!l)break a;n=(l|0)/2|0;if((c[m+(n<<3)+4>>2]|0)>>>0<h>>>0)break;else l=n}m=m+(n+1<<3)|0;d=l+-1-n|0}n=(j<<20)+k|0;k=m;j=b-m>>3;b:while(1){b=j;while(1){if(!b)break b;o=(b|0)/2|0;if((c[k+(o<<3)+4>>2]|0)>>>0>n>>>0)b=o;else break}k=k+(o+1<<3)|0;j=b+-1-o|0}c[a>>2]=h&1048575;c[a+4>>2]=n&1048575;c[a+8>>2]=h&-1048576;c[a+12>>2]=n&-1048576;c[a+16>>2]=m;c[a+20>>2]=k;i=e;return}function Ik(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,
l=0,m=0,n=0,o=0,p=0;d=i;e=c[a+200>>2]|0;f=c[a+204>>2]|0;g=e+(f<<3)|0;c[b+4>>2]=0;if((f|0)>0){h=e;j=e}else{i=d;return}while(1){e=h+4|0;f=(c[e>>2]|0)+256|0;k=h;h=h+8|0;l=h>>>0<g>>>0;a:do if(l){m=h;do{if(f>>>0<(c[m+4>>2]|0)>>>0)break a;Sl(a,c[k>>2]|0,c[m>>2]|0,b);m=m+8|0}while(m>>>0<g>>>0)}while(0);f=c[e>>2]|0;m=f+1048320|0;b:do if(j>>>0<g>>>0){n=j;while(1){o=n+8|0;if(m>>>0<=(c[n+4>>2]|0)>>>0){p=n;break b}if(o>>>0<g>>>0)n=o;else{p=o;break}}}else p=j;while(0);m=f+1048832|0;c:do if(p>>>0<g>>>0){e=p;do{if(m>>>
0<(c[e+4>>2]|0)>>>0)break c;Sl(a,c[k>>2]|0,c[e>>2]|0,b);e=e+8|0}while(e>>>0<g>>>0)}while(0);if(!l)break;else j=p}i=d;return}function Jk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;if(!(c[a+8>>2]&131072)){i=d;return}e=c[(c[a+400>>2]|0)+102948>>2]|0;if(!e){i=d;return}f=c[b>>2]|0;g=b+4|0;h=c[g>>2]|0;j=f+(h*24|0)|0;a:do if(!h){k=f;l=8}else{m=f;while(1){if((c[m+20>>2]&131072|0)!=0?!(ub[c[(c[e>>2]|0)+16>>2]&7](e,a,c[m>>2]|0,c[m+4>>2]|0)|0):0){k=m;l=8;break a}m=m+24|0;if((m|0)==
(j|0)){n=j;break}}}while(0);b:do if((l|0)==8)if((k|0)==(j|0))n=j;else{f=k;h=k;while(1){m=h;do{o=m;m=m+24|0;if((m|0)==(j|0)){n=f;break b}if(!(c[o+44>>2]&131072))break}while(!(ub[c[(c[e>>2]|0)+16>>2]&7](e,a,c[m>>2]|0,c[o+28>>2]|0)|0));c[f+0>>2]=c[m+0>>2];c[f+4>>2]=c[m+4>>2];c[f+8>>2]=c[m+8>>2];c[f+12>>2]=c[m+12>>2];c[f+16>>2]=c[m+16>>2];c[f+20>>2]=c[m+20>>2];f=f+24|0;h=m}}while(0);c[g>>2]=(n-(c[b>>2]|0)|0)/24|0;i=d;return}function Kk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,
n=0,o=0;f=i;i=i+16|0;g=f;h=c[a>>2]|0;if(h){Qm(c[a+12>>2]|0,h);c[a>>2]=0;c[a+8>>2]=0}if(!d)j=c[a+8>>2]|0;else{h=Om(c[a+12>>2]|0,d*9|0)|0;c[a>>2]=h;k=h+(d<<3)|0;c[a+4>>2]=k;An(k|0,1,d|0)|0;c[a+8>>2]=d;j=d}if(!j){i=f;return}j=c[a>>2]|0;if((d|0)>0){k=0;h=0;while(1){l=c[b+(k*24|0)>>2]|0;if(((l|0)!=-1?(m=c[b+(k*24|0)+4>>2]|0,(m|0)!=-1):0)?((c[e+(m<<2)>>2]|c[e+(l<<2)>>2])&32768|0)!=0:0){c[j+(k<<3)>>2]=l;c[j+(k<<3)+4>>2]=m;n=h+1|0}else n=h;k=k+1|0;if((k|0)==(d|0)){o=n;break}else h=n}}else o=0;c[a+8>>2]=o;
c[g>>2]=29;Ul(j,j+(o<<3)|0,g);i=f;return}function Lk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;if(!(c[b+8>>2]&32768)){i=e;return}f=c[(c[b+400>>2]|0)+102952>>2]|0;if(!f){i=e;return}g=c[b+220>>2]|0;h=c[b+216>>2]|0;j=h+(g*24|0)|0;k=d+8|0;if((g|0)>0){g=d+4|0;l=h;while(1){h=c[l>>2]|0;m=c[l+4>>2]|0;n=c[k>>2]|0;do if(!n)o=24;else{p=c[d>>2]|0;q=p+(n<<3)|0;r=p;s=q-r>>3;t=(s|0)==0;a:do if(t)u=p;else{v=p;w=s;while(1){x=
w;while(1){y=(x|0)/2|0;if((c[v+(y<<3)>>2]|0)<(h|0)?(c[v+(y<<3)+4>>2]|0)<(m|0):0)break;if((x+1|0)>>>0<3){u=v;break a}else x=y}z=v+(y+1<<3)|0;A=x+-1|0;if((A|0)==(y|0)){u=z;break}else{v=z;w=A-y|0}}}while(0);if(!((u|0)==(q|0)|(u|0)==0)?(w=(u-r|0)>>>3,v=c[g>>2]|0,(a[v+w>>0]|0)!=0):0){B=v;C=w}else{b:do if(t)D=p;else{w=p;v=s;while(1){A=v;while(1){E=(A|0)/2|0;if((c[w+(E<<3)>>2]|0)<(m|0)?(c[w+(E<<3)+4>>2]|0)<(h|0):0)break;if((A+1|0)>>>0<3){D=w;break b}else A=E}x=w+(E+1<<3)|0;z=A+-1|0;if((z|0)==(E|0)){D=x;
break}else{w=x;v=z-E|0}}}while(0);if((D|0)==(q|0)|(D|0)==0){o=24;break}s=(D-r|0)>>>3;p=c[g>>2]|0;if(!(a[p+s>>0]|0)){o=24;break}else{B=p;C=s}}a[B+C>>0]=0}while(0);if((o|0)==24){o=0;rb[c[(c[f>>2]|0)+24>>2]&7](f,b,l)}l=l+24|0;if(l>>>0>=j>>>0){F=d;G=g;break}}}else{F=d;G=d+4|0}d=c[k>>2]|0;k=c[F>>2]|0;F=c[G>>2]|0;if((d|0)<=0){i=e;return}G=0;do{if(a[F+G>>0]|0)yb[c[(c[f>>2]|0)+28>>2]&31](f,b,c[k+(G<<3)>>2]|0,c[k+(G<<3)+4>>2]|0);G=G+1|0}while((G|0)!=(d|0));i=e;return}function Mk(a,b){a=a|0;b=b|0;var d=0,e=
0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;e=a+156|0;if((c[e>>2]|0)<1){i=d;return}f=(c[a+176>>2]|0)+(b<<2)|0;g=(c[a+160>>2]|0)+(b<<2)|0;h=(c[a+168>>2]|0)+(b<<2)|0;j=(c[h>>2]|0)+1|0;c[h>>2]=j;if((j|0)==2?(j=c[f>>2]|0,c[f>>2]=j+1,(j|0)>=(c[e>>2]|0)):0){e=a+184|0;j=a+188|0;f=c[j>>2]|0;h=a+192|0;k=c[h>>2]|0;if((f|0)>=(k|0)?(l=(k|0)==0?256:k<<1,(k|0)<(l|0)):0){k=a+196|0;m=um(c[k>>2]|0,l<<2)|0;n=c[e>>2]|0;if(n){Dn(m|0,n|0,c[j>>2]<<2|0)|0;vm(c[k>>2]|0,c[e>>2]|0,c[h>>2]<<2)}c[h>>2]=l;c[e>>2]=m;o=c[j>>2]|0}else o=
f;c[j>>2]=o+1;c[(c[e>>2]|0)+(o<<2)>>2]=b}c[g>>2]=c[a+4>>2];i=d;return}function Nk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;i=i+16|0;g=f;h=c[a>>2]|0;if(h){Qm(c[a+12>>2]|0,h);c[a>>2]=0;c[a+8>>2]=0}if(!d)j=c[a+8>>2]|0;else{h=Om(c[a+12>>2]|0,d*9|0)|0;c[a>>2]=h;k=h+(d<<3)|0;c[a+4>>2]=k;An(k|0,1,d|0)|0;c[a+8>>2]=d;j=d}if(!j){i=f;return}j=c[a>>2]|0;if((d|0)>0){k=0;h=0;while(1){l=c[b+(k*28|0)>>2]|0;if((l|0)!=-1?(c[e+(l<<2)>>2]&16384|0)!=0:0){c[j+(k<<3)>>2]=c[b+(k*28|0)+8>>
2];c[j+(k<<3)+4>>2]=l;m=h+1|0}else m=h;k=k+1|0;if((k|0)==(d|0)){n=m;break}else h=m}}else n=0;c[a+8>>2]=n;c[g>>2]=30;Wl(j,j+(n<<3)|0,g);i=f;return}function Ok(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;if(!(c[b+8>>2]&16384)){i=e;return}f=c[(c[b+400>>2]|0)+102952>>2]|0;if(!f){i=e;return}g=b+232|0;h=b+236|0;if(!(c[h>>2]|0)){j=d;k=d+8|0;l=d+4|0}else{m=d+8|0;n=d+4|0;o=c[g>>2]|0;while(1){p=c[o+8>>2]|0;q=c[o>>2]|0;r=c[m>>2]|0;
if(r){s=c[d>>2]|0;t=s+(r<<3)|0;r=s;u=t-r>>3;a:do if(!u)v=s;else{w=s;x=u;while(1){y=x;while(1){z=(y|0)/2|0;if((c[w+(z<<3)>>2]|0)>>>0<p>>>0?(c[w+(z<<3)+4>>2]|0)<(q|0):0)break;if((y+1|0)>>>0<3){v=w;break a}else y=z}A=w+(z+1<<3)|0;B=y+-1|0;if((B|0)==(z|0)){v=A;break}else{w=A;x=B-z|0}}}while(0);if(!((v|0)==(t|0)|(v|0)==0)?(q=(c[n>>2]|0)+((v-r|0)>>>3)|0,(a[q>>0]|0)!=0):0)a[q>>0]=0;else C=16}else C=16;if((C|0)==16){C=0;rb[c[(c[f>>2]|0)+16>>2]&7](f,b,o)}o=o+28|0;if((o|0)==((c[g>>2]|0)+((c[h>>2]|0)*28|0)|
0)){j=d;k=m;l=n;break}}}n=c[j>>2]|0;j=c[l>>2]|0;l=c[k>>2]|0;if((l|0)<=0){i=e;return}k=0;do{if(a[j+k>>0]|0)yb[c[(c[f>>2]|0)+20>>2]&31](f,c[n+(k<<3)>>2]|0,b,c[n+(k<<3)+4>>2]|0);k=k+1|0}while((k|0)!=(l|0));i=e;return}function Pk(b){b=b|0;var d=0,e=0,f=0,h=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;d=i;i=i+48|0;e=d+32|0;f=d+16|0;h=d;j=b+400|0;k=c[j>>2]|0;c[e>>2]=0;c[e+4>>2]=0;l=e+8|0;c[l>>2]=0;m=e+12|0;c[m>>2]=k+76;n=b+8|0;if((c[n>>2]&16384|0)!=
0?(c[k+102952>>2]|0)!=0:0)Nk(e,c[b+232>>2]|0,c[b+236>>2]|0,c[b+88>>2]|0);if((c[b+156>>2]|0)>0?(k=c[b+44>>2]|0,(k|0)>0):0){o=c[b+168>>2]|0;p=b+4|0;q=c[b+160>>2]|0;r=b+176|0;s=0;do{c[o+(s<<2)>>2]=0;if((c[p>>2]|0)>((c[q+(s<<2)>>2]|0)+1|0))c[(c[r>>2]|0)+(s<<2)>>2]=0;s=s+1|0}while((s|0)!=(k|0))}c[b+236>>2]=0;c[b+188>>2]=0;if(!(c[n>>2]&65536))t=0;else t=c[(c[j>>2]|0)+102948>>2]|0;c[f+4>>2]=b;c[f>>2]=7056;c[f+8>>2]=t;t=c[b+44>>2]|0;g[h>>2]=3.4028234663852886E38;n=h+4|0;g[n>>2]=3.4028234663852886E38;k=h+
8|0;g[k>>2]=-3.4028234663852886E38;s=h+12|0;g[s>>2]=-3.4028234663852886E38;if((t|0)>0){r=c[b+96>>2]|0;u=3.4028234663852886E38;v=3.4028234663852886E38;w=-3.4028234663852886E38;x=-3.4028234663852886E38;q=0;while(1){p=r+(q<<3)|0;y=+g[p>>2];z=+g[p+4>>2];A=u<y?u:y;B=v<z?v:z;C=+A;D=+B;p=h;g[p>>2]=C;g[p+4>>2]=D;D=w>y?w:y;y=x>z?x:z;z=+D;C=+y;p=k;g[p>>2]=z;g[p+4>>2]=C;q=q+1|0;if((q|0)==(t|0)){E=y;F=A;G=B;H=D;break}else{u=A;v=B;w=D;x=y}}}else{E=-3.4028234663852886E38;F=3.4028234663852886E38;G=3.4028234663852886E38;
H=-3.4028234663852886E38}x=+g[b+32>>2];g[h>>2]=F-x;g[n>>2]=G-x;g[k>>2]=H+x;g[s>>2]=E+x;yj(c[j>>2]|0,f,h);if(a[b+316>>0]|0)Qk(b);Ok(b,e);b=c[e>>2]|0;if(!b){i=d;return}Qm(c[m>>2]|0,b);c[e>>2]=0;c[l>>2]=0;i=d;return}function Qk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=i;i=i+32|0;d=b+20|0;e=b;f=b+16|0;g=a+232|0;h=c[g>>2]|0;j=a+236|0;k=h+((c[j>>2]|0)*28|0)|0;c[d>>2]=31;Xl(h,k,d);c[f>>2]=0;d=c[g>>2]|0;g=c[j>>2]|0;k=d+(g*28|0)|0;c[e>>2]=a;c[e+4>>2]=-1;c[e+8>>2]=0;c[e+12>>2]=
f;a:do if(!g)l=d;else{a=d;do{if(Yl(e,a)|0){l=a;break a}a=a+28|0}while((a|0)!=(k|0));m=c[j>>2]|0;n=c[f>>2]|0;o=m-n|0;c[j>>2]=o;i=b;return}while(0);if((l|0)==(k|0)){m=c[j>>2]|0;n=c[f>>2]|0;o=m-n|0;c[j>>2]=o;i=b;return}else{p=l;q=l}b:while(1){l=q;do{l=l+28|0;if((l|0)==(k|0))break b}while(Yl(e,l)|0);c[p+0>>2]=c[l+0>>2];c[p+4>>2]=c[l+4>>2];c[p+8>>2]=c[l+8>>2];c[p+12>>2]=c[l+12>>2];c[p+16>>2]=c[l+16>>2];c[p+20>>2]=c[l+20>>2];c[p+24>>2]=c[l+24>>2];p=p+28|0;q=l}m=c[j>>2]|0;n=c[f>>2]|0;o=m-n|0;c[j>>2]=o;i=
b;return}function Rk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=i;e=c[a>>2]|0;f=c[b>>2]|0;if((e|0)==(f|0)){h=+g[a+12>>2]>+g[b+12>>2];i=d;return h|0}else{h=(e|0)<(f|0);i=d;return h|0}return 0}function Sk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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;d=i;i=i+64|0;e=d;f=d+16|0;g[e>>2]=3.4028234663852886E38;g[e+4>>2]=3.4028234663852886E38;h=e+8|0;g[h>>2]=-3.4028234663852886E38;g[e+12>>2]=-3.4028234663852886E38;j=c[a+44>>2]|0;if((j|0)>0){k=c[a+104>>
2]|0;l=c[a+96>>2]|0;m=+g[b>>2];n=3.4028234663852886E38;o=3.4028234663852886E38;p=-3.4028234663852886E38;q=-3.4028234663852886E38;r=0;do{s=k+(r<<3)|0;t=+g[s>>2];u=+g[s+4>>2];s=l+(r<<3)|0;v=+g[s>>2];w=+g[s+4>>2];x=v+t*m;t=u*m+w;u=v<x?v:x;y=w<t?w:t;n=n<u?n:u;o=o<y?o:y;y=+n;u=+o;s=e;g[s>>2]=y;g[s+4>>2]=u;u=v>x?v:x;x=w>t?w:t;p=p>u?p:u;q=q>x?q:x;x=+p;u=+q;s=h;g[s>>2]=x;g[s+4>>2]=u;r=r+1|0}while((r|0)<(j|0))}j=c[a+400>>2]|0;if(!(c[a+8>>2]&65536))z=0;else z=c[j+102948>>2]|0;c[f+4>>2]=a;c[f>>2]=6872;a=f+8|
0;c[a+0>>2]=c[b+0>>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];c[f+36>>2]=z;yj(j,f,e);i=d;return}function zb(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function Ab(){return i|0}function Bb(a){a=a|0;i=a}function Cb(a,b){a=a|0;b=b|0;if(!p){p=a;q=b}}function Db(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function Eb(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>
0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function Fb(a){a=a|0;E=a}function Gb(){return E|0}function Hb(a){a=a|0;return+ +(c[a+60>>2]|0)}function Ib(d,e,f,j,k,l,m,n,o,p,q){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=p|0;q=+q;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;r=i;i=i+1104|0;s=r;t=r+1072|0;u=r+1032|0;v=r+8|0;h[s>>3]=l;c[t>>2]=0;g[t+16>>2]=e;g[t+8>>2]=f;a[t+20>>0]=j!=0&1;g[t+12>>2]=k;c[t+4>>2]=s;b[t+22>>1]=~~m;b[t+26>>1]=
~~n;b[t+24>>1]=~~o;c[u>>2]=760;c[u+4>>2]=3;g[u+8>>2]=.009999999776482582;c[u+12>>2]=0;c[u+16>>2]=0;a[u+36>>0]=0;a[u+37>>0]=0;s=~~(q*.5);if(q>0){w=0;x=0}else{Qe(u,v,s);c[t>>2]=u;y=Hj(d,t)|0;Pe(u);i=r;return y|0}while(1){o=+ +g[p+(w<<2)>>2];n=+ +g[p+((w|1)<<2)>>2];z=v+(x<<3)|0;g[z>>2]=o;g[z+4>>2]=n;w=w+2|0;if(!(+(w|0)<q))break;else x=x+1|0}Qe(u,v,s);c[t>>2]=u;y=Hj(d,t)|0;Pe(u);i=r;return y|0}function Jb(a){a=a|0;Ha(a|0)|0;_m()}function Kb(d,e,f,j,k,l,m,n,o,p,q,r){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;
n=+n;o=+o;p=+p;q=+q;r=+r;var s=0,t=0,u=0,v=0;s=i;i=i+64|0;t=s;u=s+28|0;v=s+8|0;h[t>>3]=l;g[u+16>>2]=e;g[u+8>>2]=f;a[u+20>>0]=j!=0&1;g[u+12>>2]=k;c[u+4>>2]=t;b[u+22>>1]=~~m;b[u+26>>1]=~~n;b[u+24>>1]=~~o;c[v>>2]=680;t=v+4|0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;g[v+12>>2]=p;g[v+16>>2]=q;g[v+8>>2]=r;c[u>>2]=v;v=Hj(d,u)|0;i=s;return v|0}function Lb(b,d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B){b=b|0;d=+d;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;x=+x;y=+y;z=+z;A=+A;
B=+B;var C=0,D=0,E=0,F=0,G=0,H=0;C=i;i=i+112|0;D=C;E=C+28|0;F=C+8|0;h[D>>3]=y;G=E+40|0;c[G+0>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+12>>2]=0;c[G+16>>2]=0;c[G+20>>2]=0;c[G+24>>2]=0;g[E+16>>2]=d;g[E+28>>2]=e;a[E+32>>0]=~~f;a[E+33>>0]=~~j;a[E+34>>0]=~~k;a[E+35>>0]=~~l;c[E>>2]=~~m>>>0;c[E+72>>2]=0;c[E+4>>2]=~~o>>>0;g[E+64>>2]=p;p=+q;q=+r;H=E+20|0;g[H>>2]=p;g[H+4>>2]=q;q=+s;s=+t;H=E+8|0;g[H>>2]=q;g[H+4>>2]=s;c[E+60>>2]=0;c[E+56>>2]=~~v;c[E+48>>2]=0;c[E+44>>2]=0;g[E+36>>2]=w;g[E+52>>2]=x;c[E+68>>2]=D;c[F>>2]=
680;c[F+4>>2]=0;x=+z;z=+A;D=F+12|0;g[D>>2]=x;g[D+4>>2]=z;g[F+8>>2]=B;c[G>>2]=F;F=Ak(b,E)|0;i=C;return F|0}function Mb(a,b,d,e,f,h,j,k){a=a|0;b=+b;d=+d;e=+e;f=+f;h=+h;j=+j;k=+k;var l=0,m=0,n=0,o=0;l=i;i=i+48|0;m=l+16|0;n=l;c[m>>2]=680;o=m+4|0;c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;g[m+12>>2]=b;g[m+16>>2]=d;g[m+8>>2]=e;g[n>>2]=f;g[n+4>>2]=h;g[n+8>>2]=j;g[n+12>>2]=k;k=+(xk(a,m,n,0)|0);i=l;return+k}function Nb(d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;
r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;x=+x;y=+y;var z=0,A=0,B=0,C=0;z=i;i=i+96|0;A=z;B=z+56|0;C=z+8|0;h[A>>3]=l;g[B+16>>2]=e;g[B+8>>2]=f;a[B+20>>0]=j!=0&1;g[B+12>>2]=k;c[B+4>>2]=A;b[B+22>>1]=~~m;b[B+26>>1]=~~n;b[B+24>>1]=~~o;c[C>>2]=488;c[C+4>>2]=1;g[C+8>>2]=.009999999776482582;A=C+28|0;c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;c[A+12>>2]=0;b[A+16>>1]=0;o=+r;r=+s;A=C+28|0;g[A>>2]=o;g[A+4>>2]=r;r=+t;t=+u;A=C+12|0;g[A>>2]=r;g[A+4>>2]=t;t=+v;v=+w;A=C+20|0;g[A>>2]=t;g[A+4>>2]=v;v=+x;x=+y;A=C+36|0;g[A>>2]=v;g[A+4>>
2]=x;a[C+44>>0]=p!=0&1;a[C+45>>0]=q!=0&1;c[B>>2]=C;C=Hj(d,B)|0;i=z;return C|0}function Ob(d,e,f,j,k,l,m,n,o,p,q,r,s,t,u){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;var v=0,w=0,x=0,y=0,z=0;v=i;i=i+224|0;w=v;x=v+184|0;y=v+160|0;z=v+8|0;h[w>>3]=l;g[x+16>>2]=e;g[x+8>>2]=f;a[x+20>>0]=j!=0&1;g[x+12>>2]=k;c[x+4>>2]=w;b[x+22>>1]=~~m;b[x+26>>1]=~~n;b[x+24>>1]=~~o;g[y>>2]=p;g[y+4>>2]=q;g[y+8>>2]=r;g[y+12>>2]=s;g[y+16>>2]=t;g[y+20>>2]=u;c[z>>2]=592;c[z+4>>2]=2;g[z+8>>2]=.009999999776482582;
c[z+148>>2]=0;g[z+12>>2]=0;g[z+16>>2]=0;ze(z,y,3);c[x>>2]=z;z=Hj(d,x)|0;i=v;return z|0}function Pb(d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;var x=0,y=0,z=0,A=0,B=0;x=i;i=i+224|0;y=x;z=x+192|0;A=x+160|0;B=x+8|0;h[y>>3]=l;g[z+16>>2]=e;g[z+8>>2]=f;a[z+20>>0]=j!=0&1;g[z+12>>2]=k;c[z+4>>2]=y;b[z+22>>1]=~~m;b[z+26>>1]=~~n;b[z+24>>1]=~~o;g[A>>2]=p;g[A+4>>2]=q;g[A+8>>2]=r;g[A+12>>2]=s;g[A+16>>2]=t;g[A+20>>2]=u;g[A+24>>2]=v;g[A+
28>>2]=w;c[B>>2]=592;c[B+4>>2]=2;g[B+8>>2]=.009999999776482582;c[B+148>>2]=0;g[B+12>>2]=0;g[B+16>>2]=0;ze(B,A,4);c[z>>2]=B;B=Hj(d,z)|0;i=x;return B|0}function Qb(d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;x=+x;y=+y;var z=0,A=0,B=0,C=0,D=0;z=i;i=i+240|0;A=z;B=z+200|0;C=z+160|0;D=z+8|0;h[A>>3]=l;g[B+16>>2]=e;g[B+8>>2]=f;a[B+20>>0]=j!=0&1;g[B+12>>2]=k;c[B+4>>2]=A;b[B+22>>1]=~~m;b[B+26>>1]=~~n;b[B+24>>1]=~~o;g[C>>2]=p;g[C+
4>>2]=q;g[C+8>>2]=r;g[C+12>>2]=s;g[C+16>>2]=t;g[C+20>>2]=u;g[C+24>>2]=v;g[C+28>>2]=w;g[C+32>>2]=x;g[C+36>>2]=y;c[D>>2]=592;c[D+4>>2]=2;g[D+8>>2]=.009999999776482582;c[D+148>>2]=0;g[D+12>>2]=0;g[D+16>>2]=0;ze(D,C,5);c[B>>2]=D;D=Hj(d,B)|0;i=z;return D|0}function Rb(d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;x=+x;y=+y;z=+z;A=+A;var B=0,C=0,D=0,E=0,F=0;B=i;i=i+240|0;C=B;D=B+208|0;E=B+160|0;F=B+8|0;h[C>>3]=l;g[D+16>>
2]=e;g[D+8>>2]=f;a[D+20>>0]=j!=0&1;g[D+12>>2]=k;c[D+4>>2]=C;b[D+22>>1]=~~m;b[D+26>>1]=~~n;b[D+24>>1]=~~o;g[E>>2]=p;g[E+4>>2]=q;g[E+8>>2]=r;g[E+12>>2]=s;g[E+16>>2]=t;g[E+20>>2]=u;g[E+24>>2]=v;g[E+28>>2]=w;g[E+32>>2]=x;g[E+36>>2]=y;g[E+40>>2]=z;g[E+44>>2]=A;c[F>>2]=592;c[F+4>>2]=2;g[F+8>>2]=.009999999776482582;c[F+148>>2]=0;g[F+12>>2]=0;g[F+16>>2]=0;ze(F,E,6);c[D>>2]=F;F=Hj(d,D)|0;i=B;return F|0}function Sb(d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;
p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;x=+x;y=+y;z=+z;A=+A;B=+B;C=+C;var D=0,E=0,F=0,G=0,H=0;D=i;i=i+256|0;E=D;F=D+216|0;G=D+160|0;H=D+8|0;h[E>>3]=l;g[F+16>>2]=e;g[F+8>>2]=f;a[F+20>>0]=j!=0&1;g[F+12>>2]=k;c[F+4>>2]=E;b[F+22>>1]=~~m;b[F+26>>1]=~~n;b[F+24>>1]=~~o;g[G>>2]=p;g[G+4>>2]=q;g[G+8>>2]=r;g[G+12>>2]=s;g[G+16>>2]=t;g[G+20>>2]=u;g[G+24>>2]=v;g[G+28>>2]=w;g[G+32>>2]=x;g[G+36>>2]=y;g[G+40>>2]=z;g[G+44>>2]=A;g[G+48>>2]=B;g[G+52>>2]=C;c[H>>2]=592;c[H+4>>2]=2;g[H+8>>2]=.009999999776482582;c[H+148>>
2]=0;g[H+12>>2]=0;g[H+16>>2]=0;ze(H,G,7);c[F>>2]=H;H=Hj(d,F)|0;i=D;return H|0}function Tb(d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E){d=d|0;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;x=+x;y=+y;z=+z;A=+A;B=+B;C=+C;D=+D;E=+E;var F=0,G=0,H=0,I=0,J=0;F=i;i=i+256|0;G=F;H=F+224|0;I=F+160|0;J=F+8|0;h[G>>3]=l;g[H+16>>2]=e;g[H+8>>2]=f;a[H+20>>0]=j!=0&1;g[H+12>>2]=k;c[H+4>>2]=G;b[H+22>>1]=~~m;b[H+26>>1]=~~n;b[H+24>>1]=~~o;g[I>>2]=p;g[I+4>>2]=q;g[I+8>>2]=r;g[I+12>>
2]=s;g[I+16>>2]=t;g[I+20>>2]=u;g[I+24>>2]=v;g[I+28>>2]=w;g[I+32>>2]=x;g[I+36>>2]=y;g[I+40>>2]=z;g[I+44>>2]=A;g[I+48>>2]=B;g[I+52>>2]=C;g[I+56>>2]=D;g[I+60>>2]=E;c[J>>2]=592;c[J+4>>2]=2;g[J+8>>2]=.009999999776482582;c[J+148>>2]=0;g[J+12>>2]=0;g[J+16>>2]=0;ze(J,I,8);c[H>>2]=J;J=Hj(d,H)|0;i=F;return J|0}function Ub(b,d,e,f,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G){b=b|0;d=+d;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;w=+w;x=+x;y=+y;z=+z;A=+A;B=+B;C=+C;D=+D;E=+E;
F=+F;G=+G;var H=0,I=0,J=0,K=0,L=0,M=0,N=0;H=i;i=i+272|0;I=H;J=H+192|0;K=H+160|0;L=H+8|0;h[I>>3]=y;M=J+40|0;c[M+0>>2]=0;c[M+4>>2]=0;c[M+8>>2]=0;c[M+12>>2]=0;c[M+16>>2]=0;c[M+20>>2]=0;c[M+24>>2]=0;g[J+16>>2]=d;g[J+28>>2]=e;a[J+32>>0]=~~f;a[J+33>>0]=~~j;a[J+34>>0]=~~k;a[J+35>>0]=~~l;c[J>>2]=~~m>>>0;c[J+72>>2]=0;c[J+4>>2]=~~o>>>0;g[J+64>>2]=p;p=+q;q=+r;N=J+20|0;g[N>>2]=p;g[N+4>>2]=q;q=+s;s=+t;N=J+8|0;g[N>>2]=q;g[N+4>>2]=s;c[J+60>>2]=0;c[J+56>>2]=~~v;c[J+48>>2]=0;c[J+44>>2]=0;g[J+36>>2]=w;g[J+52>>2]=x;
c[J+68>>2]=I;g[K>>2]=z;g[K+4>>2]=A;g[K+8>>2]=B;g[K+12>>2]=C;g[K+16>>2]=D;g[K+20>>2]=E;g[K+24>>2]=F;g[K+28>>2]=G;c[L>>2]=592;c[L+4>>2]=2;g[L+8>>2]=.009999999776482582;c[L+148>>2]=0;g[L+12>>2]=0;g[L+16>>2]=0;ze(L,K,4);c[M>>2]=L;L=Ak(b,J)|0;i=H;return L|0}function Vb(a,b,d,e,f,h,j,k,l,m,n,o,p){a=a|0;b=+b;d=+d;e=+e;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;var q=0,r=0,s=0,t=0;q=i;i=i+208|0;r=q+168|0;s=q+16|0;t=q;g[r>>2]=b;g[r+4>>2]=d;g[r+8>>2]=e;g[r+12>>2]=f;g[r+16>>2]=h;g[r+20>>2]=j;g[r+24>>2]=k;
g[r+28>>2]=l;c[s>>2]=592;c[s+4>>2]=2;g[s+8>>2]=.009999999776482582;c[s+148>>2]=0;g[s+12>>2]=0;g[s+16>>2]=0;ze(s,r,4);g[t>>2]=m;g[t+4>>2]=n;g[t+8>>2]=o;g[t+12>>2]=p;p=+(xk(a,s,t,0)|0);i=q;return+p}function Wb(a,d,e){a=a|0;d=+d;e=+e;var f=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;h=d;if((c[a>>2]|0)!=2){i=f;return}j=a+4|0;k=b[j>>1]|0;if((k&2)==0&e!=0?(l=k&65535,(l&2|0)==0):0){m=(l|2)&65535;b[j>>1]=m;g[a+160>>2]=0;n=m}else n=k;if(!(n&2)){i=f;return}n=a+88|0;g[n>>2]=+g[n>>2]+h*+g[a+144>>2];i=f;return}function Xb(a,
d,e,f,h,j){a=a|0;d=+d;e=+e;f=+f;h=+h;j=+j;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=i;l=d;d=e;e=f;f=h;if((c[a>>2]|0)!=2){i=k;return}m=a+4|0;n=b[m>>1]|0;if((n&2)==0&j!=0?(o=n&65535,(o&2|0)==0):0){p=(o|2)&65535;b[m>>1]=p;g[a+160>>2]=0;q=p}else q=n;if(!(q&2)){i=k;return}q=a+92|0;g[q>>2]=l+ +g[q>>2];q=a+96|0;g[q>>2]=d+ +g[q>>2];q=a+100|0;g[q>>2]=+g[q>>2]+(d*(e-+g[a+60>>2])-l*(f-+g[a+64>>2]));i=k;return}function Yb(a,d,e,f,h,j){a=a|0;d=+d;e=+e;f=+f;h=+h;j=+j;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=i;l=d;d=e;e=f;f=h;
if((c[a>>2]|0)!=2){i=k;return}m=a+4|0;n=b[m>>1]|0;if((n&2)==0&j!=0?(o=n&65535,(o&2|0)==0):0){p=(o|2)&65535;b[m>>1]=p;g[a+160>>2]=0;q=p}else q=n;if(!(q&2)){i=k;return}q=a+92|0;g[q>>2]=l+ +g[q>>2];q=a+96|0;g[q>>2]=d+ +g[q>>2];q=a+100|0;g[q>>2]=+g[q>>2]+(d*(e-+g[a+60>>2])-l*(f-+g[a+64>>2]));i=k;return}function Zb(a,d,e,f){a=a|0;d=+d;e=+e;f=+f;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;j=d;d=e;if((c[a>>2]|0)!=2){i=h;return}k=a+4|0;l=b[k>>1]|0;if((l&2)==0&f!=0?(m=l&65535,(m&2|0)==0):0){n=(m|2)&65535;b[k>>1]=
n;g[a+160>>2]=0;o=n}else o=l;if(!(o&2)){i=h;return}o=a+92|0;g[o>>2]=j+ +g[o>>2];o=a+96|0;g[o>>2]=d+ +g[o>>2];i=h;return}function _b(a,d,e){a=a|0;d=+d;e=+e;var f=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;h=d;if((c[a>>2]|0)!=2){i=f;return}j=a+4|0;k=b[j>>1]|0;if((k&2)==0&e!=0?(l=k&65535,(l&2|0)==0):0){m=(l|2)&65535;b[j>>1]=m;g[a+160>>2]=0;n=m}else n=k;if(!(n&2)){i=f;return}n=a+100|0;g[n>>2]=h+ +g[n>>2];i=f;return}function $b(a,b){a=a|0;b=b|0;var c=0;c=i;Ij(a,b);i=c;return}function ac(a){a=a|0;return+ +g[a+72>>2]}
function bc(a){a=a|0;return+ +g[a+88>>2]}function cc(a){a=a|0;var b=0,c=0;b=+g[a+44>>2];c=+g[a+48>>2];return+(+g[a+140>>2]+ +g[a+132>>2]*(b*b+c*c))}function dc(a,b){a=a|0;b=b|0;var c=0;c=+g[a+84>>2];g[b>>2]=+g[a+80>>2];g[b+4>>2]=c;return}function ec(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;var e=0,f=0;e=b-+g[a+12>>2];b=c-+g[a+16>>2];c=+g[a+24>>2];f=+g[a+20>>2];g[d>>2]=e*c+b*f;g[d+4>>2]=c*b-e*f;return}function fc(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;var e=0,f=0;e=b-+g[a+12>>2];b=c-+g[a+16>>2];c=+g[a+24>>2];f=+g[a+
20>>2];g[d>>2]=e*c+b*f;g[d+4>>2]=c*b-e*f;return}function gc(a){a=a|0;return+ +g[a+132>>2]}function hc(a,b){a=a|0;b=b|0;var c=0;c=+g[a+16>>2];g[b>>2]=+g[a+12>>2];g[b+4>>2]=c;return}function ic(a,b){a=a|0;b=b|0;g[b>>2]=+g[a+12>>2];g[b+4>>2]=+g[a+16>>2];g[b+8>>2]=+g[a+20>>2];g[b+12>>2]=+g[a+24>>2];return}function jc(a){a=a|0;return+ +((c[a>>2]|0)>>>0)}function kc(a,b){a=a|0;b=b|0;var c=0;c=+g[a+64>>2];g[b>>2]=+g[a+60>>2];g[b+4>>2]=c;return}function lc(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;var e=0,f=0,h=0;e=
b;b=c;c=+g[a+24>>2];f=+g[a+20>>2];h=b*c+e*f+ +g[a+16>>2];g[d>>2]=+g[a+12>>2]+(e*c-b*f);g[d+4>>2]=h;return}function mc(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;var e=0,f=0,h=0;e=b;b=c;c=+g[a+24>>2];f=+g[a+20>>2];h=b*c+e*f+ +g[a+16>>2];g[d>>2]=+g[a+12>>2]+(e*c-b*f);g[d+4>>2]=h;return}function nc(a,d){a=a|0;d=+d;var f=0,h=0,j=0,k=0;f=i;h=a+4|0;j=e[h>>1]|0;if(!(d!=0)){b[h>>1]=j&65533;g[a+160>>2]=0;k=a+80|0;c[k+0>>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;i=f;return}if(j&2){i=f;return}b[h>>
1]=j|2;g[a+160>>2]=0;i=f;return}function oc(a,b){a=a|0;b=+b;var c=0;c=i;Mj(a,b!=0);i=c;return}function pc(a,d){a=a|0;d=+d;var f=0,h=0,j=0,k=0;f=i;h=d;if(!(c[a>>2]|0)){i=f;return}if(h*h>0?(j=a+4|0,k=e[j>>1]|0,(k&2|0)==0):0){b[j>>1]=k|2;g[a+160>>2]=0}g[a+88>>2]=h;i=f;return}function qc(a,d,f){a=a|0;d=+d;f=+f;var h=0,j=0,k=0,l=0;h=i;j=d;d=f;f=+j;if(!(c[a>>2]|0)){i=h;return}if(j*j+d*d>0?(k=a+4|0,l=e[k>>1]|0,(l&2|0)==0):0){b[k>>1]=l|2;g[a+160>>2]=0}j=+d;l=a+80|0;g[l>>2]=f;g[l+4>>2]=j;i=h;return}function rc(a,
b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,h=0;f=i;i=i+16|0;h=f;g[h>>2]=b;g[h+4>>2]=c;g[h+8>>2]=d;g[h+12>>2]=e;Jj(a,h);i=f;return}function sc(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0,f=0;e=i;i=i+16|0;f=e;g[f>>2]=b;g[f+4>>2]=c;Lj(a,f,d);i=e;return}function tc(a,b){a=a|0;b=+b;var c=0;c=i;Ej(a,~~b>>>0);i=c;return}function uc(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0,h=0;e=i;i=i+16|0;f=e;g[f>>2]=b;g[f+4>>2]=d;h=c[a+12>>2]|0;d=+((qb[c[(c[h>>2]|0)+16>>2]&15](h,(c[a+8>>2]|0)+12|0,f)|0)&1);i=e;return+d}function vc(a){a=
a|0;return}function wc(a){a=a|0;return}function xc(a,b){a=+a;b=+b;var c=0,d=0,e=0;c=i;i=i+16|0;d=c;e=Tm(103048)|0;g[d>>2]=a;g[d+4>>2]=b;mj(e,d);i=c;return e|0}function yc(b,d,e,f,h,j,k,l,m,n,o,p,q,r,s,t,u){b=b|0;d=+d;e=+e;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=u|0;var v=0,w=0,x=0;v=i;i=i+64|0;w=v;x=w+4|0;c[x+0>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;c[x+16>>2]=0;c[x+20>>2]=0;a[w+40>>0]=d!=0&1;a[w+36>>0]=e!=0&1;g[w+12>>2]=f;g[w+24>>2]=h;g[w+32>>2]=j;a[w+37>>0]=k!=0&1;
a[w+39>>0]=l!=0&1;a[w+38>>0]=m!=0&1;g[w+48>>2]=n;g[w+28>>2]=o;g[w+16>>2]=p;g[w+20>>2]=q;g[x>>2]=r;g[w+8>>2]=s;c[w>>2]=~~t>>>0;c[w+44>>2]=u;u=qj(b,w)|0;i=v;return u|0}function zc(b,d,e,f,h,j,k,l,m,n,o,p,q,r,s,t,u,v){b=b|0;d=+d;e=+e;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;v=+v;var w=0,x=0,y=0;w=i;i=i+96|0;x=w;a[x>>0]=0;g[x+4>>2]=1;g[x+8>>2]=1;c[x+16>>2]=0;g[x+72>>2]=d;g[x+24>>2]=e;a[x+76>>0]=f!=0&1;g[x+56>>2]=h;g[x+28>>2]=j;g[x+80>>2]=k;g[x+52>>2]=l;g[x+20>>2]=m;g[x+12>>
2]=n;g[x+48>>2]=o;g[x+32>>2]=p;c[x+68>>2]=~~q;g[x+64>>2]=r;g[x+60>>2]=s;g[x+44>>2]=t;g[x+40>>2]=u;g[x+36>>2]=v;y=uj(b,x)|0;i=w;return y|0}function Ac(a){a=a|0;var b=0;b=i;if(a){nj(a);Vm(a)}i=b;return}function Bc(a,b){a=a|0;b=b|0;var c=0;c=i;rj(a,b);i=c;return}function Cc(a,b){a=a|0;b=b|0;var c=0;c=i;sj(a,b);i=c;return}function Dc(a,b){a=a|0;b=b|0;var c=0;c=i;oj(a,b);i=c;return}function Ec(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,h=0,j=0,k=0;f=i;i=i+16|0;h=f;j=+b;b=+c;k=h;g[k>>2]=j;g[k+4>>2]=b;
b=+d;d=+e;k=h+8|0;g[k>>2]=b;g[k+4>>2]=d;yj(a,16,h);i=f;return}function Fc(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,h=0,j=0;f=i;i=i+16|0;h=f+8|0;j=f;g[h>>2]=b;g[h+4>>2]=c;g[j>>2]=d;g[j+4>>2]=e;zj(a,24,h,j);i=f;return}function Gc(a){a=a|0;var b=0;b=i;pj(a,8);i=b;return}function Hc(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0;d=i;e=+b;b=+c;f=a+102980|0;g[f>>2]=e;g[f+4>>2]=b;i=d;return}function Ic(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0;e=i;xj(a,b,~~c,~~d,3);i=e;return}function Jc(a){a=a|0;return a+64|0}
function Kc(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[a+48>>2]|0;e=c[a+52>>2]|0;wf(32,a+64|0,(c[d+8>>2]|0)+12|0,+g[(c[d+12>>2]|0)+8>>2],(c[e+8>>2]|0)+12|0,+g[(c[e+12>>2]|0)+8>>2]);i=b;return 32}function Lc(b,d,e,f,h,j,k,l,m,n,o){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;var p=0,q=0,r=0;p=i;i=i+48|0;q=p;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q>>2]=3;r=q+20|0;c[r>>2]=0;c[r+4>>2]=0;c[q+8>>2]=d;c[q+12>>2]=e;a[q+16>>0]=f!=0&1;g[q+44>>2]=h;g[q+40>>2]=j;g[q+36>>2]=k;k=+l;l=+m;e=q+20|0;
g[e>>2]=k;g[e+4>>2]=l;l=+n;n=+o;e=q+28|0;g[e>>2]=l;g[e+4>>2]=n;e=tj(b,q)|0;i=p;return e|0}function Mc(b,d,e,f,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;var o=0,p=0,q=0,r=0,s=0;o=i;i=i+64|0;p=o+16|0;q=o+8|0;r=o;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p>>2]=3;s=p+20|0;c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;g[p+36>>2]=1;a[p+16>>0]=l!=0&1;g[p+44>>2]=m;g[p+40>>2]=n;g[q>>2]=f;g[q+4>>2]=h;g[r>>2]=j;g[r+4>>2]=k;hg(p,d,e,q,r);r=tj(b,p)|0;i=o;return r|0}function Nc(b,
d,e,f,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;var o=0,p=0,q=0;o=i;i=i+48|0;p=o;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p>>2]=9;q=p+20|0;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[p+8>>2]=d;c[p+12>>2]=e;a[p+16>>0]=f!=0&1;f=+h;h=+j;e=p+20|0;g[e>>2]=f;g[e+4>>2]=h;h=+k;k=+l;e=p+28|0;g[e>>2]=h;g[e+4>>2]=k;g[p+36>>2]=m;g[p+40>>2]=n;e=tj(b,p)|0;i=o;return e|0}function Oc(b,d,e,f,h,j,k,l){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;var m=0,n=0,o=0,
p=0;m=i;i=i+64|0;n=m+8|0;o=m;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;c[n>>2]=9;p=n+20|0;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;a[n+16>>0]=j!=0&1;g[n+36>>2]=k;g[n+40>>2]=l;g[o>>2]=f;g[o+4>>2]=h;sg(n,d,e,o);o=tj(b,n)|0;i=m;return o|0}function Pc(a){a=a|0;var b=0,c=0;b=i;c=+Wg(a);i=b;return+c}function Qc(b,d,e,f,h,j,k){b=b|0;d=d|0;e=e|0;f=+f;h=h|0;j=j|0;k=+k;var l=0,m=0;l=i;i=i+32|0;m=l;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m>>2]=6;c[m+8>>2]=d;c[m+12>>2]=
e;a[m+16>>0]=f!=0&1;c[m+20>>2]=h;c[m+24>>2]=j;g[m+28>>2]=k;j=tj(b,m)|0;i=l;return j|0}function Rc(a){a=a|0;return c[a+48>>2]|0}function Sc(a){a=a|0;return c[a+52>>2]|0}function Tc(a,b){a=a|0;b=+b;var c=0;c=i;dg(a,b);i=c;return}function Uc(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0;d=i;i=i+16|0;e=d;g[e>>2]=b;g[e+4>>2]=c;cg(a,e);i=d;return}function Vc(b,d,e,f,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;var o=0,p=0;o=i;i=i+48|0;p=o;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p>>
2]=11;c[p+8>>2]=d;c[p+12>>2]=e;a[p+16>>0]=f!=0&1;g[p+28>>2]=h;g[p+40>>2]=j;j=+k;k=+l;e=p+20|0;g[e>>2]=j;g[e+4>>2]=k;g[p+32>>2]=m;g[p+36>>2]=n;e=tj(b,p)|0;i=o;return e|0}function Wc(b,d,e,f,h,j,k){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;var l=0,m=0;l=i;i=i+48|0;m=l;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m>>2]=11;g[m+20>>2]=0;g[m+24>>2]=0;g[m+28>>2]=0;a[m+16>>0]=f!=0&1;g[m+40>>2]=h;g[m+32>>2]=j;g[m+36>>2]=k;Vf(m,d,e);e=tj(b,m)|0;i=l;return e|0}function Xc(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=
0;d=i;i=i+16|0;e=d;g[e>>2]=b;g[e+4>>2]=c;Jf(a,e);i=d;return}function Yc(b,d,e,f,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;var n=0,o=0;n=i;i=i+48|0;o=n;c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[o>>2]=5;c[o+8>>2]=d;c[o+12>>2]=e;a[o+16>>0]=f!=0&1;g[o+36>>2]=h;g[o+32>>2]=j;g[o+28>>2]=k;k=+l;l=+m;e=o+20|0;g[e>>2]=k;g[e+4>>2]=l;e=tj(b,o)|0;i=n;return e|0}function Zc(a,b){a=a|0;b=+b;var c=0;c=i;ih(a,b!=0);i=c;return}function _c(a,b){a=a|0;b=+b;var c=0;c=i;kh(a,b!=0);i=c;return}
function $c(a){a=a|0;var b=0,c=0;b=i;c=+gh(a);i=b;return+c}function ad(a){a=a|0;return+ +g[a+132>>2]}function bd(a,b){a=a|0;b=+b;var c=0,d=0;c=i;d=+mh(a,b);i=c;return+d}function cd(a){a=a|0;var b=0,c=0;b=i;c=+((hh(a)|0)&1);i=b;return+c}function dd(a){a=a|0;var b=0,c=0;b=i;c=+((jh(a)|0)&1);i=b;return+c}function ed(a,b){a=a|0;b=+b;var c=0;c=i;lh(a,b);i=c;return}function fd(b,d,e,f,h,j,k,l,m,n,o,p,q,r,s,t,u){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;t=+t;u=+u;var v=
0,w=0,x=0;v=i;i=i+80|0;w=v;c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;c[w+12>>2]=0;c[w>>2]=2;x=w+20|0;c[x>>2]=0;c[x+4>>2]=0;c[w+8>>2]=d;c[w+12>>2]=e;a[w+16>>0]=f!=0&1;a[w+48>>0]=h!=0&1;a[w+60>>0]=j!=0&1;j=+k;k=+l;e=w+20|0;g[e>>2]=j;g[e+4>>2]=k;k=+m;m=+n;e=w+28|0;g[e>>2]=k;g[e+4>>2]=m;m=+o;o=+p;e=w+36|0;g[e>>2]=m;g[e+4>>2]=o;g[w+52>>2]=q;g[w+64>>2]=r;g[w+68>>2]=s;g[w+44>>2]=t;g[w+56>>2]=u;e=tj(b,w)|0;i=v;return e|0}function gd(b,d,e,f,h,j,k,l,m,n,o,p,q,r){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=
+n;o=+o;p=+p;q=+q;r=+r;var s=0,t=0,u=0,v=0,w=0;s=i;i=i+96|0;t=s+16|0;u=s+8|0;v=s;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t>>2]=2;w=t+20|0;c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;c[w+12>>2]=0;g[t+36>>2]=1;g[t+40>>2]=0;g[t+44>>2]=0;a[t+16>>0]=l!=0&1;a[t+48>>0]=m!=0&1;a[t+60>>0]=n!=0&1;g[t+52>>2]=o;g[t+64>>2]=p;g[t+68>>2]=q;g[t+56>>2]=r;g[u>>2]=f;g[u+4>>2]=h;g[v>>2]=j;g[v+4>>2]=k;Zg(t,d,e,u,v);v=tj(b,t)|0;i=s;return v|0}function hd(b,d,e,f,h,j,k,l,m,n,o,p,q,r,s){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=
+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0;t=i;i=i+64|0;u=t;c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u>>2]=4;c[u+8>>2]=d;c[u+12>>2]=e;a[u+16>>0]=f!=0&1;f=+h;h=+j;e=u+20|0;g[e>>2]=f;g[e+4>>2]=h;h=+k;k=+l;e=u+28|0;g[e>>2]=h;g[e+4>>2]=k;g[u+52>>2]=m;g[u+56>>2]=n;n=+o;o=+p;e=u+36|0;g[e>>2]=n;g[e+4>>2]=o;o=+q;q=+r;e=u+44|0;g[e>>2]=o;g[e+4>>2]=q;g[u+60>>2]=s;e=tj(b,u)|0;i=t;return e|0}function id(b,d,e,f,h,j,k,l,m,n,o,p,q){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;
var r=0,s=0,t=0,u=0,v=0,w=0;r=i;i=i+96|0;s=r+32|0;t=r+24|0;u=r+16|0;v=r+8|0;w=r;c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s>>2]=4;g[s+20>>2]=-1;g[s+24>>2]=1;g[s+28>>2]=1;g[s+32>>2]=1;g[s+36>>2]=-1;g[s+40>>2]=0;g[s+44>>2]=1;g[s+48>>2]=0;g[s+52>>2]=0;g[s+56>>2]=0;g[s+60>>2]=1;a[s+16>>0]=q!=0&1;g[t>>2]=l;g[t+4>>2]=m;g[u>>2]=n;g[u+4>>2]=o;g[v>>2]=f;g[v+4>>2]=h;g[w>>2]=j;g[w+4>>2]=k;fi(s,d,e,t,u,v,w,p);w=tj(b,s)|0;i=r;return w|0}function jd(a,b){a=a|0;b=+b;var c=0;c=i;Sh(a,b!=0);i=c;return}function kd(a,
b){a=a|0;b=+b;var c=0;c=i;Ph(a,b!=0);i=c;return}function ld(a){a=a|0;var b=0,c=0;b=i;c=+Nh(a);i=b;return+c}function md(a){a=a|0;var b=0,c=0;b=i;c=+((Rh(a)|0)&1);i=b;return+c}function nd(a){a=a|0;var b=0,c=0;b=i;c=+((Oh(a)|0)&1);i=b;return+c}function od(b,d,e,f,h,j,k,l,m,n,o,p,q,r,s){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0,v=0;t=i;i=i+64|0;u=t;c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u+12>>2]=0;c[u>>2]=1;v=u+20|0;c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+
12>>2]=0;c[u+8>>2]=d;c[u+12>>2]=e;a[u+16>>0]=f!=0&1;a[u+40>>0]=h!=0&1;a[u+52>>0]=j!=0&1;j=+l;l=+m;e=u+20|0;g[e>>2]=j;g[e+4>>2]=l;l=+n;n=+o;e=u+28|0;g[e>>2]=l;g[e+4>>2]=n;g[u+44>>2]=k;g[u+60>>2]=p;g[u+56>>2]=q;g[u+36>>2]=r;g[u+48>>2]=s;e=tj(b,u)|0;i=t;return e|0}function pd(b,d,e,f,h,j,k,l,m,n,o,p){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;var q=0,r=0,s=0,t=0;q=i;i=i+80|0;r=q+8|0;s=q;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=0;c[r>>2]=1;t=r+20|0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+
8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;a[r+16>>0]=j!=0&1;a[r+40>>0]=k!=0&1;a[r+52>>0]=l!=0&1;g[r+44>>2]=m;g[r+60>>2]=n;g[r+56>>2]=o;g[r+48>>2]=p;g[s>>2]=f;g[s+4>>2]=h;Eh(r,d,e,s);s=tj(b,r)|0;i=q;return s|0}function qd(a,b){a=a|0;b=+b;var c=0;c=i;Qh(a,b);i=c;return}function rd(b,d,e,f,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;var n=0,o=0;n=i;i=i+48|0;o=n;c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[o>>2]=10;c[o+8>>2]=d;c[o+12>>2]=e;a[o+16>>0]=f!=0&1;f=+h;h=+j;e=o+20|0;g[e>>2]=f;g[e+
4>>2]=h;h=+k;k=+l;e=o+28|0;g[e>>2]=h;g[e+4>>2]=k;g[o+36>>2]=m;e=tj(b,o)|0;i=n;return e|0}function sd(b,d,e,f,h,j,k,l,m,n,o){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;var p=0,q=0,r=0;p=i;i=i+48|0;q=p;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q>>2]=8;r=q+20|0;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=0;c[q+8>>2]=d;c[q+12>>2]=e;a[q+16>>0]=f!=0&1;g[q+44>>2]=h;g[q+40>>2]=j;j=+k;k=+l;e=q+20|0;g[e>>2]=j;g[e+4>>2]=k;k=+m;m=+n;e=q+28|0;g[e>>2]=k;g[e+4>>2]=m;g[q+36>>2]=o;e=tj(b,
q)|0;i=p;return e|0}function td(b,d,e,f,h,j,k,l){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;var m=0,n=0,o=0,p=0;m=i;i=i+64|0;n=m+8|0;o=m;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;c[n>>2]=8;p=n+20|0;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;a[n+16>>0]=j!=0&1;g[n+44>>2]=k;g[n+40>>2]=l;g[o>>2]=f;g[o+4>>2]=h;Dg(n,d,e,o);o=tj(b,n)|0;i=m;return o|0}function ud(a,b){a=a|0;b=+b;var c=0;c=i;ci(a,b);i=c;return}function vd(a,b){a=a|0;b=+b;g[a+68>>2]=b;return}function wd(b,d,e,f,h,
j,k,l,m,n,o,p,q,r,s){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;s=+s;var t=0,u=0,v=0;t=i;i=i+64|0;u=t;c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u+12>>2]=0;c[u>>2]=7;v=u+20|0;c[v>>2]=0;c[v+4>>2]=0;c[u+8>>2]=d;c[u+12>>2]=e;a[u+16>>0]=f!=0&1;g[u+60>>2]=h;a[u+44>>0]=j!=0&1;g[u+56>>2]=k;k=+l;l=+m;e=u+20|0;g[e>>2]=k;g[e+4>>2]=l;l=+n;n=+o;e=u+28|0;g[e>>2]=l;g[e+4>>2]=n;n=+p;p=+q;e=u+36|0;g[e>>2]=n;g[e+4>>2]=p;g[u+48>>2]=r;g[u+52>>2]=s;e=tj(b,u)|0;i=t;return e|0}function xd(b,d,
e,f,h,j,k,l,m,n,o,p,q){b=b|0;d=d|0;e=e|0;f=+f;h=+h;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;var r=0,s=0,t=0,u=0,v=0;r=i;i=i+80|0;s=r+16|0;t=r+8|0;u=r;c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s>>2]=7;v=s+20|0;c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0;g[s+36>>2]=1;g[s+40>>2]=0;a[s+16>>0]=l!=0&1;g[s+60>>2]=m;a[s+44>>0]=n!=0&1;g[s+56>>2]=o;g[s+48>>2]=p;g[s+52>>2]=q;g[t>>2]=f;g[t+4>>2]=h;g[u>>2]=j;g[u+4>>2]=k;Vh(s,d,e,t,u);u=tj(b,s)|0;i=r;return u|0}function yd(a,b,c){a=a|0;b=+b;c=+c;var d=
0,e=0;d=i;i=i+16|0;e=d;g[e>>2]=b;g[e+4>>2]=c;jk(a,e);i=d;return}function zd(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0;d=i;i=i+16|0;e=d;g[e>>2]=b;g[e+4>>2]=c;kk(a,e);i=d;return}function Ad(a,b){a=a|0;b=+b;var c=0;c=i;lk(a,b!=0);i=c;return}function Bd(a){a=a|0;return+ +(c[a+4>>2]|0)}function Cd(a){a=a|0;return+ +((c[a+8>>2]|0)-(c[a+4>>2]|0)|0)}function Dd(b,d,e,f,j,k,l,m,n,o,p,q,r){b=b|0;d=+d;e=+e;f=+f;j=+j;k=+k;l=+l;m=+m;n=+n;o=+o;p=+p;q=+q;r=+r;var s=0,t=0,u=0,v=0;s=i;i=i+64|0;t=s+8|0;u=s;v=s+16|0;h[t>>
3]=l;h[u>>3]=p;a[v+20>>0]=~~d;a[v+21>>0]=~~f;a[v+22>>0]=~~e;a[v+23>>0]=~~j;c[v>>2]=~~k>>>0;c[v+32>>2]=t;g[v+24>>2]=m;m=+n;n=+o;t=v+4|0;g[t>>2]=m;g[t+4>>2]=n;c[v+28>>2]=u;n=+q;q=+r;u=v+12|0;g[u>>2]=n;g[u+4>>2]=q;q=+(rk(b,v)|0);i=s;return+q}function Ed(a){a=a|0;var b=0,c=0;b=i;c=pk(a)|0;i=b;return c|0}function Fd(a){a=a|0;return+ +(c[a+44>>2]|0)}function Gd(a,b){a=a|0;b=+b;var c=0,d=0;c=i;d=+el(a,~~b);i=c;return+d}function Hd(a){a=a|0;return c[a+96>>2]|0}function Id(a){a=a|0;return c[a+104>>2]|0}function Jd(a,
b){a=a|0;b=+b;g[a+340>>2]=b;return}function Kd(a,b){a=a|0;b=+b;var c=0;c=b;g[a+320>>2]=c;g[a+28>>2]=1/c;return}function Ld(a,b){a=a|0;b=+b;g[a+324>>2]=b;return}function Md(a,b){a=a|0;b=+b;c[a+332>>2]=~~b;return}function Nd(a,b,c){a=a|0;b=+b;c=+c;var d=0;d=i;tk(a,~~b,c);i=d;return}function Od(a,b){a=a|0;b=+b;var c=0;c=b*2;g[a+32>>2]=c;g[a+40>>2]=c*c;g[a+36>>2]=1/c;return}function Pd(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Qd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0;a=i;f=+Ma(b|0,+ +g[c>>
2],+ +g[c+4>>2],+ +g[d>>2],+ +g[d+4>>2],+e);i=a;return+f}function Rd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return 0}function Sd(a,b){a=a|0;b=b|0;return 1}function Td(a){a=a|0;return}function Ud(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Vd(a,b){a=a|0;b=b|0;var c=0;a=i;c=eb(b|0)|0;i=a;return c|0}function Wd(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function Xd(a,b){a=a|0;b=b|0;return 1}function Yd(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Zd(a,b){a=a|0;b=b|0;a=i;Ua(b|0);i=a;return}function _d(a,
b){a=a|0;b=b|0;a=i;db(b|0);i=a;return}function $d(a,b,c){a=a|0;b=b|0;c=c|0;return}function ae(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function be(a,b,c){a=a|0;b=b|0;c=c|0;return}function ce(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function de(a,b,c){a=a|0;b=b|0;c=c|0;a=i;hb(b|0,c|0);i=a;return}function ee(a,b,c){a=a|0;b=b|0;c=c|0;a=i;fb(b|0,c|0);i=a;return}function fe(){c[2]=280;c[4]=176;c[6]=72;return}function ge(d,e){d=d|0;e=e|0;var f=0,h=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,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=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;f=i;i=i+320|0;h=f;j=f+272|0;k=f+236|0;l=f+32|0;m=f+144|0;n=f+8|0;o=f+44|0;p=f+308|0;q=f+312|0;Am(h);c[104]=(c[104]|0)+1;c[d>>2]=0;r=+g[e+128>>2];s=d+4|0;g[s>>2]=r;t=e+28|0;u=j+0|0;v=e+56|0;w=u+36|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<
(w|0));u=k+0|0;v=e+92|0;w=u+36|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));v=j+24|0;x=+g[v>>2];y=+O(+(x/6.2831854820251465))*6.2831854820251465;z=x-y;g[v>>2]=z;v=j+28|0;x=+g[v>>2]-y;g[v>>2]=x;v=k+24|0;y=+g[v>>2];A=+O(+(y/6.2831854820251465))*6.2831854820251465;B=y-A;g[v>>2]=B;v=k+28|0;y=+g[v>>2]-A;g[v>>2]=y;A=+g[e+24>>2]+ +g[e+52>>2]+-.014999999664723873;C=A<.004999999888241291?.004999999888241291:A;b[l+4>>1]=0;c[m+0>>2]=c[e+0>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+
12>>2];c[m+16>>2]=c[e+16>>2];c[m+20>>2]=c[e+20>>2];c[m+24>>2]=c[e+24>>2];v=m+28|0;c[v+0>>2]=c[t+0>>2];c[v+4>>2]=c[t+4>>2];c[v+8>>2]=c[t+8>>2];c[v+12>>2]=c[t+12>>2];c[v+16>>2]=c[t+16>>2];c[v+20>>2]=c[t+20>>2];c[v+24>>2]=c[t+24>>2];a[m+88>>0]=0;v=m+56|0;u=m+64|0;w=m+68|0;D=m+72|0;E=m+80|0;F=m+84|0;G=n+16|0;A=C+.0012499999720603228;H=C+-.0012499999720603228;I=+g[j+8>>2];J=+g[j+12>>2];K=+g[j+16>>2];L=+g[j+20>>2];M=+g[j>>2];N=+g[j+4>>2];P=+g[k+8>>2];Q=+g[k+12>>2];R=+g[k+16>>2];U=+g[k+20>>2];V=+g[k>>2];
W=+g[k+4>>2];X=0;Y=0;a:while(1){Z=1-Y;_=Z*z+Y*x;$=+T(+_);aa=+S(+_);_=+(Z*I+Y*K-(aa*M-$*N));ba=Z*B+Y*y;ca=+T(+ba);da=+S(+ba);ba=+(Z*P+Y*R-(da*V-ca*W));ea=+(Z*J+Y*L-($*M+aa*N));fa=v;g[fa>>2]=_;g[fa+4>>2]=ea;g[u>>2]=$;g[w>>2]=aa;aa=+(Z*Q+Y*U-(ca*V+da*W));fa=D;g[fa>>2]=ba;g[fa+4>>2]=aa;g[E>>2]=ca;g[F>>2]=da;me(n,l,m);da=+g[G>>2];if(da<=0){ga=3;break}if(da<A){ga=5;break}+he(o,l,e,j,t,k,Y);fa=0;da=r;while(1){ca=+ie(o,p,q,da);if(ca>A){ga=8;break a}if(ca>H){ha=da;break}ia=c[p>>2]|0;ja=c[q>>2]|0;aa=+je(o,
ia,ja,Y);if(aa<H){ga=11;break a}if(!(aa<=A)){ka=Y;la=da;ma=0;na=aa;oa=ca}else{ga=13;break a}while(1){if(!(ma&1))pa=(ka+la)*.5;else pa=ka+(C-na)*(la-ka)/(oa-na);ma=ma+1|0;c[110]=(c[110]|0)+1;ca=+je(o,ia,ja,pa);aa=ca-C;if(aa>0)qa=aa;else qa=-aa;if(qa<.0012499999720603228){ra=pa;break}sa=ca>C;if((ma|0)==50){ra=da;break}else{ka=sa?pa:ka;la=sa?la:pa;na=sa?ca:na;oa=sa?oa:ca}}ja=c[112]|0;c[112]=(ja|0)>(ma|0)?ja:ma;fa=fa+1|0;if((fa|0)==8){ha=Y;break}else da=ra}fa=X+1|0;c[106]=(c[106]|0)+1;if((fa|0)==20){ga=
24;break}else{X=fa;Y=ha}}if((ga|0)==3){c[d>>2]=2;g[s>>2]=0;ta=X;ua=c[108]|0;va=(ua|0)>(ta|0);wa=va?ua:ta;c[108]=wa;xa=+Cm(h);ya=+g[102];za=ya>xa;Aa=za?ya:xa;g[102]=Aa;Ba=+g[100];Ca=xa+Ba;g[100]=Ca;i=f;return}else if((ga|0)==5){c[d>>2]=3;g[s>>2]=Y;ta=X;ua=c[108]|0;va=(ua|0)>(ta|0);wa=va?ua:ta;c[108]=wa;xa=+Cm(h);ya=+g[102];za=ya>xa;Aa=za?ya:xa;g[102]=Aa;Ba=+g[100];Ca=xa+Ba;g[100]=Ca;i=f;return}else if((ga|0)==8){c[d>>2]=4;g[s>>2]=r}else if((ga|0)==11){c[d>>2]=1;g[s>>2]=Y}else if((ga|0)==13){c[d>>2]=
3;g[s>>2]=Y}else if((ga|0)==24){c[d>>2]=1;g[s>>2]=ha;ta=20;ua=c[108]|0;va=(ua|0)>(ta|0);wa=va?ua:ta;c[108]=wa;xa=+Cm(h);ya=+g[102];za=ya>xa;Aa=za?ya:xa;g[102]=Aa;Ba=+g[100];Ca=xa+Ba;g[100]=Ca;i=f;return}c[106]=(c[106]|0)+1;ta=X+1|0;ua=c[108]|0;va=(ua|0)>(ta|0);wa=va?ua:ta;c[108]=wa;xa=+Cm(h);ya=+g[102];za=ya>xa;Aa=za?ya:xa;g[102]=Aa;Ba=+g[100];Ca=xa+Ba;g[100]=Ca;i=f;return}function he(e,f,h,j,k,l,m){e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=+m;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=i;c[e>>2]=h;c[e+4>>2]=k;o=b[f+4>>1]|0;p=e+8|0;q=p+0|0;r=j+0|0;j=q+36|0;do{c[q>>2]=c[r>>2];q=q+4|0;r=r+4|0}while((q|0)<(j|0));s=e+44|0;q=s+0|0;r=l+0|0;j=q+36|0;do{c[q>>2]=c[r>>2];q=q+4|0;r=r+4|0}while((q|0)<(j|0));t=1-m;u=t*+g[e+32>>2]+ +g[e+36>>2]*m;v=+T(+u);w=+S(+u);u=+g[p>>2];x=+g[e+12>>2];y=t*+g[e+16>>2]+ +g[e+24>>2]*m-(w*u-v*x);z=t*+g[e+20>>2]+ +g[e+28>>2]*m-(v*u+w*x);x=t*+g[e+68>>2]+ +g[e+72>>2]*m;u=+T(+x);A=+S(+x);x=+g[s>>2];B=+g[e+48>>
2];C=t*+g[e+52>>2]+ +g[e+60>>2]*m-(A*x-u*B);D=t*+g[e+56>>2]+ +g[e+64>>2]*m-(u*x+A*B);if(o<<16>>16==1){c[e+80>>2]=0;o=(c[h+16>>2]|0)+(d[f+6>>0]<<3)|0;B=+g[o>>2];x=+g[o+4>>2];o=(c[k+16>>2]|0)+(d[f+9>>0]<<3)|0;m=+g[o>>2];t=+g[o+4>>2];o=e+92|0;E=C+(A*m-u*t)-(y+(w*B-v*x));F=D+(u*m+A*t)-(z+(v*B+w*x));x=+E;B=+F;s=o;g[s>>2]=x;g[s+4>>2]=B;B=+Q(+(E*E+F*F));if(B<1.1920928955078125E-7)G=0;else{x=1/B;g[o>>2]=E*x;g[e+96>>2]=F*x;G=B}o=8784;s=c[o+4>>2]|0;p=e+84|0;c[p>>2]=c[o>>2];c[p+4>>2]=s;H=G;i=n;return+H}s=f+
6|0;p=f+7|0;o=e+80|0;if((a[s>>0]|0)==(a[p>>0]|0)){c[o>>2]=2;r=c[k+16>>2]|0;q=r+(d[f+9>>0]<<3)|0;G=+g[q>>2];B=+g[q+4>>2];q=r+(d[f+10>>0]<<3)|0;x=+g[q>>2];F=+g[q+4>>2];q=e+92|0;E=x-G;t=F-B;m=-E;I=+t;J=+m;r=q;g[r>>2]=I;g[r+4>>2]=J;J=+Q(+(t*t+E*E));if(J<1.1920928955078125E-7){K=t;L=m}else{E=1/J;J=t*E;g[q>>2]=J;t=E*m;g[e+96>>2]=t;K=J;L=t}t=(G+x)*.5;x=(B+F)*.5;F=+t;B=+x;r=e+84|0;g[r>>2]=F;g[r+4>>2]=B;r=(c[h+16>>2]|0)+(d[s>>0]<<3)|0;B=+g[r>>2];F=+g[r+4>>2];G=(A*K-u*L)*(y+(w*B-v*F)-(C+(A*t-u*x)))+(u*K+A*
L)*(z+(v*B+w*F)-(D+(u*t+A*x)));if(!(G<0)){H=G;i=n;return+H}x=+-K;K=+-L;r=q;g[r>>2]=x;g[r+4>>2]=K;H=-G;i=n;return+H}else{c[o>>2]=1;o=c[h+16>>2]|0;h=o+(d[s>>0]<<3)|0;G=+g[h>>2];K=+g[h+4>>2];h=o+(d[p>>0]<<3)|0;x=+g[h>>2];L=+g[h+4>>2];h=e+92|0;t=x-G;F=L-K;B=-t;J=+F;m=+B;p=h;g[p>>2]=J;g[p+4>>2]=m;m=+Q(+(F*F+t*t));if(m<1.1920928955078125E-7){M=F;N=B}else{t=1/m;m=F*t;g[h>>2]=m;F=t*B;g[e+96>>2]=F;M=m;N=F}F=(G+x)*.5;x=(K+L)*.5;L=+F;K=+x;p=e+84|0;g[p>>2]=L;g[p+4>>2]=K;p=(c[k+16>>2]|0)+(d[f+9>>0]<<3)|0;K=+g[p>>
2];L=+g[p+4>>2];G=(w*M-v*N)*(C+(A*K-u*L)-(y+(w*F-v*x)))+(v*M+w*N)*(D+(u*K+A*L)-(z+(v*F+w*x)));if(!(G<0)){H=G;i=n;return+H}x=+-M;M=+-N;p=h;g[p>>2]=x;g[p+4>>2]=M;H=-G;i=n;return+H}return+0}function ie(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,h=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;f=i;h=1-e;j=h*+g[a+32>>2]+ +g[a+36>>2]*e;k=+T(+j);l=+S(+j);j=+g[a+8>>2];m=+g[a+12>>2];n=h*+g[a+16>>2]+ +g[a+24>>2]*e-(l*j-k*m);o=h*+g[a+20>>2]+ +g[a+28>>2]*
e-(k*j+l*m);m=h*+g[a+68>>2]+ +g[a+72>>2]*e;j=+T(+m);p=+S(+m);m=+g[a+44>>2];q=+g[a+48>>2];r=h*+g[a+52>>2]+ +g[a+60>>2]*e-(p*m-j*q);s=h*+g[a+56>>2]+ +g[a+64>>2]*e-(j*m+p*q);t=c[a+80>>2]|0;if(!t){q=+g[a+92>>2];m=+g[a+96>>2];e=l*q+k*m;h=l*m-k*q;u=-q;v=-m;w=p*u+j*v;x=p*v-j*u;y=c[a>>2]|0;z=c[y+16>>2]|0;A=c[y+20>>2]|0;if((A|0)>1){y=0;u=h*+g[z+4>>2]+e*+g[z>>2];B=1;while(1){v=e*+g[z+(B<<3)>>2]+h*+g[z+(B<<3)+4>>2];C=v>u;D=C?B:y;B=B+1|0;if((B|0)==(A|0)){E=D;break}else{y=D;u=C?v:u}}}else E=0;c[b>>2]=E;E=c[a+
4>>2]|0;y=c[E+16>>2]|0;A=c[E+20>>2]|0;if((A|0)>1){E=0;u=x*+g[y+4>>2]+w*+g[y>>2];B=1;while(1){h=w*+g[y+(B<<3)>>2]+x*+g[y+(B<<3)+4>>2];C=h>u;D=C?B:E;B=B+1|0;if((B|0)==(A|0)){F=D;break}else{E=D;u=C?h:u}}}else F=0;c[d>>2]=F;E=z+(c[b>>2]<<3)|0;u=+g[E>>2];x=+g[E+4>>2];E=y+(F<<3)|0;w=+g[E>>2];h=+g[E+4>>2];G=q*(r+(p*w-j*h)-(n+(l*u-k*x)))+m*(s+(j*w+p*h)-(o+(k*u+l*x)));i=f;return+G}else if((t|0)==1){x=+g[a+92>>2];u=+g[a+96>>2];h=l*x-k*u;w=k*x+l*u;u=+g[a+84>>2];x=+g[a+88>>2];m=n+(l*u-k*x);q=o+(k*u+l*x);x=-h;
u=-w;e=p*x+j*u;v=p*u-j*x;c[b>>2]=-1;E=c[a+4>>2]|0;F=c[E+16>>2]|0;y=c[E+20>>2]|0;if((y|0)>1){E=0;x=v*+g[F+4>>2]+e*+g[F>>2];z=1;while(1){u=e*+g[F+(z<<3)>>2]+v*+g[F+(z<<3)+4>>2];A=u>x;B=A?z:E;z=z+1|0;if((z|0)==(y|0)){H=B;break}else{E=B;x=A?u:x}}}else H=0;c[d>>2]=H;E=F+(H<<3)|0;x=+g[E>>2];v=+g[E+4>>2];G=h*(r+(p*x-j*v)-m)+w*(s+(j*x+p*v)-q);i=f;return+G}else if((t|0)==2){q=+g[a+92>>2];v=+g[a+96>>2];x=p*q-j*v;w=j*q+p*v;v=+g[a+84>>2];q=+g[a+88>>2];m=r+(p*v-j*q);r=s+(j*v+p*q);q=-x;p=-w;v=l*q+k*p;j=l*p-k*q;
c[d>>2]=-1;t=c[a>>2]|0;a=c[t+16>>2]|0;E=c[t+20>>2]|0;if((E|0)>1){t=0;q=j*+g[a+4>>2]+v*+g[a>>2];H=1;while(1){p=v*+g[a+(H<<3)>>2]+j*+g[a+(H<<3)+4>>2];F=p>q;y=F?H:t;H=H+1|0;if((H|0)==(E|0)){I=y;break}else{t=y;q=F?p:q}}}else I=0;c[b>>2]=I;t=a+(I<<3)|0;q=+g[t>>2];j=+g[t+4>>2];G=x*(n+(l*q-k*j)-m)+w*(o+(k*q+l*j)-r);i=f;return+G}else{c[b>>2]=-1;c[d>>2]=-1;G=0;i=f;return+G}return+0}function je(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,h=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=i;h=1-e;
j=h*+g[a+32>>2]+ +g[a+36>>2]*e;k=+T(+j);l=+S(+j);j=+g[a+8>>2];m=+g[a+12>>2];n=h*+g[a+16>>2]+ +g[a+24>>2]*e-(l*j-k*m);o=h*+g[a+20>>2]+ +g[a+28>>2]*e-(k*j+l*m);m=h*+g[a+68>>2]+ +g[a+72>>2]*e;j=+T(+m);p=+S(+m);m=+g[a+44>>2];q=+g[a+48>>2];r=h*+g[a+52>>2]+ +g[a+60>>2]*e-(p*m-j*q);s=h*+g[a+56>>2]+ +g[a+64>>2]*e-(j*m+p*q);t=c[a+80>>2]|0;if((t|0)==2){q=+g[a+92>>2];m=+g[a+96>>2];e=+g[a+84>>2];h=+g[a+88>>2];u=(c[(c[a>>2]|0)+16>>2]|0)+(b<<3)|0;v=+g[u>>2];w=+g[u+4>>2];x=(p*q-j*m)*(n+(l*v-k*w)-(r+(p*e-j*h)))+
(j*q+p*m)*(o+(k*v+l*w)-(s+(j*e+p*h)));i=f;return+x}else if((t|0)==1){h=+g[a+92>>2];e=+g[a+96>>2];w=+g[a+84>>2];v=+g[a+88>>2];u=(c[(c[a+4>>2]|0)+16>>2]|0)+(d<<3)|0;m=+g[u>>2];q=+g[u+4>>2];x=(l*h-k*e)*(r+(p*m-j*q)-(n+(l*w-k*v)))+(k*h+l*e)*(s+(j*m+p*q)-(o+(k*w+l*v)));i=f;return+x}else if(!t){t=(c[(c[a>>2]|0)+16>>2]|0)+(b<<3)|0;v=+g[t>>2];w=+g[t+4>>2];t=(c[(c[a+4>>2]|0)+16>>2]|0)+(d<<3)|0;q=+g[t>>2];m=+g[t+4>>2];x=+g[a+92>>2]*(r+(p*q-j*m)-(n+(l*v-k*w)))+ +g[a+96>>2]*(s+(j*q+p*m)-(o+(k*v+l*w)));i=f;return+x}else{x=
0;i=f;return+x}return+0}function ke(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0;e=i;f=c[b+4>>2]|0;if((f|0)==1){c[a+16>>2]=b+12;c[a+20>>2]=2;g[a+24>>2]=+g[b+8>>2];i=e;return}else if((f|0)==3){h=b+12|0;j=(c[h>>2]|0)+(d<<3)|0;k=c[j+4>>2]|0;l=a;c[l>>2]=c[j>>2];c[l+4>>2]=k;k=d+1|0;d=a+8|0;l=c[h>>2]|0;if((k|0)<(c[b+16>>2]|0)){h=l+(k<<3)|0;k=c[h+4>>2]|0;j=d;c[j>>2]=c[h>>2];c[j+4>>2]=k}else{k=l;l=c[k+4>>2]|0;j=d;c[j>>2]=c[k>>2];c[j+4>>2]=l}c[a+16>>2]=a;c[a+20>>2]=2;g[a+24>>2]=+g[b+8>>2];i=e;return}else if(!f){c[a+
16>>2]=b+12;c[a+20>>2]=1;g[a+24>>2]=+g[b+8>>2];i=e;return}else if((f|0)==2){c[a+16>>2]=b+20;c[a+20>>2]=c[b+148>>2];g[a+24>>2]=+g[b+8>>2];i=e;return}else{i=e;return}}function le(a){a=a|0;var b=0,d=0,e=0,f=0,h=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;b=i;d=a+16|0;e=+g[d>>2];f=+g[d+4>>2];d=a+36|0;h=a+52|0;j=+g[h>>2];k=+g[h+4>>2];h=a+72|0;l=a+88|0;m=+g[l>>2];n=+g[l+4>>2];o=j-e;p=k-f;q=e*o+f*p;r=j*o+k*p;s=m-e;t=n-f;u=e*s+f*t;v=m*s+n*t;w=m-j;x=n-k;y=j*w+k*x;z=m*
w+n*x;x=o*t-p*s;s=(j*n-k*m)*x;p=(f*m-e*n)*x;n=(e*k-f*j)*x;if(q>=-0&u>=-0){g[a+24>>2]=1;c[a+108>>2]=1;i=b;return}if(r>0&q<-0&n<=0){x=1/(r-q);g[a+24>>2]=r*x;g[a+60>>2]=-(q*x);c[a+108>>2]=2;i=b;return}if(v>0&u<-0&p<=0){x=1/(v-u);g[a+24>>2]=v*x;g[a+96>>2]=-(u*x);c[a+108>>2]=2;A=d+0|0;B=h+0|0;C=A+36|0;do{c[A>>2]=c[B>>2];A=A+4|0;B=B+4|0}while((A|0)<(C|0));i=b;return}if(r<=0&y>=-0){g[a+60>>2]=1;c[a+108>>2]=1;A=a+0|0;B=d+0|0;C=A+36|0;do{c[A>>2]=c[B>>2];A=A+4|0;B=B+4|0}while((A|0)<(C|0));i=b;return}if(v<=
0&z<=0){g[a+96>>2]=1;c[a+108>>2]=1;A=a+0|0;B=h+0|0;C=A+36|0;do{c[A>>2]=c[B>>2];A=A+4|0;B=B+4|0}while((A|0)<(C|0));i=b;return}if(z>0&y<-0&s<=0){v=1/(z-y);g[a+60>>2]=z*v;g[a+96>>2]=-(y*v);c[a+108>>2]=2;A=a+0|0;B=h+0|0;C=A+36|0;do{c[A>>2]=c[B>>2];A=A+4|0;B=B+4|0}while((A|0)<(C|0));i=b;return}else{v=1/(n+(s+p));g[a+24>>2]=s*v;g[a+60>>2]=p*v;g[a+96>>2]=n*v;c[a+108>>2]=3;i=b;return}}function me(d,e,f){d=d|0;e=e|0;f=f|0;var h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=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;h=i;i=i+176|0;j=h+152|0;k=h+136|0;l=h;m=h+124|0;n=h+112|0;c[114]=(c[114]|0)+1;o=f+56|0;c[j+0>>2]=c[o+0>>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];o=f+72|0;c[k+0>>2]=c[o+0>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];ne(l,e,f,j,f+28|0,k);c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>
2]=0;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;o=l+108|0;p=+g[j+12>>2];q=+g[j+8>>2];r=f+16|0;s=f+20|0;t=+g[j>>2];u=+g[j+4>>2];v=+g[k+12>>2];w=+g[k+8>>2];j=f+44|0;x=f+48|0;y=+g[k>>2];z=+g[k+4>>2];k=l+16|0;A=l+20|0;B=l+52|0;C=l+56|0;D=l+16|0;E=l+36|0;F=l+52|0;G=l+24|0;H=l+60|0;I=c[o>>2]|0;J=0;a:while(1){K=(I|0)>0;if(K){L=0;do{c[m+(L<<2)>>2]=c[l+(L*36|0)+28>>2];c[n+(L<<2)>>2]=c[l+(L*36|0)+32>>2];L=L+1|0}while((L|0)!=(I|0))}do if((I|0)==3){le(l);L=c[o>>2]|0;if((L|0)==3){M=11;break a}else{N=L;M=12}}else if((I|
0)==2){L=D;O=+g[L>>2];P=+g[L+4>>2];L=F;R=+g[L>>2];S=+g[L+4>>2];T=R-O;U=S-P;V=O*T+P*U;if(V>=-0){g[G>>2]=1;c[o>>2]=1;M=13;break}P=R*T+S*U;if(!(P<=0)){U=1/(P-V);g[G>>2]=P*U;g[H>>2]=-(V*U);c[o>>2]=2;M=14;break}else{g[H>>2]=1;c[o>>2]=1;L=l+0|0;W=E+0|0;X=L+36|0;do{c[L>>2]=c[W>>2];L=L+4|0;W=W+4|0}while((L|0)<(X|0));M=13;break}}else{N=I;M=12}while(0);do if((M|0)==12){M=0;if((N|0)==1){M=13;break}else if((N|0)==2){M=14;break}W=8784;U=+g[W>>2];Y=U;Z=+g[W+4>>2];_=N}while(0);do if((M|0)==13){M=0;Y=-+g[k>>2];Z=
-+g[A>>2];_=1}else if((M|0)==14){M=0;U=+g[k>>2];V=+g[B>>2]-U;P=+g[A>>2];S=+g[C>>2]-P;if(U*S-V*P>0){Y=-S;Z=V;_=2;break}else{Y=S;Z=-V;_=2;break}}while(0);if(Z*Z+Y*Y<1.4210854715202004E-14){$=_;aa=J;M=31;break}W=l+(_*36|0)|0;V=-Y;S=-Z;P=p*V+q*S;U=p*S-q*V;L=c[r>>2]|0;X=c[s>>2]|0;if((X|0)>1){ba=0;V=U*+g[L+4>>2]+P*+g[L>>2];ca=1;while(1){S=P*+g[L+(ca<<3)>>2]+U*+g[L+(ca<<3)+4>>2];da=S>V;ea=da?ca:ba;ca=ca+1|0;if((ca|0)==(X|0)){fa=ea;break}else{ba=ea;V=da?S:V}}}else fa=0;c[l+(_*36|0)+28>>2]=fa;V=+g[L+(fa<<
3)>>2];U=+g[L+(fa<<3)+4>>2];P=t+(p*V-q*U);S=+P;T=+(V*q+p*U+u);ba=W;g[ba>>2]=S;g[ba+4>>2]=T;T=Y*v+Z*w;S=Z*v-Y*w;ba=c[j>>2]|0;X=c[x>>2]|0;if((X|0)>1){ca=0;U=S*+g[ba+4>>2]+T*+g[ba>>2];da=1;while(1){V=T*+g[ba+(da<<3)>>2]+S*+g[ba+(da<<3)+4>>2];ea=V>U;ga=ea?da:ca;da=da+1|0;if((da|0)==(X|0)){ha=ga;break}else{ca=ga;U=ea?V:U}}}else ha=0;c[l+(_*36|0)+32>>2]=ha;U=+g[ba+(ha<<3)>>2];S=+g[ba+(ha<<3)+4>>2];T=y+(v*U-w*S);V=+T;R=+(U*w+v*S+z);ca=l+(_*36|0)+8|0;g[ca>>2]=V;g[ca+4>>2]=R;R=+(T-P);T=+(+g[l+(_*36|0)+12>>
2]-+g[l+(_*36|0)+4>>2]);ca=l+(_*36|0)+16|0;g[ca>>2]=R;g[ca+4>>2]=T;ia=J+1|0;c[116]=(c[116]|0)+1;if(K){ca=0;do{if((fa|0)==(c[m+(ca<<2)>>2]|0)?(ha|0)==(c[n+(ca<<2)>>2]|0):0){M=30;break a}ca=ca+1|0}while((ca|0)<(I|0))}ca=(c[o>>2]|0)+1|0;c[o>>2]=ca;if((ia|0)<20){I=ca;J=ia}else{$=ca;aa=ia;M=31;break}}if((M|0)==11){I=c[118]|0;c[118]=(I|0)>(J|0)?I:J;ja=d+8|0;ka=J;M=34}else if((M|0)==30){$=c[o>>2]|0;aa=ia;M=31}do if((M|0)==31){ia=c[118]|0;c[118]=(ia|0)>(aa|0)?ia:aa;ia=d+8|0;if(($|0)==1){o=l;J=c[o+4>>2]|0;
I=d;c[I>>2]=c[o>>2];c[I+4>>2]=J;J=l+8|0;I=c[J+4>>2]|0;o=ia;c[o>>2]=c[J>>2];c[o+4>>2]=I;la=ia;ma=1;na=aa;break}else if(($|0)==2){z=+g[G>>2];v=+g[H>>2];w=+(z*+g[l>>2]+v*+g[l+36>>2]);y=+(z*+g[l+4>>2]+v*+g[l+40>>2]);I=d;g[I>>2]=w;g[I+4>>2]=y;y=+(z*+g[l+8>>2]+v*+g[l+44>>2]);w=+(z*+g[l+12>>2]+v*+g[l+48>>2]);I=ia;g[I>>2]=y;g[I+4>>2]=w;la=ia;ma=2;na=aa;break}else if(($|0)==3){ja=ia;ka=aa;M=34;break}else{la=ia;ma=$;na=aa;break}}while(0);if((M|0)==34){w=+g[G>>2];y=+g[H>>2];v=+g[l+96>>2];z=+(w*+g[l>>2]+y*+g[l+
36>>2]+v*+g[l+72>>2]);Y=+(w*+g[l+4>>2]+y*+g[l+40>>2]+v*+g[l+76>>2]);H=d;g[H>>2]=z;g[H+4>>2]=Y;H=ja;g[H>>2]=z;g[H+4>>2]=Y;la=ja;ma=3;na=ka}Y=+g[d>>2]-+g[la>>2];ka=d+4|0;ja=d+12|0;z=+g[ka>>2]-+g[ja>>2];H=d+16|0;g[H>>2]=+Q(+(Y*Y+z*z));c[d+20>>2]=na;if((ma|0)==2){z=+g[k>>2]-+g[B>>2];Y=+g[A>>2]-+g[C>>2];oa=+Q(+(z*z+Y*Y));M=38}else if((ma|0)!=3){g[e>>2]=0;b[e+4>>1]=ma;if((ma|0)>0){pa=0;M=40}}else{Y=+g[k>>2];z=+g[A>>2];oa=(+g[B>>2]-Y)*(+g[l+92>>2]-z)-(+g[C>>2]-z)*(+g[l+88>>2]-Y);M=38}if((M|0)==38){g[e>>
2]=oa;b[e+4>>1]=ma;pa=0;M=40}if((M|0)==40)while(1){M=0;a[e+pa+6>>0]=c[l+(pa*36|0)+28>>2];a[e+pa+9>>0]=c[l+(pa*36|0)+32>>2];pa=pa+1|0;if((pa|0)>=(ma|0))break;else M=40}if(!(a[f+88>>0]|0)){i=h;return}oa=+g[f+24>>2];Y=+g[f+52>>2];z=+g[H>>2];v=oa+Y;if(!(z>v&z>1.1920928955078125E-7)){y=+((+g[d>>2]+ +g[la>>2])*.5);w=+((+g[ka>>2]+ +g[ja>>2])*.5);f=d;g[f>>2]=y;g[f+4>>2]=w;f=la;g[f>>2]=y;g[f+4>>2]=w;g[H>>2]=0;i=h;return}g[H>>2]=z-v;v=+g[la>>2];z=+g[d>>2];w=v-z;y=+g[ja>>2];Z=+g[ka>>2];u=y-Z;p=+Q(+(w*w+u*u));
if(p<1.1920928955078125E-7){qa=w;ra=u}else{q=1/p;qa=w*q;ra=u*q}g[d>>2]=oa*qa+z;g[ka>>2]=oa*ra+Z;g[la>>2]=v-Y*qa;g[ja>>2]=y-Y*ra;i=h;return}function ne(a,e,f,h,j,k){a=a|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var 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,J=0,K=0;l=i;m=b[e+4>>1]|0;n=m&65535;o=a+108|0;c[o>>2]=n;if(!(m<<16>>16))p=n;else{n=f+16|0;m=j+16|0;q=h+12|0;r=h+8|0;s=h+4|0;t=k+12|0;u=k+8|0;v=k+4|0;w=0;do{x=d[e+w+6>>0]|0;c[a+(w*36|0)+28>>2]=x;y=d[e+w+
9>>0]|0;c[a+(w*36|0)+32>>2]=y;z=(c[n>>2]|0)+(x<<3)|0;A=+g[z>>2];B=+g[z+4>>2];z=(c[m>>2]|0)+(y<<3)|0;C=+g[z>>2];D=+g[z+4>>2];E=+g[q>>2];F=+g[r>>2];G=+g[h>>2]+(A*E-B*F);H=+G;I=+(E*B+A*F+ +g[s>>2]);z=a+(w*36|0)|0;g[z>>2]=H;g[z+4>>2]=I;I=+g[t>>2];H=+g[u>>2];F=+g[k>>2]+(C*I-D*H);A=+F;B=+(D*I+C*H+ +g[v>>2]);z=a+(w*36|0)+8|0;g[z>>2]=A;g[z+4>>2]=B;B=+(F-G);G=+(+g[a+(w*36|0)+12>>2]-+g[a+(w*36|0)+4>>2]);z=a+(w*36|0)+16|0;g[z>>2]=B;g[z+4>>2]=G;g[a+(w*36|0)+24>>2]=0;w=w+1|0;z=c[o>>2]|0}while((w|0)<(z|0));p=z}do if((p|
0)>1){G=+g[e>>2];if((p|0)==2){B=+g[a+16>>2]-+g[a+52>>2];F=+g[a+20>>2]-+g[a+56>>2];J=+Q(+(B*B+F*F))}else if((p|0)==3){F=+g[a+16>>2];B=+g[a+20>>2];J=(+g[a+52>>2]-F)*(+g[a+92>>2]-B)-(+g[a+56>>2]-B)*(+g[a+88>>2]-F)}else J=0;if(!(J<G*.5)?!(G*2<J|J<1.1920928955078125E-7):0){K=11;break}c[o>>2]=0}else K=11;while(0);if((K|0)==11?(p|0)!=0:0){i=l;return}c[a+28>>2]=0;c[a+32>>2]=0;p=c[f+16>>2]|0;J=+g[p>>2];G=+g[p+4>>2];p=c[j+16>>2]|0;F=+g[p>>2];B=+g[p+4>>2];A=+g[h+12>>2];H=+g[h+8>>2];C=+g[h>>2]+(J*A-G*H);I=A*
G+J*H+ +g[h+4>>2];H=+C;J=+I;h=a;g[h>>2]=H;g[h+4>>2]=J;J=+g[k+12>>2];H=+g[k+8>>2];G=+g[k>>2]+(F*J-B*H);A=B*J+F*H+ +g[k+4>>2];H=+G;F=+A;k=a+8|0;g[k>>2]=H;g[k+4>>2]=F;F=+(G-C);C=+(A-I);k=a+16|0;g[k>>2]=F;g[k+4>>2]=C;g[a+24>>2]=1;c[o>>2]=1;i=l;return}function oe(a,d){a=a|0;d=d|0;var e=0,f=0,h=0,j=0;e=i;f=um(d,48)|0;if(!f)h=0;else{c[f>>2]=488;c[f+4>>2]=1;g[f+8>>2]=.009999999776482582;d=f+28|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;b[d+16>>1]=0;h=f}f=a+4|0;d=c[f+4>>2]|0;j=h+4|0;c[j>>2]=c[f>>2];
c[j+4>>2]=d;d=h+12|0;j=a+12|0;c[d+0>>2]=c[j+0>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];c[d+16>>2]=c[j+16>>2];c[d+20>>2]=c[j+20>>2];c[d+24>>2]=c[j+24>>2];c[d+28>>2]=c[j+28>>2];b[d+32>>1]=b[j+32>>1]|0;i=e;return h|0}function pe(a){a=a|0;return 1}function qe(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function re(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=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;h=i;j=+g[b+12>>2];l=+g[a+12>>2];m=+g[b+8>>
2];n=+g[a+16>>2];o=+g[b>>2];p=o+(j*l-m*n);q=+g[b+4>>2];r=l*m+j*n+q;n=+g[a+20>>2];l=+g[a+24>>2];s=o+(j*n-m*l);o=q+(m*n+j*l);l=+g[d>>2];j=l-p;n=+g[d+4>>2];m=n-r;q=s-p;p=o-r;r=j*q+m*p;do if(r>0){t=q*q+p*p;if(r>t){u=l-s;v=n-o;break}else{w=r/t;u=j-q*w;v=m-p*w;break}}else{u=j;v=m}while(0);m=+Q(+(v*v+u*u));g[e>>2]=m;if(m>0){j=1/m;x=v*j;y=(g[k>>2]=u*j,c[k>>2]|0);z=+x;A=f;B=A;c[B>>2]=y;C=A+4|0;D=C;g[D>>2]=z;i=h;return}else{e=8784;x=+g[e+4>>2];y=c[e>>2]|0;z=+x;A=f;B=A;c[B>>2]=y;C=A+4|0;D=C;g[D>>2]=z;i=h;return}}
function se(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,h=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;e=i;f=+g[d>>2];h=+g[c>>2]-f;j=+g[d+4>>2];k=+g[c+4>>2]-j;l=+g[d+12>>2];m=+g[d+8>>2];n=h*l+k*m;o=l*k-h*m;h=+g[c+8>>2]-f;f=+g[c+12>>2]-j;j=l*h+m*f-n;k=l*f-m*h-o;d=a+12|0;h=+g[d>>2];f=+g[d+4>>2];d=a+20|0;p=+g[d>>2];q=p-h;p=+g[d+4>>2]-f;r=-q;s=q*q+p*p;t=+Q(+s);if(t<1.1920928955078125E-7){u=p;v=r}else{w=1/t;u=p*w;v=w*r}r=(f-o)*v+(h-n)*u;w=k*v+j*u;if(w==0){x=0;i=e;return x|0}t=r/w;
if(t<0){x=0;i=e;return x|0}if(s==0?1:+g[c+16>>2]<t){x=0;i=e;return x|0}w=(q*(n+j*t-h)+p*(o+k*t-f))/s;if(w<0|w>1){x=0;i=e;return x|0}g[b+8>>2]=t;t=u*l-v*m;w=v*l+u*m;if(r>0){r=+-t;m=+-w;c=b;g[c>>2]=r;g[c+4>>2]=m;x=1;i=e;return x|0}else{m=+t;t=+w;c=b;g[c>>2]=m;g[c+4>>2]=t;x=1;i=e;return x|0}return 0}function te(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;e=+g[c+12>>2];f=+g[a+12>>2];h=+g[c+8>>2];j=+g[a+16>>2];k=+g[c>>2];l=k+(e*f-h*j);m=+g[c+4>>2];n=f*h+e*j+m;j=+g[a+20>>
2];f=+g[a+24>>2];o=k+(e*j-h*f);k=m+(h*j+e*f);f=+g[a+8>>2];e=+((l<o?l:o)-f);j=+((n<k?n:k)-f);a=b;g[a>>2]=e;g[a+4>>2]=j;j=+(f+(l>o?l:o));o=+(f+(n>k?n:k));a=b+8|0;g[a>>2]=j;g[a+4>>2]=o;i=d;return}function ue(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0;d=i;g[b>>2]=0;c=+((+g[a+12>>2]+ +g[a+20>>2])*.5);e=+((+g[a+16>>2]+ +g[a+24>>2])*.5);a=b+4|0;g[a>>2]=c;g[a+4>>2]=e;g[b+12>>2]=0;i=d;return}function ve(a){a=a|0;return}function we(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function xe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,
h=0;d=i;e=um(b,152)|0;if(!e)f=0;else{c[e>>2]=592;c[e+4>>2]=2;g[e+8>>2]=.009999999776482582;c[e+148>>2]=0;g[e+12>>2]=0;g[e+16>>2]=0;f=e}e=a+4|0;b=c[e+4>>2]|0;h=f+4|0;c[h>>2]=c[e>>2];c[h+4>>2]=b;Dn(f+12|0,a+12|0,140)|0;i=d;return f|0}function ye(a){a=a|0;return 1}function ze(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=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,J=0;e=i;i=i+96|0;f=e+32|0;h=e;if((d|0)<3){c[a+148>>2]=4;g[a+20>>2]=-1;g[a+24>>2]=-1;g[a+
28>>2]=1;g[a+32>>2]=-1;g[a+36>>2]=1;g[a+40>>2]=1;g[a+44>>2]=-1;g[a+48>>2]=1;g[a+84>>2]=0;g[a+88>>2]=-1;g[a+92>>2]=1;g[a+96>>2]=0;g[a+100>>2]=0;g[a+104>>2]=1;g[a+108>>2]=-1;g[a+112>>2]=0;g[a+12>>2]=0;g[a+16>>2]=0;i=e;return}j=(d|0)<8?d:8;d=0;l=0;while(1){m=b+(d<<3)|0;n=c[m>>2]|0;o=c[m+4>>2]|0;p=(c[k>>2]=o,+g[k>>2]);a:do if((l|0)>0){q=(c[k>>2]=n,+g[k>>2]);m=0;while(1){r=q-+g[f+(m<<3)>>2];s=p-+g[f+(m<<3)+4>>2];m=m+1|0;if(r*r+s*s<.0024999999441206455){t=l;break a}if((m|0)>=(l|0)){u=8;break}}}else u=8;
while(0);if((u|0)==8){u=0;m=f+(l<<3)|0;c[m>>2]=n;c[m+4>>2]=o;t=l+1|0}d=d+1|0;if((d|0)==(j|0))break;else l=t}if((t|0)<3){c[a+148>>2]=4;g[a+20>>2]=-1;g[a+24>>2]=-1;g[a+28>>2]=1;g[a+32>>2]=-1;g[a+36>>2]=1;g[a+40>>2]=1;g[a+44>>2]=-1;g[a+48>>2]=1;g[a+84>>2]=0;g[a+88>>2]=-1;g[a+92>>2]=1;g[a+96>>2]=0;g[a+100>>2]=0;g[a+104>>2]=1;g[a+108>>2]=-1;g[a+112>>2]=0;g[a+12>>2]=0;g[a+16>>2]=0;i=e;return}l=0;j=1;p=+g[f>>2];while(1){q=+g[f+(j<<3)>>2];if(!(q>p))if(q==p?+g[f+(j<<3)+4>>2]<+g[f+(l<<3)+4>>2]:0)u=23;else{v=
l;w=p}else u=23;if((u|0)==23){u=0;v=j;w=q}j=j+1|0;if((j|0)==(t|0)){x=v;y=0;break}else{l=v;p=w}}while(1){c[h+(y<<2)>>2]=x;l=0;j=1;while(1){if((l|0)!=(x|0)){w=+g[f+(x<<3)>>2];p=+g[f+(l<<3)>>2]-w;q=+g[f+(x<<3)+4>>2];s=+g[f+(l<<3)+4>>2]-q;r=+g[f+(j<<3)>>2]-w;w=+g[f+(j<<3)+4>>2]-q;q=p*w-s*r;u=q<0?j:l;if(q==0?r*r+w*w>p*p+s*s:0)z=j;else z=u}else z=j;j=j+1|0;if((j|0)==(t|0))break;else l=z}A=y+1|0;if((z|0)==(v|0))break;else{x=z;y=A}}c[a+148>>2]=A;z=(y|0)>-1;if(z){x=0;do{v=f+(c[h+(x<<2)>>2]<<3)|0;t=c[v+4>>
2]|0;l=a+(x<<3)+20|0;c[l>>2]=c[v>>2];c[l+4>>2]=t;x=x+1|0}while((x|0)!=(A|0));if(z){z=0;do{x=z;z=z+1|0;h=(z|0)<(A|0)?z:0;s=+g[a+(h<<3)+24>>2]-+g[a+(x<<3)+24>>2];f=a+(x<<3)+84|0;p=+s;w=+-(+g[a+(h<<3)+20>>2]-+g[a+(x<<3)+20>>2]);h=f;g[h>>2]=p;g[h+4>>2]=w;h=a+(x<<3)+88|0;w=+g[h>>2];p=+Q(+(s*s+w*w));if(!(p<1.1920928955078125E-7)){r=1/p;g[f>>2]=s*r;g[h>>2]=w*r}}while((z|0)!=(A|0))}}z=a+12|0;h=a+20|0;if((y|0)>-1){r=0;w=0;s=0;y=0;while(1){f=a+(y<<3)+20|0;p=+g[f>>2];q=+g[f+4>>2];y=y+1|0;if((y|0)<(A|0))B=a+
(y<<3)+20|0;else B=h;f=B;C=+g[f>>2];D=+g[f+4>>2];E=(p*D-q*C)*.5;F=s+E;G=E*.3333333432674408;E=r+(p+0+C)*G;C=w+(q+0+D)*G;if((y|0)==(A|0)){H=E;I=C;J=F;break}else{r=E;w=C;s=F}}}else{H=0;I=0;J=0}s=1/J;J=+(H*s);H=+(I*s);A=z;g[A>>2]=J;g[A+4>>2]=H;i=e;return}function Ae(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;f=+g[d>>2]-+g[b>>2];h=+g[d+4>>2]-+g[b+4>>2];j=+g[b+12>>2];k=+g[b+8>>2];l=f*j+h*k;m=j*h-f*k;b=c[a+148>>2]|0;if((b|0)>0)n=0;else{o=1;i=e;return o|0}while(1){if((l-+g[a+
(n<<3)+20>>2])*+g[a+(n<<3)+84>>2]+(m-+g[a+(n<<3)+24>>2])*+g[a+(n<<3)+88>>2]>0){o=0;p=4;break}n=n+1|0;if((n|0)>=(b|0)){o=1;p=4;break}}if((p|0)==4){i=e;return o|0}return 0}function Be(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=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,J=0,K=0;h=i;j=+g[d>>2]-+g[b>>2];l=+g[d+4>>2]-+g[b+4>>2];d=b+12|0;m=+g[d>>2];n=b+8|0;o=+g[n>>2];p=j*m+l*o;q=m*l-j*o;b=(g[k>>2]=p,c[k>>2]|0);r=c[a+148>>2]|0;s=(r|0)>0;if(s){o=
q;t=b;u=0;j=-3.4028234663852886E38;while(1){v=a+(u<<3)+84|0;l=(p-+g[a+(u<<3)+20>>2])*+g[v>>2]+(q-+g[a+(u<<3)+24>>2])*+g[a+(u<<3)+88>>2];if(l>j){w=v;x=+g[w+4>>2];y=c[w>>2]|0;z=l}else{x=o;y=t;z=j}u=u+1|0;if((u|0)>=(r|0))break;else{o=x;t=y;j=z}}if(z>0){j=(c[k>>2]=y,+g[k>>2]);o=z*z;if(s){l=x;m=j;s=0;A=o;while(1){B=p-+g[a+(s<<3)+20>>2];C=q-+g[a+(s<<3)+24>>2];D=B*B+C*C;t=A>D;E=t?C:l;C=t?B:m;B=t?D:A;s=s+1|0;if((s|0)>=(r|0)){F=E;G=C;H=B;break}else{l=E;m=C;A=B}}}else{F=x;G=j;H=o}g[e>>2]=+Q(+H);H=+g[d>>2];
o=+g[n>>2];j=G*H-F*o;A=F*H+G*o;o=+j;G=+A;r=f;g[r>>2]=o;g[r+4>>2]=G;G=+Q(+(j*j+A*A));if(G<1.1920928955078125E-7){i=h;return}o=1/G;g[f>>2]=j*o;g[f+4>>2]=A*o;i=h;return}else{I=y;J=x;K=z}}else{I=b;J=q;K=-3.4028234663852886E38}g[e>>2]=K;K=+g[d>>2];q=(c[k>>2]=I,+g[k>>2]);z=+g[n>>2];x=+(q*K-J*z);o=+(J*K+q*z);n=f;g[n>>2]=x;g[n+4>>2]=o;i=h;return}function Ce(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=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;f=i;h=+g[e>>2];j=+g[d>>2]-h;
k=+g[e+4>>2];l=+g[d+4>>2]-k;m=+g[e+12>>2];n=+g[e+8>>2];o=j*m+l*n;p=m*l-j*n;j=+g[d+8>>2]-h;h=+g[d+12>>2]-k;k=m*j+n*h-o;l=m*h-n*j-p;e=c[a+148>>2]|0;if((e|0)<=0){q=0;i=f;return q|0}r=0;s=-1;j=0;h=+g[d+16>>2];a:while(1){t=+g[a+(r<<3)+84>>2];u=+g[a+(r<<3)+88>>2];v=(+g[a+(r<<3)+20>>2]-o)*t+(+g[a+(r<<3)+24>>2]-p)*u;w=k*t+l*u;do if(w==0)if(v<0){q=0;x=13;break a}else{y=s;z=j;A=h}else{if(w<0&v<j*w){y=r;z=v/w;A=h;break}if(w>0&v<h*w){y=s;z=j;A=v/w}else{y=s;z=j;A=h}}while(0);r=r+1|0;if(A<z){q=0;x=13;break}if((r|
0)>=(e|0)){x=11;break}else{s=y;j=z;h=A}}if((x|0)==11){if((y|0)<=-1){q=0;i=f;return q|0}g[b+8>>2]=z;z=+g[a+(y<<3)+84>>2];A=+g[a+(y<<3)+88>>2];h=+(m*z-n*A);j=+(z*n+m*A);y=b;g[y>>2]=h;g[y+4>>2]=j;q=1;i=f;return q|0}else if((x|0)==13){i=f;return q|0}return 0}function De(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=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;e=i;f=+g[d+12>>2];h=+g[a+20>>2];j=+g[d+8>>2];k=+g[a+24>>2];l=+g[d>>2];m=l+(f*h-j*k);n=+g[d+4>>2];o=h*j+f*k+n;d=c[a+148>>
2]|0;if((d|0)>1){k=m;h=o;p=m;q=o;r=1;while(1){s=+g[a+(r<<3)+20>>2];t=+g[a+(r<<3)+24>>2];u=l+(f*s-j*t);v=s*j+f*t+n;t=k<u?k:u;s=h<v?h:v;w=p>u?p:u;u=q>v?q:v;r=r+1|0;if((r|0)>=(d|0)){x=t;y=s;z=u;A=w;break}else{k=t;h=s;p=w;q=u}}}else{x=m;y=o;z=o;A=m}m=+g[a+8>>2];o=+(x-m);x=+(y-m);a=b;g[a>>2]=o;g[a+4>>2]=x;x=+(A+m);A=+(z+m);a=b+8|0;g[a>>2]=x;g[a+4>>2]=A;i=e;return}function Ee(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,h=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;e=i;f=c[a+148>>2]|0;h=(f|0)>0;if(h){j=0;k=0;l=0;do{j=j+ +g[a+(l<<3)+20>>2];k=k+ +g[a+(l<<3)+24>>2];l=l+1|0}while((l|0)<(f|0));m=1/+(f|0);n=j*m;j=k*m;if(h){h=a+20|0;l=a+24|0;m=0;k=0;o=0;p=0;q=0;while(1){r=+g[a+(q<<3)+20>>2]-n;s=+g[a+(q<<3)+24>>2]-j;q=q+1|0;t=(q|0)<(f|0);if(t){u=a+(q<<3)+20|0;v=a+(q<<3)+24|0}else{u=h;v=l}w=+g[u>>2]-n;x=+g[v>>2]-j;y=r*x-s*w;z=y*.5;A=p+z;B=z*.3333333432674408;z=m+(r+w)*B;C=k+(s+x)*B;B=o+y*.0833333358168602*(w*w+(r*r+r*w)+(x*x+(s*s+s*x)));if(!t){D=C;E=
z;F=n;G=j;H=B;I=A;break}else{m=z;k=C;o=B;p=A}}}else{D=0;E=0;F=n;G=j;H=0;I=0}}else{j=1/+(f|0);D=0;E=0;F=j*0;G=j*0;H=0;I=0}j=I*d;g[b>>2]=j;n=1/I;I=E*n;E=D*n;n=F+I;F=G+E;G=+n;D=+F;f=b+4|0;g[f>>2]=G;g[f+4>>2]=D;g[b+12>>2]=H*d+j*(n*n+F*F-(I*I+E*E));i=e;return}function Fe(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Ge(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;e=um(b,20)|0;if(!e)f=0;else{c[e>>2]=680;b=e+4|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;f=e}e=a+4|0;b=c[e+4>>2]|0;g=f+4|0;c[g>>2]=c[e>>
2];c[g+4>>2]=b;b=a+12|0;a=c[b+4>>2]|0;g=f+12|0;c[g>>2]=c[b>>2];c[g+4>>2]=a;i=d;return f|0}function He(a){a=a|0;return 1}function Ie(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=+g[b+12>>2];e=+g[a+12>>2];f=+g[b+8>>2];h=+g[a+16>>2];i=+g[c>>2]-(+g[b>>2]+(d*e-f*h));j=+g[c+4>>2]-(+g[b+4>>2]+(e*f+d*h));h=+g[a+8>>2];return i*i+j*j<=h*h|0}function Je(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0;f=i;h=+g[b+12>>2];j=+g[a+12>>2];k=+g[b+8>>2];l=+g[a+16>>2];m=+g[c>>2]-
(+g[b>>2]+(h*j-k*l));n=+g[c+4>>2]-(+g[b+4>>2]+(j*k+h*l));l=+Q(+(m*m+n*n));g[d>>2]=l-+g[a+8>>2];h=1/l;l=+(m*h);m=+(n*h);a=e;g[a>>2]=l;g[a+4>>2]=m;i=f;return}function Ke(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;f=+g[d+12>>2];h=+g[a+12>>2];j=+g[d+8>>2];k=+g[a+16>>2];l=+g[c>>2];m=l-(+g[d>>2]+(f*h-j*k));n=+g[c+4>>2];o=n-(+g[d+4>>2]+(h*j+f*k));k=+g[a+8>>2];f=+g[c+8>>2]-l;l=+g[c+12>>2]-n;n=m*f+o*l;j=f*f+l*l;h=n*n-(m*m+o*o-k*k)*j;if(h<0|j<1.1920928955078125E-7){p=
0;i=e;return p|0}k=n+ +Q(+h);h=-k;if(!(k<=-0)){p=0;i=e;return p|0}if(!(j*+g[c+16>>2]>=h)){p=0;i=e;return p|0}k=h/j;g[b+8>>2]=k;j=m+f*k;f=o+l*k;k=+j;l=+f;c=b;g[c>>2]=k;g[c+4>>2]=l;l=+Q(+(j*j+f*f));if(l<1.1920928955078125E-7){p=1;i=e;return p|0}k=1/l;g[b>>2]=j*k;g[b+4>>2]=f*k;p=1;i=e;return p|0}function Le(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0;e=+g[c+12>>2];f=+g[a+12>>2];h=+g[c+8>>2];i=+g[a+16>>2];j=+g[c>>2]+(e*f-h*i);k=+g[c+4>>2]+(f*h+e*i);i=+g[a+8>>2];g[b>>2]=j-i;g[b+4>>2]=
k-i;g[b+8>>2]=j+i;g[b+12>>2]=k+i;return}function Me(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0;e=a+8|0;f=+g[e>>2];h=f*(d*3.1415927410125732*f);g[b>>2]=h;i=a+12|0;j=i;k=c[j+4>>2]|0;l=b+4|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;f=+g[e>>2];d=+g[i>>2];m=+g[a+16>>2];g[b+12>>2]=h*(f*(f*.5)+(d*d+m*m));return}function Ne(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Oe(a){a=a|0;var b=0;b=i;c[a>>2]=760;Em(c[a+12>>2]|0);Vm(a);i=b;return}function Pe(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=760;d=a+12|0;Em(c[d>>
2]|0);c[d>>2]=0;c[a+16>>2]=0;i=b;return}function Qe(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;g=a+16|0;c[g>>2]=e;h=Dm(e<<3)|0;c[a+12>>2]=h;Dn(h|0,d|0,c[g>>2]<<3|0)|0;g=a+20|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;b[g+16>>1]=0;i=f;return}function Re(d,e){d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0;f=i;h=um(e,40)|0;if(!h)j=0;else{c[h>>2]=760;c[h+4>>2]=3;g[h+8>>2]=.009999999776482582;c[h+12>>2]=0;c[h+16>>2]=0;a[h+36>>0]=0;a[h+37>>0]=0;j=h}h=c[d+12>>2]|0;e=c[d+16>>2]|0;k=j+16|0;c[k>>2]=e;l=Dm(e<<
3)|0;c[j+12>>2]=l;Dn(l|0,h|0,c[k>>2]<<3|0)|0;k=j+20|0;c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;b[k+16>>1]=0;k=d+20|0;h=c[k+4>>2]|0;l=j+20|0;c[l>>2]=c[k>>2];c[l+4>>2]=h;h=d+28|0;l=c[h+4>>2]|0;k=j+28|0;c[k>>2]=c[h>>2];c[k+4>>2]=l;a[j+36>>0]=a[d+36>>0]|0;a[j+37>>0]=a[d+37>>0]|0;i=f;return j|0}function Se(a){a=a|0;return(c[a+16>>2]|0)+-1|0}function Te(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0;f=i;c[d+4>>2]=1;g[d+8>>2]=+g[b+8>>2];h=b+12|0;j=(c[h>>2]|0)+(e<<3)|0;k=c[j+4>>2]|0;l=d+12|
0;c[l>>2]=c[j>>2];c[l+4>>2]=k;k=(c[h>>2]|0)+(e+1<<3)|0;l=c[k+4>>2]|0;j=d+20|0;c[j>>2]=c[k>>2];c[j+4>>2]=l;l=d+28|0;if((e|0)>0){j=(c[h>>2]|0)+(e+-1<<3)|0;k=c[j+4>>2]|0;m=l;c[m>>2]=c[j>>2];c[m+4>>2]=k;a[d+44>>0]=1}else{k=b+20|0;m=c[k+4>>2]|0;j=l;c[j>>2]=c[k>>2];c[j+4>>2]=m;a[d+44>>0]=a[b+36>>0]|0}m=d+36|0;if(((c[b+16>>2]|0)+-2|0)>(e|0)){j=(c[h>>2]|0)+(e+2<<3)|0;e=c[j+4>>2]|0;h=m;c[h>>2]=c[j>>2];c[h+4>>2]=e;a[d+45>>0]=1;i=f;return}else{e=b+28|0;h=c[e+4>>2]|0;j=m;c[j>>2]=c[e>>2];c[j+4>>2]=h;a[d+45>>0]=
a[b+37>>0]|0;i=f;return}}function Ue(d,e,f,h,j,k){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;i=i+48|0;m=l;c[m>>2]=488;n=m+28|0;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;b[n+16>>1]=0;c[m+4>>2]=1;g[m+8>>2]=+g[d+8>>2];n=c[d+12>>2]|0;o=n+(k<<3)|0;p=c[o+4>>2]|0;q=m+12|0;c[q>>2]=c[o>>2];c[q+4>>2]=p;p=n+(k+1<<3)|0;q=c[p+4>>2]|0;o=m+20|0;c[o>>2]=c[p>>2];c[o+4>>2]=q;q=m+28|0;if((k|0)>0){o=n+(k+-1<<3)|0;p=c[o+4>>2]|0;r=q;c[r>>2]=c[o>>2];c[r+4>>2]=p;a[m+44>>0]=1}else{p=d+
20|0;r=c[p+4>>2]|0;o=q;c[o>>2]=c[p>>2];c[o+4>>2]=r;a[m+44>>0]=a[d+36>>0]|0}r=m+36|0;if(((c[d+16>>2]|0)+-2|0)>(k|0)){o=n+(k+2<<3)|0;k=c[o+4>>2]|0;n=r;c[n>>2]=c[o>>2];c[n+4>>2]=k;a[m+45>>0]=1;re(m,e,f,h,j,0);i=l;return}else{k=d+28|0;n=c[k+4>>2]|0;o=r;c[o>>2]=c[k>>2];c[o+4>>2]=n;a[m+45>>0]=a[d+37>>0]|0;re(m,e,f,h,j,0);i=l;return}}function Ve(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function We(a,d,e,f,h){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+48|0;k=j;c[k>>2]=488;c[k+4>>2]=1;g[k+8>>2]=
.009999999776482582;l=k+28|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;b[l+16>>1]=0;l=h+1|0;m=(l|0)==(c[a+16>>2]|0)?0:l;l=c[a+12>>2]|0;a=l+(h<<3)|0;h=c[a+4>>2]|0;n=k+12|0;c[n>>2]=c[a>>2];c[n+4>>2]=h;h=l+(m<<3)|0;m=c[h+4>>2]|0;l=k+20|0;c[l>>2]=c[h>>2];c[l+4>>2]=m;m=se(k,d,e,f,0)|0;i=j;return m|0}function Xe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=i;h=e+1|0;j=(h|0)==(c[a+16>>2]|0)?0:h;h=c[a+12>>2]|0;k=+g[d+12>>2];l=+g[h+(e<<3)>>2];m=+g[d+8>>2];n=
+g[h+(e<<3)+4>>2];o=+g[d>>2];p=o+(k*l-m*n);q=+g[d+4>>2];r=l*m+k*n+q;n=+g[h+(j<<3)>>2];l=+g[h+(j<<3)+4>>2];s=o+(k*n-m*l);o=q+(m*n+k*l);l=+(p<s?p:s);k=+(r<o?r:o);j=b;g[j>>2]=l;g[j+4>>2]=k;k=+(p>s?p:s);s=+(r>o?r:o);j=b+8|0;g[j>>2]=k;g[j+4>>2]=s;i=f;return}function Ye(a,b,d){a=a|0;b=b|0;d=+d;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;return}function Ze(a){a=a|0;var b=0;b=i;gf(a);c[a+28>>2]=0;c[a+48>>2]=16;c[a+52>>2]=0;c[a+44>>2]=Dm(128)|0;c[a+36>>2]=16;c[a+40>>2]=0;c[a+32>>2]=Dm(64)|0;i=b;return}
function _e(a){a=a|0;var b=0;b=i;Em(c[a+32>>2]|0);Em(c[a+44>>2]|0);hf(a);i=b;return}function $e(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;f=kf(a,b,d)|0;d=a+28|0;c[d>>2]=(c[d>>2]|0)+1;d=a+40|0;b=c[d>>2]|0;g=a+36|0;h=a+32|0;if((b|0)==(c[g>>2]|0)){a=c[h>>2]|0;c[g>>2]=b<<1;g=Dm(b<<3)|0;c[h>>2]=g;Dn(g|0,a|0,c[d>>2]<<2|0)|0;Em(a);j=c[d>>2]|0}else j=b;c[(c[h>>2]|0)+(j<<2)>>2]=f;c[d>>2]=(c[d>>2]|0)+1;i=e;return f|0}function af(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;e=a+40|0;f=c[e>>
2]|0;if((f|0)>0){g=c[a+32>>2]|0;h=f;f=0;while(1){j=g+(f<<2)|0;if((c[j>>2]|0)==(b|0)){c[j>>2]=-1;k=c[e>>2]|0}else k=h;f=f+1|0;if((f|0)>=(k|0))break;else h=k}}k=a+28|0;c[k>>2]=(c[k>>2]|0)+-1;mf(a,b);i=d;return}function bf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;if(!(of(a,b,d,e)|0)){i=f;return}e=a+40|0;d=c[e>>2]|0;g=a+36|0;h=a+32|0;if((d|0)==(c[g>>2]|0)){a=c[h>>2]|0;c[g>>2]=d<<1;g=Dm(d<<3)|0;c[h>>2]=g;Dn(g|0,a|0,c[e>>2]<<2|0)|0;Em(a);j=c[e>>2]|0}else j=d;c[(c[h>>2]|0)+(j<<2)>>2]=b;c[e>>
2]=(c[e>>2]|0)+1;i=f;return}function cf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=a+40|0;f=c[e>>2]|0;g=a+36|0;h=a+32|0;if((f|0)==(c[g>>2]|0)){a=c[h>>2]|0;c[g>>2]=f<<1;g=Dm(f<<3)|0;c[h>>2]=g;Dn(g|0,a|0,c[e>>2]<<2|0)|0;Em(a);j=c[e>>2]|0}else j=f;c[(c[h>>2]|0)+(j<<2)>>2]=b;c[e>>2]=(c[e>>2]|0)+1;i=d;return}function df(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;e=a+56|0;f=c[e>>2]|0;if((f|0)==(b|0)){i=d;return 1}g=a+52|0;h=c[g>>2]|0;j=a+48|0;k=a+44|0;if((h|0)==(c[j>>2]|0)){a=
c[k>>2]|0;c[j>>2]=h<<1;j=Dm(h<<4)|0;c[k>>2]=j;Dn(j|0,a|0,c[g>>2]<<3|0)|0;Em(a);l=c[e>>2]|0;m=c[g>>2]|0}else{l=f;m=h}h=c[k>>2]|0;c[h+(m<<3)>>2]=(l|0)>(b|0)?b:l;c[h+(m<<3)+4>>2]=(l|0)<(b|0)?b:l;c[g>>2]=m+1;i=d;return 1}function ef(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=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=i;j=a+60|0;c[j>>2]=0;k=b+12|0;l=+g[d+12>>2];m=+g[k>>2];n=+g[d+8>>2];o=+g[b+16>>2];p=e+12|0;q=+g[f+12>>2];r=+g[p>>2];s=+g[f+8>>2];t=+g[e+16>>2];u=+g[f>>2]+(q*r-s*t)-(+g[d>>
2]+(l*m-n*o));v=r*s+q*t+ +g[f+4>>2]-(m*n+l*o+ +g[d+4>>2]);o=+g[b+8>>2]+ +g[e+8>>2];if(u*u+v*v>o*o){i=h;return}c[a+56>>2]=0;e=k;k=c[e+4>>2]|0;b=a+48|0;c[b>>2]=c[e>>2];c[b+4>>2]=k;g[a+40>>2]=0;g[a+44>>2]=0;c[j>>2]=1;j=p;p=c[j+4>>2]|0;k=a;c[k>>2]=c[j>>2];c[k+4>>2]=p;c[a+16>>2]=0;i=h;return}function ff(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=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;h=i;j=a+60|0;c[j>>2]=0;l=e+12|0;m=+g[f+12>>2];n=+g[l>>2];o=+g[f+
8>>2];p=+g[e+16>>2];q=+g[f>>2]+(m*n-o*p)-+g[d>>2];r=n*o+m*p+ +g[f+4>>2]-+g[d+4>>2];p=+g[d+12>>2];m=+g[d+8>>2];o=q*p+r*m;n=p*r-q*m;m=+g[b+8>>2]+ +g[e+8>>2];e=c[b+148>>2]|0;do if((e|0)>0){d=0;f=0;q=-3.4028234663852886E38;while(1){r=(o-+g[b+(d<<3)+20>>2])*+g[b+(d<<3)+84>>2]+(n-+g[b+(d<<3)+24>>2])*+g[b+(d<<3)+88>>2];if(r>m){s=19;break}t=r>q;q=t?r:q;f=t?d:f;d=d+1|0;if((d|0)>=(e|0)){s=4;break}}if((s|0)==4){u=f;v=q<1.1920928955078125E-7;break}else if((s|0)==19){i=h;return}}else{u=0;v=1}while(0);s=u+1|0;
d=b+(u<<3)+20|0;t=c[d>>2]|0;w=c[d+4>>2]|0;r=(c[k>>2]=w,+g[k>>2]);d=b+(((s|0)<(e|0)?s:0)<<3)+20|0;s=c[d>>2]|0;e=c[d+4>>2]|0;p=(c[k>>2]=e,+g[k>>2]);if(v){c[j>>2]=1;c[a+56>>2]=1;v=b+(u<<3)+84|0;d=c[v+4>>2]|0;x=a+40|0;c[x>>2]=c[v>>2];c[x+4>>2]=d;y=(c[k>>2]=t,+g[k>>2]);z=+((y+(c[k>>2]=s,+g[k>>2]))*.5);y=+((r+p)*.5);d=a+48|0;g[d>>2]=z;g[d+4>>2]=y;d=l;x=c[d+4>>2]|0;v=a;c[v>>2]=c[d>>2];c[v+4>>2]=x;c[a+16>>2]=0;i=h;return}y=(c[k>>2]=t,+g[k>>2]);z=o-y;A=n-r;B=(c[k>>2]=s,+g[k>>2]);C=o-B;D=n-p;if(z*(B-y)+A*(p-
r)<=0){if(z*z+A*A>m*m){i=h;return}c[j>>2]=1;c[a+56>>2]=1;x=a+40|0;E=+z;F=+A;v=x;g[v>>2]=E;g[v+4>>2]=F;F=+Q(+(z*z+A*A));if(!(F<1.1920928955078125E-7)){E=1/F;g[x>>2]=z*E;g[a+44>>2]=A*E}x=a+48|0;c[x>>2]=t;c[x+4>>2]=w;w=l;x=c[w+4>>2]|0;t=a;c[t>>2]=c[w>>2];c[t+4>>2]=x;c[a+16>>2]=0;i=h;return}if(!(C*(y-B)+D*(r-p)<=0)){E=(y+B)*.5;B=(r+p)*.5;x=b+(u<<3)+84|0;if((o-E)*+g[x>>2]+(n-B)*+g[b+(u<<3)+88>>2]>m){i=h;return}n=+E;c[j>>2]=1;c[a+56>>2]=1;u=x;x=c[u+4>>2]|0;b=a+40|0;c[b>>2]=c[u>>2];c[b+4>>2]=x;E=+B;x=a+
48|0;g[x>>2]=n;g[x+4>>2]=E;x=l;b=c[x+4>>2]|0;u=a;c[u>>2]=c[x>>2];c[u+4>>2]=b;c[a+16>>2]=0;i=h;return}if(C*C+D*D>m*m){i=h;return}c[j>>2]=1;c[a+56>>2]=1;j=a+40|0;m=+C;E=+D;b=j;g[b>>2]=m;g[b+4>>2]=E;E=+Q(+(C*C+D*D));if(!(E<1.1920928955078125E-7)){m=1/E;g[j>>2]=C*m;g[a+44>>2]=D*m}j=a+48|0;c[j>>2]=s;c[j+4>>2]=e;e=l;l=c[e+4>>2]|0;j=a;c[j>>2]=c[e>>2];c[j+4>>2]=l;c[a+16>>2]=0;i=h;return}function gf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;c[a>>2]=-1;d=a+12|0;c[d>>2]=16;c[a+8>>2]=0;e=Dm(576)|0;f=a+4|0;
c[f>>2]=e;An(e|0,0,(c[d>>2]|0)*36|0)|0;e=(c[d>>2]|0)+-1|0;g=c[f>>2]|0;if((e|0)>0){f=0;do{h=f;f=f+1|0;c[g+(h*36|0)+20>>2]=f;c[g+(h*36|0)+32>>2]=-1;h=(c[d>>2]|0)+-1|0}while((f|0)<(h|0));j=h}else j=e;c[g+(j*36|0)+20>>2]=-1;c[g+(((c[d>>2]|0)+-1|0)*36|0)+32>>2]=-1;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;i=b;return}function hf(a){a=a|0;var b=0;b=i;Em(c[a+4>>2]|0);i=b;return}function jf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=i;d=a+16|0;e=c[d>>2]|0;f=a+4|0;g=c[f>>2]|0;if((e|
0)==-1){h=a+12|0;j=c[h>>2]|0;c[h>>2]=j<<1;k=Dm(j*72|0)|0;c[f>>2]=k;j=a+8|0;Dn(k|0,g|0,(c[j>>2]|0)*36|0)|0;Em(g);k=c[j>>2]|0;l=(c[h>>2]|0)+-1|0;m=c[f>>2]|0;if((k|0)<(l|0)){f=k;do{k=f;f=f+1|0;c[m+(k*36|0)+20>>2]=f;c[m+(k*36|0)+32>>2]=-1;k=(c[h>>2]|0)+-1|0}while((f|0)<(k|0));n=k}else n=l;c[m+(n*36|0)+20>>2]=-1;c[m+(((c[h>>2]|0)+-1|0)*36|0)+32>>2]=-1;h=c[j>>2]|0;c[d>>2]=h;o=j;p=m;q=h}else{o=a+8|0;p=g;q=e}e=p+(q*36|0)+20|0;c[d>>2]=c[e>>2];c[e>>2]=-1;c[p+(q*36|0)+24>>2]=-1;c[p+(q*36|0)+28>>2]=-1;c[p+(q*
36|0)+32>>2]=0;c[p+(q*36|0)+16>>2]=0;c[o>>2]=(c[o>>2]|0)+1;i=b;return q|0}function kf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0;e=i;f=jf(a)|0;h=a+4|0;j=+(+g[b>>2]+-.10000000149011612);k=+(+g[b+4>>2]+-.10000000149011612);l=(c[h>>2]|0)+(f*36|0)|0;g[l>>2]=j;g[l+4>>2]=k;k=+(+g[b+8>>2]+.10000000149011612);j=+(+g[b+12>>2]+.10000000149011612);b=(c[h>>2]|0)+(f*36|0)+8|0;g[b>>2]=k;g[b+4>>2]=j;b=c[h>>2]|0;c[b+(f*36|0)+16>>2]=d;c[b+(f*36|0)+32>>2]=0;lf(a,f);i=e;return f|0}function lf(a,b){a=a|0;b=
b|0;var d=0,e=0,f=0,h=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;d=i;e=a+24|0;c[e>>2]=(c[e>>2]|0)+1;e=c[a>>2]|0;if((e|0)==-1){c[a>>2]=b;c[(c[a+4>>2]|0)+(b*36|0)+20>>2]=-1;i=d;return}f=a+4|0;h=c[f>>2]|0;j=+g[h+(b*36|0)>>2];k=+g[h+(b*36|0)+4>>2];l=+g[h+(b*36|0)+8>>2];m=+g[h+(b*36|0)+12>>2];n=c[h+(e*36|0)+24>>2]|0;a:do if((n|0)==-1)o=e;else{p=n;q=e;while(1){r=c[h+(q*36|0)+28>>2]|0;s=+g[h+(q*36|0)+8>>2];t=+g[h+(q*36|0)>>2];u=+g[h+(q*36|0)+12>>
2];v=+g[h+(q*36|0)+4>>2];w=((s>l?s:l)-(t<j?t:j)+((u>m?u:m)-(v<k?v:k)))*2;x=w*2;y=(w-(s-t+(u-v))*2)*2;v=+g[h+(p*36|0)>>2];u=j<v?j:v;t=+g[h+(p*36|0)+4>>2];s=k<t?k:t;w=+g[h+(p*36|0)+8>>2];z=l>w?l:w;A=+g[h+(p*36|0)+12>>2];B=m>A?m:A;if((c[h+(p*36|0)+24>>2]|0)==-1)C=(z-u+(B-s))*2;else C=(z-u+(B-s))*2-(w-v+(A-t))*2;t=y+C;A=+g[h+(r*36|0)>>2];v=j<A?j:A;w=+g[h+(r*36|0)+4>>2];s=k<w?k:w;B=+g[h+(r*36|0)+8>>2];u=l>B?l:B;z=+g[h+(r*36|0)+12>>2];D=m>z?m:z;if((c[h+(r*36|0)+24>>2]|0)==-1)E=(u-v+(D-s))*2;else E=(u-v+
(D-s))*2-(B-A+(z-w))*2;w=y+E;if(x<t&x<w){o=q;break a}F=t<w?p:r;p=c[h+(F*36|0)+24>>2]|0;if((p|0)==-1){o=F;break}else q=F}}while(0);e=c[h+(o*36|0)+20>>2]|0;h=jf(a)|0;n=c[f>>2]|0;c[n+(h*36|0)+20>>2]=e;c[n+(h*36|0)+16>>2]=0;E=+g[n+(o*36|0)>>2];C=+g[n+(o*36|0)+4>>2];w=+(j<E?j:E);E=+(k<C?k:C);q=n+(h*36|0)|0;g[q>>2]=w;g[q+4>>2]=E;E=+g[n+(o*36|0)+8>>2];w=+g[n+(o*36|0)+12>>2];C=+(l>E?l:E);E=+(m>w?m:w);q=n+(h*36|0)+8|0;g[q>>2]=C;g[q+4>>2]=E;q=c[f>>2]|0;c[q+(h*36|0)+32>>2]=(c[q+(o*36|0)+32>>2]|0)+1;if((e|0)==
-1){c[q+(h*36|0)+24>>2]=o;c[q+(h*36|0)+28>>2]=b;c[q+(o*36|0)+20>>2]=h;n=q+(b*36|0)+20|0;c[n>>2]=h;c[a>>2]=h;G=c[n>>2]|0}else{n=q+(e*36|0)+24|0;if((c[n>>2]|0)==(o|0))c[n>>2]=h;else c[q+(e*36|0)+28>>2]=h;c[q+(h*36|0)+24>>2]=o;c[q+(h*36|0)+28>>2]=b;c[q+(o*36|0)+20>>2]=h;c[q+(b*36|0)+20>>2]=h;G=h}if((G|0)==-1){i=d;return}else H=G;do{G=pf(a,H)|0;h=c[f>>2]|0;b=c[h+(G*36|0)+24>>2]|0;q=c[h+(G*36|0)+28>>2]|0;o=c[h+(b*36|0)+32>>2]|0;e=c[h+(q*36|0)+32>>2]|0;c[h+(G*36|0)+32>>2]=((o|0)>(e|0)?o:e)+1;E=+g[h+(b*
36|0)>>2];C=+g[h+(q*36|0)>>2];w=+g[h+(b*36|0)+4>>2];m=+g[h+(q*36|0)+4>>2];l=+(E<C?E:C);C=+(w<m?w:m);e=h+(G*36|0)|0;g[e>>2]=l;g[e+4>>2]=C;C=+g[h+(b*36|0)+8>>2];l=+g[h+(q*36|0)+8>>2];m=+g[h+(b*36|0)+12>>2];w=+g[h+(q*36|0)+12>>2];E=+(C>l?C:l);l=+(m>w?m:w);q=h+(G*36|0)+8|0;g[q>>2]=E;g[q+4>>2]=l;H=c[(c[f>>2]|0)+(G*36|0)+20>>2]|0}while((H|0)!=-1);i=d;return}function mf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;nf(a,b);e=a+16|0;f=c[a+4>>2]|0;c[f+(b*36|0)+20>>2]=c[e>>2];c[f+(b*36|0)+32>>2]=-1;c[e>>2]=b;b=a+8|
0;c[b>>2]=(c[b>>2]|0)+-1;i=d;return}function nf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;if((c[a>>2]|0)==(b|0)){c[a>>2]=-1;i=d;return}e=a+4|0;f=c[e>>2]|0;h=c[f+(b*36|0)+20>>2]|0;j=f+(h*36|0)+20|0;k=c[j>>2]|0;l=c[f+(h*36|0)+24>>2]|0;if((l|0)==(b|0))m=c[f+(h*36|0)+28>>2]|0;else m=l;if((k|0)==-1){c[a>>2]=m;c[f+(m*36|0)+20>>2]=-1;l=a+16|0;c[j>>2]=c[l>>2];c[f+(h*36|0)+32>>2]=-1;c[l>>2]=h;l=a+8|0;c[l>>2]=(c[l>>2]|0)+-1;i=d;return}l=f+(k*36|0)+24|0;if((c[l>>2]|0)==(h|
0))c[l>>2]=m;else c[f+(k*36|0)+28>>2]=m;c[f+(m*36|0)+20>>2]=k;m=a+16|0;c[j>>2]=c[m>>2];c[f+(h*36|0)+32>>2]=-1;c[m>>2]=h;h=a+8|0;c[h>>2]=(c[h>>2]|0)+-1;h=k;do{k=pf(a,h)|0;m=c[e>>2]|0;f=c[m+(k*36|0)+24>>2]|0;j=c[m+(k*36|0)+28>>2]|0;n=+g[m+(f*36|0)>>2];o=+g[m+(j*36|0)>>2];p=+g[m+(f*36|0)+4>>2];q=+g[m+(j*36|0)+4>>2];r=+(n<o?n:o);o=+(p<q?p:q);l=m+(k*36|0)|0;g[l>>2]=r;g[l+4>>2]=o;o=+g[m+(f*36|0)+8>>2];r=+g[m+(j*36|0)+8>>2];q=+g[m+(f*36|0)+12>>2];p=+g[m+(j*36|0)+12>>2];n=+(o>r?o:r);r=+(q>p?q:p);l=m+(k*36|
0)+8|0;g[l>>2]=n;g[l+4>>2]=r;l=c[e>>2]|0;m=c[l+(f*36|0)+32>>2]|0;f=c[l+(j*36|0)+32>>2]|0;c[l+(k*36|0)+32>>2]=((m|0)>(f|0)?m:f)+1;h=c[l+(k*36|0)+20>>2]|0}while((h|0)!=-1);i=d;return}function of(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=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;f=i;h=a+4|0;j=c[h>>2]|0;if(((+g[j+(b*36|0)>>2]<=+g[d>>2]?+g[j+(b*36|0)+4>>2]<=+g[d+4>>2]:0)?+g[d+8>>2]<=+g[j+(b*36|0)+8>>2]:0)?+g[d+12>>2]<=+g[j+(b*36|0)+12>>2]:0){k=0;i=f;return k|0}nf(a,b);j=d;l=+g[j+4>>2];m=d+
8|0;n=+g[m+4>>2];o=+g[j>>2]+-.10000000149011612;p=l+-.10000000149011612;l=+g[m>>2]+.10000000149011612;q=n+.10000000149011612;n=+g[e>>2]*2;r=+g[e+4>>2]*2;if(n<0){s=l;t=o+n}else{s=n+l;t=o}o=+t;t=+s;if(r<0){u=p+r;v=q}else{u=p;v=r+q}e=c[h>>2]|0;q=+u;h=e+(b*36|0)|0;g[h>>2]=o;g[h+4>>2]=q;q=+v;h=e+(b*36|0)+8|0;g[h>>2]=t;g[h+4>>2]=q;lf(a,b);k=1;i=f;return k|0}function pf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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,J=0,K=0;d=i;e=c[a+4>>2]|0;f=e+(b*36|0)|0;h=e+(b*36|0)+24|0;j=c[h>>2]|0;if((j|0)==-1){k=b;i=d;return k|0}l=e+(b*36|0)+32|0;if((c[l>>2]|0)<2){k=b;i=d;return k|0}m=e+(b*36|0)+28|0;n=c[m>>2]|0;o=e+(j*36|0)|0;p=e+(n*36|0)|0;q=e+(n*36|0)+32|0;r=e+(j*36|0)+32|0;s=(c[q>>2]|0)-(c[r>>2]|0)|0;if((s|0)>1){t=e+(n*36|0)+24|0;u=c[t>>2]|0;v=e+(n*36|0)+28|0;w=c[v>>2]|0;x=e+(u*36|0)|0;y=e+(w*36|0)|0;c[t>>2]=b;t=e+(b*36|0)+20|0;z=e+(n*36|0)+20|0;c[z>>2]=c[t>>2];c[t>>2]=n;t=c[z>>2]|0;do if((t|0)!=-1){z=e+(t*36|
0)+24|0;if((c[z>>2]|0)==(b|0)){c[z>>2]=n;break}else{c[e+(t*36|0)+28>>2]=n;break}}else c[a>>2]=n;while(0);t=e+(u*36|0)+32|0;z=e+(w*36|0)+32|0;if((c[t>>2]|0)>(c[z>>2]|0)){c[v>>2]=u;c[m>>2]=w;c[e+(w*36|0)+20>>2]=b;A=+g[o>>2];B=+g[y>>2];C=A<B?A:B;B=+g[e+(j*36|0)+4>>2];A=+g[e+(w*36|0)+4>>2];D=+C;E=+(B<A?B:A);F=f;g[F>>2]=D;g[F+4>>2]=E;E=+g[e+(j*36|0)+8>>2];D=+g[e+(w*36|0)+8>>2];A=+g[e+(j*36|0)+12>>2];B=+g[e+(w*36|0)+12>>2];G=+(E>D?E:D);D=+(A>B?A:B);F=e+(b*36|0)+8|0;g[F>>2]=G;g[F+4>>2]=D;D=+g[x>>2];G=+g[e+
(b*36|0)+4>>2];B=+g[e+(u*36|0)+4>>2];A=+(C<D?C:D);D=+(G<B?G:B);F=p;g[F>>2]=A;g[F+4>>2]=D;D=+g[e+(b*36|0)+8>>2];A=+g[e+(u*36|0)+8>>2];B=+g[e+(b*36|0)+12>>2];G=+g[e+(u*36|0)+12>>2];C=+(D>A?D:A);A=+(B>G?B:G);F=e+(n*36|0)+8|0;g[F>>2]=C;g[F+4>>2]=A;F=c[r>>2]|0;H=c[z>>2]|0;I=((F|0)>(H|0)?F:H)+1|0;c[l>>2]=I;H=c[t>>2]|0;J=(I|0)>(H|0)?I:H}else{c[v>>2]=w;c[m>>2]=u;c[e+(u*36|0)+20>>2]=b;A=+g[o>>2];C=+g[x>>2];G=A<C?A:C;C=+g[e+(j*36|0)+4>>2];A=+g[e+(u*36|0)+4>>2];B=+G;D=+(C<A?C:A);x=f;g[x>>2]=B;g[x+4>>2]=D;D=
+g[e+(j*36|0)+8>>2];B=+g[e+(u*36|0)+8>>2];A=+g[e+(j*36|0)+12>>2];C=+g[e+(u*36|0)+12>>2];E=+(D>B?D:B);B=+(A>C?A:C);u=e+(b*36|0)+8|0;g[u>>2]=E;g[u+4>>2]=B;B=+g[y>>2];E=+g[e+(b*36|0)+4>>2];C=+g[e+(w*36|0)+4>>2];A=+(G<B?G:B);B=+(E<C?E:C);y=p;g[y>>2]=A;g[y+4>>2]=B;B=+g[e+(b*36|0)+8>>2];A=+g[e+(w*36|0)+8>>2];C=+g[e+(b*36|0)+12>>2];E=+g[e+(w*36|0)+12>>2];G=+(B>A?B:A);A=+(C>E?C:E);w=e+(n*36|0)+8|0;g[w>>2]=G;g[w+4>>2]=A;w=c[r>>2]|0;y=c[t>>2]|0;t=((w|0)>(y|0)?w:y)+1|0;c[l>>2]=t;y=c[z>>2]|0;J=(t|0)>(y|0)?t:
y}c[q>>2]=J+1;k=n;i=d;return k|0}if((s|0)>=-1){k=b;i=d;return k|0}s=e+(j*36|0)+24|0;J=c[s>>2]|0;y=e+(j*36|0)+28|0;t=c[y>>2]|0;z=e+(J*36|0)|0;w=e+(t*36|0)|0;c[s>>2]=b;s=e+(b*36|0)+20|0;u=e+(j*36|0)+20|0;c[u>>2]=c[s>>2];c[s>>2]=j;s=c[u>>2]|0;do if((s|0)!=-1){u=e+(s*36|0)+24|0;if((c[u>>2]|0)==(b|0)){c[u>>2]=j;break}else{c[e+(s*36|0)+28>>2]=j;break}}else c[a>>2]=j;while(0);a=e+(J*36|0)+32|0;s=e+(t*36|0)+32|0;if((c[a>>2]|0)>(c[s>>2]|0)){c[y>>2]=J;c[h>>2]=t;c[e+(t*36|0)+20>>2]=b;A=+g[p>>2];G=+g[w>>2];E=
A<G?A:G;G=+g[e+(n*36|0)+4>>2];A=+g[e+(t*36|0)+4>>2];C=+E;B=+(G<A?G:A);u=f;g[u>>2]=C;g[u+4>>2]=B;B=+g[e+(n*36|0)+8>>2];C=+g[e+(t*36|0)+8>>2];A=+g[e+(n*36|0)+12>>2];G=+g[e+(t*36|0)+12>>2];D=+(B>C?B:C);C=+(A>G?A:G);u=e+(b*36|0)+8|0;g[u>>2]=D;g[u+4>>2]=C;C=+g[z>>2];D=+g[e+(b*36|0)+4>>2];G=+g[e+(J*36|0)+4>>2];A=+(E<C?E:C);C=+(D<G?D:G);u=o;g[u>>2]=A;g[u+4>>2]=C;C=+g[e+(b*36|0)+8>>2];A=+g[e+(J*36|0)+8>>2];G=+g[e+(b*36|0)+12>>2];D=+g[e+(J*36|0)+12>>2];E=+(C>A?C:A);A=+(G>D?G:D);u=e+(j*36|0)+8|0;g[u>>2]=E;
g[u+4>>2]=A;u=c[q>>2]|0;x=c[s>>2]|0;m=((u|0)>(x|0)?u:x)+1|0;c[l>>2]=m;x=c[a>>2]|0;K=(m|0)>(x|0)?m:x}else{c[y>>2]=t;c[h>>2]=J;c[e+(J*36|0)+20>>2]=b;A=+g[p>>2];E=+g[z>>2];D=A<E?A:E;E=+g[e+(n*36|0)+4>>2];A=+g[e+(J*36|0)+4>>2];G=+D;C=+(E<A?E:A);z=f;g[z>>2]=G;g[z+4>>2]=C;C=+g[e+(n*36|0)+8>>2];G=+g[e+(J*36|0)+8>>2];A=+g[e+(n*36|0)+12>>2];E=+g[e+(J*36|0)+12>>2];B=+(C>G?C:G);G=+(A>E?A:E);J=e+(b*36|0)+8|0;g[J>>2]=B;g[J+4>>2]=G;G=+g[w>>2];B=+g[e+(b*36|0)+4>>2];E=+g[e+(t*36|0)+4>>2];A=+(D<G?D:G);G=+(B<E?B:E);
w=o;g[w>>2]=A;g[w+4>>2]=G;G=+g[e+(b*36|0)+8>>2];A=+g[e+(t*36|0)+8>>2];E=+g[e+(b*36|0)+12>>2];B=+g[e+(t*36|0)+12>>2];D=+(G>A?G:A);A=+(E>B?E:B);t=e+(j*36|0)+8|0;g[t>>2]=D;g[t+4>>2]=A;t=c[q>>2]|0;q=c[a>>2]|0;a=((t|0)>(q|0)?t:q)+1|0;c[l>>2]=a;l=c[s>>2]|0;K=(a|0)>(l|0)?a:l}c[r>>2]=K+1;k=j;i=d;return k|0}function qf(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=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,J=0,K=0;j=i;l=b+60|0;c[l>>2]=0;m=f+12|0;n=+g[h+
12>>2];o=+g[m>>2];p=+g[h+8>>2];q=+g[f+16>>2];r=+g[h>>2]+(n*o-p*q)-+g[e>>2];s=o*p+n*q+ +g[h+4>>2]-+g[e+4>>2];q=+g[e+12>>2];n=+g[e+8>>2];p=r*q+s*n;o=q*s-r*n;e=d+12|0;h=c[e>>2]|0;t=c[e+4>>2]|0;n=(c[k>>2]=t,+g[k>>2]);e=d+20|0;u=c[e>>2]|0;v=c[e+4>>2]|0;r=(c[k>>2]=v,+g[k>>2]);s=(c[k>>2]=u,+g[k>>2]);q=(c[k>>2]=h,+g[k>>2]);w=s-q;x=r-n;y=w*(s-p)+x*(r-o);z=p-q;A=o-n;B=z*w+A*x;C=+g[d+8>>2]+ +g[f+8>>2];if(B<=0){if(z*z+A*A>C*C){i=j;return}if((a[d+44>>0]|0)!=0?(f=d+28|0,D=+g[f>>2],(q-p)*(q-D)+(n-o)*(n-+g[f+4>>
2])>0):0){i=j;return}c[l>>2]=1;c[b+56>>2]=0;g[b+40>>2]=0;g[b+44>>2]=0;f=b+48|0;c[f>>2]=h;c[f+4>>2]=t;f=b+16|0;c[f>>2]=0;a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=0;f=m;e=c[f+4>>2]|0;E=b;c[E>>2]=c[f>>2];c[E+4>>2]=e;i=j;return}if(y<=0){D=p-s;F=o-r;if(D*D+F*F>C*C){i=j;return}if((a[d+45>>0]|0)!=0?(e=d+36|0,G=+g[e>>2],D*(G-s)+F*(+g[e+4>>2]-r)>0):0){i=j;return}c[l>>2]=1;c[b+56>>2]=0;g[b+40>>2]=0;g[b+44>>2]=0;e=b+48|0;c[e>>2]=u;c[e+4>>2]=v;v=b+16|0;c[v>>2]=0;a[v>>0]=1;a[v+1>>0]=0;a[v+2>>0]=0;a[v+3>>0]=
0;v=m;e=c[v+4>>2]|0;u=b;c[u>>2]=c[v>>2];c[u+4>>2]=e;i=j;return}F=1/(w*w+x*x);G=p-(q*y+s*B)*F;s=o-(n*y+r*B)*F;if(G*G+s*s>C*C){i=j;return}C=-x;if(w*A+z*C<0){H=x;I=-w}else{H=C;I=w}w=+Q(+(H*H+I*I));if(w<1.1920928955078125E-7){J=H;K=I}else{C=1/w;J=H*C;K=I*C}C=+J;c[l>>2]=1;c[b+56>>2]=1;J=+K;l=b+40|0;g[l>>2]=C;g[l+4>>2]=J;l=b+48|0;c[l>>2]=h;c[l+4>>2]=t;t=b+16|0;c[t>>2]=0;a[t>>0]=0;a[t+1>>0]=0;a[t+2>>0]=1;a[t+3>>0]=0;t=m;m=c[t+4>>2]|0;l=b;c[l>>2]=c[t>>2];c[l+4>>2]=m;i=j;return}function rf(b,d,e,f,h,j){b=
b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var 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,J=0,K=0,L=0,M=0,N=0,O=0,P=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;l=i;i=i+144|0;m=l+128|0;n=l+24|0;o=l+72|0;p=l+48|0;q=l;r=b+132|0;s=+g[f+12>>2];t=+g[j+8>>2];u=+g[f+8>>2];v=+g[j+12>>2];w=s*t-u*v;x=+w;y=
t*u+s*v;v=+y;t=+g[j>>2]-+g[f>>2];z=+g[j+4>>2]-+g[f+4>>2];A=s*t+u*z;B=s*z-u*t;t=+A;u=+B;f=r;g[f>>2]=t;g[f+4>>2]=u;f=b+140|0;g[f>>2]=x;g[f+4>>2]=v;f=b+144|0;v=+g[h+12>>2];j=b+140|0;x=+g[h+16>>2];u=A+(y*v-w*x);C=b+136|0;A=v*w+y*x+B;B=+u;x=+A;D=b+148|0;g[D>>2]=B;g[D+4>>2]=x;D=e+28|0;E=c[D>>2]|0;F=c[D+4>>2]|0;D=b+156|0;c[D>>2]=E;c[D+4>>2]=F;D=b+164|0;G=e+12|0;H=c[G>>2]|0;I=c[G+4>>2]|0;G=D;c[G>>2]=H;c[G+4>>2]=I;G=b+172|0;J=e+20|0;K=c[J>>2]|0;L=c[J+4>>2]|0;J=G;c[J>>2]=K;c[J+4>>2]=L;J=e+36|0;M=c[J>>2]|0;
N=c[J+4>>2]|0;J=b+180|0;c[J>>2]=M;c[J+4>>2]=N;J=(a[e+44>>0]|0)!=0;O=(a[e+45>>0]|0)!=0;x=(c[k>>2]=K,+g[k>>2]);B=(c[k>>2]=H,+g[k>>2]);y=x-B;w=(c[k>>2]=L,+g[k>>2]);L=b+168|0;v=(c[k>>2]=I,+g[k>>2]);t=w-v;z=+Q(+(y*y+t*t));s=(c[k>>2]=E,+g[k>>2]);P=(c[k>>2]=F,+g[k>>2]);R=(c[k>>2]=M,+g[k>>2]);S=(c[k>>2]=N,+g[k>>2]);if(z<1.1920928955078125E-7){T=y;U=t}else{V=1/z;T=y*V;U=t*V}N=b+196|0;V=-T;g[N>>2]=U;M=b+200|0;g[M>>2]=V;t=(u-B)*U+(A-v)*V;if(J){V=B-s;B=v-P;v=+Q(+(V*V+B*B));if(v<1.1920928955078125E-7){W=V;X=B}else{y=
1/v;W=V*y;X=B*y}y=-W;g[b+188>>2]=X;g[b+192>>2]=y;Y=U*W-T*X>=0;Z=(u-s)*X+(A-P)*y}else{Y=0;Z=0}a:do if(!O){if(!J){F=t>=0;a[b+248>>0]=F&1;E=b+212|0;if(F){_=E;$=64;break}else{aa=E;$=65;break}}E=Z>=0;if(Y){if(!E){F=t>=0;a[b+248>>0]=F&1;I=b+212|0;if(F)ba=I;else{y=+-U;P=+T;F=I;g[F>>2]=y;g[F+4>>2]=P;F=N;I=c[F>>2]|0;H=c[F+4>>2]|0;F=b+228|0;c[F>>2]=I;c[F+4>>2]=H;H=b+236|0;g[H>>2]=-(c[k>>2]=I,+g[k>>2]);g[H+4>>2]=P;break}}else{a[b+248>>0]=1;ba=b+212|0}H=N;I=c[H+4>>2]|0;F=ba;c[F>>2]=c[H>>2];c[F+4>>2]=I;I=b+188|
0;F=c[I+4>>2]|0;H=b+228|0;c[H>>2]=c[I>>2];c[H+4>>2]=F;P=+-+g[N>>2];y=+-+g[M>>2];F=b+236|0;g[F>>2]=P;g[F+4>>2]=y;break}else{if(E){E=t>=0;a[b+248>>0]=E&1;F=b+212|0;if(E){E=N;H=c[E>>2]|0;I=c[E+4>>2]|0;E=F;c[E>>2]=H;c[E+4>>2]=I;E=b+228|0;c[E>>2]=H;c[E+4>>2]=I;y=+-(c[k>>2]=H,+g[k>>2]);P=+T;H=b+236|0;g[H>>2]=y;g[H+4>>2]=P;break}else ca=F}else{a[b+248>>0]=0;ca=b+212|0}P=+-U;y=+T;F=ca;g[F>>2]=P;g[F+4>>2]=y;F=N;H=c[F+4>>2]|0;I=b+228|0;c[I>>2]=c[F>>2];c[I+4>>2]=H;y=+-+g[b+188>>2];P=+-+g[b+192>>2];H=b+236|0;
g[H>>2]=y;g[H+4>>2]=P;break}}else{P=R-x;y=S-w;X=+Q(+(P*P+y*y));if(X<1.1920928955078125E-7){da=P;ea=y}else{s=1/X;da=P*s;ea=y*s}s=-da;H=b+204|0;g[H>>2]=ea;I=b+208|0;g[I>>2]=s;F=T*ea-U*da>0;y=(u-x)*ea+(A-w)*s;if(!J){E=t>=0;if(!O){a[b+248>>0]=E&1;K=b+212|0;if(E){_=K;$=64;break}else{aa=K;$=65;break}}if(F){if(!E){K=y>=0;a[b+248>>0]=K&1;e=b+212|0;if(K)fa=e;else{s=+-U;P=+T;K=e;g[K>>2]=s;g[K+4>>2]=P;K=b+228|0;g[K>>2]=s;g[K+4>>2]=P;K=N;e=c[K+4>>2]|0;ga=b+236|0;c[ga>>2]=c[K>>2];c[ga+4>>2]=e;break}}else{a[b+
248>>0]=1;fa=b+212|0}e=N;ga=c[e+4>>2]|0;K=fa;c[K>>2]=c[e>>2];c[K+4>>2]=ga;P=+-+g[N>>2];s=+-+g[M>>2];ga=b+228|0;g[ga>>2]=P;g[ga+4>>2]=s;ga=b+204|0;K=c[ga+4>>2]|0;e=b+236|0;c[e>>2]=c[ga>>2];c[e+4>>2]=K;break}else{if(E){E=y>=0;a[b+248>>0]=E&1;K=b+212|0;if(E){E=N;e=c[E>>2]|0;ga=c[E+4>>2]|0;E=K;c[E>>2]=e;c[E+4>>2]=ga;s=+-(c[k>>2]=e,+g[k>>2]);P=+T;E=b+228|0;g[E>>2]=s;g[E+4>>2]=P;E=b+236|0;c[E>>2]=e;c[E+4>>2]=ga;break}else ha=K}else{a[b+248>>0]=0;ha=b+212|0}P=+-U;s=+T;K=ha;g[K>>2]=P;g[K+4>>2]=s;s=+-+g[b+
204>>2];P=+-+g[b+208>>2];K=b+228|0;g[K>>2]=s;g[K+4>>2]=P;K=N;ga=c[K+4>>2]|0;E=b+236|0;c[E>>2]=c[K>>2];c[E+4>>2]=ga;break}}if(Y&F){if(!(Z>=0|t>=0)){ga=y>=0;a[b+248>>0]=ga&1;E=b+212|0;if(ga)ia=E;else{P=+-U;s=+T;ga=E;g[ga>>2]=P;g[ga+4>>2]=s;ga=b+228|0;g[ga>>2]=P;g[ga+4>>2]=s;ga=b+236|0;g[ga>>2]=P;g[ga+4>>2]=s;break}}else{a[b+248>>0]=1;ia=b+212|0}ga=N;E=c[ga+4>>2]|0;K=ia;c[K>>2]=c[ga>>2];c[K+4>>2]=E;E=b+188|0;K=c[E+4>>2]|0;ga=b+228|0;c[ga>>2]=c[E>>2];c[ga+4>>2]=K;K=b+204|0;ga=c[K+4>>2]|0;E=b+236|0;c[E>>
2]=c[K>>2];c[E+4>>2]=ga;break}if(Y){do if(!(Z>=0)){if(t>=0){ga=y>=0;a[b+248>>0]=ga&1;E=b+212|0;if(ga){ja=E;break}else ka=E}else{a[b+248>>0]=0;ka=b+212|0}s=+-U;P=+T;E=ka;g[E>>2]=s;g[E+4>>2]=P;P=+-+g[H>>2];s=+-+g[I>>2];E=b+228|0;g[E>>2]=P;g[E+4>>2]=s;s=+-+g[N>>2];P=+-+g[M>>2];E=b+236|0;g[E>>2]=s;g[E+4>>2]=P;break a}else{a[b+248>>0]=1;ja=b+212|0}while(0);E=N;ga=c[E+4>>2]|0;K=ja;c[K>>2]=c[E>>2];c[K+4>>2]=ga;ga=b+188|0;K=c[ga+4>>2]|0;E=b+228|0;c[E>>2]=c[ga>>2];c[E+4>>2]=K;K=N;E=c[K+4>>2]|0;ga=b+236|0;
c[ga>>2]=c[K>>2];c[ga+4>>2]=E;break}if(!F){if(Z>=0&t>=0){E=y>=0;a[b+248>>0]=E&1;ga=b+212|0;if(E){E=N;K=c[E>>2]|0;e=c[E+4>>2]|0;E=ga;c[E>>2]=K;c[E+4>>2]=e;E=b+228|0;c[E>>2]=K;c[E+4>>2]=e;E=b+236|0;c[E>>2]=K;c[E+4>>2]=e;break}else la=ga}else{a[b+248>>0]=0;la=b+212|0}P=+-U;s=+T;ga=la;g[ga>>2]=P;g[ga+4>>2]=s;s=+-+g[H>>2];P=+-+g[I>>2];ga=b+228|0;g[ga>>2]=s;g[ga+4>>2]=P;P=+-+g[b+188>>2];s=+-+g[b+192>>2];ga=b+236|0;g[ga>>2]=P;g[ga+4>>2]=s;break}do if(!(y>=0)){if(Z>=0){ga=t>=0;a[b+248>>0]=ga&1;e=b+212|0;
if(ga){ma=e;break}else na=e}else{a[b+248>>0]=0;na=b+212|0}s=+-U;P=+T;e=na;g[e>>2]=s;g[e+4>>2]=P;P=+-+g[N>>2];s=+-+g[M>>2];e=b+228|0;g[e>>2]=P;g[e+4>>2]=s;s=+-+g[b+188>>2];P=+-+g[b+192>>2];e=b+236|0;g[e>>2]=s;g[e+4>>2]=P;break a}else{a[b+248>>0]=1;ma=b+212|0}while(0);I=N;H=c[I+4>>2]|0;F=ma;c[F>>2]=c[I>>2];c[F+4>>2]=H;H=N;F=c[H+4>>2]|0;I=b+228|0;c[I>>2]=c[H>>2];c[I+4>>2]=F;F=b+204|0;I=c[F+4>>2]|0;H=b+236|0;c[H>>2]=c[F>>2];c[H+4>>2]=I}while(0);if(($|0)==64){ma=N;na=c[ma>>2]|0;la=c[ma+4>>2]|0;ma=_;c[ma>>
2]=na;c[ma+4>>2]=la;t=+-(c[k>>2]=na,+g[k>>2]);Z=+T;na=b+228|0;g[na>>2]=t;g[na+4>>2]=Z;na=b+236|0;g[na>>2]=t;g[na+4>>2]=Z}else if(($|0)==65){Z=+-U;U=+T;na=aa;g[na>>2]=Z;g[na+4>>2]=U;na=N;aa=c[na>>2]|0;la=c[na+4>>2]|0;na=b+228|0;c[na>>2]=aa;c[na+4>>2]=la;na=b+236|0;c[na>>2]=aa;c[na+4>>2]=la}la=h+148|0;na=c[la>>2]|0;aa=b+128|0;c[aa>>2]=na;if((na|0)>0){ma=0;do{U=+g[f>>2];Z=+g[h+(ma<<3)+20>>2];T=+g[j>>2];t=+g[h+(ma<<3)+24>>2];w=+(+g[r>>2]+(U*Z-T*t));A=+(Z*T+U*t+ +g[C>>2]);_=b+(ma<<3)|0;g[_>>2]=w;g[_+4>>
2]=A;A=+g[f>>2];w=+g[h+(ma<<3)+84>>2];t=+g[j>>2];U=+g[h+(ma<<3)+88>>2];T=+(A*w-t*U);Z=+(w*t+A*U);_=b+(ma<<3)+64|0;g[_>>2]=T;g[_+4>>2]=Z;ma=ma+1|0}while((ma|0)<(c[la>>2]|0));oa=c[aa>>2]|0}else oa=na;na=b+244|0;g[na>>2]=.019999999552965164;la=d+60|0;c[la>>2]=0;ma=b+248|0;if((oa|0)<=0){i=l;return}Z=+g[b+164>>2];T=+g[L>>2];U=+g[b+212>>2];A=+g[b+216>>2];t=3.4028234663852886E38;L=0;do{w=U*(+g[b+(L<<3)>>2]-Z)+A*(+g[b+(L<<3)+4>>2]-T);t=w<t?w:t;L=L+1|0}while((L|0)!=(oa|0));if(t>.019999999552965164){i=l;return}sf(m,
b);oa=c[m>>2]|0;if(oa){T=+g[m+8>>2];if(T>+g[na>>2]){i=l;return}if(T>t*.9800000190734863+.0010000000474974513){L=c[m+4>>2]|0;m=d+56|0;if((oa|0)==1){pa=n;qa=m;$=78}else{c[m>>2]=2;m=D;oa=c[m+4>>2]|0;_=n;c[_>>2]=c[m>>2];c[_+4>>2]=oa;oa=n+8|0;a[oa>>0]=0;_=L&255;a[oa+1>>0]=_;a[oa+2>>0]=0;a[oa+3>>0]=1;oa=G;m=c[oa+4>>2]|0;ja=n+12|0;c[ja>>2]=c[oa>>2];c[ja+4>>2]=m;m=n+20|0;a[m>>0]=0;a[m+1>>0]=_;a[m+2>>0]=0;a[m+3>>0]=1;c[o>>2]=L;m=L+1|0;_=(m|0)<(c[aa>>2]|0)?m:0;c[o+4>>2]=_;m=b+(L<<3)|0;ja=c[m>>2]|0;oa=c[m+4>>
2]|0;m=o+8|0;c[m>>2]=ja;c[m+4>>2]=oa;m=b+(_<<3)|0;_=c[m>>2]|0;ka=c[m+4>>2]|0;m=o+16|0;c[m>>2]=_;c[m+4>>2]=ka;m=b+(L<<3)+64|0;Y=c[m>>2]|0;ia=c[m+4>>2]|0;m=o+24|0;c[m>>2]=Y;c[m+4>>2]=ia;ra=ka;sa=_;ta=oa;ua=ja;va=Y;wa=ia;xa=n;ya=L;za=0}}else $=76}else $=76;if(($|0)==76){pa=n;qa=d+56|0;$=78}do if(($|0)==78){c[qa>>2]=1;L=c[aa>>2]|0;if((L|0)>1){t=+g[b+216>>2];T=+g[b+212>>2];ia=0;A=T*+g[b+64>>2]+t*+g[b+68>>2];Y=1;while(1){Z=T*+g[b+(Y<<3)+64>>2]+t*+g[b+(Y<<3)+68>>2];ja=Z<A;oa=ja?Y:ia;Y=Y+1|0;if((Y|0)>=(L|
0)){Aa=oa;break}else{ia=oa;A=ja?Z:A}}}else Aa=0;ia=Aa+1|0;Y=(ia|0)<(L|0)?ia:0;ia=b+(Aa<<3)|0;ja=c[ia+4>>2]|0;oa=n;c[oa>>2]=c[ia>>2];c[oa+4>>2]=ja;ja=n+8|0;a[ja>>0]=0;a[ja+1>>0]=Aa;a[ja+2>>0]=1;a[ja+3>>0]=0;ja=b+(Y<<3)|0;oa=c[ja+4>>2]|0;ia=n+12|0;c[ia>>2]=c[ja>>2];c[ia+4>>2]=oa;oa=n+20|0;a[oa>>0]=0;a[oa+1>>0]=Y;a[oa+2>>0]=1;a[oa+3>>0]=0;if(!(a[ma>>0]|0)){c[o>>2]=1;c[o+4>>2]=0;oa=G;Y=c[oa>>2]|0;ia=c[oa+4>>2]|0;oa=o+8|0;c[oa>>2]=Y;c[oa+4>>2]=ia;oa=D;ja=c[oa>>2]|0;_=c[oa+4>>2]|0;oa=o+16|0;c[oa>>2]=ja;
c[oa+4>>2]=_;oa=(g[k>>2]=-+g[N>>2],c[k>>2]|0);ka=(g[k>>2]=-+g[M>>2],c[k>>2]|0);m=o+24|0;c[m>>2]=oa;c[m+4>>2]=ka;ra=_;sa=ja;ta=ia;ua=Y;va=oa;wa=ka;xa=pa;ya=1;za=1;break}else{c[o>>2]=0;c[o+4>>2]=1;ka=D;oa=c[ka>>2]|0;Y=c[ka+4>>2]|0;ka=o+8|0;c[ka>>2]=oa;c[ka+4>>2]=Y;ka=G;ia=c[ka>>2]|0;ja=c[ka+4>>2]|0;ka=o+16|0;c[ka>>2]=ia;c[ka+4>>2]=ja;ka=N;_=c[ka>>2]|0;m=c[ka+4>>2]|0;ka=o+24|0;c[ka>>2]=_;c[ka+4>>2]=m;ra=ja;sa=ia;ta=Y;ua=oa;va=_;wa=m;xa=pa;ya=0;za=1;break}}while(0);A=(c[k>>2]=wa,+g[k>>2]);t=(c[k>>2]=
va,+g[k>>2]);T=(c[k>>2]=ua,+g[k>>2]);Z=(c[k>>2]=ta,+g[k>>2]);U=(c[k>>2]=sa,+g[k>>2]);w=(c[k>>2]=ra,+g[k>>2]);ra=o+32|0;sa=o+24|0;ta=o+28|0;ea=-t;g[ra>>2]=A;g[o+36>>2]=ea;ua=o+44|0;t=-A;wa=ua;g[wa>>2]=t;c[wa+4>>2]=va;wa=o+8|0;pa=o+12|0;x=A*T+Z*ea;g[o+40>>2]=x;N=o+52|0;g[N>>2]=U*t+(c[k>>2]=va,+g[k>>2])*w;if((xf(p,xa,ra,x,ya)|0)<2){i=l;return}if((xf(q,p,ua,+g[N>>2],c[o+4>>2]|0)|0)<2){i=l;return}N=d+40|0;if(za){za=sa;ua=c[za>>2]|0;p=c[za+4>>2]|0;za=N;c[za>>2]=ua;c[za+4>>2]=p;p=wa;za=c[p>>2]|0;ya=c[p+
4>>2]|0;p=d+48|0;c[p>>2]=za;c[p+4>>2]=ya;x=(c[k>>2]=za,+g[k>>2]);w=(c[k>>2]=ua,+g[k>>2]);t=+g[pa>>2];U=+g[ta>>2];ea=+g[q>>2];Z=+g[q+4>>2];T=+g[na>>2];if(!((ea-x)*w+(Z-t)*U<=T)){Ba=T;Ca=0}else{T=ea-+g[r>>2];ea=Z-+g[C>>2];Z=+g[f>>2];A=+g[j>>2];u=+(T*Z+ea*A);da=+(Z*ea-T*A);ua=d;g[ua>>2]=u;g[ua+4>>2]=da;c[d+16>>2]=c[q+8>>2];Ba=+g[na>>2];Ca=1}da=+g[q+12>>2];u=+g[q+16>>2];if(!((da-x)*w+(u-t)*U<=Ba))Da=Ca;else{Ba=da-+g[r>>2];da=u-+g[C>>2];u=+g[f>>2];U=+g[j>>2];t=+(Ba*u+da*U);w=+(u*da-Ba*U);j=d+(Ca*20|0)|
0;g[j>>2]=t;g[j+4>>2]=w;c[d+(Ca*20|0)+16>>2]=c[q+20>>2];Da=Ca+1|0}}else{Ca=c[o>>2]|0;o=h+(Ca<<3)+84|0;j=c[o+4>>2]|0;f=N;c[f>>2]=c[o>>2];c[f+4>>2]=j;j=h+(Ca<<3)+20|0;Ca=c[j+4>>2]|0;h=d+48|0;c[h>>2]=c[j>>2];c[h+4>>2]=Ca;w=+g[wa>>2];t=+g[sa>>2];U=+g[pa>>2];Ba=+g[ta>>2];da=+g[na>>2];if(!((+g[q>>2]-w)*t+(+g[q+4>>2]-U)*Ba<=da)){Ea=da;Fa=0}else{ta=q;pa=c[ta+4>>2]|0;sa=d;c[sa>>2]=c[ta>>2];c[sa+4>>2]=pa;pa=q+8|0;sa=d+16|0;a[sa+2>>0]=a[pa+3>>0]|0;a[sa+3>>0]=a[pa+2>>0]|0;a[sa>>0]=a[pa+1>>0]|0;a[sa+1>>0]=a[pa>>
0]|0;Ea=+g[na>>2];Fa=1}na=q+12|0;if(!((+g[na>>2]-w)*t+(+g[q+16>>2]-U)*Ba<=Ea))Da=Fa;else{pa=na;na=c[pa+4>>2]|0;sa=d+(Fa*20|0)|0;c[sa>>2]=c[pa>>2];c[sa+4>>2]=na;na=q+20|0;q=d+(Fa*20|0)+16|0;a[q+2>>0]=a[na+3>>0]|0;a[q+3>>0]=a[na+2>>0]|0;a[q>>0]=a[na+1>>0]|0;a[q+1>>0]=a[na>>0]|0;Da=Fa+1|0}}c[la>>2]=Da;i=l;return}function sf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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=i;c[a>>2]=0;e=a+4|0;c[e>>2]=-1;f=a+8|0;g[f>>
2]=-3.4028234663852886E38;h=+g[b+216>>2];j=+g[b+212>>2];k=c[b+128>>2]|0;if((k|0)<=0){i=d;return}l=+g[b+164>>2];m=+g[b+168>>2];n=+g[b+172>>2];o=+g[b+176>>2];p=+g[b+244>>2];q=b+228|0;r=b+232|0;s=b+236|0;t=b+240|0;u=-3.4028234663852886E38;v=0;while(1){w=+g[b+(v<<3)+64>>2];x=-w;y=-+g[b+(v<<3)+68>>2];z=+g[b+(v<<3)>>2];A=+g[b+(v<<3)+4>>2];B=(z-l)*x+(A-m)*y;C=(z-n)*x+(A-o)*y;D=B<C?B:C;if(D>p)break;if(!(h*w+j*y>=0))if(D>u?!((x-+g[q>>2])*j+(y-+g[r>>2])*h<-.03490658849477768):0)E=8;else F=u;else if(D>u?!((x-
+g[s>>2])*j+(y-+g[t>>2])*h<-.03490658849477768):0)E=8;else F=u;if((E|0)==8){E=0;c[a>>2]=2;c[e>>2]=v;g[f>>2]=D;F=D}G=v+1|0;if((G|0)<(k|0)){u=F;v=G}else{E=10;break}}if((E|0)==10){i=d;return}c[a>>2]=2;c[e>>2]=v;g[f>>2]=D;i=d;return}function tf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=i;i=i+256|0;rf(f,a,b,c,d,e);i=f;return}function uf(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var 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,J=0,K=0,L=
0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0;j=i;i=i+112|0;k=j+72|0;l=j+88|0;m=j;n=j+96|0;o=j+48|0;p=j+24|0;q=j+80|0;r=b+60|0;c[r>>2]=0;s=+g[d+8>>2]+ +g[f+8>>2];c[k>>2]=0;t=+vf(k,d,e,f,h);if(t>s){i=j;return}c[l>>2]=0;u=+vf(l,f,h,d,e);if(u>s){i=j;return}if(u>t+5.000000237487257E-4){t=+g[h>>2];u=+g[h+4>>2];v=+g[h+8>>2];w=+g[h+12>>2];x=+g[e>>2];y=+g[e+4>>2];z=+g[e+8>>2];A=+g[e+12>>2];B=c[l>>2]|0;c[b+56>>2]=2;C=t;D=u;E=w;F=v;G=A;H=z;I=x;J=y;K=B;L=1;M=f;N=d}else{y=+g[e>>2];x=+g[e+4>>2];z=+g[e+8>>2];A=+g[e+
12>>2];v=+g[h>>2];w=+g[h+4>>2];u=+g[h+8>>2];t=+g[h+12>>2];h=c[k>>2]|0;c[b+56>>2]=1;C=y;D=x;E=A;F=z;G=t;H=u;I=v;J=w;K=h;L=0;M=d;N=f}f=c[N+148>>2]|0;w=+g[M+(K<<3)+84>>2];v=+g[M+(K<<3)+88>>2];u=E*w-F*v;t=F*w+E*v;v=G*u+H*t;w=G*t-H*u;if((f|0)>0){d=0;h=0;u=3.4028234663852886E38;while(1){t=v*+g[N+(d<<3)+84>>2]+w*+g[N+(d<<3)+88>>2];k=t<u;e=k?d:h;d=d+1|0;if((d|0)==(f|0)){O=e;break}else{h=e;u=k?t:u}}}else O=0;h=O+1|0;d=(h|0)<(f|0)?h:0;u=+g[N+(O<<3)+20>>2];w=+g[N+(O<<3)+24>>2];v=+(I+(G*u-H*w));t=+(J+(H*u+G*
w));h=m;g[h>>2]=v;g[h+4>>2]=t;h=K&255;f=m+8|0;a[f>>0]=h;a[f+1>>0]=O;a[f+2>>0]=1;a[f+3>>0]=0;t=+g[N+(d<<3)+20>>2];v=+g[N+(d<<3)+24>>2];w=+(I+(G*t-H*v));u=+(J+(H*t+G*v));N=m+12|0;g[N>>2]=w;g[N+4>>2]=u;N=m+20|0;a[N>>0]=h;a[N+1>>0]=d;a[N+2>>0]=1;a[N+3>>0]=0;N=K+1|0;d=(N|0)<(c[M+148>>2]|0)?N:0;N=M+(K<<3)+20|0;u=+g[N>>2];w=+g[N+4>>2];N=M+(d<<3)+20|0;v=+g[N>>2];t=+g[N+4>>2];z=v-u;A=t-w;x=+Q(+(z*z+A*A));if(x<1.1920928955078125E-7){P=A;R=z}else{y=1/x;P=A*y;R=z*y}y=+P;z=E*R-F*P;A=E*P+F*R;g[n>>2]=z;g[n+4>>2]=
A;P=-z;x=C+(E*u-F*w);S=D+(F*u+E*w);T=+((u+v)*.5);u=x*A+S*P;g[q>>2]=P;g[q+4>>2]=-A;if((xf(o,m,q,s-(x*z+S*A),K)|0)<2){i=j;return}if((xf(p,o,n,s+((C+(E*v-F*t))*z+(D+(F*v+E*t))*A),d)|0)<2){i=j;return}E=+-R;d=b+40|0;g[d>>2]=y;g[d+4>>2]=E;E=+((w+t)*.5);d=b+48|0;g[d>>2]=T;g[d+4>>2]=E;E=+g[p>>2];T=+g[p+4>>2];d=!(A*E+T*P-u<=s);if(!(L<<24>>24)){if(d)U=0;else{t=E-I;w=T-J;y=+(G*t+H*w);R=+(G*w-H*t);L=b;g[L>>2]=y;g[L+4>>2]=R;c[b+16>>2]=c[p+8>>2];U=1}R=+g[p+12>>2];y=+g[p+16>>2];if(!(A*R+y*P-u<=s))V=U;else{t=R-I;
R=y-J;y=+(G*t+H*R);w=+(G*R-H*t);L=b+(U*20|0)|0;g[L>>2]=y;g[L+4>>2]=w;c[b+(U*20|0)+16>>2]=c[p+20>>2];V=U+1|0}}else{if(d)W=0;else{w=E-I;E=T-J;T=+(G*w+H*E);y=+(G*E-H*w);d=b;g[d>>2]=T;g[d+4>>2]=y;d=b+16|0;U=c[p+8>>2]|0;c[d>>2]=U;a[d>>0]=U>>>8;a[d+1>>0]=U;a[d+2>>0]=U>>>24;a[d+3>>0]=U>>>16;W=1}y=+g[p+12>>2];T=+g[p+16>>2];if(!(A*y+T*P-u<=s))V=W;else{s=y-I;I=T-J;J=+(G*s+H*I);T=+(G*I-H*s);U=b+(W*20|0)|0;g[U>>2]=J;g[U+4>>2]=T;U=b+(W*20|0)+16|0;b=c[p+20>>2]|0;c[U>>2]=b;a[U>>0]=b>>>8;a[U+1>>0]=b;a[U+2>>0]=b>>>
24;a[U+3>>0]=b>>>16;V=W+1|0}}c[r>>2]=V;i=j;return}function vf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=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;h=i;j=c[b+148>>2]|0;k=c[e+148>>2]|0;l=+g[f+12>>2];m=+g[d+8>>2];n=+g[f+8>>2];o=+g[d+12>>2];p=l*m-n*o;q=m*n+l*o;o=+g[d>>2]-+g[f>>2];m=+g[d+4>>2]-+g[f+4>>2];r=l*o+n*m;s=l*m-n*o;if((j|0)<=0){t=0;u=-3.4028234663852886E38;c[a>>2]=t;i=h;return+u}if((k|0)>0){v=0;w=0;x=-3.4028234663852886E38}else{f=0;d=0;o=-3.4028234663852886E38;
while(1){y=o<3.4028234663852886E38;n=y?3.4028234663852886E38:o;z=y?d:f;d=d+1|0;if((d|0)==(j|0)){t=z;u=n;break}else{f=z;o=n}}c[a>>2]=t;i=h;return+u}while(1){o=+g[b+(w<<3)+84>>2];n=+g[b+(w<<3)+88>>2];m=q*o-p*n;l=p*o+q*n;n=+g[b+(w<<3)+20>>2];o=+g[b+(w<<3)+24>>2];A=r+(q*n-p*o);B=s+(p*n+q*o);f=0;o=3.4028234663852886E38;do{n=m*(+g[e+(f<<3)+20>>2]-A)+l*(+g[e+(f<<3)+24>>2]-B);o=n<o?n:o;f=f+1|0}while((f|0)!=(k|0));f=o>x;B=f?o:x;d=f?w:v;w=w+1|0;if((w|0)==(j|0)){t=d;u=B;break}else{v=d;x=B}}c[a>>2]=t;i=h;return+u}
function wf(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;h=+h;var 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;j=i;k=b+60|0;if(!(c[k>>2]|0)){i=j;return}l=c[b+56>>2]|0;if(!l){g[a>>2]=1;m=a+4|0;g[m>>2]=0;n=+g[d+12>>2];o=+g[b+48>>2];p=+g[d+8>>2];q=+g[b+52>>2];r=+g[d>>2]+(n*o-p*q);s=o*p+n*q+ +g[d+4>>2];q=+g[f+12>>2];n=+g[b>>2];p=+g[f+8>>2];o=+g[b+4>>2];t=+g[f>>2]+(q*n-p*o);u=n*p+q*o+ +g[f+4>>2];o=r-t;q=s-u;if(o*o+q*q>1.4210854715202004E-14){q=t-r;o=u-s;p=+q;
n=+o;v=a;g[v>>2]=p;g[v+4>>2]=n;n=+Q(+(q*q+o*o));if(n<1.1920928955078125E-7){w=q;x=o}else{p=1/n;n=q*p;g[a>>2]=n;q=o*p;g[m>>2]=q;w=n;x=q}}else{w=1;x=0}q=r+w*e;r=s+x*e;s=t-w*h;t=u-x*h;u=+((q+s)*.5);n=+((r+t)*.5);m=a+8|0;g[m>>2]=u;g[m+4>>2]=n;g[a+24>>2]=w*(s-q)+x*(t-r);i=j;return}else if((l|0)==2){m=f+12|0;r=+g[m>>2];t=+g[b+40>>2];v=f+8|0;x=+g[v>>2];q=+g[b+44>>2];s=r*t-x*q;w=t*x+r*q;q=+s;r=+w;y=a;g[y>>2]=q;g[y+4>>2]=r;r=+g[m>>2];q=+g[b+48>>2];x=+g[v>>2];t=+g[b+52>>2];n=+g[f>>2]+(r*q-x*t);u=q*x+r*t+ +g[f+
4>>2];if((c[k>>2]|0)>0){v=d+12|0;m=d+8|0;y=d+4|0;z=a+4|0;t=s;r=w;A=0;while(1){x=+g[v>>2];q=+g[b+(A*20|0)>>2];p=+g[m>>2];o=+g[b+(A*20|0)+4>>2];B=+g[d>>2]+(x*q-p*o);C=q*p+x*o+ +g[y>>2];o=h-(t*(B-n)+(C-u)*r);x=B+t*o;p=C+r*o;o=B-t*e;B=C-r*e;C=+((o+x)*.5);q=+((B+p)*.5);D=a+(A<<3)+8|0;g[D>>2]=C;g[D+4>>2]=q;g[a+(A<<2)+24>>2]=+g[a>>2]*(o-x)+ +g[z>>2]*(B-p);A=A+1|0;p=+g[a>>2];B=+g[z>>2];if((A|0)>=(c[k>>2]|0)){E=p;F=B;break}else{t=p;r=B}}}else{E=s;F=w}w=+-E;E=+-F;A=a;g[A>>2]=w;g[A+4>>2]=E;i=j;return}else if((l|
0)==1){l=d+12|0;E=+g[l>>2];w=+g[b+40>>2];A=d+8|0;F=+g[A>>2];s=+g[b+44>>2];r=E*w-F*s;t=w*F+E*s;s=+r;E=+t;z=a;g[z>>2]=s;g[z+4>>2]=E;E=+g[l>>2];s=+g[b+48>>2];F=+g[A>>2];w=+g[b+52>>2];u=+g[d>>2]+(E*s-F*w);n=s*F+E*w+ +g[d+4>>2];if((c[k>>2]|0)<=0){i=j;return}d=f+12|0;A=f+8|0;l=f+4|0;z=a+4|0;w=r;r=t;y=0;while(1){t=+g[d>>2];E=+g[b+(y*20|0)>>2];F=+g[A>>2];s=+g[b+(y*20|0)+4>>2];B=+g[f>>2]+(t*E-F*s);p=E*F+t*s+ +g[l>>2];s=e-(w*(B-u)+(p-n)*r);t=B+w*s;F=p+r*s;s=B-w*h;B=p-r*h;p=+((s+t)*.5);E=+((B+F)*.5);m=a+(y<<
3)+8|0;g[m>>2]=p;g[m+4>>2]=E;g[a+(y<<2)+24>>2]=+g[a>>2]*(s-t)+ +g[z>>2]*(B-F);m=y+1|0;if((m|0)>=(c[k>>2]|0))break;w=+g[a>>2];r=+g[z>>2];y=m}i=j;return}else{i=j;return}}function xf(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=+f;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=i;k=+g[e>>2];l=+g[e+4>>2];e=d+4|0;m=k*+g[d>>2]+l*+g[e>>2]-f;n=d+12|0;o=d+16|0;p=k*+g[n>>2]+l*+g[o>>2]-f;if(!(m<=0))q=0;else{c[b+0>>2]=c[d+0>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];q=1}if(!(p<=0))r=q;else{s=b+(q*12|0)|0;c[s+0>>2]=
c[n+0>>2];c[s+4>>2]=c[n+4>>2];c[s+8>>2]=c[n+8>>2];r=q+1|0}if(!(m*p<0)){t=r;i=j;return t|0}f=m/(m-p);p=+g[d>>2];m=+g[e>>2];l=+(p+f*(+g[n>>2]-p));p=+(m+f*(+g[o>>2]-m));o=b+(r*12|0)|0;g[o>>2]=l;g[o+4>>2]=p;o=b+(r*12|0)+8|0;a[o>>0]=h;a[o+1>>0]=a[d+9>>0]|0;a[o+2>>0]=0;a[o+3>>0]=1;t=r+1|0;i=j;return t|0}function yf(d,e,f,h,j,k){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0;l=i;i=i+128|0;m=l+36|0;n=l+24|0;o=l;c[m+16>>2]=0;c[m+20>>2]=0;g[m+24>>2]=0;c[m+44>>2]=0;c[m+48>>2]=0;g[m+52>>2]=0;ke(m,d,
e);ke(m+28|0,f,h);h=m+56|0;c[h+0>>2]=c[j+0>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];j=m+72|0;c[j+0>>2]=c[k+0>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];a[m+88>>0]=1;b[n+4>>1]=0;me(o,n,m);i=l;return+g[o+16>>2]<1.1920928955078125E-6|0}function zf(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,j=0;h=i;j=a+40|0;c[j>>2]=b;c[a+44>>2]=d;c[a+48>>2]=e;c[a+28>>2]=0;c[a+36>>2]=0;c[a+32>>2]=0;c[a>>2]=f;c[a+4>>2]=g;c[a+8>>2]=Om(f,b<<2)|0;c[a+12>>2]=Om(c[a>>
2]|0,d<<2)|0;c[a+16>>2]=Om(c[a>>2]|0,e<<2)|0;c[a+24>>2]=Om(c[a>>2]|0,(c[j>>2]|0)*12|0)|0;c[a+20>>2]=Om(c[a>>2]|0,(c[j>>2]|0)*12|0)|0;i=h;return}function Af(a){a=a|0;var b=0;b=i;Qm(c[a>>2]|0,c[a+20>>2]|0);Qm(c[a>>2]|0,c[a+24>>2]|0);Qm(c[a>>2]|0,c[a+16>>2]|0);Qm(c[a>>2]|0,c[a+12>>2]|0);Qm(c[a>>2]|0,c[a+8>>2]|0);i=b;return}function Bf(d,f,h,j,l){d=d|0;f=f|0;h=h|0;j=j|0;l=l|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,R=
0,U=0,V=0,W=0,X=0,Y=0,Z=0;m=i;i=i+176|0;n=m+148|0;o=m;p=m+112|0;q=m+64|0;r=m+8|0;Am(o);s=+g[h>>2];t=d+28|0;if((c[t>>2]|0)>0){u=d+8|0;v=j+4|0;w=d+20|0;x=d+24|0;y=0;do{z=c[(c[u>>2]|0)+(y<<2)>>2]|0;A=z+60|0;B=c[A>>2]|0;C=c[A+4>>2]|0;D=+g[z+72>>2];A=z+80|0;E=c[A>>2]|0;F=+g[A+4>>2];G=+g[z+88>>2];A=z+52|0;c[A>>2]=B;c[A+4>>2]=C;g[z+68>>2]=D;if((c[z>>2]|0)==2){H=+g[z+156>>2];I=+g[z+136>>2];J=1/(s*+g[z+148>>2]+1);K=(F+s*(H*+g[v>>2]+I*+g[z+96>>2]))*J;L=(g[k>>2]=((c[k>>2]=E,+g[k>>2])+s*(H*+g[j>>2]+I*+g[z+92>>
2]))*J,c[k>>2]|0);M=(G+s*+g[z+144>>2]*+g[z+100>>2])*(1/(s*+g[z+152>>2]+1))}else{K=F;L=E;M=G}E=(c[w>>2]|0)+(y*12|0)|0;c[E>>2]=B;c[E+4>>2]=C;g[(c[w>>2]|0)+(y*12|0)+8>>2]=D;D=+K;C=(c[x>>2]|0)+(y*12|0)|0;c[C>>2]=L;g[C+4>>2]=D;g[(c[x>>2]|0)+(y*12|0)+8>>2]=M;y=y+1|0}while((y|0)<(c[t>>2]|0));N=x;O=w}else{N=d+24|0;O=d+20|0}c[p+0>>2]=c[h+0>>2];c[p+4>>2]=c[h+4>>2];c[p+8>>2]=c[h+8>>2];c[p+12>>2]=c[h+12>>2];c[p+16>>2]=c[h+16>>2];c[p+20>>2]=c[h+20>>2];c[p+24>>2]=c[h+24>>2];w=c[O>>2]|0;c[p+28>>2]=w;x=c[N>>2]|0;
c[p+32>>2]=x;c[q+0>>2]=c[h+0>>2];c[q+4>>2]=c[h+4>>2];c[q+8>>2]=c[h+8>>2];c[q+12>>2]=c[h+12>>2];c[q+16>>2]=c[h+16>>2];c[q+20>>2]=c[h+20>>2];c[q+24>>2]=c[h+24>>2];y=d+12|0;c[q+28>>2]=c[y>>2];L=d+36|0;c[q+32>>2]=c[L>>2];c[q+36>>2]=w;c[q+40>>2]=x;c[q+44>>2]=c[d>>2];Ji(r,q);Li(r);if(a[h+24>>0]|0)Mi(r);q=d+32|0;if((c[q>>2]|0)>0){x=d+16|0;w=0;do{j=c[(c[x>>2]|0)+(w<<2)>>2]|0;pb[c[(c[j>>2]|0)+32>>2]&63](j,p);w=w+1|0}while((w|0)<(c[q>>2]|0))}g[f+12>>2]=+Cm(o);w=h+12|0;if((c[w>>2]|0)>0){x=d+16|0;j=0;do{if((c[q>>
2]|0)>0){v=0;do{u=c[(c[x>>2]|0)+(v<<2)>>2]|0;pb[c[(c[u>>2]|0)+36>>2]&63](u,p);v=v+1|0}while((v|0)<(c[q>>2]|0))}Ni(r);j=j+1|0}while((j|0)<(c[w>>2]|0))}Oi(r);g[f+16>>2]=+Cm(o);if((c[t>>2]|0)>0){w=c[N>>2]|0;j=0;do{x=c[O>>2]|0;v=x+(j*12|0)|0;u=v;C=c[u>>2]|0;M=+g[u+4>>2];K=+g[x+(j*12|0)+8>>2];x=w+(j*12|0)|0;u=c[x>>2]|0;D=+g[x+4>>2];G=+g[w+(j*12|0)+8>>2];F=(c[k>>2]=u,+g[k>>2]);J=s*F;I=s*D;H=J*J+I*I;if(H>4){I=2/+Q(+H);P=(g[k>>2]=F*I,c[k>>2]|0);R=D*I}else{P=u;R=D}D=s*G;if(D*D>2.4674012660980225){if(D>0)U=
D;else U=-D;V=G*(1.5707963705062866/U)}else V=G;G=s*(c[k>>2]=P,+g[k>>2]);D=+((c[k>>2]=C,+g[k>>2])+G);G=+(M+s*R);C=v;g[C>>2]=D;g[C+4>>2]=G;g[(c[O>>2]|0)+(j*12|0)+8>>2]=K+s*V;K=+R;C=(c[N>>2]|0)+(j*12|0)|0;c[C>>2]=P;g[C+4>>2]=K;w=c[N>>2]|0;g[w+(j*12|0)+8>>2]=V;j=j+1|0}while((j|0)<(c[t>>2]|0))}j=h+16|0;a:do if((c[j>>2]|0)>0){h=d+16|0;w=0;while(1){P=Pi(r)|0;if((c[q>>2]|0)>0){C=0;v=1;while(1){u=c[(c[h>>2]|0)+(C<<2)>>2]|0;x=v&(wb[c[(c[u>>2]|0)+40>>2]&31](u,p)|0);C=C+1|0;if((C|0)>=(c[q>>2]|0)){W=x;break}else v=
x}}else W=1;w=w+1|0;if(P&W){X=0;break a}if((w|0)>=(c[j>>2]|0)){X=1;break}}}else X=1;while(0);if((c[t>>2]|0)>0){j=d+8|0;W=0;do{q=c[(c[j>>2]|0)+(W<<2)>>2]|0;p=(c[O>>2]|0)+(W*12|0)|0;w=c[p>>2]|0;h=c[p+4>>2]|0;p=q+60|0;c[p>>2]=w;c[p+4>>2]=h;V=+g[(c[O>>2]|0)+(W*12|0)+8>>2];g[q+72>>2]=V;p=(c[N>>2]|0)+(W*12|0)|0;v=c[p+4>>2]|0;C=q+80|0;c[C>>2]=c[p>>2];c[C+4>>2]=v;g[q+88>>2]=+g[(c[N>>2]|0)+(W*12|0)+8>>2];R=+T(+V);g[q+20>>2]=R;U=+S(+V);g[q+24>>2]=U;V=+g[q+44>>2];K=+g[q+48>>2];G=(c[k>>2]=w,+g[k>>2])-(U*V-R*
K);D=(c[k>>2]=h,+g[k>>2])-(R*V+U*K);K=+G;G=+D;h=q+12|0;g[h>>2]=K;g[h+4>>2]=G;W=W+1|0}while((W|0)<(c[t>>2]|0))}g[f+20>>2]=+Cm(o);o=c[r+44>>2]|0;f=d+4|0;if((c[f>>2]|0)!=0?(c[L>>2]|0)>0:0){W=n+16|0;N=0;do{O=c[(c[y>>2]|0)+(N<<2)>>2]|0;j=c[o+(N*156|0)+148>>2]|0;c[W>>2]=j;if((j|0)>0){h=0;do{g[n+(h<<2)>>2]=+g[o+(N*156|0)+(h*36|0)+16>>2];g[n+(h<<2)+8>>2]=+g[o+(N*156|0)+(h*36|0)+20>>2];h=h+1|0}while((h|0)!=(j|0))}j=c[f>>2]|0;rb[c[(c[j>>2]|0)+36>>2]&7](j,O,n);N=N+1|0}while((N|0)<(c[L>>2]|0))}if(!l){Ki(r);i=
m;return}l=c[t>>2]|0;L=(l|0)>0;if(L){N=c[d+8>>2]|0;n=0;G=3.4028234663852886E38;while(1){f=c[N+(n<<2)>>2]|0;do if(!(c[f>>2]|0))Y=G;else{if(((b[f+4>>1]&4)!=0?(K=+g[f+88>>2],!(K*K>.001218469929881394)):0)?(K=+g[f+80>>2],D=+g[f+84>>2],!(K*K+D*D>9.999999747378752E-5)):0){o=f+160|0;D=s+ +g[o>>2];g[o>>2]=D;Y=G<D?G:D;break}g[f+160>>2]=0;Y=0}while(0);n=n+1|0;if((n|0)>=(l|0)){Z=Y;break}else G=Y}}else Z=3.4028234663852886E38;if(!(Z>=.5)|X|L^1){Ki(r);i=m;return}L=d+8|0;d=0;do{X=c[(c[L>>2]|0)+(d<<2)>>2]|0;l=X+
4|0;b[l>>1]=e[l>>1]&65533;g[X+160>>2]=0;l=X+80|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[l+16>>2]=0;c[l+20>>2]=0;d=d+1|0}while((d|0)<(c[t>>2]|0));Ki(r);i=m;return}function Cf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=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,J=0;f=i;i=i+128|0;h=f+104|0;j=f+56|0;l=f;m=a+28|0;if((c[m>>2]|0)>0){n=a+8|0;o=a+20|0;p=a+24|0;q=0;do{r=c[(c[n>>2]|0)+(q<<2)>>2]|0;s=r+60|0;t=c[s+4>>2]|0;u=(c[o>>2]|0)+(q*
12|0)|0;c[u>>2]=c[s>>2];c[u+4>>2]=t;g[(c[o>>2]|0)+(q*12|0)+8>>2]=+g[r+72>>2];t=r+80|0;u=c[t+4>>2]|0;s=(c[p>>2]|0)+(q*12|0)|0;c[s>>2]=c[t>>2];c[s+4>>2]=u;u=c[p>>2]|0;g[u+(q*12|0)+8>>2]=+g[r+88>>2];q=q+1|0}while((q|0)<(c[m>>2]|0));v=o;w=u}else{v=a+20|0;w=c[a+24>>2]|0}o=a+12|0;c[j+28>>2]=c[o>>2];q=a+36|0;c[j+32>>2]=c[q>>2];c[j+44>>2]=c[a>>2];c[j+0>>2]=c[b+0>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];c[j+16>>2]=c[b+16>>2];c[j+20>>2]=c[b+20>>2];c[j+24>>2]=c[b+24>>2];c[j+36>>2]=c[v>>
2];p=a+24|0;c[j+40>>2]=w;Ji(l,j);j=b+16|0;a:do if((c[j>>2]|0)>0){w=0;do{w=w+1|0;if(Qi(l,d,e)|0)break a}while((w|0)<(c[j>>2]|0))}while(0);j=a+8|0;w=(c[v>>2]|0)+(d*12|0)|0;n=c[w+4>>2]|0;u=(c[(c[j>>2]|0)+(d<<2)>>2]|0)+52|0;c[u>>2]=c[w>>2];c[u+4>>2]=n;n=c[v>>2]|0;u=c[j>>2]|0;g[(c[u+(d<<2)>>2]|0)+68>>2]=+g[n+(d*12|0)+8>>2];d=n+(e*12|0)|0;n=c[d+4>>2]|0;w=(c[u+(e<<2)>>2]|0)+52|0;c[w>>2]=c[d>>2];c[w+4>>2]=n;g[(c[(c[j>>2]|0)+(e<<2)>>2]|0)+68>>2]=+g[(c[v>>2]|0)+(e*12|0)+8>>2];Li(l);e=b+12|0;if((c[e>>2]|0)>
0){n=0;do{Ni(l);n=n+1|0}while((n|0)<(c[e>>2]|0))}x=+g[b>>2];if((c[m>>2]|0)>0){b=0;do{e=c[v>>2]|0;n=e+(b*12|0)|0;w=n;d=c[w>>2]|0;y=+g[w+4>>2];z=+g[e+(b*12|0)+8>>2];e=c[p>>2]|0;w=e+(b*12|0)|0;u=c[w>>2]|0;A=+g[w+4>>2];B=+g[e+(b*12|0)+8>>2];C=(c[k>>2]=u,+g[k>>2]);D=x*C;E=x*A;F=D*D+E*E;if(F>4){E=2/+Q(+F);G=(g[k>>2]=C*E,c[k>>2]|0);H=A*E}else{G=u;H=A}A=x*B;if(A*A>2.4674012660980225){if(A>0)I=A;else I=-A;J=B*(1.5707963705062866/I)}else J=B;B=x*(c[k>>2]=G,+g[k>>2]);A=(c[k>>2]=d,+g[k>>2])+B;B=+A;E=y+x*H;y=
z+x*J;z=+E;d=n;g[d>>2]=B;g[d+4>>2]=z;g[(c[v>>2]|0)+(b*12|0)+8>>2]=y;C=+H;d=(c[p>>2]|0)+(b*12|0)|0;c[d>>2]=G;g[d+4>>2]=C;g[(c[p>>2]|0)+(b*12|0)+8>>2]=J;d=c[(c[j>>2]|0)+(b<<2)>>2]|0;n=d+60|0;g[n>>2]=B;g[n+4>>2]=z;g[d+72>>2]=y;n=d+80|0;c[n>>2]=G;g[n+4>>2]=C;g[d+88>>2]=J;C=+T(+y);g[d+20>>2]=C;z=+S(+y);g[d+24>>2]=z;y=+g[d+44>>2];B=+g[d+48>>2];F=+(A-(z*y-C*B));A=+(E-(C*y+z*B));n=d+12|0;g[n>>2]=F;g[n+4>>2]=A;b=b+1|0}while((b|0)<(c[m>>2]|0))}m=c[l+44>>2]|0;b=a+4|0;if(!(c[b>>2]|0)){Ki(l);i=f;return}if((c[q>>
2]|0)<=0){Ki(l);i=f;return}a=h+16|0;G=0;do{j=c[(c[o>>2]|0)+(G<<2)>>2]|0;p=c[m+(G*156|0)+148>>2]|0;c[a>>2]=p;if((p|0)>0){v=0;do{g[h+(v<<2)>>2]=+g[m+(G*156|0)+(v*36|0)+16>>2];g[h+(v<<2)+8>>2]=+g[m+(G*156|0)+(v*36|0)+20>>2];v=v+1|0}while((v|0)!=(p|0))}p=c[b>>2]|0;rb[c[(c[p>>2]|0)+36>>2]&7](p,j,h);G=G+1|0}while((G|0)<(c[q>>2]|0));Ki(l);i=f;return}function Df(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0;a=i;e=b[c+36>>1]|0;if(!(e<<16>>16==0?1:e<<16>>16!=(b[d+36>>1]|0))){f=e<<16>>16>0;i=a;return f|0}if(!((b[d+32>>
1]&b[c+34>>1])<<16>>16)){f=0;i=a;return f|0}f=(b[d+34>>1]&b[c+32>>1])<<16>>16!=0;i=a;return f|0}function Ef(a){a=a|0;return}function Ff(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Gf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function Hf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function If(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;d=i;Bh(a,b);c[a>>2]=904;e=b+20|0;f=c[e>>2]|0;h=c[e+4>>2]|0;e=a+76|0;c[e>>2]=f;c[e+4>>2]=h;e=c[a+52>>2]|0;j=(c[k>>2]=f,+g[k>>2])-+g[e+12>>2];l=(c[k>>
2]=h,+g[k>>2])-+g[e+16>>2];m=+g[e+24>>2];n=+g[e+20>>2];o=+(j*m+l*n);p=+(m*l-j*n);e=a+68|0;g[e>>2]=o;g[e+4>>2]=p;g[a+104>>2]=+g[b+28>>2];g[a+96>>2]=0;g[a+100>>2]=0;g[a+84>>2]=+g[b+32>>2];g[a+88>>2]=+g[b+36>>2];g[a+92>>2]=0;g[a+108>>2]=0;i=d;return}function Jf(a,d){a=a|0;d=d|0;var e=0,f=0,h=0,j=0,k=0;e=i;f=c[a+52>>2]|0;h=f+4|0;j=b[h>>1]|0;if((j&2)==0?(k=j&65535,(k&2|0)==0):0){b[h>>1]=k|2;g[f+160>>2]=0}f=d;d=c[f+4>>2]|0;k=a+76|0;c[k>>2]=c[f>>2];c[k+4>>2]=d;i=e;return}function Kf(b,d){b=b|0;d=d|0;var e=
0,f=0,h=0,j=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,U=0;e=i;f=c[b+52>>2]|0;h=c[f+8>>2]|0;j=b+116|0;c[j>>2]=h;l=f+44|0;m=c[l>>2]|0;n=c[l+4>>2]|0;l=b+128|0;c[l>>2]=m;c[l+4>>2]=n;o=+g[f+136>>2];g[b+136>>2]=o;p=+g[f+144>>2];g[b+140>>2]=p;l=c[d+28>>2]|0;q=l+(h*12|0)|0;r=+g[q>>2];s=+g[q+4>>2];t=+g[l+(h*12|0)+8>>2];l=d+32|0;q=c[l>>2]|0;u=q+(h*12|0)|0;v=c[u>>2]|0;w=+g[u+4>>2];x=+g[q+(h*12|0)+8>>2];y=+T(+t);z=+S(+t);
t=+g[f+132>>2];A=+g[b+84>>2]*6.2831854820251465;B=+g[d>>2];C=B*(t*(A*A));D=B*(A*(t*2*+g[b+88>>2])+C);t=(c[k>>2]=m,+g[k>>2]);A=(c[k>>2]=n,+g[k>>2]);if(D!=0)E=1/D;else E=D;g[b+108>>2]=E;D=C*E;g[b+92>>2]=D;C=+g[b+68>>2]-t;t=+g[b+72>>2]-A;A=z*C-y*t;B=y*C+z*t;t=+A;z=+B;n=b+120|0;g[n>>2]=t;g[n+4>>2]=z;z=E+(o+B*(p*B));t=p*A;C=B*t;y=E+(o+A*t);t=z*y-C*C;if(t!=0)F=1/t;else F=t;t=C*F;g[b+144>>2]=y*F;g[b+148>>2]=t;g[b+152>>2]=t;g[b+156>>2]=z*F;n=b+160|0;F=r+A-+g[b+76>>2];r=s+B-+g[b+80>>2];s=+F;z=+r;m=n;g[m>>
2]=s;g[m+4>>2]=z;g[n>>2]=D*F;g[b+164>>2]=D*r;r=x*.9800000190734863;n=b+96|0;if(!(a[d+24>>0]|0)){g[n>>2]=0;g[b+100>>2]=0;G=w;H=v;I=r;J=c[l>>2]|0;K=J+(h*12|0)|0;L=+G;M=K;N=M;c[N>>2]=H;O=M+4|0;P=O;g[P>>2]=L;Q=c[j>>2]|0;R=c[l>>2]|0;U=R+(Q*12|0)+8|0;g[U>>2]=I;i=e;return}else{x=+g[d+8>>2];D=x*+g[n>>2];g[n>>2]=D;n=b+100|0;F=x*+g[n>>2];g[n>>2]=F;G=w+F*o;H=(g[k>>2]=(c[k>>2]=v,+g[k>>2])+o*D,c[k>>2]|0);I=r+p*(F*A-D*B);J=c[l>>2]|0;K=J+(h*12|0)|0;L=+G;M=K;N=M;c[N>>2]=H;O=M+4|0;P=O;g[P>>2]=L;Q=c[j>>2]|0;R=c[l>>
2]|0;U=R+(Q*12|0)+8|0;g[U>>2]=I;i=e;return}}function Lf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=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;d=i;e=a+116|0;f=c[e>>2]|0;h=b+32|0;j=c[h>>2]|0;k=j+(f*12|0)|0;l=k;m=+g[l+4>>2];n=+g[j+(f*12|0)+8>>2];o=+g[a+124>>2];p=+g[a+120>>2];q=+g[l>>2];r=+g[a+108>>2];l=a+96|0;s=+g[l>>2];f=a+100|0;t=+g[f>>2];u=-(q-n*o+ +g[a+160>>2]+r*s);v=-(m+n*p+ +g[a+164>>2]+r*t);r=+g[a+148>>2]*u+ +g[a+156>>2]*v;j=l;w=+g[j>>2];x=+g[j+4>>2];y=s+(+g[a+144>>2]*u+
+g[a+152>>2]*v);g[l>>2]=y;v=r+t;g[f>>2]=v;t=+g[b>>2]*+g[a+104>>2];r=v*v+y*y;if(r>t*t){u=t/+Q(+r);r=y*u;g[l>>2]=r;t=u*v;g[f>>2]=t;z=r;A=t}else{z=y;A=v}v=z-w;w=A-x;x=+g[a+136>>2];A=+(q+v*x);q=n+ +g[a+140>>2]*(w*p-v*o);o=+(m+w*x);a=k;g[a>>2]=A;g[a+4>>2]=o;g[(c[h>>2]|0)+((c[e>>2]|0)*12|0)+8>>2]=q;i=d;return}function Mf(a,b){a=a|0;b=b|0;return 1}function Nf(a,b){a=a|0;b=b|0;var d=0,e=0;d=b+76|0;b=c[d+4>>2]|0;e=a;c[e>>2]=c[d>>2];c[e+4>>2]=b;return}function Of(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=
0;d=c[b+52>>2]|0;e=+g[d+24>>2];f=+g[b+68>>2];h=+g[d+20>>2];i=+g[b+72>>2];j=f*h+e*i+ +g[d+16>>2];g[a>>2]=+g[d+12>>2]+(e*f-h*i);g[a+4>>2]=j;return}function Pf(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=+g[b+100>>2]*c;g[a>>2]=+g[b+96>>2]*c;g[a+4>>2]=d;return}function Qf(a,b){a=a|0;b=+b;return+(b*0)}function Rf(a,b){a=a|0;b=b|0;var c=0;c=a+76|0;g[c>>2]=+g[c>>2]-+g[b>>2];c=a+80|0;g[c>>2]=+g[c>>2]-+g[b+4>>2];return}function Sf(a){a=a|0;a=i;i=i+16|0;Fm(1008,a);i=a;return}function Tf(a){a=a|0;return}function Uf(a){a=
a|0;var b=0;b=i;Vm(a);i=b;return}function nm(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=i;j=mm(a,b,d,e,g)|0;k=c[f>>2]|0;l=c[e>>2]|0;m=c[g>>2]|0;g=c[m+(k<<2)>>2]|0;n=c[m+(l<<2)>>2]|0;o=+(g|0)<=0;if(!(o^+(n|0)<=0?o:(g|0)>(n|0))){p=j;i=h;return p|0}c[e>>2]=k;c[f>>2]=l;l=c[e>>2]|0;f=c[d>>2]|0;k=c[m+(l<<2)>>2]|0;n=c[m+(f<<2)>>2]|0;g=+(k|0)<=0;if(!(g^+(n|0)<=0?g:(k|0)>(n|0))){p=j+1|0;i=h;return p|0}c[d>>2]=l;c[e>>2]=f;f=c[d>>2]|0;e=c[b>>2]|0;l=c[m+(f<<2)>>2]|
0;n=c[m+(e<<2)>>2]|0;k=+(l|0)<=0;if(!(k^+(n|0)<=0?k:(l|0)>(n|0))){p=j+2|0;i=h;return p|0}c[b>>2]=f;c[d>>2]=e;e=c[b>>2]|0;d=c[a>>2]|0;f=c[m+(e<<2)>>2]|0;n=c[m+(d<<2)>>2]|0;m=+(f|0)<=0;if(!(m^+(n|0)<=0?m:(f|0)>(n|0))){p=j+3|0;i=h;return p|0}c[a>>2]=e;c[b>>2]=d;p=j+4|0;i=h;return p|0}function om(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;switch(b-a>>2|0){case 2:f=b+-4|0;g=c[f>>2]|0;h=c[a>>2]|0;j=c[d>>2]|0;k=c[j+(g<<2)>>2]|0;l=c[j+(h<<2)>>2]|0;
j=+(k|0)<=0;if(!(j^+(l|0)<=0?j:(k|0)>(l|0))){m=1;i=e;return m|0}c[a>>2]=g;c[f>>2]=h;m=1;i=e;return m|0;case 3:lm(a,a+4|0,b+-4|0,c[d>>2]|0)|0;m=1;i=e;return m|0;case 4:mm(a,a+4|0,a+8|0,b+-4|0,d)|0;m=1;i=e;return m|0;case 1:case 0:m=1;i=e;return m|0;case 5:nm(a,a+4|0,a+8|0,a+12|0,b+-4|0,d)|0;m=1;i=e;return m|0;default:h=a+8|0;lm(a,a+4|0,h,c[d>>2]|0)|0;f=a+12|0;if((f|0)==(b|0)){m=1;i=e;return m|0}g=c[d>>2]|0;d=0;l=f;f=h;while(1){h=c[l>>2]|0;k=c[f>>2]|0;j=g+(h<<2)|0;n=c[j>>2]|0;o=c[g+(k<<2)>>2]|0;p=+(n|
0)<=0;if(p^+(o|0)<=0?p:(n|0)>(o|0)){o=k;k=l;n=f;while(1){c[k>>2]=o;if((n|0)==(a|0)){q=a;break}p=n+-4|0;o=c[p>>2]|0;r=c[j>>2]|0;s=c[g+(o<<2)>>2]|0;t=+(r|0)<=0;if(!(t^+(s|0)<=0?t:(r|0)>(s|0))){q=n;break}else{s=n;n=p;k=s}}c[q>>2]=h;k=d+1|0;if((k|0)==8)break;else u=k}else u=d;k=l+4|0;if((k|0)==(b|0)){m=1;v=15;break}else{n=l;d=u;l=k;f=n}}if((v|0)==15){i=e;return m|0}m=(l+4|0)==(b|0);i=e;return m|0}return 0}function pm(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 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;j=i;k=a;l=b;if((f|0)<=(g|0)){a:do if((a|0)!=(b|0)){g=(((b+-20-k|0)>>>0)/20|0)+1|0;f=a;m=h;while(1){if(m){c[m+0>>2]=c[f+0>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[m+16>>2]=c[f+16>>2]}f=f+20|0;if((f|0)==(b|0))break;else m=m+20|0}m=h+(g*20|0)|0;if((m|0)!=(h|0)){f=a;n=b;o=h;while(1){if((n|0)==(d|0))break;if(wb[c[e>>2]&31](n,o)|0){c[f+0>>2]=c[n+0>>2];c[f+4>>2]=c[n+4>>2];c[f+8>>2]=c[n+8>>2];c[f+12>>2]=c[n+
12>>2];c[f+16>>2]=c[n+16>>2];p=o;q=n+20|0}else{c[f+0>>2]=c[o+0>>2];c[f+4>>2]=c[o+4>>2];c[f+8>>2]=c[o+8>>2];c[f+12>>2]=c[o+12>>2];c[f+16>>2]=c[o+16>>2];p=o+20|0;q=n}r=f+20|0;if((p|0)==(m|0)){s=r;t=q;break a}else{f=r;n=q;o=p}}En(f|0,o|0,m-o|0)|0;i=j;return}else{s=a;t=b}}else{s=a;t=b}while(0);En(s|0,t|0,d-t|0)|0;i=j;return}if((b|0)==(d|0))u=h;else{t=(((d+-20-l|0)>>>0)/20|0)+1|0;s=b;p=h;while(1){if(p){c[p+0>>2]=c[s+0>>2];c[p+4>>2]=c[s+4>>2];c[p+8>>2]=c[s+8>>2];c[p+12>>2]=c[s+12>>2];c[p+16>>2]=c[s+16>>
2]}s=s+20|0;if((s|0)==(d|0))break;else p=p+20|0}u=h+(t*20|0)|0}t=u;b:do if((b|0)==(a|0)){v=t;w=d}else{p=t;s=l;q=b;k=u;n=b;g=d;while(1){if((p|0)==(h|0))break;r=k+-20|0;x=n+-20|0;y=g+-20|0;if(wb[c[e>>2]&31](r,x)|0){c[y+0>>2]=c[x+0>>2];c[y+4>>2]=c[x+4>>2];c[y+8>>2]=c[x+8>>2];c[y+12>>2]=c[x+12>>2];c[y+16>>2]=c[x+16>>2];z=p;A=x;B=k;C=x}else{c[y+0>>2]=c[r+0>>2];c[y+4>>2]=c[r+4>>2];c[y+8>>2]=c[r+8>>2];c[y+12>>2]=c[r+12>>2];c[y+16>>2]=c[r+16>>2];z=r;A=s;B=r;C=n}r=A;if((r|0)==(a|0)){v=z;w=y;break b}else{p=
z;s=A;q=r;k=B;n=C;g=y}}if((q|0)==(a|0)){i=j;return}else{D=g;E=q}do{D=D+-20|0;E=E+-20|0;c[D+0>>2]=c[E+0>>2];c[D+4>>2]=c[E+4>>2];c[D+8>>2]=c[E+8>>2];c[D+12>>2]=c[E+12>>2];c[D+16>>2]=c[E+16>>2]}while((E|0)!=(a|0));i=j;return}while(0);a=v;if((a|0)==(h|0)){i=j;return}else{F=w;G=a}do{F=F+-20|0;G=G+-20|0;c[F+0>>2]=c[G+0>>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]}while((G|0)!=(h|0));i=j;return}function qm(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 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;j=i;k=a;l=b;if((f|0)<=(g|0)){a:do if((a|0)!=(b|0)){g=(((b+-60-k|0)>>>0)/60|0)+1|0;f=a;m=h;while(1){if(m){n=m+0|0;o=f+0|0;p=n+60|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0))}f=f+60|0;if((f|0)==(b|0))break;else m=m+60|0}m=h+(g*60|0)|0;if((m|0)!=(h|0)){f=a;q=b;r=h;while(1){if((q|0)==(d|0))break;if(wb[c[e>>2]&31](q,r)|0){n=f+0|0;o=q+0|0;p=n+60|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|
0)<(p|0));s=r;t=q+60|0}else{n=f+0|0;o=r+0|0;p=n+60|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));s=r+60|0;t=q}u=f+60|0;if((s|0)==(m|0)){v=u;w=t;break a}else{f=u;q=t;r=s}}En(f|0,r|0,m-r|0)|0;i=j;return}else{v=a;w=b}}else{v=a;w=b}while(0);En(v|0,w|0,d-w|0)|0;i=j;return}if((b|0)==(d|0))x=h;else{w=(((d+-60-l|0)>>>0)/60|0)+1|0;v=b;s=h;while(1){if(s){n=s+0|0;o=v+0|0;p=n+60|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0))}v=v+60|0;if((v|0)==(d|0))break;else s=s+60|0}x=h+(w*60|0)|0}w=x;b:do if((b|
0)==(a|0)){y=w;z=d}else{s=w;v=l;r=b;m=x;f=b;t=d;while(1){if((s|0)==(h|0))break;k=m+-60|0;q=f+-60|0;g=t+-60|0;if(wb[c[e>>2]&31](k,q)|0){n=g+0|0;o=q+0|0;p=n+60|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));A=s;B=q;C=m;D=q}else{n=g+0|0;o=k+0|0;p=n+60|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));A=k;B=v;C=k;D=f}q=B;if((q|0)==(a|0)){y=A;z=g;break b}else{s=A;v=B;r=q;m=C;f=D;t=g}}if((r|0)==(a|0)){i=j;return}else{E=t;F=r}do{E=E+-60|0;F=F+-60|0;n=E+0|0;o=F+0|0;p=n+60|0;do{c[n>>2]=c[o>>
2];n=n+4|0;o=o+4|0}while((n|0)<(p|0))}while((F|0)!=(a|0));i=j;return}while(0);a=y;if((a|0)==(h|0)){i=j;return}else{G=z;H=a}do{G=G+-60|0;H=H+-60|0;n=G+0|0;o=H+0|0;p=n+60|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0))}while((H|0)!=(h|0));i=j;return}function rm(a,b){a=a|0;b=b|0;var d=0,e=0;d=b+4|0;e=c[b>>2]|0;c[e+4>>2]=c[d>>2];c[c[d>>2]>>2]=e;c[d>>2]=b;e=a+12|0;c[d>>2]=c[e>>2];c[b>>2]=a+8;c[c[e>>2]>>2]=b;c[e>>2]=b;return}function sm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;e=b+68|0;c[b+72>>
2]=e;c[e>>2]=e;e=b+8|0;c[e>>2]=128;c[b+4>>2]=0;f=Dm(1024)|0;c[b>>2]=f;An(f|0,0,c[e>>2]<<3|0)|0;e=b+12|0;b=e+56|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(b|0));if(!(a[8776]|0)){g=1;h=0}else{i=d;return}while(1){if((g|0)>(c[8072+(h<<2)>>2]|0)){e=h+1|0;a[8128+g>>0]=e;j=e}else{a[8128+g>>0]=h;j=h}g=g+1|0;if((g|0)==641)break;else h=j}a[8776]=1;i=d;return}function tm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;d=a+4|0;e=c[a>>2]|0;if((c[d>>2]|0)>0){f=e;g=0;while(1){Em(c[f+(g<<3)+4>>2]|0);g=g+1|0;h=c[a>>2]|0;if((g|
0)>=(c[d>>2]|0)){j=h;break}else f=h}}else j=e;Em(j);j=a+68|0;Lm(j);e=a+72|0;a=c[j>>2]|0;c[a+4>>2]=c[e>>2];c[c[e>>2]>>2]=a;c[e>>2]=j;c[j>>2]=j;i=b;return}function um(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;if(!b){f=0;i=e;return f|0}if((b|0)>640){f=Jm(a+68|0,b)|0;i=e;return f|0}g=d[8128+b>>0]|0;b=a+(g<<2)+12|0;h=c[b>>2]|0;if(h){c[b>>2]=c[h>>2];f=h;i=e;return f|0}h=a+4|0;j=c[h>>2]|0;k=a+8|0;if((j|0)==(c[k>>2]|0)){l=c[a>>2]|0;m=j+128|0;c[k>>2]=m;k=Dm(m<<3)|0;c[a>>2]=k;Dn(k|0,l|0,
c[h>>2]<<3|0)|0;An((c[a>>2]|0)+(c[h>>2]<<3)|0,0,1024)|0;Em(l);n=c[h>>2]|0}else n=j;j=c[a>>2]|0;a=Dm(16384)|0;l=j+(n<<3)+4|0;c[l>>2]=a;k=c[8072+(g<<2)>>2]|0;c[j+(n<<3)>>2]=k;n=(16384/(k|0)|0)+-1|0;if((n|0)>0){j=0;do{g=j;j=j+1|0;c[a+(aa(g,k)|0)>>2]=a+(aa(j,k)|0)}while((j|0)!=(n|0))}c[a+(aa(n,k)|0)>>2]=0;c[b>>2]=c[a>>2];c[h>>2]=(c[h>>2]|0)+1;f=c[l>>2]|0;i=e;return f|0}function vm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;if(!e){i=f;return}if((e|0)>640){Km(a+68|0,b);i=f;return}else{g=a+((d[8128+e>>0]|
0)<<2)+12|0;c[b>>2]=c[g>>2];c[g>>2]=b;i=f;return}}function wm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=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=+g[b+16>>2];e=+g[b+32>>2];f=+g[b+20>>2];h=+g[b+28>>2];i=d*e-f*h;j=+g[b+24>>2];k=+g[b+12>>2];l=f*j-e*k;m=h*k-d*j;n=+g[b>>2];o=+g[b+4>>2];p=+g[b+8>>2];q=i*n+o*l+m*p;if(q!=0)r=1/q;else r=q;q=+g[c>>2];s=+g[c+4>>2];t=+g[c+8>>2];g[a>>2]=r*(i*q+s*l+m*t);g[a+4>>2]=r*((s*e-t*h)*n+o*(t*j-e*q)+(h*q-s*j)*p);g[a+8>>2]=r*((d*t-f*s)*n+o*(f*q-t*k)+(s*k-d*q)*
p);return}function xm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0;d=+g[b>>2];e=+g[b+12>>2];f=+g[b+4>>2];h=+g[b+16>>2];i=d*h-e*f;if(i!=0)j=1/i;else j=i;i=+g[c>>2];k=+g[c+4>>2];g[a>>2]=j*(h*i-e*k);g[a+4>>2]=j*(d*k-f*i);return}function ym(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0;d=+g[a>>2];e=+g[a+12>>2];f=+g[a+4>>2];h=+g[a+16>>2];i=d*h-e*f;if(i!=0)j=1/i;else j=i;g[b>>2]=h*j;h=-j;g[b+12>>2]=e*h;g[b+8>>2]=0;g[b+4>>2]=f*h;g[b+16>>2]=d*j;a=b+20|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+
12>>2]=0;return}function zm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=+g[a+16>>2];d=+g[a+32>>2];e=c*d;f=+g[a+20>>2];h=+g[a+28>>2];i=+g[a+24>>2];j=+g[a+12>>2];k=d*j;l=h*j-c*i;m=+g[a>>2];n=(e-f*h)*m+ +g[a+4>>2]*(f*i-k)+l*+g[a+8>>2];if(n!=0)o=1/n;else o=n;g[b>>2]=o*(e-h*h);e=o*(i*h-k);g[b+4>>2]=e;k=o*l;g[b+8>>2]=k;g[b+12>>2]=e;g[b+16>>2]=o*(m*d-i*i);d=o*(j*i-m*h);g[b+20>>2]=d;g[b+24>>2]=k;g[b+28>>2]=d;g[b+32>>2]=o*(m*c-j*j);return}function Am(a){a=a|0;return}function Bm(a){a=
a|0;return}function Cm(a){a=a|0;return 0}function Dm(a){a=a|0;var b=0,d=0;b=i;c[2214]=(c[2214]|0)+1;d=wb[c[8832>>2]&31](a,c[2212]|0)|0;i=b;return d|0}function Em(a){a=a|0;var b=0;b=i;c[2214]=(c[2214]|0)+-1;pb[c[8840>>2]&63](a,c[2212]|0);i=b;return}function Fm(a,b){a=a|0;b=b|0;return}function Gm(a,b){a=a|0;b=b|0;var c=0;b=i;c=xn(a)|0;i=b;return c|0}function Hm(a,b){a=a|0;b=b|0;b=i;yn(a);i=b;return}function Im(a){a=a|0;return a+43&-32|0}function Jm(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=Dm(b+44|0)|0;c[e>>
2]=e;b=e+43&-32;c[b+-4>>2]=e;c[e+4>>2]=a;c[e>>2]=c[a>>2];c[(c[a>>2]|0)+4>>2]=e;c[a>>2]=e;i=d;return b|0}function Km(a,b){a=a|0;b=b|0;var d=0,e=0;a=i;d=c[b+-4>>2]|0;b=d+4|0;e=c[d>>2]|0;c[e+4>>2]=c[b>>2];c[c[b>>2]>>2]=e;c[b>>2]=d;c[d>>2]=d;Em(d);i=a;return}function Lm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=a+4|0;e=c[d>>2]|0;if((e|0)==(a|0)){i=b;return}else f=e;do{e=f+4|0;g=c[f>>2]|0;c[g+4>>2]=c[e>>2];c[c[e>>2]>>2]=g;c[e>>2]=f;c[f>>2]=f;Em(f);f=c[d>>2]|0}while((f|0)!=(a|0));i=b;return}function Mm(a){a=
a|0;c[a+102400>>2]=0;c[a+102404>>2]=0;c[a+102408>>2]=0;c[a+102796>>2]=0;return}function Nm(a){a=a|0;return}function Om(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;f=d+3&-4;d=b+102796|0;g=c[d>>2]|0;h=b+(g*12|0)+102412|0;c[b+(g*12|0)+102416>>2]=f;j=b+102400|0;k=c[j>>2]|0;if((k+f|0)>102400){c[h>>2]=Dm(f)|0;a[b+(g*12|0)+102420>>0]=1}else{c[h>>2]=b+k;a[b+(g*12|0)+102420>>0]=0;c[j>>2]=(c[j>>2]|0)+f}j=b+102404|0;g=(c[j>>2]|0)+f|0;c[j>>2]=g;j=b+102408|0;b=c[j>>2]|0;c[j>>2]=(b|0)>(g|0)?b:g;c[d>>2]=(c[d>>
2]|0)+1;i=e;return c[h>>2]|0}function Pm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;f=(c[b+102796>>2]|0)+-1|0;g=b+(f*12|0)+102412|0;h=b+(f*12|0)+102416|0;j=e-(c[h>>2]|0)|0;if((j|0)<=0){k=c[g>>2]|0;i=d;return k|0}l=b+(f*12|0)+102420|0;do if(!(a[l>>0]|0)){f=b+102400|0;m=(c[f>>2]|0)+j|0;if((m|0)>102400){n=Dm(e)|0;Dn(n|0,c[g>>2]|0,c[h>>2]|0)|0;c[f>>2]=(c[f>>2]|0)-(c[h>>2]|0);c[g>>2]=n;a[l>>0]=1;break}else{c[f>>2]=m;m=b+102404|0;f=(c[m>>2]|0)+j|0;c[m>>2]=f;m=b+102408|0;n=c[m>>2]|
0;c[m>>2]=(n|0)>(f|0)?n:f;break}}else{f=Dm(e)|0;Dn(f|0,c[g>>2]|0,c[h>>2]|0)|0;Em(c[g>>2]|0);c[g>>2]=f}while(0);c[h>>2]=e;k=c[g>>2]|0;i=d;return k|0}function Qm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;f=b+102796|0;g=c[f>>2]|0;h=g+-1|0;if(!(a[b+(h*12|0)+102420>>0]|0)){j=b+(h*12|0)+102416|0;k=b+102400|0;c[k>>2]=(c[k>>2]|0)-(c[j>>2]|0);l=j;m=g}else{Em(d);l=b+(h*12|0)+102416|0;m=c[f>>2]|0}h=b+102404|0;c[h>>2]=(c[h>>2]|0)-(c[l>>2]|0);c[f>>2]=m+-1;i=e;return}function Rm(a,b){a=a|0;b=b|0;
var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;b=c[o>>2]|0;za(b|0,a|0,e|0)|0;Xa(10,b|0)|0;$a()}function Sm(){var a=0,b=0;a=i;i=i+16|0;if(!(Pa(9056,3)|0)){b=Na(c[2262]|0)|0;i=a;return b|0}else Rm(9064,a);return 0}function Tm(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=(a|0)==0?1:a;a=xn(d)|0;if(a){e=a;i=b;return e|0}while(1){a=$m()|0;if(!a){f=4;break}sb[a&3]();a=xn(d)|0;if(a){e=a;f=5;break}}if((f|0)==4){d=Aa(4)|0;c[d>>2]=9240;Ya(d|0,9288,60)}else if((f|0)==5){i=b;return e|0}return 0}function Um(a,b){a=a|0;b=b|0;var c=
0;b=i;c=Tm(a)|0;i=b;return c|0}function Vm(a){a=a|0;var b=0;b=i;yn(a);i=b;return}function Wm(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function Xm(a){a=a|0;return}function Ym(a){a=a|0;return 9256}function Zm(a){a=a|0;var b=0;b=i;i=i+16|0;sb[a&3]();Rm(9304,b)}function _m(){var a=0,b=0;a=Sm()|0;if(((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0)?(a=b+48|0,(c[a>>2]&-256|0)==1126902528?(c[a+4>>2]|0)==1129074247:0):0)Zm(c[b+12>>2]|0);b=c[2216]|0;c[2216]=b+0;Zm(b)}function $m(){var a=0;a=c[2350]|0;c[2350]=a+0;return a|
0}function an(a){a=a|0;return}function bn(a){a=a|0;return}function cn(a){a=a|0;return}function dn(a){a=a|0;return}function en(a){a=a|0;return}function fn(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function gn(a){a=a|0;var b=0;b=i;Vm(a);i=b;return}function hn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+64|0;f=e;if((a|0)==(b|0)){g=1;i=e;return g|0}if(!b){g=0;i=e;return g|0}h=mn(b,9496,9552,0)|0;if(!h){g=0;i=e;return g|0}b=f+0|0;j=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(j|0));c[f>>2]=h;c[f+
8>>2]=a;c[f+12>>2]=-1;c[f+48>>2]=1;yb[c[(c[h>>2]|0)+28>>2]&31](h,f,c[d>>2]|0,1);if((c[f+24>>2]|0)!=1){g=0;i=e;return g|0}c[d>>2]=c[f+16>>2];g=1;i=e;return g|0}function jn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;b=i;g=d+16|0;h=c[g>>2]|0;if(!h){c[g>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1;i=b;return}if((h|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;c[d+24>>2]=2;a[d+54>>0]=1;i=b;return}e=d+24|0;if((c[e>>2]|0)!=2){i=b;return}c[e>>2]=f;i=b;return}function kn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((c[b+
8>>2]|0)!=(a|0)){i=f;return}jn(0,b,d,e);i=f;return}function ln(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;if((a|0)==(c[b+8>>2]|0)){jn(0,b,d,e);i=f;return}else{g=c[a+8>>2]|0;yb[c[(c[g>>2]|0)+28>>2]&31](g,b,d,e);i=f;return}}function mn(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=i;i=i+64|0;j=h;k=c[d>>2]|0;l=d+(c[k+-8>>2]|0)|0;m=c[k+-4>>2]|0;c[j>>2]=f;c[j+4>>2]=d;c[j+8>>2]=e;c[j+12>>2]=g;g=j+16|0;e=j+20|0;d=j+24|0;k=j+28|0;n=j+32|0;o=j+40|0;p=(m|0)==(f|0);f=g+
0|0;q=f+36|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(q|0));b[g+36>>1]=0;a[g+38>>0]=0;if(p){c[j+48>>2]=1;vb[c[(c[m>>2]|0)+20>>2]&7](m,j,l,l,1,0);r=(c[d>>2]|0)==1?l:0;i=h;return r|0}lb[c[(c[m>>2]|0)+24>>2]&3](m,j,l,1,0);l=c[j+36>>2]|0;if((l|0)==1){if((c[d>>2]|0)!=1?!((c[o>>2]|0)==0&(c[k>>2]|0)==1&(c[n>>2]|0)==1):0){r=0;i=h;return r|0}r=c[g>>2]|0;i=h;return r|0}else if(!l){r=(c[o>>2]|0)==1&(c[k>>2]|0)==1&(c[n>>2]|0)==1?c[e>>2]|0:0;i=h;return r|0}else{r=0;i=h;return r|0}return 0}function nn(b,d,e,f,g){b=b|
0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;b=i;a[d+53>>0]=1;if((c[d+4>>2]|0)!=(f|0)){i=b;return}a[d+52>>0]=1;f=d+16|0;h=c[f>>2]|0;if(!h){c[f>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((g|0)==1?(c[d+48>>2]|0)==1:0)){i=b;return}a[d+54>>0]=1;i=b;return}if((h|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;a[d+54>>0]=1;i=b;return}e=d+24|0;h=c[e>>2]|0;if((h|0)==2){c[e>>2]=g;j=g}else j=h;if(!((j|0)==1?(c[d+48>>2]|0)==1:0)){i=b;return}a[d+54>>0]=1;i=b;return}function on(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=
0,k=0,l=0,m=0,n=0,o=0,p=0;h=i;if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)!=(e|0)){i=h;return}j=d+28|0;if((c[j>>2]|0)==1){i=h;return}c[j>>2]=f;i=h;return}if((b|0)!=(c[d>>2]|0)){j=c[b+8>>2]|0;lb[c[(c[j>>2]|0)+24>>2]&3](j,d,e,f,g);i=h;return}if((c[d+16>>2]|0)!=(e|0)?(j=d+20|0,(c[j>>2]|0)!=(e|0)):0){c[d+32>>2]=f;k=d+44|0;if((c[k>>2]|0)==4){i=h;return}l=d+52|0;a[l>>0]=0;m=d+53|0;a[m>>0]=0;n=c[b+8>>2]|0;vb[c[(c[n>>2]|0)+20>>2]&7](n,d,e,e,1,g);if(a[m>>0]|0){if(!(a[l>>0]|0)){o=1;p=13}}else{o=0;p=13}do if((p|
0)==13){c[j>>2]=e;l=d+40|0;c[l>>2]=(c[l>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(o)break}else p=16;if((p|0)==16?o:0)break;c[k>>2]=4;i=h;return}while(0);c[k>>2]=3;i=h;return}if((f|0)!=1){i=h;return}c[d+32>>2]=1;i=h;return}function pn(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;g=i;if((c[d+8>>2]|0)==(b|0)){if((c[d+4>>2]|0)!=(e|0)){i=g;return}h=d+28|0;if((c[h>>2]|0)==1){i=g;return}c[h>>2]=f;i=g;return}if((c[d>>2]|0)!=(b|0)){i=g;return}if((c[d+16>>2]|0)!=(e|0)?(b=d+20|0,
(c[b>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[b>>2]=e;e=d+40|0;c[e>>2]=(c[e>>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;i=g;return}if((f|0)!=1){i=g;return}c[d+32>>2]=1;i=g;return}function qn(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,j=0;h=i;if((a|0)==(c[b+8>>2]|0)){nn(0,b,d,e,f);i=h;return}else{j=c[a+8>>2]|0;vb[c[(c[j>>2]|0)+20>>2]&7](j,b,d,e,f,g);i=h;return}}function rn(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=i;if((c[b+8>>2]|0)!=(a|0)){i=g;return}nn(0,
b,d,e,f);i=g;return}function sn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e;c[f>>2]=c[d>>2];g=qb[c[(c[a>>2]|0)+16>>2]&15](a,b,f)|0;b=g&1;if(!g){i=e;return b|0}c[d>>2]=c[f>>2];i=e;return b|0}function tn(a){a=a|0;var b=0,c=0;b=i;if(!a)c=0;else c=(mn(a,9496,9664,0)|0)!=0;i=b;return c&1|0}function un(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;a=i;i=i+16|0;b=a;d=a+12|0;a=Sm()|0;if(!a)Rm(9032,b);e=c[a>>2]|0;if(!e)Rm(9032,b);a=e+48|0;f=c[a>>2]|0;g=c[a+4>>2]|0;if(!((f&-256|0)==1126902528&(g|0)==1129074247)){c[b>>
2]=c[2218];Rm(8992,b)}if((f|0)==1126902529&(g|0)==1129074247)h=c[e+44>>2]|0;else h=e+80|0;c[d>>2]=h;h=c[e>>2]|0;e=c[h+4>>2]|0;if(qb[c[(c[9424>>2]|0)+16>>2]&15](9424,h,d)|0){h=c[d>>2]|0;d=c[2218]|0;g=kb[c[(c[h>>2]|0)+8>>2]&7](h)|0;c[b>>2]=d;c[b+4>>2]=e;c[b+8>>2]=g;Rm(8896,b)}else{c[b>>2]=c[2218];c[b+4>>2]=e;Rm(8944,b)}}function vn(){var a=0;a=i;i=i+16|0;if(!(Sa(9048,67)|0)){i=a;return}else Rm(9120,a)}function wn(a){a=a|0;var b=0;b=i;i=i+16|0;yn(a);if(!(Wa(c[2262]|0,0)|0)){i=b;return}else Rm(9176,b)}
function xn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=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,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,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0;b=i;do if(a>>>0<245){if(a>>>0<11)d=16;else d=a+11&-8;e=d>>>3;f=c[2456]|0;g=f>>>e;if(g&
3){h=(g&1^1)+e|0;j=h<<1;k=9864+(j<<2)|0;l=9864+(j+2<<2)|0;j=c[l>>2]|0;m=j+8|0;n=c[m>>2]|0;do if((k|0)!=(n|0)){if(n>>>0<(c[2460]|0)>>>0)$a();o=n+12|0;if((c[o>>2]|0)==(j|0)){c[o>>2]=k;c[l>>2]=n;break}else $a()}else c[2456]=f&~(1<<h);while(0);n=h<<3;c[j+4>>2]=n|3;l=j+(n|4)|0;c[l>>2]=c[l>>2]|1;p=m;i=b;return p|0}l=c[2458]|0;if(d>>>0>l>>>0){if(g){n=2<<e;k=g<<e&(n|0-n);n=(k&0-k)+-1|0;k=n>>>12&16;o=n>>>k;n=o>>>5&8;q=o>>>n;o=q>>>2&4;r=q>>>o;q=r>>>1&2;s=r>>>q;r=s>>>1&1;t=(n|k|o|q|r)+(s>>>r)|0;r=t<<1;s=9864+
(r<<2)|0;q=9864+(r+2<<2)|0;r=c[q>>2]|0;o=r+8|0;k=c[o>>2]|0;do if((s|0)!=(k|0)){if(k>>>0<(c[2460]|0)>>>0)$a();n=k+12|0;if((c[n>>2]|0)==(r|0)){c[n>>2]=s;c[q>>2]=k;u=c[2458]|0;break}else $a()}else{c[2456]=f&~(1<<t);u=l}while(0);l=t<<3;f=l-d|0;c[r+4>>2]=d|3;k=r+d|0;c[r+(d|4)>>2]=f|1;c[r+l>>2]=f;if(u){l=c[2461]|0;q=u>>>3;s=q<<1;e=9864+(s<<2)|0;g=c[2456]|0;m=1<<q;if(g&m){q=9864+(s+2<<2)|0;j=c[q>>2]|0;if(j>>>0<(c[2460]|0)>>>0)$a();else{v=q;w=j}}else{c[2456]=g|m;v=9864+(s+2<<2)|0;w=e}c[v>>2]=l;c[w+12>>2]=
l;c[l+8>>2]=w;c[l+12>>2]=e}c[2458]=f;c[2461]=k;p=o;i=b;return p|0}k=c[2457]|0;if(k){f=(k&0-k)+-1|0;k=f>>>12&16;e=f>>>k;f=e>>>5&8;l=e>>>f;e=l>>>2&4;s=l>>>e;l=s>>>1&2;m=s>>>l;s=m>>>1&1;g=c[10128+((f|k|e|l|s)+(m>>>s)<<2)>>2]|0;s=(c[g+4>>2]&-8)-d|0;m=g;l=g;while(1){g=c[m+16>>2]|0;if(!g){e=c[m+20>>2]|0;if(!e)break;else x=e}else x=g;g=(c[x+4>>2]&-8)-d|0;e=g>>>0<s>>>0;s=e?g:s;m=x;l=e?x:l}m=c[2460]|0;if(l>>>0<m>>>0)$a();o=l+d|0;if(l>>>0>=o>>>0)$a();r=c[l+24>>2]|0;t=c[l+12>>2]|0;do if((t|0)==(l|0)){e=l+20|
0;g=c[e>>2]|0;if(!g){k=l+16|0;f=c[k>>2]|0;if(!f){y=0;break}else{z=f;A=k}}else{z=g;A=e}while(1){e=z+20|0;g=c[e>>2]|0;if(g){z=g;A=e;continue}e=z+16|0;g=c[e>>2]|0;if(!g)break;else{z=g;A=e}}if(A>>>0<m>>>0)$a();else{c[A>>2]=0;y=z;break}}else{e=c[l+8>>2]|0;if(e>>>0<m>>>0)$a();g=e+12|0;if((c[g>>2]|0)!=(l|0))$a();k=t+8|0;if((c[k>>2]|0)==(l|0)){c[g>>2]=t;c[k>>2]=e;y=t;break}else $a()}while(0);do if(r){t=c[l+28>>2]|0;m=10128+(t<<2)|0;if((l|0)==(c[m>>2]|0)){c[m>>2]=y;if(!y){c[2457]=c[2457]&~(1<<t);break}}else{if(r>>>
0<(c[2460]|0)>>>0)$a();t=r+16|0;if((c[t>>2]|0)==(l|0))c[t>>2]=y;else c[r+20>>2]=y;if(!y)break}t=c[2460]|0;if(y>>>0<t>>>0)$a();c[y+24>>2]=r;m=c[l+16>>2]|0;do if(m)if(m>>>0<t>>>0)$a();else{c[y+16>>2]=m;c[m+24>>2]=y;break}while(0);m=c[l+20>>2]|0;if(m)if(m>>>0<(c[2460]|0)>>>0)$a();else{c[y+20>>2]=m;c[m+24>>2]=y;break}}while(0);if(s>>>0<16){r=s+d|0;c[l+4>>2]=r|3;m=l+(r+4)|0;c[m>>2]=c[m>>2]|1}else{c[l+4>>2]=d|3;c[l+(d|4)>>2]=s|1;c[l+(s+d)>>2]=s;m=c[2458]|0;if(m){r=c[2461]|0;t=m>>>3;m=t<<1;e=9864+(m<<2)|
0;k=c[2456]|0;g=1<<t;if(k&g){t=9864+(m+2<<2)|0;f=c[t>>2]|0;if(f>>>0<(c[2460]|0)>>>0)$a();else{B=t;C=f}}else{c[2456]=k|g;B=9864+(m+2<<2)|0;C=e}c[B>>2]=r;c[C+12>>2]=r;c[r+8>>2]=C;c[r+12>>2]=e}c[2458]=s;c[2461]=o}p=l+8|0;i=b;return p|0}else D=d}else D=d}else if(a>>>0<=4294967231){e=a+11|0;r=e&-8;m=c[2457]|0;if(m){g=0-r|0;k=e>>>8;if(k)if(r>>>0>16777215)E=31;else{e=(k+1048320|0)>>>16&8;f=k<<e;k=(f+520192|0)>>>16&4;t=f<<k;f=(t+245760|0)>>>16&2;j=14-(k|e|f)+(t<<f>>>15)|0;E=r>>>(j+7|0)&1|j<<1}else E=0;j=
c[10128+(E<<2)>>2]|0;a:do if(!j){F=g;G=0;H=0}else{if((E|0)==31)I=0;else I=25-(E>>>1)|0;f=g;t=0;e=r<<I;k=j;q=0;while(1){h=c[k+4>>2]&-8;n=h-r|0;if(n>>>0<f>>>0)if((h|0)==(r|0)){F=n;G=k;H=k;break a}else{J=n;K=k}else{J=f;K=q}n=c[k+20>>2]|0;k=c[k+(e>>>31<<2)+16>>2]|0;h=(n|0)==0|(n|0)==(k|0)?t:n;if(!k){F=J;G=h;H=K;break}else{f=J;t=h;e=e<<1;q=K}}}while(0);if((G|0)==0&(H|0)==0){j=2<<E;g=m&(j|0-j);if(!g){D=r;break}j=(g&0-g)+-1|0;g=j>>>12&16;l=j>>>g;j=l>>>5&8;o=l>>>j;l=o>>>2&4;s=o>>>l;o=s>>>1&2;q=s>>>o;s=q>>>
1&1;L=c[10128+((j|g|l|o|s)+(q>>>s)<<2)>>2]|0}else L=G;if(!L){M=F;N=H}else{s=F;q=L;o=H;while(1){l=(c[q+4>>2]&-8)-r|0;g=l>>>0<s>>>0;j=g?l:s;l=g?q:o;g=c[q+16>>2]|0;if(g){s=j;q=g;o=l;continue}q=c[q+20>>2]|0;if(!q){M=j;N=l;break}else{s=j;o=l}}}if((N|0)!=0?M>>>0<((c[2458]|0)-r|0)>>>0:0){o=c[2460]|0;if(N>>>0<o>>>0)$a();s=N+r|0;if(N>>>0>=s>>>0)$a();q=c[N+24>>2]|0;m=c[N+12>>2]|0;do if((m|0)==(N|0)){l=N+20|0;j=c[l>>2]|0;if(!j){g=N+16|0;e=c[g>>2]|0;if(!e){O=0;break}else{P=e;Q=g}}else{P=j;Q=l}while(1){l=P+20|
0;j=c[l>>2]|0;if(j){P=j;Q=l;continue}l=P+16|0;j=c[l>>2]|0;if(!j)break;else{P=j;Q=l}}if(Q>>>0<o>>>0)$a();else{c[Q>>2]=0;O=P;break}}else{l=c[N+8>>2]|0;if(l>>>0<o>>>0)$a();j=l+12|0;if((c[j>>2]|0)!=(N|0))$a();g=m+8|0;if((c[g>>2]|0)==(N|0)){c[j>>2]=m;c[g>>2]=l;O=m;break}else $a()}while(0);do if(q){m=c[N+28>>2]|0;o=10128+(m<<2)|0;if((N|0)==(c[o>>2]|0)){c[o>>2]=O;if(!O){c[2457]=c[2457]&~(1<<m);break}}else{if(q>>>0<(c[2460]|0)>>>0)$a();m=q+16|0;if((c[m>>2]|0)==(N|0))c[m>>2]=O;else c[q+20>>2]=O;if(!O)break}m=
c[2460]|0;if(O>>>0<m>>>0)$a();c[O+24>>2]=q;o=c[N+16>>2]|0;do if(o)if(o>>>0<m>>>0)$a();else{c[O+16>>2]=o;c[o+24>>2]=O;break}while(0);o=c[N+20>>2]|0;if(o)if(o>>>0<(c[2460]|0)>>>0)$a();else{c[O+20>>2]=o;c[o+24>>2]=O;break}}while(0);b:do if(M>>>0>=16){c[N+4>>2]=r|3;c[N+(r|4)>>2]=M|1;c[N+(M+r)>>2]=M;q=M>>>3;if(M>>>0<256){o=q<<1;m=9864+(o<<2)|0;l=c[2456]|0;g=1<<q;do if(!(l&g)){c[2456]=l|g;R=9864+(o+2<<2)|0;S=m}else{q=9864+(o+2<<2)|0;j=c[q>>2]|0;if(j>>>0>=(c[2460]|0)>>>0){R=q;S=j;break}$a()}while(0);c[R>>
2]=s;c[S+12>>2]=s;c[N+(r+8)>>2]=S;c[N+(r+12)>>2]=m;break}o=M>>>8;if(o)if(M>>>0>16777215)T=31;else{g=(o+1048320|0)>>>16&8;l=o<<g;o=(l+520192|0)>>>16&4;j=l<<o;l=(j+245760|0)>>>16&2;q=14-(o|g|l)+(j<<l>>>15)|0;T=M>>>(q+7|0)&1|q<<1}else T=0;q=10128+(T<<2)|0;c[N+(r+28)>>2]=T;c[N+(r+20)>>2]=0;c[N+(r+16)>>2]=0;l=c[2457]|0;j=1<<T;if(!(l&j)){c[2457]=l|j;c[q>>2]=s;c[N+(r+24)>>2]=q;c[N+(r+12)>>2]=s;c[N+(r+8)>>2]=s;break}j=c[q>>2]|0;if((T|0)==31)U=0;else U=25-(T>>>1)|0;c:do if((c[j+4>>2]&-8|0)!=(M|0)){q=M<<U;
l=j;while(1){V=l+(q>>>31<<2)+16|0;g=c[V>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(M|0)){W=g;break c}else{q=q<<1;l=g}}if(V>>>0<(c[2460]|0)>>>0)$a();else{c[V>>2]=s;c[N+(r+24)>>2]=l;c[N+(r+12)>>2]=s;c[N+(r+8)>>2]=s;break b}}else W=j;while(0);j=W+8|0;m=c[j>>2]|0;q=c[2460]|0;if(W>>>0>=q>>>0&m>>>0>=q>>>0){c[m+12>>2]=s;c[j>>2]=s;c[N+(r+8)>>2]=m;c[N+(r+12)>>2]=W;c[N+(r+24)>>2]=0;break}else $a()}else{m=M+r|0;c[N+4>>2]=m|3;j=N+(m+4)|0;c[j>>2]=c[j>>2]|1}while(0);p=N+8|0;i=b;return p|0}else D=r}else D=r}else D=
-1;while(0);N=c[2458]|0;if(N>>>0>=D>>>0){M=N-D|0;W=c[2461]|0;if(M>>>0>15){c[2461]=W+D;c[2458]=M;c[W+(D+4)>>2]=M|1;c[W+N>>2]=M;c[W+4>>2]=D|3}else{c[2458]=0;c[2461]=0;c[W+4>>2]=N|3;M=W+(N+4)|0;c[M>>2]=c[M>>2]|1}p=W+8|0;i=b;return p|0}W=c[2459]|0;if(W>>>0>D>>>0){M=W-D|0;c[2459]=M;W=c[2462]|0;c[2462]=W+D;c[W+(D+4)>>2]=M|1;c[W+4>>2]=D|3;p=W+8|0;i=b;return p|0}do if(!(c[2574]|0)){W=Za(30)|0;if(!(W+-1&W)){c[2576]=W;c[2575]=W;c[2577]=-1;c[2578]=-1;c[2579]=0;c[2567]=0;c[2574]=(bb(0)|0)&-16^1431655768;break}else $a()}while(0);
W=D+48|0;M=c[2576]|0;N=D+47|0;V=M+N|0;U=0-M|0;M=V&U;if(M>>>0<=D>>>0){p=0;i=b;return p|0}T=c[2566]|0;if((T|0)!=0?(S=c[2564]|0,R=S+M|0,R>>>0<=S>>>0|R>>>0>T>>>0):0){p=0;i=b;return p|0}d:do if(!(c[2567]&4)){T=c[2462]|0;e:do if(T){R=10272|0;while(1){S=c[R>>2]|0;if(S>>>0<=T>>>0?(X=R+4|0,(S+(c[X>>2]|0)|0)>>>0>T>>>0):0)break;S=c[R+8>>2]|0;if(!S){Y=181;break e}else R=S}if(R){S=V-(c[2459]|0)&U;if(S>>>0<2147483647){O=Ga(S|0)|0;if((O|0)==((c[R>>2]|0)+(c[X>>2]|0)|0)){Z=O;_=S;Y=190}else{$=O;aa=S;Y=191}}else ba=
0}else Y=181}else Y=181;while(0);do if((Y|0)==181){T=Ga(0)|0;if((T|0)!=(-1|0)){r=T;S=c[2575]|0;O=S+-1|0;if(!(O&r))ca=M;else ca=M-r+(O+r&0-S)|0;S=c[2564]|0;r=S+ca|0;if(ca>>>0>D>>>0&ca>>>0<2147483647){O=c[2566]|0;if((O|0)!=0?r>>>0<=S>>>0|r>>>0>O>>>0:0){ba=0;break}O=Ga(ca|0)|0;if((O|0)==(T|0)){Z=T;_=ca;Y=190}else{$=O;aa=ca;Y=191}}else ba=0}else ba=0}while(0);f:do if((Y|0)==190)if((Z|0)==(-1|0))ba=_;else{da=Z;ea=_;Y=201;break d}else if((Y|0)==191){O=0-aa|0;do if(($|0)!=(-1|0)&aa>>>0<2147483647&W>>>0>
aa>>>0?(T=c[2576]|0,r=N-aa+T&0-T,r>>>0<2147483647):0)if((Ga(r|0)|0)==(-1|0)){Ga(O|0)|0;ba=0;break f}else{fa=r+aa|0;break}else fa=aa;while(0);if(($|0)==(-1|0))ba=0;else{da=$;ea=fa;Y=201;break d}}while(0);c[2567]=c[2567]|4;ga=ba;Y=198}else{ga=0;Y=198}while(0);if((((Y|0)==198?M>>>0<2147483647:0)?(ba=Ga(M|0)|0,M=Ga(0)|0,(ba|0)!=(-1|0)&(M|0)!=(-1|0)&ba>>>0<M>>>0):0)?(fa=M-ba|0,M=fa>>>0>(D+40|0)>>>0,M):0){da=ba;ea=M?fa:ga;Y=201}if((Y|0)==201){ga=(c[2564]|0)+ea|0;c[2564]=ga;if(ga>>>0>(c[2565]|0)>>>0)c[2565]=
ga;ga=c[2462]|0;g:do if(ga){fa=10272|0;while(1){ha=c[fa>>2]|0;ia=fa+4|0;ja=c[ia>>2]|0;if((da|0)==(ha+ja|0)){Y=213;break}M=c[fa+8>>2]|0;if(!M)break;else fa=M}if(((Y|0)==213?(c[fa+12>>2]&8|0)==0:0)?ga>>>0>=ha>>>0&ga>>>0<da>>>0:0){c[ia>>2]=ja+ea;M=(c[2459]|0)+ea|0;ba=ga+8|0;if(!(ba&7))ka=0;else ka=0-ba&7;ba=M-ka|0;c[2462]=ga+ka;c[2459]=ba;c[ga+(ka+4)>>2]=ba|1;c[ga+(M+4)>>2]=40;c[2463]=c[2578];break}M=c[2460]|0;if(da>>>0<M>>>0){c[2460]=da;la=da}else la=M;M=da+ea|0;ba=10272|0;while(1){if((c[ba>>2]|0)==
(M|0)){Y=223;break}$=c[ba+8>>2]|0;if(!$)break;else ba=$}if((Y|0)==223?(c[ba+12>>2]&8|0)==0:0){c[ba>>2]=da;M=ba+4|0;c[M>>2]=(c[M>>2]|0)+ea;M=da+8|0;if(!(M&7))ma=0;else ma=0-M&7;M=da+(ea+8)|0;if(!(M&7))na=0;else na=0-M&7;M=da+(na+ea)|0;fa=ma+D|0;$=da+fa|0;aa=M-(da+ma)-D|0;c[da+(ma+4)>>2]=D|3;h:do if((M|0)!=(ga|0)){if((M|0)==(c[2461]|0)){N=(c[2458]|0)+aa|0;c[2458]=N;c[2461]=$;c[da+(fa+4)>>2]=N|1;c[da+(N+fa)>>2]=N;break}N=ea+4|0;W=c[da+(N+na)>>2]|0;if((W&3|0)==1){_=W&-8;Z=W>>>3;i:do if(W>>>0>=256){ca=
c[da+((na|24)+ea)>>2]|0;X=c[da+(ea+12+na)>>2]|0;do if((X|0)==(M|0)){U=na|16;V=da+(N+U)|0;O=c[V>>2]|0;if(!O){R=da+(U+ea)|0;U=c[R>>2]|0;if(!U){oa=0;break}else{pa=U;qa=R}}else{pa=O;qa=V}while(1){V=pa+20|0;O=c[V>>2]|0;if(O){pa=O;qa=V;continue}V=pa+16|0;O=c[V>>2]|0;if(!O)break;else{pa=O;qa=V}}if(qa>>>0<la>>>0)$a();else{c[qa>>2]=0;oa=pa;break}}else{V=c[da+((na|8)+ea)>>2]|0;if(V>>>0<la>>>0)$a();O=V+12|0;if((c[O>>2]|0)!=(M|0))$a();R=X+8|0;if((c[R>>2]|0)==(M|0)){c[O>>2]=X;c[R>>2]=V;oa=X;break}else $a()}while(0);
if(!ca)break;X=c[da+(ea+28+na)>>2]|0;l=10128+(X<<2)|0;do if((M|0)!=(c[l>>2]|0)){if(ca>>>0<(c[2460]|0)>>>0)$a();V=ca+16|0;if((c[V>>2]|0)==(M|0))c[V>>2]=oa;else c[ca+20>>2]=oa;if(!oa)break i}else{c[l>>2]=oa;if(oa)break;c[2457]=c[2457]&~(1<<X);break i}while(0);X=c[2460]|0;if(oa>>>0<X>>>0)$a();c[oa+24>>2]=ca;l=na|16;V=c[da+(l+ea)>>2]|0;do if(V)if(V>>>0<X>>>0)$a();else{c[oa+16>>2]=V;c[V+24>>2]=oa;break}while(0);V=c[da+(N+l)>>2]|0;if(!V)break;if(V>>>0<(c[2460]|0)>>>0)$a();else{c[oa+20>>2]=V;c[V+24>>2]=
oa;break}}else{V=c[da+((na|8)+ea)>>2]|0;X=c[da+(ea+12+na)>>2]|0;ca=9864+(Z<<1<<2)|0;do if((V|0)!=(ca|0)){if(V>>>0<la>>>0)$a();if((c[V+12>>2]|0)==(M|0))break;$a()}while(0);if((X|0)==(V|0)){c[2456]=c[2456]&~(1<<Z);break}do if((X|0)==(ca|0))ra=X+8|0;else{if(X>>>0<la>>>0)$a();l=X+8|0;if((c[l>>2]|0)==(M|0)){ra=l;break}$a()}while(0);c[V+12>>2]=X;c[ra>>2]=V}while(0);sa=da+((_|na)+ea)|0;ta=_+aa|0}else{sa=M;ta=aa}Z=sa+4|0;c[Z>>2]=c[Z>>2]&-2;c[da+(fa+4)>>2]=ta|1;c[da+(ta+fa)>>2]=ta;Z=ta>>>3;if(ta>>>0<256){N=
Z<<1;W=9864+(N<<2)|0;ca=c[2456]|0;l=1<<Z;do if(!(ca&l)){c[2456]=ca|l;ua=9864+(N+2<<2)|0;va=W}else{Z=9864+(N+2<<2)|0;R=c[Z>>2]|0;if(R>>>0>=(c[2460]|0)>>>0){ua=Z;va=R;break}$a()}while(0);c[ua>>2]=$;c[va+12>>2]=$;c[da+(fa+8)>>2]=va;c[da+(fa+12)>>2]=W;break}N=ta>>>8;do if(!N)wa=0;else{if(ta>>>0>16777215){wa=31;break}l=(N+1048320|0)>>>16&8;ca=N<<l;_=(ca+520192|0)>>>16&4;R=ca<<_;ca=(R+245760|0)>>>16&2;Z=14-(_|l|ca)+(R<<ca>>>15)|0;wa=ta>>>(Z+7|0)&1|Z<<1}while(0);N=10128+(wa<<2)|0;c[da+(fa+28)>>2]=wa;c[da+
(fa+20)>>2]=0;c[da+(fa+16)>>2]=0;W=c[2457]|0;Z=1<<wa;if(!(W&Z)){c[2457]=W|Z;c[N>>2]=$;c[da+(fa+24)>>2]=N;c[da+(fa+12)>>2]=$;c[da+(fa+8)>>2]=$;break}Z=c[N>>2]|0;if((wa|0)==31)xa=0;else xa=25-(wa>>>1)|0;j:do if((c[Z+4>>2]&-8|0)!=(ta|0)){N=ta<<xa;W=Z;while(1){ya=W+(N>>>31<<2)+16|0;ca=c[ya>>2]|0;if(!ca)break;if((c[ca+4>>2]&-8|0)==(ta|0)){za=ca;break j}else{N=N<<1;W=ca}}if(ya>>>0<(c[2460]|0)>>>0)$a();else{c[ya>>2]=$;c[da+(fa+24)>>2]=W;c[da+(fa+12)>>2]=$;c[da+(fa+8)>>2]=$;break h}}else za=Z;while(0);Z=
za+8|0;N=c[Z>>2]|0;V=c[2460]|0;if(za>>>0>=V>>>0&N>>>0>=V>>>0){c[N+12>>2]=$;c[Z>>2]=$;c[da+(fa+8)>>2]=N;c[da+(fa+12)>>2]=za;c[da+(fa+24)>>2]=0;break}else $a()}else{N=(c[2459]|0)+aa|0;c[2459]=N;c[2462]=$;c[da+(fa+4)>>2]=N|1}while(0);p=da+(ma|8)|0;i=b;return p|0}fa=10272|0;while(1){Aa=c[fa>>2]|0;if(Aa>>>0<=ga>>>0?(Ba=c[fa+4>>2]|0,Ca=Aa+Ba|0,Ca>>>0>ga>>>0):0)break;fa=c[fa+8>>2]|0}fa=Aa+(Ba+-39)|0;if(!(fa&7))Da=0;else Da=0-fa&7;fa=Aa+(Ba+-47+Da)|0;$=fa>>>0<(ga+16|0)>>>0?ga:fa;fa=$+8|0;aa=da+8|0;if(!(aa&
7))Ea=0;else Ea=0-aa&7;aa=ea+-40-Ea|0;c[2462]=da+Ea;c[2459]=aa;c[da+(Ea+4)>>2]=aa|1;c[da+(ea+-36)>>2]=40;c[2463]=c[2578];c[$+4>>2]=27;c[fa+0>>2]=c[2568];c[fa+4>>2]=c[2569];c[fa+8>>2]=c[2570];c[fa+12>>2]=c[2571];c[2568]=da;c[2569]=ea;c[2571]=0;c[2570]=fa;fa=$+28|0;c[fa>>2]=7;if(($+32|0)>>>0<Ca>>>0){aa=fa;do{fa=aa;aa=aa+4|0;c[aa>>2]=7}while((fa+8|0)>>>0<Ca>>>0)}if(($|0)!=(ga|0)){aa=$-ga|0;fa=ga+(aa+4)|0;c[fa>>2]=c[fa>>2]&-2;c[ga+4>>2]=aa|1;c[ga+aa>>2]=aa;fa=aa>>>3;if(aa>>>0<256){M=fa<<1;ba=9864+(M<<
2)|0;N=c[2456]|0;Z=1<<fa;do if(!(N&Z)){c[2456]=N|Z;Fa=9864+(M+2<<2)|0;Ha=ba}else{fa=9864+(M+2<<2)|0;V=c[fa>>2]|0;if(V>>>0>=(c[2460]|0)>>>0){Fa=fa;Ha=V;break}$a()}while(0);c[Fa>>2]=ga;c[Ha+12>>2]=ga;c[ga+8>>2]=Ha;c[ga+12>>2]=ba;break}M=aa>>>8;if(M)if(aa>>>0>16777215)Ia=31;else{Z=(M+1048320|0)>>>16&8;N=M<<Z;M=(N+520192|0)>>>16&4;$=N<<M;N=($+245760|0)>>>16&2;V=14-(M|Z|N)+($<<N>>>15)|0;Ia=aa>>>(V+7|0)&1|V<<1}else Ia=0;V=10128+(Ia<<2)|0;c[ga+28>>2]=Ia;c[ga+20>>2]=0;c[ga+16>>2]=0;N=c[2457]|0;$=1<<Ia;if(!(N&
$)){c[2457]=N|$;c[V>>2]=ga;c[ga+24>>2]=V;c[ga+12>>2]=ga;c[ga+8>>2]=ga;break}$=c[V>>2]|0;if((Ia|0)==31)Ja=0;else Ja=25-(Ia>>>1)|0;k:do if((c[$+4>>2]&-8|0)!=(aa|0)){V=aa<<Ja;N=$;while(1){Ka=N+(V>>>31<<2)+16|0;Z=c[Ka>>2]|0;if(!Z)break;if((c[Z+4>>2]&-8|0)==(aa|0)){La=Z;break k}else{V=V<<1;N=Z}}if(Ka>>>0<(c[2460]|0)>>>0)$a();else{c[Ka>>2]=ga;c[ga+24>>2]=N;c[ga+12>>2]=ga;c[ga+8>>2]=ga;break g}}else La=$;while(0);$=La+8|0;aa=c[$>>2]|0;ba=c[2460]|0;if(La>>>0>=ba>>>0&aa>>>0>=ba>>>0){c[aa+12>>2]=ga;c[$>>2]=
ga;c[ga+8>>2]=aa;c[ga+12>>2]=La;c[ga+24>>2]=0;break}else $a()}}else{aa=c[2460]|0;if((aa|0)==0|da>>>0<aa>>>0)c[2460]=da;c[2568]=da;c[2569]=ea;c[2571]=0;c[2465]=c[2574];c[2464]=-1;aa=0;do{$=aa<<1;ba=9864+($<<2)|0;c[9864+($+3<<2)>>2]=ba;c[9864+($+2<<2)>>2]=ba;aa=aa+1|0}while((aa|0)!=32);aa=da+8|0;if(!(aa&7))Ma=0;else Ma=0-aa&7;aa=ea+-40-Ma|0;c[2462]=da+Ma;c[2459]=aa;c[da+(Ma+4)>>2]=aa|1;c[da+(ea+-36)>>2]=40;c[2463]=c[2578]}while(0);ea=c[2459]|0;if(ea>>>0>D>>>0){da=ea-D|0;c[2459]=da;ea=c[2462]|0;c[2462]=
ea+D;c[ea+(D+4)>>2]=da|1;c[ea+4>>2]=D|3;p=ea+8|0;i=b;return p|0}}c[(Va()|0)>>2]=12;p=0;i=b;return p|0}function yn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=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,J=0,K=0;b=i;if(!a){i=b;return}d=a+-8|0;e=c[2460]|0;if(d>>>0<e>>>0)$a();f=c[a+-4>>2]|0;g=f&3;if((g|0)==1)$a();h=f&-8;j=a+(h+-8)|0;do if(!(f&1)){k=c[d>>2]|0;if(!g){i=b;return}l=-8-k|0;m=a+l|0;n=k+h|0;if(m>>>0<e>>>0)$a();if((m|0)==(c[2461]|0)){o=a+(h+
-4)|0;p=c[o>>2]|0;if((p&3|0)!=3){q=m;r=n;break}c[2458]=n;c[o>>2]=p&-2;c[a+(l+4)>>2]=n|1;c[j>>2]=n;i=b;return}p=k>>>3;if(k>>>0<256){k=c[a+(l+8)>>2]|0;o=c[a+(l+12)>>2]|0;s=9864+(p<<1<<2)|0;if((k|0)!=(s|0)){if(k>>>0<e>>>0)$a();if((c[k+12>>2]|0)!=(m|0))$a()}if((o|0)==(k|0)){c[2456]=c[2456]&~(1<<p);q=m;r=n;break}if((o|0)!=(s|0)){if(o>>>0<e>>>0)$a();s=o+8|0;if((c[s>>2]|0)==(m|0))t=s;else $a()}else t=o+8|0;c[k+12>>2]=o;c[t>>2]=k;q=m;r=n;break}k=c[a+(l+24)>>2]|0;o=c[a+(l+12)>>2]|0;do if((o|0)==(m|0)){s=a+
(l+20)|0;p=c[s>>2]|0;if(!p){u=a+(l+16)|0;v=c[u>>2]|0;if(!v){w=0;break}else{x=v;y=u}}else{x=p;y=s}while(1){s=x+20|0;p=c[s>>2]|0;if(p){x=p;y=s;continue}s=x+16|0;p=c[s>>2]|0;if(!p)break;else{x=p;y=s}}if(y>>>0<e>>>0)$a();else{c[y>>2]=0;w=x;break}}else{s=c[a+(l+8)>>2]|0;if(s>>>0<e>>>0)$a();p=s+12|0;if((c[p>>2]|0)!=(m|0))$a();u=o+8|0;if((c[u>>2]|0)==(m|0)){c[p>>2]=o;c[u>>2]=s;w=o;break}else $a()}while(0);if(k){o=c[a+(l+28)>>2]|0;s=10128+(o<<2)|0;if((m|0)==(c[s>>2]|0)){c[s>>2]=w;if(!w){c[2457]=c[2457]&~(1<<
o);q=m;r=n;break}}else{if(k>>>0<(c[2460]|0)>>>0)$a();o=k+16|0;if((c[o>>2]|0)==(m|0))c[o>>2]=w;else c[k+20>>2]=w;if(!w){q=m;r=n;break}}o=c[2460]|0;if(w>>>0<o>>>0)$a();c[w+24>>2]=k;s=c[a+(l+16)>>2]|0;do if(s)if(s>>>0<o>>>0)$a();else{c[w+16>>2]=s;c[s+24>>2]=w;break}while(0);s=c[a+(l+20)>>2]|0;if(s)if(s>>>0<(c[2460]|0)>>>0)$a();else{c[w+20>>2]=s;c[s+24>>2]=w;q=m;r=n;break}else{q=m;r=n}}else{q=m;r=n}}else{q=d;r=h}while(0);if(q>>>0>=j>>>0)$a();d=a+(h+-4)|0;w=c[d>>2]|0;if(!(w&1))$a();if(!(w&2)){if((j|0)==
(c[2462]|0)){e=(c[2459]|0)+r|0;c[2459]=e;c[2462]=q;c[q+4>>2]=e|1;if((q|0)!=(c[2461]|0)){i=b;return}c[2461]=0;c[2458]=0;i=b;return}if((j|0)==(c[2461]|0)){e=(c[2458]|0)+r|0;c[2458]=e;c[2461]=q;c[q+4>>2]=e|1;c[q+e>>2]=e;i=b;return}e=(w&-8)+r|0;x=w>>>3;do if(w>>>0>=256){y=c[a+(h+16)>>2]|0;t=c[a+(h|4)>>2]|0;do if((t|0)==(j|0)){g=a+(h+12)|0;f=c[g>>2]|0;if(!f){s=a+(h+8)|0;o=c[s>>2]|0;if(!o){z=0;break}else{A=o;B=s}}else{A=f;B=g}while(1){g=A+20|0;f=c[g>>2]|0;if(f){A=f;B=g;continue}g=A+16|0;f=c[g>>2]|0;if(!f)break;
else{A=f;B=g}}if(B>>>0<(c[2460]|0)>>>0)$a();else{c[B>>2]=0;z=A;break}}else{g=c[a+h>>2]|0;if(g>>>0<(c[2460]|0)>>>0)$a();f=g+12|0;if((c[f>>2]|0)!=(j|0))$a();s=t+8|0;if((c[s>>2]|0)==(j|0)){c[f>>2]=t;c[s>>2]=g;z=t;break}else $a()}while(0);if(y){t=c[a+(h+20)>>2]|0;n=10128+(t<<2)|0;if((j|0)==(c[n>>2]|0)){c[n>>2]=z;if(!z){c[2457]=c[2457]&~(1<<t);break}}else{if(y>>>0<(c[2460]|0)>>>0)$a();t=y+16|0;if((c[t>>2]|0)==(j|0))c[t>>2]=z;else c[y+20>>2]=z;if(!z)break}t=c[2460]|0;if(z>>>0<t>>>0)$a();c[z+24>>2]=y;n=
c[a+(h+8)>>2]|0;do if(n)if(n>>>0<t>>>0)$a();else{c[z+16>>2]=n;c[n+24>>2]=z;break}while(0);n=c[a+(h+12)>>2]|0;if(n)if(n>>>0<(c[2460]|0)>>>0)$a();else{c[z+20>>2]=n;c[n+24>>2]=z;break}}}else{n=c[a+h>>2]|0;t=c[a+(h|4)>>2]|0;y=9864+(x<<1<<2)|0;if((n|0)!=(y|0)){if(n>>>0<(c[2460]|0)>>>0)$a();if((c[n+12>>2]|0)!=(j|0))$a()}if((t|0)==(n|0)){c[2456]=c[2456]&~(1<<x);break}if((t|0)!=(y|0)){if(t>>>0<(c[2460]|0)>>>0)$a();y=t+8|0;if((c[y>>2]|0)==(j|0))C=y;else $a()}else C=t+8|0;c[n+12>>2]=t;c[C>>2]=n}while(0);c[q+
4>>2]=e|1;c[q+e>>2]=e;if((q|0)==(c[2461]|0)){c[2458]=e;i=b;return}else D=e}else{c[d>>2]=w&-2;c[q+4>>2]=r|1;c[q+r>>2]=r;D=r}r=D>>>3;if(D>>>0<256){w=r<<1;d=9864+(w<<2)|0;e=c[2456]|0;C=1<<r;if(e&C){r=9864+(w+2<<2)|0;j=c[r>>2]|0;if(j>>>0<(c[2460]|0)>>>0)$a();else{E=r;F=j}}else{c[2456]=e|C;E=9864+(w+2<<2)|0;F=d}c[E>>2]=q;c[F+12>>2]=q;c[q+8>>2]=F;c[q+12>>2]=d;i=b;return}d=D>>>8;if(d)if(D>>>0>16777215)G=31;else{F=(d+1048320|0)>>>16&8;E=d<<F;d=(E+520192|0)>>>16&4;w=E<<d;E=(w+245760|0)>>>16&2;C=14-(d|F|E)+
(w<<E>>>15)|0;G=D>>>(C+7|0)&1|C<<1}else G=0;C=10128+(G<<2)|0;c[q+28>>2]=G;c[q+20>>2]=0;c[q+16>>2]=0;E=c[2457]|0;w=1<<G;a:do if(E&w){F=c[C>>2]|0;if((G|0)==31)H=0;else H=25-(G>>>1)|0;b:do if((c[F+4>>2]&-8|0)!=(D|0)){d=D<<H;e=F;while(1){I=e+(d>>>31<<2)+16|0;j=c[I>>2]|0;if(!j)break;if((c[j+4>>2]&-8|0)==(D|0)){J=j;break b}else{d=d<<1;e=j}}if(I>>>0<(c[2460]|0)>>>0)$a();else{c[I>>2]=q;c[q+24>>2]=e;c[q+12>>2]=q;c[q+8>>2]=q;break a}}else J=F;while(0);F=J+8|0;d=c[F>>2]|0;j=c[2460]|0;if(J>>>0>=j>>>0&d>>>0>=
j>>>0){c[d+12>>2]=q;c[F>>2]=q;c[q+8>>2]=d;c[q+12>>2]=J;c[q+24>>2]=0;break}else $a()}else{c[2457]=E|w;c[C>>2]=q;c[q+24>>2]=C;c[q+12>>2]=q;c[q+8>>2]=q}while(0);q=(c[2464]|0)+-1|0;c[2464]=q;if(!q)K=10280|0;else{i=b;return}while(1){q=c[K>>2]|0;if(!q)break;else K=q+8|0}c[2464]=-1;i=b;return}function zn(){}function An(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;if((e|0)>=20){d=d&255;g=b&3;h=d|d<<8|d<<16|d<<24;i=f&~3;if(g){g=b+4-g|0;while((b|0)<(g|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(i|0)){c[b>>
2]=h;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function Bn(b){b=b|0;var c=0;c=b;while(a[c>>0]|0)c=c+1|0;return c-b|0}function Cn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+c>>>0;return(E=b+d+(e>>>0<a>>>0|0)>>>0,e|0)|0}function Dn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return Oa(b|0,d|0,e|0)|0;f=b|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}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|
0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function En(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 Dn(b,c,d)|0;return b|0}function Fn(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(E=e,a-c>>>0|0)|0}function Gn(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c}E=a<<c-32;return 0}function Hn(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E=b>>>
c;return a>>>c|(b&(1<<c)-1)<<32-c}E=0;return b>>>c-32|0}function In(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){E=b>>c;return a>>>c|(b&(1<<c)-1)<<32-c}E=(b|0)<0?-1:0;return b>>c-32|0}function Jn(b){b=b|0;var c=0;c=a[n+(b>>>24)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[n+(b&255)>>0]|0)+24|0}function Kn(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>
16&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[m+(b>>>24)>>0]|0)+24|0}function Ln(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a&65535;d=b&65535;e=aa(d,c)|0;f=a>>>16;a=(e>>>16)+(aa(d,f)|0)|0;d=b>>>16;b=aa(d,c)|0;return(E=(a>>>16)+(aa(d,f)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|e&65535|0)|0}function Mn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;g=d>>31|((d|0)<0?-1:0)<<1;h=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;i=Fn(e^a,f^b,e,f)|0;
b=E;a=g^e;e=h^f;f=Fn((Rn(i,b,Fn(g^c,h^d,g,h)|0,E,0)|0)^a,E^e,a,e)|0;return f|0}function Nn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+8|0;g=f|0;h=b>>31|((b|0)<0?-1:0)<<1;j=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;k=e>>31|((e|0)<0?-1:0)<<1;l=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;m=Fn(h^a,j^b,h,j)|0;b=E;Rn(m,b,Fn(k^d,l^e,k,l)|0,E,g)|0;l=Fn(c[g>>2]^h,c[g+4>>2]^j,h,j)|0;j=E;i=f;return(E=j,l)|0}function On(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=Ln(e,a)|0;f=E;return(E=
(aa(b,a)|0)+(aa(d,e)|0)+f|f&0,c|0|0)|0}function Pn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=Rn(a,b,c,d,0)|0;return e|0}function Qn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+8|0;g=f|0;Rn(a,b,d,e,g)|0;i=f;return(E=c[g+4>>2]|0,c[g>>2]|0)|0}function Rn(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,y=0,z=0,A=0,B=0,C=0,D=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(E=n,o)|0}else{if(!m){n=0;o=0;return(E=n,o)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;o=0;return(E=n,o)|0}}m=(l|0)==0;do if(j){if(!m){p=(Jn(l|0)|0)-(Jn(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(E=n,o)|0}c[f>>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return(E=n,o)|0}r=j-1|0;if(r&j){s=(Jn(j|0)|0)+33-(Jn(i|0)|0)|0;q=64-s|0;p=32-s|0;y=p>>31;z=s-32|0;A=z>>31;t=s;u=p-1>>31&i>>>(z>>>0)|(i<<p|g>>>(s>>>
0))&A;v=A&i>>>(s>>>0);w=g<<q&y;x=(i<<q|g>>>(z>>>0))&y|g<<p&s-33>>31;break}if(f){c[f>>2]=r&g;c[f+4>>2]=0}if((j|0)==1){n=h|b&0;o=a|0|0;return(E=n,o)|0}else{r=Kn(j|0)|0;n=i>>>(r>>>0)|0;o=i<<32-r|g>>>(r>>>0)|0;return(E=n,o)|0}}else{if(m){if(f){c[f>>2]=(i>>>0)%(j>>>0);c[f+4>>2]=0}n=0;o=(i>>>0)/(j>>>0)>>>0;return(E=n,o)|0}if(!g){if(f){c[f>>2]=0;c[f+4>>2]=(i>>>0)%(l>>>0)}n=0;o=(i>>>0)/(l>>>0)>>>0;return(E=n,o)|0}r=l-1|0;if(!(r&l)){if(f){c[f>>2]=a|0;c[f+4>>2]=r&i|b&0}n=0;o=i>>>((Kn(l|0)|0)>>>0);return(E=
n,o)|0}r=(Jn(l|0)|0)-(Jn(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(E=n,o)|0}c[f>>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return(E=n,o)|0}while(0);if(!t){B=x;C=w;D=v;F=u;G=0;H=0}else{b=d|0|0;d=k|e&0;e=Cn(b,d,-1,-1)|0;k=E;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;Fn(e,k,g,a)|0;i=E;l=i>>31|((i|0)<0?-1:0)<<1;t=l&1;v=Fn(g,a,l&b,(((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1)&d)|0;w=E;u=u-1|0}while((u|0)!=
0);B=h;C=x;D=w;F=v;G=0;H=t}t=C;C=0;if(f){c[f>>2]=F;c[f+4>>2]=D}n=(t|0)>>>31|(B|C)<<1|(C<<1|t>>>31)&0|G;o=(t<<1|0>>>31)&-2|H;return(E=n,o)|0}function Sn(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;return+jb[a&1](b|0,c|0,d|0,e|0,f|0,+g)}function Tn(a,b){a=a|0;b=b|0;return kb[a&7](b|0)|0}function Un(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;lb[a&3](b|0,c|0,d|0,e|0,f|0)}function Vn(a,b,c){a=a|0;b=b|0;c=+c;return+mb[a&15](b|0,+c)}function Wn(a,b){a=a|0;b=b|0;nb[a&127](b|0)}function Xn(a,
b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return+ob[a&1](b|0,c|0,d|0,e|0,+f)}function Yn(a,b,c){a=a|0;b=b|0;c=c|0;pb[a&63](b|0,c|0)}function Zn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return qb[a&15](b|0,c|0,d|0)|0}function _n(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;rb[a&7](b|0,c|0,d|0)}function $n(a){a=a|0;sb[a&3]()}function ao(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;tb[a&31](b|0,c|0,+d)}function bo(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ub[a&7](b|0,c|0,d|0,e|0)|0}function co(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;vb[a&7](b|0,c|0,d|0,e|0,f|0,g|0)}function eo(a,b,c){a=a|0;b=b|0;c=c|0;return wb[a&31](b|0,c|0)|0}function fo(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 xb[a&15](b|0,c|0,d|0,e|0,f|0)|0}function go(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;yb[a&31](b|0,c|0,d|0,e|0)}function ho(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ba(0);return 0}function io(a){a=a|0;ba(1);return 0}function jo(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ba(2)}function ko(a,b){a=a|0;b=+b;
ba(3);return 0}function lo(a){a=a|0;ba(4)}function mo(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ba(5);return 0}function no(a,b){a=a|0;b=b|0;ba(6)}function oo(a,b,c){a=a|0;b=b|0;c=c|0;ba(7);return 0}function po(a,b,c){a=a|0;b=b|0;c=c|0;ba(8)}function qo(){ba(9)}function ro(){gb()}function so(a,b,c){a=a|0;b=b|0;c=+c;ba(10)}function to(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ba(11);return 0}function uo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ba(12)}function vo(a,b){a=a|0;b=b|0;ba(13);return 0}function wo(a,
b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ba(14);return 0}function xo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ba(15)}var jb=[ho,Rd];var kb=[io,pe,ye,He,Se,El,Ym,io];var lb=[jo,pn,on,jo];var mb=[ko,Qf,bg,pg,Ag,Lg,Vg,fh,wh,Mh,bi,ni,ko,ko,ko,ko];var nb=[lo,Td,Pd,wc,Ud,vc,Yd,ve,we,Fe,Ne,Pe,Oe,Ef,Ff,Sf,Tf,Uf,eg,gg,qg,rg,Bg,Cg,Mg,Ng,Xg,Yg,nh,oh,xh,yh,Ch,Dh,Th,Uh,di,ei,oi,qi,ui,vi,Ai,Ei,Ii,Vi,Zi,bj,fj,Sj,jl,nl,pl,ql,sl,tl,xl,zl,Cl,Kl,Xm,Wm,cn,fn,dn,en,gn,wn,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,
lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo,lo];var ob=[mo,Qd];var pb=[no,Zd,_d,Nf,Of,Rf,Kf,Lf,_f,$f,fg,Xf,Yf,mg,ng,jg,kg,xg,yg,ug,vg,Ig,Jg,Fg,Gg,Sg,Tg,Pg,Qg,ch,dh,$g,ah,th,uh,qh,rh,Jh,Kh,Gh,Hh,_h,$h,Xh,Yh,ki,li,pi,hi,ii,Tj,Uj,Hm,Gi,Ci,dj,Ti,$i,Xi,si,no,no,no,no];var qb=[oo,Wd,qe,Ae,Ie,Ve,Df,vl,Al,Fl,Ml,hn,oo,oo,oo,oo];var rb=[po,$d,be,de,ee,Vj,Wj,po];var sb=[qo,ro,un,vn];var tb=[so,ue,Ee,Me,Ye,Pf,ag,og,zg,Kg,Ug,eh,vh,Lh,
ai,mi,Jl,so,so,so,so,so,so,so,so,so,so,so,so,so,so,so];var ub=[to,Gf,Hf,wl,Bl,to,to,to];var vb=[uo,re,Be,Je,Ue,Gl,rn,qn];var wb=[vo,Sd,Vd,Xd,oe,xe,Ge,Re,Mf,Zf,lg,wg,Hg,Rg,bh,sh,Ih,Zh,ji,kl,ll,ul,yl,Dl,Ll,Gm,Zj,Ek,Fk,Tl,Vl,Rk];var xb=[wo,se,Ce,Ke,We,Hl,Fi,Bi,cj,Si,_i,Wi,ri,wo,wo,wo];var yb=[xo,ae,ce,te,De,Le,Xe,ti,Di,Hi,Ui,Yi,aj,ej,ml,ol,rl,Il,kn,ln,xo,xo,xo,xo,xo,xo,xo,xo,xo,xo,xo,xo];return{_b2PrismaticJoint_IsMotorEnabled:dd,_b2Body_GetWorldVector:mc,_strlen:Bn,_b2Body_GetLocalVector:fc,_b2PrismaticJoint_GetMotorSpeed:ad,
_b2ParticleGroup_ApplyLinearImpulse:zd,_b2RopeJointDef_Create:rd,_b2World_CreateParticleSystem:zc,_b2ParticleSystem_SetRadius:Od,_b2FrictionJointDef_Create:Nc,_b2World_RayCast:Fc,_b2MotorJointDef_InitializeAndCreate:Wc,_b2GearJoint_GetRatio:Pc,_b2Body_GetLocalPoint:ec,_memcpy:Dn,_b2RevoluteJoint_EnableLimit:jd,_b2Body_DestroyFixture:$b,_b2World_Create:xc,_b2PolygonShape_CreateFixture_3:Ob,_b2PolygonShape_CreateFixture_6:Rb,_b2PolygonShape_CreateFixture_7:Sb,_b2PolygonShape_CreateFixture_4:Pb,_b2PolygonShape_CreateFixture_5:Qb,
_b2Body_ApplyLinearImpulse:Xb,_b2Body_SetAwake:nc,_b2Body_GetWorldCenter:kc,_b2ParticleGroup_DestroyParticles:Ad,_b2PrismaticJoint_EnableLimit:Zc,_b2Fixture_TestPoint:uc,_b2MotorJoint_SetLinearOffset:Uc,___cxa_can_catch:sn,_free:yn,_b2ParticleSystem_CreateParticle:Dd,_b2Body_SetLinearVelocity:qc,_b2CircleShape_CreateParticleGroup:Lb,_b2WeldJointDef_Create:sd,_b2Body_GetAngularVelocity:bc,_b2Body_ApplyForceToCenter:Zb,_b2DistanceJointDef_InitializeAndCreate:Mc,_b2Body_ApplyForce:Yb,_b2RevoluteJoint_SetMotorSpeed:qd,
___cxa_is_pointer_type:tn,_b2Body_GetPosition:hc,_b2World_CreateBody:yc,_b2Body_GetLinearVelocity:dc,_b2ParticleSystem_SetGravityScale:Ld,_b2ParticleSystem_SetMaxParticleCount:Md,_b2Body_SetMassData:rc,_b2MouseJointDef_Create:Yc,_b2ParticleSystem_GetColorBuffer:Ed,_b2DistanceJointDef_Create:Lc,_b2ParticleSystem_GetPositionBuffer:Hd,_b2CircleShape_DestroyParticlesInShape:Mb,_b2World_QueryAABB:Ec,_b2PolygonShape_DestroyParticlesInShape_4:Vb,_b2RevoluteJointDef_InitializeAndCreate:pd,_b2GearJointDef_Create:Qc,
_b2PrismaticJoint_IsLimitEnabled:cd,_b2Contact_GetWorldManifold:Kc,_b2WheelJoint_SetSpringFrequencyHz:vd,_b2Body_ApplyTorque:_b,_b2Body_SetFixedRotation:oc,_b2PrismaticJointDef_InitializeAndCreate:gd,_memset:An,_b2MotorJointDef_Create:Vc,_b2World_DestroyBody:Bc,_b2RevoluteJointDef_Create:od,_b2ParticleGroup_GetParticleCount:Cd,_b2World_SetGravity:Hc,_b2PrismaticJoint_EnableMotor:_c,_b2PolygonShape_CreateParticleGroup_4:Ub,_b2PolygonShape_CreateFixture_8:Tb,_b2Body_SetAngularVelocity:pc,_b2Body_GetWorldPoint:lc,
_b2WheelJoint_SetMotorSpeed:ud,_b2FrictionJointDef_InitializeAndCreate:Oc,_b2World_SetContactListener:Gc,_b2ParticleSystem_SetDamping:Jd,_b2Body_SetType:tc,_b2Body_SetTransform:sc,_b2CircleShape_CreateFixture:Kb,_b2RevoluteJoint_GetJointAngle:ld,_b2ParticleGroup_ApplyForce:yd,_malloc:xn,_b2Contact_GetManifold:Jc,_b2RevoluteJoint_IsMotorEnabled:nd,_b2ParticleSystem_GetVelocityBuffer:Id,_b2ParticleSystem_GetParticleLifetime:Gd,_b2RevoluteJoint_IsLimitEnabled:md,_b2World_DestroyParticleSystem:Dc,_b2RevoluteJoint_EnableMotor:kd,
_b2Body_GetTransform:ic,_b2WeldJointDef_InitializeAndCreate:td,_b2EdgeShape_CreateFixture:Nb,_b2Body_GetType:jc,_b2Manifold_GetPointCount:Hb,_b2ParticleSystem_SetDensity:Kd,_b2PrismaticJoint_GetMotorForce:bd,_b2Joint_GetBodyA:Rc,_b2PulleyJointDef_InitializeAndCreate:id,_b2Joint_GetBodyB:Sc,_b2ParticleSystem_GetParticleCount:Fd,_b2MouseJoint_SetTarget:Xc,_b2Body_ApplyAngularImpulse:Wb,_b2ChainShape_CreateFixture:Ib,_b2World_DestroyJoint:Cc,_b2MotorJoint_SetAngularOffset:Tc,_b2World_Delete:Ac,_b2PrismaticJoint_GetJointTranslation:$c,
_i64Add:Cn,_b2Body_GetMass:gc,_b2Body_GetAngle:ac,_b2ParticleGroup_GetBufferIndex:Bd,_b2WheelJointDef_InitializeAndCreate:xd,_b2World_Step:Ic,_b2PrismaticJointDef_Create:fd,_b2WheelJointDef_Create:wd,_b2PulleyJointDef_Create:hd,_b2Body_GetInertia:cc,_memmove:En,_b2ParticleSystem_SetParticleLifetime:Nd,_b2PrismaticJoint_SetMotorSpeed:ed,__GLOBAL__I_a:fe,runPostSets:zn,stackAlloc:zb,stackSave:Ab,stackRestore:Bb,setThrew:Cb,setTempRet0:Fb,getTempRet0:Gb,dynCall_diiiiid:Sn,dynCall_ii:Tn,dynCall_viiiii:Un,
dynCall_did:Vn,dynCall_vi:Wn,dynCall_diiiid:Xn,dynCall_vii:Yn,dynCall_iiii:Zn,dynCall_viii:_n,dynCall_v:$n,dynCall_viid:ao,dynCall_iiiii:bo,dynCall_viiiiii:co,dynCall_iii:eo,dynCall_iiiiii:fo,dynCall_viiii:go}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _b2PrismaticJoint_IsMotorEnabled=Module["_b2PrismaticJoint_IsMotorEnabled"]=asm["_b2PrismaticJoint_IsMotorEnabled"];var _b2Body_GetWorldVector=Module["_b2Body_GetWorldVector"]=asm["_b2Body_GetWorldVector"];var _strlen=Module["_strlen"]=asm["_strlen"];
var _b2Body_GetLocalVector=Module["_b2Body_GetLocalVector"]=asm["_b2Body_GetLocalVector"];var _b2PrismaticJoint_GetMotorSpeed=Module["_b2PrismaticJoint_GetMotorSpeed"]=asm["_b2PrismaticJoint_GetMotorSpeed"];var _b2ParticleGroup_ApplyLinearImpulse=Module["_b2ParticleGroup_ApplyLinearImpulse"]=asm["_b2ParticleGroup_ApplyLinearImpulse"];var _b2RopeJointDef_Create=Module["_b2RopeJointDef_Create"]=asm["_b2RopeJointDef_Create"];var _b2World_CreateParticleSystem=Module["_b2World_CreateParticleSystem"]=asm["_b2World_CreateParticleSystem"];
var _b2ParticleSystem_SetRadius=Module["_b2ParticleSystem_SetRadius"]=asm["_b2ParticleSystem_SetRadius"];var _b2FrictionJointDef_Create=Module["_b2FrictionJointDef_Create"]=asm["_b2FrictionJointDef_Create"];var _b2World_RayCast=Module["_b2World_RayCast"]=asm["_b2World_RayCast"];var _b2MotorJointDef_InitializeAndCreate=Module["_b2MotorJointDef_InitializeAndCreate"]=asm["_b2MotorJointDef_InitializeAndCreate"];var _b2GearJoint_GetRatio=Module["_b2GearJoint_GetRatio"]=asm["_b2GearJoint_GetRatio"];
var _b2Body_GetLocalPoint=Module["_b2Body_GetLocalPoint"]=asm["_b2Body_GetLocalPoint"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _b2RevoluteJoint_EnableLimit=Module["_b2RevoluteJoint_EnableLimit"]=asm["_b2RevoluteJoint_EnableLimit"];var _b2Body_DestroyFixture=Module["_b2Body_DestroyFixture"]=asm["_b2Body_DestroyFixture"];var _b2World_Create=Module["_b2World_Create"]=asm["_b2World_Create"];var _b2PolygonShape_CreateFixture_3=Module["_b2PolygonShape_CreateFixture_3"]=asm["_b2PolygonShape_CreateFixture_3"];
var _b2PolygonShape_CreateFixture_6=Module["_b2PolygonShape_CreateFixture_6"]=asm["_b2PolygonShape_CreateFixture_6"];var _b2PolygonShape_CreateFixture_7=Module["_b2PolygonShape_CreateFixture_7"]=asm["_b2PolygonShape_CreateFixture_7"];var _b2PolygonShape_CreateFixture_4=Module["_b2PolygonShape_CreateFixture_4"]=asm["_b2PolygonShape_CreateFixture_4"];var _b2PolygonShape_CreateFixture_5=Module["_b2PolygonShape_CreateFixture_5"]=asm["_b2PolygonShape_CreateFixture_5"];
var _b2Body_ApplyLinearImpulse=Module["_b2Body_ApplyLinearImpulse"]=asm["_b2Body_ApplyLinearImpulse"];var _b2Body_SetAwake=Module["_b2Body_SetAwake"]=asm["_b2Body_SetAwake"];var _b2Body_GetWorldCenter=Module["_b2Body_GetWorldCenter"]=asm["_b2Body_GetWorldCenter"];var _b2ParticleGroup_DestroyParticles=Module["_b2ParticleGroup_DestroyParticles"]=asm["_b2ParticleGroup_DestroyParticles"];var _b2PrismaticJoint_EnableLimit=Module["_b2PrismaticJoint_EnableLimit"]=asm["_b2PrismaticJoint_EnableLimit"];
var _b2Fixture_TestPoint=Module["_b2Fixture_TestPoint"]=asm["_b2Fixture_TestPoint"];var _b2MotorJoint_SetLinearOffset=Module["_b2MotorJoint_SetLinearOffset"]=asm["_b2MotorJoint_SetLinearOffset"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var _free=Module["_free"]=asm["_free"];var _b2ParticleSystem_CreateParticle=Module["_b2ParticleSystem_CreateParticle"]=asm["_b2ParticleSystem_CreateParticle"];var _b2Body_SetLinearVelocity=Module["_b2Body_SetLinearVelocity"]=asm["_b2Body_SetLinearVelocity"];
var _b2CircleShape_CreateParticleGroup=Module["_b2CircleShape_CreateParticleGroup"]=asm["_b2CircleShape_CreateParticleGroup"];var _b2WeldJointDef_Create=Module["_b2WeldJointDef_Create"]=asm["_b2WeldJointDef_Create"];var _b2Body_GetAngularVelocity=Module["_b2Body_GetAngularVelocity"]=asm["_b2Body_GetAngularVelocity"];var _b2Body_ApplyForceToCenter=Module["_b2Body_ApplyForceToCenter"]=asm["_b2Body_ApplyForceToCenter"];
var _b2DistanceJointDef_InitializeAndCreate=Module["_b2DistanceJointDef_InitializeAndCreate"]=asm["_b2DistanceJointDef_InitializeAndCreate"];var _b2Body_ApplyForce=Module["_b2Body_ApplyForce"]=asm["_b2Body_ApplyForce"];var _b2RevoluteJoint_SetMotorSpeed=Module["_b2RevoluteJoint_SetMotorSpeed"]=asm["_b2RevoluteJoint_SetMotorSpeed"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _b2Body_GetPosition=Module["_b2Body_GetPosition"]=asm["_b2Body_GetPosition"];
var _b2World_CreateBody=Module["_b2World_CreateBody"]=asm["_b2World_CreateBody"];var _b2Body_GetLinearVelocity=Module["_b2Body_GetLinearVelocity"]=asm["_b2Body_GetLinearVelocity"];var _b2ParticleSystem_SetGravityScale=Module["_b2ParticleSystem_SetGravityScale"]=asm["_b2ParticleSystem_SetGravityScale"];var _b2ParticleSystem_SetMaxParticleCount=Module["_b2ParticleSystem_SetMaxParticleCount"]=asm["_b2ParticleSystem_SetMaxParticleCount"];var _b2Body_SetMassData=Module["_b2Body_SetMassData"]=asm["_b2Body_SetMassData"];
var _b2MouseJointDef_Create=Module["_b2MouseJointDef_Create"]=asm["_b2MouseJointDef_Create"];var _b2ParticleSystem_GetColorBuffer=Module["_b2ParticleSystem_GetColorBuffer"]=asm["_b2ParticleSystem_GetColorBuffer"];var _b2DistanceJointDef_Create=Module["_b2DistanceJointDef_Create"]=asm["_b2DistanceJointDef_Create"];var _b2ParticleSystem_GetPositionBuffer=Module["_b2ParticleSystem_GetPositionBuffer"]=asm["_b2ParticleSystem_GetPositionBuffer"];
var _b2CircleShape_DestroyParticlesInShape=Module["_b2CircleShape_DestroyParticlesInShape"]=asm["_b2CircleShape_DestroyParticlesInShape"];var _b2World_QueryAABB=Module["_b2World_QueryAABB"]=asm["_b2World_QueryAABB"];var _b2PolygonShape_DestroyParticlesInShape_4=Module["_b2PolygonShape_DestroyParticlesInShape_4"]=asm["_b2PolygonShape_DestroyParticlesInShape_4"];var _b2RevoluteJointDef_InitializeAndCreate=Module["_b2RevoluteJointDef_InitializeAndCreate"]=asm["_b2RevoluteJointDef_InitializeAndCreate"];
var _b2GearJointDef_Create=Module["_b2GearJointDef_Create"]=asm["_b2GearJointDef_Create"];var _b2PrismaticJoint_IsLimitEnabled=Module["_b2PrismaticJoint_IsLimitEnabled"]=asm["_b2PrismaticJoint_IsLimitEnabled"];var _b2Contact_GetWorldManifold=Module["_b2Contact_GetWorldManifold"]=asm["_b2Contact_GetWorldManifold"];var _b2WheelJoint_SetSpringFrequencyHz=Module["_b2WheelJoint_SetSpringFrequencyHz"]=asm["_b2WheelJoint_SetSpringFrequencyHz"];var _b2Body_ApplyTorque=Module["_b2Body_ApplyTorque"]=asm["_b2Body_ApplyTorque"];
var _b2Body_SetFixedRotation=Module["_b2Body_SetFixedRotation"]=asm["_b2Body_SetFixedRotation"];var _b2PrismaticJointDef_InitializeAndCreate=Module["_b2PrismaticJointDef_InitializeAndCreate"]=asm["_b2PrismaticJointDef_InitializeAndCreate"];var _memset=Module["_memset"]=asm["_memset"];var _b2MotorJointDef_Create=Module["_b2MotorJointDef_Create"]=asm["_b2MotorJointDef_Create"];var _b2World_DestroyBody=Module["_b2World_DestroyBody"]=asm["_b2World_DestroyBody"];
var _b2RevoluteJointDef_Create=Module["_b2RevoluteJointDef_Create"]=asm["_b2RevoluteJointDef_Create"];var _b2ParticleGroup_GetParticleCount=Module["_b2ParticleGroup_GetParticleCount"]=asm["_b2ParticleGroup_GetParticleCount"];var _b2World_SetGravity=Module["_b2World_SetGravity"]=asm["_b2World_SetGravity"];var _b2PrismaticJoint_EnableMotor=Module["_b2PrismaticJoint_EnableMotor"]=asm["_b2PrismaticJoint_EnableMotor"];
var _b2PolygonShape_CreateParticleGroup_4=Module["_b2PolygonShape_CreateParticleGroup_4"]=asm["_b2PolygonShape_CreateParticleGroup_4"];var _b2PolygonShape_CreateFixture_8=Module["_b2PolygonShape_CreateFixture_8"]=asm["_b2PolygonShape_CreateFixture_8"];var _b2Body_SetAngularVelocity=Module["_b2Body_SetAngularVelocity"]=asm["_b2Body_SetAngularVelocity"];var _b2Body_GetWorldPoint=Module["_b2Body_GetWorldPoint"]=asm["_b2Body_GetWorldPoint"];
var _b2WheelJoint_SetMotorSpeed=Module["_b2WheelJoint_SetMotorSpeed"]=asm["_b2WheelJoint_SetMotorSpeed"];var _b2FrictionJointDef_InitializeAndCreate=Module["_b2FrictionJointDef_InitializeAndCreate"]=asm["_b2FrictionJointDef_InitializeAndCreate"];var _b2World_SetContactListener=Module["_b2World_SetContactListener"]=asm["_b2World_SetContactListener"];var _b2ParticleSystem_SetDamping=Module["_b2ParticleSystem_SetDamping"]=asm["_b2ParticleSystem_SetDamping"];
var _b2Body_SetType=Module["_b2Body_SetType"]=asm["_b2Body_SetType"];var _b2Body_SetTransform=Module["_b2Body_SetTransform"]=asm["_b2Body_SetTransform"];var _b2CircleShape_CreateFixture=Module["_b2CircleShape_CreateFixture"]=asm["_b2CircleShape_CreateFixture"];var _b2RevoluteJoint_GetJointAngle=Module["_b2RevoluteJoint_GetJointAngle"]=asm["_b2RevoluteJoint_GetJointAngle"];var _b2ParticleGroup_ApplyForce=Module["_b2ParticleGroup_ApplyForce"]=asm["_b2ParticleGroup_ApplyForce"];
var _malloc=Module["_malloc"]=asm["_malloc"];var _b2Contact_GetManifold=Module["_b2Contact_GetManifold"]=asm["_b2Contact_GetManifold"];var _b2RevoluteJoint_IsMotorEnabled=Module["_b2RevoluteJoint_IsMotorEnabled"]=asm["_b2RevoluteJoint_IsMotorEnabled"];var _b2ParticleSystem_GetVelocityBuffer=Module["_b2ParticleSystem_GetVelocityBuffer"]=asm["_b2ParticleSystem_GetVelocityBuffer"];var _b2ParticleSystem_GetParticleLifetime=Module["_b2ParticleSystem_GetParticleLifetime"]=asm["_b2ParticleSystem_GetParticleLifetime"];
var _b2RevoluteJoint_IsLimitEnabled=Module["_b2RevoluteJoint_IsLimitEnabled"]=asm["_b2RevoluteJoint_IsLimitEnabled"];var _b2World_DestroyParticleSystem=Module["_b2World_DestroyParticleSystem"]=asm["_b2World_DestroyParticleSystem"];var _b2RevoluteJoint_EnableMotor=Module["_b2RevoluteJoint_EnableMotor"]=asm["_b2RevoluteJoint_EnableMotor"];var _b2Body_GetTransform=Module["_b2Body_GetTransform"]=asm["_b2Body_GetTransform"];
var _b2WeldJointDef_InitializeAndCreate=Module["_b2WeldJointDef_InitializeAndCreate"]=asm["_b2WeldJointDef_InitializeAndCreate"];var _b2EdgeShape_CreateFixture=Module["_b2EdgeShape_CreateFixture"]=asm["_b2EdgeShape_CreateFixture"];var _b2Body_GetType=Module["_b2Body_GetType"]=asm["_b2Body_GetType"];var _b2Manifold_GetPointCount=Module["_b2Manifold_GetPointCount"]=asm["_b2Manifold_GetPointCount"];var _b2ParticleSystem_SetDensity=Module["_b2ParticleSystem_SetDensity"]=asm["_b2ParticleSystem_SetDensity"];
var _b2PrismaticJoint_GetMotorForce=Module["_b2PrismaticJoint_GetMotorForce"]=asm["_b2PrismaticJoint_GetMotorForce"];var _b2Joint_GetBodyA=Module["_b2Joint_GetBodyA"]=asm["_b2Joint_GetBodyA"];var _b2PulleyJointDef_InitializeAndCreate=Module["_b2PulleyJointDef_InitializeAndCreate"]=asm["_b2PulleyJointDef_InitializeAndCreate"];var _b2Joint_GetBodyB=Module["_b2Joint_GetBodyB"]=asm["_b2Joint_GetBodyB"];var _b2ParticleSystem_GetParticleCount=Module["_b2ParticleSystem_GetParticleCount"]=asm["_b2ParticleSystem_GetParticleCount"];
var _b2MouseJoint_SetTarget=Module["_b2MouseJoint_SetTarget"]=asm["_b2MouseJoint_SetTarget"];var _b2Body_ApplyAngularImpulse=Module["_b2Body_ApplyAngularImpulse"]=asm["_b2Body_ApplyAngularImpulse"];var _b2ChainShape_CreateFixture=Module["_b2ChainShape_CreateFixture"]=asm["_b2ChainShape_CreateFixture"];var _b2World_DestroyJoint=Module["_b2World_DestroyJoint"]=asm["_b2World_DestroyJoint"];var _b2MotorJoint_SetAngularOffset=Module["_b2MotorJoint_SetAngularOffset"]=asm["_b2MotorJoint_SetAngularOffset"];
var _b2World_Delete=Module["_b2World_Delete"]=asm["_b2World_Delete"];var _b2PrismaticJoint_GetJointTranslation=Module["_b2PrismaticJoint_GetJointTranslation"]=asm["_b2PrismaticJoint_GetJointTranslation"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _b2Body_GetMass=Module["_b2Body_GetMass"]=asm["_b2Body_GetMass"];var _b2Body_GetAngle=Module["_b2Body_GetAngle"]=asm["_b2Body_GetAngle"];var _b2ParticleGroup_GetBufferIndex=Module["_b2ParticleGroup_GetBufferIndex"]=asm["_b2ParticleGroup_GetBufferIndex"];
var _b2WheelJointDef_InitializeAndCreate=Module["_b2WheelJointDef_InitializeAndCreate"]=asm["_b2WheelJointDef_InitializeAndCreate"];var _b2World_Step=Module["_b2World_Step"]=asm["_b2World_Step"];var _b2PrismaticJointDef_Create=Module["_b2PrismaticJointDef_Create"]=asm["_b2PrismaticJointDef_Create"];var _b2WheelJointDef_Create=Module["_b2WheelJointDef_Create"]=asm["_b2WheelJointDef_Create"];var _b2PulleyJointDef_Create=Module["_b2PulleyJointDef_Create"]=asm["_b2PulleyJointDef_Create"];
var _b2Body_GetInertia=Module["_b2Body_GetInertia"]=asm["_b2Body_GetInertia"];var _memmove=Module["_memmove"]=asm["_memmove"];var _b2ParticleSystem_SetParticleLifetime=Module["_b2ParticleSystem_SetParticleLifetime"]=asm["_b2ParticleSystem_SetParticleLifetime"];var _b2PrismaticJoint_SetMotorSpeed=Module["_b2PrismaticJoint_SetMotorSpeed"]=asm["_b2PrismaticJoint_SetMotorSpeed"];var __GLOBAL__I_a=Module["__GLOBAL__I_a"]=asm["__GLOBAL__I_a"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];
var dynCall_diiiiid=Module["dynCall_diiiiid"]=asm["dynCall_diiiiid"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_did=Module["dynCall_did"]=asm["dynCall_did"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_diiiid=Module["dynCall_diiiid"]=asm["dynCall_diiiid"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];
var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_viid=Module["dynCall_viid"]=asm["dynCall_viid"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];
Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];
var i64Math=function(){var goog={math:{}};goog.math.Long=function(low,high){this.low_=low|0;this.high_=high|0};goog.math.Long.IntCache_={};goog.math.Long.fromInt=function(value){if(-128<=value&&value<128){var cachedObj=goog.math.Long.IntCache_[value];if(cachedObj)return cachedObj}var obj=new goog.math.Long(value|0,value<0?-1:0);if(-128<=value&&value<128)goog.math.Long.IntCache_[value]=obj;return obj};goog.math.Long.fromNumber=function(value){if(isNaN(value)||!isFinite(value))return goog.math.Long.ZERO;
else if(value<=-goog.math.Long.TWO_PWR_63_DBL_)return goog.math.Long.MIN_VALUE;else if(value+1>=goog.math.Long.TWO_PWR_63_DBL_)return goog.math.Long.MAX_VALUE;else if(value<0)return goog.math.Long.fromNumber(-value).negate();else return new goog.math.Long(value%goog.math.Long.TWO_PWR_32_DBL_|0,value/goog.math.Long.TWO_PWR_32_DBL_|0)};goog.math.Long.fromBits=function(lowBits,highBits){return new goog.math.Long(lowBits,highBits)};goog.math.Long.fromString=function(str,opt_radix){if(str.length==0)throw Error("number format error: empty string");
var radix=opt_radix||10;if(radix<2||36<radix)throw Error("radix out of range: "+radix);if(str.charAt(0)=="-")return goog.math.Long.fromString(str.substring(1),radix).negate();else if(str.indexOf("-")>=0)throw Error('number format error: interior "-" character: '+str);var radixToPower=goog.math.Long.fromNumber(Math.pow(radix,8));var result=goog.math.Long.ZERO;for(var i=0;i<str.length;i+=8){var size=Math.min(8,str.length-i);var value=parseInt(str.substring(i,i+size),radix);if(size<8){var power=goog.math.Long.fromNumber(Math.pow(radix,
size));result=result.multiply(power).add(goog.math.Long.fromNumber(value))}else{result=result.multiply(radixToPower);result=result.add(goog.math.Long.fromNumber(value))}}return result};goog.math.Long.TWO_PWR_16_DBL_=1<<16;goog.math.Long.TWO_PWR_24_DBL_=1<<24;goog.math.Long.TWO_PWR_32_DBL_=goog.math.Long.TWO_PWR_16_DBL_*goog.math.Long.TWO_PWR_16_DBL_;goog.math.Long.TWO_PWR_31_DBL_=goog.math.Long.TWO_PWR_32_DBL_/2;goog.math.Long.TWO_PWR_48_DBL_=goog.math.Long.TWO_PWR_32_DBL_*goog.math.Long.TWO_PWR_16_DBL_;
goog.math.Long.TWO_PWR_64_DBL_=goog.math.Long.TWO_PWR_32_DBL_*goog.math.Long.TWO_PWR_32_DBL_;goog.math.Long.TWO_PWR_63_DBL_=goog.math.Long.TWO_PWR_64_DBL_/2;goog.math.Long.ZERO=goog.math.Long.fromInt(0);goog.math.Long.ONE=goog.math.Long.fromInt(1);goog.math.Long.NEG_ONE=goog.math.Long.fromInt(-1);goog.math.Long.MAX_VALUE=goog.math.Long.fromBits(4294967295|0,2147483647|0);goog.math.Long.MIN_VALUE=goog.math.Long.fromBits(0,2147483648|0);goog.math.Long.TWO_PWR_24_=goog.math.Long.fromInt(1<<24);goog.math.Long.prototype.toInt=
function(){return this.low_};goog.math.Long.prototype.toNumber=function(){return this.high_*goog.math.Long.TWO_PWR_32_DBL_+this.getLowBitsUnsigned()};goog.math.Long.prototype.toString=function(opt_radix){var radix=opt_radix||10;if(radix<2||36<radix)throw Error("radix out of range: "+radix);if(this.isZero())return"0";if(this.isNegative())if(this.equals(goog.math.Long.MIN_VALUE)){var radixLong=goog.math.Long.fromNumber(radix);var div=this.div(radixLong);var rem=div.multiply(radixLong).subtract(this);
return div.toString(radix)+rem.toInt().toString(radix)}else return"-"+this.negate().toString(radix);var radixToPower=goog.math.Long.fromNumber(Math.pow(radix,6));var rem=this;var result="";while(true){var remDiv=rem.div(radixToPower);var intval=rem.subtract(remDiv.multiply(radixToPower)).toInt();var digits=intval.toString(radix);rem=remDiv;if(rem.isZero())return digits+result;else{while(digits.length<6)digits="0"+digits;result=""+digits+result}}};goog.math.Long.prototype.getHighBits=function(){return this.high_};
goog.math.Long.prototype.getLowBits=function(){return this.low_};goog.math.Long.prototype.getLowBitsUnsigned=function(){return this.low_>=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_};goog.math.Long.prototype.getNumBitsAbs=function(){if(this.isNegative())if(this.equals(goog.math.Long.MIN_VALUE))return 64;else return this.negate().getNumBitsAbs();else{var val=this.high_!=0?this.high_:this.low_;for(var bit=31;bit>0;bit--)if((val&1<<bit)!=0)break;return this.high_!=0?bit+33:bit+1}};goog.math.Long.prototype.isZero=
function(){return this.high_==0&&this.low_==0};goog.math.Long.prototype.isNegative=function(){return this.high_<0};goog.math.Long.prototype.isOdd=function(){return(this.low_&1)==1};goog.math.Long.prototype.equals=function(other){return this.high_==other.high_&&this.low_==other.low_};goog.math.Long.prototype.notEquals=function(other){return this.high_!=other.high_||this.low_!=other.low_};goog.math.Long.prototype.lessThan=function(other){return this.compare(other)<0};goog.math.Long.prototype.lessThanOrEqual=
function(other){return this.compare(other)<=0};goog.math.Long.prototype.greaterThan=function(other){return this.compare(other)>0};goog.math.Long.prototype.greaterThanOrEqual=function(other){return this.compare(other)>=0};goog.math.Long.prototype.compare=function(other){if(this.equals(other))return 0;var thisNeg=this.isNegative();var otherNeg=other.isNegative();if(thisNeg&&!otherNeg)return-1;if(!thisNeg&&otherNeg)return 1;if(this.subtract(other).isNegative())return-1;else return 1};goog.math.Long.prototype.negate=
function(){if(this.equals(goog.math.Long.MIN_VALUE))return goog.math.Long.MIN_VALUE;else return this.not().add(goog.math.Long.ONE)};goog.math.Long.prototype.add=function(other){var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00+b00;c16+=c00>>>16;c00&=65535;c16+=a16+b16;c32+=c16>>>16;c16&=65535;c32+=a32+b32;c48+=c32>>>
16;c32&=65535;c48+=a48+b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)};goog.math.Long.prototype.subtract=function(other){return this.add(other.negate())};goog.math.Long.prototype.multiply=function(other){if(this.isZero())return goog.math.Long.ZERO;else if(other.isZero())return goog.math.Long.ZERO;if(this.equals(goog.math.Long.MIN_VALUE))return other.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO;else if(other.equals(goog.math.Long.MIN_VALUE))return this.isOdd()?goog.math.Long.MIN_VALUE:
goog.math.Long.ZERO;if(this.isNegative())if(other.isNegative())return this.negate().multiply(other.negate());else return this.negate().multiply(other).negate();else if(other.isNegative())return this.multiply(other.negate()).negate();if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&other.lessThan(goog.math.Long.TWO_PWR_24_))return goog.math.Long.fromNumber(this.toNumber()*other.toNumber());var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>
16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00*b00;c16+=c00>>>16;c00&=65535;c16+=a16*b00;c32+=c16>>>16;c16&=65535;c16+=a00*b16;c32+=c16>>>16;c16&=65535;c32+=a32*b00;c48+=c32>>>16;c32&=65535;c32+=a16*b16;c48+=c32>>>16;c32&=65535;c32+=a00*b32;c48+=c32>>>16;c32&=65535;c48+=a48*b00+a32*b16+a16*b32+a00*b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)};goog.math.Long.prototype.div=function(other){if(other.isZero())throw Error("division by zero");
else if(this.isZero())return goog.math.Long.ZERO;if(this.equals(goog.math.Long.MIN_VALUE))if(other.equals(goog.math.Long.ONE)||other.equals(goog.math.Long.NEG_ONE))return goog.math.Long.MIN_VALUE;else if(other.equals(goog.math.Long.MIN_VALUE))return goog.math.Long.ONE;else{var halfThis=this.shiftRight(1);var approx=halfThis.div(other).shiftLeft(1);if(approx.equals(goog.math.Long.ZERO))return other.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE;else{var rem=this.subtract(other.multiply(approx));
var result=approx.add(rem.div(other));return result}}else if(other.equals(goog.math.Long.MIN_VALUE))return goog.math.Long.ZERO;if(this.isNegative())if(other.isNegative())return this.negate().div(other.negate());else return this.negate().div(other).negate();else if(other.isNegative())return this.div(other.negate()).negate();var res=goog.math.Long.ZERO;var rem=this;while(rem.greaterThanOrEqual(other)){var approx=Math.max(1,Math.floor(rem.toNumber()/other.toNumber()));var log2=Math.ceil(Math.log(approx)/
Math.LN2);var delta=log2<=48?1:Math.pow(2,log2-48);var approxRes=goog.math.Long.fromNumber(approx);var approxRem=approxRes.multiply(other);while(approxRem.isNegative()||approxRem.greaterThan(rem)){approx-=delta;approxRes=goog.math.Long.fromNumber(approx);approxRem=approxRes.multiply(other)}if(approxRes.isZero())approxRes=goog.math.Long.ONE;res=res.add(approxRes);rem=rem.subtract(approxRem)}return res};goog.math.Long.prototype.modulo=function(other){return this.subtract(this.div(other).multiply(other))};
goog.math.Long.prototype.not=function(){return goog.math.Long.fromBits(~this.low_,~this.high_)};goog.math.Long.prototype.and=function(other){return goog.math.Long.fromBits(this.low_&other.low_,this.high_&other.high_)};goog.math.Long.prototype.or=function(other){return goog.math.Long.fromBits(this.low_|other.low_,this.high_|other.high_)};goog.math.Long.prototype.xor=function(other){return goog.math.Long.fromBits(this.low_^other.low_,this.high_^other.high_)};goog.math.Long.prototype.shiftLeft=function(numBits){numBits&=
63;if(numBits==0)return this;else{var low=this.low_;if(numBits<32){var high=this.high_;return goog.math.Long.fromBits(low<<numBits,high<<numBits|low>>>32-numBits)}else return goog.math.Long.fromBits(0,low<<numBits-32)}};goog.math.Long.prototype.shiftRight=function(numBits){numBits&=63;if(numBits==0)return this;else{var high=this.high_;if(numBits<32){var low=this.low_;return goog.math.Long.fromBits(low>>>numBits|high<<32-numBits,high>>numBits)}else return goog.math.Long.fromBits(high>>numBits-32,high>=
0?0:-1)}};goog.math.Long.prototype.shiftRightUnsigned=function(numBits){numBits&=63;if(numBits==0)return this;else{var high=this.high_;if(numBits<32){var low=this.low_;return goog.math.Long.fromBits(low>>>numBits|high<<32-numBits,high>>>numBits)}else if(numBits==32)return goog.math.Long.fromBits(high,0);else return goog.math.Long.fromBits(high>>>numBits-32,0)}};var navigator={appName:"Modern Browser"};var dbits;var canary=0xdeadbeefcafe;var j_lm=(canary&16777215)==15715070;function BigInteger(a,b,
c){if(a!=null)if("number"==typeof a)this.fromNumber(a,b,c);else if(b==null&&"string"!=typeof a)this.fromString(a,256);else this.fromString(a,b)}function nbi(){return new BigInteger(null)}function am1(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=Math.floor(v/67108864);w[j++]=v&67108863}return c}function am2(i,x,w,j,c,n){var xl=x&32767,xh=x>>15;while(--n>=0){var l=this[i]&32767;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&32767)<<15)+w[j]+(c&1073741823);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);
w[j++]=l&1073741823}return c}function am3(i,x,w,j,c,n){var xl=x&16383,xh=x>>14;while(--n>=0){var l=this[i]&16383;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&16383)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&268435455}return c}if(j_lm&&navigator.appName=="Microsoft Internet Explorer"){BigInteger.prototype.am=am2;dbits=30}else if(j_lm&&navigator.appName!="Netscape"){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=
(1<<dbits)-1;BigInteger.prototype.DV=1<<dbits;var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP);BigInteger.prototype.F1=BI_FP-dbits;BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RM="0123456789abcdefghijklmnopqrstuvwxyz";var BI_RC=new Array;var rr,vv;rr="0".charCodeAt(0);for(vv=0;vv<=9;++vv)BI_RC[rr++]=vv;rr="a".charCodeAt(0);for(vv=10;vv<36;++vv)BI_RC[rr++]=vv;rr="A".charCodeAt(0);for(vv=10;vv<36;++vv)BI_RC[rr++]=vv;function int2char(n){return BI_RM.charAt(n)}function intAt(s,i){var c=BI_RC[s.charCodeAt(i)];
return c==null?-1:c}function bnpCopyTo(r){for(var i=this.t-1;i>=0;--i)r[i]=this[i];r.t=this.t;r.s=this.s}function bnpFromInt(x){this.t=1;this.s=x<0?-1:0;if(x>0)this[0]=x;else if(x<-1)this[0]=x+DV;else this.t=0}function nbv(i){var r=nbi();r.fromInt(i);return r}function bnpFromString(s,b){var k;if(b==16)k=4;else if(b==8)k=3;else if(b==256)k=8;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else{this.fromRadix(s,b);return}this.t=0;this.s=0;var i=s.length,mi=false,sh=0;while(--i>=0){var x=k==8?s[i]&
255:intAt(s,i);if(x<0){if(s.charAt(i)=="-")mi=true;continue}mi=false;if(sh==0)this[this.t++]=x;else if(sh+k>this.DB){this[this.t-1]|=(x&(1<<this.DB-sh)-1)<<sh;this[this.t++]=x>>this.DB-sh}else this[this.t-1]|=x<<sh;sh+=k;if(sh>=this.DB)sh-=this.DB}if(k==8&&(s[0]&128)!=0){this.s=-1;if(sh>0)this[this.t-1]|=(1<<this.DB-sh)-1<<sh}this.clamp();if(mi)BigInteger.ZERO.subTo(this,this)}function bnpClamp(){var c=this.s&this.DM;while(this.t>0&&this[this.t-1]==c)--this.t}function bnToString(b){if(this.s<0)return"-"+
this.negate().toString(b);var k;if(b==16)k=4;else if(b==8)k=3;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else return this.toRadix(b);var km=(1<<k)-1,d,m=false,r="",i=this.t;var p=this.DB-i*this.DB%k;if(i-- >0){if(p<this.DB&&(d=this[i]>>p)>0){m=true;r=int2char(d)}while(i>=0){if(p<k){d=(this[i]&(1<<p)-1)<<k-p;d|=this[--i]>>(p+=this.DB-k)}else{d=this[i]>>(p-=k)&km;if(p<=0){p+=this.DB;--i}}if(d>0)m=true;if(m)r+=int2char(d)}}return m?r:"0"}function bnNegate(){var r=nbi();BigInteger.ZERO.subTo(this,
r);return r}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(a){var r=this.s-a.s;if(r!=0)return r;var i=this.t;r=i-a.t;if(r!=0)return this.s<0?-r:r;while(--i>=0)if((r=this[i]-a[i])!=0)return r;return 0}function nbits(x){var r=1,t;if((t=x>>>16)!=0){x=t;r+=16}if((t=x>>8)!=0){x=t;r+=8}if((t=x>>4)!=0){x=t;r+=4}if((t=x>>2)!=0){x=t;r+=2}if((t=x>>1)!=0){x=t;r+=1}return r}function bnBitLength(){if(this.t<=0)return 0;return this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(n,
r){var i;for(i=this.t-1;i>=0;--i)r[i+n]=this[i];for(i=n-1;i>=0;--i)r[i]=0;r.t=this.t+n;r.s=this.s}function bnpDRShiftTo(n,r){for(var i=n;i<this.t;++i)r[i-n]=this[i];r.t=Math.max(this.t-n,0);r.s=this.s}function bnpLShiftTo(n,r){var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<<cbs)-1;var ds=Math.floor(n/this.DB),c=this.s<<bs&this.DM,i;for(i=this.t-1;i>=0;--i){r[i+ds+1]=this[i]>>cbs|c;c=(this[i]&bm)<<bs}for(i=ds-1;i>=0;--i)r[i]=0;r[ds]=c;r.t=this.t+ds+1;r.s=this.s;r.clamp()}function bnpRShiftTo(n,r){r.s=
this.s;var ds=Math.floor(n/this.DB);if(ds>=this.t){r.t=0;return}var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<<bs)-1;r[0]=this[ds]>>bs;for(var i=ds+1;i<this.t;++i){r[i-ds-1]|=(this[i]&bm)<<cbs;r[i-ds]=this[i]>>bs}if(bs>0)r[this.t-ds-1]|=(this.s&bm)<<cbs;r.t=this.t-ds;r.clamp()}function bnpSubTo(a,r){var i=0,c=0,m=Math.min(a.t,this.t);while(i<m){c+=this[i]-a[i];r[i++]=c&this.DM;c>>=this.DB}if(a.t<this.t){c-=a.s;while(i<this.t){c+=this[i];r[i++]=c&this.DM;c>>=this.DB}c+=this.s}else{c+=this.s;while(i<
a.t){c-=a[i];r[i++]=c&this.DM;c>>=this.DB}c-=a.s}r.s=c<0?-1:0;if(c<-1)r[i++]=this.DV+c;else if(c>0)r[i++]=c;r.t=i;r.clamp()}function bnpMultiplyTo(a,r){var x=this.abs(),y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0)r[i]=0;for(i=0;i<y.t;++i)r[i+x.t]=x.am(0,y[i],r,i,0,x.t);r.s=0;r.clamp();if(this.s!=a.s)BigInteger.ZERO.subTo(r,r)}function bnpSquareTo(r){var x=this.abs();var i=r.t=2*x.t;while(--i>=0)r[i]=0;for(i=0;i<x.t-1;++i){var c=x.am(i,x[i],r,2*i,0,1);if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1))>=
x.DV){r[i+x.t]-=x.DV;r[i+x.t+1]=1}}if(r.t>0)r[r.t-1]+=x.am(i,x[i],r,2*i,0,1);r.s=0;r.clamp()}function bnpDivRemTo(m,q,r){var pm=m.abs();if(pm.t<=0)return;var pt=this.abs();if(pt.t<pm.t){if(q!=null)q.fromInt(0);if(r!=null)this.copyTo(r);return}if(r==null)r=nbi();var y=nbi(),ts=this.s,ms=m.s;var nsh=this.DB-nbits(pm[pm.t-1]);if(nsh>0){pm.lShiftTo(nsh,y);pt.lShiftTo(nsh,r)}else{pm.copyTo(y);pt.copyTo(r)}var ys=y.t;var y0=y[ys-1];if(y0==0)return;var yt=y0*(1<<this.F1)+(ys>1?y[ys-2]>>this.F2:0);var d1=
this.FV/yt,d2=(1<<this.F1)/yt,e=1<<this.F2;var i=r.t,j=i-ys,t=q==null?nbi():q;y.dlShiftTo(j,t);if(r.compareTo(t)>=0){r[r.t++]=1;r.subTo(t,r)}BigInteger.ONE.dlShiftTo(ys,t);t.subTo(y,y);while(y.t<ys)y[y.t++]=0;while(--j>=0){var qd=r[--i]==y0?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd,r,j,0,ys))<qd){y.dlShiftTo(j,t);r.subTo(t,r);while(r[i]<--qd)r.subTo(t,r)}}if(q!=null){r.drShiftTo(ys,q);if(ts!=ms)BigInteger.ZERO.subTo(q,q)}r.t=ys;r.clamp();if(nsh>0)r.rShiftTo(nsh,r);if(ts<0)BigInteger.ZERO.subTo(r,
r)}function bnMod(a){var r=nbi();this.abs().divRemTo(a,null,r);if(this.s<0&&r.compareTo(BigInteger.ZERO)>0)a.subTo(r,r);return r}function Classic(m){this.m=m}function cConvert(x){if(x.s<0||x.compareTo(this.m)>=0)return x.mod(this.m);else return x}function cRevert(x){return x}function cReduce(x){x.divRemTo(this.m,null,x)}function cMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}function cSqrTo(x,r){x.squareTo(r);this.reduce(r)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=
cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1)return 0;var x=this[0];if((x&1)==0)return 0;var y=x&3;y=y*(2-(x&15)*y)&15;y=y*(2-(x&255)*y)&255;y=y*(2-((x&65535)*y&65535))&65535;y=y*(2-x*y%this.DV)%this.DV;return y>0?this.DV-y:-y}function Montgomery(m){this.m=m;this.mp=m.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<m.DB-15)-1;this.mt2=2*m.t}function montConvert(x){var r=nbi();x.abs().dlShiftTo(this.m.t,r);r.divRemTo(this.m,
null,r);if(x.s<0&&r.compareTo(BigInteger.ZERO)>0)this.m.subTo(r,r);return r}function montRevert(x){var r=nbi();x.copyTo(r);this.reduce(r);return r}function montReduce(x){while(x.t<=this.mt2)x[x.t++]=0;for(var i=0;i<this.m.t;++i){var j=x[i]&32767;var u0=j*this.mpl+((j*this.mph+(x[i]>>15)*this.mpl&this.um)<<15)&x.DM;j=i+this.m.t;x[j]+=this.m.am(0,u0,x,i,0,this.m.t);while(x[j]>=x.DV){x[j]-=x.DV;x[++j]++}}x.clamp();x.drShiftTo(this.m.t,x);if(x.compareTo(this.m)>=0)x.subTo(this.m,x)}function montSqrTo(x,
r){x.squareTo(r);this.reduce(r)}function montMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return(this.t>0?this[0]&1:this.s)==0}function bnpExp(e,z){if(e>4294967295||e<1)return BigInteger.ONE;var r=nbi(),r2=nbi(),g=z.convert(this),i=nbits(e)-1;g.copyTo(r);while(--i>=0){z.sqrTo(r,r2);if((e&
1<<i)>0)z.mulTo(r2,g,r);else{var t=r;r=r2;r2=t}}return z.revert(r)}function bnModPowInt(e,m){var z;if(e<256||m.isEven())z=new Classic(m);else z=new Montgomery(m);return this.exp(e,z)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=
bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=
bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function bnpFromRadix(s,b){this.fromInt(0);if(b==null)b=10;var cs=this.chunkSize(b);var d=Math.pow(b,cs),mi=false,j=0,w=0;for(var i=0;i<s.length;++i){var x=intAt(s,i);if(x<0){if(s.charAt(i)=="-"&&this.signum()==0)mi=true;continue}w=b*w+x;if(++j>=cs){this.dMultiply(d);this.dAddOffset(w,0);j=0;w=0}}if(j>0){this.dMultiply(Math.pow(b,j));this.dAddOffset(w,0)}if(mi)BigInteger.ZERO.subTo(this,this)}function bnpChunkSize(r){return Math.floor(Math.LN2*
this.DB/Math.log(r))}function bnSigNum(){if(this.s<0)return-1;else if(this.t<=0||this.t==1&&this[0]<=0)return 0;else return 1}function bnpDMultiply(n){this[this.t]=this.am(0,n-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(n,w){if(n==0)return;while(this.t<=w)this[this.t++]=0;this[w]+=n;while(this[w]>=this.DV){this[w]-=this.DV;if(++w>=this.t)this[this.t++]=0;++this[w]}}function bnpToRadix(b){if(b==null)b=10;if(this.signum()==0||b<2||b>36)return"0";var cs=this.chunkSize(b);var a=Math.pow(b,
cs);var d=nbv(a),y=nbi(),z=nbi(),r="";this.divRemTo(d,y,z);while(y.signum()>0){r=(a+z.intValue()).toString(b).substr(1)+r;y.divRemTo(d,y,z)}return z.intValue().toString(b)+r}function bnIntValue(){if(this.s<0)if(this.t==1)return this[0]-this.DV;else{if(this.t==0)return-1}else if(this.t==1)return this[0];else if(this.t==0)return 0;return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]}function bnpAddTo(a,r){var i=0,c=0,m=Math.min(a.t,this.t);while(i<m){c+=this[i]+a[i];r[i++]=c&this.DM;c>>=this.DB}if(a.t<
this.t){c+=a.s;while(i<this.t){c+=this[i];r[i++]=c&this.DM;c>>=this.DB}c+=this.s}else{c+=this.s;while(i<a.t){c+=a[i];r[i++]=c&this.DM;c>>=this.DB}c+=a.s}r.s=c<0?-1:0;if(c>0)r[i++]=c;else if(c<-1)r[i++]=this.DV+c;r.t=i;r.clamp()}BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.intValue=
bnIntValue;BigInteger.prototype.addTo=bnpAddTo;var Wrapper={abs:function(l,h){var x=new goog.math.Long(l,h);var ret;if(x.isNegative())ret=x.negate();else ret=x;HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_},ensureTemps:function(){if(Wrapper.ensuredTemps)return;Wrapper.ensuredTemps=true;Wrapper.two32=new BigInteger;Wrapper.two32.fromString("4294967296",10);Wrapper.two64=new BigInteger;Wrapper.two64.fromString("18446744073709551616",10);Wrapper.temp1=new BigInteger;Wrapper.temp2=
new BigInteger},lh2bignum:function(l,h){var a=new BigInteger;a.fromString(h.toString(),10);var b=new BigInteger;a.multiplyTo(Wrapper.two32,b);var c=new BigInteger;c.fromString(l.toString(),10);var d=new BigInteger;c.addTo(b,d);return d},stringify:function(l,h,unsigned){var ret=(new goog.math.Long(l,h)).toString();if(unsigned&&ret[0]=="-"){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(ret,10);ret=new BigInteger;Wrapper.two64.addTo(bignum,ret);ret=ret.toString(10)}return ret},fromString:function(str,
base,min,max,unsigned){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(str,base);var bigmin=new BigInteger;bigmin.fromString(min,10);var bigmax=new BigInteger;bigmax.fromString(max,10);if(unsigned&&bignum.compareTo(BigInteger.ZERO)<0){var temp=new BigInteger;bignum.addTo(Wrapper.two64,temp);bignum=temp}var error=false;if(bignum.compareTo(bigmin)<0){bignum=bigmin;error=true}else if(bignum.compareTo(bigmax)>0){bignum=bigmax;error=true}var ret=goog.math.Long.fromString(bignum.toString());
HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_;if(error)throw"range error";}};return Wrapper}();
if(memoryInitializer){if(typeof Module["locateFile"]==="function")memoryInitializer=Module["locateFile"](memoryInitializer);else if(Module["memoryInitializerPrefixURL"])memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer;if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,STATIC_BASE)}else{addRunDependency("memory initializer");Browser.asyncLoad(memoryInitializer,function(data){HEAPU8.set(data,STATIC_BASE);removeRunDependency("memory initializer")},
function(data){throw"could not load memory initializer "+memoryInitializer;})}}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;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"]&&shouldRunNow)run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};
Module["callMain"]=Module.callMain=function callMain(args){assert(runDependencies==0,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(__ATPRERUN__.length==0,"cannot call main when preRun functions remain to be called");args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++)argv.push(0)}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i<argc-1;i=i+1){argv.push(allocate(intArrayFromString(args[i]),
"i8",ALLOC_NORMAL));pad()}argv.push(0);argv=allocate(argv,"i32",ALLOC_NORMAL);initialStackTop=STACKTOP;try{var ret=Module["_main"](argc,argv,0);exit(ret)}catch(e){if(e instanceof ExitStatus)return;else if(e=="SimulateInfiniteLoop"){Module["noExitRuntime"]=true;return}else{if(e&&typeof e==="object"&&e.stack)Module.printErr("exception thrown: "+[e,e.stack]);throw e;}}finally{calledMain=true}};
function run(args){args=args||Module["arguments"];if(preloadStartTime===null)preloadStartTime=Date.now();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(ENVIRONMENT_IS_WEB&&preloadStartTime!==null)Module.printErr("pre-main prep time: "+(Date.now()-preloadStartTime)+" ms");if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();
if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else doRun()}Module["run"]=Module.run=run;
function exit(status){if(Module["noExitRuntime"])return;ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",function(){process["exit"](status)});console.log(" ");setTimeout(function(){process["exit"](status)},500)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function")quit(status);throw new ExitStatus(status);}Module["exit"]=Module.exit=exit;
function abort(text){if(text){Module.print(text);Module.printErr(text)}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";throw"abort() at "+stackTrace()+extra;}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0)Module["preInit"].pop()()}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run();var Offsets={b2Body:{type:0,islandIndex:8,xf:12,xf0:28,sweep:44,linearVelocity:80,angularVelocity:88,force:92,torque:100,world:104,prev:108,next:112,fixtureList:116,fixtureCount:120,jointList:124,contactList:128,mass:132,invMass:136,I:140,invI:144,linearDamping:148,angularDamping:152,gravityScale:156,sleepTime:160,userData:164},b2Contact:{flags:4,prev:8,next:12,nodeA:16,nodeB:32,fixtureA:48,fixtureB:52,indexA:56,indexB:60,manifold:64,toiCount:128,toi:132,friction:136,restitution:140,tangentSpeed:144},
b2Fixture:{density:0,next:4,body:8,shape:12,friction:16,restitution:20,proxies:24,proxyCount:28,filter:32,isSensor:38,userData:40},b2ParticleGroup:{system:0,firstIndex:4,lastIndex:8,groupFlags:12,strength:16,prev:20,next:24,timestamp:28,mass:32,inertia:36,center:40,linearVelocity:48,angularVelocity:56,transform:60,userData:76},b2WorldManifold:{normal:0,points:8,separations:24},b2World:{bodyList:102960}};var FLT_EPSILON=1.1920929E-7;function b2Max(a,b){return new b2Vec2(Math.max(a.x,b.x),Math.max(a.y,b.y))}function b2Min(a,b){return new b2Vec2(Math.min(a.x,b.x),Math.min(a.y,b.y))}function b2Clamp(a,low,high){return b2Max(low,b2Min(a,high))}function b2Vec2(x,y){if(x===undefined)x=0;if(y===undefined)y=0;this.x=x;this.y=y}b2Vec2.Add=function(out,a,b){out.x=a.x+b.x;out.y=a.y+b.y};b2Vec2.CrossScalar=function(output,input,scalar){output.x=-scalar*input.y;output.y=scalar*input.x};
b2Vec2.Cross=function(a,b){return a.x*b.y-a.y*b.x};b2Vec2.MulScalar=function(out,input,scalar){out.x=input.x*scalar;out.y=input.y*scalar};b2Vec2.Mul=function(out,T,v){var Tp=T.p;var Tqc=T.q.c;var Tqs=T.q.s;var x=v.x;var y=v.y;out.x=Tqc*x-Tqs*y+Tp.x;out.y=Tqs*x+Tqc*y+Tp.y};b2Vec2.Normalize=function(out,input){var length=input.Length();if(length<FLT_EPSILON){out.x=0;out.y=0;return}var invLength=1/length;out.x=input.x*invLength;out.y=input.y*invLength};
b2Vec2.Sub=function(out,input,subtract){out.x=input.x-subtract.x;out.y=input.y-subtract.y};b2Vec2.prototype.Clone=function(){return new b2Vec2(this.x,this.y)};b2Vec2.prototype.Set=function(x,y){this.x=x;this.y=y};b2Vec2.prototype.Length=function(){var x=this.x;var y=this.y;return Math.sqrt(x*x+y*y)};b2Vec2.prototype.LengthSquared=function(){var x=this.x;var y=this.y;return x*x+y*y};function b2Rot(radians){if(radians===undefined)radians=0;this.s=Math.sin(radians);this.c=Math.cos(radians)}
b2Rot.prototype.Set=function(radians){this.s=Math.sin(radians);this.c=Math.cos(radians)};b2Rot.prototype.SetIdentity=function(){this.s=0;this.c=1};b2Rot.prototype.GetXAxis=function(){return new b2Vec2(this.c,this.s)};function b2Transform(position,rotation){if(position===undefined)position=new b2Vec2;if(rotation===undefined)rotation=new b2Rot;this.p=position;this.q=rotation}b2Transform.prototype.FromFloat64Array=function(arr){var p=this.p;var q=this.q;p.x=arr[0];p.y=arr[1];q.s=arr[2];q.c=arr[3]};
b2Transform.prototype.SetIdentity=function(){this.p.Set(0,0);this.q.SetIdentity()};function b2AABB(){this.lowerBound=new b2Vec2;this.upperBound=new b2Vec2}b2AABB.prototype.GetCenter=function(){var sum=new b2Vec2;b2Vec2.Add(sum,this.lowerBound,this.upperBound);b2Vec2.MulScalar(sum,sum,.5)};var b2Manifold_GetPointCount=Module.cwrap("b2Manifold_GetPointCount","number",["number"]);function b2Manifold(ptr){this.ptr=ptr}b2Manifold.prototype.GetPointCount=function(){return b2Manifold_GetPointCount(this.ptr)};var b2WorldManifold_points_offset=Offsets.b2WorldManifold.points;
function b2WorldManifold(ptr){this.buffer=new DataView(Module.HEAPU8.buffer,ptr);this.ptr=ptr}b2WorldManifold.prototype.GetPoint=function(i){var point=new b2Vec2;point.x=this.buffer.getFloat32(i*2+b2WorldManifold_points_offset,true);point.y=this.buffer.getFloat32(i*2+4+b2WorldManifold_points_offset,true);return point};var b2EdgeShape_CreateFixture=Module.cwrap("b2EdgeShape_CreateFixture","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);function b2EdgeShape(){this.hasVertex0=false;this.hasVertex3=false;this.vertex0=new b2Vec2;this.vertex1=new b2Vec2;this.vertex2=new b2Vec2;this.vertex3=new b2Vec2;this.type=b2Shape_Type_e_edge}
b2EdgeShape.prototype.Set=function(v1,v2){this.vertex1=v1;this.vertex2=v2;this.hasVertex0=false;this.hasVertex3=false};
b2EdgeShape.prototype._CreateFixture=function(body,fixtureDef){return b2EdgeShape_CreateFixture(body.ptr,fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,this.hasVertex0,this.hasVertex3,this.vertex0.x,this.vertex0.y,this.vertex1.x,this.vertex1.y,this.vertex2.x,this.vertex2.y,this.vertex3.x,this.vertex3.y)};var b2PolygonShape_CreateFixture_3=Module.cwrap("b2PolygonShape_CreateFixture_3","number",["number","number","number","number","number","number","number","number","number","number","number","number"]);var b2PolygonShape_CreateFixture_4=Module.cwrap("b2PolygonShape_CreateFixture_4","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2PolygonShape_CreateFixture_5=Module.cwrap("b2PolygonShape_CreateFixture_5","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);var b2PolygonShape_CreateFixture_6=Module.cwrap("b2PolygonShape_CreateFixture_6","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2PolygonShape_CreateFixture_7=Module.cwrap("b2PolygonShape_CreateFixture_7","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2PolygonShape_CreateFixture_8=Module.cwrap("b2PolygonShape_CreateFixture_8","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2PolygonShape_CreateParticleGroup_4=Module.cwrap("b2PolygonShape_CreateParticleGroup_4","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2PolygonShape_DestroyParticlesInShape_4=Module.cwrap("b2PolygonShape_DestroyParticlesInShape_4","number",["number","number","number","number","number","number","number","number","number","number","number","number","number"]);function b2PolygonShape(){this.position=new b2Vec2;this.vertices=[];this.type=b2Shape_Type_e_polygon}
b2PolygonShape.prototype.SetAsBoxXY=function(hx,hy){this.vertices[0]=new b2Vec2(-hx,-hy);this.vertices[1]=new b2Vec2(hx,-hy);this.vertices[2]=new b2Vec2(hx,hy);this.vertices[3]=new b2Vec2(-hx,hy)};
b2PolygonShape.prototype.SetAsBoxXYCenterAngle=function(hx,hy,center,angle){this.vertices[0]=new b2Vec2(-hx,-hy);this.vertices[1]=new b2Vec2(hx,-hy);this.vertices[2]=new b2Vec2(hx,hy);this.vertices[3]=new b2Vec2(-hx,hy);var xf=new b2Transform;xf.p=center;xf.q.Set(angle);for(var i=0;i<4;i++)b2Vec2.Mul(this.vertices[i],xf,this.vertices[i])};
b2PolygonShape.prototype._CreateFixture=function(body,fixtureDef){var vertices=this.vertices;switch(vertices.length){case 3:var v0=vertices[0];var v1=vertices[1];var v2=vertices[2];return b2PolygonShape_CreateFixture_3(body.ptr,fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,v0.x,v0.y,v1.x,v1.y,v2.x,v2.y);break;case 4:var v0=vertices[0];var v1=vertices[1];var v2=
vertices[2];var v3=vertices[3];return b2PolygonShape_CreateFixture_4(body.ptr,fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,v0.x,v0.y,v1.x,v1.y,v2.x,v2.y,v3.x,v3.y);break;case 5:var v0=vertices[0];var v1=vertices[1];var v2=vertices[2];var v3=vertices[3];var v4=vertices[4];return b2PolygonShape_CreateFixture_5(body.ptr,fixtureDef.density,fixtureDef.friction,
fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,v0.x,v0.y,v1.x,v1.y,v2.x,v2.y,v3.x,v3.y,v4.x,v4.y);break;case 6:var v0=vertices[0];var v1=vertices[1];var v2=vertices[2];var v3=vertices[3];var v4=vertices[4];var v5=vertices[5];return b2PolygonShape_CreateFixture_6(body.ptr,fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,
fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,v0.x,v0.y,v1.x,v1.y,v2.x,v2.y,v3.x,v3.y,v4.x,v4.y,v5.x,v5.y);break;case 7:var v0=vertices[0];var v1=vertices[1];var v2=vertices[2];var v3=vertices[3];var v4=vertices[4];var v5=vertices[5];var v6=vertices[6];return b2PolygonShape_CreateFixture_7(body.ptr,fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,v0.x,
v0.y,v1.x,v1.y,v2.x,v2.y,v3.x,v3.y,v4.x,v4.y,v5.x,v5.y,v6.x,v6.y);break;case 8:var v0=vertices[0];var v1=vertices[1];var v2=vertices[2];var v3=vertices[3];var v4=vertices[4];var v5=vertices[5];var v6=vertices[6];var v7=vertices[7];return b2PolygonShape_CreateFixture_8(body.ptr,fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,v0.x,v0.y,v1.x,v1.y,v2.x,v2.y,v3.x,
v3.y,v4.x,v4.y,v5.x,v5.y,v6.x,v6.y,v6.x,v7.y);break}};
b2PolygonShape.prototype._CreateParticleGroup=function(particleSystem,pgd){var v=this.vertices;switch(v.length){case 3:break;case 4:return b2PolygonShape_CreateParticleGroup_4(particleSystem.ptr,pgd.angle,pgd.angularVelocity,pgd.color.r,pgd.color.g,pgd.color.b,pgd.color.a,pgd.flags,pgd.group.ptr,pgd.groupFlags,pgd.lifetime,pgd.linearVelocity.x,pgd.linearVelocity.y,pgd.position.x,pgd.position.y,pgd.positionData,pgd.particleCount,pgd.strength,pgd.stride,pgd.userData,v[0].x,v[0].y,v[1].x,v[1].y,v[2].x,
v[2].y,v[3].x,v[3].y);break}};b2PolygonShape.prototype._DestroyParticlesInShape=function(ps,xf){var v=this.vertices;switch(v.length){case 3:break;case 4:return b2PolygonShape_DestroyParticlesInShape_4(ps.ptr,v[0].x,v[0].y,v[1].x,v[1].y,v[2].x,v[2].y,v[3].x,v[3].y,xf.p.x,xf.p.y,xf.q.s,xf.q.c);break}};
b2PolygonShape.prototype.Validate=function(){for(var i=0,max=this.vertices.length;i<max;++i){var i1=i;var i2=i<max-1?i1+1:0;var p=this.vertices[i1];var e=this.vertices[i2];var eSubP=new b2Vec2;b2Vec2.Sub(eSubP,e,p);for(var j=0;j<max;++j){if(j==i1||j==i2)continue;var v=new b2Vec2;b2Vec2.Sub(v,this.vertices[j],p);var c=b2Vec2.Cross(eSubP,v);if(c<0)return false}}return true};var b2Shape_Type_e_circle=0;var b2Shape_Type_e_edge=1;var b2Shape_Type_e_polygon=2;var b2Shape_Type_e_chain=3;var b2Shape_Type_e_typeCount=4;var b2_linearSlop=.005;var b2_polygonRadius=2*b2_linearSlop;var b2_maxPolygonVertices=8;function b2MassData(mass,center,I){this.mass=mass;this.center=center;this.I=I};var b2ChainShape_CreateFixture=Module.cwrap("b2ChainShape_CreateFixture","number",["number","number","number","number","number","number","number","number"]);function b2ChainShape(){this.radius=b2_polygonRadius;this.vertices=[];this.type=b2Shape_Type_e_chain}b2ChainShape.prototype.CreateLoop=function(){this.vertices.push(this.vertices[0])};
b2ChainShape.prototype._CreateFixture=function(body,fixtureDef){var vertices=this.vertices;var chainLength=vertices.length;var dataLength=chainLength*2;var data=new Float32Array(dataLength);for(var i=0,j=0;i<dataLength;i+=2,j++){data[i]=vertices[j].x;data[i+1]=vertices[j].y}var nDataBytes=data.length*data.BYTES_PER_ELEMENT;var dataPtr=Module._malloc(nDataBytes);var dataHeap=new Uint8Array(Module.HEAPU8.buffer,dataPtr,nDataBytes);dataHeap.set(new Uint8Array(data.buffer));var fixture=b2ChainShape_CreateFixture(body.ptr,
fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,dataHeap.byteOffset,data.length);Module._free(dataHeap.byteOffset);return fixture};var b2CircleShape_CreateFixture=Module.cwrap("b2CircleShape_CreateFixture","number",["number","number","number","number","number","number","number","number","number"]);var b2CircleShape_CreateParticleGroup=Module.cwrap("b2CircleShape_CreateParticleGroup","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2CircleShape_DestroyParticlesInShape=Module.cwrap("b2CircleShape_DestroyParticlesInShape","number",["number","number","number","number","number","number","number","number"]);function b2CircleShape(){this.position=new b2Vec2;this.radius=0;this.type=b2Shape_Type_e_circle}
b2CircleShape.prototype._CreateFixture=function(body,fixtureDef){return b2CircleShape_CreateFixture(body.ptr,fixtureDef.density,fixtureDef.friction,fixtureDef.isSensor,fixtureDef.restitution,fixtureDef.userData,fixtureDef.filter.categoryBits,fixtureDef.filter.groupIndex,fixtureDef.filter.maskBits,this.position.x,this.position.y,this.radius)};
b2CircleShape.prototype._CreateParticleGroup=function(particleSystem,pgd){return b2CircleShape_CreateParticleGroup(particleSystem.ptr,pgd.angle,pgd.angularVelocity,pgd.color.r,pgd.color.g,pgd.color.b,pgd.color.a,pgd.flags,pgd.group.ptr,pgd.groupFlags,pgd.lifetime,pgd.linearVelocity.x,pgd.linearVelocity.y,pgd.position.x,pgd.position.y,pgd.positionData,pgd.particleCount,pgd.strength,pgd.stride,pgd.userData,this.position.x,this.position.y,this.radius)};
b2CircleShape.prototype._DestroyParticlesInShape=function(ps,xf){return b2CircleShape_DestroyParticlesInShape(ps.ptr,this.position.x,this.position.y,this.radius,xf.p.x,xf.p.y,xf.q.s,xf.q.c)};var b2Body_ApplyAngularImpulse=Module.cwrap("b2Body_ApplyAngularImpulse","null",["number","number","number"]);var b2Body_ApplyLinearImpulse=Module.cwrap("b2Body_ApplyLinearImpulse","null",["number","number","number","number","number","number"]);var b2Body_ApplyForce=Module.cwrap("b2Body_ApplyForce","number",["number","number","number","number","number","number"]);var b2Body_ApplyForceToCenter=Module.cwrap("b2Body_ApplyForceToCenter","number",["number","number","number","number"]);
var b2Body_ApplyTorque=Module.cwrap("b2Body_ApplyTorque","number",["number","number","number"]);var b2Body_DestroyFixture=Module.cwrap("b2Body_DestroyFixture","null",["number","number"]);var b2Body_GetAngle=Module.cwrap("b2Body_GetAngle","number",["number"]);var b2Body_GetAngularVelocity=Module.cwrap("b2Body_GetAngularVelocity","number",["number"]);var b2Body_GetInertia=Module.cwrap("b2Body_GetInertia","number",["number"]);
var b2Body_GetLinearVelocity=Module.cwrap("b2Body_GetLinearVelocity","null",["number","number"]);var b2Body_GetLocalPoint=Module.cwrap("b2Body_GetLocalPoint","null",["number","number","number","number"]);var b2Body_GetLocalVector=Module.cwrap("b2Body_GetLocalVector","null",["number","number","number","number"]);var b2Body_GetMass=Module.cwrap("b2Body_GetMass","number",["number"]);var b2Body_GetPosition=Module.cwrap("b2Body_GetPosition","null",["number","number"]);
var b2Body_GetTransform=Module.cwrap("b2Body_GetTransform","null",["number","number"]);var b2Body_GetType=Module.cwrap("b2Body_GetType","number",["number"]);var b2Body_GetWorldCenter=Module.cwrap("b2Body_GetWorldCenter","null",["number","number"]);var b2Body_GetWorldPoint=Module.cwrap("b2Body_GetWorldPoint","null",["number","number","number","number"]);var b2Body_GetWorldVector=Module.cwrap("b2Body_GetWorldVector","null",["number","number","number","number"]);
var b2Body_SetAngularVelocity=Module.cwrap("b2Body_SetAngularVelocity","null",["number","number"]);var b2Body_SetAwake=Module.cwrap("b2Body_SetAwake","number",["number","number"]);var b2Body_SetFixedRotation=Module.cwrap("b2Body_SetFixedRotation","number",["number","number"]);var b2Body_SetLinearVelocity=Module.cwrap("b2Body_SetLinearVelocity","null",["number","number","number"]);var b2Body_SetMassData=Module.cwrap("b2Body_SetMassData","null",["number","number","number","number","number"]);
var b2Body_SetTransform=Module.cwrap("b2Body_SetTransform","null",["number","number","number"]);var b2Body_SetType=Module.cwrap("b2Body_SetType","null",["number","number"]);var b2Body_xf_offset=Offsets.b2Body.xf;var b2Body_userData_offset=Offsets.b2Body.userData;function b2Body(ptr){this.buffer=new DataView(Module.HEAPU8.buffer,ptr);this.ptr=ptr;this.fixtures=[];this.world=null}b2Body.prototype.ApplyAngularImpulse=function(impulse,wake){b2Body_ApplyAngularImpulse(this.ptr,impulse,wake)};
b2Body.prototype.ApplyLinearImpulse=function(impulse,point,wake){b2Body_ApplyLinearImpulse(this.ptr,impulse.x,impulse.y,point.x,point.y,wake)};b2Body.prototype.ApplyForce=function(force,point,wake){b2Body_ApplyForce(this.ptr,force.x,force.y,point.x,point.y,wake)};b2Body.prototype.ApplyForceToCenter=function(force,wake){b2Body_ApplyForceToCenter(this.ptr,force.x,force.y,wake)};b2Body.prototype.ApplyTorque=function(force,wake){b2Body_ApplyTorque(this.ptr,force,wake)};
b2Body.prototype.CreateFixtureFromDef=function(fixtureDef){var fixture=new b2Fixture;fixture.FromFixtureDef(fixtureDef);fixture._SetPtr(fixtureDef.shape._CreateFixture(this,fixtureDef));fixture.body=this;b2World._Push(fixture,this.fixtures);this.world.fixturesLookup[fixture.ptr]=fixture;return fixture};b2Body.prototype.CreateFixtureFromShape=function(shape,density){var fixtureDef=new b2FixtureDef;fixtureDef.shape=shape;fixtureDef.density=density;return this.CreateFixtureFromDef(fixtureDef)};
b2Body.prototype.DestroyFixture=function(fixture){b2Body_DestroyFixture(this.ptr,fixture.ptr);b2World._RemoveItem(fixture,this.fixtures)};b2Body.prototype.GetAngle=function(){return b2Body_GetAngle(this.ptr)};b2Body.prototype.GetAngularVelocity=function(){return b2Body_GetAngularVelocity(this.ptr)};b2Body.prototype.GetInertia=function(){return b2Body_GetInertia(this.ptr)};b2Body.prototype.GetMass=function(){return b2Body_GetMass(this.ptr)};
b2Body.prototype.GetLinearVelocity=function(){b2Body_GetLinearVelocity(this.ptr,_vec2Buf.byteOffset);var result=new Float32Array(_vec2Buf.buffer,_vec2Buf.byteOffset,_vec2Buf.length);return new b2Vec2(result[0],result[1])};b2Body.prototype.GetLocalPoint=function(vec){b2Body_GetLocalPoint(this.ptr,vec.x,vec.y,_vec2Buf.byteOffset);var result=new Float32Array(_vec2Buf.buffer,_vec2Buf.byteOffset,_vec2Buf.length);return new b2Vec2(result[0],result[1])};
b2Body.prototype.GetLocalVector=function(vec){b2Body_GetLocalVector(this.ptr,vec.x,vec.y,_vec2Buf.byteOffset);var result=new Float32Array(_vec2Buf.buffer,_vec2Buf.byteOffset,_vec2Buf.length);return new b2Vec2(result[0],result[1])};b2Body.prototype.GetPosition=function(){b2Body_GetPosition(this.ptr,_vec2Buf.byteOffset);var result=new Float32Array(_vec2Buf.buffer,_vec2Buf.byteOffset,_vec2Buf.length);return new b2Vec2(result[0],result[1])};
b2Body.prototype.GetTransform=function(){var transform=new b2Transform;transform.p.x=this.buffer.getFloat32(b2Body_xf_offset,true);transform.p.y=this.buffer.getFloat32(b2Body_xf_offset+4,true);transform.q.s=this.buffer.getFloat32(b2Body_xf_offset+8,true);transform.q.c=this.buffer.getFloat32(b2Body_xf_offset+12,true);return transform};b2Body.prototype.GetType=function(){return b2Body_GetType(this.ptr)};b2Body.prototype.GetUserData=function(){return this.buffer.getUint32(b2Body_userData_offset,true)};
b2Body.prototype.GetWorld=function(){return this.world};b2Body.prototype.GetWorldCenter=function(){b2Body_GetWorldCenter(this.ptr,_vec2Buf.byteOffset);var result=new Float32Array(_vec2Buf.buffer,_vec2Buf.byteOffset,_vec2Buf.length);return new b2Vec2(result[0],result[1])};b2Body.prototype.GetWorldPoint=function(vec){b2Body_GetWorldPoint(this.ptr,vec.x,vec.y,_vec2Buf.byteOffset);var result=new Float32Array(_vec2Buf.buffer,_vec2Buf.byteOffset,_vec2Buf.length);return new b2Vec2(result[0],result[1])};
b2Body.prototype.GetWorldVector=function(vec){b2Body_GetWorldVector(this.ptr,vec.x,vec.y,_vec2Buf.byteOffset);var result=new Float32Array(_vec2Buf.buffer,_vec2Buf.byteOffset,_vec2Buf.length);return new b2Vec2(result[0],result[1])};b2Body.prototype.SetAngularVelocity=function(angle){b2Body_SetAngularVelocity(this.ptr,angle)};b2Body.prototype.SetAwake=function(flag){b2Body_SetAwake(this.ptr,flag)};b2Body.prototype.SetFixedRotation=function(flag){b2Body_SetFixedRotation(this.ptr,flag)};
b2Body.prototype.SetLinearVelocity=function(v){b2Body_SetLinearVelocity(this.ptr,v.x,v.y)};b2Body.prototype.SetMassData=function(massData){b2Body_SetMassData(this.ptr,massData.mass,massData.center.x,massData.center.y,massData.I)};b2Body.prototype.SetTransform=function(v,angle){b2Body_SetTransform(this.ptr,v.x,v.y,angle)};b2Body.prototype.SetType=function(type){b2Body_SetType(this.ptr,type)};var b2_staticBody=0;var b2_kinematicBody=1;var b2_dynamicBody=2;
function b2BodyDef(){this.active=true;this.allowSleep=true;this.angle=0;this.angularVelocity=0;this.angularDamping=0;this.awake=true;this.bullet=false;this.fixedRotation=false;this.gravityScale=1;this.linearDamping=0;this.linearVelocity=new b2Vec2;this.position=new b2Vec2;this.type=b2_staticBody;this.userData=null};b2World.BeginContactBody=function(contactPtr){if(world.listener.BeginContactBody===undefined)return;var contact=new b2Contact(contactPtr);world.listener.BeginContactBody(contact)};b2World.EndContactBody=function(contactPtr){if(world.listener.EndContactBody===undefined)return;var contact=new b2Contact(contactPtr);world.listener.EndContactBody(contact)};
b2World.PreSolve=function(contactPtr,oldManifoldPtr){if(world.listener.PreSolve===undefined)return;world.listener.PreSolve(new b2Contact(contactPtr),new b2Manifold(oldManifoldPtr))};b2World.PostSolve=function(contactPtr,impulsePtr){if(world.listener.PostSolve===undefined)return;world.listener.PostSolve(new b2Contact(contactPtr),new b2ContactImpulse(impulsePtr))};b2World.QueryAABB=function(fixturePtr){return world.queryAABBCallback.ReportFixture(world.fixturesLookup[fixturePtr])};
b2World.RayCast=function(fixturePtr,pointX,pointY,normalX,normalY,fraction){return world.rayCastCallback.ReportFixture(world.fixturesLookup[fixturePtr],new b2Vec2(pointX,pointY),new b2Vec2(normalX,normalY),fraction)};var b2World_Create=Module.cwrap("b2World_Create","number",["number","number"]);
var b2World_CreateBody=Module.cwrap("b2World_CreateBody","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);var b2World_CreateParticleSystem=Module.cwrap("b2World_CreateParticleSystem","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2World_DestroyBody=Module.cwrap("b2World_DestroyBody","null",["number","number"]);var b2World_DestroyJoint=Module.cwrap("b2World_DestroyJoint","null",["number","number"]);var b2World_DestroyParticleSystem=Module.cwrap("b2World_DestroyParticleSystem","null",["number","number"]);var b2World_QueryAABB=Module.cwrap("b2World_QueryAABB","null",["number","number","number","number","number"]);var b2World_RayCast=Module.cwrap("b2World_RayCast","null",["number","number","number","number","number"]);
var b2World_SetContactListener=Module.cwrap("b2World_SetContactListener","null",["number"]);var b2World_SetGravity=Module.cwrap("b2World_SetGravity","null",["number","number","number"]);var b2World_Step=Module.cwrap("b2World_Step","null",["number","number","number"]);var _transBuf=null;var _vec2Buf=null;
function b2World(gravity){this.bodies=[];this.bodiesLookup={};this.fixturesLookup={};this.joints=[];this.listener=null;this.particleSystems=[];this.ptr=b2World_Create(gravity.x,gravity.y);this.queryAABBCallback=null;this.rayCastCallback=null;this.buffer=new DataView(Module.HEAPU8.buffer,this.ptr);var nDataBytes=4*Float32Array.BYTES_PER_ELEMENT;var dataPtr=Module._malloc(nDataBytes);_transBuf=new Uint8Array(Module.HEAPU8.buffer,dataPtr,nDataBytes);nDataBytes=2*Float32Array.BYTES_PER_ELEMENT;dataPtr=
Module._malloc(nDataBytes);_vec2Buf=new Uint8Array(Module.HEAPU8.buffer,dataPtr,nDataBytes)}b2World._Push=function(item,list){item.lindex=list.length;list.push(item)};b2World._RemoveItem=function(item,list){var length=list.length;var lindex=item.lindex;if(length>1){list[lindex]=list[length-1];list[lindex].lindex=lindex}list.pop()};
b2World.prototype.CreateBody=function(bodyDef){var body=new b2Body(b2World_CreateBody(this.ptr,bodyDef.active,bodyDef.allowSleep,bodyDef.angle,bodyDef.angularVelocity,bodyDef.angularDamping,bodyDef.awake,bodyDef.bullet,bodyDef.fixedRotation,bodyDef.gravityScale,bodyDef.linearDamping,bodyDef.linearVelocity.x,bodyDef.linearVelocity.y,bodyDef.position.x,bodyDef.position.y,bodyDef.type,bodyDef.userData));b2World._Push(body,this.bodies);body.world=this;this.bodiesLookup[body.ptr]=body;return body};
b2World.prototype.CreateJoint=function(jointDef){var joint=jointDef.Create(this);b2World._Push(joint,this.joints);return joint};
b2World.prototype.CreateParticleSystem=function(psd){var ps=new b2ParticleSystem(b2World_CreateParticleSystem(this.ptr,psd.colorMixingStrength,psd.dampingStrength,psd.destroyByAge,psd.ejectionStrength,psd.elasticStrength,psd.lifetimeGranularity,psd.powderStrength,psd.pressureStrength,psd.radius,psd.repulsiveStrength,psd.springStrength,psd.staticPressureIterations,psd.staticPressureRelaxation,psd.staticPressureStrength,psd.surfaceTensionNormalStrength,psd.surfaceTensionPressureStrength,psd.viscousStrength));
b2World._Push(ps,this.particleSystems);ps.dampingStrength=psd.dampingStrength;ps.radius=psd.radius;return ps};b2World.prototype.DestroyBody=function(body){b2World_DestroyBody(this.ptr,body.ptr);b2World._RemoveItem(body,this.bodies)};b2World.prototype.DestroyJoint=function(joint){b2World_DestroyJoint(this.ptr,joint.ptr);b2World._RemoveItem(joint,this.joints)};
b2World.prototype.DestroyParticleSystem=function(particleSystem){b2World_DestroyParticleSystem(this.ptr,particleSystem.ptr);b2World._RemoveItem(particleSystem,this.particleSystems)};b2World.prototype.QueryAABB=function(callback,aabb){this.queryAABBCallback=callback;b2World_QueryAABB(this.ptr,aabb.lowerBound.x,aabb.lowerBound.y,aabb.upperBound.x,aabb.upperBound.y)};
b2World.prototype.RayCast=function(callback,point1,point2){this.rayCastCallback=callback;b2World_RayCast(this.ptr,point1.x,point1.y,point2.x,point2.y)};b2World.prototype.SetContactListener=function(listener){this.listener=listener;b2World_SetContactListener(this.ptr)};b2World.prototype.SetGravity=function(gravity){b2World_SetGravity(this.ptr,gravity.x,gravity.y)};b2World.prototype.Step=function(steps,vIterations,pIterations){b2World_Step(this.ptr,steps,vIterations,pIterations)};var b2WheelJoint_SetMotorSpeed=Module.cwrap("b2WheelJoint_SetMotorSpeed","null",["number","number"]);var b2WheelJoint_SetSpringFrequencyHz=Module.cwrap("b2WheelJoint_SetSpringFrequencyHz","null",["number","number"]);function b2WheelJoint(def){this.next=null;this.ptr=null}b2WheelJoint.prototype.SetMotorSpeed=function(speed){b2WheelJoint_SetMotorSpeed(this.ptr,speed)};b2WheelJoint.prototype.SetSpringFrequencyHz=function(hz){b2WheelJoint_SetSpringFrequencyHz(this.ptr,hz)};
var b2WheelJointDef_Create=Module.cwrap("b2WheelJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);var b2WheelJointDef_InitializeAndCreate=Module.cwrap("b2WheelJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number","number","number","number","number","number"]);
function b2WheelJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.dampingRatio=.7;this.enableMotor=false;this.frequencyHz=2;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.localAxisA=new b2Vec2(1,0);this.maxMotorTorque=0;this.motorSpeed=0}
b2WheelJointDef.prototype.Create=function(world){var wheelJoint=new b2WheelJoint(this);wheelJoint.ptr=b2WheelJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.dampingRatio,this.enableMotor,this.frequencyHz,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y,this.localAxisA.x,this.localAxisA.y,this.maxMotorTorque,this.motorSpeed);return wheelJoint};
b2WheelJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB,anchor,axis){this.bodyA=bodyA;this.bodyB=bodyB;var wheelJoint=new b2WheelJoint(this);wheelJoint.ptr=b2WheelJointDef_InitializeAndCreate(world.ptr,this.bodyA.ptr,this.bodyB.ptr,anchor.x,anchor.y,axis.x,axis.y,this.collideConnected,this.dampingRatio,this.enableMotor,this.frequencyHz,this.maxMotorTorque,this.motorSpeed);b2World._Push(wheelJoint,world.joints);return wheelJoint};var b2WeldJointDef_Create=Module.cwrap("b2WeldJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number"]);var b2WeldJointDef_InitializeAndCreate=Module.cwrap("b2WeldJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number"]);
function b2WeldJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.dampingRatio=0;this.frequencyHz=0;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.referenceAngle=0}
b2WeldJointDef.prototype.Create=function(world){var weldJoint=new b2WeldJoint(this);weldJoint.ptr=b2WeldJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.dampingRatio,this.frequencyHz,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y,this.referenceAngle);return weldJoint};
b2WeldJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB,anchor){this.bodyA=bodyA;this.bodyB=bodyB;var weldJoint=new b2WeldJoint(this);weldJoint.ptr=b2WeldJointDef_InitializeAndCreate(world.ptr,this.bodyA.ptr,this.bodyB.ptr,anchor.x,anchor.y,this.collideConnected,this.dampingRatio,this.frequencyHz);b2World._Push(weldJoint,world.joints);return weldJoint};function b2WeldJoint(def){this.bodyA=def.bodyA;this.bodyB=def.bodyB;this.next=null;this.ptr=null};var b2GearJoint_GetRatio=Module.cwrap("b2GearJoint_GetRatio","number",["number"]);function b2GearJoint(def){this.ptr=null;this.next=null}b2GearJoint.prototype.GetRatio=function(){return b2GearJoint_GetRatio(this.ptr)};var b2GearJointDef_Create=Module.cwrap("b2GearJointDef_Create","number",["number","number","number","number","number","number","number"]);function b2GearJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.joint1=null;this.joint2=null;this.ratio=0}
b2GearJointDef.prototype.Create=function(world){var gearJoint=new b2GearJoint(this);gearJoint.ptr=b2GearJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.joint1.ptr,this.joint2.ptr,this.ratio);return gearJoint};var e_unknownJoint=0;var e_revoluteJoint=1;var e_prismaticJoint=2;var e_distanceJoint=3;var e_pulleyJoint=4;var e_mouseJoint=5;var e_gearJoint=6;var e_wheelJoint=7;var e_weldJoint=8;var e_frictionJoint=9;var e_ropeJoint=10;var e_motorJoint=11;var b2Joint_GetBodyA=Module.cwrap("b2Joint_GetBodyA","number",["number"]);var b2Joint_GetBodyB=Module.cwrap("b2Joint_GetBodyB","number",["number"]);function b2Joint(){}b2Joint.prototype.GetBodyA=function(){return world.bodiesLookup[b2Joint_GetBodyA(this.ptr)]};
b2Joint.prototype.GetBodyB=function(){return world.bodiesLookup[b2Joint_GetBodyB(this.ptr)]};var b2FrictionJointDef_Create=Module.cwrap("b2FrictionJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number"]);var b2FrictionJointDef_InitializeAndCreate=Module.cwrap("b2FrictionJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number"]);
function b2FrictionJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.maxForce=0;this.maxTorque=0;this.userData=null}
b2FrictionJointDef.prototype.Create=function(world){var frictionJoint=new b2FrictionJoint(this);frictionJoint.ptr=b2FrictionJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y,this.maxForce,this.maxTorque);return frictionJoint};
b2FrictionJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB,anchor){this.bodyA=bodyA;this.bodyB=bodyB;var frictionJoint=new b2FrictionJoint(this);frictionJoint.ptr=b2FrictionJointDef_InitializeAndCreate(world.ptr,this.bodyA.ptr,this.bodyB.ptr,anchor.x,anchor.y,this.collideConnected,this.maxForce,this.maxTorque);b2World._Push(frictionJoint,world.joints);return frictionJoint};function b2FrictionJoint(def){this.bodyA=def.bodyA;this.bodyB=def.bodyB;this.ptr=null;this.next=null};var b2RevoluteJoint_EnableLimit=Module.cwrap("b2RevoluteJoint_EnableLimit","number",["number","number"]);var b2RevoluteJoint_EnableMotor=Module.cwrap("b2RevoluteJoint_EnableMotor","number",["number","number"]);var b2RevoluteJoint_GetJointAngle=Module.cwrap("b2RevoluteJoint_GetJointAngle","number",["number"]);var b2RevoluteJoint_IsLimitEnabled=Module.cwrap("b2RevoluteJoint_IsLimitEnabled","number",["number"]);
var b2RevoluteJoint_IsMotorEnabled=Module.cwrap("b2RevoluteJoint_IsMotorEnabled","number",["number"]);var b2RevoluteJoint_SetMotorSpeed=Module.cwrap("b2RevoluteJoint_SetMotorSpeed","number",["number","number"]);
function b2RevoluteJoint(revoluteJointDef){this.collideConnected=revoluteJointDef.collideConnected;this.enableLimit=revoluteJointDef.enableLimit;this.enableMotor=revoluteJointDef.enableMotor;this.lowerAngle=revoluteJointDef.lowerAngle;this.maxMotorTorque=revoluteJointDef.maxMotorTorque;this.motorSpeed=revoluteJointDef.motorSpeed;this.next=null;this.ptr=null;this.upperAngle=revoluteJointDef.upperAngle;this.userData=revoluteJointDef.userData}b2RevoluteJoint.prototype=new b2Joint;
b2RevoluteJoint.prototype.EnableLimit=function(flag){b2RevoluteJoint_EnableLimit(this.ptr,flag)};b2RevoluteJoint.prototype.EnableMotor=function(flag){b2RevoluteJoint_EnableMotor(this.ptr,flag)};b2RevoluteJoint.prototype.GetJointAngle=function(flag){return b2RevoluteJoint_GetJointAngle(this.ptr)};b2RevoluteJoint.prototype.IsLimitEnabled=function(){return b2RevoluteJoint_IsLimitEnabled(this.ptr)};b2RevoluteJoint.prototype.IsMotorEnabled=function(){return b2RevoluteJoint_IsMotorEnabled(this.ptr)};
b2RevoluteJoint.prototype.SetMotorSpeed=function(speed){b2RevoluteJoint_SetMotorSpeed(this.ptr,speed);this.motorSpeed=speed};var b2RevoluteJointDef_Create=Module.cwrap("b2RevoluteJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2RevoluteJointDef_InitializeAndCreate=Module.cwrap("b2RevoluteJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number","number","number","number","number"]);function b2RevoluteJointDef(){this.collideConnected=false;this.enableLimit=false;this.enableMotor=false;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.lowerAngle=0;this.maxMotorTorque=0;this.motorSpeed=0;this.referenceAngle=0;this.upperAngle=0;this.userData=null}
b2RevoluteJointDef.prototype.Create=function(world){var revoluteJoint=new b2RevoluteJoint(this);revoluteJoint.ptr=b2RevoluteJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.enableLimit,this.enableMotor,this.lowerAngle,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y,this.maxMotorTorque,this.motorSpeed,this.referenceAngle,this.upperAngle);return revoluteJoint};
b2RevoluteJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB,anchor){this.bodyA=bodyA;this.bodyB=bodyB;var revoluteJoint=new b2RevoluteJoint(this);revoluteJoint.ptr=b2RevoluteJointDef_InitializeAndCreate(world.ptr,bodyA.ptr,bodyB.ptr,anchor.x,anchor.y,this.collideConnected,this.enableLimit,this.enableMotor,this.lowerAngle,this.maxMotorTorque,this.motorSpeed,this.upperAngle);b2World._Push(revoluteJoint,world.joints);return revoluteJoint};var b2MotorJoint_SetAngularOffset=Module.cwrap("b2MotorJoint_SetAngularOffset","null",["number","number"]);var b2MotorJoint_SetLinearOffset=Module.cwrap("b2MotorJoint_SetLinearOffset","null",["number","number","number"]);function b2MotorJoint(def){this.bodyA=def.bodyA;this.bodyB=def.bodyB;this.ptr=null;this.next=null}b2MotorJoint.prototype.SetAngularOffset=function(angle){b2MotorJoint_SetAngularOffset(this.ptr,angle)};
b2MotorJoint.prototype.SetLinearOffset=function(v){b2MotorJoint_SetLinearOffset(this.ptr,v.x,v.y)};var b2MotorJointDef_Create=Module.cwrap("b2MotorJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number"]);var b2MotorJointDef_InitializeAndCreate=Module.cwrap("b2MotorJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number"]);
function b2MotorJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.angularOffset=0;this.correctionFactor=.3;this.linearOffset=new b2Vec2;this.maxForce=0;this.maxTorque=0}b2MotorJointDef.prototype.Create=function(world){var motorJoint=new b2MotorJoint(this);motorJoint.ptr=b2MotorJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.angularOffset,this.correctionFactor,this.linearOffset.x,this.linearOffset.y,this.maxForce,this.maxTorque);return motorJoint};
b2MotorJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB){this.bodyA=bodyA;this.bodyB=bodyB;var motorJoint=new b2MotorJoint(this);motorJoint.ptr=b2MotorJointDef_InitializeAndCreate(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.correctionFactor,this.maxForce,this.maxTorque);b2World._Push(motorJoint,world.joints);return motorJoint};function b2PulleyJoint(def){this.ptr=null;this.next=null}var b2PulleyJointDef_Create=Module.cwrap("b2PulleyJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);var b2PulleyJointDef_InitializeAndCreate=Module.cwrap("b2PulleyJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
function b2PulleyJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=true;this.groundAnchorA=new b2Vec2;this.groundAnchorB=new b2Vec2;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.lengthA=0;this.lengthB=0;this.ratio=1}
b2PulleyJointDef.prototype.Create=function(world){var pulleyJoint=new b2PulleyJoint(this);pulleyJoint.ptr=b2PulleyJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.groundAnchorA.x,this.groundAnchorA.y,this.groundAnchorB.x,this.groundAnchorB.y,this.lengthA,this.lengthB,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y,this.ratio);return pulleyJoint};
b2PulleyJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB,groundAnchorA,groundAnchorB,anchorA,anchorB,ratio){this.bodyA=bodyA;this.bodyB=bodyB;var pulleyJoint=new b2PulleyJoint(this);pulleyJoint.ptr=b2PulleyJointDef_InitializeAndCreate(world.ptr,this.bodyA.ptr,this.bodyB.ptr,anchorA.x,anchorA.y,anchorB.x,anchorB.y,groundAnchorA.x,groundAnchorA.y,groundAnchorB.x,groundAnchorB.y,ratio,this.collideConnected);b2World._Push(pulleyJoint,world.joints);return pulleyJoint};function b2DistanceJoint(def){this.bodyA=def.bodyA;this.bodyB=def.bodyB;this.ptr=null;this.next=null}var b2DistanceJointDef_Create=Module.cwrap("b2DistanceJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number","number"]);var b2DistanceJointDef_InitializeAndCreate=Module.cwrap("b2DistanceJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number","number","number"]);
function b2DistanceJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.dampingRatio=0;this.length=1;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.frequencyHz=0}
b2DistanceJointDef.prototype.Create=function(world){var distanceJoint=new b2DistanceJoint(this);distanceJoint.ptr=b2DistanceJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.dampingRatio,this.frequencyHz,this.length,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y);return distanceJoint};
b2DistanceJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB,anchorA,anchorB){this.bodyA=bodyA;this.bodyB=bodyB;var distanceJoint=new b2DistanceJoint(this);distanceJoint.ptr=b2DistanceJointDef_InitializeAndCreate(world.ptr,this.bodyA.ptr,this.bodyB.ptr,anchorA.x,anchorA.y,anchorB.x,anchorB.y,this.collideConnected,this.dampingRatio,this.frequencyHz);b2World._Push(distanceJoint,world.joints);return distanceJoint};var b2PrismaticJoint_EnableLimit=Module.cwrap("b2PrismaticJoint_EnableLimit","number",["number","number"]);var b2PrismaticJoint_EnableMotor=Module.cwrap("b2PrismaticJoint_EnableMotor","number",["number","number"]);var b2PrismaticJoint_GetJointTranslation=Module.cwrap("b2PrismaticJoint_GetJointTranslation","number",["number"]);var b2PrismaticJoint_GetMotorSpeed=Module.cwrap("b2PrismaticJoint_GetMotorSpeed","number",["number"]);
var b2PrismaticJoint_GetMotorForce=Module.cwrap("b2PrismaticJoint_GetMotorForce","number",["number","number"]);var b2PrismaticJoint_IsLimitEnabled=Module.cwrap("b2PrismaticJoint_IsLimitEnabled","number",["number"]);var b2PrismaticJoint_IsMotorEnabled=Module.cwrap("b2PrismaticJoint_IsMotorEnabled","number",["number"]);var b2PrismaticJoint_SetMotorSpeed=Module.cwrap("b2PrismaticJoint_SetMotorSpeed","number",["number","number"]);function b2PrismaticJoint(def){this.ptr=null;this.next=null}
b2PrismaticJoint.prototype=new b2Joint;b2PrismaticJoint.prototype.EnableLimit=function(flag){return b2PrismaticJoint_EnableLimit(this.ptr,flag)};b2PrismaticJoint.prototype.EnableMotor=function(flag){return b2PrismaticJoint_EnableMotor(this.ptr,flag)};b2PrismaticJoint.prototype.GetJointTranslation=function(){return b2PrismaticJoint_GetJointTranslation(this.ptr)};b2PrismaticJoint.prototype.GetMotorSpeed=function(){return b2PrismaticJoint_GetMotorSpeed(this.ptr)};
b2PrismaticJoint.prototype.GetMotorForce=function(hz){return b2PrismaticJoint_GetMotorForce(this.ptr,hz)};b2PrismaticJoint.prototype.IsLimitEnabled=function(){return b2PrismaticJoint_IsLimitEnabled(this.ptr)};b2PrismaticJoint.prototype.IsMotorEnabled=function(){return b2PrismaticJoint_IsMotorEnabled(this.ptr)};b2PrismaticJoint.prototype.GetMotorEnabled=function(){return b2PrismaticJoint_IsMotorEnabled(this.ptr)};
b2PrismaticJoint.prototype.SetMotorSpeed=function(speed){return b2PrismaticJoint_SetMotorSpeed(this.ptr,speed)};var b2PrismaticJointDef_Create=Module.cwrap("b2PrismaticJointDef_Create","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
var b2PrismaticJointDef_InitializeAndCreate=Module.cwrap("b2PrismaticJointDef_InitializeAndCreate","number",["number","number","number","number","number","number","number","number","number","number","number","number","number","number"]);
function b2PrismaticJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.enableLimit=false;this.enableMotor=false;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.localAxisA=new b2Vec2(1,0);this.lowerTranslation=0;this.maxMotorForce=0;this.motorSpeed=0;this.referenceAngle=0;this.upperTranslation=0}
b2PrismaticJointDef.prototype.Create=function(world){var prismaticJoint=new b2PrismaticJoint(this);prismaticJoint.ptr=b2PrismaticJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.enableLimit,this.enableMotor,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y,this.localAxisA.x,this.localAxisA.y,this.lowerTranslation,this.maxMotorForce,this.motorSpeed,this.referenceAngle,this.upperTranslation);return prismaticJoint};
b2PrismaticJointDef.prototype.InitializeAndCreate=function(bodyA,bodyB,anchor,axis){this.bodyA=bodyA;this.bodyB=bodyB;var prismaticJoint=new b2PrismaticJoint(this);prismaticJoint.ptr=b2PrismaticJointDef_InitializeAndCreate(world.ptr,this.bodyA.ptr,this.bodyB.ptr,anchor.x,anchor.y,axis.x,axis.y,this.collideConnected,this.enableLimit,this.enableMotor,this.lowerTranslation,this.maxMotorForce,this.motorSpeed,this.upperTranslation);b2World._Push(prismaticJoint,world.joints);return prismaticJoint};function b2RopeJoint(def){this.next=null;this.ptr=null}var b2RopeJointDef_Create=Module.cwrap("b2RopeJointDef_Create","number",["number","number","number","number","number","number","number","number","number"]);function b2RopeJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.localAnchorA=new b2Vec2;this.localAnchorB=new b2Vec2;this.maxLength=0}
b2RopeJointDef.prototype.Create=function(world){var ropeJoint=new b2RopeJoint(this);ropeJoint.ptr=b2RopeJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.localAnchorA.x,this.localAnchorA.y,this.localAnchorB.x,this.localAnchorB.y,this.maxLength);return ropeJoint};var b2MouseJoint_SetTarget=Module.cwrap("b2MouseJoint_SetTarget","null",["number","number","number"]);function b2MouseJoint(def){this.ptr=null;this.next=null}b2MouseJoint.prototype.SetTarget=function(p){b2MouseJoint_SetTarget(this.ptr,p.x,p.y)};var b2MouseJointDef_Create=Module.cwrap("b2MouseJointDef_Create","number",["number","number","number","number","number","number","number","number","number"]);
function b2MouseJointDef(){this.bodyA=null;this.bodyB=null;this.collideConnected=false;this.dampingRatio=.7;this.frequencyHz=5;this.maxForce=0;this.target=new b2Vec2}b2MouseJointDef.prototype.Create=function(world){var mouseJoint=new b2MouseJoint(this);mouseJoint.ptr=b2MouseJointDef_Create(world.ptr,this.bodyA.ptr,this.bodyB.ptr,this.collideConnected,this.dampingRatio,this.frequencyHz,this.maxForce,this.target.x,this.target.y);return mouseJoint};var b2Contact_fixtureA_offset=Offsets.b2Contact.fixtureA;var b2Contact_fixtureB_offset=Offsets.b2Contact.fixtureB;var b2Contact_tangentSpeed_offset=Offsets.b2Contact.tangentSpeed;var b2Contact_GetManifold=Module.cwrap("b2Contact_GetManifold","number",["number"]);var b2Contact_GetWorldManifold=Module.cwrap("b2Contact_GetWorldManifold","number",["number"]);function b2Contact(ptr){this.buffer=new DataView(Module.HEAPU8.buffer,ptr);this.ptr=ptr}
b2Contact.prototype.GetFixtureA=function(){var fixAPtr=this.buffer.getUint32(b2Contact_fixtureA_offset,true);return world.fixturesLookup[fixAPtr]};b2Contact.prototype.GetFixtureB=function(){var fixBPtr=this.buffer.getUint32(b2Contact_fixtureB_offset,true);return world.fixturesLookup[fixBPtr]};b2Contact.prototype.GetManifold=function(){return new b2Manifold(b2Contact_GetManifold(this.ptr))};b2Contact.prototype.GetWorldManifold=function(){return new b2WorldManifold(b2Contact_GetWorldManifold(this.ptr))};
b2Contact.prototype.SetTangentSpeed=function(speed){this.buffer.setFloat32(b2Contact_tangentSpeed_offset,speed,true)};function b2Filter(){this.categoryBits=1;this.groupIndex=0;this.maskBits=65535}var b2Fixture_isSensor_offset=Offsets.b2Fixture.isSensor;var b2Fixture_userData_offset=Offsets.b2Fixture.userData;function b2Fixture(){this.body=null;this.buffer=null;this.ptr=null;this.shape=null}var b2Fixture_TestPoint=Module.cwrap("b2Fixture_TestPoint","number",["number","number","number"]);b2Fixture.prototype._SetPtr=function(ptr){this.ptr=ptr;this.buffer=new DataView(Module.HEAPU8.buffer,ptr)};
b2Fixture.prototype.FromFixtureDef=function(fixtureDef){this.density=fixtureDef.density;this.friction=fixtureDef.friction;this.isSensor=fixtureDef.isSensor;this.restitution=fixtureDef.restitution;this.shape=fixtureDef.shape;this.userData=fixtureDef.userData;this.vertices=[]};b2Fixture.prototype.GetUserData=function(){return this.buffer.getUint32(b2Fixture_userData_offset,true)};b2Fixture.prototype.SetSensor=function(flag){this.buffer.setUint32(b2Fixture_isSensor_offset,flag,true)};
b2Fixture.prototype.TestPoint=function(p){return b2Fixture_TestPoint(this.ptr,p.x,p.y)};function b2FixtureDef(){this.density=0;this.friction=.2;this.isSensor=false;this.restitution=0;this.shape=null;this.userData=null;this.filter=new b2Filter};function b2ContactImpulse(ptr){this.ptr=ptr;this.buffer=new DataView(Module.HEAPU8.buffer,ptr)}b2ContactImpulse.prototype.GetNormalImpulse=function(i){return this.buffer.getFloat32(i*4,true)};b2ContactImpulse.prototype.GetTangentImpulse=function(i){return this.buffer.getFloat32(i*4+8,true)};b2ContactImpulse.prototype.GetCount=function(i){console.log(this.buffer.getInt32(16,true))};function b2ParticleSystemDef(){this.colorMixingStrength=.5;this.dampingStrength=1;this.destroyByAge=true;this.ejectionStrength=.5;this.elasticStrength=.25;this.lifetimeGranularity=1/60;this.powderStrength=.5;this.pressureStrength=.05;this.radius=1;this.repulsiveStrength=1;this.springStrength=.25;this.staticPressureIterations=8;this.staticPressureRelaxation=.2;this.staticPressureStrength=.2;this.surfaceTensionNormalStrength=.2;this.surfaceTensionPressureStrength=.2;this.viscousStrength=.25}
var b2ParticleSystem_CreateParticle=Module.cwrap("b2ParticleSystem_CreateParticle","number",["number","number","number","number","number","number","number","number","number","number","number","number","number"]);var b2ParticleSystem_GetColorBuffer=Module.cwrap("b2ParticleSystem_GetColorBuffer","number",["number"]);var b2ParticleSystem_GetParticleCount=Module.cwrap("b2ParticleSystem_GetParticleCount","number",["number"]);
var b2ParticleSystem_GetParticleLifetime=Module.cwrap("b2ParticleSystem_GetParticleLifetime","number",["number","number"]);var b2ParticleSystem_GetPositionBuffer=Module.cwrap("b2ParticleSystem_GetPositionBuffer","number",["number"]);var b2ParticleSystem_GetVelocityBuffer=Module.cwrap("b2ParticleSystem_GetVelocityBuffer","number",["number"]);var b2ParticleSystem_SetDamping=Module.cwrap("b2ParticleSystem_SetDamping","null",["number","number"]);
var b2ParticleSystem_SetDensity=Module.cwrap("b2ParticleSystem_SetDensity","null",["number","number"]);var b2ParticleSystem_SetGravityScale=Module.cwrap("b2ParticleSystem_SetGravityScale","null",["number","number"]);var b2ParticleSystem_SetMaxParticleCount=Module.cwrap("b2ParticleSystem_SetMaxParticleCount","null",["number","number"]);var b2ParticleSystem_SetParticleLifetime=Module.cwrap("b2ParticleSystem_SetParticleLifetime","null",["number","number","number"]);
var b2ParticleSystem_SetRadius=Module.cwrap("b2ParticleSystem_SetRadius","null",["number","number"]);function b2ParticleSystem(ptr){this.dampingStrength=1;this.density=1;this.ptr=ptr;this.particleGroups=[];this.radius=1;this.gravityScale=1}b2ParticleSystem.prototype.CreateParticle=function(pd){return b2ParticleSystem_CreateParticle(this.ptr,pd.color.r,pd.color.g,pd.color.b,pd.color.a,pd.flags,pd.group,pd.lifetime,pd.position.x,pd.position.y,pd.userData,pd.velocity.x,pd.velocity.y)};
b2ParticleSystem.prototype.CreateParticleGroup=function(pgd){var particleGroup=new b2ParticleGroup(pgd.shape._CreateParticleGroup(this,pgd));this.particleGroups.push(particleGroup);return particleGroup};b2ParticleSystem.prototype.DestroyParticlesInShape=function(shape,xf){return shape._DestroyParticlesInShape(this,xf)};
b2ParticleSystem.prototype.GetColorBuffer=function(){var count=b2ParticleSystem_GetParticleCount(this.ptr)*4;var offset=b2ParticleSystem_GetColorBuffer(this.ptr);return new Uint8Array(Module.HEAPU8.buffer,offset,count)};b2ParticleSystem.prototype.GetParticleLifetime=function(index){return b2ParticleSystem_GetParticleLifetime(this.ptr,index)};b2ParticleSystem.prototype.GetParticleCount=function(){return b2ParticleSystem_GetParticleCount(this.ptr)};
b2ParticleSystem.prototype.GetPositionBuffer=function(){var count=b2ParticleSystem_GetParticleCount(this.ptr)*2;var offset=b2ParticleSystem_GetPositionBuffer(this.ptr);return new Float32Array(Module.HEAPF32.buffer,offset,count)};b2ParticleSystem.prototype.GetVelocityBuffer=function(){var count=b2ParticleSystem_GetParticleCount(this.ptr)*2;var offset=b2ParticleSystem_GetVelocityBuffer(this.ptr);return new Float32Array(Module.HEAPF32.buffer,offset,count)};
b2ParticleSystem.prototype.SetDamping=function(damping){this.dampingStrength=damping;b2ParticleSystem_SetDamping(this.ptr,damping)};b2ParticleSystem.prototype.SetDensity=function(density){this.density=density;b2ParticleSystem_SetDensity(this.ptr,density)};b2ParticleSystem.prototype.SetGravityScale=function(gravityScale){this.gravityScale=gravityScale;b2ParticleSystem_SetGravityScale(this.ptr,gravityScale)};
b2ParticleSystem.prototype.SetMaxParticleCount=function(count){b2ParticleSystem_SetMaxParticleCount(this.ptr,count)};b2ParticleSystem.prototype.SetParticleLifetime=function(index,lifetime){b2ParticleSystem_SetParticleLifetime(this.ptr,index,lifetime)};b2ParticleSystem.prototype.SetRadius=function(radius){this.radius=radius;b2ParticleSystem_SetRadius(this.ptr,radius)};var b2_solidParticleGroup=1<<0;var b2_rigidParticleGroup=1<<1;var b2_particleGroupCanBeEmpty=1<<2;var b2_particleGroupWillBeDestroyed=1<<3;var b2_particleGroupNeedsUpdateDepth=1<<4;var b2_particleGroupInternalMask=b2_particleGroupWillBeDestroyed|b2_particleGroupNeedsUpdateDepth;var b2ParticleGroup_ApplyForce=Module.cwrap("b2ParticleGroup_ApplyForce","null",["number","number","number"]);
var b2ParticleGroup_ApplyLinearImpulse=Module.cwrap("b2ParticleGroup_ApplyLinearImpulse","null",["number","number","number"]);var b2ParticleGroup_DestroyParticles=Module.cwrap("b2ParticleGroup_DestroyParticles","null",["number","number"]);var b2ParticleGroup_GetBufferIndex=Module.cwrap("b2ParticleGroup_GetBufferIndex","number",["number"]);var b2ParticleGroup_GetParticleCount=Module.cwrap("b2ParticleGroup_GetParticleCount","number",["number"]);var b2ParticleGroup_groupFlags_offset=Offsets.b2ParticleGroup.groupFlags;
function b2ParticleGroup(ptr){this.buffer=new DataView(Module.HEAPU8.buffer,ptr);this.ptr=ptr}b2ParticleGroup.prototype.ApplyForce=function(force){b2ParticleGroup_ApplyForce(this.ptr,force.x,force.y)};b2ParticleGroup.prototype.ApplyLinearImpulse=function(impulse){b2ParticleGroup_ApplyLinearImpulse(this.ptr,impulse.x,impulse.y)};b2ParticleGroup.prototype.DestroyParticles=function(flag){b2ParticleGroup_DestroyParticles(this.ptr,flag)};b2ParticleGroup.prototype.GetBufferIndex=function(){return b2ParticleGroup_GetBufferIndex(this.ptr)};
b2ParticleGroup.prototype.GetGroupFlags=function(){return this.buffer.getUint32(b2ParticleGroup_groupFlags_offset,true)};b2ParticleGroup.prototype.GetParticleCount=function(){return b2ParticleGroup_GetParticleCount(this.ptr)};b2ParticleGroup.prototype.SetGroupFlags=function(flags){this.buffer.setUint32(b2ParticleGroup_groupFlags_offset,flags,true)};
function b2ParticleGroupDef(){this.angle=0;this.angularVelocity=0;this.color=new b2ParticleColor(0,0,0,0);this.flags=0;this.group=new b2ParticleGroup(null);this.groupFlags=0;this.lifetime=0;this.linearVelocity=new b2Vec2;this.position=new b2Vec2;this.positionData=null;this.particleCount=0;this.shape=null;this.strength=1;this.stride=0;this.userData=null};var b2_waterParticle=0;var b2_zombieParticle=1<<1;var b2_wallParticle=1<<2;var b2_springParticle=1<<3;var b2_elasticParticle=1<<4;var b2_viscousParticle=1<<5;var b2_powderParticle=1<<6;var b2_tensileParticle=1<<7;var b2_colorMixingParticle=1<<8;var b2_destructionListenerParticle=1<<9;var b2_barrierParticle=1<<10;var b2_staticPressureParticle=1<<11;var b2_reactiveParticle=1<<12;var b2_repulsiveParticle=1<<13;var b2_fixtureContactListenerParticle=1<<14;var b2_particleContactListenerParticle=1<<15;
var b2_fixtureContactFilterParticle=1<<16;var b2_particleContactFilterParticle=1<<17;function b2ParticleColor(r,g,b,a){if(r===undefined)r=0;if(g===undefined)g=0;if(b===undefined)b=0;if(a===undefined)a=0;this.r=r;this.g=g;this.b=b;this.a=a}b2ParticleColor.prototype.Set=function(r,g,b,a){this.r=r;this.g=g;this.b=b;this.a=a};function b2ParticleDef(){this.color=new b2Vec2;this.flags=0;this.group=0;this.lifetime=0;this.position=new b2Vec2;this.userData=0;this.velocity=new b2Vec2};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment