diff --git a/.env.example b/.env.example index 57b08d7e..bf495ee6 100644 --- a/.env.example +++ b/.env.example @@ -1,8 +1,3 @@ -# Environment Variables Template -# Copy this file to .env and fill in your values - -# Clerk Authentication -PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_example_key_here - -# Convex Database -PUBLIC_CONVEX_URL=https://example.convex.cloud +PUBLIC_CLERK_PUBLISHABLE_KEY=pk_something +CONVEX_DEPLOYMENT=dev:something +PUBLIC_CONVEX_URL=https://something.convex.cloud diff --git a/src/lib/components/providers.svelte b/src/lib/components/providers.svelte index 8d555cba..6fec6c5a 100644 --- a/src/lib/components/providers.svelte +++ b/src/lib/components/providers.svelte @@ -2,16 +2,24 @@ import { ClerkProvider, GoogleOneTap } from 'svelte-clerk/client'; import { ModeWatcher } from 'mode-watcher'; import { setupConvex } from 'convex-svelte'; - import { PUBLIC_CLERK_PUBLISHABLE_KEY, PUBLIC_CONVEX_URL } from '$env/static/public'; // Props let { children } = $props(); // Setup Convex - setupConvex(PUBLIC_CONVEX_URL); + // Only setup Convex if the URL is provided + if (process.env.PUBLIC_CONVEX_URL) { + try { + setupConvex(process.env.PUBLIC_CONVEX_URL); + } catch (error) { + console.warn('Failed to setup Convex:', error); + } + } else { + console.log('Convex setup skipped: PUBLIC_CONVEX_URL not configured (likely dev build)'); + } - + {@render children()} diff --git a/src/lib/gmaes.ts b/src/lib/gmaes.ts index 23eb0196..0b829e49 100644 --- a/src/lib/gmaes.ts +++ b/src/lib/gmaes.ts @@ -361,6 +361,14 @@ const gmaes: Gmae[] = [ tags: [], links: [], url: '/_app/tools/thisistheonlylevel/index.html' + }, + { + name: 'GBA Emulator', + description: "Nintendo please don't sue us", + category: 'Uncategorized', + tags: [], + links: [], + url: '/_app/tools/gba-emu/index.html' } ]; diff --git a/static/_app/tools/gba-emu/data/compression/extract7z.js b/static/_app/tools/gba-emu/data/compression/extract7z.js new file mode 100644 index 00000000..c48b7453 --- /dev/null +++ b/static/_app/tools/gba-emu/data/compression/extract7z.js @@ -0,0 +1 @@ +var Module,Module=Module||((void 0!==Module?Module:null)||{}),moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1,nodeFS,nodePath,TRY_USE_DUMP,key;if(Module.ENVIRONMENT)if("WEB"===Module.ENVIRONMENT)ENVIRONMENT_IS_WEB=!0;else if("WORKER"===Module.ENVIRONMENT)ENVIRONMENT_IS_WORKER=!0;else if("NODE"===Module.ENVIRONMENT)ENVIRONMENT_IS_NODE=!0;else{if("SHELL"!==Module.ENVIRONMENT)throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");ENVIRONMENT_IS_SHELL=!0}else ENVIRONMENT_IS_WEB="object"==typeof window,ENVIRONMENT_IS_WORKER="function"==typeof importScripts,ENVIRONMENT_IS_NODE="object"==typeof process&&"function"==typeof require&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE)Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn),Module.read=function(e,r){nodeFS=nodeFS||require("fs"),e=(nodePath=nodePath||require("path")).normalize(e);e=nodeFS.readFileSync(e);return r?e:e.toString()},Module.readBinary=function(e){e=Module.read(e,!0);return e.buffer||(e=new Uint8Array(e)),assert(e.buffer),e},Module.load=function(e){globalEval(read(e))},Module.thisProgram||(1>2],e=-16&(r+e+15|0);if((HEAP32[DYNAMICTOP_PTR>>2]=e,TOTAL_MEMORY<=e)&&!enlargeMemory())return HEAP32[DYNAMICTOP_PTR>>2]=r,0;return r},alignMemory:function(e,r){return e=Math.ceil(e/(r||16))*(r||16)},makeBigInt:function(e,r,t){return t?+(e>>>0)+4294967296*(r>>>0):+(e>>>0)+4294967296*(0|r)},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0,cwrap,ccall;function assert(e,r){e||abort("Assertion failed: "+r)}function getCFunc(_0x222174){var _0x54cf7b=Module["_"+_0x222174];if(!_0x54cf7b)try{_0x54cf7b=eval("_"+_0x222174)}catch(_0x4b65d1){}return assert(_0x54cf7b,"Cannot call unknown function "+_0x222174+" (perhaps LLVM optimizations or closure removed it?)"),_0x54cf7b}function setValue(e,r,t,n){switch("*"===(t=t||"i8").charAt(t.length-1)&&(t="i32"),t){case"i1":case"i8":HEAP8[e>>0]=r;break;case"i16":HEAP16[e>>1]=r;break;case"i32":HEAP32[e>>2]=r;break;case"i64":tempI64=[r>>>0,(tempDouble=r,1<=+Math_abs(tempDouble)?0>>0:~~+Math_ceil((tempDouble-(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[e>>2]=tempI64[0],HEAP32[e+4>>2]=tempI64[1];break;case"float":HEAPF32[e>>2]=r;break;case"double":HEAPF64[e>>3]=r;break;default:abort("invalid type for setValue: "+t)}}function getValue(e,r,t){switch("*"===(r=r||"i8").charAt(r.length-1)&&(r="i32"),r){case"i1":case"i8":return HEAP8[e>>0];case"i16":return HEAP16[e>>1];case"i32":case"i64":return HEAP32[e>>2];case"float":return HEAPF32[e>>2];case"double":return HEAPF64[e>>3];default:abort("invalid type for setValue: "+r)}return null}!function(){var _0x17b09f={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(e){var r=Runtime.stackAlloc(e.length);return writeArrayToMemory(e,r),r},stringToC:function(e){var r,t=0;return null!=e&&0!==e&&(r=1+(e.length<<2),stringToUTF8(e,t=Runtime.stackAlloc(r),r)),t}},_0x237e8c={string:_0x17b09f.stringToC,array:_0x17b09f.arrayToC};ccall=function(e,r,t,n,i){var e=getCFunc(e),o=[],a=0;if(assert("array"!==r,'Return type should not be "array".'),n)for(var u=0;u>2]=0;for(s=u+o;n>0]=0;return u}if("i8"===a)return e.subarray||e.slice?HEAPU8.set(e,u):HEAPU8.set(new Uint8Array(e),u),u;for(var f,l,c,d=0;d>0],(0!=t||r)&&(i++,!r||i!=r););r=r||i;var o="";if(n<128){for(var a;0>0];if(!t)return r;r+=String.fromCharCode(t)}}function stringToAscii(e,r){return writeAsciiToMemory(e,r,!1)}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,Module.allocate=allocate,Module.getMemory=getMemory,Module.Pointer_stringify=Pointer_stringify,Module.AsciiToString=AsciiToString,Module.stringToAscii=stringToAscii;var UTF8Decoder="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(e,r){for(var t=r;e[t];)++t;if(16>10,56320|1023&i))):s+=String.fromCharCode((31&a)<<6|u)):s+=String.fromCharCode(a)}}function UTF8ToString(e){return UTF8ArrayToString(HEAPU8,e)}function stringToUTF8Array(e,r,t,n){if(!(0>6,r[t++]=128|63&u}else if(u<=65535){if(o<=t+2)break;r[t++]=224|u>>12,r[t++]=128|u>>6&63,r[t++]=128|63&u}else if(u<=2097151){if(o<=t+3)break;r[t++]=240|u>>18,r[t++]=128|u>>12&63,r[t++]=128|u>>6&63,r[t++]=128|63&u}else if(u<=67108863){if(o<=t+4)break;r[t++]=248|u>>24,r[t++]=128|u>>18&63,r[t++]=128|u>>12&63,r[t++]=128|u>>6&63,r[t++]=128|63&u}else{if(o<=t+5)break;r[t++]=252|u>>30,r[t++]=128|u>>24&63,r[t++]=128|u>>18&63,r[t++]=128|u>>12&63,r[t++]=128|u>>6&63,r[t++]=128|63&u}}return r[t]=0,t-i}function stringToUTF8(e,r,t){return assert("number"==typeof t,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),stringToUTF8Array(e,HEAPU8,r,t)}function lengthBytesUTF8(e){for(var r=0,t=0;t>2)-1]=34821223,HEAPU32[(STACK_MAX>>2)-2]=2310721022}function checkStackCookie(){if(34821223==HEAPU32[(STACK_MAX>>2)-1]&&2310721022==HEAPU32[(STACK_MAX>>2)-2]||abort("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x"+HEAPU32[(STACK_MAX>>2)-2].toString(16)+" "+HEAPU32[(STACK_MAX>>2)-1].toString(16)),1668509029!==HEAP32[0])throw"Runtime error: The application has corrupted its heap memory area (address zero)!"}function abortStackOverflow(e){abort("Stack overflow! Attempted to allocate "+e+" bytes on the stack, but stack has only "+(STACK_MAX-asm.stackSave()+e)+" bytes available!")}function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){assert(HEAP32[DYNAMICTOP_PTR>>2]>TOTAL_MEMORY),assert(4>2]>=r)return!1;for(;TOTAL_MEMORY>2];)if(TOTAL_MEMORY>0]=e.charCodeAt(n);t||(HEAP8[r>>0]=0)}Module.addOnPreRun=addOnPreRun,Module.addOnInit=addOnInit,Module.addOnPreMain=addOnPreMain,Module.addOnExit=addOnExit,Module.addOnPostRun=addOnPostRun,Module.intArrayFromString=intArrayFromString,Module.intArrayToString=intArrayToString,Module.writeStringToMemory=writeStringToMemory,Module.writeArrayToMemory=writeArrayToMemory,Module.writeAsciiToMemory=writeAsciiToMemory,Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(e,r){var t=65535&e,n=65535&r;return t*n+((e>>>16)*n+t*(r>>>16)<<16)|0}),Math.imul=Math.imul,Math.clz32||(Math.clz32=function(e){e>>>=0;for(var r=0;r<32;r++)if(e&1<<31-r)return r;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(e){return e<0?Math.ceil(e):Math.floor(e)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null,runDependencyTracking={};function getUniqueRunDependency(e){for(var r=e;;){if(!runDependencyTracking[e])return e;e=r+Math.random()}return e}function addRunDependency(e){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),e?(assert(!runDependencyTracking[e]),runDependencyTracking[e]=1,null===runDependencyWatcher&&"undefined"!=typeof setInterval&&(runDependencyWatcher=setInterval(function(){if(ABORT)return clearInterval(runDependencyWatcher),void(runDependencyWatcher=null);var e,r=!1;for(e in runDependencyTracking)r||(r=!0,Module.printErr("still waiting on run dependencies:")),Module.printErr("dependency: "+e);r&&Module.printErr("(end of list)")},1e4))):Module.printErr("warning: run dependency added without ID")}function removeRunDependency(e){runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),e?(assert(runDependencyTracking[e]),delete runDependencyTracking[e]):Module.printErr("warning: run dependency removed without ID"),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled&&(e=dependenciesFulfilled,dependenciesFulfilled=null,e()))}Module.addRunDependency=addRunDependency,Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(e,r,t){for(var n=new Uint8Array(r),i=0;i>2]=e:Module.printErr("failed to set errno from JS"),e}var PATH={splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,r){for(var t=0,n=e.length-1;0<=n;n--){var i=e[n];"."===i?e.splice(n,1):".."===i?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t--;)e.unshift("..");return e},normalize:function(e){var r="/"===e.charAt(0),t="/"===e.substr(-1);return(e=PATH.normalizeArray(e.split("/").filter(function(e){return!!e}),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:function(e){var r=PATH.splitPath(e),e=r[0],r=r[1];return e||r?e+(r=r&&r.substr(0,r.length-1)):"."},basename:function(e){if("/"===e)return"/";var r=e.lastIndexOf("/");return-1===r?e:e.substr(r+1)},extname:function(e){return PATH.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return PATH.normalize(e.join("/"))},join2:function(e,r){return PATH.normalize(e+"/"+r)},resolve:function(){for(var e="",r=!1,t=arguments.length-1;-1<=t&&!r;t--){var n=0<=t?arguments[t]:FS.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r="/"===n.charAt(0)}return(r?"/":"")+(e=PATH.normalizeArray(e.split("/").filter(function(e){return!!e}),!r).join("/"))||"."},relative:function(e,r){function t(e){for(var r=0;re.contents.length&&(e.contents=MEMFS.getFileDataAsRegularArray(e),e.usedBytes=e.contents.length),!e.contents||e.contents.subarray){var t=e.contents?e.contents.buffer.byteLength:0;if(r<=t)return;r=Math.max(r,t*(t<1048576?2:1.125)|0),0!=t&&(r=Math.max(r,256));t=e.contents;return e.contents=new Uint8Array(r),void(0r)e.contents.length=r;else for(;e.contents.length=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-i,n);if(assert(0<=a),8t.timestamp)&&(a.push(e),o++)});var t=[];if(Object.keys(i.entries).forEach(function(e){i.entries[e];n.entries[e]||(t.push(e),o++)}),!o)return r(null);var u=0,e=("remote"===n.type?n:i).db.transaction([IDBFS.DB_STORE_NAME],"readwrite"),s=e.objectStore(IDBFS.DB_STORE_NAME);function f(e){return e?f.errored?void 0:(f.errored=!0,r(e)):++u>=o?r(null):void 0}e.onerror=function(e){f(this.error),e.preventDefault()},a.sort().forEach(function(t){"local"===i.type?IDBFS.loadRemoteEntry(s,t,function(e,r){return e?f(e):void IDBFS.storeLocalEntry(t,r,f)}):IDBFS.loadLocalEntry(t,function(e,r){return e?f(e):void IDBFS.storeRemoteEntry(s,t,r,f)})}),t.sort().reverse().forEach(function(e){"local"===i.type?IDBFS.removeLocalEntry(e,f):IDBFS.removeRemoteEntry(s,e,f)})}},NODEFS={isWindows:!1,staticInit:function(){NODEFS.isWindows=!!process.platform.match(/^win/)},mount:function(e){return assert(ENVIRONMENT_IS_NODE),NODEFS.createNode(null,"/",NODEFS.getMode(e.opts.root),0)},createNode:function(e,r,t,n){if(!FS.isDir(t)&&!FS.isFile(t)&&!FS.isLink(t))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);t=FS.createNode(e,r,t);return t.node_ops=NODEFS.node_ops,t.stream_ops=NODEFS.stream_ops,t},getMode:function(e){var r;try{r=fs.lstatSync(e),NODEFS.isWindows&&(r.mode=r.mode|(146&r.mode)>>1)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return r.mode},realPath:function(e){for(var r=[];e.parent!==e;)r.push(e.name),e=e.parent;return r.push(e.mount.opts.root),r.reverse(),PATH.join.apply(null,r)},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(e){if(e&=-2097153,e&=-2049,e&=-32769,(e&=-524289)in NODEFS.flagsToPermissionStringMap)return NODEFS.flagsToPermissionStringMap[e];throw new FS.ErrnoError(ERRNO_CODES.EINVAL)},node_ops:{getattr:function(e){var r,t=NODEFS.realPath(e);try{r=fs.lstatSync(t)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return NODEFS.isWindows&&!r.blksize&&(r.blksize=4096),NODEFS.isWindows&&!r.blocks&&(r.blocks=(r.size+r.blksize-1)/r.blksize|0),{dev:r.dev,ino:r.ino,mode:r.mode,nlink:r.nlink,uid:r.uid,gid:r.gid,rdev:r.rdev,size:r.size,atime:r.atime,mtime:r.mtime,ctime:r.ctime,blksize:r.blksize,blocks:r.blocks}},setattr:function(e,r){var t,n=NODEFS.realPath(e);try{void 0!==r.mode&&(fs.chmodSync(n,r.mode),e.mode=r.mode),void 0!==r.timestamp&&(t=new Date(r.timestamp),fs.utimesSync(n,t,t)),void 0!==r.size&&fs.truncateSync(n,r.size)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},lookup:function(e,r){var t=PATH.join2(NODEFS.realPath(e),r),t=NODEFS.getMode(t);return NODEFS.createNode(e,r,t)},mknod:function(e,r,t,n){var i=NODEFS.createNode(e,r,t,n),o=NODEFS.realPath(i);try{FS.isDir(i.mode)?fs.mkdirSync(o,i.mode):fs.writeFileSync(o,"",{mode:i.mode})}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return i},rename:function(e,r,t){var n=NODEFS.realPath(e),i=PATH.join2(NODEFS.realPath(r),t);try{fs.renameSync(n,i)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},unlink:function(e,r){var t=PATH.join2(NODEFS.realPath(e),r);try{fs.unlinkSync(t)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},rmdir:function(e,r){var t=PATH.join2(NODEFS.realPath(e),r);try{fs.rmdirSync(t)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},readdir:function(e){var r=NODEFS.realPath(e);try{return fs.readdirSync(r)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},symlink:function(e,r,t){var n=PATH.join2(NODEFS.realPath(e),r);try{fs.symlinkSync(t,n)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},readlink:function(e){var r=NODEFS.realPath(e);try{return r=fs.readlinkSync(r),NODEJS_PATH.relative(NODEJS_PATH.resolve(e.mount.opts.root),r)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}},stream_ops:{open:function(e){var r=NODEFS.realPath(e.node);try{FS.isFile(e.node.mode)&&(e.nfd=fs.openSync(r,NODEFS.flagsToPermissionString(e.flags)))}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},close:function(e){try{FS.isFile(e.node.mode)&&e.nfd&&fs.closeSync(e.nfd)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},read:function(e,r,t,n,i){if(0===n)return 0;var o,a=new Buffer(n);try{o=fs.readSync(e.nfd,a,0,n,i)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(0=e.node.size)return 0;i=e.node.contents.slice(i,i+n),n=WORKERFS.reader.readAsArrayBuffer(i);return r.set(new Uint8Array(n),t),i.size},write:function(e,r,t,n,i){throw new FS.ErrnoError(ERRNO_CODES.EIO)},llseek:function(e,r,t){if(1===t?r+=e.position:2===t&&FS.isFile(e.node.mode)&&(r+=e.node.size),r<0)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);return r}}};STATICTOP+=16,STATICTOP+=16,STATICTOP+=16;var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)},lookupPath:function(e,r){if(r=r||{},!(e=PATH.resolve(FS.cwd(),e)))return{path:"",node:null};var t,n={follow_mount:!0,recurse_count:0};for(t in n)void 0===r[t]&&(r[t]=n[t]);if(8>>0)%FS.nameTable.length},hashAddNode:function(e){var r=FS.hashName(e.parent.id,e.name);e.name_next=FS.nameTable[r],FS.nameTable[r]=e},hashRemoveNode:function(e){var r=FS.hashName(e.parent.id,e.name);if(FS.nameTable[r]===e)FS.nameTable[r]=e.name_next;else for(var t=FS.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:function(e,r){var t=FS.mayLookup(e);if(t)throw new FS.ErrnoError(t,e);for(var t=FS.hashName(e.id,r),n=FS.nameTable[t];n;n=n.name_next){var i=n.name;if(n.parent.id===e.id&&i===r)return n}return FS.lookup(e,r)},createNode:function(e,r,t,n){FS.FSNode||(FS.FSNode=function(e,r,t,n){e=e||this,this.parent=e,this.mount=e.mount,this.mounted=null,this.id=FS.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n},FS.FSNode.prototype={},Object.defineProperties(FS.FSNode.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}}));n=new FS.FSNode(e,r,t,n);return FS.hashAddNode(n),n},destroyNode:function(e){FS.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},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(e){var r=FS.flagModes[e];if(void 0===r)throw new Error("Unknown file open mode: "+e);return r},flagsToPermissionString:function(e){var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:function(e,r){return FS.ignorePermissions||(-1===r.indexOf("r")||292&e.mode)&&(-1===r.indexOf("w")||146&e.mode)&&(-1===r.indexOf("x")||73&e.mode)?0:ERRNO_CODES.EACCES},mayLookup:function(e){var r=FS.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:ERRNO_CODES.EACCES)},mayCreate:function(e,r){try{FS.lookupNode(e,r);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(e,"wx")},mayDelete:function(e,r,t){var n;try{n=FS.lookupNode(e,r)}catch(e){return e.errno}var i=FS.nodePermissions(e,"wx");if(i)return i;if(t){if(!FS.isDir(n.mode))return ERRNO_CODES.ENOTDIR;if(FS.isRoot(n)||FS.getPath(n)===FS.cwd())return ERRNO_CODES.EBUSY}else if(FS.isDir(n.mode))return ERRNO_CODES.EISDIR;return 0},mayOpen:function(e,r){return e?FS.isLink(e.mode)?ERRNO_CODES.ELOOP:FS.isDir(e.mode)&&("r"!==FS.flagsToPermissionString(r)||512&r)?ERRNO_CODES.EISDIR:FS.nodePermissions(e,FS.flagsToPermissionString(r)):ERRNO_CODES.ENOENT},MAX_OPEN_FDS:4096,nextfd:function(e,r){e=e||0,r=r||FS.MAX_OPEN_FDS;for(var t=e;t<=r;t++)if(!FS.streams[t])return t;throw new FS.ErrnoError(ERRNO_CODES.EMFILE)},getStream:function(e){return FS.streams[e]},createStream:function(e,r,t){FS.FSStream||(FS.FSStream=function(){},FS.FSStream.prototype={},Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}}));var n,i=new FS.FSStream;for(n in e)i[n]=e[n];e=i;t=FS.nextfd(r,t);return e.fd=t,FS.streams[t]=e},closeStream:function(e){FS.streams[e]=null},chrdev_stream_ops:{open:function(e){var r=FS.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,r){return e<<8|r},registerDevice:function(e,r){FS.devices[e]={stream_ops:r}},getDevice:function(e){return FS.devices[e]},getMounts:function(e){for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:function(r,t){"function"==typeof r&&(t=r,r=!1),FS.syncFSRequests++,1=n.length&&o(null)}n.forEach(function(e){return e.type.syncfs?void e.type.syncfs(e,r,a):a(null)})},mount:function(e,r,t){var n="/"===t,i=!t;if(n&&FS.root)throw new FS.ErrnoError(ERRNO_CODES.EBUSY);if(!n&&!i){var o=FS.lookupPath(t,{follow_mount:!1});if(t=o.path,o=o.node,FS.isMountpoint(o))throw new FS.ErrnoError(ERRNO_CODES.EBUSY);if(!FS.isDir(o.mode))throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}t={type:e,opts:r,mountpoint:t,mounts:[]},e=e.mount(t);return(e.mount=t).root=e,n?FS.root=e:o&&(o.mounted=t,o.mount&&o.mount.mounts.push(t)),e},unmount:function(e){var r=FS.lookupPath(e,{follow_mount:!1});if(!FS.isMountpoint(r.node))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var e=r.node,r=e.mounted,n=FS.getMounts(r);Object.keys(FS.nameTable).forEach(function(e){for(var r=FS.nameTable[e];r;){var t=r.name_next;-1!==n.indexOf(r.mount)&&FS.destroyNode(r),r=t}}),e.mounted=null;r=e.mount.mounts.indexOf(r);assert(-1!==r),e.mount.mounts.splice(r,1)},lookup:function(e,r){return e.node_ops.lookup(e,r)},mknod:function(e,r,t){var n=FS.lookupPath(e,{parent:!0}).node,i=PATH.basename(e);if(!i||"."===i||".."===i)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);e=FS.mayCreate(n,i);if(e)throw new FS.ErrnoError(e);if(!n.node_ops.mknod)throw new FS.ErrnoError(ERRNO_CODES.EPERM);return n.node_ops.mknod(n,i,r,t)},create:function(e,r){return r=void 0!==r?r:438,r&=4095,r|=32768,FS.mknod(e,r,0)},mkdir:function(e,r){return r=void 0!==r?r:511,r&=1023,r|=16384,FS.mknod(e,r,0)},mkdirTree:function(e,r){for(var t=e.split("/"),n="",i=0;ithis.length-1||e<0)){var r=e%this.chunkSize,e=e/this.chunkSize|0;return this.getter(e)[r]}},i.prototype.setDataGetter=function(e){this.getter=e},i.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",a,!1),e.send(null),!(200<=e.status&&e.status<300||304===e.status))throw new Error("Couldn't load "+a+". Status: "+e.status);var n=Number(e.getResponseHeader("Content-length")),r=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,t=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,i=1048576;r||(i=n);var o=this;o.setDataGetter(function(e){var r=e*i,t=(e+1)*i-1,t=Math.min(t,n-1);if(void 0===o.chunks[e]&&(o.chunks[e]=function(e,r){if(r=o.length)return 0;var a=Math.min(o.length-i,n);if(assert(0<=a),o.slice)for(var u=0;u>2]=n.dev,HEAP32[t+4>>2]=0,HEAP32[t+8>>2]=n.ino,HEAP32[t+12>>2]=n.mode,HEAP32[t+16>>2]=n.nlink,HEAP32[t+20>>2]=n.uid,HEAP32[t+24>>2]=n.gid,HEAP32[t+28>>2]=n.rdev,HEAP32[t+32>>2]=0,HEAP32[t+36>>2]=n.size,HEAP32[t+40>>2]=4096,HEAP32[t+44>>2]=n.blocks,HEAP32[t+48>>2]=n.atime.getTime()/1e3|0,HEAP32[t+52>>2]=0,HEAP32[t+56>>2]=n.mtime.getTime()/1e3|0,HEAP32[t+60>>2]=0,HEAP32[t+64>>2]=n.ctime.getTime()/1e3|0,HEAP32[t+68>>2]=0,HEAP32[t+72>>2]=n.ino,0},doMsync:function(e,r,t,n){e=new Uint8Array(HEAPU8.subarray(e,e+t));FS.msync(r,e,0,t,n)},doMkdir:function(e,r){return"/"===(e=PATH.normalize(e))[e.length-1]&&(e=e.substr(0,e.length-1)),FS.mkdir(e,r,0),0},doMknod:function(e,r,t){switch(61440&r){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}return FS.mknod(e,r,t),0},doReadlink:function(e,r,t){if(t<=0)return-ERRNO_CODES.EINVAL;var n=FS.readlink(e),i=Math.min(t,lengthBytesUTF8(n)),e=HEAP8[r+i];return stringToUTF8(n,r,t+1),HEAP8[r+i]=e,i},doAccess:function(e,r){if(-8&r)return-ERRNO_CODES.EINVAL;var t=FS.lookupPath(e,{follow:!0}).node,e="";return 4&r&&(e+="r"),2&r&&(e+="w"),1&r&&(e+="x"),e&&FS.nodePermissions(t,e)?-ERRNO_CODES.EACCES:0},doDup:function(e,r,t){var n=FS.getStream(t);return n&&FS.close(n),FS.open(e,r,0,t,t).fd},doReadv:function(e,r,t,n){for(var i=0,o=0;o>2],u=HEAP32[r+(8*o+4)>>2],a=FS.read(e,HEAP8,a,u,n);if(a<0)return-1;if(i+=a,a>2],u=HEAP32[r+(8*o+4)>>2],u=FS.write(e,HEAP8,a,u,n);if(u<0)return-1;i+=u}return i},varargs:0,get:function(e){return SYSCALLS.varargs+=4,HEAP32[SYSCALLS.varargs-4>>2]},getStr:function(){return Pointer_stringify(SYSCALLS.get())},getStreamFromFD:function(){var e=FS.getStream(SYSCALLS.get());if(!e)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return e},getSocketFromFD:function(){var e=SOCKFS.getSocket(SYSCALLS.get());if(!e)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return e},getSocketAddress:function(e){var r=SYSCALLS.get(),t=SYSCALLS.get();if(e&&0===r)return null;t=__read_sockaddr(r,t);if(t.errno)throw new FS.ErrnoError(t.errno);return t.addr=DNS.lookup_addr(t.addr)||t.addr,t},get64:function(){var e=SYSCALLS.get(),r=SYSCALLS.get();return assert(0<=e?0===r:-1===r),e},getZero:function(){assert(0===SYSCALLS.get())}};function ___syscall5(e,r){SYSCALLS.varargs=r;try{var t=SYSCALLS.getStr(),n=SYSCALLS.get(),i=SYSCALLS.get();return FS.open(t,n,i).fd}catch(e){return void 0!==FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___lock(){}function ___unlock(){}function ___syscall6(e,r){SYSCALLS.varargs=r;try{var t=SYSCALLS.getStreamFromFD();return FS.close(t),0}catch(e){return void 0!==FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}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_STATIC),fs,NODEJS_PATH;function _emscripten_memcpy_big(e,r,t){return HEAPU8.set(HEAPU8.subarray(r,r+t),e),e}function ___syscall140(e,r){SYSCALLS.varargs=r;try{var t=SYSCALLS.getStreamFromFD(),n=SYSCALLS.get(),i=SYSCALLS.get(),o=SYSCALLS.get(),a=SYSCALLS.get(),i=i;return assert(0===n),FS.llseek(t,i,a),HEAP32[o>>2]=t.position,t.getdents&&0===i&&0===a&&(t.getdents=null),0}catch(e){return void 0!==FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___syscall146(e,r){SYSCALLS.varargs=r;try{var t=SYSCALLS.getStreamFromFD(),n=SYSCALLS.get(),i=SYSCALLS.get();return SYSCALLS.doWritev(t,n,i)}catch(e){return void 0!==FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___syscall54(e,r){SYSCALLS.varargs=r;try{var t=SYSCALLS.getStreamFromFD(),n=SYSCALLS.get();switch(n){case 21505:case 21506:return t.tty?0:-ERRNO_CODES.ENOTTY;case 21519:if(!t.tty)return-ERRNO_CODES.ENOTTY;var i=SYSCALLS.get();return HEAP32[i>>2]=0;case 21520:return t.tty?-ERRNO_CODES.EINVAL:-ERRNO_CODES.ENOTTY;case 21531:i=SYSCALLS.get();return FS.ioctl(t,n,i);default:abort("bad ioctl syscall "+n)}}catch(e){return void 0!==FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___syscall221(e,r){SYSCALLS.varargs=r;try{var t=SYSCALLS.getStreamFromFD();switch(SYSCALLS.get()){case 0:return(n=SYSCALLS.get())<0?-ERRNO_CODES.EINVAL:FS.open(t.path,t.flags,0,n).fd;case 1:case 2:return 0;case 3:return t.flags;case 4:var n=SYSCALLS.get();return t.flags|=n,0;case 12:case 12:n=SYSCALLS.get();return HEAP16[n+0>>1]=2,0;case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:return ___setErrNo(ERRNO_CODES.EINVAL),-1;default:return-ERRNO_CODES.EINVAL}}catch(e){return void 0!==FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___syscall145(e,r){SYSCALLS.varargs=r;try{var t=SYSCALLS.getStreamFromFD(),n=SYSCALLS.get(),i=SYSCALLS.get();return SYSCALLS.doReadv(t,n,i)}catch(e){return void 0!==FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function nullFunc_iiii(e){Module.printErr("Invalid function pointer called with signature 'iiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"),Module.printErr("Build with ASSERTIONS=2 for more info."),abort(e)}function nullFunc_vi(e){Module.printErr("Invalid function pointer called with signature 'vi'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"),Module.printErr("Build with ASSERTIONS=2 for more info."),abort(e)}function nullFunc_vii(e){Module.printErr("Invalid function pointer called with signature 'vii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"),Module.printErr("Build with ASSERTIONS=2 for more info."),abort(e)}function nullFunc_ii(e){Module.printErr("Invalid function pointer called with signature 'ii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"),Module.printErr("Build with ASSERTIONS=2 for more info."),abort(e)}function nullFunc_iiiii(e){Module.printErr("Invalid function pointer called with signature 'iiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"),Module.printErr("Build with ASSERTIONS=2 for more info."),abort(e)}function nullFunc_iii(e){Module.printErr("Invalid function pointer called with signature 'iii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"),Module.printErr("Build with ASSERTIONS=2 for more info."),abort(e)}function invoke_iiii(e,r,t,n){try{return Module.dynCall_iiii(e,r,t,n)}catch(e){if("number"!=typeof e&&"longjmp"!==e)throw e;asm.setThrew(1,0)}}function invoke_vi(e,r){try{Module.dynCall_vi(e,r)}catch(e){if("number"!=typeof e&&"longjmp"!==e)throw e;asm.setThrew(1,0)}}function invoke_vii(e,r,t){try{Module.dynCall_vii(e,r,t)}catch(e){if("number"!=typeof e&&"longjmp"!==e)throw e;asm.setThrew(1,0)}}function invoke_ii(e,r){try{return Module.dynCall_ii(e,r)}catch(e){if("number"!=typeof e&&"longjmp"!==e)throw e;asm.setThrew(1,0)}}function invoke_iiiii(e,r,t,n,i){try{return Module.dynCall_iiiii(e,r,t,n,i)}catch(e){if("number"!=typeof e&&"longjmp"!==e)throw e;asm.setThrew(1,0)}}function invoke_iii(e,r,t){try{return Module.dynCall_iii(e,r,t)}catch(e){if("number"!=typeof e&&"longjmp"!==e)throw e;asm.setThrew(1,0)}}Module._llvm_cttz_i32=_llvm_cttz_i32,Module.___udivmoddi4=___udivmoddi4,Module.___udivdi3=___udivdi3,Module._sbrk=_sbrk,Module.___uremdi3=___uremdi3,Module._memcpy=_memcpy,Module._pthread_self=_pthread_self,FS.staticInit(),__ATINIT__.unshift(function(){Module.noFSInit||FS.init.initialized||FS.init()}),__ATMAIN__.push(function(){FS.ignorePermissions=!1}),__ATEXIT__.push(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,Module.FS_unlink=FS.unlink,__ATINIT__.unshift(function(){TTY.init()}),__ATEXIT__.push(function(){TTY.shutdown()}),ENVIRONMENT_IS_NODE&&(fs=require("fs"),NODEJS_PATH=require("path"),NODEFS.staticInit()),DYNAMICTOP_PTR=allocate(1,"i32",ALLOC_STATIC),STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP),STACK_MAX=STACK_BASE+TOTAL_STACK,DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX),HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE,staticSealed=!0,assert(DYNAMIC_BASE>2])+(t<<2)>>2];if(St[a>>2]=0,-1==((St[u>>2]=0)|h))return or[3&St[s+4>>2]](s,0|St[i>>2]),St[n>>2]=-1,St[i>>2]=0,(p=St[o>>2]=0)|p;if(0==(0|St[i>>2])||(0|St[n>>2])!=(0|h)){if(E=0|G(d=(b=0|St[e+12>>2])+(40*h|0)|0),_=Ft,S=0|function(e,r,t){e|=0,r|=0,t|=0;var n=0,i=0,o=0,a=0;(0|(pt=(n=pt)+16|0))>=(0|bt)&&yt(16);return o=n+4|0,St[(i=(a=n)+8|0)>>2]=e,St[o>>2]=r,St[a>>2]=t,t=40+(0|St[i>>2])|0,r=(0|St[52+(0|St[i>>2])>>2])+((0|St[(0|St[48+(0|St[i>>2])>>2])+(St[o>>2]<<2)>>2])+(0|St[a>>2])<<3)|0,a=0|Dt(0|St[t>>2],0|St[t+4>>2],0|St[r>>2],0|St[r+4>>2]),pt=n,0|a}(e,h,0),m=Ft,!((0|E)==(0|E)&0==(0|_)))return 0|(p=2);if(St[n>>2]=h,or[3&St[s+4>>2]](s,0|St[i>>2]),(St[i>>2]=0)|(n=0|he(r,S,m)))return 0|(p=n);if(St[o>>2]=E){if(n=0|sr[3&St[s>>2]](s,E),!(St[i>>2]=n))return 0|(p=2);k=n}else k=0|St[i>>2];if(0|(n=0|Re(d,(0|St[e>>2])+(St[(0|St[e+48>>2])+(h<<2)>>2]<<3)|0,r,S,m,k,E,f,l,c)))return 0|(p=n);if(0|St[b+(40*h|0)+28>>2]&&(0|(n=0|Pe(0|St[i>>2],E)))!=(0|St[b+(40*h|0)+32>>2]))return 0|(p=3)}if(b=0|St[e+16>>2],(n=(St[a>>2]=0)|St[(0|St[e+56>>2])+(h<<2)>>2])>>>0>>0){for(h=n,n=0;n=n+(0|St[b+(h<<5)+8>>2])|0,h=h+1|0,(0|h)!=(0|t););St[a>>2]=n}return n=0|St[b+(t<<5)+8>>2],St[u>>2]=n,((u=0|St[a>>2])+n|0)>>>0>(0|St[o>>2])>>>0?0|(p=11):0|Et[b+(t<<5)+27>>0]?0|(p=(0|(o=0|Pe((0|St[i>>2])+u|0,n)))==(0|St[b+(t<<5)+16>>2])?0:3):(p=0)|p}function j(e,r,t,n){e|=0,r|=0,t|=0,n|=0;var i,o,a,u,s,f,l,c,d,E,_=0,S=0,m=pt;(0|bt)<=(0|(pt=pt+48|0))&&yt(48),i=m+36|0,a=m+28|0,u=m+24|0,s=m+20|0,f=m+16|0,l=m+12|0,c=m+8|0,d=m+4|0,St[(o=(E=m)+32|0)>>2]=e,St[a>>2]=r,St[u>>2]=t,St[s>>2]=n,St[f>>2]=0,St[l>>2]=0;e:for(;;){if((0|St[l>>2])==(0|St[s>>2])){_=3;break}if(n=0|St[l>>2],St[l>>2]=n+1,St[d>>2]=re[(0|St[u>>2])+(n<<1)>>1],(0|St[d>>2])>>>0<128)0|St[o>>2]&&(Et[(0|St[o>>2])+(0|St[f>>2])>>0]=St[d>>2]),St[f>>2]=1+(0|St[f>>2]);else{if(55296<=(0|St[d>>2])>>>0&(0|St[d>>2])>>>0<57344){if(56320<=(0|St[d>>2])>>>0){_=23;break}if((0|St[l>>2])==(0|St[s>>2])){_=23;break}if(n=0|St[l>>2],St[l>>2]=n+1,St[E>>2]=re[(0|St[u>>2])+(n<<1)>>1],(0|St[E>>2])>>>0<56320|57344<=(0|St[E>>2])>>>0){_=23;break}St[d>>2]=65536+((0|St[d>>2])-55296<<10|(0|St[E>>2])-56320)}for(St[c>>2]=1;!(5<=(0|St[c>>2])>>>0||(0|St[d>>2])>>>0<1<<6+(5*(0|St[c>>2])|0)>>>0);)St[c>>2]=1+(0|St[c>>2]);for(0|St[o>>2]&&(Et[(0|St[o>>2])+(0|St[f>>2])>>0]=(0|mt[(0|St[c>>2])-1+341>>0])+((0|St[d>>2])>>>(6*(0|St[c>>2])|0))),St[f>>2]=1+(0|St[f>>2]);;)if(St[c>>2]=(0|St[c>>2])-1,0|St[o>>2]&&(Et[(0|St[o>>2])+(0|St[f>>2])>>0]=128+((0|St[d>>2])>>>(6*(0|St[c>>2])|0)&63)),St[f>>2]=1+(0|St[f>>2]),!(0|St[c>>2]))continue e}}return 3==(0|_)?(St[St[a>>2]>>2]=St[f>>2],Et[i>>0]=1,S=0|Et[i>>0],pt=m,0|1&S):23==(0|_)?(St[St[a>>2]>>2]=St[f>>2],S=(Et[i>>0]=0)|Et[i>>0],pt=m,0|1&S):0}function X(e){e|=0;var r,t=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(r=t)>>2]=e,Ce(16+(0|St[r>>2])|0),pt=t}function P(e){e|=0;var r,t=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(r=t)>>2]=e,St[St[r>>2]>>2]=0,St[4+(0|St[r>>2])>>2]=0,St[8+(0|St[r>>2])>>2]=0,St[12+(0|St[r>>2])>>2]=0,St[16+(0|St[r>>2])>>2]=0,St[20+(0|St[r>>2])>>2]=0,St[24+(0|St[r>>2])>>2]=0,St[28+(0|St[r>>2])>>2]=0,St[32+(0|St[r>>2])>>2]=0,St[36+(0|St[r>>2])>>2]=0,pt=t}function N(e,r){e|=0,r|=0;var t,n,i,o=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),n=o+4|0,St[(t=(i=o)+8|0)>>2]=e,St[n>>2]=r;e:do{if(0|St[St[t>>2]>>2])for(St[i>>2]=0;;){if((0|St[i>>2])>>>0>=(0|St[16+(0|St[t>>2])>>2])>>>0)break e;!function(e,r){e|=0,r|=0;var t,n,i=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(t=(n=i)+4|0)>>2]=e,St[n>>2]=r,Le(16+(0|St[t>>2])|0,0|St[n>>2]),X(0|St[t>>2]),pt=i}((0|St[St[t>>2]>>2])+(24*(0|St[i>>2])|0)|0,0|St[n>>2]),St[i>>2]=1+(0|St[i>>2])}}while(0);or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[St[t>>2]>>2]),or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[4+(0|St[t>>2])>>2]),or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[8+(0|St[t>>2])>>2]),or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[12+(0|St[t>>2])>>2]),P(0|St[t>>2]),pt=o}function C(e){e|=0;var r,t,n,i=pt;for((0|bt)<=(0|(pt=pt+16|0))&&yt(16),t=i+4|0,St[(r=(n=i)+8|0)>>2]=e,St[t>>2]=0,St[n>>2]=0;!((0|St[n>>2])>>>0>=(0|St[16+(0|St[r>>2])>>2])>>>0);)St[t>>2]=(0|St[t>>2])+(0|St[(0|St[St[r>>2]>>2])+(24*(0|St[n>>2])|0)+4>>2]),St[n>>2]=1+(0|St[n>>2]);return pt=i,0|St[t>>2]}function G(e){e|=0;var r,t,n,i,o=0,a=0,u=0,s=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),n=(r=s)+8|0,St[(t=s+12|0)>>2]=e,e=0|C(0|St[t>>2]),St[n>>2]=e;do{if(0|St[n>>2]){for(St[n>>2]=(0|St[n>>2])-1;;){if((0|St[n>>2])<0){o=8;break}if(e=(0|function(e,r){e|=0,r|=0;var t,n,i,o,a=0,u=0,s=0,f=pt;for((0|bt)<=(0|(pt=pt+16|0))&&yt(16),t=f+12|0,i=f+4|0,St[(n=(o=f)+8|0)>>2]=e,St[i>>2]=r,St[o>>2]=0;;){if((0|St[o>>2])>>>0>=(0|St[20+(0|St[n>>2])>>2])>>>0){a=6;break}if(u=0|St[o>>2],(0|St[(0|St[4+(0|St[n>>2])>>2])+(St[o>>2]<<3)+4>>2])==(0|St[i>>2])){a=4;break}St[o>>2]=u+1}return 4==(0|a)?(St[t>>2]=u,s=0|St[t>>2],pt=f,0|s):6==(0|a)?(St[t>>2]=-1,s=0|St[t>>2],pt=f,0|s):0}(0|St[t>>2],0|St[n>>2]))<0,a=0|St[n>>2],e){o=6;break}St[n>>2]=a+-1}if(6==(0|o)){e=(0|St[12+(0|St[t>>2])>>2])+(a<<3)|0,u=0|St[e+4>>2],St[(i=r)>>2]=St[e>>2],St[i+4>>2]=u;break}if(8==(0|o)){St[(u=r)>>2]=0,St[u+4>>2]=0;break}}else St[(u=r)>>2]=0,St[u+4>>2]=0}while(0);return Ft=0|St[(o=r)+4>>2],pt=s,0|St[o>>2]}function q(e){e|=0;var r,t=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(r=t)>>2]=e,St[St[r>>2]>>2]=0,St[4+(0|St[r>>2])>>2]=0,St[8+(0|St[r>>2])>>2]=0,St[12+(0|St[r>>2])>>2]=0,St[16+(0|St[r>>2])>>2]=0,St[20+(0|St[r>>2])>>2]=0,St[24+(0|St[r>>2])>>2]=0,St[28+(0|St[r>>2])>>2]=0,pt=t}function Z(e,r){e|=0,r|=0;var t,n,i,o=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),n=o+4|0,St[(t=(i=o)+8|0)>>2]=e,St[n>>2]=r;e:do{if(0|St[12+(0|St[t>>2])>>2])for(St[i>>2]=0;;){if((0|St[i>>2])>>>0>=(0|St[24+(0|St[t>>2])>>2])>>>0)break e;N((0|St[12+(0|St[t>>2])>>2])+(40*(0|St[i>>2])|0)|0,0|St[n>>2]),St[i>>2]=1+(0|St[i>>2])}}while(0);or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[St[t>>2]>>2]),or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[4+(0|St[t>>2])>>2]),or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[8+(0|St[t>>2])>>2]),or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[12+(0|St[t>>2])>>2]),or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[16+(0|St[t>>2])>>2]),q(0|St[t>>2]),pt=o}function J(e){e|=0;var r,t=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(r=t)>>2]=e,q(0|St[r>>2]),St[48+(0|St[r>>2])>>2]=0,St[52+(0|St[r>>2])>>2]=0,St[56+(0|St[r>>2])>>2]=0,St[60+(0|St[r>>2])>>2]=0,Ce(68+((St[64+(0|St[r>>2])>>2]=0)|St[r>>2])|0),pt=t}function $(e,r){e|=0,r|=0;var t,n,i=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(t=(n=i)+4|0)>>2]=e,St[n>>2]=r,or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[48+(0|St[t>>2])>>2]),or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[52+(0|St[t>>2])>>2]),or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[56+(0|St[t>>2])>>2]),or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[60+(0|St[t>>2])>>2]),or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[64+(0|St[t>>2])>>2]),Le(68+(0|St[t>>2])|0,0|St[n>>2]),Z(0|St[t>>2],0|St[n>>2]),J(0|St[t>>2]),pt=i}function ee(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u,s,f=0,l=pt;if((0|bt)<=(0|(pt=pt+32|0))&&yt(32),i=l+16|0,o=l+12|0,a=l+8|0,u=l+4|0,St[(n=(s=l)+20|0)>>2]=e,St[i>>2]=r,St[o>>2]=t,St[a>>2]=(0|St[(0|St[64+(0|St[n>>2])>>2])+(1+(0|St[i>>2])<<2)>>2])-(0|St[(0|St[64+(0|St[n>>2])>>2])+(St[i>>2]<<2)>>2]),!(0|St[o>>2]))return f=0|St[a>>2],pt=l,0|f;for(St[s>>2]=(0|St[68+(0|St[n>>2])>>2])+(St[(0|St[64+(0|St[n>>2])>>2])+(St[i>>2]<<2)>>2]<<1),St[u>>2]=0;!((0|St[u>>2])>>>0>=(0|St[a>>2])>>>0);)_t[(0|St[o>>2])+(St[u>>2]<<1)>>1]=0|mt[(0|St[s>>2])+(St[u>>2]<<1)>>0]|(65535&(0|mt[(0|St[s>>2])+(St[u>>2]<<1)+1>>0]))<<8,St[u>>2]=1+(0|St[u>>2]);return f=0|St[a>>2],pt=l,0|f}function ue(e,r){e|=0,r|=0;var t,n,i=pt;return(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(t=(n=i)+4|0)>>2]=e,St[n>>2]=r,r=0|le(0|St[t>>2],0|St[n>>2]),pt=i,0|r}function se(e,r,t,n,i,o,a,u,s){e|=0,r|=0,t|=0,n|=0,i|=0,o|=0,a|=0,u|=0,s|=0;var f,l,c,d,E,_,S,m,h,p,b,k,F,w,y,v=0,M=0,O=pt;(0|bt)<=(0|(pt=pt+64|0))&&yt(64),f=O+60|0,c=O+52|0,d=O+48|0,E=O+44|0,_=O+40|0,S=O+36|0,m=O+32|0,h=O+28|0,p=O+24|0,k=(b=O)+20|0,F=O+16|0,w=O+12|0,y=O+8|0,St[(l=O+56|0)>>2]=e,St[c>>2]=r,St[d>>2]=t,St[E>>2]=n,St[_>>2]=i,St[S>>2]=o,St[m>>2]=a,St[h>>2]=u,St[p>>2]=s;e:for(;;){if(s=0|ue(0|St[l>>2],b),St[k>>2]=s,0|St[k>>2]){v=3;break}if((0|(s=0|St[b>>2]))!=(0|St[(u=b)>>2])||(((0|s)<0)<<31>>31|0)!=(0|St[u+4>>2])){v=5;break}switch(0|St[b>>2]){case 0:v=7;break e;case 6:if(u=0|function(e,r,t,n,i,o,a){e|=0,r|=0,t|=0,n|=0,i|=0,o|=0,a|=0;var u=0,s=0,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0;(0|(pt=(u=pt)+80|0))>=(0|bt)&&yt(80);if(s=u+68|0,l=u+60|0,c=u+56|0,d=u+52|0,E=u+48|0,_=u+44|0,S=u+40|0,m=u+36|0,h=u+32|0,p=u+28|0,b=u+24|0,k=u+20|0,w=(F=u)+16|0,y=u+12|0,v=u+8|0,St[(f=u+64|0)>>2]=e,St[l>>2]=r,St[c>>2]=t,St[d>>2]=n,St[E>>2]=i,St[_>>2]=o,St[S>>2]=a,a=0|le(0|St[f>>2],0|St[l>>2]),St[h>>2]=a,0|St[h>>2])return St[s>>2]=St[h>>2],M=0|St[s>>2],pt=u,0|M;if(h=0|fe(0|St[f>>2],0|St[c>>2]),St[p>>2]=h,0|St[p>>2])return St[s>>2]=St[p>>2],M=0|St[s>>2],pt=u,0|M;if(p=0|I(0|St[f>>2],9,0),St[b>>2]=p,0|St[b>>2])return St[s>>2]=St[b>>2],M=0|St[s>>2],pt=u,0|M;if(0|St[St[c>>2]>>2]){if(b=0|sr[3&St[St[S>>2]>>2]](0|St[S>>2],St[St[c>>2]>>2]<<3),!(St[St[d>>2]>>2]=b))return St[s>>2]=2,M=0|St[s>>2],pt=u,0|M}else St[St[d>>2]>>2]=0;St[m>>2]=0;for(;!((0|St[m>>2])>>>0>=(0|St[St[c>>2]>>2])>>>0);){if(b=0|le(0|St[f>>2],(0|St[St[d>>2]>>2])+(St[m>>2]<<3)|0),St[k>>2]=b,0|St[k>>2]){O=14;break}St[m>>2]=1+(0|St[m>>2])}if(14==(0|O))return St[s>>2]=St[k>>2],M=0|St[s>>2],pt=u,0|M;for(;;){if(k=0|ue(0|St[f>>2],F),St[w>>2]=k,0|St[w>>2]){O=17;break}if(0==(0|St[(k=F)>>2])&0==(0|St[k+4>>2])){O=24;break}if(k=F,d=0|St[f>>2],10==(0|St[k>>2])&0==(0|St[k+4>>2])){if(k=0|ne(d,0|St[St[c>>2]>>2],0|St[E>>2],0|St[_>>2],0|St[S>>2]),St[y>>2]=k,0|St[y>>2]){O=21;break}}else if(k=0|me(d),St[v>>2]=k,0|St[v>>2]){O=23;break}}{if(17==(0|O))return St[s>>2]=St[w>>2],M=0|St[s>>2],pt=u,0|M;if(21==(0|O))return St[s>>2]=St[y>>2],M=0|St[s>>2],pt=u,0|M;if(23==(0|O))return St[s>>2]=St[v>>2],M=0|St[s>>2],pt=u,0|M;if(24==(0|O)){r:do{if(!(0|St[St[E>>2]>>2])){if(0|St[St[c>>2]>>2]){if(O=0|sr[3&St[St[S>>2]>>2]](0|St[S>>2],0|St[St[c>>2]>>2]),!(St[St[E>>2]>>2]=O))return St[s>>2]=2,M=0|St[s>>2],pt=u,0|M}else St[St[E>>2]>>2]=0;if(0|St[St[c>>2]>>2]){if(O=0|sr[3&St[St[S>>2]>>2]](0|St[S>>2],St[St[c>>2]>>2]<<2),!(St[St[_>>2]>>2]=O))return St[s>>2]=2,M=0|St[s>>2],pt=u,0|M}else St[St[_>>2]>>2]=0;for(St[m>>2]=0;;){if((0|St[m>>2])>>>0>=(0|St[St[c>>2]>>2])>>>0)break r;Et[(0|St[St[E>>2]>>2])+(0|St[m>>2])>>0]=0,St[(0|St[St[_>>2]>>2])+(St[m>>2]<<2)>>2]=0,St[m>>2]=1+(0|St[m>>2])}}}while(0);return St[s>>2]=0,M=0|St[s>>2],pt=u,0|M}}return 0}(0|St[l>>2],0|St[c>>2],20+(0|St[d>>2])|0,0|St[d>>2],4+(0|St[d>>2])|0,8+(0|St[d>>2])|0,0|St[h>>2]),St[F>>2]=u,0|St[F>>2]){v=9;break e}continue e;case 7:if(u=0|function(e,r,t,n,i){e|=0,r|=0,t|=0,n|=0,i|=0;var o=0,a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0,R=0,g=0,T=0,N=0,D=0;(0|(pt=(o=pt)+112|0))>=(0|bt)&&yt(112);if(a=o+96|0,s=o+88|0,f=o+84|0,l=o+80|0,c=o+76|0,d=o+72|0,E=o+68|0,_=o+64|0,S=o+60|0,m=o+56|0,h=o+52|0,p=o+48|0,b=o+44|0,k=o+40|0,F=o+36|0,y=(w=o)+32|0,v=o+28|0,M=o+24|0,O=o+20|0,A=o+16|0,R=o+12|0,g=o+8|0,St[(u=o+92|0)>>2]=e,St[s>>2]=r,St[f>>2]=t,St[l>>2]=n,St[c>>2]=i,i=0|I(0|St[u>>2],11,0),St[E>>2]=i,0|St[E>>2])return St[a>>2]=St[E>>2],T=0|St[a>>2],pt=o,0|T;if(E=0|fe(0|St[u>>2],0|St[s>>2]),St[_>>2]=E,0|St[_>>2])return St[a>>2]=St[_>>2],T=0|St[a>>2],pt=o,0|T;if(_=0|de(0|St[u>>2]),St[S>>2]=_,0|St[S>>2])return St[a>>2]=St[S>>2],T=0|St[a>>2],pt=o,0|T;if(0|St[St[s>>2]>>2]){if(S=0|sr[3&St[St[l>>2]>>2]](0|St[l>>2],40*(0|St[St[s>>2]>>2])|0),!(St[St[f>>2]>>2]=S))return St[a>>2]=2,T=0|St[a>>2],pt=o,0|T}else St[St[f>>2]>>2]=0;St[d>>2]=0;for(;!((0|St[d>>2])>>>0>=(0|St[St[s>>2]>>2])>>>0);)P((0|St[St[f>>2]>>2])+(40*(0|St[d>>2])|0)|0),St[d>>2]=1+(0|St[d>>2]);St[d>>2]=0;for(;N=0|St[u>>2],!((0|St[d>>2])>>>0>=(0|St[St[s>>2]>>2])>>>0);){if(S=0|function(e,r,t){e|=0,r|=0,t|=0;var n=0,i=0,o=0,a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0,R=0,g=0,T=0,N=0,D=0,P=0,C=0,I=0,L=0,x=0,B=0,H=0,U=0,z=0;(0|(pt=(n=pt)+160|0))>=(0|bt)&&yt(160);if(i=n+136|0,a=n+128|0,u=n+124|0,s=n+120|0,f=n+116|0,l=n+112|0,c=n+108|0,d=n+104|0,E=n+100|0,_=n+96|0,S=n+155|0,m=n+92|0,h=n+88|0,p=n+84|0,b=n+140|0,k=n+80|0,F=n+76|0,w=n+72|0,y=n+68|0,v=n+8|0,M=n+64|0,O=n+60|0,A=n+56|0,R=n+52|0,g=n+48|0,T=n+44|0,N=n+40|0,P=(D=n)+36|0,C=n+32|0,I=n+28|0,L=n+24|0,x=n+20|0,B=n+16|0,St[(o=n+132|0)>>2]=e,St[a>>2]=r,St[u>>2]=t,St[d>>2]=0,St[E>>2]=0,t=0|fe(0|St[o>>2],s),St[_>>2]=t,0|St[_>>2])return St[i>>2]=St[_>>2],H=0|St[i>>2],pt=n,0|H;if(32<(0|St[s>>2])>>>0)return St[i>>2]=4,H=0|St[i>>2],pt=n,0|H;if(St[16+(0|St[a>>2])>>2]=St[s>>2],0|St[s>>2]){if(_=0|sr[3&St[St[u>>2]>>2]](0|St[u>>2],24*(0|St[s>>2])|0),!(St[St[a>>2]>>2]=_))return St[i>>2]=2,H=0|St[i>>2],pt=n,0|H}else St[St[a>>2]>>2]=0;St[c>>2]=0;for(;!((0|St[c>>2])>>>0>=(0|St[s>>2])>>>0);)X((0|St[St[a>>2]>>2])+(24*(0|St[c>>2])|0)|0),St[c>>2]=1+(0|St[c>>2]);St[c>>2]=0;r:for(;;){if((0|St[c>>2])>>>0>=(0|St[s>>2])>>>0){U=55;break}if(St[m>>2]=(0|St[St[a>>2]>>2])+(24*(0|St[c>>2])|0),_=0|te(0|St[o>>2],S),St[k>>2]=_,0|St[k>>2]){U=15;break}if(St[h>>2]=15&(0|mt[S>>0]),_=0|ie(0|St[o>>2],b,0|St[h>>2]),St[F>>2]=_,0|St[F>>2]){U=17;break}if(8<(0|St[h>>2])>>>0){U=19;break}for(_=8+(0|St[m>>2])|0,St[_>>2]=0,St[_+4>>2]=0,St[p>>2]=0;!((0|St[p>>2])>>>0>=(0|St[h>>2])>>>0);)_=0|It(0|mt[b+((0|St[h>>2])-1-(0|St[p>>2]))>>0],0,St[p>>2]<<3|0),t=8+(0|St[m>>2])|0,e=St[(r=t)+4>>2]|Ft,St[(z=t)>>2]=St[r>>2]|_,St[z+4>>2]=e,St[p>>2]=1+(0|St[p>>2]);if(16&(0|mt[S>>0])|0){if(e=0|fe(0|St[o>>2],0|St[m>>2]),St[w>>2]=e,0|St[w>>2]){U=25;break}if(e=0|fe(0|St[o>>2],4+(0|St[m>>2])|0),St[y>>2]=e,0|St[y>>2]){U=27;break}if(32<(0|St[St[m>>2]>>2])>>>0){U=30;break}if(32<(0|St[4+(0|St[m>>2])>>2])>>>0){U=30;break}}else St[St[m>>2]>>2]=1,St[4+(0|St[m>>2])>>2]=1;if(32&(0|mt[S>>0])|0){if(St[(e=v)>>2]=0,St[e+4>>2]=0,e=0|le(0|St[o>>2],v),St[M>>2]=e,0|St[M>>2]){U=34;break}if(!(0|Ie(16+(0|St[m>>2])|0,0|St[v>>2],0|St[u>>2]))){U=36;break}if(e=0|ie(0|St[o>>2],0|St[16+(0|St[m>>2])>>2],0|St[v>>2]),St[O>>2]=e,0|St[O>>2]){U=38;break}}for(;128&(0|mt[S>>0]);){if(e=0|te(0|St[o>>2],S),St[A>>2]=e,0|St[A>>2]){U=41;break r}if(e=15&(0|mt[S>>0]),z=0|ce(0|St[o>>2],e,((0|e)<0)<<31>>31),St[R>>2]=z,0|St[R>>2]){U=43;break r}if(16&(0|mt[S>>0])|0){if(z=0|fe(0|St[o>>2],g),St[T>>2]=z,0|St[T>>2]){U=46;break r}if(z=0|fe(0|St[o>>2],g),St[N>>2]=z,0|St[N>>2]){U=48;break r}}if(32&(0|mt[S>>0])){if(St[(z=D)>>2]=0,St[z+4>>2]=0,z=0|le(0|St[o>>2],D),St[P>>2]=z,0|St[P>>2]){U=51;break r}if(z=D,e=0|ce(0|St[o>>2],0|St[z>>2],0|St[z+4>>2]),St[C>>2]=e,0|St[C>>2]){U=53;break r}}}St[d>>2]=(0|St[d>>2])+(0|St[St[m>>2]>>2]),St[E>>2]=(0|St[E>>2])+(0|St[4+(0|St[m>>2])>>2]),St[c>>2]=1+(0|St[c>>2])}switch(0|U){case 15:return St[i>>2]=St[k>>2],H=0|St[i>>2],pt=n,0|H;case 17:return St[i>>2]=St[F>>2],H=0|St[i>>2],pt=n,0|H;case 19:return St[i>>2]=4,H=0|St[i>>2],pt=n,0|H;case 25:return St[i>>2]=St[w>>2],H=0|St[i>>2],pt=n,0|H;case 27:return St[i>>2]=St[y>>2],H=0|St[i>>2],pt=n,0|H;case 30:return St[i>>2]=4,H=0|St[i>>2],pt=n,0|H;case 34:return St[i>>2]=St[M>>2],H=0|St[i>>2],pt=n,0|H;case 36:return St[i>>2]=2,H=0|St[i>>2],pt=n,0|H;case 38:return St[i>>2]=St[O>>2],H=0|St[i>>2],pt=n,0|H;case 41:return St[i>>2]=St[A>>2],H=0|St[i>>2],pt=n,0|H;case 43:return St[i>>2]=St[R>>2],H=0|St[i>>2],pt=n,0|H;case 46:return St[i>>2]=St[T>>2],H=0|St[i>>2],pt=n,0|H;case 48:return St[i>>2]=St[N>>2],H=0|St[i>>2],pt=n,0|H;case 51:return St[i>>2]=St[P>>2],H=0|St[i>>2],pt=n,0|H;case 53:return St[i>>2]=St[C>>2],H=0|St[i>>2],pt=n,0|H;case 55:if(!(0|St[E>>2]))return St[i>>2]=4,H=0|St[i>>2],pt=n,0|H;if(C=(0|St[E>>2])-1|0,St[f>>2]=C,St[20+(0|St[a>>2])>>2]=C,0|St[f>>2]){if(C=0|sr[3&St[St[u>>2]>>2]](0|St[u>>2],St[f>>2]<<3),!(St[4+(0|St[a>>2])>>2]=C))return St[i>>2]=2,H=0|St[i>>2],pt=n,0|H}else St[4+(0|St[a>>2])>>2]=0;for(St[c>>2]=0;;){if((0|St[c>>2])>>>0>=(0|St[f>>2])>>>0){U=68;break}if(St[I>>2]=(0|St[4+(0|St[a>>2])>>2])+(St[c>>2]<<3),C=0|fe(0|St[o>>2],0|St[I>>2]),St[L>>2]=C,0|St[L>>2]){U=64;break}if(C=0|fe(0|St[o>>2],4+(0|St[I>>2])|0),St[x>>2]=C,0|St[x>>2]){U=66;break}St[c>>2]=1+(0|St[c>>2])}if(64==(0|U))return St[i>>2]=St[L>>2],H=0|St[i>>2],pt=n,0|H;if(66==(0|U))return St[i>>2]=St[x>>2],H=0|St[i>>2],pt=n,0|H;if(68!=(0|U))break;if((0|St[d>>2])>>>0<(0|St[f>>2])>>>0)return St[i>>2]=4,H=0|St[i>>2],pt=n,0|H;if(U=(0|St[d>>2])-(0|St[f>>2])|0,St[l>>2]=U,St[24+(0|St[a>>2])>>2]=U,0|St[l>>2]){if(U=0|sr[3&St[St[u>>2]>>2]](0|St[u>>2],St[l>>2]<<2),!(St[8+(0|St[a>>2])>>2]=U))return St[i>>2]=2,H=0|St[i>>2],pt=n,0|H}else St[8+(0|St[a>>2])>>2]=0;U=1==(0|St[l>>2]),St[c>>2]=0;r:do{if(U){for(;!((0|St[c>>2])>>>0>=(0|St[d>>2])>>>0||(0|function(e,r){e|=0,r|=0;var t,n,i,o,a=0,u=0,s=0,f=pt;for((0|bt)<=(0|(pt=pt+16|0))&&yt(16),t=f+12|0,i=f+4|0,St[(n=(o=f)+8|0)>>2]=e,St[i>>2]=r,St[o>>2]=0;;){if((0|St[o>>2])>>>0>=(0|St[20+(0|St[n>>2])>>2])>>>0){a=6;break}if(u=0|St[o>>2],(0|St[(0|St[4+(0|St[n>>2])>>2])+(St[o>>2]<<3)>>2])==(0|St[i>>2])){a=4;break}St[o>>2]=u+1}return 4==(0|a)?(St[t>>2]=u,s=0|St[t>>2],pt=f,0|s):6==(0|a)?(St[t>>2]=-1,s=0|St[t>>2],pt=f,0|s):0}(0|St[a>>2],0|St[c>>2]))<0);)St[c>>2]=1+(0|St[c>>2]);if((0|St[c>>2])==(0|St[d>>2]))return St[i>>2]=4,H=0|St[i>>2],pt=n,0|H;St[St[8+(0|St[a>>2])>>2]>>2]=St[c>>2];break}for(;;){if((0|St[c>>2])>>>0>=(0|St[l>>2])>>>0)break r;if(u=0|fe(0|St[o>>2],(0|St[8+(0|St[a>>2])>>2])+(St[c>>2]<<2)|0),St[B>>2]=u,0|St[B>>2])break;St[c>>2]=1+(0|St[c>>2])}return St[i>>2]=St[B>>2],H=0|St[i>>2],pt=n,0|H}while(0);return St[i>>2]=0,H=0|St[i>>2],pt=n,0|H}return 0}(N,(0|St[St[f>>2]>>2])+(40*(0|St[d>>2])|0)|0,0|St[l>>2]),St[m>>2]=S,0|St[m>>2]){D=17;break}St[d>>2]=1+(0|St[d>>2])}if(17==(0|D))return St[a>>2]=St[m>>2],T=0|St[a>>2],pt=o,0|T;if(m=0|I(N,12,0),St[h>>2]=m,0|St[h>>2])return St[a>>2]=St[h>>2],T=0|St[a>>2],pt=o,0|T;St[d>>2]=0;r:for(;;){if((0|St[d>>2])>>>0>=(0|St[St[s>>2]>>2])>>>0){D=33;break}if(St[b>>2]=(0|St[St[f>>2]>>2])+(40*(0|St[d>>2])|0),h=0|C(0|St[b>>2]),St[k>>2]=h,0|St[k>>2]){if(h=0|sr[3&St[St[l>>2]>>2]](0|St[l>>2],St[k>>2]<<3),!(St[12+(0|St[b>>2])>>2]=h)){D=26;break}}else St[12+(0|St[b>>2])>>2]=0;for(St[p>>2]=0;!((0|St[p>>2])>>>0>=(0|St[k>>2])>>>0);){if(h=0|le(0|St[u>>2],(0|St[12+(0|St[b>>2])>>2])+(St[p>>2]<<3)|0),St[F>>2]=h,0|St[F>>2]){D=30;break r}St[p>>2]=1+(0|St[p>>2])}St[d>>2]=1+(0|St[d>>2])}{if(26==(0|D))return St[a>>2]=2,T=0|St[a>>2],pt=o,0|T;if(30==(0|D))return St[a>>2]=St[F>>2],T=0|St[a>>2],pt=o,0|T;if(33==(0|D)){for(;;){if(F=(D=0)|ue(0|St[u>>2],w),St[y>>2]=F,0|St[y>>2]){D=34;break}if(0==(0|St[(F=w)>>2])&0==(0|St[F+4>>2])){D=36;break}if(10==(0|St[(F=w)>>2])&0==(0|St[F+4>>2])){St[M>>2]=0,St[O>>2]=0,F=0|ne(0|St[u>>2],0|St[St[s>>2]>>2],M,O,0|St[c>>2]),St[v>>2]=F;r:do{if(!(0|St[v>>2]))for(St[d>>2]=0;;){if((0|St[d>>2])>>>0>=(0|St[St[s>>2]>>2])>>>0)break r;St[A>>2]=(0|St[St[f>>2]>>2])+(40*(0|St[d>>2])|0),St[28+(0|St[A>>2])>>2]=mt[(0|St[M>>2])+(0|St[d>>2])>>0],St[32+(0|St[A>>2])>>2]=St[(0|St[O>>2])+(St[d>>2]<<2)>>2],St[d>>2]=1+(0|St[d>>2])}}while(0);if(or[3&St[4+(0|St[c>>2])>>2]](0|St[c>>2],0|St[O>>2]),or[3&St[4+(0|St[c>>2])>>2]](0|St[c>>2],0|St[M>>2]),St[R>>2]=St[v>>2],0|St[R>>2]){D=43;break}D=33}else{if(F=0|me(0|St[u>>2]),St[g>>2]=F,0|St[g>>2]){D=45;break}D=33}}if(34==(0|D))return St[a>>2]=St[y>>2],T=0|St[a>>2],pt=o,0|T;if(36==(0|D))return St[a>>2]=0,T=0|St[a>>2],pt=o,0|T;if(43==(0|D))return St[a>>2]=St[R>>2],T=0|St[a>>2],pt=o,0|T;if(45==(0|D))return St[a>>2]=St[g>>2],T=0|St[a>>2],pt=o,0|T}}return 0}(0|St[l>>2],24+(0|St[d>>2])|0,12+(0|St[d>>2])|0,0|St[h>>2],0|St[p>>2]),St[w>>2]=u,0|St[w>>2]){v=11;break e}continue e;case 8:if(u=0|function(e,r,t,n,i,o,a,u){e|=0,r|=0,t|=0,n|=0,i|=0,o|=0,a|=0,u|=0;var s=0,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0,R=0,g=0,T=0,N=0,D=0,P=0,C=0,I=0,L=0,x=0,B=0,H=0,U=0,z=0,Y=0,V=0,K=0;(0|(pt=(s=pt)+160|0))>=(0|bt)&&yt(160);f=s+144|0,c=s+136|0,d=s+132|0,E=s+128|0,_=s+124|0,S=s+120|0,m=s+116|0,h=s+112|0,p=s+16|0,b=s+108|0,k=s+104|0,F=s+100|0,w=s+96|0,y=s+92|0,v=s+88|0,M=s+84|0,O=s+8|0,A=s+80|0,R=s+76|0,T=(g=s)+72|0,N=s+68|0,D=s+64|0,P=s+60|0,C=s+56|0,I=s+52|0,L=s+48|0,x=s+44|0,B=s+40|0,H=s+36|0,U=s+32|0,z=s+28|0,Y=s+24|0,St[(l=s+140|0)>>2]=e,St[c>>2]=r,St[d>>2]=t,St[E>>2]=n,St[_>>2]=i,St[S>>2]=o,St[m>>2]=a,St[h>>2]=u,St[(u=p)>>2]=0,St[u+4>>2]=0,St[k>>2]=0,St[F>>2]=0,St[b>>2]=0;for(;!((0|St[b>>2])>>>0>=(0|St[c>>2])>>>0);)St[(0|St[d>>2])+(40*(0|St[b>>2])|0)+36>>2]=1,St[b>>2]=1+(0|St[b>>2]);St[St[E>>2]>>2]=St[c>>2];r:for(;;){if(u=0|ue(0|St[l>>2],p),St[w>>2]=u,0|St[w>>2]){V=6;break}if(13==(0|St[(u=p)>>2])&0==(0|St[u+4>>2]))for(St[St[E>>2]>>2]=0,St[b>>2]=0;;){if((0|St[b>>2])>>>0>=(0|St[c>>2])>>>0)continue r;if(o=0|fe(0|St[l>>2],y),St[v>>2]=o,0|St[v>>2]){V=11;break r}St[(0|St[d>>2])+(40*(0|St[b>>2])|0)+36>>2]=St[y>>2],o=0|St[E>>2],St[o>>2]=(0|St[o>>2])+(0|St[y>>2]),St[b>>2]=1+(0|St[b>>2])}else{if(o=a=u=p,10==(0|St[u>>2])&0==(0|St[u+4>>2])|9==(0|St[a>>2])&0==(0|St[a+4>>2])|0==(0|St[o>>2])&0==(0|St[o+4>>2])){V=16;break}if(o=0|me(0|St[l>>2]),St[M>>2]=o,0|St[M>>2]){V=15;break}}}{if(6==(0|V))return St[f>>2]=St[w>>2],K=0|St[f>>2],pt=s,0|K;if(11==(0|V))return St[f>>2]=St[v>>2],K=0|St[f>>2],pt=s,0|K;if(15==(0|V))return St[f>>2]=St[M>>2],K=0|St[f>>2],pt=s,0|K;if(16==(0|V)){if(0|St[St[E>>2]>>2]){if(M=0|sr[3&St[St[h>>2]>>2]](0|St[h>>2],St[St[E>>2]>>2]<<3),St[St[_>>2]>>2]=M,!(0|St[St[_>>2]>>2]))return St[f>>2]=2,K=0|St[f>>2],pt=s,0|K;if(M=0|sr[3&St[St[h>>2]>>2]](0|St[h>>2],0|St[St[E>>2]>>2]),St[St[S>>2]>>2]=M,!(0|St[St[S>>2]>>2]))return St[f>>2]=2,K=0|St[f>>2],pt=s,0|K;if(M=0|sr[3&St[St[h>>2]>>2]](0|St[h>>2],St[St[E>>2]>>2]<<2),St[St[m>>2]>>2]=M,!(0|St[St[m>>2]>>2]))return St[f>>2]=2,K=0|St[f>>2],pt=s,0|K}else St[St[_>>2]>>2]=0,St[St[S>>2]>>2]=0,St[St[m>>2]>>2]=0;St[b>>2]=0;r:for(;!((0|St[b>>2])>>>0>=(0|St[c>>2])>>>0);){if(St[(M=O)>>2]=0,St[M+4>>2]=0,St[R>>2]=St[(0|St[d>>2])+(40*(0|St[b>>2])|0)+36>>2],0|St[R>>2]){M=p;t:do{if(9==(0|St[M>>2])&0==(0|St[M+4>>2]))for(St[A>>2]=1;;){if((0|St[A>>2])>>>0>=(0|St[R>>2])>>>0)break t;if(v=0|le(0|St[l>>2],g),St[T>>2]=v,0|St[T>>2]){V=31;break r}w=0|St[(v=g)>>2],y=0|St[v+4>>2],v=0|St[k>>2],St[k>>2]=v+1,o=(0|St[St[_>>2]>>2])+(v<<3)|0,St[o>>2]=w,St[o+4>>2]=y,y=g,w=0|Dt(0|St[(o=O)>>2],0|St[o+4>>2],0|St[y>>2],0|St[y+4>>2]),St[(y=O)>>2]=w,St[y+4>>2]=Ft,St[A>>2]=1+(0|St[A>>2])}}while(0);M=0|G((0|St[d>>2])+(40*(0|St[b>>2])|0)|0),w=0|Nt(0|M,0|Ft,0|St[(y=O)>>2],0|St[y+4>>2]),y=0|St[k>>2],St[k>>2]=y+1,M=(0|St[St[_>>2]>>2])+(y<<3)|0,St[M>>2]=w,St[M+4>>2]=Ft}St[b>>2]=1+(0|St[b>>2])}if(31==(0|V))return St[f>>2]=St[T>>2],K=0|St[f>>2],pt=s,0|K;if(9==(0|St[(T=p)>>2])&0==(0|St[T+4>>2])&&(T=0|ue(0|St[l>>2],p),St[N>>2]=T,0|St[N>>2]))return St[f>>2]=St[N>>2],K=0|St[f>>2],pt=s,0|K;for(St[b>>2]=0;!((0|St[b>>2])>>>0>=(0|St[St[E>>2]>>2])>>>0);)Et[(0|St[St[S>>2]>>2])+(0|St[b>>2])>>0]=0,St[(0|St[St[m>>2]>>2])+(St[b>>2]<<2)>>2]=0,St[b>>2]=1+(0|St[b>>2]);for(St[b>>2]=0;!((0|St[b>>2])>>>0>=(0|St[c>>2])>>>0);)St[D>>2]=St[(0|St[d>>2])+(40*(0|St[b>>2])|0)+36>>2],1==(0|St[D>>2])&&0!=(0|St[(0|St[d>>2])+(40*(0|St[b>>2])|0)+28>>2])||(St[F>>2]=(0|St[F>>2])+(0|St[D>>2])),St[b>>2]=1+(0|St[b>>2]);for(St[k>>2]=0;;){if(10==(0|St[(D=p)>>2])&0==(0|St[D+4>>2])){St[P>>2]=0,St[C>>2]=0,St[I>>2]=0,D=0|ne(0|St[l>>2],0|St[F>>2],C,I,0|St[h>>2]),St[L>>2]=D;r:do{if(!(0|St[L>>2]))for(St[b>>2]=0;;){if((0|St[b>>2])>>>0>=(0|St[c>>2])>>>0)break r;St[x>>2]=(0|St[d>>2])+(40*(0|St[b>>2])|0),St[B>>2]=St[36+(0|St[x>>2])>>2],1==(0|St[B>>2])&&0|St[28+(0|St[x>>2])>>2]?(Et[(0|St[St[S>>2]>>2])+(0|St[k>>2])>>0]=1,St[(0|St[St[m>>2]>>2])+(St[k>>2]<<2)>>2]=St[32+(0|St[x>>2])>>2],St[k>>2]=1+(0|St[k>>2])):V=55;t:do{if(55==(0|V))for(V=0,St[H>>2]=0;;){if((0|St[H>>2])>>>0>=(0|St[B>>2])>>>0)break t;Et[(0|St[St[S>>2]>>2])+(0|St[k>>2])>>0]=0|Et[(0|St[C>>2])+(0|St[P>>2])>>0],St[(0|St[St[m>>2]>>2])+(St[k>>2]<<2)>>2]=St[(0|St[I>>2])+(St[P>>2]<<2)>>2],St[k>>2]=1+(0|St[k>>2]),St[H>>2]=1+(0|St[H>>2]),St[P>>2]=1+(0|St[P>>2])}}while(0);St[b>>2]=1+(0|St[b>>2])}}while(0);if(or[3&St[4+(0|St[h>>2])>>2]](0|St[h>>2],0|St[C>>2]),or[3&St[4+(0|St[h>>2])>>2]](0|St[h>>2],0|St[I>>2]),St[U>>2]=St[L>>2],0|St[U>>2]){V=60;break}}else{if(0==(0|St[(D=p)>>2])&0==(0|St[D+4>>2])){V=62;break}if(D=0|me(0|St[l>>2]),St[z>>2]=D,0|St[z>>2]){V=64;break}}if(D=0|ue(0|St[l>>2],p),St[Y>>2]=D,0|St[Y>>2]){V=66;break}}if(60==(0|V))return St[f>>2]=St[U>>2],K=0|St[f>>2],pt=s,0|K;if(62==(0|V))return St[f>>2]=0,K=0|St[f>>2],pt=s,0|K;if(64==(0|V))return St[f>>2]=St[z>>2],K=0|St[f>>2],pt=s,0|K;if(66==(0|V))return St[f>>2]=St[Y>>2],K=0|St[f>>2],pt=s,0|K}}return 0}(0|St[l>>2],0|St[24+(0|St[d>>2])>>2],0|St[12+(0|St[d>>2])>>2],0|St[E>>2],0|St[_>>2],0|St[S>>2],0|St[m>>2],0|St[p>>2]),St[y>>2]=u,0|St[y>>2]){v=13;break e}continue e;default:v=14;break e}}return 3==(0|v)?(St[f>>2]=St[k>>2],M=0|St[f>>2],pt=O,0|M):5==(0|v)?(St[f>>2]=4,M=0|St[f>>2],pt=O,0|M):7==(0|v)?(M=(St[f>>2]=0)|St[f>>2],pt=O,0|M):9==(0|v)?(St[f>>2]=St[F>>2],M=0|St[f>>2],pt=O,0|M):11==(0|v)?(St[f>>2]=St[w>>2],M=0|St[f>>2],pt=O,0|M):13==(0|v)?(St[f>>2]=St[y>>2],M=0|St[f>>2],pt=O,0|M):14==(0|v)?(St[f>>2]=4,M=0|St[f>>2],pt=O,0|M):0}function fe(e,r){e|=0,r|=0;var t,n,i,o,a=0,u=0,s=pt;return(0|bt)<=(0|(pt=pt+32|0))&&yt(32),t=s+20|0,i=s+12|0,a=(o=s)+8|0,St[(n=s+16|0)>>2]=e,St[i>>2]=r,r=0|le(0|St[n>>2],o),St[a>>2]=r,pt=(u=0|St[a>>2]?(St[t>>2]=St[a>>2],0|St[t>>2]):0<(r=0|St[(a=o)+4>>2])>>>0|0==(0|r)&2147483648<=(0|St[a>>2])>>>0?(St[t>>2]=4,0|St[t>>2]):0<(r=0|St[(a=o)+4>>2])>>>0|0==(0|r)&67108864<=(0|St[a>>2])>>>0?(St[t>>2]=4,0|St[t>>2]):(St[St[i>>2]>>2]=St[o>>2],(St[t>>2]=0)|St[t>>2]),s),0|u}function le(e,r){e|=0,r|=0;var t,n,i,o,a,u,s,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=pt;if((0|bt)<=(0|(pt=pt+48|0))&&yt(48),t=m+28|0,f=m+20|0,i=m+34|0,l=m+33|0,c=m+16|0,d=m+12|0,E=m+32|0,a=(o=m)+8|0,St[(n=m+24|0)>>2]=e,St[f>>2]=r,Et[l>>0]=-128,r=0|te(0|St[n>>2],i),St[d>>2]=r,0|St[d>>2])return St[t>>2]=St[d>>2],_=0|St[t>>2],pt=m,0|_;for(d=0|St[f>>2],St[d>>2]=0,St[d+4>>2]=0,St[c>>2]=0;;){if(8<=(0|St[c>>2])){S=10;break}if(!((0|mt[i>>0])&(0|mt[l>>0]))){S=6;break}if(d=0|te(0|St[n>>2],E),St[a>>2]=d,0|St[a>>2]){S=8;break}d=0|It(0|mt[E>>0],0,St[c>>2]<<3|0),r=0|St[f>>2],u=St[(e=r)+4>>2]|Ft,St[(s=r)>>2]=St[e>>2]|d,St[s+4>>2]=u,Et[l>>0]=(0|mt[l>>0])>>1,St[c>>2]=1+(0|St[c>>2])}return 6==(0|S)?(E=(0|mt[i>>0])&(0|mt[l>>0])-1,St[(l=o)>>2]=E,St[l+4>>2]=((0|E)<0)<<31>>31,o=0|It(0|St[(E=o)>>2],0|St[E+4>>2],St[c>>2]<<3|0),c=0|St[f>>2],E=0|Dt(0|St[(f=c)>>2],0|St[f+4>>2],0|o,0|Ft),St[(o=c)>>2]=E,St[o+4>>2]=Ft,_=(St[t>>2]=0)|St[t>>2],pt=m,0|_):8==(0|S)?(St[t>>2]=St[a>>2],_=0|St[t>>2],pt=m,0|_):10==(0|S)?(_=(St[t>>2]=0)|St[t>>2],pt=m,0|_):0}function ce(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a=0,u=pt;return(0|bt)<=(0|(pt=pt+16|0))&&yt(16),n=u+12|0,St[(i=(o=u)+8|0)>>2]=e,St[(e=o)>>2]=r,St[e+4>>2]=t,e=0|St[(t=o)+4>>2],pt=(a=0>>0|(0==(0|e)?(0|St[t>>2])>>>0>(0|St[4+(0|St[i>>2])>>2])>>>0:0)?(St[n>>2]=16,0|St[n>>2]):(t=4+(0|St[i>>2])|0,St[t>>2]=(0|St[t>>2])-(0|St[o>>2]),t=0|St[i>>2],St[t>>2]=(0|St[t>>2])+(0|St[o>>2]),(St[n>>2]=0)|St[n>>2]),u),0|a}function de(e){e|=0;var r,t,n,i,o=0,a=pt;return(0|bt)<=(0|(pt=pt+16|0))&&yt(16),r=a+8|0,n=a+12|0,St[(t=(i=a)+4|0)>>2]=e,e=0|te(0|St[t>>2],n),St[i>>2]=e,pt=(o=(0|St[i>>2]?St[r>>2]=St[i>>2]:St[r>>2]=0==(0|mt[n>>0])?0:4,0|St[r>>2]),a),0|o}function Ee(e,r,t,n){e|=0,r|=0,t|=0,n|=0;var i,o,a,u,s,f,l,c,d,E=0,_=0,S=pt;if((0|bt)<=(0|(pt=pt+32|0))&&yt(32),i=S+24|0,a=S+16|0,u=S+12|0,s=S+8|0,f=S+29|0,l=S+28|0,c=S+4|0,St[(o=(d=S)+20|0)>>2]=e,St[a>>2]=r,St[u>>2]=t,St[s>>2]=n,Et[f>>0]=0,(Et[l>>0]=0)|St[a>>2]){if(n=0|sr[3&St[St[s>>2]>>2]](0|St[s>>2],0|St[a>>2]),!(St[St[u>>2]>>2]=n))return St[i>>2]=2,E=0|St[i>>2],pt=S,0|E}else St[St[u>>2]>>2]=0;for(St[c>>2]=0;;){if((0|St[c>>2])>>>0>=(0|St[a>>2])>>>0){_=12;break}if(!(0|mt[l>>0])){if(n=0|te(0|St[o>>2],f),St[d>>2]=n,0|St[d>>2]){_=9;break}Et[l>>0]=-128}Et[(0|St[St[u>>2]>>2])+(0|St[c>>2])>>0]=(0|mt[f>>0])&(0|mt[l>>0])|0?1:0,Et[l>>0]=(0|mt[l>>0])>>1,St[c>>2]=1+(0|St[c>>2])}return 9==(0|_)?(St[i>>2]=St[d>>2],E=0|St[i>>2],pt=S,0|E):12==(0|_)?(E=(St[i>>2]=0)|St[i>>2],pt=S,0|E):0}function _e(e,r,t,n){e|=0,r|=0,t|=0,n|=0;var i,o,a,u,s,f,l,c=0,d=0,E=pt;if((0|bt)<=(0|(pt=pt+32|0))&&yt(32),i=E+24|0,a=E+16|0,u=E+12|0,s=E+8|0,c=E+28|0,f=E+4|0,St[(o=(l=E)+20|0)>>2]=e,St[a>>2]=r,St[u>>2]=t,St[s>>2]=n,n=0|te(0|St[o>>2],c),St[l>>2]=n,0|St[l>>2])return St[i>>2]=St[l>>2],d=0|St[i>>2],pt=E,0|d;if(!(0|mt[c>>0]))return c=0|Ee(0|St[o>>2],0|St[a>>2],0|St[u>>2],0|St[s>>2]),St[i>>2]=c,d=0|St[i>>2],pt=E,0|d;if(0|St[a>>2]){if(c=0|sr[3&St[St[s>>2]>>2]](0|St[s>>2],0|St[a>>2]),!(St[St[u>>2]>>2]=c))return St[i>>2]=2,d=0|St[i>>2],pt=E,0|d}else St[St[u>>2]>>2]=0;for(St[f>>2]=0;!((0|St[f>>2])>>>0>=(0|St[a>>2])>>>0);)Et[(0|St[St[u>>2]>>2])+(0|St[f>>2])>>0]=1,St[f>>2]=1+(0|St[f>>2]);return d=(St[i>>2]=0)|St[i>>2],pt=E,0|d}function Se(e,r){e|=0,r|=0;var t,n,i,o,a,u,s=0,f=0,l=pt;for((0|bt)<=(0|(pt=pt+32|0))&&yt(32),t=l+16|0,i=l+8|0,o=l+4|0,a=l+20|0,St[(n=(u=l)+12|0)>>2]=e,St[i>>2]=r,St[St[i>>2]>>2]=0,St[o>>2]=0;;){if(4<=(0|St[o>>2])){s=6;break}if(r=0|te(0|St[n>>2],a),St[u>>2]=r,0|St[u>>2]){s=4;break}r=0|St[i>>2],St[r>>2]=St[r>>2]|(0|mt[a>>0])<<(St[o>>2]<<3),St[o>>2]=1+(0|St[o>>2])}return 4==(0|s)?(St[t>>2]=St[u>>2],f=0|St[t>>2],pt=l,0|f):6==(0|s)?(f=(St[t>>2]=0)|St[t>>2],pt=l,0|f):0}function te(e,r){e|=0,r|=0;var t,n,i,o=0,a=pt;return(0|bt)<=(0|(pt=pt+16|0))&&yt(16),t=a+8|0,St[(n=(i=a)+4|0)>>2]=e,St[i>>2]=r,pt=(o=0|St[4+(0|St[n>>2])>>2]?(r=4+(0|St[n>>2])|0,St[r>>2]=(0|St[r>>2])-1,r=0|St[n>>2],n=0|St[r>>2],St[r>>2]=1+n,Et[St[i>>2]>>0]=0|Et[n>>0],(St[t>>2]=0)|St[t>>2]):(St[t>>2]=16,0|St[t>>2]),a),0|o}function me(e){e|=0;var r,t,n,i=0,o=0,a=pt;return(0|bt)<=(0|(pt=pt+32|0))&&yt(32),r=a+16|0,i=(n=a)+8|0,St[(t=a+12|0)>>2]=e,e=0|le(0|St[t>>2],n),St[i>>2]=e,pt=(o=(0|St[i>>2]?St[r>>2]=St[i>>2]:(i=n,n=0|ce(0|St[t>>2],0|St[i>>2],0|St[i+4>>2]),St[r>>2]=n),0|St[r>>2]),a),0|o}function ne(e,r,t,n,i){e|=0,r|=0,t|=0,n|=0,i|=0;var o,a,u,s,f,l,c,d,E=0,_=0,S=0,m=pt;if((0|bt)<=(0|(pt=pt+48|0))&&yt(48),o=m+32|0,u=m+24|0,s=m+20|0,f=m+16|0,l=m+12|0,c=m+8|0,E=m+4|0,St[(a=(d=m)+28|0)>>2]=e,St[u>>2]=r,St[s>>2]=t,St[f>>2]=n,St[l>>2]=i,i=0|_e(0|St[a>>2],0|St[u>>2],0|St[s>>2],0|St[l>>2]),St[E>>2]=i,0|St[E>>2])return St[o>>2]=St[E>>2],_=0|St[o>>2],pt=m,0|_;if(0|St[u>>2]){if(E=0|sr[3&St[St[l>>2]>>2]](0|St[l>>2],St[u>>2]<<2),!(St[St[f>>2]>>2]=E))return St[o>>2]=2,_=0|St[o>>2],pt=m,0|_}else St[St[f>>2]>>2]=0;for(St[c>>2]=0;;){if((0|St[c>>2])>>>0>=(0|St[u>>2])>>>0){S=13;break}if(0|Et[(0|St[St[s>>2]>>2])+(0|St[c>>2])>>0]&&(E=0|Se(0|St[a>>2],(0|St[St[f>>2]>>2])+(St[c>>2]<<2)|0),St[d>>2]=E,0|St[d>>2])){S=11;break}St[c>>2]=1+(0|St[c>>2])}return 11==(0|S)?(St[o>>2]=St[d>>2],_=0|St[o>>2],pt=m,0|_):13==(0|S)?(_=(St[o>>2]=0)|St[o>>2],pt=m,0|_):0}function I(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u,s,f=0,l=0,c=pt;for((0|bt)<=(0|(pt=pt+32|0))&&yt(32),n=c+28|0,o=c+8|0,u=(a=c)+20|0,s=c+16|0,St[(i=c+24|0)>>2]=e,St[(e=o)>>2]=r,St[e+4>>2]=t;;){if(t=0|ue(0|St[i>>2],a),St[u>>2]=t,0|St[u>>2]){f=3;break}if(e=o,(0|St[(t=a)>>2])==(0|St[e>>2])&&(0|St[t+4>>2])==(0|St[e+4>>2])){f=5;break}if(0==(0|St[(e=a)>>2])&0==(0|St[e+4>>2])){f=7;break}if(e=0|me(0|St[i>>2]),St[s>>2]=e,0|St[s>>2]){f=9;break}}return 3==(0|f)?(St[n>>2]=St[u>>2],l=0|St[n>>2],pt=c,0|l):5==(0|f)?(l=(St[n>>2]=0)|St[n>>2],pt=c,0|l):7==(0|f)?(St[n>>2]=16,l=0|St[n>>2],pt=c,0|l):9==(0|f)?(St[n>>2]=St[s>>2],l=0|St[n>>2],pt=c,0|l):0}function ie(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u,s,f=0,l=0,c=pt;for((0|bt)<=(0|(pt=pt+32|0))&&yt(32),n=c+20|0,o=c+12|0,a=c+8|0,u=c+4|0,St[(i=(s=c)+16|0)>>2]=e,St[o>>2]=r,St[a>>2]=t,St[u>>2]=0;;){if((0|St[u>>2])>>>0>=(0|St[a>>2])>>>0){f=6;break}if(t=0|te(0|St[i>>2],(0|St[o>>2])+(0|St[u>>2])|0),St[s>>2]=t,0|St[s>>2]){f=4;break}St[u>>2]=1+(0|St[u>>2])}return 4==(0|f)?(St[n>>2]=St[s>>2],l=0|St[n>>2],pt=c,0|l):6==(0|f)?(l=(St[n>>2]=0)|St[n>>2],pt=c,0|l):0}function oe(e){e|=0;var r,t,n,i=0,o=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),r=o+8|0,St[(t=(n=o)+4|0)>>2]=e;do{if(0|St[St[t>>2]>>2]){if(e=0|function(e){var r=0,t=0,n=0,i=0;-1<(0|St[76+(e|=0)>>2])&&ze();(r=0!=(1&St[e>>2]|0))||(H(11076),t=0|St[e+52>>2],n=e+56|0,0|t&&(St[t+56>>2]=St[n>>2]),0|(i=0|St[n>>2])&&(St[i+52>>2]=t),(0|St[2768])==(0|e)&&(St[2768]=i),V(11076));i=0|Ve(e),t=0|ar[1&St[e+12>>2]](e)|i,0|(i=0|St[e+92>>2])&&Ge(i);r||Ge(e);return 0|t}(0|St[St[t>>2]>>2]),St[n>>2]=e,0|St[n>>2])return St[r>>2]=St[n>>2],i=0|St[r>>2],pt=o,0|i;St[St[t>>2]>>2]=0;break}}while(0);return i=(St[r>>2]=0)|St[r>>2],pt=o,0|i}function L(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u,s=0,f=pt;return(0|bt)<=(0|(pt=pt+32|0))&&yt(32),n=f+16|0,o=f+8|0,a=f+4|0,St[(i=(u=f)+12|0)>>2]=e,St[o>>2]=r,St[a>>2]=t,St[u>>2]=St[St[a>>2]>>2],pt=(s=0|St[u>>2]?(t=0|function(e,r,t,n){e|=0,n|=0;var i=0,o=0,a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0;i=0|wt(t|=0,r|=0),o=-1<(0|St[n+76>>2])?0|ze():0;u=0|Et[(a=n+74|0)>>0],Et[a>>0]=u+255|u,a=0|St[(u=n+4|0)>>2],s=(0|St[n+8>>2])-a|0,f=a,c=0<(0|s)?(Je(0|e,0|f,0|(a=s>>>0>>0?s:i)),St[u>>2]=f+a,l=i-a|0,e+a|0):(l=i,e);e:do{if(l){for(e=n+32|0,a=l,f=c;!(0|function(e){var r=0,t=0,n=0;t=0|Et[(r=74+(e|=0)|0)>>0],Et[r>>0]=t+255|t,r=e+44|0,(0|St[(t=e+20|0)>>2])>>>0>(0|St[r>>2])>>>0&&nr[15&St[e+36>>2]](e,0,0);St[e+16>>2]=0,St[e+28>>2]=0,St[t>>2]=0,n=20&(t=0|St[e>>2])?(4&t&&(St[e>>2]=32|t),-1):(t=0|St[r>>2],St[e+8>>2]=t,St[e+4>>2]=t,0);return 0|n}(n)||((u=0|nr[15&St[e>>2]](n,f,a))+1|0)>>>0<2);){if(!(s=a-u|0)){d=13;break e}a=s,f=f+u|0}0|o&&He(),E=((i-a|0)>>>0)/(r>>>0)|0}else d=13}while(0);13==(0|d)&&(E=(o&&He(),t));return 0|E}(0|St[o>>2],1,0|St[u>>2],0|St[St[i>>2]>>2]),St[St[a>>2]>>2]=t,(0|St[St[a>>2]>>2])==(0|St[u>>2])?(St[n>>2]=0)|St[n>>2]:(u=0|function(e){var r=0,t=0,n=0;n=-1<(0|St[76+(e|=0)>>2])?(r=0==(0|ze()),t=(0|St[e>>2])>>>5&1,r||He(),t):(0|St[e>>2])>>>5&1;return 0|n}(0|St[St[i>>2]>>2]),St[n>>2]=u,0|St[n>>2])):(St[n>>2]=0)|St[n>>2],f),0|s}function ae(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u,s,f=0,l=pt;switch((0|bt)<=(0|(pt=pt+32|0))&&yt(32),n=l+20|0,o=l+12|0,a=l+8|0,u=l+4|0,St[(i=(s=l)+16|0)>>2]=e,St[o>>2]=r,St[a>>2]=t,0|St[a>>2]){case 0:St[u>>2]=0;break;case 1:St[u>>2]=1;break;case 2:St[u>>2]=2;break;default:return St[n>>2]=1,f=0|St[n>>2],pt=l,0|f}return a=0|(e=0|St[St[i>>2]>>2],r=0|St[St[o>>2]>>2],t=0|St[u>>2],0|function(e,r,t){r|=0,t|=0;var n=0,i=0,o=0;o=-1<(0|St[76+(e|=0)>>2])?(n=0==(0|ze()),i=0|We(e,r,t),n||He(),i):0|We(e,r,t);return 0|o}(e|=0,r|=0,t|=0)),St[s>>2]=a,a=0|(t=0|St[St[i>>2]>>2],0|function(e){var r=0,t=0,n=0;n=-1<(0|St[76+(e|=0)>>2])?(r=0==(0|ze()),t=0|je(e),r||He(),t):0|je(e);return 0|n}(t|=0)),i=0|St[o>>2],St[i>>2]=a,St[4+i>>2]=((0|a)<0)<<31>>31,St[n>>2]=St[s>>2],f=0|St[n>>2],pt=l,0|f}function he(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a=pt;return(0|bt)<=(0|(pt=pt+32|0))&&yt(32),i=a+8|0,St[(n=(o=a)+16|0)>>2]=e,St[(e=i)>>2]=r,St[e+4>>2]=t,i=0|St[(t=i)+4>>2],St[(e=o)>>2]=St[t>>2],St[e+4>>2]=i,i=0|nr[15&St[12+(0|St[n>>2])>>2]](0|St[n>>2],o,0),pt=a,0|i}function pe(e,r,t,n){e|=0,r|=0,t|=0,n|=0;var i,o,a,u,s,f,l,c=0,d=0,E=pt;for((0|bt)<=(0|(pt=pt+32|0))&&yt(32),i=E+24|0,a=E+16|0,u=E+12|0,s=E+8|0,f=E+4|0,St[(o=(l=E)+20|0)>>2]=e,St[a>>2]=r,St[u>>2]=t,St[s>>2]=n;;){if(!(0|St[u>>2])){c=8;break}if(St[f>>2]=St[u>>2],n=0|nr[15&St[8+(0|St[o>>2])>>2]](0|St[o>>2],0|St[a>>2],f),St[l>>2]=n,0|St[l>>2]){c=4;break}if(!(0|St[f>>2])){c=6;break}St[a>>2]=(0|St[a>>2])+(0|St[f>>2]),St[u>>2]=(0|St[u>>2])-(0|St[f>>2])}return 4==(0|c)?(St[i>>2]=St[l>>2],d=0|St[i>>2],pt=E,0|d):6==(0|c)?(St[i>>2]=St[s>>2],d=0|St[i>>2],pt=E,0|d):8==(0|c)?(d=(St[i>>2]=0)|St[i>>2],pt=E,0|d):0}function be(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),i=a+4|0,St[(n=(o=a)+8|0)>>2]=e,St[i>>2]=r,St[o>>2]=t,St[76+(0|St[n>>2])>>2]=1,St[72+(0|St[n>>2])>>2]=0,(St[88+(0|St[n>>2])>>2]=0)|St[i>>2]&&(St[44+(0|St[n>>2])>>2]=0,St[48+(0|St[n>>2])>>2]=0,St[80+(0|St[n>>2])>>2]=1),pt=(0|St[o>>2]&&(St[80+(0|St[n>>2])>>2]=1),a)}function ke(e){e|=0;var r,t=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(r=t)>>2]=e,be((St[36+(0|St[r>>2])>>2]=0)|St[r>>2],1,1),pt=t}function Fe(e,r,t,n,i,o){e|=0,r|=0,t|=0,n|=0,i|=0,o|=0;var a,u,s,f,l,c,d,E,_,S,m,h,p,b=0,k=0,F=0,w=0,y=0,v=pt;for((0|bt)<=(0|(pt=pt+64|0))&&yt(64),a=v+56|0,s=v+48|0,b=v+44|0,f=v+40|0,l=v+36|0,c=v+32|0,k=v+28|0,d=v+24|0,E=v+20|0,_=v+16|0,S=v+12|0,m=v+8|0,h=v+4|0,St[(u=(p=v)+52|0)>>2]=e,St[s>>2]=r,St[b>>2]=t,St[f>>2]=n,St[l>>2]=i,St[c>>2]=o,St[k>>2]=St[St[f>>2]>>2],we((St[St[f>>2]>>2]=0)|St[u>>2],0|St[s>>2]),St[St[c>>2]>>2]=0;;){if(F=0|St[u>>2],274==(0|St[72+(0|St[u>>2])>>2])){w=46;break}if(0|St[F+76>>2]){for(;!((0|St[k>>2])>>>0<=0||5<=(0|St[88+(0|St[u>>2])>>2])>>>0);)o=0|St[b>>2],St[b>>2]=o+1,i=0|Et[o>>0],o=88+(0|St[u>>2])|0,n=0|St[o>>2],St[o>>2]=n+1,Et[92+(0|St[u>>2])+n>>0]=i,i=0|St[f>>2],St[i>>2]=1+(0|St[i>>2]),St[k>>2]=(0|St[k>>2])-1;if((0|St[88+(0|St[u>>2])>>2])>>>0<5){w=8;break}if(0|mt[92+(0|St[u>>2])>>0]){w=10;break}!function(e,r){e|=0,r|=0;var t=0,n=0,i=0;(0|(pt=(t=pt)+16|0))>=(0|bt)&&yt(16),St[(n=(i=t)+4|0)>>2]=e,St[i>>2]=r,St[32+(0|St[n>>2])>>2]=(0|mt[1+(0|St[i>>2])>>0])<<24|(0|mt[2+(0|St[i>>2])>>0])<<16|(0|mt[3+(0|St[i>>2])>>0])<<8|0|mt[4+(0|St[i>>2])>>0],St[28+(0|St[n>>2])>>2]=-1,St[76+(0|St[n>>2])>>2]=0,pt=t}(0|St[u>>2],92+(0|St[u>>2])|0),St[88+(0|St[u>>2])>>2]=0}if(((St[d>>2]=0)|St[36+(0|St[u>>2])>>2])>>>0>=(0|St[s>>2])>>>0){if(0==(0|St[72+(0|St[u>>2])>>2])&&0==(0|St[32+(0|St[u>>2])>>2])){w=15;break}if(!(0|St[l>>2])){w=17;break}if(0|St[72+(0|St[u>>2])>>2]){w=19;break}St[d>>2]=1}if(0|St[80+(0|St[u>>2])>>2]&&function(e){e|=0;var r=0,t=0,n=0,i=0,o=0;for((0|(pt=(r=pt)+16|0))>=(0|bt)&&yt(16),n=r+8|0,i=r+4|0,St[(t=(o=r)+12|0)>>2]=e,St[n>>2]=1846+(768<<(0|St[St[t>>2]>>2])+(0|St[4+(0|St[t>>2])>>2])),St[o>>2]=St[16+(0|St[t>>2])>>2],St[i>>2]=0;!((0|St[i>>2])>>>0>=(0|St[n>>2])>>>0);)_t[(0|St[o>>2])+(St[i>>2]<<1)>>1]=1024,St[i>>2]=1+(0|St[i>>2]);St[56+(0|St[t>>2])+12>>2]=1,St[56+(0|St[t>>2])+8>>2]=1,St[56+(0|St[t>>2])+4>>2]=1,St[56+(0|St[t>>2])>>2]=1,St[52+(0|St[t>>2])>>2]=0,St[80+(0|St[t>>2])>>2]=0,pt=r}(0|St[u>>2]),0|St[88+(0|St[u>>2])>>2]){for(St[m>>2]=St[88+(0|St[u>>2])>>2],St[h>>2]=0;!(20<=(0|St[m>>2])>>>0||(0|St[h>>2])>>>0>=(0|St[k>>2])>>>0);)i=0|St[h>>2],St[h>>2]=i+1,n=0|Et[(0|St[b>>2])+i>>0],i=0|St[m>>2],St[m>>2]=i+1,Et[92+(0|St[u>>2])+i>>0]=n;if(St[88+(0|St[u>>2])>>2]=St[m>>2],(0|St[m>>2])>>>0<20|0!=(0|St[d>>2])){if(n=0|ye(0|St[u>>2],92+(0|St[u>>2])|0,0|St[m>>2]),St[p>>2]=n,!(0|St[p>>2])){w=40;break}if(0!=(0|St[d>>2])&2!=(0|St[p>>2])){w=42;break}}if(St[24+(0|St[u>>2])>>2]=92+(0|St[u>>2]),0|ve(0|St[u>>2],0|St[s>>2],0|St[24+(0|St[u>>2])>>2])){w=44;break}St[h>>2]=(0|St[h>>2])-((0|St[m>>2])-((0|St[24+(0|St[u>>2])>>2])-(92+(0|St[u>>2])))),n=0|St[f>>2],St[n>>2]=(0|St[n>>2])+(0|St[h>>2]),St[b>>2]=(0|St[b>>2])+(0|St[h>>2]),St[k>>2]=(0|St[k>>2])-(0|St[h>>2]),St[88+(0|St[u>>2])>>2]=0}else{if((0|St[k>>2])>>>0<20|0!=(0|St[d>>2])){if(i=0|ye(0|St[u>>2],0|St[b>>2],0|St[k>>2]),St[S>>2]=i,!(0|St[S>>2])){w=26;break}if(0!=(0|St[d>>2])&2!=(0|St[S>>2])){w=28;break}St[_>>2]=St[b>>2]}else St[_>>2]=(0|St[b>>2])+(0|St[k>>2])-20;if(St[24+(0|St[u>>2])>>2]=St[b>>2],0|ve(0|St[u>>2],0|St[s>>2],0|St[_>>2])){w=32;break}St[E>>2]=(0|St[24+(0|St[u>>2])>>2])-(0|St[b>>2]),i=0|St[f>>2],St[i>>2]=(0|St[i>>2])+(0|St[E>>2]),St[b>>2]=(0|St[b>>2])+(0|St[E>>2]),St[k>>2]=(0|St[k>>2])-(0|St[E>>2])}}switch(0|w){case 8:return St[St[c>>2]>>2]=3,y=(St[a>>2]=0)|St[a>>2],pt=v,0|y;case 10:return St[a>>2]=1,y=0|St[a>>2],pt=v,0|y;case 15:return St[St[c>>2]>>2]=4,y=(St[a>>2]=0)|St[a>>2],pt=v,0|y;case 17:return St[St[c>>2]>>2]=2,y=(St[a>>2]=0)|St[a>>2],pt=v,0|y;case 19:return St[St[c>>2]>>2]=2,St[a>>2]=1,y=0|St[a>>2],pt=v,0|y;case 26:return Je(92+(0|St[u>>2])|0,0|St[b>>2],0|St[k>>2]),St[88+(0|St[u>>2])>>2]=St[k>>2],b=0|St[f>>2],St[b>>2]=(0|St[b>>2])+(0|St[k>>2]),St[St[c>>2]>>2]=3,y=(St[a>>2]=0)|St[a>>2],pt=v,0|y;case 28:return St[St[c>>2]>>2]=2,St[a>>2]=1,y=0|St[a>>2],pt=v,0|y;case 32:return St[a>>2]=1,y=0|St[a>>2],pt=v,0|y;case 40:return k=0|St[f>>2],St[k>>2]=(0|St[k>>2])+(0|St[h>>2]),St[St[c>>2]>>2]=3,y=(St[a>>2]=0)|St[a>>2],pt=v,0|y;case 42:return St[St[c>>2]>>2]=2,St[a>>2]=1,y=0|St[a>>2],pt=v,0|y;case 44:return St[a>>2]=1,y=0|St[a>>2],pt=v,0|y;case 46:return 0|St[F+32>>2]||(St[St[c>>2]>>2]=1),St[a>>2]=0==(0|St[32+(0|St[u>>2])>>2])?0:1,y=0|St[a>>2],pt=v,0|y}return 0}function we(e,r){e|=0,r|=0;var t,n,i,o,a,u,s=0,f=0,l=pt;if((0|bt)<=(0|(pt=pt+32|0))&&yt(32),s=l+20|0,n=l+16|0,i=l+12|0,o=l+8|0,a=l+4|0,St[(t=(u=l)+24|0)>>2]=e,St[s>>2]=r,0|St[72+(0|St[t>>2])>>2])if(274<=(0|St[72+(0|St[t>>2])>>2])>>>0)pt=l;else{for(St[n>>2]=St[20+(0|St[t>>2])>>2],St[i>>2]=St[36+(0|St[t>>2])>>2],St[o>>2]=St[40+(0|St[t>>2])>>2],St[a>>2]=St[72+(0|St[t>>2])>>2],St[u>>2]=St[56+(0|St[t>>2])>>2],((0|St[s>>2])-(0|St[i>>2])|0)>>>0<(0|St[a>>2])>>>0&&(St[a>>2]=(0|St[s>>2])-(0|St[i>>2])),0==(0|St[48+(0|St[t>>2])>>2])&&((0|St[12+(0|St[t>>2])>>2])-(0|St[44+(0|St[t>>2])>>2])|0)>>>0<=(0|St[a>>2])>>>0&&(St[48+(0|St[t>>2])>>2]=St[12+(0|St[t>>2])>>2]),s=44+(0|St[t>>2])|0,St[s>>2]=(0|St[s>>2])+(0|St[a>>2]),s=72+(0|St[t>>2])|0,St[s>>2]=(0|St[s>>2])-(0|St[a>>2]);s=0|St[a>>2],St[a>>2]=s+-1,f=0|St[i>>2],s;)Et[(0|St[n>>2])+(0|St[i>>2])>>0]=0|Et[(0|St[n>>2])+(f-(0|St[u>>2])+((0|St[i>>2])>>>0<(0|St[u>>2])>>>0?0|St[o>>2]:0))>>0],St[i>>2]=1+(0|St[i>>2]);St[36+(0|St[t>>2])>>2]=f,pt=l}else pt=l}function ye(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u,s,f,l,c,d,E,_,S,m,h,p,b,k,F,w,y,v,M,O,A=0,R=0,g=0,T=0,N=0,D=0,P=0,C=pt;(0|bt)<=(0|(pt=pt+112|0))&&yt(112),n=C+104|0,o=C+96|0,A=C+92|0,a=C+88|0,u=C+84|0,s=C+80|0,f=C+76|0,l=C+72|0,c=C+68|0,d=C+64|0,E=C+60|0,_=C+56|0,S=C+52|0,m=C+48|0,h=C+44|0,p=C+40|0,R=C+36|0,g=C+32|0,b=C+28|0,k=C+24|0,F=C+20|0,w=C+16|0,y=C+12|0,v=C+8|0,M=C+4|0,St[(i=(O=C)+100|0)>>2]=e,St[o>>2]=r,St[A>>2]=t,St[a>>2]=St[28+(0|St[i>>2])>>2],St[u>>2]=St[32+(0|St[i>>2])>>2],St[s>>2]=(0|St[o>>2])+(0|St[A>>2]),St[f>>2]=St[16+(0|St[i>>2])>>2],St[l>>2]=St[52+(0|St[i>>2])>>2],St[S>>2]=St[44+(0|St[i>>2])>>2]&(1<>2])>>2])-1,St[d>>2]=(0|St[f>>2])+(St[l>>2]<<4<<1)+(St[S>>2]<<1),St[_>>2]=re[St[d>>2]>>1];do{if((0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0<(0|St[s>>2])>>>0){St[a>>2]=St[a>>2]<<8,A=St[u>>2]<<8,t=0|St[o>>2],St[o>>2]=t+1,St[u>>2]=0|A|mt[t>>0];break}return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T}}while(0);t=0|wt((0|St[a>>2])>>>11,0|St[_>>2]),St[E>>2]=t,t=0|St[E>>2];e:do{if((0|St[u>>2])>>>0>=(0|St[E>>2])>>>0){St[a>>2]=(0|St[a>>2])-t,St[u>>2]=(0|St[u>>2])-(0|St[E>>2]),St[d>>2]=384+(0|St[f>>2])+(St[l>>2]<<1),St[_>>2]=re[St[d>>2]>>1];do{if((0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0<(0|St[s>>2])>>>0){St[a>>2]=St[a>>2]<<8,A=St[u>>2]<<8,r=0|St[o>>2],St[o>>2]=r+1,St[u>>2]=0|A|mt[r>>0];break}return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T}}while(0);if(r=0|wt((0|St[a>>2])>>>11,0|St[_>>2]),St[E>>2]=r,r=0|St[E>>2],(0|St[u>>2])>>>0<(0|St[E>>2])>>>0)St[a>>2]=r,St[l>>2]=0,St[d>>2]=1636+(0|St[f>>2]),St[c>>2]=2;else{St[a>>2]=(0|St[a>>2])-r,St[u>>2]=(0|St[u>>2])-(0|St[E>>2]),St[c>>2]=3,St[d>>2]=408+(0|St[f>>2])+(St[l>>2]<<1),St[_>>2]=re[St[d>>2]>>1];do{if((0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0<(0|St[s>>2])>>>0){St[a>>2]=St[a>>2]<<8,r=St[u>>2]<<8,A=0|St[o>>2],St[o>>2]=A+1,St[u>>2]=0|r|mt[A>>0];break}return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T}}while(0);A=0|wt((0|St[a>>2])>>>11,0|St[_>>2]),St[E>>2]=A,A=0|St[E>>2];do{if((0|St[u>>2])>>>0>=(0|St[E>>2])>>>0){St[a>>2]=(0|St[a>>2])-A,St[u>>2]=(0|St[u>>2])-(0|St[E>>2]),St[d>>2]=432+(0|St[f>>2])+(St[l>>2]<<1),St[_>>2]=re[St[d>>2]>>1];do{if((0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0<(0|St[s>>2])>>>0){St[a>>2]=St[a>>2]<<8,r=St[u>>2]<<8,e=0|St[o>>2],St[o>>2]=e+1,St[u>>2]=0|r|mt[e>>0];break}return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T}}while(0);if(e=0|wt((0|St[a>>2])>>>11,0|St[_>>2]),St[E>>2]=e,e=0|St[E>>2],(0|St[u>>2])>>>0<(0|St[E>>2])>>>0){St[a>>2]=e;break}St[a>>2]=(0|St[a>>2])-e,St[u>>2]=(0|St[u>>2])-(0|St[E>>2]),St[d>>2]=456+(0|St[f>>2])+(St[l>>2]<<1),St[_>>2]=re[St[d>>2]>>1];do{if((0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0<(0|St[s>>2])>>>0){St[a>>2]=St[a>>2]<<8,e=St[u>>2]<<8,r=0|St[o>>2],St[o>>2]=r+1,St[u>>2]=0|e|mt[r>>0];break}return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T}}while(0);if(r=0|wt((0|St[a>>2])>>>11,0|St[_>>2]),St[E>>2]=r,r=0|St[E>>2],(0|St[u>>2])>>>0<(0|St[E>>2])>>>0){St[a>>2]=r;break}St[a>>2]=(0|St[a>>2])-r,St[u>>2]=(0|St[u>>2])-(0|St[E>>2]);break}St[a>>2]=A,St[d>>2]=480+(0|St[f>>2])+(St[l>>2]<<4<<1)+(St[S>>2]<<1),St[_>>2]=re[St[d>>2]>>1];do{if((0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0<(0|St[s>>2])>>>0){St[a>>2]=St[a>>2]<<8,r=St[u>>2]<<8,e=0|St[o>>2],St[o>>2]=e+1,St[u>>2]=0|r|mt[e>>0];break}return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T}}while(0);if(e=0|wt((0|St[a>>2])>>>11,0|St[_>>2]),St[E>>2]=e,e=0|St[E>>2],(0|St[u>>2])>>>0>=(0|St[E>>2])>>>0){St[a>>2]=(0|St[a>>2])-e,St[u>>2]=(0|St[u>>2])-(0|St[E>>2]);break}St[a>>2]=e;do{if((0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0<(0|St[s>>2])>>>0){St[a>>2]=St[a>>2]<<8,e=St[u>>2]<<8,r=0|St[o>>2],St[o>>2]=r+1,St[u>>2]=0|e|mt[r>>0];break}return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T}}while(0);return St[n>>2]=3,T=0|St[n>>2],pt=C,0|T}while(0);St[l>>2]=12,St[d>>2]=2664+(0|St[f>>2])}St[y>>2]=St[d>>2],St[_>>2]=re[St[y>>2]>>1];do{if((0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0<(0|St[s>>2])>>>0){St[a>>2]=St[a>>2]<<8,A=St[u>>2]<<8,r=0|St[o>>2],St[o>>2]=r+1,St[u>>2]=0|A|mt[r>>0];break}return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T}}while(0);r=0|wt((0|St[a>>2])>>>11,0|St[_>>2]),St[E>>2]=r,r=0|St[E>>2];do{if((0|St[u>>2])>>>0>=(0|St[E>>2])>>>0){St[a>>2]=(0|St[a>>2])-r,St[u>>2]=(0|St[u>>2])-(0|St[E>>2]),St[y>>2]=2+(0|St[d>>2]),St[_>>2]=re[St[y>>2]>>1];do{if((0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0<(0|St[s>>2])>>>0){St[a>>2]=St[a>>2]<<8,A=St[u>>2]<<8,e=0|St[o>>2],St[o>>2]=e+1,St[u>>2]=0|A|mt[e>>0];break}return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T}}while(0);if(e=0|wt((0|St[a>>2])>>>11,0|St[_>>2]),St[E>>2]=e,e=0|St[E>>2],(0|St[u>>2])>>>0<(0|St[E>>2])>>>0){St[a>>2]=e,St[y>>2]=260+(0|St[d>>2])+(St[S>>2]<<3<<1),St[w>>2]=8,St[F>>2]=8;break}St[a>>2]=(0|St[a>>2])-e,St[u>>2]=(0|St[u>>2])-(0|St[E>>2]),St[y>>2]=516+(0|St[d>>2]),St[w>>2]=16,St[F>>2]=256;break}}while(St[a>>2]=r,St[y>>2]=4+(0|St[d>>2])+(St[S>>2]<<3<<1),St[w>>2]=0,St[F>>2]=8,0);St[k>>2]=1;do{if(St[_>>2]=re[(0|St[y>>2])+(St[k>>2]<<1)>>1],(0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0>=(0|St[s>>2])>>>0){N=86;break}St[a>>2]=St[a>>2]<<8,r=St[u>>2]<<8,e=0|St[o>>2],St[o>>2]=e+1,St[u>>2]=0|r|mt[e>>0]}}while(e=0|wt((0|St[a>>2])>>>11,0|St[_>>2]),St[E>>2]=e,e=0|St[E>>2],(0|St[u>>2])>>>0<(0|St[E>>2])>>>0?(St[a>>2]=e,St[k>>2]=(0|St[k>>2])+(0|St[k>>2])):(St[a>>2]=(0|St[a>>2])-e,St[u>>2]=(0|St[u>>2])-(0|St[E>>2]),St[k>>2]=(0|St[k>>2])+(0|St[k>>2])+1),(0|St[k>>2])>>>0<(0|St[F>>2])>>>0);if(86==(0|N))return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T;if(St[k>>2]=(0|St[k>>2])-(0|St[F>>2]),St[k>>2]=(0|St[k>>2])+(0|St[w>>2]),(0|St[l>>2])>>>0<4){St[d>>2]=864+(0|St[f>>2])+(((0|St[k>>2])>>>0<4?0|St[k>>2]:3)<<6<<1),St[v>>2]=1;do{if(St[_>>2]=re[(0|St[d>>2])+(St[v>>2]<<1)>>1],(0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0>=(0|St[s>>2])>>>0){N=96;break}St[a>>2]=St[a>>2]<<8,e=St[u>>2]<<8,r=0|St[o>>2],St[o>>2]=r+1,St[u>>2]=0|e|mt[r>>0]}}while(r=0|wt((0|St[a>>2])>>>11,0|St[_>>2]),St[E>>2]=r,r=0|St[E>>2],(0|St[u>>2])>>>0<(0|St[E>>2])>>>0?(St[a>>2]=r,St[v>>2]=(0|St[v>>2])+(0|St[v>>2])):(St[a>>2]=(0|St[a>>2])-r,St[u>>2]=(0|St[u>>2])-(0|St[E>>2]),St[v>>2]=(0|St[v>>2])+(0|St[v>>2])+1),(0|St[v>>2])>>>0<64);if(96==(0|N))return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T;if(St[v>>2]=(0|St[v>>2])-64,4<=(0|St[v>>2])>>>0){St[M>>2]=((0|St[v>>2])>>>1)-1;do{if(!((0|St[v>>2])>>>0<14)){for(St[M>>2]=(0|St[M>>2])-4;;){if((0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0>=(0|St[s>>2])>>>0)break;St[a>>2]=St[a>>2]<<8,r=St[u>>2]<<8,e=0|St[o>>2],St[o>>2]=e+1,St[u>>2]=0|r|mt[e>>0]}if(St[a>>2]=(0|St[a>>2])>>>1,St[u>>2]=(0|St[u>>2])-(St[a>>2]&(((0|St[u>>2])-(0|St[a>>2])|0)>>>31)-1),e=(0|St[M>>2])-1|0,!(St[M>>2]=e)){N=111;break}}if(111!=(0|N))return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T;St[d>>2]=1604+(0|St[f>>2]),St[M>>2]=4;break}}while(St[d>>2]=1376+(0|St[f>>2])+((2|1&St[v>>2])<>2]<<1)+(0-(0|St[v>>2])<<1)-2,0);for(St[O>>2]=1;;){if(St[_>>2]=re[(0|St[d>>2])+(St[O>>2]<<1)>>1],(0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0>=(0|St[s>>2])>>>0)break;St[a>>2]=St[a>>2]<<8,e=St[u>>2]<<8,r=0|St[o>>2],St[o>>2]=r+1,St[u>>2]=0|e|mt[r>>0]}if(r=0|wt((0|St[a>>2])>>>11,0|St[_>>2]),St[E>>2]=r,r=0|St[E>>2],(0|St[u>>2])>>>0<(0|St[E>>2])>>>0?(St[a>>2]=r,St[O>>2]=(0|St[O>>2])+(0|St[O>>2])):(St[a>>2]=(0|St[a>>2])-r,St[u>>2]=(0|St[u>>2])-(0|St[E>>2]),St[O>>2]=(0|St[O>>2])+(0|St[O>>2])+1),r=(0|St[M>>2])-1|0,!(St[M>>2]=r))break e}return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T}}}else{St[a>>2]=t,St[d>>2]=3692+(0|St[f>>2]),(0|St[48+(0|St[i>>2])>>2]||0|St[44+(0|St[i>>2])>>2])&&(r=0|St[i>>2],D=0|St[36+(0|St[i>>2])>>2]?0|St[r+36>>2]:0|St[r+40>>2],St[d>>2]=(0|St[d>>2])+(768*(((St[44+(0|St[i>>2])>>2]&(1<>2])>>2])-1)<>2]>>2])+((0|mt[(0|St[20+(0|St[i>>2])>>2])+(D-1)>>0])>>8-(0|St[St[i>>2]>>2]))|0)<<1));r:do{if((0|St[l>>2])>>>0<7){for(St[m>>2]=1;;){if(St[_>>2]=re[(0|St[d>>2])+(St[m>>2]<<1)>>1],(0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0>=(0|St[s>>2])>>>0)break;St[a>>2]=St[a>>2]<<8,r=St[u>>2]<<8,e=0|St[o>>2],St[o>>2]=e+1,St[u>>2]=0|r|mt[e>>0]}if(e=0|wt((0|St[a>>2])>>>11,0|St[_>>2]),St[E>>2]=e,e=0|St[E>>2],(0|St[u>>2])>>>0<(0|St[E>>2])>>>0?(St[a>>2]=e,St[m>>2]=(0|St[m>>2])+(0|St[m>>2])):(St[a>>2]=(0|St[a>>2])-e,St[u>>2]=(0|St[u>>2])-(0|St[E>>2]),St[m>>2]=(0|St[m>>2])+(0|St[m>>2])+1),256<=(0|St[m>>2])>>>0)break r}return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T}for(P=(0|St[36+(0|St[i>>2])>>2])>>>0<(0|St[56+(0|St[i>>2])>>2])>>>0?0|St[40+(0|St[i>>2])>>2]:0,St[h>>2]=mt[(0|St[20+(0|St[i>>2])>>2])+((0|St[36+(0|St[i>>2])>>2])-(0|St[56+(0|St[i>>2])>>2])+P)>>0],St[p>>2]=256,St[R>>2]=1;;){if(St[h>>2]=St[h>>2]<<1,St[g>>2]=St[h>>2]&St[p>>2],St[b>>2]=(0|St[d>>2])+(St[p>>2]<<1)+(St[g>>2]<<1)+(St[R>>2]<<1),St[_>>2]=re[St[b>>2]>>1],(0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0>=(0|St[s>>2])>>>0)break;St[a>>2]=St[a>>2]<<8,e=St[u>>2]<<8,r=0|St[o>>2],St[o>>2]=r+1,St[u>>2]=0|e|mt[r>>0]}if(r=0|wt((0|St[a>>2])>>>11,0|St[_>>2]),St[E>>2]=r,r=0|St[E>>2],(0|St[u>>2])>>>0<(0|St[E>>2])>>>0?(St[a>>2]=r,St[R>>2]=(0|St[R>>2])+(0|St[R>>2]),St[p>>2]=St[p>>2]&~St[g>>2]):(St[a>>2]=(0|St[a>>2])-r,St[u>>2]=(0|St[u>>2])-(0|St[E>>2]),St[R>>2]=(0|St[R>>2])+(0|St[R>>2])+1,St[p>>2]=St[p>>2]&St[g>>2]),256<=(0|St[R>>2])>>>0)break r}return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T}while(0);St[c>>2]=1}}while(0);do{if((0|St[a>>2])>>>0<16777216){if((0|St[o>>2])>>>0<(0|St[s>>2])>>>0){St[a>>2]=St[a>>2]<<8,R=St[u>>2]<<8,g=0|St[o>>2],St[o>>2]=g+1,St[u>>2]=0|R|mt[g>>0];break}return T=(St[n>>2]=0)|St[n>>2],pt=C,0|T}}while(0);return St[n>>2]=St[c>>2],T=0|St[n>>2],pt=C,0|T}function ve(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u,s,f,l=0,c=0,d=pt;(0|bt)<=(0|(pt=pt+32|0))&&yt(32),n=d+24|0,o=d+16|0,a=d+12|0,u=d+8|0,s=d+4|0,St[(i=(f=d)+20|0)>>2]=e,St[o>>2]=r,St[a>>2]=t;do{if(St[u>>2]=St[o>>2],0==(0|St[48+(0|St[i>>2])>>2])&&(St[s>>2]=(0|St[12+(0|St[i>>2])>>2])-(0|St[44+(0|St[i>>2])>>2]),((0|St[o>>2])-(0|St[36+(0|St[i>>2])>>2])|0)>>>0>(0|St[s>>2])>>>0)&&(St[u>>2]=(0|St[36+(0|St[i>>2])>>2])+(0|St[s>>2])),t=0|function(e,r,t){e|=0,r|=0,t|=0;var n=0,i=0,o=0,a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0,R=0,g=0,T=0,N=0,D=0,P=0,C=0,I=0,L=0,x=0,B=0,H=0,U=0,z=0,Y=0,V=0,K=0,W=0,j=0,X=0,G=0,q=0,Q=0,Z=0,J=0,$=0,ee=0;(0|(pt=(n=pt)+192|0))>=(0|bt)&&yt(192);i=n+188|0,a=n+180|0,u=n+176|0,s=n+172|0,f=n+168|0,l=n+164|0,c=n+160|0,d=n+156|0,E=n+152|0,_=n+148|0,S=n+144|0,m=n+140|0,h=n+136|0,p=n+132|0,b=n+128|0,k=n+124|0,F=n+120|0,w=n+116|0,y=n+112|0,v=n+108|0,M=n+104|0,O=n+100|0,A=n+96|0,R=n+92|0,g=n+88|0,T=n+84|0,N=n+80|0,D=n+76|0,P=n+72|0,C=n+68|0,I=n+64|0,L=n+60|0,x=n+56|0,B=n+52|0,H=n+48|0,U=n+44|0,z=n+40|0,Y=n+36|0,V=n+32|0,K=n+28|0,W=n+24|0,j=n+20|0,X=n+16|0,G=n+12|0,q=n+8|0,Q=n+4|0,St[(o=(Z=n)+184|0)>>2]=e,St[a>>2]=r,St[u>>2]=t,St[s>>2]=St[16+(0|St[o>>2])>>2],St[f>>2]=St[52+(0|St[o>>2])>>2],St[l>>2]=St[56+(0|St[o>>2])>>2],St[c>>2]=St[56+(0|St[o>>2])+4>>2],St[d>>2]=St[56+(0|St[o>>2])+8>>2],St[E>>2]=St[56+(0|St[o>>2])+12>>2],St[_>>2]=(1<>2])>>2])-1,St[S>>2]=(1<>2])>>2])-1,St[m>>2]=St[St[o>>2]>>2],St[h>>2]=St[20+(0|St[o>>2])>>2],St[p>>2]=St[40+(0|St[o>>2])>>2],St[b>>2]=St[36+(0|St[o>>2])>>2],St[k>>2]=St[44+(0|St[o>>2])>>2],St[F>>2]=St[48+(0|St[o>>2])>>2],St[w>>2]=0,St[y>>2]=St[24+(0|St[o>>2])>>2],St[v>>2]=St[28+(0|St[o>>2])>>2],St[M>>2]=St[32+(0|St[o>>2])>>2];e:do{St[g>>2]=St[k>>2]&St[_>>2],St[O>>2]=(0|St[s>>2])+(St[f>>2]<<4<<1)+(St[g>>2]<<1),St[R>>2]=re[St[O>>2]>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,t=St[M>>2]<<8,r=0|St[y>>2],St[y>>2]=r+1,St[M>>2]=0|t|mt[r>>0]),r=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=r,r=0|St[A>>2];r:do{if((0|St[M>>2])>>>0<(0|St[A>>2])>>>0){if(St[v>>2]=r,_t[St[O>>2]>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[O>>2]=3692+(0|St[s>>2]),0!=(0|St[F>>2])|0!=(0|St[k>>2])&&(St[O>>2]=(0|St[O>>2])+(768*(((St[k>>2]&St[S>>2])<>2])+((0|mt[(0|St[h>>2])+((0==(0|St[b>>2])?0|St[p>>2]:0|St[b>>2])-1)>>0])>>8-(0|St[m>>2]))|0)<<1)),(0|St[f>>2])>>>0<7)for(St[f>>2]=(0|St[f>>2])-((0|St[f>>2])>>>0<4?0|St[f>>2]:3),St[T>>2]=1;St[R>>2]=re[(0|St[O>>2])+(St[T>>2]<<1)>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,t=St[M>>2]<<8,e=0|St[y>>2],St[y>>2]=e+1,St[M>>2]=0|t|mt[e>>0]),e=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=e,e=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=e,_t[(0|St[O>>2])+(St[T>>2]<<1)>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[T>>2]=(0|St[T>>2])+(0|St[T>>2])):(St[v>>2]=(0|St[v>>2])-e,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[(0|St[O>>2])+(St[T>>2]<<1)>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[T>>2]=(0|St[T>>2])+(0|St[T>>2])+1),(0|St[T>>2])>>>0<256;);else for(St[N>>2]=mt[(0|St[20+(0|St[o>>2])>>2])+((0|St[b>>2])-(0|St[l>>2])+((0|St[b>>2])>>>0<(0|St[l>>2])>>>0?0|St[p>>2]:0))>>0],St[D>>2]=256,St[f>>2]=(0|St[f>>2])-((0|St[f>>2])>>>0<10?3:6),St[T>>2]=1;St[N>>2]=St[N>>2]<<1,St[P>>2]=St[N>>2]&St[D>>2],St[C>>2]=(0|St[O>>2])+(St[D>>2]<<1)+(St[P>>2]<<1)+(St[T>>2]<<1),St[R>>2]=re[St[C>>2]>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,e=St[M>>2]<<8,t=0|St[y>>2],St[y>>2]=t+1,St[M>>2]=0|e|mt[t>>0]),t=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=t,t=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=t,_t[St[C>>2]>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[T>>2]=(0|St[T>>2])+(0|St[T>>2]),St[D>>2]=St[D>>2]&~St[P>>2]):(St[v>>2]=(0|St[v>>2])-t,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[St[C>>2]>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[T>>2]=(0|St[T>>2])+(0|St[T>>2])+1,St[D>>2]=St[D>>2]&St[P>>2]),(0|St[T>>2])>>>0<256;);t=255&St[T>>2],e=0|St[b>>2],St[b>>2]=e+1,Et[(0|St[h>>2])+e>>0]=t,St[k>>2]=1+(0|St[k>>2])}else{if(St[v>>2]=(0|St[v>>2])-r,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[St[O>>2]>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[O>>2]=384+(0|St[s>>2])+(St[f>>2]<<1),St[R>>2]=re[St[O>>2]>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,t=St[M>>2]<<8,e=0|St[y>>2],St[y>>2]=e+1,St[M>>2]=0|t|mt[e>>0]),e=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=e,e=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0)St[v>>2]=e,_t[St[O>>2]>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[f>>2]=12+(0|St[f>>2]),St[O>>2]=1636+(0|St[s>>2]);else{if(St[v>>2]=(0|St[v>>2])-e,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[St[O>>2]>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),0==(0|St[F>>2])&0==(0|St[k>>2])){J=28;break e}St[O>>2]=408+(0|St[s>>2])+(St[f>>2]<<1),St[R>>2]=re[St[O>>2]>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,e=St[M>>2]<<8,t=0|St[y>>2],St[y>>2]=t+1,St[M>>2]=0|e|mt[t>>0]),t=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=t,t=0|St[A>>2];do{if((0|St[M>>2])>>>0<(0|St[A>>2])>>>0){if(St[v>>2]=t,_t[St[O>>2]>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[O>>2]=480+(0|St[s>>2])+(St[f>>2]<<4<<1)+(St[g>>2]<<1),St[R>>2]=re[St[O>>2]>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,e=St[M>>2]<<8,$=0|St[y>>2],St[y>>2]=$+1,St[M>>2]=0|e|mt[$>>0]),$=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=$,$=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0){St[v>>2]=$,_t[St[O>>2]>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),Et[(0|St[h>>2])+(0|St[b>>2])>>0]=0|Et[(0|St[h>>2])+((0|St[b>>2])-(0|St[l>>2])+((0|St[b>>2])>>>0<(0|St[l>>2])>>>0?0|St[p>>2]:0))>>0],St[b>>2]=1+(0|St[b>>2]),St[k>>2]=1+(0|St[k>>2]),St[f>>2]=(0|St[f>>2])>>>0<7?9:11;break r}St[v>>2]=(0|St[v>>2])-$,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[St[O>>2]>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5);break}}while(St[v>>2]=(0|St[v>>2])-t,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[St[O>>2]>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[O>>2]=432+(0|St[s>>2])+(St[f>>2]<<1),St[R>>2]=re[St[O>>2]>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,$=St[M>>2]<<8,e=0|St[y>>2],St[y>>2]=e+1,St[M>>2]=0|$|mt[e>>0]),e=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=e,e=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=e,_t[St[O>>2]>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[I>>2]=St[c>>2]):(St[v>>2]=(0|St[v>>2])-e,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[St[O>>2]>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[O>>2]=456+(0|St[s>>2])+(St[f>>2]<<1),St[R>>2]=re[St[O>>2]>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,e=St[M>>2]<<8,$=0|St[y>>2],St[y>>2]=$+1,St[M>>2]=0|e|mt[$>>0]),$=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=$,$=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=$,_t[St[O>>2]>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[I>>2]=St[d>>2]):(St[v>>2]=(0|St[v>>2])-$,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[St[O>>2]>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[I>>2]=St[E>>2],St[E>>2]=St[d>>2]),St[d>>2]=St[c>>2]),St[c>>2]=St[l>>2],St[l>>2]=St[I>>2],0);St[f>>2]=(0|St[f>>2])>>>0<7?8:11,St[O>>2]=2664+(0|St[s>>2])}St[B>>2]=St[O>>2],St[R>>2]=re[St[B>>2]>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,t=St[M>>2]<<8,$=0|St[y>>2],St[y>>2]=$+1,St[M>>2]=0|t|mt[$>>0]),$=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=$,$=0|St[A>>2];do{if((0|St[M>>2])>>>0>=(0|St[A>>2])>>>0){if(St[v>>2]=(0|St[v>>2])-$,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[St[B>>2]>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[B>>2]=2+(0|St[O>>2]),St[R>>2]=re[St[B>>2]>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,t=St[M>>2]<<8,e=0|St[y>>2],St[y>>2]=e+1,St[M>>2]=0|t|mt[e>>0]),e=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=e,e=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0){St[v>>2]=e,_t[St[B>>2]>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[B>>2]=260+(0|St[O>>2])+(St[g>>2]<<3<<1),St[x>>2]=8,St[L>>2]=8;break}St[v>>2]=(0|St[v>>2])-e,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[St[B>>2]>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[B>>2]=516+(0|St[O>>2]),St[x>>2]=16,St[L>>2]=256;break}}while(St[v>>2]=$,_t[St[B>>2]>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[B>>2]=4+(0|St[O>>2])+(St[g>>2]<<3<<1),St[x>>2]=0,St[L>>2]=8,0);for(St[w>>2]=1;St[R>>2]=re[(0|St[B>>2])+(St[w>>2]<<1)>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,$=St[M>>2]<<8,e=0|St[y>>2],St[y>>2]=e+1,St[M>>2]=0|$|mt[e>>0]),e=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=e,e=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=e,_t[(0|St[B>>2])+(St[w>>2]<<1)>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[w>>2]=(0|St[w>>2])+(0|St[w>>2])):(St[v>>2]=(0|St[v>>2])-e,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[(0|St[B>>2])+(St[w>>2]<<1)>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[w>>2]=(0|St[w>>2])+(0|St[w>>2])+1),(0|St[w>>2])>>>0<(0|St[L>>2])>>>0;);if(St[w>>2]=(0|St[w>>2])-(0|St[L>>2]),St[w>>2]=(0|St[w>>2])+(0|St[x>>2]),12<=(0|St[f>>2])>>>0){St[O>>2]=864+(0|St[s>>2])+(((0|St[w>>2])>>>0<4?0|St[w>>2]:3)<<6<<1),St[H>>2]=1,St[R>>2]=re[(0|St[O>>2])+(St[H>>2]<<1)>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,e=St[M>>2]<<8,$=0|St[y>>2],St[y>>2]=$+1,St[M>>2]=0|e|mt[$>>0]),$=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=$,$=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=$,_t[(0|St[O>>2])+(St[H>>2]<<1)>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[H>>2]=(0|St[H>>2])+(0|St[H>>2])):(St[v>>2]=(0|St[v>>2])-$,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[(0|St[O>>2])+(St[H>>2]<<1)>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[H>>2]=(0|St[H>>2])+(0|St[H>>2])+1),St[R>>2]=re[(0|St[O>>2])+(St[H>>2]<<1)>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,$=St[M>>2]<<8,e=0|St[y>>2],St[y>>2]=e+1,St[M>>2]=0|$|mt[e>>0]),e=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=e,e=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=e,_t[(0|St[O>>2])+(St[H>>2]<<1)>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[H>>2]=(0|St[H>>2])+(0|St[H>>2])):(St[v>>2]=(0|St[v>>2])-e,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[(0|St[O>>2])+(St[H>>2]<<1)>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[H>>2]=(0|St[H>>2])+(0|St[H>>2])+1),St[R>>2]=re[(0|St[O>>2])+(St[H>>2]<<1)>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,e=St[M>>2]<<8,$=0|St[y>>2],St[y>>2]=$+1,St[M>>2]=0|e|mt[$>>0]),$=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=$,$=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=$,_t[(0|St[O>>2])+(St[H>>2]<<1)>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[H>>2]=(0|St[H>>2])+(0|St[H>>2])):(St[v>>2]=(0|St[v>>2])-$,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[(0|St[O>>2])+(St[H>>2]<<1)>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[H>>2]=(0|St[H>>2])+(0|St[H>>2])+1),St[R>>2]=re[(0|St[O>>2])+(St[H>>2]<<1)>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,$=St[M>>2]<<8,e=0|St[y>>2],St[y>>2]=e+1,St[M>>2]=0|$|mt[e>>0]),e=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=e,e=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=e,_t[(0|St[O>>2])+(St[H>>2]<<1)>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[H>>2]=(0|St[H>>2])+(0|St[H>>2])):(St[v>>2]=(0|St[v>>2])-e,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[(0|St[O>>2])+(St[H>>2]<<1)>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[H>>2]=(0|St[H>>2])+(0|St[H>>2])+1),St[R>>2]=re[(0|St[O>>2])+(St[H>>2]<<1)>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,e=St[M>>2]<<8,$=0|St[y>>2],St[y>>2]=$+1,St[M>>2]=0|e|mt[$>>0]),$=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=$,$=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=$,_t[(0|St[O>>2])+(St[H>>2]<<1)>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[H>>2]=(0|St[H>>2])+(0|St[H>>2])):(St[v>>2]=(0|St[v>>2])-$,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[(0|St[O>>2])+(St[H>>2]<<1)>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[H>>2]=(0|St[H>>2])+(0|St[H>>2])+1),St[R>>2]=re[(0|St[O>>2])+(St[H>>2]<<1)>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,$=St[M>>2]<<8,e=0|St[y>>2],St[y>>2]=e+1,St[M>>2]=0|$|mt[e>>0]),e=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=e,e=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=e,_t[(0|St[O>>2])+(St[H>>2]<<1)>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[H>>2]=(0|St[H>>2])+(0|St[H>>2])):(St[v>>2]=(0|St[v>>2])-e,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[(0|St[O>>2])+(St[H>>2]<<1)>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[H>>2]=(0|St[H>>2])+(0|St[H>>2])+1),St[H>>2]=(0|St[H>>2])-64;t:do{if(4<=(0|St[H>>2])>>>0){if(St[U>>2]=St[H>>2],St[z>>2]=((0|St[H>>2])>>>1)-1,St[H>>2]=2|1&St[H>>2],e=0|St[z>>2],(0|St[U>>2])>>>0<14)for(St[H>>2]=St[H>>2]<>2]=1376+(0|St[s>>2])+(St[H>>2]<<1)+(0-(0|St[U>>2])<<1)-2,St[Y>>2]=1,St[V>>2]=1;;)if(St[R>>2]=re[(0|St[O>>2])+(St[V>>2]<<1)>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,$=St[M>>2]<<8,t=0|St[y>>2],St[y>>2]=t+1,St[M>>2]=0|$|mt[t>>0]),t=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=t,t=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=t,_t[(0|St[O>>2])+(St[V>>2]<<1)>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[V>>2]=(0|St[V>>2])+(0|St[V>>2])):(St[v>>2]=(0|St[v>>2])-t,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[(0|St[O>>2])+(St[V>>2]<<1)>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[V>>2]=(0|St[V>>2])+(0|St[V>>2])+1,St[H>>2]=St[H>>2]|St[Y>>2]),St[Y>>2]=St[Y>>2]<<1,t=(0|St[z>>2])-1|0,!(St[z>>2]=t))break t;for(St[z>>2]=e-4;(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,t=St[M>>2]<<8,$=0|St[y>>2],St[y>>2]=$+1,St[M>>2]=0|t|mt[$>>0]),St[v>>2]=(0|St[v>>2])>>>1,St[M>>2]=(0|St[M>>2])-(0|St[v>>2]),St[K>>2]=0-((0|St[M>>2])>>>31),St[H>>2]=(St[H>>2]<<1)+(1+(0|St[K>>2])),St[M>>2]=(0|St[M>>2])+(St[v>>2]&St[K>>2]),$=(0|St[z>>2])-1|0,St[z>>2]=$,0!=(0|$););if(St[O>>2]=1604+(0|St[s>>2]),St[H>>2]=St[H>>2]<<4,St[W>>2]=1,St[R>>2]=re[(0|St[O>>2])+(St[W>>2]<<1)>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,e=St[M>>2]<<8,$=0|St[y>>2],St[y>>2]=$+1,St[M>>2]=0|e|mt[$>>0]),$=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=$,$=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=$,_t[(0|St[O>>2])+(St[W>>2]<<1)>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[W>>2]=(0|St[W>>2])+(0|St[W>>2])):(St[v>>2]=(0|St[v>>2])-$,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[(0|St[O>>2])+(St[W>>2]<<1)>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[W>>2]=(0|St[W>>2])+(0|St[W>>2])+1,St[H>>2]=1|St[H>>2]),St[R>>2]=re[(0|St[O>>2])+(St[W>>2]<<1)>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,$=St[M>>2]<<8,e=0|St[y>>2],St[y>>2]=e+1,St[M>>2]=0|$|mt[e>>0]),e=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=e,e=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=e,_t[(0|St[O>>2])+(St[W>>2]<<1)>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[W>>2]=(0|St[W>>2])+(0|St[W>>2])):(St[v>>2]=(0|St[v>>2])-e,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[(0|St[O>>2])+(St[W>>2]<<1)>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[W>>2]=(0|St[W>>2])+(0|St[W>>2])+1,St[H>>2]=2|St[H>>2]),St[R>>2]=re[(0|St[O>>2])+(St[W>>2]<<1)>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,e=St[M>>2]<<8,$=0|St[y>>2],St[y>>2]=$+1,St[M>>2]=0|e|mt[$>>0]),$=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=$,$=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=$,_t[(0|St[O>>2])+(St[W>>2]<<1)>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[W>>2]=(0|St[W>>2])+(0|St[W>>2])):(St[v>>2]=(0|St[v>>2])-$,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[(0|St[O>>2])+(St[W>>2]<<1)>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[W>>2]=(0|St[W>>2])+(0|St[W>>2])+1,St[H>>2]=4|St[H>>2]),St[R>>2]=re[(0|St[O>>2])+(St[W>>2]<<1)>>1],(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,$=St[M>>2]<<8,e=0|St[y>>2],St[y>>2]=e+1,St[M>>2]=0|$|mt[e>>0]),e=0|wt((0|St[v>>2])>>>11,0|St[R>>2]),St[A>>2]=e,e=0|St[A>>2],(0|St[M>>2])>>>0<(0|St[A>>2])>>>0?(St[v>>2]=e,_t[(0|St[O>>2])+(St[W>>2]<<1)>>1]=(0|St[R>>2])+((2048-(0|St[R>>2])|0)>>>5),St[W>>2]=(0|St[W>>2])+(0|St[W>>2])):(St[v>>2]=(0|St[v>>2])-e,St[M>>2]=(0|St[M>>2])-(0|St[A>>2]),_t[(0|St[O>>2])+(St[W>>2]<<1)>>1]=(0|St[R>>2])-((0|St[R>>2])>>>5),St[W>>2]=(0|St[W>>2])+(0|St[W>>2])+1,St[H>>2]=8|St[H>>2]),-1==(0|St[H>>2])){J=130;break e}}}while(0);if(St[E>>2]=St[d>>2],St[d>>2]=St[c>>2],St[c>>2]=St[l>>2],St[l>>2]=1+(0|St[H>>2]),e=0|St[H>>2],0|St[F>>2]){if(e>>>0>=(0|St[F>>2])>>>0){J=135;break e}}else if(e>>>0>=(0|St[k>>2])>>>0){J=133;break e}St[f>>2]=(0|St[f>>2])>>>0<19?7:10}if(St[w>>2]=2+(0|St[w>>2]),(0|St[a>>2])==(0|St[b>>2])){J=138;break e}if(St[j>>2]=(0|St[a>>2])-(0|St[b>>2]),St[X>>2]=(0|St[j>>2])>>>0<(0|St[w>>2])>>>0?0|St[j>>2]:0|St[w>>2],St[G>>2]=(0|St[b>>2])-(0|St[l>>2])+((0|St[b>>2])>>>0<(0|St[l>>2])>>>0?0|St[p>>2]:0),St[k>>2]=(0|St[k>>2])+(0|St[X>>2]),St[w>>2]=(0|St[w>>2])-(0|St[X>>2]),((0|St[G>>2])+(0|St[X>>2])|0)>>>0>(0|St[p>>2])>>>0)for(;;)if(e=0|Et[(0|St[h>>2])+(0|St[G>>2])>>0],$=0|St[b>>2],St[b>>2]=$+1,Et[(0|St[h>>2])+$>>0]=e,e=1+(0|St[G>>2])|0,St[G>>2]=e,St[G>>2]=(0|e)==(0|St[p>>2])?0:e,e=(0|St[X>>2])-1|0,!(St[X>>2]=e))break r;for(St[q>>2]=(0|St[h>>2])+(0|St[b>>2]),St[Q>>2]=(0|St[G>>2])-(0|St[b>>2]),St[Z>>2]=(0|St[q>>2])+(0|St[X>>2]),St[b>>2]=(0|St[b>>2])+(0|St[X>>2]);Et[St[q>>2]>>0]=0|Et[(0|St[q>>2])+(0|St[Q>>2])>>0],e=1+(0|St[q>>2])|0,St[q>>2]=e,(0|e)!=(0|St[Z>>2]););}}while(0)}while(!((0|St[b>>2])>>>0>=(0|St[a>>2])>>>0)&&(0|St[y>>2])>>>0<(0|St[u>>2])>>>0);{if(28==(0|J))return St[i>>2]=1,ee=0|St[i>>2],pt=n,0|ee;if(130==(0|J))St[w>>2]=274+(0|St[w>>2]),St[f>>2]=(0|St[f>>2])-12;else{if(133==(0|J))return St[i>>2]=1,ee=0|St[i>>2],pt=n,0|ee;if(135==(0|J))return St[i>>2]=1,ee=0|St[i>>2],pt=n,0|ee;if(138==(0|J))return St[i>>2]=1,ee=0|St[i>>2],pt=n,0|ee}}(0|St[v>>2])>>>0<16777216&&(St[v>>2]=St[v>>2]<<8,J=St[M>>2]<<8,u=0|St[y>>2],St[y>>2]=u+1,St[M>>2]=0|J|mt[u>>0]);return St[24+(0|St[o>>2])>>2]=St[y>>2],St[28+(0|St[o>>2])>>2]=St[v>>2],St[32+(0|St[o>>2])>>2]=St[M>>2],St[72+(0|St[o>>2])>>2]=St[w>>2],St[36+(0|St[o>>2])>>2]=St[b>>2],St[44+(0|St[o>>2])>>2]=St[k>>2],St[56+(0|St[o>>2])>>2]=St[l>>2],St[56+(0|St[o>>2])+4>>2]=St[c>>2],St[56+(0|St[o>>2])+8>>2]=St[d>>2],St[56+(0|St[o>>2])+12>>2]=St[E>>2],St[52+(0|St[o>>2])>>2]=St[f>>2],St[i>>2]=0,ee=0|St[i>>2],pt=n,0|ee}(0|St[i>>2],0|St[u>>2],0|St[a>>2]),St[f>>2]=t,0|St[f>>2]){l=6;break}}while(((0|St[44+(0|St[i>>2])>>2])>>>0>=(0|St[12+(0|St[i>>2])>>2])>>>0&&(St[48+(0|St[i>>2])>>2]=St[12+(0|St[i>>2])>>2]),we(0|St[i>>2],0|St[o>>2]),!((0|St[36+(0|St[i>>2])>>2])>>>0>=(0|St[o>>2])>>>0))&&(!((0|St[24+(0|St[i>>2])>>2])>>>0>=(0|St[a>>2])>>>0)&&(0|St[72+(0|St[i>>2])>>2])>>>0<274));return pt=(c=6==(0|l)?(St[n>>2]=St[f>>2],0|St[n>>2]):(274<(0|St[72+(0|St[i>>2])>>2])>>>0&&(St[72+(0|St[i>>2])>>2]=274),(St[n>>2]=0)|St[n>>2]),d),0|c}function Oe(e,r){e|=0,r|=0;var t,n,i=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(t=(n=i)+4|0)>>2]=e,St[n>>2]=r,or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[16+(0|St[t>>2])>>2]),St[16+(0|St[t>>2])>>2]=0,pt=i}function Ae(e,r,t,n){e|=0,r|=0,t|=0,n|=0;var i,o,a,u,s,f,l=0,c=0,d=0,E=pt;return(0|bt)<=(0|(pt=pt+48|0))&&yt(48),i=E+40|0,a=E+32|0,u=E+28|0,s=E+24|0,f=E+8|0,l=E+4|0,St[(o=(c=E)+36|0)>>2]=e,St[a>>2]=r,St[u>>2]=t,St[s>>2]=n,n=0|function(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u,s,f=0,l=pt;return(0|bt)<=(0|(pt=pt+32|0))&&yt(32),n=l+16|0,o=l+8|0,a=l+4|0,s=(u=l)+20|0,St[(i=l+12|0)>>2]=e,St[o>>2]=r,St[a>>2]=t,pt=(f=(0|St[a>>2])>>>0<5?(St[n>>2]=4,0|St[n>>2]):(a=0|mt[1+(0|St[o>>2])>>0]|(0|mt[2+(0|St[o>>2])>>0])<<8|(0|mt[3+(0|St[o>>2])>>0])<<16|(0|mt[4+(0|St[o>>2])>>0])<<24,St[u>>2]=a,St[u>>2]=(0|St[u>>2])>>>0<4096?4096:a,St[12+(0|St[i>>2])>>2]=St[u>>2],Et[s>>0]=0|Et[St[o>>2]>>0],225<=(0|mt[s>>0])?(St[n>>2]=4,0|St[n>>2]):(St[St[i>>2]>>2]=(0|mt[s>>0])%9|0,Et[s>>0]=(0|mt[s>>0])/9|0,St[8+(0|St[i>>2])>>2]=(0|mt[s>>0])/5|0,St[4+(0|St[i>>2])>>2]=(0|mt[s>>0])%5|0,(St[n>>2]=0)|St[n>>2])),l),0|f}(f,0|St[a>>2],0|St[u>>2]),St[l>>2]=n,pt=(d=0|St[l>>2]?(St[i>>2]=St[l>>2],0|St[i>>2]):(l=0|function(e,r,t){e|=0,r|=0,t|=0;var n=0,i=0,o=0,a=0,u=0,s=0,f=0,l=0;(0|(pt=(n=pt)+32|0))>=(0|bt)&&yt(32);i=n+16|0,a=n+8|0,u=n+4|0,St[(o=(s=n)+12|0)>>2]=e,St[a>>2]=r,St[u>>2]=t,St[s>>2]=1846+(768<<(0|St[St[a>>2]>>2])+(0|St[4+(0|St[a>>2])>>2])),0!=(0|St[16+(0|St[o>>2])>>2])&&(0|St[s>>2])==(0|St[84+(0|St[o>>2])>>2])||(f=3);if(3==(0|f)&&(Oe(0|St[o>>2],0|St[u>>2]),f=0|sr[3&St[St[u>>2]>>2]](0|St[u>>2],St[s>>2]<<1),St[16+(0|St[o>>2])>>2]=f,St[84+(0|St[o>>2])>>2]=St[s>>2],0==(0|St[16+(0|St[o>>2])>>2])))return St[i>>2]=2,l=0|St[i>>2],pt=n,0|l;return St[i>>2]=0,l=0|St[i>>2],pt=n,0|l}(0|St[o>>2],f,0|St[s>>2]),St[c>>2]=l,0|St[c>>2]?(St[i>>2]=St[c>>2],0|St[i>>2]):(c=0|St[o>>2],St[c>>2]=St[f>>2],St[c+4>>2]=St[4+f>>2],St[c+8>>2]=St[8+f>>2],St[c+12>>2]=St[12+f>>2],(St[i>>2]=0)|St[i>>2])),E),0|d}function Re(e,r,t,n,i,o,a,u,s,f){e|=0,r|=0,t|=0,n|=0,i|=0,o|=0,a|=0,u|=0,s|=0,f|=0;var l,c,d,E,_,S,m,h,p,b,k,F,w=pt;for((0|bt)<=(0|(pt=pt+64|0))&&yt(64),c=w+52|0,d=w+48|0,_=(E=w)+44|0,S=w+40|0,m=w+36|0,h=w+32|0,p=w+28|0,b=w+16|0,k=w+12|0,F=w+8|0,St[(l=w+56|0)>>2]=e,St[c>>2]=r,St[d>>2]=t,St[(t=E)>>2]=n,St[t+4>>2]=i,St[_>>2]=o,St[S>>2]=a,St[m>>2]=u,St[h>>2]=s,St[p>>2]=f,St[b>>2]=0,St[4+b>>2]=0,f=E,E=(St[8+b>>2]=0)|function(e,r,t,n,i,o,a,u,s,f,l){e|=0,r|=0,t|=0,n|=0,i|=0,o|=0,a|=0,u|=0,s|=0,f|=0,l|=0;var c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0,R=0,g=0,T=0,N=0,D=0,P=0,C=0,I=0,L=0,x=0,B=0,H=0,U=0,z=0,Y=0,V=0,K=0,W=0,j=0,X=0,G=0,q=0;(0|(pt=(c=pt)+192|0))>=(0|bt)&&yt(192);if(d=c+180|0,_=c+172|0,S=c+168|0,m=c+40|0,h=c+164|0,p=c+160|0,b=c+156|0,k=c+152|0,F=c+148|0,w=c+144|0,y=c+140|0,v=c+128|0,M=c+124|0,O=c+120|0,A=c+116|0,R=c+112|0,g=c+108|0,T=c+32|0,N=c+24|0,D=c+104|0,P=c+100|0,C=c+88|0,I=c+16|0,L=c+84|0,x=c+80|0,B=c+76|0,H=c+72|0,U=c+68|0,z=c+8|0,V=(Y=c)+64|0,K=c+60|0,W=c+56|0,j=c+52|0,X=c+48|0,St[(E=c+176|0)>>2]=e,St[_>>2]=r,St[S>>2]=t,St[(t=m)>>2]=n,St[t+4>>2]=i,St[h>>2]=o,St[p>>2]=a,St[b>>2]=u,St[k>>2]=s,St[F>>2]=f,St[w>>2]=l,St[v>>2]=0,St[4+v>>2]=0,St[8+v>>2]=0,St[M>>2]=0,St[O>>2]=0,l=0|function(e){e|=0;var r=0,t=0,n=0,i=0,o=0,a=0,u=0;(0|(pt=(r=pt)+16|0))>=(0|bt)&&yt(16);if(t=r+8|0,St[(n=(i=r)+4|0)>>2]=e,1<=(0|St[16+(0|St[n>>2])>>2])>>>0&&(0|St[16+(0|St[n>>2])>>2])>>>0<=4){if(!(0|De(0|St[St[n>>2]>>2])))return St[t>>2]=4,o=0|St[t>>2],pt=r,0|o;if(e=0|St[n>>2],1==(0|St[16+(0|St[n>>2])>>2]))return pt=(o=(1==(0|St[e+24>>2])&&0==(0|St[St[8+(0|St[n>>2])>>2]>>2])&&0==(0|St[20+(0|St[n>>2])>>2])?St[t>>2]=0:St[t>>2]=4,0|St[t>>2]),r),0|o;if(a=0|St[n>>2],2==(0|St[e+16>>2])){if(St[i>>2]=24+(0|St[a>>2]),e=8+(0|St[i>>2])|0,!(0<(u=0|St[e+4>>2])>>>0|0==(0|u)&4294967295<(0|St[e>>2])>>>0||1!=(0|St[St[i>>2]>>2])||1!=(0|St[4+(0|St[i>>2])>>2])||1!=(0|St[24+(0|St[n>>2])>>2])||0!=(0|St[St[8+(0|St[n>>2])>>2]>>2])||1!=(0|St[20+(0|St[n>>2])>>2])||1!=(0|St[St[4+(0|St[n>>2])>>2]>>2]))&&0==(0|St[4+(0|St[4+(0|St[n>>2])>>2])>>2]))switch(0|St[8+(0|St[i>>2])>>2]){case 50529537:case 50528515:return St[t>>2]=0,o=0|St[t>>2],pt=r,0|o;default:return St[t>>2]=4,o=0|St[t>>2],pt=r,0|o}return St[t>>2]=4,o=0|St[t>>2],pt=r,0|o}if(4!=(0|St[a+16>>2]))return St[t>>2]=4,o=0|St[t>>2],pt=r,0|o;if(0|De(24+(0|St[St[n>>2]>>2])|0)&&0|De(48+(0|St[St[n>>2]>>2])|0)&&(a=72+(0|St[St[n>>2]>>2])+8|0,50528539==(0|St[a>>2])&0==(0|St[a+4>>2]))&&4==(0|St[72+(0|St[St[n>>2]>>2])>>2])&&1==(0|St[72+(0|St[St[n>>2]>>2])+4>>2])){do{if(4==(0|St[24+(0|St[n>>2])>>2])&&2==(0|St[St[8+(0|St[n>>2])>>2]>>2])&&6==(0|St[4+(0|St[8+(0|St[n>>2])>>2])>>2])&&1==(0|St[8+(0|St[8+(0|St[n>>2])>>2])>>2])&&0==(0|St[12+(0|St[8+(0|St[n>>2])>>2])>>2])&&3==(0|St[20+(0|St[n>>2])>>2])){if(5!=(0|St[St[4+(0|St[n>>2])>>2]>>2]))break;if(0|St[4+(0|St[4+(0|St[n>>2])>>2])>>2])break;if(4!=(0|St[8+(0|St[4+(0|St[n>>2])>>2])>>2]))break;if(1!=(0|St[8+(0|St[4+(0|St[n>>2])>>2])+4>>2]))break;if(3!=(0|St[16+(0|St[4+(0|St[n>>2])>>2])>>2]))break;if(2!=(0|St[16+(0|St[4+(0|St[n>>2])>>2])+4>>2]))break;return St[t>>2]=0,o=0|St[t>>2],pt=r,0|o}}while(0);return St[t>>2]=4,o=0|St[t>>2],pt=r,0|o}return St[t>>2]=4,o=0|St[t>>2],pt=r,0|o}return St[t>>2]=4,o=0|St[t>>2],pt=r,0|o}(0|St[E>>2]),St[A>>2]=l,0|St[A>>2])return St[d>>2]=St[A>>2],G=0|St[d>>2],pt=c,0|G;St[y>>2]=0;e:for(;;){if((0|St[y>>2])>>>0>=(0|St[16+(0|St[E>>2])>>2])>>>0){q=55;break}St[R>>2]=(0|St[St[E>>2]>>2])+(24*(0|St[y>>2])|0);r:do{if(0|ge(0|St[8+(0|St[R>>2])>>2])){St[g>>2]=0,St[D>>2]=St[h>>2],St[P>>2]=St[p>>2];do{if(4==(0|St[16+(0|St[E>>2])>>2])){if(St[C>>2]=St[2],St[4+C>>2]=St[3],St[8+C>>2]=St[4],A=(0|St[12+(0|St[E>>2])>>2])+(St[y>>2]<<3)|0,l=0|St[A+4>>2],St[(f=I)>>2]=St[A>>2],St[f+4>>2]=l,St[g>>2]=St[C+(St[y>>2]<<2)>>2],(0|St[y>>2])>>>0<2){if(St[P>>2]=St[I>>2],0!=(0|St[(l=I)+4>>2])||(0|St[P>>2])!=(0|St[l>>2])){q=9;break e}if(l=0|sr[3&St[St[b>>2]>>2]](0|St[b>>2],0|St[P>>2]),St[L>>2]=l,0==(0|St[L>>2])&0!=(0|St[P>>2])){q=11;break e}l=0|St[L>>2],St[(0|St[k>>2])+(1-(0|St[y>>2])<<2)>>2]=l,St[D>>2]=l,St[v+(1-(0|St[y>>2])<<2)>>2]=St[P>>2];break}if(2!=(0|St[y>>2])){q=17;break e}if(0<(f=0|St[(l=I)+4>>2])>>>0|(0==(0|f)?(0|St[l>>2])>>>0>(0|St[p>>2])>>>0:0)){q=15;break e}l=(0|St[h>>2])+((0|St[p>>2])-(0|St[I>>2]))|0,St[D>>2]=l,St[O>>2]=l,l=0|St[I>>2],St[P>>2]=l,St[M>>2]=l;break}}while(0);if(l=0|Te(0|St[_>>2],0|St[g>>2]),St[(f=T)>>2]=l,St[f+4>>2]=Ft,f=(0|St[_>>2])+(St[g>>2]<<3)|0,l=0|St[f+4>>2],St[(A=N)>>2]=St[f>>2],St[A+4>>2]=l,l=0|St[S>>2],f=T,s=0|Dt(0|St[(A=m)>>2],0|St[A+4>>2],0|St[f>>2],0|St[f+4>>2]),f=0|he(l,s,Ft),St[x>>2]=f,0|St[x>>2]){q=19;break e}if(f=8+(0|St[R>>2])|0,0==(0|St[f>>2])&0==(0|St[f+4>>2])){if(0|St[(f=N)+4>>2]||(0|St[f>>2])!=(0|St[P>>2])){q=22;break e}if(s=0|Ne(0|St[(f=N)>>2],0|St[f+4>>2],0|St[S>>2],0|St[D>>2],0|St[F>>2],0|St[w>>2]),St[B>>2]=s,0|St[B>>2]){q=24;break e}break}if(s=8+(0|St[R>>2])|0,f=0|St[R>>2],196865==(0|St[s>>2])&0==(0|St[s+4>>2])){if(l=0|function(e,r,t,n,i,o,a,u,s){e|=0,r|=0,t|=0,n|=0,i|=0,o|=0,a|=0,u|=0,s|=0;var f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0,R=0;(0|(pt=(f=pt)+192|0))>=(0|bt)&&yt(192);if(l=f+180|0,E=(d=f)+172|0,_=f+168|0,S=f+164|0,m=f+160|0,h=f+156|0,p=f+152|0,b=f+40|0,k=f+32|0,F=f+28|0,w=f+24|0,y=f+20|0,v=f+16|0,M=f+12|0,O=f+8|0,St[(c=f+176|0)>>2]=e,St[(e=d)>>2]=r,St[e+4>>2]=t,St[E>>2]=n,St[_>>2]=i,St[S>>2]=o,St[m>>2]=a,St[h>>2]=u,St[p>>2]=s,St[k>>2]=0,St[20+b>>2]=0,St[16+b>>2]=0,s=0|Ae(b,0|St[16+(0|St[c>>2])>>2],0|St[16+(0|St[c>>2])+4>>2],0|St[m>>2]),St[F>>2]=s,0|St[F>>2])return St[l>>2]=St[F>>2],A=0|St[l>>2],pt=f,0|A;St[20+b>>2]=St[_>>2],St[40+b>>2]=St[S>>2],ke(b),St[p>>2]=(0|St[p>>2])+(0|St[S>>2]);do{if(St[w>>2]=0,St[y>>2]=262144,(F=0|St[(_=d)+4>>2])>>>0<0|(0==(0|F)?(0|St[y>>2])>>>0>(0|St[_>>2])>>>0:0)&&(St[y>>2]=St[d>>2]),_=0|nr[15&St[St[E>>2]>>2]](0|St[E>>2],w,y),St[k>>2]=_,0|St[k>>2])break;if(St[v>>2]=St[y>>2],St[M>>2]=St[36+b>>2],_=0|Fe(b,0|St[S>>2],0|St[w>>2],v,1,O),St[k>>2]=_,St[y>>2]=(0|St[y>>2])-(0|St[v>>2]),F=0|Nt(0|St[(_=d)>>2],0|St[_+4>>2],0|St[v>>2],0),St[(_=d)>>2]=F,St[_+4>>2]=Ft,Q(2,(0|St[p>>2])-(0|St[S>>2])+(0|St[M>>2])|0,0|St[h>>2]),0|St[k>>2])break;if((0|St[36+b>>2])==(0|St[40+b>>2])){R=11;break}if(0==(0|St[v>>2])&&(0|St[M>>2])==(0|St[36+b>>2])){R=11;break}}while(_=0|sr[3&St[4+(0|St[E>>2])>>2]](0|St[E>>2],0|St[v>>2]),St[k>>2]=_,!(0|St[k>>2]));do{if(11==(0|R)){if(!(0|St[y>>2]||(0|St[40+b>>2])!=(0|St[S>>2]))&&!(1!=(0|St[O>>2])&4!=(0|St[O>>2])))break;St[k>>2]=1}}while(0);return Oe(b,0|St[m>>2]),St[l>>2]=St[k>>2],A=0|St[l>>2],pt=f,0|A}(f,0|St[(s=N)>>2],0|St[s+4>>2],0|St[S>>2],0|St[D>>2],0|St[P>>2],0|St[b>>2],0|St[F>>2],0|St[w>>2]),St[H>>2]=l,0|St[H>>2]){q=27;break e}break}if(!(33==(0|St[(l=f+8|0)>>2])&0==(0|St[l+4>>2]))){q=31;break e}if(l=N,f=0|function(e,r,t,n,i,o,a,u,s){e|=0,r|=0,t|=0,n|=0,i|=0,o|=0,a|=0,u|=0,s|=0;var f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0,R=0;(0|(pt=(f=pt)+208|0))>=(0|bt)&&yt(208);if(l=f+204|0,E=(d=f)+196|0,_=f+192|0,S=f+188|0,m=f+184|0,h=f+180|0,p=f+176|0,b=f+36|0,k=f+32|0,F=f+28|0,w=f+24|0,y=f+20|0,v=f+16|0,M=f+12|0,O=f+8|0,St[(c=f+200|0)>>2]=e,St[(e=d)>>2]=r,St[e+4>>2]=t,St[E>>2]=n,St[_>>2]=i,St[S>>2]=o,St[m>>2]=a,St[h>>2]=u,St[p>>2]=s,St[k>>2]=0,St[20+b>>2]=0,St[16+b>>2]=0,1!=(0|St[16+(0|St[c>>2])+4>>2]))return St[l>>2]=1,A=0|St[l>>2],pt=f,0|A;if(s=0|function(e,r,t){e|=0,r|=0,t|=0;var n=0,i=0,o=0,a=0,u=0,s=0,f=0,l=0;(0|(pt=(n=pt)+32|0))>=(0|bt)&&yt(32);return i=n+12|0,a=n+21|0,u=n+4|0,s=n+16|0,St[(o=(f=n)+8|0)>>2]=e,Et[a>>0]=r,St[u>>2]=t,t=0|function(e,r){e|=0,r|=0;var t=0,n=0,i=0,o=0,a=0,u=0,s=0;(0|(pt=(t=pt)+16|0))>=(0|bt)&&yt(16);if(n=t+8|0,o=t+4|0,Et[(i=(a=t)+12|0)>>0]=e,St[o>>2]=r,40<(0|mt[i>>0]))return St[n>>2]=4,u=0|St[n>>2],pt=t,0|u;s=40==(0|mt[i>>0])?-1:(2|1&(0|mt[i>>0]))<<11+((0|mt[i>>0])/2|0);return St[a>>2]=s,Et[St[o>>2]>>0]=4,Et[1+(0|St[o>>2])>>0]=St[a>>2],Et[2+(0|St[o>>2])>>0]=(0|St[a>>2])>>>8,Et[3+(0|St[o>>2])>>0]=(0|St[a>>2])>>>16,Et[4+(0|St[o>>2])>>0]=(0|St[a>>2])>>>24,St[n>>2]=0,u=0|St[n>>2],pt=t,0|u}(0|Et[a>>0],s),St[f>>2]=t,pt=(l=(0|St[f>>2]?St[i>>2]=St[f>>2]:(f=0|Ae(0|St[o>>2],s,5,0|St[u>>2]),St[i>>2]=f),0|St[i>>2]),n),0|l}(b,0|Et[St[16+(0|St[c>>2])>>2]>>0],0|St[m>>2]),St[F>>2]=s,0|St[F>>2])return St[l>>2]=St[F>>2],A=0|St[l>>2],pt=f,0|A;St[20+b>>2]=St[_>>2],St[40+b>>2]=St[S>>2],function(e){e|=0;var r=0,t=0;(0|(pt=(r=pt)+16|0))>=(0|bt)&&yt(16),St[(t=r)>>2]=e,St[120+(0|St[t>>2])>>2]=0,St[128+(0|St[t>>2])>>2]=1,St[132+(0|St[t>>2])>>2]=1,St[136+(0|St[t>>2])>>2]=1,ke(0|St[t>>2]),pt=r}(b),St[p>>2]=(0|St[p>>2])+(0|St[S>>2]);do{if(St[w>>2]=0,St[y>>2]=262144,(F=0|St[(_=d)+4>>2])>>>0<0|(0==(0|F)?(0|St[y>>2])>>>0>(0|St[_>>2])>>>0:0)&&(St[y>>2]=St[d>>2]),_=0|nr[15&St[St[E>>2]>>2]](0|St[E>>2],w,y),St[k>>2]=_,0|St[k>>2])break;if(St[v>>2]=St[y>>2],St[M>>2]=St[36+b>>2],_=0|function(e,r,t,n,i,o){e|=0,r|=0,t|=0,n|=0,i|=0,o|=0;var a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0;(0|(pt=(a=pt)+80|0))>=(0|bt)&&yt(80);u=a+72|0,f=a+64|0,l=a+60|0,c=a+56|0,d=a+52|0,E=a+48|0,_=a+44|0,S=a+40|0,m=a+36|0,h=a+32|0,p=a+28|0,b=a+24|0,k=a+20|0,F=a+16|0,w=a+12|0,y=a+8|0,v=a+4|0,St[(s=(M=a)+68|0)>>2]=e,St[f>>2]=r,St[l>>2]=t,St[c>>2]=n,St[d>>2]=i,St[E>>2]=o,St[_>>2]=St[St[c>>2]>>2],St[St[c>>2]>>2]=0,St[St[E>>2]>>2]=0;for(;;){if(8==(0|St[120+(0|St[s>>2])>>2])){O=49;break}if(St[S>>2]=St[36+(0|St[s>>2])>>2],9==(0|St[120+(0|St[s>>2])>>2])){O=4;break}if(0==(0|St[d>>2])&&(0|St[S>>2])==(0|St[f>>2])){O=6;break}if(6==(0|St[120+(0|St[s>>2])>>2])||7==(0|St[120+(0|St[s>>2])>>2]))if(St[m>>2]=(0|St[f>>2])-(0|St[S>>2]),St[h>>2]=(0|St[_>>2])-(0|St[St[c>>2]>>2]),((St[p>>2]=0)|St[116+(0|St[s>>2])>>2])>>>0<=(0|St[m>>2])>>>0&&(St[m>>2]=St[116+(0|St[s>>2])>>2],St[p>>2]=1),128&(0|mt[124+(0|St[s>>2])>>0])){if(6==(0|St[120+(0|St[s>>2])>>2])){if(St[w>>2]=(0|mt[124+(0|St[s>>2])>>0])>>5&3,St[y>>2]=3==(0|St[w>>2])&1,St[v>>2]=0<(0|St[w>>2])&1,0==(0|St[y>>2])&&0|St[128+(0|St[s>>2])>>2]){O=33;break}if(0==(0|St[v>>2])&&0|St[132+(0|St[s>>2])>>2]){O=33;break}be(0|St[s>>2],0|St[y>>2],0|St[v>>2]),St[128+(0|St[s>>2])>>2]=0,St[132+(0|St[s>>2])>>2]=0,St[120+(0|St[s>>2])>>2]=7}if((0|St[h>>2])>>>0>(0|St[112+(0|St[s>>2])>>2])>>>0&&(St[h>>2]=St[112+(0|St[s>>2])>>2]),n=0|Fe(0|St[s>>2],(0|St[S>>2])+(0|St[m>>2])|0,0|St[l>>2],h,0|St[p>>2],0|St[E>>2]),St[F>>2]=n,St[l>>2]=(0|St[l>>2])+(0|St[h>>2]),n=0|St[c>>2],St[n>>2]=(0|St[n>>2])+(0|St[h>>2]),n=112+(0|St[s>>2])|0,St[n>>2]=(0|St[n>>2])-(0|St[h>>2]),St[k>>2]=(0|St[36+(0|St[s>>2])>>2])-(0|St[S>>2]),n=116+(0|St[s>>2])|0,St[n>>2]=(0|St[n>>2])-(0|St[k>>2]),St[M>>2]=St[F>>2],0|St[M>>2]){O=38;break}if(3==(0|St[St[E>>2]>>2])){O=40;break}if(0==(0|St[h>>2])&0==(0|St[k>>2])){if(4!=(0|St[St[E>>2]>>2])){O=45;break}if(0|St[116+(0|St[s>>2])>>2]){O=45;break}if(0|St[112+(0|St[s>>2])>>2]){O=45;break}St[120+(0|St[s>>2])>>2]=0}4==(0|St[St[E>>2]>>2])&&(St[St[E>>2]>>2]=2)}else{if((0|St[St[c>>2]>>2])==(0|St[_>>2])){O=16;break}if(6==(0|St[120+(0|St[s>>2])>>2])){if(St[b>>2]=1==(0|mt[124+(0|St[s>>2])>>0])&1,n=0|St[s>>2],0|St[b>>2])St[n+132>>2]=1,St[136+(0|St[s>>2])>>2]=1;else if(0|St[n+128>>2]){O=21;break}be((St[128+(0|St[s>>2])>>2]=0)|St[s>>2],0|St[b>>2],0)}if((0|St[h>>2])>>>0>(0|St[m>>2])>>>0&&(St[h>>2]=St[m>>2]),!(0|St[h>>2])){O=26;break}!function(e,r,t){e|=0,r|=0,t|=0;var n=0,i=0,o=0,a=0;(0|(pt=(n=pt)+16|0))>=(0|bt)&&yt(16),o=n+4|0,St[(i=(a=n)+8|0)>>2]=e,St[o>>2]=r,St[a>>2]=t,Je((0|St[20+(0|St[i>>2])>>2])+(0|St[36+(0|St[i>>2])>>2])|0,0|St[o>>2],0|St[a>>2]),o=36+(0|St[i>>2])|0,St[o>>2]=(0|St[o>>2])+(0|St[a>>2]),0==(0|St[48+(0|St[i>>2])>>2])&&((0|St[12+(0|St[i>>2])>>2])-(0|St[44+(0|St[i>>2])>>2])|0)>>>0<=(0|St[a>>2])>>>0&&(St[48+(0|St[i>>2])>>2]=St[12+(0|St[i>>2])>>2]),o=44+(0|St[i>>2])|0,St[o>>2]=(0|St[o>>2])+(0|St[a>>2]),pt=n}(0|St[s>>2],0|St[l>>2],0|St[h>>2]),St[l>>2]=(0|St[l>>2])+(0|St[h>>2]),n=0|St[c>>2],St[n>>2]=(0|St[n>>2])+(0|St[h>>2]),n=116+(0|St[s>>2])|0,St[n>>2]=(0|St[n>>2])-(0|St[h>>2]),St[120+(0|St[s>>2])>>2]=0==(0|St[116+(0|St[s>>2])>>2])?0:7}else{if((0|St[St[c>>2]>>2])==(0|St[_>>2])){O=10;break}o=0|St[c>>2],St[o>>2]=1+(0|St[o>>2]),o=0|St[s>>2],i=0|St[l>>2],St[l>>2]=i+1,n=0|function(e,r){e|=0,r|=0;var t=0,n=0,i=0,o=0,a=0,u=0,s=0,f=0;(0|(pt=(t=pt)+32|0))>=(0|bt)&&yt(32);switch(n=t+12|0,o=t+16|0,a=t+4|0,St[(i=(u=t)+8|0)>>2]=e,Et[o>>0]=r,0|St[120+(0|St[i>>2])>>2]){case 0:if(Et[124+(0|St[i>>2])>>0]=0|Et[o>>0],!(0|mt[124+(0|St[i>>2])>>0]))return St[n>>2]=8,s=0|St[n>>2],pt=t,0|s;r=0|mt[124+(0|St[i>>2])>>0];do{if(!(128&(0|mt[124+(0|St[i>>2])>>0]))){if((127&r|0)<=2){St[116+(0|St[i>>2])>>2]=0;break}return St[n>>2]=9,s=0|St[n>>2],pt=t,0|s}}while(St[116+(0|St[i>>2])>>2]=(31&r)<<16,0);return St[n>>2]=1,s=0|St[n>>2],pt=t,0|s;case 1:return r=116+(0|St[i>>2])|0,St[r>>2]=St[r>>2]|(0|mt[o>>0])<<8,St[n>>2]=2,s=0|St[n>>2],pt=t,0|s;case 2:return r=116+(0|St[i>>2])|0,St[r>>2]=0|St[r>>2]|mt[o>>0],r=116+(0|St[i>>2])|0,St[r>>2]=1+(0|St[r>>2]),St[n>>2]=0==(128&(0|mt[124+(0|St[i>>2])>>0])|0)?6:3,s=0|St[n>>2],pt=t,0|s;case 3:return St[112+(0|St[i>>2])>>2]=(0|mt[o>>0])<<8,St[n>>2]=4,s=0|St[n>>2],pt=t,0|s;case 4:return r=112+(0|St[i>>2])|0,St[r>>2]=0|St[r>>2]|mt[o>>0],r=112+(0|St[i>>2])|0,St[r>>2]=1+(0|St[r>>2]),f=2<=((0|mt[124+(0|St[i>>2])>>0])>>5&3|0)?5:0|St[136+(0|St[i>>2])>>2]?9:6,St[n>>2]=f,s=0|St[n>>2],pt=t,0|s;case 5:return pt=(s=(225<=(0|mt[o>>0])?St[n>>2]=9:(St[a>>2]=(0|mt[o>>0])%9|0,Et[o>>0]=(0|mt[o>>0])/9|0,St[8+(0|St[i>>2])>>2]=(0|mt[o>>0])/5|0,St[u>>2]=(0|mt[o>>0])%5|0,4<((0|St[a>>2])+(0|St[u>>2])|0)?St[n>>2]=9:(St[St[i>>2]>>2]=St[a>>2],St[4+(0|St[i>>2])>>2]=St[u>>2],St[136+(0|St[i>>2])>>2]=0,St[n>>2]=6)),0|St[n>>2]),t),0|s;default:return St[n>>2]=9,s=0|St[n>>2],pt=t,0|s}return 0}(o,0|Et[i>>0]),St[120+(0|St[s>>2])>>2]=n}}switch(0|O){case 4:return St[u>>2]=1,A=0|St[u>>2],pt=a,0|A;case 6:return St[St[E>>2]>>2]=2,St[u>>2]=0,A=0|St[u>>2],pt=a,0|A;case 10:case 16:return St[St[E>>2]>>2]=3,St[u>>2]=0,A=0|St[u>>2],pt=a,0|A;case 21:case 26:case 33:return St[u>>2]=1,A=0|St[u>>2],pt=a,0|A;case 38:return St[u>>2]=St[M>>2],A=0|St[u>>2],pt=a,0|A;case 40:return St[u>>2]=St[F>>2],A=0|St[u>>2],pt=a,0|A;case 45:return St[u>>2]=1,A=0|St[u>>2],pt=a,0|A;case 49:return St[St[E>>2]>>2]=1,St[u>>2]=0,A=0|St[u>>2],pt=a,0|A}return 0}(b,0|St[S>>2],0|St[w>>2],v,1,O),St[k>>2]=_,St[y>>2]=(0|St[y>>2])-(0|St[v>>2]),F=0|Nt(0|St[(_=d)>>2],0|St[_+4>>2],0|St[v>>2],0),St[(_=d)>>2]=F,St[_+4>>2]=Ft,Q(2,(0|St[p>>2])-(0|St[S>>2])+(0|St[M>>2])|0,0|St[h>>2]),0|St[k>>2])break;if((0|St[36+b>>2])==(0|St[40+b>>2])){R=13;break}if(0==(0|St[v>>2])&&(0|St[M>>2])==(0|St[36+b>>2])){R=13;break}}while(_=0|sr[3&St[4+(0|St[E>>2])>>2]](0|St[E>>2],0|St[v>>2]),St[k>>2]=_,!(0|St[k>>2]));13==(0|R)&&(0|St[y>>2]?1:(0|St[40+b>>2])!=(0|St[S>>2]))|1!=(0|St[O>>2])&&(St[k>>2]=1);return Oe(b,0|St[m>>2]),St[l>>2]=St[k>>2],A=0|St[l>>2],pt=f,0|A}(0|St[R>>2],0|St[l>>2],0|St[l+4>>2],0|St[S>>2],0|St[D>>2],0|St[P>>2],0|St[b>>2],0|St[F>>2],0|St[w>>2]),St[U>>2]=f,0|St[U>>2]){q=30;break e}}else{if(f=8+(0|St[R>>2])|0,!(50528539==(0|St[f>>2])&0==(0|St[f+4>>2]))){if(1!=(0|St[y>>2])){q=47;break e}switch(f=8+(0|St[R>>2])|0,l=0|St[f+4>>2],0|St[f>>2]){case 50528515:if(0|l){q=53;break e}(function(e,r,t,n,i){e|=0,r|=0,t|=0,n|=0,i|=0;var o,a,u,s,f,l,c,d,E,_,S,m,h,p,b,k,F=0,w=0,y=pt;if((0|bt)<=(0|(pt=pt+64|0))&&yt(64),o=y+52|0,u=y+44|0,s=y+40|0,f=y+36|0,l=y+32|0,c=y+28|0,d=y+24|0,E=y+20|0,_=y+16|0,S=y+12|0,m=y+57|0,h=y+8|0,p=y+4|0,b=y+56|0,St[(a=(k=y)+48|0)>>2]=e,St[u>>2]=r,St[s>>2]=t,St[f>>2]=n,St[l>>2]=i,St[c>>2]=0,St[E>>2]=7&St[St[f>>2]>>2],(0|St[u>>2])>>>0<5)return St[o>>2]=0,St[o>>2],pt=y;St[s>>2]=5+(0|St[s>>2]),St[d>>2]=-1;t:for(;;){for(St[_>>2]=(0|St[a>>2])+(0|St[c>>2]),St[S>>2]=(0|St[a>>2])+(0|St[u>>2])-4;!((0|St[_>>2])>>>0>=(0|St[S>>2])>>>0)&&232!=(254&mt[St[_>>2]>>0]|0);)St[_>>2]=1+(0|St[_>>2]);if(St[c>>2]=(0|St[_>>2])-(0|St[a>>2]),i=(0|St[_>>2])>>>0>=(0|St[S>>2])>>>0,St[d>>2]=(0|St[c>>2])-(0|St[d>>2]),F=3<(0|St[d>>2])>>>0,i)break;do{if(F)St[E>>2]=0;else if(St[E>>2]=St[E>>2]<<(0|St[d>>2])-1&7,0|St[E>>2]){if(Et[m>>0]=0|Et[(0|St[_>>2])+(4-(0|mt[360+(0|St[E>>2])>>0]))>>0],0|Et[352+(0|St[E>>2])>>0]&&0|mt[m>>0]&&255!=(0|mt[m>>0]))break;St[d>>2]=St[c>>2],St[E>>2]=St[E>>2]<<1&7|1,St[c>>2]=1+(0|St[c>>2]);continue t}}while(0);if(St[d>>2]=St[c>>2],0|mt[4+(0|St[_>>2])>>0]&&255!=(0|mt[4+(0|St[_>>2])>>0]))St[E>>2]=St[E>>2]<<1&7|1,St[c>>2]=1+(0|St[c>>2]);else{for(St[h>>2]=mt[4+(0|St[_>>2])>>0]<<24|mt[3+(0|St[_>>2])>>0]<<16|mt[2+(0|St[_>>2])>>0]<<8|mt[1+(0|St[_>>2])>>0];0|St[l>>2]?St[p>>2]=(0|St[s>>2])+(0|St[c>>2])+(0|St[h>>2]):St[p>>2]=(0|St[h>>2])-((0|St[s>>2])+(0|St[c>>2])),0|St[E>>2]&&(St[k>>2]=mt[360+(0|St[E>>2])>>0]<<3,Et[b>>0]=(0|St[p>>2])>>>(24-(0|St[k>>2])|0),!(0|mt[b>>0]&&255!=(0|mt[b>>0])));)St[h>>2]=St[p>>2]^(1<<32-(0|St[k>>2]))-1;Et[4+(0|St[_>>2])>>0]=~(((0|St[p>>2])>>>24&1)-1),Et[3+(0|St[_>>2])>>0]=(0|St[p>>2])>>>16,Et[2+(0|St[_>>2])>>0]=(0|St[p>>2])>>>8,Et[1+(0|St[_>>2])>>0]=St[p>>2],St[c>>2]=5+(0|St[c>>2])}}w=F?0:St[E>>2]<<(0|St[d>>2])-1&7,St[St[f>>2]>>2]=w,St[o>>2]=St[c>>2],St[o>>2],pt=y})((St[X>>2]=0)|St[h>>2],0|St[p>>2],0,X,0);break r;case 50529537:if(0|l){q=53;break e}!function(e,r,t,n){e|=0,r|=0,t|=0,n|=0;var i,o,a,u,s,f,l,c,d=0,E=pt;if((0|bt)<=(0|(pt=pt+32|0))&&yt(32),i=E+28|0,a=E+20|0,u=E+16|0,s=E+12|0,f=E+8|0,l=E+4|0,St[(o=(c=E)+24|0)>>2]=e,St[a>>2]=r,St[u>>2]=t,St[s>>2]=n,(0|St[a>>2])>>>0<4)return St[i>>2]=0,St[i>>2],pt=E;for(St[a>>2]=(0|St[a>>2])-4,St[u>>2]=8+(0|St[u>>2]),St[f>>2]=0;d=0|St[f>>2],!((0|St[f>>2])>>>0>(0|St[a>>2])>>>0);)235==(0|mt[(0|St[o>>2])+(d+3)>>0])&&(St[c>>2]=(0|mt[(0|St[o>>2])+(2+(0|St[f>>2]))>>0])<<16|(0|mt[(0|St[o>>2])+(1+(0|St[f>>2]))>>0])<<8|0|mt[(0|St[o>>2])+(0|St[f>>2])>>0],St[c>>2]=St[c>>2]<<2,0|St[s>>2]?St[l>>2]=(0|St[u>>2])+(0|St[f>>2])+(0|St[c>>2]):St[l>>2]=(0|St[c>>2])-((0|St[u>>2])+(0|St[f>>2])),St[l>>2]=(0|St[l>>2])>>>2,Et[(0|St[o>>2])+(2+(0|St[f>>2]))>>0]=(0|St[l>>2])>>>16,Et[(0|St[o>>2])+(1+(0|St[f>>2]))>>0]=(0|St[l>>2])>>>8,Et[(0|St[o>>2])+(0|St[f>>2])>>0]=St[l>>2]),St[f>>2]=4+(0|St[f>>2]);St[i>>2]=d,St[i>>2],pt=E}(0|St[h>>2],0|St[p>>2],0,0);break r;default:q=53;break e}}if(l=0|Te(0|St[_>>2],1),St[(f=z)>>2]=l,St[f+4>>2]=Ft,f=8+(0|St[_>>2])|0,l=0|St[f+4>>2],St[(s=Y)>>2]=St[f>>2],St[s+4>>2]=l,3!=(0|St[y>>2])){q=34;break e}if(l=0|St[S>>2],f=z,A=0|Dt(0|St[(s=m)>>2],0|St[s+4>>2],0|St[f>>2],0|St[f+4>>2]),f=0|he(l,A,Ft),St[K>>2]=f,0|St[K>>2]){q=36;break e}if(St[8+v>>2]=St[Y>>2],0!=(0|St[(f=Y)+4>>2])||(0|St[8+v>>2])!=(0|St[f>>2])){q=38;break e}if(f=0|sr[3&St[St[b>>2]>>2]](0|St[b>>2],0|St[8+v>>2]),St[8+(0|St[k>>2])>>2]=f,0==(0|St[8+(0|St[k>>2])>>2])&&0|St[8+v>>2]){q=41;break e}if(A=0|Ne(0|St[(f=Y)>>2],0|St[f+4>>2],0|St[S>>2],0|St[8+(0|St[k>>2])>>2],0|St[F>>2],0|St[w>>2]),St[V>>2]=A,St[W>>2]=St[V>>2],0|St[W>>2]){q=43;break e}if(A=0|function(e,r,t,n,i,o,a,u,s,f){e|=0,r|=0,t|=0,n|=0,i|=0,o|=0,a|=0,u|=0,s|=0,f|=0;var l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0,R=0,g=0,T=0,N=0,D=0,P=0,C=0,I=0,L=0,x=0,B=0,H=0;(0|(pt=(l=pt)+624|0))>=(0|bt)&&yt(624);c=l+92|0,E=l+84|0,_=l+80|0,S=l+76|0,m=l+72|0,h=l+68|0,p=l+64|0,b=l+60|0,k=l+56|0,F=l+52|0,w=l+96|0,y=l+48|0,v=l+44|0,M=l+40|0,O=l+36|0,A=l+32|0,R=l+28|0,g=l+613|0,T=l+24|0,N=l+612|0,D=l+20|0,P=l+16|0,C=l+12|0,I=l+8|0,L=l+4|0,St[(d=(x=l)+88|0)>>2]=e,St[E>>2]=r,St[_>>2]=t,St[S>>2]=n,St[m>>2]=i,St[h>>2]=o,St[p>>2]=a,St[b>>2]=u,St[k>>2]=s,St[F>>2]=f,St[y>>2]=0,St[v>>2]=0,St[R>>2]=0,Et[g>>0]=0,St[T>>2]=0;for(;!(258<=(0|St[T>>2])>>>0);)_t[w+(St[T>>2]<<1)>>1]=1024,St[T>>2]=1+(0|St[T>>2]);St[M>>2]=St[p>>2],St[O>>2]=(0|St[M>>2])+(0|St[b>>2]),St[A>>2]=-1,St[T>>2]=0;for(;!(5<=(0|St[T>>2])>>>0);){if((0|St[M>>2])==(0|St[O>>2])){B=7;break}b=St[R>>2]<<8,p=0|St[M>>2],St[M>>2]=p+1,St[R>>2]=0|b|mt[p>>0],St[T>>2]=1+(0|St[T>>2])}if(7==(0|B))return St[c>>2]=1,H=0|St[c>>2],pt=l,0|H;if(!(0|St[F>>2]))return St[c>>2]=0,H=0|St[c>>2],pt=l,0|H;for(;;){for(St[I>>2]=(0|St[E>>2])-(0|St[y>>2]),((0|St[F>>2])-(0|St[v>>2])|0)>>>0<(0|St[I>>2])>>>0&&(St[I>>2]=(0|St[F>>2])-(0|St[v>>2]));0|St[I>>2]&&(Et[N>>0]=0|Et[(0|St[d>>2])+(0|St[y>>2])>>0],T=0|Et[N>>0],p=0|St[v>>2],St[v>>2]=p+1,Et[(0|St[k>>2])+p>>0]=T,232!=(254&(0|mt[N>>0])|0))&&(15!=(0|mt[g>>0])||128!=(240&(0|mt[N>>0])|0));)St[y>>2]=1+(0|St[y>>2]),Et[g>>0]=0|Et[N>>0],St[I>>2]=(0|St[I>>2])-1;if(!(0|St[I>>2])){B=46;break}if((0|St[v>>2])==(0|St[F>>2])){B=46;break}T=0|St[y>>2],St[y>>2]=T+1,Et[N>>0]=0|Et[(0|St[d>>2])+T>>0];do{if(232!=(0|mt[N>>0])){if(233==(0|mt[N>>0])){St[D>>2]=512+w;break}St[D>>2]=514+w;break}}while(St[D>>2]=w+((0|mt[g>>0])<<1),0);if(St[C>>2]=re[St[D>>2]>>1],T=0|wt((0|St[A>>2])>>>11,0|St[C>>2]),St[P>>2]=T,T=0|St[P>>2],(0|St[R>>2])>>>0<(0|St[P>>2])>>>0){if(St[A>>2]=T,_t[St[D>>2]>>1]=(0|St[C>>2])+((2048-(0|St[C>>2])|0)>>>5),(0|St[A>>2])>>>0<16777216){if((0|St[M>>2])==(0|St[O>>2])){B=28;break}St[A>>2]=St[A>>2]<<8,p=St[R>>2]<<8,b=0|St[M>>2],St[M>>2]=b+1,St[R>>2]=0|p|mt[b>>0]}Et[g>>0]=0|Et[N>>0]}else{if(St[A>>2]=(0|St[A>>2])-T,St[R>>2]=(0|St[R>>2])-(0|St[P>>2]),_t[St[D>>2]>>1]=(0|St[C>>2])-((0|St[C>>2])>>>5),(0|St[A>>2])>>>0<16777216){if((0|St[M>>2])==(0|St[O>>2])){B=33;break}St[A>>2]=St[A>>2]<<8,T=St[R>>2]<<8,b=0|St[M>>2],St[M>>2]=b+1,St[R>>2]=0|T|mt[b>>0]}if(232==(0|mt[N>>0])){if(St[x>>2]=St[_>>2],(0|St[S>>2])>>>0<4){B=37;break}St[_>>2]=4+(0|St[_>>2]),St[S>>2]=(0|St[S>>2])-4}else{if(St[x>>2]=St[m>>2],(0|St[h>>2])>>>0<4){B=40;break}St[m>>2]=4+(0|St[m>>2]),St[h>>2]=(0|St[h>>2])-4}if(St[L>>2]=((0|mt[St[x>>2]>>0])<<24|(0|mt[1+(0|St[x>>2])>>0])<<16|(0|mt[2+(0|St[x>>2])>>0])<<8|0|mt[3+(0|St[x>>2])>>0])-(4+(0|St[v>>2])),b=255&St[L>>2],T=0|St[v>>2],St[v>>2]=T+1,Et[(0|St[k>>2])+T>>0]=b,(0|St[v>>2])==(0|St[F>>2])){B=46;break}if(b=(0|St[L>>2])>>>8&255,T=0|St[v>>2],St[v>>2]=T+1,Et[(0|St[k>>2])+T>>0]=b,(0|St[v>>2])==(0|St[F>>2])){B=46;break}if(b=(0|St[L>>2])>>>16&255,T=0|St[v>>2],St[v>>2]=T+1,Et[(0|St[k>>2])+T>>0]=b,(0|St[v>>2])==(0|St[F>>2])){B=46;break}b=(0|St[L>>2])>>>24&255,Et[g>>0]=b,T=0|St[v>>2],St[v>>2]=T+1,Et[(0|St[k>>2])+T>>0]=b}}{if(28==(0|B))return St[c>>2]=1,H=0|St[c>>2],pt=l,0|H;if(33==(0|B))return St[c>>2]=1,H=0|St[c>>2],pt=l,0|H;if(37==(0|B))return St[c>>2]=1,H=0|St[c>>2],pt=l,0|H;if(40==(0|B))return St[c>>2]=1,H=0|St[c>>2],pt=l,0|H;if(46==(0|B))return St[c>>2]=(0|St[v>>2])==(0|St[F>>2])?0:1,H=0|St[c>>2],pt=l,0|H}return 0}(0|St[O>>2],0|St[M>>2],0|St[St[k>>2]>>2],0|St[v>>2],0|St[4+(0|St[k>>2])>>2],0|St[4+v>>2],0|St[8+(0|St[k>>2])>>2],0|St[8+v>>2],0|St[h>>2],0|St[p>>2]),St[V>>2]=A,St[j>>2]=St[V>>2],0|St[j>>2]){q=45;break e}}}while(0);St[y>>2]=1+(0|St[y>>2])}switch(0|q){case 9:case 11:return St[d>>2]=2,G=0|St[d>>2],pt=c,0|G;case 15:return St[d>>2]=5,G=0|St[d>>2],pt=c,0|G;case 17:return St[d>>2]=4,G=0|St[d>>2],pt=c,0|G;case 19:return St[d>>2]=St[x>>2],G=0|St[d>>2],pt=c,0|G;case 22:return St[d>>2]=1,G=0|St[d>>2],pt=c,0|G;case 24:return St[d>>2]=St[B>>2],G=0|St[d>>2],pt=c,0|G;case 27:return St[d>>2]=St[H>>2],G=0|St[d>>2],pt=c,0|G;case 30:return St[d>>2]=St[U>>2],G=0|St[d>>2],pt=c,0|G;case 31:case 34:return St[d>>2]=4,G=0|St[d>>2],pt=c,0|G;case 36:return St[d>>2]=St[K>>2],G=0|St[d>>2],pt=c,0|G;case 38:case 41:return St[d>>2]=2,G=0|St[d>>2],pt=c,0|G;case 43:return St[d>>2]=St[W>>2],G=0|St[d>>2],pt=c,0|G;case 45:return St[d>>2]=St[j>>2],G=0|St[d>>2],pt=c,0|G;case 47:case 53:return St[d>>2]=4,G=0|St[d>>2],pt=c,0|G;case 55:return St[d>>2]=0,G=0|St[d>>2],pt=c,0|G}return 0}(0|St[l>>2],0|St[c>>2],0|St[d>>2],0|St[f>>2],0|St[f+4>>2],0|St[_>>2],0|St[S>>2],0|St[m>>2],b,0|St[h>>2],0|St[p>>2]),St[F>>2]=E,St[k>>2]=0;!(3<=(0|St[k>>2]));)or[3&St[4+(0|St[m>>2])>>2]](0|St[m>>2],0|St[b+(St[k>>2]<<2)>>2]),St[k>>2]=1+(0|St[k>>2]);return pt=w,0|St[F>>2]}function ge(e){e|=0;var r,t,n=0,i=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),r=i+4|0,St[(t=i)>>2]=e,e=0|St[t>>2];e:do{if(33<=(0|e)){if((0|e)<196865){if(33==(0|e)){n=2;break e}n=3;break e}if(196865==(0|e)){n=2;break e}n=3;break e}}while(n=0==(0|e)?2:3,0);return 2==(0|n)?St[r>>2]=1:3==(0|n)&&(St[r>>2]=0),pt=i,0|St[r>>2]}function Te(e,r){e|=0,r|=0;var t,n,i,o,a=0,u=pt;for((0|bt)<=(0|(pt=pt+32|0))&&yt(32),n=u+12|0,a=(i=u)+8|0,St[(t=u+16|0)>>2]=e,St[n>>2]=r,St[(r=i)>>2]=0,St[r+4>>2]=0,St[a>>2]=0;!((0|St[a>>2])>>>0>=(0|St[n>>2])>>>0);)r=(0|St[t>>2])+(St[a>>2]<<3)|0,o=0|Dt(0|St[(e=i)>>2],0|St[e+4>>2],0|St[r>>2],0|St[r+4>>2]),St[(r=i)>>2]=o,St[r+4>>2]=Ft,St[a>>2]=1+(0|St[a>>2]);return Ft=0|St[(a=i)+4>>2],pt=u,0|St[a>>2]}function Ne(e,r,t,n,i,o){e|=0,r|=0,t|=0,n|=0,i|=0,o|=0;var a,u,s,f,l,c,d,E,_,S,m=0,h=0,p=pt;for((0|bt)<=(0|(pt=pt+48|0))&&yt(48),a=p+40|0,s=(u=p)+36|0,f=p+32|0,l=p+28|0,c=p+20|0,d=p+16|0,E=p+12|0,_=p+8|0,St[(S=u)>>2]=e,St[S+4>>2]=r,St[s>>2]=t,St[f>>2]=n,St[l>>2]=i,St[p+24>>2]=o;;){if(!(0<(i=0|St[(o=u)+4>>2])>>>0|0==(0|i)&0<(0|St[o>>2])>>>0)){m=11;break}if(St[d>>2]=262144,(i=0|St[(o=u)+4>>2])>>>0<0|(0==(0|i)?(0|St[d>>2])>>>0>(0|St[o>>2])>>>0:0)&&(St[d>>2]=St[u>>2]),o=0|nr[15&St[St[s>>2]>>2]](0|St[s>>2],c,d),St[E>>2]=o,0|St[E>>2]){m=6;break}if(!(0|St[d>>2])){m=8;break}if(Je(0|St[f>>2],0|St[c>>2],0|St[d>>2]),St[f>>2]=(0|St[f>>2])+(0|St[d>>2]),i=0|Nt(0|St[(o=u)>>2],0|St[o+4>>2],0|St[d>>2],0),St[(o=u)>>2]=i,St[o+4>>2]=Ft,Q(2,0|St[d>>2],0|St[l>>2]),o=0|sr[3&St[4+(0|St[s>>2])>>2]](0|St[s>>2],0|St[d>>2]),St[_>>2]=o,0|St[_>>2]){m=10;break}}return 6==(0|m)?(St[a>>2]=St[E>>2],h=0|St[a>>2],pt=p,0|h):8==(0|m)?(St[a>>2]=6,h=0|St[a>>2],pt=p,0|h):10==(0|m)?(St[a>>2]=St[_>>2],h=0|St[a>>2],pt=p,0|h):11==(0|m)?(h=(St[a>>2]=0)|St[a>>2],pt=p,0|h):0}function De(e){e|=0;var r,t,n=0,i=pt;return(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(r=i)>>2]=e,1!=(0|St[St[r>>2]>>2])||1!=(0|St[4+(0|St[r>>2])>>2])?(pt=i,(n=0)|1&n):(e=8+(0|St[r>>2])|0,(t=0|St[e+4>>2])>>>0<0|0==(0|t)&(0|St[e>>2])>>>0<=4294967295?(n=0!=(0|ge(0|St[8+(0|St[r>>2])>>2])),pt=i,0|1&n):(pt=i,(n=0)|1&n))}function Pe(e,r){e|=0,r|=0;var t,n,i=pt;return(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(t=(n=i)+4|0)>>2]=e,St[n>>2]=r,r=~(0|ur[1&St[2761]](-1,0|St[t>>2],0|St[n>>2],2852)),pt=i,0|r}function Ce(e){e|=0;var r,t=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(r=t)>>2]=e,St[St[r>>2]>>2]=0,St[4+(0|St[r>>2])>>2]=0,pt=t}function Ie(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u=0,s=pt;return(0|bt)<=(0|(pt=pt+16|0))&&yt(16),n=s+12|0,o=s+4|0,St[(i=(a=s)+8|0)>>2]=e,St[o>>2]=r,St[a>>2]=t,pt=(u=(St[4+(0|St[i>>2])>>2]=0)|St[o>>2]?(t=0|sr[3&St[St[a>>2]>>2]](0|St[a>>2],0|St[o>>2]),St[St[i>>2]>>2]=t,0|St[St[i>>2]>>2]?(St[4+(0|St[i>>2])>>2]=St[o>>2],St[n>>2]=1,0|St[n>>2]):(St[n>>2]=0)|St[n>>2]):(St[St[i>>2]>>2]=0,St[n>>2]=1,0|St[n>>2]),s),0|u}function Le(e,r){e|=0,r|=0;var t,n,i=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(t=(n=i)+4|0)>>2]=e,St[n>>2]=r,or[3&St[4+(0|St[n>>2])>>2]](0|St[n>>2],0|St[St[t>>2]>>2]),St[St[t>>2]>>2]=0,St[4+(0|St[t>>2])>>2]=0,pt=i}function xe(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u,s,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=pt;for((0|bt)<=(0|(pt=pt+48|0))&&yt(48),n=F+16|0,f=(i=F)+32|0,l=0|St[(o=e+28|0)>>2],St[f>>2]=l,c=(0|St[(a=e+20|0)>>2])-l|0,St[f+4>>2]=c,St[f+8>>2]=r,r=e+60|0,l=e+44|0,E=c+(St[f+12>>(d=2)]=t)|0,c=f;;){if((0|E)==(0|(_=0|St[2762]?(g(1,0|e),St[i>>2]=St[r>>2],St[i+4>>2]=c,St[i+8>>2]=d,f=0|Be(0|A(146,0|i)),v(0),f):(St[n>>2]=St[r>>2],St[4+n>>2]=c,St[8+n>>2]=d,0|Be(0|A(146,0|n)))))){S=6;break}if((0|_)<0){S=8;break}f=E-_|0,b=_>>>0<=(u=0|St[c+4>>2])>>>0?(p=(h=2==(0|d)?(St[o>>2]=(0|St[o>>2])+_,m=_,2):(m=_,d),c),u):(s=0|St[l>>2],St[o>>2]=s,St[a>>2]=s,m=_-u|0,h=d+-1|0,p=c+8|0,0|St[c+12>>2]),St[p>>2]=(0|St[p>>2])+m,St[p+4>>2]=b-m,d=h,E=f,c=p}return 6==(0|S)?(p=0|St[l>>2],St[e+16>>2]=p+(0|St[e+48>>2]),l=p,St[o>>2]=l,St[a>>2]=l,k=t):8==(0|S)&&(St[e+16>>2]=0,St[o>>2]=0,St[a>>2]=0,St[e>>2]=32|St[e>>2],k=2==(0|d)?0:t-(0|St[c+4>>2])|0),pt=F,0|k}function Be(e){var r;return 0|(4294963200<(e|=0)>>>0?(r=0|vt(),St[r>>2]=0-e,-1):e)}function vt(){return 0|(0|St[2762]?0|St[16]:11092)}function He(){0}function Ue(e,r,t,n,i){e|=0,r|=0,t|=0,n|=0,i|=0;var o,a,u,s,f,l,c,d,E,_,S,m,h,p,b,k,F,w,y,v,M,O,A,R,g,T,N=0,D=0,P=0,C=0,I=0,L=0,x=0,B=0,H=0,U=0,z=0,Y=0,V=0,K=0,W=0,j=0,X=0,G=0,q=0,Q=0,Z=0,J=0,$=0,ee=0,re=0,te=0,ne=0,ie=0,oe=0,ae=0,ue=0,se=0,fe=0,le=0,ce=0,de=0,Ee=0,_e=0,Se=0,me=0,he=0,pe=0,be=0,ke=0,Fe=0,we=0,ye=0,ve=0,Me=0,Oe=0,Ae=0,Re=0,ge=0,Te=0,Ne=0,De=0,Pe=0,Ce=0,Ie=0,Le=0,xe=0,Be=0,He=0,Ue=0,ze=0,Ye=0,Ve=0,Ke=0,We=0,je=0,Xe=0,Ge=0,qe=0,Qe=0,Ze=0,Je=0,$e=0,er=0,rr=0,tr=0,nr=0,ir=0,or=0,ar=0,ur=0,sr=0,fr=0,lr=0,cr=0,dr=0,Er=0,_r=0,Sr=0,mr=0,hr=0,pr=0,br=0,kr=0,Fr=0,wr=0,yr=0,vr=0,Mr=0,Or=0,Ar=0,Rr=0,gr=0,Tr=0,Nr=0,Dr=0,Pr=0,Cr=0,Ir=0,Lr=0,xr=0,Br=0,Hr=0,Ur=0,zr=0,Yr=0,Vr=0,Kr=0,Wr=0,jr=0,Xr=0,Gr=0,qr=0,Qr=0,Zr=0,Jr=0,$r=0,et=0,rt=0,tt=0,nt=0,it=0,ot=0,at=0,ut=0,st=0,ft=0,lt=0,ct=0,dt=pt;(0|bt)<=(0|(pt=pt+624|0))&&yt(624),a=dt+16|0,d=(f=dt)+528|0,E=0!=(0|e),S=_=40+(l=dt+536|0)|0,m=39+l|0,l=4+(c=dt+8|0)|0,p=0-(h=u=dt+588|0)|0,k=11+(s=dt+576|0)|0,F=(s=b=12+s|0)-h|0,w=-2-h|0,y=2+s|0,v=288+(o=dt+24|0)|0,O=M=9+u|0,A=8+u|0,P=D=N=0,C=r;e:for(;;){do{if(-1<(0|D)){if((2147483647-D|0)<(0|N)){r=0|vt(),St[r>>2]=75,I=-1;break}I=N+D|0;break}}while(I=D,0);if(!((r=0|Et[C>>0])<<24>>24)){L=243;break}x=C,B=r;r:for(;;){switch(B<<24>>24){case 37:U=H=x,L=9;break r;case 0:Y=z=x;break r}B=0|Et[(x=r=x+1|0)>>0]}r:do{if(9==(0|L))for(;;){if(37!=((L=0)|Et[U+1>>0])){z=H,Y=U;break r}if(r=H+1|0,37!=(0|Et[(V=U+2|0)>>0])){z=r,Y=V;break}H=r,U=V,L=9}}while(0);if(V=z-C|0,E&&0==(32&St[e>>2]|0)&&Mt(C,V,e),0|V)N=V,D=I,C=Y;else{Q=(K=((r=0|Et[(V=Y+1|0)>>0])<<24>>24)-48|0)>>>0<10?(X=(W=36==(0|Et[Y+2>>0]))?K:-1,G=W?1:P,q=0|Et[(j=W?Y+3|0:V)>>0],j):(X=-1,G=P,q=r,V),V=(q<<24>>24)-32|0;r:do{if(V>>>0<32)for(r=0,j=V,W=q,K=Q;;){if(!(1<>24)-32|r,32<=(j=((te=0|Et[(re=K+1|0)>>0])<<24>>24)-32|0)>>>0){Z=ee,J=te,$=re;break}r=ee,W=te,K=re}else Z=0,J=q,$=Q}while(0);do{if(J<<24>>24!=42)if((V=(J<<24>>24)-48|0)>>>0<10){for(K=0,W=$,r=V;K=(10*K|0)+r|0,r=((ne=0|Et[(W=W+1|0)>>0])<<24>>24)-48|0,r>>>0<10;);if((0|K)<0){ie=-1;break e}oe=K,ae=Z,ue=G,se=W,fe=ne}else oe=0,ae=Z,ue=G,se=$,fe=J;else{if((j=((V=0|Et[(r=$+1|0)>>0])<<24>>24)-48|0)>>>0<10&&36==(0|Et[$+2>>0]))St[i+(j<<2)>>2]=10,le=0|St[n+((0|Et[r>>0])-48<<3)>>2],ce=1,de=$+3|0;else{if(0|G){ie=-1;break e}if(!E){ae=Z,ue=oe=0,se=r,fe=V;break}V=3+(0|St[t>>2])&-4,j=0|St[V>>2],St[t>>2]=V+4,le=j,ce=0,de=r}oe=(r=(0|le)<0)?0-le|0:le,ae=r?8192|Z:Z,ue=ce,fe=0|Et[(se=de)>>0]}}while(0);r:do{if(fe<<24>>24==46){if((j=0|Et[(r=se+1|0)>>0])<<24>>24!=42){if(!((V=(j<<24>>24)-48|0)>>>0<10)){me=0,he=r;break}for(Ee=0,_e=r,Se=V;;){if(r=(10*Ee|0)+Se|0,10<=(Se=(0|Et[(V=_e+1|0)>>0])-48|0)>>>0){me=r,he=V;break r}Ee=r,_e=V}}if((K=(0|Et[(W=se+2|0)>>0])-48|0)>>>0<10&&36==(0|Et[se+3>>0])){St[i+(K<<2)>>2]=10,me=0|St[n+((0|Et[W>>0])-48<<3)>>2],he=se+4|0;break}if(0|ue){ie=-1;break e}he=(me=E?(K=3+(0|St[t>>2])&-4,V=0|St[K>>2],St[t>>2]=K+4,V):0,W)}else me=-1,he=se}while(0);for(W=0,V=he;;){if(57<(K=(0|Et[V>>0])-65|0)>>>0){ie=-1;break e}if(pe=V+1|0,!(((ke=255&(be=0|Et[419+(58*W|0)+K>>0]))+-1|0)>>>0<8))break;W=ke,V=pe}if(!(be<<24>>24)){ie=-1;break}K=-1<(0|X);do{if(be<<24>>24==19){if(K){ie=-1;break e}L=51}else{if(K){St[i+(X<<2)>>2]=ke,j=0|St[(r=n+(X<<3)|0)+4>>2],St[(re=f)>>2]=St[r>>2],St[re+4>>2]=j,L=51;break}if(!E){ie=0;break e}Ot(f,ke,t)}}while(0);if(51!=(0|L)||(L=0,E)){j=0!=(0|W)&3==(15&(K=0|Et[V>>0])|0)?-33&K:K,K=-65537&ae,re=0==(8192&ae|0)?ae:K;r:do{switch(0|j){case 110:switch((255&W)<<24>>24){case 0:case 1:N=0,D=St[St[f>>2]>>2]=I,P=ue,C=pe;continue e;case 2:r=0|St[f>>2],St[r>>2]=I,St[r+4>>2]=((0|I)<0)<<31>>31,N=0,D=I,P=ue,C=pe;continue e;case 3:N=0,D=_t[St[f>>2]>>1]=I,P=ue,C=pe;continue e;case 4:N=0,D=Et[St[f>>2]>>0]=I,P=ue,C=pe;continue e;case 6:N=0,D=St[St[f>>2]>>2]=I,P=ue,C=pe;continue e;case 7:r=0|St[f>>2],St[r>>2]=I,St[r+4>>2]=((0|I)<0)<<31>>31,N=0,D=I,P=ue,C=pe;continue e;default:N=0,D=I,P=ue,C=pe;continue e}break;case 112:Fe=120,we=8>>0?me:8,ye=8|re,L=63;break;case 88:case 120:Fe=j,we=me,ye=re,L=63;break;case 111:if(0==(0|(te=0|St[(r=f)>>2]))&0==(0|(ee=0|St[r+4>>2])))ve=_;else for(r=_,Me=te,te=ee;;){if(Et[(ee=r+-1|0)>>0]=7&Me|48,0==(0|(Me=0|Ct(0|Me,0|te,3)))&0==(0|(te=Ft))){ve=ee;break}r=ee}L=(Te=(ge=8&re?(Re=899,((Ae=0)|(r=S-(Oe=ve)|0))<(0|me)?me:r+1|0):(Oe=ve,Ae=0,Re=899,me),re),76);break;case 105:case 100:if(te=0|St[(r=f)>>2],(0|(Me=0|St[r+4>>2]))<0){r=0|Nt(0,0,0|te,0|Me),ee=Ft,De=1,Pe=899,Ce=St[(Ne=f)>>2]=r,Ie=St[Ne+4>>2]=ee,L=75;break r}L=(Ie=(Ce=(Pe=2048&re?(De=1,900):0==(0|(De=ee=1&re))?899:901,te),Me),75);break;case 117:Pe=899,Ce=(De=0)|St[(Me=f)>>2],Ie=0|St[Me+4>>2],L=75;break;case 99:Et[m>>0]=St[f>>2],Le=m,xe=0,Be=899,He=_,Ue=1,ze=K;break;case 109:Me=0|vt(),Ye=0|function(e){e|=0;var r=0,t=0,n=0,i=0,o=0,a=0;r=0;for(;;){if((0|mt[953+r>>0])==(0|e)){t=2;break}if(87==(0|(n=r+1|0))){i=1041,o=87,t=5;break}r=n}2==(0|t)&&(r?(i=1041,o=r,t=5):a=1041);if(5==(0|t))for(;;){for(t=0,r=i;r=(e=r)+1|0,0!=(0|Et[e>>0]););if(!(o=o+-1|0)){a=r;break}i=r,t=5}return 0|a}(0|St[Me>>2]),L=81;break;case 115:Ye=0|(Me=0|St[f>>2])?Me:909,L=81;break;case 67:St[c>>2]=St[f>>2],St[l>>2]=0,Ve=-1,Ke=St[f>>2]=c,L=85;break;case 83:Me=0|St[f>>2],L=me?(Ve=me,Ke=Me,85):(gt(e,32,oe,0,re),We=0,96);break;case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:je=+ht[f>>3],St[a>>2]=0,ht[kt>>3]=je,qe=0<=(0|St[kt+4>>2])?(Me=1&re,2048&re?(Xe=je,Ge=1,919):(Xe=je,0==(0|(Ge=Me))?917:922)):(Xe=-je,Ge=1,916),ht[kt>>3]=Xe,Me=2146435072&St[kt+4>>2];do{if(Me>>>0<2146435072|2146435072==(0|Me)&!1){if((te=0!=(je=2*(T=a,+ + +function e(r,t){r=+r;t|=0;var n=0,i=0,o=0,a=0,u=0,s=0,f=0;ht[kt>>3]=r;n=0|St[kt>>2];i=0|St[kt+4>>2];o=0|Ct(0|n,0|i,52);switch(2047&o){case 0:s=0!=r?(a=+e(0x10000000000000000*r,t),u=a,(0|St[t>>2])-64|0):(u=r,0),St[t>>2]=s,f=u;break;case 2047:f=r;break;default:St[t>>2]=(2047&o)-1022,St[kt>>2]=n,St[kt+4>>2]=-2146435073&i|1071644672,f=+ht[kt>>3]}return+f}(+Xe,T|=0))))&&(St[a>>2]=(0|St[a>>2])-1),97==(0|(ee=32|j))){Ne=0==(0|(r=32&j))?qe:qe+9|0,Qe=2|Ge,Ze=12-me|0;do{if(!(11>>0|0==(0|Ze))){for(Je=8,$e=Ze;$e=$e+-1|0,Je*=16,0!=(0|$e););if(45==(0|Et[Ne>>0])){er=-(Je+(-je-Je));break}er=je+Je-Je;break}}while(er=je,0);for(tr=(0|(rr=0|At($e=(0|(Ze=0|St[a>>2]))<0?0-Ze|0:Ze,((0|$e)<0)<<31>>31,b)))==(0|b)?(Et[k>>0]=48,k):rr,Et[tr+-1>>0]=43+(Ze>>31&2),Et[(Ze=tr+-2|0)>>0]=j+15,rr=(0|me)<1,$e=0==(8&re|0),nr=u,ir=er;;){or=~~ir,ar=nr+1|0,Et[nr>>0]=mt[883+or>>0]|r,ir=16*(ir-(0|or));do{if(1==(ar-h|0)){if($e&rr&0==ir){ur=ar;break}Et[ar>>0]=46,ur=nr+2|0}else ur=ar}while(0);if(0==ir)break;nr=ur}rr=Ze,gt(e,32,oe,r=($e=0!=(0|me)&(w+(nr=ur)|0)<(0|me)?y+me-rr|0:F-rr+nr|0)+Qe|0,re),32&St[e>>2]||Mt(Ne,Qe,e),gt(e,48,oe,r,65536^re),ar=nr-h|0,32&St[e>>2]||Mt(u,ar,e),gt(e,48,$e-(ar+(nr=s-rr|0))|0,0,0),32&St[e>>2]||Mt(Ze,nr,e),gt(e,32,oe,r,8192^re),sr=(0|r)<(0|oe)?oe:r;break}for(r=(0|me)<0?6:me,lr=te?(nr=(0|St[a>>2])-28|0,fr=268435456*je,St[a>>2]=nr):(fr=je,0|St[a>>2]),nr=(0|lr)<0?o:v,ar=nr,ir=fr;$e=~~ir>>>0,St[ar>>2]=$e,ar=ar+4|0,ir=1e9*(ir-($e>>>0)),0!=ir;);if(0<(0|lr))for(te=nr,Ze=ar,Qe=lr;;){Ne=29<(0|Qe)?29:Qe,$e=Ze+-4|0;do{if($e>>>0>>0)cr=te;else{for(rr=$e,or=0;_r=0|xt(0|(Er=0|Dt(0|(dr=0|It(0|St[rr>>2],0,0|Ne)),0|Ft,0|or,0)),0|(dr=Ft),1e9,0),St[rr>>2]=_r,or=0|Lt(0|Er,0|dr,1e9,0),rr=rr+-4|0,te>>>0<=rr>>>0;);if(!or){cr=te;break}St[(rr=te+-4|0)>>2]=or,cr=rr}}while(0);for($e=Ze;!($e>>>0<=cr>>>0||0|St[(rr=$e+-4|0)>>2]);)$e=rr;if(rr=(0|St[a>>2])-Ne|0,!(0<(0|(St[a>>2]=rr)))){Sr=cr,mr=$e,hr=rr;break}te=cr,Ze=$e,Qe=rr}else Sr=nr,mr=ar,hr=lr;if((0|hr)<0)for(Qe=1+((r+25|0)/9|0)|0,Ze=102==(0|ee),te=Sr,rr=mr,dr=hr;;){_r=9<(0|(Er=0-dr|0))?9:Er;do{if(te>>>0>>0){for(Er=(1<<_r)-1|0,R=1e9>>>_r,pr=0,br=te;g=0|St[br>>2],St[br>>2]=(g>>>_r)+pr,pr=0|wt(g&Er,R),br=br+4|0,br>>>0>>0;);if(br=0==(0|St[te>>2])?te+4|0:te,!pr){kr=br,Fr=rr;break}St[rr>>2]=pr,kr=br,Fr=rr+4|0}else kr=0==(0|St[te>>2])?te+4|0:te,Fr=rr}while(0);if(Ne=(0|Qe)<(Fr-($e=Ze?nr:kr)>>2|0)?$e+(Qe<<2)|0:Fr,dr=(0|St[a>>2])+_r|0,0<=(0|(St[a>>2]=dr))){wr=kr,yr=Ne;break}te=kr,rr=Ne}else wr=Sr,yr=mr;rr=nr;do{if(wr>>>0>>0){if(te=9*(rr-wr>>2)|0,(dr=0|St[wr>>2])>>>0<10){vr=te;break}for(Mr=te,Or=10;;){if(te=Mr+1|0,dr>>>0<(Or=10*Or|0)>>>0){vr=te;break}Mr=te}}else vr=0}while(0);if((0|(te=r-(102!=(0|ee)?vr:0)+(((_r=0!=(0|r))&(dr=103==(0|ee)))<<31>>31)|0))<((9*(yr-rr>>2)|0)-9|0)){if(te=nr+4+(((0|(Qe=te+9216|0))/9|0)-1024<<2)|0,(0|(Ze=1+((0|Qe)%9|0)|0))<9)for(Qe=Ze,Ze=10;;){if(ar=10*Ze|0,9==(0|(Qe=Qe+1|0))){Ar=ar;break}Ze=ar}else Ar=10;Qe=((Ze=0|St[te>>2])>>>0)%(Ar>>>0)|0,ee=(te+4|0)==(0|yr);do{if(ee&0==(0|Qe))Rr=te,gr=vr,Tr=wr;else{ir=0==(1&((Ze>>>0)/(Ar>>>0)|0)|0)?9007199254740992:9007199254740994,Nr=Qe>>>0<(ar=(0|Ar)/2|0)>>>0?.5:ee&(0|Qe)==(0|ar)?1:1.5;do{if(Ge){if(45!=(0|Et[qe>>0])){Dr=Nr,Pr=ir;break}Dr=-Nr,Pr=-ir}else Dr=Nr,Pr=ir}while(0);if(ar=Ze-Qe|0,St[te>>2]=ar,Pr+Dr==Pr){Rr=te,gr=vr,Tr=wr;break}if(Ne=ar+Ar|0,999999999<(St[te>>2]=Ne)>>>0)for(Ne=te,ar=wr;;){if(Cr=($e=Ne+-4|0)>>>(St[Ne>>2]=0)>>0?(St[(br=ar+-4|0)>>2]=0,br):ar,br=1+(0|St[$e>>2])|0,!(999999999<(St[$e>>2]=br)>>>0)){Ir=$e,Lr=Cr;break}Ne=$e,ar=Cr}else Ir=te,Lr=wr;if(ar=9*(rr-Lr>>2)|0,(Ne=0|St[Lr>>2])>>>0<10){Rr=Ir,gr=ar,Tr=Lr;break}for(xr=ar,Br=10;;){if(ar=xr+1|0,Ne>>>0<(Br=10*Br|0)>>>0){Rr=Ir,gr=ar,Tr=Lr;break}xr=ar}}}while(0);Hr=gr,Ur=(te=Rr+4|0)>>>0>>0?te:yr,zr=Tr}else Hr=vr,Ur=yr,zr=wr;for(te=0-Hr|0,Qe=Ur;;){if(Qe>>>0<=zr>>>0){Yr=0;break}if(0|St[(Ze=Qe+-4|0)>>2]){Yr=1;break}Qe=Ze}do{if(dr){if(Kr=(0|Hr)<(0|(Ze=(1&_r^1)+r|0))&-5<(0|Hr)?(Vr=j+-1|0,Ze+-1-Hr|0):(Vr=j+-2|0,Ze+-1|0),0|(Ze=8&re)){Wr=Vr,jr=Kr,Xr=Ze;break}do{if(Yr){if(!(Ze=0|St[Qe+-4>>2])){Gr=9;break}if((Ze>>>0)%10|0){Gr=0;break}for(qr=0,Qr=10;;){if(ee=qr+1|0,(Ze>>>0)%((Qr=10*Qr|0)>>>0)|0){Gr=ee;break}qr=ee}}else Gr=9}while(0);if(Ze=(9*(Qe-rr>>2)|0)-9|0,102==(32|Vr)){Wr=Vr,jr=(0|Kr)<(0|(ee=(0|(pr=Ze-Gr|0))<0?0:pr))?Kr:ee,Xr=0;break}Wr=Vr,jr=(0|Kr)<(0|(Ze=(0|(ee=Ze+Hr-Gr|0))<0?0:ee))?Kr:Ze,Xr=0;break}}while(Wr=j,jr=r,Xr=8&re,0);if(rr=0!=(0|(r=jr|Xr))&1,_r=102==(32|Wr))Jr=(Zr=0)<(0|Hr)?Hr:0;else{if((s-(Ze=0|At(dr=(0|Hr)<0?te:Hr,((0|dr)<0)<<31>>31,b))|0)<2)for(dr=Ze;;){if(Et[(ee=dr+-1|0)>>0]=48,!((s-ee|0)<2)){$r=ee;break}dr=ee}else $r=Ze;Et[$r+-1>>0]=43+(Hr>>31&2),Et[(dr=$r+-2|0)>>0]=Wr,Jr=s-(Zr=dr)|0}gt(e,32,oe,dr=Ge+1+jr+rr+Jr|0,re),32&St[e>>2]||Mt(qe,Ge,e),gt(e,48,oe,dr,65536^re);do{if(_r){ee=te=nr>>>0>>0?nr:zr;do{pr=0|At(0|St[ee>>2],0,M);do{if((0|ee)==(0|te)){if((0|pr)!=(0|M)){et=pr;break}Et[A>>0]=48,et=A}else{if(pr>>>0<=u>>>0){et=pr;break}for(Pt(0|u,48,pr-h|0),Ne=pr;;){if(!(u>>>0<(ar=Ne+-1|0)>>>0)){et=ar;break}Ne=ar}}}while(0)}while(32&St[e>>2]||Mt(et,O-et|0,e),(ee=ee+4|0)>>>0<=nr>>>0);do{if(0|r){if(32&St[e>>2]|0)break;Mt(951,1,e)}}while(0);if(0<(0|jr)&ee>>>0>>0)for(te=jr,pr=ee;;){if(u>>>0<(Ne=0|At(0|St[pr>>2],0,M))>>>0)for(Pt(0|u,48,Ne-h|0),ar=Ne;;){if(!(u>>>0<($e=ar+-1|0)>>>0)){rt=$e;break}ar=$e}else rt=Ne;if(32&St[e>>2]||Mt(rt,9<(0|te)?9:te,e),ar=te+-9|0,!(9<(0|te)&(pr=pr+4|0)>>>0>>0)){tt=ar;break}te=ar}else tt=jr;gt(e,48,tt+9|0,9,0)}else{if(te=Yr?Qe:zr+4|0,-1<(0|jr))for(pr=0==(0|Xr),ee=jr,ar=zr;;){nt=(0|($e=0|At(0|St[ar>>2],0,M)))==(0|M)?(Et[A>>0]=48,A):$e;do{if((0|ar)==(0|zr)){if($e=nt+1|0,32&St[e>>2]||Mt(nt,1,e),pr&(0|ee)<1){it=$e;break}if(32&St[e>>2]|0){it=$e;break}Mt(951,1,e),it=$e}else{if(nt>>>0<=u>>>0){it=nt;break}for(Pt(0|u,48,nt+p|0),$e=nt;;){if(!(u>>>0<(br=$e+-1|0)>>>0)){it=br;break}$e=br}}}while(0);if(Ne=O-it|0,32&St[e>>2]||Mt(it,(0|Ne)<(0|ee)?Ne:ee,e),!((ar=ar+4|0)>>>0>>0&-1<(0|($e=ee-Ne|0)))){ot=$e;break}ee=$e}else ot=jr;if(gt(e,48,ot+18|0,18,0),32&St[e>>2]|0)break;Mt(Zr,s-Zr|0,e)}}while(0);gt(e,32,oe,dr,8192^re),sr=(0|dr)<(0|oe)?oe:dr}else Qe=0!=(32&j|0),gt(e,32,oe,_r=(nr=(r=Xe!=Xe|!1)?0:Ge)+3|0,K),32&(32&(rr=0|St[e>>2])?rr:(Mt(qe,nr,e),0|St[e>>2]))||Mt(r?Qe?943:947:Qe?935:939,3,e),gt(e,32,oe,_r,8192^re),sr=(0|_r)<(0|oe)?oe:_r}while(0);N=sr,D=I,P=ue,C=pe;continue e;default:Le=C,xe=0,Be=899,He=_,Ue=me,ze=re}}while(0);r:do{if(63==(0|L)){if(W=(L=0)|St[(j=f)>>2],V=0|St[j+4>>2],j=32&Fe,0==(0|W)&0==(0|V))at=_,st=ut=0;else{for(Me=_,_r=W,W=V;Et[(Me=Me+-1|0)>>0]=mt[883+(15&_r)>>0]|j,_r=0|Ct(0|_r,0|W,4),W=Ft,!(0==(0|_r)&0==(0|W)););at=Me,ut=0|St[(W=f)>>2],st=0|St[W+4>>2]}Oe=at,Ae=(W=0==(8&ye|0)|0==(0|ut)&0==(0|st))?0:2,Re=W?899:899+(Fe>>4)|0,ge=we,Te=ye,L=76}else if(75==(0|L))Oe=(L=0)|At(Ce,Ie,_),Ae=De,Re=Pe,ge=me,Te=re,L=76;else if(81==(0|L))Be=899,He=(_r=(xe=L=0)==(0|(W=0|Rt(Le=Ye,0,me))))?Ye+me|0:W,Ue=_r?me:W-Ye|0,ze=K;else if(85==(0|L)){for(W=Ke,j=_r=L=0;;){if(!(V=0|St[W>>2])){ft=_r,lt=j;break}if((0|(Qe=0|Tt(d,V)))<0|(Ve-_r|0)>>>0>>0){ft=_r,lt=Qe;break}if(!((V=Qe+_r|0)>>>0>>0)){ft=V,lt=Qe;break}W=W+4|0,_r=V,j=Qe}if((0|lt)<0){ie=-1;break e}if(gt(e,32,oe,ft,re),ft)for(j=Ke,_r=0;;){if(!(W=0|St[j>>2])){We=ft,L=96;break r}if((0|ft)<(0|(_r=(Me=0|Tt(d,W))+_r|0))){We=ft,L=96;break r}if(32&St[e>>2]||Mt(d,Me,e),ft>>>0<=_r>>>0){We=ft,L=96;break}j=j+4|0}else We=0,L=96}}while(0);C=(P=(D=(N=96!=(0|L)?(76==(0|L)&&(K=-1<((L=0)|ge)?-65537&Te:Te,ze=(Ue=0!=(0|ge)|(_r=0!=(0|St[(j=f)>>2])|0!=(0|St[j+4>>2]))?(xe=Ae,Be=Re,He=_,(0|(j=S-(Le=Oe)+(1&_r^1)|0))<(0|ge)?ge:j):(xe=Ae,Be=Re,He=Le=_,0),K)),gt(e,32,Me=(0|oe)<(0|(_r=(j=(0|Ue)<(0|(K=He-Le|0))?K:Ue)+xe|0))?_r:oe,_r,ze),32&St[e>>2]||Mt(Be,xe,e),gt(e,48,Me,_r,65536^ze),gt(e,48,j,K,0),32&St[e>>2]||Mt(Le,K,e),gt(e,32,Me,_r,8192^ze),Me):(L=0,gt(e,32,oe,We,8192^re),(0|We)<(0|oe)?oe:We),I),ue),pe)}else N=0,D=I,P=ue,C=pe}}e:do{if(243==(0|L))if(e)ie=I;else if(P){for(pe=1;;){if(!(C=0|St[i+(pe<<2)>>2])){ct=pe;break}if(Ot(n+(pe<<3)|0,C,t),10<=(0|(pe=pe+1|0))){ie=1;break e}}for(;;){if(0|St[i+(ct<<2)>>2]){ie=-1;break e}if(10<=(0|(ct=ct+1|0))){ie=1;break}}}else ie=0}while(0);return pt=dt,0|ie}function ze(){return 0}function Mt(e,r,t){e|=0,r|=0;var n,i,o=0,a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0;(a=0|St[(o=(t|=0)+16|0)>>2])?(u=a,s=5):0|function(e){var r=0,t=0,n=0;t=0|Et[(r=74+(e|=0)|0)>>0],Et[r>>0]=255+t|t,n=8&(t=0|St[e>>2])?(St[e>>2]=32|t,-1):(St[e+8>>2]=0,St[e+4>>2]=0,r=0|St[e+44>>2],St[e+28>>2]=r,St[e+20>>2]=r,St[e+16>>2]=r+(0|St[e+48>>2]),0);return 0|n}(t)?f=0:(u=0|St[o>>2],s=5);e:do{if(5==(0|s)){if((u-(n=o=0|St[(a=t+20|0)>>2])|0)>>>0>>0){f=0|nr[15&St[t+36>>2]](t,e,r);break}r:do{if(-1<(0|Et[t+75>>0])){for(o=r;;){if(!o){l=r,c=e,d=0,E=n;break r}if(10==(0|Et[e+(i=o+-1|0)>>0]))break;o=i}if((0|nr[15&St[t+36>>2]](t,e,o))>>>0>>0){f=o;break e}l=r-o|0,c=e+o|0,d=o,E=0|St[a>>2]}else l=r,c=e,d=0,E=n}while(0);Je(0|E,0|c,0|l),St[a>>2]=(0|St[a>>2])+l,f=d+l|0}}while(0);return 0|f}function Ot(e,r,t){e|=0,r|=0,t|=0;var n,i=0,o=0,a=0,u=0;e:do{if(r>>>0<=20){switch(0|r){case 9:i=3+(0|St[t>>2])&-4,o=0|St[i>>2],St[t>>2]=i+4,St[e>>2]=o;break e;case 10:o=3+(0|St[t>>2])&-4,i=0|St[o>>2],St[t>>2]=o+4,St[(o=e)>>2]=i,St[o+4>>2]=((0|i)<0)<<31>>31;break e;case 11:i=3+(0|St[t>>2])&-4,o=0|St[i>>2],St[t>>2]=i+4,St[(i=e)>>2]=o,St[i+4>>2]=0;break e;case 12:i=7+(0|St[t>>2])&-8,n=0|St[(o=i)>>2],a=0|St[o+4>>2],St[t>>2]=i+8,St[(i=e)>>2]=n,St[i+4>>2]=a;break e;case 13:a=3+(0|St[t>>2])&-4,i=0|St[a>>2],St[t>>2]=a+4,a=(65535&i)<<16>>16,St[(i=e)>>2]=a,St[i+4>>2]=((0|a)<0)<<31>>31;break e;case 14:a=3+(0|St[t>>2])&-4,i=0|St[a>>2],St[t>>2]=a+4,St[(a=e)>>2]=65535&i,St[a+4>>2]=0;break e;case 15:a=3+(0|St[t>>2])&-4,i=0|St[a>>2],St[t>>2]=a+4,a=(255&i)<<24>>24,St[(i=e)>>2]=a,St[i+4>>2]=((0|a)<0)<<31>>31;break e;case 16:a=3+(0|St[t>>2])&-4,i=0|St[a>>2],St[t>>2]=a+4,St[(a=e)>>2]=255&i,St[a+4>>2]=0;break e;case 17:case 18:a=7+(0|St[t>>2])&-8,u=+ht[a>>3],St[t>>2]=a+8,ht[e>>3]=u;break e;default:break e}}}while(0)}function At(e,r,t){t|=0;var n=0,i=0,o=0,a=0,u=0,s=0;if(0<(r|=0)>>>0|0==(0|r)&4294967295<(e|=0)>>>0){for(n=t,i=e,o=r;r=0|xt(0|i,0|o,10,0),Et[(n=n+-1|0)>>0]=48|r,i=0|Lt(0|(r=i),0|o,10,0),9>>0|9==(0|o)&4294967295>>0;)o=Ft;a=i,u=n}else a=e,u=t;if(a)for(t=a,a=u;;){if(Et[(u=a+-1|0)>>0]=(t>>>0)%10|48,t>>>0<10){s=u;break}t=(t>>>0)/10|0,a=u}else s=u;return 0|s}function Rt(e,r,t){e|=0;var n,i,o,a,u=0,s=0,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=255&(r|=0),u=0!=(0|(t|=0));e:do{if(u&0!=(3&e|0))for(n=255&r,s=e,f=t;;){if((0|Et[s>>0])==n<<24>>24){l=s,c=f,d=6;break e}if(!((a=0!=(0|(o=f+-1|0)))&0!=(3&(i=s+1|0)|0))){E=i,_=o,S=a,d=5;break}s=i,f=o}else E=e,_=t,S=u,d=5}while(0);5==(0|d)&&(S?(l=E,c=_,d=6):(m=E,h=0));e:do{if(6==(0|d))if(E=255&r,(0|Et[l>>0])==E<<24>>24)m=l,h=c;else{_=0|wt(w,16843009);r:do{if(3>>0){for(S=l,u=c;!((-2139062144&(t=St[S>>2]^_)^-2139062144)&t+-16843009|0);){if(t=S+4|0,!(3<(e=u+-4|0)>>>0)){p=t,b=e,d=11;break r}S=t,u=e}k=S,F=u}else p=l,b=c,d=11}while(0);if(11==(0|d)){if(!b){m=p,h=0;break}k=p,F=b}for(;;){if((0|Et[k>>0])==E<<24>>24){m=k,h=F;break e}if(_=k+1|0,!(F=F+-1|0)){m=_,h=0;break}k=_}}}while(0);return 0|(0|h?m:0)}function gt(e,r,t,n,i){e|=0,r|=0,t|=0,n|=0,i|=0;var o,a,u,s,f=0,l=0,c=0,d=0,E=0,_=pt;(0|bt)<=(0|(pt=pt+256|0))&&yt(256),o=_;do{if((0|n)<(0|t)&0==(73728&i|0)){if(Pt(0|o,0|r,0|(256<(a=t-n|0)>>>0?256:a)),u=0==(32&(f=0|St[e>>2])|0),255>>0){for(s=t-n|0,l=a,c=f,f=u;f=0==(32&(d=f?(Mt(o,256,e),0|St[e>>2]):c)|0),!((l=l+-256|0)>>>0<=255);)c=d;if(!f)break;E=255&s}else{if(!u)break;E=a}Mt(o,E,e)}}while(0);pt=_}function Tt(e,r){r|=0;return 0|((e|=0)?0|function(e,r,t){e|=0,r|=0,t|=0;var n=0;do{if(e){if(r>>>0<128){Et[e>>0]=r,n=1;break}if(r>>>0<2048){Et[e>>0]=r>>>6|192,Et[e+1>>0]=63&r|128,n=2;break}if(r>>>0<55296|57344==(-8192&r|0)){Et[e>>0]=r>>>12|224,Et[e+1>>0]=r>>>6&63|128,Et[e+2>>0]=63&r|128,n=3;break}if((r+-65536|0)>>>0<1048576){Et[e>>0]=r>>>18|240,Et[e+1>>0]=r>>>12&63|128,Et[e+2>>0]=r>>>6&63|128,Et[e+3>>0]=63&r|128,n=4;break}t=0|vt(),St[t>>2]=84,n=-1;break}}while(n=1,0);return 0|n}(e,r,0):0)}function Ye(e,r){var t=0|function(e,r){e|=0;var t=0,n=0,i=0,o=0,a=0,u=0,s=0,f=0,l=0;t=255&(r|=0);e:do{if(t){if(3&e)for(o=255&r,a=e;;){if((u=0|Et[a>>0])<<24>>24==0||u<<24>>24==o<<24>>24){n=a;break e}if(!(3&(u=a+1|0))){i=u;break}a=u}else i=e;a=0|wt(t,16843009),o=0|St[i>>2];r:do{if((-2139062144&o^-2139062144)&o+-16843009)l=i;else for(u=i,s=o;;){if((-2139062144&(f=s^a)^-2139062144)&f-16843009|0){l=u;break r}if((-2139062144&(s=0|St[(f=u+4|0)>>2])^-2139062144)&s+-16843009|0){l=f;break}u=f}}while(0);for(a=255&r,o=l;;){if((u=0|Et[o>>0])<<24>>24==0||u<<24>>24==a<<24>>24){n=o;break}o=o+1|0}}else n=e+(0|function(e){var r,t=0,n=0,i=0,o=0,a=0,u=0,s=0,f=0,t=e|=0;r:do{if(3&t)for(o=e,a=t;;){if(!(0|Et[o>>0])){u=a;break r}if(!(3&(a=r=o+1|0))){n=r,i=4;break}o=r}else n=e,i=4}while(0);if(4==(0|i)){for(i=n;!((-2139062144&(s=0|St[i>>2])^-2139062144)&s+-16843009);)i=i+4|0;if((255&s)<<24>>24)for(s=i;;){if(!(0|Et[(i=s+1|0)>>0])){f=i;break}s=i}else f=i;u=f}return u-t|0}(e))|0}while(0);return 0|n}(e|=0,r|=0);return 0|((0|Et[t>>0])==(255&r)<<24>>24?t:0)}function Ve(e){e|=0;var r=0,t=0,n=0,i=0,o=0,a=0,u=0;do{if(e){if((0|St[e+76>>2])<=-1){r=0|Ke(e);break}r=((t=!0)||He(),n=0|Ke(e))}else{if(i=0|St[34]?0|Ve(0|St[34]):0,H(11076),n=0|St[2768])for(t=n,n=i;;){if(a=(St[t+76>>2],0),u=(0|St[t+20>>2])>>>0>(0|St[t+28>>2])>>>0?0|Ke(t)|n:n,0|a&&He(),!(t=0|St[t+56>>2])){o=u;break}n=u}else o=i;V(11076),r=o}}while(0);return 0|r}function Ke(e){var r,t,n,i,o=0,a=(e|=0)+28|0;return 0|((0|St[(o=e+20|0)>>2])>>>0>(0|St[a>>2])>>>0&&(nr[15&St[e+36>>2]](e,0,0),0==(0|St[o>>2]))?-1:((t=0|St[(r=e+4|0)>>2])>>>0<(i=0|St[(n=e+8|0)>>2])>>>0&&nr[15&St[e+40>>2]](e,t-i|0,1),St[e+16>>2]=0,St[a>>2]=0,St[o>>2]=0,St[n>>2]=0,St[r>>2]=0))}function We(e,r,t){e|=0,r|=0;var n=0,n=1==(0|(t|=0))?r-(0|St[e+8>>2])+(0|St[e+4>>2])|0:r,i=e+28|0;return 0|((0|St[(r=e+20|0)>>2])>>>0>(0|St[i>>2])>>>0&&(nr[15&St[e+36>>2]](e,0,0),0==(0|St[r>>2]))?-1:(St[e+16>>2]=0,St[i>>2]=0,((St[r>>2]=0)|nr[15&St[e+40>>2]](e,n,t))<0?-1:(St[e+8>>2]=0,St[e+4>>2]=0,St[e>>2]=-17&St[e>>2],0)))}function je(e){var r=0,t=0,r=128&St[(e|=0)>>2]&&(0|St[e+20>>2])>>>0>(0|St[e+28>>2])>>>0?2:1;return 0|((0|(t=0|nr[15&St[e+40>>2]](e,0,r)))<0?t:t-(0|St[e+8>>2])+(0|St[e+4>>2])+(0|St[e+20>>2])-(0|St[e+28>>2])|0)}function Xe(e){e|=0;var r,t=0,n=0,i=0,o=0,a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0,R=0,g=0,T=0,N=0,D=0,P=0,C=0,I=0,L=0,x=0,B=0,H=0,U=0,z=0,Y=0,V=0,K=0,W=0,j=0,X=0,G=0,q=0,Q=0,Z=0,J=0,$=0,ee=0,re=0,te=0,ne=0,ie=0,oe=0,ae=0,ue=0,se=0,fe=0,le=0,ce=0,de=0,Ee=0,_e=0,Se=0,me=0,he=0,pe=0,be=0,ke=0,Fe=0,we=0,ye=0,ve=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),t=ve;do{if(e>>>0<245){if(i=(n=e>>>0<11?16:e+11&-8)>>>3,3&(a=(o=0|St[2774])>>>i)|0){l=0|St[(f=(s=11136+((u=(1&a^1)+i|0)<<1<<2)|0)+8|0)>>2],d=0|St[(c=l+8|0)>>2];do{if((0|s)!=(0|d)){if(d>>>0<(0|St[2778])>>>0&&Me(),(0|St[(E=d+12|0)>>2])==(0|l)){St[E>>2]=s,St[f>>2]=d;break}Me()}else St[2774]=o&~(1<>2]=3|d,St[(f=l+d+4|0)>>2]=1|St[f>>2],pt=ve,0|(_=c)}if((f=0|St[2776])>>>0>>0){if(0|a){S=0|St[(h=(m=11136+((p=((d=(E=(d=((s=a<>>(s=d>>>12&16))>>>5&8)|s|(E=(S=E>>>d)>>>2&4)|(S=(m=S>>>E)>>>1&2)|(m=(h=m>>>S)>>>1&1))+(h>>>m)|0)<<1<<2)|0)+8|0)>>2],s=0|St[(E=S+8|0)>>2];do{if((0|m)!=(0|s)){if(s>>>0<(0|St[2778])>>>0&&Me(),(0|St[(d=s+12|0)>>2])==(0|S)){St[d>>2]=m,St[h>>2]=s,b=o;break}Me()}else d=o&~(1<>2]=3|n,St[(h=S+n|0)+4>>2]=1|s,St[h+s>>2]=s,0|f&&(m=0|St[2779],a=11136+((i=f>>>3)<<1<<2)|0,b&(c=1<>2])>>>0<(0|St[2778])>>>0?Me():(k=l,F=i):(St[2774]=b|c,F=(k=a)+8|0),St[F>>2]=m,St[k+12>>2]=m,St[m+8>>2]=k,St[m+12>>2]=a),St[2776]=s,St[2779]=h,pt=ve,0|(_=E)}if(h=0|St[2775]){for(u=0|St[11400+(((s=(m=(s=(h&0-h)-1|0)>>>(a=s>>>12&16))>>>5&8)|a|(m=(c=m>>>s)>>>2&4)|(c=(i=c>>>m)>>>1&2)|(i=(l=i>>>c)>>>1&1))+(l>>>i)<<2)>>2],c=(-8&St[(l=i=u)+4>>2])-n|0;;){if(u=0|St[i+16>>2])w=u;else{if(!(m=0|St[i+20>>2]))break;w=m}l=(m=(u=(-8&St[(i=w)+4>>2])-n|0)>>>0>>0)?w:l,c=m?u:c}l>>>0<(i=0|St[2778])>>>0&&Me(),(E=l+n|0)>>>0<=l>>>0&&Me(),S=0|St[l+24>>2],p=0|St[l+12>>2];do{if((0|p)==(0|l)){if(m=0|St[(u=l+20|0)>>2])v=m,M=u;else{if(!(s=0|St[(a=l+16|0)>>2])){y=0;break}v=s,M=a}for(;;)if(0|(m=0|St[(u=v+20|0)>>2]))v=m,M=u;else{if(!(m=0|St[(u=v+16|0)>>2]))break;v=m,M=u}if(!(M>>>0>>0)){St[M>>2]=0,y=v;break}Me()}else{if((u=0|St[l+8>>2])>>>0>>0&&Me(),(0|St[(m=u+12|0)>>2])!=(0|l)&&Me(),(0|St[(a=p+8|0)>>2])==(0|l)){St[m>>2]=p,St[a>>2]=u,y=p;break}Me()}}while(0);do{if(0|S){if(p=0|St[l+28>>2],(0|l)==(0|St[(i=11400+(p<<2)|0)>>2])){if(!(St[i>>2]=y)){St[2775]=h&~(1<>>0<(0|St[2778])>>>0&&Me(),(0|St[(p=S+16|0)>>2])==(0|l)?St[p>>2]=y:St[S+20>>2]=y,!y)break;y>>>0<(p=0|St[2778])>>>0&&Me(),St[y+24>>2]=S,i=0|St[l+16>>2];do{if(0|i){if(!(i>>>0

>>0)){St[y+16>>2]=i,St[i+24>>2]=y;break}Me()}}while(0);if(0|(i=0|St[l+20>>2])){if(!(i>>>0<(0|St[2778])>>>0)){St[y+20>>2]=i,St[i+24>>2]=y;break}Me()}}}while(0);return c>>>0<16?(S=c+n|0,St[l+4>>2]=3|S,St[(h=l+S+4|0)>>2]=1|St[h>>2]):(St[l+4>>2]=3|n,St[E+4>>2]=1|c,St[E+c>>2]=c,0|f&&(h=0|St[2779],i=11136+((S=f>>>3)<<1<<2)|0,o&(p=1<>2])>>>0<(0|St[2778])>>>0?Me():(O=u,A=S):(St[2774]=o|p,A=(O=i)+8|0),St[A>>2]=h,St[O+12>>2]=h,St[h+8>>2]=O,St[h+12>>2]=i),St[2776]=c,St[2779]=E),pt=ve,0|(_=l+8|0)}R=n}else R=n}else if(e>>>0<=4294967231)if(h=-8&(i=e+11|0),p=0|St[2775]){S=0-h|0,g=(u=i>>>8)?16777215>>0?31:h>>>((s=14-((u=((a=u<<(i=(u+1048320|0)>>>16&8))+520192|0)>>>16&4)|i|(a=((m=a<>>16&2))+(m<>>15)|0)+7|0)&1|s<<1:0,s=0|St[11400+(g<<2)>>2];e:do{if(s)for(m=S,i=s,u=h<<(31==((a=0)|g)?0:25-(g>>>1)|0),d=0;;){if((C=(-8&St[i+4>>2])-h|0)>>>0>>0){if(!C){L=0,x=I=i,P=90;break e}B=i,H=C}else B=a,H=m;if(r=0==(0|(C=0|St[i+20>>2]))|(0|C)==(0|(i=0|St[i+16+(u>>>31<<2)>>2]))?d:C,C=0==(0|i)){T=r,N=B,D=H,P=86;break}a=B,m=H,u<<=1&C^1,d=r}else N=T=0,D=S,P=86}while(0);if(86==(0|P)){if(0==(0|T)&0==(0|N)){if(!(S=p&((s=2<>>(S=s>>>12&16))>>>5&8)|S|(n=(l=n>>>s)>>>2&4)|(l=(E=l>>>n)>>>1&2)|(E=(c=E>>>l)>>>1&1))+(c>>>E)<<2)>>2]}else U=T;U?(I=N,L=D,x=U,P=90):(z=N,Y=D)}if(90==(0|P))for(;;)if(P=0,l=(c=(E=(-8&St[x+4>>2])-h|0)>>>0>>0)?E:L,E=c?x:I,0|(c=0|St[x+16>>2]))I=E,L=l,x=c,P=90;else{if(!(x=0|St[x+20>>2])){z=E,Y=l;break}I=E,L=l,P=90}if(0!=(0|z)&&Y>>>0<((0|St[2776])-h|0)>>>0){z>>>0<(l=0|St[2778])>>>0&&Me(),(E=z+h|0)>>>0<=z>>>0&&Me(),c=0|St[z+24>>2],n=0|St[z+12>>2];do{if((0|n)==(0|z)){if(s=0|St[(S=z+20|0)>>2])K=s,W=S;else{if(!(f=0|St[(o=z+16|0)>>2])){V=0;break}K=f,W=o}for(;;)if(0|(s=0|St[(S=K+20|0)>>2]))K=s,W=S;else{if(!(s=0|St[(S=K+16|0)>>2]))break;K=s,W=S}if(!(W>>>0>>0)){St[W>>2]=0,V=K;break}Me()}else{if((S=0|St[z+8>>2])>>>0>>0&&Me(),(0|St[(s=S+12|0)>>2])!=(0|z)&&Me(),(0|St[(o=n+8|0)>>2])==(0|z)){St[s>>2]=n,St[o>>2]=S,V=n;break}Me()}}while(0);do{if(c){if(n=0|St[z+28>>2],(0|z)==(0|St[(l=11400+(n<<2)|0)>>2])){if(!(St[l>>2]=V)){l=p&~(1<>>0<(0|St[2778])>>>0&&Me(),(0|St[(l=c+16|0)>>2])==(0|z)?St[l>>2]=V:St[c+20>>2]=V,!V){j=p;break}V>>>0<(l=0|St[2778])>>>0&&Me(),St[V+24>>2]=c,n=0|St[z+16>>2];do{if(0|n){if(!(n>>>0>>0)){St[V+16>>2]=n,St[n+24>>2]=V;break}Me()}}while(0);if(n=0|St[z+20>>2]){if(!(n>>>0<(0|St[2778])>>>0)){St[V+20>>2]=n,St[n+24>>2]=V,j=p;break}Me()}else j=p}else j=p}while(0);do{if(16<=Y>>>0){if(St[z+4>>2]=3|h,St[E+4>>2]=1|Y,p=(St[E+Y>>2]=Y)>>>3,Y>>>0<256){c=11136+(p<<1<<2)|0,(n=0|St[2774])&(l=1<>2])>>>0<(0|St[2778])>>>0?Me():(X=S,G=p):(St[2774]=n|l,G=(X=c)+8|0),St[G>>2]=E,St[X+12>>2]=E,St[E+8>>2]=X,St[E+12>>2]=c;break}if(S=11400+((q=(c=Y>>>8)?16777215>>0?31:Y>>>((S=14-((c=((n=c<<(l=(c+1048320|0)>>>16&8))+520192|0)>>>16&4)|l|(n=((p=n<>>16&2))+(p<>>15)|0)+7|0)&1|S<<1:0)<<2)|0,St[E+28>>2]=q,St[(n=E+16|0)+4>>2]=0,St[n>>2]=0,!(j&(n=1<>2]=E,St[E+24>>2]=S,St[E+12>>2]=E,St[E+8>>2]=E;break}for(n=Y<<(31==(0|q)?0:25-(q>>>1)|0),p=0|St[S>>2];;){if((-8&St[p+4>>2]|0)==(0|Y)){P=148;break}if(!(S=0|St[(Q=p+16+(n>>>31<<2)|0)>>2])){P=145;break}n<<=1,p=S}if(145==(0|P)){if(!(Q>>>0<(0|St[2778])>>>0)){St[Q>>2]=E,St[E+24>>2]=p,St[E+12>>2]=E,St[E+8>>2]=E;break}Me()}else if(148==(0|P)){if(S=0|St[(n=p+8|0)>>2],(l=0|St[2778])>>>0<=S>>>0&l>>>0<=p>>>0){St[S+12>>2]=E,St[n>>2]=E,St[E+8>>2]=S,St[E+12>>2]=p,St[E+24>>2]=0;break}Me()}}else S=Y+h|0,St[z+4>>2]=3|S,St[(n=z+S+4|0)>>2]=1|St[n>>2]}while(0);return pt=ve,0|(_=z+8|0)}R=h}else R=h;else R=-1}while(0);if(R>>>0<=(z=0|St[2776])>>>0)return Y=z-R|0,Q=0|St[2779],15>>0?(q=Q+R|0,St[2779]=q,St[2776]=Y,St[q+4>>2]=1|Y,St[q+Y>>2]=Y,St[Q+4>>2]=3|R):(St[2776]=0,St[2779]=0,St[Q+4>>2]=3|z,St[(Y=Q+z+4|0)>>2]=1|St[Y>>2]),pt=ve,0|(_=Q+8|0);if(R>>>0<(Q=0|St[2777])>>>0)return Y=Q-R|0,St[2777]=Y,q=(z=0|St[2780])+R|0,St[2780]=q,St[q+4>>2]=1|Y,St[z+4>>2]=3|R,pt=ve,0|(_=z+8|0);if(Z=0|St[2892]?0|St[2894]:(St[2894]=4096,St[2893]=4096,St[2895]=-1,St[2896]=-1,St[2897]=0,St[2885]=0,z=-16&t^1431655768,St[t>>2]=z,St[2892]=z,4096),z=R+48|0,(Z=(Y=Z+(t=R+47|0)|0)&(q=0-Z|0))>>>0<=R>>>0)return pt=ve,(_=0)|_;if(0|(j=0|St[2884])&&(G=(X=0|St[2882])+Z|0)>>>0<=X>>>0|j>>>0>>0)return pt=ve,(_=0)|_;e:do{if(4&St[2885])P=187;else{j=0|St[2780];r:do{if(j){for(G=11544;!((X=0|St[G>>2])>>>0<=j>>>0&&(X+(0|St[(J=G+4|0)>>2])|0)>>>0>j>>>0);){if(!(X=0|St[G+8>>2])){P=172;break r}G=X}if((p=Y-Q&q)>>>0<2147483647)if((0|(X=0|Ze(0|p)))==((0|St[G>>2])+(0|St[J>>2])|0)){if(-1!=(0|X)){$=p,ee=X,P=190;break e}}else re=X,te=p,P=180}else P=172}while(0);do{if(172==(0|P)&&-1!=(0|(j=0|Ze(0)))&&(h=j,p=(V=(0==((X=(p=0|St[2893])+-1|0)&h|0)?0:(X+h&0-p)-h|0)+Z|0)+(h=0|St[2882])|0,R>>>0>>0&V>>>0<2147483647)){if(0|(X=0|St[2884])&&p>>>0<=h>>>0|X>>>0

>>0)break;if((0|(X=0|Ze(0|V)))==(0|j)){$=V,ee=j,P=190;break e}re=X,te=V,P=180}}while(0);r:do{if(180==(0|P)){V=0-te|0;do{if(te>>>0>>0&te>>>0<2147483647&-1!=(0|re)&&(j=t-te+(X=0|St[2894])&0-X)>>>0<2147483647){if(-1==(0|Ze(0|j))){Ze(0|V);break r}ne=j+te|0;break}}while(ne=te,0);if(-1!=(0|re)){$=ne,ee=re,P=190;break e}}}while(0);St[2885]=4|St[2885],P=187}}while(0);if(187==(0|P)&&Z>>>0<2147483647&&(re=0|Ze(0|Z))>>>0<(Z=0|Ze(0))>>>0&-1!=(0|re)&-1!=(0|Z)&&(R+40|0)>>>0<(ne=Z-re|0)>>>0&&($=ne,ee=re,P=190),190==(0|P)){re=(0|St[2882])+$|0,(St[2882]=re)>>>0>(0|St[2883])>>>0&&(St[2883]=re),re=0|St[2780];do{if(re){for(ne=11544;;){if((0|ee)==((ie=0|St[ne>>2])+(ae=0|St[(oe=ne+4|0)>>2])|0)){P=200;break}if(!(Z=0|St[ne+8>>2]))break;ne=Z}if(200==(0|P)&&0==(8&St[ne+12>>2]|0)&&re>>>0>>0&ie>>>0<=re>>>0){St[oe>>2]=ae+$,Z=re+(te=0==(7&(Z=re+8|0)|0)?0:0-Z&7)|0,t=$-te+(0|St[2777])|0,St[2780]=Z,St[2777]=t,St[Z+4>>2]=1|t,St[Z+t+4>>2]=40,St[2781]=St[2896];break}for(ue=ee>>>0<(t=0|St[2778])>>>0?St[2778]=ee:t,t=ee+$|0,Z=11544;;){if((0|St[Z>>2])==(0|t)){P=208;break}if(!(te=0|St[Z+8>>2])){se=11544;break}Z=te}if(208==(0|P)){if(!(8&St[Z+12>>2])){St[Z>>2]=ee,St[(ne=Z+4|0)>>2]=(0|St[ne>>2])+$,te=ee+(0==(7&(ne=ee+8|0)|0)?0:0-ne&7)|0,z=t+(0==(7&(ne=t+8|0)|0)?0:0-ne&7)|0,ne=te+R|0,J=z-te-R|0,St[te+4>>2]=3|R;do{if((0|z)!=(0|re)){if((0|z)==(0|St[2779])){q=(0|St[2776])+J|0,St[2776]=q,St[2779]=ne,St[ne+4>>2]=1|q,St[ne+q>>2]=q;break}if(1==(3&(q=0|St[z+4>>2])|0)){Q=-8&q,Y=q>>>3;e:do{if(256<=q>>>0){V=0|St[z+24>>2],G=0|St[z+12>>2];do{if((0|G)==(0|z)){if(p=0|St[(X=(j=z+16|0)+4|0)>>2])le=p,ce=X;else{if(!(h=0|St[j>>2])){fe=0;break}le=h,ce=j}for(;;)if(0|(p=0|St[(X=le+20|0)>>2]))le=p,ce=X;else{if(!(p=0|St[(X=le+16|0)>>2]))break;le=p,ce=X}if(!(ce>>>0>>0)){St[ce>>2]=0,fe=le;break}Me()}else{if((X=0|St[z+8>>2])>>>0>>0&&Me(),(0|St[(p=X+12|0)>>2])!=(0|z)&&Me(),(0|St[(j=G+8|0)>>2])==(0|z)){St[p>>2]=G,St[j>>2]=X,fe=G;break}Me()}}while(0);if(!V)break;X=11400+((G=0|St[z+28>>2])<<2)|0;do{if((0|z)==(0|St[X>>2])){if(0|(St[X>>2]=fe))break;St[2775]=St[2775]&~(1<>>0<(0|St[2778])>>>0&&Me(),(0|St[(j=V+16|0)>>2])==(0|z)?St[j>>2]=fe:St[V+20>>2]=fe,!fe)break e}while(0);fe>>>0<(G=0|St[2778])>>>0&&Me(),St[fe+24>>2]=V,j=0|St[(X=z+16|0)>>2];do{if(0|j){if(!(j>>>0>>0)){St[fe+16>>2]=j,St[j+24>>2]=fe;break}Me()}}while(0);if(!(j=0|St[X+4>>2]))break;if(!(j>>>0<(0|St[2778])>>>0)){St[fe+20>>2]=j,St[j+24>>2]=fe;break}Me()}else{j=0|St[z+8>>2],G=0|St[z+12>>2],V=11136+(Y<<1<<2)|0;do{if((0|j)!=(0|V)){if(j>>>0>>0&&Me(),(0|St[j+12>>2])==(0|z))break;Me()}}while(0);if((0|G)==(0|j)){St[2774]=St[2774]&~(1<>>0>>0&&Me(),(0|St[(X=G+8|0)>>2])==(0|z)){de=X;break}Me()}}while(0);St[j+12>>2]=G,St[de>>2]=j}}while(0);Ee=z+Q|0,_e=Q+J|0}else Ee=z,_e=J;if(St[(Y=Ee+4|0)>>2]=-2&St[Y>>2],St[ne+4>>2]=1|_e,Y=(St[ne+_e>>2]=_e)>>>3,_e>>>0<256){q=11136+(Y<<1<<2)|0,V=0|St[2774],X=1<>2])>>>0>=(0|St[2778])>>>0){Se=p,me=Y;break}Me()}else St[2774]=V|X,me=(Se=q)+8|0}while(0);St[me>>2]=ne,St[Se+12>>2]=ne,St[ne+8>>2]=Se,St[ne+12>>2]=q;break}X=_e>>>8;do{if(X){if(16777215<_e>>>0){he=31;break}he=_e>>>((h=14-((Y=((Q=X<<(V=(X+1048320|0)>>>16&8))+520192|0)>>>16&4)|V|(Q=((p=Q<>>16&2))+(p<>>15)|0)+7|0)&1|h<<1}else he=0}while(0);if(X=11400+(he<<2)|0,St[ne+28>>2]=he,St[(q=ne+16|0)+4>>2]=0,!((q=(St[q>>2]=0)|St[2775])&(h=1<>2]=ne,St[ne+24>>2]=X,St[ne+12>>2]=ne,St[ne+8>>2]=ne;break}for(h=_e<<(31==(0|he)?0:25-(he>>>1)|0),q=0|St[X>>2];;){if((-8&St[q+4>>2]|0)==(0|_e)){P=278;break}if(!(X=0|St[(pe=q+16+(h>>>31<<2)|0)>>2])){P=275;break}h<<=1,q=X}if(275==(0|P)){if(!(pe>>>0<(0|St[2778])>>>0)){St[pe>>2]=ne,St[ne+24>>2]=q,St[ne+12>>2]=ne,St[ne+8>>2]=ne;break}Me()}else if(278==(0|P)){if(X=0|St[(h=q+8|0)>>2],(Q=0|St[2778])>>>0<=X>>>0&Q>>>0<=q>>>0){St[X+12>>2]=ne,St[h>>2]=ne,St[ne+8>>2]=X,St[ne+12>>2]=q,St[ne+24>>2]=0;break}Me()}}else X=(0|St[2777])+J|0,St[2777]=X,St[2780]=ne,St[ne+4>>2]=1|X}while(0);return pt=ve,0|(_=te+8|0)}se=11544}for(;!((ne=0|St[se>>2])>>>0<=re>>>0&&re>>>0<(be=ne+(0|St[se+4>>2])|0)>>>0);)se=0|St[se+8>>2];for(te=be+-47|0,ne=te+8|0,J=te+(0==(7&ne|0)?0:0-ne&7)|0,ne=re+16|0,te=J>>>0>>0?re:J,J=te+8|0,z=ee+8|0,t=0==(7&z|0)?0:0-z&7,z=ee+t|0,Z=$+-40-t|0,St[2780]=z,St[2777]=Z,St[z+4>>2]=1|Z,St[z+Z+4>>2]=40,St[2781]=St[2896],Z=te+4|0,St[Z>>2]=27,St[J>>2]=St[2886],St[J+4>>2]=St[2887],St[J+8>>2]=St[2888],St[J+12>>2]=St[2889],St[2886]=ee,St[2887]=$,St[2889]=0,St[2888]=J,J=te+24|0;St[(J=J+4|0)>>2]=7,(J+4|0)>>>0>>0;);if((0|te)!=(0|re)){if(J=te-re|0,St[Z>>2]=-2&St[Z>>2],St[re+4>>2]=1|J,z=(St[te>>2]=J)>>>3,J>>>0<256){t=11136+(z<<1<<2)|0,(X=0|St[2774])&(h=1<>2])>>>0<(0|St[2778])>>>0?Me():(ke=Q,Fe=z):(St[2774]=X|h,Fe=(ke=t)+8|0),St[Fe>>2]=re,St[ke+12>>2]=re,St[re+8>>2]=ke,St[re+12>>2]=t;break}if(Q=11400+((we=(t=J>>>8)?16777215>>0?31:J>>>((Q=14-((t=((X=t<<(h=(t+1048320|0)>>>16&8))+520192|0)>>>16&4)|h|(X=((z=X<>>16&2))+(z<>>15)|0)+7|0)&1|Q<<1:0)<<2)|0,St[re+28>>2]=we,St[re+20>>2]=0,!((X=(St[ne>>2]=0)|St[2775])&(z=1<>2]=re,St[re+24>>2]=Q,St[re+12>>2]=re,St[re+8>>2]=re;break}for(z=J<<(31==(0|we)?0:25-(we>>>1)|0),X=0|St[Q>>2];;){if((-8&St[X+4>>2]|0)==(0|J)){P=304;break}if(!(Q=0|St[(ye=X+16+(z>>>31<<2)|0)>>2])){P=301;break}z<<=1,X=Q}if(301==(0|P)){if(!(ye>>>0<(0|St[2778])>>>0)){St[ye>>2]=re,St[re+24>>2]=X,St[re+12>>2]=re,St[re+8>>2]=re;break}Me()}else if(304==(0|P)){if(J=0|St[(z=X+8|0)>>2],(ne=0|St[2778])>>>0<=J>>>0&ne>>>0<=X>>>0){St[J+12>>2]=re,St[z>>2]=re,St[re+8>>2]=J,St[re+12>>2]=X,St[re+24>>2]=0;break}Me()}}}else{for(J=0|St[2778],0==(0|J)|ee>>>0>>0&&(St[2778]=ee),St[2886]=ee,St[2887]=$,St[2889]=0,St[2783]=St[2892],St[2782]=-1,J=0;St[(z=11136+(J<<1<<2)|0)+12>>2]=z,St[z+8>>2]=z,J=J+1|0,32!=(0|J););J=ee+(X=0==(7&(J=ee+8|0)|0)?0:0-J&7)|0,z=$+-40-X|0,St[2780]=J,St[2777]=z,St[J+4>>2]=1|z,St[J+z+4>>2]=40,St[2781]=St[2896]}}while(0);if(R>>>0<($=0|St[2777])>>>0)return ee=$-R|0,St[2777]=ee,re=($=0|St[2780])+R|0,St[2780]=re,St[re+4>>2]=1|ee,St[$+4>>2]=3|R,pt=ve,0|(_=$+8|0)}return $=0|vt(),St[$>>2]=12,pt=ve,(_=0)|_}function Ge(e){var r,t,n=0,i=0,o=0,a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0,R=0,g=0,T=0;if(e|=0){(n=e+-8|0)>>>0<(i=0|St[2778])>>>0&&Me(),1==(0|(e=3&(o=0|St[e+-4>>2])))&&Me(),r=n+(a=-8&o)|0;do{if(1&o)d=n,E=a;else{if(u=0|St[n>>2],!e)return;if(f=u+a|0,(s=n+(0-u)|0)>>>0>>0&&Me(),(0|s)==(0|St[2779])){if(3==(3&(c=0|St[(l=4+r|0)>>2])|0))return St[2776]=f,St[l>>2]=-2&c,St[s+4>>2]=1|f,void(St[s+f>>2]=f);d=s,E=f;break}if(c=u>>>3,u>>>0<256){if(u=0|St[s+8>>2],l=0|St[s+12>>2],(0|u)!=(0|(_=11136+(c<<1<<2)|0))&&(u>>>0>>0&&Me(),(0|St[u+12>>2])!=(0|s)&&Me()),(0|l)==(0|u)){St[2774]=St[2774]&~(1<>>0>>0&&Me(),(0|St[(_=l+8|0)>>2])==(0|s)?S=_:Me()):S=l+8|0,St[u+12>>2]=l,St[S>>2]=u,d=s,E=f;break}u=0|St[s+24>>2],l=0|St[s+12>>2];do{if((0|l)==(0|s)){if(m=0|St[(c=(_=s+16|0)+4|0)>>2])p=m,b=c;else{if(!(t=0|St[_>>2])){h=0;break}p=t,b=_}for(;;)if(0|(m=0|St[(c=p+20|0)>>2]))p=m,b=c;else{if(!(m=0|St[(c=p+16|0)>>2]))break;p=m,b=c}if(!(b>>>0>>0)){St[b>>2]=0,h=p;break}Me()}else{if((c=0|St[s+8>>2])>>>0>>0&&Me(),(0|St[(m=c+12|0)>>2])!=(0|s)&&Me(),(0|St[(_=l+8|0)>>2])==(0|s)){St[m>>2]=l,St[_>>2]=c,h=l;break}Me()}}while(0);if(u){if(l=0|St[s+28>>2],(0|s)==(0|St[(c=11400+(l<<2)|0)>>2])){if(!(St[c>>2]=h)){St[2775]=St[2775]&~(1<>>0<(0|St[2778])>>>0&&Me(),(0|St[(l=u+16|0)>>2])==(0|s)?St[l>>2]=h:St[u+20>>2]=h,!h){d=s,E=f;break}h>>>0<(l=0|St[2778])>>>0&&Me(),St[h+24>>2]=u,_=0|St[(c=s+16|0)>>2];do{if(0|_){if(!(_>>>0>>0)){St[h+16>>2]=_,St[_+24>>2]=h;break}Me()}}while(0);if(_=0|St[c+4>>2]){if(!(_>>>0<(0|St[2778])>>>0)){St[h+20>>2]=_,St[_+24>>2]=h,d=s,E=f;break}Me()}else d=s,E=f}else d=s,E=f}}while(0);if(r>>>0<=d>>>0&&Me(),1&(n=0|St[(a=4+r|0)>>2])||Me(),2&n)St[a>>2]=-2&n,St[d+4>>2]=1|E,v=St[d+E>>2]=E;else{if((0|r)==(0|St[2780]))return h=(0|St[2777])+E|0,St[2777]=h,St[2780]=d,St[d+4>>2]=1|h,(0|d)!=(0|St[2779])?void 0:(St[2779]=0,void(St[2776]=0));if((0|r)==(0|St[2779]))return h=(0|St[2776])+E|0,St[2776]=h,St[2779]=d,St[d+4>>2]=1|h,void(St[d+h>>2]=h);h=(-8&n)+E|0,i=n>>>3;do{if(256<=n>>>0){p=0|St[24+r>>2],b=0|St[12+r>>2];do{if((0|b)==(0|r)){if(o=0|St[(e=(S=16+r|0)+4|0)>>2])F=o,w=e;else{if(!(_=0|St[S>>2])){k=0;break}F=_,w=S}for(;;)if(0|(o=0|St[(e=F+20|0)>>2]))F=o,w=e;else{if(!(o=0|St[(e=F+16|0)>>2]))break;F=o,w=e}if(!(w>>>0<(0|St[2778])>>>0)){St[w>>2]=0,k=F;break}Me()}else{if((e=0|St[8+r>>2])>>>0<(0|St[2778])>>>0&&Me(),(0|St[(o=e+12|0)>>2])!=(0|r)&&Me(),(0|St[(S=b+8|0)>>2])==(0|r)){St[o>>2]=b,St[S>>2]=e,k=b;break}Me()}}while(0);if(0|p){if(b=0|St[28+r>>2],(0|r)==(0|St[(f=11400+(b<<2)|0)>>2])){if(!(St[f>>2]=k)){St[2775]=St[2775]&~(1<>>0<(0|St[2778])>>>0&&Me(),(0|St[(b=p+16|0)>>2])==(0|r)?St[b>>2]=k:St[p+20>>2]=k,!k)break;k>>>0<(b=0|St[2778])>>>0&&Me(),St[k+24>>2]=p,s=0|St[(f=16+r|0)>>2];do{if(0|s){if(!(s>>>0>>0)){St[k+16>>2]=s,St[s+24>>2]=k;break}Me()}}while(0);if(0|(s=0|St[f+4>>2])){if(!(s>>>0<(0|St[2778])>>>0)){St[k+20>>2]=s,St[s+24>>2]=k;break}Me()}}}else{if(s=0|St[8+r>>2],b=0|St[12+r>>2],(0|s)!=(0|(p=11136+(i<<1<<2)|0))&&(s>>>0<(0|St[2778])>>>0&&Me(),(0|St[s+12>>2])!=(0|r)&&Me()),(0|b)==(0|s)){St[2774]=St[2774]&~(1<>>0<(0|St[2778])>>>0&&Me(),(0|St[(p=b+8|0)>>2])==(0|r)?y=p:Me()):y=b+8|0,St[s+12>>2]=b,St[y>>2]=s}}while(0);if(St[d+4>>2]=1|h,St[d+h>>2]=h,(0|d)==(0|St[2779]))return void(St[2776]=h);v=h}if(E=v>>>3,v>>>0<256)return n=11136+(E<<1<<2)|0,(a=0|St[2774])&(h=1<>2])>>>0<(0|St[2778])>>>0?Me():(M=y,O=E):(St[2774]=a|h,O=(M=n)+8|0),St[O>>2]=d,St[M+12>>2]=d,St[d+8>>2]=M,void(St[d+12>>2]=n);a=11400+((A=(n=v>>>8)?16777215>>0?31:v>>>((a=14-((n=((O=n<<(M=(n+1048320|0)>>>16&8))+520192|0)>>>16&4)|M|(O=((h=O<>>16&2))+(h<>>15)|0)+7|0)&1|a<<1:0)<<2)|0,St[d+28>>2]=A,St[d+20>>2]=0,O=(St[d+16>>2]=0)|St[2775],h=1<>>1)|0),n=0|St[a>>2];;){if((-8&St[n+4>>2]|0)==(0|v)){R=130;break}if(!(E=0|St[(g=n+16+(M>>>31<<2)|0)>>2])){R=127;break}M<<=1,n=E}if(127==(0|R)){if(!(g>>>0<(0|St[2778])>>>0)){St[g>>2]=d,St[d+24>>2]=n,St[d+12>>2]=d,St[d+8>>2]=d;break}Me()}else if(130==(0|R)){if(f=0|St[(M=n+8|0)>>2],(E=0|St[2778])>>>0<=f>>>0&E>>>0<=n>>>0){St[f+12>>2]=d,St[M>>2]=d,St[d+8>>2]=f,St[d+12>>2]=n,St[d+24>>2]=0;break}Me()}}else St[2775]=O|h,St[a>>2]=d,St[d+24>>2]=a,St[d+12>>2]=d,St[d+8>>2]=d}while(0);if(d=(0|St[2782])-1|0,!(St[2782]=d)){for(T=11552;d=0|St[T>>2];)T=d+8|0;St[2782]=-1}}}function Nt(e,r,t,n){r|=0,n|=0;return 0|(Ft=r-n-((e|=0)>>>0<(t|=0)>>>0|0)>>>0,e-t>>>0|0)}function Dt(e,r,t,n){var i=0;return 0|(Ft=(r|=0)+(n|=0)+((i=(e|=0)+(t|=0)>>>0)>>>0>>0|0)>>>0,0|i)}function Pt(e,r,t){r|=0;var n,i,o,a=(e|=0)+(t|=0)|0;if(20<=(0|t)){if(i=(r&=255)|r<<8|r<<16|r<<24,o=-4&a,n=3&e)for(n=e+4-n|0;(0|e)<(0|n);)Et[e>>0]=r,e=e+1|0;for(;(0|e)<(0|o);)St[e>>2]=i,e=e+4|0}for(;(0|e)<(0|a);)Et[e>>0]=r,e=e+1|0;return e-t|0}function Ct(e,r,t){return e|=0,r|=0,(0|(t|=0))<32?(Ft=r>>>t,e>>>t|(r&(1<>>t-32|(Ft=0)}function It(e,r,t){return e|=0,r|=0,(0|(t|=0))<32?(Ft=r<>>32-t,e<>0]))<8?0|r:(0|(r=0|Et[E+(e>>8&255)>>0]))<8?r+8|0:(0|(r=0|Et[E+(e>>16&255)>>0]))<8?r+16|0:24+(0|Et[E+(e>>>24)>>0])|0}function Qe(e,r,t,n,i){i|=0;var o,a,u,s=0,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0,R=0,g=0,T=0,N=0,s=e|=0,c=t|=0,E=d=n|=0;if(!(l=f=r|=0))return _=0!=(0|i),E?(_&&(St[i>>2]=0|e,St[i+4>>2]=0&r),(m=S=0)|(Ft=S,m)):(_&&(St[i>>2]=(s>>>0)%(c>>>0),St[i+4>>2]=0),(S=0)|(Ft=S,m=(s>>>0)/(c>>>0)>>>0));_=0==(0|E);do{if(c){if(!_){if((h=(0|D(0|E))-(0|D(0|l))|0)>>>0<=31){w=s>>>((F=p=h+1|0)>>>0)&(k=h-31>>31)|l<<(b=31-h|0),y=l>>>(p>>>0)&k,v=0,M=s<>2]=0|e,St[i+4>>2]=f|0&r,(m=S=0)|(Ft=S,m)):(m=S=0)|(Ft=S,m)}if((b=c-1|0)&c|0){w=(h=32-(k=33+(0|D(0|c))-(0|D(0|l))|0)|0)-1>>31&l>>>((a=k-32|0)>>>0)|(l<>>((F=k)>>>0))&(u=a>>31),y=u&l>>>(k>>>0),v=s<<(p=64-k|0)&(o=h>>31),M=(l<>>(a>>>0))&o|s<>31;break}return 0|i&&(St[i>>2]=b&s,St[i+4>>2]=0),1==(0|c)?0|(Ft=S=f|0&r,m=0|e):(b=0|qe(0|c),0|(Ft=S=l>>>(b>>>0)|0,m=l<<32-b|s>>>(b>>>0)|0))}if(_)return 0|i&&(St[i>>2]=(l>>>0)%(c>>>0),St[i+4>>2]=0),(S=0)|(Ft=S,m=(l>>>0)/(c>>>0)>>>0);if(!s)return 0|i&&(St[i>>2]=0,St[i+4>>2]=(l>>>0)%(E>>>0)),(S=0)|(Ft=S,m=(l>>>0)/(E>>>0)>>>0);if(!((b=E-1|0)&E))return 0|i&&(St[i>>2]=0|e,St[i+4>>2]=b&l|0&r),m=l>>>(((S=0)|qe(0|E))>>>0),0|(Ft=S,m);if((b=(0|D(0|E))-(0|D(0|l))|0)>>>0<=30){w=l<<(h=31-b|0)|s>>>((F=k=b+1|0)>>>0),y=l>>>(k>>>0),v=0,M=s<>2]=0|e,St[i+4>>2]=f|0&r),(m=S=0)|(Ft=S,m)}while(0);if(F){for(r=0|t,t=d|0&n,n=0|Dt(0|r,0|t,-1,-1),d=Ft,f=M,M=v,v=y,y=w,w=F,F=0;f=M>>>31|(e=f)<<1,M=F|M<<1,Nt(0|n,0|d,0|(s=y<<1|e>>>31|0),0|(e=y>>>31|v<<1|0)),F=1&(E=(l=Ft)>>31|((0|l)<0?-1:0)<<1),y=0|Nt(0|s,0|e,E&r|0,(((0|l)<0?-1:0)>>31|((0|l)<0?-1:0)<<1)&t|0),v=Ft,w=w-1|0,0!=(0|w););O=f,A=M,R=v,g=y,T=0,N=F}else O=M,A=v,R=y,g=w,N=T=0;return F=A,(A=0)|i&&(St[i>>2]=g,St[i+4>>2]=R),0|(Ft=S=(0|F)>>>31|(O|A)<<1|0&(A<<1|F>>>31)|T,m=-2&(F<<1|0)|N)}function Lt(e,r,t,n){return 0|Qe(e|=0,r|=0,t|=0,n|=0,0)}function Ze(e){var r,t;return 0<(0|(e=(e|=0)+15&-16|0))&(0|(t=(r=0|St[d>>2])+e|0))<(0|r)|(0|t)<0?(h(),M(12),-1):(0|(St[d>>2]=t))>(0|m())&&0==(0|S())?(M(12),St[d>>2]=r,-1):0|r}function xt(e,r,t,n){var i,o=pt;return pt=pt+16|0,Qe(e|=0,r|=0,t|=0,n|=0,i=0|o),pt=o,0|(Ft=0|St[4+i>>2],0|St[i>>2])}function Je(e,r,t){e|=0,r|=0;var n;if(4096<=(0|(t|=0)))return 0|R(0|e,0|r,0|t);if(n=0|e,(3&e)==(3&r)){for(;3&e;){if(!t)return 0|n;Et[e>>0]=0|Et[r>>0],e=e+1|0,r=r+1|0,t=t-1|0}for(;4<=(0|t);)St[e>>2]=St[r>>2],e=e+4|0,r=r+4|0,t=t-4|0}for(;0<(0|t);)Et[e>>0]=0|Et[r>>0],e=e+1|0,r=r+1|0,t=t-1|0;return 0|n}function $e(){return 0}function er(e,r,t){return p(0),0}function rr(e){b(1)}function tr(e,r){k(2)}var nr=[er,function(e,r,t){e|=0,r|=0,t|=0;var n=0,i=pt;return(0|bt)<=(0|(pt=pt+80|0))&&yt(80),n=i,St[e+36>>2]=9,0==(64&St[e>>2]|0)&&(St[n>>2]=St[e+60>>2],St[n+4>>2]=21505,St[n+8>>2]=i+12,0|Y(54,0|n))&&(Et[e+75>>0]=-1),n=0|xe(e,r,t),pt=i,0|n},function(e,r,t){e|=0,r|=0,t|=0;var n,i,o=0,a=pt;return(0|bt)<=(0|(pt=pt+32|0))&&yt(32),i=(n=a)+20|0,St[n>>2]=St[e+60>>2],St[n+4>>2]=0,St[n+8>>2]=r,St[n+12>>2]=i,St[n+16>>2]=t,o=(0|Be(0|O(140,0|n)))<0?St[i>>2]=-1:0|St[i>>2],pt=a,0|o},function(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u=pt;return(0|bt)<=(0|(pt=pt+16|0))&&yt(16),i=u+8|0,o=u+4|0,St[(n=(a=u)+12|0)>>2]=e,St[i>>2]=r,St[o>>2]=t,St[a>>2]=St[n>>2],n=0==(0|L(8+(0|St[a>>2])|0,0|St[i>>2],0|St[o>>2])),pt=u,0|(n?0:8)},function(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u=pt;return(0|bt)<=(0|(pt=pt+16|0))&&yt(16),i=u+8|0,o=u+4|0,St[(n=(a=u)+12|0)>>2]=e,St[i>>2]=r,St[o>>2]=t,St[a>>2]=St[n>>2],n=0|ae(8+(0|St[a>>2])|0,0|St[i>>2],0|St[o>>2]),pt=u,0|n},function(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u,s,f=0,l=0,c=0,d=0,E=0,_=pt;return(0|bt)<=(0|(pt=pt+32|0))&&yt(32),i=_+16|0,o=_+12|0,a=_+8|0,u=_+4|0,St[(n=(s=_)+20|0)>>2]=e,St[i>>2]=r,St[o>>2]=t,St[a>>2]=0,St[u>>2]=St[n>>2],St[s>>2]=(0|St[24+(0|St[u>>2])>>2])-(0|St[20+(0|St[u>>2])>>2]),0==(0|St[s>>2])&&0<(0|St[St[o>>2]>>2])>>>0&&(16384<((St[20+(0|St[u>>2])>>2]=0)|St[St[o>>2]>>2])>>>0&&(St[St[o>>2]>>2]=16384),n=0|nr[15&St[St[16+(0|St[u>>2])>>2]>>2]](0|St[16+(0|St[u>>2])>>2],28+(0|St[u>>2])|0,0|St[o>>2]),St[a>>2]=n,n=0|St[St[o>>2]>>2],St[24+(0|St[u>>2])>>2]=n,St[s>>2]=n),pt=(E=(d=(c=(l=(f=((0|St[s>>2])>>>0>=(0|St[St[o>>2]>>2])>>>0||(St[St[o>>2]>>2]=St[s>>2]),(0|St[u>>2])+28|0),0|St[u>>2]),f+(0|St[(l+20|0)>>2])|0),0|St[i>>2]),St[d>>2]=c,0|St[a>>2]),_),0|E},function(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u,s,f=0,l=0,c=0,d=0,E=0,_=pt;return(0|bt)<=(0|(pt=pt+32|0))&&yt(32),i=_+16|0,o=_+12|0,a=_+8|0,u=_+4|0,St[(n=(s=_)+20|0)>>2]=e,St[i>>2]=r,St[o>>2]=t,St[a>>2]=0,St[u>>2]=St[n>>2],St[s>>2]=(0|St[24+(0|St[u>>2])>>2])-(0|St[20+(0|St[u>>2])>>2]),0==(0|St[s>>2])&&0<(0|St[St[o>>2]>>2])>>>0&&(St[20+(0|St[u>>2])>>2]=0,St[s>>2]=16384,n=0|nr[15&St[St[16+(0|St[u>>2])>>2]>>2]](0|St[16+(0|St[u>>2])>>2],28+(0|St[u>>2])|0,s),St[a>>2]=n,St[24+(0|St[u>>2])>>2]=St[s>>2]),pt=(E=(d=(c=(l=(f=((0|St[s>>2])>>>0>=(0|St[St[o>>2]>>2])>>>0||(St[St[o>>2]>>2]=St[s>>2]),(0|St[u>>2])+28|0),0|St[u>>2]),f+(0|St[(l+20|0)>>2])|0),0|St[i>>2]),St[d>>2]=c,0|St[a>>2]),_),0|E},function(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u,s=0,f=0,l=pt;return(0|bt)<=(0|(pt=pt+32|0))&&yt(32),n=l+20|0,s=l+12|0,o=l+8|0,a=l+4|0,St[(i=(u=l)+16|0)>>2]=e,St[s>>2]=r,St[o>>2]=t,St[a>>2]=St[i>>2],St[u>>2]=(0|St[24+(0|St[a>>2])>>2])-(0|St[20+(0|St[a>>2])>>2]),pt=(f=0|St[u>>2]?((0|St[u>>2])>>>0>(0|St[St[o>>2]>>2])>>>0&&(St[u>>2]=St[St[o>>2]>>2]),Je(0|St[s>>2],28+(0|St[a>>2])+(0|St[20+(0|St[a>>2])>>2])|0,0|St[u>>2]),s=20+(0|St[a>>2])|0,St[s>>2]=(0|St[s>>2])+(0|St[u>>2]),St[St[o>>2]>>2]=St[u>>2],(St[n>>2]=0)|St[n>>2]):(i=0|nr[15&St[St[16+(0|St[a>>2])>>2]>>2]](0|St[16+(0|St[a>>2])>>2],0|St[s>>2],0|St[o>>2]),St[n>>2]=i,0|St[n>>2]),l),0|f},function(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u=pt;return(0|bt)<=(0|(pt=pt+16|0))&&yt(16),i=u+8|0,o=u+4|0,St[(n=(a=u)+12|0)>>2]=e,St[i>>2]=r,St[o>>2]=t,St[a>>2]=St[n>>2],St[24+(0|St[a>>2])>>2]=0,n=(St[20+(0|St[a>>2])>>2]=0)|nr[15&St[4+(0|St[16+(0|St[a>>2])>>2])>>2]](0|St[16+(0|St[a>>2])>>2],0|St[i>>2],0|St[o>>2]),pt=u,0|n},xe,function(e,r,t){e|=0,r|=0,t|=0;var n,i,o,a,u=0,s=0,f=0,l=0,c=0,d=pt;return(0|bt)<=(0|(pt=pt+48|0))&&yt(48),n=d+16|0,St[(s=(u=d)+32|0)>>2]=r,f=s+4|0,o=0|St[(i=e+48|0)>>2],St[f>>2]=t-(0!=(0|o)&1),a=e+44|0,St[s+8>>2]=St[a>>2],St[s+12>>2]=o,c=1<=(0|(l=0|St[2762]?(g(2,0|e),St[u>>2]=St[e+60>>2],St[u+4>>2]=s,St[u+8>>2]=2,s=0|Be(0|T(145,0|u)),v(0),s):(St[n>>2]=St[e+60>>2],St[4+n>>2]=s,St[8+n>>2]=2,0|Be(0|T(145,0|n)))))?(s=0|St[f>>2])>>>0>>0?(f=0|St[a>>2],u=St[(a=e+4|0)>>2]=f,St[e+8>>2]=u+(l-s),0|St[i>>2]&&(St[a>>2]=u+1,Et[r+(t+-1)>>0]=0|Et[u>>0]),t):l:(St[e>>2]=St[e>>2]|48&l^16,St[e+8>>2]=0,St[e+4>>2]=0,l),pt=d,0|c},er,er,er,er,er],ir=[rr,function(e){0|St[(e|=0)+68>>2]||He()},function(e){0|St[(e|=0)+68>>2]||He()},rr],or=[tr,function(e,r){e|=0,r|=0;var t,n=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(t=n)+4>>2]=e,St[t>>2]=r,Ge(0|St[t>>2]),pt=n},function(e,r){e|=0,r|=0;var t,n=pt;(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(t=n)+4>>2]=e,St[t>>2]=r,Ge(0|St[t>>2]),pt=n},tr],ar=[function(e){return F(3),0},function(e){e|=0;var r,t=pt;return(0|bt)<=(0|(pt=pt+16|0))&&yt(16),St[(r=t)>>2]=St[e+60>>2],e=0|Be(0|U(6,0|r)),pt=t,0|e}],ur=[function(e,r,t,n){return w(4),0},function(e,r,t,n){e|=0,r|=0,t|=0,n|=0;var i,o,a,u,s,f=0,l=pt;for((0|bt)<=(0|(pt=pt+32|0))&&yt(32),o=l+12|0,a=l+8|0,u=l+4|0,St[(i=(s=l)+16|0)>>2]=e,St[o>>2]=r,St[a>>2]=t,St[u>>2]=n,St[s>>2]=St[o>>2];!((0|St[a>>2])>>>0<=0)&&3&St[s>>2];)St[i>>2]=St[(0|St[u>>2])+((255&(St[i>>2]^(0|mt[St[s>>2]>>0])))<<2)>>2]^(0|St[i>>2])>>>8,St[a>>2]=(0|St[a>>2])-1,St[s>>2]=1+(0|St[s>>2]);for(;!((0|St[a>>2])>>>0<4);)St[i>>2]=St[i>>2]^St[St[s>>2]>>2],St[i>>2]=St[(0|St[u>>2])+(768+(255&St[i>>2])<<2)>>2]^St[(0|St[u>>2])+(512+((0|St[i>>2])>>>8&255)<<2)>>2]^St[(0|St[u>>2])+(256+((0|St[i>>2])>>>16&255)<<2)>>2]^St[(0|St[u>>2])+((0|St[i>>2])>>>24<<2)>>2],St[a>>2]=(0|St[a>>2])-4,St[s>>2]=4+(0|St[s>>2]);for(;f=0|St[i>>2],!((0|St[a>>2])>>>0<=0);)St[i>>2]=St[(0|St[u>>2])+((255&(f^(0|mt[St[s>>2]>>0])))<<2)>>2]^(0|St[i>>2])>>>8,St[a>>2]=(0|St[a>>2])-1,St[s>>2]=1+(0|St[s>>2]);return pt=l,0|f}],sr=[function(e,r){return y(5),0},function(e,r){e|=0,r|=0;var t,n,i=pt;return(0|bt)<=(0|(pt=pt+16|0))&&yt(16),t=i+8|0,St[(n=i)+4>>2]=e,St[n>>2]=r,0|St[n>>2]?(r=0|Xe(0|St[n>>2]),St[t>>2]=r):St[t>>2]=0,pt=i,0|St[t>>2]},function(e,r){e|=0,r|=0;var t,n,i=pt;return(0|bt)<=(0|(pt=pt+16|0))&&yt(16),t=i+8|0,St[(n=i)+4>>2]=e,St[n>>2]=r,0|St[n>>2]?(r=0|Xe(0|St[n>>2]),St[t>>2]=r):St[t>>2]=0,pt=i,0|St[t>>2]},function(e,r){e|=0,r|=0;var t,n,i,o=pt;return(0|bt)<=(0|(pt=pt+16|0))&&yt(16),n=o+4|0,St[(t=(i=o)+8|0)>>2]=e,St[n>>2]=r,St[i>>2]=St[t>>2],t=20+(0|St[i>>2])|0,St[t>>2]=(0|St[t>>2])+(0|St[n>>2]),pt=o,0}];return{_sbrk:Ze,_i64Subtract:Nt,_free:Ge,___udivmoddi4:Qe,_i64Add:Dt,_extract:function(e,r){e|=0,r|=0;var t,n,i,o,a,u,s,f,l,c,d,E,_,S,m,h,p,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0,R=0,g=0,T=0,N=0,D=0,P=0,C=0,I=0,L=0;if((0|bt)<=(0|(pt=(r=pt)+16816|0))&&yt(16816),t=r+80|0,n=r+16544|0,i=r+16532|0,o=r+120|0,a=r+112|0,u=r+104|0,f=(s=r)+100|0,l=r+96|0,c=r+92|0,d=r+16548|0,E=r+88|0,_=r+84|0,S=0|function(e,r){e|=0,r|=0;var t=0,n=0,i=0,o=0,a=0;(0|(pt=(t=pt)+32|0))>=(0|bt)&&yt(32);n=t+16|0,i=t,a=0|Rt(2845,0|Et[r>>0],4)?(o=32768|function(e){var r=0,t=0,n=0,i=0;return r=0==(0|Ye(e=e|0,43)),t=0|Et[e>>0],n=r?t<<24>>24!=114&1:2,r=0==(0|Ye(e,120)),i=r?n:128|n,n=0==(0|Ye(e,101)),e=n?i:524288|i,i=t<<24>>24==114?e:64|e,e=t<<24>>24==119?512|i:i,0|(t<<24>>24==97?1024|e:e)}(r),St[i>>2]=e,St[i+4>>2]=o,St[i+8>>2]=438,o=0|Be(0|z(5,0|i)),0<=(0|o)?(i=0|function(e,r){e|=0,r|=0;var t=0,n=0,i=0,o=0,a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0,_=0;(0|(pt=(t=pt)+112|0))>=(0|bt)&&yt(112);if(n=t+40|0,i=t+24|0,o=t+16|0,u=(a=t)+52|0,0|Rt(2845,(s=0|Et[r>>0])<<24>>24,4))if(f=0|Xe(1144)){for(c=f,d=c+112|0;St[c>>2]=0,c=c+4|0,(0|c)<(0|d););0|Ye(r,43)||(St[f>>2]=s<<24>>24==114?8:4),E=0|Ye(r,101)?(St[a>>2]=e,St[a+4>>2]=2,St[a+8>>2]=1,x(221,0|a),0|Et[r>>0]):s,_=E<<24>>24==97?(St[o>>2]=e,St[4+o>>2]=3,1024&(E=0|x(221,0|o))||(St[i>>2]=e,St[i+4>>2]=4,St[i+8>>2]=1024|E,x(221,0|i)),i=128|St[f>>2],St[f>>2]=i):0|St[f>>2],St[f+60>>2]=e,St[f+44>>2]=f+120,St[f+48>>2]=1024,Et[(i=f+75|0)>>0]=-1,0==(8&_|0)&&(St[n>>2]=e,St[4+n>>2]=21505,St[8+n>>2]=u,0==(0|Y(54,0|n)))&&(Et[i>>0]=10),St[f+32>>2]=10,St[f+36>>2]=9,St[f+40>>2]=2,St[f+12>>2]=1,0|St[2763]||(St[f+76>>2]=-1),H(11076),i=0|St[2768],0|(St[f+56>>2]=i)&&(St[i+52>>2]=f),St[2768]=f,V(11076),l=f}else l=0;else f=0|vt(),St[f>>2]=22,l=0;return pt=t,0|l}(o,r))||(St[n>>2]=o,U(6,0|n),0):0):(i=0|vt(),St[i>>2]=22,0);return pt=t,0|a}(e,140),St[f>>2]=0,St[a>>2]=1,St[(e=4+a|0)>>2]=1,St[u>>2]=2,St[4+u>>2]=2,St[(m=8+i|0)>>2]=S,function(e){e|=0;var r=0,t=0;(0|(pt=(r=pt)+16|0))>=(0|bt)&&yt(16),St[(t=r)>>2]=e,St[St[t>>2]>>2]=3,St[4+(0|St[t>>2])>>2]=4,pt=r}(i),function(e,r){e|=0,r|=0;var t=0,n=0,i=0;(0|(pt=(t=pt)+16|0))>=(0|bt)&&yt(16),St[(n=(i=t)+4|0)>>2]=e,St[i>>2]=r,St[St[n>>2]>>2]=0|St[i>>2]?6:5,St[4+(0|St[n>>2])>>2]=3,St[8+(0|St[n>>2])>>2]=7,St[12+(0|St[n>>2])>>2]=8,pt=t}(o,0),St[16+o>>2]=i,function(e){e|=0;var r=0,t=0;(0|(pt=(r=pt)+16|0))>=(0|bt)&&yt(16),St[(t=r)>>2]=e,St[24+(0|St[t>>2])>>2]=0,St[20+(0|St[t>>2])>>2]=0,pt=r}(o),function(){var e=0,r=0,t=0,n=0,i=0,o=0;for((0|(pt=(e=pt)+16|0))>=(0|bt)&&yt(16),t=e+8|0,n=e+4|0,St[(r=(i=e)+12|0)>>2]=0;!(256<=(0|St[r>>2])>>>0);){for(St[t>>2]=St[r>>2],St[n>>2]=0;o=0|St[t>>2],!(8<=(0|St[n>>2])>>>0);)St[t>>2]=o>>>1^-306674912&~((1&St[t>>2])-1),St[n>>2]=1+(0|St[n>>2]);St[2852+(St[r>>2]<<2)>>2]=o,St[r>>2]=1+(0|St[r>>2])}for(;!(2048<=(0|St[r>>2])>>>0);)St[i>>2]=St[2852+((0|St[r>>2])-256<<2)>>2],St[2852+(St[r>>2]<<2)>>2]=St[2852+((255&St[i>>2])<<2)>>2]^(0|St[i>>2])>>>8,St[r>>2]=1+(0|St[r>>2]);St[2761]=1,pt=e}(),J(s),0|function(e,r,t,n){e|=0,r|=0,t|=0,n|=0;var i=0,o=0,a=0,u=0,s=0,f=0,l=0;(0|(pt=(i=pt)+32|0))>=(0|bt)&&yt(32);return a=i+12|0,u=i+8|0,s=i+4|0,St[(o=(f=i)+16|0)>>2]=e,St[a>>2]=r,St[u>>2]=t,St[s>>2]=n,n=0|function(e,r,t,n){e|=0,r|=0,t|=0,n|=0;var i=0,o=0,a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0;(0|(pt=(i=pt)+160|0))>=(0|bt)&&yt(160);if(o=i+112|0,u=i+104|0,s=i+100|0,f=i+96|0,l=i+120|0,c=i+32|0,d=i+24|0,E=i+16|0,_=i+92|0,S=i+88|0,m=i+80|0,h=i+72|0,p=i+68|0,b=i+64|0,k=i+8|0,F=i+60|0,w=i+56|0,y=i+48|0,M=(v=i)+40|0,St[(a=i+108|0)>>2]=e,St[u>>2]=r,St[s>>2]=t,St[f>>2]=n,St[(n=c)>>2]=0,St[n+4>>2]=0,n=0|nr[15&St[12+(0|St[u>>2])>>2]](0|St[u>>2],c,1),St[p>>2]=n,0|St[p>>2])return St[o>>2]=St[p>>2],O=0|St[o>>2],pt=i,0|O;if(p=0|pe(0|St[u>>2],l,32,17),St[b>>2]=p,0|St[b>>2])return St[o>>2]=St[b>>2],O=0|St[o>>2],pt=i,0|O;if(!(0|function(e){e|=0;var r=0,t=0,n=0,i=0,o=0,a=0;(0|(pt=(r=pt)+16|0))>=(0|bt)&&yt(16);t=r+8|0,St[(n=(i=r)+4|0)>>2]=e,St[i>>2]=0;for(;;){if(6<=(0|St[i>>2])>>>0){o=6;break}if((0|mt[(0|St[n>>2])+(0|St[i>>2])>>0])!=(0|mt[346+(0|St[i>>2])>>0])){o=4;break}St[i>>2]=1+(0|St[i>>2])}{if(4==(0|o))return St[t>>2]=0,a=0|St[t>>2],pt=r,0|a;if(6==(0|o))return St[t>>2]=1,a=0|St[t>>2],pt=r,0|a}return 0}(l)))return St[o>>2]=17,O=0|St[o>>2],pt=i,0|O;if(0|mt[l+6>>0])return St[o>>2]=4,O=0|St[o>>2],pt=i,0|O;if(b=0|mt[l+12+4>>0]|(0|mt[l+12+4+1>>0])<<8|(0|mt[l+12+4+2>>0])<<16|(0|mt[l+12+4+3>>0])<<24,St[(p=d)>>2]=0|mt[l+12>>0]|(0|mt[l+12+1>>0])<<8|(0|mt[l+12+2>>0])<<16|(0|mt[l+12+3>>0])<<24,St[p+4>>2]=b,b=0|mt[l+20+4>>0]|(0|mt[l+20+4+1>>0])<<8|(0|mt[l+20+4+2>>0])<<16|(0|mt[l+20+4+3>>0])<<24,St[(p=E)>>2]=0|mt[l+20>>0]|(0|mt[l+20+1>>0])<<8|(0|mt[l+20+2>>0])<<16|(0|mt[l+20+3>>0])<<24,St[p+4>>2]=b,St[S>>2]=0|mt[l+28>>0]|(0|mt[l+28+1>>0])<<8|(0|mt[l+28+2>>0])<<16|(0|mt[l+28+3>>0])<<24,p=0|Dt(0|St[(b=c)>>2],0|St[b+4>>2],32,0),b=32+(0|St[a>>2])|0,St[b>>2]=p,St[b+4>>2]=Ft,(0|(b=0|Pe(l+12|0,20)))!=(0|mt[l+8>>0]|(0|mt[l+8+1>>0])<<8|(0|mt[l+8+2>>0])<<16|(0|mt[l+8+3>>0])<<24|0))return St[o>>2]=3,O=0|St[o>>2],pt=i,0|O;if(St[_>>2]=St[E>>2],0!=(0|St[(l=E)+4>>2])||(0|St[_>>2])!=(0|St[l>>2]))return St[o>>2]=2,O=0|St[o>>2],pt=i,0|O;if(!(0|St[_>>2]))return St[o>>2]=0,O=0|St[o>>2],pt=i,0|O;if(b=0|St[(l=d)>>2],p=0|St[l+4>>2],n=E,t=0|Dt(0|St[(l=d)>>2],0|St[l+4>>2],0|St[n>>2],0|St[n+4>>2]),p>>>0>(n=Ft)>>>0|(0|p)==(0|n)&t>>>0>>0||(b=0|St[(t=d)>>2],n=0|St[t+4>>2],p=E,l=0|Dt(0|St[(t=d)>>2],0|St[t+4>>2],0|St[p>>2],0|St[p+4>>2]),p=0|Dt(0|l,0|Ft,32,0),n>>>0>(l=Ft)>>>0|(0|n)==(0|l)&p>>>0>>0))return St[o>>2]=17,O=0|St[o>>2],pt=i,0|O;if(St[(p=k)>>2]=0,St[p+4>>2]=0,p=0|nr[15&St[12+(0|St[u>>2])>>2]](0|St[u>>2],k,2),St[F>>2]=p,0|St[F>>2])return St[o>>2]=St[F>>2],O=0|St[o>>2],pt=i,0|O;if(p=0|St[(F=k)>>2],b=0|St[F+4>>2],l=d,n=0|Dt(0|St[(F=c)>>2],0|St[F+4>>2],0|St[l>>2],0|St[l+4>>2]),b>>>0<(l=Ft)>>>0|(0|b)==(0|l)&p>>>0>>0||(p=0|St[(n=k)>>2],l=0|St[n+4>>2],b=0|Dt(0|St[(n=c)>>2],0|St[n+4>>2],32,0),F=0|Dt(0|b,0|Ft,0|St[(n=d)>>2],0|St[n+4>>2]),l>>>0<(n=Ft)>>>0|(0|l)==(0|n)&p>>>0>>0)||(k=0|St[(F=k)>>2],p=0|St[F+4>>2],n=0|Dt(0|St[(F=c)>>2],0|St[F+4>>2],32,0),l=0|Dt(0|n,0|Ft,0|St[(F=d)>>2],0|St[F+4>>2]),E=0|Dt(0|l,0|Ft,0|St[(F=E)>>2],0|St[F+4>>2]),p>>>0<(F=Ft)>>>0|(0|p)==(0|F)&k>>>0>>0))return St[o>>2]=6,O=0|St[o>>2],pt=i,0|O;if(E=0|St[u>>2],c=0|Dt(0|St[(k=c)>>2],0|St[k+4>>2],32,0),d=0|Dt(0|c,0|Ft,0|St[(k=d)>>2],0|St[k+4>>2]),k=0|he(E,d,Ft),St[w>>2]=k,0|St[w>>2])return St[o>>2]=St[w>>2],O=0|St[o>>2],pt=i,0|O;if(!(0|Ie(m,0|St[_>>2],0|St[f>>2])))return St[o>>2]=2,O=0|St[o>>2],pt=i,0|O;w=0|function(e,r,t){e|=0,r|=0,t|=0;var n=0,i=0,o=0,a=0;(0|(pt=(n=pt)+16|0))>=(0|bt)&&yt(16);return o=n+4|0,St[(i=(a=n)+8|0)>>2]=e,St[o>>2]=r,St[a>>2]=t,t=0|pe(0|St[i>>2],0|St[o>>2],0|St[a>>2],6),pt=n,0|t}(0|St[u>>2],0|St[m>>2],0|St[_>>2]),St[h>>2]=w;do{if(0==(0|St[h>>2])&&(St[h>>2]=16,(0|(w=0|Pe(0|St[m>>2],0|St[_>>2])))==(0|St[S>>2]))){St[y>>2]=St[m>>2],St[4+y>>2]=St[4+m>>2],w=0|ue(y,v),St[h>>2]=w,w=v;do{if(0==(0|St[h>>2])&(23==(0|St[w>>2])&0==(0|St[w+4>>2]))){if(Ce(M),k=32+(0|St[a>>2])|0,d=0|function(e,r,t,n,i,o){e|=0,r|=0,t|=0,n|=0,i|=0,o|=0;var a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0;(0|(pt=(a=pt)+80|0))>=(0|bt)&&yt(80);return s=a+64|0,f=a+60|0,c=(l=a)+56|0,d=a+24|0,E=a+20|0,_=a+16|0,S=a+12|0,m=a+8|0,St[(u=a+68|0)>>2]=e,St[s>>2]=r,St[f>>2]=t,St[(t=l)>>2]=n,St[t+4>>2]=i,St[c>>2]=o,St[E>>2]=0,St[_>>2]=0,St[S>>2]=0,q(d),o=l,l=0|function(e,r,t,n,i,o,a,u,s,f){e|=0,r|=0,t|=0,n|=0,i|=0,o|=0,a|=0,u|=0,s|=0,f|=0;var l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0,R=0,g=0;(0|(pt=(l=pt)+96|0))>=(0|bt)&&yt(96);if(c=l+80|0,E=l+72|0,_=l+68|0,S=l+16|0,m=l+64|0,h=l+60|0,p=l+56|0,b=l+52|0,k=l+48|0,F=l+44|0,w=l+8|0,y=l+40|0,M=(v=l)+36|0,O=l+32|0,A=l+28|0,R=l+24|0,St[(d=l+76|0)>>2]=e,St[E>>2]=r,St[_>>2]=t,St[(t=S)>>2]=n,St[t+4>>2]=i,St[m>>2]=o,St[h>>2]=a,St[p>>2]=u,St[b>>2]=s,St[k>>2]=f,St[F>>2]=0,f=0|se(0|St[E>>2],w,0|St[m>>2],F,0|St[h>>2],0|St[p>>2],0|St[b>>2],0|St[k>>2],0|St[k>>2]),St[O>>2]=f,0|St[O>>2])return St[c>>2]=St[O>>2],g=0|St[c>>2],pt=l,0|g;if(O=S,f=0|Dt(0|St[(S=w)>>2],0|St[4+S>>2],0|St[O>>2],0|St[O+4>>2]),St[(O=w)>>2]=f,St[O+4>>2]=Ft,1!=(0|St[24+(0|St[m>>2])>>2]))return St[c>>2]=16,g=0|St[c>>2],pt=l,0|g;if(St[y>>2]=St[12+(0|St[m>>2])>>2],O=0|G(0|St[y>>2]),St[(f=v)>>2]=O,St[f+4>>2]=Ft,f=w,O=0|he(0|St[d>>2],0|St[f>>2],0|St[f+4>>2]),St[A>>2]=O,0|St[A>>2])return St[c>>2]=St[A>>2],g=0|St[c>>2],pt=l,0|g;if(!(0|Ie(0|St[_>>2],0|St[v>>2],0|St[k>>2])))return St[c>>2]=2,g=0|St[c>>2],pt=l,0|g;if(A=w,w=0|Re(0|St[y>>2],0|St[St[m>>2]>>2],0|St[d>>2],0|St[A>>2],0|St[A+4>>2],0|St[St[_>>2]>>2],0|St[v>>2],0|St[k>>2],0,0),St[M>>2]=w,St[R>>2]=St[M>>2],0|St[R>>2])return St[c>>2]=St[R>>2],g=0|St[c>>2],pt=l,0|g;if(0|St[28+(0|St[y>>2])>>2]&&(0|(R=0|Pe(0|St[St[_>>2]>>2],0|St[v>>2])))!=(0|St[32+(0|St[y>>2])>>2]))return St[c>>2]=3,g=0|St[c>>2],pt=l,0|g;return St[c>>2]=0,g=0|St[c>>2],pt=l,0|g}(0|St[u>>2],0|St[s>>2],0|St[f>>2],0|St[o>>2],0|St[o+4>>2],d,E,_,S,0|St[c>>2]),St[m>>2]=l,Z(d,0|St[c>>2]),or[3&St[4+(0|St[c>>2])>>2]](0|St[c>>2],0|St[E>>2]),or[3&St[4+(0|St[c>>2])>>2]](0|St[c>>2],0|St[_>>2]),or[3&St[4+(0|St[c>>2])>>2]](0|St[c>>2],0|St[S>>2]),pt=a,0|St[m>>2]}(0|St[u>>2],y,M,0|St[k>>2],0|St[k+4>>2],0|St[f>>2]),St[h>>2]=d,d=0|St[f>>2],0|St[h>>2]){Le(M,d);break}Le(m,d),St[m>>2]=St[M>>2],St[4+m>>2]=St[4+M>>2],St[y>>2]=St[m>>2],St[4+y>>2]=St[4+m>>2],d=0|ue(y,v),St[h>>2]=d;break}}while(0);if(0|St[h>>2])break;if(1==(0|St[(w=v)>>2])&0==(0|St[w+4>>2])){w=0|function(e,r,t,n){e|=0,r|=0,t|=0,n|=0;var i=0,o=0,a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0,_=0,S=0;(0|(pt=(i=pt)+48|0))>=(0|bt)&&yt(48);return a=i+36|0,u=i+32|0,s=i+28|0,f=i+24|0,l=i+20|0,c=i+16|0,d=i+12|0,E=i+8|0,_=i+4|0,St[(o=(S=i)+40|0)>>2]=e,St[a>>2]=r,St[u>>2]=t,St[s>>2]=n,St[f>>2]=0,St[l>>2]=0,St[c>>2]=0,St[d>>2]=0,St[E>>2]=0,St[_>>2]=0,n=0|function(e,r,t,n,i,o,a,u,s,f){e|=0,r|=0,t|=0,n|=0,i|=0,o|=0,a|=0,u|=0,s|=0,f|=0;var l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0,p=0,b=0,k=0,F=0,w=0,y=0,v=0,M=0,O=0,A=0,R=0,g=0,T=0,N=0,D=0,P=0,C=0,I=0,L=0,x=0,B=0,H=0,U=0,z=0,Y=0,V=0,K=0,W=0,j=0,X=0,G=0,q=0,Q=0,Z=0,J=0,$=0,ee=0,re=0,te=0,ne=0,ie=0,oe=0,ae=0;(0|(pt=(l=pt)+208|0))>=(0|bt)&&yt(208);if(c=l+188|0,E=l+180|0,_=l+176|0,S=l+172|0,m=l+168|0,h=l+164|0,p=l+160|0,b=l+156|0,k=l+152|0,F=l+148|0,w=l+8|0,y=l+144|0,v=l+140|0,M=l+136|0,O=l+132|0,A=l+128|0,R=l+124|0,g=l+120|0,T=l+116|0,N=l+112|0,D=l+108|0,P=l+104|0,I=(C=l)+100|0,L=l+96|0,x=l+92|0,B=l+88|0,H=l+84|0,U=l+80|0,z=l+76|0,Y=l+72|0,V=l+68|0,K=l+64|0,W=l+60|0,j=l+56|0,X=l+193|0,G=l+52|0,q=l+48|0,Q=l+44|0,Z=l+40|0,J=l+192|0,$=l+36|0,ee=l+32|0,re=l+28|0,te=l+24|0,ne=l+20|0,ie=l+16|0,St[(d=l+184|0)>>2]=e,St[E>>2]=r,St[_>>2]=t,St[S>>2]=n,St[m>>2]=i,St[h>>2]=o,St[p>>2]=a,St[b>>2]=u,St[k>>2]=s,St[F>>2]=f,St[y>>2]=0,St[v>>2]=0,St[M>>2]=0,St[O>>2]=0,f=0|ue(0|St[E>>2],w),St[R>>2]=f,0|St[R>>2])return St[c>>2]=St[R>>2],oe=0|St[c>>2],pt=l,0|oe;if(2==(0|St[(R=w)>>2])&0==(0|St[R+4>>2])){if(R=0|function(e){e|=0;var r=0,t=0,n=0,i=0,o=0,a=0,u=0;(0|(pt=(r=pt)+32|0))>=(0|bt)&&yt(32);t=r+16|0,o=(i=r)+8|0,St[(n=r+12|0)>>2]=e;for(;;){if(e=0|ue(0|St[n>>2],i),St[o>>2]=e,0|St[o>>2]){a=3;break}if(0==(0|St[(e=i)>>2])&0==(0|St[e+4>>2])){a=6;break}me(0|St[n>>2])}{if(3==(0|a))return St[t>>2]=St[o>>2],u=0|St[t>>2],pt=r,0|u;if(6==(0|a))return St[t>>2]=0,u=0|St[t>>2],pt=r,0|u}return 0}(0|St[E>>2]),St[g>>2]=R,0|St[g>>2])return St[c>>2]=St[g>>2],oe=0|St[c>>2],pt=l,0|oe;if(g=0|ue(0|St[E>>2],w),St[T>>2]=g,0|St[T>>2])return St[c>>2]=St[T>>2],oe=0|St[c>>2],pt=l,0|oe}if(4==(0|St[(T=w)>>2])&0==(0|St[T+4>>2])){if(T=0|se(0|St[E>>2],40+(0|St[d>>2])|0,0|St[d>>2],y,0|St[_>>2],0|St[S>>2],0|St[m>>2],0|St[k>>2],0|St[F>>2]),St[N>>2]=T,0|St[N>>2])return St[c>>2]=St[N>>2],oe=0|St[c>>2],pt=l,0|oe;if(N=32+(0|St[d>>2])|0,T=40+(0|St[d>>2])|0,g=0|Dt(0|St[(y=T)>>2],0|St[y+4>>2],0|St[N>>2],0|St[N+4>>2]),St[(N=T)>>2]=g,St[N+4>>2]=Ft,N=0|ue(0|St[E>>2],w),St[D>>2]=N,0|St[D>>2])return St[c>>2]=St[D>>2],oe=0|St[c>>2],pt=l,0|oe}if(0==(0|St[(D=w)>>2])&0==(0|St[D+4>>2]))return St[c>>2]=0,oe=0|St[c>>2],pt=l,0|oe;if(5!=(0|St[(D=w)>>2])|0!=(0|St[D+4>>2]))return St[c>>2]=16,oe=0|St[c>>2],pt=l,0|oe;if(D=0|fe(0|St[E>>2],v),St[P>>2]=D,0|St[P>>2])return St[c>>2]=St[P>>2],oe=0|St[c>>2],pt=l,0|oe;if(St[28+(0|St[d>>2])>>2]=St[v>>2],0|St[v>>2]){if(P=0|sr[3&St[St[k>>2]>>2]](0|St[k>>2],St[v>>2]<<5),!(St[M>>2]=P))return St[c>>2]=2,oe=0|St[c>>2],pt=l,0|oe}else St[M>>2]=0;St[16+(0|St[d>>2])>>2]=St[M>>2],St[A>>2]=0;for(;!((0|St[A>>2])>>>0>=(0|St[v>>2])>>>0);)!function(e){e|=0;var r=0,t=0;(0|(pt=(r=pt)+16|0))>=(0|bt)&&yt(16),St[(t=r)>>2]=e,Et[24+(0|St[t>>2])>>0]=1,Et[25+(0|St[t>>2])>>0]=0,Et[26+(0|St[t>>2])>>0]=0,Et[27+(0|St[t>>2])>>0]=0,Et[28+(0|St[t>>2])>>0]=0,pt=r}((0|St[M>>2])+(St[A>>2]<<5)|0),St[A>>2]=1+(0|St[A>>2]);e:for(;;){if(P=0|ue(0|St[E>>2],w),St[I>>2]=P,0|St[I>>2]){ae=27;break}if(0==(0|St[(P=w)>>2])&0==(0|St[P+4>>2])){ae=86;break}if(P=0|le(0|St[E>>2],C),St[L>>2]=P,0|St[L>>2]){ae=30;break}if(0<(D=0|St[(P=C)+4>>2])>>>0|(0==(0|D)?(0|St[P>>2])>>>0>(0|St[4+(0|St[E>>2])>>2])>>>0:0)){ae=32;break}if((0|(P=0|St[w>>2]))==(0|St[(D=w)>>2])&&(((0|P)<0)<<31>>31|0)==(0|St[D+4>>2]))switch(0|St[w>>2]){case 17:if(P=0|de(0|St[E>>2]),St[H>>2]=P,0|St[H>>2]){ae=38;break e}if(St[B>>2]=(0|St[C>>2])-1,1&St[B>>2]|0){ae=40;break e}if(!(0|Ie(68+(0|St[d>>2])|0,0|St[B>>2],0|St[k>>2]))){ae=42;break e}if(1+(0|St[v>>2])|0){if(P=0|sr[3&St[St[k>>2]>>2]](0|St[k>>2],1+(0|St[v>>2])<<2),!(St[64+(0|St[d>>2])>>2]=P)){ae=46;break e}}else St[64+(0|St[d>>2])>>2]=0;if(Je(0|St[68+(0|St[d>>2])>>2],0|St[St[E>>2]>>2],0|St[B>>2]),P=0|function(e,r,t,n){e|=0,r|=0,t|=0,n|=0;var i=0,o=0,a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0;(0|(pt=(i=pt)+32|0))>=(0|bt)&&yt(32);o=i+24|0,u=i+16|0,s=i+12|0,f=i+8|0,l=i+4|0,St[(a=(c=i)+20|0)>>2]=e,St[u>>2]=r,St[s>>2]=t,St[f>>2]=n,St[c>>2]=0,St[l>>2]=0;r:for(;;){if(n=(0|St[l>>2])>>>0<(0|St[s>>2])>>>0,St[(0|St[f>>2])+(St[l>>2]<<2)>>2]=St[c>>2],!n){d=9;break}for(;;){if((0|St[c>>2])>>>0>=(0|St[u>>2])>>>0){d=4;break r}if(0==(0|mt[(0|St[a>>2])+(St[c>>2]<<1)>>0])&&0==(0|mt[(0|St[a>>2])+(1+(St[c>>2]<<1))>>0]))break;St[c>>2]=1+(0|St[c>>2])}St[c>>2]=1+(0|St[c>>2]),St[l>>2]=1+(0|St[l>>2])}{if(4==(0|d))return St[o>>2]=16,E=0|St[o>>2],pt=i,0|E;if(9==(0|d))return St[o>>2]=(0|St[c>>2])==(0|St[u>>2])?0:16,E=0|St[o>>2],pt=i,0|E}return 0}(0|St[St[E>>2]>>2],(0|St[B>>2])>>>1,0|St[v>>2],0|St[64+(0|St[d>>2])>>2]),St[U>>2]=P,0|St[U>>2]){ae=48;break e}if(P=0|ce(0|St[E>>2],0|St[B>>2],0),St[z>>2]=P,0|St[z>>2]){ae=50;break e}continue e;case 14:if(P=0|Ee(0|St[E>>2],0|St[v>>2],0|St[h>>2],0|St[F>>2]),St[Y>>2]=P,0|St[Y>>2]){ae=52;break e}for(St[O>>2]=0,St[A>>2]=0;;){if((0|St[A>>2])>>>0>=(0|St[v>>2])>>>0)continue e;0|Et[(0|St[St[h>>2]>>2])+(0|St[A>>2])>>0]&&(St[O>>2]=1+(0|St[O>>2])),St[A>>2]=1+(0|St[A>>2])}break;case 15:if(P=0|Ee(0|St[E>>2],0|St[O>>2],0|St[p>>2],0|St[F>>2]),St[V>>2]=P,0|St[V>>2]){ae=59;break e}continue e;case 21:if(P=0|_e(0|St[E>>2],0|St[v>>2],0|St[b>>2],0|St[F>>2]),St[K>>2]=P,0|St[K>>2]){ae=61;break e}if(P=0|de(0|St[E>>2]),St[W>>2]=P,0|St[W>>2]){ae=63;break e}for(St[A>>2]=0;!((0|St[A>>2])>>>0>=(0|St[v>>2])>>>0);){if(St[j>>2]=(0|St[M>>2])+(St[A>>2]<<5),Et[X>>0]=0|Et[(0|St[St[b>>2]>>2])+(0|St[A>>2])>>0],Et[29+(0|St[j>>2])>>0]=0|Et[X>>0],(St[20+(0|St[j>>2])>>2]=0)|Et[X>>0]&&(P=0|Se(0|St[E>>2],20+(0|St[j>>2])|0),St[G>>2]=P,0|St[G>>2])){ae=68;break e}St[A>>2]=1+(0|St[A>>2])}or[3&St[4+(0|St[F>>2])>>2]](0|St[F>>2],0|St[St[b>>2]>>2]),St[St[b>>2]>>2]=0;continue e;case 20:if(P=0|_e(0|St[E>>2],0|St[v>>2],0|St[b>>2],0|St[F>>2]),St[q>>2]=P,0|St[q>>2]){ae=72;break e}if(P=0|de(0|St[E>>2]),St[Q>>2]=P,0|St[Q>>2]){ae=74;break e}for(St[A>>2]=0;!((0|St[A>>2])>>>0>=(0|St[v>>2])>>>0);){if(St[Z>>2]=(0|St[M>>2])+(St[A>>2]<<5),Et[J>>0]=0|Et[(0|St[St[b>>2]>>2])+(0|St[A>>2])>>0],Et[28+(0|St[Z>>2])>>0]=0|Et[J>>0],St[4+(0|St[Z>>2])>>2]=0,(St[St[Z>>2]>>2]=0)|Et[J>>0]){if(P=0|Se(0|St[E>>2],0|St[Z>>2]),St[$>>2]=P,0|St[$>>2]){ae=79;break e}if(P=0|Se(0|St[E>>2],4+(0|St[Z>>2])|0),St[ee>>2]=P,0|St[ee>>2]){ae=81;break e}}St[A>>2]=1+(0|St[A>>2])}or[3&St[4+(0|St[F>>2])>>2]](0|St[F>>2],0|St[St[b>>2]>>2]),St[St[b>>2]>>2]=0;continue e;default:if(P=C,D=0|ce(0|St[E>>2],0|St[P>>2],0|St[P+4>>2]),St[re>>2]=D,0|St[re>>2]){ae=85;break e}continue e}else if(D=C,P=0|ce(0|St[E>>2],0|St[D>>2],0|St[D+4>>2]),St[x>>2]=P,0|St[x>>2]){ae=35;break}}switch(0|ae){case 27:return St[c>>2]=St[I>>2],oe=0|St[c>>2],pt=l,0|oe;case 30:return St[c>>2]=St[L>>2],oe=0|St[c>>2],pt=l,0|oe;case 32:return St[c>>2]=16,oe=0|St[c>>2],pt=l,0|oe;case 35:return St[c>>2]=St[x>>2],oe=0|St[c>>2],pt=l,0|oe;case 38:return St[c>>2]=St[H>>2],oe=0|St[c>>2],pt=l,0|oe;case 40:return St[c>>2]=16,oe=0|St[c>>2],pt=l,0|oe;case 42:case 46:return St[c>>2]=2,oe=0|St[c>>2],pt=l,0|oe;case 48:return St[c>>2]=St[U>>2],oe=0|St[c>>2],pt=l,0|oe;case 50:return St[c>>2]=St[z>>2],oe=0|St[c>>2],pt=l,0|oe;case 52:return St[c>>2]=St[Y>>2],oe=0|St[c>>2],pt=l,0|oe;case 59:return St[c>>2]=St[V>>2],oe=0|St[c>>2],pt=l,0|oe;case 61:return St[c>>2]=St[K>>2],oe=0|St[c>>2],pt=l,0|oe;case 63:return St[c>>2]=St[W>>2],oe=0|St[c>>2],pt=l,0|oe;case 68:return St[c>>2]=St[G>>2],oe=0|St[c>>2],pt=l,0|oe;case 72:return St[c>>2]=St[q>>2],oe=0|St[c>>2],pt=l,0|oe;case 74:return St[c>>2]=St[Q>>2],oe=0|St[c>>2],pt=l,0|oe;case 79:return St[c>>2]=St[$>>2],oe=0|St[c>>2],pt=l,0|oe;case 81:return St[c>>2]=St[ee>>2],oe=0|St[c>>2],pt=l,0|oe;case 85:return St[c>>2]=St[re>>2],oe=0|St[c>>2],pt=l,0|oe;case 86:for(St[te>>2]=0,St[ne>>2]=0,St[A>>2]=0;!((0|St[A>>2])>>>0>=(0|St[v>>2])>>>0);)St[ie>>2]=(0|St[M>>2])+(St[A>>2]<<5),(Et[26+(0|St[ie>>2])>>0]=0)|St[St[h>>2]>>2]?Et[24+(0|St[ie>>2])>>0]=0|mt[(0|St[St[h>>2]>>2])+(0|St[A>>2])>>0]?0:1:Et[24+(0|St[ie>>2])>>0]=1,0|Et[24+(0|St[ie>>2])>>0]?(Et[25+(0|St[ie>>2])>>0]=0,re=(0|St[St[_>>2]>>2])+(St[ne>>2]<<3)|0,ee=0|St[re+4>>2],$=8+(0|St[ie>>2])|0,St[$>>2]=St[re>>2],St[$+4>>2]=ee,St[16+(0|St[ie>>2])>>2]=St[(0|St[St[m>>2]>>2])+(St[ne>>2]<<2)>>2],Et[27+(0|St[ie>>2])>>0]=0|Et[(0|St[St[S>>2]>>2])+(0|St[ne>>2])>>0],St[ne>>2]=1+(0|St[ne>>2])):(0|St[St[p>>2]>>2]?Et[25+(0|St[ie>>2])>>0]=0|mt[(0|St[St[p>>2]>>2])+(0|St[te>>2])>>0]?0:1:Et[25+(0|St[ie>>2])>>0]=1,St[te>>2]=1+(0|St[te>>2]),ee=8+(0|St[ie>>2])|0,St[ee>>2]=0,St[ee+4>>2]=0,St[16+(0|St[ie>>2])>>2]=0,Et[27+(0|St[ie>>2])>>0]=0),St[A>>2]=1+(0|St[A>>2]);return A=0|function(e,r){e|=0,r|=0;var t=0,n=0,i=0,o=0,a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0,_=0;(0|(pt=(t=pt)+48|0))>=(0|bt)&&yt(48);if(n=t+40|0,o=t+32|0,a=t+28|0,s=(u=t)+24|0,f=t+20|0,l=t+16|0,c=t+12|0,d=t+8|0,St[(i=t+36|0)>>2]=e,St[o>>2]=r,St[a>>2]=0,St[(r=u)>>2]=0,St[r+4>>2]=0,St[f>>2]=0,St[l>>2]=0,0|St[24+(0|St[i>>2])>>2]){if(r=0|sr[3&St[St[o>>2]>>2]](0|St[o>>2],St[24+(0|St[i>>2])>>2]<<2),!(St[48+(0|St[i>>2])>>2]=r))return St[n>>2]=2,E=0|St[n>>2],pt=t,0|E}else St[48+(0|St[i>>2])>>2]=0;St[s>>2]=0;for(;!((0|St[s>>2])>>>0>=(0|St[24+(0|St[i>>2])>>2])>>>0);)St[(0|St[48+(0|St[i>>2])>>2])+(St[s>>2]<<2)>>2]=St[a>>2],St[a>>2]=(0|St[a>>2])+(0|St[(0|St[12+(0|St[i>>2])>>2])+(40*(0|St[s>>2])|0)+24>>2]),St[s>>2]=1+(0|St[s>>2]);if(0|St[20+(0|St[i>>2])>>2]){if(a=0|sr[3&St[St[o>>2]>>2]](0|St[o>>2],St[20+(0|St[i>>2])>>2]<<3),!(St[52+(0|St[i>>2])>>2]=a))return St[n>>2]=2,E=0|St[n>>2],pt=t,0|E}else St[52+(0|St[i>>2])>>2]=0;St[s>>2]=0;for(;!((0|St[s>>2])>>>0>=(0|St[20+(0|St[i>>2])>>2])>>>0);)r=0|St[(a=u)+4>>2],e=(0|St[52+(0|St[i>>2])>>2])+(St[s>>2]<<3)|0,St[e>>2]=St[a>>2],St[e+4>>2]=r,r=(0|St[St[i>>2]>>2])+(St[s>>2]<<3)|0,a=0|Dt(0|St[(e=u)>>2],0|St[e+4>>2],0|St[r>>2],0|St[r+4>>2]),St[(r=u)>>2]=a,St[r+4>>2]=Ft,St[s>>2]=1+(0|St[s>>2]);if(0|St[24+(0|St[i>>2])>>2]){if(u=0|sr[3&St[St[o>>2]>>2]](0|St[o>>2],St[24+(0|St[i>>2])>>2]<<2),!(St[56+(0|St[i>>2])>>2]=u))return St[n>>2]=2,E=0|St[n>>2],pt=t,0|E}else St[56+(0|St[i>>2])>>2]=0;if(0|St[28+(0|St[i>>2])>>2]){if(u=0|sr[3&St[St[o>>2]>>2]](0|St[o>>2],St[28+(0|St[i>>2])>>2]<<2),!(St[60+(0|St[i>>2])>>2]=u))return St[n>>2]=2,E=0|St[n>>2],pt=t,0|E}else St[60+(0|St[i>>2])>>2]=0;St[s>>2]=0;e:for(;;){if((0|St[s>>2])>>>0>=(0|St[28+(0|St[i>>2])>>2])>>>0){_=36;break}if(St[c>>2]=(0|St[16+(0|St[i>>2])>>2])+(St[s>>2]<<5),St[d>>2]=1&(0!=(0|Et[24+(0|St[c>>2])>>0])^1),0!=(0|St[d>>2])&0==(0|St[l>>2]))St[(0|St[60+(0|St[i>>2])>>2])+(St[s>>2]<<2)>>2]=-1;else{r:do{if(!(0|St[l>>2]))for(;;){if((0|St[f>>2])>>>0>=(0|St[24+(0|St[i>>2])>>2])>>>0){_=29;break e}if(St[(0|St[56+(0|St[i>>2])>>2])+(St[f>>2]<<2)>>2]=St[s>>2],0|St[(0|St[12+(0|St[i>>2])>>2])+(40*(0|St[f>>2])|0)+36>>2])break r;St[f>>2]=1+(0|St[f>>2])}}while(0);St[(0|St[60+(0|St[i>>2])>>2])+(St[s>>2]<<2)>>2]=St[f>>2],0==(0|St[d>>2])&&(St[l>>2]=1+(0|St[l>>2]),(0|St[l>>2])>>>0>=(0|St[(0|St[12+(0|St[i>>2])>>2])+(40*(0|St[f>>2])|0)+36>>2])>>>0)&&(St[f>>2]=1+(0|St[f>>2]),St[l>>2]=0)}St[s>>2]=1+(0|St[s>>2])}{if(29==(0|_))return St[n>>2]=16,E=0|St[n>>2],pt=t,0|E;if(36==(0|_))return St[n>>2]=0,E=0|St[n>>2],pt=t,0|E}return 0}(0|St[d>>2],0|St[k>>2]),St[c>>2]=A,oe=0|St[c>>2],pt=l,0|oe}return 0}(0|St[o>>2],0|St[a>>2],f,l,c,d,E,_,0|St[u>>2],0|St[s>>2]),St[S>>2]=n,or[3&St[4+(0|St[s>>2])>>2]](0|St[s>>2],0|St[f>>2]),or[3&St[4+(0|St[s>>2])>>2]](0|St[s>>2],0|St[l>>2]),or[3&St[4+(0|St[s>>2])>>2]](0|St[s>>2],0|St[c>>2]),or[3&St[4+(0|St[s>>2])>>2]](0|St[s>>2],0|St[d>>2]),or[3&St[4+(0|St[s>>2])>>2]](0|St[s>>2],0|St[E>>2]),or[3&St[4+(0|St[s>>2])>>2]](0|St[s>>2],0|St[_>>2]),pt=i,0|St[S>>2]}(0|St[a>>2],y,0|St[s>>2],0|St[f>>2]),St[h>>2]=w;break}St[h>>2]=4;break}}while(0);return Le(m,0|St[f>>2]),St[o>>2]=St[h>>2],O=0|St[o>>2],pt=i,0|O}(0|St[o>>2],0|St[a>>2],0|St[u>>2],0|St[s>>2]),St[f>>2]=n,pt=(l=(0|St[f>>2]&&$(0|St[o>>2],0|St[u>>2]),0|St[f>>2]),i),0|l}(s,o,a,u))return $(s,a),oe(m),K(1),void(pt=r);St[l>>2]=-1,S=(St[c>>2]=0)|St[(i=s+28|0)>>2];e:do{if(S){for(h=s+16|0,p=0|St[h>>2],k=0,F=0;F=0|Dt(0|St[(w=p+(k<<5)+8|0)>>2],0|St[w+4>>2],0|F,0),k=k+1|0,(0|k)!=(0|S););for(v=y=w=k=0,M=p,O=S;;){if(Pt(0|d,0,255),St[E>>2]=0,(St[_>>2]=0)|Et[M+(v<<5)+25>>0])P=y,C=k,I=w,L=O;else{if(w>>>0<(A=0|ee(s,v,0))>>>0){if(Ge(k),!(R=0|Xe(A<<1)))break;g=R,T=A}else g=k,T=w;if(ee(s,v,g),0|g){for(A=St[n>>2]=0;0|_t[g+(A<<1)>>1];)A=A+1|0;j(0,n,g,A),N=1+(0|St[n>>2])|0,0|(D=0|Xe(St[n>>2]=N))&&0|j(D,n,g,A)&&(Et[D+(0|St[n>>2])>>0]=0,function(e,r,t){e|=0,r|=0,t|=0;var n=0,i=0,o=0,a=0,u=0,s=0;(0|(pt=(n=pt)+32|0))>=(0|bt)&&yt(32),o=n+12|0,a=n+8|0,u=n+4|0,St[(i=(s=n)+16|0)>>2]=e,St[o>>2]=r,St[a>>2]=t,St[u>>2]=0,St[s>>2]=St[a>>2];r:do{if(0|St[s>>2])for(;;){if(t=(0|St[s>>2])-1|0,!(St[s>>2]=t))break r;if(t=0|St[o>>2],St[o>>2]=t+1,r=0|Et[t>>0],t=0|St[i>>2],St[i>>2]=t+1,!((Et[t>>0]=r)<<24>>24))break r;St[u>>2]=1+(0|St[u>>2])}}while(0);if(0|St[s>>2])return St[u>>2],pt=n;for(0|St[a>>2]&&(Et[St[i>>2]>>0]=0);i=0|St[o>>2],St[o>>2]=i+1,0|Et[i>>0];)St[u>>2]=1+(0|St[u>>2]);St[u>>2],pt=n}(d,D,255)),Ge(D)}D=0|St[M+(v<<5)+8>>2],0|(N=0|W(s,o,v,l,f,c,E,_,a,u,F,y))&&(St[t>>2]=N,function(e,r){e|=0,r|=0;var t=0,n=0;(0|(pt=(t=pt)+16|0))>=(0|bt)&&yt(16),St[(n=t)>>2]=r,r=0|function(e,r,t){e|=0,r|=0,t|=0;var n=0,i=0,o=0,a=0,u=0,s=0,f=0,l=0,c=0,d=0,E=0,_=0,S=0,m=0,h=0;(0|(pt=(n=pt)+224|0))>=(0|bt)&&yt(224);i=n+120|0,u=(a=n)+136|0,f=40+(s=o=n+80|0)|0;for(;St[s>>2]=0,s=s+4|0,(0|s)<(0|f););St[i>>2]=St[t>>2],l=(0|Ue(0,r,i,a,o))<0?-1:(c=-1<(0|St[e+76>>2])?0|ze():0,t=0|St[e>>2],s=32&t,(0|Et[e+74>>0])<1&&(St[e>>2]=-33&t),m=0|St[(t=e+48|0)>>2]?0|Ue(e,r,i,a,o):(d=0|St[(f=e+44|0)>>2],St[f>>2]=u,St[(E=e+28|0)>>2]=u,St[(_=e+20|0)>>2]=u,St[t>>2]=80,St[(S=e+16|0)>>2]=80+u,u=0|Ue(e,r,i,a,o),d?(nr[15&St[e+36>>2]](e,0,0),h=0==(0|St[_>>2])?-1:u,St[f>>2]=d,St[t>>2]=0,St[S>>2]=0,St[E>>2]=0,St[_>>2]=0,h):u),o=0|St[e>>2],St[e>>2]=o|s,0|c&&He(),0==(32&o|0)?m:-1);return pt=n,0|l}(0|St[5],e,n),pt=t}(169,t)),B(0,0|d,0|D,(0|St[f>>2])+(0|St[E>>2])|0),P=D+y|0,C=g,I=T,L=0|St[i>>2]}if(L>>>0<=(D=v+1|0)>>>0){b=C;break e}k=C,w=I,y=P,v=D,M=0|St[h>>2],O=L}b=R}else b=0}while(0);Ge(b),or[3&St[e>>2]](a,0|St[f>>2]),$(s,a),oe(m),K(1),pt=r},_pthread_self:$e,_memset:Pt,_llvm_cttz_i32:qe,_malloc:Xe,_memcpy:Je,_bitshift64Lshr:Ct,_fflush:Ve,___udivdi3:Lt,___uremdi3:xt,___errno_location:vt,_bitshift64Shl:It,runPostSets:function(){},_emscripten_replace_memory:function(e){return!(16777215&c(e)||c(e)<=16777215||2147483648span{align-items:inherit;display:flex;width:100%}.ejs_settings_main_bar:hover{background:rgba(var(--ejs-primary-color),1);color:#fff;cursor:pointer}.ejs_settings_main_bar:hover::after{border-left-color:currentColor}.ejs_settings_main_bar_selected{align-items:center;display:flex;margin-left:auto;margin-right:-5px;overflow:hidden;padding-left:25px;pointer-events:none}.ejs_setting_menu{padding:7px;overflow-x:hidden;overflow-y:auto}.ejs_parent_option_div{display:flex;flex-direction:column;max-height:inherit;overflow:hidden}.ejs_back_button{font-weight:500;margin:7px;margin-bottom:3px;padding-left:28px;position:relative;width:calc(100% - 14px);align-items:center;color:#999;display:flex;font-size:13px;padding:4px 11px;user-select:none;background:0 0;border:0;border-radius:3px;cursor:pointer;flex-shrink:0;overflow:visible;transition:all .3s ease}.ejs_back_button:hover{background:rgba(var(--ejs-primary-color),1);color:#fff}.ejs_back_button:hover::after{border-right-color:currentColor}.ejs_back_button::before{background:#b7c5cd;box-shadow:0 1px 0 #fff;content:'';height:1px;left:0;margin-top:4px;overflow:hidden;position:absolute;right:0;top:100%}.ejs_back_button::after{border:4px solid transparent;border-right-color:rgba(79,91,95,.8);left:7px;content:'';position:absolute;top:50%;transform:translateY(-50%)}.ejs_menu_text_a{align-items:center;display:flex;font-size:13px;padding:4px 11px;user-select:none;width:100%}.ejs_option_row{padding-left:7px}.ejs_option_row:hover::before{background:rgba(0,0,0,.1)}.ejs_option_row::before{background:rgba(204,204,204,.1);content:'';display:block;flex-shrink:0;height:16px;margin-right:10px;transition:all .3s ease;width:16px;border-radius:100%}.ejs_option_row::after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px;border-radius:100%;content:'';position:absolute}.ejs_option_row_selected::before{background:rgba(var(--ejs-primary-color),1)}.ejs_option_row_selected::after{opacity:1;transform:translateY(-50%) scale(1)}.ejs_option_row>span{align-items:center;display:flex;width:100%}.ejs_button_style{margin:0;background:0 0;border:0;border-radius:3px;cursor:pointer;flex-shrink:0;overflow:visible;padding:7px;position:relative;transition:all .3s ease;align-items:center;color:#999;display:flex;font-size:13px;user-select:none;width:100%}.ejs_button_style:hover{background:rgba(var(--ejs-primary-color),1);color:#fff}.ejs_cheat_heading{margin-top:0!important;margin-bottom:0!important;font-weight:600!important;font-size:1.25rem;line-height:1.25!important;color:rgba(var(--ejs-primary-color),1)!important}.ejs_cheat_close{font:inherit;line-height:inherit;width:auto;background:0 0;border:0;color:#bcbcbc!important;cursor:pointer}.ejs_cheat_close::before{content:"\2715";color:#bcbcbc!important;font:inherit;line-height:inherit;width:auto}.ejs_cheat_header{display:flex;justify-content:space-between;align-items:center}.ejs_cheat_main{margin-top:2rem;margin-bottom:2rem;line-height:1.5;color:rgba(0,0,0,.8);text-align:left;color:#bcbcbc!important;border:unset}.ejs_cheat_code{color:#000!important;font-size:1rem;padding:.4rem;max-width:100%}@keyframes ejs_cheat_animation{from{transform:translateY(15%)}to{transform:translateY(0)}}.ejs_cheat_parent{background-color:rgba(0,0,0,.8);border:1px solid rgba(238,238,238,.2);padding:30px;min-width:200px;max-width:500px;max-height:100vh;border-radius:4px;overflow-y:auto;box-sizing:border-box;will-change:transform;animation:ejs_cheat_animation .3s cubic-bezier(0,0,.2,1);font-size:14px}.ejs_popup_container_box{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);display:flex;justify-content:center;align-items:center}.ejs_popup_submit{touch-action:manipulation;font:inherit;line-height:inherit;width:auto}.ejs_button_button{color:#fff!important;padding-left:1rem;padding-right:1rem;padding-top:.5rem;padding-bottom:.5rem;background-color:#929292;border-radius:.25rem;border-style:none;border-width:0;cursor:pointer;-webkit-appearance:button;appearance:button;text-transform:none;overflow:visible;margin:0;will-change:transform;transition:transform .25s ease-out,-webkit-transform .25s ease-out}.ejs_button_button:hover{transform:scale(1.05)}.ejs_cheat_rows{max-width:320px;margin:0 auto;text-align:left;width:100%;float:none;user-select:text!important}.ejs_cheat_row{padding-left:2.25rem;position:relative;padding:.2em 0;clear:both}.ejs_cheat_row:hover{background-color:rgba(0,0,0,.8)}.ejs_cheat_row input[type=checkbox]{position:absolute;z-index:-1;opacity:0;box-sizing:border-box;width:auto}.ejs_cheat_row label{position:relative;margin-bottom:0;vertical-align:top;word-break:break-word}.ejs_cheat_row label::before{position:absolute;top:0;display:block;height:1rem;content:"";background-color:#fff;border:#adb5bd solid 1px;left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.ejs_cheat_row input:checked+label::before{color:#fff;border-color:rgba(var(--ejs-primary-color),1);background-color:rgba(var(--ejs-primary-color),1)}.ejs_cheat_row label::after{position:absolute;display:block;content:"";background-repeat:no-repeat;background-position:center center;top:calc(0rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}.ejs_cheat_row input:checked+label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.ejs_cheat_row_button{position:absolute;padding:.1rem .5rem;background-color:rgba(var(--ejs-primary-color),1);color:#fff!important;border-radius:.25rem;cursor:pointer;right:.025rem;border:0}.ejs_small_screen .ejs_volume_parent input[type=range]{width:100%}.ejs_big_screen .ejs_volume_parent{max-width:110px}.ejs_volume_parent{align-items:center;display:flex;flex:1;position:relative}.ejs_volume_parent{padding-right:15px}.ejs_volume_parent::-webkit-media-controls{display:none}.ejs_volume_parent input[type=range]{display:block;-webkit-appearance:none;appearance:none;border:0;border-radius:28px;color:rgba(var(--ejs-primary-color),1);margin:0;padding:0;transition:box-shadow .3s ease;width:100%;background:#fff;height:6px}.ejs_volume_parent input[type=range]::-webkit-slider-runnable-track{background-color:rgba(255,255,255,.25);outline:0;background:0 0;border:0;border-radius:3px;height:6px;transition:box-shadow .3s ease;user-select:none;background-image:linear-gradient(to right,currentColor var(--value,0),transparent var(--value,0))}.ejs_volume_parent input[type=range]::-webkit-slider-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2);height:14px;position:relative;transition:all .2s ease;width:14px;-webkit-appearance:none;margin-top:-4px}.ejs_volume_parent input[type=range]::-moz-range-track{background-color:rgba(255,255,255,.25);outline:0;background:0 0;border:0;border-radius:3px;height:6px;transition:box-shadow .3s ease;user-select:none}.ejs_volume_parent input[type=range]::-moz-range-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2);height:14px;position:relative;transition:all .2s ease;width:14px}.ejs_volume_parent input[type=range]::-moz-range-progress{background:currentColor;border-radius:3px;height:6px}.ejs_volume_parent input[type=range]::-ms-track{background-color:rgba(255,255,255,.25);outline:0;background:0 0;border:0;border-radius:3px;height:6px;transition:box-shadow .3s ease;user-select:none;color:transparent}.ejs_volume_parent input[type=range]::-ms-fill-upper{background:0 0;border:0;border-radius:3px;height:6px;transition:box-shadow .3s ease;user-select:none}.ejs_volume_parent input[type=range]::-ms-fill-lower{background:0 0;border:0;border-radius:3px;height:6px;transition:box-shadow .3s ease;user-select:none;background:currentColor}.ejs_volume_parent input[type=range]::-ms-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2);height:14px;position:relative;transition:all .2s ease;width:14px;margin-top:0}.ejs_volume_parent input[type=range]::-ms-tooltip{display:none}.ejs_volume_parent input[type=range]:focus{outline:0}.ejs_volume_parent input[type=range]::-moz-focus-outer{border:0}.ejs_volume_parent input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(255,255,255,.5)}.ejs_volume_parent input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(255,255,255,.5)}.ejs_volume_parent input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(255,255,255,.5)}.ejs_message{float:none;overflow:hidden;position:absolute;top:0;color:red;font-size:17px;padding:10px;text-align:left;text-shadow:#000 1px 1px 1px}.ejs_virtualGamepad_open{display:inline-block;width:24px;height:24px;color:#fff;position:absolute;top:5px;right:5px;opacity:.5;z-index:999;cursor:pointer}.ejs_virtualGamepad_open svg{fill:currentColor}.ejs_netplay_header{margin-top:.5rem;margin-bottom:.5rem;line-height:1.5;color:rgba(0,0,0,.8);text-align:left}.ejs_netplay_header input,.ejs_netplay_header select{font-size:1rem;padding:.4rem;max-width:100%;color:#000!important;background-color:#fff!important;margin:0;height:2rem;display:block;font-family:Arial;border:0}.ejs_netplay_name_heading{margin-top:0!important;margin-bottom:0!important;font-weight:600!important;font-size:1.25rem;line-height:1.25!important;color:rgba(var(--ejs-primary-color),1)!important;display:flex;justify-content:space-between;align-items:center}.ejs_netplay_table{font-family:Avenir,"Avenir Next","Helvetica Neue","Segoe UI",Helvetica,Arial,sans-serif;font-size:.8rem;padding:0 10px}.ejs_netplay_join_button{float:none;padding:.1rem .5rem;background-color:rgba(var(--ejs-primary-color),1);color:#fff!important;border-radius:.25rem;cursor:pointer}.ejs_netplay_table_row:hover{background-color:#2d2d2d}.ejs_gamepad_dropdown{background-color:var(--ejs-background-color);color:#fff;border:none;padding:8px 12px;border-radius:6px;font-family:inherit;outline:0;cursor:pointer;font-size:inherit}.ejs_gamepad_dropdown:active,.ejs_gamepad_dropdown:focus,.ejs_gamepad_dropdown:hover{box-shadow:0 0 0 2px rgba(51,153,255,.6);background-color:var(--ejs-background-color)}.ejs_gamepad_section{font-size:12px;justify-content:center;display:flex;align-items:center} \ No newline at end of file diff --git a/static/_app/tools/gba-emu/data/emulator.min.js b/static/_app/tools/gba-emu/data/emulator.min.js new file mode 100644 index 00000000..c6965ead --- /dev/null +++ b/static/_app/tools/gba-emu/data/emulator.min.js @@ -0,0 +1 @@ +class EJS_STORAGE{constructor(t,e){this.dbName=t,this.storeName=e}addFileToDB(t,e){(async()=>{if("?EJS_KEYS!"===t)return;let i=await this.get("?EJS_KEYS!");if(i||(i=[]),e)i.includes(t)||i.push(t);else{const e=i.indexOf(t);-1!==e&&i.splice(e,1)}this.put("?EJS_KEYS!",i)})()}get(t){return new Promise(((e,i)=>{if(!window.indexedDB)return e();let n=indexedDB.open(this.dbName,1);n.onerror=()=>e(),n.onsuccess=()=>{let i=n.result.transaction([this.storeName],"readwrite").objectStore(this.storeName).get(t);i.onsuccess=t=>{e(i.result)},i.onerror=()=>e()},n.onupgradeneeded=()=>{let t=n.result;t.objectStoreNames.contains(this.storeName)||t.createObjectStore(this.storeName)}}))}put(t,e){return new Promise(((i,n)=>{if(!window.indexedDB)return i();let s=indexedDB.open(this.dbName,1);s.onerror=()=>{},s.onsuccess=()=>{let n=s.result.transaction([this.storeName],"readwrite").objectStore(this.storeName).put(e,t);n.onerror=()=>i(),n.onsuccess=()=>{this.addFileToDB(t,!0),i()}},s.onupgradeneeded=()=>{let t=s.result;t.objectStoreNames.contains(this.storeName)||t.createObjectStore(this.storeName)}}))}remove(t){return new Promise(((e,i)=>{if(!window.indexedDB)return e();let n=indexedDB.open(this.dbName,1);n.onerror=()=>{},n.onsuccess=()=>{let i=n.result.transaction([this.storeName],"readwrite").objectStore(this.storeName).delete(t);this.addFileToDB(t,!1),i.onsuccess=()=>e(),i.onerror=()=>{}},n.onupgradeneeded=()=>{let t=n.result;t.objectStoreNames.contains(this.storeName)||t.createObjectStore(this.storeName)}}))}getSizes(){return new Promise((async(t,e)=>{window.indexedDB||t({});const i=await this.get("?EJS_KEYS!");if(!i)return t({});let n={};for(let t=0;tt()))}get(){return new Promise((t=>t()))}put(){return new Promise((t=>t()))}remove(){return new Promise((t=>t()))}getSizes(){return new Promise((t=>t({})))}}window.EJS_STORAGE=EJS_STORAGE,window.EJS_DUMMYSTORAGE=EJS_DUMMYSTORAGE,function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).io=e()}(this,(function(){"use strict";function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=Array(e);i=e.length?{done:!0}:{done:!1,value:e[s++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,l=!0,r=!1;return{s:function(){n=n.call(e)},n:function(){var t=n.next();return l=t.done,t},e:function(t){r=!0,a=t},f:function(){try{l||null==n.return||n.return()}finally{if(r)throw a}}}}function s(){return s=Object.assign?Object.assign.bind():function(t){for(var e=1;e1?{type:p[i],data:t.substring(1)}:{type:p[i]}:m},w=function(t,e){if(A){var i=function(t){var e,i,n,s,o,a=.75*t.length,l=t.length,r=0;"="===t[t.length-1]&&(a--,"="===t[t.length-2]&&a--);var c=new ArrayBuffer(a),d=new Uint8Array(c);for(e=0;e>4,d[r++]=(15&n)<<4|s>>2,d[r++]=(3&s)<<6|63&o;return c}(t);return U(i,e)}return{base64:!0,data:t}},U=function(t,e){return"blob"===e?t instanceof Blob?t:new Blob([t]):t instanceof ArrayBuffer?t:t.buffer},N=String.fromCharCode(30);function M(t){return t.reduce((function(t,e){return t+e.length}),0)}function W(t,e){if(t[0].length===e)return t.shift();for(var i=new Uint8Array(e),n=0,s=0;s1?e-1:0),n=1;n1&&void 0!==arguments[1]?arguments[1]:{};return t+"://"+this.i()+this.o()+this.opts.path+this.u(e)},i.i=function(){var t=this.opts.hostname;return-1===t.indexOf(":")?t:"["+t+"]"},i.o=function(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""},i.u=function(t){var e=function(t){var e="";for(var i in t)t.hasOwnProperty(i)&&(e.length&&(e+="&"),e+=encodeURIComponent(i)+"="+encodeURIComponent(t[i]));return e}(t);return e.length?"?"+e:""},e}(F),Y=function(t){function e(){var e;return(e=t.apply(this,arguments)||this).h=!1,e}a(e,t);var n=e.prototype;return n.doOpen=function(){this.v()},n.pause=function(t){var e=this;this.readyState="pausing";var i=function(){e.readyState="paused",t()};if(this.h||!this.writable){var n=0;this.h&&(n++,this.once("pollComplete",(function(){--n||i()}))),this.writable||(n++,this.once("drain",(function(){--n||i()})))}else i()},n.v=function(){this.h=!0,this.doPoll(),this.emitReserved("poll")},n.onData=function(t){var e=this;(function(t,e){for(var i=t.split(N),n=[],s=0;s0&&void 0!==arguments[0]?arguments[0]:{};return s(t,{xd:this.xd},this.opts),new D(q,this.uri(),t)},e}(H);function q(t){var e=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!e||J))return new XMLHttpRequest}catch(t){}if(!e)try{return new(R[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}var $="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),tt=function(t){function e(){return t.apply(this,arguments)||this}a(e,t);var n=e.prototype;return n.doOpen=function(){var t=this.uri(),e=this.opts.protocols,i=$?{}:T(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(i.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,e,i)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()},n.addEventListeners=function(){var t=this;this.ws.onopen=function(){t.opts.autoUnref&&t.ws.C.unref(),t.onOpen()},this.ws.onclose=function(e){return t.onClose({description:"websocket connection closed",context:e})},this.ws.onmessage=function(e){return t.onData(e.data)},this.ws.onerror=function(e){return t.onError("websocket error",e)}},n.write=function(t){var e=this;this.writable=!1;for(var i=function(){var i=t[n],s=n===t.length-1;y(i,e.supportsBinary,(function(t){try{e.doWrite(i,t)}catch(t){}s&&G((function(){e.writable=!0,e.emitReserved("drain")}),e.setTimeoutFn)}))},n=0;nMath.pow(2,21)-1){l.enqueue(m);break}s=h*Math.pow(2,32)+g.getUint32(4),n=3}else{if(M(i)t){l.enqueue(m);break}}}})}(Number.MAX_SAFE_INTEGER,t.socket.binaryType),n=e.readable.pipeThrough(i).getReader(),s=new TransformStream({transform:function(t,e){!function(t,e){I&&t.data instanceof Blob?t.data.arrayBuffer().then(V).then(e):C&&(t.data instanceof ArrayBuffer||b(t.data))?e(V(t.data)):y(t,!1,(function(t){u||(u=new TextEncoder),e(u.encode(t))}))}(t,(function(i){var n,s=i.length;if(s<126)n=new Uint8Array(1),new DataView(n.buffer).setUint8(0,s);else if(s<65536){n=new Uint8Array(3);var o=new DataView(n.buffer);o.setUint8(0,126),o.setUint16(1,s)}else{n=new Uint8Array(9);var a=new DataView(n.buffer);a.setUint8(0,127),a.setBigUint64(1,BigInt(s))}t.data&&"string"!=typeof t.data&&(n[0]|=128),e.enqueue(n),e.enqueue(i)}))}});s.readable.pipeTo(e.writable),t.U=s.writable.getWriter(),function e(){n.read().then((function(i){var n=i.done,s=i.value;n||(t.onPacket(s),e())})).catch((function(t){}))}();var o={type:"open"};t.query.sid&&(o.data='{"sid":"'.concat(t.query.sid,'"}')),t.U.write(o).then((function(){return t.onOpen()}))}))}))},n.write=function(t){var e=this;this.writable=!1;for(var i=function(){var i=t[n],s=n===t.length-1;e.U.write(i).then((function(){s&&G((function(){e.writable=!0,e.emitReserved("drain")}),e.setTimeoutFn)}))},n=0;n8e3)throw"URI too long";var e=t,i=t.indexOf("["),n=t.indexOf("]");-1!=i&&-1!=n&&(t=t.substring(0,i)+t.substring(i,n).replace(/:/g,";")+t.substring(n,t.length));for(var s,o,a=ot.exec(t||""),l={},r=14;r--;)l[at[r]]=a[r]||"";return-1!=i&&-1!=n&&(l.source=e,l.host=l.host.substring(1,l.host.length-1).replace(/;/g,":"),l.authority=l.authority.replace("[","").replace("]","").replace(/;/g,":"),l.ipv6uri=!0),l.pathNames=function(t,e){var i=e.replace(/\/{2,9}/g,"/").split("/");return"/"!=e.slice(0,1)&&0!==e.length||i.splice(0,1),"/"==e.slice(-1)&&i.splice(i.length-1,1),i}(0,l.path),l.queryKey=(s=l.query,o={},s.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,i){e&&(o[e]=i)})),o),l}var rt="function"==typeof addEventListener&&"function"==typeof removeEventListener,ct=[];rt&&addEventListener("offline",(function(){ct.forEach((function(t){return t()}))}),!1);var dt=function(t){function e(e,i){var n;if((n=t.call(this)||this).binaryType="arraybuffer",n.writeBuffer=[],n.M=0,n.I=-1,n.R=-1,n.L=-1,n._=1/0,e&&"object"===d(e)&&(i=e,e=null),e){var o=lt(e);i.hostname=o.host,i.secure="https"===o.protocol||"wss"===o.protocol,i.port=o.port,o.query&&(i.query=o.query)}else i.host&&(i.hostname=lt(i.host).host);return Q(n,i),n.secure=null!=i.secure?i.secure:"undefined"!=typeof location&&"https:"===location.protocol,i.hostname&&!i.port&&(i.port=n.secure?"443":"80"),n.hostname=i.hostname||("undefined"!=typeof location?location.hostname:"localhost"),n.port=i.port||("undefined"!=typeof location&&location.port?location.port:n.secure?"443":"80"),n.transports=[],n.D={},i.transports.forEach((function(t){var e=t.prototype.name;n.transports.push(e),n.D[e]=t})),n.opts=s({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},i),n.opts.path=n.opts.path.replace(/\/$/,"")+(n.opts.addTrailingSlash?"/":""),"string"==typeof n.opts.query&&(n.opts.query=function(t){for(var e={},i=t.split("&"),n=0,s=i.length;n1))return this.writeBuffer;for(var t,e=1,i=0;i=57344?i+=3:(n++,i+=4);return i}(t):Math.ceil(1.33*(t.byteLength||t.size))),i>0&&e>this.L)return this.writeBuffer.slice(0,i);e+=2}return this.writeBuffer},i.W=function(){var t=this;if(!this._)return!0;var e=Date.now()>this._;return e&&(this._=0,G((function(){t.F("ping timeout")}),this.setTimeoutFn)),e},i.write=function(t,e,i){return this.J("message",t,e,i),this},i.send=function(t,e,i){return this.J("message",t,e,i),this},i.J=function(t,e,i,n){if("function"==typeof e&&(n=e,e=void 0),"function"==typeof i&&(n=i,i=null),"closing"!==this.readyState&&"closed"!==this.readyState){(i=i||{}).compress=!1!==i.compress;var s={type:t,data:e,options:i};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),n&&this.once("flush",n),this.flush()}},i.close=function(){var t=this,e=function(){t.F("forced close"),t.transport.close()},i=function i(){t.off("upgrade",i),t.off("upgradeError",i),e()},n=function(){t.once("upgrade",i),t.once("upgradeError",i)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(function(){t.upgrading?n():e()})):this.upgrading?n():e()),this},i.B=function(t){if(e.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&"opening"===this.readyState)return this.transports.shift(),this.q();this.emitReserved("error",t),this.F("transport error",t)},i.F=function(t,e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){if(this.clearTimeoutFn(this.Y),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),rt&&(this.P&&removeEventListener("beforeunload",this.P,!1),this.$)){var i=ct.indexOf(this.$);-1!==i&&ct.splice(i,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this.M=0}},e}(F);dt.protocol=4;var gt=function(t){function e(){var e;return(e=t.apply(this,arguments)||this).Z=[],e}a(e,t);var i=e.prototype;return i.onOpen=function(){if(t.prototype.onOpen.call(this),"open"===this.readyState&&this.opts.upgrade)for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:{},n="object"===d(e)?e:i;return(!n.transports||n.transports&&"string"==typeof n.transports[0])&&(n.transports=(n.transports||["polling","websocket","webtransport"]).map((function(t){return st[t]})).filter((function(t){return!!t}))),t.call(this,e,n)||this}return a(e,t),e}(gt);ht.protocol;var pt="function"==typeof ArrayBuffer,ut=Object.prototype.toString,mt="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===ut.call(Blob),It="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===ut.call(File);function Ct(t){return pt&&(t instanceof ArrayBuffer||function(t){return"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer}(t))||mt&&t instanceof Blob||It&&t instanceof File}function bt(t,e){if(!t||"object"!==d(t))return!1;if(Array.isArray(t)){for(var i=0,n=t.length;i=0&&t.num1?s-1:0),a=1;a1?i-1:0),s=1;si.l.retries&&(i.it.shift(),e&&e(t));else if(i.it.shift(),e){for(var s=arguments.length,o=new Array(s>1?s-1:0),a=1;a0&&void 0!==arguments[0]&&arguments[0];if(this.connected&&0!==this.it.length){var e=this.it[0];e.pending&&!t||(e.pending=!0,e.tryCount++,this.flags=e.flags,this.emit.apply(this,e.args))}},o.packet=function(t){t.nsp=this.nsp,this.io.ct(t)},o.onopen=function(){var t=this;"function"==typeof this.auth?this.auth((function(e){t.vt(e)})):this.vt(this.auth)},o.vt=function(t){this.packet({type:Bt.CONNECT,data:this.lt?s({pid:this.lt,offset:this.dt},t):t})},o.onerror=function(t){this.connected||this.emitReserved("connect_error",t)},o.onclose=function(t,e){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,e),this.yt()},o.yt=function(){var t=this;Object.keys(this.acks).forEach((function(e){if(!t.sendBuffer.some((function(t){return String(t.id)===e}))){var i=t.acks[e];delete t.acks[e],i.withError&&i.call(t,new Error("socket has been disconnected"))}}))},o.onpacket=function(t){if(t.nsp===this.nsp)switch(t.type){case Bt.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Bt.EVENT:case Bt.BINARY_EVENT:this.onevent(t);break;case Bt.ACK:case Bt.BINARY_ACK:this.onack(t);break;case Bt.DISCONNECT:this.ondisconnect();break;case Bt.CONNECT_ERROR:this.destroy();var e=new Error(t.data.message);e.data=t.data.data,this.emitReserved("connect_error",e)}},o.onevent=function(t){var e=t.data||[];null!=t.id&&e.push(this.ack(t.id)),this.connected?this.emitEvent(e):this.receiveBuffer.push(Object.freeze(e))},o.emitEvent=function(e){if(this.bt&&this.bt.length){var i,s=n(this.bt.slice());try{for(s.s();!(i=s.n()).done;)i.value.apply(this,e)}catch(t){s.e(t)}finally{s.f()}}t.prototype.emit.apply(this,e),this.lt&&e.length&&"string"==typeof e[e.length-1]&&(this.dt=e[e.length-1])},o.ack=function(t){var e=this,i=!1;return function(){if(!i){i=!0;for(var n=arguments.length,s=new Array(n),o=0;o0&&t.jitter<=1?t.jitter:0,this.attempts=0}Rt.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),i=Math.floor(e*this.jitter*t);t=1&Math.floor(10*e)?t+i:t-i}return 0|Math.min(t,this.max)},Rt.prototype.reset=function(){this.attempts=0},Rt.prototype.setMin=function(t){this.ms=t},Rt.prototype.setMax=function(t){this.max=t},Rt.prototype.setJitter=function(t){this.jitter=t};var Tt=function(t){function e(e,i){var n,s;(n=t.call(this)||this).nsps={},n.subs=[],e&&"object"===d(e)&&(i=e,e=void 0),(i=i||{}).path=i.path||"/socket.io",n.opts=i,Q(n,i),n.reconnection(!1!==i.reconnection),n.reconnectionAttempts(i.reconnectionAttempts||1/0),n.reconnectionDelay(i.reconnectionDelay||1e3),n.reconnectionDelayMax(i.reconnectionDelayMax||5e3),n.randomizationFactor(null!==(s=i.randomizationFactor)&&void 0!==s?s:.5),n.backoff=new Rt({min:n.reconnectionDelay(),max:n.reconnectionDelayMax(),jitter:n.randomizationFactor()}),n.timeout(null==i.timeout?2e4:i.timeout),n.st="closed",n.uri=e;var o=i.parser||Mt;return n.encoder=new o.Encoder,n.decoder=new o.Decoder,n.et=!1!==i.autoConnect,n.et&&n.open(),n}a(e,t);var i=e.prototype;return i.reconnection=function(t){return arguments.length?(this.kt=!!t,t||(this.skipReconnect=!0),this):this.kt},i.reconnectionAttempts=function(t){return void 0===t?this.At:(this.At=t,this)},i.reconnectionDelay=function(t){var e;return void 0===t?this.jt:(this.jt=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)},i.randomizationFactor=function(t){var e;return void 0===t?this.Et:(this.Et=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)},i.reconnectionDelayMax=function(t){var e;return void 0===t?this.Ot:(this.Ot=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)},i.timeout=function(t){return arguments.length?(this.Bt=t,this):this.Bt},i.maybeReconnectOnOpen=function(){!this.ot&&this.kt&&0===this.backoff.attempts&&this.reconnect()},i.open=function(t){var e=this;if(~this.st.indexOf("open"))return this;this.engine=new ht(this.uri,this.opts);var i=this.engine,n=this;this.st="opening",this.skipReconnect=!1;var s=Wt(i,"open",(function(){n.onopen(),t&&t()})),o=function(i){e.cleanup(),e.st="closed",e.emitReserved("error",i),t?t(i):e.maybeReconnectOnOpen()},a=Wt(i,"error",o);if(!1!==this.Bt){var l=this.Bt,r=this.setTimeoutFn((function(){s(),o(new Error("timeout")),i.close()}),l);this.opts.autoUnref&&r.unref(),this.subs.push((function(){e.clearTimeoutFn(r)}))}return this.subs.push(s),this.subs.push(a),this},i.connect=function(t){return this.open(t)},i.onopen=function(){this.cleanup(),this.st="open",this.emitReserved("open");var t=this.engine;this.subs.push(Wt(t,"ping",this.onping.bind(this)),Wt(t,"data",this.ondata.bind(this)),Wt(t,"error",this.onerror.bind(this)),Wt(t,"close",this.onclose.bind(this)),Wt(this.decoder,"decoded",this.ondecoded.bind(this)))},i.onping=function(){this.emitReserved("ping")},i.ondata=function(t){try{this.decoder.add(t)}catch(t){this.onclose("parse error",t)}},i.ondecoded=function(t){var e=this;G((function(){e.emitReserved("packet",t)}),this.setTimeoutFn)},i.onerror=function(t){this.emitReserved("error",t)},i.socket=function(t,e){var i=this.nsps[t];return i?this.et&&!i.active&&i.connect():(i=new Gt(this,t,e),this.nsps[t]=i),i},i.wt=function(t){for(var e=0,i=Object.keys(this.nsps);e=this.At)this.backoff.reset(),this.emitReserved("reconnect_failed"),this.ot=!1;else{var i=this.backoff.duration();this.ot=!0;var n=this.setTimeoutFn((function(){e.skipReconnect||(t.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((function(i){i?(e.ot=!1,e.reconnect(),t.emitReserved("reconnect_error",i)):e.onreconnect()})))}),i);this.opts.autoUnref&&n.unref(),this.subs.push((function(){t.clearTimeoutFn(n)}))}},i.onreconnect=function(){var t=this.backoff.attempts;this.ot=!1,this.backoff.reset(),this.emitReserved("reconnect",t)},e}(F),kt={};function Et(t,e){"object"===d(t)&&(e=t,t=void 0);var i,n=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,n=t;i=i||"undefined"!=typeof location&&location,null==t&&(t=i.protocol+"//"+i.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?i.protocol+t:i.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==i?i.protocol+"//"+t:"https://"+t),n=lt(t)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";var s=-1!==n.host.indexOf(":")?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+s+":"+n.port+e,n.href=n.protocol+"://"+s+(i&&i.port===n.port?"":":"+n.port),n}(t,(e=e||{}).path||"/socket.io"),s=n.source,o=n.id,a=n.path,l=kt[o]&&a in kt[o].nsps;return e.forceNew||e["force new connection"]||!1===e.multiplex||l?i=new Tt(s,e):(kt[o]||(kt[o]=new Tt(s,e)),i=kt[o]),n.query&&!e.query&&(e.query=n.queryKey),i.socket(n.path,e)}return s(Et,{Manager:Tt,Socket:Gt,io:Et,connect:Et}),Et})),window.EJS_SHADERS={"2xScaleHQ.glslp":{shader:{type:"text",value:'shaders = 1\n\nshader0 = "2xScaleHQ.glsl"\nfilter_linear0 = false\nscale_type_0 = source\n'},resources:[{name:"2xScaleHQ.glsl",type:"base64",value:"LyoKICAgMnhHTFNMSHFGaWx0ZXIgc2hhZGVyCiAgIAogICBDb3B5cmlnaHQgKEMpIDIwMDUgZ3Vlc3QocikgLSBndWVzdC5yQGdtYWlsLmNvbQoKICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgogICBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcsIFVTQS4KKi8KCiNpZiBkZWZpbmVkKFZFUlRFWCkKCiNpZiBfX1ZFUlNJT05fXyA+PSAxMzAKI2RlZmluZSBDT01QQVRfVkFSWUlORyBvdXQKI2RlZmluZSBDT01QQVRfQVRUUklCVVRFIGluCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZQojZWxzZQojZGVmaW5lIENPTVBBVF9WQVJZSU5HIHZhcnlpbmcgCiNkZWZpbmUgQ09NUEFUX0FUVFJJQlVURSBhdHRyaWJ1dGUgCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZTJECiNlbmRpZgoKI2lmZGVmIEdMX0VTCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTiBtZWRpdW1wCiNlbHNlCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTgojZW5kaWYKCkNPTVBBVF9BVFRSSUJVVEUgdmVjNCBWZXJ0ZXhDb29yZDsKQ09NUEFUX0FUVFJJQlVURSB2ZWM0IENPTE9SOwpDT01QQVRfQVRUUklCVVRFIHZlYzQgVGV4Q29vcmQ7CkNPTVBBVF9WQVJZSU5HIHZlYzQgQ09MMDsKQ09NUEFUX1ZBUllJTkcgdmVjNCBURVgwOwpDT01QQVRfVkFSWUlORyB2ZWM0IHQxOwpDT01QQVRfVkFSWUlORyB2ZWM0IHQyOwpDT01QQVRfVkFSWUlORyB2ZWM0IHQzOwpDT01QQVRfVkFSWUlORyB2ZWM0IHQ0OwoKdmVjNCBfb1Bvc2l0aW9uMTsgCnVuaWZvcm0gbWF0NCBNVlBNYXRyaXg7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVEaXJlY3Rpb247CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVDb3VudDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgT3V0cHV0U2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgVGV4dHVyZVNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIElucHV0U2l6ZTsKCi8vIGNvbXBhdGliaWxpdHkgI2RlZmluZXMKI2RlZmluZSB2VGV4Q29vcmQgVEVYMC54eQojZGVmaW5lIFNvdXJjZVNpemUgdmVjNChUZXh0dXJlU2l6ZSwgMS4wIC8gVGV4dHVyZVNpemUpIC8vZWl0aGVyIFRleHR1cmVTaXplIG9yIElucHV0U2l6ZQojZGVmaW5lIE91dFNpemUgdmVjNChPdXRwdXRTaXplLCAxLjAgLyBPdXRwdXRTaXplKQoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBNVlBNYXRyaXggKiBWZXJ0ZXhDb29yZDsKICAgIFRFWDAueHkgPSBUZXhDb29yZC54eTsKICAgZmxvYXQgeCA9IDAuNSAqIFNvdXJjZVNpemUuejsKICAgZmxvYXQgeSA9IDAuNSAqIFNvdXJjZVNpemUudzsKICAgdmVjMiBkZzEgPSB2ZWMyKCB4LCB5KTsKICAgdmVjMiBkZzIgPSB2ZWMyKC14LCB5KTsKICAgdmVjMiBkeCA9IHZlYzIoeCwgMC4wKTsKICAgdmVjMiBkeSA9IHZlYzIoMC4wLCB5KTsKICAgdDEgPSB2ZWM0KHZUZXhDb29yZCAtIGRnMSwgdlRleENvb3JkIC0gZHkpOwogICB0MiA9IHZlYzQodlRleENvb3JkIC0gZGcyLCB2VGV4Q29vcmQgKyBkeCk7CiAgIHQzID0gdmVjNCh2VGV4Q29vcmQgKyBkZzEsIHZUZXhDb29yZCArIGR5KTsKICAgdDQgPSB2ZWM0KHZUZXhDb29yZCArIGRnMiwgdlRleENvb3JkIC0gZHgpOwp9CgojZWxpZiBkZWZpbmVkKEZSQUdNRU5UKQoKI2lmIF9fVkVSU0lPTl9fID49IDEzMAojZGVmaW5lIENPTVBBVF9WQVJZSU5HIGluCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZQpvdXQgdmVjNCBGcmFnQ29sb3I7CiNlbHNlCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgdmFyeWluZwojZGVmaW5lIEZyYWdDb2xvciBnbF9GcmFnQ29sb3IKI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlMkQKI2VuZGlmCgojaWZkZWYgR0xfRVMKI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdICnByZWNpc2lvbiBoaWdocCBmbG9hdDsKI2Vsc2UKcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiNlbmRpZgojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04gbWVkaXVtcAojZWxzZQojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04KI2VuZGlmCgp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lRGlyZWN0aW9uOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lQ291bnQ7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIE91dHB1dFNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIFRleHR1cmVTaXplOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBJbnB1dFNpemU7CnVuaWZvcm0gc2FtcGxlcjJEIFRleHR1cmU7CkNPTVBBVF9WQVJZSU5HIHZlYzQgVEVYMDsKQ09NUEFUX1ZBUllJTkcgdmVjNCB0MTsKQ09NUEFUX1ZBUllJTkcgdmVjNCB0MjsKQ09NUEFUX1ZBUllJTkcgdmVjNCB0MzsKQ09NUEFUX1ZBUllJTkcgdmVjNCB0NDsKCi8vIGNvbXBhdGliaWxpdHkgI2RlZmluZXMKI2RlZmluZSBTb3VyY2UgVGV4dHVyZQojZGVmaW5lIHZUZXhDb29yZCBURVgwLnh5CgojZGVmaW5lIFNvdXJjZVNpemUgdmVjNChUZXh0dXJlU2l6ZSwgMS4wIC8gVGV4dHVyZVNpemUpIC8vZWl0aGVyIFRleHR1cmVTaXplIG9yIElucHV0U2l6ZQojZGVmaW5lIE91dFNpemUgdmVjNChPdXRwdXRTaXplLCAxLjAgLyBPdXRwdXRTaXplKQoKZmxvYXQgbXggPSAwLjMyNTsgICAgICAvLyBzdGFydCBzbW9vdGhpbmcgd3QuCmZsb2F0IGsgPSAtMC4yNTA7ICAgICAgLy8gd3QuIGRlY3JlYXNlIGZhY3RvcgpmbG9hdCBtYXhfdyA9IDAuMjU7ICAgIC8vIG1heCBmaWx0ZXIgd2VpZ2h0CmZsb2F0IG1pbl93ID0tMC4wNTsgICAgLy8gbWluIGZpbHRlciB3ZWlnaHQKZmxvYXQgbHVtX2FkZCA9IDAuMjU7ICAvLyBhZmZlY3RzIHNtb290aGluZwp2ZWMzIGR0ID0gdmVjMygxLjApOwoKdm9pZCBtYWluKCkKewogICB2ZWMzIGMwMCA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgdDEueHkpLnh5ejsgCiAgIHZlYzMgYzEwID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB0MS56dykueHl6OyAKICAgdmVjMyBjMjAgPSBDT01QQVRfVEVYVFVSRShTb3VyY2UsIHQyLnh5KS54eXo7IAogICB2ZWMzIGMwMSA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgdDQuencpLnh5ejsgCiAgIHZlYzMgYzExID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB2VGV4Q29vcmQpLnh5ejsgCiAgIHZlYzMgYzIxID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB0Mi56dykueHl6OyAKICAgdmVjMyBjMDIgPSBDT01QQVRfVEVYVFVSRShTb3VyY2UsIHQ0Lnh5KS54eXo7IAogICB2ZWMzIGMxMiA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgdDMuencpLnh5ejsgCiAgIHZlYzMgYzIyID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB0My54eSkueHl6OyAKCiAgIGZsb2F0IG1kMSA9IGRvdChhYnMoYzAwIC0gYzIyKSwgZHQpOwogICBmbG9hdCBtZDIgPSBkb3QoYWJzKGMwMiAtIGMyMCksIGR0KTsKCiAgIGZsb2F0IHcxID0gZG90KGFicyhjMjIgLSBjMTEpLCBkdCkgKiBtZDI7CiAgIGZsb2F0IHcyID0gZG90KGFicyhjMDIgLSBjMTEpLCBkdCkgKiBtZDE7CiAgIGZsb2F0IHczID0gZG90KGFicyhjMDAgLSBjMTEpLCBkdCkgKiBtZDI7CiAgIGZsb2F0IHc0ID0gZG90KGFicyhjMjAgLSBjMTEpLCBkdCkgKiBtZDE7CgogICBmbG9hdCB0MSA9IHcxICsgdzM7CiAgIGZsb2F0IHQyID0gdzIgKyB3NDsKICAgZmxvYXQgd3cgPSBtYXgodDEsIHQyKSArIDAuMDAwMTsKCiAgIGMxMSA9ICh3MSAqIGMwMCArIHcyICogYzIwICsgdzMgKiBjMjIgKyB3NCAqIGMwMiArIHd3ICogYzExKSAvICh0MSArIHQyICsgd3cpOwoKICAgZmxvYXQgbGMxID0gayAvICgwLjEyICogZG90KGMxMCArIGMxMiArIGMxMSwgZHQpICsgbHVtX2FkZCk7CiAgIGZsb2F0IGxjMiA9IGsgLyAoMC4xMiAqIGRvdChjMDEgKyBjMjEgKyBjMTEsIGR0KSArIGx1bV9hZGQpOwoKICAgdzEgPSBjbGFtcChsYzEgKiBkb3QoYWJzKGMxMSAtIGMxMCksIGR0KSArIG14LCBtaW5fdywgbWF4X3cpOwogICB3MiA9IGNsYW1wKGxjMiAqIGRvdChhYnMoYzExIC0gYzIxKSwgZHQpICsgbXgsIG1pbl93LCBtYXhfdyk7CiAgIHczID0gY2xhbXAobGMxICogZG90KGFicyhjMTEgLSBjMTIpLCBkdCkgKyBteCwgbWluX3csIG1heF93KTsKICAgdzQgPSBjbGFtcChsYzIgKiBkb3QoYWJzKGMxMSAtIGMwMSksIGR0KSArIG14LCBtaW5fdywgbWF4X3cpOwogICBGcmFnQ29sb3IgPSB2ZWM0KHcxICogYzEwICsgdzIgKiBjMjEgKyB3MyAqIGMxMiArIHc0ICogYzAxICsgKDEuMCAtIHcxIC0gdzIgLSB3MyAtIHc0KSAqIGMxMSwgMS4wKTsKfSAKI2VuZGlmCg=="}]},"4xScaleHQ.glslp":{shader:{type:"text",value:'shaders = 1\n\nshader0 = "4xScaleHQ.glsl"\nfilter_linear0 = false\nscale_type_0 = source\n'},resources:[{name:"4xScaleHQ.glsl",type:"base64",value:"LyoKICAgNHhHTFNMSHFGaWx0ZXIgc2hhZGVyCiAgIAogICBDb3B5cmlnaHQgKEMpIDIwMDUgZ3Vlc3QocikgLSBndWVzdC5yQGdtYWlsLmNvbQoKICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgogICBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcsIFVTQS4KKi8KCiNpZiBkZWZpbmVkKFZFUlRFWCkKCiNpZiBfX1ZFUlNJT05fXyA+PSAxMzAKI2RlZmluZSBDT01QQVRfVkFSWUlORyBvdXQKI2RlZmluZSBDT01QQVRfQVRUUklCVVRFIGluCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZQojZWxzZQojZGVmaW5lIENPTVBBVF9WQVJZSU5HIHZhcnlpbmcgCiNkZWZpbmUgQ09NUEFUX0FUVFJJQlVURSBhdHRyaWJ1dGUgCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZTJECiNlbmRpZgoKI2lmZGVmIEdMX0VTCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTiBtZWRpdW1wCiNlbHNlCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTgojZW5kaWYKCkNPTVBBVF9BVFRSSUJVVEUgdmVjNCBWZXJ0ZXhDb29yZDsKQ09NUEFUX0FUVFJJQlVURSB2ZWM0IENPTE9SOwpDT01QQVRfQVRUUklCVVRFIHZlYzQgVGV4Q29vcmQ7CkNPTVBBVF9WQVJZSU5HIHZlYzQgQ09MMDsKQ09NUEFUX1ZBUllJTkcgdmVjNCBURVgwOwpDT01QQVRfVkFSWUlORyB2ZWM0IHQxOwpDT01QQVRfVkFSWUlORyB2ZWM0IHQyOwpDT01QQVRfVkFSWUlORyB2ZWM0IHQzOwpDT01QQVRfVkFSWUlORyB2ZWM0IHQ0OwpDT01QQVRfVkFSWUlORyB2ZWM0IHQ1OwpDT01QQVRfVkFSWUlORyB2ZWM0IHQ2OwoKdmVjNCBfb1Bvc2l0aW9uMTsgCnVuaWZvcm0gbWF0NCBNVlBNYXRyaXg7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVEaXJlY3Rpb247CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVDb3VudDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgT3V0cHV0U2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgVGV4dHVyZVNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIElucHV0U2l6ZTsKCi8vIGNvbXBhdGliaWxpdHkgI2RlZmluZXMKI2RlZmluZSB2VGV4Q29vcmQgVEVYMC54eQojZGVmaW5lIFNvdXJjZVNpemUgdmVjNChUZXh0dXJlU2l6ZSwgMS4wIC8gVGV4dHVyZVNpemUpIC8vZWl0aGVyIFRleHR1cmVTaXplIG9yIElucHV0U2l6ZQojZGVmaW5lIE91dFNpemUgdmVjNChPdXRwdXRTaXplLCAxLjAgLyBPdXRwdXRTaXplKQoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBNVlBNYXRyaXggKiBWZXJ0ZXhDb29yZDsKICAgIFRFWDAueHkgPSBUZXhDb29yZC54eTsKICAgZmxvYXQgeCA9IDAuNSAqIFNvdXJjZVNpemUuejsKICAgZmxvYXQgeSA9IDAuNSAqIFNvdXJjZVNpemUudzsKICAgdmVjMiBkZzEgPSB2ZWMyKCB4LCB5KTsKICAgdmVjMiBkZzIgPSB2ZWMyKC14LCB5KTsKICAgdmVjMiBzZDEgPSBkZzEgKiAwLjU7CiAgIHZlYzIgc2QyID0gZGcyICogMC41OwogICB2ZWMyIGRkeCA9IHZlYzIoeCwgMC4wKTsKICAgdmVjMiBkZHkgPSB2ZWMyKDAuMCwgeSk7CiAgIHQxID0gdmVjNCh2VGV4Q29vcmQgLSBzZDEsIHZUZXhDb29yZCAtIGRkeSk7CiAgIHQyID0gdmVjNCh2VGV4Q29vcmQgLSBzZDIsIHZUZXhDb29yZCArIGRkeCk7CiAgIHQzID0gdmVjNCh2VGV4Q29vcmQgKyBzZDEsIHZUZXhDb29yZCArIGRkeSk7CiAgIHQ0ID0gdmVjNCh2VGV4Q29vcmQgKyBzZDIsIHZUZXhDb29yZCAtIGRkeCk7CiAgIHQ1ID0gdmVjNCh2VGV4Q29vcmQgLSBkZzEsIHZUZXhDb29yZCAtIGRnMik7CiAgIHQ2ID0gdmVjNCh2VGV4Q29vcmQgKyBkZzEsIHZUZXhDb29yZCArIGRnMik7Cn0KCiNlbGlmIGRlZmluZWQoRlJBR01FTlQpCgojaWYgX19WRVJTSU9OX18gPj0gMTMwCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgaW4KI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlCm91dCB2ZWM0IEZyYWdDb2xvcjsKI2Vsc2UKI2RlZmluZSBDT01QQVRfVkFSWUlORyB2YXJ5aW5nCiNkZWZpbmUgRnJhZ0NvbG9yIGdsX0ZyYWdDb2xvcgojZGVmaW5lIENPTVBBVF9URVhUVVJFIHRleHR1cmUyRAojZW5kaWYKCiNpZmRlZiBHTF9FUwojaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJR0gKcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwojZWxzZQpwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKI2VuZGlmCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTiBtZWRpdW1wCiNlbHNlCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTgojZW5kaWYKCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVEaXJlY3Rpb247CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVDb3VudDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgT3V0cHV0U2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgVGV4dHVyZVNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIElucHV0U2l6ZTsKdW5pZm9ybSBzYW1wbGVyMkQgVGV4dHVyZTsKQ09NUEFUX1ZBUllJTkcgdmVjNCBURVgwOwpDT01QQVRfVkFSWUlORyB2ZWM0IHQxOwpDT01QQVRfVkFSWUlORyB2ZWM0IHQyOwpDT01QQVRfVkFSWUlORyB2ZWM0IHQzOwpDT01QQVRfVkFSWUlORyB2ZWM0IHQ0OwpDT01QQVRfVkFSWUlORyB2ZWM0IHQ1OwpDT01QQVRfVkFSWUlORyB2ZWM0IHQ2OwoKLy8gY29tcGF0aWJpbGl0eSAjZGVmaW5lcwojZGVmaW5lIFNvdXJjZSBUZXh0dXJlCiNkZWZpbmUgdlRleENvb3JkIFRFWDAueHkKCiNkZWZpbmUgU291cmNlU2l6ZSB2ZWM0KFRleHR1cmVTaXplLCAxLjAgLyBUZXh0dXJlU2l6ZSkgLy9laXRoZXIgVGV4dHVyZVNpemUgb3IgSW5wdXRTaXplCiNkZWZpbmUgT3V0U2l6ZSB2ZWM0KE91dHB1dFNpemUsIDEuMCAvIE91dHB1dFNpemUpCgpmbG9hdCBteCA9IDEuMDsgICAgICAvLyBzdGFydCBzbW9vdGhpbmcgd3QuCmZsb2F0IGsgPSAtMS4xMDsgICAgICAvLyB3dC4gZGVjcmVhc2UgZmFjdG9yCmZsb2F0IG1heF93ID0gMC43NTsgICAgLy8gbWF4IGZpbHRlciB3ZWlnaHQKZmxvYXQgbWluX3cgPSAwLjAzOyAgICAvLyBtaW4gZmlsdGVyIHdlaWdodApmbG9hdCBsdW1fYWRkID0gMC4zMzsgIC8vIGFmZmVjdHMgc21vb3RoaW5nCnZlYzMgZHQgPSB2ZWMzKDEuMCk7Cgp2b2lkIG1haW4oKQp7CiAgIHZlYzMgYyAgPSBDT01QQVRfVEVYVFVSRShTb3VyY2UsIHZUZXhDb29yZCkueHl6OwogICB2ZWMzIGkxID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB0MS54eSkueHl6OyAKICAgdmVjMyBpMiA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgdDIueHkpLnh5ejsgCiAgIHZlYzMgaTMgPSBDT01QQVRfVEVYVFVSRShTb3VyY2UsIHQzLnh5KS54eXo7IAogICB2ZWMzIGk0ID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB0NC54eSkueHl6OyAKICAgdmVjMyBvMSA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgdDUueHkpLnh5ejsgCiAgIHZlYzMgbzMgPSBDT01QQVRfVEVYVFVSRShTb3VyY2UsIHQ2Lnh5KS54eXo7IAogICB2ZWMzIG8yID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB0NS56dykueHl6OwogICB2ZWMzIG80ID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB0Ni56dykueHl6OwogICB2ZWMzIHMxID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB0MS56dykueHl6OyAKICAgdmVjMyBzMiA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgdDIuencpLnh5ejsgCiAgIHZlYzMgczMgPSBDT01QQVRfVEVYVFVSRShTb3VyY2UsIHQzLnp3KS54eXo7IAogICB2ZWMzIHM0ID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB0NC56dykueHl6OyAKCiAgIGZsb2F0IGtvMT1kb3QoYWJzKG8xLWMpLGR0KTsKICAgZmxvYXQga28yPWRvdChhYnMobzItYyksZHQpOwogICBmbG9hdCBrbzM9ZG90KGFicyhvMy1jKSxkdCk7CiAgIGZsb2F0IGtvND1kb3QoYWJzKG80LWMpLGR0KTsKCiAgIGZsb2F0IGsxPW1pbihkb3QoYWJzKGkxLWkzKSxkdCksbWF4KGtvMSxrbzMpKTsKICAgZmxvYXQgazI9bWluKGRvdChhYnMoaTItaTQpLGR0KSxtYXgoa28yLGtvNCkpOwoKICAgZmxvYXQgdzEgPSBrMjsgaWYoa28zPGtvMSkgdzEqPWtvMy9rbzE7CiAgIGZsb2F0IHcyID0gazE7IGlmKGtvNDxrbzIpIHcyKj1rbzQva28yOwogICBmbG9hdCB3MyA9IGsyOyBpZihrbzE8a28zKSB3Myo9a28xL2tvMzsKICAgZmxvYXQgdzQgPSBrMTsgaWYoa28yPGtvNCkgdzQqPWtvMi9rbzQ7CgogICBjPSh3MSpvMSt3MipvMit3MypvMyt3NCpvNCswLjAwMSpjKS8odzErdzIrdzMrdzQrMC4wMDEpOwogICB3MSA9IGsqZG90KGFicyhpMS1jKSthYnMoaTMtYyksZHQpLygwLjEyNSpkb3QoaTEraTMsZHQpK2x1bV9hZGQpOwogICB3MiA9IGsqZG90KGFicyhpMi1jKSthYnMoaTQtYyksZHQpLygwLjEyNSpkb3QoaTIraTQsZHQpK2x1bV9hZGQpOwogICB3MyA9IGsqZG90KGFicyhzMS1jKSthYnMoczMtYyksZHQpLygwLjEyNSpkb3QoczErczMsZHQpK2x1bV9hZGQpOwogICB3NCA9IGsqZG90KGFicyhzMi1jKSthYnMoczQtYyksZHQpLygwLjEyNSpkb3QoczIrczQsZHQpK2x1bV9hZGQpOwoKICAgdzEgPSBjbGFtcCh3MStteCxtaW5fdyxtYXhfdyk7IAogICB3MiA9IGNsYW1wKHcyK214LG1pbl93LG1heF93KTsKICAgdzMgPSBjbGFtcCh3MytteCxtaW5fdyxtYXhfdyk7IAogICB3NCA9IGNsYW1wKHc0K214LG1pbl93LG1heF93KTsKCiAgIEZyYWdDb2xvciA9IHZlYzQoKHcxKihpMStpMykrdzIqKGkyK2k0KSt3MyooczErczMpK3c0KihzMitzNCkrYykvKDIuMCoodzErdzIrdzMrdzQpKzEuMCksIDEuMCk7Cn0gCiNlbmRpZgo="}]},sabr:{shader:{type:"text",value:"shaders = 1\n\nshader0 = sabr-v3.0.glsl\nfilter_linear0 = false\n"},resources:[{name:"sabr-v3.0.glsl",type:"base64",value:"LyoKCVNBQlIgdjMuMCBTaGFkZXIKCUpvc2h1YSBTdHJlZXQKCQoJUG9ydGlvbnMgb2YgdGhpcyBhbGdvcml0aG0gd2VyZSB0YWtlbiBmcm9tIEh5bGxpYW4ncyA1eEJSIHYzLjdjCglzaGFkZXIuCgkKCVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKCW1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCglhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgoJb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgoJVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCglidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgoJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQoJR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCglZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQoJYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKCUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNywgVVNBLgoKKi8KCiNpZiBkZWZpbmVkKFZFUlRFWCkKCiNpZiBfX1ZFUlNJT05fXyA+PSAxMzAKI2RlZmluZSBDT01QQVRfVkFSWUlORyBvdXQKI2RlZmluZSBDT01QQVRfQVRUUklCVVRFIGluCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZQojZWxzZQojZGVmaW5lIENPTVBBVF9WQVJZSU5HIHZhcnlpbmcgCiNkZWZpbmUgQ09NUEFUX0FUVFJJQlVURSBhdHRyaWJ1dGUgCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZTJECiNlbmRpZgoKI2lmZGVmIEdMX0VTCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTiBtZWRpdW1wCiNlbHNlCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTgojZW5kaWYKCkNPTVBBVF9BVFRSSUJVVEUgdmVjNCBWZXJ0ZXhDb29yZDsKQ09NUEFUX0FUVFJJQlVURSB2ZWM0IENPTE9SOwpDT01QQVRfQVRUUklCVVRFIHZlYzQgVGV4Q29vcmQ7CkNPTVBBVF9WQVJZSU5HIHZlYzQgQ09MMDsKQ09NUEFUX1ZBUllJTkcgdmVjNCBURVgwOwoKdW5pZm9ybSBtYXQ0IE1WUE1hdHJpeDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZURpcmVjdGlvbjsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZUNvdW50Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBPdXRwdXRTaXplOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBUZXh0dXJlU2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgSW5wdXRTaXplOwpDT01QQVRfVkFSWUlORyB2ZWMyIHRjOwpDT01QQVRfVkFSWUlORyB2ZWM0IHh5cF8xXzJfMzsKQ09NUEFUX1ZBUllJTkcgdmVjNCB4eXBfNV8xMF8xNTsKQ09NUEFUX1ZBUllJTkcgdmVjNCB4eXBfNl83Xzg7CkNPTVBBVF9WQVJZSU5HIHZlYzQgeHlwXzlfMTRfOTsKQ09NUEFUX1ZBUllJTkcgdmVjNCB4eXBfMTFfMTJfMTM7CkNPTVBBVF9WQVJZSU5HIHZlYzQgeHlwXzE2XzE3XzE4OwpDT01QQVRfVkFSWUlORyB2ZWM0IHh5cF8yMV8yMl8yMzsKCi8vIHZlcnRleCBjb21wYXRpYmlsaXR5ICNkZWZpbmVzCiNkZWZpbmUgdlRleENvb3JkIFRFWDAueHkKI2RlZmluZSBTb3VyY2VTaXplIHZlYzQoVGV4dHVyZVNpemUsIDEuMCAvIFRleHR1cmVTaXplKSAvL2VpdGhlciBUZXh0dXJlU2l6ZSBvciBJbnB1dFNpemUKI2RlZmluZSBvdXRzaXplIHZlYzQoT3V0cHV0U2l6ZSwgMS4wIC8gT3V0cHV0U2l6ZSkKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gTVZQTWF0cml4ICogVmVydGV4Q29vcmQ7CiAgICBDT0wwID0gQ09MT1I7CiAgICBURVgwLnh5ID0gVGV4Q29vcmQueHk7CiAgIAlmbG9hdCB4ID0gU291cmNlU2l6ZS56Oy8vMS4wIC8gSU4udGV4dHVyZV9zaXplLng7CglmbG9hdCB5ID0gU291cmNlU2l6ZS53Oy8vMS4wIC8gSU4udGV4dHVyZV9zaXplLnk7CgkKCXRjID0gVEVYMC54eSAqIHZlYzIoMS4wMDA0LCAxLjApOwoJeHlwXzFfMl8zICAgID0gdGMueHh4eSArIHZlYzQoICAgICAgLXgsIDAuMCwgICB4LCAtMi4wICogeSk7Cgl4eXBfNl83XzggICAgPSB0Yy54eHh5ICsgdmVjNCggICAgICAteCwgMC4wLCAgIHgsICAgICAgIC15KTsKCXh5cF8xMV8xMl8xMyA9IHRjLnh4eHkgKyB2ZWM0KCAgICAgIC14LCAwLjAsICAgeCwgICAgICAwLjApOwoJeHlwXzE2XzE3XzE4ID0gdGMueHh4eSArIHZlYzQoICAgICAgLXgsIDAuMCwgICB4LCAgICAgICAgeSk7Cgl4eXBfMjFfMjJfMjMgPSB0Yy54eHh5ICsgdmVjNCggICAgICAteCwgMC4wLCAgIHgsICAyLjAgKiB5KTsKCXh5cF81XzEwXzE1ICA9IHRjLnh5eXkgKyB2ZWM0KC0yLjAgKiB4LCAgLXksIDAuMCwgICAgICAgIHkpOwoJeHlwXzlfMTRfOSAgID0gdGMueHl5eSArIHZlYzQoIDIuMCAqIHgsICAteSwgMC4wLCAgICAgICAgeSk7Cn0KCiNlbGlmIGRlZmluZWQoRlJBR01FTlQpCgojaWYgX19WRVJTSU9OX18gPj0gMTMwCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgaW4KI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlCm91dCB2ZWM0IEZyYWdDb2xvcjsKI2Vsc2UKI2RlZmluZSBDT01QQVRfVkFSWUlORyB2YXJ5aW5nCiNkZWZpbmUgRnJhZ0NvbG9yIGdsX0ZyYWdDb2xvcgojZGVmaW5lIENPTVBBVF9URVhUVVJFIHRleHR1cmUyRAojZW5kaWYKCiNpZmRlZiBHTF9FUwojaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJR0gKcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwojZWxzZQpwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKI2VuZGlmCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTiBtZWRpdW1wCiNlbHNlCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTgojZW5kaWYKCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVEaXJlY3Rpb247CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVDb3VudDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgT3V0cHV0U2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgVGV4dHVyZVNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIElucHV0U2l6ZTsKdW5pZm9ybSBzYW1wbGVyMkQgVGV4dHVyZTsKQ09NUEFUX1ZBUllJTkcgdmVjNCBURVgwOwpDT01QQVRfVkFSWUlORyB2ZWMyIHRjOwpDT01QQVRfVkFSWUlORyB2ZWM0IHh5cF8xXzJfMzsKQ09NUEFUX1ZBUllJTkcgdmVjNCB4eXBfNV8xMF8xNTsKQ09NUEFUX1ZBUllJTkcgdmVjNCB4eXBfNl83Xzg7CkNPTVBBVF9WQVJZSU5HIHZlYzQgeHlwXzlfMTRfOTsKQ09NUEFUX1ZBUllJTkcgdmVjNCB4eXBfMTFfMTJfMTM7CkNPTVBBVF9WQVJZSU5HIHZlYzQgeHlwXzE2XzE3XzE4OwpDT01QQVRfVkFSWUlORyB2ZWM0IHh5cF8yMV8yMl8yMzsKCi8vIGZyYWdtZW50IGNvbXBhdGliaWxpdHkgI2RlZmluZXMKI2RlZmluZSBTb3VyY2UgVGV4dHVyZQojZGVmaW5lIHZUZXhDb29yZCBURVgwLnh5CgojZGVmaW5lIFNvdXJjZVNpemUgdmVjNChUZXh0dXJlU2l6ZSwgMS4wIC8gVGV4dHVyZVNpemUpIC8vZWl0aGVyIFRleHR1cmVTaXplIG9yIElucHV0U2l6ZQojZGVmaW5lIG91dHNpemUgdmVjNChPdXRwdXRTaXplLCAxLjAgLyBPdXRwdXRTaXplKQoKLyoKCUNvbnN0YW50cwoqLwovKgoJSW5lcXVhdGlvbiBjb2VmZmljaWVudHMgZm9yIGludGVycG9sYXRpb24KRXF1YXRpb25zIGFyZSBpbiB0aGUgZm9ybTogQXkgKyBCeCA9IEMKNDUsIDMwLCBhbmQgNjAgZGVub3RlIHRoZSBhbmdsZSBmcm9tIHggZWFjaCBsaW5lIHRoZSBjb29lZmljaWVudCB2YXJpYWJsZSBzZXQgYnVpbGRzCiovCmNvbnN0IHZlYzQgQWkgID0gdmVjNCggMS4wLCAtMS4wLCAtMS4wLCAgMS4wKTsKY29uc3QgdmVjNCBCNDUgPSB2ZWM0KCAxLjAsICAxLjAsIC0xLjAsIC0xLjApOwpjb25zdCB2ZWM0IEM0NSA9IHZlYzQoIDEuNSwgIDAuNSwgLTAuNSwgIDAuNSk7CmNvbnN0IHZlYzQgQjMwID0gdmVjNCggMC41LCAgMi4wLCAtMC41LCAtMi4wKTsKY29uc3QgdmVjNCBDMzAgPSB2ZWM0KCAxLjAsICAxLjAsIC0wLjUsICAwLjApOwpjb25zdCB2ZWM0IEI2MCA9IHZlYzQoIDIuMCwgIDAuNSwgLTIuMCwgLTAuNSk7CmNvbnN0IHZlYzQgQzYwID0gdmVjNCggMi4wLCAgMC4wLCAtMS4wLCAgMC41KTsKCmNvbnN0IHZlYzQgTTQ1ID0gdmVjNCgwLjQsIDAuNCwgMC40LCAwLjQpOwpjb25zdCB2ZWM0IE0zMCA9IHZlYzQoMC4yLCAwLjQsIDAuMiwgMC40KTsKY29uc3QgdmVjNCBNNjAgPSBNMzAueXh3ejsKY29uc3QgdmVjNCBNc2hpZnQgPSB2ZWM0KDAuMik7CgovLyBDb2VmZmljaWVudCBmb3Igd2VpZ2h0ZWQgZWRnZSBkZXRlY3Rpb24KY29uc3QgZmxvYXQgY29lZiA9IDIuMDsKLy8gVGhyZXNob2xkIGZvciBpZiBsdW1pbmFuY2UgdmFsdWVzIGFyZSAiZXF1YWwiCmNvbnN0IHZlYzQgdGhyZXNob2xkID0gdmVjNCgwLjMyKTsKCi8vIENvbnZlcnNpb24gZnJvbSBSR0IgdG8gTHVtaW5hbmNlIChmcm9tIEdJTVApCmNvbnN0IHZlYzMgbHVtID0gdmVjMygwLjIxLCAwLjcyLCAwLjA3KTsKCi8vIFBlcmZvcm1zIHNhbWUgbG9naWMgb3BlcmF0aW9uIGFzICYmIGZvciB2ZWN0b3JzCmJ2ZWM0IF9hbmRfKGJ2ZWM0IEEsIGJ2ZWM0IEIpIHsKCXJldHVybiBidmVjNChBLnggJiYgQi54LCBBLnkgJiYgQi55LCBBLnogJiYgQi56LCBBLncgJiYgQi53KTsKfQoKLy8gUGVyZm9ybXMgc2FtZSBsb2dpYyBvcGVyYXRpb24gYXMgfHwgZm9yIHZlY3RvcnMKYnZlYzQgX29yXyhidmVjNCBBLCBidmVjNCBCKSB7CglyZXR1cm4gYnZlYzQoQS54IHx8IEIueCwgQS55IHx8IEIueSwgQS56IHx8IEIueiwgQS53IHx8IEIudyk7Cn0KCi8vIENvbnZlcnRzIDQgMy1jb2xvciB2ZWN0b3JzIGludG8gMSA0LXZhbHVlIGx1bWluYW5jZSB2ZWN0b3IKdmVjNCBsdW1fdG8odmVjMyB2MCwgdmVjMyB2MSwgdmVjMyB2MiwgdmVjMyB2MykgewoJcmV0dXJuIHZlYzQoZG90KGx1bSwgdjApLCBkb3QobHVtLCB2MSksIGRvdChsdW0sIHYyKSwgZG90KGx1bSwgdjMpKTsKfQoKLy8gR2V0cyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIDIgNC12YWx1ZSBsdW1pbmFuY2UgdmVjdG9ycwp2ZWM0IGx1bV9kZih2ZWM0IEEsIHZlYzQgQikgewoJcmV0dXJuIGFicyhBIC0gQik7Cn0KCi8vIERldGVybWluZXMgaWYgMiA0LXZhbHVlIGx1bWluYW5jZSB2ZWN0b3JzIGFyZSAiZXF1YWwiIGJhc2VkIG9uIHRocmVzaG9sZApidmVjNCBsdW1fZXEodmVjNCBBLCB2ZWM0IEIpIHsKCXJldHVybiBsZXNzVGhhbihsdW1fZGYoQSwgQiksIHRocmVzaG9sZCk7Cn0KCnZlYzQgbHVtX3dkKHZlYzQgYSwgdmVjNCBiLCB2ZWM0IGMsIHZlYzQgZCwgdmVjNCBlLCB2ZWM0IGYsIHZlYzQgZywgdmVjNCBoKSB7CglyZXR1cm4gbHVtX2RmKGEsIGIpICsgbHVtX2RmKGEsIGMpICsgbHVtX2RmKGQsIGUpICsgbHVtX2RmKGQsIGYpICsgNC4wICogbHVtX2RmKGcsIGgpOwp9CgovLyBHZXRzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gMiAzLXZhbHVlIHJnYiBjb2xvcnMKZmxvYXQgY19kZih2ZWMzIGMxLCB2ZWMzIGMyKSB7Cgl2ZWMzIGRmID0gYWJzKGMxIC0gYzIpOwoJcmV0dXJuIGRmLnIgKyBkZi5nICsgZGYuYjsKfQoKdm9pZCBtYWluKCkKewovKgpNYXNrIGZvciBhbGdvcml0aG0KKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKwp8ICAgICB8ICAxICB8ICAyICB8ICAzICB8ICAgICB8CistLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKfCAgNSAgfCAgNiAgfCAgNyAgfCAgOCAgfCAgOSAgfAorLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCnwgMTAgIHwgMTEgIHwgMTIgIHwgMTMgIHwgMTQgIHwKKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKwp8IDE1ICB8IDE2ICB8IDE3ICB8IDE4ICB8IDE5ICB8CistLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKfCAgICAgfCAyMSAgfCAyMiAgfCAyMyAgfCAgICAgfAorLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCgkqLwoJLy8gR2V0IG1hc2sgdmFsdWVzIGJ5IHBlcmZvcm1pbmcgdGV4dHVyZSBsb29rdXAgd2l0aCB0aGUgdW5pZm9ybSBzYW1wbGVyCgl2ZWMzIFAxICA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgeHlwXzFfMl8zLnh3ICAgKS5yZ2I7Cgl2ZWMzIFAyICA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgeHlwXzFfMl8zLnl3ICAgKS5yZ2I7Cgl2ZWMzIFAzICA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgeHlwXzFfMl8zLnp3ICAgKS5yZ2I7CgkKCXZlYzMgUDYgID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB4eXBfNl83XzgueHcgICApLnJnYjsKCXZlYzMgUDcgID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB4eXBfNl83XzgueXcgICApLnJnYjsKCXZlYzMgUDggID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB4eXBfNl83XzguencgICApLnJnYjsKCQoJdmVjMyBQMTEgPSBDT01QQVRfVEVYVFVSRShTb3VyY2UsIHh5cF8xMV8xMl8xMy54dykucmdiOwoJdmVjMyBQMTIgPSBDT01QQVRfVEVYVFVSRShTb3VyY2UsIHh5cF8xMV8xMl8xMy55dykucmdiOwoJdmVjMyBQMTMgPSBDT01QQVRfVEVYVFVSRShTb3VyY2UsIHh5cF8xMV8xMl8xMy56dykucmdiOwoJCgl2ZWMzIFAxNiA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgeHlwXzE2XzE3XzE4Lnh3KS5yZ2I7Cgl2ZWMzIFAxNyA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgeHlwXzE2XzE3XzE4Lnl3KS5yZ2I7Cgl2ZWMzIFAxOCA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgeHlwXzE2XzE3XzE4Lnp3KS5yZ2I7CgkKCXZlYzMgUDIxID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB4eXBfMjFfMjJfMjMueHcpLnJnYjsKCXZlYzMgUDIyID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB4eXBfMjFfMjJfMjMueXcpLnJnYjsKCXZlYzMgUDIzID0gQ09NUEFUX1RFWFRVUkUoU291cmNlLCB4eXBfMjFfMjJfMjMuencpLnJnYjsKCQoJdmVjMyBQNSAgPSBDT01QQVRfVEVYVFVSRShTb3VyY2UsIHh5cF81XzEwXzE1Lnh5ICkucmdiOwoJdmVjMyBQMTAgPSBDT01QQVRfVEVYVFVSRShTb3VyY2UsIHh5cF81XzEwXzE1Lnh6ICkucmdiOwoJdmVjMyBQMTUgPSBDT01QQVRfVEVYVFVSRShTb3VyY2UsIHh5cF81XzEwXzE1Lnh3ICkucmdiOwoJCgl2ZWMzIFA5ICA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgeHlwXzlfMTRfOS54eSAgKS5yZ2I7Cgl2ZWMzIFAxNCA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgeHlwXzlfMTRfOS54eiAgKS5yZ2I7Cgl2ZWMzIFAxOSA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgeHlwXzlfMTRfOS54dyAgKS5yZ2I7CgkKCS8vIFN0b3JlIGx1bWluYW5jZSB2YWx1ZXMgb2YgZWFjaCBwb2ludCBpbiBncm91cHMgb2YgNAoJLy8gc28gdGhhdCB3ZSBtYXkgb3BlcmF0ZSBvbiBhbGwgZm91ciBjb3JuZXJzIGF0IG9uY2UKCXZlYzQgcDcgID0gbHVtX3RvKFA3LCAgUDExLCBQMTcsIFAxMyk7Cgl2ZWM0IHA4ICA9IGx1bV90byhQOCwgIFA2LCAgUDE2LCBQMTgpOwoJdmVjNCBwMTEgPSBwNy55end4OyAgICAgICAgICAgICAgICAgICAgICAvLyBQMTEsIFAxNywgUDEzLCBQNwoJdmVjNCBwMTIgPSBsdW1fdG8oUDEyLCBQMTIsIFAxMiwgUDEyKTsKCXZlYzQgcDEzID0gcDcud3h5ejsgICAgICAgICAgICAgICAgICAgICAgLy8gUDEzLCBQNywgIFAxMSwgUDE3Cgl2ZWM0IHAxNCA9IGx1bV90byhQMTQsIFAyLCAgUDEwLCBQMjIpOwoJdmVjNCBwMTYgPSBwOC56d3h5OyAgICAgICAgICAgICAgICAgICAgICAvLyBQMTYsIFAxOCwgUDgsICBQNgoJdmVjNCBwMTcgPSBwNy56d3h5OyAgICAgICAgICAgICAgICAgICAgICAvLyBQMTcsIFAxMywgUDcsICBQMTEKCXZlYzQgcDE4ID0gcDgud3h5ejsgICAgICAgICAgICAgICAgICAgICAgLy8gUDE4LCBQOCwgIFA2LCAgUDE2Cgl2ZWM0IHAxOSA9IGx1bV90byhQMTksIFAzLCAgUDUsICBQMjEpOwoJdmVjNCBwMjIgPSBwMTQud3h5ejsgICAgICAgICAgICAgICAgICAgICAvLyBQMjIsIFAxNCwgUDIsICBQMTAKCXZlYzQgcDIzID0gbHVtX3RvKFAyMywgUDksICBQMSwgIFAxNSk7CgkKCS8vIFNjYWxlIGN1cnJlbnQgdGV4ZWwgY29vcmRpbmF0ZSB0byBbMC4uMV0KCXZlYzIgZnAgPSBmcmFjdCh0YyAqIFNvdXJjZVNpemUueHkpOwoJCgkvLyBEZXRlcm1pbmUgYW1vdW50IG9mICJzbW9vdGhpbmciIG9yIG1peGluZyB0aGF0IGNvdWxkIGJlIGRvbmUgb24gdGV4ZWwgY29ybmVycwoJdmVjNCBtYTQ1ID0gc21vb3Roc3RlcChDNDUgLSBNNDUsIEM0NSArIE00NSwgQWkgKiBmcC55ICsgQjQ1ICogZnAueCk7Cgl2ZWM0IG1hMzAgPSBzbW9vdGhzdGVwKEMzMCAtIE0zMCwgQzMwICsgTTMwLCBBaSAqIGZwLnkgKyBCMzAgKiBmcC54KTsKCXZlYzQgbWE2MCA9IHNtb290aHN0ZXAoQzYwIC0gTTYwLCBDNjAgKyBNNjAsIEFpICogZnAueSArIEI2MCAqIGZwLngpOwoJdmVjNCBtYXJuID0gc21vb3Roc3RlcChDNDUgLSBNNDUgKyBNc2hpZnQsIEM0NSArIE00NSArIE1zaGlmdCwgQWkgKiBmcC55ICsgQjQ1ICogZnAueCk7CgkKCS8vIFBlcmZvcm0gZWRnZSB3ZWlnaHQgY2FsY3VsYXRpb25zCgl2ZWM0IGU0NSAgID0gbHVtX3dkKHAxMiwgcDgsIHAxNiwgcDE4LCBwMjIsIHAxNCwgcDE3LCBwMTMpOwoJdmVjNCBlY29udCA9IGx1bV93ZChwMTcsIHAxMSwgcDIzLCBwMTMsIHA3LCBwMTksIHAxMiwgcDE4KTsKCXZlYzQgZTMwICAgPSBsdW1fZGYocDEzLCBwMTYpOwoJdmVjNCBlNjAgICA9IGx1bV9kZihwOCwgcDE3KTsKCQoJLy8gQ2FsY3VsYXRlIHJ1bGUgcmVzdWx0cyBmb3IgaW50ZXJwb2xhdGlvbgoJYnZlYzQgcjQ1XzEgICA9IF9hbmRfKG5vdEVxdWFsKHAxMiwgcDEzKSwgbm90RXF1YWwocDEyLCBwMTcpKTsKCWJ2ZWM0IHI0NV8yICAgPSBfYW5kXyhub3QobHVtX2VxKHAxMywgcDcpKSwgbm90KGx1bV9lcShwMTMsIHA4KSkpOwoJYnZlYzQgcjQ1XzMgICA9IF9hbmRfKG5vdChsdW1fZXEocDE3LCBwMTEpKSwgbm90KGx1bV9lcShwMTcsIHAxNikpKTsKCWJ2ZWM0IHI0NV80XzEgPSBfYW5kXyhub3QobHVtX2VxKHAxMywgcDE0KSksIG5vdChsdW1fZXEocDEzLCBwMTkpKSk7CglidmVjNCByNDVfNF8yID0gX2FuZF8obm90KGx1bV9lcShwMTcsIHAyMikpLCBub3QobHVtX2VxKHAxNywgcDIzKSkpOwoJYnZlYzQgcjQ1XzQgICA9IF9hbmRfKGx1bV9lcShwMTIsIHAxOCksIF9vcl8ocjQ1XzRfMSwgcjQ1XzRfMikpOwoJYnZlYzQgcjQ1XzUgICA9IF9vcl8obHVtX2VxKHAxMiwgcDE2KSwgbHVtX2VxKHAxMiwgcDgpKTsKCWJ2ZWM0IHI0NSAgICAgPSBfYW5kXyhyNDVfMSwgX29yXyhfb3JfKF9vcl8ocjQ1XzIsIHI0NV8zKSwgcjQ1XzQpLCByNDVfNSkpOwoJYnZlYzQgcjMwID0gX2FuZF8obm90RXF1YWwocDEyLCBwMTYpLCBub3RFcXVhbChwMTEsIHAxNikpOwoJYnZlYzQgcjYwID0gX2FuZF8obm90RXF1YWwocDEyLCBwOCksIG5vdEVxdWFsKHA3LCBwOCkpOwoJCgkvLyBDb21iaW5lIHJ1bGVzIHdpdGggZWRnZSB3ZWlnaHRzCglidmVjNCBlZHI0NSA9IF9hbmRfKGxlc3NUaGFuKGU0NSwgZWNvbnQpLCByNDUpOwoJYnZlYzQgZWRycm4gPSBsZXNzVGhhbkVxdWFsKGU0NSwgZWNvbnQpOwoJYnZlYzQgZWRyMzAgPSBfYW5kXyhsZXNzVGhhbkVxdWFsKGNvZWYgKiBlMzAsIGU2MCksIHIzMCk7CglidmVjNCBlZHI2MCA9IF9hbmRfKGxlc3NUaGFuRXF1YWwoY29lZiAqIGU2MCwgZTMwKSwgcjYwKTsKCQoJLy8gRmluYWxpemUgaW50ZXJwb2xhdGlvbiBydWxlcyBhbmQgY2FzdCB0byBmbG9hdCAoMC4wIGZvciBmYWxzZSwgMS4wIGZvciB0cnVlKQoJdmVjNCBmaW5hbDQ1ID0gdmVjNChfYW5kXyhfYW5kXyhub3QoZWRyMzApLCBub3QoZWRyNjApKSwgZWRyNDUpKTsKCXZlYzQgZmluYWwzMCA9IHZlYzQoX2FuZF8oX2FuZF8oZWRyNDUsIG5vdChlZHI2MCkpLCBlZHIzMCkpOwoJdmVjNCBmaW5hbDYwID0gdmVjNChfYW5kXyhfYW5kXyhlZHI0NSwgbm90KGVkcjMwKSksIGVkcjYwKSk7Cgl2ZWM0IGZpbmFsMzYgPSB2ZWM0KF9hbmRfKF9hbmRfKGVkcjYwLCBlZHIzMCksIGVkcjQ1KSk7Cgl2ZWM0IGZpbmFscm4gPSB2ZWM0KF9hbmRfKG5vdChlZHI0NSksIGVkcnJuKSk7CgkKCS8vIERldGVybWluZSB0aGUgY29sb3IgdG8gbWl4IHdpdGggZm9yIGVhY2ggY29ybmVyCgl2ZWM0IHB4ID0gc3RlcChsdW1fZGYocDEyLCBwMTcpLCBsdW1fZGYocDEyLCBwMTMpKTsKCQoJLy8gRGV0ZXJtaW5lIHRoZSBtaXggYW1vdW50cyBieSBjb21iaW5pbmcgdGhlIGZpbmFsIHJ1bGUgcmVzdWx0IGFuZCBjb3JyZXNwb25kaW5nCgkvLyBtaXggYW1vdW50IGZvciB0aGUgcnVsZSBpbiBlYWNoIGNvcm5lcgoJdmVjNCBtYWMgPSBmaW5hbDM2ICogbWF4KG1hMzAsIG1hNjApICsgZmluYWwzMCAqIG1hMzAgKyBmaW5hbDYwICogbWE2MCArIGZpbmFsNDUgKiBtYTQ1ICsgZmluYWxybiAqIG1hcm47CgkKLyoKQ2FsY3VsYXRlIHRoZSByZXN1bHRpbmcgY29sb3IgYnkgdHJhdmVyc2luZyBjbG9ja3dpc2UgYW5kIGNvdW50ZXItY2xvY2t3aXNlIGFyb3VuZAp0aGUgY29ybmVycyBvZiB0aGUgdGV4ZWwKCkZpbmFsbHkgY2hvb3NlIHRoZSByZXN1bHQgdGhhdCBoYXMgdGhlIGxhcmdlc3QgZGlmZmVyZW5jZSBmcm9tIHRoZSB0ZXhlbCdzIG9yaWdpbmFsCmNvbG9yCiovCgl2ZWMzIHJlczEgPSBQMTI7CglyZXMxID0gbWl4KHJlczEsIG1peChQMTMsIFAxNywgcHgueCksIG1hYy54KTsKCXJlczEgPSBtaXgocmVzMSwgbWl4KFA3LCBQMTMsIHB4LnkpLCBtYWMueSk7CglyZXMxID0gbWl4KHJlczEsIG1peChQMTEsIFA3LCBweC56KSwgbWFjLnopOwoJcmVzMSA9IG1peChyZXMxLCBtaXgoUDE3LCBQMTEsIHB4LncpLCBtYWMudyk7CgkKCXZlYzMgcmVzMiA9IFAxMjsKCXJlczIgPSBtaXgocmVzMiwgbWl4KFAxNywgUDExLCBweC53KSwgbWFjLncpOwoJcmVzMiA9IG1peChyZXMyLCBtaXgoUDExLCBQNywgcHgueiksIG1hYy56KTsKCXJlczIgPSBtaXgocmVzMiwgbWl4KFA3LCBQMTMsIHB4LnkpLCBtYWMueSk7CglyZXMyID0gbWl4KHJlczIsIG1peChQMTMsIFAxNywgcHgueCksIG1hYy54KTsKCQoJRnJhZ0NvbG9yID0gdmVjNChtaXgocmVzMSwgcmVzMiwgc3RlcChjX2RmKFAxMiwgcmVzMSksIGNfZGYoUDEyLCByZXMyKSkpLCAxLjApOwp9IAojZW5kaWYK"}]},"crt-aperture.glslp":{shader:{type:"text",value:"shaders = 1\n\nshader0 = crt-aperture.glsl\nfilter_linear0 = false\n"},resources:[{name:"crt-aperture.glsl",type:"base64",value:"LyoKICAgIENSVCBTaGFkZXIgYnkgRWFzeU1vZGUKICAgIExpY2Vuc2U6IEdQTAoqLwoKI3ByYWdtYSBwYXJhbWV0ZXIgU0hBUlBORVNTX0lNQUdFICJTaGFycG5lc3MgSW1hZ2UiIDEuMCAxLjAgNS4wIDEuMAojcHJhZ21hIHBhcmFtZXRlciBTSEFSUE5FU1NfRURHRVMgIlNoYXJwbmVzcyBFZGdlcyIgMy4wIDEuMCA1LjAgMS4wCiNwcmFnbWEgcGFyYW1ldGVyIEdMT1dfV0lEVEggIkdsb3cgV2lkdGgiIDAuNSAwLjA1IDAuNjUgMC4wNQojcHJhZ21hIHBhcmFtZXRlciBHTE9XX0hFSUdIVCAiR2xvdyBIZWlnaHQiIDAuNSAwLjA1IDAuNjUgMC4wNQojcHJhZ21hIHBhcmFtZXRlciBHTE9XX0hBTEFUSU9OICJHbG93IEhhbGF0aW9uIiAwLjEgMC4wIDEuMCAwLjAxCiNwcmFnbWEgcGFyYW1ldGVyIEdMT1dfRElGRlVTSU9OICJHbG93IERpZmZ1c2lvbiIgMC4wNSAwLjAgMS4wIDAuMDEKI3ByYWdtYSBwYXJhbWV0ZXIgTUFTS19DT0xPUlMgIk1hc2sgQ29sb3JzIiAyLjAgMi4wIDMuMCAxLjAKI3ByYWdtYSBwYXJhbWV0ZXIgTUFTS19TVFJFTkdUSCAiTWFzayBTdHJlbmd0aCIgMC4zIDAuMCAxLjAgMC4wNQojcHJhZ21hIHBhcmFtZXRlciBNQVNLX1NJWkUgIk1hc2sgU2l6ZSIgMS4wIDEuMCA5LjAgMS4wCiNwcmFnbWEgcGFyYW1ldGVyIFNDQU5MSU5FX1NJWkVfTUlOICJTY2FubGluZSBTaXplIE1pbi4iIDAuNSAwLjUgMS41IDAuMDUKI3ByYWdtYSBwYXJhbWV0ZXIgU0NBTkxJTkVfU0laRV9NQVggIlNjYW5saW5lIFNpemUgTWF4LiIgMS41IDAuNSAxLjUgMC4wNQojcHJhZ21hIHBhcmFtZXRlciBTQ0FOTElORV9TSEFQRSAiU2NhbmxpbmUgU2hhcGUiIDIuNSAxLjAgMTAwLjAgMC4xCiNwcmFnbWEgcGFyYW1ldGVyIFNDQU5MSU5FX09GRlNFVCAiU2NhbmxpbmUgT2Zmc2V0IiAxLjAgMC4wIDEuMCAxLjAKI3ByYWdtYSBwYXJhbWV0ZXIgR0FNTUFfSU5QVVQgIkdhbW1hIElucHV0IiAyLjQgMS4wIDUuMCAwLjEKI3ByYWdtYSBwYXJhbWV0ZXIgR0FNTUFfT1VUUFVUICJHYW1tYSBPdXRwdXQiIDIuNCAxLjAgNS4wIDAuMQojcHJhZ21hIHBhcmFtZXRlciBCUklHSFRORVNTICJCcmlnaHRuZXNzIiAxLjUgMC4wIDIuMCAwLjA1CgojZGVmaW5lIENvb3JkIFRFWDAKCiNpZiBkZWZpbmVkKFZFUlRFWCkKCiNpZiBfX1ZFUlNJT05fXyA+PSAxMzAKI2RlZmluZSBPVVQgb3V0CiNkZWZpbmUgSU4gIGluCiNkZWZpbmUgdGV4MkQgdGV4dHVyZQojZWxzZQojZGVmaW5lIE9VVCB2YXJ5aW5nIAojZGVmaW5lIElOIGF0dHJpYnV0ZSAKI2RlZmluZSB0ZXgyRCB0ZXh0dXJlMkQKI2VuZGlmCgojaWZkZWYgR0xfRVMKI2RlZmluZSBQUkVDSVNJT04gbWVkaXVtcAojZWxzZQojZGVmaW5lIFBSRUNJU0lPTgojZW5kaWYKCklOICB2ZWM0IFZlcnRleENvb3JkOwpJTiAgdmVjNCBDb2xvcjsKSU4gIHZlYzIgVGV4Q29vcmQ7Ck9VVCB2ZWM0IGNvbG9yOwpPVVQgdmVjMiBDb29yZDsKCnVuaWZvcm0gbWF0NCBNVlBNYXRyaXg7CnVuaWZvcm0gUFJFQ0lTSU9OIGludCBGcmFtZURpcmVjdGlvbjsKdW5pZm9ybSBQUkVDSVNJT04gaW50IEZyYW1lQ291bnQ7CnVuaWZvcm0gUFJFQ0lTSU9OIHZlYzIgT3V0cHV0U2l6ZTsKdW5pZm9ybSBQUkVDSVNJT04gdmVjMiBUZXh0dXJlU2l6ZTsKdW5pZm9ybSBQUkVDSVNJT04gdmVjMiBJbnB1dFNpemU7Cgp2b2lkIG1haW4oKQp7CiAgICBnbF9Qb3NpdGlvbiA9IE1WUE1hdHJpeCAqIFZlcnRleENvb3JkOwogICAgY29sb3IgPSBDb2xvcjsKICAgIENvb3JkID0gVGV4Q29vcmQgKiAxLjAwMDE7Cn0KCiNlbGlmIGRlZmluZWQoRlJBR01FTlQpCgojaWYgX19WRVJTSU9OX18gPj0gMTMwCiNkZWZpbmUgSU4gaW4KI2RlZmluZSB0ZXgyRCB0ZXh0dXJlCm91dCB2ZWM0IEZyYWdDb2xvcjsKI2Vsc2UKI2RlZmluZSBJTiB2YXJ5aW5nCiNkZWZpbmUgRnJhZ0NvbG9yIGdsX0ZyYWdDb2xvcgojZGVmaW5lIHRleDJEIHRleHR1cmUyRAojZW5kaWYKCiNpZmRlZiBHTF9FUwojaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJR0gKcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwojZWxzZQpwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKI2VuZGlmCiNkZWZpbmUgUFJFQ0lTSU9OIG1lZGl1bXAKI2Vsc2UKI2RlZmluZSBQUkVDSVNJT04KI2VuZGlmCgp1bmlmb3JtIFBSRUNJU0lPTiBpbnQgRnJhbWVEaXJlY3Rpb247CnVuaWZvcm0gUFJFQ0lTSU9OIGludCBGcmFtZUNvdW50Owp1bmlmb3JtIFBSRUNJU0lPTiB2ZWMyIE91dHB1dFNpemU7CnVuaWZvcm0gUFJFQ0lTSU9OIHZlYzIgVGV4dHVyZVNpemU7CnVuaWZvcm0gUFJFQ0lTSU9OIHZlYzIgSW5wdXRTaXplOwp1bmlmb3JtIHNhbXBsZXIyRCBUZXh0dXJlOwpJTiB2ZWMyIENvb3JkOwoKI2lmZGVmIFBBUkFNRVRFUl9VTklGT1JNCnVuaWZvcm0gUFJFQ0lTSU9OIGZsb2F0IFNIQVJQTkVTU19JTUFHRTsKdW5pZm9ybSBQUkVDSVNJT04gZmxvYXQgU0hBUlBORVNTX0VER0VTOwp1bmlmb3JtIFBSRUNJU0lPTiBmbG9hdCBHTE9XX1dJRFRIOwp1bmlmb3JtIFBSRUNJU0lPTiBmbG9hdCBHTE9XX0hFSUdIVDsKdW5pZm9ybSBQUkVDSVNJT04gZmxvYXQgR0xPV19IQUxBVElPTjsKdW5pZm9ybSBQUkVDSVNJT04gZmxvYXQgR0xPV19ESUZGVVNJT047CnVuaWZvcm0gUFJFQ0lTSU9OIGZsb2F0IE1BU0tfQ09MT1JTOwp1bmlmb3JtIFBSRUNJU0lPTiBmbG9hdCBNQVNLX1NUUkVOR1RIOwp1bmlmb3JtIFBSRUNJU0lPTiBmbG9hdCBNQVNLX1NJWkU7CnVuaWZvcm0gUFJFQ0lTSU9OIGZsb2F0IFNDQU5MSU5FX1NJWkVfTUlOOwp1bmlmb3JtIFBSRUNJU0lPTiBmbG9hdCBTQ0FOTElORV9TSVpFX01BWDsKdW5pZm9ybSBQUkVDSVNJT04gZmxvYXQgU0NBTkxJTkVfU0hBUEU7CnVuaWZvcm0gUFJFQ0lTSU9OIGZsb2F0IFNDQU5MSU5FX09GRlNFVDsKdW5pZm9ybSBQUkVDSVNJT04gZmxvYXQgR0FNTUFfSU5QVVQ7CnVuaWZvcm0gUFJFQ0lTSU9OIGZsb2F0IEdBTU1BX09VVFBVVDsKdW5pZm9ybSBQUkVDSVNJT04gZmxvYXQgQlJJR0hUTkVTUzsKI2Vsc2UKI2RlZmluZSBTSEFSUE5FU1NfSU1BR0UgMS4wCiNkZWZpbmUgU0hBUlBORVNTX0VER0VTIDMuMAojZGVmaW5lIEdMT1dfV0lEVEggMC41CiNkZWZpbmUgR0xPV19IRUlHSFQgMC41CiNkZWZpbmUgR0xPV19IQUxBVElPTiAwLjEKI2RlZmluZSBHTE9XX0RJRkZVU0lPTiAwLjA1CiNkZWZpbmUgTUFTS19DT0xPUlMgMi4wCiNkZWZpbmUgTUFTS19TVFJFTkdUSCAwLjMKI2RlZmluZSBNQVNLX1NJWkUgMS4wCiNkZWZpbmUgU0NBTkxJTkVfU0laRV9NSU4gMC41CiNkZWZpbmUgU0NBTkxJTkVfU0laRV9NQVggMS41CiNkZWZpbmUgU0NBTkxJTkVfU0hBUEUgMS41CiNkZWZpbmUgU0NBTkxJTkVfT0ZGU0VUIDEuMAojZGVmaW5lIEdBTU1BX0lOUFVUIDIuNAojZGVmaW5lIEdBTU1BX09VVFBVVCAyLjQKI2RlZmluZSBCUklHSFRORVNTIDEuNQojZW5kaWYKCiNkZWZpbmUgRklYKGMpIG1heChhYnMoYyksIDFlLTUpCiNkZWZpbmUgUEkgMy4xNDE1OTI2NTM1ODkKI2RlZmluZSBzYXR1cmF0ZShjKSBjbGFtcChjLCAwLjAsIDEuMCkKI2RlZmluZSBURVgyRChjKSBwb3codGV4MkQodGV4LCBjKS5yZ2IsIHZlYzMoR0FNTUFfSU5QVVQpKQoKbWF0MyBnZXRfY29sb3JfbWF0cml4KHNhbXBsZXIyRCB0ZXgsIHZlYzIgY28sIHZlYzIgZHgpCnsKICAgIHJldHVybiBtYXQzKFRFWDJEKGNvIC0gZHgpLCBURVgyRChjbyksIFRFWDJEKGNvICsgZHgpKTsKfQoKdmVjMyBibHVyKG1hdDMgbSwgZmxvYXQgZGlzdCwgZmxvYXQgcmFkKQp7CiAgICB2ZWMzIHggPSB2ZWMzKGRpc3QgLSAxLjAsIGRpc3QsIGRpc3QgKyAxLjApIC8gcmFkOwogICAgdmVjMyB3ID0gZXhwMih4ICogeCAqIC0xLjApOwoKICAgIHJldHVybiAobVswXSAqIHcueCArIG1bMV0gKiB3LnkgKyBtWzJdICogdy56KSAvICh3LnggKyB3LnkgKyB3LnopOwp9Cgp2ZWMzIGZpbHRlcl9nYXVzc2lhbihzYW1wbGVyMkQgdGV4LCB2ZWMyIGNvLCB2ZWMyIHRleF9zaXplKQp7CiAgICB2ZWMyIGR4ID0gdmVjMigxLjAgLyB0ZXhfc2l6ZS54LCAwLjApOwogICAgdmVjMiBkeSA9IHZlYzIoMC4wLCAxLjAgLyB0ZXhfc2l6ZS55KTsKICAgIHZlYzIgcGl4X2NvID0gY28gKiB0ZXhfc2l6ZTsKICAgIHZlYzIgdGV4X2NvID0gKGZsb29yKHBpeF9jbykgKyAwLjUpIC8gdGV4X3NpemU7CiAgICB2ZWMyIGRpc3QgPSAoZnJhY3QocGl4X2NvKSAtIDAuNSkgKiAtMS4wOwoKICAgIG1hdDMgbGluZTAgPSBnZXRfY29sb3JfbWF0cml4KHRleCwgdGV4X2NvIC0gZHksIGR4KTsKICAgIG1hdDMgbGluZTEgPSBnZXRfY29sb3JfbWF0cml4KHRleCwgdGV4X2NvLCBkeCk7CiAgICBtYXQzIGxpbmUyID0gZ2V0X2NvbG9yX21hdHJpeCh0ZXgsIHRleF9jbyArIGR5LCBkeCk7CiAgICBtYXQzIGNvbHVtbiA9IG1hdDMoYmx1cihsaW5lMCwgZGlzdC54LCBHTE9XX1dJRFRIKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsdXIobGluZTEsIGRpc3QueCwgR0xPV19XSURUSCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHVyKGxpbmUyLCBkaXN0LngsIEdMT1dfV0lEVEgpKTsKCiAgICByZXR1cm4gYmx1cihjb2x1bW4sIGRpc3QueSwgR0xPV19IRUlHSFQpOwp9Cgp2ZWMzIGZpbHRlcl9sYW5jem9zKHNhbXBsZXIyRCB0ZXgsIHZlYzIgY28sIHZlYzIgdGV4X3NpemUsIGZsb2F0IHNoYXJwKQp7CiAgICB0ZXhfc2l6ZS54ICo9IHNoYXJwOwoKICAgIHZlYzIgZHggPSB2ZWMyKDEuMCAvIHRleF9zaXplLngsIDAuMCk7CiAgICB2ZWMyIHBpeF9jbyA9IGNvICogdGV4X3NpemUgLSB2ZWMyKDAuNSwgMC4wKTsKICAgIHZlYzIgdGV4X2NvID0gKGZsb29yKHBpeF9jbykgKyB2ZWMyKDAuNSwgMC4wKSkgLyB0ZXhfc2l6ZTsKICAgIHZlYzIgZGlzdCA9IGZyYWN0KHBpeF9jbyk7CiAgICB2ZWM0IGNvZWYgPSBQSSAqIHZlYzQoZGlzdC54ICsgMS4wLCBkaXN0LngsIGRpc3QueCAtIDEuMCwgZGlzdC54IC0gMi4wKTsKCiAgICBjb2VmID0gRklYKGNvZWYpOwogICAgY29lZiA9IDIuMCAqIHNpbihjb2VmKSAqIHNpbihjb2VmIC8gMi4wKSAvIChjb2VmICogY29lZik7CiAgICBjb2VmIC89IGRvdChjb2VmLCB2ZWM0KDEuMCkpOwoKICAgIHZlYzQgY29sMSA9IHZlYzQoVEVYMkQodGV4X2NvKSwgMS4wKTsKICAgIHZlYzQgY29sMiA9IHZlYzQoVEVYMkQodGV4X2NvICsgZHgpLCAxLjApOwoKICAgIHJldHVybiAobWF0NChjb2wxLCBjb2wxLCBjb2wyLCBjb2wyKSAqIGNvZWYpLnJnYjsKfQoKdmVjMyBnZXRfc2NhbmxpbmVfd2VpZ2h0KGZsb2F0IHgsIHZlYzMgY29sKQp7CiAgICB2ZWMzIGJlYW0gPSBtaXgodmVjMyhTQ0FOTElORV9TSVpFX01JTiksIHZlYzMoU0NBTkxJTkVfU0laRV9NQVgpLCBwb3coY29sLCB2ZWMzKDEuMCAvIFNDQU5MSU5FX1NIQVBFKSkpOwogICAgdmVjMyB4X211bCA9IDIuMCAvIGJlYW07CiAgICB2ZWMzIHhfb2Zmc2V0ID0geF9tdWwgKiAwLjU7CgogICAgcmV0dXJuIHNtb290aHN0ZXAoMC4wLCAxLjAsIDEuMCAtIGFicyh4ICogeF9tdWwgLSB4X29mZnNldCkpICogeF9vZmZzZXQ7Cn0KCnZlYzMgZ2V0X21hc2tfd2VpZ2h0KGZsb2F0IHgpCnsKICAgIGZsb2F0IGkgPSBtb2QoZmxvb3IoeCAqIE91dHB1dFNpemUueCAqIFRleHR1cmVTaXplLnggLyAoSW5wdXRTaXplLnggKiBNQVNLX1NJWkUpKSwgTUFTS19DT0xPUlMpOwoKICAgIGlmIChpID09IDAuMCkgcmV0dXJuIG1peCh2ZWMzKDEuMCwgMC4wLCAxLjApLCB2ZWMzKDEuMCwgMC4wLCAwLjApLCBNQVNLX0NPTE9SUyAtIDIuMCk7CiAgICBlbHNlIGlmIChpID09IDEuMCkgcmV0dXJuIHZlYzMoMC4wLCAxLjAsIDAuMCk7CiAgICBlbHNlIHJldHVybiB2ZWMzKDAuMCwgMC4wLCAxLjApOwp9Cgp2b2lkIG1haW4oKQp7CiAgICBmbG9hdCBzY2FsZSA9IGZsb29yKChPdXRwdXRTaXplLnkgLyBJbnB1dFNpemUueSkgKyAwLjAwMSk7CiAgICBmbG9hdCBvZmZzZXQgPSAxLjAgLyBzY2FsZSAqIDAuNTsKICAgIAogICAgaWYgKGJvb2wobW9kKHNjYWxlLCAyLjApKSkgb2Zmc2V0ID0gMC4wOwogICAgCiAgICB2ZWMyIGNvID0gKENvb3JkICogVGV4dHVyZVNpemUgLSB2ZWMyKDAuMCwgb2Zmc2V0ICogU0NBTkxJTkVfT0ZGU0VUKSkgLyBUZXh0dXJlU2l6ZTsKCiAgICB2ZWMzIGNvbF9nbG93ID0gZmlsdGVyX2dhdXNzaWFuKFRleHR1cmUsIGNvLCBUZXh0dXJlU2l6ZSk7CiAgICB2ZWMzIGNvbF9zb2Z0ID0gZmlsdGVyX2xhbmN6b3MoVGV4dHVyZSwgY28sIFRleHR1cmVTaXplLCBTSEFSUE5FU1NfSU1BR0UpOwogICAgdmVjMyBjb2xfc2hhcnAgPSBmaWx0ZXJfbGFuY3pvcyhUZXh0dXJlLCBjbywgVGV4dHVyZVNpemUsIFNIQVJQTkVTU19FREdFUyk7CiAgICB2ZWMzIGNvbCA9IHNxcnQoY29sX3NoYXJwICogY29sX3NvZnQpOwoKICAgIGNvbCAqPSBnZXRfc2NhbmxpbmVfd2VpZ2h0KGZyYWN0KGNvLnkgKiBUZXh0dXJlU2l6ZS55KSwgY29sX3NvZnQpOwogICAgY29sX2dsb3cgPSBzYXR1cmF0ZShjb2xfZ2xvdyAtIGNvbCk7CiAgICBjb2wgKz0gY29sX2dsb3cgKiBjb2xfZ2xvdyAqIEdMT1dfSEFMQVRJT047CiAgICBjb2wgPSBtaXgoY29sLCBjb2wgKiBnZXRfbWFza193ZWlnaHQoY28ueCkgKiBNQVNLX0NPTE9SUywgTUFTS19TVFJFTkdUSCk7CiAgICBjb2wgKz0gY29sX2dsb3cgKiBHTE9XX0RJRkZVU0lPTjsKICAgIGNvbCA9IHBvdyhjb2wgKiBCUklHSFRORVNTLCB2ZWMzKDEuMCAvIEdBTU1BX09VVFBVVCkpOwoKICAgIEZyYWdDb2xvciA9IHZlYzQoY29sLCAxLjApOwp9CgojZW5kaWYK"}]},"crt-easymode.glslp":{shader:{type:"text",value:"shaders = 1\n\nshader0 = crt-easymode.glsl\nfilter_linear0 = false\n"},resources:[{name:"crt-easymode.glsl",type:"base64",value:"LyoKICAgIENSVCBTaGFkZXIgYnkgRWFzeU1vZGUKICAgIExpY2Vuc2U6IEdQTAoKICAgIEEgZmxhdCBDUlQgc2hhZGVyIGlkZWFsbHkgZm9yIDEwODBwIG9yIGhpZ2hlciBkaXNwbGF5cy4KCiAgICBSZWNvbW1lbmRlZCBTZXR0aW5nczoKCiAgICBWaWRlbwogICAgLSBBc3BlY3QgUmF0aW86ICA0OjMKICAgIC0gSW50ZWdlciBTY2FsZTogT2ZmCgogICAgU2hhZGVyCiAgICAtIEZpbHRlcjogTmVhcmVzdAogICAgLSBTY2FsZTogIERvbid0IENhcmUKCiAgICBFeGFtcGxlIFJHQiBNYXNrIFBhcmFtZXRlciBTZXR0aW5nczoKCiAgICBBcGVydHVyZSBHcmlsbGUgKERlZmF1bHQpCiAgICAtIERvdCBXaWR0aDogIDEKICAgIC0gRG90IEhlaWdodDogMQogICAgLSBTdGFnZ2VyOiAgICAwCgogICAgTG90dGVzJyBTaGFkb3cgTWFzawogICAgLSBEb3QgV2lkdGg6ICAyCiAgICAtIERvdCBIZWlnaHQ6IDEKICAgIC0gU3RhZ2dlcjogICAgMwoqLwoKLy8gUGFyYW1ldGVyIGxpbmVzIGdvIGhlcmU6CiNwcmFnbWEgcGFyYW1ldGVyIFNIQVJQTkVTU19IICJTaGFycG5lc3MgSG9yaXpvbnRhbCIgMC41IDAuMCAxLjAgMC4wNQojcHJhZ21hIHBhcmFtZXRlciBTSEFSUE5FU1NfViAiU2hhcnBuZXNzIFZlcnRpY2FsIiAxLjAgMC4wIDEuMCAwLjA1CiNwcmFnbWEgcGFyYW1ldGVyIE1BU0tfU1RSRU5HVEggIk1hc2sgU3RyZW5ndGgiIDAuMyAwLjAgMS4wIDAuMDEKI3ByYWdtYSBwYXJhbWV0ZXIgTUFTS19ET1RfV0lEVEggIk1hc2sgRG90IFdpZHRoIiAxLjAgMS4wIDEwMC4wIDEuMAojcHJhZ21hIHBhcmFtZXRlciBNQVNLX0RPVF9IRUlHSFQgIk1hc2sgRG90IEhlaWdodCIgMS4wIDEuMCAxMDAuMCAxLjAKI3ByYWdtYSBwYXJhbWV0ZXIgTUFTS19TVEFHR0VSICJNYXNrIFN0YWdnZXIiIDAuMCAwLjAgMTAwLjAgMS4wCiNwcmFnbWEgcGFyYW1ldGVyIE1BU0tfU0laRSAiTWFzayBTaXplIiAxLjAgMS4wIDEwMC4wIDEuMAojcHJhZ21hIHBhcmFtZXRlciBTQ0FOTElORV9TVFJFTkdUSCAiU2NhbmxpbmUgU3RyZW5ndGgiIDEuMCAwLjAgMS4wIDAuMDUKI3ByYWdtYSBwYXJhbWV0ZXIgU0NBTkxJTkVfQkVBTV9XSURUSF9NSU4gIlNjYW5saW5lIEJlYW0gV2lkdGggTWluLiIgMS41IDAuNSA1LjAgMC41CiNwcmFnbWEgcGFyYW1ldGVyIFNDQU5MSU5FX0JFQU1fV0lEVEhfTUFYICJTY2FubGluZSBCZWFtIFdpZHRoIE1heC4iIDEuNSAwLjUgNS4wIDAuNQojcHJhZ21hIHBhcmFtZXRlciBTQ0FOTElORV9CUklHSFRfTUlOICJTY2FubGluZSBCcmlnaHRuZXNzIE1pbi4iIDAuMzUgMC4wIDEuMCAwLjA1CiNwcmFnbWEgcGFyYW1ldGVyIFNDQU5MSU5FX0JSSUdIVF9NQVggIlNjYW5saW5lIEJyaWdodG5lc3MgTWF4LiIgMC42NSAwLjAgMS4wIDAuMDUKI3ByYWdtYSBwYXJhbWV0ZXIgU0NBTkxJTkVfQ1VUT0ZGICJTY2FubGluZSBDdXRvZmYiIDQwMC4wIDEuMCAxMDAwLjAgMS4wCiNwcmFnbWEgcGFyYW1ldGVyIEdBTU1BX0lOUFVUICJHYW1tYSBJbnB1dCIgMi4wIDAuMSA1LjAgMC4xCiNwcmFnbWEgcGFyYW1ldGVyIEdBTU1BX09VVFBVVCAiR2FtbWEgT3V0cHV0IiAxLjggMC4xIDUuMCAwLjEKI3ByYWdtYSBwYXJhbWV0ZXIgQlJJR0hUX0JPT1NUICJCcmlnaHRuZXNzIEJvb3N0IiAxLjIgMS4wIDIuMCAwLjAxCiNwcmFnbWEgcGFyYW1ldGVyIERJTEFUSU9OICJEaWxhdGlvbiIgMS4wIDAuMCAxLjAgMS4wCgojaWYgZGVmaW5lZChWRVJURVgpCgojaWYgX19WRVJTSU9OX18gPj0gMTMwCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgb3V0CiNkZWZpbmUgQ09NUEFUX0FUVFJJQlVURSBpbgojZGVmaW5lIENPTVBBVF9URVhUVVJFIHRleHR1cmUKI2Vsc2UKI2RlZmluZSBDT01QQVRfVkFSWUlORyB2YXJ5aW5nIAojZGVmaW5lIENPTVBBVF9BVFRSSUJVVEUgYXR0cmlidXRlIAojZGVmaW5lIENPTVBBVF9URVhUVVJFIHRleHR1cmUyRAojZW5kaWYKCiNpZmRlZiBHTF9FUwojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04gbWVkaXVtcAojZWxzZQojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04KI2VuZGlmCgpDT01QQVRfQVRUUklCVVRFIHZlYzQgVmVydGV4Q29vcmQ7CkNPTVBBVF9BVFRSSUJVVEUgdmVjNCBDT0xPUjsKQ09NUEFUX0FUVFJJQlVURSB2ZWM0IFRleENvb3JkOwpDT01QQVRfVkFSWUlORyB2ZWM0IENPTDA7CkNPTVBBVF9WQVJZSU5HIHZlYzQgVEVYMDsKCnZlYzQgX29Qb3NpdGlvbjE7IAp1bmlmb3JtIG1hdDQgTVZQTWF0cml4Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lRGlyZWN0aW9uOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lQ291bnQ7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIE91dHB1dFNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIFRleHR1cmVTaXplOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBJbnB1dFNpemU7Cgp2b2lkIG1haW4oKQp7CiAgICBnbF9Qb3NpdGlvbiA9IE1WUE1hdHJpeCAqIFZlcnRleENvb3JkOwogICAgQ09MMCA9IENPTE9SOwogICAgVEVYMC54eSA9IFRleENvb3JkLnh5Owp9CgojZWxpZiBkZWZpbmVkKEZSQUdNRU5UKQoKI2lmIF9fVkVSU0lPTl9fID49IDEzMAojZGVmaW5lIENPTVBBVF9WQVJZSU5HIGluCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZQpvdXQgdmVjNCBGcmFnQ29sb3I7CiNlbHNlCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgdmFyeWluZwojZGVmaW5lIEZyYWdDb2xvciBnbF9GcmFnQ29sb3IKI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlMkQKI2VuZGlmCgojaWZkZWYgR0xfRVMKI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdICnByZWNpc2lvbiBoaWdocCBmbG9hdDsKI2Vsc2UKcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CnByZWNpc2lvbiBtZWRpdW1wIGludDsKI2VuZGlmCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTiBtZWRpdW1wCiNlbHNlCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTgojZW5kaWYKCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVEaXJlY3Rpb247CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVDb3VudDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgT3V0cHV0U2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgVGV4dHVyZVNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIElucHV0U2l6ZTsKdW5pZm9ybSBzYW1wbGVyMkQgVGV4dHVyZTsKQ09NUEFUX1ZBUllJTkcgdmVjNCBURVgwOwoKI2RlZmluZSBGSVgoYykgbWF4KGFicyhjKSwgMWUtNSkKI2RlZmluZSBQSSAzLjE0MTU5MjY1MzU4OQoKI2RlZmluZSBURVgyRChjKSBkaWxhdGUoQ09NUEFUX1RFWFRVUkUoVGV4dHVyZSwgYykpCgovLyBjb21wYXRpYmlsaXR5ICNkZWZpbmVzCiNkZWZpbmUgU291cmNlIFRleHR1cmUKI2RlZmluZSB2VGV4Q29vcmQgVEVYMC54eQoKI2RlZmluZSBTb3VyY2VTaXplIHZlYzQoVGV4dHVyZVNpemUsIDEuMCAvIFRleHR1cmVTaXplKSAvL2VpdGhlciBUZXh0dXJlU2l6ZSBvciBJbnB1dFNpemUKI2RlZmluZSBvdXRzaXplIHZlYzQoT3V0cHV0U2l6ZSwgMS4wIC8gT3V0cHV0U2l6ZSkKCiNpZmRlZiBQQVJBTUVURVJfVU5JRk9STQovLyBBbGwgcGFyYW1ldGVyIGZsb2F0cyBuZWVkIHRvIGhhdmUgQ09NUEFUX1BSRUNJU0lPTiBpbiBmcm9udCBvZiB0aGVtCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBTSEFSUE5FU1NfSDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IFNIQVJQTkVTU19WOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgTUFTS19TVFJFTkdUSDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IE1BU0tfRE9UX1dJRFRIOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgTUFTS19ET1RfSEVJR0hUOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgTUFTS19TVEFHR0VSOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgTUFTS19TSVpFOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgU0NBTkxJTkVfU1RSRU5HVEg7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBTQ0FOTElORV9CRUFNX1dJRFRIX01JTjsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IFNDQU5MSU5FX0JFQU1fV0lEVEhfTUFYOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgU0NBTkxJTkVfQlJJR0hUX01JTjsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IFNDQU5MSU5FX0JSSUdIVF9NQVg7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBTQ0FOTElORV9DVVRPRkY7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBHQU1NQV9JTlBVVDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IEdBTU1BX09VVFBVVDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IEJSSUdIVF9CT09TVDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IERJTEFUSU9OOwojZWxzZQojZGVmaW5lIFNIQVJQTkVTU19IIDAuNQojZGVmaW5lIFNIQVJQTkVTU19WIDEuMAojZGVmaW5lIE1BU0tfU1RSRU5HVEggMC4zCiNkZWZpbmUgTUFTS19ET1RfV0lEVEggMS4wCiNkZWZpbmUgTUFTS19ET1RfSEVJR0hUIDEuMAojZGVmaW5lIE1BU0tfU1RBR0dFUiAwLjAKI2RlZmluZSBNQVNLX1NJWkUgMS4wCiNkZWZpbmUgU0NBTkxJTkVfU1RSRU5HVEggMS4wCiNkZWZpbmUgU0NBTkxJTkVfQkVBTV9XSURUSF9NSU4gMS41CiNkZWZpbmUgU0NBTkxJTkVfQkVBTV9XSURUSF9NQVggMS41CiNkZWZpbmUgU0NBTkxJTkVfQlJJR0hUX01JTiAwLjM1CiNkZWZpbmUgU0NBTkxJTkVfQlJJR0hUX01BWCAwLjY1CiNkZWZpbmUgU0NBTkxJTkVfQ1VUT0ZGIDQwMC4wCiNkZWZpbmUgR0FNTUFfSU5QVVQgMi4wCiNkZWZpbmUgR0FNTUFfT1VUUFVUIDEuOAojZGVmaW5lIEJSSUdIVF9CT09TVCAxLjIKI2RlZmluZSBESUxBVElPTiAxLjAKI2VuZGlmCgovLyBTZXQgdG8gMCB0byB1c2UgbGluZWFyIGZpbHRlciBhbmQgZ2FpbiBzcGVlZAojZGVmaW5lIEVOQUJMRV9MQU5DWk9TIDEKCnZlYzQgZGlsYXRlKHZlYzQgY29sKQp7CiAgICB2ZWM0IHggPSBtaXgodmVjNCgxLjApLCBjb2wsIERJTEFUSU9OKTsKCiAgICByZXR1cm4gY29sICogeDsKfQoKZmxvYXQgY3VydmVfZGlzdGFuY2UoZmxvYXQgeCwgZmxvYXQgc2hhcnApCnsKCi8qCiAgICBhcHBseSBoYWxmLWNpcmNsZSBzLWN1cnZlIHRvIGRpc3RhbmNlIGZvciBzaGFycGVyIChtb3JlIHBpeGVsYXRlZCkgaW50ZXJwb2xhdGlvbgogICAgc2luZ2xlIGxpbmUgZm9ybXVsYSBmb3IgR3JhcGggVG95OgogICAgMC41IC0gc3FydCgwLjI1IC0gKHggLSBzdGVwKDAuNSwgeCkpICogKHggLSBzdGVwKDAuNSwgeCkpKSAqIHNpZ24oMC41IC0geCkKKi8KCiAgICBmbG9hdCB4X3N0ZXAgPSBzdGVwKDAuNSwgeCk7CiAgICBmbG9hdCBjdXJ2ZSA9IDAuNSAtIHNxcnQoMC4yNSAtICh4IC0geF9zdGVwKSAqICh4IC0geF9zdGVwKSkgKiBzaWduKDAuNSAtIHgpOwoKICAgIHJldHVybiBtaXgoeCwgY3VydmUsIHNoYXJwKTsKfQoKbWF0NCBnZXRfY29sb3JfbWF0cml4KHZlYzIgY28sIHZlYzIgZHgpCnsKICAgIHJldHVybiBtYXQ0KFRFWDJEKGNvIC0gZHgpLCBURVgyRChjbyksIFRFWDJEKGNvICsgZHgpLCBURVgyRChjbyArIDIuMCAqIGR4KSk7Cn0KCnZlYzMgZmlsdGVyX2xhbmN6b3ModmVjNCBjb2VmZnMsIG1hdDQgY29sb3JfbWF0cml4KQp7CiAgICB2ZWM0IGNvbCAgICAgICAgPSBjb2xvcl9tYXRyaXggKiBjb2VmZnM7CiAgICB2ZWM0IHNhbXBsZV9taW4gPSBtaW4oY29sb3JfbWF0cml4WzFdLCBjb2xvcl9tYXRyaXhbMl0pOwogICAgdmVjNCBzYW1wbGVfbWF4ID0gbWF4KGNvbG9yX21hdHJpeFsxXSwgY29sb3JfbWF0cml4WzJdKTsKCiAgICBjb2wgPSBjbGFtcChjb2wsIHNhbXBsZV9taW4sIHNhbXBsZV9tYXgpOwoKICAgIHJldHVybiBjb2wucmdiOwp9Cgp2b2lkIG1haW4oKQp7CiAgICB2ZWMyIGR4ICAgICA9IHZlYzIoU291cmNlU2l6ZS56LCAwLjApOwogICAgdmVjMiBkeSAgICAgPSB2ZWMyKDAuMCwgU291cmNlU2l6ZS53KTsKICAgIHZlYzIgcGl4X2NvID0gdlRleENvb3JkICogU291cmNlU2l6ZS54eSAtIHZlYzIoMC41LCAwLjUpOwogICAgdmVjMiB0ZXhfY28gPSAoZmxvb3IocGl4X2NvKSArIHZlYzIoMC41LCAwLjUpKSAqIFNvdXJjZVNpemUuenc7CiAgICB2ZWMyIGRpc3QgICA9IGZyYWN0KHBpeF9jbyk7CiAgICBmbG9hdCBjdXJ2ZV94OwogICAgdmVjMyBjb2wsIGNvbDI7CgojaWYgRU5BQkxFX0xBTkNaT1MKICAgIGN1cnZlX3ggPSBjdXJ2ZV9kaXN0YW5jZShkaXN0LngsIFNIQVJQTkVTU19IICogU0hBUlBORVNTX0gpOwoKICAgIHZlYzQgY29lZmZzID0gUEkgKiB2ZWM0KDEuMCArIGN1cnZlX3gsIGN1cnZlX3gsIDEuMCAtIGN1cnZlX3gsIDIuMCAtIGN1cnZlX3gpOwoKICAgIGNvZWZmcyA9IEZJWChjb2VmZnMpOwogICAgY29lZmZzID0gMi4wICogc2luKGNvZWZmcykgKiBzaW4oY29lZmZzICogMC41KSAvIChjb2VmZnMgKiBjb2VmZnMpOwogICAgY29lZmZzIC89IGRvdChjb2VmZnMsIHZlYzQoMS4wKSk7CgogICAgY29sICA9IGZpbHRlcl9sYW5jem9zKGNvZWZmcywgZ2V0X2NvbG9yX21hdHJpeCh0ZXhfY28sIGR4KSk7CiAgICBjb2wyID0gZmlsdGVyX2xhbmN6b3MoY29lZmZzLCBnZXRfY29sb3JfbWF0cml4KHRleF9jbyArIGR5LCBkeCkpOwojZWxzZQogICAgY3VydmVfeCA9IGN1cnZlX2Rpc3RhbmNlKGRpc3QueCwgU0hBUlBORVNTX0gpOwoKICAgIGNvbCAgPSBtaXgoVEVYMkQodGV4X2NvKS5yZ2IsICAgICAgVEVYMkQodGV4X2NvICsgZHgpLnJnYiwgICAgICBjdXJ2ZV94KTsKICAgIGNvbDIgPSBtaXgoVEVYMkQodGV4X2NvICsgZHkpLnJnYiwgVEVYMkQodGV4X2NvICsgZHggKyBkeSkucmdiLCBjdXJ2ZV94KTsKI2VuZGlmCgogICAgY29sID0gbWl4KGNvbCwgY29sMiwgY3VydmVfZGlzdGFuY2UoZGlzdC55LCBTSEFSUE5FU1NfVikpOwogICAgY29sID0gcG93KGNvbCwgdmVjMyhHQU1NQV9JTlBVVCAvIChESUxBVElPTiArIDEuMCkpKTsKCiAgICBmbG9hdCBsdW1hICAgICAgICA9IGRvdCh2ZWMzKDAuMjEyNiwgMC43MTUyLCAwLjA3MjIpLCBjb2wpOwogICAgZmxvYXQgYnJpZ2h0ICAgICAgPSAobWF4KGNvbC5yLCBtYXgoY29sLmcsIGNvbC5iKSkgKyBsdW1hKSAqIDAuNTsKICAgIGZsb2F0IHNjYW5fYnJpZ2h0ID0gY2xhbXAoYnJpZ2h0LCBTQ0FOTElORV9CUklHSFRfTUlOLCBTQ0FOTElORV9CUklHSFRfTUFYKTsKICAgIGZsb2F0IHNjYW5fYmVhbSAgID0gY2xhbXAoYnJpZ2h0ICogU0NBTkxJTkVfQkVBTV9XSURUSF9NQVgsIFNDQU5MSU5FX0JFQU1fV0lEVEhfTUlOLCBTQ0FOTElORV9CRUFNX1dJRFRIX01BWCk7CiAgICBmbG9hdCBzY2FuX3dlaWdodCA9IDEuMCAtIHBvdyhjb3ModlRleENvb3JkLnkgKiAyLjAgKiBQSSAqIFNvdXJjZVNpemUueSkgKiAwLjUgKyAwLjUsIHNjYW5fYmVhbSkgKiBTQ0FOTElORV9TVFJFTkdUSDsKCiAgICBmbG9hdCBtYXNrICAgPSAxLjAgLSBNQVNLX1NUUkVOR1RIOyAgICAKICAgIHZlYzIgbW9kX2ZhYyA9IGZsb29yKHZUZXhDb29yZCAqIG91dHNpemUueHkgKiBTb3VyY2VTaXplLnh5IC8gKElucHV0U2l6ZS54eSAqIHZlYzIoTUFTS19TSVpFLCBNQVNLX0RPVF9IRUlHSFQgKiBNQVNLX1NJWkUpKSk7CiAgICBpbnQgZG90X25vICAgPSBpbnQobW9kKChtb2RfZmFjLnggKyBtb2QobW9kX2ZhYy55LCAyLjApICogTUFTS19TVEFHR0VSKSAvIE1BU0tfRE9UX1dJRFRILCAzLjApKTsKICAgIHZlYzMgbWFza193ZWlnaHQ7CgogICAgaWYgICAgICAoZG90X25vID09IDApIG1hc2tfd2VpZ2h0ID0gdmVjMygxLjAsICBtYXNrLCBtYXNrKTsKICAgIGVsc2UgaWYgKGRvdF9ubyA9PSAxKSBtYXNrX3dlaWdodCA9IHZlYzMobWFzaywgMS4wLCAgbWFzayk7CiAgICBlbHNlICAgICAgICAgICAgICAgICAgbWFza193ZWlnaHQgPSB2ZWMzKG1hc2ssIG1hc2ssIDEuMCk7CgogICAgaWYgKElucHV0U2l6ZS55ID49IFNDQU5MSU5FX0NVVE9GRikgCiAgICAgICAgc2Nhbl93ZWlnaHQgPSAxLjA7CgogICAgY29sMiA9IGNvbC5yZ2I7CiAgICBjb2wgKj0gdmVjMyhzY2FuX3dlaWdodCk7CiAgICBjb2wgID0gbWl4KGNvbCwgY29sMiwgc2Nhbl9icmlnaHQpOwogICAgY29sICo9IG1hc2tfd2VpZ2h0OwogICAgY29sICA9IHBvdyhjb2wsIHZlYzMoMS4wIC8gR0FNTUFfT1VUUFVUKSk7CgogICAgRnJhZ0NvbG9yID0gdmVjNChjb2wgKiBCUklHSFRfQk9PU1QsIDEuMCk7Cn0gCiNlbmRpZgo="}]},"crt-geom.glslp":{shader:{type:"text",value:"shaders = 1\n\nshader0 = crt-geom.glsl\nfilter_linear0 = false\n"},resources:[{name:"crt-geom.glsl",type:"base64",value:"LyoKICAgIENSVC1pbnRlcmxhY2VkCgogICAgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIgY2d3ZywgVGhlbWFpc3RlciBhbmQgRE9MTFMKCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAogICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKICAgIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikKICAgIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIChjZ3dnIGdhdmUgdGhlaXIgY29uc2VudCB0byBoYXZlIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoaXMgc2hhZGVyCiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgR1BMIGluIHRoaXMgbWVzc2FnZToKCiAgICAgICAgaHR0cDovL2JvYXJkLmJ5dXUub3JnL3ZpZXd0b3BpYy5waHA/cD0yNjA3NSNwMjYwNzUKCiAgICAgICAgIkZlZWwgZnJlZSB0byBkaXN0cmlidXRlIG15IHNoYWRlcnMgdW5kZXIgdGhlIEdQTC4gQWZ0ZXIgYWxsLCB0aGUKICAgICAgICBiYXJyZWwgZGlzdG9ydGlvbiBjb2RlIHdhcyB0YWtlbiBmcm9tIHRoZSBDdXJ2YXR1cmUgc2hhZGVyLCB3aGljaCBpcwogICAgICAgIHVuZGVyIHRoZSBHUEwuIgogICAgKQoJVGhpcyBzaGFkZXIgdmFyaWFudCBpcyBwcmUtY29uZmlndXJlZCB3aXRoIHNjcmVlbiBjdXJ2YXR1cmUKKi8KCiNwcmFnbWEgcGFyYW1ldGVyIENSVGdhbW1hICJDUlRHZW9tIFRhcmdldCBHYW1tYSIgMi40IDAuMSA1LjAgMC4xCiNwcmFnbWEgcGFyYW1ldGVyIElOViAiSW52ZXJzZSBHYW1tYS9DUlQtR2VvbSBHYW1tYSBvdXQiIDEuMCAwLjAgMS4wIDEuMAojcHJhZ21hIHBhcmFtZXRlciBtb25pdG9yZ2FtbWEgIkNSVEdlb20gTW9uaXRvciBHYW1tYSIgMi4yIDAuMSA1LjAgMC4xCiNwcmFnbWEgcGFyYW1ldGVyIGQgIkNSVEdlb20gRGlzdGFuY2UiIDEuNiAwLjEgMy4wIDAuMQojcHJhZ21hIHBhcmFtZXRlciBDVVJWQVRVUkUgIkNSVEdlb20gQ3VydmF0dXJlIFRvZ2dsZSIgMS4wIDAuMCAxLjAgMS4wCiNwcmFnbWEgcGFyYW1ldGVyIFIgIkNSVEdlb20gQ3VydmF0dXJlIFJhZGl1cyIgMi4wIDAuMSAxMC4wIDAuMQojcHJhZ21hIHBhcmFtZXRlciBjb3JuZXJzaXplICJDUlRHZW9tIENvcm5lciBTaXplIiAwLjAzIDAuMDAxIDEuMCAwLjAwNQojcHJhZ21hIHBhcmFtZXRlciBjb3JuZXJzbW9vdGggIkNSVEdlb20gQ29ybmVyIFNtb290aG5lc3MiIDEwMDAuMCA4MC4wIDIwMDAuMCAxMDAuMAojcHJhZ21hIHBhcmFtZXRlciB4X3RpbHQgIkNSVEdlb20gSG9yaXpvbnRhbCBUaWx0IiAwLjAgLTAuNSAwLjUgMC4wNQojcHJhZ21hIHBhcmFtZXRlciB5X3RpbHQgIkNSVEdlb20gVmVydGljYWwgVGlsdCIgMC4wIC0wLjUgMC41IDAuMDUKI3ByYWdtYSBwYXJhbWV0ZXIgb3ZlcnNjYW5feCAiQ1JUR2VvbSBIb3Jpei4gT3ZlcnNjYW4gJSIgMTAwLjAgLTEyNS4wIDEyNS4wIDEuMAojcHJhZ21hIHBhcmFtZXRlciBvdmVyc2Nhbl95ICJDUlRHZW9tIFZlcnQuIE92ZXJzY2FuICUiIDEwMC4wIC0xMjUuMCAxMjUuMCAxLjAKI3ByYWdtYSBwYXJhbWV0ZXIgRE9UTUFTSyAiQ1JUR2VvbSBEb3QgTWFzayBTdHJlbmd0aCIgMC4zIDAuMCAxLjAgMC4xCiNwcmFnbWEgcGFyYW1ldGVyIFNIQVJQRVIgIkNSVEdlb20gU2hhcnBuZXNzIiAxLjAgMS4wIDMuMCAxLjAKI3ByYWdtYSBwYXJhbWV0ZXIgc2NhbmxpbmVfd2VpZ2h0ICJDUlRHZW9tIFNjYW5saW5lIFdlaWdodCIgMC4zIDAuMSAwLjUgMC4wNQojcHJhZ21hIHBhcmFtZXRlciBsdW0gIkNSVEdlb20gTHVtaW5hbmNlIiAwLjAgMC4wIDEuMCAwLjAxCiNwcmFnbWEgcGFyYW1ldGVyIGludGVybGFjZV9kZXRlY3QgIkNSVEdlb20gSW50ZXJsYWNpbmcgU2ltdWxhdGlvbiIgMS4wIDAuMCAxLjAgMS4wCiNwcmFnbWEgcGFyYW1ldGVyIFNBVFVSQVRJT04gIkNSVEdlb20gU2F0dXJhdGlvbiIgMS4wIDAuMCAyLjAgMC4wNQoKI2lmbmRlZiBQQVJBTUVURVJfVU5JRk9STQojZGVmaW5lIENSVGdhbW1hIDIuNAojZGVmaW5lIG1vbml0b3JnYW1tYSAyLjIKI2RlZmluZSBkIDEuNgojZGVmaW5lIENVUlZBVFVSRSAxLjAKI2RlZmluZSBSIDIuMAojZGVmaW5lIGNvcm5lcnNpemUgMC4wMwojZGVmaW5lIGNvcm5lcnNtb290aCAxMDAwLjAKI2RlZmluZSB4X3RpbHQgMC4wCiNkZWZpbmUgeV90aWx0IDAuMAojZGVmaW5lIG92ZXJzY2FuX3ggMTAwLjAKI2RlZmluZSBvdmVyc2Nhbl95IDEwMC4wCiNkZWZpbmUgRE9UTUFTSyAwLjMKI2RlZmluZSBTSEFSUEVSIDEuMAojZGVmaW5lIHNjYW5saW5lX3dlaWdodCAwLjMKI2RlZmluZSBsdW0gMC4wCiNkZWZpbmUgaW50ZXJsYWNlX2RldGVjdCAxLjAKI2RlZmluZSBTQVRVUkFUSU9OIDEuMAojZGVmaW5lIElOViAxLjAKI2VuZGlmCgojaWYgZGVmaW5lZChWRVJURVgpCgojaWYgX19WRVJTSU9OX18gPj0gMTMwCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgb3V0CiNkZWZpbmUgQ09NUEFUX0FUVFJJQlVURSBpbgojZGVmaW5lIENPTVBBVF9URVhUVVJFIHRleHR1cmUKI2Vsc2UKI2RlZmluZSBDT01QQVRfVkFSWUlORyB2YXJ5aW5nIAojZGVmaW5lIENPTVBBVF9BVFRSSUJVVEUgYXR0cmlidXRlIAojZGVmaW5lIENPTVBBVF9URVhUVVJFIHRleHR1cmUyRAojZW5kaWYKCiNpZmRlZiBHTF9FUwojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04gbWVkaXVtcAojZWxzZQojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04KI2VuZGlmCgpDT01QQVRfQVRUUklCVVRFIHZlYzQgVmVydGV4Q29vcmQ7CkNPTVBBVF9BVFRSSUJVVEUgdmVjNCBDT0xPUjsKQ09NUEFUX0FUVFJJQlVURSB2ZWM0IFRleENvb3JkOwpDT01QQVRfVkFSWUlORyB2ZWM0IENPTDA7CkNPTVBBVF9WQVJZSU5HIHZlYzQgVEVYMDsKCnZlYzQgX29Qb3NpdGlvbjE7IAp1bmlmb3JtIG1hdDQgTVZQTWF0cml4Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lRGlyZWN0aW9uOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lQ291bnQ7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIE91dHB1dFNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIFRleHR1cmVTaXplOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBJbnB1dFNpemU7CgpDT01QQVRfVkFSWUlORyB2ZWMyIG92ZXJzY2FuOwpDT01QQVRfVkFSWUlORyB2ZWMyIGFzcGVjdDsKQ09NUEFUX1ZBUllJTkcgdmVjMyBzdHJldGNoOwpDT01QQVRfVkFSWUlORyB2ZWMyIHNpbmFuZ2xlOwpDT01QQVRfVkFSWUlORyB2ZWMyIGNvc2FuZ2xlOwpDT01QQVRfVkFSWUlORyB2ZWMyIG9uZTsKQ09NUEFUX1ZBUllJTkcgZmxvYXQgbW9kX2ZhY3RvcjsKQ09NUEFUX1ZBUllJTkcgdmVjMiBpbGZhYzsKCiNpZmRlZiBQQVJBTUVURVJfVU5JRk9STQp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgQ1JUZ2FtbWE7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBtb25pdG9yZ2FtbWE7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBkOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgQ1VSVkFUVVJFOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgUjsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IGNvcm5lcnNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBjb3JuZXJzbW9vdGg7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCB4X3RpbHQ7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCB5X3RpbHQ7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBvdmVyc2Nhbl94Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgb3ZlcnNjYW5feTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IERPVE1BU0s7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBTSEFSUEVSOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgc2NhbmxpbmVfd2VpZ2h0Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgbHVtOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgaW50ZXJsYWNlX2RldGVjdDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IFNBVFVSQVRJT047CiNlbmRpZgoKI2RlZmluZSBGSVgoYykgbWF4KGFicyhjKSwgMWUtNSk7CgpmbG9hdCBpbnRlcnNlY3QodmVjMiB4eSkKICAgICAgICB7CglmbG9hdCBBID0gZG90KHh5LHh5KStkKmQ7CglmbG9hdCBCID0gMi4wKihSKihkb3QoeHksc2luYW5nbGUpLWQqY29zYW5nbGUueCpjb3NhbmdsZS55KS1kKmQpOwoJZmxvYXQgQyA9IGQqZCArIDIuMCpSKmQqY29zYW5nbGUueCpjb3NhbmdsZS55OwoJcmV0dXJuICgtQi1zcXJ0KEIqQi00LjAqQSpDKSkvKDIuMCpBKTsKICAgICAgICB9Cgp2ZWMyIGJrd3RyYW5zKHZlYzIgeHkpCiAgICAgICAgewoJZmxvYXQgYyA9IGludGVyc2VjdCh4eSk7Cgl2ZWMyIHBvaW50ID0gdmVjMihjKSp4eTsKCXBvaW50IC09IHZlYzIoLVIpKnNpbmFuZ2xlOwoJcG9pbnQgLz0gdmVjMihSKTsKCXZlYzIgdGFuZyA9IHNpbmFuZ2xlL2Nvc2FuZ2xlOwoJdmVjMiBwb2MgPSBwb2ludC9jb3NhbmdsZTsKCWZsb2F0IEEgPSBkb3QodGFuZyx0YW5nKSsxLjA7CglmbG9hdCBCID0gLTIuMCpkb3QocG9jLHRhbmcpOwoJZmxvYXQgQyA9IGRvdChwb2MscG9jKS0xLjA7CglmbG9hdCBhID0gKC1CK3NxcnQoQipCLTQuMCpBKkMpKS8oMi4wKkEpOwoJdmVjMiB1diA9IChwb2ludC1hKnNpbmFuZ2xlKS9jb3NhbmdsZTsKCWZsb2F0IHIgPSBSKmFjb3MoYSk7CglyZXR1cm4gdXYqci9zaW4oci9SKTsKICAgICAgICB9Cgp2ZWMyIGZ3dHJhbnModmVjMiB1dikKICAgICAgICB7CglmbG9hdCByID0gRklYKHNxcnQoZG90KHV2LHV2KSkpOwoJdXYgKj0gc2luKHIvUikvcjsKCWZsb2F0IHggPSAxLjAtY29zKHIvUik7CglmbG9hdCBEID0gZC9SICsgeCpjb3NhbmdsZS54KmNvc2FuZ2xlLnkrZG90KHV2LHNpbmFuZ2xlKTsKCXJldHVybiBkKih1dipjb3NhbmdsZS14KnNpbmFuZ2xlKS9EOwogICAgICAgIH0KCnZlYzMgbWF4c2NhbGUoKQogICAgICAgIHsKCXZlYzIgYyA9IGJrd3RyYW5zKC1SICogc2luYW5nbGUgLyAoMS4wICsgUi9kKmNvc2FuZ2xlLngqY29zYW5nbGUueSkpOwoJdmVjMiBhID0gdmVjMigwLjUsMC41KSphc3BlY3Q7Cgl2ZWMyIGxvID0gdmVjMihmd3RyYW5zKHZlYzIoLWEueCxjLnkpKS54LCBmd3RyYW5zKHZlYzIoYy54LC1hLnkpKS55KS9hc3BlY3Q7Cgl2ZWMyIGhpID0gdmVjMihmd3RyYW5zKHZlYzIoK2EueCxjLnkpKS54LCBmd3RyYW5zKHZlYzIoYy54LCthLnkpKS55KS9hc3BlY3Q7CglyZXR1cm4gdmVjMygoaGkrbG8pKmFzcGVjdCowLjUsbWF4KGhpLngtbG8ueCxoaS55LWxvLnkpKTsKICAgICAgICB9Cgp2b2lkIG1haW4oKQp7Ci8vIFNUQVJUIG9mIHBhcmFtZXRlcnMKCi8vIGdhbW1hIG9mIHNpbXVsYXRlZCBDUlQKLy8JQ1JUZ2FtbWEgPSAxLjg7Ci8vIGdhbW1hIG9mIGRpc3BsYXkgbW9uaXRvciAodHlwaWNhbGx5IDIuMiBpcyBjb3JyZWN0KQovLwltb25pdG9yZ2FtbWEgPSAyLjI7Ci8vIG92ZXJzY2FuIChlLmcuIDEuMDIgZm9yIDIlIG92ZXJzY2FuKQoJb3ZlcnNjYW4gPSB2ZWMyKDEuMDAsMS4wMCk7Ci8vIGFzcGVjdCByYXRpbwoJYXNwZWN0ID0gdmVjMigxLjAsIDAuNzUpOwovLyBsZW5ndGhzIGFyZSBtZWFzdXJlZCBpbiB1bml0cyBvZiAoYXBwcm94aW1hdGVseSkgdGhlIHdpZHRoCi8vIG9mIHRoZSBtb25pdG9yIHNpbXVsYXRlZCBkaXN0YW5jZSBmcm9tIHZpZXdlciB0byBtb25pdG9yCi8vCWQgPSAyLjA7Ci8vIHJhZGl1cyBvZiBjdXJ2YXR1cmUKLy8JUiA9IDEuNTsKLy8gdGlsdCBhbmdsZSBpbiByYWRpYW5zCi8vIChiZWhhdmlvciBtaWdodCBiZSBhIGJpdCB3cm9uZyBpZiBib3RoIGNvbXBvbmVudHMgYXJlCi8vIG5vbnplcm8pCgljb25zdCB2ZWMyIGFuZ2xlID0gdmVjMigwLjAsMC4wKTsKLy8gc2l6ZSBvZiBjdXJ2ZWQgY29ybmVycwovLwljb3JuZXJzaXplID0gMC4wMzsKLy8gYm9yZGVyIHNtb290aG5lc3MgcGFyYW1ldGVyCi8vIGRlY3JlYXNlIGlmIGJvcmRlcnMgYXJlIHRvbyBhbGlhc2VkCi8vCWNvcm5lcnNtb290aCA9IDEwMDAuMDsKCi8vIEVORCBvZiBwYXJhbWV0ZXJzCgogICAgdmVjNCBfb0NvbG9yOwogICAgdmVjMiBfb3RleENvb3JkOwogICAgZ2xfUG9zaXRpb24gPSBWZXJ0ZXhDb29yZC54ICogTVZQTWF0cml4WzBdICsgVmVydGV4Q29vcmQueSAqIE1WUE1hdHJpeFsxXSArIFZlcnRleENvb3JkLnogKiBNVlBNYXRyaXhbMl0gKyBWZXJ0ZXhDb29yZC53ICogTVZQTWF0cml4WzNdOwogICAgX29Qb3NpdGlvbjEgPSBnbF9Qb3NpdGlvbjsKICAgIF9vQ29sb3IgPSBDT0xPUjsKICAgIF9vdGV4Q29vcmQgPSBUZXhDb29yZC54eSoxLjAwMDE7CiAgICBDT0wwID0gQ09MT1I7CiAgICBURVgwLnh5ID0gVGV4Q29vcmQueHkqMS4wMDAxOwoKLy8gUHJlY2FsY3VsYXRlIGEgYnVuY2ggb2YgdXNlZnVsIHZhbHVlcyB3ZSdsbCBuZWVkIGluIHRoZSBmcmFnbWVudAovLyBzaGFkZXIuCglzaW5hbmdsZSA9IHNpbih2ZWMyKHhfdGlsdCwgeV90aWx0KSkgKyB2ZWMyKDAuMDAxKTsvL3Npbih2ZWMyKG1heChhYnMoeF90aWx0KSwgMWUtMyksIG1heChhYnMoeV90aWx0KSwgMWUtMykpKTsKCWNvc2FuZ2xlID0gY29zKHZlYzIoeF90aWx0LCB5X3RpbHQpKSArIHZlYzIoMC4wMDEpOy8vY29zKHZlYzIobWF4KGFicyh4X3RpbHQpLCAxZS0zKSwgbWF4KGFicyh5X3RpbHQpLCAxZS0zKSkpOwoJc3RyZXRjaCA9IG1heHNjYWxlKCk7CgoJaWxmYWMgPSB2ZWMyKDEuMCxjbGFtcChmbG9vcihJbnB1dFNpemUueS8yMDAuMCksIDEuMCwgMi4wKSk7CgovLyBUaGUgc2l6ZSBvZiBvbmUgdGV4ZWwsIGluIHRleHR1cmUtY29vcmRpbmF0ZXMuCgl2ZWMyIHNoYXJwVGV4dHVyZVNpemUgPSB2ZWMyKFNIQVJQRVIgKiBUZXh0dXJlU2l6ZS54LCBUZXh0dXJlU2l6ZS55KTsKCW9uZSA9IGlsZmFjIC8gc2hhcnBUZXh0dXJlU2l6ZTsKCi8vIFJlc3VsdGluZyBYIHBpeGVsLWNvb3JkaW5hdGUgb2YgdGhlIHBpeGVsIHdlJ3JlIGRyYXdpbmcuCgltb2RfZmFjdG9yID0gVGV4Q29vcmQueCAqIFRleHR1cmVTaXplLnggKiBPdXRwdXRTaXplLnggLyBJbnB1dFNpemUueDsKCn0KCiNlbGlmIGRlZmluZWQoRlJBR01FTlQpCgojaWYgX19WRVJTSU9OX18gPj0gMTMwCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgaW4KI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlCm91dCB2ZWM0IEZyYWdDb2xvcjsKI2Vsc2UKI2RlZmluZSBDT01QQVRfVkFSWUlORyB2YXJ5aW5nCiNkZWZpbmUgRnJhZ0NvbG9yIGdsX0ZyYWdDb2xvcgojZGVmaW5lIENPTVBBVF9URVhUVVJFIHRleHR1cmUyRAojZW5kaWYKCiNpZmRlZiBHTF9FUwojaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJR0gKcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwojZWxzZQpwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKI2VuZGlmCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTiBtZWRpdW1wCiNlbHNlCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTgojZW5kaWYKCnN0cnVjdCBvdXRwdXRfZHVtbXkgewogICAgdmVjNCBfY29sb3I7Cn07Cgp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lRGlyZWN0aW9uOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lQ291bnQ7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIE91dHB1dFNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIFRleHR1cmVTaXplOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBJbnB1dFNpemU7CnVuaWZvcm0gc2FtcGxlcjJEIFRleHR1cmU7CkNPTVBBVF9WQVJZSU5HIHZlYzQgVEVYMDsKCi8vIENvbW1lbnQgdGhlIG5leHQgbGluZSB0byBkaXNhYmxlIGludGVycG9sYXRpb24gaW4gbGluZWFyIGdhbW1hIChhbmQKLy8gZ2FpbiBzcGVlZCkuCgkjZGVmaW5lIExJTkVBUl9QUk9DRVNTSU5HCgovLyBFbmFibGUgc2NyZWVuIGN1cnZhdHVyZS4KLy8gICAgICAgICNkZWZpbmUgQ1VSVkFUVVJFCgovLyBFbmFibGUgM3ggb3ZlcnNhbXBsaW5nIG9mIHRoZSBiZWFtIHByb2ZpbGUKICAgICAgICAjZGVmaW5lIE9WRVJTQU1QTEUKCi8vIFVzZSB0aGUgb2xkZXIsIHB1cmVseSBnYXVzc2lhbiBiZWFtIHByb2ZpbGUKICAgICAgICAvLyNkZWZpbmUgVVNFR0FVU1NJQU4KCi8vIE1hY3Jvcy4KI2RlZmluZSBGSVgoYykgbWF4KGFicyhjKSwgMWUtNSk7CiNkZWZpbmUgUEkgMy4xNDE1OTI2NTM1ODkKCiNpZmRlZiBMSU5FQVJfUFJPQ0VTU0lORwojICAgICAgIGRlZmluZSBURVgyRChjKSBwb3coQ09NUEFUX1RFWFRVUkUoVGV4dHVyZSwgKGMpKSwgdmVjNChDUlRnYW1tYSkpCiNlbHNlCiMgICAgICAgZGVmaW5lIFRFWDJEKGMpIENPTVBBVF9URVhUVVJFKFRleHR1cmUsIChjKSkKI2VuZGlmCgpDT01QQVRfVkFSWUlORyB2ZWMyIG9uZTsKQ09NUEFUX1ZBUllJTkcgZmxvYXQgbW9kX2ZhY3RvcjsKQ09NUEFUX1ZBUllJTkcgdmVjMiBpbGZhYzsKQ09NUEFUX1ZBUllJTkcgdmVjMiBvdmVyc2NhbjsKQ09NUEFUX1ZBUllJTkcgdmVjMiBhc3BlY3Q7CkNPTVBBVF9WQVJZSU5HIHZlYzMgc3RyZXRjaDsKQ09NUEFUX1ZBUllJTkcgdmVjMiBzaW5hbmdsZTsKQ09NUEFUX1ZBUllJTkcgdmVjMiBjb3NhbmdsZTsKCiNpZmRlZiBQQVJBTUVURVJfVU5JRk9STQp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgQ1JUZ2FtbWE7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBtb25pdG9yZ2FtbWE7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBkOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgQ1VSVkFUVVJFOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgUjsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IGNvcm5lcnNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBjb3JuZXJzbW9vdGg7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCB4X3RpbHQ7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCB5X3RpbHQ7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBvdmVyc2Nhbl94Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgb3ZlcnNjYW5feTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IERPVE1BU0s7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBTSEFSUEVSOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgc2NhbmxpbmVfd2VpZ2h0Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgbHVtOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgaW50ZXJsYWNlX2RldGVjdDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IFNBVFVSQVRJT047CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBJTlY7CiNlbmRpZgoKZmxvYXQgaW50ZXJzZWN0KHZlYzIgeHkpCiAgICAgICAgewoJZmxvYXQgQSA9IGRvdCh4eSx4eSkrZCpkOwoJZmxvYXQgQiA9IDIuMCooUiooZG90KHh5LHNpbmFuZ2xlKS1kKmNvc2FuZ2xlLngqY29zYW5nbGUueSktZCpkKTsKCWZsb2F0IEMgPSBkKmQgKyAyLjAqUipkKmNvc2FuZ2xlLngqY29zYW5nbGUueTsKCXJldHVybiAoLUItc3FydChCKkItNC4wKkEqQykpLygyLjAqQSk7CiAgICAgICAgfQoKdmVjMiBia3d0cmFucyh2ZWMyIHh5KQogICAgICAgIHsKCWZsb2F0IGMgPSBpbnRlcnNlY3QoeHkpOwoJdmVjMiBwb2ludCA9IHZlYzIoYykqeHk7Cglwb2ludCAtPSB2ZWMyKC1SKSpzaW5hbmdsZTsKCXBvaW50IC89IHZlYzIoUik7Cgl2ZWMyIHRhbmcgPSBzaW5hbmdsZS9jb3NhbmdsZTsKCXZlYzIgcG9jID0gcG9pbnQvY29zYW5nbGU7CglmbG9hdCBBID0gZG90KHRhbmcsdGFuZykrMS4wOwoJZmxvYXQgQiA9IC0yLjAqZG90KHBvYyx0YW5nKTsKCWZsb2F0IEMgPSBkb3QocG9jLHBvYyktMS4wOwoJZmxvYXQgYSA9ICgtQitzcXJ0KEIqQi00LjAqQSpDKSkvKDIuMCpBKTsKCXZlYzIgdXYgPSAocG9pbnQtYSpzaW5hbmdsZSkvY29zYW5nbGU7CglmbG9hdCByID0gRklYKFIqYWNvcyhhKSk7CglyZXR1cm4gdXYqci9zaW4oci9SKTsKICAgICAgICB9Cgp2ZWMyIHRyYW5zZm9ybSh2ZWMyIGNvb3JkKQogICAgICAgIHsKCWNvb3JkICo9IFRleHR1cmVTaXplIC8gSW5wdXRTaXplOwoJY29vcmQgPSAoY29vcmQtdmVjMigwLjUpKSphc3BlY3Qqc3RyZXRjaC56K3N0cmV0Y2gueHk7CglyZXR1cm4gKGJrd3RyYW5zKGNvb3JkKS92ZWMyKG92ZXJzY2FuX3ggLyAxMDAuMCwgb3ZlcnNjYW5feSAvIDEwMC4wKS9hc3BlY3QrdmVjMigwLjUpKSAqIElucHV0U2l6ZSAvIFRleHR1cmVTaXplOwogICAgICAgIH0KCmZsb2F0IGNvcm5lcih2ZWMyIGNvb3JkKQogICAgICAgIHsKCWNvb3JkICo9IFRleHR1cmVTaXplIC8gSW5wdXRTaXplOwoJY29vcmQgPSAoY29vcmQgLSB2ZWMyKDAuNSkpICogdmVjMihvdmVyc2Nhbl94IC8gMTAwLjAsIG92ZXJzY2FuX3kgLyAxMDAuMCkgKyB2ZWMyKDAuNSk7Cgljb29yZCA9IG1pbihjb29yZCwgdmVjMigxLjApLWNvb3JkKSAqIGFzcGVjdDsKCXZlYzIgY2Rpc3QgPSB2ZWMyKGNvcm5lcnNpemUpOwoJY29vcmQgPSAoY2Rpc3QgLSBtaW4oY29vcmQsY2Rpc3QpKTsKCWZsb2F0IGRpc3QgPSBzcXJ0KGRvdChjb29yZCxjb29yZCkpOwoJcmV0dXJuIGNsYW1wKChjZGlzdC54LWRpc3QpKmNvcm5lcnNtb290aCwwLjAsIDEuMCkqMS4wMDAxOwogICAgICAgIH0KCi8vIENhbGN1bGF0ZSB0aGUgaW5mbHVlbmNlIG9mIGEgc2NhbmxpbmUgb24gdGhlIGN1cnJlbnQgcGl4ZWwuCi8vCi8vICdkaXN0YW5jZScgaXMgdGhlIGRpc3RhbmNlIGluIHRleHR1cmUgY29vcmRpbmF0ZXMgZnJvbSB0aGUgY3VycmVudAovLyBwaXhlbCB0byB0aGUgc2NhbmxpbmUgaW4gcXVlc3Rpb24uCi8vICdjb2xvcicgaXMgdGhlIGNvbG91ciBvZiB0aGUgc2NhbmxpbmUgYXQgdGhlIGhvcml6b250YWwgbG9jYXRpb24gb2YKLy8gdGhlIGN1cnJlbnQgcGl4ZWwuCnZlYzQgc2NhbmxpbmVXZWlnaHRzKGZsb2F0IGRpc3RhbmNlLCB2ZWM0IGNvbG9yKQogICAgICAgIHsKCS8vICJ3aWQiIGNvbnRyb2xzIHRoZSB3aWR0aCBvZiB0aGUgc2NhbmxpbmUgYmVhbSwgZm9yIGVhY2ggUkdCCgkvLyBjaGFubmVsIFRoZSAid2VpZ2h0cyIgbGluZXMgYmFzaWNhbGx5IHNwZWNpZnkgdGhlIGZvcm11bGEKCS8vIHRoYXQgZ2l2ZXMgeW91IHRoZSBwcm9maWxlIG9mIHRoZSBiZWFtLCBpLmUuIHRoZSBpbnRlbnNpdHkgYXMKCS8vIGEgZnVuY3Rpb24gb2YgZGlzdGFuY2UgZnJvbSB0aGUgdmVydGljYWwgY2VudGVyIG9mIHRoZQoJLy8gc2NhbmxpbmUuIEluIHRoaXMgY2FzZSwgaXQgaXMgZ2F1c3NpYW4gaWYgd2lkdGg9MiwgYW5kCgkvLyBiZWNvbWVzIG5vbmdhdXNzaWFuIGZvciBsYXJnZXIgd2lkdGhzLiBJZGVhbGx5IHRoaXMgc2hvdWxkCgkvLyBiZSBub3JtYWxpemVkIHNvIHRoYXQgdGhlIGludGVncmFsIGFjcm9zcyB0aGUgYmVhbSBpcwoJLy8gaW5kZXBlbmRlbnQgb2YgaXRzIHdpZHRoLiBUaGF0IGlzLCBmb3IgYSBuYXJyb3dlciBiZWFtCgkvLyAid2VpZ2h0cyIgc2hvdWxkIGhhdmUgYSBoaWdoZXIgcGVhayBhdCB0aGUgY2VudGVyIG9mIHRoZQoJLy8gc2NhbmxpbmUgdGhhbiBmb3IgYSB3aWRlciBiZWFtLgojaWZkZWYgVVNFR0FVU1NJQU4KCXZlYzQgd2lkID0gMC4zICsgMC4xICogcG93KGNvbG9yLCB2ZWM0KDMuMCkpOwoJdmVjNCB3ZWlnaHRzID0gdmVjNChkaXN0YW5jZSAvIHdpZCk7CglyZXR1cm4gKGx1bSArIDAuNCkgKiBleHAoLXdlaWdodHMgKiB3ZWlnaHRzKSAvIHdpZDsKI2Vsc2UKCXZlYzQgd2lkID0gMi4wICsgMi4wICogcG93KGNvbG9yLCB2ZWM0KDQuMCkpOwoJdmVjNCB3ZWlnaHRzID0gdmVjNChkaXN0YW5jZSAvIHNjYW5saW5lX3dlaWdodCk7CglyZXR1cm4gKGx1bSArIDEuNCkgKiBleHAoLXBvdyh3ZWlnaHRzICogaW52ZXJzZXNxcnQoMC41ICogd2lkKSwgd2lkKSkgLyAoMC42ICsgMC4yICogd2lkKTsKI2VuZGlmCiAgICAgICAgfQoKdmVjMyBzYXR1cmF0aW9uICh2ZWMzIHRleHR1cmVDb2xvcikKewogICAgZmxvYXQgbHVtPWxlbmd0aCh0ZXh0dXJlQ29sb3IpKjAuNTc3NTsKCiAgICB2ZWMzIGx1bWluYW5jZVdlaWdodGluZyA9IHZlYzMoMC4zLDAuNiwwLjEpOwogICAgaWYgKGx1bTwwLjUpIGx1bWluYW5jZVdlaWdodGluZy5yZ2I9KGx1bWluYW5jZVdlaWdodGluZy5yZ2IqbHVtaW5hbmNlV2VpZ2h0aW5nLnJnYikrKGx1bWluYW5jZVdlaWdodGluZy5yZ2IqbHVtaW5hbmNlV2VpZ2h0aW5nLnJnYik7CgogICAgZmxvYXQgbHVtaW5hbmNlID0gZG90KHRleHR1cmVDb2xvciwgbHVtaW5hbmNlV2VpZ2h0aW5nKTsKICAgIHZlYzMgZ3JleVNjYWxlQ29sb3IgPSB2ZWMzKGx1bWluYW5jZSk7CgogICAgdmVjMyByZXMgPSB2ZWMzKG1peChncmV5U2NhbGVDb2xvciwgdGV4dHVyZUNvbG9yLCBTQVRVUkFUSU9OKSk7CiAgICByZXR1cm4gcmVzOwp9CgojZGVmaW5lIHB3ciB2ZWMzKDEuMC8oKC0wLjcqKDEuMC1zY2FubGluZV93ZWlnaHQpKzEuMCkqKC0wLjUqRE9UTUFTSysxLjApKS0xLjI1KQoKCi8vIFJldHVybnMgZ2FtbWEgY29ycmVjdGVkIG91dHB1dCwgY29tcGVuc2F0ZWQgZm9yIHNjYW5saW5lK21hc2sgZW1iZWRkZWQgZ2FtbWEKdmVjMyBpbnZfZ2FtbWEodmVjMyBjb2wsIHZlYzMgcG93ZXIpCnsKICAgIHZlYzMgY2lyICA9IGNvbC0xLjA7CiAgICAgICAgIGNpciAqPSBjaXI7CiAgICAgICAgIGNvbCAgPSBtaXgoc3FydChjb2wpLHNxcnQoMS4wLWNpcikscG93ZXIpOwogICAgcmV0dXJuIGNvbDsKfQoKdm9pZCBtYWluKCkKewovLyBIZXJlJ3MgYSBoZWxwZnVsIGRpYWdyYW0gdG8ga2VlcCBpbiBtaW5kIHdoaWxlIHRyeWluZyB0bwovLyB1bmRlcnN0YW5kIHRoZSBjb2RlOgovLwovLyAgfCAgICAgIHwgICAgICB8ICAgICAgfCAgICAgIHwKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyAgfCAgICAgIHwgICAgICB8ICAgICAgfCAgICAgIHwKLy8gIHwgIDAxICB8ICAxMSAgfCAgMjEgIHwgIDMxICB8IDwtLSBjdXJyZW50IHNjYW5saW5lCi8vICB8ICAgICAgfCBAICAgIHwgICAgICB8ICAgICAgfAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vICB8ICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgfAovLyAgfCAgMDIgIHwgIDEyICB8ICAyMiAgfCAgMzIgIHwgPC0tIG5leHQgc2NhbmxpbmUKLy8gIHwgICAgICB8ICAgICAgfCAgICAgIHwgICAgICB8Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gIHwgICAgICB8ICAgICAgfCAgICAgIHwgICAgICB8Ci8vCi8vIEVhY2ggY2hhcmFjdGVyLWNlbGwgcmVwcmVzZW50cyBhIHBpeGVsIG9uIHRoZSBvdXRwdXQKLy8gc3VyZmFjZSwgIkAiIHJlcHJlc2VudHMgdGhlIGN1cnJlbnQgcGl4ZWwgKGFsd2F5cyBzb21ld2hlcmUKLy8gaW4gdGhlIGJvdHRvbSBoYWxmIG9mIHRoZSBjdXJyZW50IHNjYW4tbGluZSwgb3IgdGhlIHRvcC1oYWxmCi8vIG9mIHRoZSBuZXh0IHNjYW5saW5lKS4gVGhlIGdyaWQgb2YgbGluZXMgcmVwcmVzZW50cyB0aGUKLy8gZWRnZXMgb2YgdGhlIHRleGVscyBvZiB0aGUgdW5kZXJseWluZyB0ZXh0dXJlLgoKLy8gVGV4dHVyZSBjb29yZGluYXRlcyBvZiB0aGUgdGV4ZWwgY29udGFpbmluZyB0aGUgYWN0aXZlIHBpeGVsLgoJdmVjMiB4eSA9IChDVVJWQVRVUkUgPiAwLjUpID8gdHJhbnNmb3JtKFRFWDAueHkpIDogVEVYMC54eTsKCglmbG9hdCBjdmFsID0gY29ybmVyKHh5KTsKCi8vIE9mIGFsbCB0aGUgcGl4ZWxzIHRoYXQgYXJlIG1hcHBlZCBvbnRvIHRoZSB0ZXhlbCB3ZSBhcmUKLy8gY3VycmVudGx5IHJlbmRlcmluZywgd2hpY2ggcGl4ZWwgYXJlIHdlIGN1cnJlbnRseSByZW5kZXJpbmc/Cgl2ZWMyIGlsdmVjID0gdmVjMigwLjAsaWxmYWMueSAqIGludGVybGFjZV9kZXRlY3QgPiAxLjUgPyBtb2QoZmxvYXQoRnJhbWVDb3VudCksMi4wKSA6IDAuMCk7Cgl2ZWMyIHJhdGlvX3NjYWxlID0gKHh5ICogVGV4dHVyZVNpemUgLSB2ZWMyKDAuNSkgKyBpbHZlYykvaWxmYWM7CiNpZmRlZiBPVkVSU0FNUExFCglmbG9hdCBmaWx0ZXJfID0gSW5wdXRTaXplLnkvT3V0cHV0U2l6ZS55Oy8vZndpZHRoKHJhdGlvX3NjYWxlLnkpOwojZW5kaWYKCXZlYzIgdXZfcmF0aW8gPSBmcmFjdChyYXRpb19zY2FsZSk7CgovLyBTbmFwIHRvIHRoZSBjZW50ZXIgb2YgdGhlIHVuZGVybHlpbmcgdGV4ZWwuCgl4eSA9IChmbG9vcihyYXRpb19zY2FsZSkqaWxmYWMgKyB2ZWMyKDAuNSkgLSBpbHZlYykgLyBUZXh0dXJlU2l6ZTsKCi8vIENhbGN1bGF0ZSBMYW5jem9zIHNjYWxpbmcgY29lZmZpY2llbnRzIGRlc2NyaWJpbmcgdGhlIGVmZmVjdAovLyBvZiB2YXJpb3VzIG5laWdoYm91ciB0ZXhlbHMgaW4gYSBzY2FubGluZSBvbiB0aGUgY3VycmVudAovLyBwaXhlbC4KCXZlYzQgY29lZmZzID0gUEkgKiB2ZWM0KDEuMCArIHV2X3JhdGlvLngsIHV2X3JhdGlvLngsIDEuMCAtIHV2X3JhdGlvLngsIDIuMCAtIHV2X3JhdGlvLngpOwoKLy8gUHJldmVudCBkaXZpc2lvbiBieSB6ZXJvLgoJY29lZmZzID0gRklYKGNvZWZmcyk7CgovLyBMYW5jem9zMiBrZXJuZWwuCgljb2VmZnMgPSAyLjAgKiBzaW4oY29lZmZzKSAqIHNpbihjb2VmZnMgLyAyLjApIC8gKGNvZWZmcyAqIGNvZWZmcyk7CgovLyBOb3JtYWxpemUuCgljb2VmZnMgLz0gZG90KGNvZWZmcywgdmVjNCgxLjApKTsKCi8vIENhbGN1bGF0ZSB0aGUgZWZmZWN0aXZlIGNvbG91ciBvZiB0aGUgY3VycmVudCBhbmQgbmV4dAovLyBzY2FubGluZXMgYXQgdGhlIGhvcml6b250YWwgbG9jYXRpb24gb2YgdGhlIGN1cnJlbnQgcGl4ZWwsCi8vIHVzaW5nIHRoZSBMYW5jem9zIGNvZWZmaWNpZW50cyBhYm92ZS4KCXZlYzQgY29sICA9IGNsYW1wKG1hdDQoCiAgICAgICAgICAgICAgICAgICAgICAgIFRFWDJEKHh5ICsgdmVjMigtb25lLngsIDAuMCkpLAogICAgICAgICAgICAgICAgICAgICAgICBURVgyRCh4eSksCiAgICAgICAgICAgICAgICAgICAgICAgIFRFWDJEKHh5ICsgdmVjMihvbmUueCwgMC4wKSksCiAgICAgICAgICAgICAgICAgICAgICAgIFRFWDJEKHh5ICsgdmVjMigyLjAgKiBvbmUueCwgMC4wKSkpICogY29lZmZzLAogICAgICAgICAgICAgICAgICAgICAgICAwLjAsIDEuMCk7CiAgICAgICAgdmVjNCBjb2wyID0gY2xhbXAobWF0NCgKICAgICAgICAgICAgICAgICAgICAgICAgVEVYMkQoeHkgKyB2ZWMyKC1vbmUueCwgb25lLnkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgVEVYMkQoeHkgKyB2ZWMyKDAuMCwgb25lLnkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgVEVYMkQoeHkgKyBvbmUpLAogICAgICAgICAgICAgICAgICAgICAgICBURVgyRCh4eSArIHZlYzIoMi4wICogb25lLngsIG9uZS55KSkpICogY29lZmZzLAogICAgICAgICAgICAgICAgICAgICAgICAwLjAsIDEuMCk7CgojaWZuZGVmIExJTkVBUl9QUk9DRVNTSU5HCgljb2wgID0gcG93KGNvbCAsIHZlYzQoQ1JUZ2FtbWEpKTsKCWNvbDIgPSBwb3coY29sMiwgdmVjNChDUlRnYW1tYSkpOwojZW5kaWYKCi8vIENhbGN1bGF0ZSB0aGUgaW5mbHVlbmNlIG9mIHRoZSBjdXJyZW50IGFuZCBuZXh0IHNjYW5saW5lcyBvbgovLyB0aGUgY3VycmVudCBwaXhlbC4KCXZlYzQgd2VpZ2h0cyAgPSBzY2FubGluZVdlaWdodHModXZfcmF0aW8ueSwgY29sKTsKCXZlYzQgd2VpZ2h0czIgPSBzY2FubGluZVdlaWdodHMoMS4wIC0gdXZfcmF0aW8ueSwgY29sMik7CiNpZmRlZiBPVkVSU0FNUExFCgl1dl9yYXRpby55ID11dl9yYXRpby55KzEuMC8zLjAqZmlsdGVyXzsKCXdlaWdodHMgPSAod2VpZ2h0cytzY2FubGluZVdlaWdodHModXZfcmF0aW8ueSwgY29sKSkvMy4wOwoJd2VpZ2h0czI9KHdlaWdodHMyK3NjYW5saW5lV2VpZ2h0cyhhYnMoMS4wLXV2X3JhdGlvLnkpLCBjb2wyKSkvMy4wOwoJdXZfcmF0aW8ueSA9dXZfcmF0aW8ueS0yLjAvMy4wKmZpbHRlcl87Cgl3ZWlnaHRzPXdlaWdodHMrc2NhbmxpbmVXZWlnaHRzKGFicyh1dl9yYXRpby55KSwgY29sKS8zLjA7Cgl3ZWlnaHRzMj13ZWlnaHRzMitzY2FubGluZVdlaWdodHMoYWJzKDEuMC11dl9yYXRpby55KSwgY29sMikvMy4wOwojZW5kaWYKCgl2ZWMzIG11bF9yZXMgID0gKGNvbCAqIHdlaWdodHMgKyBjb2wyICogd2VpZ2h0czIpLnJnYiAqIHZlYzMoY3ZhbCk7CgovLyBkb3QtbWFzayBlbXVsYXRpb246Ci8vIE91dHB1dCBwaXhlbHMgYXJlIGFsdGVybmF0ZWx5IHRpbnRlZCBncmVlbiBhbmQgbWFnZW50YS4KdmVjMyBkb3RNYXNrV2VpZ2h0cyA9IG1peCgKCXZlYzMoMS4wLCAxLjAgLSBET1RNQVNLLCAxLjApLAoJdmVjMygxLjAgLSBET1RNQVNLLCAxLjAsIDEuMCAtIERPVE1BU0spLAoJZmxvb3IobW9kKG1vZF9mYWN0b3IsIDIuMCkpCiAgICAgICAgKTsKCgltdWxfcmVzICo9IGRvdE1hc2tXZWlnaHRzOwoKLy8gQ29udmVydCB0aGUgaW1hZ2UgZ2FtbWEgZm9yIGRpc3BsYXkgb24gb3VyIG91dHB1dCBkZXZpY2UuCmlmIChJTlYgPT0gMS4wKXsgbXVsX3JlcyA9IGludl9nYW1tYShtdWxfcmVzLHB3cik7fSAKCWVsc2UgbXVsX3JlcyA9IHBvdyhtdWxfcmVzLCB2ZWMzKDEuMC9tb25pdG9yZ2FtbWEpKTsKICAgICAgICAKICAgICAgICBtdWxfcmVzID0gc2F0dXJhdGlvbihtdWxfcmVzKTsKCgoKLy8gQ29sb3IgdGhlIHRleGVsLgogICAgb3V0cHV0X2R1bW15IF9PVVQ7CiAgICBfT1VULl9jb2xvciA9IHZlYzQobXVsX3JlcywgMS4wKTsKICAgIEZyYWdDb2xvciA9IF9PVVQuX2NvbG9yOwogICAgcmV0dXJuOwp9IAojZW5kaWYK"}]},"crt-mattias.glslp":{shader:{type:"text",value:"shaders = 1\n\nshader0 = crt-mattias.glsl\nfilter_linear0 = false"},resources:[{name:"crt-mattias.glsl",type:"base64",value:"Ly8gQ1JUIEVtdWxhdGlvbgovLyBieSBNYXR0aWFzCi8vIGh0dHBzOi8vd3d3LnNoYWRlcnRveS5jb20vdmlldy9sc0IzRFYKCiNwcmFnbWEgcGFyYW1ldGVyIENVUlZBVFVSRSAiQ3VydmF0dXJlIiAwLjUgMC4wIDEuMCAwLjA1CiNwcmFnbWEgcGFyYW1ldGVyIFNDQU5TUEVFRCAiU2NhbmxpbmUgQ3Jhd2wgU3BlZWQiIDEuMCAwLjAgMTAuMCAwLjUKCiNpZiBkZWZpbmVkKFZFUlRFWCkKCiNpZiBfX1ZFUlNJT05fXyA+PSAxMzAKI2RlZmluZSBDT01QQVRfVkFSWUlORyBvdXQKI2RlZmluZSBDT01QQVRfQVRUUklCVVRFIGluCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZQojZWxzZQojZGVmaW5lIENPTVBBVF9WQVJZSU5HIHZhcnlpbmcgCiNkZWZpbmUgQ09NUEFUX0FUVFJJQlVURSBhdHRyaWJ1dGUgCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZTJECiNlbmRpZgoKI2lmZGVmIEdMX0VTCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTiBtZWRpdW1wCiNlbHNlCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTgojZW5kaWYKCkNPTVBBVF9BVFRSSUJVVEUgdmVjNCBWZXJ0ZXhDb29yZDsKQ09NUEFUX0FUVFJJQlVURSB2ZWM0IENPTE9SOwpDT01QQVRfQVRUUklCVVRFIHZlYzQgVGV4Q29vcmQ7CkNPTVBBVF9WQVJZSU5HIHZlYzQgQ09MMDsKQ09NUEFUX1ZBUllJTkcgdmVjNCBURVgwOwovLyBvdXQgdmFyaWFibGVzIGdvIGhlcmUgYXMgQ09NUEFUX1ZBUllJTkcgd2hhdGV2ZXIKCnZlYzQgX29Qb3NpdGlvbjE7IAp1bmlmb3JtIG1hdDQgTVZQTWF0cml4Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lRGlyZWN0aW9uOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lQ291bnQ7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIE91dHB1dFNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIFRleHR1cmVTaXplOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBJbnB1dFNpemU7CgovLyBjb21wYXRpYmlsaXR5ICNkZWZpbmVzCiNkZWZpbmUgdlRleENvb3JkIFRFWDAueHkKI2RlZmluZSBTb3VyY2VTaXplIHZlYzQoVGV4dHVyZVNpemUsIDEuMCAvIFRleHR1cmVTaXplKSAvL2VpdGhlciBUZXh0dXJlU2l6ZSBvciBJbnB1dFNpemUKI2RlZmluZSBPdXRTaXplIHZlYzQoT3V0cHV0U2l6ZSwgMS4wIC8gT3V0cHV0U2l6ZSkKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gTVZQTWF0cml4ICogVmVydGV4Q29vcmQ7CiAgICBURVgwLnh5ID0gVGV4Q29vcmQueHk7Cn0KCiNlbGlmIGRlZmluZWQoRlJBR01FTlQpCgojaWZkZWYgR0xfRVMKI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdICnByZWNpc2lvbiBoaWdocCBmbG9hdDsKI2Vsc2UKcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiNlbmRpZgojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04gbWVkaXVtcAojZWxzZQojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04KI2VuZGlmCgojaWYgX19WRVJTSU9OX18gPj0gMTMwCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgaW4KI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlCm91dCBDT01QQVRfUFJFQ0lTSU9OIHZlYzQgRnJhZ0NvbG9yOwojZWxzZQojZGVmaW5lIENPTVBBVF9WQVJZSU5HIHZhcnlpbmcKI2RlZmluZSBGcmFnQ29sb3IgZ2xfRnJhZ0NvbG9yCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZTJECiNlbmRpZgoKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZURpcmVjdGlvbjsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZUNvdW50Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBPdXRwdXRTaXplOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBUZXh0dXJlU2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgSW5wdXRTaXplOwp1bmlmb3JtIHNhbXBsZXIyRCBUZXh0dXJlOwpDT01QQVRfVkFSWUlORyB2ZWM0IFRFWDA7CgovLyBjb21wYXRpYmlsaXR5ICNkZWZpbmVzCiNkZWZpbmUgU291cmNlIFRleHR1cmUKI2RlZmluZSB2VGV4Q29vcmQgVEVYMC54eQoKI2RlZmluZSBTb3VyY2VTaXplIHZlYzQoVGV4dHVyZVNpemUsIDEuMCAvIFRleHR1cmVTaXplKSAvL2VpdGhlciBUZXh0dXJlU2l6ZSBvciBJbnB1dFNpemUKI2RlZmluZSBPdXRTaXplIHZlYzQoT3V0cHV0U2l6ZSwgMS4wIC8gT3V0cHV0U2l6ZSkKCiNpZmRlZiBQQVJBTUVURVJfVU5JRk9STQp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgQ1VSVkFUVVJFLCBTQ0FOU1BFRUQ7CiNlbHNlCiNkZWZpbmUgQ1VSVkFUVVJFIDAuNQojZGVmaW5lIFNDQU5TUEVFRCAxLjAKI2VuZGlmCgojZGVmaW5lIGlDaGFubmVsMCBUZXh0dXJlCiNkZWZpbmUgaVRpbWUgKGZsb2F0KEZyYW1lQ291bnQpIC8gNjAuMCkKI2RlZmluZSBpUmVzb2x1dGlvbiBPdXRwdXRTaXplLnh5CiNkZWZpbmUgZnJhZ0Nvb3JkIGdsX0ZyYWdDb29yZC54eQoKdmVjMyBzYW1wbGVfKCBzYW1wbGVyMkQgdGV4LCB2ZWMyIHRjICkKewoJdmVjMyBzID0gcG93KENPTVBBVF9URVhUVVJFKHRleCx0YykucmdiLCB2ZWMzKDIuMikpOwoJcmV0dXJuIHM7Cn0KCnZlYzMgYmx1cihzYW1wbGVyMkQgdGV4LCB2ZWMyIHRjLCBmbG9hdCBvZmZzKQp7Cgl2ZWM0IHhvZmZzID0gb2ZmcyAqIHZlYzQoLTIuMCwgLTEuMCwgMS4wLCAyLjApIC8gKGlSZXNvbHV0aW9uLnggKiBUZXh0dXJlU2l6ZS54IC8gSW5wdXRTaXplLngpOwoJdmVjNCB5b2ZmcyA9IG9mZnMgKiB2ZWM0KC0yLjAsIC0xLjAsIDEuMCwgMi4wKSAvIChpUmVzb2x1dGlvbi55ICogVGV4dHVyZVNpemUueSAvIElucHV0U2l6ZS55KTsKICAgdGMgPSB0YyAqIElucHV0U2l6ZSAvIFRleHR1cmVTaXplOwoJCgl2ZWMzIGNvbG9yID0gdmVjMygwLjAsIDAuMCwgMC4wKTsKCWNvbG9yICs9IHNhbXBsZV8odGV4LHRjICsgdmVjMih4b2Zmcy54LCB5b2Zmcy54KSkgKiAwLjAwMzY2OwoJY29sb3IgKz0gc2FtcGxlXyh0ZXgsdGMgKyB2ZWMyKHhvZmZzLnksIHlvZmZzLngpKSAqIDAuMDE0NjU7Cgljb2xvciArPSBzYW1wbGVfKHRleCx0YyArIHZlYzIoICAgIDAuMCwgeW9mZnMueCkpICogMC4wMjU2NDsKCWNvbG9yICs9IHNhbXBsZV8odGV4LHRjICsgdmVjMih4b2Zmcy56LCB5b2Zmcy54KSkgKiAwLjAxNDY1OwoJY29sb3IgKz0gc2FtcGxlXyh0ZXgsdGMgKyB2ZWMyKHhvZmZzLncsIHlvZmZzLngpKSAqIDAuMDAzNjY7CgkKCWNvbG9yICs9IHNhbXBsZV8odGV4LHRjICsgdmVjMih4b2Zmcy54LCB5b2Zmcy55KSkgKiAwLjAxNDY1OwoJY29sb3IgKz0gc2FtcGxlXyh0ZXgsdGMgKyB2ZWMyKHhvZmZzLnksIHlvZmZzLnkpKSAqIDAuMDU4NjE7Cgljb2xvciArPSBzYW1wbGVfKHRleCx0YyArIHZlYzIoICAgIDAuMCwgeW9mZnMueSkpICogMC4wOTUyNDsKCWNvbG9yICs9IHNhbXBsZV8odGV4LHRjICsgdmVjMih4b2Zmcy56LCB5b2Zmcy55KSkgKiAwLjA1ODYxOwoJY29sb3IgKz0gc2FtcGxlXyh0ZXgsdGMgKyB2ZWMyKHhvZmZzLncsIHlvZmZzLnkpKSAqIDAuMDE0NjU7CgkKCWNvbG9yICs9IHNhbXBsZV8odGV4LHRjICsgdmVjMih4b2Zmcy54LCAwLjApKSAqIDAuMDI1NjQ7Cgljb2xvciArPSBzYW1wbGVfKHRleCx0YyArIHZlYzIoeG9mZnMueSwgMC4wKSkgKiAwLjA5NTI0OwoJY29sb3IgKz0gc2FtcGxlXyh0ZXgsdGMgKyB2ZWMyKCAgICAwLjAsIDAuMCkpICogMC4xNTAxODsKCWNvbG9yICs9IHNhbXBsZV8odGV4LHRjICsgdmVjMih4b2Zmcy56LCAwLjApKSAqIDAuMDk1MjQ7Cgljb2xvciArPSBzYW1wbGVfKHRleCx0YyArIHZlYzIoeG9mZnMudywgMC4wKSkgKiAwLjAyNTY0OwoJCgljb2xvciArPSBzYW1wbGVfKHRleCx0YyArIHZlYzIoeG9mZnMueCwgeW9mZnMueikpICogMC4wMTQ2NTsKCWNvbG9yICs9IHNhbXBsZV8odGV4LHRjICsgdmVjMih4b2Zmcy55LCB5b2Zmcy56KSkgKiAwLjA1ODYxOwoJY29sb3IgKz0gc2FtcGxlXyh0ZXgsdGMgKyB2ZWMyKCAgICAwLjAsIHlvZmZzLnopKSAqIDAuMDk1MjQ7Cgljb2xvciArPSBzYW1wbGVfKHRleCx0YyArIHZlYzIoeG9mZnMueiwgeW9mZnMueikpICogMC4wNTg2MTsKCWNvbG9yICs9IHNhbXBsZV8odGV4LHRjICsgdmVjMih4b2Zmcy53LCB5b2Zmcy56KSkgKiAwLjAxNDY1OwoJCgljb2xvciArPSBzYW1wbGVfKHRleCx0YyArIHZlYzIoeG9mZnMueCwgeW9mZnMudykpICogMC4wMDM2NjsKCWNvbG9yICs9IHNhbXBsZV8odGV4LHRjICsgdmVjMih4b2Zmcy55LCB5b2Zmcy53KSkgKiAwLjAxNDY1OwoJY29sb3IgKz0gc2FtcGxlXyh0ZXgsdGMgKyB2ZWMyKCAgICAwLjAsIHlvZmZzLncpKSAqIDAuMDI1NjQ7Cgljb2xvciArPSBzYW1wbGVfKHRleCx0YyArIHZlYzIoeG9mZnMueiwgeW9mZnMudykpICogMC4wMTQ2NTsKCWNvbG9yICs9IHNhbXBsZV8odGV4LHRjICsgdmVjMih4b2Zmcy53LCB5b2Zmcy53KSkgKiAwLjAwMzY2OwoKCXJldHVybiBjb2xvcjsKfQoKLy9DYW5vbmljYWwgbm9pc2UgZnVuY3Rpb247IHJlcGxhY2VkIHRvIHByZXZlbnQgcHJlY2lzaW9uIGVycm9ycwovL2Zsb2F0IHJhbmQodmVjMiBjbyl7Ci8vICAgIHJldHVybiBmcmFjdChzaW4oZG90KGNvLnh5ICx2ZWMyKDEyLjk4OTgsNzguMjMzKSkpICogNDM3NTguNTQ1Myk7Ci8vfQoKZmxvYXQgcmFuZCh2ZWMyIGNvKQp7CiAgICBmbG9hdCBhID0gMTIuOTg5ODsKICAgIGZsb2F0IGIgPSA3OC4yMzM7CiAgICBmbG9hdCBjID0gNDM3NTguNTQ1MzsKICAgIGZsb2F0IGR0PSBkb3QoY28ueHkgLHZlYzIoYSxiKSk7CiAgICBmbG9hdCBzbj0gbW9kKGR0LDMuMTQpOwogICAgcmV0dXJuIGZyYWN0KHNpbihzbikgKiBjKTsKfQoKdmVjMiBjdXJ2ZSh2ZWMyIHV2KQp7Cgl1diA9ICh1diAtIDAuNSkgKiAyLjA7Cgl1diAqPSAxLjE7CQoJdXYueCAqPSAxLjAgKyBwb3coKGFicyh1di55KSAvIDUuMCksIDIuMCk7Cgl1di55ICo9IDEuMCArIHBvdygoYWJzKHV2LngpIC8gNC4wKSwgMi4wKTsKCXV2ICA9ICh1diAvIDIuMCkgKyAwLjU7Cgl1diA9ICB1diAqMC45MiArIDAuMDQ7CglyZXR1cm4gdXY7Cn0KCnZvaWQgbWFpbigpCnsKICAgIHZlYzIgcSA9ICh2VGV4Q29vcmQueHkgKiBUZXh0dXJlU2l6ZS54eSAvIElucHV0U2l6ZS54eSk7Ly9mcmFnQ29vcmQueHkgLyBpUmVzb2x1dGlvbi54eTsKICAgIHZlYzIgdXYgPSBxOwogICAgdXYgPSBtaXgoIHV2LCBjdXJ2ZSggdXYgKSwgQ1VSVkFUVVJFICkgKiBJbnB1dFNpemUueHkgLyBUZXh0dXJlU2l6ZS54eTsKICAgIHZlYzMgY29sOwoJZmxvYXQgeCA9ICBzaW4oMC4xKmlUaW1lK3V2LnkqMjEuMCkqc2luKDAuMjMqaVRpbWUrdXYueSoyOS4wKSpzaW4oMC4zKzAuMTEqaVRpbWUrdXYueSozMS4wKSowLjAwMTc7CglmbG9hdCBvID0yLjAqbW9kKGZyYWdDb29yZC55LDIuMCkvaVJlc29sdXRpb24ueDsKCXgrPW87CiAgIHV2ID0gdXYgKiBUZXh0dXJlU2l6ZSAvIElucHV0U2l6ZTsKICAgIGNvbC5yID0gMS4wKmJsdXIoaUNoYW5uZWwwLHZlYzIodXYueCswLjAwMDksdXYueSswLjAwMDkpLDEuMikueCswLjAwNTsKICAgIGNvbC5nID0gMS4wKmJsdXIoaUNoYW5uZWwwLHZlYzIodXYueCswLjAwMCx1di55LTAuMDAxNSksMS4yKS55KzAuMDA1OwogICAgY29sLmIgPSAxLjAqYmx1cihpQ2hhbm5lbDAsdmVjMih1di54LTAuMDAxNSx1di55KzAuMDAwKSwxLjIpLnorMC4wMDU7CiAgICBjb2wuciArPSAwLjIqYmx1cihpQ2hhbm5lbDAsdmVjMih1di54KzAuMDAwOSx1di55KzAuMDAwOSksMi4yNSkueC0wLjAwNTsKICAgIGNvbC5nICs9IDAuMipibHVyKGlDaGFubmVsMCx2ZWMyKHV2LngrMC4wMDAsdXYueS0wLjAwMTUpLDEuNzUpLnktMC4wMDU7CiAgICBjb2wuYiArPSAwLjIqYmx1cihpQ2hhbm5lbDAsdmVjMih1di54LTAuMDAxNSx1di55KzAuMDAwKSwxLjI1KS56LTAuMDA1OwogICAgZmxvYXQgZ2hzID0gMC4wNTsKCWNvbC5yICs9IGdocyooMS4wLTAuMjk5KSpibHVyKGlDaGFubmVsMCwwLjc1KnZlYzIoMC4wMSwgLTAuMDI3KSt2ZWMyKHV2LngrMC4wMDEsdXYueSswLjAwMSksNy4wKS54OwogICAgY29sLmcgKz0gZ2hzKigxLjAtMC41ODcpKmJsdXIoaUNoYW5uZWwwLDAuNzUqdmVjMigtMC4wMjIsIC0wLjAyKSt2ZWMyKHV2LngrMC4wMDAsdXYueS0wLjAwMiksNS4wKS55OwogICAgY29sLmIgKz0gZ2hzKigxLjAtMC4xMTQpKmJsdXIoaUNoYW5uZWwwLDAuNzUqdmVjMigtMC4wMiwgLTAuMCkrdmVjMih1di54LTAuMDAyLHV2LnkrMC4wMDApLDMuMCkuejsKICAgIAogICAgCgogICAgY29sID0gY2xhbXAoY29sKjAuNCswLjYqY29sKmNvbCoxLjAsMC4wLDEuMCk7CiAgICBmbG9hdCB2aWcgPSAoMC4wICsgMS4wKjE2LjAqdXYueCp1di55KigxLjAtdXYueCkqKDEuMC11di55KSk7Cgl2aWcgPSBwb3codmlnLDAuMyk7Cgljb2wgKj0gdmVjMyh2aWcpOwoKICAgIGNvbCAqPSB2ZWMzKDAuOTUsMS4wNSwwLjk1KTsKCWNvbCA9IG1peCggY29sLCBjb2wgKiBjb2wsIDAuMykgKiAzLjg7CgoJZmxvYXQgc2NhbnMgPSBjbGFtcCggMC4zNSswLjE1KnNpbigzLjUqKGlUaW1lICogU0NBTlNQRUVEKSt1di55KmlSZXNvbHV0aW9uLnkqMS41KSwgMC4wLCAxLjApOwoJCglmbG9hdCBzID0gcG93KHNjYW5zLDAuOSk7Cgljb2wgPSBjb2wqdmVjMyggcykgOwoKICAgIGNvbCAqPSAxLjArMC4wMDE1KnNpbigzMDAuMCppVGltZSk7CgkKCWNvbCo9MS4wLTAuMTUqdmVjMyhjbGFtcCgobW9kKGZyYWdDb29yZC54K28sIDIuMCktMS4wKSoyLjAsMC4wLDEuMCkpOwoJY29sICo9IHZlYzMoIDEuMCApIC0gMC4yNSp2ZWMzKCByYW5kKCB1diswLjAwMDEqaVRpbWUpLCAgcmFuZCggdXYrMC4wMDAxKmlUaW1lICsgMC4zICksICByYW5kKCB1diswLjAwMDEqaVRpbWUrIDAuNSApICApOwoJY29sID0gcG93KGNvbCwgdmVjMygwLjQ1KSk7CgoJaWYgKHV2LnggPCAwLjAgfHwgdXYueCA+IDEuMCkKCQljb2wgKj0gMC4wOwoJaWYgKHV2LnkgPCAwLjAgfHwgdXYueSA+IDEuMCkKCQljb2wgKj0gMC4wOwoJCgogICAgZmxvYXQgY29tcCA9IHNtb290aHN0ZXAoIDAuMSwgMC45LCBzaW4oaVRpbWUpICk7CgogICAgRnJhZ0NvbG9yID0gdmVjNChjb2wsMS4wKTsKfSAKI2VuZGlmCg=="}]},"crt-beam":{shader:{type:"text",value:'shaders = "1"\nfeedback_pass = "0"\nshader0 = "CRT-Beam.glsl"\nfilter_linear0 = "true"\nwrap_mode0 = "clamp_to_border"\nmipmap_input0 = "false"\nalias0 = ""\nfloat_framebuffer0 = "false"\nsrgb_framebuffer0 = "false"\n\n'},resources:[{name:"CRT-Beam.glsl",type:"base64",value:"LyoKCWNydC1iZWFtCglmb3IgYmVzdCByZXN1bHRzIHVzZSBpbnRlZ2VyIHNjYWxlIDV4IG9yIG1vcmUKKi8KCiNwcmFnbWEgcGFyYW1ldGVyIGJsdXIgIkhvcml6b250YWwgQmx1ci9CZWFtIHNoYXBlIiAwLjYgMC4wIDEuMCAwLjEKI3ByYWdtYSBwYXJhbWV0ZXIgU2NhbmxpbmUgIlNjYW5saW5lIHRoaWNrbmVzcyIgMC4yIDAuMCAxLjAgMC4wNQojcHJhZ21hIHBhcmFtZXRlciB3ZWlnaHRyICJTY2FubGluZSBSZWQgYnJpZ2h0bmVzcyIgMC44IDAuMCAxLjAgMC4wNQojcHJhZ21hIHBhcmFtZXRlciB3ZWlnaHRnICJTY2FubGluZSBHcmVlbiBicmlnaHRuZXNzIiAwLjggMC4wIDEuMCAwLjA1CiNwcmFnbWEgcGFyYW1ldGVyIHdlaWdodGIgIlNjYW5saW5lIEJsdWUgYnJpZ2h0bmVzcyIgMC44IDAuMCAxLjAgMC4wNQojcHJhZ21hIHBhcmFtZXRlciBib2d1c19tc2sgIiBbIE1BU0tTIF0gIiAwLjAgMC4wIDAuMCAwLjAKI3ByYWdtYSBwYXJhbWV0ZXIgbWFzayAiTWFzayAwOkNHV0csMS0yOkxvdHRlcywzLTQgR3JheSw1LTY6Q0dXRyBzbG90LDcgVkdBIiAzLjAgLTEuMCA3LjAgMS4wCiNwcmFnbWEgcGFyYW1ldGVyIG1za19zaXplICJNYXNrIHNpemUiIDEuMCAxLjAgMi4wIDEuMAojcHJhZ21hIHBhcmFtZXRlciBzY2FsZSAiVkdBIE1hc2sgVmVydGljYWwgU2NhbGUiIDIuMCAyLjAwIDEwLjAwIDEuMAojcHJhZ21hIHBhcmFtZXRlciBNYXNrRGFyayAiTG90dGVzIE1hc2sgRGFyayIgMC43IDAuMDAgMi4wMCAwLjEwCiNwcmFnbWEgcGFyYW1ldGVyIE1hc2tMaWdodCAiTG90dGVzIE1hc2sgTGlnaHQiIDEuMCAwLjAwIDIuMDAgMC4xMAojcHJhZ21hIHBhcmFtZXRlciBib2d1c19jb2wgIiBbIENPTE9SIF0gIiAwLjAgMC4wIDAuMCAwLjAKI3ByYWdtYSBwYXJhbWV0ZXIgc2F0ICJTYXR1cmF0aW9uIiAxLjAgMC4wMCAyLjAwIDAuMDUKI3ByYWdtYSBwYXJhbWV0ZXIgYnJpZ2h0ICJCb29zdCBicmlnaHQiIDEuMCAxLjAwIDIuMDAgMC4wNQojcHJhZ21hIHBhcmFtZXRlciBkYXJrICJCb29zdCBkYXJrIiAxLjQ1IDEuMDAgMi4wMCAwLjA1CiNwcmFnbWEgcGFyYW1ldGVyIGdsb3cgIkdsb3cgU3RyZW5ndGgiIDAuMDggMC4wIDAuNSAwLjAxCgoKI2RlZmluZSBwaSAzLjE0MTU5CgojaWZkZWYgR0xfRVMKI2RlZmluZSBDT01QQVRfUFJFQ0lTSU9OIG1lZGl1bXAKcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiNlbHNlCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTgojZW5kaWYKCgp1bmlmb3JtIHZlYzIgVGV4dHVyZVNpemU7CnZhcnlpbmcgdmVjMiBURVgwOwp2YXJ5aW5nIHZlYzIgZnJhZ3BvczsKCiNpZiBkZWZpbmVkKFZFUlRFWCkKdW5pZm9ybSBtYXQ0IE1WUE1hdHJpeDsKYXR0cmlidXRlIHZlYzQgVmVydGV4Q29vcmQ7CmF0dHJpYnV0ZSB2ZWMyIFRleENvb3JkOwp1bmlmb3JtIHZlYzIgSW5wdXRTaXplOwp1bmlmb3JtIHZlYzIgT3V0cHV0U2l6ZTsKCnZvaWQgbWFpbigpCnsKCVRFWDAgPSBUZXhDb29yZCoxLjAwMDE7ICAgICAgICAgICAgICAgICAgICAKCWdsX1Bvc2l0aW9uID0gTVZQTWF0cml4ICogVmVydGV4Q29vcmQ7ICAKCWZyYWdwb3MgPSBURVgwLnh5Kk91dHB1dFNpemUueHkqVGV4dHVyZVNpemUueHkvSW5wdXRTaXplLnh5OyAgIAp9CgojZWxpZiBkZWZpbmVkKEZSQUdNRU5UKQoKdW5pZm9ybSBzYW1wbGVyMkQgVGV4dHVyZTsKdW5pZm9ybSB2ZWMyIE91dHB1dFNpemU7CnVuaWZvcm0gdmVjMiBJbnB1dFNpemU7CgojZGVmaW5lIHZUZXhDb29yZCBURVgwLnh5CiNkZWZpbmUgU291cmNlU2l6ZSB2ZWM0KFRleHR1cmVTaXplLCAxLjAgLyBUZXh0dXJlU2l6ZSkgLy9laXRoZXIgVGV4dHVyZVNpemUgb3IgSW5wdXRTaXplCiNkZWZpbmUgb3V0U2l6ZSB2ZWM0KE91dHB1dFNpemUueHksIDEuMC9PdXRwdXRTaXplLnh5LzQuMCkKI2RlZmluZSBGcmFnQ29sb3IgZ2xfRnJhZ0NvbG9yCiNkZWZpbmUgU291cmNlIFRleHR1cmUKCgojaWZkZWYgUEFSQU1FVEVSX1VOSUZPUk0KCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBibHVyOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgU2NhbmxpbmU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCB3ZWlnaHRyOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgd2VpZ2h0ZzsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IHdlaWdodGI7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBtYXNrOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgc2NhbGU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBtc2tfc2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IE1hc2tEYXJrOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgTWFza0xpZ2h0Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgYnJpZ2h0Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgZGFyazsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IHNhdDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IGdsb3c7CgojZWxzZQoKI2RlZmluZSBibHVyIDAuNgojZGVmaW5lIFNjYW5saW5lIDAuMgojZGVmaW5lIHdlaWdodHIgIDAuMgojZGVmaW5lIHdlaWdodGcgIDAuNgojZGVmaW5lIHdlaWdodGIgIDAuMQojZGVmaW5lIG1hc2sgICAgICA3LjAgICAKI2RlZmluZSBtc2tfc2l6ZSAgMS4wCiNkZWZpbmUgc2NhbGUgICAyLjAKI2RlZmluZSBNYXNrRGFyayAgMC41CiNkZWZpbmUgTWFza0xpZ2h0ICAxLjUKI2RlZmluZSBicmlnaHQgIDEuNQojZGVmaW5lIGRhcmsgIDEuMjUKI2RlZmluZSBnbG93ICAgICAgMC4wNSAgIAojZGVmaW5lIHNhdCAgICAgICAxLjAKCiNlbmRpZgoKdmVjNCBNYXNrICh2ZWMyIHApCnsJCQoJCXAgPSBmbG9vcihwL21za19zaXplKTsKCQlmbG9hdCBtZj1mcmFjdChwLngqMC41KTsKCQlmbG9hdCBtPU1hc2tEYXJrOwoJCXZlYzMgTWFzayA9IHZlYzMgKE1hc2tEYXJrKTsKCi8vIFBob3NwaG9yLgoJaWYgKG1hc2s9PTAuMCkKCXsKCQlpZiAobWYgPCAwLjUpIHJldHVybiB2ZWM0IChNYXNrTGlnaHQsbSxNYXNrTGlnaHQsMS4wKTsgCgkJZWxzZSByZXR1cm4gdmVjNCAobSxNYXNrTGlnaHQsbSwxLjApOwoJfQoKLy8gVmVyeSBjb21wcmVzc2VkIFRWIHN0eWxlIHNoYWRvdyBtYXNrLgoJZWxzZSBpZiAobWFzayA9PSAxLjApCgl7CgkJZmxvYXQgbGluZSA9IE1hc2tMaWdodDsKCQlmbG9hdCBvZGQgID0gMC4wOwoKCQlpZiAoZnJhY3QocC54LzYuMCkgPCAwLjUpCgkJCW9kZCA9IDEuMDsKCQlpZiAoZnJhY3QoKHAueSArIG9kZCkvMi4wKSA8IDAuNSkKCQkJbGluZSA9IE1hc2tEYXJrOwoKCQlwLnggPSBmcmFjdChwLngvMy4wKTsKICAgIAoJCWlmICAgICAgKHAueCA8IDAuMzMzKSBNYXNrLnIgPSBNYXNrTGlnaHQ7CgkJZWxzZSBpZiAocC54IDwgMC42NjYpIE1hc2suZyA9IE1hc2tMaWdodDsKCQllbHNlICAgICAgICAgICAgICAgICAgTWFzay5iID0gTWFza0xpZ2h0OwoJCQoJCU1hc2sqPWxpbmU7CgkJcmV0dXJuIHZlYzQgKE1hc2suciwgTWFzay5nLCBNYXNrLmIsMS4wKTsgIAoJfSAKCi8vIEFwZXJ0dXJlLWdyaWxsZS4KCWVsc2UgaWYgKG1hc2sgPT0gMi4wKQoJewoJCXAueCA9IGZyYWN0KHAueC8zLjApOwoKCQlpZiAgICAgIChwLnggPCAwLjMzMykgTWFzay5yID0gTWFza0xpZ2h0OwoJCWVsc2UgaWYgKHAueCA8IDAuNjY2KSBNYXNrLmcgPSBNYXNrTGlnaHQ7CgkJZWxzZSAgICAgICAgICAgICAgICAgIE1hc2suYiA9IE1hc2tMaWdodDsKCQlyZXR1cm4gdmVjNCAoTWFzay5yLCBNYXNrLmcsIE1hc2suYiwxLjApOyAgCgoJfSAKLy8gZ3JheQoJZWxzZSBpZiAobWFzaz09My4wKQoJewoJCQoJCWlmIChtZiA8IDAuNSkgcmV0dXJuIHZlYzQgKE1hc2tMaWdodCxNYXNrTGlnaHQsTWFza0xpZ2h0LDEuMCk7IAoJCWVsc2UgcmV0dXJuIHZlYzQgKG0sbSxtLDEuMCk7Cgl9Ci8vZ3JheSAzcHgKCWVsc2UgaWYgKG1hc2s9PTQuMCkKCXsKCQlmbG9hdCBtZj1mcmFjdChwLngqMC4zMzMzKTsKCQlpZiAobWYgPCAwLjY2NjYpIHJldHVybiB2ZWM0IChNYXNrTGlnaHQsTWFza0xpZ2h0LE1hc2tMaWdodCwxLjApOyAKCQllbHNlIHJldHVybiB2ZWM0IChtLG0sbSwxLjApOwoJfQovL2Nnd2cgc2xvdAoJZWxzZSBpZiAobWFzayA9PSA1LjApCgl7CgkJZmxvYXQgbGluZSA9IE1hc2tMaWdodDsKCQlmbG9hdCBvZGQgID0gMC4wOwoKCQlpZiAoZnJhY3QocC54LzQuMCkgPCAwLjUpCgkJCW9kZCA9IDEuMDsKCQlpZiAoZnJhY3QoKHAueSArIG9kZCkvMi4wKSA8IDAuNSkKCQkJbGluZSA9IE1hc2tEYXJrOwoKCQlwLnggPSBmcmFjdChwLngvMi4wKTsKICAgIAoJCWlmICAocC54IDwgMC41KSB7TWFzay5yID0gMS4wOyBNYXNrLmIgPSAxLjA7fQoJCWVsc2UgIE1hc2suZyA9IDEuMDsJCgkJTWFzayo9bGluZTsgIAoJCXJldHVybiB2ZWM0IChNYXNrLnIsIE1hc2suZywgTWFzay5iLDEuMCk7ICAKCgl9IAoKLy9jZ3dnIHNsb3QgMTQ0MHAKCWVsc2UgaWYgKG1hc2sgPT0gNi4wKQoJewoJCWZsb2F0IGxpbmUgPSBNYXNrTGlnaHQ7CgkJZmxvYXQgb2RkICA9IDAuMDsKCgkJaWYgKGZyYWN0KHAueC82LjApIDwgMC41KQoJCQlvZGQgPSAxLjA7CgkJaWYgKGZyYWN0KChwLnkgKyBvZGQpLzMuMCkgPCAwLjUpCgkJCWxpbmUgPSBNYXNrRGFyazsKCgkJcC54ID0gZnJhY3QocC54LzIuMCk7CiAgICAKCQlpZiAgKHAueCA8IDAuNSkge01hc2suciA9IE1hc2tMaWdodDsgTWFzay5iID0gTWFza0xpZ2h0O30KCQkJZWxzZSAge01hc2suZyA9IE1hc2tMaWdodDt9CQoJCQoJCU1hc2sqPWxpbmU7IAoJCXJldHVybiB2ZWM0IChNYXNrLnIsIE1hc2suZywgTWFzay5iLDEuMCk7ICAgCgl9IAoKLy9QQyBDUlQgVkdBIHN0eWxlIG1hc2sKCWVsc2UgaWYgKG1hc2sgPT0gNy4wKQoJewoJCWZsb2F0IGxpbmUgPSAxLjA7CgkJcC54ID0gZnJhY3QocC54LzIuMCk7CgoJCWlmIChmcmFjdChwLnkvc2NhbGUpIDwgMC41KQoJCQl7CgkJCQlpZiAgKHAueCA8IDAuNSkge01hc2suciA9IDEuMDsgTWFzay5iID0gMS4wO30KCQkJCWVsc2UgIHtNYXNrLmcgPSAxLjA7fQkKCQkJfQoJCWVsc2UKCQkJewoJCQkJaWYgIChwLnggPCAwLjUpIHtNYXNrLmcgPSAxLjA7fQkKCQkJCWVsc2UgICB7TWFzay5yID0gMS4wOyBNYXNrLmIgPSAxLjA7fQoJfQoJCU1hc2sqPWxpbmU7CgkJcmV0dXJuIHZlYzQgKE1hc2suciwgTWFzay5nLCBNYXNrLmIsMS4wKTsgICAKCgl9IAplbHNlIHJldHVybiB2ZWM0KDEuMCk7Cn0KdmVjMyBib29zdGVyICh2ZWMyIHBvcykKewoJdmVjMiBkeCA9IHZlYzIoU291cmNlU2l6ZS56LDAuMCk7Cgl2ZWMyIGR5ID0gdmVjMigwLjAsU291cmNlU2l6ZS53KTsKCgl2ZWM0IGMwMCA9IHRleHR1cmUyRChTb3VyY2UscG9zKTsKCXZlYzQgYzAxID0gdGV4dHVyZTJEKFNvdXJjZSxwb3MrZHgpOwoJdmVjNCBjMDIgPSB0ZXh0dXJlMkQoU291cmNlLHBvcytkeSk7Cgl2ZWM0IGMwMyA9IHRleHR1cmUyRChTb3VyY2UscG9zK2R4K2R5KTsKCgl2ZWM0IGdsID0gKGMwMCtjMDErYzAyK2MwMykvNC4wOyBnbCAqPWdsOwoJdmVjMyBnbDAgPSBnbC5yZ2I7CglyZXR1cm4gZ2wwKmdsb3c7Cn0KCnZvaWQgbWFpbigpCnsJCgl2ZWMyIHBvcyA9dlRleENvb3JkOwoJdmVjMiBPR0wyUG9zID0gcG9zKlRleHR1cmVTaXplOwoJdmVjMiBjZW50ID0gKGZsb29yKE9HTDJQb3MpKzAuNSkvVGV4dHVyZVNpemU7CglmbG9hdCB4Y29vcmQgPSBtaXgoY2VudC54LHZUZXhDb29yZC54LGJsdXIpOwoJdmVjMiBjb29yZHMgPSB2ZWMyKHhjb29yZCwgY2VudC55KTsKCgl2ZWMzIHJlcz0gdGV4dHVyZTJEKFNvdXJjZSwgY29vcmRzKS5yZ2I7CgoJZmxvYXQgbHVtID0gbWF4KG1heChyZXMucip3ZWlnaHRyLHJlcy5nKndlaWdodGcpLHJlcy5iKndlaWdodGIpOwoJZmxvYXQgZiA9IGZyYWN0KE9HTDJQb3MueSk7CgkKCXJlcyAqPSAxLjAtKGYtMC41KSooZi0wLjUpKjQ1LjAqKFNjYW5saW5lKigxLjAtbHVtKSk7CglyZXMgPSBjbGFtcChyZXMsMC4wLDEuMCk7CgkKCWZsb2F0IGwgPSBkb3QocmVzLHZlYzMoMC4zLDAuNiwwLjEpKTsKCXJlcyA9IG1peCh2ZWMzKGwpLCByZXMsIHNhdCk7CglyZXMgKz0gYm9vc3Rlcihjb29yZHMpOwoJdmVjNCByZXMwID0gdmVjNChyZXMsMS4wKTsgCglyZXMwICo9IE1hc2soZnJhZ3BvcyoxLjAwMDEpOwoJcmVzMCAqPSBtaXgoZGFyayxicmlnaHQsbCk7CgkKCUZyYWdDb2xvciA9IHJlczA7Cn0KI2VuZGlmCg=="}]},"crt-caligari":{shader:{type:"text",value:"shaders = 1\n\nshader0 = crt-caligari.glsl\nfilter_linear0 = false\n"},resources:[{name:"crt-caligari.glsl",type:"base64",value:"Ly8gUGFyYW1ldGVyIGxpbmVzIGdvIGhlcmU6Ci8vIDAuNSA9IHRoZSBzcG90IHN0YXlzIGluc2lkZSB0aGUgb3JpZ2luYWwgcGl4ZWwKLy8gMS4wID0gdGhlIHNwb3QgYmxlZWRzIHVwIHRvIHRoZSBjZW50ZXIgb2YgbmV4dCBwaXhlbAojcHJhZ21hIHBhcmFtZXRlciBTUE9UX1dJRFRIICJDUlRDYWxpZ2FyaSBTcG90IFdpZHRoIiAwLjkgMC41IDEuNSAwLjA1CiNwcmFnbWEgcGFyYW1ldGVyIFNQT1RfSEVJR0hUICJDUlRDYWxpZ2FyaSBTcG90IEhlaWdodCIgMC42NSAwLjUgMS41IDAuMDUKLy8gVXNlZCB0byBjb3VudGVyYWN0IHRoZSBkZXNhdHVyYXRpb24gZWZmZWN0IG9mIHdlaWdodGluZy4KI3ByYWdtYSBwYXJhbWV0ZXIgQ09MT1JfQk9PU1QgIkNSVENhbGlnYXJpIENvbG9yIEJvb3N0IiAxLjQ1IDEuMCAyLjAgMC4wNQovLyBDb25zdGFudHMgdXNlZCB3aXRoIGdhbW1hIGNvcnJlY3Rpb24uCiNwcmFnbWEgcGFyYW1ldGVyIElucHV0R2FtbWEgIkNSVENhbGlnYXJpIElucHV0IEdhbW1hIiAyLjQgMC4wIDUuMCAwLjEKI3ByYWdtYSBwYXJhbWV0ZXIgT3V0cHV0R2FtbWEgIkNSVENhbGlnYXJpIE91dHB1dCBHYW1tYSIgMi4yIDAuMCA1LjAgMC4xCgojaWYgZGVmaW5lZChWRVJURVgpCgojaWYgX19WRVJTSU9OX18gPj0gMTMwCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgb3V0CiNkZWZpbmUgQ09NUEFUX0FUVFJJQlVURSBpbgojZGVmaW5lIENPTVBBVF9URVhUVVJFIHRleHR1cmUKI2Vsc2UKI2RlZmluZSBDT01QQVRfVkFSWUlORyB2YXJ5aW5nIAojZGVmaW5lIENPTVBBVF9BVFRSSUJVVEUgYXR0cmlidXRlIAojZGVmaW5lIENPTVBBVF9URVhUVVJFIHRleHR1cmUyRAojZW5kaWYKCiNpZmRlZiBHTF9FUwojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04gbWVkaXVtcAojZWxzZQojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04KI2VuZGlmCgpDT01QQVRfQVRUUklCVVRFIHZlYzQgVmVydGV4Q29vcmQ7CkNPTVBBVF9BVFRSSUJVVEUgdmVjNCBDT0xPUjsKQ09NUEFUX0FUVFJJQlVURSB2ZWM0IFRleENvb3JkOwpDT01QQVRfVkFSWUlORyB2ZWM0IENPTDA7CkNPTVBBVF9WQVJZSU5HIHZlYzQgVEVYMDsKQ09NUEFUX1ZBUllJTkcgdmVjMiBvbmV4OwpDT01QQVRfVkFSWUlORyB2ZWMyIG9uZXk7Cgp2ZWM0IF9vUG9zaXRpb24xOyAKdW5pZm9ybSBtYXQ0IE1WUE1hdHJpeDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZURpcmVjdGlvbjsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZUNvdW50Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBPdXRwdXRTaXplOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBUZXh0dXJlU2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgSW5wdXRTaXplOwoKI2RlZmluZSBTb3VyY2VTaXplIHZlYzQoVGV4dHVyZVNpemUsIDEuMCAvIFRleHR1cmVTaXplKSAvL2VpdGhlciBUZXh0dXJlU2l6ZSBvciBJbnB1dFNpemUKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gTVZQTWF0cml4ICogVmVydGV4Q29vcmQ7CiAgICBDT0wwID0gQ09MT1I7CiAgICBURVgwLnh5ID0gVGV4Q29vcmQueHk7CiAgIG9uZXggPSB2ZWMyKFNvdXJjZVNpemUueiwgMC4wKTsKICAgb25leSA9IHZlYzIoMC4wLCBTb3VyY2VTaXplLncpOwp9CgojZWxpZiBkZWZpbmVkKEZSQUdNRU5UKQoKI2lmIF9fVkVSU0lPTl9fID49IDEzMAojZGVmaW5lIENPTVBBVF9WQVJZSU5HIGluCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZQpvdXQgdmVjNCBGcmFnQ29sb3I7CiNlbHNlCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgdmFyeWluZwojZGVmaW5lIEZyYWdDb2xvciBnbF9GcmFnQ29sb3IKI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlMkQKI2VuZGlmCgojaWZkZWYgR0xfRVMKI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdICnByZWNpc2lvbiBoaWdocCBmbG9hdDsKI2Vsc2UKcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiNlbmRpZgojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04gbWVkaXVtcAojZWxzZQojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04KI2VuZGlmCgp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lRGlyZWN0aW9uOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lQ291bnQ7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIE91dHB1dFNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIFRleHR1cmVTaXplOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBJbnB1dFNpemU7CnVuaWZvcm0gc2FtcGxlcjJEIFRleHR1cmU7CkNPTVBBVF9WQVJZSU5HIHZlYzQgVEVYMDsKQ09NUEFUX1ZBUllJTkcgdmVjMiBvbmV4OwpDT01QQVRfVkFSWUlORyB2ZWMyIG9uZXk7CgovLyBjb21wYXRpYmlsaXR5ICNkZWZpbmVzCiNkZWZpbmUgU291cmNlIFRleHR1cmUKI2RlZmluZSB2VGV4Q29vcmQgVEVYMC54eQoKI2RlZmluZSBTb3VyY2VTaXplIHZlYzQoVGV4dHVyZVNpemUsIDEuMCAvIFRleHR1cmVTaXplKSAvL2VpdGhlciBUZXh0dXJlU2l6ZSBvciBJbnB1dFNpemUKI2RlZmluZSBPdXRwdXRTaXplIHZlYzQoT3V0cHV0U2l6ZSwgMS4wIC8gT3V0cHV0U2l6ZSkKCiNpZmRlZiBQQVJBTUVURVJfVU5JRk9STQovLyBBbGwgcGFyYW1ldGVyIGZsb2F0cyBuZWVkIHRvIGhhdmUgQ09NUEFUX1BSRUNJU0lPTiBpbiBmcm9udCBvZiB0aGVtCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBTUE9UX1dJRFRIOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgU1BPVF9IRUlHSFQ7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBDT0xPUl9CT09TVDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IElucHV0R2FtbWE7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBPdXRwdXRHYW1tYTsKI2Vsc2UKI2RlZmluZSBTUE9UX1dJRFRIIDAuOQojZGVmaW5lIFNQT1RfSEVJR0hUIDAuNjUKI2RlZmluZSBDT0xPUl9CT09TVCAxLjQ1CiNkZWZpbmUgSW5wdXRHYW1tYSAyLjQKI2RlZmluZSBPdXRwdXRHYW1tYSAyLjIKI2VuZGlmCgojZGVmaW5lIEdBTU1BX0lOKGNvbG9yKSAgICAgcG93KGNvbG9yLHZlYzQoSW5wdXRHYW1tYSkpCiNkZWZpbmUgR0FNTUFfT1VUKGNvbG9yKSAgICBwb3coY29sb3IsIHZlYzQoMS4wIC8gT3V0cHV0R2FtbWEpKQoKI2RlZmluZSBURVgyRChjb29yZHMpCUdBTU1BX0lOKCBDT01QQVRfVEVYVFVSRShTb3VyY2UsIGNvb3JkcykgKQoKLy8gTWFjcm8gZm9yIHdlaWdodHMgY29tcHV0aW5nCiNkZWZpbmUgV0VJR0hUKHcpIFwKICAgaWYodz4xLjApIHc9MS4wOyBcCncgPSAxLjAgLSB3ICogdzsgXAp3ID0gdyAqIHc7Cgp2b2lkIG1haW4oKQp7CiAgIHZlYzIgY29vcmRzID0gKCB2VGV4Q29vcmQgKiBTb3VyY2VTaXplLnh5ICk7CiAgIHZlYzIgcGl4ZWxfY2VudGVyID0gZmxvb3IoIGNvb3JkcyApICsgdmVjMigwLjUsIDAuNSk7CiAgIHZlYzIgdGV4dHVyZV9jb29yZHMgPSBwaXhlbF9jZW50ZXIgKiBTb3VyY2VTaXplLnp3OwoKICAgdmVjNCBjb2xvciA9IFRFWDJEKCB0ZXh0dXJlX2Nvb3JkcyApOwoKICAgZmxvYXQgZHggPSBjb29yZHMueCAtIHBpeGVsX2NlbnRlci54OwoKICAgZmxvYXQgaF93ZWlnaHRfMDAgPSBkeCAvIFNQT1RfV0lEVEg7CiAgIFdFSUdIVCggaF93ZWlnaHRfMDAgKTsKCiAgIGNvbG9yICo9IHZlYzQoIGhfd2VpZ2h0XzAwLCBoX3dlaWdodF8wMCwgaF93ZWlnaHRfMDAsIGhfd2VpZ2h0XzAwICApOwoKICAgLy8gZ2V0IGNsb3Nlc3QgaG9yaXpvbnRhbCBuZWlnaGJvdXIgdG8gYmxlbmQKICAgdmVjMiBjb29yZHMwMTsKICAgaWYgKGR4PjAuMCkgewogICAgICBjb29yZHMwMSA9IG9uZXg7CiAgICAgIGR4ID0gMS4wIC0gZHg7CiAgIH0gZWxzZSB7CiAgICAgIGNvb3JkczAxID0gLW9uZXg7CiAgICAgIGR4ID0gMS4wICsgZHg7CiAgIH0KICAgdmVjNCBjb2xvck5CID0gVEVYMkQoIHRleHR1cmVfY29vcmRzICsgY29vcmRzMDEgKTsKCiAgIGZsb2F0IGhfd2VpZ2h0XzAxID0gZHggLyBTUE9UX1dJRFRIOwogICBXRUlHSFQoIGhfd2VpZ2h0XzAxICk7CgogICBjb2xvciA9IGNvbG9yICsgY29sb3JOQiAqIHZlYzQoIGhfd2VpZ2h0XzAxICk7CgogICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgLy8gVmVydGljYWwgQmxlbmRpbmcKICAgZmxvYXQgZHkgPSBjb29yZHMueSAtIHBpeGVsX2NlbnRlci55OwogICBmbG9hdCB2X3dlaWdodF8wMCA9IGR5IC8gU1BPVF9IRUlHSFQ7CiAgIFdFSUdIVCggdl93ZWlnaHRfMDAgKTsKICAgY29sb3IgKj0gdmVjNCggdl93ZWlnaHRfMDAgKTsKCiAgIC8vIGdldCBjbG9zZXN0IHZlcnRpY2FsIG5laWdoYm91ciB0byBibGVuZAogICB2ZWMyIGNvb3JkczEwOwogICBpZiAoZHk+MC4wKSB7CiAgICAgIGNvb3JkczEwID0gb25leTsKICAgICAgZHkgPSAxLjAgLSBkeTsKICAgfSBlbHNlIHsKICAgICAgY29vcmRzMTAgPSAtb25leTsKICAgICAgZHkgPSAxLjAgKyBkeTsKICAgfQogICBjb2xvck5CID0gVEVYMkQoIHRleHR1cmVfY29vcmRzICsgY29vcmRzMTAgKTsKCiAgIGZsb2F0IHZfd2VpZ2h0XzEwID0gZHkgLyBTUE9UX0hFSUdIVDsKICAgV0VJR0hUKCB2X3dlaWdodF8xMCApOwoKICAgY29sb3IgPSBjb2xvciArIGNvbG9yTkIgKiB2ZWM0KCB2X3dlaWdodF8xMCAqIGhfd2VpZ2h0XzAwLCB2X3dlaWdodF8xMCAqIGhfd2VpZ2h0XzAwLCB2X3dlaWdodF8xMCAqIGhfd2VpZ2h0XzAwLCB2X3dlaWdodF8xMCAqIGhfd2VpZ2h0XzAwICk7CgogICBjb2xvck5CID0gVEVYMkQoICB0ZXh0dXJlX2Nvb3JkcyArIGNvb3JkczAxICsgY29vcmRzMTAgKTsKCiAgIGNvbG9yID0gY29sb3IgKyBjb2xvck5CICogdmVjNCggdl93ZWlnaHRfMTAgKiBoX3dlaWdodF8wMSwgdl93ZWlnaHRfMTAgKiBoX3dlaWdodF8wMSwgdl93ZWlnaHRfMTAgKiBoX3dlaWdodF8wMSwgdl93ZWlnaHRfMTAgKiBoX3dlaWdodF8wMSApOwoKICAgY29sb3IgKj0gdmVjNCggQ09MT1JfQk9PU1QgKTsKCiAgIEZyYWdDb2xvciA9IGNsYW1wKCBHQU1NQV9PVVQoY29sb3IpLCAwLjAsIDEuMCApOwp9IAojZW5kaWYK"}]},"crt-lottes":{shader:{type:"text",value:"shaders = 1\n\nshader0 = crt-lottes.glsl\nfilter_linear0 = false\n"},resources:[{name:"crt-lottes.glsl",type:"base64",value:"Ly8gUGFyYW1ldGVyIGxpbmVzIGdvIGhlcmU6CiNwcmFnbWEgcGFyYW1ldGVyIGhhcmRTY2FuICJoYXJkU2NhbiIgLTguMCAtMjAuMCAwLjAgMS4wCiNwcmFnbWEgcGFyYW1ldGVyIGhhcmRQaXggImhhcmRQaXgiIC0zLjAgLTIwLjAgMC4wIDEuMAojcHJhZ21hIHBhcmFtZXRlciB3YXJwWCAid2FycFgiIDAuMDMxIDAuMCAwLjEyNSAwLjAxCiNwcmFnbWEgcGFyYW1ldGVyIHdhcnBZICJ3YXJwWSIgMC4wNDEgMC4wIDAuMTI1IDAuMDEKI3ByYWdtYSBwYXJhbWV0ZXIgbWFza0RhcmsgIm1hc2tEYXJrIiAwLjUgMC4wIDIuMCAwLjEKI3ByYWdtYSBwYXJhbWV0ZXIgbWFza0xpZ2h0ICJtYXNrTGlnaHQiIDEuNSAwLjAgMi4wIDAuMQojcHJhZ21hIHBhcmFtZXRlciBzY2FsZUluTGluZWFyR2FtbWEgInNjYWxlSW5MaW5lYXJHYW1tYSIgMS4wIDAuMCAxLjAgMS4wCiNwcmFnbWEgcGFyYW1ldGVyIHNoYWRvd01hc2sgInNoYWRvd01hc2siIDMuMCAwLjAgNC4wIDEuMAojcHJhZ21hIHBhcmFtZXRlciBicmlnaHRCb29zdCAiYnJpZ2h0bmVzcyBib29zdCIgMS4wIDAuMCAyLjAgMC4wNQojcHJhZ21hIHBhcmFtZXRlciBoYXJkQmxvb21QaXggImJsb29tLXggc29mdCIgLTEuNSAtMi4wIC0wLjUgMC4xCiNwcmFnbWEgcGFyYW1ldGVyIGhhcmRCbG9vbVNjYW4gImJsb29tLXkgc29mdCIgLTIuMCAtNC4wIC0xLjAgMC4xCiNwcmFnbWEgcGFyYW1ldGVyIGJsb29tQW1vdW50ICJibG9vbSBhbW1vdW50IiAwLjE1IDAuMCAxLjAgMC4wNQojcHJhZ21hIHBhcmFtZXRlciBzaGFwZSAiZmlsdGVyIGtlcm5lbCBzaGFwZSIgMi4wIDAuMCAxMC4wIDAuMDUKCiNpZiBkZWZpbmVkKFZFUlRFWCkKCiNpZiBfX1ZFUlNJT05fXyA+PSAxMzAKI2RlZmluZSBDT01QQVRfVkFSWUlORyBvdXQKI2RlZmluZSBDT01QQVRfQVRUUklCVVRFIGluCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZQojZWxzZQojZGVmaW5lIENPTVBBVF9WQVJZSU5HIHZhcnlpbmcgCiNkZWZpbmUgQ09NUEFUX0FUVFJJQlVURSBhdHRyaWJ1dGUgCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZTJECiNlbmRpZgoKI2lmZGVmIEdMX0VTCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTiBtZWRpdW1wCiNlbHNlCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTgojZW5kaWYKCkNPTVBBVF9BVFRSSUJVVEUgdmVjNCBWZXJ0ZXhDb29yZDsKQ09NUEFUX0FUVFJJQlVURSB2ZWM0IENPTE9SOwpDT01QQVRfQVRUUklCVVRFIHZlYzQgVGV4Q29vcmQ7CkNPTVBBVF9WQVJZSU5HIHZlYzQgQ09MMDsKQ09NUEFUX1ZBUllJTkcgdmVjNCBURVgwOwoKdW5pZm9ybSBtYXQ0IE1WUE1hdHJpeDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZURpcmVjdGlvbjsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZUNvdW50Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBPdXRwdXRTaXplOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBUZXh0dXJlU2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgSW5wdXRTaXplOwoKLy8gdmVydGV4IGNvbXBhdGliaWxpdHkgI2RlZmluZXMKI2RlZmluZSB2VGV4Q29vcmQgVEVYMC54eQojZGVmaW5lIFNvdXJjZVNpemUgdmVjNChUZXh0dXJlU2l6ZSwgMS4wIC8gVGV4dHVyZVNpemUpIC8vZWl0aGVyIFRleHR1cmVTaXplIG9yIElucHV0U2l6ZQojZGVmaW5lIG91dHNpemUgdmVjNChPdXRwdXRTaXplLCAxLjAgLyBPdXRwdXRTaXplKQoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBNVlBNYXRyaXggKiBWZXJ0ZXhDb29yZDsKICAgIFRFWDAueHkgPSBUZXhDb29yZC54eTsKfQoKI2VsaWYgZGVmaW5lZChGUkFHTUVOVCkKCiNpZiBfX1ZFUlNJT05fXyA+PSAxMzAKI2RlZmluZSBDT01QQVRfVkFSWUlORyBpbgojZGVmaW5lIENPTVBBVF9URVhUVVJFIHRleHR1cmUKb3V0IHZlYzQgRnJhZ0NvbG9yOwojZWxzZQojZGVmaW5lIENPTVBBVF9WQVJZSU5HIHZhcnlpbmcKI2RlZmluZSBGcmFnQ29sb3IgZ2xfRnJhZ0NvbG9yCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZTJECiNlbmRpZgoKI2lmZGVmIEdMX0VTCiNpZmRlZiBHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSApwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CiNlbHNlCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwojZW5kaWYKI2RlZmluZSBDT01QQVRfUFJFQ0lTSU9OIG1lZGl1bXAKI2Vsc2UKI2RlZmluZSBDT01QQVRfUFJFQ0lTSU9OCiNlbmRpZgoKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZURpcmVjdGlvbjsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZUNvdW50Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBPdXRwdXRTaXplOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBUZXh0dXJlU2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgSW5wdXRTaXplOwp1bmlmb3JtIHNhbXBsZXIyRCBUZXh0dXJlOwpDT01QQVRfVkFSWUlORyB2ZWM0IFRFWDA7CgovLyBmcmFnbWVudCBjb21wYXRpYmlsaXR5ICNkZWZpbmVzCiNkZWZpbmUgU291cmNlIFRleHR1cmUKI2RlZmluZSB2VGV4Q29vcmQgVEVYMC54eQoKI2RlZmluZSBTb3VyY2VTaXplIHZlYzQoVGV4dHVyZVNpemUsIDEuMCAvIFRleHR1cmVTaXplKSAvL2VpdGhlciBUZXh0dXJlU2l6ZSBvciBJbnB1dFNpemUKI2RlZmluZSBvdXRzaXplIHZlYzQoT3V0cHV0U2l6ZSwgMS4wIC8gT3V0cHV0U2l6ZSkKCiNpZmRlZiBQQVJBTUVURVJfVU5JRk9STQovLyBBbGwgcGFyYW1ldGVyIGZsb2F0cyBuZWVkIHRvIGhhdmUgQ09NUEFUX1BSRUNJU0lPTiBpbiBmcm9udCBvZiB0aGVtCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBoYXJkU2NhbjsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IGhhcmRQaXg7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCB3YXJwWDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IHdhcnBZOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgbWFza0Rhcms7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBtYXNrTGlnaHQ7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBzY2FsZUluTGluZWFyR2FtbWE7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBzaGFkb3dNYXNrOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgYnJpZ2h0Qm9vc3Q7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBoYXJkQmxvb21QaXg7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBoYXJkQmxvb21TY2FuOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgYmxvb21BbW91bnQ7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBzaGFwZTsKI2Vsc2UKI2RlZmluZSBoYXJkU2NhbiAtOC4wCiNkZWZpbmUgaGFyZFBpeCAtMy4wCiNkZWZpbmUgd2FycFggMC4wMzEKI2RlZmluZSB3YXJwWSAwLjA0MQojZGVmaW5lIG1hc2tEYXJrIDAuNQojZGVmaW5lIG1hc2tMaWdodCAxLjUKI2RlZmluZSBzY2FsZUluTGluZWFyR2FtbWEgMS4wCiNkZWZpbmUgc2hhZG93TWFzayAzLjAKI2RlZmluZSBicmlnaHRCb29zdCAxLjAKI2RlZmluZSBoYXJkQmxvb21QaXggLTEuNQojZGVmaW5lIGhhcmRCbG9vbVNjYW4gLTIuMAojZGVmaW5lIGJsb29tQW1vdW50IDAuMTUKI2RlZmluZSBzaGFwZSAyLjAKI2VuZGlmCgovL1VuY29tbWVudCB0byByZWR1Y2UgaW5zdHJ1Y3Rpb25zIHdpdGggc2ltcGxlciBsaW5lYXJpemF0aW9uCi8vKGZpeGVzIEhEMzAwMCBTYW5keSBCcmlkZ2UgSUdQKQovLyNkZWZpbmUgU0lNUExFX0xJTkVBUl9HQU1NQQojZGVmaW5lIERPX0JMT09NCgovLyAtLS0tLS0tLS0tLS0tIC8vCgovLyBzUkdCIHRvIExpbmVhci4KLy8gQXNzdW1pbmcgdXNpbmcgc1JHQiB0eXBlZCB0ZXh0dXJlcyB0aGlzIHNob3VsZCBub3QgYmUgbmVlZGVkLgojaWZkZWYgU0lNUExFX0xJTkVBUl9HQU1NQQpmbG9hdCBUb0xpbmVhcjEoZmxvYXQgYykKewogICAgcmV0dXJuIGM7Cn0KdmVjMyBUb0xpbmVhcih2ZWMzIGMpCnsKICAgIHJldHVybiBjOwp9CnZlYzMgVG9TcmdiKHZlYzMgYykKewogICAgcmV0dXJuIHBvdyhjLCB2ZWMzKDEuMCAvIDIuMikpOwp9CiNlbHNlCmZsb2F0IFRvTGluZWFyMShmbG9hdCBjKQp7CiAgICBpZiAoc2NhbGVJbkxpbmVhckdhbW1hID09IDAuKSAKICAgICAgICByZXR1cm4gYzsKICAgIAogICAgcmV0dXJuKGM8PTAuMDQwNDUpID8gYy8xMi45MiA6IHBvdygoYyArIDAuMDU1KS8xLjA1NSwgMi40KTsKfQoKdmVjMyBUb0xpbmVhcih2ZWMzIGMpCnsKICAgIGlmIChzY2FsZUluTGluZWFyR2FtbWE9PTAuKSAKICAgICAgICByZXR1cm4gYzsKICAgIAogICAgcmV0dXJuIHZlYzMoVG9MaW5lYXIxKGMuciksIFRvTGluZWFyMShjLmcpLCBUb0xpbmVhcjEoYy5iKSk7Cn0KCi8vIExpbmVhciB0byBzUkdCLgovLyBBc3N1bWluZyB1c2luZyBzUkdCIHR5cGVkIHRleHR1cmVzIHRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQuCmZsb2F0IFRvU3JnYjEoZmxvYXQgYykKewogICAgaWYgKHNjYWxlSW5MaW5lYXJHYW1tYSA9PSAwLikgCiAgICAgICAgcmV0dXJuIGM7CiAgICAKICAgIHJldHVybihjPDAuMDAzMTMwOCA/IGMqMTIuOTIgOiAxLjA1NSpwb3coYywgMC40MTY2NikgLSAwLjA1NSk7Cn0KCnZlYzMgVG9TcmdiKHZlYzMgYykKewogICAgaWYgKHNjYWxlSW5MaW5lYXJHYW1tYSA9PSAwLikgCiAgICAgICAgcmV0dXJuIGM7CiAgICAKICAgIHJldHVybiB2ZWMzKFRvU3JnYjEoYy5yKSwgVG9TcmdiMShjLmcpLCBUb1NyZ2IxKGMuYikpOwp9CiNlbmRpZgoKLy8gTmVhcmVzdCBlbXVsYXRlZCBzYW1wbGUgZ2l2ZW4gZmxvYXRpbmcgcG9pbnQgcG9zaXRpb24gYW5kIHRleGVsIG9mZnNldC4KLy8gQWxzbyB6ZXJvJ3Mgb2ZmIHNjcmVlbi4KdmVjMyBGZXRjaCh2ZWMyIHBvcyx2ZWMyIG9mZil7CiAgcG9zPShmbG9vcihwb3MqU291cmNlU2l6ZS54eStvZmYpK3ZlYzIoMC41LDAuNSkpL1NvdXJjZVNpemUueHk7CiNpZmRlZiBTSU1QTEVfTElORUFSX0dBTU1BCiAgcmV0dXJuIFRvTGluZWFyKGJyaWdodEJvb3N0ICogcG93KENPTVBBVF9URVhUVVJFKFNvdXJjZSxwb3MueHkpLnJnYiwgdmVjMygyLjIpKSk7CiNlbHNlCiAgcmV0dXJuIFRvTGluZWFyKGJyaWdodEJvb3N0ICogQ09NUEFUX1RFWFRVUkUoU291cmNlLHBvcy54eSkucmdiKTsKI2VuZGlmCn0KCi8vIERpc3RhbmNlIGluIGVtdWxhdGVkIHBpeGVscyB0byBuZWFyZXN0IHRleGVsLgp2ZWMyIERpc3QodmVjMiBwb3MpCnsKICAgIHBvcyA9IHBvcypTb3VyY2VTaXplLnh5OwogICAgCiAgICByZXR1cm4gLSgocG9zIC0gZmxvb3IocG9zKSkgLSB2ZWMyKDAuNSkpOwp9CiAgICAKLy8gMUQgR2F1c3NpYW4uCmZsb2F0IEdhdXMoZmxvYXQgcG9zLCBmbG9hdCBzY2FsZSkKewogICAgcmV0dXJuIGV4cDIoc2NhbGUqcG93KGFicyhwb3MpLCBzaGFwZSkpOwp9CgovLyAzLXRhcCBHYXVzc2lhbiBmaWx0ZXIgYWxvbmcgaG9yeiBsaW5lLgp2ZWMzIEhvcnozKHZlYzIgcG9zLCBmbG9hdCBvZmYpCnsKICAgIHZlYzMgYiAgICA9IEZldGNoKHBvcywgdmVjMigtMS4wLCBvZmYpKTsKICAgIHZlYzMgYyAgICA9IEZldGNoKHBvcywgdmVjMiggMC4wLCBvZmYpKTsKICAgIHZlYzMgZCAgICA9IEZldGNoKHBvcywgdmVjMiggMS4wLCBvZmYpKTsKICAgIGZsb2F0IGRzdCA9IERpc3QocG9zKS54OwoKICAgIC8vIENvbnZlcnQgZGlzdGFuY2UgdG8gd2VpZ2h0LgogICAgZmxvYXQgc2NhbGUgPSBoYXJkUGl4OwogICAgZmxvYXQgd2IgPSBHYXVzKGRzdC0xLjAsc2NhbGUpOwogICAgZmxvYXQgd2MgPSBHYXVzKGRzdCswLjAsc2NhbGUpOwogICAgZmxvYXQgd2QgPSBHYXVzKGRzdCsxLjAsc2NhbGUpOwoKICAgIC8vIFJldHVybiBmaWx0ZXJlZCBzYW1wbGUuCiAgICByZXR1cm4gKGIqd2IrYyp3YytkKndkKS8od2Ird2Mrd2QpOwp9CgovLyA1LXRhcCBHYXVzc2lhbiBmaWx0ZXIgYWxvbmcgaG9yeiBsaW5lLgp2ZWMzIEhvcno1KHZlYzIgcG9zLGZsb2F0IG9mZil7CiAgICB2ZWMzIGEgPSBGZXRjaChwb3MsdmVjMigtMi4wLCBvZmYpKTsKICAgIHZlYzMgYiA9IEZldGNoKHBvcyx2ZWMyKC0xLjAsIG9mZikpOwogICAgdmVjMyBjID0gRmV0Y2gocG9zLHZlYzIoIDAuMCwgb2ZmKSk7CiAgICB2ZWMzIGQgPSBGZXRjaChwb3MsdmVjMiggMS4wLCBvZmYpKTsKICAgIHZlYzMgZSA9IEZldGNoKHBvcyx2ZWMyKCAyLjAsIG9mZikpOwogICAgCiAgICBmbG9hdCBkc3QgPSBEaXN0KHBvcykueDsKICAgIC8vIENvbnZlcnQgZGlzdGFuY2UgdG8gd2VpZ2h0LgogICAgZmxvYXQgc2NhbGUgPSBoYXJkUGl4OwogICAgZmxvYXQgd2EgPSBHYXVzKGRzdCAtIDIuMCwgc2NhbGUpOwogICAgZmxvYXQgd2IgPSBHYXVzKGRzdCAtIDEuMCwgc2NhbGUpOwogICAgZmxvYXQgd2MgPSBHYXVzKGRzdCArIDAuMCwgc2NhbGUpOwogICAgZmxvYXQgd2QgPSBHYXVzKGRzdCArIDEuMCwgc2NhbGUpOwogICAgZmxvYXQgd2UgPSBHYXVzKGRzdCArIDIuMCwgc2NhbGUpOwogICAgCiAgICAvLyBSZXR1cm4gZmlsdGVyZWQgc2FtcGxlLgogICAgcmV0dXJuIChhKndhK2Iqd2IrYyp3YytkKndkK2Uqd2UpLyh3YSt3Yit3Yyt3ZCt3ZSk7Cn0KICAKLy8gNy10YXAgR2F1c3NpYW4gZmlsdGVyIGFsb25nIGhvcnogbGluZS4KdmVjMyBIb3J6Nyh2ZWMyIHBvcyxmbG9hdCBvZmYpCnsKICAgIHZlYzMgYSA9IEZldGNoKHBvcywgdmVjMigtMy4wLCBvZmYpKTsKICAgIHZlYzMgYiA9IEZldGNoKHBvcywgdmVjMigtMi4wLCBvZmYpKTsKICAgIHZlYzMgYyA9IEZldGNoKHBvcywgdmVjMigtMS4wLCBvZmYpKTsKICAgIHZlYzMgZCA9IEZldGNoKHBvcywgdmVjMiggMC4wLCBvZmYpKTsKICAgIHZlYzMgZSA9IEZldGNoKHBvcywgdmVjMiggMS4wLCBvZmYpKTsKICAgIHZlYzMgZiA9IEZldGNoKHBvcywgdmVjMiggMi4wLCBvZmYpKTsKICAgIHZlYzMgZyA9IEZldGNoKHBvcywgdmVjMiggMy4wLCBvZmYpKTsKCiAgICBmbG9hdCBkc3QgPSBEaXN0KHBvcykueDsKICAgIC8vIENvbnZlcnQgZGlzdGFuY2UgdG8gd2VpZ2h0LgogICAgZmxvYXQgc2NhbGUgPSBoYXJkQmxvb21QaXg7CiAgICBmbG9hdCB3YSA9IEdhdXMoZHN0IC0gMy4wLCBzY2FsZSk7CiAgICBmbG9hdCB3YiA9IEdhdXMoZHN0IC0gMi4wLCBzY2FsZSk7CiAgICBmbG9hdCB3YyA9IEdhdXMoZHN0IC0gMS4wLCBzY2FsZSk7CiAgICBmbG9hdCB3ZCA9IEdhdXMoZHN0ICsgMC4wLCBzY2FsZSk7CiAgICBmbG9hdCB3ZSA9IEdhdXMoZHN0ICsgMS4wLCBzY2FsZSk7CiAgICBmbG9hdCB3ZiA9IEdhdXMoZHN0ICsgMi4wLCBzY2FsZSk7CiAgICBmbG9hdCB3ZyA9IEdhdXMoZHN0ICsgMy4wLCBzY2FsZSk7CgogICAgLy8gUmV0dXJuIGZpbHRlcmVkIHNhbXBsZS4KICAgIHJldHVybiAoYSp3YStiKndiK2Mqd2MrZCp3ZCtlKndlK2Yqd2YrZyp3ZykvKHdhK3diK3djK3dkK3dlK3dmK3dnKTsKfQogIAovLyBSZXR1cm4gc2NhbmxpbmUgd2VpZ2h0LgpmbG9hdCBTY2FuKHZlYzIgcG9zLCBmbG9hdCBvZmYpCnsKICAgIGZsb2F0IGRzdCA9IERpc3QocG9zKS55OwoKICAgIHJldHVybiBHYXVzKGRzdCArIG9mZiwgaGFyZFNjYW4pOwp9CiAgCi8vIFJldHVybiBzY2FubGluZSB3ZWlnaHQgZm9yIGJsb29tLgpmbG9hdCBCbG9vbVNjYW4odmVjMiBwb3MsIGZsb2F0IG9mZikKewogICAgZmxvYXQgZHN0ID0gRGlzdChwb3MpLnk7CiAgICAKICAgIHJldHVybiBHYXVzKGRzdCArIG9mZiwgaGFyZEJsb29tU2Nhbik7Cn0KCi8vIEFsbG93IG5lYXJlc3QgdGhyZWUgbGluZXMgdG8gZWZmZWN0IHBpeGVsLgp2ZWMzIFRyaSh2ZWMyIHBvcykKewogICAgdmVjMyBhID0gSG9yejMocG9zLC0xLjApOwogICAgdmVjMyBiID0gSG9yejUocG9zLCAwLjApOwogICAgdmVjMyBjID0gSG9yejMocG9zLCAxLjApOwogICAgCiAgICBmbG9hdCB3YSA9IFNjYW4ocG9zLC0xLjApOyAKICAgIGZsb2F0IHdiID0gU2Nhbihwb3MsIDAuMCk7CiAgICBmbG9hdCB3YyA9IFNjYW4ocG9zLCAxLjApOwogICAgCiAgICByZXR1cm4gYSp3YSArIGIqd2IgKyBjKndjOwp9CiAgCi8vIFNtYWxsIGJsb29tLgp2ZWMzIEJsb29tKHZlYzIgcG9zKQp7CiAgICB2ZWMzIGEgPSBIb3J6NShwb3MsLTIuMCk7CiAgICB2ZWMzIGIgPSBIb3J6Nyhwb3MsLTEuMCk7CiAgICB2ZWMzIGMgPSBIb3J6Nyhwb3MsIDAuMCk7CiAgICB2ZWMzIGQgPSBIb3J6Nyhwb3MsIDEuMCk7CiAgICB2ZWMzIGUgPSBIb3J6NShwb3MsIDIuMCk7CgogICAgZmxvYXQgd2EgPSBCbG9vbVNjYW4ocG9zLC0yLjApOwogICAgZmxvYXQgd2IgPSBCbG9vbVNjYW4ocG9zLC0xLjApOyAKICAgIGZsb2F0IHdjID0gQmxvb21TY2FuKHBvcywgMC4wKTsKICAgIGZsb2F0IHdkID0gQmxvb21TY2FuKHBvcywgMS4wKTsKICAgIGZsb2F0IHdlID0gQmxvb21TY2FuKHBvcywgMi4wKTsKCiAgICByZXR1cm4gYSp3YStiKndiK2Mqd2MrZCp3ZCtlKndlOwp9CiAgCi8vIERpc3RvcnRpb24gb2Ygc2NhbmxpbmVzLCBhbmQgZW5kIG9mIHNjcmVlbiBhbHBoYS4KdmVjMiBXYXJwKHZlYzIgcG9zKQp7CiAgICBwb3MgID0gcG9zKjIuMC0xLjA7ICAgIAogICAgcG9zICo9IHZlYzIoMS4wICsgKHBvcy55KnBvcy55KSp3YXJwWCwgMS4wICsgKHBvcy54KnBvcy54KSp3YXJwWSk7CiAgICAKICAgIHJldHVybiBwb3MqMC41ICsgMC41Owp9CiAgCi8vIFNoYWRvdyBtYXNrLgp2ZWMzIE1hc2sodmVjMiBwb3MpCnsKICAgIHZlYzMgbWFzayA9IHZlYzMobWFza0RhcmssIG1hc2tEYXJrLCBtYXNrRGFyayk7CiAgCiAgICAvLyBWZXJ5IGNvbXByZXNzZWQgVFYgc3R5bGUgc2hhZG93IG1hc2suCiAgICBpZiAoc2hhZG93TWFzayA9PSAxLjApIAogICAgewogICAgICAgIGZsb2F0IGxpbmUgPSBtYXNrTGlnaHQ7CiAgICAgICAgZmxvYXQgb2RkID0gMC4wOwogICAgICAgIAogICAgICAgIGlmIChmcmFjdChwb3MueCowLjE2NjY2NjY2NikgPCAwLjUpIG9kZCA9IDEuMDsKICAgICAgICBpZiAoZnJhY3QoKHBvcy55ICsgb2RkKSAqIDAuNSkgPCAwLjUpIGxpbmUgPSBtYXNrRGFyazsgIAogICAgICAgIAogICAgICAgIHBvcy54ID0gZnJhY3QocG9zLngqMC4zMzMzMzMzMzMpOwoKICAgICAgICBpZiAgICAgIChwb3MueCA8IDAuMzMzKSBtYXNrLnIgPSBtYXNrTGlnaHQ7CiAgICAgICAgZWxzZSBpZiAocG9zLnggPCAwLjY2NikgbWFzay5nID0gbWFza0xpZ2h0OwogICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgIG1hc2suYiA9IG1hc2tMaWdodDsKICAgICAgICBtYXNrKj1saW5lOyAgCiAgICB9IAoKICAgIC8vIEFwZXJ0dXJlLWdyaWxsZS4KICAgIGVsc2UgaWYgKHNoYWRvd01hc2sgPT0gMi4wKSAKICAgIHsKICAgICAgICBwb3MueCA9IGZyYWN0KHBvcy54KjAuMzMzMzMzMzMzKTsKCiAgICAgICAgaWYgICAgICAocG9zLnggPCAwLjMzMykgbWFzay5yID0gbWFza0xpZ2h0OwogICAgICAgIGVsc2UgaWYgKHBvcy54IDwgMC42NjYpIG1hc2suZyA9IG1hc2tMaWdodDsKICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICBtYXNrLmIgPSBtYXNrTGlnaHQ7CiAgICB9IAoKICAgIC8vIFN0cmV0Y2hlZCBWR0Egc3R5bGUgc2hhZG93IG1hc2sgKHNhbWUgYXMgcHJpb3Igc2hhZGVycykuCiAgICBlbHNlIGlmIChzaGFkb3dNYXNrID09IDMuMCkgCiAgICB7CiAgICAgICAgcG9zLnggKz0gcG9zLnkqMy4wOwogICAgICAgIHBvcy54ICA9IGZyYWN0KHBvcy54KjAuMTY2NjY2NjY2KTsKCiAgICAgICAgaWYgICAgICAocG9zLnggPCAwLjMzMykgbWFzay5yID0gbWFza0xpZ2h0OwogICAgICAgIGVsc2UgaWYgKHBvcy54IDwgMC42NjYpIG1hc2suZyA9IG1hc2tMaWdodDsKICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICBtYXNrLmIgPSBtYXNrTGlnaHQ7CiAgICB9CgogICAgLy8gVkdBIHN0eWxlIHNoYWRvdyBtYXNrLgogICAgZWxzZSBpZiAoc2hhZG93TWFzayA9PSA0LjApIAogICAgewogICAgICAgIHBvcy54eSAgPSBmbG9vcihwb3MueHkqdmVjMigxLjAsIDAuNSkpOwogICAgICAgIHBvcy54ICArPSBwb3MueSozLjA7CiAgICAgICAgcG9zLnggICA9IGZyYWN0KHBvcy54KjAuMTY2NjY2NjY2KTsKCiAgICAgICAgaWYgICAgICAocG9zLnggPCAwLjMzMykgbWFzay5yID0gbWFza0xpZ2h0OwogICAgICAgIGVsc2UgaWYgKHBvcy54IDwgMC42NjYpIG1hc2suZyA9IG1hc2tMaWdodDsKICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICBtYXNrLmIgPSBtYXNrTGlnaHQ7CiAgICB9CgogICAgcmV0dXJuIG1hc2s7Cn0KCnZvaWQgbWFpbigpCnsKICAgIHZlYzIgcG9zID0gV2FycChURVgwLnh5KihUZXh0dXJlU2l6ZS54eS9JbnB1dFNpemUueHkpKSooSW5wdXRTaXplLnh5L1RleHR1cmVTaXplLnh5KTsKICAgIHZlYzMgb3V0Q29sb3IgPSBUcmkocG9zKTsKCiNpZmRlZiBET19CTE9PTQogICAgLy9BZGQgQmxvb20KICAgIG91dENvbG9yLnJnYiArPSBCbG9vbShwb3MpKmJsb29tQW1vdW50OwojZW5kaWYKCiAgICBpZiAoc2hhZG93TWFzayA+IDAuMCkKICAgICAgICBvdXRDb2xvci5yZ2IgKj0gTWFzayhnbF9GcmFnQ29vcmQueHkgKiAxLjAwMDAwMSk7CiAgICAKI2lmZGVmIEdMX0VTICAgIC8qIFRPRE8vRklYTUUgLSBoYWNreSBjbGFtcCBmaXggKi8KICAgIHZlYzIgYm9yZGVydGVzdCA9IChwb3MpOwogICAgaWYgKCBib3JkZXJ0ZXN0LnggPiAwLjAwMDEgJiYgYm9yZGVydGVzdC54IDwgMC45OTk5ICYmIGJvcmRlcnRlc3QueSA+IDAuMDAwMSAmJiBib3JkZXJ0ZXN0LnkgPCAwLjk5OTkpCiAgICAgICAgb3V0Q29sb3IucmdiID0gb3V0Q29sb3IucmdiOwogICAgZWxzZQogICAgICAgIG91dENvbG9yLnJnYiA9IHZlYzMoMC4wKTsKI2VuZGlmCiAgICBGcmFnQ29sb3IgPSB2ZWM0KFRvU3JnYihvdXRDb2xvci5yZ2IpLCAxLjApOwp9IAojZW5kaWYK"}]},"crt-zfast":{shader:{type:"text",value:"shaders = 1\n\nshader0 = zfast_crt.glsl\nfilter_linear0 = true"},resources:[{name:"zfast_crt.glsl",type:"base64",value:"Ly9Gb3IgdGVzdGluZyBjb21waWxhdGlvbg0KLy8jZGVmaW5lIEZSQUdNRU5UDQovLyNkZWZpbmUgVkVSVEVYDQoNCi8vVGhpcyBjYW4ndCBiZSBhbiBvcHRpb24gd2l0aG91dCBzbG93aW5nIHRoZSBzaGFkZXIgZG93bg0KLy9Db21tZW50IHRoaXMgb3V0IGZvciBhIGNvYXJzZXIgMyBwaXhlbCBtYXNrLi4ud2hpY2ggaXMgY3VycmVudGx5IGJyb2tlbg0KLy9vbiBTTkVTIENsYXNzaWMgRWRpdGlvbiBkdWUgdG8gTWFsaSA0MDAgZ3B1IHByZWNpc2lvbg0KI2RlZmluZSBGSU5FTUFTSw0KLy9Tb21lIGRyaXZlcnMgZG9uJ3QgcmV0dXJuIGJsYWNrIHdpdGggdGV4dHVyZSBjb29yZGluYXRlcyBvdXQgb2YgYm91bmRzDQovL1NORVMgQ2xhc3NpYyBpcyB0b28gc2xvdyB0byBibGFjayB0aGVzZSBhcmVhcyBvdXQgd2hlbiB1c2luZyBmdWxsc2NyZWVuDQovL292ZXJsYXlzLiAgQnV0IHlvdSBjYW4gdW5jb21tZW50IHRoZSBiZWxvdyB0byBibGFjayB0aGVtIG91dCBpZiBuZWNlc3NhcnkNCi8vI2RlZmluZSBCTEFDS19PVVRfQk9SREVSDQoNCi8vIFBhcmFtZXRlciBsaW5lcyBnbyBoZXJlOg0KI3ByYWdtYSBwYXJhbWV0ZXIgQkxVUlNDQUxFWCAiQmx1ciBBbW91bnQgWC1BeGlzIiAwLjMwIDAuMCAxLjAgMC4wNQ0KI3ByYWdtYSBwYXJhbWV0ZXIgTE9XTFVNU0NBTiAiU2NhbmxpbmUgRGFya25lc3MgLSBMb3ciIDYuMCAwLjAgMTAuMCAwLjUNCiNwcmFnbWEgcGFyYW1ldGVyIEhJTFVNU0NBTiAiU2NhbmxpbmUgRGFya25lc3MgLSBIaWdoIiA4LjAgMC4wIDUwLjAgMS4wDQojcHJhZ21hIHBhcmFtZXRlciBCUklHSFRCT09TVCAiRGFyayBQaXhlbCBCcmlnaHRuZXNzIEJvb3N0IiAxLjI1IDAuNSAxLjUgMC4wNQ0KI3ByYWdtYSBwYXJhbWV0ZXIgTUFTS19EQVJLICJNYXNrIEVmZmVjdCBBbW91bnQiIDAuMjUgMC4wIDEuMCAwLjA1DQojcHJhZ21hIHBhcmFtZXRlciBNQVNLX0ZBREUgIk1hc2svU2NhbmxpbmUgRmFkZSIgMC44IDAuMCAxLjAgMC4wNQ0KDQojaWYgZGVmaW5lZChWRVJURVgpDQoNCiNpZiBfX1ZFUlNJT05fXyA+PSAxMzANCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgb3V0DQojZGVmaW5lIENPTVBBVF9BVFRSSUJVVEUgaW4NCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZQ0KI2Vsc2UNCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgdmFyeWluZyANCiNkZWZpbmUgQ09NUEFUX0FUVFJJQlVURSBhdHRyaWJ1dGUgDQojZGVmaW5lIENPTVBBVF9URVhUVVJFIHRleHR1cmUyRA0KI2VuZGlmDQoNCiNpZmRlZiBHTF9FUw0KI2RlZmluZSBDT01QQVRfUFJFQ0lTSU9OIG1lZGl1bXANCiNlbHNlDQojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04NCiNlbmRpZg0KDQpDT01QQVRfQVRUUklCVVRFIHZlYzQgVmVydGV4Q29vcmQ7DQpDT01QQVRfQVRUUklCVVRFIHZlYzQgQ09MT1I7DQpDT01QQVRfQVRUUklCVVRFIHZlYzQgVGV4Q29vcmQ7DQpDT01QQVRfVkFSWUlORyB2ZWM0IENPTDA7DQpDT01QQVRfVkFSWUlORyB2ZWM0IFRFWDA7DQpDT01QQVRfVkFSWUlORyBmbG9hdCBtYXNrRmFkZTsNCkNPTVBBVF9WQVJZSU5HIHZlYzIgaW52RGltczsNCg0KdmVjNCBfb1Bvc2l0aW9uMTsgDQp1bmlmb3JtIG1hdDQgTVZQTWF0cml4Ow0KdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZURpcmVjdGlvbjsNCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVDb3VudDsNCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIE91dHB1dFNpemU7DQp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBUZXh0dXJlU2l6ZTsNCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIElucHV0U2l6ZTsNCg0KLy8gY29tcGF0aWJpbGl0eSAjZGVmaW5lcw0KI2RlZmluZSB2VGV4Q29vcmQgVEVYMC54eQ0KI2RlZmluZSBTb3VyY2VTaXplIHZlYzQoVGV4dHVyZVNpemUsIDEuMCAvIFRleHR1cmVTaXplKSAvL2VpdGhlciBUZXh0dXJlU2l6ZSBvciBJbnB1dFNpemUNCiNkZWZpbmUgT3V0U2l6ZSB2ZWM0KE91dHB1dFNpemUsIDEuMCAvIE91dHB1dFNpemUpDQoNCiNpZmRlZiBQQVJBTUVURVJfVU5JRk9STQ0KLy8gQWxsIHBhcmFtZXRlciBmbG9hdHMgbmVlZCB0byBoYXZlIENPTVBBVF9QUkVDSVNJT04gaW4gZnJvbnQgb2YgdGhlbQ0KdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IEJMVVJTQ0FMRVg7DQovL3VuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBCTFVSU0NBTEVZOw0KdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IExPV0xVTVNDQU47DQp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgSElMVU1TQ0FOOw0KdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IEJSSUdIVEJPT1NUOw0KdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IE1BU0tfREFSSzsNCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBNQVNLX0ZBREU7DQojZWxzZQ0KI2RlZmluZSBCTFVSU0NBTEVYIDAuNDUNCi8vI2RlZmluZSBCTFVSU0NBTEVZIDAuMjANCiNkZWZpbmUgTE9XTFVNU0NBTiA1LjANCiNkZWZpbmUgSElMVU1TQ0FOIDEwLjANCiNkZWZpbmUgQlJJR0hUQk9PU1QgMS4yNQ0KI2RlZmluZSBNQVNLX0RBUksgMC4yNQ0KI2RlZmluZSBNQVNLX0ZBREUgMC44DQojZW5kaWYNCg0Kdm9pZCBtYWluKCkNCnsNCiAgICBnbF9Qb3NpdGlvbiA9IE1WUE1hdHJpeCAqIFZlcnRleENvb3JkOw0KCQ0KCVRFWDAueHkgPSBUZXhDb29yZC54eSoxLjAwMDE7DQoJbWFza0ZhZGUgPSAwLjMzMzMqTUFTS19GQURFOw0KCWludkRpbXMgPSAxLjAvVGV4dHVyZVNpemUueHk7DQp9DQoNCiNlbGlmIGRlZmluZWQoRlJBR01FTlQpDQoNCiNpZmRlZiBHTF9FUw0KI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdIDQpwcmVjaXNpb24gaGlnaHAgZmxvYXQ7DQojZWxzZQ0KcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7DQojZW5kaWYNCiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTiBtZWRpdW1wDQojZWxzZQ0KI2RlZmluZSBDT01QQVRfUFJFQ0lTSU9ODQojZW5kaWYNCg0KI2lmIF9fVkVSU0lPTl9fID49IDEzMA0KI2RlZmluZSBDT01QQVRfVkFSWUlORyBpbg0KI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlDQpvdXQgQ09NUEFUX1BSRUNJU0lPTiB2ZWM0IEZyYWdDb2xvcjsNCiNlbHNlDQojZGVmaW5lIENPTVBBVF9WQVJZSU5HIHZhcnlpbmcNCiNkZWZpbmUgRnJhZ0NvbG9yIGdsX0ZyYWdDb2xvcg0KI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlMkQNCiNlbmRpZg0KDQp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lRGlyZWN0aW9uOw0KdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZUNvdW50Ow0KdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgT3V0cHV0U2l6ZTsNCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIFRleHR1cmVTaXplOw0KdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgSW5wdXRTaXplOw0KdW5pZm9ybSBzYW1wbGVyMkQgVGV4dHVyZTsNCkNPTVBBVF9WQVJZSU5HIHZlYzQgVEVYMDsNCkNPTVBBVF9WQVJZSU5HIGZsb2F0IG1hc2tGYWRlOw0KQ09NUEFUX1ZBUllJTkcgdmVjMiBpbnZEaW1zOw0KDQovLyBjb21wYXRpYmlsaXR5ICNkZWZpbmVzDQojZGVmaW5lIFNvdXJjZSBUZXh0dXJlDQojZGVmaW5lIHZUZXhDb29yZCBURVgwLnh5DQojZGVmaW5lIHRleHR1cmUoYywgZCkgQ09NUEFUX1RFWFRVUkUoYywgZCkNCiNkZWZpbmUgU291cmNlU2l6ZSB2ZWM0KFRleHR1cmVTaXplLCAxLjAgLyBUZXh0dXJlU2l6ZSkgLy9laXRoZXIgVGV4dHVyZVNpemUgb3IgSW5wdXRTaXplDQojZGVmaW5lIE91dFNpemUgdmVjNChPdXRwdXRTaXplLCAxLjAgLyBPdXRwdXRTaXplKQ0KDQojaWZkZWYgUEFSQU1FVEVSX1VOSUZPUk0NCi8vIEFsbCBwYXJhbWV0ZXIgZmxvYXRzIG5lZWQgdG8gaGF2ZSBDT01QQVRfUFJFQ0lTSU9OIGluIGZyb250IG9mIHRoZW0NCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBCTFVSU0NBTEVYOw0KLy91bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgQkxVUlNDQUxFWTsNCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBMT1dMVU1TQ0FOOw0KdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGZsb2F0IEhJTFVNU0NBTjsNCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBCUklHSFRCT09TVDsNCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBNQVNLX0RBUks7DQp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgTUFTS19GQURFOw0KI2Vsc2UNCiNkZWZpbmUgQkxVUlNDQUxFWCAwLjQ1DQovLyNkZWZpbmUgQkxVUlNDQUxFWSAwLjIwDQojZGVmaW5lIExPV0xVTVNDQU4gNS4wDQojZGVmaW5lIEhJTFVNU0NBTiAxMC4wDQojZGVmaW5lIEJSSUdIVEJPT1NUIDEuMjUNCiNkZWZpbmUgTUFTS19EQVJLIDAuMjUNCiNkZWZpbmUgTUFTS19GQURFIDAuOA0KI2VuZGlmDQoNCnZvaWQgbWFpbigpDQp7DQoNCgkvL1RoaXMgaXMganVzdCBsaWtlICJRdWlsZXogU2NhbGluZyIgYnV0IHNoYXJwZXINCglDT01QQVRfUFJFQ0lTSU9OIHZlYzIgcCA9IHZUZXhDb29yZCAqIFRleHR1cmVTaXplOw0KCUNPTVBBVF9QUkVDSVNJT04gdmVjMiBpID0gZmxvb3IocCkgKyAwLjUwOw0KCUNPTVBBVF9QUkVDSVNJT04gdmVjMiBmID0gcCAtIGk7DQoJcCA9IChpICsgNC4wKmYqZipmKSppbnZEaW1zOw0KCXAueCA9IG1peCggcC54ICwgdlRleENvb3JkLngsIEJMVVJTQ0FMRVgpOw0KCUNPTVBBVF9QUkVDSVNJT04gZmxvYXQgWSA9IGYueSpmLnk7DQoJQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBZWSA9IFkqWTsNCiNkZWZpbmUgcmF0aW8gU291cmNlU2l6ZS54L0lucHV0U2l6ZS54CQ0KI2lmIGRlZmluZWQoRklORU1BU0spIA0KCUNPTVBBVF9QUkVDSVNJT04gZmxvYXQgd2hpY2htYXNrID0gZmxvb3IodlRleENvb3JkLngqT3V0cHV0U2l6ZS54KnJhdGlvKSotMC41Ow0KCUNPTVBBVF9QUkVDSVNJT04gZmxvYXQgbWFzayA9IDEuMCArIGZsb2F0KGZyYWN0KHdoaWNobWFzaykgPCAwLjUpICogLU1BU0tfREFSSzsNCiNlbHNlDQoJQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCB3aGljaG1hc2sgPSBmbG9vcih2VGV4Q29vcmQueCpPdXRwdXRTaXplLngqcmF0aW8pKi0wLjMzMzM7DQoJQ09NUEFUX1BSRUNJU0lPTiBmbG9hdCBtYXNrID0gMS4wICsgZmxvYXQoZnJhY3Qod2hpY2htYXNrKSA8IDAuMzMzMykgKiAtTUFTS19EQVJLOw0KI2VuZGlmDQoJQ09NUEFUX1BSRUNJU0lPTiB2ZWMzIGNvbG91ciA9IENPTVBBVF9URVhUVVJFKFNvdXJjZSwgcCkucmdiOw0KCQ0KCUNPTVBBVF9QUkVDSVNJT04gZmxvYXQgc2NhbkxpbmVXZWlnaHQgPSAoQlJJR0hUQk9PU1QgLSBMT1dMVU1TQ0FOKihZIC0gMi4wNSpZWSkpOw0KCUNPTVBBVF9QUkVDSVNJT04gZmxvYXQgc2NhbkxpbmVXZWlnaHRCID0gMS4wIC0gSElMVU1TQ0FOKihZWS0yLjgqWVkqWSk7CQ0KCQ0KI2lmIGRlZmluZWQoQkxBQ0tfT1VUX0JPUkRFUikNCgljb2xvdXIucmdiKj1mbG9hdCh0Yy54ID4gMC4wKSpmbG9hdCh0Yy55ID4gMC4wKTsgLy93aHkgZG9lc24ndCB0aGUgZHJpdmVyIGRvIHRoZSByaWdodCB0aGluZz8NCiNlbmRpZg0KDQoJRnJhZ0NvbG9yLnJnYmEgPSB2ZWM0KGNvbG91ci5yZ2IqbWl4KHNjYW5MaW5lV2VpZ2h0Km1hc2ssIHNjYW5MaW5lV2VpZ2h0QiwgZG90KGNvbG91ci5yZ2IsdmVjMyhtYXNrRmFkZSkpKSwxLjApOw0KCQ0KfSANCiNlbmRpZg0K"}]},"crt-yeetron":{shader:{type:"text",value:"shaders = 1\n\nshader0 = yeetron.glsl\nfilter_linear0 = false\n"},resources:[{name:"yeetron.glsl",type:"base64",value:"Ly8gcG9ydGVkIGZyb20gUmVTaGFkZQoKI2lmIGRlZmluZWQoVkVSVEVYKQoKI2lmIF9fVkVSU0lPTl9fID49IDEzMAojZGVmaW5lIENPTVBBVF9WQVJZSU5HIG91dAojZGVmaW5lIENPTVBBVF9BVFRSSUJVVEUgaW4KI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlCiNlbHNlCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgdmFyeWluZyAKI2RlZmluZSBDT01QQVRfQVRUUklCVVRFIGF0dHJpYnV0ZSAKI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlMkQKI2VuZGlmCgojaWZkZWYgR0xfRVMKI2RlZmluZSBDT01QQVRfUFJFQ0lTSU9OIG1lZGl1bXAKI2Vsc2UKI2RlZmluZSBDT01QQVRfUFJFQ0lTSU9OCiNlbmRpZgoKQ09NUEFUX0FUVFJJQlVURSB2ZWM0IFZlcnRleENvb3JkOwpDT01QQVRfQVRUUklCVVRFIHZlYzQgQ09MT1I7CkNPTVBBVF9BVFRSSUJVVEUgdmVjNCBUZXhDb29yZDsKQ09NUEFUX1ZBUllJTkcgdmVjNCBDT0wwOwpDT01QQVRfVkFSWUlORyB2ZWM0IFRFWDA7Cgp2ZWM0IF9vUG9zaXRpb24xOyAKdW5pZm9ybSBtYXQ0IE1WUE1hdHJpeDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZURpcmVjdGlvbjsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZUNvdW50Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBPdXRwdXRTaXplOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBUZXh0dXJlU2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgSW5wdXRTaXplOwoKLy8gY29tcGF0aWJpbGl0eSAjZGVmaW5lcwojZGVmaW5lIHZUZXhDb29yZCBURVgwLnh5CiNkZWZpbmUgU291cmNlU2l6ZSB2ZWM0KFRleHR1cmVTaXplLCAxLjAgLyBUZXh0dXJlU2l6ZSkgLy9laXRoZXIgVGV4dHVyZVNpemUgb3IgSW5wdXRTaXplCiNkZWZpbmUgT3V0U2l6ZSB2ZWM0KE91dHB1dFNpemUsIDEuMCAvIE91dHB1dFNpemUpCgp2b2lkIG1haW4oKQp7CiAgICBnbF9Qb3NpdGlvbiA9IE1WUE1hdHJpeCAqIFZlcnRleENvb3JkOwogICAgVEVYMC54eSA9IFRleENvb3JkLnh5Owp9CgojZWxpZiBkZWZpbmVkKEZSQUdNRU5UKQoKI2lmZGVmIEdMX0VTCiNpZmRlZiBHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSApwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CiNlbHNlCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwojZW5kaWYKI2RlZmluZSBDT01QQVRfUFJFQ0lTSU9OIG1lZGl1bXAKI2Vsc2UKI2RlZmluZSBDT01QQVRfUFJFQ0lTSU9OCiNlbmRpZgoKI2lmIF9fVkVSU0lPTl9fID49IDEzMAojZGVmaW5lIENPTVBBVF9WQVJZSU5HIGluCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZQpvdXQgQ09NUEFUX1BSRUNJU0lPTiB2ZWM0IEZyYWdDb2xvcjsKI2Vsc2UKI2RlZmluZSBDT01QQVRfVkFSWUlORyB2YXJ5aW5nCiNkZWZpbmUgRnJhZ0NvbG9yIGdsX0ZyYWdDb2xvcgojZGVmaW5lIENPTVBBVF9URVhUVVJFIHRleHR1cmUyRAojZW5kaWYKCnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVEaXJlY3Rpb247CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVDb3VudDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgT3V0cHV0U2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgVGV4dHVyZVNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIElucHV0U2l6ZTsKdW5pZm9ybSBzYW1wbGVyMkQgVGV4dHVyZTsKQ09NUEFUX1ZBUllJTkcgdmVjNCBURVgwOwoKLy8gY29tcGF0aWJpbGl0eSAjZGVmaW5lcwojZGVmaW5lIFNvdXJjZSBUZXh0dXJlCiNkZWZpbmUgdlRleENvb3JkIFRFWDAueHkKCiNkZWZpbmUgU291cmNlU2l6ZSB2ZWM0KFRleHR1cmVTaXplLCAxLjAgLyBUZXh0dXJlU2l6ZSkgLy9laXRoZXIgVGV4dHVyZVNpemUgb3IgSW5wdXRTaXplCiNkZWZpbmUgT3V0U2l6ZSB2ZWM0KE91dHB1dFNpemUsIDEuMCAvIE91dHB1dFNpemUpCgp2ZWM0IGNtcCh2ZWM0IHNyYzAsIHZlYzQgc3JjMSwgdmVjNCBzcmMyKSB7CglyZXR1cm4gdmVjNCgKCQlzcmMwLnggPj0gMC4wID8gc3JjMS54IDogc3JjMi54LAoJCXNyYzAueSA+PSAwLjAgPyBzcmMxLnkgOiBzcmMyLnksCgkJc3JjMC56ID49IDAuMCA/IHNyYzEueiA6IHNyYzIueiwKCQlzcmMwLncgPj0gMC4wID8gc3JjMS53IDogc3JjMi53CgkpOwp9CgojZGVmaW5lIHNhdHVyYXRlKGMpIGNsYW1wKGMsIDAuMCwgMS4wKQoKdm9pZCBtYWluKCkKewoJLy9EZWNsYXJlIHBhcmFtZXRlcnMKCS8vcGl4ZWxTaXplCgl2ZWM0IGMwID0gSW5wdXRTaXplLnh5eXk7CgkvL3RleHR1cmVTaXplCgl2ZWM0IGMxID0gU291cmNlU2l6ZTsKCS8vdmlld1NpemUKCXZlYzQgYzIgPSBPdXRTaXplOwogICAKCS8vRGVjbGFyZSBjb25zdGFudHMKCWNvbnN0IHZlYzQgYzMgPSB2ZWM0KDEuNSwgMC44MDAwMDAwMTIsIDEuMjUsIDAuNzUpOwoJY29uc3QgdmVjNCBjNCA9IHZlYzQoNi4yODMxODU0OCwgLTMuMTQxNTkyNzQsIDAuMjUsIC0wLjI1KTsKCWNvbnN0IHZlYzQgYzUgPSB2ZWM0KDEuLCAwLjUsIDcyMC4sIDMuKTsKCWNvbnN0IHZlYzQgYzYgPSB2ZWM0KDAuMTY2NjY2NjcyLCAtMC4zMzMwMDAwMDQsIC0wLjY2NjAwMDAwOSwgMC44OTk5OTk5NzYpOwoJY29uc3QgdmVjNCBjNyA9IHZlYzQoMC44OTk5OTk5NzYsIDEuMTAwMDAwMDIsIDAuLCAwLik7Cgljb25zdCB2ZWM0IGM4ID0gdmVjNCgtMC41LCAtMC4yNSwgMi4sIDAuNSk7CgoJLy9EZWNsYXJlIHJlZ2lzdGVycwoJdmVjNCByMCwgcjEsIHIyLCByMywgcjQsIHI1LCByNiwgcjcsIHI4LCByOTsKCgkvL0NvZGUgc3RhcnRzIGhlcmUKCXZlYzQgdjAgPSB2VGV4Q29vcmQueHl5eTsKCS8vZGNsXzJkIHMwCglyMC54ID0gMS4wIC8gYzAueDsKCXIwLnkgPSAxLjAgLyBjMC55OwoJcjAueHkgPSAocjAgKiBjMSkueHk7CglyMC54eSA9IChyMCAqIHYwKS54eTsKCXIwLnh5ID0gKHIwICogYzIpLnh5OwoJcjAuencgPSBmcmFjdChyMC54eXh5KS56dzsKCXIwLnh5ID0gKC1yMC56d3p3ICsgcjApLnh5OwoJcjAueHkgPSAocjAgKyBjOC53d3d3KS54eTsKCXIwLnggPSByMC55ICogYzUudyArIHIwLng7CglyMC54ID0gcjAueCAqIGM2Lng7CglyMC54ID0gZnJhY3QocjAueCk7CglyMC54eSA9IChyMC54eHh4ICsgYzYueXp6dykueHk7CglyMS55eiA9IChyMC55ID49IDAuMCA/IGM3Lnh4eXcgOiBjNy54eXh3KS55ejsKCXIxLnggPSBjNi53OwoJcjAueHl6ID0gKHIwLnggPj0gMC4wID8gcjEgOiBjNy55eHh3KS54eXo7CglyMS54eSA9IChjMSAqIHYwKS54eTsKCXIwLncgPSByMS55ICogYzgudyArIGM4Lnc7CglyMC53ID0gZnJhY3QocjAudyk7CglyMC53ID0gcjAudyAqIGM0LnggKyBjNC55OwoJcjIueSA9IHNpbihyMC53KTsKCXIxLnp3ID0gKGFicyhyMikueXl5eSArIGM0KS56dzsKCXIxLnogPSBjbGFtcChyMS56LCAwLjAsIDEuMCk7CglyMC53ID0gcjEudyA+PSAwLjAgPyByMS56IDogYzgudzsKCXIyID0gZnJhY3QocjEueHl4eSk7CglyMS54eSA9IChyMSArIC1yMi56d3p3KS54eTsKCXIyID0gcjIgKyBjOC54eHl5OwoJcjEuencgPSAocjEueHl4eSArIGM4Lnd3d3cpLnp3OwoJcjEuencgPSAodjAueHl4eSAqIC1jMS54eXh5ICsgcjEpLnp3OwoJcjEudyA9IHIxLncgKyByMS53OwoJcjEueiA9IHIxLnogKiBjOC53OwoJcjEueiA9IC1hYnMocjEpLnogKyBjMy54OwoJcjMueCA9IG1heChjMy55LCByMS56KTsKCXI0LnggPSBtaW4ocjMueCwgYzMueik7CglyMS56dyA9ICgtYWJzKHIxKS53d3d3ICsgYzMpLnp3OwoJcjEueiA9IGNsYW1wKHIxLnosIDAuMCwgMS4wKTsKCXIxLnogPSByMS53ID49IDAuMCA/IHIxLnogOiBjOC53OwoJcjQueSA9IHIwLncgKyByMS56OwoJcjAudyA9IHIwLncgKiByNC54OwoJcjEueiA9IHIxLnogKiByNC54OwoJcjMueHkgPSAocjQgKiBjNSkueHk7CglyMS53ID0gcjMueSAqIHIzLng7CglyMi56ID0gY21wKHIyLCByMi54eXh5LCBjOC55eXl5KS56OwoJcjMueHkgPSBtYXgoYzgueXl5eSwgLXIyLnp3encpLnh5OwoJcjIueHkgPSAocjIgKyByMykueHk7CglyMS54eSA9IChyMiAqIGM4Lnp6enogKyByMSkueHk7CglyMS54eSA9IChyMSArIGM4Lnd3d3cpLnh5OwoJcjIueCA9IDEuMCAvIGMxLng7CglyMi55ID0gMS4wIC8gYzEueTsKCXIxLnh5ID0gKHIxICogcjIpLnh5OwoJcjIgPSBDT01QQVRfVEVYVFVSRShTb3VyY2UsIHIxLnh5KTsKCXIzLnggPSByMC53ICogcjIueDsKCXIzLnl6ID0gKHIxLnh6d3cgKiByMikueXo7CglGcmFnQ29sb3IudyA9IHIyLnc7CglyMC54eXogPSAocjAgKiByMykueHl6OwoJcjEueiA9IGM1Lno7CglyMC53ID0gcjEueiArIC1jMi55OwoJRnJhZ0NvbG9yLnh5eiA9IChyMC53ID49IDAuMCA/IHIzIDogcjApLnh5ejsKfSAKI2VuZGlmCg=="}]},bicubic:{shader:{type:"text",value:"shaders = 1\n\nshader0 = bicubic.glsl\nfilter_linear0 = false"},resources:[{name:"bicubic.glsl",type:"base64",value:"Ly8gRGVmYXVsdCB0byBNaXRjaGVsLU5ldHJhdmFsaSBjb2VmZmljaWVudHMgZm9yIGJlc3QgcHN5Y2hvdmlzdWFsIHJlc3VsdAovLyBiaWN1YmljLXNoYXJwIGlzIEIgPSAwLjEgYW5kIEMgPSAwLjUKLy8gYmljdWJpYy1zaGFycGVyIGlzIEIgPSAwLjAgYW5kIEMgPSAwLjc1CiNwcmFnbWEgcGFyYW1ldGVyIEIgIkJpY3ViaWMgQ29lZmYgQiIgMC4zMyAwLjAgMS4wIDAuMDEKI3ByYWdtYSBwYXJhbWV0ZXIgQyAiQmljdWJpYyBDb2VmZiBDIiAwLjMzIDAuMCAxLjAgMC4wMQoKI2lmIGRlZmluZWQoVkVSVEVYKQoKI2lmIF9fVkVSU0lPTl9fID49IDEzMAojZGVmaW5lIENPTVBBVF9WQVJZSU5HIG91dAojZGVmaW5lIENPTVBBVF9BVFRSSUJVVEUgaW4KI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlCiNlbHNlCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgdmFyeWluZyAKI2RlZmluZSBDT01QQVRfQVRUUklCVVRFIGF0dHJpYnV0ZSAKI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlMkQKI2VuZGlmCgojaWZkZWYgR0xfRVMKI2RlZmluZSBDT01QQVRfUFJFQ0lTSU9OIG1lZGl1bXAKI2Vsc2UKI2RlZmluZSBDT01QQVRfUFJFQ0lTSU9OCiNlbmRpZgoKQ09NUEFUX0FUVFJJQlVURSB2ZWM0IFZlcnRleENvb3JkOwpDT01QQVRfQVRUUklCVVRFIHZlYzQgVGV4Q29vcmQ7CkNPTVBBVF9WQVJZSU5HIHZlYzQgVEVYMDsKCnVuaWZvcm0gbWF0NCBNVlBNYXRyaXg7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVEaXJlY3Rpb247CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVDb3VudDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgT3V0cHV0U2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgVGV4dHVyZVNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIElucHV0U2l6ZTsKCi8vIGNvbXBhdGliaWxpdHkgI2RlZmluZXMKI2RlZmluZSB2VGV4Q29vcmQgVEVYMC54eQojZGVmaW5lIFNvdXJjZVNpemUgdmVjNChUZXh0dXJlU2l6ZSwgMS4wIC8gVGV4dHVyZVNpemUpIC8vZWl0aGVyIFRleHR1cmVTaXplIG9yIElucHV0U2l6ZQojZGVmaW5lIE91dFNpemUgdmVjNChPdXRwdXRTaXplLCAxLjAgLyBPdXRwdXRTaXplKQoKdm9pZCBtYWluKCkKewogICBnbF9Qb3NpdGlvbiA9IE1WUE1hdHJpeCAqIFZlcnRleENvb3JkOwogICBURVgwLnh5ID0gVGV4Q29vcmQueHk7Cn0KCiNlbGlmIGRlZmluZWQoRlJBR01FTlQpCgojaWZkZWYgR0xfRVMKI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdICnByZWNpc2lvbiBoaWdocCBmbG9hdDsKI2Vsc2UKcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiNlbmRpZgojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04gbWVkaXVtcAojZWxzZQojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04KI2VuZGlmCgojaWYgX19WRVJTSU9OX18gPj0gMTMwCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgaW4KI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlCm91dCBDT01QQVRfUFJFQ0lTSU9OIHZlYzQgRnJhZ0NvbG9yOwojZWxzZQojZGVmaW5lIENPTVBBVF9WQVJZSU5HIHZhcnlpbmcKI2RlZmluZSBGcmFnQ29sb3IgZ2xfRnJhZ0NvbG9yCiNkZWZpbmUgQ09NUEFUX1RFWFRVUkUgdGV4dHVyZTJECiNlbmRpZgoKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZURpcmVjdGlvbjsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIGludCBGcmFtZUNvdW50Owp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBPdXRwdXRTaXplOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBUZXh0dXJlU2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgSW5wdXRTaXplOwp1bmlmb3JtIHNhbXBsZXIyRCBUZXh0dXJlOwpDT01QQVRfVkFSWUlORyB2ZWM0IFRFWDA7CgovLyBjb21wYXRpYmlsaXR5ICNkZWZpbmVzCiNkZWZpbmUgU291cmNlIFRleHR1cmUKI2RlZmluZSB2VGV4Q29vcmQgVEVYMC54eQoKI2RlZmluZSBTb3VyY2VTaXplIHZlYzQoVGV4dHVyZVNpemUsIDEuMCAvIFRleHR1cmVTaXplKSAvL2VpdGhlciBUZXh0dXJlU2l6ZSBvciBJbnB1dFNpemUKI2RlZmluZSBPdXRTaXplIHZlYzQoT3V0cHV0U2l6ZSwgMS4wIC8gT3V0cHV0U2l6ZSkKCiNpZmRlZiBQQVJBTUVURVJfVU5JRk9STQp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gZmxvYXQgQiwgQzsKI2Vsc2UKI2RlZmluZSBCIDAuMzMzMwojZGVmaW5lIEMgMC4zMzMzCiNlbmRpZgoKZmxvYXQgd2VpZ2h0KGZsb2F0IHgpCnsKCWZsb2F0IGF4ID0gYWJzKHgpOwoKCWlmIChheCA8IDEuMCkKCXsKCQlyZXR1cm4KCQkJKAoJCQkgcG93KHgsIDIuMCkgKiAoKDEyLjAgLSA5LjAgKiBCIC0gNi4wICogQykgKiBheCArICgtMTguMCArIDEyLjAgKiBCICsgNi4wICogQykpICsKCQkJICg2LjAgLSAyLjAgKiBCKQoJCQkpIC8gNi4wOwoJfQoJZWxzZSBpZiAoKGF4ID49IDEuMCkgJiYgKGF4IDwgMi4wKSkKCXsKCQlyZXR1cm4KCQkJKAoJCQkgcG93KHgsIDIuMCkgKiAoKC1CIC0gNi4wICogQykgKiBheCArICg2LjAgKiBCICsgMzAuMCAqIEMpKSArCgkJCSAoLTEyLjAgKiBCIC0gNDguMCAqIEMpICogYXggKyAoOC4wICogQiArIDI0LjAgKiBDKQoJCQkpIC8gNi4wOwoJfQoJZWxzZQoJewoJCXJldHVybiAwLjA7Cgl9Cn0KCQp2ZWM0IHdlaWdodDQoZmxvYXQgeCkKewoJcmV0dXJuIHZlYzQoCgkJCXdlaWdodCh4IC0gMi4wKSwKCQkJd2VpZ2h0KHggLSAxLjApLAoJCQl3ZWlnaHQoeCksCgkJCXdlaWdodCh4ICsgMS4wKSk7Cn0KCnZlYzMgcGl4ZWwoZmxvYXQgeHBvcywgZmxvYXQgeXBvcywgc2FtcGxlcjJEIHRleCkKewoJcmV0dXJuIENPTVBBVF9URVhUVVJFKHRleCwgdmVjMih4cG9zLCB5cG9zKSkucmdiOwp9Cgp2ZWMzIGxpbmVfcnVuKGZsb2F0IHlwb3MsIHZlYzQgeHBvcywgdmVjNCBsaW5ldGFwcywgc2FtcGxlcjJEIHRleCkKewoJcmV0dXJuCgkJcGl4ZWwoeHBvcy5yLCB5cG9zLCB0ZXgpICogbGluZXRhcHMuciArCgkJcGl4ZWwoeHBvcy5nLCB5cG9zLCB0ZXgpICogbGluZXRhcHMuZyArCgkJcGl4ZWwoeHBvcy5iLCB5cG9zLCB0ZXgpICogbGluZXRhcHMuYiArCgkJcGl4ZWwoeHBvcy5hLCB5cG9zLCB0ZXgpICogbGluZXRhcHMuYTsKfQoKdm9pZCBtYWluKCkKewogICAgICAgIHZlYzIgc3RlcHh5ID0gdmVjMigxLjAvU291cmNlU2l6ZS54LCAxLjAvU291cmNlU2l6ZS55KTsKICAgICAgICB2ZWMyIHBvcyA9IHZUZXhDb29yZC54eSArIHN0ZXB4eSAqIDAuNTsKICAgICAgICB2ZWMyIGYgPSBmcmFjdChwb3MgLyBzdGVweHkpOwoJCQoJdmVjNCBsaW5ldGFwcyAgID0gd2VpZ2h0NCgxLjAgLSBmLngpOwoJdmVjNCBjb2x1bW50YXBzID0gd2VpZ2h0NCgxLjAgLSBmLnkpOwoKCS8vbWFrZSBzdXJlIGFsbCB0YXBzIGFkZGVkIHRvZ2V0aGVyIGlzIGV4YWN0bHkgMS4wLCBvdGhlcndpc2Ugc29tZSAodmVyeSBzbWFsbCkgZGlzdG9ydGlvbiBjYW4gb2NjdXIKCWxpbmV0YXBzIC89IGxpbmV0YXBzLnIgKyBsaW5ldGFwcy5nICsgbGluZXRhcHMuYiArIGxpbmV0YXBzLmE7Cgljb2x1bW50YXBzIC89IGNvbHVtbnRhcHMuciArIGNvbHVtbnRhcHMuZyArIGNvbHVtbnRhcHMuYiArIGNvbHVtbnRhcHMuYTsKCgl2ZWMyIHh5c3RhcnQgPSAoLTEuNSAtIGYpICogc3RlcHh5ICsgcG9zOwoJdmVjNCB4cG9zID0gdmVjNCh4eXN0YXJ0LngsIHh5c3RhcnQueCArIHN0ZXB4eS54LCB4eXN0YXJ0LnggKyBzdGVweHkueCAqIDIuMCwgeHlzdGFydC54ICsgc3RlcHh5LnggKiAzLjApOwoKCi8vIGZpbmFsIHN1bSBhbmQgd2VpZ2h0IG5vcm1hbGl6YXRpb24KICAgdmVjNCBmaW5hbCA9IHZlYzQobGluZV9ydW4oeHlzdGFydC55ICAgICAgICAgICAgICAgICAsIHhwb3MsIGxpbmV0YXBzLCBTb3VyY2UpICogY29sdW1udGFwcy5yICsKICAgICAgICAgICAgICAgICAgICAgIGxpbmVfcnVuKHh5c3RhcnQueSArIHN0ZXB4eS55ICAgICAgLCB4cG9zLCBsaW5ldGFwcywgU291cmNlKSAqIGNvbHVtbnRhcHMuZyArCiAgICAgICAgICAgICAgICAgICAgICBsaW5lX3J1bih4eXN0YXJ0LnkgKyBzdGVweHkueSAqIDIuMCwgeHBvcywgbGluZXRhcHMsIFNvdXJjZSkgKiBjb2x1bW50YXBzLmIgKwogICAgICAgICAgICAgICAgICAgICAgbGluZV9ydW4oeHlzdGFydC55ICsgc3RlcHh5LnkgKiAzLjAsIHhwb3MsIGxpbmV0YXBzLCBTb3VyY2UpICogY29sdW1udGFwcy5hLDEpOwoKICAgRnJhZ0NvbG9yID0gZmluYWw7Cn0gCiNlbmRpZgo=\n"}]},"mix-frames":{shader:{type:"text",value:'shaders = "1"\n\nshader0 = "mix_frames.glsl"\nfilter_linear0 = "false"\n'},resources:[{name:"mix_frames.glsl",type:"base64",value:"LyoKCW1peF9mcmFtZXMgLSBwZXJmb3JtcyA1MDo1MCBibGVuZGluZyBiZXR3ZWVuIHRoZSBjdXJyZW50IGFuZCBwcmV2aW91cwoJZnJhbWVzLgoJCglBdXRob3I6IGpkZ2xlYXZlcgoJCglUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAoJdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKCVNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikKCWFueSBsYXRlciB2ZXJzaW9uLgoqLwoKI2lmIGRlZmluZWQoVkVSVEVYKQoKI2lmIF9fVkVSU0lPTl9fID49IDEzMAojZGVmaW5lIENPTVBBVF9WQVJZSU5HIG91dAojZGVmaW5lIENPTVBBVF9BVFRSSUJVVEUgaW4KI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlCiNlbHNlCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgdmFyeWluZyAKI2RlZmluZSBDT01QQVRfQVRUUklCVVRFIGF0dHJpYnV0ZSAKI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlMkQKI2VuZGlmCgojaWZkZWYgR0xfRVMKI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdICiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTiBoaWdocAojZWxzZQojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04gbWVkaXVtcAojZW5kaWYKI2Vsc2UKI2RlZmluZSBDT01QQVRfUFJFQ0lTSU9OCiNlbmRpZgoKLyogQ09NUEFUSUJJTElUWQogICAtIEdMU0wgY29tcGlsZXJzCiovCgpDT01QQVRfQVRUUklCVVRFIENPTVBBVF9QUkVDSVNJT04gdmVjNCBWZXJ0ZXhDb29yZDsKQ09NUEFUX0FUVFJJQlVURSBDT01QQVRfUFJFQ0lTSU9OIHZlYzQgQ09MT1I7CkNPTVBBVF9BVFRSSUJVVEUgQ09NUEFUX1BSRUNJU0lPTiB2ZWM0IFRleENvb3JkOwpDT01QQVRfVkFSWUlORyBDT01QQVRfUFJFQ0lTSU9OIHZlYzQgQ09MMDsKQ09NUEFUX1ZBUllJTkcgQ09NUEFUX1BSRUNJU0lPTiB2ZWM0IFRFWDA7CgpDT01QQVRfUFJFQ0lTSU9OIHZlYzQgX29Qb3NpdGlvbjE7IAp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gbWF0NCBNVlBNYXRyaXg7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVEaXJlY3Rpb247CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiBpbnQgRnJhbWVDb3VudDsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgT3V0cHV0U2l6ZTsKdW5pZm9ybSBDT01QQVRfUFJFQ0lTSU9OIHZlYzIgVGV4dHVyZVNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIElucHV0U2l6ZTsKCnZvaWQgbWFpbigpCnsKCVRFWDAgPSBUZXhDb29yZCAqIDEuMDAwMTsKCWdsX1Bvc2l0aW9uID0gTVZQTWF0cml4ICogVmVydGV4Q29vcmQ7Cn0KCiNlbGlmIGRlZmluZWQoRlJBR01FTlQpCgojaWYgX19WRVJTSU9OX18gPj0gMTMwCiNkZWZpbmUgQ09NUEFUX1ZBUllJTkcgaW4KI2RlZmluZSBDT01QQVRfVEVYVFVSRSB0ZXh0dXJlCm91dCB2ZWM0IEZyYWdDb2xvcjsKI2Vsc2UKI2RlZmluZSBDT01QQVRfVkFSWUlORyB2YXJ5aW5nCiNkZWZpbmUgRnJhZ0NvbG9yIGdsX0ZyYWdDb2xvcgojZGVmaW5lIENPTVBBVF9URVhUVVJFIHRleHR1cmUyRAojZW5kaWYKCiNpZmRlZiBHTF9FUwojaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJR0gKcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04gaGlnaHAKI2Vsc2UKcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiNkZWZpbmUgQ09NUEFUX1BSRUNJU0lPTiBtZWRpdW1wCiNlbmRpZgojZWxzZQojZGVmaW5lIENPTVBBVF9QUkVDSVNJT04KI2VuZGlmCgp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lRGlyZWN0aW9uOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gaW50IEZyYW1lQ291bnQ7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIE91dHB1dFNpemU7CnVuaWZvcm0gQ09NUEFUX1BSRUNJU0lPTiB2ZWMyIFRleHR1cmVTaXplOwp1bmlmb3JtIENPTVBBVF9QUkVDSVNJT04gdmVjMiBJbnB1dFNpemU7CnVuaWZvcm0gc2FtcGxlcjJEIFRleHR1cmU7CnVuaWZvcm0gc2FtcGxlcjJEIFByZXZUZXh0dXJlOwpDT01QQVRfVkFSWUlORyBDT01QQVRfUFJFQ0lTSU9OIHZlYzQgVEVYMDsKCnZvaWQgbWFpbigpCnsKCS8vIEdldCBjb2xvdXIgb2YgY3VycmVudCBwaXhlbAoJQ09NUEFUX1BSRUNJU0lPTiB2ZWMzIGNvbG91ciA9IENPTVBBVF9URVhUVVJFKFRleHR1cmUsIFRFWDAueHkpLnJnYjsKCQoJLy8gR2V0IGNvbG91ciBvZiBwcmV2aW91cyBwaXhlbAoJQ09NUEFUX1BSRUNJU0lPTiB2ZWMzIGNvbG91clByZXYgPSBDT01QQVRfVEVYVFVSRShQcmV2VGV4dHVyZSwgVEVYMC54eSkucmdiOwoJCgkvLyBNaXggY29sb3VycwoJY29sb3VyLnJnYiA9IG1peChjb2xvdXIucmdiLCBjb2xvdXJQcmV2LnJnYiwgMC41KTsKCQoJZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvdXIucmdiLCAxLjApOwp9CiNlbmRpZgo="}]}},function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("nipplejs",[],e):"object"==typeof exports?exports.nipplejs=e():t.nipplejs=e()}(window,(function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var s=e[n]={i:n,l:!1,exports:{}};return t[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)i.d(n,s,function(e){return t[e]}.bind(null,s));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=0)}([function(t,e,i){"use strict";i.r(e);var n,s=function(t,e){var i=e.x-t.x,n=e.y-t.y;return Math.sqrt(i*i+n*n)},o=function(t){return t*(Math.PI/180)},a=new Map,l=function(t){a.has(t)&&clearTimeout(a.get(t)),a.set(t,setTimeout(t,100))},r=function(t,e,i){for(var n,s=e.split(/[ ,]+/g),o=0;o=0&&this._handlers_[t].splice(this._handlers_[t].indexOf(e),1),this},f.prototype.trigger=function(t,e){var i,n=this,s=t.split(/[ ,]+/g);n._handlers_=n._handlers_||{};for(var o=0;oo&&s<3*o&&!t.lockX?e="up":s>-o&&s<=o&&!t.lockY?e="left":s>3*-o&&s<=-o&&!t.lockX?e="down":t.lockY||(e="right"),t.lockY||(i=s>-a&&s0?"up":"down"),t.force>this.options.threshold){var l,r={};for(l in this.direction)this.direction.hasOwnProperty(l)&&(r[l]=this.direction[l]);var c={};for(l in this.direction={x:i,y:n,angle:e},t.direction=this.direction,r)r[l]===this.direction[l]&&(c[l]=!0);if(c.x&&c.y&&c.angle)return t;c.x&&c.y||this.trigger("plain",t),c.x||this.trigger("plain:"+i,t),c.y||this.trigger("plain:"+n,t),c.angle||this.trigger("dir dir:"+e,t)}else this.resetDirection();return t};var A=S;function v(t,e){this.nipples=[],this.idles=[],this.actives=[],this.ids=[],this.pressureIntervals={},this.manager=t,this.id=v.id,v.id+=1,this.defaults={zone:document.body,multitouch:!1,maxNumberOfNipples:10,mode:"dynamic",position:{top:0,left:0},catchDistance:200,size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:.5,lockX:!1,lockY:!1,shape:"circle",dynamicPage:!1,follow:!1},this.config(e),"static"!==this.options.mode&&"semi"!==this.options.mode||(this.options.multitouch=!1),this.options.multitouch||(this.options.maxNumberOfNipples=1);var i=getComputedStyle(this.options.zone.parentElement);return i&&"flex"===i.display&&(this.parentIsFlex=!0),this.updateBox(),this.prepareNipples(),this.bindings(),this.begin(),this.nipples}v.prototype=new B,v.constructor=v,v.id=0,v.prototype.prepareNipples=function(){var t=this.nipples;t.on=this.on.bind(this),t.off=this.off.bind(this),t.options=this.options,t.destroy=this.destroy.bind(this),t.ids=this.ids,t.id=this.id,t.processOnMove=this.processOnMove.bind(this),t.processOnEnd=this.processOnEnd.bind(this),t.get=function(e){if(void 0===e)return t[0];for(var i=0,n=t.length;i

+ + + + diff --git a/vite.config.ts b/vite.config.ts index 2f222dba..c5cc9716 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,15 @@ import { sveltekit } from '@sveltejs/kit/vite'; -import { defineConfig } from 'vite'; +import { defineConfig, loadEnv } from 'vite'; import tailwindcss from '@tailwindcss/vite'; -export default defineConfig({ - plugins: [tailwindcss(), sveltekit()] +export default defineConfig(({ mode }) => { + const env = loadEnv(mode, process.cwd(), ''); + + return { + plugins: [tailwindcss(), sveltekit()], + define: { + 'process.env.PUBLIC_CONVEX_URL': JSON.stringify(env.PUBLIC_CONVEX_URL), + 'process.env.PUBLIC_CLERK_PUBLISHABLE_KEY': JSON.stringify(env.PUBLIC_CLERK_PUBLISHABLE_KEY) + } + }; });