diff --git a/jwl/assets/db-worker-DEWOyJFk.js b/jwl/assets/db-worker-DEWOyJFk.js deleted file mode 100644 index 866fbe9..0000000 --- a/jwl/assets/db-worker-DEWOyJFk.js +++ /dev/null @@ -1,44 +0,0 @@ -(function(){let e=9223372036854775807n,t=-9223372036854775808n;var n=class extends Error{constructor(e,t){super(e),this.code=t}};function r(r){let a={},o=r._getSqliteFree(),s=r._malloc(8),c=[s,s+4];function l(e){if(typeof e!=`string`)return 0;let t=r.lengthBytesUTF8(e),n=r._sqlite3_malloc(t+1);return r.stringToUTF8(e,n,t+1),n}function u(e,t){return BigInt(t)<<32n|BigInt(e)&4294967295n}let d=(function(){let e=BigInt(2**53-1)>>32n,t=BigInt(-(2**53-1))>>32n;return function(n,r){return r>e||r2147483647||i<-2147483648?25:v(e,t(n,r,i),m.get(n))}})(),a.bind_int64=(function(){let n=`sqlite3_bind_int64`,a=r.cwrap(n,...i(`nnnn:n`));return function(r,i,o){if(h(r),o>e||o>32n;return v(n,a(r,i,Number(s),Number(c)),m.get(r))}})(),a.bind_null=(function(){let e=`sqlite3_bind_null`,t=r.cwrap(e,...i(`nn:n`));return function(n,r){return h(n),v(e,t(n,r),m.get(n))}})(),a.bind_parameter_name=(function(){let e=r.cwrap(`sqlite3_bind_parameter_name`,...i(`n:s`));return function(t,n){return h(t),e(t,n)}})(),a.bind_text=(function(){let e=`sqlite3_bind_text`,t=r.cwrap(e,...i(`nnnnn:n`));return function(n,r,i){return h(n),v(e,t(n,r,l(i),-1,o),m.get(n))}})(),a.changes=(function(){let e=r.cwrap(`sqlite3_changes`,...i(`n:n`));return function(t){return p(t),e(t)}})(),a.close=(function(){let e=`sqlite3_close`,t=r.cwrap(e,...i(`n:n`),{async:!0});return async function(n){p(n);let r=await t(n);return f.delete(n),v(e,r,n)}})(),a.column=function(e,t){h(e);let i=a.column_type(e,t);switch(i){case 4:return a.column_blob(e,t);case 2:return a.column_double(e,t);case 1:return d(a.column_int(e,t),r.getTempRet0());case 5:return null;case 3:return a.column_text(e,t);default:throw new n(`unknown type`,i)}},a.column_blob=(function(){let e=r.cwrap(`sqlite3_column_blob`,...i(`nn:n`));return function(t,n){h(t);let i=a.column_bytes(t,n),o=e(t,n);return r.HEAPU8.subarray(o,o+i)}})(),a.column_bytes=(function(){let e=r.cwrap(`sqlite3_column_bytes`,...i(`nn:n`));return function(t,n){return h(t),e(t,n)}})(),a.column_count=(function(){let e=r.cwrap(`sqlite3_column_count`,...i(`n:n`));return function(t){return h(t),e(t)}})(),a.column_double=(function(){let e=r.cwrap(`sqlite3_column_double`,...i(`nn:n`));return function(t,n){return h(t),e(t,n)}})(),a.column_int=(function(){let e=r.cwrap(`sqlite3_column_int64`,...i(`nn:n`));return function(t,n){return h(t),e(t,n)}})(),a.column_int64=(function(){let e=r.cwrap(`sqlite3_column_int64`,...i(`nn:n`));return function(t,n){return h(t),u(e(t,n),r.getTempRet0())}})(),a.column_name=(function(){let e=r.cwrap(`sqlite3_column_name`,...i(`nn:s`));return function(t,n){return h(t),e(t,n)}})(),a.column_names=function(e){let t=[],n=a.column_count(e);for(let r=0;re||i>32n;n(r,Number(a),Number(o))}})(),a.result_null=(function(){let e=r.cwrap(`sqlite3_result_null`,...i(`n:n`));return function(t){e(t)}})(),a.result_text=(function(){let e=r.cwrap(`sqlite3_result_text`,...i(`nnnn:n`));return function(t,n){e(t,l(n),-1,o)}})(),a.row=function(e){let t=[],n=a.data_count(e);for(let i=0;ie|t);var o=class{get state(){return this.#e}#e=0;timeoutMillis=0;#t=new Map;#n=Promise.resolve(0);async lock(e){return this.#r(this.#i,e)}async unlock(e){return this.#r(this.#a,e)}async isSomewhereReserved(){throw Error(`unimplemented`)}async#r(e,t){let n=t&7;try{let t=()=>e.call(this,n);return await(this.#n=this.#n.then(t,t)),this.#e=n,0}catch(e){return e.name===`AbortError`?5:(console.error(e),3850)}}async#i(e){if(e===this.#e)return 0;switch(this.#e){case 0:switch(e){case 1:return this._NONEtoSHARED();default:throw Error(`unexpected transition ${this.#e} -> ${e}`)}case 1:switch(e){case 2:return this._SHAREDtoRESERVED();case 4:return this._SHAREDtoEXCLUSIVE();default:throw Error(`unexpected transition ${this.#e} -> ${e}`)}case 2:switch(e){case 4:return this._RESERVEDtoEXCLUSIVE();default:throw Error(`unexpected transition ${this.#e} -> ${e}`)}default:throw Error(`unexpected transition ${this.#e} -> ${e}`)}}async#a(e){if(e===this.#e)return 0;switch(this.#e){case 4:switch(e){case 1:return this._EXCLUSIVEtoSHARED();case 0:return this._EXCLUSIVEtoNONE();default:throw Error(`unexpected transition ${this.#e} -> ${e}`)}case 2:switch(e){case 1:return this._RESERVEDtoSHARED();case 0:return this._RESERVEDtoNONE();default:throw Error(`unexpected transition ${this.#e} -> ${e}`)}case 1:switch(e){case 0:return this._SHAREDtoNONE();default:throw Error(`unexpected transition ${this.#e} -> ${e}`)}default:throw Error(`unexpected transition ${this.#e} -> ${e}`)}}async _NONEtoSHARED(){}async _SHAREDtoEXCLUSIVE(){await this._SHAREDtoRESERVED(),await this._RESERVEDtoEXCLUSIVE()}async _SHAREDtoRESERVED(){}async _RESERVEDtoEXCLUSIVE(){}async _EXCLUSIVEtoRESERVED(){}async _EXCLUSIVEtoSHARED(){await this._EXCLUSIVEtoRESERVED(),await this._RESERVEDtoSHARED()}async _EXCLUSIVEtoNONE(){await this._EXCLUSIVEtoRESERVED(),await this._RESERVEDtoSHARED(),await this._SHAREDtoNONE()}async _RESERVEDtoSHARED(){}async _RESERVEDtoNONE(){await this._RESERVEDtoSHARED(),await this._SHAREDtoNONE()}async _SHAREDtoNONE(){}_acquireWebLock(e,t){return new Promise(async(n,r)=>{try{await navigator.locks.request(e,t,t=>{if(n(t),t)return new Promise(t=>this.#t.set(e,t))})}catch(e){r(e)}})}_releaseWebLock(e){this.#t.get(e)?.(),this.#t.delete(e)}async _pollWebLock(e){return(await navigator.locks.query()).held.find(({name:t})=>t===e)?.mode}_getTimeoutSignal(){if(this.timeoutMillis){let e=new AbortController;return setTimeout(()=>e.abort(),this.timeoutMillis),e.signal}}},s=class extends o{constructor(e){super(),this._lockName=e+`-outer`,this._reservedName=e+`-reserved`}async isSomewhereReserved(){return await this._pollWebLock(this._reservedName)===`exclusive`}async _NONEtoSHARED(){await this._acquireWebLock(this._lockName,{mode:`exclusive`,signal:this._getTimeoutSignal()})}async _SHAREDtoRESERVED(){await this._acquireWebLock(this._reservedName,{mode:`exclusive`,signal:this._getTimeoutSignal()})}async _RESERVEDtoSHARED(){this._releaseWebLock(this._reservedName)}async _SHAREDtoNONE(){this._releaseWebLock(this._lockName)}};let c=new Map;var l=class extends a{#e=null;#t=navigator.storage.getDirectory().then(e=>(this.#e=e,e));#n=new Map;get name(){return`opfs`}async close(){for(let e of this.#n.keys())await this.xClose(e)}xOpen(e,t,n,r){return this.handleAsync(async()=>{e===null&&(e=`null_${t}`),`${e}${t}${n.toString(16)}`;try{let i=new URL(e,`http://localhost/`),a=!!(n&4),[o,c]=await this.#r(i,a),l=await o.getFileHandle(c,{create:a}),u={filename:i.pathname,flags:n,fileHandle:l,accessHandle:null,locks:new s(i.pathname)};return this.#n.set(t,u),(!(n&256)||i.searchParams.has(`immutable`)||i.searchParams.has(`nolock`))&&await this.#i(u),r.setInt32(0,n,!0),0}catch(e){return console.error(e.message),14}})}xClose(e){return this.handleAsync(async()=>{let t=this.#n.get(e);if(t&&(`${t.filename}`,this.#n.delete(e),await t.accessHandle?.close(),t.flags&8)){let[e,n]=await this.#r(t.filename,!1);e.removeEntry(n)}return 0})}xRead(e,t,n){return this.handleAsync(async()=>{let r=this.#n.get(e);`${r.filename}${t.byteLength}${n}`;let i;if(r.accessHandle)i=r.accessHandle.read(t,{at:n});else{let e=(await r.fileHandle.getFile()).slice(n,n+t.byteLength),a=await e.arrayBuffer();t.set(new Uint8Array(a)),i=Math.min(t.byteLength,e.size)}return i{let n=this.#n.get(e);return`${n.filename}${t}`,await(await this.#i(n)).truncate(t),0})}xSync(e,t){return this.handleAsync(async()=>{let n=this.#n.get(e);return`${n.filename}${t}`,await n.accessHandle?.flush(),0})}xFileSize(e,t){return this.handleAsync(async()=>{let n=this.#n.get(e);`${n.filename}`;let r;return r=n.accessHandle?await n.accessHandle.getSize():(await n.fileHandle.getFile()).size,t.setBigInt64(0,BigInt(r),!0),0})}xLock(e,t){return this.handleAsync(async()=>{let n=this.#n.get(e);return`${n.filename}${t}`,await n.locks.lock(t),t===4&&await this.#i(n),0})}xUnlock(e,t){return this.handleAsync(async()=>{let n=this.#n.get(e);return`${n.filename}${t}`,t!==4&&(await n.accessHandle?.close(),n.accessHandle=null),await n.locks.unlock(t),0})}xCheckReservedLock(e,t){return this.handleAsync(async()=>{let n=this.#n.get(e);`${n.filename}`;let r=await n.locks.isSomewhereReserved();return t.setInt32(0,+!!r,!0),0})}xSectorSize(e){return 4096}xDeviceCharacteristics(e){return 2048}xAccess(e,t,n){return this.handleAsync(async()=>{`${e}${t}`;try{let[t,r]=await this.#r(e,!1);await t.getFileHandle(r),n.setInt32(0,1,!0)}catch{n.setInt32(0,0,!0)}return 0})}xDelete(e,t){return this.handleAsync(async()=>{`${e}${t}`;let[n,r]=await this.#r(e,!1);return t?await n.removeEntry(r):n.removeEntry(r),0})}async#r(e,t){let[n,r,i]=(typeof e==`string`?new URL(e,`file://localhost/`):e).pathname.match(/[/]?(.*)[/](.*)$/),a=c.get(r);if(!a){a=this.#e??await this.#t;for(let e of r.split(`/`))e&&(a=await a.getDirectoryHandle(e,{create:t}));c.set(r,a)}return[a,i]}async#i(e){return e.accessHandle||=await e.fileHandle.createSyncAccessHandle(),e.accessHandle}},u=(()=>{var e=self.location.href;return(function(t={}){var n=t,r,i;n.ready=new Promise((e,t)=>{r=e,i=t});var a=Object.assign({},n),o=`./this.program`,s=(e,t)=>{throw t},c=typeof window==`object`,l=typeof importScripts==`function`,u=``,d;(c||l)&&(l?u=self.location.href:typeof document<`u`&&document.currentScript&&(u=document.currentScript.src),e&&(u=e),u=u.indexOf(`blob:`)===0?``:u.substr(0,u.replace(/[?#].*/,``).lastIndexOf(`/`)+1),l&&(d=e=>{var t=new XMLHttpRequest;return t.open(`GET`,e,!1),t.responseType=`arraybuffer`,t.send(null),new Uint8Array(t.response)}));var f=n.print||console.log.bind(console),p=n.printErr||console.error.bind(console);Object.assign(n,a),a=null,n.thisProgram&&(o=n.thisProgram),n.quit&&(s=n.quit);var m;n.wasmBinary&&(m=n.wasmBinary);var h=n.noExitRuntime||!0;typeof WebAssembly!=`object`&&T(`no native wasm support detected`);var g,_=!1,v,y,b,x,S,C,ee,te;function ne(){var e=g.buffer;n.HEAP8=y=new Int8Array(e),n.HEAP16=x=new Int16Array(e),n.HEAPU8=b=new Uint8Array(e),n.HEAPU16=new Uint16Array(e),n.HEAP32=S=new Int32Array(e),n.HEAPU32=C=new Uint32Array(e),n.HEAPF32=ee=new Float32Array(e),n.HEAPF64=te=new Float64Array(e)}var re=[],ie=[],ae=[],oe=[],se=0;function ce(){var e=n.preRun.shift();re.unshift(e)}var w=0,le=null,ue=null;function T(e){throw n.onAbort&&n.onAbort(e),e=`Aborted(`+e+`)`,p(e),_=!0,v=1,e=new WebAssembly.RuntimeError(e+`. Build with -sASSERTIONS for more info.`),i(e),e}function de(e){return e.startsWith(`data:application/octet-stream;base64,`)}var E;if(n.locateFile){if(E=`wa-sqlite-async.wasm`,!de(E)){var fe=E;E=n.locateFile?n.locateFile(fe,u):u+fe}}else E=new URL(`/assets/wa-sqlite-async-DY3_ptqa.wasm`,``+self.location.href).href;function pe(e){if(e==E&&m)return new Uint8Array(m);if(d)return d(e);throw`both async and sync fetching of the wasm failed`}function me(e){return m||!c&&!l||typeof fetch!=`function`?Promise.resolve().then(()=>pe(e)):fetch(e,{credentials:`same-origin`}).then(t=>{if(!t.ok)throw`failed to load wasm binary file at '`+e+`'`;return t.arrayBuffer()}).catch(()=>pe(e))}function he(e,t,n){return me(e).then(e=>WebAssembly.instantiate(e,t)).then(e=>e).then(n,e=>{p(`failed to asynchronously prepare wasm: ${e}`),T(e)})}function ge(e,t){var n=E;return m||typeof WebAssembly.instantiateStreaming!=`function`||de(n)||typeof fetch!=`function`?he(n,e,t):fetch(n,{credentials:`same-origin`}).then(r=>WebAssembly.instantiateStreaming(r,e).then(t,function(r){return p(`wasm streaming compile failed: ${r}`),p(`falling back to ArrayBuffer instantiation`),he(n,e,t)}))}var D,O;function _e(e){this.name=`ExitStatus`,this.message=`Program terminated with exit(${e})`,this.status=e}var ve=e=>{for(;0>0];case`i8`:return y[e>>0];case`i16`:return x[e>>1];case`i32`:return S[e>>2];case`i64`:T(`to do getValue(i64) use WASM_BIGINT`);case`float`:return ee[e>>2];case`double`:return te[e>>3];case`*`:return C[e>>2];default:T(`invalid type for getValue: ${t}`)}}function A(e,t,n=`i8`){switch(n.endsWith(`*`)&&(n=`*`),n){case`i1`:y[e>>0]=t;break;case`i8`:y[e>>0]=t;break;case`i16`:x[e>>1]=t;break;case`i32`:S[e>>2]=t;break;case`i64`:T(`to do setValue(i64) use WASM_BIGINT`);case`float`:ee[e>>2]=t;break;case`double`:te[e>>3]=t;break;case`*`:C[e>>2]=t;break;default:T(`invalid type for setValue: ${n}`)}}var ye=typeof TextDecoder<`u`?new TextDecoder(`utf8`):void 0,j=(e,t,n)=>{var r=t+n;for(n=t;e[n]&&!(n>=r);)++n;if(16i?r+=String.fromCharCode(i):(i-=65536,r+=String.fromCharCode(55296|i>>10,56320|i&1023))}}else r+=String.fromCharCode(i)}return r},be=(e,t)=>{for(var n=0,r=e.length-1;0<=r;r--){var i=e[r];i===`.`?e.splice(r,1):i===`..`?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n;n--)e.unshift(`..`);return e},M=e=>{var t=e.charAt(0)===`/`,n=e.substr(-1)===`/`;return(e=be(e.split(`/`).filter(e=>!!e),!t).join(`/`))||t||(e=`.`),e&&n&&(e+=`/`),(t?`/`:``)+e},xe=e=>{var t=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1);return e=t[0],t=t[1],!e&&!t?`.`:(t&&=t.substr(0,t.length-1),e+t)},Se=e=>{if(e===`/`)return`/`;e=M(e),e=e.replace(/\/$/,``);var t=e.lastIndexOf(`/`);return t===-1?e:e.substr(t+1)},Ce=()=>{if(typeof crypto==`object`&&typeof crypto.getRandomValues==`function`)return e=>crypto.getRandomValues(e);T(`initRandomDevice`)},we=e=>(we=Ce())(e);function Te(){for(var e=``,t=!1,n=arguments.length-1;-1<=n&&!t;n--){if(t=0<=n?arguments[n]:`/`,typeof t!=`string`)throw TypeError(`Arguments to path.resolve must be strings`);if(!t)return``;e=t+`/`+e,t=t.charAt(0)===`/`}return e=be(e.split(`/`).filter(e=>!!e),!t).join(`/`),(t?`/`:``)+e||`.`}var Ee=[],N=e=>{for(var t=0,n=0;n=r?t++:2047>=r?t+=2:55296<=r&&57343>=r?(t+=4,++n):t+=3}return t},P=(e,t,n,r)=>{if(!(0=o){var s=e.charCodeAt(++a);o=65536+((o&1023)<<10)|s&1023}if(127>=o){if(n>=r)break;t[n++]=o}else{if(2047>=o){if(n+1>=r)break;t[n++]=192|o>>6}else{if(65535>=o){if(n+2>=r)break;t[n++]=224|o>>12}else{if(n+3>=r)break;t[n++]=240|o>>18,t[n++]=128|o>>12&63}t[n++]=128|o>>6&63}t[n++]=128|o&63}}return t[n]=0,n-i},De=[];function Oe(e,t){De[e]={input:[],Tb:[],dc:t},Ye(e,ke)}var ke={open(e){var t=De[e.node.hc];if(!t)throw new R(43);e.Ub=t,e.seekable=!1},close(e){e.Ub.dc.kc(e.Ub)},kc(e){e.Ub.dc.kc(e.Ub)},read(e,t,n,r){if(!e.Ub||!e.Ub.dc.zc)throw new R(60);for(var i=0,a=0;a=t||(t=Math.max(t,n*(1048576>n?2:1.125)>>>0),n!=0&&(t=Math.max(t,256)),n=e.Pb,e.Pb=new Uint8Array(t),0=e.node.Rb)return 0;if(e=Math.min(e.node.Rb-i,r),8t)throw new R(28);return t},wc(e,t,n){Me(e.node,t+n),e.node.Rb=Math.max(e.node.Rb,t+n)},mc(e,t,n,r,i){if((e.node.mode&61440)!=32768)throw new R(43);if(e=e.node.Pb,i&2||e.buffer!==y.buffer){if((0{var n=0;return e&&(n|=365),t&&(n|=146),n},Pe=null,Fe={},I=[],Ie=1,L=null,Le=!0,R=null,Re={};function z(e,t={}){if(e=Te(e),!e)return{path:``,node:null};if(t=Object.assign({yc:!0,uc:0},t),8!!e);for(var n=Pe,r=`/`,i=0;i>>0)%L.length}function Ve(e){var t=Be(e.parent.id,e.name);if(L[t]===e)L[t]=e.cc;else for(t=L[t];t;){if(t.cc===e){t.cc=e.cc;break}t=t.cc}}function B(e,t){var n;if(n=(n=H(e,`x`))?n:e.Eb.ec?0:2)throw new R(n,e);for(n=L[Be(e.id,t)];n;n=n.cc){var r=n.name;if(n.parent.id===e.id&&r===t)return n}return e.Eb.ec(e,t)}function He(e,t,n,r){return e=new wn(e,t,n,r),t=Be(e.parent.id,e.name),e.cc=L[t],L[t]=e}function V(e){return(e&61440)==16384}function Ue(e){var t=[`r`,`w`,`rw`][e&3];return e&512&&(t+=`w`),t}function H(e,t){if(Le)return 0;if(!t.includes(`r`)||e.mode&292){if(t.includes(`w`)&&!(e.mode&146)||t.includes(`x`)&&!(e.mode&73))return 2}else return 2;return 0}function We(e,t){try{return B(e,t),20}catch{}return H(e,`wx`)}function Ge(e,t,n){try{var r=B(e,t)}catch(e){return e.Qb}if(e=H(e,`wx`))return e;if(n){if(!V(r.mode))return 54;if(r===r.parent||ze(r)===`/`)return 10}else if(V(r.mode))return 31;return 0}function Ke(){for(var e=0;4096>=e;e++)if(!I[e])return e;throw new R(33)}function U(e){if(e=I[e],!e)throw new R(8);return e}function qe(e,t=-1){return q||(q=function(){this.jc={}},q.prototype={},Object.defineProperties(q.prototype,{object:{get(){return this.node},set(e){this.node=e}},flags:{get(){return this.jc.flags},set(e){this.jc.flags=e}},position:{get(){return this.jc.position},set(e){this.jc.position=e}}})),e=Object.assign(new q,e),t==-1&&(t=Ke()),e.Yb=t,I[t]=e}var Je={open(e){e.Ob=Fe[e.node.hc].Ob,e.Ob.open&&e.Ob.open(e)},ac(){throw new R(70)}};function Ye(e,t){Fe[e]={Ob:t}}function Xe(e,t){var n=t===`/`,r=!t;if(n&&Pe)throw new R(10);if(!n&&!r){var i=z(t,{yc:!1});if(t=i.path,i=i.node,i.bc)throw new R(10);if(!V(i.mode))throw new R(54)}t={type:e,dd:{},Bc:t,Nc:[]},e=e.Wb(t),e.Wb=t,t.root=e,n?Pe=e:i&&(i.bc=t,i.Wb&&i.Wb.Nc.push(t))}function Ze(e,t,n){var r=z(e,{parent:!0}).node;if(e=Se(e),!e||e===`.`||e===`..`)throw new R(28);var i=We(r,e);if(i)throw new R(i);if(!r.Eb.lc)throw new R(63);return r.Eb.lc(r,e,t,n)}function W(e,t){return Ze(e,(t===void 0?511:t)&1023|16384,0)}function Qe(e,t,n){n===void 0&&(n=t,t=438),Ze(e,t|8192,n)}function $e(e,t){if(!Te(e))throw new R(44);var n=z(t,{parent:!0}).node;if(!n)throw new R(44);t=Se(t);var r=We(n,t);if(r)throw new R(r);if(!n.Eb.pc)throw new R(63);n.Eb.pc(n,t,e)}function et(e){var t=z(e,{parent:!0}).node;e=Se(e);var n=B(t,e),r=Ge(t,e,!0);if(r)throw new R(r);if(!t.Eb.oc)throw new R(63);if(n.bc)throw new R(10);t.Eb.oc(t,e),Ve(n)}function tt(e){if(e=z(e).node,!e)throw new R(44);if(!e.Eb.ic)throw new R(28);return Te(ze(e.parent),e.Eb.ic(e))}function nt(e,t){if(e=z(e,{$b:!t}).node,!e)throw new R(44);if(!e.Eb.Vb)throw new R(63);return e.Eb.Vb(e)}function rt(e){return nt(e,!0)}function it(e,t){if(e=typeof e==`string`?z(e,{$b:!0}).node:e,!e.Eb.Sb)throw new R(63);e.Eb.Sb(e,{mode:t&4095|e.mode&-4096,timestamp:Date.now()})}function at(e,t){if(0>t)throw new R(28);if(e=typeof e==`string`?z(e,{$b:!0}).node:e,!e.Eb.Sb)throw new R(63);if(V(e.mode))throw new R(31);if((e.mode&61440)!=32768)throw new R(28);var n=H(e,`w`);if(n)throw new R(n);e.Eb.Sb(e,{size:t,timestamp:Date.now()})}function ot(e,t,r){if(e===``)throw new R(44);if(typeof t==`string`){var i={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[t];if(i===void 0)throw Error(`Unknown file open mode: ${t}`);t=i}if(r=t&64?(r===void 0?438:r)&4095|32768:0,typeof e==`object`)var a=e;else{e=M(e);try{a=z(e,{$b:!(t&131072)}).node}catch{}}if(i=!1,t&64)if(a){if(t&128)throw new R(20)}else a=Ze(e,r,0),i=!0;if(!a)throw new R(44);if((a.mode&61440)==8192&&(t&=-513),t&65536&&!V(a.mode))throw new R(54);if(!i&&(r=a?(a.mode&61440)==40960?32:V(a.mode)&&(Ue(t)!==`r`||t&512)?31:H(a,Ue(t)):44))throw new R(r);return t&512&&!i&&at(a,0),t&=-131713,a=qe({node:a,path:ze(a),flags:t,seekable:!0,position:0,Ob:a.Ob,Tc:[],error:!1}),a.Ob.open&&a.Ob.open(a),!n.logReadFiles||t&1||(dt||={},e in dt||(dt[e]=1)),a}function st(e,t,n){if(e.Yb===null)throw new R(8);if(!e.seekable||!e.Ob.ac)throw new R(70);if(n!=0&&n!=1&&n!=2)throw new R(28);e.position=e.Ob.ac(e,t,n),e.Tc=[]}function ct(){R||(R=function(e,t){this.name=`ErrnoError`,this.node=t,this.Rc=function(e){this.Qb=e},this.Rc(e),this.message=`FS error`},R.prototype=Error(),R.prototype.constructor=R,[44].forEach(e=>{Re[e]=new R(e),Re[e].stack=``}))}var lt;function G(e,t,n){e=M(`/dev/`+e);var r=Ne(!!t,!!n);ut||=64;var i=ut++<<8|0;Ye(i,{open(e){e.seekable=!1},close(){n&&n.buffer&&n.buffer.length&&n(10)},read(e,n,r,i){for(var a=0,o=0;o>2]=r.Jc,S[n+4>>2]=r.mode,C[n+8>>2]=r.Pc,S[n+12>>2]=r.uid,S[n+16>>2]=r.Mc,S[n+20>>2]=r.hc,O=[r.size>>>0,(D=r.size,1<=+Math.abs(D)?0>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)],S[n+24>>2]=O[0],S[n+28>>2]=O[1],S[n+32>>2]=4096,S[n+36>>2]=r.Hc,e=r.Fc.getTime(),t=r.Oc.getTime();var i=r.Ic.getTime();return O=[Math.floor(e/1e3)>>>0,(D=Math.floor(e/1e3),1<=+Math.abs(D)?0>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)],S[n+40>>2]=O[0],S[n+44>>2]=O[1],C[n+48>>2]=e%1e3*1e3,O=[Math.floor(t/1e3)>>>0,(D=Math.floor(t/1e3),1<=+Math.abs(D)?0>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)],S[n+56>>2]=O[0],S[n+60>>2]=O[1],C[n+64>>2]=t%1e3*1e3,O=[Math.floor(i/1e3)>>>0,(D=Math.floor(i/1e3),1<=+Math.abs(D)?0>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)],S[n+72>>2]=O[0],S[n+76>>2]=O[1],C[n+80>>2]=i%1e3*1e3,O=[r.Ac>>>0,(D=r.Ac,1<=+Math.abs(D)?0>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)],S[n+88>>2]=O[0],S[n+92>>2]=O[1],0}var pt=void 0;function mt(){var e=S[pt>>2];return pt+=4,e}var Y=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,ht=[0,31,60,91,121,152,182,213,244,274,305,335],gt=[0,31,59,90,120,151,181,212,243,273,304,334],_t=e=>{var t=N(e)+1,n=Dn(t);return n&&P(e,b,n,t),n},vt={},yt=()=>{if(!bt){var e={USER:`web_user`,LOGNAME:`web_user`,PATH:`/`,PWD:`/`,HOME:`/home/web_user`,LANG:(typeof navigator==`object`&&navigator.languages&&navigator.languages[0]||`C`).replace(`-`,`_`)+`.UTF-8`,_:o||`./this.program`},t;for(t in vt)vt[t]===void 0?delete e[t]:e[t]=vt[t];var n=[];for(t in e)n.push(`${t}=${e[t]}`);bt=n}return bt},bt;function xt(){}function St(){}function Ct(){}function wt(){}function Tt(){}function Et(){}function Dt(){}function Ot(){}function kt(){}function At(){}function jt(){}function Mt(){}function Nt(){}function Pt(){}function Ft(){}function It(){}function Lt(){}function Rt(){}function zt(){}function Bt(){}function Vt(){}function Ht(){}function Ut(){}function Wt(){}function Gt(){}function Kt(){}function qt(){}function Jt(){}function Yt(){}function Xt(){}function Zt(){}function Qt(){}function $t(){}function en(){}function tn(){}function nn(){}function rn(){}function an(){}function on(){}function sn(){}var cn=e=>{v=e,h||0{e instanceof _e||e==`unwind`||s(1,e)},un=e=>{try{e()}catch(e){T(e)}};function dn(e){var t={},n;for(n in e)(function(n){var r=e[n];t[n]=typeof r==`function`?function(){pn.push(n);try{return r.apply(null,arguments)}finally{_||(pn.pop()===n||T(),Z&&X===1&&pn.length===0&&(X=0,un(In),typeof Fibers<`u`&&Fibers.ed()))}}:r})(n);return t}var X=0,Z=null,fn=0,pn=[],mn={},hn={},gn=0,_n=null,vn=[];function yn(){return new Promise((e,t)=>{_n={resolve:e,reject:t}})}function bn(){var e=Dn(16396),t=e+12;C[e>>2]=t,C[e+4>>2]=t+16384,t=pn[0];var n=mn[t];return n===void 0&&(n=gn++,mn[t]=n,hn[n]=t),S[e+8>>2]=n,e}function xn(e){if(!_){if(X===0){var t=!1,n=!1;e((e=0)=>{if(!_&&(fn=e,t=!0,n)){X=2,un(()=>Ln(Z)),typeof Browser<`u`&&Browser.sc.Lc&&Browser.sc.resume(),e=!1;try{var r=(0,$[hn[S[Z+8>>2]]])()}catch(t){r=t,e=!0}var i=!1;if(!Z){var a=_n;a&&(_n=null,(e?a.reject:a.resolve)(r),i=!0)}if(e&&!i)throw r}}),n=!0,t||(X=1,Z=bn(),typeof Browser<`u`&&Browser.sc.Lc&&Browser.sc.pause(),un(()=>Fn(Z)))}else X===2?(X=0,un(Rn),On(Z),Z=null,vn.forEach(e=>{if(!_)try{if(e(),!(h||0{e().then(t)})}var Cn={},Q=(e,t,r,i,a)=>{function o(e){return--se,l!==0&&Nn(l),t===`string`?e?j(b,e):``:t===`boolean`?!!e:e}var s={string:e=>{var t=0;if(e!=null&&e!==0){t=N(e)+1;var n=Pn(t);P(e,b,n,t),t=n}return t},array:e=>{var t=Pn(e.length);return y.set(e,t),t}};e=n[`_`+e];var c=[],l=0;if(i)for(var u=0;u0,write:(e,t,n,r)=>r}),Qe(`/dev/null`,259),Oe(1280,Ae),Oe(1536,je),Qe(`/dev/tty`,1280),Qe(`/dev/tty1`,1536);var e=new Uint8Array(1024),t=0,n=()=>(t===0&&(t=we(e).byteLength),e[--t]);G(`random`,n),G(`urandom`,n),W(`/dev/shm`),W(`/dev/shm/tmp`)})(),(function(){W(`/proc`);var e=W(`/proc/self`);W(`/proc/self/fd`),Xe({Wb(){var t=He(e,`fd`,16895,73);return t.Eb={ec(e,t){var n=U(+t);return e={parent:null,Wb:{Bc:`fake`},Eb:{ic:()=>n.path}},e.parent=e}},t}},`/proc/self/fd`)})(),(function(){let e=new Map;n.setAuthorizer=function(t,n,r){return n?e.set(t,{f:n,vc:r}):e.delete(t),Q(`set_authorizer`,`number`,[`number`],[t])},xt=function(t,n,r,i,a,o){if(e.has(t)){let{f:s,vc:c}=e.get(t);return s(c,n,r?r?j(b,r):``:null,i?i?j(b,i):``:null,a?a?j(b,a):``:null,o?o?j(b,o):``:null)}return 0}})(),(function(){function e(e,t){let n=[];for(let r=0;e[t+r]!=0;++r){if(1e3e?j(b,e):``),a.module.xCreate(n,a.Zb,c,l,e(`Int32`,u))},Mt=function(n,a,s,c,l,u){if(a=r.get(a),i.set(l,a),t){o.delete(l);for(let e of o)i.delete(e)}return c=Array.from(new Uint32Array(b.buffer,c,s)).map(e=>e?j(b,e):``),a.module.xConnect(n,a.Zb,c,l,e(`Int32`,u))},Ot=function(e,t){var n=i.get(e),r=c.get(`sqlite3_index_info`).fc;let a={};a.nConstraint=k(t+r[0],`i32`),a.aConstraint=[];for(var o=k(t+r[1],`*`),s=c.get(`sqlite3_index_constraint`).size,l=0;l>=2,C[e]+C[e+1]*2**32}let r=typeof Cn==`object`,i=new Map,a=new Map;n.registerVFS=function(e,t){if(Q(`sqlite3_vfs_find`,`number`,[`string`],[e.name]))throw Error(`VFS '${e.name}' already registered`);r&&(e.handleAsync=Sn);var a=e.cd??64;let o=n._malloc(4);return t=Q(`register_vfs`,`number`,[`string`,`number`,`number`,`number`],[e.name,a,+!!t,o]),t||(a=k(o,`*`),i.set(a,e)),n._free(o),t};let o=r?new Set:null;Jt=function(e){let t=a.get(e);return r?o.add(e):a.delete(e),t.xClose(e)},tn=function(e,n,r,i){return a.get(e).xRead(e,b.subarray(n,n+r),t(i))},sn=function(e,n,r,i){return a.get(e).xWrite(e,b.subarray(n,n+r),t(i))},an=function(e,n){return a.get(e).xTruncate(e,t(n))},rn=function(e,t){return a.get(e).xSync(e,t)},Qt=function(t,n){let r=a.get(t);return n=e(`BigInt64`,n),r.xFileSize(t,n)},$t=function(e,t){return a.get(e).xLock(e,t)},on=function(e,t){return a.get(e).xUnlock(e,t)},qt=function(t,n){let r=a.get(t);return n=e(`Int32`,n),r.xCheckReservedLock(t,n)},Zt=function(e,t,n){let r=a.get(e);return n=new DataView(b.buffer,n),r.xFileControl(e,t,n)},nn=function(e){return a.get(e).xSectorSize(e)},Xt=function(e){return a.get(e).xDeviceCharacteristics(e)},en=function(t,n,s,c,l){if(t=i.get(t),a.set(s,t),r){o.delete(s);for(var u of o)a.delete(u)}if(u=null,c&64){u=1;let e=[];for(;u;){let t=b[n++];if(t)e.push(t);else switch(b[n]||(u=null),u){case 1:e.push(63),u=2;break;case 2:e.push(61),u=3;break;case 3:e.push(38),u=2}}u=new TextDecoder().decode(new Uint8Array(e))}else n&&(u=n?j(b,n):``);return l=e(`Int32`,l),t.xOpen(u,s,c,l)},Yt=function(e,t,n){return i.get(e).xDelete(t?j(b,t):``,n)},Kt=function(t,n,r,a){return t=i.get(t),a=e(`Int32`,a),t.xAccess(n?j(b,n):``,r,a)}})();var Tn={a:(e,t,n,r)=>{T(`Assertion failed: ${e?j(b,e):``}, at: `+[t?t?j(b,t):``:`unknown filename`,n,r?r?j(b,r):``:`unknown function`])},K:function(e,t){try{return e=e?j(b,e):``,it(e,t),0}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return-e.Qb}},M:function(e,t,n){try{if(t=t?j(b,t):``,t=J(e,t),n&-8)return-28;var r=z(t,{$b:!0}).node;return r?(e=``,n&4&&(e+=`r`),n&2&&(e+=`w`),n&1&&(e+=`x`),e&&H(r,e)?-2:0):-44}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return-e.Qb}},L:function(e,t){try{return it(U(e).node,t),0}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return-e.Qb}},J:function(e){try{var t=U(e).node,n=typeof t==`string`?z(t,{$b:!0}).node:t;if(!n.Eb.Sb)throw new R(63);return n.Eb.Sb(n,{timestamp:Date.now()}),0}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return-e.Qb}},b:function(e,t,n){pt=n;try{var r=U(e);switch(t){case 0:var i=mt();if(0>i)return-28;for(;I[i];)i++;return qe(r,i).Yb;case 1:case 2:return 0;case 3:return r.flags;case 4:return i=mt(),r.flags|=i,0;case 5:return i=mt(),x[i+0>>1]=2,0;case 6:case 7:return 0;case 16:case 8:return-28;case 9:return S[En()>>2]=28,-1;default:return-28}}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return-e.Qb}},I:function(e,t){try{return ft(nt,U(e).path,t)}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return-e.Qb}},n:function(e,t,n){t=Y(t,n);try{if(isNaN(t))return 61;var r=U(e);if(!(r.flags&2097155))throw new R(28);return at(r.node,t),0}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return-e.Qb}},C:function(e,t){try{if(t===0)return-28;var n=N(`/`)+1;return t=r)return-28;var i=tt(t),a=Math.min(r,N(i)),o=y[n+a];return P(i,b,n,r+1),y[n+a]=o,a}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return-e.Qb}},u:function(e){try{return e=e?j(b,e):``,et(e),0}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return-e.Qb}},G:function(e,t){try{return e=e?j(b,e):``,ft(nt,e,t)}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return-e.Qb}},r:function(e,t,n){try{if(t=t?j(b,t):``,t=J(e,t),n===0){e=t;var r=z(e,{parent:!0}).node;if(!r)throw new R(44);var i=Se(e),a=B(r,i),o=Ge(r,i,!1);if(o)throw new R(o);if(!r.Eb.qc)throw new R(63);if(a.bc)throw new R(10);r.Eb.qc(r,i),Ve(a)}else n===512?et(t):T(`Invalid flags passed to unlinkat`);return 0}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return-e.Qb}},q:function(e,t,n){try{if(t=t?j(b,t):``,t=J(e,t,!0),n){var r=C[n>>2]+4294967296*S[n+4>>2],i=S[n+8>>2];a=1e3*r+i/1e6,n+=16,r=C[n>>2]+4294967296*S[n+4>>2],i=S[n+8>>2],o=1e3*r+i/1e6}else var a=Date.now(),o=a;e=a;var s=z(t,{$b:!0}).node;return s.Eb.Sb(s,{timestamp:Math.max(e,o)}),0}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return-e.Qb}},k:function(e,t,n){e=new Date(1e3*Y(e,t)),S[n>>2]=e.getSeconds(),S[n+4>>2]=e.getMinutes(),S[n+8>>2]=e.getHours(),S[n+12>>2]=e.getDate(),S[n+16>>2]=e.getMonth(),S[n+20>>2]=e.getFullYear()-1900,S[n+24>>2]=e.getDay(),t=e.getFullYear(),S[n+28>>2]=(t%4!=0||t%100==0&&t%400!=0?gt:ht)[e.getMonth()]+e.getDate()-1|0,S[n+36>>2]=-(60*e.getTimezoneOffset()),t=new Date(e.getFullYear(),6,1).getTimezoneOffset();var r=new Date(e.getFullYear(),0,1).getTimezoneOffset();S[n+32>>2]=(t!=r&&e.getTimezoneOffset()==Math.min(r,t))|0},i:function(e,t,n,r,i,a,o,s){i=Y(i,a);try{if(isNaN(i))return 61;var c=U(r);if(t&2&&!(n&2)&&(c.flags&2097155)!=2||(c.flags&2097155)==1)throw new R(2);if(!c.Ob.mc)throw new R(43);var l=c.Ob.mc(c,e,i,t,n),u=l.Qc;return S[o>>2]=l.Ec,C[s>>2]=u,0}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return-e.Qb}},j:function(e,t,n,r,i,a,o){a=Y(a,o);try{if(isNaN(a))return 61;var s=U(i);if(n&2){if((s.node.mode&61440)!=32768)throw new R(43);r&2||s.Ob.nc&&s.Ob.nc(s,b.slice(e,e+t),a,t,r)}}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return-e.Qb}},s:(e,t,n)=>{function r(e){return(e=e.toTimeString().match(/\(([A-Za-z ]+)\)$/))?e[1]:`GMT`}var i=new Date().getFullYear(),a=new Date(i,0,1),o=new Date(i,6,1);i=a.getTimezoneOffset();var s=o.getTimezoneOffset();C[e>>2]=60*Math.max(i,s),S[t>>2]=Number(i!=s),e=r(a),t=r(o),e=_t(e),t=_t(t),s>2]=e,C[n+4>>2]=t):(C[n>>2]=t,C[n+4>>2]=e)},e:()=>Date.now(),d:()=>performance.now(),o:e=>{var t=b.length;if(e>>>=0,2147483648=n;n*=2){var r=t*(1+.2/n);r=Math.min(r,e+100663296);var i=Math;r=Math.max(e,r);a:{i=(i.min.call(i,2147483648,r+(65536-r%65536)%65536)-g.buffer.byteLength+65535)/65536;try{g.grow(i),ne();var a=1;break a}catch{}a=void 0}if(a)return!0}return!1},A:(e,t)=>{var n=0;return yt().forEach((r,i)=>{var a=t+n;for(i=C[e+4*i>>2]=a,a=0;a>0]=r.charCodeAt(a);y[i>>0]=0,n+=r.length+1}),0},B:(e,t)=>{var n=yt();C[e>>2]=n.length;var r=0;return n.forEach(e=>r+=e.length+1),C[t>>2]=r,0},f:function(e){try{var t=U(e);if(t.Yb===null)throw new R(8);t.rc&&=null;try{t.Ob.close&&t.Ob.close(t)}catch(e){throw e}finally{I[t.Yb]=null}return t.Yb=null,0}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return e.Qb}},p:function(e,t){try{var n=U(e);return y[t>>0]=n.Ub?2:V(n.mode)?3:(n.mode&61440)==40960?7:4,x[t+2>>1]=0,O=[0,(D=0,1<=+Math.abs(D)?0>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)],S[t+8>>2]=O[0],S[t+12>>2]=O[1],O=[0,(D=0,1<=+Math.abs(D)?0>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)],S[t+16>>2]=O[0],S[t+20>>2]=O[1],0}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return e.Qb}},x:function(e,t,n,r){try{a:{var i=U(e);e=t;for(var a,o=t=0;o>2],c=C[e+4>>2];e+=8;var l=i,u=s,d=c,f=a,p=y;if(0>d||0>f)throw new R(28);if(l.Yb===null||(l.flags&2097155)==1)throw new R(8);if(V(l.node.mode))throw new R(31);if(!l.Ob.read)throw new R(28);var m=f!==void 0;if(!m)f=l.position;else if(!l.seekable)throw new R(70);var h=l.Ob.read(l,p,u,d,f);m||(l.position+=h);var g=h;if(0>g){var _=-1;break a}if(t+=g,g>2]=_,0}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return e.Qb}},m:function(e,t,n,r,i){t=Y(t,n);try{if(isNaN(t))return 61;var a=U(e);return st(a,t,r),O=[a.position>>>0,(D=a.position,1<=+Math.abs(D)?0>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)],S[i>>2]=O[0],S[i+4>>2]=O[1],a.rc&&t===0&&r===0&&(a.rc=null),0}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return e.Qb}},D:function(e){try{var t=U(e);return xn(e=>{var n=t.node.Wb;n.type.Sc?n.type.Sc(n,!1,t=>{e(t?29:0)}):e(0)})}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return e.Qb}},t:function(e,t,n,r){try{a:{var i=U(e);e=t;for(var a,o=t=0;o>2],c=C[e+4>>2];e+=8;var l=i,u=s,d=c,f=a,p=y;if(0>d||0>f)throw new R(28);if(l.Yb===null||!(l.flags&2097155))throw new R(8);if(V(l.node.mode))throw new R(31);if(!l.Ob.write)throw new R(28);l.seekable&&l.flags&1024&&st(l,0,2);var m=f!==void 0;if(!m)f=l.position;else if(!l.seekable)throw new R(70);var h=l.Ob.write(l,p,u,d,f,void 0);m||(l.position+=h);var g=h;if(0>g){var _=-1;break a}t+=g,a!==void 0&&(a+=g)}_=t}return C[r>>2]=_,0}catch(e){if(K===void 0||e.name!==`ErrnoError`)throw e;return e.Qb}},sa:xt,O:St,ha:Ct,ca:wt,Z:Tt,H:Et,la:Dt,w:Ot,g:kt,oa:At,ja:jt,ea:Mt,fa:Nt,h:Pt,l:Ft,pa:It,ra:Lt,qa:Rt,da:zt,ga:Bt,ia:Vt,na:Ht,c:Ut,ka:Wt,ma:Gt,aa:Kt,V:qt,$:Jt,ba:Yt,S:Xt,U:Zt,Y:Qt,X:$t,R:en,Q:tn,T:nn,_:rn,N:an,W:on,P:sn},$=function(){function e(e){if(e=e.exports,$=e=dn(e),g=$.ta,ne(),ie.unshift($.ua),w--,n.monitorRunDependencies&&n.monitorRunDependencies(w),w==0&&(le!==null&&(clearInterval(le),le=null),ue)){var t=ue;ue=null,t()}return e}var t={a:Tn};if(w++,n.monitorRunDependencies&&n.monitorRunDependencies(w),n.instantiateWasm)try{return n.instantiateWasm(t,e)}catch(e){p(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return ge(t,function(t){e(t.instance)}).catch(i),{}}();n._sqlite3_vfs_find=e=>(n._sqlite3_vfs_find=$.va)(e),n._sqlite3_malloc=e=>(n._sqlite3_malloc=$.wa)(e),n._sqlite3_free=e=>(n._sqlite3_free=$.xa)(e),n._sqlite3_prepare_v2=(e,t,r,i,a)=>(n._sqlite3_prepare_v2=$.ya)(e,t,r,i,a),n._sqlite3_step=e=>(n._sqlite3_step=$.za)(e),n._sqlite3_column_int64=(e,t)=>(n._sqlite3_column_int64=$.Aa)(e,t),n._sqlite3_column_int=(e,t)=>(n._sqlite3_column_int=$.Ba)(e,t),n._sqlite3_finalize=e=>(n._sqlite3_finalize=$.Ca)(e),n._sqlite3_reset=e=>(n._sqlite3_reset=$.Da)(e),n._sqlite3_clear_bindings=e=>(n._sqlite3_clear_bindings=$.Ea)(e),n._sqlite3_value_blob=e=>(n._sqlite3_value_blob=$.Fa)(e),n._sqlite3_value_text=e=>(n._sqlite3_value_text=$.Ga)(e),n._sqlite3_value_bytes=e=>(n._sqlite3_value_bytes=$.Ha)(e),n._sqlite3_value_double=e=>(n._sqlite3_value_double=$.Ia)(e),n._sqlite3_value_int=e=>(n._sqlite3_value_int=$.Ja)(e),n._sqlite3_value_int64=e=>(n._sqlite3_value_int64=$.Ka)(e),n._sqlite3_value_type=e=>(n._sqlite3_value_type=$.La)(e),n._sqlite3_result_blob=(e,t,r,i)=>(n._sqlite3_result_blob=$.Ma)(e,t,r,i),n._sqlite3_result_double=(e,t)=>(n._sqlite3_result_double=$.Na)(e,t),n._sqlite3_result_error=(e,t,r)=>(n._sqlite3_result_error=$.Oa)(e,t,r),n._sqlite3_result_int=(e,t)=>(n._sqlite3_result_int=$.Pa)(e,t),n._sqlite3_result_int64=(e,t,r)=>(n._sqlite3_result_int64=$.Qa)(e,t,r),n._sqlite3_result_null=e=>(n._sqlite3_result_null=$.Ra)(e),n._sqlite3_result_text=(e,t,r,i)=>(n._sqlite3_result_text=$.Sa)(e,t,r,i),n._sqlite3_column_count=e=>(n._sqlite3_column_count=$.Ta)(e),n._sqlite3_data_count=e=>(n._sqlite3_data_count=$.Ua)(e),n._sqlite3_column_blob=(e,t)=>(n._sqlite3_column_blob=$.Va)(e,t),n._sqlite3_column_bytes=(e,t)=>(n._sqlite3_column_bytes=$.Wa)(e,t),n._sqlite3_column_double=(e,t)=>(n._sqlite3_column_double=$.Xa)(e,t),n._sqlite3_column_text=(e,t)=>(n._sqlite3_column_text=$.Ya)(e,t),n._sqlite3_column_type=(e,t)=>(n._sqlite3_column_type=$.Za)(e,t),n._sqlite3_column_name=(e,t)=>(n._sqlite3_column_name=$._a)(e,t),n._sqlite3_bind_blob=(e,t,r,i,a)=>(n._sqlite3_bind_blob=$.$a)(e,t,r,i,a),n._sqlite3_bind_double=(e,t,r)=>(n._sqlite3_bind_double=$.ab)(e,t,r),n._sqlite3_bind_int=(e,t,r)=>(n._sqlite3_bind_int=$.bb)(e,t,r),n._sqlite3_bind_int64=(e,t,r,i)=>(n._sqlite3_bind_int64=$.cb)(e,t,r,i),n._sqlite3_bind_null=(e,t)=>(n._sqlite3_bind_null=$.db)(e,t),n._sqlite3_bind_text=(e,t,r,i,a)=>(n._sqlite3_bind_text=$.eb)(e,t,r,i,a),n._sqlite3_bind_parameter_count=e=>(n._sqlite3_bind_parameter_count=$.fb)(e),n._sqlite3_bind_parameter_name=(e,t)=>(n._sqlite3_bind_parameter_name=$.gb)(e,t),n._sqlite3_sql=e=>(n._sqlite3_sql=$.hb)(e),n._sqlite3_exec=(e,t,r,i,a)=>(n._sqlite3_exec=$.ib)(e,t,r,i,a),n._sqlite3_errmsg=e=>(n._sqlite3_errmsg=$.jb)(e),n._sqlite3_declare_vtab=(e,t)=>(n._sqlite3_declare_vtab=$.kb)(e,t),n._sqlite3_libversion=()=>(n._sqlite3_libversion=$.lb)(),n._sqlite3_libversion_number=()=>(n._sqlite3_libversion_number=$.mb)(),n._sqlite3_changes=e=>(n._sqlite3_changes=$.nb)(e),n._sqlite3_close=e=>(n._sqlite3_close=$.ob)(e),n._sqlite3_limit=(e,t,r)=>(n._sqlite3_limit=$.pb)(e,t,r),n._sqlite3_open_v2=(e,t,r,i)=>(n._sqlite3_open_v2=$.qb)(e,t,r,i),n._sqlite3_get_autocommit=e=>(n._sqlite3_get_autocommit=$.rb)(e);var En=()=>(En=$.sb)(),Dn=n._malloc=e=>(Dn=n._malloc=$.tb)(e),On=n._free=e=>(On=n._free=$.ub)(e);n._RegisterExtensionFunctions=e=>(n._RegisterExtensionFunctions=$.vb)(e),n._set_authorizer=e=>(n._set_authorizer=$.wb)(e),n._create_function=(e,t,r,i,a,o)=>(n._create_function=$.xb)(e,t,r,i,a,o),n._update_hook=(e,t)=>(n._update_hook=$.yb)(e,t),n._create_module=(e,t,r,i)=>(n._create_module=$.zb)(e,t,r,i),n._progress_handler=(e,t)=>(n._progress_handler=$.Ab)(e,t),n._register_vfs=(e,t,r,i)=>(n._register_vfs=$.Bb)(e,t,r,i),n._getSqliteFree=()=>(n._getSqliteFree=$.Cb)();var kn=n._main=(e,t)=>(kn=n._main=$.Db)(e,t),An=(e,t)=>(An=$.Fb)(e,t),jn=()=>(jn=$.Gb)(),Mn=()=>(Mn=$.Hb)(),Nn=e=>(Nn=$.Ib)(e),Pn=e=>(Pn=$.Jb)(e),Fn=e=>(Fn=$.Kb)(e),In=()=>(In=$.Lb)(),Ln=e=>(Ln=$.Mb)(e),Rn=()=>(Rn=$.Nb)();n.getTempRet0=jn,n.ccall=Q,n.cwrap=(e,t,r,i)=>{var a=!r||r.every(e=>e===`number`||e===`boolean`);return t!==`string`&&a&&!i?n[`_`+e]:function(){return Q(e,t,r,arguments,i)}},n.setValue=A,n.getValue=k,n.UTF8ToString=(e,t)=>e?j(b,e,t):``,n.stringToUTF8=(e,t,n)=>P(e,b,t,n),n.lengthBytesUTF8=N;var zn;ue=function e(){zn||Bn(),zn||(ue=e)};function Bn(){function e(){if(!zn&&(zn=!0,n.calledRun=!0,!_)){if(n.noFSInit||lt||(lt=!0,ct(),n.stdin=n.stdin,n.stdout=n.stdout,n.stderr=n.stderr,n.stdin?G(`stdin`,n.stdin):$e(`/dev/tty`,`/dev/stdin`),n.stdout?G(`stdout`,null,n.stdout):$e(`/dev/tty`,`/dev/stdout`),n.stderr?G(`stderr`,null,n.stderr):$e(`/dev/tty1`,`/dev/stderr`),ot(`/dev/stdin`,0),ot(`/dev/stdout`,1),ot(`/dev/stderr`,1)),Le=!1,ve(ie),ve(ae),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),Vn){var e=kn;try{var t=e(0,0);v=t,cn(t)}catch(e){ln(e)}}if(n.postRun)for(typeof n.postRun==`function`&&(n.postRun=[n.postRun]);n.postRun.length;)e=n.postRun.shift(),oe.unshift(e);ve(oe)}}if(!(0e.trim()).filter(e=>e.length>0);for(let t of e)await d.exec(f,t+`;`)}self.onmessage=async e=>{let{type:t,id:n,sql:r,params:i}=e.data;try{switch(t){case`init`:await h(),await g(),self.postMessage({type:`result`,id:n,ok:!0,data:null});break;case`execute`:{if(!d||f===null)throw Error(`БД не инициализирована`);let e=await d.execWithParams(f,r,i);self.postMessage({type:`result`,id:n,ok:!0,data:e.rows});break}case`executeVoid`:if(!d||f===null)throw Error(`БД не инициализирована`);await d.run(f,r,i),self.postMessage({type:`result`,id:n,ok:!0,data:null});break;case`closeDb`:d&&f!==null&&(await d.close(f),f=null),p&&=(await p.close(),null),m=!1,self.postMessage({type:`result`,id:n,ok:!0,data:null});break;case`getFile`:{let e=await(await(await(await navigator.storage.getDirectory()).getFileHandle(`japanese_app.db`)).getFile()).arrayBuffer();self.postMessage({type:`result`,id:n,ok:!0,data:e},{transfer:[e]});break}case`replaceFile`:{d&&f!==null&&(await d.close(f),f=null),p&&=(await p.close(),null),m=!1;let e=await(await(await navigator.storage.getDirectory()).getFileHandle(`japanese_app.db`,{create:!0})).createSyncAccessHandle();try{let t=new Uint8Array(i);e.truncate(0),e.write(t,{at:0}),e.flush()}finally{e.close()}await h(),self.postMessage({type:`result`,id:n,ok:!0,data:null});break}default:throw Error(`Неизвестный тип сообщения: ${t}`)}}catch(e){self.postMessage({type:`result`,id:n,ok:!1,error:e.message})}}})(); \ No newline at end of file diff --git a/jwl/assets/index-CzXGdRG9.js b/jwl/assets/index-CzXGdRG9.js deleted file mode 100644 index cc3d60b..0000000 --- a/jwl/assets/index-CzXGdRG9.js +++ /dev/null @@ -1,143 +0,0 @@ -(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=null,t=null,n=0,r=new Map;function i(t,i){return new Promise((a,o)=>{if(!e){o(Error(`Worker не создан`));return}let s=++n;r.set(s,{resolve:a,reject:o}),e.postMessage({type:t,id:s,...i})})}function a(){return t||(t=new Promise((t,i)=>{e=new Worker(new URL(`/assets/db-worker-DEWOyJFk.js`,``+import.meta.url),{type:`module`}),e.onmessage=e=>{let t=e.data;if(t.type!==`ready`&&t.type===`result`){let e=r.get(t.id);if(!e)return;r.delete(t.id),t.ok?e.resolve(t.data):(console.log(t),e.reject(Error(t.error||`Неизвестная ошибка Worker`)))}},e.onerror=e=>{console.error(`[SQLite Worker] Ошибка:`,e),i(Error(`Ошибка Worker`))};let a=++n;r.set(a,{resolve:t,reject:i}),e.postMessage({type:`init`,id:a})}),t)}async function o(){await a(),console.log(`[SQLite] База данных инициализирована.`)}async function s(e,t){return await i(`execute`,{sql:e,params:t})}async function c(e,t){await i(`executeVoid`,{sql:e,params:t})}async function l(){return await i(`getFile`)}async function u(){e&&(await i(`closeDb`),e.terminate(),e=null,t=null)}async function ee(e){await te(`replaceFile`,e)}async function te(t,i){return new Promise((a,o)=>{if(!e){o(Error(`Worker не создан`));return}let s=++n;r.set(s,{resolve:a,reject:o}),e.postMessage({type:t,id:s,params:i},[i])})}var d=d===void 0?{}:d,f={},p;for(p in d)d.hasOwnProperty(p)&&(f[p]=d[p]);var m=d.printErr||console.warn.bind(console);for(p in f)f.hasOwnProperty(p)&&(d[p]=f[p]);var h=(e,t)=>{throw t};f=null,d.arguments&&d.arguments,d.thisProgram&&(thisProgram=d.thisProgram),d.quit&&(h=d.quit),typeof WebAssembly!=`object`&&w(`no native wasm support detected`);var g,_=!1,v,ne;function y(){var e=g.buffer;d.HEAP8=new Int8Array(e),d.HEAPU8=ne=new Uint8Array(e)}var b=[],x=[],re=[];function ie(){if(d.preRun)for(typeof d.preRun==`function`&&(d.preRun=[d.preRun]);d.preRun.length;)se(d.preRun.shift());E(b)}function ae(){E(x)}function oe(){if(d.postRun)for(typeof d.postRun==`function`&&(d.postRun=[d.postRun]);d.postRun.length;)le(d.postRun.shift());E(re)}function se(e){b.unshift(e)}function ce(e){x.unshift(e)}function le(e){re.unshift(e)}var S=0,C=null;function ue(e){var t;S++,(t=d.monitorRunDependencies)==null||t.call(d,S)}function de(e){var t;if(S--,(t=d.monitorRunDependencies)==null||t.call(d,S),S==0&&C){var n=C;C=null,n()}}function w(e){var t;throw(t=d.onAbort)==null||t.call(d,e),e=`Aborted(`+e+`)`,m(e),_=!0,e+=`. Build with -sASSERTIONS for more info.`,new WebAssembly.RuntimeError(e)}function fe(){return{a:Te}}function pe(e){return fetch(e,{credentials:`same-origin`}).then(function(t){if(!t.ok)throw`failed to load wasm binary file at '`+e+`'`;return t.arrayBuffer()})}function me(e){var t=fe();function n(e,t){return N=e.exports,g=N.f,y(),ce(N.g),de(`wasm-instantiate`),N}ue(`wasm-instantiate`);function r(e){n(e.instance)}function i(n){return pe(e).then(function(e){return WebAssembly.instantiate(e,t)}).then(n,function(e){m(`failed to asynchronously prepare wasm: `+e),w(e)})}function a(){return e&&e.byteLength>0?WebAssembly.instantiate(e,t).then(r,function(e){m(`wasm compile failed: `+e)}):typeof WebAssembly.instantiateStreaming==`function`&&typeof e==`string`&&typeof fetch==`function`?fetch(e,{credentials:`same-origin`}).then(function(e){return WebAssembly.instantiateStreaming(e,t).then(r,function(e){return m(`wasm streaming compile failed: `+e),m(`falling back to ArrayBuffer instantiation`),i(r)})}):i(r)}if(d.instantiateWasm)try{return d.instantiateWasm(t,n)}catch(e){return m(`Module.instantiateWasm callback failed with error: `+e),!1}return a(),{}}var T=class{constructor(e){this.name=`ExitStatus`,this.message=`Program terminated with exit(${e})`,this.status=e}},E=e=>{for(;e.length>0;)e.shift()(d)},D=d.noExitRuntime||!0,he=()=>w(``),O=0,ge=()=>{D=!1,O=0},k={},A=e=>{if(e instanceof T||e==`unwind`)return v;h(1,e)},j=()=>D||O>0,M=e=>{var t;v=e,j()||((t=d.onExit)==null||t.call(d,e),_=!0),h(e,new T(e))},_e=(e,t)=>{v=e,M(e)},ve=()=>{if(!j())try{_e(v)}catch(e){A(e)}},ye=e=>{if(!_)try{e(),ve()}catch(e){A(e)}},be=()=>performance.now(),xe=(e,t)=>(k[e]&&(clearTimeout(k[e].id),delete k[e]),t&&(k[e]={id:setTimeout(()=>{delete k[e],ye(()=>ze(e,be()))},t),timeout_ms:t}),0),Se=()=>2147483648,Ce=(e,t)=>Math.ceil(e/t)*t,we=e=>{var t=(e-g.buffer.byteLength+65535)/65536|0;try{return g.grow(t),y(),1}catch{}},Te={c:he,b:ge,d:xe,e:e=>{var t=ne.length;e>>>=0;var n=Se();if(e>n)return!1;for(var r=1;r<=4;r*=2){var i=t*(1+.2/r);if(i=Math.min(i,e+100663296),we(Math.min(n,Ce(Math.max(e,i),65536))))return!0}return!1},a:M},N,Ee=d._ZSTD_isError=e=>(Ee=d._ZSTD_isError=N.h)(e),De=d._ZSTD_compressBound=e=>(De=d._ZSTD_compressBound=N.i)(e),Oe=d._ZSTD_createCCtx=()=>(Oe=d._ZSTD_createCCtx=N.j)(),ke=d._ZSTD_freeCCtx=e=>(ke=d._ZSTD_freeCCtx=N.k)(e),Ae=d._ZSTD_compress_usingDict=(e,t,n,r,i,a,o,s)=>(Ae=d._ZSTD_compress_usingDict=N.l)(e,t,n,r,i,a,o,s),je=d._ZSTD_compress=(e,t,n,r,i)=>(je=d._ZSTD_compress=N.m)(e,t,n,r,i),Me=d._ZSTD_createDCtx=()=>(Me=d._ZSTD_createDCtx=N.n)(),Ne=d._ZSTD_freeDCtx=e=>(Ne=d._ZSTD_freeDCtx=N.o)(e),Pe=d._ZSTD_getFrameContentSize=(e,t)=>(Pe=d._ZSTD_getFrameContentSize=N.p)(e,t),Fe=d._ZSTD_decompress_usingDict=(e,t,n,r,i,a,o)=>(Fe=d._ZSTD_decompress_usingDict=N.q)(e,t,n,r,i,a,o),Ie=d._ZSTD_decompress=(e,t,n,r)=>(Ie=d._ZSTD_decompress=N.r)(e,t,n,r),Le=d._malloc=e=>(Le=d._malloc=N.s)(e),Re=d._free=e=>(Re=d._free=N.t)(e),ze=(e,t)=>(ze=N.v)(e,t),P;C=function e(){P||Be(),P||(C=e)};function Be(){if(S>0||(ie(),S>0))return;function e(){var e;P||(P=!0,d.calledRun=!0,!_&&(ae(),(e=d.onRuntimeInitialized)==null||e.call(d),oe()))}d.setStatus?(d.setStatus(`Running...`),setTimeout(()=>{setTimeout(()=>d.setStatus(``),1),e()},1)):e()}if(d.run=Be,d.preInit)for(typeof d.preInit==`function`&&(d.preInit=[d.preInit]);d.preInit.length>0;)d.preInit.pop()();d.init=me;var Ve=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},He=new Promise(e=>{d.onRuntimeInitialized=e}),Ue=()=>Ve(void 0,void 0,void 0,function*(){yield He}),F=e=>{let t=d._ZSTD_isError;return t(e)},We=(e,t)=>{let n=d._ZSTD_getFrameContentSize;return n(e,t)},Ge=(e,t={defaultHeapSize:1024*1024})=>{let n=d._malloc,r=n(e.byteLength);d.HEAP8.set(e,r);let i=We(r,e.byteLength),a=i===-1?t.defaultHeapSize:i,o=d._free,s=n(a);try{let t=d._ZSTD_decompress,n=t(s,a,r,e.byteLength);if(F(n))throw Error(`Failed to compress with code ${n}`);let i=new Uint8Array(d.HEAPU8.buffer,s,n).slice();return o(s,a),o(r,e.byteLength),i}catch(t){throw o(s,a),o(r,e.byteLength),t}},Ke=e=>{let t=d._ZSTD_compressBound;return t(e)},qe=(e,t)=>{let n=Ke(e.byteLength),r=d._malloc,i=r(n),a=r(e.byteLength);d.HEAP8.set(e,a);let o=d._free;try{let r=d._ZSTD_compress,s=r(i,n,a,e.byteLength,t??3);if(F(s))throw Error(`Failed to compress with code ${s}`);let c=new Uint8Array(d.HEAPU8.buffer,i,s).slice();return o(i,n),o(a,e.byteLength),c}catch(t){throw o(i,n),o(a,e.byteLength),t}},Je=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},I=e=>Je(void 0,void 0,void 0,function*(){let t=new URL(`/assets/zstd-CV7N7xSg.wasm`,``+import.meta.url).href;d.init(e??t),yield Ue()});async function Ye(e,t,n,r){try{let i=await r(),a=new Uint8Array(i);await n(),await I();let o=qe(a),s=new FormData,c=new Blob([o.buffer],{type:`application/octet-stream`});s.append(`db`,c,`database.sqlite.zst`);let l=`${t.replace(/\/+$/,``)}/upload/${encodeURIComponent(e)}`,u=await fetch(l,{method:`POST`,body:s});if(!u.ok)throw Error(`Ошибка загрузки: сервер ответил ${u.status} ${u.statusText}`);console.log(`[Sync] База данных успешно загружена.`)}catch(e){throw console.error(`[Sync] Ошибка загрузки:`,e),console.log(e),alert(`Ошибка загрузки: ${e instanceof Error?e.message:String(e)}`),e}}async function Xe(e,t,n,r){try{let i=`${t.replace(/\/+$/,``)}/download/${encodeURIComponent(e)}`;console.log(i);let a=await fetch(i);if(!a.ok)throw Error(`Ошибка скачивания: сервер ответил ${a.status} ${a.statusText}`);let o=await a.arrayBuffer(),s=new Uint8Array(o);await I(),await n(Ge(s).buffer),await r(),console.log(`[Sync] База данных успешно скачана и применена.`)}catch(e){throw console.error(`[Sync] Ошибка скачивания:`,e),alert(`Ошибка скачивания: ${e instanceof Error?e.message:String(e)}`),e}}function Ze(e){if(typeof e==`number`)return e;if(typeof e==`string`){let t=Date.parse(e);if(!isNaN(t))return Math.floor(t/1e3)}return Math.floor(Date.now()/1e3)}async function L(){return(await s(` - SELECT id, name, forward, backward, filter - FROM card_set - ORDER BY id ASC - `)).map(e=>({id:e[0],name:e[1],forward:e[2],backward:e[3],filter:e[4]}))}async function Qe(){return(await s(` - SELECT id, key, value, tags, more, group_id - FROM words - ORDER BY id ASC - `)).map(e=>({id:e[0],key:e[1],value:e[2],tags:e[3],more:e[4],group_id:e[5]}))}async function $e(e){let t=await s(`SELECT w.id, w.key, w.value, w.tags, w.more, w.group_id - FROM words w - INNER JOIN card_stats cs ON cs.word_id = w.id - WHERE cs.set_id = ? - ORDER BY w.id ASC`,[e]),n=await s(`SELECT id, word_id, set_id, score, last_opened - FROM card_stats - WHERE set_id = ? - ORDER BY word_id ASC`,[e]);return{words:t.map(e=>({id:e[0],key:e[1],value:e[2],tags:e[3],more:e[4],group_id:e[5]})),stats:n.map(e=>({id:e[0],word_id:e[1],set_id:e[2],score:e[3],last_opened:Ze(e[4])}))}}async function R(e,t,n){await c(`UPDATE card_stats SET score = ?, last_opened = ? WHERE id = ?`,[Math.max(1,Math.round(t||1)),n,e])}async function et(){return(await s(` - SELECT id, name FROM word_group ORDER BY id ASC - `)).map(e=>({id:e[0],name:e[1]}))}async function tt(){let e=await et(),t=await Qe(),n=[];for(let r of e){let e=t.filter(e=>e.group_id===r.id),i=new Map;for(let t of e){if(!t.tags||t.tags.trim()===``){let e=`(без тега)`;i.has(e)||i.set(e,[]),i.get(e).push(t);continue}let e=t.tags.split(`,`).map(e=>e.trim()).filter(Boolean);for(let n of e)i.has(n)||i.set(n,[]),i.get(n).push(t)}let a=[];for(let[e,t]of i)a.push({tag:e,words:t});a.sort((e,t)=>t.words.length-e.words.length),n.push({group:r,tags:a})}return n}var nt=20,rt=.33,z=25,it=.95,B={Default:`Default`,TrainWorstFirst:`TrainWorstFirst`,FullRandom:`FullRandom`};function V(e){let t=(Date.now()-e.last_open)/(1e3*60*60*24),n=it**+Math.max(0,t);return e.score*n}function at(e,t){let n=V(e);switch(t){case`easy`:e.score=Math.round(n+5);break;case`ok`:e.score=Math.round(n+2);break;case`hard`:e.score=Math.round(n-1);break;case`none`:e.score=Math.round(n*.5);break}e.score<1?e.score=1:e.score>z&&(e.score=z),e.last_open=Date.now()}var ot=class{weights;constructor(e){this.weights=[...e]}sample(){let e=this.weights.reduce((e,t)=>e+t,0),t=Math.random()*e;for(let e=0;et),this.shuffle(this.backet)),this.backet.pop()}open(e,t,n){}init(e){this.initialized=!0,this.backet=Array.from({length:e.words.length},(e,t)=>t),this.shuffle(this.backet)}shuffle(e){for(let t=e.length-1;t>0;t--){let n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}}},ct=class{history=[];lastWeights;initialized=!1;next(e){let t=this.historyLen(e.set.length);for(let n=0;n<100;n++){let n=this.lastWeights.sample();if(!this.history.includes(n)||t>=e.set.length)return this.history.length>=t&&this.history.shift(),this.history.push(n),n}this.history=[];let n=this.lastWeights.sample();return this.history.push(n),n}open(e,t,n){let r=(100/Math.max(.1,V(n)))**2;this.lastWeights.updateWeight(t,r)}init(e){this.initialized=!0;let t=e.set.map(e=>(100/Math.max(.1,V(e)))**2*2);this.lastWeights=new ot(t)}historyLen(e){return Math.min(nt,Math.max(0,Math.floor(e*rt)))}},lt=class{initialized=!1;next(e){throw Error(`Not implemented`)}open(e,t,n){throw Error(`Not implemented`)}init(e){throw Error(`Not implemented`)}},ut=class{words;set;currentWordIndex=null;orderModule;constructor(e,t,n){this.words=t,this.set=n;let r=e.open_mode;this.orderModule=r===B.FullRandom?{type:`RandomSRS`,module:new st}:r===B.TrainWorstFirst?{type:`WorstWordsSRS`,module:new lt}:{type:`SemiRandomSRS`,module:new ct}}getOrderContext(){return{words:this.words,set:this.set}}next(){let e=this.getOrderContext(),t,n=this.orderModule;switch(n.type){case`SemiRandomSRS`:n.module.initialized||n.module.init(e),t=n.module.next(e);break;case`RandomSRS`:n.module.initialized||n.module.init(e),t=n.module.next(e);break;case`WorstWordsSRS`:n.module.initialized||n.module.init(e),t=n.module.next(e);break}return this.currentWordIndex=t,{word:this.words[t],stat:this.set[t]}}open(e){if(this.currentWordIndex===null)return;let t=this.currentWordIndex,n=this.set[t];at(n,e);let r=this.orderModule;switch(r.type){case`SemiRandomSRS`:r.module.open(e,t,n);break;case`RandomSRS`:r.module.open(e,t,n);break;case`WorstWordsSRS`:r.module.open(e,t,n);break}}get length(){return this.set.length}};function H(e,t){let n={key:e.key,value:e.value,tags:e.tags};return t.split(/\s+/).filter(Boolean).map(t=>t in n&&n[t]?n[t]:t in e.more&&e.more[t]?e.more[t]:``).filter(Boolean)}var dt=class{container;cardSet;words;callbacks;totalCards;forwardFields;backwardFields;seenWords=new Set;shownCount=0;constructor(e,t,n,r,i){this.container=e,this.callbacks=i,this.totalCards=r.length,this.forwardFields=t.forward||`key`,this.backwardFields=t.backward||`value`;let a=n.map(e=>({id:e.id,key:e.key,value:e.value,tags:e.tags,additional:e.more,group_id:e.group_id}));this.words=n,this.cardSet=new ut(t,a,r),this.render()}render(){let e=this.totalCards;this.container.innerHTML=` -
- - уникальных: 0 / ${e} -
-
-
-
-
-
-
- `,this.renderCard(),document.getElementById(`btnTrainingBack`)?.addEventListener(`click`,()=>{this.callbacks.onFinish()})}updateCounter(){let e=this.totalCards,t=this.container.querySelector(`.training-header span`);t&&(t.textContent=`уникальных: ${this.seenWords.size} / ${e}`)}renderCard(){let e=this.cardSet.next(),t=this.words.find(t=>t.id===e.word.id);if(!t)return;this.shownCount++,this.seenWords.has(e.word.id)||this.seenWords.add(e.word.id),this.updateCounter();let n=this.cardSet.set[this.cardSet.currentWordIndex];if(n){let e=Math.floor(Date.now()/1e3);n.last_open=Date.now(),R(n.id,n.score,e).catch(e=>console.error(`[Training] Ошибка сохранения last_opened:`,e))}this.renderSide(t,this.forwardFields,this.backwardFields,!1,n),this.renderActions(!1)}renderSide(e,t,n,r,i){let a=document.getElementById(`training-content`);if(!a)return;let o=``;if(i&&(o=`⚡ ${V(i).toFixed(1)}`),r){let r=H(e,t),i=H(e,n);a.innerHTML=` -
- ${r.length>0?r.map(e=>`
${this.escapeHtml(e)}
`).join(``):`
`} -
-
-
- ${i.length>0?i.map(e=>`
${this.escapeHtml(e)}
`).join(``):`
`} -
- ${o?`
${o}
`:``} - `}else{let n=H(e,t);if(n.length===0){a.innerHTML=` -
Нет данных для отображения
- ${o?`
${o}
`:``} - `;return}a.innerHTML=` - ${n.map(e=>`
${this.escapeHtml(e)}
`).join(``)} - ${o?`
${o}
`:``} - `}}renderActions(e){let t=document.getElementById(`training-actions`);t&&(e?(t.innerHTML=` -
- - - - -
- `,t.querySelectorAll(`.vote-btn`).forEach(e=>{e.addEventListener(`click`,()=>{let t=e.dataset.mode;this.vote(t)})})):(t.innerHTML=` - - `,document.getElementById(`btnReveal`)?.addEventListener(`click`,()=>this.reveal())))}reveal(){let e=this.cardSet.currentWordIndex;if(e===null)return;let t=this.words[e];if(!t)return;let n=this.cardSet.set[e];this.renderSide(t,this.forwardFields,this.backwardFields,!0,n),this.renderActions(!0)}async vote(e){this.cardSet.open(e);let t=this.cardSet.currentWordIndex;if(t===null)return;let n=this.cardSet.set[t];if(n)try{await R(n.id,n.score,Math.floor(n.last_open/1e3))}catch(e){console.error(`[Training] Ошибка сохранения:`,e)}this.renderCard()}escapeHtml(e){let t=document.createElement(`div`);return t.textContent=e,t.innerHTML}};function ft(e){if(!e)return{};try{return JSON.parse(e)}catch{return{}}}function pt(e,t,n){let r=ft(t.more);e.innerHTML=` -
- -
-
-
-
Японское слово
-
${U(t.key)}
-
- -
- -
-
Перевод
-
${U(t.value)}
-
- -
- -
-
Теги
-
- ${t.tags?U(t.tags):`—`} -
-
- - ${Object.keys(r).length>0?` -
-
-
Дополнительные данные
- ${Object.entries(r).map(([e,t])=>` -
- ${U(e)} - ${U(t)} -
- `).join(``)} -
- `:``} -
- `,document.getElementById(`btnViewBack`)?.addEventListener(`click`,()=>{n.onBack()})}function U(e){let t=document.createElement(`div`);return t.textContent=e,t.innerHTML}var W=`https://learning.micialware.ru`,G=`japlearn_sync_id`,K=document.getElementById(`page-container`),q=document.querySelectorAll(`.nav-btn`),J=`words`;function Y(e){let t=document.createElement(`div`);return t.textContent=e,t.innerHTML}function X(e,t=!1){let n=document.getElementById(`status`);n&&(n.textContent=e,n.className=`status-bar`,t?n.classList.add(`error`):n.classList.add(`success`)),console.log(`[App] ${e}`)}function mt(){let e=document.getElementById(`syncId`)?.value.trim();if(!e)throw Error(`Введите ID синхронизации`);return localStorage.setItem(G,e),e}function ht(){let e=localStorage.getItem(G);if(e){let t=document.getElementById(`syncId`);t&&(t.value=e)}}function gt(){K.innerHTML=` -
-

📡 Синхронизация

-
- -
- - -
-
-
- -
-

📚 Слова

-
-
- -
Загрузка...
- `}function _t(e){let t=document.getElementById(`word-groups`);if(!t)return;if(t.innerHTML=``,e.length===0){t.innerHTML=`

Нет слов 🎉

`;return}let n=document.createElement(`div`);n.className=`group-tabs`;let r=document.createElement(`div`);r.className=`group-panels`;for(let t=0;te+t.words.length,0);a.innerHTML=`${Y(i.group.name)} ${o}`;let s=document.createElement(`div`);s.className=`group-panel`+(t===0?` active`:``);for(let e of i.tags){let t=document.createElement(`div`);t.className=`word-tag-block`;let n=document.createElement(`div`);n.className=`word-tag-header`,n.innerHTML=` - #${Y(e.tag)} - ${e.words.length} - `;let r=!0,i=document.createElement(`div`);i.className=`word-tag-words`,i.style.display=`none`,n.addEventListener(`click`,()=>{r=!r,i.style.display=r?`none`:``,n.classList.toggle(`collapsed`,r)});for(let t of e.words){let e=document.createElement(`div`);e.className=`word-item`,e.innerHTML=` - ${Y(t.key)} - ${Y(t.value)} - `,e.addEventListener(`click`,e=>{e.stopPropagation(),xt(t)}),i.appendChild(e)}t.appendChild(n),t.appendChild(i),s.appendChild(t)}a.addEventListener(`click`,()=>{n.querySelectorAll(`.group-tab`).forEach(e=>e.classList.remove(`active`)),r.querySelectorAll(`.group-panel`).forEach(e=>e.classList.remove(`active`)),a.classList.add(`active`),s.classList.add(`active`)}),n.appendChild(a),r.appendChild(s)}t.appendChild(n),t.appendChild(r)}function vt(){K.innerHTML=` -
-
-
    -
    -
    -
    🗂️
    -
    Выберите колоду
    -
    -
    -
    -
    -
    Загрузка...
    - `}function yt(e){let t=document.getElementById(`sets-list`);if(!t)return;if(t.innerHTML=``,e.length===0){t.innerHTML=`
  • Нет колод
  • `;return}for(let n of e){let e=document.createElement(`li`);e.textContent=n.name,e.dataset.setId=String(n.id),e.addEventListener(`click`,()=>bt(n,e)),t.appendChild(e)}let n=t.querySelector(`li`);if(n){n.classList.add(`selected`);let t=Number(n.dataset.setId),r=e.find(e=>e.id===t);r&&bt(r,n)}}function bt(e,t){document.querySelectorAll(`#sets-list li`).forEach(e=>e.classList.remove(`selected`)),t.classList.add(`selected`);let n=document.getElementById(`sets-detail`);n&&(n.innerHTML=` -

    ${Y(e.name)}

    -

    Прямой порядок: ${Y(e.forward)}

    -

    Обратный порядок: ${Y(e.backward)}

    -

    Фильтр: ${Y(e.filter)}

    - - - - - - `)}function xt(e){Ct(),J=`wordview`,pt(K,e,{onBack:()=>{Q(),Z(`words`)}})}async function St(e){let t=document.getElementById(`mode-select`)?.value||B.Default,n=(await L()).find(t=>t.id===e);if(!n){X(`Колода не найдена`,!0);return}let{words:r,stats:i}=await $e(e);if(r.length===0){X(`Нет слов для тренировки`,!0);return}console.log(`[Training] Запуск тренировки: ${r.length} слов, ${i.length} записей, режим: ${t}`);let a={id:n.id,name:n.name,forward:n.forward,backward:n.backward,filter:n.filter,count:null,worst_words_list:null,open_mode:t},o=r.map(e=>{let t={};if(e.more)try{t=JSON.parse(e.more)}catch{}return{id:e.id,key:e.key,value:e.value,tags:e.tags,more:t,group_id:e.group_id}}),s=i.map(e=>({id:e.id,word_id:e.word_id,set_id:e.set_id,last_open:e.last_opened*1e3,score:e.score}));Ct(),J=`training`,K.innerHTML=`
    `,new dt(document.getElementById(`training-root`),a,o,s,{onFinish:()=>{Q(),Z(`sets`)}})}function Z(e){J=e,Q(),q.forEach(t=>{t.classList.toggle(`active`,t.dataset.page===e)}),e===`words`?(gt(),$()):(vt(),wt())}function Ct(){document.getElementById(`app-nav`).style.display=`none`}function Q(){document.getElementById(`app-nav`).style.display=`flex`}async function $(){try{let e=await tt();_t(e),X(`Слов: ${e.reduce((e,t)=>e+t.tags.reduce((e,t)=>e+t.words.length,0),0)}`)}catch(e){X(`Ошибка загрузки слов`,!0),console.error(e)}}async function wt(){try{let e=await L();yt(e),X(`Колод: ${e.length}`)}catch(e){X(`Ошибка загрузки колод`,!0),console.error(e)}}async function Tt(){try{let e=mt(),t=document.getElementById(`btnDownload`);t&&(t.disabled=!0),X(`Скачивание...`),await Xe(e,W,ee,o),J===`words`&&await $(),X(`База данных скачана.`)}catch{}finally{let e=document.getElementById(`btnDownload`);e&&(e.disabled=!1)}}async function Et(){try{let e=mt(),t=document.getElementById(`btnUpload`);t&&(t.disabled=!0),X(`Загрузка...`),await Ye(e,W,u,l),await o(),J===`words`&&await $(),X(`База данных загружена.`)}catch{}finally{let e=document.getElementById(`btnUpload`);e&&(e.disabled=!1)}}async function Dt(){try{await o(),console.log(`[App] База данных инициализирована.`),q.forEach(e=>{e.addEventListener(`click`,()=>{J!==`training`&&Z(e.dataset.page)})}),Z(`words`),ht(),K.addEventListener(`click`,async e=>{let t=e.target;t.id===`btnDownload`&&await Tt(),t.id===`btnUpload`&&await Et();let n=t.closest(`.btn-start-training`);n&&await St(Number(n.dataset.setId))})}catch(e){console.error(`[App] Ошибка инициализации:`,e)}}Dt(); \ No newline at end of file diff --git a/jwl/assets/index-XX_s0Oss.css b/jwl/assets/index-XX_s0Oss.css deleted file mode 100644 index 6a99788..0000000 --- a/jwl/assets/index-XX_s0Oss.css +++ /dev/null @@ -1 +0,0 @@ -:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--card-bg:#f8f7f9;--border:#e5e4e7;--accent:#7c3aed;--accent-light:#7c3aed1a;--success:#16a34a;--error:#dc2626;--shadow:#00000014 0 4px 12px;--sans:-apple-system, "Segoe UI", system-ui, Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:16px/1.5 var(--sans);color-scheme:light dark;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#0f0f13;--card-bg:#1a1b23;--border:#2e303a;--accent:#a78bfa;--accent-light:#a78bfa26;--shadow:#0006 0 4px 12px}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{overscroll-behavior:none;-webkit-overflow-scrolling:touch;touch-action:manipulation;flex-direction:column;min-height:100svh;margin:0;display:flex}#app{width:100%;max-width:480px;padding:0;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);flex-direction:column;flex:1;margin:0 auto;display:flex}.app-header{padding:1.5rem 1.25rem .5rem;padding-top:calc(1.5rem + env(safe-area-inset-top));text-align:center}.app-header h1{font-family:var(--sans);color:var(--text-h);letter-spacing:-.5px;margin:0;font-size:1.75rem;font-weight:700}.app-header p{color:var(--text);margin:.25rem 0 0;font-size:.9rem}.app-content{flex-direction:column;flex:1;gap:1rem;padding:1rem 1.25rem;display:flex}.card{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;padding:1.25rem}.card-title{color:var(--text);text-transform:uppercase;letter-spacing:.5px;margin:0 0 .75rem;font-size:.85rem;font-weight:600}.sync-input-group{flex-direction:column;gap:.5rem;display:flex}.sync-input-group input{font-family:var(--mono);border:1px solid var(--border);background:var(--bg);color:var(--text-h);border-radius:8px;outline:none;width:100%;padding:.65rem .75rem;font-size:.9rem;transition:border-color .2s}.sync-input-group input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.sync-buttons{gap:.5rem;display:flex}.btn{font-family:var(--sans);border:1px solid var(--border);background:var(--card-bg);min-height:48px;color:var(--text-h);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;user-select:none;border-radius:10px;flex:1;justify-content:center;align-items:center;gap:.4rem;padding:.75rem 1rem;font-size:.9rem;font-weight:600;transition:all .2s;display:flex}.btn:hover{border-color:var(--accent);background:var(--accent-light)}.btn:active{opacity:.9;transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{filter:brightness(1.1)}.status-bar{text-align:center;background:var(--accent-light);color:var(--text);border-radius:8px;min-height:36px;margin-top:auto;padding:.5rem .75rem;font-size:.85rem}.status-bar.error{color:var(--error);background:#dc26261a}.status-bar.success{color:var(--success);background:#16a34a1a}.app-footer{padding:1rem 1.25rem;padding-bottom:calc(1rem + env(safe-area-inset-bottom));text-align:center;color:var(--text);opacity:.6;font-size:.75rem}.divider{border:none;border-top:1px solid var(--border);margin:.25rem 0}.placeholder-area{color:var(--text);opacity:.4;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.5rem;min-height:100px;font-size:.85rem;display:flex}.word-list{margin:0;padding:0;list-style:none}.word-item{background:var(--bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;flex-wrap:wrap;align-items:center;margin-bottom:10px;padding:14px 16px;transition:border-color .2s;display:flex}.word-item:hover{border-color:var(--accent)}.word-item-empty{text-align:center;color:var(--text);opacity:.6;align-items:center;padding:24px 16px;font-size:.9rem}.word-key{color:var(--text-h);letter-spacing:.5px;flex-shrink:0;font-size:1.2rem;font-weight:600}.word-value{color:var(--text);text-align:right;flex:1;font-size:.95rem}.word-tags{color:var(--accent);background:var(--accent-light);border-radius:4px;flex-basis:100%;order:1;align-self:flex-start;margin-top:2px;padding:2px 8px;font-size:.7rem;font-weight:500}.placeholder-icon{opacity:.6;font-size:2rem}.group-tabs{border-bottom:1px solid var(--border);-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:0;display:flex;overflow-x:auto}.group-tabs::-webkit-scrollbar{display:none}.group-tab{min-width:0;font-family:var(--sans);color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;align-items:center;gap:.5rem;padding:.65rem .5rem;font-size:.85rem;font-weight:600;transition:all .2s;display:flex}.group-tab.active{color:var(--accent);border-bottom-color:var(--accent);background:var(--accent-light)}.group-tab-count{background:var(--accent-light);color:var(--accent);border-radius:8px;margin-left:auto;padding:1px 6px;font-size:.7rem;font-weight:500}.group-panel{padding-top:.75rem;display:none}.group-panel.active{display:block}.word-tag-block{margin-bottom:.5rem}.word-tag-header{cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:8px;justify-content:space-between;align-items:center;padding:8px 10px;transition:background .15s;display:flex}.word-tag-header:hover{background:var(--accent-light)}.word-tag-header:after{content:"▸";color:var(--text);font-size:.75rem;transition:transform .2s}.word-tag-header.collapsed:after{transform:rotate(90deg)}.word-tag-label{color:var(--accent);font-size:.85rem;font-weight:500}.word-tag-count{color:var(--text);background:var(--accent-light);border-radius:10px;padding:1px 8px;font-size:.75rem}.word-tag-words{padding:.25rem 0 .25rem .5rem}.word-tag-words .word-item{margin-bottom:6px;padding:10px 12px}.word-tag-words .word-item:last-child{margin-bottom:0}.app-nav{border-top:1px solid var(--border);background:var(--card-bg);z-index:10;padding-bottom:env(safe-area-inset-bottom);display:flex;position:sticky;bottom:0}.nav-btn{font-family:var(--sans);min-height:52px;color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;background:0 0;border:none;flex:1;padding:.75rem .5rem;font-size:.85rem;font-weight:600;transition:all .2s}.nav-btn.active{color:var(--accent);background:var(--accent-light)}.nav-btn:hover{color:var(--accent)}.sets-layout{flex:1;gap:0;min-height:0;display:flex}.sets-list{border-right:1px solid var(--border);flex:1;margin:0;padding:0;list-style:none;overflow-y:auto}.sets-list li{cursor:pointer;border-bottom:1px solid var(--border);min-height:48px;color:var(--text-h);-webkit-tap-highlight-color:transparent;padding:14px;font-weight:500;transition:background .15s}.sets-list li:last-child{border-bottom:none}.sets-list li:hover{background:var(--accent-light)}.sets-list li.selected{background:var(--accent-light);color:var(--accent)}.sets-detail{flex:1;padding:14px;overflow-y:auto}.sets-detail h3{color:var(--text-h);margin:0 0 12px;font-size:1rem}.sets-detail p{color:var(--text);margin:0 0 6px;font-size:.85rem}.sets-detail .mode-select{border:1px solid var(--border);background:var(--bg);width:100%;min-height:48px;color:var(--text-h);border-radius:8px;margin:10px 0;padding:10px;font-size:.9rem}.sets-detail .btn{width:100%;margin-top:8px}@media (width<=400px){.sets-layout{flex-direction:column}.sets-list{border-right:none;border-bottom:1px solid var(--border);max-height:200px}}.training-header{justify-content:space-between;align-items:center;padding:.5rem 0;display:flex}.training-card{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:16px;flex-direction:column;flex:1;justify-content:center;min-height:200px;padding:2rem 1.5rem;display:flex}.training-content{text-align:center}.training-field{color:var(--text-h);padding:.5rem 0;font-size:1.5rem;font-weight:600;line-height:1.4}.training-side{padding:.5rem 0}.training-side-back .training-field{color:var(--accent);font-weight:500}.training-divider{border:none;border-top:1px solid var(--border);margin:.75rem 0}.training-score{color:var(--accent);opacity:.8;margin-top:.75rem;font-size:.85rem;font-weight:500}.word-view-header{padding:.5rem 0}.word-view-card{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:16px;flex:1;padding:1.5rem}.word-view-section{padding:.25rem 0}.word-view-label{color:var(--text);text-transform:uppercase;letter-spacing:.5px;margin-bottom:.5rem;font-size:.75rem;font-weight:600}.word-view-field{color:var(--text-h);padding:.25rem 0;font-size:1.3rem;font-weight:600;line-height:1.4}.word-view-field-back{color:var(--accent)}.word-view-divider{border:none;border-top:1px solid var(--border);margin:.75rem 0}.word-view-more-row{justify-content:space-between;align-items:center;gap:8px;padding:4px 0;display:flex}.word-view-more-key{color:var(--text);flex-shrink:0;font-size:.8rem;font-weight:500}.word-view-more-value{color:var(--text-h);text-align:right;word-break:break-word;font-size:.9rem}.word-view-actions,.training-actions{padding:.75rem 0}.training-vote{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.vote-btn{min-height:52px;padding:.75rem .5rem;font-size:.85rem}.vote-easy{color:#16a34a;border-color:#16a34a}.vote-ok{color:#ca8a04;border-color:#ca8a04}.vote-hard{color:#ea580c;border-color:#ea580c}.vote-none{color:#dc2626;border-color:#dc2626}@media (prefers-color-scheme:dark){.vote-easy{color:#4ade80;border-color:#4ade80}.vote-ok{color:#facc15;border-color:#facc15}.vote-hard{color:#fb923c;border-color:#fb923c}.vote-none{color:#f87171;border-color:#f87171}} diff --git a/jwl/assets/wa-sqlite-async-DY3_ptqa.wasm b/jwl/assets/wa-sqlite-async-DY3_ptqa.wasm deleted file mode 100644 index 6f167ac..0000000 Binary files a/jwl/assets/wa-sqlite-async-DY3_ptqa.wasm and /dev/null differ diff --git a/jwl/assets/zstd-CV7N7xSg.wasm b/jwl/assets/zstd-CV7N7xSg.wasm deleted file mode 100644 index 4b09e71..0000000 Binary files a/jwl/assets/zstd-CV7N7xSg.wasm and /dev/null differ diff --git a/jwl/favicon.svg b/jwl/favicon.svg deleted file mode 100644 index 07ae8d1..0000000 --- a/jwl/favicon.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/jwl/icon-192.png b/jwl/icon-192.png deleted file mode 100644 index f9d3b31..0000000 Binary files a/jwl/icon-192.png and /dev/null differ diff --git a/jwl/icon-512.png b/jwl/icon-512.png deleted file mode 100644 index 1e62382..0000000 Binary files a/jwl/icon-512.png and /dev/null differ diff --git a/jwl/icons.svg b/jwl/icons.svg deleted file mode 100644 index e952219..0000000 --- a/jwl/icons.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jwl/index.html b/jwl/index.html deleted file mode 100644 index 9073261..0000000 --- a/jwl/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - JapLearn - - - - -
    -
    -

    JapLearn

    -

    Интервальные повторения японских слов

    -
    - -
    - -
    - - -
    - - \ No newline at end of file diff --git a/jwl/manifest.json b/jwl/manifest.json deleted file mode 100644 index a3559cb..0000000 --- a/jwl/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "JapLearn", - "short_name": "JapLearn", - "description": "Интервальные повторения японских слов", - "start_url": "/", - "display": "standalone", - "orientation": "portrait", - "background_color": "#ffffff", - "theme_color": "#7c3aed", - "icons": [ - { - "src": "/icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/icon-512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} \ No newline at end of file diff --git a/jwl/manifest.webmanifest b/jwl/manifest.webmanifest deleted file mode 100644 index fd2bed9..0000000 --- a/jwl/manifest.webmanifest +++ /dev/null @@ -1 +0,0 @@ -{"name":"JapLearn","short_name":"JapLearn","description":"Интервальные повторения японских слов","start_url":"/","display":"standalone","background_color":"#ffffff","theme_color":"#7c3aed","lang":"en","scope":"/","orientation":"portrait","icons":[{"src":"icon-192.png","sizes":"192x192","type":"image/png"},{"src":"icon-512.png","sizes":"512x512","type":"image/png"},{"src":"icon-512.png","sizes":"512x512","type":"image/png","purpose":"any maskable"}]} diff --git a/jwl/registerSW.js b/jwl/registerSW.js deleted file mode 100644 index d42ac9e..0000000 --- a/jwl/registerSW.js +++ /dev/null @@ -1 +0,0 @@ -if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('/sw.js', { scope: '/' })})} \ No newline at end of file diff --git a/jwl/sw.js b/jwl/sw.js deleted file mode 100644 index bebaf49..0000000 --- a/jwl/sw.js +++ /dev/null @@ -1 +0,0 @@ -if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,r)=>{const a=e||("document"in self?document.currentScript.src:"")||location.href;if(s[a])return;let o={};const c=e=>i(e,a),l={module:{uri:a},exports:o,require:c};s[a]=Promise.all(n.map(e=>l[e]||c(e))).then(e=>(r(...e),o))}}define(["./workbox-9c191d2f"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"index.html",revision:"f63f75d4eabe50ba7027246e2712fd0f"},{url:"icons.svg",revision:"3b4fcfcf393eca4d264dca4a4663bc37"},{url:"icon-512.png",revision:"742f835d951738a122569da26fd5436c"},{url:"icon-192.png",revision:"ab94a1a8a8b47289c8a62e56929aa22c"},{url:"favicon.svg",revision:"94b5c7ec23607198a93dfd22a617c192"},{url:"assets/zstd-CV7N7xSg.wasm",revision:null},{url:"assets/wa-sqlite-async-DY3_ptqa.wasm",revision:null},{url:"assets/index-XX_s0Oss.css",revision:null},{url:"assets/index-CzXGdRG9.js",revision:null},{url:"assets/db-worker-DEWOyJFk.js",revision:null},{url:"favicon.svg",revision:"94b5c7ec23607198a93dfd22a617c192"},{url:"icon-192.png",revision:"ab94a1a8a8b47289c8a62e56929aa22c"},{url:"icon-512.png",revision:"742f835d951738a122569da26fd5436c"},{url:"manifest.webmanifest",revision:"a772ac7a933e1fc8361edca90e19a887"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api\//]}))}); diff --git a/jwl/workbox-9c191d2f.js b/jwl/workbox-9c191d2f.js deleted file mode 100644 index 2ab637f..0000000 --- a/jwl/workbox-9c191d2f.js +++ /dev/null @@ -1 +0,0 @@ -define(["exports"],function(t){"use strict";try{self["workbox:core:7.4.0"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:7.4.0"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class i{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class r extends i{constructor(t,e,s){super(({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)},e,s)}}class o{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)})}addCacheListener(){self.addEventListener("message",t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map(e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})}));t.waitUntil(s),t.ports&&t.ports[0]&&s.then(()=>t.ports[0].postMessage(!0))}})}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let o=r&&r.handler;const c=t.method;if(!o&&this.i.has(c)&&(o=this.i.get(c)),!o)return;let a;try{a=o.handle({url:s,request:t,event:e,params:i})}catch(t){a=Promise.reject(t)}const h=r&&r.catchHandler;return a instanceof Promise&&(this.o||h)&&(a=a.catch(async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:i})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n})),a}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const i=this.t.get(s.method)||[];for(const r of i){let i;const o=r.match({url:t,sameOrigin:e,request:s,event:n});if(o)return i=o,(Array.isArray(i)&&0===i.length||o.constructor===Object&&0===Object.keys(o).length||"boolean"==typeof o)&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let c;const a=()=>(c||(c=new o,c.addFetchListener(),c.addCacheListener()),c);function h(t,e,n){let o;if("string"==typeof t){const s=new URL(t,location.href);o=new i(({url:t})=>t.href===s.href,e,n)}else if(t instanceof RegExp)o=new r(t,e,n);else if("function"==typeof t)o=new i(t,e,n);else{if(!(t instanceof i))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});o=t}return a().registerRoute(o),o}const u={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},l=t=>[u.prefix,t,u.suffix].filter(t=>t&&t.length>0).join("-"),f=t=>t||l(u.precache),w=t=>t||l(u.runtime);function d(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:7.4.0"]&&_()}catch(t){}function p(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const i=new URL(n,location.href),r=new URL(n,location.href);return i.searchParams.set("__WB_REVISION__",e),{cacheKey:i.href,url:r.href}}class y{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class g{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.h.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.h=t}}let R;async function m(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const i=t.clone(),r={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=function(){if(void 0===R){const t=new Response("");if("body"in t)try{new Response(t.body),R=!0}catch(t){R=!1}R=!1}return R}()?i.body:await i.blob();return new Response(o,r)}function v(t,e){const s=new URL(t);for(const t of e)s.searchParams.delete(t);return s.href}class q{constructor(){this.promise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}}const U=new Set;try{self["workbox:strategies:7.4.0"]&&_()}catch(t){}function L(t){return"string"==typeof t?new Request(t):t}class b{constructor(t,e){this.u={},Object.assign(this,e),this.event=e.event,this.l=t,this.p=new q,this.R=[],this.m=[...t.plugins],this.v=new Map;for(const t of this.m)this.v.set(t,{});this.event.waitUntil(this.p.promise)}async fetch(t){const{event:e}=this;let n=L(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const i=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const r=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.l.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:r,response:t});return t}catch(t){throw i&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:i.clone(),request:r.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=L(t);let s;const{cacheName:n,matchOptions:i}=this.l,r=await this.getCacheKey(e,"read"),o=Object.assign(Object.assign({},i),{cacheName:n});s=await caches.match(r,o);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:i,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(t,e){const n=L(t);var i;await(i=0,new Promise(t=>setTimeout(t,i)));const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(o=r.url,new URL(String(o),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var o;const c=await this.q(e);if(!c)return!1;const{cacheName:a,matchOptions:h}=this.l,u=await self.caches.open(a),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const i=v(e.url,s);if(e.url===i)return t.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),o=await t.keys(e,r);for(const e of o)if(i===v(e.url,s))return t.match(e,n)}(u,r.clone(),["__WB_REVISION__"],h):null;try{await u.put(r,l?c.clone():c)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of U)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:a,oldResponse:f,newResponse:c.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.u[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=L(await t({mode:e,request:n,event:this.event,params:this.params}));this.u[s]=n}return this.u[s]}hasCallback(t){for(const e of this.l.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this.l.plugins)if("function"==typeof e[t]){const s=this.v.get(e),n=n=>{const i=Object.assign(Object.assign({},n),{state:s});return e[t](i)};yield n}}waitUntil(t){return this.R.push(t),t}async doneWaiting(){for(;this.R.length;){const t=this.R.splice(0),e=(await Promise.allSettled(t)).find(t=>"rejected"===t.status);if(e)throw e.reason}}destroy(){this.p.resolve(null)}async q(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class C{constructor(t={}){this.cacheName=w(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,i=new b(this,{event:e,request:s,params:n}),r=this.U(i,s,e);return[r,this.L(r,i,s,e)]}async U(t,e,n){let i;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(i=await this._(e,t),!i||"error"===i.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const r of t.iterateCallbacks("handlerDidError"))if(i=await r({error:s,event:n,request:e}),i)break;if(!i)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))i=await s({event:n,request:e,response:i});return i}async L(t,e,s,n){let i,r;try{i=await t}catch(r){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:i}),await e.doneWaiting()}catch(t){t instanceof Error&&(r=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:i,error:r}),e.destroy(),r)throw r}}class E extends C{constructor(t={}){t.cacheName=f(t.cacheName),super(t),this.C=!1!==t.fallbackToNetwork,this.plugins.push(E.copyRedirectedCacheableResponsesPlugin)}async _(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.O(t,e):await this.N(t,e))}async N(t,e){let n;const i=e.params||{};if(!this.C)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=i.integrity,r=t.integrity,o=!r||r===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?r||s:void 0})),s&&o&&"no-cors"!==t.mode&&(this.P(),await e.cachePut(t,n.clone()))}return n}async O(t,e){this.P();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}P(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==E.copyRedirectedCacheableResponsesPlugin&&(n===E.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(E.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}E.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},E.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await m(t):t};class O{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.j=new Map,this.k=new Map,this.K=new Map,this.l=new E({cacheName:f(t),plugins:[...e,new g({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this.l}precache(t){this.addToCacheList(t),this.T||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.T=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:i}=p(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this.j.has(i)&&this.j.get(i)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.j.get(i),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.K.has(t)&&this.K.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:i});this.K.set(t,n.integrity)}if(this.j.set(i,t),this.k.set(i,r),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return d(t,async()=>{const e=new y;this.strategy.plugins.push(e);for(const[e,s]of this.j){const n=this.K.get(s),i=this.k.get(e),r=new Request(e,{integrity:n,cache:i,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}})}activate(t){return d(t,async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.j.values()),n=[];for(const i of e)s.has(i.url)||(await t.delete(i),n.push(i.url));return{deletedURLs:n}})}getURLsToCacheKeys(){return this.j}getCachedURLs(){return[...this.j.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.j.get(e.href)}getIntegrityForCacheKey(t){return this.K.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}let x;const N=()=>(x||(x=new O),x);class P extends i{constructor(t,e){super(({request:s})=>{const n=t.getURLsToCacheKeys();for(const i of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:i}={}){const r=new URL(t,location.href);r.hash="",yield r.href;const o=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some(t=>t.test(s))&&t.searchParams.delete(s);return t}(r,e);if(yield o.href,s&&o.pathname.endsWith("/")){const t=new URL(o.href);t.pathname+=s,yield t.href}if(n){const t=new URL(o.href);t.pathname+=".html",yield t.href}if(i){const t=i({url:r});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(i);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}},t.strategy)}}t.NavigationRoute=class extends i{constructor(t,{allowlist:e=[/./],denylist:s=[]}={}){super(t=>this.W(t),t),this.M=e,this.S=s}W({url:t,request:e}){if(e&&"navigate"!==e.mode)return!1;const s=t.pathname+t.search;for(const t of this.S)if(t.test(s))return!1;return!!this.M.some(t=>t.test(s))}},t.cleanupOutdatedCaches=function(){self.addEventListener("activate",t=>{const e=f();t.waitUntil((async(t,e="-precache-")=>{const s=(await self.caches.keys()).filter(s=>s.includes(e)&&s.includes(self.registration.scope)&&s!==t);return await Promise.all(s.map(t=>self.caches.delete(t))),s})(e).then(t=>{}))})},t.clientsClaim=function(){self.addEventListener("activate",()=>self.clients.claim())},t.createHandlerBoundToURL=function(t){return N().createHandlerBoundToURL(t)},t.precacheAndRoute=function(t,e){!function(t){N().precache(t)}(t),function(t){const e=N();h(new P(e,t))}(e)},t.registerRoute=h});