akarisub 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -3
- package/dist/akarisub-worker.js +2 -2
- package/dist/akarisub-worker.wasm +0 -0
- package/dist/akarisub.umd.js +5 -5
- package/dist/index.js +5 -5
- package/dist/ts/index.d.ts +14 -0
- package/dist/ts/index.d.ts.map +1 -0
- package/dist/ts/index.js +17 -0
- package/dist/ts/index.js.map +1 -0
- package/dist/ts/ts/akarisub.d.ts +229 -0
- package/dist/ts/ts/akarisub.d.ts.map +1 -0
- package/dist/ts/ts/akarisub.js +1079 -0
- package/dist/ts/ts/akarisub.js.map +1 -0
- package/dist/ts/ts/types.d.ts +424 -0
- package/dist/ts/ts/types.d.ts.map +1 -0
- package/dist/ts/ts/types.js +5 -0
- package/dist/ts/ts/types.js.map +1 -0
- package/dist/ts/ts/utils.d.ts +78 -0
- package/dist/ts/ts/utils.d.ts.map +1 -0
- package/dist/ts/ts/utils.js +395 -0
- package/dist/ts/ts/utils.js.map +1 -0
- package/dist/ts/ts/webgl2-renderer.d.ts +51 -0
- package/dist/ts/ts/webgl2-renderer.d.ts.map +1 -0
- package/dist/ts/ts/webgl2-renderer.js +388 -0
- package/dist/ts/ts/webgl2-renderer.js.map +1 -0
- package/dist/ts/ts/webgpu-renderer.d.ts +64 -0
- package/dist/ts/ts/webgpu-renderer.d.ts.map +1 -0
- package/dist/ts/ts/webgpu-renderer.js +610 -0
- package/dist/ts/ts/webgpu-renderer.js.map +1 -0
- package/dist/ts/ts/worker.d.ts +6 -0
- package/dist/ts/ts/worker.d.ts.map +1 -0
- package/dist/ts/ts/worker.js +1695 -0
- package/dist/ts/ts/worker.js.map +1 -0
- package/dist/ts/wrapper.d.ts +8 -0
- package/dist/ts/wrapper.d.ts.map +1 -0
- package/dist/ts/wrapper.js +9 -0
- package/dist/ts/wrapper.js.map +1 -0
- package/package.json +7 -6
- package/src/ts/akarisub.ts +194 -75
- package/src/ts/types.ts +22 -17
- package/src/ts/webgl2-renderer.ts +7 -2
- package/src/ts/webgpu-renderer.ts +12 -4
- package/src/ts/worker.ts +207 -100
package/README.md
CHANGED
|
@@ -32,6 +32,20 @@ AkariSub is a JS wrapper for <a href="https://github.com/libass/libass">libass</
|
|
|
32
32
|
- **TypeScript Support** - Full TypeScript definitions and type safety
|
|
33
33
|
- **Updated Dependencies** - All dependencies updated to their latest versions, including libass
|
|
34
34
|
|
|
35
|
+
## Installation
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm install akarisub
|
|
39
|
+
# or
|
|
40
|
+
bun add akarisub
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
For JSR:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
deno add jsr:@altq/akarisub
|
|
47
|
+
```
|
|
48
|
+
|
|
35
49
|
## Usage
|
|
36
50
|
|
|
37
51
|
By default all you need to do is copy the files from the `dist/` folder of the repository into the same folder as where your JS runs, then do:
|
|
@@ -51,13 +65,13 @@ If you use a bundler like Vite, you can instead do:
|
|
|
51
65
|
|
|
52
66
|
```js
|
|
53
67
|
import AkariSub from 'akarisub'
|
|
54
|
-
import workerUrl from 'akarisub/
|
|
55
|
-
import wasmUrl from 'akarisub/
|
|
68
|
+
import workerUrl from 'akarisub/worker?url'
|
|
69
|
+
import wasmUrl from 'akarisub/worker.wasm?url'
|
|
56
70
|
|
|
57
71
|
const renderer = new AkariSub({
|
|
58
72
|
video: document.querySelector('video'),
|
|
59
73
|
subContent: subtitleString,
|
|
60
|
-
workerUrl,
|
|
74
|
+
workerUrl,
|
|
61
75
|
wasmUrl
|
|
62
76
|
})
|
|
63
77
|
```
|
package/dist/akarisub-worker.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(()=>{async function n1(G={}){var O,j=G,U=(...J)=>console.log(...J),N=(...J)=>console.error(...J);function P(){v?.(j)}var Y=!!globalThis.WorkerGlobalScope;(function(){var J=typeof WebAssembly<"u"&&WebAssembly.instantiateStreaming;if(!J)return;WebAssembly.instantiateStreaming=function(Z,Q){var K=null,X=Promise.resolve(Z).then(function(z){return K=z.clone(),z});return J.call(WebAssembly,X,Q).catch(function(z){if(console.warn("[AkariSub] instantiateStreaming failed, using ArrayBuffer fallback:",z&&z.message||z),!K)throw z;return K.arrayBuffer().then(function(W){return WebAssembly.instantiate(W,Q)})})}})(),U=(J)=>{if(J==="AkariSub: No usable fontconfig configuration file found, using fallback."||J.startsWith("Unable to revert mtime:")||J.trim()==="")console.debug(J);else console.log(J)},N=(J)=>{if(J==="Fontconfig error: Cannot load default config file: No such file: (null)"||J==="Fontconfig error: Cannot load default config file: File not found"||J==="Fontconfig error: No writable cache directories"||J.includes("/var/cache/fontconfig")||J.includes("/.cache/fontconfig")||J.includes("/.local/share/fonts"))console.debug(J);else console.error(J)};function w(J){throw J}var v,a,l=!1;function x(){var J=g.buffer;k=new Int8Array(J),D=new Int16Array(J),b=new Uint8Array(J),h=new Uint16Array(J),L=new Int32Array(J),B=new Uint32Array(J),S=new Float32Array(J),M=new Float64Array(J),H=new BigInt64Array(J),o=new BigUint64Array(J)}function n(){{var J=16777216;g=new WebAssembly.Memory({initial:J/65536,maximum:32768})}x()}n();var D,L,H,k,S,M,h,B,o,b,T=(J)=>v0(J),s=()=>C0(),g,OJ=new TextDecoder,GJ=(J,Z,Q,K)=>{var X=Z+Q;if(K)return X;while(J[Z]&&!(Z>=X))++Z;return Z},zJ=(J,Z,Q)=>{if(!J)return"";var K=GJ(b,J,Z,Q);return OJ.decode(b.subarray(J,K))},pJ=(J,Z,Q,K)=>w(`Assertion failed: ${zJ(J)}, at: `+[Z?zJ(Z):"unknown filename",Q,K?zJ(K):"unknown function"]),p={isAbs:(J)=>J.charAt(0)==="/",splitPath:(J)=>{var Z=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return Z.exec(J).slice(1)},normalizeArray:(J,Z)=>{var Q=0;for(var K=J.length-1;K>=0;K--){var X=J[K];if(X===".")J.splice(K,1);else if(X==="..")J.splice(K,1),Q++;else if(Q)J.splice(K,1),Q--}if(Z)for(;Q;Q--)J.unshift("..");return J},normalize:(J)=>{var Z=p.isAbs(J),Q=J.slice(-1)==="/";if(J=p.normalizeArray(J.split("/").filter((K)=>!!K),!Z).join("/"),!J&&!Z)J=".";if(J&&Q)J+="/";return(Z?"/":"")+J},dirname:(J)=>{var Z=p.splitPath(J),Q=Z[0],K=Z[1];if(!Q&&!K)return".";if(K)K=K.slice(0,-1);return Q+K},basename:(J)=>J&&J.match(/([^\/]+|\/)\/*$/)[1],join:(...J)=>p.normalize(J.join("/")),join2:(J,Z)=>p.normalize(J+"/"+Z)},e0=()=>(J)=>crypto.getRandomValues(J),ZZ=(J)=>{(ZZ=e0())(J)},yJ={resolve:(...J)=>{var Z="",Q=!1;for(var K=J.length-1;K>=-1&&!Q;K--){var X=K>=0?J[K]:$.cwd();if(typeof X!="string")throw TypeError("Arguments to path.resolve must be strings");else if(!X)return"";Z=X+"/"+Z,Q=p.isAbs(X)}return Z=p.normalizeArray(Z.split("/").filter((z)=>!!z),!Q).join("/"),(Q?"/":"")+Z||"."},relative:(J,Z)=>{J=yJ.resolve(J).slice(1),Z=yJ.resolve(Z).slice(1);function Q(R){var m=0;for(;m<R.length;m++)if(R[m]!=="")break;var I=R.length-1;for(;I>=0;I--)if(R[I]!=="")break;if(m>I)return[];return R.slice(m,I-m+1)}var K=Q(J.split("/")),X=Q(Z.split("/")),z=Math.min(K.length,X.length),W=z;for(var V=0;V<z;V++)if(K[V]!==X[V]){W=V;break}var q=[];for(var V=W;V<K.length;V++)q.push("..");return q=q.concat(X.slice(W)),q.join("/")}},RJ=(J,Z=0,Q,K)=>{var X=GJ(J,Z,Q,K);return OJ.decode(J.buffer?J.subarray(Z,X):new Uint8Array(J.slice(Z,X)))},$Z=[],fJ=(J)=>{var Z=0;for(var Q=0;Q<J.length;++Q){var K=J.charCodeAt(Q);if(K<=127)Z++;else if(K<=2047)Z+=2;else if(K>=55296&&K<=57343)Z+=4,++Q;else Z+=3}return Z},FZ=(J,Z,Q,K)=>{if(!(K>0))return 0;var X=Q,z=Q+K-1;for(var W=0;W<J.length;++W){var V=J.codePointAt(W);if(V<=127){if(Q>=z)break;Z[Q++]=V}else if(V<=2047){if(Q+1>=z)break;Z[Q++]=192|V>>6,Z[Q++]=128|V&63}else if(V<=65535){if(Q+2>=z)break;Z[Q++]=224|V>>12,Z[Q++]=128|V>>6&63,Z[Q++]=128|V&63}else{if(Q+3>=z)break;Z[Q++]=240|V>>18,Z[Q++]=128|V>>12&63,Z[Q++]=128|V>>6&63,Z[Q++]=128|V&63,W++}}return Z[Q]=0,Q-X},QZ=(J,Z,Q)=>{var K=Q>0?Q:fJ(J)+1,X=Array(K),z=FZ(J,X,0,X.length);if(Z)X.length=z;return X},J1=()=>{if(!$Z.length){var J=null;if(!J)return null;$Z=QZ(J,!0)}return $Z.shift()},NJ={ttys:[],init(){},shutdown(){},register(J,Z){NJ.ttys[J]={input:[],output:[],ops:Z},$.registerDevice(J,NJ.stream_ops)},stream_ops:{open(J){var Z=NJ.ttys[J.node.rdev];if(!Z)throw new $.ErrnoError(43);J.tty=Z,J.seekable=!1},close(J){J.tty.ops.fsync(J.tty)},fsync(J){J.tty.ops.fsync(J.tty)},read(J,Z,Q,K,X){if(!J.tty||!J.tty.ops.get_char)throw new $.ErrnoError(60);var z=0;for(var W=0;W<K;W++){var V;try{V=J.tty.ops.get_char(J.tty)}catch(q){throw new $.ErrnoError(29)}if(V===void 0&&z===0)throw new $.ErrnoError(6);if(V===null||V===void 0)break;z++,Z[Q+W]=V}if(z)J.node.atime=Date.now();return z},write(J,Z,Q,K,X){if(!J.tty||!J.tty.ops.put_char)throw new $.ErrnoError(60);try{for(var z=0;z<K;z++)J.tty.ops.put_char(J.tty,Z[Q+z])}catch(W){throw new $.ErrnoError(29)}if(K)J.node.mtime=J.node.ctime=Date.now();return z}},default_tty_ops:{get_char(J){return J1()},put_char(J,Z){if(Z===null||Z===10)U(RJ(J.output)),J.output=[];else if(Z!=0)J.output.push(Z)},fsync(J){if(J.output?.length>0)U(RJ(J.output)),J.output=[]},ioctl_tcgets(J){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(J,Z,Q){return 0},ioctl_tiocgwinsz(J){return[24,80]}},default_tty1_ops:{put_char(J,Z){if(Z===null||Z===10)N(RJ(J.output)),J.output=[];else if(Z!=0)J.output.push(Z)},fsync(J){if(J.output?.length>0)N(RJ(J.output)),J.output=[]}}},Z1=(J,Z)=>b.fill(0,J,J+Z),TZ=(J,Z)=>Math.ceil(J/Z)*Z,bZ=(J)=>{J=TZ(J,65536);var Z=R0(65536,J);if(Z)Z1(Z,J);return Z},A={ops_table:null,mount(J){return A.createNode(null,"/",16895,0)},createNode(J,Z,Q,K){if($.isBlkdev(Q)||$.isFIFO(Q))throw new $.ErrnoError(63);A.ops_table||={dir:{node:{getattr:A.node_ops.getattr,setattr:A.node_ops.setattr,lookup:A.node_ops.lookup,mknod:A.node_ops.mknod,rename:A.node_ops.rename,unlink:A.node_ops.unlink,rmdir:A.node_ops.rmdir,readdir:A.node_ops.readdir,symlink:A.node_ops.symlink},stream:{llseek:A.stream_ops.llseek}},file:{node:{getattr:A.node_ops.getattr,setattr:A.node_ops.setattr},stream:{llseek:A.stream_ops.llseek,read:A.stream_ops.read,write:A.stream_ops.write,mmap:A.stream_ops.mmap,msync:A.stream_ops.msync}},link:{node:{getattr:A.node_ops.getattr,setattr:A.node_ops.setattr,readlink:A.node_ops.readlink},stream:{}},chrdev:{node:{getattr:A.node_ops.getattr,setattr:A.node_ops.setattr},stream:$.chrdev_stream_ops}};var X=$.createNode(J,Z,Q,K);if($.isDir(X.mode))X.node_ops=A.ops_table.dir.node,X.stream_ops=A.ops_table.dir.stream,X.contents={};else if($.isFile(X.mode))X.node_ops=A.ops_table.file.node,X.stream_ops=A.ops_table.file.stream,X.usedBytes=0,X.contents=A.emptyFileContents??=new Uint8Array(0);else if($.isLink(X.mode))X.node_ops=A.ops_table.link.node,X.stream_ops=A.ops_table.link.stream;else if($.isChrdev(X.mode))X.node_ops=A.ops_table.chrdev.node,X.stream_ops=A.ops_table.chrdev.stream;if(X.atime=X.mtime=X.ctime=Date.now(),J)J.contents[Z]=X,J.atime=J.mtime=J.ctime=X.atime;return X},getFileDataAsTypedArray(J){return J.contents.subarray(0,J.usedBytes)},expandFileStorage(J,Z){var Q=J.contents.length;if(Q>=Z)return;var K=1048576;if(Z=Math.max(Z,Q*(Q<K?2:1.125)>>>0),Q)Z=Math.max(Z,256);var X=A.getFileDataAsTypedArray(J);J.contents=new Uint8Array(Z),J.contents.set(X)},resizeFileStorage(J,Z){if(J.usedBytes==Z)return;var Q=J.contents;J.contents=new Uint8Array(Z),J.contents.set(Q.subarray(0,Math.min(Z,J.usedBytes))),J.usedBytes=Z},node_ops:{getattr(J){var Z={};if(Z.dev=$.isChrdev(J.mode)?J.id:1,Z.ino=J.id,Z.mode=J.mode,Z.nlink=1,Z.uid=0,Z.gid=0,Z.rdev=J.rdev,$.isDir(J.mode))Z.size=4096;else if($.isFile(J.mode))Z.size=J.usedBytes;else if($.isLink(J.mode))Z.size=J.link.length;else Z.size=0;return Z.atime=new Date(J.atime),Z.mtime=new Date(J.mtime),Z.ctime=new Date(J.ctime),Z.blksize=4096,Z.blocks=Math.ceil(Z.size/Z.blksize),Z},setattr(J,Z){for(let Q of["mode","atime","mtime","ctime"])if(Z[Q]!=null)J[Q]=Z[Q];if(Z.size!==void 0)A.resizeFileStorage(J,Z.size)},lookup(J,Z){if(!A.doesNotExistError)A.doesNotExistError=new $.ErrnoError(44),A.doesNotExistError.stack="<generic error, no stack>";throw A.doesNotExistError},mknod(J,Z,Q,K){return A.createNode(J,Z,Q,K)},rename(J,Z,Q){var K;try{K=$.lookupNode(Z,Q)}catch(z){}if(K){if($.isDir(J.mode))for(var X in K.contents)throw new $.ErrnoError(55);$.hashRemoveNode(K)}delete J.parent.contents[J.name],Z.contents[Q]=J,J.name=Q,Z.ctime=Z.mtime=J.parent.ctime=J.parent.mtime=Date.now()},unlink(J,Z){delete J.contents[Z],J.ctime=J.mtime=Date.now()},rmdir(J,Z){var Q=$.lookupNode(J,Z);for(var K in Q.contents)throw new $.ErrnoError(55);delete J.contents[Z],J.ctime=J.mtime=Date.now()},readdir(J){return[".","..",...Object.keys(J.contents)]},symlink(J,Z,Q){var K=A.createNode(J,Z,41471,0);return K.link=Q,K},readlink(J){if(!$.isLink(J.mode))throw new $.ErrnoError(28);return J.link}},stream_ops:{read(J,Z,Q,K,X){var z=J.node.contents;if(X>=J.node.usedBytes)return 0;var W=Math.min(J.node.usedBytes-X,K);return Z.set(z.subarray(X,X+W),Q),W},write(J,Z,Q,K,X,z){if(Z.buffer===k.buffer)z=!1;if(!K)return 0;var W=J.node;if(W.mtime=W.ctime=Date.now(),z)W.contents=Z.subarray(Q,Q+K),W.usedBytes=K;else if(W.usedBytes===0&&X===0)W.contents=Z.slice(Q,Q+K),W.usedBytes=K;else A.expandFileStorage(W,X+K),W.contents.set(Z.subarray(Q,Q+K),X),W.usedBytes=Math.max(W.usedBytes,X+K);return K},llseek(J,Z,Q){var K=Z;if(Q===1)K+=J.position;else if(Q===2){if($.isFile(J.node.mode))K+=J.node.usedBytes}if(K<0)throw new $.ErrnoError(28);return K},mmap(J,Z,Q,K,X){if(!$.isFile(J.node.mode))throw new $.ErrnoError(43);var z,W,V=J.node.contents;if(!(X&2)&&V.buffer===k.buffer)W=!1,z=V.byteOffset;else{if(W=!0,z=bZ(Z),!z)throw new $.ErrnoError(48);if(V){if(Q>0||Q+Z<V.length)if(V.subarray)V=V.subarray(Q,Q+Z);else V=Array.prototype.slice.call(V,Q,Q+Z);k.set(V,z)}}return{ptr:z,allocated:W}},msync(J,Z,Q,K,X){return A.stream_ops.write(J,Z,0,K,Q,!1),0}}},$1=(J)=>{if(typeof J!="string")return J;var Z={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},Q=Z[J];if(typeof Q>"u")throw Error(`Unknown file open mode: ${J}`);return Q},_Z=(J)=>{if(typeof J=="string")J=QZ(J,!0);if(!J.subarray)J=new Uint8Array(J);return J},KZ=(J,Z)=>{var Q=0;if(J)Q|=365;if(Z)Q|=146;return Q},$={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{name="ErrnoError";constructor(J){this.errno=J}},FSStream:class{shared={};get object(){return this.node}set object(J){this.node=J}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(J){this.shared.flags=J}get position(){return this.shared.position}set position(J){this.shared.position=J}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(J,Z,Q,K){if(!J)J=this;this.parent=J,this.mount=J.mount,this.id=$.nextInode++,this.name=Z,this.mode=Q,this.rdev=K,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(J){J?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(J){J?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return $.isDir(this.mode)}get isDevice(){return $.isChrdev(this.mode)}},lookupPath(J,Z={}){if(!J)throw new $.ErrnoError(44);if(Z.follow_mount??=!0,!p.isAbs(J))J=$.cwd()+"/"+J;J:for(var Q=0;Q<40;Q++){var K=J.split("/").filter((R)=>!!R),X=$.root,z="/";for(var W=0;W<K.length;W++){var V=W===K.length-1;if(V&&Z.parent)break;if(K[W]===".")continue;if(K[W]===".."){if(z=p.dirname(z),$.isRoot(X)){J=z+"/"+K.slice(W+1).join("/"),Q--;continue J}else X=X.parent;continue}z=p.join2(z,K[W]);try{X=$.lookupNode(X,K[W])}catch(R){if(R?.errno===44&&V&&Z.noent_okay)return{path:z};throw R}if($.isMountpoint(X)&&(!V||Z.follow_mount))X=X.mounted.root;if($.isLink(X.mode)&&(!V||Z.follow)){if(!X.node_ops.readlink)throw new $.ErrnoError(52);var q=X.node_ops.readlink(X);if(!p.isAbs(q))q=p.dirname(z)+"/"+q;J=q+"/"+K.slice(W+1).join("/");continue J}}return{path:z,node:X}}throw new $.ErrnoError(32)},getPath(J){var Z;while(!0){if($.isRoot(J)){var Q=J.mount.mountpoint;if(!Z)return Q;return Q[Q.length-1]!=="/"?`${Q}/${Z}`:Q+Z}Z=Z?`${J.name}/${Z}`:J.name,J=J.parent}},hashName(J,Z){var Q=0;for(var K=0;K<Z.length;K++)Q=(Q<<5)-Q+Z.charCodeAt(K)|0;return(J+Q>>>0)%$.nameTable.length},hashAddNode(J){var Z=$.hashName(J.parent.id,J.name);J.name_next=$.nameTable[Z],$.nameTable[Z]=J},hashRemoveNode(J){var Z=$.hashName(J.parent.id,J.name);if($.nameTable[Z]===J)$.nameTable[Z]=J.name_next;else{var Q=$.nameTable[Z];while(Q){if(Q.name_next===J){Q.name_next=J.name_next;break}Q=Q.name_next}}},lookupNode(J,Z){var Q=$.mayLookup(J);if(Q)throw new $.ErrnoError(Q);var K=$.hashName(J.id,Z);for(var X=$.nameTable[K];X;X=X.name_next){var z=X.name;if(X.parent.id===J.id&&z===Z)return X}return $.lookup(J,Z)},createNode(J,Z,Q,K){var X=new $.FSNode(J,Z,Q,K);return $.hashAddNode(X),X},destroyNode(J){$.hashRemoveNode(J)},isRoot(J){return J===J.parent},isMountpoint(J){return!!J.mounted},isFile(J){return(J&61440)===32768},isDir(J){return(J&61440)===16384},isLink(J){return(J&61440)===40960},isChrdev(J){return(J&61440)===8192},isBlkdev(J){return(J&61440)===24576},isFIFO(J){return(J&61440)===4096},isSocket(J){return(J&49152)===49152},flagsToPermissionString(J){var Z=["r","w","rw"][J&3];if(J&512)Z+="w";return Z},nodePermissions(J,Z){if($.ignorePermissions)return 0;if(Z.includes("r")&&!(J.mode&292))return 2;if(Z.includes("w")&&!(J.mode&146))return 2;if(Z.includes("x")&&!(J.mode&73))return 2;return 0},mayLookup(J){if(!$.isDir(J.mode))return 54;var Z=$.nodePermissions(J,"x");if(Z)return Z;if(!J.node_ops.lookup)return 2;return 0},mayCreate(J,Z){if(!$.isDir(J.mode))return 54;try{var Q=$.lookupNode(J,Z);return 20}catch(K){}return $.nodePermissions(J,"wx")},mayDelete(J,Z,Q){var K;try{K=$.lookupNode(J,Z)}catch(z){return z.errno}var X=$.nodePermissions(J,"wx");if(X)return X;if(Q){if(!$.isDir(K.mode))return 54;if($.isRoot(K)||$.getPath(K)===$.cwd())return 10}else if($.isDir(K.mode))return 31;return 0},mayOpen(J,Z){if(!J)return 44;if($.isLink(J.mode))return 32;var Q=$.flagsToPermissionString(Z);if($.isDir(J.mode)){if(Q!=="r"||Z&576)return 31}return $.nodePermissions(J,Q)},checkOpExists(J,Z){if(!J)throw new $.ErrnoError(Z);return J},MAX_OPEN_FDS:4096,nextfd(){for(var J=0;J<=$.MAX_OPEN_FDS;J++)if(!$.streams[J])return J;throw new $.ErrnoError(33)},getStreamChecked(J){var Z=$.getStream(J);if(!Z)throw new $.ErrnoError(8);return Z},getStream:(J)=>$.streams[J],createStream(J,Z=-1){if(J=Object.assign(new $.FSStream,J),Z==-1)Z=$.nextfd();return J.fd=Z,$.streams[Z]=J,J},closeStream(J){$.streams[J]=null},dupStream(J,Z=-1){var Q=$.createStream(J,Z);return Q.stream_ops?.dup?.(Q),Q},doSetAttr(J,Z,Q){var K=J?.stream_ops.setattr,X=K?J:Z;K??=Z.node_ops.setattr,$.checkOpExists(K,63),K(X,Q)},chrdev_stream_ops:{open(J){var Z=$.getDevice(J.node.rdev);J.stream_ops=Z.stream_ops,J.stream_ops.open?.(J)},llseek(){throw new $.ErrnoError(70)}},major:(J)=>J>>8,minor:(J)=>J&255,makedev:(J,Z)=>J<<8|Z,registerDevice(J,Z){$.devices[J]={stream_ops:Z}},getDevice:(J)=>$.devices[J],getMounts(J){var Z=[],Q=[J];while(Q.length){var K=Q.pop();Z.push(K),Q.push(...K.mounts)}return Z},syncfs(J,Z){if(typeof J=="function")Z=J,J=!1;if($.syncFSRequests++,$.syncFSRequests>1)N(`warning: ${$.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var Q=$.getMounts($.root.mount),K=0;function X(V){return $.syncFSRequests--,Z(V)}function z(V){if(V){if(!z.errored)return z.errored=!0,X(V);return}if(++K>=Q.length)X(null)}for(var W of Q)if(W.type.syncfs)W.type.syncfs(W,J,z);else z(null)},mount(J,Z,Q){var K=Q==="/",X=!Q,z;if(K&&$.root)throw new $.ErrnoError(10);else if(!K&&!X){var W=$.lookupPath(Q,{follow_mount:!1});if(Q=W.path,z=W.node,$.isMountpoint(z))throw new $.ErrnoError(10);if(!$.isDir(z.mode))throw new $.ErrnoError(54)}var V={type:J,opts:Z,mountpoint:Q,mounts:[]},q=J.mount(V);if(q.mount=V,V.root=q,K)$.root=q;else if(z){if(z.mounted=V,z.mount)z.mount.mounts.push(V)}return q},unmount(J){var Z=$.lookupPath(J,{follow_mount:!1});if(!$.isMountpoint(Z.node))throw new $.ErrnoError(28);var Q=Z.node,K=Q.mounted,X=$.getMounts(K);for(var[z,W]of Object.entries($.nameTable))while(W){var V=W.name_next;if(X.includes(W.mount))$.destroyNode(W);W=V}Q.mounted=null;var q=Q.mount.mounts.indexOf(K);Q.mount.mounts.splice(q,1)},lookup(J,Z){return J.node_ops.lookup(J,Z)},mknod(J,Z,Q){var K=$.lookupPath(J,{parent:!0}),X=K.node,z=p.basename(J);if(!z)throw new $.ErrnoError(28);if(z==="."||z==="..")throw new $.ErrnoError(20);var W=$.mayCreate(X,z);if(W)throw new $.ErrnoError(W);if(!X.node_ops.mknod)throw new $.ErrnoError(63);return X.node_ops.mknod(X,z,Z,Q)},statfs(J){return $.statfsNode($.lookupPath(J,{follow:!0}).node)},statfsStream(J){return $.statfsNode(J.node)},statfsNode(J){var Z={bsize:4096,frsize:4096,blocks:1e6,bfree:500000,bavail:500000,files:$.nextInode,ffree:$.nextInode-1,fsid:42,flags:2,namelen:255};if(J.node_ops.statfs)Object.assign(Z,J.node_ops.statfs(J.mount.opts.root));return Z},create(J,Z=438){return Z&=4095,Z|=32768,$.mknod(J,Z,0)},mkdir(J,Z=511){return Z&=1023,Z|=16384,$.mknod(J,Z,0)},mkdirTree(J,Z){var Q=J.split("/"),K="";for(var X of Q){if(!X)continue;if(K||p.isAbs(J))K+="/";K+=X;try{$.mkdir(K,Z)}catch(z){if(z.errno!=20)throw z}}},mkdev(J,Z,Q){if(typeof Q>"u")Q=Z,Z=438;return Z|=8192,$.mknod(J,Z,Q)},symlink(J,Z){if(!yJ.resolve(J))throw new $.ErrnoError(44);var Q=$.lookupPath(Z,{parent:!0}),K=Q.node;if(!K)throw new $.ErrnoError(44);var X=p.basename(Z),z=$.mayCreate(K,X);if(z)throw new $.ErrnoError(z);if(!K.node_ops.symlink)throw new $.ErrnoError(63);return K.node_ops.symlink(K,X,J)},rename(J,Z){var Q=p.dirname(J),K=p.dirname(Z),X=p.basename(J),z=p.basename(Z),W,V,q;if(W=$.lookupPath(J,{parent:!0}),V=W.node,W=$.lookupPath(Z,{parent:!0}),q=W.node,!V||!q)throw new $.ErrnoError(44);if(V.mount!==q.mount)throw new $.ErrnoError(75);var R=$.lookupNode(V,X),m=yJ.relative(J,K);if(m.charAt(0)!==".")throw new $.ErrnoError(28);if(m=yJ.relative(Z,Q),m.charAt(0)!==".")throw new $.ErrnoError(55);var I;try{I=$.lookupNode(q,z)}catch(d){}if(R===I)return;var y=$.isDir(R.mode),_=$.mayDelete(V,X,y);if(_)throw new $.ErrnoError(_);if(_=I?$.mayDelete(q,z,y):$.mayCreate(q,z),_)throw new $.ErrnoError(_);if(!V.node_ops.rename)throw new $.ErrnoError(63);if($.isMountpoint(R)||I&&$.isMountpoint(I))throw new $.ErrnoError(10);if(q!==V){if(_=$.nodePermissions(V,"w"),_)throw new $.ErrnoError(_)}$.hashRemoveNode(R);try{V.node_ops.rename(R,q,z),R.parent=q}catch(d){throw d}finally{$.hashAddNode(R)}},rmdir(J){var Z=$.lookupPath(J,{parent:!0}),Q=Z.node,K=p.basename(J),X=$.lookupNode(Q,K),z=$.mayDelete(Q,K,!0);if(z)throw new $.ErrnoError(z);if(!Q.node_ops.rmdir)throw new $.ErrnoError(63);if($.isMountpoint(X))throw new $.ErrnoError(10);Q.node_ops.rmdir(Q,K),$.destroyNode(X)},readdir(J){var Z=$.lookupPath(J,{follow:!0}),Q=Z.node,K=$.checkOpExists(Q.node_ops.readdir,54);return K(Q)},unlink(J){var Z=$.lookupPath(J,{parent:!0}),Q=Z.node;if(!Q)throw new $.ErrnoError(44);var K=p.basename(J),X=$.lookupNode(Q,K),z=$.mayDelete(Q,K,!1);if(z)throw new $.ErrnoError(z);if(!Q.node_ops.unlink)throw new $.ErrnoError(63);if($.isMountpoint(X))throw new $.ErrnoError(10);Q.node_ops.unlink(Q,K),$.destroyNode(X)},readlink(J){var Z=$.lookupPath(J),Q=Z.node;if(!Q)throw new $.ErrnoError(44);if(!Q.node_ops.readlink)throw new $.ErrnoError(28);return Q.node_ops.readlink(Q)},stat(J,Z){var Q=$.lookupPath(J,{follow:!Z}),K=Q.node,X=$.checkOpExists(K.node_ops.getattr,63);return X(K)},fstat(J){var Z=$.getStreamChecked(J),Q=Z.node,K=Z.stream_ops.getattr,X=K?Z:Q;return K??=Q.node_ops.getattr,$.checkOpExists(K,63),K(X)},lstat(J){return $.stat(J,!0)},doChmod(J,Z,Q,K){$.doSetAttr(J,Z,{mode:Q&4095|Z.mode&-4096,ctime:Date.now(),dontFollow:K})},chmod(J,Z,Q){var K;if(typeof J=="string"){var X=$.lookupPath(J,{follow:!Q});K=X.node}else K=J;$.doChmod(null,K,Z,Q)},lchmod(J,Z){$.chmod(J,Z,!0)},fchmod(J,Z){var Q=$.getStreamChecked(J);$.doChmod(Q,Q.node,Z,!1)},doChown(J,Z,Q){$.doSetAttr(J,Z,{timestamp:Date.now(),dontFollow:Q})},chown(J,Z,Q,K){var X;if(typeof J=="string"){var z=$.lookupPath(J,{follow:!K});X=z.node}else X=J;$.doChown(null,X,K)},lchown(J,Z,Q){$.chown(J,Z,Q,!0)},fchown(J,Z,Q){var K=$.getStreamChecked(J);$.doChown(K,K.node,!1)},doTruncate(J,Z,Q){if($.isDir(Z.mode))throw new $.ErrnoError(31);if(!$.isFile(Z.mode))throw new $.ErrnoError(28);var K=$.nodePermissions(Z,"w");if(K)throw new $.ErrnoError(K);$.doSetAttr(J,Z,{size:Q,timestamp:Date.now()})},truncate(J,Z){if(Z<0)throw new $.ErrnoError(28);var Q;if(typeof J=="string"){var K=$.lookupPath(J,{follow:!0});Q=K.node}else Q=J;$.doTruncate(null,Q,Z)},ftruncate(J,Z){var Q=$.getStreamChecked(J);if(Z<0||(Q.flags&2097155)===0)throw new $.ErrnoError(28);$.doTruncate(Q,Q.node,Z)},utime(J,Z,Q){var K=$.lookupPath(J,{follow:!0}),X=K.node,z=$.checkOpExists(X.node_ops.setattr,63);z(X,{atime:Z,mtime:Q})},open(J,Z,Q=438){if(J==="")throw new $.ErrnoError(44);if(Z=$1(Z),Z&64)Q=Q&4095|32768;else Q=0;var K,X;if(typeof J=="object")K=J;else{X=J.endsWith("/");var z=$.lookupPath(J,{follow:!(Z&131072),noent_okay:!0});K=z.node,J=z.path}var W=!1;if(Z&64)if(K){if(Z&128)throw new $.ErrnoError(20)}else if(X)throw new $.ErrnoError(31);else K=$.mknod(J,Q|511,0),W=!0;if(!K)throw new $.ErrnoError(44);if($.isChrdev(K.mode))Z&=-513;if(Z&65536&&!$.isDir(K.mode))throw new $.ErrnoError(54);if(!W){var V=$.mayOpen(K,Z);if(V)throw new $.ErrnoError(V)}if(Z&512&&!W)$.truncate(K,0);Z&=-131713;var q=$.createStream({node:K,path:$.getPath(K),flags:Z,seekable:!0,position:0,stream_ops:K.stream_ops,ungotten:[],error:!1});if(q.stream_ops.open)q.stream_ops.open(q);if(W)$.chmod(K,Q&511);return q},close(J){if($.isClosed(J))throw new $.ErrnoError(8);if(J.getdents)J.getdents=null;try{if(J.stream_ops.close)J.stream_ops.close(J)}catch(Z){throw Z}finally{$.closeStream(J.fd)}J.fd=null},isClosed(J){return J.fd===null},llseek(J,Z,Q){if($.isClosed(J))throw new $.ErrnoError(8);if(!J.seekable||!J.stream_ops.llseek)throw new $.ErrnoError(70);if(Q!=0&&Q!=1&&Q!=2)throw new $.ErrnoError(28);return J.position=J.stream_ops.llseek(J,Z,Q),J.ungotten=[],J.position},read(J,Z,Q,K,X){if(K<0||X<0)throw new $.ErrnoError(28);if($.isClosed(J))throw new $.ErrnoError(8);if((J.flags&2097155)===1)throw new $.ErrnoError(8);if($.isDir(J.node.mode))throw new $.ErrnoError(31);if(!J.stream_ops.read)throw new $.ErrnoError(28);var z=typeof X<"u";if(!z)X=J.position;else if(!J.seekable)throw new $.ErrnoError(70);var W=J.stream_ops.read(J,Z,Q,K,X);if(!z)J.position+=W;return W},write(J,Z,Q,K,X,z){if(K<0||X<0)throw new $.ErrnoError(28);if($.isClosed(J))throw new $.ErrnoError(8);if((J.flags&2097155)===0)throw new $.ErrnoError(8);if($.isDir(J.node.mode))throw new $.ErrnoError(31);if(!J.stream_ops.write)throw new $.ErrnoError(28);if(J.seekable&&J.flags&1024)$.llseek(J,0,2);var W=typeof X<"u";if(!W)X=J.position;else if(!J.seekable)throw new $.ErrnoError(70);var V=J.stream_ops.write(J,Z,Q,K,X,z);if(!W)J.position+=V;return V},mmap(J,Z,Q,K,X){if((K&2)!==0&&(X&2)===0&&(J.flags&2097155)!==2)throw new $.ErrnoError(2);if((J.flags&2097155)===1)throw new $.ErrnoError(2);if(!J.stream_ops.mmap)throw new $.ErrnoError(43);if(!Z)throw new $.ErrnoError(28);return J.stream_ops.mmap(J,Z,Q,K,X)},msync(J,Z,Q,K,X){if(!J.stream_ops.msync)return 0;return J.stream_ops.msync(J,Z,Q,K,X)},ioctl(J,Z,Q){if(!J.stream_ops.ioctl)throw new $.ErrnoError(59);return J.stream_ops.ioctl(J,Z,Q)},readFile(J,Z={}){if(Z.flags=Z.flags||0,Z.encoding=Z.encoding||"binary",Z.encoding!=="utf8"&&Z.encoding!=="binary")w(`Invalid encoding type "${Z.encoding}"`);var Q=$.open(J,Z.flags),K=$.stat(J),X=K.size,z=new Uint8Array(X);if($.read(Q,z,0,X,0),Z.encoding==="utf8")z=RJ(z);return $.close(Q),z},writeFile(J,Z,Q={}){Q.flags=Q.flags||577;var K=$.open(J,Q.flags,Q.mode);Z=_Z(Z),$.write(K,Z,0,Z.byteLength,void 0,Q.canOwn),$.close(K)},cwd:()=>$.currentPath,chdir(J){var Z=$.lookupPath(J,{follow:!0});if(Z.node===null)throw new $.ErrnoError(44);if(!$.isDir(Z.node.mode))throw new $.ErrnoError(54);var Q=$.nodePermissions(Z.node,"x");if(Q)throw new $.ErrnoError(Q);$.currentPath=Z.path},createDefaultDirectories(){$.mkdir("/tmp"),$.mkdir("/home"),$.mkdir("/home/web_user")},createDefaultDevices(){$.mkdir("/dev"),$.registerDevice($.makedev(1,3),{read:()=>0,write:(K,X,z,W,V)=>W,llseek:()=>0}),$.mkdev("/dev/null",$.makedev(1,3)),NJ.register($.makedev(5,0),NJ.default_tty_ops),NJ.register($.makedev(6,0),NJ.default_tty1_ops),$.mkdev("/dev/tty",$.makedev(5,0)),$.mkdev("/dev/tty1",$.makedev(6,0));var J=new Uint8Array(1024),Z=0,Q=()=>{if(Z===0)ZZ(J),Z=J.byteLength;return J[--Z]};$.createDevice("/dev","random",Q),$.createDevice("/dev","urandom",Q),$.mkdir("/dev/shm"),$.mkdir("/dev/shm/tmp")},createSpecialDirectories(){$.mkdir("/proc");var J=$.mkdir("/proc/self");$.mkdir("/proc/self/fd"),$.mount({mount(){var Z=$.createNode(J,"fd",16895,73);return Z.stream_ops={llseek:A.stream_ops.llseek},Z.node_ops={lookup(Q,K){var X=+K,z=$.getStreamChecked(X),W={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>z.path},id:X+1};return W.parent=W,W},readdir(){return Array.from($.streams.entries()).filter(([Q,K])=>K).map(([Q,K])=>Q.toString())}},Z}},{},"/proc/self/fd")},createStandardStreams(J,Z,Q){if(J)$.createDevice("/dev","stdin",J);else $.symlink("/dev/tty","/dev/stdin");if(Z)$.createDevice("/dev","stdout",null,Z);else $.symlink("/dev/tty","/dev/stdout");if(Q)$.createDevice("/dev","stderr",null,Q);else $.symlink("/dev/tty1","/dev/stderr");var K=$.open("/dev/stdin",0),X=$.open("/dev/stdout",1),z=$.open("/dev/stderr",1)},staticInit(){$.nameTable=Array(4096),$.mount(A,{},"/"),$.createDefaultDirectories(),$.createDefaultDevices(),$.createSpecialDirectories(),$.filesystems={MEMFS:A}},init(J,Z,Q){$.initialized=!0,$.createStandardStreams(J,Z,Q)},quit(){$.initialized=!1;for(var J of $.streams)if(J)$.close(J)},findObject(J,Z){var Q=$.analyzePath(J,Z);if(!Q.exists)return null;return Q.object},analyzePath(J,Z){try{var Q=$.lookupPath(J,{follow:!Z});J=Q.path}catch(X){}var K={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var Q=$.lookupPath(J,{parent:!0});K.parentExists=!0,K.parentPath=Q.path,K.parentObject=Q.node,K.name=p.basename(J),Q=$.lookupPath(J,{follow:!Z}),K.exists=!0,K.path=Q.path,K.object=Q.node,K.name=Q.node.name,K.isRoot=Q.path==="/"}catch(X){K.error=X.errno}return K},createPath(J,Z,Q,K){J=typeof J=="string"?J:$.getPath(J);var X=Z.split("/").reverse();while(X.length){var z=X.pop();if(!z)continue;var W=p.join2(J,z);try{$.mkdir(W)}catch(V){if(V.errno!=20)throw V}J=W}return W},createFile(J,Z,Q,K,X){var z=p.join2(typeof J=="string"?J:$.getPath(J),Z),W=KZ(K,X);return $.create(z,W)},createDataFile(J,Z,Q,K,X,z){var W=Z;if(J)J=typeof J=="string"?J:$.getPath(J),W=Z?p.join2(J,Z):J;var V=KZ(K,X),q=$.create(W,V);if(Q){Q=_Z(Q),$.chmod(q,V|146);var R=$.open(q,577);$.write(R,Q,0,Q.length,0,z),$.close(R),$.chmod(q,V)}},createDevice(J,Z,Q,K){var X=p.join2(typeof J=="string"?J:$.getPath(J),Z),z=KZ(!!Q,!!K);$.createDevice.major??=64;var W=$.makedev($.createDevice.major++,0);return $.registerDevice(W,{open(V){V.seekable=!1},close(V){if(K?.buffer?.length)K(10)},read(V,q,R,m,I){var y=0;for(var _=0;_<m;_++){var d;try{d=Q()}catch(t){throw new $.ErrnoError(29)}if(d===void 0&&y===0)throw new $.ErrnoError(6);if(d===null||d===void 0)break;y++,q[R+_]=d}if(y)V.node.atime=Date.now();return y},write(V,q,R,m,I){for(var y=0;y<m;y++)try{K(q[R+y])}catch(_){throw new $.ErrnoError(29)}if(m)V.node.mtime=V.node.ctime=Date.now();return y}}),$.mkdev(X,z,W)},forceLoadFile(J){if(J.isDevice||J.isFolder||J.link||J.contents)return!0;if(globalThis.XMLHttpRequest)w("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");else try{J.contents=readBinary(J.url)}catch(Z){throw new $.ErrnoError(29)}},createLazyFile(J,Z,Q,K,X){class z{lengthKnown=!1;chunks=[];get(I){if(I>this.length-1||I<0)return;var y=I%this.chunkSize,_=I/this.chunkSize|0;return this.getter(_)[y]}setDataGetter(I){this.getter=I}cacheLength(){var I=new XMLHttpRequest;if(I.open("HEAD",Q,!1),I.send(null),!(I.status>=200&&I.status<300||I.status===304))w("Couldn't load "+Q+". Status: "+I.status);var y=Number(I.getResponseHeader("Content-length")),_,d=(_=I.getResponseHeader("Accept-Ranges"))&&_==="bytes",t=(_=I.getResponseHeader("Content-Encoding"))&&_==="gzip",e=1048576;if(!d)e=y;var CJ=(WJ,kJ)=>{if(WJ>kJ)w("invalid range ("+WJ+", "+kJ+") or no bytes requested!");if(kJ>y-1)w("only "+y+" bytes available! programmer error!");var JJ=new XMLHttpRequest;if(JJ.open("GET",Q,!1),y!==e)JJ.setRequestHeader("Range","bytes="+WJ+"-"+kJ);if(JJ.responseType="arraybuffer",JJ.overrideMimeType)JJ.overrideMimeType("text/plain; charset=x-user-defined");if(JJ.send(null),!(JJ.status>=200&&JJ.status<300||JJ.status===304))w("Couldn't load "+Q+". Status: "+JJ.status);if(JJ.response!==void 0)return new Uint8Array(JJ.response||[]);return QZ(JJ.responseText||"",!0)},QJ=this;if(QJ.setDataGetter((WJ)=>{var kJ=WJ*e,JJ=(WJ+1)*e-1;if(JJ=Math.min(JJ,y-1),typeof QJ.chunks[WJ]>"u")QJ.chunks[WJ]=CJ(kJ,JJ);if(typeof QJ.chunks[WJ]>"u")w("doXHR failed!");return QJ.chunks[WJ]}),t||!y)e=y=1,y=this.getter(0).length,e=y,U("LazyFiles on gzip forces download of the whole file when length is accessed");this._length=y,this._chunkSize=e,this.lengthKnown=!0}get length(){if(!this.lengthKnown)this.cacheLength();return this._length}get chunkSize(){if(!this.lengthKnown)this.cacheLength();return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!Y)w("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var W=new z,V={isDevice:!1,contents:W}}else var V={isDevice:!1,url:Q};var q=$.createFile(J,Z,V,K,X);if(V.contents)q.contents=V.contents;else if(V.url)q.contents=null,q.url=V.url;Object.defineProperties(q,{usedBytes:{get:function(){return this.contents.length}}});var R={};for(let[I,y]of Object.entries(q.stream_ops))R[I]=(..._)=>{return $.forceLoadFile(q),y(..._)};function m(I,y,_,d,t){var e=I.node.contents;if(t>=e.length)return 0;var CJ=Math.min(e.length-t,d);if(e.slice)for(var QJ=0;QJ<CJ;QJ++)y[_+QJ]=e[t+QJ];else for(var QJ=0;QJ<CJ;QJ++)y[_+QJ]=e.get(t+QJ);return CJ}return R.read=(I,y,_,d,t)=>{return $.forceLoadFile(q),m(I,y,_,d,t)},R.mmap=(I,y,_,d,t)=>{$.forceLoadFile(q);var e=bZ(y);if(!e)throw new $.ErrnoError(48);return m(I,k,e,y,_),{ptr:e,allocated:!0}},q.stream_ops=R,q}},F={calculateAt(J,Z,Q){if(p.isAbs(Z))return Z;var K;if(J===-100)K=$.cwd();else{var X=F.getStreamFromFD(J);K=X.path}if(Z.length==0){if(!Q)throw new $.ErrnoError(44);return K}return K+"/"+Z},writeStat(J,Z){B[J>>2]=Z.dev,B[J+4>>2]=Z.mode,B[J+8>>2]=Z.nlink,B[J+12>>2]=Z.uid,B[J+16>>2]=Z.gid,B[J+20>>2]=Z.rdev,H[J+24>>3]=BigInt(Z.size),L[J+32>>2]=4096,L[J+36>>2]=Z.blocks;var Q=Z.atime.getTime(),K=Z.mtime.getTime(),X=Z.ctime.getTime();return H[J+40>>3]=BigInt(Math.floor(Q/1000)),B[J+48>>2]=Q%1000*1000*1000,H[J+56>>3]=BigInt(Math.floor(K/1000)),B[J+64>>2]=K%1000*1000*1000,H[J+72>>3]=BigInt(Math.floor(X/1000)),B[J+80>>2]=X%1000*1000*1000,H[J+88>>3]=BigInt(Z.ino),0},writeStatFs(J,Z){B[J+4>>2]=Z.bsize,B[J+60>>2]=Z.bsize,H[J+8>>3]=BigInt(Z.blocks),H[J+16>>3]=BigInt(Z.bfree),H[J+24>>3]=BigInt(Z.bavail),H[J+32>>3]=BigInt(Z.files),H[J+40>>3]=BigInt(Z.ffree),B[J+48>>2]=Z.fsid,B[J+64>>2]=Z.flags,B[J+56>>2]=Z.namelen},doMsync(J,Z,Q,K,X){if(!$.isFile(Z.node.mode))throw new $.ErrnoError(43);if(K&2)return 0;var z=b.slice(J,J+Q);$.msync(Z,z,X,Q,K)},getStreamFromFD(J){var Z=$.getStreamChecked(J);return Z},varargs:void 0,getStr(J){var Z=zJ(J);return Z}};function Q1(J,Z){try{return J=F.getStr(J),$.chmod(J,Z),0}catch(Q){if(typeof $>"u"||Q.name!=="ErrnoError")throw Q;return-Q.errno}}function K1(J,Z,Q,K){try{if(Z=F.getStr(Z),Z=F.calculateAt(J,Z),Q&-8)return-28;var X=$.lookupPath(Z,{follow:!0}),z=X.node;if(!z)return-44;var W="";if(Q&4)W+="r";if(Q&2)W+="w";if(Q&1)W+="x";if(W&&$.nodePermissions(z,W))return-2;return 0}catch(V){if(typeof $>"u"||V.name!=="ErrnoError")throw V;return-V.errno}}var cJ=()=>{var J=L[+F.varargs>>2];return F.varargs+=4,J},DJ=cJ;function G1(J,Z,Q){F.varargs=Q;try{var K=F.getStreamFromFD(J);switch(Z){case 0:{var X=cJ();if(X<0)return-28;while($.streams[X])X++;var z=$.dupStream(K,X);return z.fd}case 1:case 2:return 0;case 3:return K.flags;case 4:{var X=cJ();return K.flags|=X,0}case 12:{var X=DJ(),W=0;return D[X+W>>1]=2,0}case 13:case 14:return 0}return-28}catch(V){if(typeof $>"u"||V.name!=="ErrnoError")throw V;return-V.errno}}function X1(J,Z){try{return F.writeStat(Z,$.fstat(J))}catch(Q){if(typeof $>"u"||Q.name!=="ErrnoError")throw Q;return-Q.errno}}var mJ=(J,Z,Q)=>FZ(J,b,Z,Q);function z1(J,Z){try{if(Z===0)return-28;var Q=$.cwd(),K=fJ(Q)+1;if(Z<K)return-68;return mJ(Q,J,Z),K}catch(X){if(typeof $>"u"||X.name!=="ErrnoError")throw X;return-X.errno}}function j1(J,Z,Q){try{var K=F.getStreamFromFD(J);K.getdents||=$.readdir(K.path);var X=280,z=0,W=$.llseek(K,0,1),V=Math.floor(W/X),q=Math.min(K.getdents.length,V+Math.floor(Q/X));for(var R=V;R<q;R++){var m,I,y=K.getdents[R];if(y===".")m=K.node.id,I=4;else if(y===".."){var _=$.lookupPath(K.path,{parent:!0});m=_.node.id,I=4}else{var d;try{d=$.lookupNode(K.node,y)}catch(t){if(t?.errno===28)continue;throw t}m=d.id,I=$.isChrdev(d.mode)?2:$.isDir(d.mode)?4:$.isLink(d.mode)?10:8}H[Z+z>>3]=BigInt(m),H[Z+z+8>>3]=BigInt((R+1)*X),D[Z+z+16>>1]=280,k[Z+z+18]=I,mJ(y,Z+z+19,256),z+=X}return $.llseek(K,R*X,0),z}catch(t){if(typeof $>"u"||t.name!=="ErrnoError")throw t;return-t.errno}}function O1(J,Z,Q){F.varargs=Q;try{var K=F.getStreamFromFD(J);switch(Z){case 21509:{if(!K.tty)return-59;return 0}case 21505:{if(!K.tty)return-59;if(K.tty.ops.ioctl_tcgets){var X=K.tty.ops.ioctl_tcgets(K),z=DJ();L[z>>2]=X.c_iflag||0,L[z+4>>2]=X.c_oflag||0,L[z+8>>2]=X.c_cflag||0,L[z+12>>2]=X.c_lflag||0;for(var W=0;W<32;W++)k[z+W+17]=X.c_cc[W]||0;return 0}return 0}case 21510:case 21511:case 21512:{if(!K.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!K.tty)return-59;if(K.tty.ops.ioctl_tcsets){var z=DJ(),V=L[z>>2],q=L[z+4>>2],R=L[z+8>>2],m=L[z+12>>2],I=[];for(var W=0;W<32;W++)I.push(k[z+W+17]);return K.tty.ops.ioctl_tcsets(K.tty,Z,{c_iflag:V,c_oflag:q,c_cflag:R,c_lflag:m,c_cc:I})}return 0}case 21519:{if(!K.tty)return-59;var z=DJ();return L[z>>2]=0,0}case 21520:{if(!K.tty)return-59;return-28}case 21537:case 21531:{var z=DJ();return $.ioctl(K,Z,z)}case 21523:{if(!K.tty)return-59;if(K.tty.ops.ioctl_tiocgwinsz){var y=K.tty.ops.ioctl_tiocgwinsz(K.tty),z=DJ();D[z>>1]=y[0],D[z+2>>1]=y[1]}return 0}case 21524:{if(!K.tty)return-59;return 0}case 21515:{if(!K.tty)return-59;return 0}default:return-28}}catch(_){if(typeof $>"u"||_.name!=="ErrnoError")throw _;return-_.errno}}function W1(J,Z){try{return J=F.getStr(J),F.writeStat(Z,$.lstat(J))}catch(Q){if(typeof $>"u"||Q.name!=="ErrnoError")throw Q;return-Q.errno}}function V1(J,Z,Q){try{return Z=F.getStr(Z),Z=F.calculateAt(J,Z),$.mkdir(Z,Q,0),0}catch(K){if(typeof $>"u"||K.name!=="ErrnoError")throw K;return-K.errno}}function Y1(J,Z,Q,K){try{Z=F.getStr(Z);var X=K&256,z=K&4096;return K=K&-6401,Z=F.calculateAt(J,Z,z),F.writeStat(Q,X?$.lstat(Z):$.stat(Z))}catch(W){if(typeof $>"u"||W.name!=="ErrnoError")throw W;return-W.errno}}function U1(J,Z,Q,K){F.varargs=K;try{Z=F.getStr(Z),Z=F.calculateAt(J,Z);var X=K?cJ():0;return $.open(Z,Q,X).fd}catch(z){if(typeof $>"u"||z.name!=="ErrnoError")throw z;return-z.errno}}function B1(J,Z,Q,K){try{if(Z=F.getStr(Z),Z=F.calculateAt(J,Z),K<=0)return-28;var X=$.readlink(Z),z=Math.min(K,fJ(X)),W=k[Q+z];return mJ(X,Q,K+1),k[Q+z]=W,z}catch(V){if(typeof $>"u"||V.name!=="ErrnoError")throw V;return-V.errno}}function q1(J,Z,Q,K){try{return Z=F.getStr(Z),K=F.getStr(K),Z=F.calculateAt(J,Z),K=F.calculateAt(Q,K),$.rename(Z,K),0}catch(X){if(typeof $>"u"||X.name!=="ErrnoError")throw X;return-X.errno}}function N1(J){try{return J=F.getStr(J),$.rmdir(J),0}catch(Z){if(typeof $>"u"||Z.name!=="ErrnoError")throw Z;return-Z.errno}}function H1(J,Z){try{return J=F.getStr(J),F.writeStat(Z,$.stat(J))}catch(Q){if(typeof $>"u"||Q.name!=="ErrnoError")throw Q;return-Q.errno}}function P1(J,Z,Q){try{if(Z=F.getStr(Z),Z=F.calculateAt(J,Z),!Q)$.unlink(Z);else if(Q===512)$.rmdir(Z);else return-28;return 0}catch(K){if(typeof $>"u"||K.name!=="ErrnoError")throw K;return-K.errno}}var EZ=(J)=>B[J>>2]+L[J+4>>2]*4294967296;function w1(J,Z,Q,K){try{Z=F.getStr(Z),Z=F.calculateAt(J,Z,!0);var X=Date.now(),z,W;if(!Q)z=X,W=X;else{var V=EZ(Q),q=L[Q+8>>2];if(q==1073741823)z=X;else if(q==1073741822)z=null;else z=V*1000+q/1e6;if(Q+=16,V=EZ(Q),q=L[Q+8>>2],q==1073741823)W=X;else if(q==1073741822)W=null;else W=V*1000+q/1e6}if((W??z)!==null)$.utime(Z,z,W);return 0}catch(R){if(typeof $>"u"||R.name!=="ErrnoError")throw R;return-R.errno}}var D1=()=>w(""),k1=()=>{throw 1/0},L1=()=>Date.now(),A1=()=>performance.now(),I1=()=>2147483648,y1=(J)=>{var Z=g.buffer.byteLength,Q=(J-Z+65535)/65536|0;try{return g.grow(Q),x(),1}catch(K){}},R1=(J)=>{var Z=b.length;J>>>=0;var Q=I1();if(J>Q)return!1;for(var K=1;K<=4;K*=2){var X=Z*(1+0.2/K);X=Math.min(X,J+100663296);var z=Math.min(Q,TZ(Math.max(J,X),65536)),W=y1(z);if(W)return!0}return!1},GZ={},v1=()=>"./this.program",vJ=()=>{if(!vJ.strings){var J=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",Z={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:J,_:v1()};for(var Q in GZ)if(GZ[Q]===void 0)delete Z[Q];else Z[Q]=GZ[Q];var K=[];for(var Q in Z)K.push(`${Q}=${Z[Q]}`);vJ.strings=K}return vJ.strings},C1=(J,Z)=>{var Q=0,K=0;for(var X of vJ()){var z=Z+Q;B[J+K>>2]=z,Q+=mJ(X,z,1/0)+1,K+=4}return 0},F1=(J,Z)=>{var Q=vJ();B[J>>2]=Q.length;var K=0;for(var X of Q)K+=fJ(X)+1;return B[Z>>2]=K,0},T1=(J)=>{throw`exit(${J})`},b1=T1;function _1(J){try{var Z=F.getStreamFromFD(J);return $.close(Z),0}catch(Q){if(typeof $>"u"||Q.name!=="ErrnoError")throw Q;return Q.errno}}var E1=(J,Z,Q,K)=>{var X=0;for(var z=0;z<Q;z++){var W=B[Z>>2],V=B[Z+4>>2];Z+=8;var q=$.read(J,k,W,V,K);if(q<0)return-1;if(X+=q,q<V)break;if(typeof K<"u")K+=q}return X};function g1(J,Z,Q,K){try{var X=F.getStreamFromFD(J),z=E1(X,Z,Q);return B[K>>2]=z,0}catch(W){if(typeof $>"u"||W.name!=="ErrnoError")throw W;return W.errno}}var M1=9007199254740992,x1=-9007199254740992,S1=(J)=>J<x1||J>M1?NaN:Number(J);function h1(J,Z,Q,K){Z=S1(Z);try{if(isNaN(Z))return 61;var X=F.getStreamFromFD(J);if($.llseek(X,Z,Q),H[K>>3]=BigInt(X.position),X.getdents&&Z===0&&Q===0)X.getdents=null;return 0}catch(z){if(typeof $>"u"||z.name!=="ErrnoError")throw z;return z.errno}}var p1=(J,Z,Q,K)=>{var X=0;for(var z=0;z<Q;z++){var W=B[Z>>2],V=B[Z+4>>2];Z+=8;var q=$.write(J,k,W,V,K);if(q<0)return-1;if(X+=q,q<V)break;if(typeof K<"u")K+=q}return X};function f1(J,Z,Q,K){try{var X=F.getStreamFromFD(J),z=p1(X,Z,Q);return B[K>>2]=z,0}catch(W){if(typeof $>"u"||W.name!=="ErrnoError")throw W;return W.errno}}function c1(J,Z){try{return ZZ(b.subarray(J,J+Z)),0}catch(Q){if(typeof $>"u"||Q.name!=="ErrnoError")throw Q;return Q.errno}}var gZ=[],MZ=(J)=>{var Z=gZ[J];if(!Z)gZ[J]=Z=F0.get(J);return Z};$.staticInit();var xZ,SZ,hZ,pZ,fZ,cZ,mZ,uZ,lZ,sZ,oZ,dZ,rZ,nZ,iZ,aZ,tZ,eZ,J0,Z0,$0,Q0,K0,G0,X0,z0,j0,O0,W0,V0,Y0,U0,B0,q0,N0,H0,P0,w0,D0,k0,L0,A0,I0,y0,R0,XZ,v0,C0,m1,F0;function u1(J){xZ=J.J,SZ=J.K,hZ=J.L,pZ=J.M,fZ=J.N,cZ=J.O,mZ=J.P,uZ=J.Q,lZ=J.R,sZ=J.S,oZ=J.T,dZ=J.U,rZ=J.V,nZ=J.W,iZ=J.X,aZ=J.Y,tZ=J.Z,eZ=J._,J0=J.$,Z0=J.aa,$0=J.ba,Q0=J.ca,K0=J.da,G0=J.ea,X0=J.fa,z0=J.ga,j0=J.ha,O0=J.ia,W0=J.ja,V0=J.ka,Y0=J.la,U0=J.ma,B0=J.na,q0=J.oa,N0=J.pa,H0=J.qa,P0=J.ra,w0=J.sa,D0=J.ta,k0=J.ua,L0=J.va,A0=J.wa,I0=J.xa,y0=J.ya,R0=J.Aa,XZ=J.Ba,v0=J.Ca,C0=J.Da,m1=F0=J.za}var l1={b:pJ,H:Q1,k:K1,c:G1,G:X1,C:z1,w:j1,m:O1,D:W1,x:V1,E:Y1,i:U1,v:B1,u:q1,t:N1,F:H1,s:P1,r:w1,l:D1,p:k1,j:L1,f:A1,q:R1,z:C1,A:F1,g:b1,d:_1,h:g1,y:h1,e:f1,o:s1,n:o1,a:g,B:c1};function s1(J,Z,Q){var K=s();try{return MZ(J)(Z,Q)}catch(X){if(T(K),X!==X+0)throw X;XZ(1,0)}}function o1(J,Z,Q,K,X){var z=s();try{return MZ(J)(Z,Q,K,X)}catch(W){if(T(z),W!==W+0)throw W;XZ(1,0)}}function d1(J){if(l=!0,!j.noFSInit&&!$.initialized)$.init();J.I(),$.ignorePermissions=!1}var r1={a:l1};WebAssembly.instantiateStreaming(fetch(new URL("akarisub-worker.wasm",self.location.href)),r1).then((J)=>{var Z=J.instance.exports;u1(Z),d1(Z),P()});let zZ=()=>{try{if(typeof g<"u"){if(self.wasmMemory=g,self.HEAPU8C=new Uint8ClampedArray(g.buffer),typeof BigInt64Array<"u")self.HEAP64=new BigInt64Array(g.buffer),self.HEAPU64=new BigUint64Array(g.buffer)}if(typeof b<"u")self.HEAPU8=b;if(typeof H<"u")self.HEAP64=H;if(typeof o<"u")self.HEAPU64=o}catch(J){}};if(typeof updateGlobalBufferAndViews==="function"){let J=updateGlobalBufferAndViews;updateGlobalBufferAndViews=(Z)=>{J(Z),zZ()}}if(typeof x==="function"){let J=x;x=()=>{J(),zZ()}}let T0=typeof P==="function"?P:null;if(T0)P=()=>{if(j._malloc=SZ,j._free=hZ,j._akarisub_create=xZ,j._akarisub_destroy=pZ,j._akarisub_set_drop_animations=fZ,j._akarisub_create_track_mem=cZ,j._akarisub_remove_track=mZ,j._akarisub_resize_canvas=uZ,j._akarisub_add_font=lZ,j._akarisub_reload_fonts=sZ,j._akarisub_set_default_font=oZ,j._akarisub_set_fallback_fonts=dZ,j._akarisub_set_memory_limits=rZ,j._akarisub_get_event_count=nZ,j._akarisub_alloc_event=iZ,j._akarisub_remove_event=aZ,j._akarisub_get_style_count=tZ,j._akarisub_alloc_style=eZ,j._akarisub_remove_style=J0,j._akarisub_style_override_index=Z0,j._akarisub_disable_style_override=$0,j._akarisub_render_blend=Q0,j._akarisub_render_image=K0,j._akarisub_get_changed=G0,j._akarisub_get_count=X0,j._akarisub_get_time=z0,j._akarisub_get_track_color_space=j0,j._akarisub_event_get_int=O0,j._akarisub_event_set_int=W0,j._akarisub_event_get_str=V0,j._akarisub_event_set_str=Y0,j._akarisub_style_get_num=U0,j._akarisub_style_set_num=B0,j._akarisub_style_get_str=q0,j._akarisub_style_set_str=N0,j._akarisub_render_result_x=H0,j._akarisub_render_result_y=P0,j._akarisub_render_result_w=w0,j._akarisub_render_result_h=D0,j._akarisub_render_result_image=k0,j._akarisub_render_result_next=L0,j._akarisub_render_result_collect=A0,j._akarisub_render_blend_collect=I0,j._akarisub_render_image_collect=y0,typeof $<"u")j.FS_createPath=$.createPath,j.FS_createDataFile=$.createDataFile;return zZ(),T0()};if(l)O=j;else O=new Promise((J,Z)=>{v=J,a=Z});return O}var b0=n1;var jZ=[null,"BT601",null,"BT601","BT601","BT709","BT709","SMPTE240M","SMPTE240M","FCC","FCC"];function _0(G,O=!1){let j=[],U=G.split(/[\r\n]+/g),N=U.length,P=null,Y=null;for(let w=0;w<N;w++){let v=U[w];if(!v||/^\s*$/.test(v))continue;let a=v[0];if(a==="["){let l=v.match(/^\[(.*)\]$/);if(l){if(O&&l[1].toLowerCase()==="events")break;P=null,Y={name:l[1],body:[]},j.push(Y);continue}}if(!Y)continue;if(a===";")Y.body.push({type:"comment",value:v.substring(1)});else{let l=v.indexOf(":");if(l===-1)continue;let x=v.substring(0,l),n=v.substring(l+1).trim();if(P||x==="Format"){let D=n.split(",");if(P&&D.length>P.length){let H=D.slice(P.length-1).join(",");D=D.slice(0,P.length-1),D.push(H)}let L=D.length;for(let H=0;H<L;H++)D[H]=D[H].trim();if(P){let H={},k=Math.min(P.length,L);for(let S=0;S<k;S++)H[P[S]]=D[S];n=H}else n=D}if(x==="Format")P=n;Y.body.push({key:x,value:n})}}return j}var i1=/\\blur(?:[0-9]+\.)?[0-9]+/gm;function OZ(G){return G.replace(i1,"")}var a1=[{w:7680,h:4320},{w:3840,h:2160},{w:2560,h:1440},{w:1920,h:1080},{w:1280,h:720}];function t1(G,O){let j=[...a1].sort((U,N)=>U.w-N.w);for(let U of j)if(G<=U.w&&O<=U.h)return U;return{w:Math.ceil(G/100)*100,h:Math.ceil(O/100)*100}}function r(G,O){return O&&O.includes(".")?G.toFixed(2).replace(/\.?0+$/,""):Math.round(G)}function WZ(G){let O=G.match(/PlayResX:\s*(\d+)/i),j=G.match(/PlayResY:\s*(\d+)/i),U=O?parseInt(O[1],10):1920,N=j?parseInt(j[1],10):1080,P=/\\pos\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,Y=/\\move\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)/g,w=/\\org\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,v=/\\i?clip\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,a=0,l=0,x=(b,T,s)=>{let g,OJ=new RegExp(b.source,"g");while((g=OJ.exec(G))!==null){for(let GJ of T)if(g[GJ]){let zJ=Math.abs(parseFloat(g[GJ]));if(zJ>a)a=zJ}for(let GJ of s)if(g[GJ]){let zJ=Math.abs(parseFloat(g[GJ]));if(zJ>l)l=zJ}}};if(x(P,[1],[2]),x(Y,[1,3],[2,4]),x(w,[1],[2]),x(v,[1,3],[2,4]),a<=U&&l<=N)return G;let n=t1(a,l),D=U/n.w,L=N/n.h,H=Math.min(D,L),k=Math.max(D,L),S=1,M=G,h=M.match(/(\[Events\][\s\S]*)/i);if(!h)return M;let B=h[1];return B=B.replace(P,(b,T,s)=>`\\pos(${r(parseFloat(T)*D,T)},${r(parseFloat(s)*L,s)})`),B=B.replace(/\\move\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)(?:\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+))?\s*\)/g,(b,T,s,g,OJ,GJ,zJ)=>{let pJ=`\\move(${r(parseFloat(T)*D,T)},${r(parseFloat(s)*L,s)},${r(parseFloat(g)*D,g)},${r(parseFloat(OJ)*L,OJ)}`;return GJ?`${pJ},${GJ},${zJ})`:`${pJ})`}),B=B.replace(w,(b,T,s)=>`\\org(${r(parseFloat(T)*D,T)},${r(parseFloat(s)*L,s)})`),B=B.replace(/\\(i?clip)\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,(b,T,s,g,OJ,GJ)=>`\\${T}(${r(parseFloat(s)*D,s)},${r(parseFloat(g)*L,g)},${r(parseFloat(OJ)*D,OJ)},${r(parseFloat(GJ)*L,GJ)})`),B=B.replace(/\\fs([\d.]+)/g,(b,T)=>`\\fs${r(parseFloat(T)*k,T)}`),B=B.replace(/\\fscx([\d.]+)/g,(b,T)=>`\\fscx${r(parseFloat(T)*S,T)}`),B=B.replace(/\\xbord([\d.]+)/g,(b,T)=>`\\xbord${r(parseFloat(T)*D,T)}`),B=B.replace(/\\ybord([\d.]+)/g,(b,T)=>`\\ybord${r(parseFloat(T)*L,T)}`),B=B.replace(/\\xshad(-?[\d.]+)/g,(b,T)=>`\\xshad${r(parseFloat(T)*D,T)}`),B=B.replace(/\\yshad(-?[\d.]+)/g,(b,T)=>`\\yshad${r(parseFloat(T)*L,T)}`),["fsp","bord","shad","be","blur"].forEach((b)=>{let T=new RegExp(`\\\\${b}(-?[\\d.]+)`,"g");B=B.replace(T,(s,g)=>`\\${b}${r(parseFloat(g)*H,g)}`)}),B=B.replace(/(\\i?clip\s*\([^,)]+m[^)]+\)|\\p[1-9][^}]*?)(?=[\\}]|$)/g,(b)=>{return b.replace(/(-?[\d.]+)\s+(-?[\d.]+)/g,(T,s,g)=>{return`${r(parseFloat(s)*D,s)} ${r(parseFloat(g)*L,g)}`})}),M.substring(0,h.index)+B}var wJ=0,S0=1,jJ=null,VZ=!1,tJ=Date.now(),oJ=24,gJ=!1,h0=!1,yZ="wasm",PJ={},dJ={},p0=0,f0=0,FJ=[],i=!1,NZ=!1,MJ=!1,e1=3,$J=[];self.width=0;self.height=0;var C={framesRendered:0,framesDropped:0,totalRenderTime:0,maxRenderTime:0,minRenderTime:1/0,lastRenderTime:0,renderStartTime:0,pendingRenders:0,totalEvents:0,currentEventIndex:0,cacheHits:0,cacheMisses:0},J4=()=>{C.framesRendered=0,C.framesDropped=0,C.totalRenderTime=0,C.maxRenderTime=0,C.minRenderTime=1/0,C.lastRenderTime=0,C.cacheHits=0,C.cacheMisses=0},UJ=!1,TJ=!0,YJ=null,LJ=null,xJ=!1,HJ=null,c0=null,c=0,IJ=null,HZ=!1,Z4=!1,ZJ=null,rJ=!1,m0=new TextEncoder,$4=new TextDecoder,PZ=null,eJ=128,u0=Math.max(eJ,4096),l0=u0;var Q4=30,K4=1,G4=24,wZ=1000,s0=Array(eJ),E0=!1;var DZ=3,sJ=5,YZ=0,X4=0,KJ=0,VJ=0,z4=[],j4=[],O4=[],UZ=null;var W4=!1,JZ=null,AJ=null,kZ=(G)=>new Promise((O)=>setTimeout(O,G)),o0=()=>{if(E0)return;for(let G=0;G<eJ;G++)s0[G]={w:0,h:0,x:0,y:0,image:0};E0=!0},g0=(G)=>{if(G<eJ)return s0[G];return{w:0,h:0,x:0,y:0,image:0}};var RZ=(G)=>{if(!ZJ||G<=0)return;let O=DZ+sJ*G;if(VJ>=O&&KJ)return;let j=Math.max(O,(VJ||64)*2),U=j*Int32Array.BYTES_PER_ELEMENT;if(KJ)ZJ._free(KJ),KJ=0,VJ=0;if(KJ=ZJ._malloc(U),!KJ)throw VJ=0,Error("Failed to allocate render-collect buffer");VJ=j},nJ=(G)=>{if(!c)return;let O=E(),j=u();if(RZ(l0),yZ==="wasm")O.renderBlendCollect(j,G,0,KJ,VJ);else O.renderImageCollect(j,G,0,KJ,VJ)},d0=()=>{if(!c)return null;let G=E(),O=u(),j=G.getEventCount(O);if(j<=0)return null;let U=Number.POSITIVE_INFINITY;for(let N=0;N<j;N++){let P=G.eventGetInt(O,N,XJ.Start)/wZ;if(Number.isFinite(P)&&P<U)U=P}if(!Number.isFinite(U))return null;return Math.max(0,U)},V4=()=>{if(!c)return null;let G=E(),O=u(),j=G.getEventCount(O);if(j<=0)return null;let U=Number.POSITIVE_INFINITY,N=0;for(let P=0;P<j;P++){let Y=G.eventGetInt(O,P,XJ.Start)/wZ,w=Math.max(0,G.eventGetInt(O,P,XJ.Duration)/wZ);if(!Number.isFinite(Y))continue;let v=Y+w;if(Y<U)U=Y;if(v>N)N=v}if(!Number.isFinite(U))return null;if(N<U)N=U;return{start:Math.max(0,U),end:Math.max(0,N)}},Y4=async()=>{if(!c)return;let G=V4();if(!G)return;let O=Math.min(G.end,G.start+Q4),j=0;for(let U=G.start;U<=O;U+=K4){if(!c)return;if(gJ&&(MJ||$J.length>0||C.pendingRenders>0)){await kZ(0);continue}if(nJ(U),j++,gJ||j%G4===0)await kZ(0)}nJ(O)};var vZ=()=>{if(W4=!1,UZ)clearTimeout(UZ),UZ=null},U4=()=>{if(AJ||!c)return;AJ=(async()=>{await kZ(0);try{await Y4()}catch(G){if(i)console.warn("[AkariSub] Full track warmup failed, continuing:",G)}try{if(c)nJ(n0())}catch(G){if(i)console.warn("[AkariSub] Post-warmup re-prime failed, continuing:",G)}})().finally(()=>{AJ=null})};var XJ={Start:0,Duration:1,ReadOrder:2,Layer:3,Style:4,MarginL:5,MarginR:6,MarginV:7},bJ={Name:0,Effect:1,Text:2},f={FontSize:0,PrimaryColour:1,SecondaryColour:2,OutlineColour:3,BackColour:4,Bold:5,Italic:6,Underline:7,StrikeOut:8,ScaleX:9,ScaleY:10,Spacing:11,Angle:12,BorderStyle:13,Outline:14,Shadow:15,Alignment:16,MarginL:17,MarginR:18,MarginV:19,Encoding:20,treat_fontname_as_pattern:21,Blur:22,Justify:23},iJ={Name:0,FontName:1},B4=(G)=>{return m0.encode(G)},q4=(G)=>{if(!ZJ)return 0;let O=B4(G),j=ZJ._malloc(O.length+1);if(!j)return 0;return self.HEAPU8.set(O,j),self.HEAPU8[j+O.length]=0,j},_J=(G)=>{if(!G)return"";let O=G,j=self.HEAPU8;while(j[O]!==0)O++;return $4.decode(j.subarray(G,O))},qJ=(G,O)=>{let j=q4(G);try{return O(j)}finally{if(j&&ZJ)ZJ._free(j)}},E=()=>{if(!PZ)throw Error("AkariSub API is not initialized");return PZ},u=()=>{if(!c)throw Error("AkariSub instance is not initialized");return c};self.addFont=({font:G})=>r0(G,!1);var uJ=(G)=>{if(G=G.trim().toLowerCase(),G.startsWith("@"))G=G.substring(1);if(dJ[G])return;if(dJ[G]=!0,!PJ[G]){if(h0)postMessage({target:"getLocalFont",font:G})}else r0(PJ[G])},r0=(G,O=!0)=>{if(typeof G==="string")IZ(G,(j)=>{M0(new Uint8Array(j),O)},console.error);else M0(G,O)};var BZ=null,N4=()=>{if(BZ)return;BZ=setTimeout(()=>{if(BZ=null,c)E().reloadFonts(c)},16)},SJ=(G,O)=>{if(!ZJ||!c){if(i)console.warn("[AkariSub] Cannot add embedded font, module or AkariSub not ready:",O);return}try{let j=E(),U=ZJ._malloc(G.length);if(!U){console.warn("[AkariSub] Failed to allocate memory for embedded font:",O);return}if(self.HEAPU8.set(G,U),qJ(O,(N)=>{j.addFont(c,N,U,G.length)}),i)console.log("[AkariSub] Added embedded font:",O,"size:",G.length)}catch(j){console.warn("[AkariSub] Failed to add embedded font:",O,j)}},M0=(G,O=!0)=>{let j=O?"/fonts/fallback":"/fonts/attached",U=O?"fallback-"+f0++:"attached-"+p0++;if(ZJ){try{ZJ.FS_createDataFile(j,U,G,!0,!0,!0)}catch(N){console.warn("Failed to write font to filesystem:",j+"/"+U,N)}if(!O)SJ(G,U);else if(c)SJ(G,U);else FJ.push({data:G,name:U})}N4()},lJ=(G,O=!0)=>{let j=O?"/fonts/fallback":"/fonts/attached",U=O?"fallback-"+f0++:"attached-"+p0++;if(ZJ){try{if(ZJ.FS_createDataFile(j,U,G,!0,!0,!0),i)console.log("[AkariSub] Wrote font to FS:",j+"/"+U,"size:",G.length)}catch(N){console.warn("Failed to write font to filesystem:",j+"/"+U,N)}if(!O)SJ(G,U);else if(c)SJ(G,U);else FJ.push({data:G,name:U})}},LZ=(G)=>{if(!PJ)return;if(G.length>500000){let j=G.match(/\[V4\+?\s*Styles?\][^\[]*(?=\[|$)/i);if(j){let P=j[0].matchAll(/^Style:[^,]*,([^,]+)/gm);for(let Y of P)uJ(Y[1].trim())}let U=G.match(/\[Events\][\s\S]*/i);if(U){let P=U[0].matchAll(/\\fn([^\\}]*?)[\\}]/g),Y=0;for(let w of P)if(uJ(w[1]),++Y>=1000)break}}else{let j=_0(G,!0);for(let N=0;N<j.length;N++)for(let P=0;P<j[N].body.length;P++){let Y=j[N].body[P];if(Y.key==="Style"&&typeof Y.value==="object"&&!Array.isArray(Y.value))uJ(Y.value.Fontname)}let U=G.match(/\[Events\][\s\S]*/i);if(U){let P=U[0].matchAll(/\\fn([^\\}]*?)[\\}]/g);for(let Y of P)uJ(Y[1])}}},AZ=(G,O)=>{let j=new XMLHttpRequest;return j.open("GET",G,!1),j.responseType=O?"arraybuffer":"text",j.send(null),j.response},IZ=(G,O,j)=>{let U=new XMLHttpRequest;U.open("GET",G,!0),U.responseType="arraybuffer",U.onload=()=>{if((U.status===200||U.status===0)&&U.response)return O(U.response)},U.onerror=j,U.send(null)};self.setTrack=({content:G})=>{if(vZ(),AJ=null,LZ(G),NZ)G=WZ(G);if(HZ)G=OZ(G);let O=E(),j=u();qJ(G,(U)=>{O.createTrackMem(j,U)}),JZ=d0(),IJ=jZ[O.getTrackColorSpace(j)],rJ=!0,postMessage({target:"verifyColorSpace",subtitleColorSpace:IJ})};self.getColorSpace=()=>{postMessage({target:"verifyColorSpace",subtitleColorSpace:IJ})};self.freeTrack=()=>{vZ(),AJ=null,JZ=null;let G=E(),O=u();G.removeTrack(O)};self.setTrackByUrl=({url:G})=>{self.setTrack({content:AZ(G)})};var EJ=!0,n0=()=>{let G=(Date.now()-tJ)/1000;if(EJ)return wJ;else{if(G>5)console.error("Didn't receive currentTime > 5 seconds. Assuming video was paused."),i0(!0);return wJ+G*S0}},H4=(G)=>{if(wJ=G,tJ=Date.now(),gJ)return;if(!jJ)if(VZ)jJ=CZ(aJ);else aJ(),VZ=!0,setTimeout(()=>{VZ=!1},20)},i0=(G)=>{if(gJ){if(EJ=G,jJ)x0(jJ),jJ=null;return}if(G!==EJ)if(EJ=G,G){if(jJ)x0(jJ),jJ=null}else tJ=Date.now(),jJ=CZ(aJ)},P4=()=>{if(MJ||$J.length===0)return;if($J.length>1){let O=$J.length-1;C.framesDropped+=O;let j=$J[$J.length-1];$J.length=0,$J.push(j)}let G=$J.shift();if(!G)return;hJ(G.time,G.force)},BJ=()=>{MJ=!1,P4()},hJ=(G,O)=>{if(MJ){let D={time:G,force:O?1:0};if(D.force)$J.length=0;else{let L=$J[$J.length-1];if(L&&Math.abs(L.time-D.time)>0.25)$J.length=0}if($J.length>=e1)$J.shift(),C.framesDropped++;$J.push(D);return}MJ=!0,o0();let j={},U=performance.now();C.renderStartTime=U,C.pendingRenders++;let N=E(),P=u(),Y=O?1:0;RZ(u0);let w=yZ==="wasm"?N.renderBlendCollect(P,G,Y,KJ,VJ):N.renderImageCollect(P,G,Y,KJ,VJ),v=new Int32Array(self.wasmMemory.buffer,KJ,DZ),a=v[0],l=v[1],n=performance.now()-U;if(C.lastRenderTime=n,C.totalRenderTime+=n,C.maxRenderTime=Math.max(C.maxRenderTime,n),n>0)C.minRenderTime=Math.min(C.minRenderTime,n);if(a!==0||O)C.framesRendered++,C.cacheMisses++;else C.cacheHits++;if(C.totalEvents=N.getEventCount(P),i){let D=performance.now(),L=v[2];j.WASMRenderTime=L-U,j.WASMBitmapDecodeTime=D-L,j.JSRenderTime=Date.now()}if(a!==0||O){let D=z4,L=j4;if(D.length=0,L.length=0,w===0)return qZ({images:D,buffers:L,times:j});let H=KJ+DZ*Int32Array.BYTES_PER_ELEMENT,k=new Int32Array(self.wasmMemory.buffer,H,w*sJ);if(UJ&&xJ!==!0){let M=O4;M.length=w;for(let h=0;h<w;++h){let B=h*sJ,o=g0(h);o.x=k[B],o.y=k[B+1],o.w=k[B+2],o.h=k[B+3],o.image=0;let b=k[B+4],T=o.w*o.h*4,s=self.HEAPU8C.slice(b,b+T),g=new ImageData(s,o.w,o.h);M[h]=TJ?createImageBitmap(g,{premultiplyAlpha:"none",colorSpaceConversion:"none"}):createImageBitmap(g),D[h]=o}Promise.all(M).then((h)=>{for(let B=0;B<w;B++)D[B].image=h[B];if(i)j.JSBitmapGenerationTime=Date.now()-(j.JSRenderTime||0);qZ({images:D,buffers:h,times:j})}).catch(()=>{if(TJ)TJ=!1,console.warn("[AkariSub] createImageBitmap options not supported, disabling"),C.pendingRenders--,BJ(),hJ(G,O);else C.pendingRenders--,postMessage({target:"unbusy"}),BJ()})}else{for(let M=0;M<w;++M){let h=M*sJ,B=g0(M);if(B.x=k[h],B.y=k[h+1],B.w=k[h+2],B.h=k[h+3],B.image=k[h+4],!LJ){let o=B.image,b=self.wasmMemory.buffer.slice(o,o+B.w*B.h*4);L.push(b),B.image=b}D[M]=B}qZ({images:D,buffers:L,times:j})}}else C.pendingRenders--,postMessage({target:"unbusy"}),BJ()};self.demand=({time:G})=>{wJ=G,tJ=Date.now();let O=rJ?1:0;rJ=!1,hJ(G,O)};var aJ=(G)=>{if(jJ=null,hJ(n0(),G),!EJ)jJ=CZ(aJ)},qZ=({times:G,images:O,buffers:j})=>{C.pendingRenders--;let{width:U,height:N}=self,P=O.length,Y={target:"render",asyncRender:UJ,images:O,times:G,width:U,height:N,colorSpace:IJ};if(xJ){if(YJ.height!==N||YJ.width!==U)YJ.width=U,YJ.height=N;if(LJ.clearRect(0,0,U,N),UJ)for(let w=0;w<P;w++){let v=O[w];if(v.image)LJ.drawImage(v.image,v.x,v.y),v.image.close()}else for(let w=0;w<P;w++){let v=O[w];if(v.image){let{w:a,h:l}=v;if(HJ.width!==a||HJ.height!==l)HJ.width=a,HJ.height=l;let x=v.image,n=a*l*4,D=self.HEAPU8C.subarray(x,x+n);c0.putImageData(new ImageData(new Uint8ClampedArray(D.buffer,D.byteOffset,D.byteLength),a,l),0,0),LJ.drawImage(HJ,v.x,v.y)}}if(xJ==="hybrid"){if(!P){postMessage(Y),BJ();return}if(i)G.bitmaps=P;try{let w=YJ.transferToImageBitmap(),v={...Y,images:[{image:w,x:0,y:0}],asyncRender:!0};postMessage(v,[w]),BJ()}catch{postMessage({target:"unbusy"}),BJ()}}else{if(i){G.JSRenderTime=Date.now()-(G.JSRenderTime||0)-(G.JSBitmapGenerationTime||0);let w=0;for(let v in G)w+=G[v]||0;console.log("Bitmaps: "+P+" Total: "+(w|0)+"ms",G)}postMessage({target:"unbusy"}),BJ()}}else postMessage(Y,j),BJ()},CZ=self.requestAnimationFrame?self.requestAnimationFrame.bind(self):(()=>{let G=0;return(O)=>{let j=Date.now();if(G===0)G=j+1000/oJ;else while(j+2>=G)G+=1000/oJ;let U=Math.max(G-j,0);return setTimeout(O,U)}})(),x0=self.cancelAnimationFrame?self.cancelAnimationFrame.bind(self):clearTimeout;self.init=async(G)=>{if(Z4=G.hasBitmapBug,typeof G.initialTime==="number"&&Number.isFinite(G.initialTime))wJ=G.initialTime;let O=self.fetch,j=(Y)=>{if(WebAssembly.instantiateStreaming)self.fetch=(w)=>O(Y)},U=()=>{self.fetch=O},N=(Y)=>{return j(Y),b0({wasm:!WebAssembly.instantiateStreaming?AZ(Y,!0):void 0}).finally(U)},P=async(Y)=>{ZJ=Y,PZ={create:Y._akarisub_create,destroy:Y._akarisub_destroy,setDropAnimations:Y._akarisub_set_drop_animations,createTrackMem:Y._akarisub_create_track_mem,removeTrack:Y._akarisub_remove_track,resizeCanvas:Y._akarisub_resize_canvas,addFont:Y._akarisub_add_font,reloadFonts:Y._akarisub_reload_fonts,setDefaultFont:Y._akarisub_set_default_font,setFallbackFonts:Y._akarisub_set_fallback_fonts,setMemoryLimits:Y._akarisub_set_memory_limits,getEventCount:Y._akarisub_get_event_count,allocEvent:Y._akarisub_alloc_event,removeEvent:Y._akarisub_remove_event,getStyleCount:Y._akarisub_get_style_count,allocStyle:Y._akarisub_alloc_style,removeStyle:Y._akarisub_remove_style,styleOverrideIndex:Y._akarisub_style_override_index,disableStyleOverride:Y._akarisub_disable_style_override,renderBlend:Y._akarisub_render_blend,renderImage:Y._akarisub_render_image,getChanged:Y._akarisub_get_changed,getCount:Y._akarisub_get_count,getTime:Y._akarisub_get_time,getTrackColorSpace:Y._akarisub_get_track_color_space,eventGetInt:Y._akarisub_event_get_int,eventSetInt:Y._akarisub_event_set_int,eventGetStr:Y._akarisub_event_get_str,eventSetStr:Y._akarisub_event_set_str,styleGetNum:Y._akarisub_style_get_num,styleSetNum:Y._akarisub_style_set_num,styleGetStr:Y._akarisub_style_get_str,styleSetStr:Y._akarisub_style_set_str,rrX:Y._akarisub_render_result_x,rrY:Y._akarisub_render_result_y,rrW:Y._akarisub_render_result_w,rrH:Y._akarisub_render_result_h,rrImage:Y._akarisub_render_result_image,rrNext:Y._akarisub_render_result_next,rrCollect:Y._akarisub_render_result_collect,renderBlendCollect:Y._akarisub_render_blend_collect,renderImageCollect:Y._akarisub_render_image_collect};let w=[],v=new Set;if(G.fallbackFonts&&G.fallbackFonts.length>0)for(let H of G.fallbackFonts){let k=H.trim(),S=k.toLowerCase();if(S&&!v.has(S))v.add(S),w.push(k)}try{Y.FS_createPath("/","fonts",!0,!0),Y.FS_createPath("/fonts","attached",!0,!0),Y.FS_createPath("/fonts","fallback",!0,!0),Y.FS_createPath("/","fontconfig",!0,!0),Y.FS_createPath("/","assets",!0,!0),Y.FS_createPath("/","etc",!0,!0),Y.FS_createPath("/etc","fonts",!0,!0);let H=`<?xml version="1.0"?>
|
|
1
|
+
(()=>{async function F2($={}){var Z,h=$,K=(...w)=>{console.log(...w)},X=(...w)=>{console.error(...w)};function U(){B?.(h)}(function(){var w=typeof WebAssembly<"u"&&WebAssembly.instantiateStreaming;w&&(WebAssembly.instantiateStreaming=function(f,r){var J=null;return f=Promise.resolve(f).then(function(v){return J=v.clone(),v}),w.call(WebAssembly,f,r).catch(function(v){if(console.warn("[AkariSub] instantiateStreaming failed, using ArrayBuffer fallback:",v&&v.message||v),!J)throw v;return J.arrayBuffer().then(function(G){return WebAssembly.instantiate(G,r)})})})})(),K=(w)=>{w==="AkariSub: No usable fontconfig configuration file found, using fallback."||w.startsWith("Unable to revert mtime:")||w.trim()===""?console.debug(w):console.log(w)},X=(w)=>{w==="Fontconfig error: Cannot load default config file: No such file: (null)"||w==="Fontconfig error: Cannot load default config file: File not found"||w==="Fontconfig error: No writable cache directories"||w.includes("/var/cache/fontconfig")||w.includes("/.cache/fontconfig")||w.includes("/.local/share/fonts")?console.debug(w):console.error(w)};class Q{}class V extends Q{}var B,c=!1;function b(){var w=H.buffer;A=new Int8Array(w),I=new Int16Array(w),N=new Uint8Array(w),new Uint16Array(w),E=new Int32Array(w),_=new Uint32Array(w),new Float32Array(w),new Float64Array(w),W=new BigInt64Array(w),Y=new BigUint64Array(w)}H=new WebAssembly.Memory({initial:256,maximum:32768}),b();var I,E,W,A,_,Y,N,H,D=new TextDecoder,O=(w,f)=>{for(var r=f+void 0;w[f]&&!(f>=r);)++f;return f},R=(w)=>w?D.decode(N.subarray(w,O(N,w))):"",M=(w,f)=>{for(var r=0,J=w.length-1;J>=0;J--){var v=w[J];v==="."?w.splice(J,1):v===".."?(w.splice(J,1),r++):r&&(w.splice(J,1),r--)}if(f)for(;r;r--)w.unshift("..");return w},y=(w)=>{var f=w.charAt(0)==="/",r=w.slice(-1)==="/";return(w=M(w.split("/").filter((J)=>!!J),!f).join("/"))||f||(w="."),w&&r&&(w+="/"),(f?"/":"")+w},x=(w)=>{var f=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(w).slice(1);if(w=f[0],f=f[1],!w&&!f)return".";return f&&=f.slice(0,-1),w+f},C=(w)=>w&&w.match(/([^\/]+|\/)\/*$/)[1],K0=()=>(w)=>(crypto.getRandomValues(w),0),d=(w)=>(d=K0())(w),$0=(...w)=>{for(var f="",r=!1,J=w.length-1;J>=-1&&!r;J--){if(r=J>=0?w[J]:"/",typeof r!="string")throw TypeError("Arguments to path.resolve must be strings");if(!r)return"";f=r+"/"+f,r=r.charAt(0)==="/"}return f=M(f.split("/").filter((v)=>!!v),!r).join("/"),(r?"/":"")+f||"."},L0=(w,f)=>{function r(z){for(var q=0;q<z.length&&z[q]==="";q++);for(var o=z.length-1;o>=0&&z[o]==="";o--);return q>o?[]:z.slice(q,o-q+1)}w=$0(w).slice(1),f=$0(f).slice(1),w=r(w.split("/")),f=r(f.split("/"));for(var J=Math.min(w.length,f.length),v=J,G=0;G<J;G++)if(w[G]!==f[G]){v=G;break}J=[];for(G=v;G<w.length;G++)J.push("..");return J=J.concat(f.slice(v)),J.join("/")},m0=(w)=>{var f=O(w,0);return D.decode(w.buffer?w.subarray(0,f):new Uint8Array(w.slice(0,f)))},t1=[],l0=(w)=>{for(var f=0,r=0;r<w.length;++r){var J=w.charCodeAt(r);J<=127?f++:J<=2047?f+=2:J>=55296&&J<=57343?(f+=4,++r):f+=3}return f},g0=(w,f,r,J)=>{if(!(J>0))return 0;var v=r;J=r+J-1;for(var G=0;G<w.length;++G){var z=w.codePointAt(G);if(z<=127){if(r>=J)break;f[r++]=z}else if(z<=2047){if(r+1>=J)break;f[r++]=192|z>>6,f[r++]=128|z&63}else if(z<=65535){if(r+2>=J)break;f[r++]=224|z>>12,f[r++]=128|z>>6&63,f[r++]=128|z&63}else{if(r+3>=J)break;f[r++]=240|z>>18,f[r++]=128|z>>12&63,f[r++]=128|z>>6&63,f[r++]=128|z&63,G++}}return f[r]=0,r-v},d1=[];function a1(w,f){d1[w]={input:[],output:[],Ga:f},q1(w,N2)}var N2={open(w){var f=d1[w.node.Oa];if(!f)throw new j(43);w.fa=f,w.seekable=!1},close(w){w.fa.Ga.Pa(w.fa)},Pa(w){w.fa.Ga.Pa(w.fa)},read(w,f,r,J){if(!w.fa||!w.fa.Ga.$a)throw new j(60);for(var v=0,G=0;G<J;G++){try{var z=w.fa.Ga.$a(w.fa)}catch(q){throw new j(29)}if(z===void 0&&v===0)throw new j(6);if(z===null||z===void 0)break;v++,f[r+G]=z}return v&&(w.node.Fa=Date.now()),v},write(w,f,r,J){if(!w.fa||!w.fa.Ga.Ya)throw new j(60);try{for(var v=0;v<J;v++)w.fa.Ga.Ya(w.fa,f[r+v])}catch(G){throw new j(29)}return J&&(w.node.ra=w.node.qa=Date.now()),v}},H2={$a(){return t1.length?t1.shift():null},Ya(w,f){f===null||f===10?(K(m0(w.output)),w.output=[]):f!=0&&w.output.push(f)},Pa(w){w.output?.length>0&&(K(m0(w.output)),w.output=[])},mb(){return{xb:25856,zb:5,wb:191,yb:35387,ub:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},nb(){return 0},ob(){return[24,80]}},A2={Ya(w,f){f===null||f===10?(X(m0(w.output)),w.output=[]):f!=0&&w.output.push(f)},Pa(w){w.output?.length>0&&(X(m0(w.output)),w.output=[])}},k={wa:null,ua(){return k.createNode(null,"/",16895,0)},createNode(w,f,r,J){if((r&61440)===24576||(r&61440)===4096)throw new j(63);return k.wa||(k.wa={dir:{node:{ta:k.ca.ta,Ea:k.ca.Ea,Na:k.ca.Na,Qa:k.ca.Qa,Sa:k.ca.Sa,Va:k.ca.Va,Ta:k.ca.Ta,Ra:k.ca.Ra,Ua:k.ca.Ua},stream:{va:k.da.va}},file:{node:{ta:k.ca.ta,Ea:k.ca.Ea},stream:{va:k.da.va,read:k.da.read,write:k.da.write,bb:k.da.bb,eb:k.da.eb}},link:{node:{ta:k.ca.ta,Ea:k.ca.Ea,La:k.ca.La},stream:{}},Za:{node:{ta:k.ca.ta,Ea:k.ca.Ea},stream:g2}}),r=Jw(w,f,r,J),a(r.mode)?(r.ca=k.wa.dir.node,r.da=k.wa.dir.stream,r.ga={}):(r.mode&61440)===32768?(r.ca=k.wa.file.node,r.da=k.wa.file.stream,r.sa=0,r.ga=k.ib??(k.ib=new Uint8Array(0))):(r.mode&61440)===40960?(r.ca=k.wa.link.node,r.da=k.wa.link.stream):(r.mode&61440)===8192&&(r.ca=k.wa.Za.node,r.da=k.wa.Za.stream),r.Fa=r.ra=r.qa=Date.now(),w&&(w.ga[f]=r,w.Fa=w.ra=w.qa=r.Fa),r},ca:{ta(w){var f={};return f.hb=(w.mode&61440)===8192?w.id:1,f.kb=w.id,f.mode=w.mode,f.qb=1,f.uid=0,f.jb=0,f.Oa=w.Oa,a(w.mode)?f.size=4096:(w.mode&61440)===32768?f.size=w.sa:(w.mode&61440)===40960?f.size=w.link.length:f.size=0,f.Fa=new Date(w.Fa),f.ra=new Date(w.ra),f.qa=new Date(w.qa),f.fb=4096,f.gb=Math.ceil(f.size/f.fb),f},Ea(w,f){for(var r of["mode","atime","mtime","ctime"])f[r]!=null&&(w[r]=f[r]);f.size!==void 0&&(f=f.size,w.sa!=f&&(r=w.ga,w.ga=new Uint8Array(f),w.ga.set(r.subarray(0,Math.min(f,w.sa))),w.sa=f))},Na(){throw k.Wa||(k.Wa=new j(44),k.Wa.stack="<generic error, no stack>"),k.Wa},Qa(w,f,r,J){return k.createNode(w,f,r,J)},Sa(w,f,r){try{var J=h0(f,r)}catch(G){}if(J){if(a(w.mode))for(var v in J.ga)throw new j(55);t0(J)}delete w.parent.ga[w.name],f.ga[r]=w,w.name=r,f.qa=f.ra=w.parent.qa=w.parent.ra=Date.now()},Va(w,f){delete w.ga[f],w.qa=w.ra=Date.now()},Ta(w,f){var r=h0(w,f),J;for(J in r.ga)throw new j(55);delete w.ga[f],w.qa=w.ra=Date.now()},Ra(w){return[".","..",...Object.keys(w.ga)]},Ua(w,f,r){return w=k.createNode(w,f,41471,0),w.link=r,w},La(w){if((w.mode&61440)!==40960)throw new j(28);return w.link}},da:{read(w,f,r,J,v){if(v>=w.node.sa)return 0;return J=Math.min(w.node.sa-v,J),f.set(w.node.ga.subarray(v,v+J),r),J},write(w,f,r,J,v,G){if(f.buffer===A.buffer&&(G=!1),!J)return 0;if(w=w.node,w.ra=w.qa=Date.now(),G)w.ga=f.subarray(r,r+J),w.sa=J;else if(w.sa===0&&v===0)w.ga=f.slice(r,r+J),w.sa=J;else{G=v+J;var z=w.ga.length;z>=G||(G=Math.max(G,z*(z<1048576?2:1.125)>>>0),z&&(G=Math.max(G,256)),z=w.ga.subarray(0,w.sa),w.ga=new Uint8Array(G),w.ga.set(z)),w.ga.set(f.subarray(r,r+J),v),w.sa=Math.max(w.sa,v+J)}return J},va(w,f,r){if(r===1?f+=w.position:r===2&&(w.node.mode&61440)===32768&&(f+=w.node.sa),f<0)throw new j(28);return f},bb(w,f,r,J,v){if((w.node.mode&61440)!==32768)throw new j(43);if(w=w.node.ga,v&2||w.buffer!==A.buffer){v=!0,J=Math.ceil(f/65536)*65536;var G=sw(65536,J);if(G&&N.fill(0,G,G+J),J=G,!J)throw new j(48);if(w){if(r>0||r+f<w.length)w.subarray?w=w.subarray(r,r+f):w=Array.prototype.slice.call(w,r,r+f);A.set(w,J)}}else v=!1,J=w.byteOffset;return{Db:J,tb:v}},eb(w,f,r,J){return k.da.write(w,f,0,J,r,!1),0}}},e1=(w,f)=>{var r=0;return w&&(r|=365),f&&(r|=146),r},Y1=null,ww={},H0=[],P2=1,W0=null,fw=!1,rw=!0,j=class{name="ErrnoError";constructor(w){this.ea=w}},_2=class{shared={};node=null;get flags(){return this.shared.flags}set flags(w){this.shared.flags=w}get position(){return this.shared.position}set position(w){this.shared.position=w}},D2=class{ca={};da={};Ia=null;constructor(w,f,r,J){w||=this,this.parent=w,this.ua=w.ua,this.id=P2++,this.name=f,this.mode=r,this.Oa=J,this.Fa=this.ra=this.qa=Date.now()}get read(){return(this.mode&365)===365}set read(w){w?this.mode|=365:this.mode&=-366}get write(){return(this.mode&146)===146}set write(w){w?this.mode|=146:this.mode&=-147}};function i(w,f={}){if(!w)throw new j(44);f.Xa??(f.Xa=!0),w.charAt(0)==="/"||(w="//"+w);var r=0;w:for(;r<40;r++){w=w.split("/").filter((q)=>!!q);for(var J=Y1,v="/",G=0;G<w.length;G++){var z=G===w.length-1;if(z&&f.parent)break;if(w[G]!==".")if(w[G]==="..")if(v=x(v),J===J.parent){w=v+"/"+w.slice(G+1).join("/"),r--;continue w}else J=J.parent;else{v=y(v+"/"+w[G]);try{J=h0(J,w[G])}catch(q){if(q?.ea===44&&z&&f.rb)return{path:v};throw q}if(!J.Ia||z&&!f.Xa||(J=J.Ia.root),(J.mode&61440)===40960&&(!z||f.Ja)){if(!J.ca.La)throw new j(52);J=J.ca.La(J),J.charAt(0)==="/"||(J=x(v)+"/"+J),w=J+"/"+w.slice(G+1).join("/");continue w}}}return{path:v,node:J}}throw new j(32)}function i0(w){for(var f;;){if(w===w.parent)return w=w.ua.cb,f?w[w.length-1]!=="/"?`${w}/${f}`:w+f:w;f=f?`${w.name}/${f}`:w.name,w=w.parent}}function B1(w,f){for(var r=0,J=0;J<f.length;J++)r=(r<<5)-r+f.charCodeAt(J)|0;return(w+r>>>0)%W0.length}function $w(w){var f=B1(w.parent.id,w.name);w.Ma=W0[f],W0[f]=w}function t0(w){var f=B1(w.parent.id,w.name);if(W0[f]===w)W0[f]=w.Ma;else for(f=W0[f];f;){if(f.Ma===w){f.Ma=w.Ma;break}f=f.Ma}}function h0(w,f){var r=a(w.mode)?(r=y0(w,"x"))?r:w.ca.Na?0:2:54;if(r)throw new j(r);for(r=W0[B1(w.id,f)];r;r=r.Ma){var J=r.name;if(r.parent.id===w.id&&J===f)return r}return w.ca.Na(w,f)}function Jw(w,f,r,J){return w=new D2(w,f,r,J),$w(w),w}function a(w){return(w&61440)===16384}function y0(w,f){return rw?0:f.includes("r")&&!(w.mode&292)||f.includes("w")&&!(w.mode&146)||f.includes("x")&&!(w.mode&73)?2:0}function k1(w,f){if(!a(w.mode))return 54;try{return h0(w,f),20}catch(r){}return y0(w,"wx")}function d0(w,f,r){try{var J=h0(w,f)}catch(v){return v.ea}if(w=y0(w,"wx"))return w;if(r){if(!a(J.mode))return 54;if(J===J.parent||i0(J)==="/")return 10}else if(a(J.mode))return 31;return 0}function I0(w,f){if(!w)throw new j(f);return w}function G0(w){if(w=H0[w],!w)throw new j(8);return w}function vw(w,f=-1){if(w=Object.assign(new _2,w),f==-1)w:{for(f=0;f<=4096;f++)if(!H0[f])break w;throw new j(33)}return w.Ha=f,H0[f]=w}function L2(w,f=-1){return w=vw(w,f),w.da?.Bb?.(w),w}function Zw(w,f){var r=void 0,J=r?null:w;r??=w.ca.Ea,I0(r,63);try{r(J,f)}catch(v){if(v instanceof RangeError)throw new j(22);throw v}}var g2={open(w){w.da=ww[w.node.Oa].da,w.da.open?.(w)},va(){throw new j(70)}};function q1(w,f){ww[w]={da:f}}function hw(w,f){var r=f==="/";if(r&&Y1)throw new j(10);if(!r&&f){var J=i(f,{Xa:!1});if(f=J.path,J=J.node,J.Ia)throw new j(10);if(!a(J.mode))throw new j(54)}f={type:w,Cb:{},cb:f,pb:[]},w=w.ua(f),w.ua=f,f.root=w,r?Y1=w:J&&(J.Ia=f,J.ua&&J.ua.pb.push(f))}function a0(w,f,r){var J=i(w,{parent:!0}).node;if(w=C(w),!w)throw new j(28);if(w==="."||w==="..")throw new j(20);var v=k1(J,w);if(v)throw new j(v);if(!J.ca.Qa)throw new j(63);return J.ca.Qa(J,w,f,r)}function I2(w,f=438){return a0(w,f&4095|32768,0)}function J0(w,f=511){return a0(w,f&1023|16384,0)}function e0(w,f,r){typeof r>"u"&&(r=f,f=438),a0(w,f|8192,r)}function N1(w,f){if(!$0(w))throw new j(44);var r=i(f,{parent:!0}).node;if(!r)throw new j(44);f=C(f);var J=k1(r,f);if(J)throw new j(J);if(!r.ca.Ua)throw new j(63);r.ca.Ua(r,f,w)}function Gw(w){var f=i(w,{parent:!0}).node;w=C(w);var r=h0(f,w),J=d0(f,w,!0);if(J)throw new j(J);if(!f.ca.Ta)throw new j(63);if(r.Ia)throw new j(10);f.ca.Ta(f,w),t0(r)}function w1(w,f){return w=i(w,{Ja:!f}).node,I0(w.ca.ta,63)(w)}function f1(w,f){w=typeof w=="string"?i(w,{Ja:!0}).node:w,Zw(w,{mode:f&4095|w.mode&-4096,qa:Date.now(),Ab:void 0})}function E0(w,f,r=438){if(w==="")throw new j(44);if(typeof f=="string"){var J={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[f];if(typeof J>"u")throw Error(`Unknown file open mode: ${f}`);f=J}if(r=f&64?r&4095|32768:0,typeof w=="object")J=w;else{var v=w.endsWith("/"),G=i(w,{Ja:!(f&131072),rb:!0});J=G.node,w=G.path}if(G=!1,f&64)if(J){if(f&128)throw new j(20)}else{if(v)throw new j(31);J=a0(w,r|511,0),G=!0}if(!J)throw new j(44);if((J.mode&61440)===8192&&(f&=-513),f&65536&&!a(J.mode))throw new j(54);if(!G&&(J?(J.mode&61440)===40960?v=32:(v=["r","w","rw"][f&3],f&512&&(v+="w"),v=a(J.mode)&&(v!=="r"||f&576)?31:y0(J,v)):v=44,v))throw new j(v);if(f&512&&!G){if(v=J,v=typeof v=="string"?i(v,{Ja:!0}).node:v,a(v.mode))throw new j(31);if((v.mode&61440)!==32768)throw new j(28);if(w=y0(v,"w"))throw new j(w);Zw(v,{size:0,timestamp:Date.now()})}return f=vw({node:J,path:i0(J),flags:f&-131713,seekable:!0,position:0,da:J.da,sb:[],error:!1}),f.da.open&&f.da.open(f),G&&f1(J,r&511),f}function Qw(w){if(w.Ha===null)throw new j(8);w.Ka&&(w.Ka=null);try{w.da.close&&w.da.close(w)}catch(f){throw f}finally{H0[w.Ha]=null}w.Ha=null}function r1(w,f,r){if(w.Ha===null)throw new j(8);if(!w.seekable||!w.da.va)throw new j(70);if(r!=0&&r!=1&&r!=2)throw new j(28);return w.position=w.da.va(w,f,r),w.sb=[],w.position}function Kw(w,f,r,J,v,G){if(J<0||v<0)throw new j(28);if(w.Ha===null)throw new j(8);if((w.flags&2097155)===0)throw new j(8);if(a(w.node.mode))throw new j(31);if(!w.da.write)throw new j(28);w.seekable&&w.flags&1024&&r1(w,0,2);var z=typeof v<"u";if(!z)v=w.position;else if(!w.seekable)throw new j(70);return f=w.da.write(w,f,r,J,v,G),z||(w.position+=f),f}function E2(w,f){w=typeof w=="string"?w:i0(w);for(f=f.split("/").reverse();f.length;){var r=f.pop();if(r){var J=y(w+"/"+r);try{J0(J)}catch(v){if(v.ea!=20)throw v}w=J}}return J}function o2(w,f,r,J,v,G){var z=f;w&&(w=typeof w=="string"?w:i0(w),z=f?y(w+"/"+f):w),w=e1(J,v),z=I2(z,w),r&&(f=r,typeof f=="string"&&(r=Array(l0(f)+1),f=g0(f,r,0,r.length),r.length=f,f=r),f.subarray||(f=new Uint8Array(f)),r=f,f1(z,w|146),f=E0(z,577),Kw(f,r,0,r.length,0,G),Qw(f),f1(z,w))}function o0(w,f){w=y("/dev/"+w);var r=e1(!!f,!1);o0.ab??(o0.ab=64);var J=o0.ab++<<8|0;q1(J,{open(v){v.seekable=!1},close(){},read(v,G,z,q){for(var o=0,L=0;L<q;L++){try{var S=f()}catch(m){throw new j(29)}if(S===void 0&&o===0)throw new j(6);if(S===null||S===void 0)break;o++,G[z+L]=S}return o&&(v.node.Fa=Date.now()),o},write(v,G,z,q){for(var o=0;o<q;o++)try{(void 0)(G[z+o])}catch(L){throw new j(29)}return q&&(v.node.ra=v.node.qa=Date.now()),o}}),e0(w,r,J)}var p={};function z0(w,f,r){if(f.charAt(0)==="/")return f;if(w=w===-100?"/":G0(w).path,f.length==0){if(!r)throw new j(44);return w}return w+"/"+f}function $1(w,f){_[w>>2]=f.hb,_[w+4>>2]=f.mode,_[w+8>>2]=f.qb,_[w+12>>2]=f.uid,_[w+16>>2]=f.jb,_[w+20>>2]=f.Oa,W[w+24>>3]=BigInt(f.size),E[w+32>>2]=4096,E[w+36>>2]=f.gb;var r=f.Fa.getTime(),J=f.ra.getTime(),v=f.qa.getTime();return W[w+40>>3]=BigInt(Math.floor(r/1000)),_[w+48>>2]=r%1000*1000*1000,W[w+56>>3]=BigInt(Math.floor(J/1000)),_[w+64>>2]=J%1000*1000*1000,W[w+72>>3]=BigInt(Math.floor(v/1000)),_[w+80>>2]=v%1000*1000*1000,W[w+88>>3]=BigInt(f.kb),0}var R0=void 0,j0=()=>{var w=E[+R0>>2];return R0+=4,w},H1={},zw=()=>{if(!A1){var w={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:"./this.program"},f;for(f in H1)H1[f]===void 0?delete w[f]:w[f]=H1[f];var r=[];for(f in w)r.push(`${f}=${w[f]}`);A1=r}return A1},A1,jw=[],Xw=(w)=>{var f=jw[w];return f||(jw[w]=f=mw.get(w)),f};W0=Array(4096),hw(k,"/"),J0("/tmp"),J0("/home"),J0("/home/web_user"),function(){J0("/dev"),q1(259,{read:()=>0,write:(J,v,G,z)=>z,va:()=>0}),e0("/dev/null",259),a1(1280,H2),a1(1536,A2),e0("/dev/tty",1280),e0("/dev/tty1",1536);var w=new Uint8Array(1024),f=0,r=()=>{return f===0&&(d(w),f=w.byteLength),w[--f]};o0("random",r),o0("urandom",r),J0("/dev/shm"),J0("/dev/shm/tmp")}(),function(){J0("/proc");var w=J0("/proc/self");J0("/proc/self/fd"),hw({ua(){var f=Jw(w,"fd",16895,73);return f.da={va:k.da.va},f.ca={Na(r,J){r=+J;var v=G0(r);return r={parent:null,ua:{cb:"fake"},ca:{La:()=>v.path},id:r+1},r.parent=r},Ra(){return Array.from(H0.entries()).filter(([,r])=>r).map(([r])=>r.toString())}},f}},"/proc/self/fd")}();var Uw,Ow,Ww,Vw,yw,Yw,Bw,kw,qw,Nw,Hw,Aw,Pw,_w,Dw,Lw,gw,Iw,Ew,ow,Rw,Fw,Mw,Cw,bw,Tw,uw,xw,pw,Sw,cw,nw,sw,P1,_1,D1,mw,R2={a:{b:(w,f,r,J)=>{throw`Assertion failed: ${R(w)}, at: `+[f?R(f):"unknown filename",r,J?R(J):"unknown function"]},H:function(w,f){try{return w=R(w),f1(w,f),0}catch(r){if(typeof p>"u"||r.name!=="ErrnoError")throw r;return-r.ea}},k:function(w,f,r){try{if(f=R(f),f=z0(w,f),r&-8)return-28;var J=i(f,{Ja:!0}).node;if(!J)return-44;return w="",r&4&&(w+="r"),r&2&&(w+="w"),r&1&&(w+="x"),w&&y0(J,w)?-2:0}catch(v){if(typeof p>"u"||v.name!=="ErrnoError")throw v;return-v.ea}},c:function(w,f,r){R0=r;try{var J=G0(w);switch(f){case 0:var v=j0();if(v<0)break;for(;H0[v];)v++;return L2(J,v).Ha;case 1:case 2:return 0;case 3:return J.flags;case 4:return v=j0(),J.flags=J.flags&-289793|v&289792,0;case 12:return v=j0(),I[v+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(G){if(typeof p>"u"||G.name!=="ErrnoError")throw G;return-G.ea}},G:function(w,f){try{var r=G0(w),J=r.node,v=r.da.ta;w=v?r:J,v??=J.ca.ta,I0(v,63);var G=v(w);return $1(f,G)}catch(z){if(typeof p>"u"||z.name!=="ErrnoError")throw z;return-z.ea}},C:function(w,f){try{if(f===0)return-28;var r=l0("/")+1;if(f<r)return-68;return g0("/",N,w,f),r}catch(J){if(typeof p>"u"||J.name!=="ErrnoError")throw J;return-J.ea}},w:function(w,f,r){try{var J=G0(w);if(!J.Ka){var v=i(J.path,{Ja:!0}).node,G=I0(v.ca.Ra,54)(v);J.Ka=G}w=0;var z=r1(J,0,1),q=Math.floor(z/280),o=Math.min(J.Ka.length,q+Math.floor(r/280));for(r=q;r<o;r++){var L=J.Ka[r];if(L===".")var S=J.node.id,m=4;else if(L==="..")S=i(J.path,{parent:!0}).node.id,m=4;else{try{var w0=h0(J.node,L)}catch(f0){if(f0?.ea===28)continue;throw f0}S=w0.id,m=(w0.mode&61440)===8192?2:a(w0.mode)?4:(w0.mode&61440)===40960?10:8}W[f+w>>3]=BigInt(S),W[f+w+8>>3]=BigInt((r+1)*280),I[f+w+16>>1]=280,A[f+w+18]=m,g0(L,N,f+w+19,256),w+=280}return r1(J,r*280,0),w}catch(f0){if(typeof p>"u"||f0.name!=="ErrnoError")throw f0;return-f0.ea}},m:function(w,f,r){R0=r;try{var J=G0(w);switch(f){case 21509:return J.fa?0:-59;case 21505:if(!J.fa)return-59;if(J.fa.Ga.mb){w=[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var v=j0();E[v>>2]=25856,E[v+4>>2]=5,E[v+8>>2]=191,E[v+12>>2]=35387;for(var G=0;G<32;G++)A[v+G+17]=w[G]||0}return 0;case 21510:case 21511:case 21512:return J.fa?0:-59;case 21506:case 21507:case 21508:if(!J.fa)return-59;if(J.fa.Ga.nb)for(v=j0(),w=[],G=0;G<32;G++)w.push(A[v+G+17]);return 0;case 21519:if(!J.fa)return-59;return v=j0(),E[v>>2]=0;case 21520:return J.fa?-28:-59;case 21537:case 21531:if(v=j0(),!J.da.lb)throw new j(59);return J.da.lb(J,f,v);case 21523:if(!J.fa)return-59;return J.fa.Ga.ob&&(G=[24,80],v=j0(),I[v>>1]=G[0],I[v+2>>1]=G[1]),0;case 21524:return J.fa?0:-59;case 21515:return J.fa?0:-59;default:return-28}}catch(z){if(typeof p>"u"||z.name!=="ErrnoError")throw z;return-z.ea}},D:function(w,f){try{return w=R(w),$1(f,w1(w,!0))}catch(r){if(typeof p>"u"||r.name!=="ErrnoError")throw r;return-r.ea}},x:function(w,f,r){try{return f=R(f),f=z0(w,f),J0(f,r&-19),0}catch(J){if(typeof p>"u"||J.name!=="ErrnoError")throw J;return-J.ea}},E:function(w,f,r,J){try{f=R(f);var v=J&256;return f=z0(w,f,J&4096),$1(r,v?w1(f,!0):w1(f))}catch(G){if(typeof p>"u"||G.name!=="ErrnoError")throw G;return-G.ea}},i:function(w,f,r,J){R0=J;try{f=R(f),f=z0(w,f);var v=J?j0():0;return r&64&&(v&=-19),E0(f,r,v).Ha}catch(G){if(typeof p>"u"||G.name!=="ErrnoError")throw G;return-G.ea}},v:function(w,f,r,J){try{if(f=R(f),f=z0(w,f),J<=0)return-28;var v=i(f).node;if(!v)throw new j(44);if(!v.ca.La)throw new j(28);var G=v.ca.La(v),z=Math.min(J,l0(G)),q=A[r+z];return g0(G,N,r,J+1),A[r+z]=q,z}catch(o){if(typeof p>"u"||o.name!=="ErrnoError")throw o;return-o.ea}},u:function(w,f,r,J){try{f=R(f),J=R(J),f=z0(w,f),J=z0(r,J),w=f;var v=x(w),G=x(J),z=C(w),q=C(J),o=i(w,{parent:!0}),L=o.node;o=i(J,{parent:!0});var S=o.node;if(!L||!S)throw new j(44);if(L.ua!==S.ua)throw new j(75);var m=h0(L,z),w0=L0(w,G);if(w0.charAt(0)!==".")throw new j(28);if(w0=L0(J,v),w0.charAt(0)!==".")throw new j(55);try{var f0=h0(S,q)}catch(v0){}if(m!==f0){var F0=a(m.mode),X0=d0(L,z,F0);if(X0)throw new j(X0);if(X0=f0?d0(S,q,F0):k1(S,q))throw new j(X0);if(!L.ca.Sa)throw new j(63);if(m.Ia||f0&&f0.Ia)throw new j(10);if(S!==L&&(X0=y0(L,"w")))throw new j(X0);t0(m);try{L.ca.Sa(m,S,q),m.parent=S}catch(v0){throw v0}finally{$w(m)}}return 0}catch(v0){if(typeof p>"u"||v0.name!=="ErrnoError")throw v0;return-v0.ea}},t:function(w){try{return w=R(w),Gw(w),0}catch(f){if(typeof p>"u"||f.name!=="ErrnoError")throw f;return-f.ea}},F:function(w,f){try{return w=R(w),$1(f,w1(w))}catch(r){if(typeof p>"u"||r.name!=="ErrnoError")throw r;return-r.ea}},s:function(w,f,r){try{if(f=R(f),f=z0(w,f),r)if(r===512)Gw(f);else return-28;else{w=f;var J=i(w,{parent:!0}).node;if(!J)throw new j(44);var v=C(w),G=h0(J,v),z=d0(J,v,!1);if(z)throw new j(z);if(!J.ca.Va)throw new j(63);if(G.Ia)throw new j(10);J.ca.Va(J,v),t0(G)}return 0}catch(q){if(typeof p>"u"||q.name!=="ErrnoError")throw q;return-q.ea}},r:function(w,f,r){try{f=R(f),f=z0(w,f,!0);var J=Date.now(),v,G;if(r){var z=_[r>>2]+E[r+4>>2]*4294967296,q=E[r+8>>2];q==1073741823?v=J:q==1073741822?v=null:v=z*1000+q/1e6,r+=16,z=_[r>>2]+E[r+4>>2]*4294967296,q=E[r+8>>2],q==1073741823?G=J:q==1073741822?G=null:G=z*1000+q/1e6}else G=v=J;if((G??v)!==null){w=v;var o=i(f,{Ja:!0}).node;I0(o.ca.Ea,63)(o,{Fa:w,ra:G})}return 0}catch(L){if(typeof p>"u"||L.name!=="ErrnoError")throw L;return-L.ea}},l:()=>{throw""},p:()=>{throw new V},j:()=>Date.now(),f:()=>performance.now(),q:(w)=>{var f=N.length;if(w>>>=0,w>2147483648)return!1;for(var r=1;r<=4;r*=2){var J=f*(1+0.2/r);J=Math.min(J,w+100663296);w:{J=(Math.min(2147483648,Math.ceil(Math.max(w,J)/65536)*65536)-H.buffer.byteLength+65535)/65536|0;try{H.grow(J),b();var v=1;break w}catch(G){}v=void 0}if(v)return!0}return!1},z:(w,f)=>{var r=0,J=0,v;for(v of zw()){var G=f+r;_[w+J>>2]=G,r+=g0(v,N,G,1/0)+1,J+=4}return 0},A:(w,f)=>{var r=zw();_[w>>2]=r.length,w=0;for(var J of r)w+=l0(J)+1;return _[f>>2]=w,0},g:(w)=>{throw`exit(${w})`},d:function(w){try{var f=G0(w);return Qw(f),0}catch(r){if(typeof p>"u"||r.name!=="ErrnoError")throw r;return r.ea}},h:function(w,f,r,J){try{w:{var v=G0(w);w=f;for(var G,z=f=0;z<r;z++){var q=_[w>>2],o=_[w+4>>2];w+=8;var L=v,S=q,m=o,w0=G,f0=A;if(m<0||w0<0)throw new j(28);if(L.Ha===null)throw new j(8);if((L.flags&2097155)===1)throw new j(8);if(a(L.node.mode))throw new j(31);if(!L.da.read)throw new j(28);var F0=typeof w0<"u";if(!F0)w0=L.position;else if(!L.seekable)throw new j(70);var X0=L.da.read(L,f0,S,m,w0);F0||(L.position+=X0);var v0=X0;if(v0<0){var iw=-1;break w}if(f+=v0,v0<o)break;typeof G<"u"&&(G+=v0)}iw=f}return _[J>>2]=iw,0}catch(g1){if(typeof p>"u"||g1.name!=="ErrnoError")throw g1;return g1.ea}},y:function(w,f,r,J){f=f<-9007199254740992||f>9007199254740992?NaN:Number(f);try{if(isNaN(f))return 22;var v=G0(w);return r1(v,f,r),W[J>>3]=BigInt(v.position),v.Ka&&f===0&&r===0&&(v.Ka=null),0}catch(G){if(typeof p>"u"||G.name!=="ErrnoError")throw G;return G.ea}},e:function(w,f,r,J){try{w:{var v=G0(w);w=f;for(var G,z=f=0;z<r;z++){var q=_[w>>2],o=_[w+4>>2];w+=8;var L=Kw(v,A,q,o,G);if(L<0){var S=-1;break w}if(f+=L,L<o)break;typeof G<"u"&&(G+=L)}S=f}return _[J>>2]=S,0}catch(m){if(typeof p>"u"||m.name!=="ErrnoError")throw m;return m.ea}},o:function(w,f,r){var J=D1();try{return Xw(w)(f,r)}catch(v){if(_1(J),!(v instanceof Q))throw v;P1(1,0)}},n:function(w,f,r,J,v){var G=D1();try{return Xw(w)(f,r,J,v)}catch(z){if(_1(G),!(z instanceof Q))throw z;P1(1,0)}},a:H,B:(w,f)=>d(N.subarray(w,w+f))}};WebAssembly.instantiateStreaming(fetch(new URL("akarisub-worker.wasm",self.location.href)),R2).then((w)=>{w=w.instance.exports,Uw=w.J,Ow=w.K,Ww=w.L,Vw=w.M,yw=w.N,Yw=w.O,Bw=w.P,kw=w.Q,qw=w.R,Nw=w.S,Hw=w.T,Aw=w.U,Pw=w.V,_w=w.W,Dw=w.X,Lw=w.Y,gw=w.Z,Iw=w._,Ew=w.$,ow=w.aa,Rw=w.ba,Fw=w.ha,Mw=w.ia,Cw=w.ja,bw=w.ka,Tw=w.la,uw=w.ma,xw=w.na,pw=w.oa,Sw=w.pa,cw=w.xa,nw=w.ya,sw=w.Aa,P1=w.Ba,_1=w.Ca,D1=w.Da,mw=w.za,c=!0,h.noFSInit||fw||(fw=!0,N1("/dev/tty","/dev/stdin"),N1("/dev/tty","/dev/stdout"),N1("/dev/tty1","/dev/stderr"),E0("/dev/stdin",0),E0("/dev/stdout",1),E0("/dev/stderr",1)),w.I(),rw=!1,U()});let L1=()=>{try{typeof H<"u"&&(self.wasmMemory=H,self.HEAPU8C=new Uint8ClampedArray(H.buffer),typeof BigInt64Array<"u"&&(self.HEAP64=new BigInt64Array(H.buffer),self.HEAPU64=new BigUint64Array(H.buffer))),typeof N<"u"&&(self.HEAPU8=N),typeof W<"u"&&(self.HEAP64=W),typeof Y<"u"&&(self.HEAPU64=Y)}catch(w){}};if(typeof updateGlobalBufferAndViews==="function"){let w=updateGlobalBufferAndViews;updateGlobalBufferAndViews=(f)=>{w(f),L1()}}if(typeof b==="function"){let w=b;b=()=>{w(),L1()}}let lw=typeof U==="function"?U:null;return lw&&(U=()=>{return Object.assign(h,{_malloc:Ow,_free:Ww,_akarisub_create:Uw,_akarisub_destroy:Vw,_akarisub_set_drop_animations:yw,_akarisub_create_track_mem:Yw,_akarisub_remove_track:Bw,_akarisub_resize_canvas:kw,_akarisub_add_font:qw,_akarisub_reload_fonts:Nw,_akarisub_set_default_font:Hw,_akarisub_set_fallback_fonts:Aw,_akarisub_set_memory_limits:Pw,_akarisub_get_event_count:_w,_akarisub_alloc_event:Dw,_akarisub_remove_event:Lw,_akarisub_get_style_count:gw,_akarisub_alloc_style:Iw,_akarisub_remove_style:Ew,_akarisub_style_override_index:ow,_akarisub_disable_style_override:Rw,_akarisub_get_track_color_space:Fw,_akarisub_event_get_int:Mw,_akarisub_event_set_int:Cw,_akarisub_event_get_str:bw,_akarisub_event_set_str:Tw,_akarisub_style_get_num:uw,_akarisub_style_set_num:xw,_akarisub_style_get_str:pw,_akarisub_style_set_str:Sw,_akarisub_render_blend_collect:cw,_akarisub_render_image_collect:nw}),typeof p<"u"&&(h.FS_createPath=E2,h.FS_createDataFile=o2),L1(),lw()}),c?Z=h:Z=new Promise((w)=>{B=w}),Z}var tw=F2;var I1=[null,"BT601",null,"BT601","BT601","BT709","BT709","SMPTE240M","SMPTE240M","FCC","FCC"];function dw($,Z=!1){let h=[],K=$.split(/[\r\n]+/g),X=K.length,U=null,Q=null;for(let V=0;V<X;V++){let B=K[V];if(!B||/^\s*$/.test(B))continue;let c=B[0];if(c==="["){let b=B.match(/^\[(.*)\]$/);if(b){if(Z&&b[1].toLowerCase()==="events")break;U=null,Q={name:b[1],body:[]},h.push(Q);continue}}if(!Q)continue;if(c===";")Q.body.push({type:"comment",value:B.substring(1)});else{let b=B.indexOf(":");if(b===-1)continue;let I=B.substring(0,b),E=B.substring(b+1).trim();if(U||I==="Format"){let W=E.split(",");if(U&&W.length>U.length){let _=W.slice(U.length-1).join(",");W=W.slice(0,U.length-1),W.push(_)}let A=W.length;for(let _=0;_<A;_++)W[_]=W[_].trim();if(U){let _={},Y=Math.min(U.length,A);for(let N=0;N<Y;N++)_[U[N]]=W[N];E=_}else E=W}if(I==="Format")U=E;Q.body.push({key:I,value:E})}}return h}var M2=/\\blur(?:[0-9]+\.)?[0-9]+/gm;function E1($){return $.replace(M2,"")}var C2=[{w:7680,h:4320},{w:3840,h:2160},{w:2560,h:1440},{w:1920,h:1080},{w:1280,h:720}];function b2($,Z){let h=[...C2].sort((K,X)=>K.w-X.w);for(let K of h)if($<=K.w&&Z<=K.h)return K;return{w:Math.ceil($/100)*100,h:Math.ceil(Z/100)*100}}function n($,Z){return Z&&Z.includes(".")?$.toFixed(2).replace(/\.?0+$/,""):Math.round($)}function o1($){let Z=$.match(/PlayResX:\s*(\d+)/i),h=$.match(/PlayResY:\s*(\d+)/i),K=Z?parseInt(Z[1],10):1920,X=h?parseInt(h[1],10):1080,U=/\\pos\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,Q=/\\move\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)/g,V=/\\org\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,B=/\\i?clip\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,c=0,b=0,I=(M,y,x)=>{let C,K0=new RegExp(M.source,"g");while((C=K0.exec($))!==null){for(let d of y)if(C[d]){let $0=Math.abs(parseFloat(C[d]));if($0>c)c=$0}for(let d of x)if(C[d]){let $0=Math.abs(parseFloat(C[d]));if($0>b)b=$0}}};if(I(U,[1],[2]),I(Q,[1,3],[2,4]),I(V,[1],[2]),I(B,[1,3],[2,4]),c<=K&&b<=X)return $;let E=b2(c,b),W=K/E.w,A=X/E.h,_=Math.min(W,A),Y=Math.max(W,A),N=1,H=$,D=H.match(/(\[Events\][\s\S]*)/i);if(!D)return H;let O=D[1];return O=O.replace(U,(M,y,x)=>`\\pos(${n(parseFloat(y)*W,y)},${n(parseFloat(x)*A,x)})`),O=O.replace(/\\move\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)(?:\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+))?\s*\)/g,(M,y,x,C,K0,d,$0)=>{let L0=`\\move(${n(parseFloat(y)*W,y)},${n(parseFloat(x)*A,x)},${n(parseFloat(C)*W,C)},${n(parseFloat(K0)*A,K0)}`;return d?`${L0},${d},${$0})`:`${L0})`}),O=O.replace(V,(M,y,x)=>`\\org(${n(parseFloat(y)*W,y)},${n(parseFloat(x)*A,x)})`),O=O.replace(/\\(i?clip)\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,(M,y,x,C,K0,d)=>`\\${y}(${n(parseFloat(x)*W,x)},${n(parseFloat(C)*A,C)},${n(parseFloat(K0)*W,K0)},${n(parseFloat(d)*A,d)})`),O=O.replace(/\\fs([\d.]+)/g,(M,y)=>`\\fs${n(parseFloat(y)*Y,y)}`),O=O.replace(/\\fscx([\d.]+)/g,(M,y)=>`\\fscx${n(parseFloat(y)*N,y)}`),O=O.replace(/\\xbord([\d.]+)/g,(M,y)=>`\\xbord${n(parseFloat(y)*W,y)}`),O=O.replace(/\\ybord([\d.]+)/g,(M,y)=>`\\ybord${n(parseFloat(y)*A,y)}`),O=O.replace(/\\xshad(-?[\d.]+)/g,(M,y)=>`\\xshad${n(parseFloat(y)*W,y)}`),O=O.replace(/\\yshad(-?[\d.]+)/g,(M,y)=>`\\yshad${n(parseFloat(y)*A,y)}`),["fsp","bord","shad","be","blur"].forEach((M)=>{let y=new RegExp(`\\\\${M}(-?[\\d.]+)`,"g");O=O.replace(y,(x,C)=>`\\${M}${n(parseFloat(C)*_,C)}`)}),O=O.replace(/(\\i?clip\s*\([^,)]+m[^)]+\)|\\p[1-9][^}]*?)(?=[\\}]|$)/g,(M)=>{return M.replace(/(-?[\d.]+)\s+(-?[\d.]+)/g,(y,x,C)=>{return`${n(parseFloat(x)*W,x)} ${n(parseFloat(C)*A,C)}`})}),H.substring(0,D.index)+O}var q0=0,$2=1,Z0=null,R1=!1,D0=()=>typeof performance<"u"?performance.now():Date.now(),O1=D0(),Q1=24,x0=!1,J2=!1,s1="wasm",B0={},K1={},v2=0,Z2=0,M0=[],s=!1,Z1=!1,p0=!1,T2=3,t=[];self.width=0;self.height=0;var P={framesRendered:0,framesDropped:0,totalRenderTime:0,maxRenderTime:0,minRenderTime:1/0,lastRenderTime:0,renderStartTime:0,pendingRenders:0,totalEvents:0,currentEventIndex:0,cacheHits:0,cacheMisses:0},u2=()=>{P.framesRendered=0,P.framesDropped=0,P.totalRenderTime=0,P.maxRenderTime=0,P.minRenderTime=1/0,P.lastRenderTime=0,P.cacheHits=0,P.cacheMisses=0},O0=!1,C0=!0,U0=null,A0=null,S0=!1,Y0=null,h2=null,F=0,P0=null,h1=!1,G2=!1,x2=!1,l=null,z1=!1,Q2=new TextEncoder,p2=new TextDecoder,b1=null,W1=128,K2=Math.max(W1,4096),z2=K2;var S2=30,c2=1,n2=24,T1=1000,j2=Array(W1),aw=!1,u1=3,G1=5,e=0,Q0=0,s2=[],m2=[],l2=[],F1=null;var i2=!1,V1=null,k0=null,_0=!1,x1=($)=>new Promise((Z)=>setTimeout(Z,$)),X2=()=>{if(aw)return;for(let $=0;$<W1;$++)j2[$]={w:0,h:0,x:0,y:0,image:0};aw=!0},ew=($)=>{if($<W1)return j2[$];return{w:0,h:0,x:0,y:0,image:0}},m1=($)=>{if(!l||$<=0)return;let Z=u1+G1*$;if(Q0>=Z&&e)return;let h=Math.max(Z,(Q0||64)*2),K=h*Int32Array.BYTES_PER_ELEMENT;if(e)l._free(e),e=0,Q0=0;if(e=l._malloc(K),!e)throw Q0=0,Error("Failed to allocate render-collect buffer");Q0=h},j1=($)=>{if(!F)return;let Z=g(),h=u();if(m1(z2),s1==="wasm")Z.renderBlendCollect(h,$,0,e,Q0);else Z.renderImageCollect(h,$,0,e,Q0)},n0=()=>{P.totalEvents=F?g().getEventCount(F):0},U2=()=>{if(!F)return null;let $=g(),Z=u(),h=$.getEventCount(Z);if(h<=0)return null;let K=Number.POSITIVE_INFINITY;for(let X=0;X<h;X++){let U=$.eventGetInt(Z,X,r0.Start)/T1;if(Number.isFinite(U)&&U<K)K=U}if(!Number.isFinite(K))return null;return Math.max(0,K)},t2=()=>{if(!F)return null;let $=g(),Z=u(),h=$.getEventCount(Z);if(h<=0)return null;let K=Number.POSITIVE_INFINITY,X=0;for(let U=0;U<h;U++){let Q=$.eventGetInt(Z,U,r0.Start)/T1,V=Math.max(0,$.eventGetInt(Z,U,r0.Duration)/T1);if(!Number.isFinite(Q))continue;let B=Q+V;if(Q<K)K=Q;if(B>X)X=B}if(!Number.isFinite(K))return null;if(X<K)X=K;return{start:Math.max(0,K),end:Math.max(0,X)}},d2=async()=>{if(!F)return;let $=t2();if(!$)return;let Z=Math.min($.end,$.start+S2),h=0;for(let K=$.start;K<=Z;K+=c2){if(!F)return;if(x0&&(p0||t.length>0||P.pendingRenders>0)){await x1(0);continue}if(j1(K),h++,x0||h%n2===0)await x1(0)}j1(Z)};var y1=()=>{if(i2=!1,F1)clearTimeout(F1),F1=null},a2=()=>{if(!G2||k0||!F)return;k0=(async()=>{await x1(0);try{await d2()}catch($){if(s)console.warn("[AkariSub] Full track warmup failed, continuing:",$)}try{if(F)j1(Y2())}catch($){if(s)console.warn("[AkariSub] Post-warmup re-prime failed, continuing:",$)}})().finally(()=>{k0=null})};var r0={Start:0,Duration:1,ReadOrder:2,Layer:3,Style:4,MarginL:5,MarginR:6,MarginV:7},b0={Name:0,Effect:1,Text:2},T={FontSize:0,PrimaryColour:1,SecondaryColour:2,OutlineColour:3,BackColour:4,Bold:5,Italic:6,Underline:7,StrikeOut:8,ScaleX:9,ScaleY:10,Spacing:11,Angle:12,BorderStyle:13,Outline:14,Shadow:15,Alignment:16,MarginL:17,MarginR:18,MarginV:19,Encoding:20,treat_fontname_as_pattern:21,Blur:22,Justify:23},X1={Name:0,FontName:1},e2=($)=>{return Q2.encode($)},w4=($)=>{if(!l)return 0;let Z=e2($),h=l._malloc(Z.length+1);if(!h)return 0;return self.HEAPU8.set(Z,h),self.HEAPU8[h+Z.length]=0,h},T0=($)=>{if(!$)return"";let Z=$,h=self.HEAPU8;while(h[Z]!==0)Z++;return p2.decode(h.subarray($,Z))},N0=($,Z)=>{let h=w4($);try{return Z(h)}finally{if(h&&l)l._free(h)}},p1=($)=>{return $ instanceof Uint8Array?$:new Uint8Array($)},f4=($)=>{return $ instanceof Uint8Array||$ instanceof ArrayBuffer},r4=($,Z)=>{if(!l)throw Error("AkariSub module is not initialized");let h=l._malloc($.length+1);if(!h)throw Error("Failed to allocate subtitle content");try{return self.HEAPU8.set($,h),self.HEAPU8[h+$.length]=0,Z(h)}finally{self.HEAPU8.fill(0,h,h+$.length+1),l._free(h)}},w2=async($,Z)=>{let h=new Uint8Array($),K=8,X=12,U=21;if(h.length<37)throw Error("Ciphertext too short for v2 subtitle payload");if(h[0]!==2)throw Error("Unsupported encrypted subtitle protocol version");let Q=h.subarray(0,9),V=h.subarray(9,21),B=h.subarray(21),c=await crypto.subtle.decrypt({name:"AES-GCM",iv:V.buffer.slice(V.byteOffset,V.byteOffset+V.byteLength),additionalData:Q.buffer.slice(Q.byteOffset,Q.byteOffset+Q.byteLength),tagLength:128},Z,B.buffer.slice(B.byteOffset,B.byteOffset+B.byteLength));return new Uint8Array(c)},O2=async($)=>{if($.encrypted)return w2($.encrypted,$.contentKey);let Z=$.encryptedChunks||[];if(Z.length===0)throw Error("Encrypted subtitle content is empty");let h=await Promise.all(Z.map((Q)=>w2(Q,$.contentKey))),K=h.reduce((Q,V)=>Q+V.length,0),X=new Uint8Array(K),U=0;for(let Q of h)X.set(Q,U),Q.fill(0),U+=Q.length;return X},l1=($)=>{let Z=g(),h=u();r4($,(K)=>{Z.createTrackMem(h,K)})},W2=($)=>{let Z=g(),h=u();N0($,(K)=>{Z.createTrackMem(h,K)})},g=()=>{if(!b1)throw Error("AkariSub API is not initialized");return b1},u=()=>{if(!F)throw Error("AkariSub instance is not initialized");return F};self.addFont=({font:$})=>V2($,!1);var J1=($)=>{if($=$.trim().toLowerCase(),$.startsWith("@"))$=$.substring(1);if(K1[$])return;if(K1[$]=!0,!B0[$]){if(J2)postMessage({target:"getLocalFont",font:$})}else V2(B0[$])},V2=($,Z=!0)=>{if(typeof $==="string")c1($,(h)=>{f2(new Uint8Array(h),Z)},console.error);else f2($,Z)};var M1=null,$4=()=>{if(M1)return;M1=setTimeout(()=>{if(M1=null,F)g().reloadFonts(F)},16)},c0=($,Z)=>{if(!l||!F){if(s)console.warn("[AkariSub] Cannot add embedded font, module or AkariSub not ready:",Z);return}try{let h=g(),K=l._malloc($.length);if(!K){console.warn("[AkariSub] Failed to allocate memory for embedded font:",Z);return}if(self.HEAPU8.set($,K),N0(Z,(X)=>{h.addFont(F,X,K,$.length)}),s)console.log("[AkariSub] Added embedded font:",Z,"size:",$.length)}catch(h){console.warn("[AkariSub] Failed to add embedded font:",Z,h)}},f2=($,Z=!0)=>{let h=Z?"/fonts/fallback":"/fonts/attached",K=Z?"fallback-"+Z2++:"attached-"+v2++;if(l){try{l.FS_createDataFile(h,K,$,!0,!0,!0)}catch(X){console.warn("Failed to write font to filesystem:",h+"/"+K,X)}if(!Z)c0($,K);else if(F)c0($,K);else M0.push({data:$,name:K})}$4()},v1=($,Z=!0)=>{let h=Z?"/fonts/fallback":"/fonts/attached",K=Z?"fallback-"+Z2++:"attached-"+v2++;if(l){try{if(l.FS_createDataFile(h,K,$,!0,!0,!0),s)console.log("[AkariSub] Wrote font to FS:",h+"/"+K,"size:",$.length)}catch(X){console.warn("Failed to write font to filesystem:",h+"/"+K,X)}if(!Z)c0($,K);else if(F)c0($,K);else M0.push({data:$,name:K})}},y2=($)=>{if(!B0)return;if($.length>500000){let h=$.match(/\[V4\+?\s*Styles?\][^\[]*(?=\[|$)/i);if(h){let U=h[0].matchAll(/^Style:[^,]*,([^,]+)/gm);for(let Q of U)J1(Q[1].trim())}let K=$.match(/\[Events\][\s\S]*/i);if(K){let U=K[0].matchAll(/\\fn([^\\}]*?)[\\}]/g),Q=0;for(let V of U)if(J1(V[1]),++Q>=1000)break}}else{let h=dw($,!0);for(let X=0;X<h.length;X++)for(let U=0;U<h[X].body.length;U++){let Q=h[X].body[U];if(Q.key==="Style"&&typeof Q.value==="object"&&!Array.isArray(Q.value))J1(Q.value.Fontname)}let K=$.match(/\[Events\][\s\S]*/i);if(K){let U=K[0].matchAll(/\\fn([^\\}]*?)[\\}]/g);for(let Q of U)J1(Q[1])}}},S1=($,Z)=>{let h=new XMLHttpRequest;return h.open("GET",$,!1),h.responseType=Z?"arraybuffer":"text",h.send(null),h.response},c1=($,Z,h)=>{let K=new XMLHttpRequest;K.open("GET",$,!0),K.responseType="arraybuffer",K.onload=()=>{if((K.status===200||K.status===0)&&K.response)return Z(K.response)},K.onerror=h,K.send(null)},n1=()=>{let $=g(),Z=u();n0(),V1=U2(),P0=I1[$.getTrackColorSpace(Z)],z1=!0,postMessage({target:"verifyColorSpace",subtitleColorSpace:P0}),postMessage({target:"trackReady"})};self.setTrack=({content:$})=>{if(y1(),k0=null,_0=!1,f4($)){l1(p1($)),n1();return}if(y2($),Z1)$=o1($);if(h1)$=E1($);W2($),n1()};self.setEncryptedTrack=async({content:$})=>{y1(),k0=null,_0=!0;let Z=await O2($);try{l1(Z)}finally{Z.fill(0)}n1()};self.getColorSpace=()=>{postMessage({target:"verifyColorSpace",subtitleColorSpace:P0})};self.freeTrack=()=>{y1(),k0=null,V1=null,_0=!1;let $=g(),Z=u();$.removeTrack(Z),n0()};self.setTrackByUrl=({url:$})=>{self.setTrack({content:S1($)})};var u0=!0,Y2=()=>{let $=(D0()-O1)/1000;if(u0)return q0;else{if($>5)console.error("Didn't receive currentTime > 5 seconds. Assuming video was paused."),B2(!0);return q0+$*$2}},J4=($)=>{if(q0=$,O1=D0(),x0)return;if(!Z0)if(R1)Z0=i1(U1);else U1(),R1=!0,setTimeout(()=>{R1=!1},20)},B2=($)=>{if(x0){if(u0=$,Z0)r2(Z0),Z0=null;return}if($!==u0)if(u0=$,$){if(Z0)r2(Z0),Z0=null}else O1=D0(),Z0=i1(U1)},v4=()=>{if(p0||t.length===0)return;if(t.length>1){let Z=t.length-1;P.framesDropped+=Z;let h=t[t.length-1];t.length=0,t.push(h)}let $=t.shift();if(!$)return;s0($.time,$.force)},V0=()=>{p0=!1,v4()},s0=($,Z)=>{if(p0){let W={time:$,force:Z?1:0};if(W.force)t.length=0;else{let A=t[t.length-1];if(A&&Math.abs(A.time-W.time)>0.25)t.length=0}if(t.length>=T2)t.shift(),P.framesDropped++;t.push(W);return}p0=!0,X2();let h={},K=performance.now();P.renderStartTime=K,P.pendingRenders++;let X=g(),U=u(),Q=Z?1:0;m1(K2);let V=s1==="wasm"?X.renderBlendCollect(U,$,Q,e,Q0):X.renderImageCollect(U,$,Q,e,Q0),B=new Int32Array(self.wasmMemory.buffer,e,u1),c=B[0],b=B[1],E=performance.now()-K;if(P.lastRenderTime=E,P.totalRenderTime+=E,P.maxRenderTime=Math.max(P.maxRenderTime,E),E>0)P.minRenderTime=Math.min(P.minRenderTime,E);if(c!==0||Z)P.framesRendered++,P.cacheMisses++;else P.cacheHits++;if(s){let W=performance.now(),A=B[2];h.WASMRenderTime=A-K,h.WASMBitmapDecodeTime=W-A,h.JSRenderTime=Date.now()}if(c!==0||Z){let W=s2,A=m2;if(W.length=0,A.length=0,V===0)return C1({images:W,buffers:A,times:h});let _=e+u1*Int32Array.BYTES_PER_ELEMENT,Y=new Int32Array(self.wasmMemory.buffer,_,V*G1);if(O0&&S0!==!0){let H=l2;H.length=V;for(let D=0;D<V;++D){let O=D*G1,R=ew(D);R.x=Y[O],R.y=Y[O+1],R.w=Y[O+2],R.h=Y[O+3],R.image=0;let M=Y[O+4],y=R.w*R.h*4,x=new Uint8ClampedArray(self.wasmMemory.buffer,M,y),C=new ImageData(x,R.w,R.h);H[D]=C0?createImageBitmap(C,{premultiplyAlpha:"none",colorSpaceConversion:"none"}):createImageBitmap(C),W[D]=R}Promise.all(H).then((D)=>{for(let O=0;O<V;O++)W[O].image=D[O];if(s)h.JSBitmapGenerationTime=Date.now()-(h.JSRenderTime||0);C1({images:W,buffers:D,times:h})}).catch(()=>{if(C0)C0=!1,console.warn("[AkariSub] createImageBitmap options not supported, disabling"),P.pendingRenders--,V0(),s0($,Z);else P.pendingRenders--,postMessage({target:"unbusy"}),V0()})}else{for(let H=0;H<V;++H){let D=H*G1,O=ew(H);if(O.x=Y[D],O.y=Y[D+1],O.w=Y[D+2],O.h=Y[D+3],O.image=Y[D+4],!A0){let R=O.image,M=O.w*O.h*4,y=new Uint8ClampedArray(M);y.set(self.HEAPU8C.subarray(R,R+M)),A.push(y.buffer),O.image=y}W[H]=O}C1({images:W,buffers:A,times:h})}}else P.pendingRenders--,postMessage({target:"unbusy"}),V0()};self.demand=({time:$})=>{q0=$,O1=D0();let Z=z1?1:0;z1=!1,s0($,Z)};var U1=($)=>{if(Z0=null,s0(Y2(),$),!u0)Z0=i1(U1)},C1=({times:$,images:Z,buffers:h})=>{P.pendingRenders--;let{width:K,height:X}=self,U=Z.length,Q={target:"render",asyncRender:O0,images:Z,times:$,width:K,height:X,colorSpace:P0};if(S0){if(U0.height!==X||U0.width!==K)U0.width=K,U0.height=X;if(A0.clearRect(0,0,K,X),O0)for(let V=0;V<U;V++){let B=Z[V];if(B.image)A0.drawImage(B.image,B.x,B.y),B.image.close()}else for(let V=0;V<U;V++){let B=Z[V];if(B.image){let{w:c,h:b}=B;if(Y0.width!==c||Y0.height!==b)Y0.width=c,Y0.height=b;let I=B.image,E=c*b*4,W=self.HEAPU8C.subarray(I,I+E);h2.putImageData(new ImageData(W,c,b),0,0),A0.drawImage(Y0,B.x,B.y)}}if(S0==="hybrid"){if(!U){postMessage(Q),V0();return}if(s)$.bitmaps=U;try{let V=U0.transferToImageBitmap(),B={...Q,images:[{image:V,x:0,y:0}],asyncRender:!0};postMessage(B,[V]),V0()}catch{postMessage({target:"unbusy"}),V0()}}else{if(s){$.JSRenderTime=Date.now()-($.JSRenderTime||0)-($.JSBitmapGenerationTime||0);let V=0;for(let B in $)V+=$[B]||0;console.log("Bitmaps: "+U+" Total: "+(V|0)+"ms",$)}postMessage({target:"unbusy"}),V0()}}else postMessage(Q,h),V0()},i1=self.requestAnimationFrame?self.requestAnimationFrame.bind(self):(()=>{let $=0;return(Z)=>{let h=D0();if($===0)$=h+1000/Q1;else while(h+2>=$)$+=1000/Q1;let K=Math.max($-h,0);return setTimeout(Z,K)}})(),r2=self.cancelAnimationFrame?self.cancelAnimationFrame.bind(self):clearTimeout;self.init=async($)=>{if(x2=$.hasBitmapBug,G2=!!$.fullTrackWarmup,typeof $.initialTime==="number"&&Number.isFinite($.initialTime))q0=$.initialTime;let Z=self.fetch,h=(Q)=>{if(WebAssembly.instantiateStreaming)self.fetch=(V)=>Z(Q)},K=()=>{self.fetch=Z},X=(Q)=>{return h(Q),tw({wasm:!WebAssembly.instantiateStreaming?S1(Q,!0):void 0}).finally(K)},U=async(Q)=>{l=Q,b1={create:Q._akarisub_create,destroy:Q._akarisub_destroy,setDropAnimations:Q._akarisub_set_drop_animations,createTrackMem:Q._akarisub_create_track_mem,removeTrack:Q._akarisub_remove_track,resizeCanvas:Q._akarisub_resize_canvas,addFont:Q._akarisub_add_font,reloadFonts:Q._akarisub_reload_fonts,setDefaultFont:Q._akarisub_set_default_font,setFallbackFonts:Q._akarisub_set_fallback_fonts,setMemoryLimits:Q._akarisub_set_memory_limits,getEventCount:Q._akarisub_get_event_count,allocEvent:Q._akarisub_alloc_event,removeEvent:Q._akarisub_remove_event,getStyleCount:Q._akarisub_get_style_count,allocStyle:Q._akarisub_alloc_style,removeStyle:Q._akarisub_remove_style,styleOverrideIndex:Q._akarisub_style_override_index,disableStyleOverride:Q._akarisub_disable_style_override,getTrackColorSpace:Q._akarisub_get_track_color_space,eventGetInt:Q._akarisub_event_get_int,eventSetInt:Q._akarisub_event_set_int,eventGetStr:Q._akarisub_event_get_str,eventSetStr:Q._akarisub_event_set_str,styleGetNum:Q._akarisub_style_get_num,styleSetNum:Q._akarisub_style_set_num,styleGetStr:Q._akarisub_style_get_str,styleSetStr:Q._akarisub_style_set_str,renderBlendCollect:Q._akarisub_render_blend_collect,renderImageCollect:Q._akarisub_render_image_collect};let V=[],B=new Set;if($.fallbackFonts&&$.fallbackFonts.length>0)for(let Y of $.fallbackFonts){let N=Y.trim(),H=N.toLowerCase();if(H&&!B.has(H))B.add(H),V.push(N)}try{Q.FS_createPath("/","fonts",!0,!0),Q.FS_createPath("/fonts","attached",!0,!0),Q.FS_createPath("/fonts","fallback",!0,!0),Q.FS_createPath("/","fontconfig",!0,!0),Q.FS_createPath("/","assets",!0,!0),Q.FS_createPath("/","etc",!0,!0),Q.FS_createPath("/etc","fonts",!0,!0);let Y=`<?xml version="1.0"?>
|
|
2
2
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
|
3
3
|
<fontconfig>
|
|
4
4
|
<!-- Font directories listed in priority order -->
|
|
@@ -36,4 +36,4 @@
|
|
|
36
36
|
</rescan>
|
|
37
37
|
</config>
|
|
38
38
|
</fontconfig>
|
|
39
|
-
`,
|
|
39
|
+
`,N=Q2.encode(Y);Q.FS_createDataFile("/assets","fonts.conf",N,!0,!1,!1),Q.FS_createDataFile("/etc/fonts","fonts.conf",N,!0,!1,!1)}catch(Y){console.warn("Failed to create font directories or fonts.conf:",Y)}if(self.width=$.width,self.height=$.height,x0=!!$.onDemandRender,s1=$.blendMode,O0=$.asyncRender,O0&&typeof createImageBitmap>"u")O0=!1,console.error("'createImageBitmap' needed for 'asyncRender' unsupported!");if(O0)try{let N=new OffscreenCanvas(1,1).getContext("2d");if(N){let H=N.getImageData(0,0,1,1);await createImageBitmap(H,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).catch(()=>{C0=!1,console.warn("[AkariSub] createImageBitmap options not supported (Safari?), rendering without options")})}}catch{C0=!1}B0=$.availableFonts,s=$.debug,Q1=$.targetFps||Q1,J2=$.useLocalFonts,h1=$.dropAllBlur,Z1=$.clampPos,await(async()=>{let Y=[];for(let N of V){let H=N.trim().toLowerCase(),D=H.startsWith("@")?H.substring(1):H;if(B0&&B0[D]){let O=B0[D];if(typeof O==="string"){let R=new Promise((M)=>{c1(O,(y)=>{if(v1(new Uint8Array(y),!0),K1[D]=!0,s)console.log("[AkariSub] Loaded fallback font async:",D);M()},(y)=>{console.error("Failed to load fallback font:",D,y),M()})});Y.push(R)}else v1(O,!0),K1[D]=!0}}if(Y.length>0){let N=null,H=!1,D=new Promise((O)=>{N=setTimeout(()=>{H=!0,console.warn("[AkariSub] Fallback font loading timeout, continuing with available fonts"),O()},30000)});if(await Promise.race([Promise.all(Y).then(()=>{if(N!==null)clearTimeout(N)}),D]),!H&&s)console.log("[AkariSub] All fallback fonts loaded successfully")}})();let b=V.length>0?V[0]:null;if(F=N0(b||"",(Y)=>{return g().create(self.width,self.height,Y,s?1:0)}),M0.length>0){for(let{data:Y,name:N}of M0)c0(Y,N);M0.length=0,g().reloadFonts(F)}if(V.length>0)N0(V.join(","),(Y)=>{g().setFallbackFonts(u(),Y)});let I=$.subContent,E=null;if($.encryptedSubContent)_0=!0,E=await O2($.encryptedSubContent),I=E;else if(_0=!1,!I)I=S1($.subUrl);if(typeof I==="string"?I.length>500000:p1(I).byteLength>500000){if(postMessage({target:"partial_ready"}),s)console.log("[AkariSub] Large subtitle detected, emitting partial_ready early")}if(typeof I==="string"){if(y2(I),Z1)I=o1(I);if(h1)I=E1(I)}else if(s&&(Z1||h1))console.warn("[AkariSub] Text rewrite options are skipped for protected binary subtitle content");let A=!1,_=[];for(let Y of $.fonts||[])if(typeof Y==="string"){let N=new Promise((H)=>{c1(Y,(D)=>{if(v1(new Uint8Array(D),!1),A=!0,s)console.log("[AkariSub] Loaded attached font async:",Y);H()},(D)=>{console.error("Failed to load attached font:",Y,D),H()})});_.push(N)}else v1(Y,!1),A=!0;if(_.length>0){let Y=null,N=!1,H=new Promise((D)=>{Y=setTimeout(()=>{N=!0,console.warn("[AkariSub] Attached font loading timeout, continuing with available fonts"),D()},30000)});if(await Promise.race([Promise.all(_).then(()=>{if(Y!==null)clearTimeout(Y)}),H]),!N&&s)console.log("[AkariSub] Attached font loading complete")}if(A){if(s)console.log("[AkariSub] Reloading fonts after writing attached fonts to FS");if(g().reloadFonts(u()),s)console.log("[AkariSub] Font reload complete")}if(typeof I==="string")W2(I);else try{l1(p1(I))}finally{E?.fill(0)}if(n0(),V1=U2(),P0=I1[g().getTrackColorSpace(u())],g().setDropAnimations(u(),$.dropAllAnimations||0),$.libassMemoryLimit>0||$.libassGlyphLimit>0)g().setMemoryLimits(u(),$.libassGlyphLimit||0,$.libassMemoryLimit||0);X2(),m1(z2);try{j1(q0)}catch(Y){if(s)console.warn("[AkariSub] Prewarm render failed, continuing:",Y)}z1=!0,postMessage({target:"ready"}),postMessage({target:"verifyColorSpace",subtitleColorSpace:P0}),a2()};X($.wasmUrl).then(U).catch((Q)=>{console.error("[AkariSub] WASM loading failed:",Q),postMessage({target:"error",error:"WASM loading failed: "+(Q&&Q.message?Q.message:String(Q))})})};self.offscreenCanvas=({transferable:$})=>{if(U0=$[0],A0=U0.getContext("2d",{desynchronized:!0}),!O0)Y0=new OffscreenCanvas(self.width,self.height),h2=Y0.getContext("2d",{desynchronized:!0});S0=!0};self.detachOffscreen=()=>{U0=new OffscreenCanvas(self.width,self.height),A0=U0.getContext("2d",{desynchronized:!0}),S0="hybrid"};self.canvas=({width:$,height:Z,videoWidth:h,videoHeight:K,force:X})=>{if($==null)throw Error("Invalid canvas size specified");if(self.width=$,self.height=Z,F)g().resizeCanvas(F,$,Z,h,K);if(X)s0(q0,!0)};self.video=({currentTime:$,isPaused:Z,rate:h})=>{if($!=null)J4($);if(Z!=null)B2(Z);if(h!=null)$2=h};self.destroy=()=>{if(y1(),k0=null,V1=null,l){if(e)l._free(e),e=0,Q0=0}if(F)g().destroy(F),F=0;P.totalEvents=0};self.setAsyncRender=({value:$})=>{O0=$&&typeof createImageBitmap<"u"};var k2=($,Z)=>{let h=g(),K=u();for(let X of Object.keys(Z)){let U=Z[X];if(U==null||X==="_index")continue;if(X in r0){h.eventSetInt(K,$,r0[X],Number(U));continue}if(X in b0)N0(String(U),(Q)=>{h.eventSetStr(K,$,b0[X],Q)})}},Z4=($)=>{let Z=g(),h=u();return{Start:Z.eventGetInt(h,$,r0.Start),Duration:Z.eventGetInt(h,$,r0.Duration),ReadOrder:Z.eventGetInt(h,$,r0.ReadOrder),Layer:Z.eventGetInt(h,$,r0.Layer),Style:String(Z.eventGetInt(h,$,r0.Style)),MarginL:Z.eventGetInt(h,$,r0.MarginL),MarginR:Z.eventGetInt(h,$,r0.MarginR),MarginV:Z.eventGetInt(h,$,r0.MarginV),Name:T0(Z.eventGetStr(h,$,b0.Name)),Text:T0(Z.eventGetStr(h,$,b0.Text)),Effect:T0(Z.eventGetStr(h,$,b0.Effect))}},q2=($,Z)=>{let h=g(),K=u();for(let X of Object.keys(Z)){let U=Z[X];if(U==null)continue;if(X in T){h.styleSetNum(K,$,T[X],Number(U));continue}if(X in X1)N0(String(U),(Q)=>{h.styleSetStr(K,$,X1[X],Q)})}},h4=($)=>{let Z=g(),h=u();return{Name:T0(Z.styleGetStr(h,$,X1.Name)),FontName:T0(Z.styleGetStr(h,$,X1.FontName)),FontSize:Z.styleGetNum(h,$,T.FontSize),PrimaryColour:Z.styleGetNum(h,$,T.PrimaryColour),SecondaryColour:Z.styleGetNum(h,$,T.SecondaryColour),OutlineColour:Z.styleGetNum(h,$,T.OutlineColour),BackColour:Z.styleGetNum(h,$,T.BackColour),Bold:Z.styleGetNum(h,$,T.Bold),Italic:Z.styleGetNum(h,$,T.Italic),Underline:Z.styleGetNum(h,$,T.Underline),StrikeOut:Z.styleGetNum(h,$,T.StrikeOut),ScaleX:Z.styleGetNum(h,$,T.ScaleX),ScaleY:Z.styleGetNum(h,$,T.ScaleY),Spacing:Z.styleGetNum(h,$,T.Spacing),Angle:Z.styleGetNum(h,$,T.Angle),BorderStyle:Z.styleGetNum(h,$,T.BorderStyle),Outline:Z.styleGetNum(h,$,T.Outline),Shadow:Z.styleGetNum(h,$,T.Shadow),Alignment:Z.styleGetNum(h,$,T.Alignment),MarginL:Z.styleGetNum(h,$,T.MarginL),MarginR:Z.styleGetNum(h,$,T.MarginR),MarginV:Z.styleGetNum(h,$,T.MarginV),Encoding:Z.styleGetNum(h,$,T.Encoding),treat_fontname_as_pattern:Z.styleGetNum(h,$,T.treat_fontname_as_pattern),Blur:Z.styleGetNum(h,$,T.Blur),Justify:Z.styleGetNum(h,$,T.Justify)}};self.createEvent=({event:$})=>{let Z=g().allocEvent(u());if(Z>=0)k2(Z,$);n0()};self.getEvents=()=>{let $=[],h=g().getEventCount(u());for(let K=0;K<h;K++){let X={...Z4(K),_index:K};if(_0)X.Name="",X.Effect="",X.Text="";$.push(X)}postMessage({target:"getEvents",events:$})};self.setEvent=({event:$,index:Z})=>{k2(Z,$)};self.removeEvent=({index:$})=>{g().removeEvent(u(),$),n0()};self.createStyle=({style:$})=>{let Z=g().allocStyle(u());if(Z>=0)q2(Z,$);return Z};self.getStyles=()=>{let $=[],h=g().getStyleCount(u());for(let K=0;K<h;K++)$.push(h4(K));postMessage({target:"getStyles",time:Date.now(),styles:$})};self.setStyle=({style:$,index:Z})=>{q2(Z,$)};self.removeStyle=({index:$})=>{g().removeStyle(u(),$)};self.styleOverride=($)=>{let Z=self.createStyle($);if(typeof Z==="number"&&Z>=0)g().styleOverrideIndex(u(),Z)};self.disableStyleOverride=()=>{g().disableStyleOverride(u())};self.defaultFont=({font:$})=>{N0($,(Z)=>{g().setDefaultFont(u(),Z)})};self.getStats=()=>{let $=P.framesRendered>0?P.totalRenderTime/P.framesRendered:0;postMessage({target:"getStats",stats:{framesRendered:P.framesRendered,framesDropped:P.framesDropped,avgRenderTime:Math.round($*100)/100,maxRenderTime:Math.round(P.maxRenderTime*100)/100,minRenderTime:P.minRenderTime===1/0?0:Math.round(P.minRenderTime*100)/100,lastRenderTime:Math.round(P.lastRenderTime*100)/100,pendingRenders:Math.max(0,P.pendingRenders),totalEvents:P.totalEvents,cacheHits:P.cacheHits,cacheMisses:P.cacheMisses}})};self.resetStats=()=>{u2(),postMessage({target:"resetStats",success:!0})};self.getEventCount=()=>{let $=F?g().getEventCount(F):0;postMessage({target:"getEventCount",count:$})};self.getStyleCount=()=>{let $=F?g().getStyleCount(F):0;postMessage({target:"getStyleCount",count:$})};onmessage=({data:$})=>{if(!self[$.target])throw Error("Unknown event target "+$.target);Promise.resolve(self[$.target]($)).catch((Z)=>{postMessage({target:"error",error:Z instanceof Error?Z.message:String(Z)})})};})();
|
|
Binary file
|