@ahmadmoussawi/webdb 0.1.4 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +50 -6
  2. package/dist/angular.cjs +2 -0
  3. package/dist/angular.cjs.map +1 -0
  4. package/dist/angular.d.ts +92 -0
  5. package/dist/angular.js +108 -0
  6. package/dist/angular.js.map +1 -0
  7. package/dist/core/index.d.ts +6 -2
  8. package/dist/core/index.d.ts.map +1 -1
  9. package/dist/core/js/catalog.c.d.ts +88 -27
  10. package/dist/core/js/catalog.c.d.ts.map +1 -1
  11. package/dist/core/js/codecs.c.d.ts +8 -0
  12. package/dist/core/js/codecs.c.d.ts.map +1 -1
  13. package/dist/core/js/page.c.d.ts +32 -2
  14. package/dist/core/js/page.c.d.ts.map +1 -1
  15. package/dist/core/js/vm.c.d.ts +43 -0
  16. package/dist/core/js/vm.c.d.ts.map +1 -1
  17. package/dist/core/js/vm.helpers.c.d.ts +326 -72
  18. package/dist/core/js/vm.helpers.c.d.ts.map +1 -1
  19. package/dist/core/wasm/embedded_wasm.d.ts +1 -1
  20. package/dist/core/wasm/embedded_wasm.d.ts.map +1 -1
  21. package/dist/core/wasm/wasm_core.d.ts +7 -4
  22. package/dist/core/wasm/wasm_core.d.ts.map +1 -1
  23. package/dist/host/api/index.d.ts +1 -0
  24. package/dist/host/api/index.d.ts.map +1 -1
  25. package/dist/host/api/live_query.d.ts +84 -0
  26. package/dist/host/api/live_query.d.ts.map +1 -0
  27. package/dist/host/api/query_builder.d.ts +21 -0
  28. package/dist/host/api/query_builder.d.ts.map +1 -1
  29. package/dist/host/api/webdb.d.ts +8 -0
  30. package/dist/host/api/webdb.d.ts.map +1 -1
  31. package/dist/host/compiler/compiler.d.ts +1 -0
  32. package/dist/host/compiler/compiler.d.ts.map +1 -1
  33. package/dist/host/driver/buffer_pool_driver.d.ts +1 -0
  34. package/dist/host/driver/buffer_pool_driver.d.ts.map +1 -1
  35. package/dist/react.cjs +2 -0
  36. package/dist/react.cjs.map +1 -0
  37. package/dist/react.d.ts +52 -0
  38. package/dist/react.js +66 -0
  39. package/dist/react.js.map +1 -0
  40. package/dist/shared/c_runtime.d.ts +4 -0
  41. package/dist/shared/c_runtime.d.ts.map +1 -1
  42. package/dist/shared/vm_context.d.ts +11 -0
  43. package/dist/shared/vm_context.d.ts.map +1 -1
  44. package/dist/types/index.d.ts +4 -0
  45. package/dist/types/index.d.ts.map +1 -1
  46. package/dist/vue.cjs +2 -0
  47. package/dist/vue.cjs.map +1 -0
  48. package/dist/vue.d.ts +100 -0
  49. package/dist/vue.js +80 -0
  50. package/dist/vue.js.map +1 -0
  51. package/dist/webdb.js +11648 -9554
  52. package/dist/webdb.js.map +1 -1
  53. package/dist/webdb.umd.cjs +4 -4
  54. package/dist/webdb.umd.cjs.map +1 -1
  55. package/package.json +40 -3
@@ -1,5 +1,5 @@
1
- (function(E,Ht){typeof exports=="object"&&typeof module<"u"?Ht(exports):typeof define=="function"&&define.amd?define(["exports"],Ht):(E=typeof globalThis<"u"?globalThis:E||self,Ht(E.WebDB={}))})(this,function(E){"use strict";var yc=Object.defineProperty;var Tc=(E,Ht,wn)=>Ht in E?yc(E,Ht,{enumerable:!0,configurable:!0,writable:!0,value:wn}):E[Ht]=wn;var U=(E,Ht,wn)=>Tc(E,typeof Ht!="symbol"?Ht+"":Ht,wn);const ra=[["TYPE",1],["FLAGS",1],["CELL_COUNT",2],["CONTENT_OFFSET",2],["NEXT_PAGE_ID",4],["FREE_BYTES",2],["CHECKSUM",4]],Kt=16,rr=0,oa=1,aa=2,la=4,or=6,ca=10,Re=12,ua=[["CHILD_PAGE_ID",4],["ROWID",8]],ar=12,fa=0,Aa=4,lr=291,cr=145,ne=64,ha=[["MAGIC",6],["PAGE_SIZE",2],["FILE_FORMAT_VERSION",2],["MIN_READ_VERSION",2],["TOTAL_PAGES",4],["FREE_PAGE_HEAD",4],["SCHEMA_VERSION",4],["CHANGE_COUNTER",4],["PAGE_CHECKSUM",4],["NEXT_CATALOG_PAGE_ID",4],["NEXT_INDEX_CATALOG_PAGE_ID",4],["RESERVED",60]],ga=100,Ee=0,Hs=6,Vs=8,$s=10,se=12,le=16,Ie=20,pe=24,ye=28,ur=32,fr=36,_a=40,da=16,ma=8,ce=16,Je=8,Sn=100,Un=2148,Ea=3172,Ia=4,pa=3176,ya=920,Te=56,ue=256,Ta=[["TABLE_ID",2],["COLUMN_COUNT",2],["ROOT_PAGE_ID",4],["COL_CATALOG_PAGE_ID",4],["NAME",64],["FLAGS",4],["ROW_COUNT_ESTIMATE",4],["AUTO_INC_NEXT",8],["RESERVED",36]],Fe=128,Ca=0,wa=2,Sa=4,Ua=8,Oa=12,Pa=76,Na=80,ba=84,Ba=92,La=[["INDEX_ID",2],["TABLE_ID",2],["ROOT_PAGE_ID",4],["COLUMN_COUNT",1],["FLAGS",1],["COLUMN_INDICES",16],["COL_DIRECTIONS",8],["NAME",64],["RESERVED",30]],De=128,Ra=0,Fa=2,Da=4,Qa=8,va=9,ka=10,Ma=26,Ga=34,qa=98,Wa=[["PAGE_TYPE",1],["FLAGS",1],["COL_COUNT_IN_PAGE",2],["TABLE_ID",2],["START_COL_INDEX",2],["NEXT_COL_CATALOG_PAGE_ID",4],["PAGE_CHECKSUM",4]],xs=16,Ha=0,Va=1,$a=2,xa=4,Xa=6,Ya=8,Za=12,ja=[["TYPE",1],["FLAGS",1],["COL_OFFSET",2],["NAME",64],["RESERVED",4]],Xs=72,Ka=0,Ja=1,za=2,tl=4,el=68,nl=4194304,Qe=1024,sl=1024,qt=2048,Ce=8,Ar=16384,hr=12288,Ys=65536,gr=32768,_r=4096,dr=61312,ve=16777216,il=[["SLOT_TO_PAGE",4096],["PAGE_TO_SLOT",16384],["DIRTY_MASK",128],["VM_CONTEXT",12288],["RESULT_BUFFER",65536],["BYTECODE",32768],["PAGE_SCRATCHPAD",4096],["ALIGNMENT_PADDING",61312]],Yn=4194304,Mt=4198400,mr=4214784,Er=4214912,On=4227200,Ir=4292736,pr=4325504,rl=4329600,yr=4390912,ol=21168128;function Zs(e,t=ve){const n=e*4096,s=e*4+7&-8;let i=16;for(;i<e*2;)i<<=1;const r=i*8,o=Math.ceil(e/8)+7&-8;if(e===Qe)return{slotsEndOffset:n,slotToPageOffset:Yn,pageToSlotOffset:Mt,pageToSlotBuckets:qt,dirtyMaskOffset:mr,vmContextOffset:Er,resultBufferOffset:On,bytecodeOffset:Ir,pageScratchpadOffset:pr,transientArenaOffset:yr};const a=n,c=a+s,l=c+r,u=l+o,_=u+hr,A=_+Ys,f=A+gr,g=f+_r+dr;return{slotsEndOffset:n,slotToPageOffset:a,pageToSlotOffset:c,pageToSlotBuckets:i,dirtyMaskOffset:l,vmContextOffset:u,resultBufferOffset:_,bytecodeOffset:A,pageScratchpadOffset:f,transientArenaOffset:g}}const we=4096,ze=4128,Tr=1,Pn=1463897158,Zn=1,jn=2,Kn=3,al=[["MAGIC",6],["WAL_VERSION",2],["PAGE_SIZE",4],["CHECKPOINT_SEQ",4],["SALT1",4],["SALT2",4],["CHECKSUM",4],["RESERVED",4]],Jn=32,js=0,Ks=6,Js=8,zs=12,ti=16,ei=20,ni=24,Cr=28,ll=[["MAGIC",4],["FRAME_TYPE",2],["FLAGS",2],["TX_ID",4],["PAGE_ID",4],["DB_SIZE_PAGES",4],["FRAME_SEQ",4],["CHECKSUM",4],["RESERVED",4]],ke=32,si=0,ii=4,ri=6,oi=8,ai=12,li=16,ci=20,ui=24,wr=28,zn=1,Sr=1,Me=0,Ur=2,fi=5,ts=10,Nn=12,es=13,cl=1280,ul=8,fl=64,Al=16,hl=7,gl=32,Or=1e4,Dt=1e4;function Pr(){return{pageId:0,rootPageId:0,slotIdx:0,cellIdx:0,rowOffset:0,btreeDepth:0,flags:0}}function Nr(){const e=Array.from({length:16},()=>Pr());return{pc:0,status:O.RUNNING,fault_page_id:0,resultCount:0,resultOffset:0,arenaOffset:0,maxQueryMemory:ve,rowsAffected:0,registers:new Array(64).fill(null),cursor:e[0],cursors:e,keyInfos:[],sorters:[],aggregators:[],table:null,tables:void 0,outputColumns:void 0,inSets:[]}}function br(e,t,n){e.pc=0,e.status=O.RUNNING,e.fault_page_id=0,e.resultCount=0,e.resultOffset=0,e.arenaOffset=0,e.maxQueryMemory=ve,e.rowsAffected=0,e.registers.fill(null);for(let s=0;s<e.cursors.length;s++){const i=e.cursors[s];i.pageId=0,i.rootPageId=0,i.slotIdx=0,i.cellIdx=0,i.rowOffset=0,i.btreeDepth=0,i.flags=0}e.cursor=e.cursors[0],e.keyInfos=[],e.sorters=[],e.aggregators=[],e.table=t??null,e.tables=n,e.outputColumns=void 0,e.inSets=[]}var C=(e=>(e[e.NULL=0]="NULL",e[e.INT32=1]="INT32",e[e.INT64=2]="INT64",e[e.FLOAT64=3]="FLOAT64",e[e.TEXT=4]="TEXT",e[e.BLOB=5]="BLOB",e[e.UUID=6]="UUID",e[e.ULID=7]="ULID",e))(C||{}),tt=(e=>(e[e.NONE=0]="NONE",e[e.PRIMARY_KEY=1]="PRIMARY_KEY",e[e.NOT_NULL=2]="NOT_NULL",e[e.INDEXED=4]="INDEXED",e[e.AUTO_INC=8]="AUTO_INC",e))(tt||{}),bn=(e=>(e[e.NONE=0]="NONE",e[e.ACTIVE=1]="ACTIVE",e[e.SYSTEM=2]="SYSTEM",e))(bn||{}),It=(e=>(e[e.NONE=0]="NONE",e[e.UNIQUE=1]="UNIQUE",e[e.PRIMARY=2]="PRIMARY",e[e.SPATIAL_VECTOR=4]="SPATIAL_VECTOR",e))(It||{}),m=(e=>(e[e.OP_HALT=0]="OP_HALT",e[e.OP_OPEN_CURSOR=1]="OP_OPEN_CURSOR",e[e.OP_REWIND=2]="OP_REWIND",e[e.OP_NEXT_ROW=3]="OP_NEXT_ROW",e[e.OP_COLUMN_INT=4]="OP_COLUMN_INT",e[e.OP_COLUMN_FLOAT=5]="OP_COLUMN_FLOAT",e[e.OP_COLUMN_TEXT=6]="OP_COLUMN_TEXT",e[e.OP_COLUMN_BLOB=7]="OP_COLUMN_BLOB",e[e.OP_LAST=8]="OP_LAST",e[e.OP_PREV_ROW=9]="OP_PREV_ROW",e[e.OP_COLUMN_UUID=10]="OP_COLUMN_UUID",e[e.OP_COLUMN_ULID=11]="OP_COLUMN_ULID",e[e.OP_OPEN_INDEX=12]="OP_OPEN_INDEX",e[e.OP_INDEX_SEEK_EQ=13]="OP_INDEX_SEEK_EQ",e[e.OP_INDEX_SEEK_GE=14]="OP_INDEX_SEEK_GE",e[e.OP_INDEX_NEXT=15]="OP_INDEX_NEXT",e[e.OP_IS_NULL=16]="OP_IS_NULL",e[e.OP_IS_NOT_NULL=17]="OP_IS_NOT_NULL",e[e.OP_EQ=18]="OP_EQ",e[e.OP_NE=19]="OP_NE",e[e.OP_GT=20]="OP_GT",e[e.OP_GE=21]="OP_GE",e[e.OP_LT=22]="OP_LT",e[e.OP_LE=23]="OP_LE",e[e.OP_JUMP=24]="OP_JUMP",e[e.OP_STR_LIKE=25]="OP_STR_LIKE",e[e.OP_STR_NOT_LIKE=26]="OP_STR_NOT_LIKE",e[e.OP_STR_CONTAINS=27]="OP_STR_CONTAINS",e[e.OP_STR_STARTS_WITH=28]="OP_STR_STARTS_WITH",e[e.OP_STR_ENDS_WITH=29]="OP_STR_ENDS_WITH",e[e.OP_LOAD_BLOB=30]="OP_LOAD_BLOB",e[e.OP_IN=31]="OP_IN",e[e.OP_LOAD_INT=32]="OP_LOAD_INT",e[e.OP_LOAD_FLOAT=33]="OP_LOAD_FLOAT",e[e.OP_LOAD_TEXT=34]="OP_LOAD_TEXT",e[e.OP_LOAD_NULL=35]="OP_LOAD_NULL",e[e.OP_EMIT_ROW=36]="OP_EMIT_ROW",e[e.OP_RESULT_ROW=37]="OP_RESULT_ROW",e[e.OP_OFFSET=38]="OP_OFFSET",e[e.OP_LIMIT=39]="OP_LIMIT",e[e.OP_CALL_UDF=40]="OP_CALL_UDF",e[e.OP_STR_LOWER=41]="OP_STR_LOWER",e[e.OP_STR_UPPER=42]="OP_STR_UPPER",e[e.OP_STR_LENGTH=43]="OP_STR_LENGTH",e[e.OP_STR_SUBSTR=44]="OP_STR_SUBSTR",e[e.OP_STR_TRIM=45]="OP_STR_TRIM",e[e.OP_MATH_ABS=46]="OP_MATH_ABS",e[e.OP_MATH_ROUND=47]="OP_MATH_ROUND",e[e.OP_SORTER_OPEN=48]="OP_SORTER_OPEN",e[e.OP_SORTER_INSERT=49]="OP_SORTER_INSERT",e[e.OP_SORTER_SORT=50]="OP_SORTER_SORT",e[e.OP_SORTER_NEXT=51]="OP_SORTER_NEXT",e[e.OP_MATH_FLOOR=52]="OP_MATH_FLOOR",e[e.OP_MATH_CEIL=53]="OP_MATH_CEIL",e[e.OP_ADD=54]="OP_ADD",e[e.OP_SUB=55]="OP_SUB",e[e.OP_MUL=56]="OP_MUL",e[e.OP_DIV=57]="OP_DIV",e[e.OP_MOD=58]="OP_MOD",e[e.OP_ENTER_SUBQUERY=59]="OP_ENTER_SUBQUERY",e[e.OP_RETURN_SUBQUERY=60]="OP_RETURN_SUBQUERY",e[e.OP_STR_CONCAT=61]="OP_STR_CONCAT",e[e.OP_COALESCE=62]="OP_COALESCE",e[e.OP_COPY=63]="OP_COPY",e[e.OP_AGG_INIT=64]="OP_AGG_INIT",e[e.OP_AGG_STEP=65]="OP_AGG_STEP",e[e.OP_AGG_NEXT=66]="OP_AGG_NEXT",e[e.OP_AGG_FINAL=67]="OP_AGG_FINAL",e[e.OP_REG_IS_NULL=72]="OP_REG_IS_NULL",e[e.OP_REG_IS_NOT_NULL=73]="OP_REG_IS_NOT_NULL",e[e.OP_DELETE_ROW=80]="OP_DELETE_ROW",e[e.OP_UPDATE_FIELD=81]="OP_UPDATE_FIELD",e[e.OP_INSERT_ROW=82]="OP_INSERT_ROW",e))(m||{}),O=(e=>(e[e.RUNNING=0]="RUNNING",e[e.DONE=1]="DONE",e[e.PAGE_FAULT=2]="PAGE_FAULT",e[e.BUFFER_FULL=3]="BUFFER_FULL",e[e.ERROR=4]="ERROR",e[e.TIMEOUT=5]="TIMEOUT",e[e.ARENA_EXHAUSTED=6]="ARENA_EXHAUSTED",e[e.INVALID_BYTECODE=7]="INVALID_BYTECODE",e))(O||{});class Br extends Error{constructor(t,n=2048){super(`Row size (${t} bytes) exceeds maximum limit of ${n} bytes`),this.name="RowSizeLimitExceededError"}}class ns extends Error{constructor(t,n){super(`NOT NULL constraint failed: ${n?n+".":""}${t}`),this.name="NotNullConstraintError"}}class Lr extends Error{constructor(t,n=64){super(`Identifier "${t}" (${t.length} characters) exceeds maximum limit of ${n} characters`),this.name="IdentifierTooLongError"}}class ss extends Error{constructor(t,n){super(n?`Column "${t}" already exists on table "${n}"`:`Column "${t}" already exists`),this.name="ColumnAlreadyExistsError"}}class Ai extends Error{constructor(t){super(t),this.name="CannotDropColumnError"}}class fe extends Error{constructor(t,n){super(n?`Column "${t}" not found on table "${n}"`:`Column "${t}" not found`),this.name="ColumnNotFoundError"}}class Bn extends Error{constructor(t){super(`Table not found: "${t}"`),this.name="TableNotFoundError"}}class is extends Error{constructor(t){super(`Table already exists: "${t}"`),this.name="TableAlreadyExistsError"}}class Rr extends Error{constructor(t){super(`Index not found: "${t}"`),this.name="IndexNotFoundError"}}class hi extends Error{constructor(t){super(`Index already exists: "${t}"`),this.name="IndexAlreadyExistsError"}}class tn extends Error{constructor(t){super(t),this.name="UniqueConstraintViolationError"}}class Se extends Error{constructor(t,n,s){super(`Corrupted page detected (pageId: ${t}): stored checksum ${n}${s!==void 0?`, computed checksum ${s}`:""}`),this.pageId=t,this.storedChecksum=n,this.computedChecksum=s,this.name="CorruptPageError"}}class Ln extends Error{constructor(t,n=256){super(`Too many columns: ${t} exceeds maximum limit of ${n} columns`),this.name="TooManyColumnsError"}}class gi extends Error{constructor(t,n=16){super(`Too many tables: ${t} exceeds maximum limit of ${n} tables on Page 1`),this.name="TooManyTablesError"}}class Fr extends Error{constructor(t,n=8){super(`Too many indexes: ${t} exceeds maximum limit of ${n} indexes on Page 1`),this.name="TooManyIndexesError"}}class Dr extends Error{constructor(t){super(t),this.name="UnsupportedFormatVersionError"}}class Rn extends Error{constructor(t){super(t),this.name="InvalidDatabaseError"}}class _i extends Error{constructor(t="Transient query arena exhausted"){super(t),this.name="QueryArenaExhaustedError"}}class rs extends Error{constructor(t,n=16){super(`Too many cursors: ${t} exceeds maximum limit of ${n} cursors`),this.name="TooManyCursorsError"}}class st extends Error{constructor(t,n=64){super(`Too many registers: ${t} exceeds maximum limit of ${n} registers`),this.name="TooManyRegistersError"}}class Qr extends Error{constructor(t,n=7){super(`Subquery nesting depth ${t} exceeds maximum limit of ${n}`),this.name="SubqueryNestingTooDeepError"}}class vr extends Error{constructor(t="Query execution exceeded maximum cycle limit (TIMEOUT)"){super(t),this.name="QueryTimeoutError"}}class kr extends Error{constructor(t="Malformed bytecode execution halted (INVALID_BYTECODE)"){super(t),this.name="InvalidBytecodeError"}}class Mr extends Error{constructor(t,n=8){super(`Too many order by columns: ${t} exceeds maximum limit of ${n}`),this.name="TooManyOrderByColumnsError"}}class Gr extends Error{constructor(t,n=8){super(`Too many group by columns: ${t} exceeds maximum limit of ${n}`),this.name="TooManyGroupByColumnsError"}}class di extends Error{constructor(t){super(`Function "${t}" is neither a native built-in function nor a registered UDF`),this.name="UnknownFunctionError"}}class os extends Error{constructor(t){super(`Aggregate function "${t}" cannot be used in WHERE clause`),this.name="AggregateNotAllowedInWhereError"}}class as extends Error{constructor(t="Corrupted WAL file header detected"){super(t),this.name="CorruptWalHeaderError"}}class Fn extends Error{constructor(t="Corrupted WAL frame detected"){super(t),this.name="CorruptWalFrameError"}}class qr{constructor(){U(this,"name","memory");U(this,"isSynchronous",!0);U(this,"pages",new Map);U(this,"walHeader",null);U(this,"walFrames",[])}async readPages(t){return t.map(n=>{const s=this.pages.get(n);return s?new Uint8Array(s):null})}async writePages(t){for(const{pageId:n,data:s}of t){const i=new Uint8Array(s.byteLength);i.set(s),this.pages.set(n,i)}}async flush(){}async truncate(t){for(const n of Array.from(this.pages.keys()))n>t&&this.pages.delete(n)}snapshot(){const t=new Map;for(const[n,s]of this.pages.entries())t.set(n,new Uint8Array(s));return t}restoreSnapshot(t){this.pages.clear();for(const[n,s]of t.entries())this.pages.set(n,new Uint8Array(s))}async readWalHeader(){return this.walHeader?new Uint8Array(this.walHeader):null}async writeWalHeader(t){const n=new Uint8Array(t.byteLength);n.set(t),this.walHeader=n}async readWalFrames(t,n){const s=n!==void 0?t+n:this.walFrames.length;return this.walFrames.slice(t,s).map(r=>new Uint8Array(r))}async appendWalFrames(t){for(const n of t){const s=new Uint8Array(n.byteLength);s.set(n),this.walFrames.push(s)}}async flushWal(){}async truncateWal(t){t===0?(this.walFrames=[],this.walHeader=null):this.walFrames.length=Math.min(this.walFrames.length,t)}async getWalFrameCount(){return this.walFrames.length}async close(){}}class Wr{constructor(t){U(this,"name","idb");U(this,"isSynchronous",!1);U(this,"dbName");U(this,"dbPromise",null);this.dbName=`webdb_${t}`}getDb(){return this.dbPromise||(this.dbPromise=new Promise((t,n)=>{const s=globalThis.indexedDB;if(!s){n(new Error("IndexedDB is not available in the current environment"));return}const i=s.open(this.dbName,1);i.onupgradeneeded=()=>{const r=i.result;r.objectStoreNames.contains("pages")||r.createObjectStore("pages"),r.objectStoreNames.contains("wal_frames")||r.createObjectStore("wal_frames"),r.objectStoreNames.contains("wal_meta")||r.createObjectStore("wal_meta")},i.onsuccess=()=>t(i.result),i.onerror=()=>n(i.error)})),this.dbPromise}async readPages(t){if(t.length===0)return[];const n=await this.getDb();return new Promise((s,i)=>{const r=n.transaction("pages","readonly"),o=r.objectStore("pages"),a=new Array(t.length).fill(null);for(let c=0;c<t.length;c++){const l=o.get(t[c]);l.onsuccess=()=>{const u=l.result;u&&(a[c]=u instanceof Uint8Array?u:new Uint8Array(u))}}r.oncomplete=()=>s(a),r.onerror=()=>i(r.error),r.onabort=()=>i(r.error)})}async writePages(t){if(t.length===0)return;const n=await this.getDb();return new Promise((s,i)=>{const r=n.transaction("pages","readwrite"),o=r.objectStore("pages");for(const{pageId:a,data:c}of t){const l=new Uint8Array(c.byteLength);l.set(c),o.put(l,a)}r.oncomplete=()=>s(),r.onerror=()=>i(r.error),r.onabort=()=>i(r.error)})}async flush(){}async truncate(t){const n=await this.getDb();return new Promise((s,i)=>{const o=n.transaction("pages","readwrite").objectStore("pages"),a=IDBKeyRange.lowerBound(t,!0),c=o.delete(a);c.onsuccess=()=>s(),c.onerror=()=>i(c.error)})}async readWalHeader(){const t=await this.getDb();return new Promise((n,s)=>{const o=t.transaction("wal_meta","readonly").objectStore("wal_meta").get("header");o.onsuccess=()=>{const a=o.result;n(a?a instanceof Uint8Array?a:new Uint8Array(a):null)},o.onerror=()=>s(o.error)})}async writeWalHeader(t){const n=await this.getDb();return new Promise((s,i)=>{const r=n.transaction("wal_meta","readwrite"),o=r.objectStore("wal_meta"),a=new Uint8Array(t.byteLength);a.set(t),o.put(a,"header"),r.oncomplete=()=>s(),r.onerror=()=>i(r.error),r.onabort=()=>i(r.error)})}async readWalFrames(t,n){const s=await this.getDb();return new Promise((i,r)=>{const a=s.transaction("wal_frames","readonly").objectStore("wal_frames"),c=[],l=n!==void 0?IDBKeyRange.bound(t,t+n-1):IDBKeyRange.lowerBound(t,!1),u=a.openCursor(l);u.onsuccess=()=>{const _=u.result;if(_){const A=_.value;c.push(A instanceof Uint8Array?A:new Uint8Array(A)),_.continue()}else i(c)},u.onerror=()=>r(u.error)})}async appendWalFrames(t){if(t.length===0)return;const n=await this.getDb();return new Promise((s,i)=>{const r=n.transaction("wal_frames","readwrite"),o=r.objectStore("wal_frames"),a=o.count();a.onsuccess=()=>{let c=a.result;for(const l of t){const u=new Uint8Array(l.byteLength);u.set(l),o.put(u,c++)}},r.oncomplete=()=>s(),r.onerror=()=>i(r.error),r.onabort=()=>i(r.error)})}async flushWal(){}async truncateWal(t){const n=await this.getDb();return new Promise((s,i)=>{const r=n.transaction(["wal_frames","wal_meta"],"readwrite"),o=r.objectStore("wal_frames"),a=r.objectStore("wal_meta");if(t===0)o.clear(),a.delete("header");else{const c=IDBKeyRange.lowerBound(t,!1);o.delete(c)}r.oncomplete=()=>s(),r.onerror=()=>i(r.error),r.onabort=()=>i(r.error)})}async getWalFrameCount(){const t=await this.getDb();return new Promise((n,s)=>{const o=t.transaction("wal_frames","readonly").objectStore("wal_frames").count();o.onsuccess=()=>n(o.result),o.onerror=()=>s(o.error)})}async close(){this.dbPromise&&((await this.dbPromise).close(),this.dbPromise=null)}}class Hr{constructor(t){U(this,"name","opfs");U(this,"isSynchronous");U(this,"dbName");U(this,"rootDir",null);U(this,"dbFileHandle",null);U(this,"walFileHandle",null);U(this,"dbSyncHandle",null);U(this,"walSyncHandle",null);this.dbName=t,this.isSynchronous=typeof globalThis.FileSystemSyncAccessHandle<"u"}async initHandles(){var t;if(!this.rootDir){if(!((t=navigator==null?void 0:navigator.storage)!=null&&t.getDirectory))throw new Error("OPFS (Origin Private File System) is not available in the current environment");if(this.rootDir=await navigator.storage.getDirectory(),this.dbFileHandle=await this.rootDir.getFileHandle(`${this.dbName}.db`,{create:!0}),this.walFileHandle=await this.rootDir.getFileHandle(`${this.dbName}.wal`,{create:!0}),this.isSynchronous)try{this.dbSyncHandle=await this.dbFileHandle.createSyncAccessHandle(),this.walSyncHandle=await this.walFileHandle.createSyncAccessHandle()}catch{}}}async readPages(t){if(t.length===0)return[];if(await this.initHandles(),this.dbSyncHandle){const i=this.dbSyncHandle.getSize();return t.map(r=>{const o=(r-1)*4096;if(o+4096>i)return null;const a=new Uint8Array(4096);return this.dbSyncHandle.read(a,{at:o}),a})}const n=await this.dbFileHandle.getFile(),s=[];for(const i of t){const r=(i-1)*4096;if(r+4096>n.size)s.push(null);else{const a=await n.slice(r,r+4096).arrayBuffer();s.push(new Uint8Array(a))}}return s}async writePages(t){if(t.length===0)return;if(await this.initHandles(),this.dbSyncHandle){for(const{pageId:s,data:i}of t){const r=(s-1)*4096;this.dbSyncHandle.write(i,{at:r})}return}const n=await this.dbFileHandle.createWritable({keepExistingData:!0});for(const{pageId:s,data:i}of t){const r=(s-1)*4096;await n.seek(r),await n.write(i)}await n.close()}async flush(){this.dbSyncHandle&&this.dbSyncHandle.flush()}async truncate(t){await this.initHandles();const n=t*4096;if(this.dbSyncHandle){this.dbSyncHandle.truncate(n);return}const s=await this.dbFileHandle.createWritable({keepExistingData:!0});await s.truncate(n),await s.close()}async readWalHeader(){if(await this.initHandles(),this.walSyncHandle){if(this.walSyncHandle.getSize()<32)return null;const i=new Uint8Array(32);return this.walSyncHandle.read(i,{at:0}),i}const t=await this.walFileHandle.getFile();if(t.size<32)return null;const n=t.slice(0,32);return new Uint8Array(await n.arrayBuffer())}async writeWalHeader(t){if(await this.initHandles(),this.walSyncHandle){this.walSyncHandle.write(t,{at:0});return}const n=await this.walFileHandle.createWritable({keepExistingData:!0});await n.seek(0),await n.write(t),await n.close()}async readWalFrames(t,n){await this.initHandles();const s=[];let i=t;const r=n!==void 0?t+n:1/0;if(this.walSyncHandle){const a=this.walSyncHandle.getSize();for(;i<r;){const c=32+i*4128;if(c>=a)break;const l=Math.min(4128,a-c),u=new Uint8Array(l);this.walSyncHandle.read(u,{at:c}),s.push(u),i++}return s}const o=await this.walFileHandle.getFile();for(;i<r;){const a=32+i*4128;if(a>=o.size)break;const c=Math.min(4128,o.size-a),l=o.slice(a,a+c);s.push(new Uint8Array(await l.arrayBuffer())),i++}return s}async appendWalFrames(t){if(await this.initHandles(),this.walSyncHandle){let i=Math.max(32,this.walSyncHandle.getSize());for(const r of t)this.walSyncHandle.write(r,{at:i}),i+=r.byteLength;return}const n=await this.walFileHandle.getFile(),s=await this.walFileHandle.createWritable({keepExistingData:!0});await s.seek(Math.max(32,n.size));for(const i of t)await s.write(i);await s.close()}async flushWal(){this.walSyncHandle&&this.walSyncHandle.flush()}async truncateWal(t){await this.initHandles();const n=t===0?0:32+t*4128;if(this.walSyncHandle){this.walSyncHandle.truncate(n);return}const s=await this.walFileHandle.createWritable({keepExistingData:t>0});await s.truncate(n),await s.close()}async getWalFrameCount(){await this.initHandles();let t=0;return this.walSyncHandle?t=this.walSyncHandle.getSize():t=(await this.walFileHandle.getFile()).size,t<=32?0:Math.ceil((t-32)/4128)}async close(){this.dbSyncHandle&&(this.dbSyncHandle.close(),this.dbSyncHandle=null),this.walSyncHandle&&(this.walSyncHandle.close(),this.walSyncHandle=null),this.dbFileHandle=null,this.walFileHandle=null,this.rootDir=null}}const en=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;en[e]=t>>>0}function mi(e,t=0,n=e.byteLength-t){let s=4294967295;const i=t+n;for(let r=t;r<i;r++)s=en[(s^e[r])&255]^s>>>8;return(s^4294967295)>>>0}function Ge(e){let t=4294967295;for(let n=0;n<4096;n++){const s=n>=12&&n<=15?0:e[n];t=en[(t^s)&255]^t>>>8}return(t^4294967295)>>>0}function Ei(e){let t=4294967295;for(let n=0;n<4096;n++){const s=n>=28&&n<=31?0:e[n];t=en[(t^s)&255]^t>>>8}return(t^4294967295)>>>0}function ls(e){let t=4294967295;for(let s=0;s<24;s++)t=en[(t^e[s])&255]^t>>>8;const n=Math.min(e.byteLength,4128);for(let s=32;s<n;s++)t=en[(t^e[s])&255]^t>>>8;return(t^4294967295)>>>0}function nn(e,t,n,s,i){const r=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength),o=n instanceof Uint8Array?n:new Uint8Array(n.buffer,n.byteOffset,n.byteLength);r.set(o.subarray(s,s+i),t)}function ie(e,t,n,s){(e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength)).fill(n&255,t,t+s)}function _l(e,t,n,s,i){const r=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength),o=n instanceof Uint8Array?n:new Uint8Array(n.buffer,n.byteOffset,n.byteLength);for(let a=0;a<i;a++){const c=r[t+a]-o[s+a];if(c!==0)return c}return 0}function cs(e){return e.length}function Vr(e,t){return e instanceof Uint8Array?e[t]:e.getUint8(t)}function dl(e,t,n){e instanceof Uint8Array?e[t]=n&255:e.setUint8(t,n&255)}function us(e,t){return e.getUint16(t,!0)}function fs(e,t,n){e.setUint16(t,n&65535,!0)}function yt(e,t){return e.getUint32(t,!0)}function Tt(e,t,n){e.setUint32(t,n>>>0,!0)}function ml(e,t){return e.getInt32(t,!0)}function El(e,t,n){e.setInt32(t,n|0,!0)}function Il(e,t){return e.getFloat64(t,!0)}function pl(e,t,n){e.setFloat64(t,n,!0)}function yl(e,t){return e.getBigUint64(t,!0)}function Tl(e,t,n){e.setBigUint64(t,n,!0)}function Cl(e,t){return e.getBigInt64(t,!0)}function wl(e,t,n){e.setBigInt64(t,n,!0)}function $r(e,t,n){return n!==void 0?e[t+(n>>3)]&1<<(n&7)?1:0:e[t>>3]&1<<(t&7)?1:0}function xr(e,t,n){n!==void 0?e[t+(n>>3)]|=1<<(n&7):e[t>>3]|=1<<(t&7)}function Xr(e,t,n){n!==void 0?e[t+(n>>3)]&=~(1<<(n&7)):e[t>>3]&=~(1<<(t&7))}function Yr(e,t){if(!e)throw new Error(`Assertion failed: ${t}`)}class Ii{constructor(t){U(this,"vfs");U(this,"buffer");U(this,"uint8");U(this,"view");U(this,"in_flight_flushes",new Map);U(this,"in_flight_reads",new Map);U(this,"coordinator",null);if(!t.vfs)throw new Error("Io requires a valid IVfsAdapter instance");if(!t.memory)throw new Error("Io requires a valid memory buffer or WebAssembly.Memory");this.vfs=t.vfs,this.buffer=t.memory instanceof WebAssembly.Memory?t.memory.buffer:t.memory,this.uint8=new Uint8Array(this.buffer),this.view=new DataView(this.buffer)}setTransactionCoordinator(t){this.coordinator=t}isInTransaction(){return this.coordinator?this.coordinator.isInTransaction():!1}stampSlotChecksum(t,n){const s=t*4096,i=this.uint8.subarray(s,s+4096);if(n===1){const r=Ei(i);Tt(this.view,s+ye,r)}else{const r=Ge(i);Tt(this.view,s+Re,r)}}async readSlot(t,n){if(n<=0)throw new Error(`Invalid page ID: ${n}. Page IDs must be positive integers.`);if(this.coordinator&&this.coordinator.hasSpilledPage(n)){const o=t*4096,a=this.coordinator.getSpilledPage(n);this.uint8.set(a,o);return}const s=this.in_flight_flushes.get(n);s&&await s;const i=this.in_flight_reads.get(n);if(i){await i;return}const r=(async()=>{const[o]=await this.vfs.readPages([n]),a=t*4096;if(o){if(o.byteLength!==4096)throw new Se(n,`Unexpected page byte length: ${o.byteLength}, expected 4096`);const c=n===1?ye:Re,l=yt(new DataView(o.buffer,o.byteOffset),c);if(l!==0){const u=n===1?Ei(o):Ge(o);if(u!==l)throw new Se(n,l,u)}this.uint8.set(o,a)}else this.uint8.fill(0,a,a+4096)})();this.in_flight_reads.set(n,r);try{await r}finally{this.in_flight_reads.delete(n)}}async writeSlot(t,n){if(n<=0)throw new Error(`Invalid page ID: ${n}. Page IDs must be positive integers.`);const s=this.in_flight_flushes.get(n);if(s){await s;return}const i=t*4096,r=this.uint8.subarray(i,i+4096);this.stampSlotChecksum(t,n);const o=r.slice();this.coordinator&&this.coordinator.onDirectPageWrite(n,o);const a=this.vfs.writePages([{pageId:n,data:o}]);this.in_flight_flushes.set(n,a);try{await a}finally{this.in_flight_flushes.delete(n)}}async spillOrWriteSlot(t,n){this.coordinator&&this.coordinator.isInTransaction()?await this.coordinator.spillUncommittedSlot(t,n):await this.writeSlot(t,n)}async resolvePageFault(t,n,s){if(s>0&&(this.coordinator&&this.coordinator.isInTransaction()?await this.coordinator.spillUncommittedSlot(t,s):await this.writeSlot(t,s)),this.coordinator&&this.coordinator.hasSpilledPage(n)){const i=t*4096,r=this.coordinator.getSpilledPage(n);this.uint8.set(r,i)}else await this.readSlot(t,n)}async flush(){var t,n;await((n=(t=this.vfs).flush)==null?void 0:n.call(t))}}const pi=new Uint8Array([87,69,66,87,65,76]);function As(e={}){const t=new Uint8Array(Jn),n=new DataView(t.buffer,t.byteOffset,t.byteLength);t.set(pi,js),fs(n,Ks,e.walVersion??Tr),Tt(n,Js,e.pageSize??we),Tt(n,zs,e.checkpointSeq??0);const s=e.salt1??Math.floor(Math.random()*4294967295)>>>0;Tt(n,ti,s);const i=e.salt2??Math.floor(Math.random()*4294967295)>>>0;Tt(n,ei,i);const r=e.checksum??mi(t,0,24);return Tt(n,ni,r),Tt(n,Cr,0),t}function hs(e,t=!0){if(e.byteLength<Jn)throw new as(`Truncated WAL file header: expected at least ${Jn} bytes, received ${e.byteLength}`);for(let l=0;l<6;l++)if(e[js+l]!==pi[l])throw new as('Invalid WAL file header magic identifier (expected "WEBWAL")');const n=new DataView(e.buffer,e.byteOffset,e.byteLength),s=us(n,Ks),i=yt(n,Js),r=yt(n,zs),o=yt(n,ti),a=yt(n,ei),c=yt(n,ni);if(t){const l=mi(e,0,24);if(c!==l)throw new as(`WAL file header CRC32 checksum mismatch: stored ${c}, computed ${l}`)}return{walVersion:s,pageSize:i,checkpointSeq:r,salt1:o,salt2:a,checksum:c}}function gs(e,t){const n=new Uint8Array(ze),s=new DataView(n.buffer,n.byteOffset,n.byteLength);Tt(s,si,e.magic??Pn),fs(s,ii,e.frameType),fs(s,ri,e.flags??0),Tt(s,oi,e.txId),Tt(s,ai,e.pageId),Tt(s,li,e.dbSizePages??0),Tt(s,ci,e.frameSeq),Tt(s,wr,0),t&&n.set(t.subarray(0,we),ke);const i=e.checksum??ls(n);return Tt(s,ui,i),n}function yi(e){if(e.byteLength<ke)throw new Fn(`Truncated WAL frame header: expected at least ${ke} bytes, received ${e.byteLength}`);const t=new DataView(e.buffer,e.byteOffset,e.byteLength);return{magic:yt(t,si),frameType:us(t,ii),flags:us(t,ri),txId:yt(t,oi),pageId:yt(t,ai),dbSizePages:yt(t,li),frameSeq:yt(t,ci),checksum:yt(t,ui)}}function Ti(e){if(e.byteLength<ze)return{valid:!1,reason:"truncated"};const t=yi(e);if(t.magic!==Pn)return{valid:!1,reason:"magic_mismatch",header:t};const n=ls(e);return t.checksum!==n?{valid:!1,reason:"checksum_mismatch",header:t}:{valid:!0,header:t}}function Sl(e,t=!0){if(e.byteLength<ze)throw new Fn(`Truncated WAL frame: expected ${ze} bytes, received ${e.byteLength}`);const n=yi(e);if(n.magic!==Pn)throw new Fn(`Invalid WAL frame magic: expected 0x${Pn.toString(16)}, got 0x${n.magic.toString(16)}`);if(t){const i=ls(e);if(n.checksum!==i)throw new Fn(`WAL frame CRC32 checksum mismatch: stored ${n.checksum}, computed ${i}`)}const s=e.subarray(ke,ze);return{header:n,pageData:s}}const Zr=new TextDecoder,jr="0123456789abcdef",Ci="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function Ul(e){return e>=48&&e<=57?e-48:e>=97&&e<=102?e-97+10:e>=65&&e<=70?e-65+10:-1}function wi(e){if(e>=48&&e<=57)return e-48;switch(e>=97&&e<=122&&(e=e-32),e){case 65:return 10;case 66:return 11;case 67:return 12;case 68:return 13;case 69:return 14;case 70:return 15;case 71:return 16;case 72:return 17;case 74:return 18;case 75:return 19;case 77:return 20;case 78:return 21;case 80:return 22;case 81:return 23;case 82:return 24;case 83:return 25;case 84:return 26;case 86:return 27;case 87:return 28;case 88:return 29;case 89:return 30;case 90:return 31;case 73:case 76:return 1;case 79:return 0;default:return-1}}function Ol(e,t,n){let s=0,i=-1;for(let r=0;r<cs(e);r++){const o=e.charCodeAt(r);if(o!==45){if(s>=32)return-1;const a=Ul(o);if(a<0)return-1;s%2===0?i=a:t[n+(s>>1)]=i<<4|a,s++}}return s!==32?-1:0}function Pl(e,t,n){let s=0;for(let i=0;i<16;i++){(i===4||i===6||i===8||i===10)&&(n[s++]=45);const r=e[t+i];n[s++]=jr.charCodeAt(r>>4&15),n[s++]=jr.charCodeAt(r&15)}n[s]=0}class sn{static encode(t,n,s=0){if(Ol(t,n,s)!==0)throw new Error(`Invalid UUID format: "${t}" (must be 36 characters with hyphens)`)}static decode(t,n=0){const s=new Uint8Array(37);return Pl(t,n,s),Zr.decode(s.subarray(0,36))}}function Nl(e,t,n){if(cs(e)!==26)return-1;let s=0n;for(let o=0;o<10;o++){const a=wi(e.charCodeAt(o));if(a<0)return-1;s=s<<5n|BigInt(a)}t[n+0]=Number(s>>40n&0xffn),t[n+1]=Number(s>>32n&0xffn),t[n+2]=Number(s>>24n&0xffn),t[n+3]=Number(s>>16n&0xffn),t[n+4]=Number(s>>8n&0xffn),t[n+5]=Number(s&0xffn);let i=0n;for(let o=10;o<18;o++){const a=wi(e.charCodeAt(o));if(a<0)return-1;i=i<<5n|BigInt(a)}let r=0n;for(let o=18;o<26;o++){const a=wi(e.charCodeAt(o));if(a<0)return-1;r=r<<5n|BigInt(a)}for(let o=0;o<5;o++)t[n+6+o]=Number(i>>BigInt((4-o)*8)&0xffn),t[n+11+o]=Number(r>>BigInt((4-o)*8)&0xffn);return 0}function bl(e,t,n){let s=0n;for(let o=0;o<6;o++)s=s<<8n|BigInt(e[t+o]);for(let o=9;o>=0;o--)n[o]=Ci.charCodeAt(Number(s%32n)),s/=32n;let i=0n;for(let o=0;o<5;o++)i=i<<8n|BigInt(e[t+6+o]);let r=0n;for(let o=0;o<5;o++)r=r<<8n|BigInt(e[t+11+o]);for(let o=25;o>=18;o--)n[o]=Ci.charCodeAt(Number(r&31n)),r>>=5n;for(let o=17;o>=10;o--)n[o]=Ci.charCodeAt(Number(i&31n)),i>>=5n;n[26]=0}class rn{static encode(t,n,s=0){if(Nl(t,n,s)!==0)throw new Error(`Invalid ULID length: "${t}" (must be 26 Crockford Base32 characters)`)}static decode(t,n=0){const s=new Uint8Array(27);return bl(t,n,s),Zr.decode(s.subarray(0,26))}}const Si=new TextEncoder,_s=new TextDecoder;function Dn(e,t,n=es,s=0){e.setUint8(t+0,n),e.setUint8(t+1,0),e.setUint16(t+2,0,!0),e.setUint16(t+4,4096,!0),e.setUint32(t+6,s,!0),e.setUint16(t+10,0,!0),e.setUint32(t+Re,0,!0)}function Kr(e,t,n=0){e.setUint8(t+0,Me),e.setUint8(t+1,0),e.setUint16(t+2,0,!0),e.setUint16(t+4,0,!0),e.setUint32(t+6,n,!0),e.setUint16(t+10,0,!0),e.setUint32(t+Re,0,!0)}function qe(e,t){return e.getUint8(t+0)}function Bl(e,t,n){e.setUint8(t+0,n)}function ut(e,t){return e.getUint16(t+2,!0)}function We(e,t,n){e.setUint16(t+2,n,!0)}function He(e,t){return e.getUint16(t+4,!0)}function Ve(e,t,n){e.setUint16(t+4,n,!0)}function Ut(e,t){return e.getUint32(t+6,!0)}function ds(e,t,n){e.setUint32(t+6,n,!0)}function Ue(e,t){return e.getUint16(t+10,!0)}function $e(e,t,n){e.setUint16(t+10,n,!0)}function Ll(e,t){return e.getUint32(t+Re,!0)}function Rl(e,t,n){e.setUint32(t+Re,n,!0)}function ot(e,t,n){const s=t+Kt+n*2;return e.getUint16(s,!0)}function on(e,t,n,s){const i=t+Kt+n*2;e.setUint16(i,s,!0)}function ms(e,t){const n=ut(e,t),s=He(e,t),i=Kt+n*2;return s-i}function Jr(e,t){return ms(e,t)+Ue(e,t)}function Qn(e,t,n=0,s){const i=ut(e,t);if(i===0){Ve(e,t,4096),$e(e,t,0);return}let r=e,o=n;if(n===0||n===t||n+4096>e.byteLength){const c=new Uint8Array(4096);r=new DataView(c.buffer),o=0}nn(r,o,e,t,Kt);let a=4096;for(let c=0;c<i;c++){let l=0,u=e,_=0;if(s&&c===s.cell_idx)l=s.row_bytes.byteLength,u=s.row_bytes,_=0;else{const A=ot(e,t,c);qe(e,t)===ts?l=2+e.getUint16(t+A,!0)+8:l=Es(e,t+A),u=e,_=t+A}a=a-l,nn(r,o+a,u,_,l),on(r,o,c,a)}Ve(r,o,a),$e(r,o,0),nn(e,t,r,o,4096)}function Es(e,t){return e.getUint16(t+1,!0)}function an(e,t,n,s){const i=ut(e,t),r=He(e,t),o=n.byteLength+2,a=Kt+i*2,c=r-a,l=c+Ue(e,t);if(o>l)return-1;o>c&&Qn(e,t,s);const u=He(e,t),_=ut(e,t),A=u-n.byteLength,f=e.byteOffset+t+A;return new Uint8Array(e.buffer).set(n,f),on(e,t,_,A),We(e,t,_+1),Ve(e,t,A),_}function zr(e,t,n){const s=ut(e,t);if(n>=s)return;const i=ot(e,t,n),r=Es(e,t+i),o=t+Kt,a=o+(n+1)*2,c=o+n*2,l=(s-1-n)*2;l>0&&nn(e,c,e,a,l),We(e,t,s-1),$e(e,t,Ue(e,t)+r)}function Ui(e,t,n,s,i){const r=ut(e,t);if(n<0||n>=r)throw new Error(`Invalid cell index ${n} for update`);const o=ot(e,t,n),a=Es(e,t+o),c=s.byteLength,l=new Uint8Array(e.buffer);if(c<=a)return l.set(s,e.byteOffset+t+o),c<a&&$e(e,t,Ue(e,t)+(a-c)),!0;const u=Jr(e,t),_=c-a;if(u>=_){if(ms(e,t)<c)return Qn(e,t,i,{cell_idx:n,row_bytes:s}),!0;$e(e,t,Ue(e,t)+a);const g=He(e,t)-c;return l.set(s,e.byteOffset+t+g),on(e,t,n,g),Ve(e,t,g),!0}return!1}function Fl(e){const t=Array.isArray(e)?e:e.columns,n=Math.ceil(t.length/8);let s=0,i=0;for(let r=0;r<t.length;r++){const o=t[r];o.type===C.INT32?s+=4:o.type===C.INT64||o.type===C.FLOAT64?s+=8:o.type===C.UUID||o.type===C.ULID?s+=16:(o.type===C.TEXT||o.type===C.BLOB)&&i++}return{null_bitmap_bytes:n,fixed_slice_size:s,var_col_count:i}}function Is(e,t){const n=Array.isArray(e)?e:e.columns,s=n.length;if(s>ue)throw new Ln(s,ue);const i=Math.ceil(s/8),r=new Uint8Array(i);for(let p=0;p<s;p++){const y=n[p],T=t[y.name];if(T==null){if(y.flags&tt.NOT_NULL)throw new ns(y.name);const B=p>>3,P=1<<(p&7);r[B]|=P}}let o=0;for(let p=0;p<s;p++){const y=n[p];if(!((r[p>>3]&1<<(p&7))!==0))switch(y.type){case C.INT32:o+=4;break;case C.INT64:case C.FLOAT64:o+=8;break;case C.UUID:case C.ULID:o+=16;break}}const a=[];for(let p=0;p<s;p++){const y=n[p];if(y.type===C.TEXT||y.type===C.BLOB)if((r[p>>3]&1<<(p&7))!==0)a.push({col_idx:p,col:y,payload:null});else{const N=t[y.name];let B;y.type===C.TEXT?B=Si.encode(String(N??"")):B=N instanceof Uint8Array?N:new Uint8Array(N),a.push({col_idx:p,col:y,payload:B})}}const c=a.length*4,l=3+i+o+c;let u=0;for(let p=0;p<a.length;p++){const y=a[p];y.payload&&(u+=y.payload.byteLength)}const _=l+u;if(_>2048)throw new Br(_,2048);const A=new Uint8Array(_),f=new DataView(A.buffer);f.setUint8(0,1),f.setUint16(1,_,!0),A.set(r,3);let g=3+i;for(let p=0;p<s;p++){const y=n[p];if(!((r[p>>3]&1<<(p&7))!==0)){const N=t[y.name];switch(y.type){case C.INT32:f.setInt32(g,Number(N),!0),g+=4;break;case C.INT64:f.setBigInt64(g,BigInt(N),!0),g+=8;break;case C.FLOAT64:f.setFloat64(g,Number(N),!0),g+=8;break;case C.UUID:sn.encode(String(N),A,g),g+=16;break;case C.ULID:rn.encode(String(N),A,g),g+=16;break}}}let d=g,I=l;for(let p=0;p<a.length;p++){const y=a[p];y.payload===null?(f.setUint16(d,0,!0),f.setUint16(d+2,0,!0)):(f.setUint16(d,I,!0),f.setUint16(d+2,y.payload.byteLength,!0),A.set(y.payload,I),I+=y.payload.byteLength),d+=4}return A}function xe(e,t,n){let s,i,r;if(e instanceof DataView){i=e,r=t;const g=n;s=Array.isArray(g)?g:g.columns}else s=Array.isArray(e)?e:e.columns,i=t,r=n;const o={},a=s.length,c=Math.ceil(a/8),l=new Uint8Array(i.buffer,i.byteOffset+r+3,c);let u=r+3+c,_=0;const A=u;for(let g=0;g<a;g++){const d=s[g];if(!((l[g>>3]&1<<(g&7))!==0))switch(d.type){case C.INT32:u+=4;break;case C.INT64:case C.FLOAT64:u+=8;break;case C.UUID:case C.ULID:u+=16;break}}const f=u;u=A;for(let g=0;g<a;g++){const d=s[g];if((l[g>>3]&1<<(g&7))!==0){o[d.name]=null,(d.type===C.TEXT||d.type===C.BLOB)&&_++;continue}switch(d.type){case C.INT32:o[d.name]=i.getInt32(u,!0),u+=4;break;case C.INT64:o[d.name]=i.getBigInt64(u,!0),u+=8;break;case C.FLOAT64:o[d.name]=i.getFloat64(u,!0),u+=8;break;case C.UUID:{const p=new Uint8Array(i.buffer,i.byteOffset+u,16);o[d.name]=sn.decode(p,0),u+=16;break}case C.ULID:{const p=new Uint8Array(i.buffer,i.byteOffset+u,16);o[d.name]=rn.decode(p,0),u+=16;break}case C.TEXT:{const p=f+_*4,y=i.getUint16(p,!0),T=i.getUint16(p+2,!0),N=i.byteOffset+r+y,B=new Uint8Array(i.buffer,N,T);o[d.name]=_s.decode(B),_++;break}case C.BLOB:{const p=f+_*4,y=i.getUint16(p,!0),T=i.getUint16(p+2,!0),N=i.byteOffset+r+y,B=new Uint8Array(T);B.set(new Uint8Array(i.buffer,N,T)),o[d.name]=B,_++;break}}}return o}function to(e,t,n=0){Dn(e,t,fi,n)}function ps(e,t){return e.getUint32(t+6,!0)}function eo(e,t,n){e.setUint32(t+6,n,!0)}function no(e,t,n,s){const i=ut(e,t);if(i>=lr)return-1;const o=He(e,t)-ar,a=t+o;return e.setUint32(a,n,!0),e.setBigInt64(a+4,s,!0),on(e,t,i,o),We(e,t,i+1),Ve(e,t,o),i+1}function Dl(e,t,n){const s=ut(e,t);if(s===0)return ps(e,t);let i=0,r=s-1,o=-1;for(;i<=r;){const a=i+r>>1,c=ot(e,t,a),l=e.getBigInt64(t+c+4,!0);n<=l?(o=e.getUint32(t+c,!0),r=a-1):i=a+1}return o!==-1?o:ps(e,t)}function Ql(e,t,n){const s=ut(e,t),i=cr;if(s<=i)throw new Error(`Cannot split interior page with only ${s} cells`);const r=ot(e,t,i),o=e.getUint32(t+r,!0),a=e.getBigInt64(t+r+4,!0),c=ps(e,t);to(e,n,c);for(let l=i+1;l<s;l++){const u=ot(e,t,l),_=e.getUint32(t+u,!0),A=e.getBigInt64(t+u+4,!0);no(e,n,_,A)}return eo(e,t,o),We(e,t,i),{median_rowid:a,promoted_child_page_id:o,right_child_page_id:c}}function ys(e,t,n=0){Dn(e,t,ts,n)}function Ts(e,t,n,s,i,r){if(e!==s)return e-s;if(e===C.NULL)return n<r?-1:n>r?1:0;let o=0;if(e===C.INT32||e===C.INT64||e===C.FLOAT64){const a=typeof t=="bigint"?Number(t):t,c=typeof i=="bigint"?Number(i):i;o=a<c?-1:a>c?1:0}else if(e===C.TEXT||e===C.UUID||e===C.ULID){const a=String(t),c=String(i);o=a<c?-1:a>c?1:0}else if(e===C.BLOB){const a=t,c=i,l=Math.min(a.length,c.length);for(let u=0;u<l;u++)if(a[u]!==c[u]){o=a[u]<c[u]?-1:1;break}o===0&&(o=a.length-c.length)}return o!==0?o:n<r?-1:n>r?1:0}function Oi(e,t,n,s){const i=new Uint8Array(e.buffer,e.byteOffset+t,n);return n===0?{cellType:C.NULL,cellVal:null}:s===C.TEXT?n===4&&(i[2]===0&&i[3]===0||i[2]===255&&i[3]===255)?{cellType:C.INT32,cellVal:new DataView(i.buffer,i.byteOffset).getInt32(0,!0)}:n===2&&i[0]<32&&i[1]<32?{cellType:C.BLOB,cellVal:i}:{cellType:C.TEXT,cellVal:_s.decode(i)}:n===2?{cellType:C.BLOB,cellVal:i}:n===4?{cellType:C.INT32,cellVal:new DataView(i.buffer,i.byteOffset).getInt32(0,!0)}:s===C.UUID&&n===16?{cellType:C.UUID,cellVal:sn.decode(i,0)}:s===C.ULID&&n===16?{cellType:C.ULID,cellVal:rn.decode(i,0)}:s===C.FLOAT64&&n===8?{cellType:C.FLOAT64,cellVal:new DataView(i.buffer,i.byteOffset).getFloat64(0,!0)}:s===C.INT64&&n===8?{cellType:C.INT64,cellVal:new DataView(i.buffer,i.byteOffset).getBigInt64(0,!0)}:s===C.BLOB?n===5||n===6?{cellType:C.TEXT,cellVal:_s.decode(i)}:{cellType:C.BLOB,cellVal:i}:{cellType:C.TEXT,cellVal:_s.decode(i)}}function Pi(e,t,n,s,i,r){let o;n===C.NULL||s===null||s===void 0?o=new Uint8Array(0):n===C.INT32?(o=new Uint8Array(4),new DataView(o.buffer).setInt32(0,Number(s),!0)):n===C.INT64?(o=new Uint8Array(8),new DataView(o.buffer).setBigInt64(0,BigInt(s),!0)):n===C.FLOAT64?(o=new Uint8Array(8),new DataView(o.buffer).setFloat64(0,Number(s),!0)):n===C.UUID?(o=new Uint8Array(16),sn.encode(String(s),o,0)):n===C.ULID?(o=new Uint8Array(16),rn.encode(String(s),o,0)):n===C.TEXT?o=Si.encode(String(s)):o=s instanceof Uint8Array?s:new Uint8Array(s);const a=2+o.byteLength+8,c=a+2,l=ut(e,t),u=ms(e,t),_=u+Ue(e,t);if(c>_)return-1;c>u&&Qn(e,t,r);const f=He(e,t)-a,g=t+f,d=e.byteOffset+g;e.setUint16(g,o.byteLength,!0),new Uint8Array(e.buffer).set(o,d+2),e.setBigInt64(g+2+o.byteLength,i,!0);let I=0,p=l-1,y=l;for(;I<=p;){const S=I+p>>1,v=ot(e,t,S),L=e.getUint16(t+v,!0),h=e.getBigInt64(t+v+2+L,!0),{cellType:b,cellVal:k}=Oi(e,t+v+2,L,n);Ts(n,s,i,b,k,h)<0?(y=S,p=S-1):I=S+1}const T=new Uint8Array(e.buffer),B=e.byteOffset+t+Kt,P=B+y*2,F=B+(y+1)*2,w=(l-y)*2;return w>0&&T.copyWithin(F,P,P+w),on(e,t,y,f),We(e,t,l+1),Ve(e,t,f),y}function so(e,t,n){const s=ut(e,t);if(n<0||n>=s)return;const i=ot(e,t,n),o=2+e.getUint16(t+i,!0)+8,a=t+Kt,c=a+(n+1)*2,l=a+n*2,u=(s-1-n)*2;u>0&&nn(e,l,e,c,u),We(e,t,s-1),$e(e,t,Ue(e,t)+o)}function vn(e,t,n,s,i){const r=ut(e,t);let o=0,a=r-1;for(;o<=a;){const c=o+a>>1,l=ot(e,t,c),u=e.getUint16(t+l,!0),_=e.getBigInt64(t+l+2+u,!0),{cellType:A,cellVal:f}=Oi(e,t+l+2,u,n),d=Ts(n,s,i!==void 0?i:_,A,f,_);if(d===0){if(i===void 0){let I=c;for(;I>0;){const p=I-1,y=ot(e,t,p),T=e.getUint16(t+y,!0),{cellType:N,cellVal:B}=Oi(e,t+y+2,T,n);if(Ts(n,s,0n,N,B,0n)===0)I=p;else break}return{found:!0,slot_idx:I}}return{found:!0,slot_idx:c}}else d<0?a=c-1:o=c+1}return{found:!1,slot_idx:o}}function io(e,t){if(t==null)return new Uint8Array(0);if(e===C.INT32){const n=new Uint8Array(4);return new DataView(n.buffer).setInt32(0,Number(t),!0),n}if(e===C.INT64){const n=new Uint8Array(8);return new DataView(n.buffer).setBigInt64(0,BigInt(t),!0),n}if(e===C.FLOAT64){const n=new Uint8Array(8);return new DataView(n.buffer).setFloat64(0,Number(t),!0),n}if(e===C.UUID){const n=new Uint8Array(16);return sn.encode(String(t),n,0),n}if(e===C.ULID){const n=new Uint8Array(16);return rn.encode(String(t),n,0),n}return e===C.TEXT?Si.encode(String(t)):t instanceof Uint8Array?t:new Uint8Array(t)}function Cs(e,t,n,s){const i=[];let r=0;for(let c=0;c<n;c++){const l=e[t[c]],u=s[l.name],_=io(l.type,u),A=new Uint8Array(3+_.byteLength);A[0]=l.type,A[1]=_.byteLength&255,A[2]=_.byteLength>>8&255,A.set(_,3),i.push(A),r+=A.byteLength}const o=new Uint8Array(r);let a=0;for(let c=0;c<i.length;c++){const l=i[c];o.set(l,a),a+=l.byteLength}return o}const vl=2654435769;function kn(e,t){const n=Math.imul(e,vl);return(n^n>>>16)>>>0&t}function ro(e,t,n,s){const i=n-1;let r=kn(s,i);for(let o=0;o<n;o++){const a=t+r*Ce,c=e.getUint32(a,!0);if(c===0)return-1;if(c===s)return e.getUint32(a+4,!0);r=r+1&i}return-1}function oo(e,t,n,s,i){const r=n-1;let o=kn(s,r);for(let a=0;a<n;a++){const c=t+o*Ce,l=e.getUint32(c,!0);if(l===0||l===s){e.setUint32(c,s,!0),e.setUint32(c+4,i,!0);return}o=o+1&r}throw new Error(`BufferPool page table full: cannot insert page ${s}`)}function Ni(e,t,n,s){const i=n-1;let r=kn(s,i),o=!1;for(let l=0;l<n;l++){const u=t+r*Ce,_=e.getUint32(u,!0);if(_===0)return!1;if(_===s){o=!0;break}r=r+1&i}if(!o)return!1;let a=r;for(;;){a=a+1&i;const l=t+a*Ce,u=e.getUint32(l,!0);if(u===0)break;const _=kn(u,i);if((r-_&i)<(a-_&i)){const A=e.getUint32(l+4,!0),f=t+r*Ce;e.setUint32(f,u,!0),e.setUint32(f+4,A,!0),r=a}}const c=t+r*Ce;return e.setUint32(c,0,!0),e.setUint32(c+4,0,!0),!0}function kl(e){return e*4096}function ln(e,t,n){return yt(e,t+n*4)}function bi(e,t,n,s){Tt(e,t+n*4,s)}function Wt(e,t,n,s){return ro(e,t,n,s)}function ao(e,t,n,s,i,r){Yr(r>0,"page_id must be > 0");const o=ln(e,t,i);return o>0&&o!==r&&Ni(e,n,s,o),bi(e,t,i,r),oo(e,n,s,r,i),0}function lo(e,t,n,s,i){const r=ln(e,t,i);return r>0?(Ni(e,n,s,r),bi(e,t,i,0),1):0}function co(e,t,n){xr(e,t,n)}function uo(e,t,n){Xr(e,t,n)}function Bi(e,t,n){return $r(e,t,n)===1}function Li(e,t){if(e[t]>=4294967295)throw new Error(`Pin count overflow on slot ${t}`);e[t]++}function Ri(e,t){t!==0&&e[t]>0&&e[t]--}function cn(e,t){return t===0||e[t]>0}function Fi(e,t,n,s,i,r){const o=new DataView(e);for(let c=1;c<i;c++)if(yt(o,s+c*4)===0&&!cn(n,c))return{candidate_slot:c,next_clock_hand:r};let a=r;for(let c=0;c<i*2;c++){if(a=(a+1)%i,a===0||cn(n,a))continue;const l=new DataView(e,a*4096,4096);if(qe(l,0)!==Nn)if(t[a]===1)t[a]=0;else return{candidate_slot:a,next_clock_hand:a}}throw new Error("Cache deadlock: all slots are pinned")}function Di(e,t,n,s,i,r,o,a){const c=new DataView(e);let l=-1,u=o;if(a>1&&a<=r&&ln(c,s,a-1)===0&&!cn(n,a-1))l=a-1;else{const I=Fi(e,t,n,s,r,o);l=I.candidate_slot,u=I.next_clock_hand}const _=ln(c,s,l),A=Bi(new Uint8Array(e),i,l),f=new DataView(e,l*4096,4096),g=_>0&&qe(f,0)===Me,d=A&&!g&&_>0?_:0;return{candidate_slot:l,flush_page_id:d,next_clock_hand:u}}function Ct(e,t){return e.cursors&&e.cursors[t]?e.cursors[t]:e.cursor}function Vt(e,t){if(t<=0)return 0;if(e.byteLength>=Mt+Ar){const n=Wt(e,Mt,qt,t);if(n>=0)return n*4096}return(t-1)*4096}function un(e,t){if(e==null||t===null||t===void 0)return{result:0,is_unknown:!0};if(typeof e=="boolean"||typeof t=="boolean"){const n=e?1:0,s=t?1:0;return n===s?{result:0,is_unknown:!1}:{result:n>s?1:-1,is_unknown:!1}}if(typeof e=="number"&&typeof t=="number")return e===t?{result:0,is_unknown:!1}:{result:e>t?1:-1,is_unknown:!1};if(typeof e=="bigint"||typeof t=="bigint"){const n=BigInt(e),s=BigInt(t);return n===s?{result:0,is_unknown:!1}:{result:n>s?1:-1,is_unknown:!1}}if(typeof e=="string"&&typeof t=="string")return e===t?{result:0,is_unknown:!1}:{result:e>t?1:-1,is_unknown:!1};if(e instanceof Uint8Array&&t instanceof Uint8Array){const n=Math.min(e.byteLength,t.byteLength);for(let s=0;s<n;s++)if(e[s]!==t[s])return{result:e[s]>t[s]?1:-1,is_unknown:!1};return e.byteLength===t.byteLength?{result:0,is_unknown:!1}:{result:e.byteLength>t.byteLength?1:-1,is_unknown:!1}}return e===t?{result:0,is_unknown:!1}:{result:e>t?1:-1,is_unknown:!1}}function fo(e){return e>=65&&e<=90?e+32:e}function Ml(e,t,n,s){let i=0,r=0,o=-1,a=-1;for(;i<t;){const c=r<s?n.charCodeAt(r):0,l=e.charCodeAt(i);if(r<s&&(c===95||fo(c)===fo(l)))i++,r++;else if(r<s&&c===37)o=r++,a=i;else if(o!==-1)r=o+1,i=++a;else return 0}for(;r<s&&n.charCodeAt(r)===37;)r++;return r===s?1:0}function Xe(e,t){return Ml(e,e.length,t,t.length)===1}function fn(e,t,n){const s=n.numKeys;for(let i=0;i<s;i++){const r=e[i],o=t[i],a=n.directions[i]??0,c=n.nullOrders[i]??(a===1?1:0),l=r==null,u=o==null;if(l&&u)continue;if(l||u)return c===0?l?-1:1:l?1:-1;let _=0;if(typeof r=="number"&&typeof o=="number")_=r<o?-1:r>o?1:0;else if(typeof r=="bigint"||typeof o=="bigint"){const A=BigInt(r),f=BigInt(o);_=A<f?-1:A>f?1:0}else if(typeof r=="string"&&typeof o=="string")_=r<o?-1:r>o?1:0;else if(r instanceof Uint8Array&&o instanceof Uint8Array){const A=Math.min(r.byteLength,o.byteLength);for(let f=0;f<A;f++)if(r[f]!==o[f]){_=r[f]<o[f]?-1:1;break}_===0&&(_=r.byteLength<o.byteLength?-1:r.byteLength>o.byteLength?1:0)}else _=r<o?-1:r>o?1:0;if(_!==0)return a===1?-_:_}return 0}function Ao(e,t,n,s){const i=s.numKeys;for(let r=0;r<i;r++){const o=e[t+r],a=n[r],c=s.directions[r]??0,l=s.nullOrders[r]??(c===1?1:0),u=o==null,_=a==null;if(u&&_)continue;if(u||_)return l===0?u?-1:1:u?1:-1;let A=0;if(typeof o=="number"&&typeof a=="number")A=o<a?-1:o>a?1:0;else if(typeof o=="string"&&typeof a=="string")A=o<a?-1:o>a?1:0;else if(typeof o=="bigint"||typeof a=="bigint"){const f=BigInt(o),g=BigInt(a);A=f<g?-1:f>g?1:0}else if(o instanceof Uint8Array&&a instanceof Uint8Array){const f=Math.min(o.byteLength,a.byteLength);for(let g=0;g<f;g++)if(o[g]!==a[g]){A=o[g]<a[g]?-1:1;break}A===0&&(A=o.byteLength<a.byteLength?-1:o.byteLength>a.byteLength?1:0)}else A=o<a?-1:o>a?1:0;if(A!==0)return c===1?-A:A}return 0}function ws(e){let t=2166136261;for(let n=0;n<e.length;n++){const s=e[n];if(s==null)t^=255,t=Math.imul(t,16777619);else if(typeof s=="number"){const i=new ArrayBuffer(8);new DataView(i).setFloat64(0,s,!0);const r=new Uint8Array(i);for(let o=0;o<8;o++)t^=r[o],t=Math.imul(t,16777619)}else if(typeof s=="string")for(let i=0;i<s.length;i++)t^=s.charCodeAt(i)&255,t=Math.imul(t,16777619);else if(typeof s=="bigint"){const i=Number(s);t^=i&255,t=Math.imul(t,16777619)}else if(s instanceof Uint8Array)for(let i=0;i<s.byteLength;i++)t^=s[i],t=Math.imul(t,16777619)}return t=t>>>0,t===0?1:t}function Gl(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){const s=e[n],i=t[n];if(s==null){if(i!=null)return!1}else{if(i==null)return!1;if(s!==i)if(s instanceof Uint8Array&&i instanceof Uint8Array){if(s.byteLength!==i.byteLength)return!1;for(let r=0;r<s.byteLength;r++)if(s[r]!==i[r])return!1}else return!1}}return!0}function ho(e){const t=new Array(e);for(let n=0;n<e;n++)t[n]={hash:0,keys:[],count:0,sum:0,min_val:1/0,max_val:-1/0,has_val:!1};return t}function go(e,t,n,s){let i=t;for(;;){let r=i;const o=2*i+1,a=2*i+2;if(o<n&&fn(e[o].keys,e[r].keys,s)>0&&(r=o),a<n&&fn(e[a].keys,e[r].keys,s)>0&&(r=a),r!==i){const c=e[i];e[i]=e[r],e[r]=c,i=r}else break}}function ql(e){const t=e.keyInfo;e.entries.sort((n,s)=>fn(n.keys,s.keys,t)),e.readIdx=t.offset??0}function _o(e,t,n){const s=new Uint8Array(e.buffer,e.byteOffset+t,n),i=new Uint8Array(n);return i.set(s),i}function Wl(e,t,n,s,i,r,o){if(o>0&&t.entries.length>=o){if(fn(n,t.entries[0].keys,t.keyInfo)>=0)return O.RUNNING;const u=t.entries[0],_=i-u.rowLen;if(_>0&&e.arenaOffset+_>e.maxQueryMemory)return e.status=O.ARENA_EXHAUSTED,O.ARENA_EXHAUSTED;e.arenaOffset+=_;const A=_o(r,s,i);return u.keys=n,u.rowOffset=s,u.rowLen=i,u.rowData=A,go(t.entries,0,o,t.keyInfo),O.RUNNING}const a=16+16*n.length+i;if(e.arenaOffset+a>e.maxQueryMemory)return e.status=O.ARENA_EXHAUSTED,O.ARENA_EXHAUSTED;e.arenaOffset+=a;const c=_o(r,s,i);if(t.entries.push({keys:n,rowOffset:s,rowLen:i,rowData:c}),o>0&&t.entries.length===o)for(let l=Math.floor(o/2)-1;l>=0;l--)go(t.entries,l,o,t.keyInfo);return O.RUNNING}function Hl(e,t,n){var r,o;let s;const i={};if(e.outputColumns&&n===e.outputColumns.length){s=e.outputColumns;for(let a=0;a<n;a++)i[s[a].name]=e.registers[t+a]}else if(e.table&&n===e.table.columns.length){s=e.table.columns;for(let a=0;a<n;a++)i[s[a].name]=e.registers[t+a]}else{s=[];for(let a=0;a<n;a++){const c=e.registers[t+a],l=((o=(r=e.table)==null?void 0:r.columns[a])==null?void 0:o.name)??`col_${a}`;let u=C.TEXT;typeof c=="number"?u=Number.isInteger(c)?C.INT32:C.FLOAT64:typeof c=="bigint"?u=C.INT64:c instanceof Uint8Array&&(u=C.BLOB),s.push({name:l,type:u,flags:tt.NONE,colOffset:0}),i[l]=c}}return Is(s,i)}function Qi(e,t,n,s){const i=2+n.byteLength;if(e.resultOffset+i>Ys)return e.status=O.BUFFER_FULL,e.pc=s,O.BUFFER_FULL;const r=On+e.resultOffset;return t.setUint16(r,n.byteLength,!0),new Uint8Array(t.buffer,t.byteOffset+r+2,n.byteLength).set(n),e.resultOffset+=i,e.resultCount++,O.RUNNING}function Ye(e,t,n){return(e.getUint8(t+(n>>3))&1<<(n&7))!==0}function Mn(e,t,n,s,i){let r=t+n;for(let o=0;o<i;o++)if(!Ye(e,t,o))switch(s[o].type){case C.INT32:r+=4;break;case C.INT64:case C.FLOAT64:r+=8;break;case C.UUID:case C.ULID:r+=16;break}return r}const mo=new TextDecoder;function Gn(e,t,n){var c,l;const s=new DataView(n.buffer,n.byteOffset,n.byteLength),i=n.byteLength,r=1e7;let o=0;const a=t.byteLength>=Yn+4&&t.getUint32(Yn,!0)>0;for(;e.pc<i;){if(++o>r)return e.status=O.TIMEOUT,O.TIMEOUT;const u=e.pc,_=n[e.pc];switch(e.pc+=1,_){case m.OP_HALT:return e.arenaOffset=0,e.status=O.DONE,O.DONE;case m.OP_OPEN_CURSOR:{const A=n[e.pc],f=s.getUint32(e.pc+1,!0);e.pc+=5;const g=Ct(e,A);if(g.pageId=f,g.cellIdx=0,g.rowOffset=0,a&&f>0){const d=Wt(t,Mt,qt,f);if(d<0)return e.fault_page_id=f,e.status=O.PAGE_FAULT,e.pc=u,O.PAGE_FAULT;g.slotIdx=d}break}case m.OP_REWIND:{const A=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const g=Ct(e,A);if(a&&g.pageId>0){const p=Wt(t,Mt,qt,g.pageId);if(p<0)return e.fault_page_id=g.pageId,e.status=O.PAGE_FAULT,e.pc=u,O.PAGE_FAULT;g.slotIdx=p}const d=Vt(t,g.pageId);if(ut(t,d)===0)e.pc=f;else{g.cellIdx=0;const p=ot(t,d,0);g.rowOffset=d+p}break}case m.OP_NEXT_ROW:{const A=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const g=Ct(e,A),d=Vt(t,g.pageId),I=ut(t,d),p=g.cellIdx+1;if(p<I){g.cellIdx=p;const y=ot(t,d,g.cellIdx);g.rowOffset=d+y}else{const y=Ut(t,d);if(y!==0){if(a){const B=Wt(t,Mt,qt,y);if(B<0)return e.fault_page_id=y,e.status=O.PAGE_FAULT,e.pc=u,O.PAGE_FAULT;g.slotIdx=B}g.pageId=y,g.cellIdx=0;const T=Vt(t,y);if(ut(t,T)>0){const B=ot(t,T,0);g.rowOffset=T+B}else e.pc=f}else e.pc=f}break}case m.OP_LAST:{const A=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const g=Ct(e,A),d=Vt(t,g.pageId),I=ut(t,d);if(I===0)e.pc=f;else{g.cellIdx=I-1;const p=ot(t,d,g.cellIdx);g.rowOffset=d+p}break}case m.OP_PREV_ROW:{const A=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const g=Ct(e,A),d=Vt(t,g.pageId);if(g.cellIdx>0){g.cellIdx--;const I=ot(t,d,g.cellIdx);g.rowOffset=d+I}else e.pc=f;break}case m.OP_COLUMN_INT:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const d=Ct(e,A),I=(e.tables&&e.tables[A])??e.table,p=I.columns[f],y=Math.ceil(I.columns.length/8),T=d.rowOffset+3;if(Ye(t,T,f)){e.registers[g]=null;break}const N=Mn(t,T,y,I.columns,f);p.type===C.INT32?e.registers[g]=t.getInt32(N,!0):p.type===C.INT64&&(e.registers[g]=Number(t.getBigInt64(N,!0)));break}case m.OP_COLUMN_FLOAT:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const d=Ct(e,A),I=(e.tables&&e.tables[A])??e.table,p=Math.ceil(I.columns.length/8),y=d.rowOffset+3;if(Ye(t,y,f)){e.registers[g]=null;break}const T=Mn(t,y,p,I.columns,f);e.registers[g]=t.getFloat64(T,!0);break}case m.OP_COLUMN_UUID:case m.OP_COLUMN_ULID:case m.OP_COLUMN_TEXT:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const d=Ct(e,A),I=(e.tables&&e.tables[A])??e.table,p=Math.ceil(I.columns.length/8),y=d.rowOffset+3;if(Ye(t,y,f)){e.registers[g]=null;break}if(I.columns[f].type===C.UUID||I.columns[f].type===C.ULID){const w=Mn(t,y,p,I.columns,f),S=new Uint8Array(t.buffer,t.byteOffset+w,16);e.registers[g]=I.columns[f].type===C.UUID?sn.decode(S,0):rn.decode(S,0);break}const T=Mn(t,y,p,I.columns,I.columns.length);let N=0;for(let w=0;w<f;w++){const S=I.columns[w];(S.type===C.TEXT||S.type===C.BLOB)&&N++}const B=T+N*4,P=t.getUint16(B,!0),F=t.getUint16(B+2,!0);if(F===0)e.registers[g]="";else{const w=new Uint8Array(t.buffer,d.rowOffset+P,F);e.registers[g]=mo.decode(w)}break}case m.OP_COLUMN_BLOB:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const d=Ct(e,A),I=(e.tables&&e.tables[A])??e.table,p=Math.ceil(I.columns.length/8),y=d.rowOffset+3;if(Ye(t,y,f)){e.registers[g]=null;break}const T=Mn(t,y,p,I.columns,I.columns.length);let N=0;for(let S=0;S<f;S++){const v=I.columns[S];(v.type===C.TEXT||v.type===C.BLOB)&&N++}const B=T+N*4,P=t.getUint16(B,!0),F=t.getUint16(B+2,!0),w=new Uint8Array(F);w.set(new Uint8Array(t.buffer,d.rowOffset+P,F)),e.registers[g]=w;break}case m.OP_OPEN_INDEX:{const A=n[e.pc],f=s.getUint32(e.pc+1,!0);e.pc+=5;const g=Ct(e,A);if(g.pageId=f,g.rootPageId=f,g.cellIdx=0,g.rowOffset=0,a&&f>0){const d=Wt(t,Mt,qt,f);if(d<0)return e.fault_page_id=f,e.status=O.PAGE_FAULT,e.pc=u,O.PAGE_FAULT;g.slotIdx=d}break}case m.OP_INDEX_SEEK_EQ:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],d=n[e.pc+3],I=s.getUint16(e.pc+4,!0);if(e.pc+=6,I>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const p=e.registers[g];if(p==null){e.pc=I;break}const y=Ct(e,A);let T=y.rootPageId||y.pageId,N=!1,B=0n;for(;T!==0;){if(a&&T>0){const w=Wt(t,Mt,qt,T);if(w<0)return e.fault_page_id=T,e.status=O.PAGE_FAULT,e.pc=u,O.PAGE_FAULT;y.slotIdx=w}const P=Vt(t,T),F=vn(t,P,d,p);if(F.found){N=!0,y.pageId=T,y.cellIdx=F.slot_idx;const w=ot(t,P,F.slot_idx),S=t.getUint16(P+w,!0);B=t.getBigInt64(P+w+2+S,!0);break}T=Ut(t,P)}if(!N)e.pc=I;else{const P=Number(B>>16n),F=Number(B&0xffffn);if(a&&P>0&&Wt(t,Mt,qt,P)<0)return e.fault_page_id=P,e.status=O.PAGE_FAULT,e.pc=u,O.PAGE_FAULT;const w=Ct(e,f);w.pageId=P,w.cellIdx=F;const S=Vt(t,P),v=ot(t,S,F);w.rowOffset=S+v}break}case m.OP_INDEX_SEEK_GE:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],d=n[e.pc+3],I=s.getUint16(e.pc+4,!0);if(e.pc+=6,I>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const p=e.registers[g];if(p==null){e.pc=I;break}const y=Ct(e,A);let T=y.rootPageId||y.pageId,N=!1,B=0n;for(;T!==0;){if(a&&T>0){const S=Wt(t,Mt,qt,T);if(S<0)return e.fault_page_id=T,e.status=O.PAGE_FAULT,e.pc=u,O.PAGE_FAULT;y.slotIdx=S}const P=Vt(t,T),F=ut(t,P),w=vn(t,P,d,p);if(w.found||w.slot_idx<F){N=!0,y.pageId=T,y.cellIdx=w.slot_idx;const S=ot(t,P,w.slot_idx),v=t.getUint16(P+S,!0);B=t.getBigInt64(P+S+2+v,!0);break}T=Ut(t,P)}if(!N)e.pc=I;else{const P=Number(B>>16n),F=Number(B&0xffffn);if(a&&P>0&&Wt(t,Mt,qt,P)<0)return e.fault_page_id=P,e.status=O.PAGE_FAULT,e.pc=u,O.PAGE_FAULT;const w=Ct(e,f);w.pageId=P,w.cellIdx=F;const S=Vt(t,P),v=ot(t,S,F);w.rowOffset=S+v}break}case m.OP_INDEX_NEXT:{const A=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const d=Ct(e,A);let I=d.pageId,p=Vt(t,I);const y=ut(t,p);let T=d.cellIdx+1;if(T>=y){if(I=Ut(t,p),I===0){e.pc=g;break}if(a&&I>0){const h=Wt(t,Mt,qt,I);if(h<0)return e.fault_page_id=I,e.status=O.PAGE_FAULT,e.pc=u,O.PAGE_FAULT;d.slotIdx=h}p=Vt(t,I),T=0,d.pageId=I,d.cellIdx=-1}const N=ot(t,p,T),B=t.getUint16(p+N,!0),P=t.getBigInt64(p+N+2+B,!0),F=Number(P>>16n),w=Number(P&0xffffn);if(a&&F>0&&Wt(t,Mt,qt,F)<0)return e.fault_page_id=F,e.status=O.PAGE_FAULT,e.pc=u,O.PAGE_FAULT;d.pageId=I,d.cellIdx=T;const S=Ct(e,f);S.pageId=F,S.cellIdx=w;const v=Vt(t,F),L=ot(t,v,w);S.rowOffset=v+L;break}case m.OP_IS_NULL:{const A=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const I=Ct(e,A).rowOffset+3;Ye(t,I,f)&&(e.pc=g);break}case m.OP_IS_NOT_NULL:{const A=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const I=Ct(e,A).rowOffset+3;Ye(t,I,f)||(e.pc=g);break}case m.OP_EQ:{const A=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const d=un(e.registers[A],e.registers[f]);!d.is_unknown&&d.result===0&&(e.pc=g);break}case m.OP_NE:{const A=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const d=un(e.registers[A],e.registers[f]);!d.is_unknown&&d.result!==0&&(e.pc=g);break}case m.OP_GT:{const A=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const d=un(e.registers[A],e.registers[f]);!d.is_unknown&&d.result>0&&(e.pc=g);break}case m.OP_GE:{const A=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const d=un(e.registers[A],e.registers[f]);!d.is_unknown&&d.result>=0&&(e.pc=g);break}case m.OP_LT:{const A=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const d=un(e.registers[A],e.registers[f]);!d.is_unknown&&d.result<0&&(e.pc=g);break}case m.OP_LE:{const A=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const d=un(e.registers[A],e.registers[f]);!d.is_unknown&&d.result<=0&&(e.pc=g);break}case m.OP_JUMP:{const A=s.getUint16(e.pc,!0);if(A>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;e.pc=A;break}case m.OP_STR_LIKE:{const A=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const d=e.registers[A],I=e.registers[f];if(d===null||I===null)break;Xe(String(d),String(I))&&(e.pc=g);break}case m.OP_STR_NOT_LIKE:{const A=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const d=e.registers[A],I=e.registers[f];if(d===null||I===null)break;Xe(String(d),String(I))||(e.pc=g);break}case m.OP_STR_CONTAINS:{const A=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const d=e.registers[A],I=e.registers[f];if(d===null||I===null)break;String(d).includes(String(I))&&(e.pc=g);break}case m.OP_STR_STARTS_WITH:{const A=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const d=e.registers[A],I=e.registers[f];if(d===null||I===null)break;String(d).startsWith(String(I))&&(e.pc=g);break}case m.OP_STR_ENDS_WITH:{const A=n[e.pc],f=n[e.pc+1],g=s.getUint16(e.pc+2,!0);if(e.pc+=4,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const d=e.registers[A],I=e.registers[f];if(d===null||I===null)break;String(d).endsWith(String(I))&&(e.pc=g);break}case m.OP_IN:{const A=n[e.pc],f=s.getUint16(e.pc+1,!0),g=s.getUint16(e.pc+3,!0);if(e.pc+=5,g>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const d=e.registers[A];if(d==null)break;const I=(c=e.inSets)==null?void 0:c[f];I&&(I.has(d)||typeof d=="number"&&Number.isSafeInteger(d)&&I.has(BigInt(d))||typeof d=="bigint"&&I.has(Number(d)))&&(e.pc=g);break}case m.OP_LOAD_INT:{const A=n[e.pc],f=s.getInt32(e.pc+1,!0);e.pc+=5,e.registers[A]=f;break}case m.OP_LOAD_FLOAT:{const A=n[e.pc],f=s.getFloat64(e.pc+1,!0);e.pc+=9,e.registers[A]=f;break}case m.OP_LOAD_TEXT:{const A=n[e.pc],f=s.getUint16(e.pc+1,!0),g=new Uint8Array(n.buffer,n.byteOffset+e.pc+3,f);e.registers[A]=mo.decode(g),e.pc+=3+f;break}case m.OP_LOAD_BLOB:{const A=n[e.pc],f=s.getUint16(e.pc+1,!0),g=new Uint8Array(f);g.set(new Uint8Array(n.buffer,n.byteOffset+e.pc+3,f)),e.registers[A]=g,e.pc+=3+f;break}case m.OP_LOAD_NULL:{const A=n[e.pc];e.pc+=1,e.registers[A]=null;break}case m.OP_EMIT_ROW:{const A=n[e.pc];e.pc+=1;const f=Ct(e,A),g=t.getUint16(f.rowOffset+1,!0),d=new Uint8Array(t.buffer,t.byteOffset+f.rowOffset,g),I=Qi(e,t,d,u);if(I!==O.RUNNING)return I;break}case m.OP_OFFSET:{const A=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const g=Number(e.registers[A]??0);g>0&&(e.registers[A]=g-1,e.pc=f);break}case m.OP_LIMIT:{const A=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const g=Number(e.registers[A]??0);g<=1?(e.registers[A]=0,e.pc=f):e.registers[A]=g-1;break}case m.OP_CALL_UDF:{const A=s.getUint16(e.pc,!0),f=n[e.pc+2],g=n[e.pc+3],d=n[e.pc+4];e.pc+=5;const I=(l=e.udfs)==null?void 0:l[A];if(!I)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const p=[];for(let y=0;y<g;y++)p.push(e.registers[f+y]);try{const y=I(...p);e.registers[d]=y!==void 0?y:null}catch{return e.status=O.ERROR,O.ERROR}break}case m.OP_STR_LOWER:{const A=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[A];e.registers[f]=g!==null?String(g).toLowerCase():null;break}case m.OP_STR_UPPER:{const A=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[A];e.registers[f]=g!==null?String(g).toUpperCase():null;break}case m.OP_STR_LENGTH:{const A=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[A];e.registers[f]=g!==null?String(g).length:null;break}case m.OP_STR_SUBSTR:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],d=n[e.pc+3];e.pc+=4;const I=e.registers[A],p=e.registers[f],y=e.registers[g];if(I===null||p===null){e.registers[d]=null;break}const T=String(I),N=Math.max(0,Number(p)-1);if(y===null)e.registers[d]=T.slice(N);else{const B=Math.max(0,Number(y));e.registers[d]=T.slice(N,N+B)}break}case m.OP_STR_TRIM:{const A=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[A];e.registers[f]=g!=null?String(g).trim():null;break}case m.OP_MATH_ABS:{const A=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[A];e.registers[f]=g!=null?Math.abs(Number(g)):null;break}case m.OP_MATH_ROUND:{const A=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[A];e.registers[f]=g!=null?Math.round(Number(g)):null;break}case m.OP_RESULT_ROW:{const A=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=Hl(e,A,f),d=Qi(e,t,g,u);if(d!==O.RUNNING)return d;break}case m.OP_SORTER_OPEN:{const A=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.keyInfos[f]??{numKeys:1,directions:[0],nullOrders:[0]},d=g.limit!==void 0&&g.limit>0?(g.offset??0)+g.limit:0,I=d>0&&d<=Or?d:0;e.sorters[A]={keyInfo:g,entries:[],readIdx:0,isSorted:!1,maxK:I};break}case m.OP_SORTER_INSERT:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],d=n[e.pc+3];e.pc+=4;const I=e.sorters[A];if(!I)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const p=I.maxK??0;if(p>0&&I.entries.length>=p){if(g===1){const P=e.registers[f],F=I.entries[0].keys[0],w=I.keyInfo.directions[0]??0;if(typeof P=="number"&&typeof F=="number"){if(w===0?P>=F:P<=F)break}else if(typeof P=="string"&&typeof F=="string"){if(w===0?P>=F:P<=F)break}else if(Ao(e.registers,f,I.entries[0].keys,I.keyInfo)>=0)break}else if(Ao(e.registers,f,I.entries[0].keys,I.keyInfo)>=0)break}const y=Ct(e,d),T=t.getUint16(y.rowOffset+1,!0),N=new Array(g);for(let P=0;P<g;P++)N[P]=e.registers[f+P];const B=Wl(e,I,N,y.rowOffset,T,t,p);if(B!==O.RUNNING)return B;break}case m.OP_SORTER_SORT:{const A=n[e.pc];e.pc+=1;const f=e.sorters[A];if(!f)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;ql(f),f.isSorted=!0;break}case m.OP_SORTER_NEXT:{const A=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const g=e.sorters[A];if(!g)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const d=g.keyInfo.limit!==void 0?(g.keyInfo.offset??0)+g.keyInfo.limit:g.entries.length;if(g.readIdx>=Math.min(g.entries.length,d))break;const I=g.entries[g.readIdx],p=I.rowData??new Uint8Array(t.buffer,t.byteOffset+I.rowOffset,I.rowLen),y=Qi(e,t,p,u);if(y!==O.RUNNING)return y;g.readIdx++,e.pc=f;break}case m.OP_MATH_FLOOR:{const A=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[A];e.registers[f]=g!=null?Math.floor(Number(g)):null;break}case m.OP_MATH_CEIL:{const A=n[e.pc],f=n[e.pc+1];e.pc+=2;const g=e.registers[A];e.registers[f]=g!=null?Math.ceil(Number(g)):null;break}case m.OP_ADD:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const d=e.registers[A],I=e.registers[f];d==null||I===null||I===void 0?e.registers[g]=null:e.registers[g]=Number(d)+Number(I);break}case m.OP_SUB:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const d=e.registers[A],I=e.registers[f];d==null||I===null||I===void 0?e.registers[g]=null:e.registers[g]=Number(d)-Number(I);break}case m.OP_MUL:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const d=e.registers[A],I=e.registers[f];d==null||I===null||I===void 0?e.registers[g]=null:e.registers[g]=Number(d)*Number(I);break}case m.OP_DIV:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const d=e.registers[A],I=e.registers[f];if(d==null||I===null||I===void 0)e.registers[g]=null;else{const p=Number(I);e.registers[g]=p===0?null:Number(d)/p}break}case m.OP_MOD:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;const d=e.registers[A],I=e.registers[f];if(d==null||I===null||I===void 0)e.registers[g]=null;else{const p=Number(I);e.registers[g]=p===0?null:Number(d)%p}break}case m.OP_STR_CONCAT:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;let d="",I=!1;for(let p=0;p<f;p++){const y=e.registers[A+p];y!=null&&(I=!0,d+=String(y))}e.registers[g]=I?d:null;break}case m.OP_COALESCE:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2];e.pc+=3;let d=null;for(let I=0;I<f;I++){const p=e.registers[A+I];if(p!=null){d=p;break}}e.registers[g]=d;break}case m.OP_COPY:{const A=n[e.pc],f=n[e.pc+1];e.pc+=2,e.registers[f]=e.registers[A];break}case m.OP_AGG_INIT:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],d=n[e.pc+3];if(e.pc+=4,d===0){if(e.arenaOffset+40960>e.maxQueryMemory)return e.status=O.ARENA_EXHAUSTED,O.ARENA_EXHAUSTED;e.arenaOffset+=40960;const y=ho(1024);if(g===0){const T=ws([]),N=T%1024;y[N].hash=T,y[N].keys=[],y[N].count=0,y[N].sum=0,y[N].min_val=1/0,y[N].max_val=-1/0,y[N].has_val=!1}e.aggregators[A]={mode:0,startKeyReg:f,numKeys:g,capacity:1024,occupiedCount:g===0?1:0,readIdx:0,buckets:y}}else e.aggregators[A]={mode:1,startKeyReg:f,numKeys:g,capacity:1,occupiedCount:0,readIdx:0,buckets:[]};break}case m.OP_AGG_STEP:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],d=n[e.pc+3],I=n[e.pc+4];e.pc+=5;const p=e.aggregators[A];if(!p)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const y=[];for(let N=0;N<g;N++)y.push(e.registers[f+N]);const T=d===255?null:e.registers[d];if(p.mode===0){const N=ws(y),B=N%p.capacity;let P=null;for(let F=0;F<p.capacity;F++){const w=(B+F)%p.capacity,S=p.buckets[w];if(S.hash===0){S.hash=N,S.keys=y.slice(),S.count=0,S.sum=0,S.min_val=1/0,S.max_val=-1/0,S.has_val=!1,p.occupiedCount++,P=S;break}else if(S.hash===N&&Gl(S.keys,y)){P=S;break}}if(!P)return e.status=O.ARENA_EXHAUSTED,O.ARENA_EXHAUSTED;if(I===0)(d===255||T!=null)&&P.count++;else if(I===1||I===2)T!=null&&(P.sum+=Number(T),P.has_val=!0);else if(I===3){if(T!=null){const F=Number(T);(!P.has_val||F<P.min_val)&&(P.min_val=F),P.has_val=!0}}else if(I===4&&T!=null){const F=Number(T);(!P.has_val||F>P.max_val)&&(P.max_val=F),P.has_val=!0}if(p.occupiedCount>.7*p.capacity){const w=p.capacity*2,S=w*40;if(e.arenaOffset+S>e.maxQueryMemory)return e.status=O.ARENA_EXHAUSTED,O.ARENA_EXHAUSTED;e.arenaOffset+=S;const v=p.buckets,L=ho(w);for(let h=0;h<v.length;h++){const b=v[h];if(b.hash!==0){const k=b.hash%w;for(let $=0;$<w;$++){const j=(k+$)%w;if(L[j].hash===0){L[j]=b;break}}}}p.capacity=w,p.buckets=L}}break}case m.OP_AGG_NEXT:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],d=s.getUint16(e.pc+3,!0);if(e.pc+=5,d>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const I=e.aggregators[A];if(!I)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;for(;I.readIdx<I.buckets.length&&I.buckets[I.readIdx].hash===0;)I.readIdx++;if(I.readIdx>=I.buckets.length)break;const p=I.buckets[I.readIdx++];for(let y=0;y<p.keys.length;y++)e.registers[f+y]=p.keys[y];e.registers[g]=p.sum,e.registers[g+1]=p.count,e.registers[g+2]=p.has_val?p.min_val:null,e.registers[g+3]=p.has_val?p.max_val:null,e.pc=d;break}case m.OP_AGG_FINAL:{const A=n[e.pc],f=n[e.pc+1],g=n[e.pc+2],d=n[e.pc+3];e.pc+=4;const I=e.registers[A],p=Number(e.registers[f]??0);d===0?e.registers[g]=p:d===1?e.registers[g]=p>0?Number(I):null:d===2?e.registers[g]=p>0?Number(I)/p:null:(d===3||d===4)&&(e.registers[g]=e.registers[A]);break}case m.OP_REG_IS_NULL:{const A=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const g=e.registers[A];g==null&&(e.pc=f);break}case m.OP_REG_IS_NOT_NULL:{const A=n[e.pc],f=s.getUint16(e.pc+1,!0);if(e.pc+=3,f>i)return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE;const g=e.registers[A];g!=null&&(e.pc=f);break}default:return e.status=O.INVALID_BYTECODE,O.INVALID_BYTECODE}}return e.status=O.DONE,O.DONE}const Vl=new TextDecoder,Eo=new Uint8Array([87,69,66,68,66,0]),Io=new Uint32Array(256);let po=0;function $l(){if(!po){for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;Io[e]=t>>>0}po=1}}function vi(e,t=0){$l();let n=4294967295;for(let s=0;s<4096;s++){const i=s>=28&&s<=31?0:e.getUint8(t+s);n=Io[(n^i)&255]^n>>>8}return(n^4294967295)>>>0}function yo(e,t=0){ie(e,t,0,4096),e.setUint8(t+Ee+0,87),e.setUint8(t+Ee+1,69),e.setUint8(t+Ee+2,66),e.setUint8(t+Ee+3,68),e.setUint8(t+Ee+4,66),e.setUint8(t+Ee+5,0),e.setUint16(t+Hs,4096,!0),e.setUint16(t+Vs,zn,!0),e.setUint16(t+$s,Sr,!0),e.setUint32(t+se,1,!0),e.setUint32(t+le,0,!0),e.setUint32(t+Ie,1,!0),e.setUint32(t+pe,0,!0),e.setUint32(t+ye,0,!0),e.setUint32(t+ur,0,!0),e.setUint32(t+fr,0,!0);const n=vi(e,t);e.setUint32(t+ye,n,!0)}function qn(e,t=!1){for(let u=0;u<Eo.length;u++)if(e.getUint8(Ee+u)!==Eo[u])throw new Rn("Invalid database file: magic bytes mismatch");const n=e.getUint16(Hs,!0),s=e.getUint16(Vs,!0),i=e.getUint16($s,!0),r=e.getUint32(se,!0),o=e.getUint32(le,!0),a=e.getUint32(Ie,!0),c=e.getUint32(pe,!0),l=e.getUint32(ye,!0);if(i>zn)throw new Dr(`Database file format requires engine version >= ${i}, but running engine is version ${zn}`);if(t&&l!==0){const u=vi(e,0);if(u!==l)throw new Se(1,l,u)}return{pageSize:n,fileFormatVersion:s,minReadVersion:i,totalPages:r,freePageHead:o,schemaVersion:a,changeCounter:c,storedChecksum:l}}function To(e,t=0){return e.getUint32(t+se,!0)}function xl(e,t,n){n===void 0&&(n=t,t=0),e.setUint32(t+se,n,!0)}function Xl(e,t=0){return e.getUint32(t+le,!0)}function Yl(e,t,n){n===void 0&&(n=t,t=0),e.setUint32(t+le,n,!0)}function Co(e,t=0){return e.getUint32(t+Ie,!0)}function Ze(e,t=0){const n=Co(e,t)+1;return e.setUint32(t+Ie,n,!0),n}function wo(e,t=0){return e.getUint32(t+pe,!0)}function re(e,t=0){const n=wo(e,t)+1;return e.setUint32(t+pe,n,!0),n}function $t(e,t=0){e.setUint32(t+ye,0,!0);const n=vi(e,t);return e.setUint32(t+ye,n,!0),n}function Ss(e,t,n,s){let i=0;for(;i<s&&i<cs(n);i++)e.setUint8(t+i,n.charCodeAt(i));for(;i<s;i++)e.setUint8(t+i,0)}function Us(e,t,n){const s=[];for(let i=0;i<n;i++){const r=e.getUint8(t+i);if(r===0)break;s.push(r)}return Vl.decode(new Uint8Array(s))}function So(e){switch(e.toUpperCase()){case"INT32":return C.INT32;case"INT64":return C.INT64;case"FLOAT64":return C.FLOAT64;case"TEXT":return C.TEXT;case"BLOB":return C.BLOB;case"UUID":return C.UUID;case"ULID":return C.ULID;default:throw new Error(`Unsupported column data type: "${e}"`)}}function Jt(e,t){const n=Sn+t*Fe,s=e.getUint16(n+0,!0);if(s===0)return null;const i=e.getUint16(n+2,!0),r=e.getUint32(n+4,!0),o=e.getUint32(n+8,!0),a=Us(e,n+12,ne),c=e.getUint32(n+76,!0),l=e.getUint32(n+80,!0),u=e.getBigUint64(n+84,!0);return{tableId:s,columnCount:i,rootPageId:r,colCatalogPageId:o,name:a,flags:c,rowCountEstimate:l,autoIncNext:u}}function An(e,t,n){const s=Sn+t*Fe;e.setUint16(s+0,n.tableId,!0),e.setUint16(s+2,n.columnCount,!0),e.setUint32(s+4,n.rootPageId,!0),e.setUint32(s+8,n.colCatalogPageId,!0),Ss(e,s+12,n.name,ne),e.setUint32(s+76,n.flags,!0),e.setUint32(s+80,n.rowCountEstimate,!0),e.setBigUint64(s+84,n.autoIncNext,!0),new Uint8Array(e.buffer,e.byteOffset).fill(0,s+92,s+Fe)}function Zl(e,t){const n=xt(e,t);return n!==-1?Jt(e,n):null}function xt(e,t){for(let n=0;n<ce;n++){const s=Jt(e,n);if(s&&s.flags&bn.ACTIVE&&s.name===t)return n}return-1}function ki(e,t=0){for(let n=0;n<ce;n++){const s=t+Sn+n*Fe;if(e.getUint16(s,!0)===0)return n}return-1}function hn(e){const t=[];for(let n=0;n<ce;n++){const s=Jt(e,n);s&&s.flags&bn.ACTIVE&&t.push(s)}return t}function gn(e,t){const n=Un+t*De,s=e.getUint16(n+0,!0);if(s===0)return null;const i=e.getUint16(n+2,!0),r=e.getUint32(n+4,!0),o=e.getUint8(n+8),a=e.getUint8(n+9),c=[];for(let _=0;_<8;_++)c.push(e.getUint16(n+10+_*2,!0));const l=[];for(let _=0;_<8;_++)l.push(e.getUint8(n+26+_));const u=Us(e,n+34,ne);return{indexId:s,tableId:i,rootPageId:r,columnCount:o,flags:a,columnIndices:c,colDirections:l,name:u}}function Os(e,t,n){const s=Un+t*De;e.setUint16(s+0,n.indexId,!0),e.setUint16(s+2,n.tableId,!0),e.setUint32(s+4,n.rootPageId,!0),e.setUint8(s+8,n.columnCount),e.setUint8(s+9,n.flags);for(let r=0;r<8;r++)e.setUint16(s+10+r*2,n.columnIndices[r]??0,!0);for(let r=0;r<8;r++)e.setUint8(s+26+r,n.colDirections[r]??0);Ss(e,s+34,n.name,ne),new Uint8Array(e.buffer,e.byteOffset).fill(0,s+98,s+De)}const Ps=8;function Ns(e,t=0){for(let n=0;n<Ps;n++){const s=t+Un+n*De;if(e.getUint16(s+0,!0)===0)return n}return-1}function bs(e,t){const n=t.toLowerCase();for(let s=0;s<Ps;s++){const i=gn(e,s);if(i&&i.name.toLowerCase()===n)return{slotIdx:s,desc:i}}return null}function Ae(e,t){const n=[];for(let s=0;s<Ps;s++){const i=gn(e,s);i&&i.tableId===t&&n.push(i)}return n}function Mi(e,t,n){if(n===void 0&&(n=t,t=0),n>=Ps)return-1;const s=t+Un+n*De;return ie(e,s,0,De),0}function Uo(e,t,n){if(n===void 0&&(n=t,t=0),n>=ce)return-1;const s=t+Sn+n*Fe;return ie(e,s,0,Fe),0}function Oo(e,t,n,s,i=0){ie(e,t,0,4096),e.setUint8(t+0,Nn),e.setUint8(t+1,0),e.setUint16(t+2,0,!0),e.setUint16(t+4,n,!0),e.setUint16(t+6,s,!0),e.setUint32(t+8,i,!0),e.setUint32(t+12,0,!0)}function he(e,t){return{pageType:e.getUint8(t+0),flags:e.getUint8(t+1),colCountInPage:e.getUint16(t+2,!0),tableId:e.getUint16(t+4,!0),startColIndex:e.getUint16(t+6,!0),nextColCatalogPageId:e.getUint32(t+8,!0),pageChecksum:e.getUint32(t+12,!0)}}function jl(e,t,n,s,i,r){e.setUint8(t+0,Nn),e.setUint8(t+1,0),e.setUint16(t+2,n,!0),e.setUint16(t+4,s,!0),e.setUint16(t+6,i,!0),e.setUint32(t+8,r,!0)}function Gi(e,t,n,s){if(n<0||n>=Te)throw new Error(`Invalid catalog in-page slot ${n}`);const i=t+xs+n*Xs;e.setUint8(i+0,s.type),e.setUint8(i+1,s.flags),e.setUint16(i+2,s.colOffset,!0),Ss(e,i+4,s.name,ne),e.setUint32(i+68,0,!0)}function Po(e,t,n){const s=t+xs+n*Xs,i=e.getUint8(s+0),r=e.getUint8(s+1),o=e.getUint16(s+2,!0),a=Us(e,s+4,ne);return{type:i,flags:r,colOffset:o,name:a}}function No(e){return{pageChainIdx:Math.floor(e/Te),colIdxInPage:e%Te}}function bo(e,t,n,s){var T,N,B,P,F;if(s.length===0)throw new Error("Table must have at least one column");if(s.length>ue)throw new Ln(s.length,ue);if(xt(e,n)!==-1)throw new is(n);const i=ki(e);if(i===-1)throw new gi(ce,ce);const r=i+1,o=t.allocateNewPage(),a=t.getPageBytes(o),c=new DataView(a.buffer,a.byteOffset);c.setUint8(0,13),c.setUint8(1,0),c.setUint16(2,0,!0),c.setUint16(4,4096,!0),c.setUint32(6,0,!0),c.setUint16(10,0,!0),c.setUint32(12,0,!0),t.markPageDirty(o);const l=[];let u=0;for(let w=0;w<s.length;w++){const S=s[w],v=typeof S.type=="string"?So(S.type):S.type;let L=0;typeof S.flags=="number"?L=S.flags:((S.primaryKey||(T=S.flags)!=null&&T.primaryKey)&&(L|=tt.PRIMARY_KEY),(S.notNull||(N=S.flags)!=null&&N.notNull)&&(L|=tt.NOT_NULL),(S.indexed||(B=S.flags)!=null&&B.indexed)&&(L|=tt.INDEXED),(S.autoInc||S.autoIncrement||(P=S.flags)!=null&&P.autoInc||(F=S.flags)!=null&&F.autoIncrement)&&(L|=tt.AUTO_INC));const h=u;switch(v){case C.INT32:u+=4;break;case C.INT64:case C.FLOAT64:u+=8;break;case C.UUID:case C.ULID:u+=16;break}l.push({type:v,flags:L,colOffset:h,name:S.name})}const _=l.length,A=Math.ceil(_/Te),f=[];for(let w=0;w<A;w++)f.push(t.allocateNewPage());for(let w=0;w<A;w++){const S=f[w],v=w<A-1?f[w+1]:0,L=w*Te,h=Math.min(_-L,Te),b=t.getPageBytes(S),k=new DataView(b.buffer,b.byteOffset);Oo(k,0,r,L,v),k.setUint16(2,h,!0);for(let j=0;j<h;j++){const J=l[L+j];Gi(k,0,j,J)}const $=Ge(b);k.setUint32(12,$,!0),t.markPageDirty(S)}const g=f[0],d={tableId:r,columnCount:_,rootPageId:o,colCatalogPageId:g,name:n,flags:bn.ACTIVE,rowCountEstimate:0,autoIncNext:1n};An(e,i,d);const I=[];for(let w=0;w<l.length;w++)l[w].flags&tt.PRIMARY_KEY&&I.push(l[w]);if(I.length>0){const w=Ns(e);if(w!==-1){const S=t.allocateNewPage(),v=t.getPageBytes(S),L=new DataView(v.buffer,v.byteOffset);ys(L,0,0),t.markPageDirty(S);const h=[0,0,0,0,0,0,0,0],b=[0,0,0,0,0,0,0,0];for(let $=0;$<I.length&&$<8;$++){const j=I[$].name;let J=-1;for(let G=0;G<l.length;G++)if(l[G].name===j){J=G;break}h[$]=J}const k={indexId:w+1,tableId:r,rootPageId:S,columnCount:I.length,flags:It.PRIMARY|It.UNIQUE,columnIndices:h,colDirections:b,name:`pk_${n}`};Os(e,w,k)}}Ze(e),re(e),$t(e);const p=Ae(e,r),y=[];for(let w=0;w<I.length;w++)y.push(I[w].name);return{...d,columns:l,primaryKey:y.length>0?y:void 0,indexes:p.length>0?p:void 0}}function qi(e,t,n){const s=xt(e,n);if(s===-1)throw new Bn(n);const i=Jt(e,s),r=[];let o=i.colCatalogPageId,a=0;for(;o!==0&&a<i.columnCount;){const u=t.getPageBytes(o),_=new DataView(u.buffer,u.byteOffset),A=he(_,0);for(let f=0;f<A.colCountInPage;f++){const g=Po(_,0,f);r.push(g),a++}o=A.nextColCatalogPageId}const c=Ae(e,i.tableId),l=[];for(let u=0;u<r.length;u++)r[u].flags&tt.PRIMARY_KEY&&l.push(r[u].name);return{...i,columns:r,primaryKey:l.length>0?l:void 0,indexes:c.length>0?c:void 0}}function Kl(e,t){const n=hn(e),s=[];for(let i=0;i<n.length;i++)s.push(qi(e,t,n[i].name));return s}const Wi="AGFzbQEAAAABcBFgAX8Bf2ACf38AYAJ/fwF/YAN/f38AYAN/f38Bf2AEf39/fwF/YAAAYAV/f39/fwF/YAN/f34Bf2ACf34Bf2ABfwBgBH9/f38AYAV/f39/fwBgBX9+f35/AGAFf3x/fH8AYAd/f39/f39/AGAAAX8CDwEDZW52Bm1lbW9yeQIAQwNIRwYAAAQAAwQDAgQFBAACAwcFAQECAwEAAQABAAEAAQABAAECAwAAAQABAQgJAQIAAAoAAQAAAAAAAwAAAgILDAACBQ0ODwUQBgkBfwFBgKCLAgsH2A1MD19fc3RhY2tfcG9pbnRlcgMAB2hleF92YWwAARBjcm9ja2ZvcmRfZGVjb2RlAAILdXVpZF9lbmNvZGUAAwZzdHJsZW4ABAt1dWlkX2RlY29kZQAFC3VsaWRfZW5jb2RlAAYLdWxpZF9kZWNvZGUABw9wYWdlX3RhYmxlX2hhc2gACA5wYWdlX3RhYmxlX2dldAAJDnBhZ2VfdGFibGVfc2V0AAoRcGFnZV90YWJsZV9kZWxldGUACxhidWZfcG9vbF9nZXRfc2xvdF9vZmZzZXQADBpidWZfcG9vbF9yZWFkX3Nsb3RfdG9fcGFnZQANG2J1Zl9wb29sX3dyaXRlX3Nsb3RfdG9fcGFnZQAOGmJ1Zl9wb29sX2dldF9yZXNpZGVudF9zbG90AAkUYnVmX3Bvb2xfYXNzaWduX3Nsb3QADxZidWZfcG9vbF91bmFzc2lnbl9zbG90ABATYnVmX3Bvb2xfbWFya19kaXJ0eQARFGJ1Zl9wb29sX2NsZWFyX2RpcnR5ABIRYnVmX3Bvb2xfaXNfZGlydHkAEwlwYWdlX2luaXQAFA5wYWdlX2luaXRfZnJlZQAVDXBhZ2VfZ2V0X3R5cGUAFg1wYWdlX3NldF90eXBlABcTcGFnZV9nZXRfY2VsbF9jb3VudAAYE3BhZ2Vfc2V0X2NlbGxfY291bnQAGRxwYWdlX2dldF9jZWxsX2NvbnRlbnRfb2Zmc2V0ABoccGFnZV9zZXRfY2VsbF9jb250ZW50X29mZnNldAAbFXBhZ2VfZ2V0X25leHRfcGFnZV9pZAAcFXBhZ2Vfc2V0X25leHRfcGFnZV9pZAAdE3BhZ2VfZ2V0X2ZyZWVfYnl0ZXMAHhNwYWdlX3NldF9mcmVlX2J5dGVzAB8RcGFnZV9nZXRfY2hlY2tzdW0AIBFwYWdlX3NldF9jaGVja3N1bQAhFHBhZ2VfZ2V0X2NlbGxfb2Zmc2V0ACIUcGFnZV9zZXRfY2VsbF9vZmZzZXQAIx5wYWdlX2dldF9jb250aWd1b3VzX2ZyZWVfc3BhY2UAJBlwYWdlX2dldF90b3RhbF9mcmVlX3NwYWNlACUMcGFnZV9jb21wYWN0ACYTcGFnZV9nZXRfcm93X2xlbmd0aAAnD3BhZ2VfZGVsZXRlX3JvdwAoEnBhZ2VfaW5pdF9pbnRlcmlvcgApHHBhZ2VfZ2V0X3JpZ2h0X2NoaWxkX3BhZ2VfaWQAHBxwYWdlX3NldF9yaWdodF9jaGlsZF9wYWdlX2lkAB0ZcGFnZV9pbnNlcnRfaW50ZXJpb3JfY2VsbAAqG3BhZ2VfYmluYXJ5X3NlYXJjaF9pbnRlcmlvcgArFHBhZ2VfaW5pdF9pbmRleF9sZWFmACwNY29tcHV0ZV9jcmMzMgAtFWNvbXB1dGVfcGFnZV9jaGVja3N1bQAuFmNvbXB1dGVfcGFnZTFfY2hlY2tzdW0ALxJjYXRhbG9nX2luaXRfcGFnZTEAMBdjYXRhbG9nX2dldF90b3RhbF9wYWdlcwAgF2NhdGFsb2dfc2V0X3RvdGFsX3BhZ2VzACEaY2F0YWxvZ19nZXRfZnJlZV9wYWdlX2hlYWQAMRpjYXRhbG9nX3NldF9mcmVlX3BhZ2VfaGVhZAAyGmNhdGFsb2dfZ2V0X3NjaGVtYV92ZXJzaW9uADMgY2F0YWxvZ19pbmNyZW1lbnRfc2NoZW1hX3ZlcnNpb24ANBpjYXRhbG9nX2dldF9jaGFuZ2VfY291bnRlcgA1IGNhdGFsb2dfaW5jcmVtZW50X2NoYW5nZV9jb3VudGVyADYdY2F0YWxvZ191cGRhdGVfcGFnZTFfY2hlY2tzdW0ANxpjYXRhbG9nX3dyaXRlX2ZpeGVkX3N0cmluZwA4HGNhdGFsb2dfZmluZF9mcmVlX3RhYmxlX3Nsb3QAORxjYXRhbG9nX2ZpbmRfZnJlZV9pbmRleF9zbG90ADofY2F0YWxvZ19kZWxldGVfaW5kZXhfZGVzY3JpcHRvcgA7H2NhdGFsb2dfZGVsZXRlX3RhYmxlX2Rlc2NyaXB0b3IAPBFjYXRhbG9nX2luaXRfcGFnZQA9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IAE7AAALCgAgAEEEai8AAAsMACAAQQRqIAE7AAALCgAgAEEGaigAAAsMACAAQQZqIAE2AAALCgAgAEEKai8AAAsMACAAQQpqIAE7AAALCgAgAEEMaigAAAsMACAAQQxqIAE2AAALEAAgACABQQF0akEQai8AAAsSACAAIAFBAXRqQRBqIAI7AAALHgAgAEEEai8AACAAQQJqLwAAQQF0a0EQa0H//wNxCycAIABBCmovAAAgAEEEai8AACAAQQJqLwAAQQF0a2pBEGtB//8DcQuBAgEHfyAAQQJqLwAAIgZFBEAgAEEKakEAOwAAIABBBGpBgCA7AAAPCyABQQAgACABRxtBACABQYBgTxsiAyAAKQAINwAIIAMgACkAADcAACADQRBqIQQgAEEBaiEIIABBEGohBUGAICEBA0AgBS8AACECIAECfyAALQAAQQpGBEAgACACaiIHLwAAQQpqDAELIAAgAmohByACIAhqLwAACyICayEBIAJB//8DcSICBEAgAyABQf//A3FqIAcgAvwKAAALIAQgATsAACAFQQJqIQUgBEECaiEEIAZBAWsiBg0ACyADQQpqQQA7AAAgA0EEaiABOwAAIAAgA0GAIPwKAAALCgAgAEEBai8AAAt0AQN/IABBAmovAAAiAiABSwRAIAAgACABQQF0akEQaiIDLwAAakEBai8AACEEAkAgAkEBayICIAFGDQAgAiABa0EBdCIBRQ0AIAMgA0ECaiAB/AoAAAsgAEECaiACOwAAIABBCmoiACAALwAAIARqOwAACws1ACAAQQU7AAAgAEEMakEANgAAIABBCmpBADsAACAAQQZqIAE2AAAgAEECakGAgICAATYAAAtsAQV/IABBAmoiBS8AACIDQaICTQR/IABBBGoiBi8AAEEMayIEIABqIgcgATYAACAHQQRqIAI3AAAgACADQQF0Qf7/A3FqQRBqIAQ7AAAgBiAEOwAAIAUgA0EBaiIAOwAAIABB//8DcQVBfwsLhwEBBn8CQCAAQQJqLwAAIgIEQCAAQRBqIQcgAkEBayEDQX8hAgNAIAMgBWoiBEEBdiEGAkAgACAHIARB/v8HcWovAABqIgRBBGo1AAAgAVkEQCAGQQFrIQMgBCgAACECDAELIAZBAWohBQsgAyAFTw0ACyACQX9HDQELIABBBmooAAAhAgsgAgs1ACAA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";let Wn=null;function Bo(){if(!Wn){const e=globalThis.Buffer;if(typeof e<"u"&&typeof e.from=="function")Wn=new Uint8Array(e.from(Wi,"base64"));else{const t=atob(Wi),n=t.length;Wn=new Uint8Array(n);for(let s=0;s<n;s++)Wn[s]=t.charCodeAt(s)}}return Wn}function Lo(e,t){const n=t??Bo(),s=new WebAssembly.Module(n),i=new WebAssembly.Instance(s,{env:{memory:e}}),r=i.exports;r.__stack_pointer&&typeof r.__stack_pointer=="object"&&"value"in r.__stack_pointer&&(r.__stack_pointer.value=4378624);const o=(c,l=0)=>c.byteOffset+l;return{instance:i,exports:r,memory:e,page_init:(c,l,u=es,_=0)=>{r.page_init(o(c,l),u,_)},page_init_free:(c,l,u=0)=>{r.page_init_free(o(c,l),u)},page_get_type:(c,l)=>r.page_get_type(o(c,l)),page_set_type:(c,l,u)=>{r.page_set_type(o(c,l),u)},page_get_cell_count:(c,l)=>r.page_get_cell_count(o(c,l)),page_set_cell_count:(c,l,u)=>{r.page_set_cell_count(o(c,l),u)},page_get_cell_content_offset:(c,l)=>r.page_get_cell_content_offset(o(c,l)),page_set_cell_content_offset:(c,l,u)=>{r.page_set_cell_content_offset(o(c,l),u)},page_get_next_page_id:(c,l)=>r.page_get_next_page_id(o(c,l)),page_set_next_page_id:(c,l,u)=>{r.page_set_next_page_id(o(c,l),u)},page_get_free_bytes:(c,l)=>r.page_get_free_bytes(o(c,l)),page_set_free_bytes:(c,l,u)=>{r.page_set_free_bytes(o(c,l),u)},page_get_checksum:(c,l)=>r.page_get_checksum(o(c,l)),page_set_checksum:(c,l,u)=>{r.page_set_checksum(o(c,l),u)},page_get_cell_offset:(c,l,u)=>r.page_get_cell_offset(o(c,l),u),page_set_cell_offset:(c,l,u,_)=>{r.page_set_cell_offset(o(c,l),u,_)},page_get_contiguous_free_space:(c,l)=>r.page_get_contiguous_free_space(o(c,l)),page_get_total_free_space:(c,l)=>r.page_get_total_free_space(o(c,l)),page_compact:(c,l,u=0,_)=>{_?Qn(c,l,u,_):r.page_compact(o(c,l),u,-1,0,0)},page_get_row_length:(c,l)=>r.page_get_row_length(o(c,l)),page_insert_row:(c,l,u,_=0)=>an(c,l,u,_),page_delete_row:(c,l,u)=>{r.page_delete_row(o(c,l),u)},page_update_row:(c,l,u,_,A=0)=>Ui(c,l,u,_,A),page_table_hash:(c,l)=>r.page_table_hash(c,l),page_table_get:(c,l,u,_)=>r.page_table_get(o(c,l),u,_),page_table_set:(c,l,u,_,A)=>{if(r.page_table_set(o(c,l),u,_,A)<0)throw new Error(`BufferPool page table full: cannot insert page ${_}`)},page_table_delete:(c,l,u,_)=>r.page_table_delete(o(c,l),u,_)!==0,buf_pool_get_slot_offset:c=>r.buf_pool_get_slot_offset(c),buf_pool_read_slot_to_page:(c,l,u)=>r.buf_pool_read_slot_to_page(o(c,l),u),buf_pool_write_slot_to_page:(c,l,u,_)=>{r.buf_pool_write_slot_to_page(o(c,l),u,_)},buf_pool_get_resident_slot:(c,l,u,_)=>r.buf_pool_get_resident_slot(o(c,l),u,_),buf_pool_assign_slot:(c,l,u,_,A,f)=>{r.buf_pool_assign_slot(o(c,l),o(c,u),_,A,f)},buf_pool_unassign_slot:(c,l,u,_,A)=>{r.buf_pool_unassign_slot(o(c,l),o(c,u),_,A)},buf_pool_mark_dirty:(c,l,u)=>{r.buf_pool_mark_dirty(o(c,l),u)},buf_pool_clear_dirty:(c,l,u)=>{r.buf_pool_clear_dirty(o(c,l),u)},buf_pool_is_dirty:(c,l,u)=>r.buf_pool_is_dirty(o(c,l),u)!==0,buf_pool_pin_slot:(c,l)=>{Li(c,l)},buf_pool_unpin_slot:(c,l)=>{Ri(c,l)},buf_pool_is_pinned:(c,l)=>cn(c,l),buf_pool_find_victim:(c,l,u,_,A,f)=>Fi(c,l,u,_,A,f),buf_pool_select_eviction_victim:(c,l,u,_,A,f,g,d)=>Di(c,l,u,_,A,f,g,d),catalog_init_page1:c=>{r.catalog_init_page1(o(c))},catalog_read_page1_header:(c,l)=>qn(c,l),catalog_get_total_pages:c=>r.catalog_get_total_pages(o(c)),catalog_set_total_pages:(c,l)=>{r.catalog_set_total_pages(o(c),l)},catalog_get_free_page_head:c=>r.catalog_get_free_page_head(o(c)),catalog_set_free_page_head:(c,l)=>{r.catalog_set_free_page_head(o(c),l)},catalog_get_schema_version:c=>r.catalog_get_schema_version(o(c)),catalog_increment_schema_version:c=>r.catalog_increment_schema_version(o(c)),catalog_get_change_counter:c=>r.catalog_get_change_counter(o(c)),catalog_increment_change_counter:c=>r.catalog_increment_change_counter(o(c)),catalog_update_page1_checksum:c=>r.catalog_update_page1_checksum(o(c)),sql_like_match:(c,l)=>Xe(c,l),fnv1a_32:c=>ws(c),compare_sorter_keys:fn,vm_step:Gn}}function Ro(e=Qe,t=ve){const n=Zs(e,t),s=n.transientArenaOffset+256*1024,i=Math.ceil(s/65536),r=Math.ceil((n.transientArenaOffset+t)/65536);return new WebAssembly.Memory({initial:i,maximum:Math.max(i,r)})}class Fo{constructor(t){U(this,"io");U(this,"wasmMemory");U(this,"buffer");U(this,"view");U(this,"uint8");U(this,"slotCount");U(this,"maxQueryMemory");U(this,"offsets");U(this,"slotsEndOffset");U(this,"slotToPageOffset");U(this,"pageToSlotOffset");U(this,"pageToSlotBuckets");U(this,"dirtyMaskOffset");U(this,"vmContextOffset");U(this,"resultBufferOffset");U(this,"bytecodeOffset");U(this,"pageScratchpadOffset");U(this,"transientArenaOffset");U(this,"pin_counts");U(this,"slot_dirty_generations");U(this,"ref_bits");U(this,"clock_hand",0);U(this,"arena_offset",0);U(this,"in_flight_acquires",new Map);U(this,"allocation_lock",Promise.resolve());var s,i,r;this.slotCount=t.slotCount??((s=t.pool)==null?void 0:s.slotCount)??Qe,this.maxQueryMemory=t.maxQueryMemory??((i=t.pool)==null?void 0:i.maxQueryMemory)??ve;const n=t.memory??((r=t.pool)==null?void 0:r.wasmMemory);if(!n)throw new Error("BufferPoolDriver requires a valid WebAssembly.Memory (or pool with wasmMemory)");if(this.wasmMemory=n,this.buffer=this.wasmMemory.buffer,this.view=new DataView(this.buffer),this.uint8=new Uint8Array(this.buffer),this.offsets=Zs(t.useDefaultLayoutOffsets?Qe:this.slotCount,this.maxQueryMemory),this.slotsEndOffset=this.offsets.slotsEndOffset,this.slotToPageOffset=this.offsets.slotToPageOffset,this.pageToSlotOffset=this.offsets.pageToSlotOffset,this.pageToSlotBuckets=this.offsets.pageToSlotBuckets,this.dirtyMaskOffset=this.offsets.dirtyMaskOffset,this.vmContextOffset=this.offsets.vmContextOffset,this.resultBufferOffset=this.offsets.resultBufferOffset,this.bytecodeOffset=this.offsets.bytecodeOffset,this.pageScratchpadOffset=this.offsets.pageScratchpadOffset,this.transientArenaOffset=this.offsets.transientArenaOffset,this.ref_bits=new Uint8Array(this.slotCount),this.pin_counts=new Uint32Array(this.slotCount),this.slot_dirty_generations=new Uint32Array(this.slotCount),t.io)this.io=t.io;else if(t.vfs)this.io=new Ii({vfs:t.vfs,memory:this.wasmMemory});else throw new Error("BufferPoolDriver requires either an Io instance or IVfsAdapter");ie(this.uint8,this.slotToPageOffset,0,this.slotCount*4),ie(this.uint8,this.pageToSlotOffset,0,this.pageToSlotBuckets*Ce),ie(this.uint8,this.dirtyMaskOffset,0,Math.ceil(this.slotCount/8)),this.assignSlot(0,1),this.pin_counts[0]=1}validate_slot_idx(t){if(!Number.isInteger(t)||t<0||t>=this.slotCount)throw new Error(`Invalid slot index: ${t}. Must be an integer between 0 and ${this.slotCount-1}`)}validate_page_id(t){if(!Number.isInteger(t)||t<=0)throw new Error(`Invalid page ID: ${t}. Page IDs must be positive integers.`)}async with_allocation_lock(t){const n=this.allocation_lock;let s;this.allocation_lock=new Promise(i=>{s=i}),await n;try{return await t()}finally{s()}}setTransactionCoordinator(t){this.io.setTransactionCoordinator(t)}getSlotOffset(t){return this.validate_slot_idx(t),t*4096}getPageBytesInSlot(t){return this.validate_slot_idx(t),this.uint8.subarray(t*4096,(t+1)*4096)}getSlotDataView(t){return this.validate_slot_idx(t),new DataView(this.buffer,t*4096,4096)}getResidentSlot(t){return this.validate_page_id(t),Wt(this.view,this.pageToSlotOffset,this.pageToSlotBuckets,t)}getAssignedPage(t){return this.validate_slot_idx(t),ln(this.view,this.slotToPageOffset,t)}assignSlot(t,n){if(this.validate_slot_idx(t),!Number.isInteger(n)||n<=0)throw new Error(`Invalid page ID: ${n}. Must be a positive integer >= 1`);if(t===0&&n!==1)throw new Error(`Cannot reassign slot 0: reserved permanently for page 1 (got page ${n})`);const s=this.getResidentSlot(n);if(s!==-1&&s!==t)throw new Error(`Cannot map page ${n} to slot ${t}: already resident in slot ${s}`);ao(this.view,this.slotToPageOffset,this.pageToSlotOffset,this.pageToSlotBuckets,t,n),this.ref_bits[t]=1}unassignSlot(t){if(this.validate_slot_idx(t),t===0)throw new Error("Cannot unassign slot 0: reserved permanently for page 1");lo(this.view,this.slotToPageOffset,this.pageToSlotOffset,this.pageToSlotBuckets,t),this.ref_bits[t]=0}markDirty(t){this.validate_slot_idx(t),co(this.uint8,this.dirtyMaskOffset,t),this.slot_dirty_generations[t]++}clearDirty(t){this.validate_slot_idx(t),uo(this.uint8,this.dirtyMaskOffset,t)}isDirty(t){return this.validate_slot_idx(t),Bi(this.uint8,this.dirtyMaskOffset,t)}pinSlot(t){this.validate_slot_idx(t),Li(this.pin_counts,t)}unpinSlot(t){this.validate_slot_idx(t),Ri(this.pin_counts,t)}pinPage(t){this.validate_page_id(t);const n=this.getResidentSlot(t);if(n===-1)throw new Error(`Cannot pin page ${t}: page is not resident in buffer pool`);this.pinSlot(n)}unpinPage(t){if(this.validate_page_id(t),t===1)return;const n=this.getResidentSlot(t);n!==-1&&this.unpinSlot(n)}forceUnpinSlot(t){this.validate_slot_idx(t),t!==0&&(this.pin_counts[t]=0)}forceUnpinPage(t){if(this.validate_page_id(t),t<=1)return;const n=this.getResidentSlot(t);n!==-1&&this.forceUnpinSlot(n)}isSlotPinned(t){return this.validate_slot_idx(t),cn(this.pin_counts,t)}getPinCount(t){return this.validate_slot_idx(t),this.pin_counts[t]}getRefBit(t){return this.validate_slot_idx(t),this.ref_bits[t]}setRefBit(t,n){this.validate_slot_idx(t),this.ref_bits[t]=n?1:0}allocArena(t){const n=t+7&-8;if(this.arena_offset+n>this.maxQueryMemory)throw new _i;const s=this.transientArenaOffset+this.arena_offset;return this.arena_offset+=n,s}resetArena(){this.arena_offset>0&&(ie(this.uint8,this.transientArenaOffset,0,this.arena_offset),this.arena_offset=0)}getArenaOffset(){return this.arena_offset}async acquirePage(t,n=!1){this.validate_page_id(t);const s=this.getResidentSlot(t);if(s!==-1)return this.setRefBit(s,1),n&&this.pinSlot(s),s;const i=this.in_flight_acquires.get(t);if(i){const o=await i;return n&&this.pinSlot(o),o}const r=(async()=>{const{candidate_slot:o,flush_page_id:a,next_clock_hand:c}=Di(this.buffer,this.ref_bits,this.pin_counts,this.slotToPageOffset,this.dirtyMaskOffset,this.slotCount,this.clock_hand,t);this.clock_hand=c,this.pinSlot(o);try{return await this.io.resolvePageFault(o,t,a),this.assignSlot(o,t),this.setRefBit(o,1),this.clearDirty(o),o}catch(l){throw o!==-1&&this.unpinSlot(o),l}})();this.in_flight_acquires.set(t,r);try{const o=await r;return n||this.unpinSlot(o),o}finally{this.in_flight_acquires.delete(t)}}acquireAndPinPage(t){return this.acquirePage(t,!0)}async flushSlot(t){this.validate_slot_idx(t);const n=this.getAssignedPage(t);if(n===0)return;if(t===0&&n!==1)throw new Error(`Corruption detected: slot 0 is assigned to page ${n} instead of page 1`);const s=this.slot_dirty_generations[t];await this.io.writeSlot(t,n),this.slot_dirty_generations[t]===s&&this.clearDirty(t)}async flushPage(t){this.validate_page_id(t);const n=this.getResidentSlot(t);n!==-1&&this.isDirty(n)&&await this.flushSlot(n)}async flushAllDirty(){for(let t=0;t<this.slotCount;t++)this.isDirty(t)&&await this.flushSlot(t);await this.io.flush()}async allocatePage(t=!1){return this.with_allocation_lock(async()=>{const n=this.getSlotDataView(0),s=yt(n,le),i=yt(n,se);if(s>0){if(s<=1||i>0&&s>i)throw new Se(s,`Corrupted free_page_head pointer ${s} (totalPages: ${i})`);const c=await this.acquirePage(s,t),l=this.getSlotDataView(c),u=Vr(l,rr);if(u!==Me)throw new Se(s,`Expected free page type 0x00, got 0x${u.toString(16)}`);const _=yt(l,or);if(_===s||i>0&&_>i)throw new Se(s,`Corrupted next_free_page_id pointer ${_} in free page ${s}`);return Tt(n,le,_),this.markDirty(0),Dn(l,0),this.markDirty(c),s}const r=i+1;Tt(n,se,r),this.markDirty(0);const o=await this.acquirePage(r,t),a=this.getSlotDataView(o);return Dn(a,0),this.markDirty(o),r})}allocateAndPinPage(){return this.allocatePage(!0)}async freePage(t,n=!1){if(this.validate_page_id(t),t<=1)throw new Error(`Cannot free reserved database page ${t}`);return this.with_allocation_lock(async()=>{const s=this.getSlotDataView(0),i=yt(s,se);if(i>0&&t>i)throw new Error(`Cannot free page ${t} beyond total pages ${i}`);const r=this.getResidentSlot(t);if(r!==-1){if(n)this.forceUnpinSlot(r);else if(this.isSlotPinned(r))throw new Error(`Cannot free pinned/active database page ${t}`)}const o=await this.acquirePage(t,!0);try{const a=this.getSlotDataView(o),c=qe(a,0);if(c===Me){if(this.unassignSlot(o),n)return;throw new Error(`Double-free detected: page ${t} is already marked free`)}if(!n&&c===Nn)throw new Error(`Cannot free system catalog page ${t}`);const l=yt(s,le);Kr(a,0,l),ie(this.uint8,o*4096+Kt,0,4096-Kt),this.io.isInTransaction()?await this.io.spillOrWriteSlot(o,t):await this.flushSlot(o),this.unassignSlot(o),this.clearDirty(o),this.setRefBit(o,0),Tt(s,le,t),this.markDirty(0)}finally{this.unpinSlot(o)}})}async stepVm(t,n){let s=Gn(t,this.view,n);for(;s===O.PAGE_FAULT;){const i=t.cursor.pageId;await this.acquirePage(i),t.status=O.RUNNING,s=Gn(t,this.view,n)}return s}}async function Hi(e){var u;const t=await e.getWalFrameCount();if(t===0)return{frameCount:0,committedTxCount:0,abortedTxCount:0,replayedPageCount:0};const n=await e.readWalHeader();if(!n)return await e.truncateWal(0),{frameCount:0,committedTxCount:0,abortedTxCount:0,replayedPageCount:0};try{hs(n,!0)}catch{return await e.truncateWal(0),{frameCount:0,committedTxCount:0,abortedTxCount:0,replayedPageCount:0}}const s=await e.readWalFrames(0,t),i=new Map,r=new Set;let o=0;for(const _ of s){const A=Ti(_);if(!A.valid||!A.header)break;const{header:f}=A;if(f.frameSeq!==o+1)break;if(o++,i.has(f.txId)||i.set(f.txId,[]),f.frameType===jn)r.add(f.txId);else if(f.frameType===Zn||f.frameType===Kn){const g=new Uint8Array(_.buffer,_.byteOffset+ke,4096),d=new Uint8Array(4096);d.set(g),i.get(f.txId).push({pageId:f.pageId,data:d,frameType:f.frameType})}}const a=new Map;let c=0,l=0;for(const[_,A]of i.entries())if(r.has(_)){c++;for(const f of A)f.pageId>0&&a.set(f.pageId,f.data)}else l++;if(a.size>0){const _=[];for(const[A,f]of a.entries())_.push({pageId:A,data:f});_.sort((A,f)=>A.pageId-f.pageId),await e.writePages(_)}return await((u=e.flush)==null?void 0:u.call(e)),await e.truncateWal(0),{frameCount:o,committedTxCount:c,abortedTxCount:l,replayedPageCount:a.size}}class Do{constructor(t,n){U(this,"activeLease",null);U(this,"inFlightNonTxCount",0);U(this,"queue",[]);U(this,"leaseWaiters",[]);U(this,"nextLeaseId",1);U(this,"nextTxId",1);U(this,"crossTabLockName");U(this,"onSyncCrossTab");U(this,"releaseWebLock",null);this.crossTabLockName=t,this.onSyncCrossTab=n}hasWebLocks(){var t;return!!this.crossTabLockName&&typeof navigator<"u"&&typeof((t=navigator==null?void 0:navigator.locks)==null?void 0:t.request)=="function"}async acquireWebLock(){!this.hasWebLocks()||this.releaseWebLock||await new Promise(t=>{navigator.locks.request(this.crossTabLockName,{mode:"exclusive"},()=>new Promise(n=>{this.releaseWebLock=n,t()})).catch(()=>{t()})})}releaseCurrentWebLock(){if(this.releaseWebLock){const t=this.releaseWebLock;this.releaseWebLock=null,t()}}get isLeased(){return this.activeLease!==null}get currentLease(){return this.activeLease}async enqueue(t,n){if(this.activeLease&&n===this.activeLease.leaseId)return t();if(this.activeLease||this.leaseWaiters.length>0||this.hasWebLocks()&&this.inFlightNonTxCount>0)return new Promise((s,i)=>{this.queue.push(async()=>{this.inFlightNonTxCount++;try{this.hasWebLocks()&&this.inFlightNonTxCount===1&&(await this.acquireWebLock(),this.onSyncCrossTab&&await this.onSyncCrossTab());const r=await t();s(r)}catch(r){i(r)}finally{this.inFlightNonTxCount--,this.inFlightNonTxCount===0&&!this.activeLease&&this.releaseCurrentWebLock(),this.drain()}})});this.inFlightNonTxCount++;try{return this.hasWebLocks()&&this.inFlightNonTxCount===1&&(await this.acquireWebLock(),this.onSyncCrossTab&&await this.onSyncCrossTab()),await t()}finally{this.inFlightNonTxCount--,this.inFlightNonTxCount===0&&!this.activeLease&&this.releaseCurrentWebLock(),this.drain()}}async acquireExclusiveLease(){if(!this.activeLease&&this.inFlightNonTxCount===0&&this.queue.length===0){const t={leaseId:this.nextLeaseId++,txId:this.nextTxId++,createdAt:Date.now()};return this.activeLease=t,await this.acquireWebLock(),t}return new Promise(t=>{this.leaseWaiters.push({resolve:async n=>{await this.acquireWebLock(),t(n)}}),this.drain()})}releaseExclusiveLease(t){!this.activeLease||this.activeLease.leaseId!==t||(this.activeLease=null,this.releaseCurrentWebLock(),this.drain())}drain(){if(!this.activeLease){if(this.leaseWaiters.length>0){if(this.inFlightNonTxCount===0){const t=this.leaseWaiters.shift(),n={leaseId:this.nextLeaseId++,txId:this.nextTxId++,createdAt:Date.now()};this.activeLease=n,t.resolve(n)}return}for(;this.queue.length>0&&!this.activeLease&&this.leaseWaiters.length===0&&(!this.hasWebLocks()||this.inFlightNonTxCount===0);){const t=this.queue.shift();t&&t()}}}}class Qo{constructor(t,n,s,i){U(this,"vfs");U(this,"pool");U(this,"io");U(this,"queue");U(this,"activeLease",null);U(this,"snapshotFrameCount",0);U(this,"snapshotWalFrameSeq",0);U(this,"slotSnapshots",new Map);U(this,"pinCountsSnapshot",null);U(this,"spilledPages",new Map);U(this,"committedWalPages",new Map);U(this,"walFrameSeq",0);U(this,"txCommitCount",0);U(this,"checkpointSeq",0);U(this,"instanceSalt",Math.floor(Math.random()*4294967295)>>>0||1);U(this,"expectedWalFrameCount",0);U(this,"lastDiskChangeCounter",0);U(this,"lastDiskSchemaVersion",0);U(this,"onCrossTabInvalidated");U(this,"idleTimer",null);U(this,"isClosed",!1);this.vfs=t,this.pool=n,this.io=s,this.queue=new Do(i,()=>this.syncCrossTabState())}setOnCrossTabInvalidated(t){this.onCrossTabInvalidated=t}recordDiskPage1State(){const t=this.pool.getSlotDataView(0);this.lastDiskChangeCounter=t.getUint32(pe,!0),this.lastDiskSchemaVersion=t.getUint32(Ie,!0)}async reloadFromDisk(t,n,s){this.pool.getPageBytesInSlot(0).set(t),this.pool.clearDirty(0),this.lastDiskChangeCounter=n,this.lastDiskSchemaVersion=s;for(let i=1;i<this.pool.slotCount;i++)this.pool.unassignSlot(i),this.pool.clearDirty(i),this.pool.pin_counts[i]=0;this.pool.pin_counts[0]=1,this.onCrossTabInvalidated&&await this.onCrossTabInvalidated()}async syncCrossTabState(t=!1){if(!t&&!this.queue.hasWebLocks())return;const n=await this.vfs.getWalFrameCount();let s=!1;if(n>0){const r=await this.vfs.readWalHeader();let o=0;if(r)try{o=hs(r,!0).salt1}catch{o=0}(o!==this.instanceSalt||n!==this.expectedWalFrameCount)&&(s=!0,await Hi(this.vfs),this.committedWalPages.clear(),this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0)}else this.expectedWalFrameCount>0&&(s=!0,this.committedWalPages.clear(),this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0);const[i]=await this.vfs.readPages([1]);if(i){const r=new DataView(i.buffer,i.byteOffset,i.byteLength),o=r.getUint32(pe,!0),a=r.getUint32(Ie,!0);(s||o!==this.lastDiskChangeCounter||a!==this.lastDiskSchemaVersion)&&await this.reloadFromDisk(i,o,a)}}get leaseQueue(){return this.queue}isInTransaction(){return this.activeLease!==null}getActiveLeaseId(){return this.activeLease?this.activeLease.leaseId:null}getActiveTxId(){return this.activeLease?this.activeLease.txId:null}hasSpilledPage(t){return this.spilledPages.has(t)||this.committedWalPages.has(t)}getSpilledPage(t){const n=this.spilledPages.get(t)??this.committedWalPages.get(t);return n?new Uint8Array(n):null}onDirectPageWrite(t,n){if(this.committedWalPages.has(t)&&this.committedWalPages.set(t,new Uint8Array(n)),t===1){const s=new DataView(n.buffer,n.byteOffset,n.byteLength);this.lastDiskChangeCounter=s.getUint32(pe,!0),this.lastDiskSchemaVersion=s.getUint32(Ie,!0)}}async spillUncommittedSlot(t,n){if(!this.activeLease){await this.io.writeSlot(t,n);return}this.io.stampSlotChecksum(t,n);const s=this.pool.getPageBytesInSlot(t),i=new Uint8Array(we);i.set(s),this.spilledPages.set(n,i);const r=this.pool.getSlotDataView(0).getUint32(se,!0),o=gs({frameType:Kn,flags:0,txId:this.activeLease.txId,pageId:n,dbSizePages:r,frameSeq:++this.walFrameSeq},i);await this.vfs.appendWalFrames([o]),this.expectedWalFrameCount=await this.vfs.getWalFrameCount()}async captureSavepoint(){const t=await this.vfs.getWalFrameCount(),n=new Map;for(let r=0;r<this.pool.slotCount;r++){const o=this.pool.getAssignedPage(r);if(o>0){const a=this.pool.isDirty(r),c=new Uint8Array(this.pool.getPageBytesInSlot(r));n.set(r,{pageId:o,dirty:a,data:c})}}const s=new Uint32Array(this.pool.pin_counts),i=new Map;for(const[r,o]of this.spilledPages.entries())i.set(r,new Uint8Array(o));return{frameCount:t,slotSnapshots:n,pinCounts:s,spilledPages:i,walFrameSeq:this.walFrameSeq}}async restoreSavepoint(t){for(let n=1;n<this.pool.slotCount;n++)this.pool.unassignSlot(n),this.pool.clearDirty(n);for(let n=0;n<this.pool.slotCount;n++){const s=t.slotSnapshots.get(n);s&&(this.pool.assignSlot(n,s.pageId),this.pool.getPageBytesInSlot(n).set(s.data),s.dirty?this.pool.markDirty(n):this.pool.clearDirty(n))}this.pool.pin_counts.set(t.pinCounts),this.spilledPages.clear();for(const[n,s]of t.spilledPages.entries())this.spilledPages.set(n,new Uint8Array(s));this.walFrameSeq=t.walFrameSeq,await this.vfs.truncateWal(t.frameCount),this.expectedWalFrameCount=t.frameCount}async begin(){const t=await this.queue.acquireExclusiveLease();this.activeLease=t,this.pauseIdleTimer();try{await this.syncCrossTabState();const n=await this.vfs.getWalFrameCount(),s=await this.vfs.readWalHeader();let i=!1;if(s&&n>0)try{i=hs(s,!0).salt1===this.instanceSalt}catch{i=!1}i||await this.vfs.writeWalHeader(As({checkpointSeq:this.checkpointSeq,salt1:this.instanceSalt})),this.spilledPages.clear();const r=await this.captureSavepoint();return this.snapshotFrameCount=r.frameCount,this.snapshotWalFrameSeq=r.walFrameSeq,this.slotSnapshots=r.slotSnapshots,this.pinCountsSnapshot=r.pinCounts,t}catch(n){throw this.activeLease=null,this.queue.releaseExclusiveLease(t.leaseId),n}}async commit(t){var o,a;if(!this.activeLease||this.activeLease.leaseId!==t)return;const n=this.activeLease.txId,s=[],i=this.pool.getSlotDataView(0).getUint32(se,!0);for(const[c,l]of this.spilledPages.entries())this.committedWalPages.set(c,l);for(let c=0;c<this.pool.slotCount;c++)if(this.pool.isDirty(c)){const l=this.pool.getAssignedPage(c);if(l>0){this.io.stampSlotChecksum(c,l);const u=this.pool.getPageBytesInSlot(c),_=new Uint8Array(we);_.set(u),this.committedWalPages.set(l,_),this.pool.clearDirty(c),s.push(gs({frameType:Zn,flags:0,txId:n,pageId:l,dbSizePages:i,frameSeq:++this.walFrameSeq},_))}}s.push(gs({frameType:jn,flags:0,txId:n,pageId:0,dbSizePages:i,frameSeq:++this.walFrameSeq})),await this.vfs.appendWalFrames(s),await((a=(o=this.vfs).flushWal)==null?void 0:a.call(o));const r=await this.vfs.getWalFrameCount();this.expectedWalFrameCount=r,this.activeLease=null,this.spilledPages.clear(),this.slotSnapshots.clear(),this.pinCountsSnapshot=null,this.txCommitCount++,this.queue.releaseExclusiveLease(t),this.scheduleIdleTimer(),(r>=256||this.txCommitCount>=100)&&this.queue.enqueue(()=>this.executeCheckpoint())}async rollback(t){!this.activeLease||this.activeLease.leaseId!==t||(await this.restoreSavepoint({frameCount:this.snapshotFrameCount,slotSnapshots:this.slotSnapshots,pinCounts:this.pinCountsSnapshot??new Uint32Array(this.pool.pin_counts),spilledPages:new Map,walFrameSeq:this.snapshotWalFrameSeq}),this.activeLease=null,this.spilledPages.clear(),this.slotSnapshots.clear(),this.pinCountsSnapshot=null,this.queue.releaseExclusiveLease(t),this.scheduleIdleTimer())}async checkpoint(){return this.queue.enqueue(()=>this.executeCheckpoint())}async executeCheckpoint(){var o,a;const t=await this.vfs.getWalFrameCount(),n=new Map;if(t>0){const c=await this.vfs.readWalFrames(0,t),l=new Map,u=new Set;for(const _ of c){const A=Ti(_);if(!A.valid||!A.header)break;const{frameType:f,txId:g,pageId:d}=A.header;if(l.has(g)||l.set(g,[]),f===jn)u.add(g);else if(f===Zn||f===Kn){const I=new Uint8Array(_.buffer,_.byteOffset+ke,we),p=new Uint8Array(we);p.set(I),l.get(g).push({pageId:d,data:p})}}for(const[_,A]of l.entries())if(u.has(_))for(const f of A)f.pageId>0&&n.set(f.pageId,f.data)}for(const[c,l]of this.committedWalPages.entries())n.set(c,l);const s=new Map;for(let c=0;c<this.pool.slotCount;c++)if(this.pool.isDirty(c)){const l=this.pool.getAssignedPage(c);if(l>0){this.io.stampSlotChecksum(c,l);const u=this.pool.getPageBytesInSlot(c),_=new Uint8Array(we);_.set(u),s.set(l,{slotIdx:c,data:_})}}const i=new Set([...n.keys(),...s.keys()]),r=[];for(const c of i)if(s.has(c)){const{slotIdx:l,data:u}=s.get(c);r.push({pageId:c,data:u}),this.pool.clearDirty(l)}else r.push({pageId:c,data:n.get(c)});return r.length>0&&(r.sort((c,l)=>c.pageId-l.pageId),await this.vfs.writePages(r)),await((a=(o=this.vfs).flush)==null?void 0:a.call(o)),await this.vfs.truncateWal(0),this.committedWalPages.clear(),this.checkpointSeq++,this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0,this.recordDiskPage1State(),await this.vfs.writeWalHeader(As({checkpointSeq:this.checkpointSeq,salt1:this.instanceSalt})),{pagesWritten:r.length}}async resetWalAfterImport(){this.spilledPages.clear(),this.committedWalPages.clear(),await this.vfs.truncateWal(0),this.checkpointSeq++,this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0,this.recordDiskPage1State(),await this.vfs.writeWalHeader(As({checkpointSeq:this.checkpointSeq,salt1:this.instanceSalt}))}scheduleIdleTimer(){this.isClosed||(this.pauseIdleTimer(),this.idleTimer=setTimeout(()=>{this.checkpoint().catch(()=>{})},5e3))}pauseIdleTimer(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null)}async close(){this.isClosed=!0,this.pauseIdleTimer(),await this.checkpoint()}}const vo=new Set(["count","sum","avg","min","max"]),ko=new Set(["upper","lower","length","substr","trim","abs","round","floor","ceil","concat","coalesce"]);function ge(e){return vo.has(e.toLowerCase())}function Mo(e){return ko.has(e.toLowerCase())}function Jl(e){return ge(e)||Mo(e)}function je(e,t){if(t==="where"){if(e.type==="fn"&&ge(e.name))throw new os(e.name);if(e.type==="binary"&&(je(e.left,t),je(e.right,t)),e.type==="fn")for(const n of e.args)je(n,t)}}function zl(e){const t=[];let n=0;const s=e.length;for(;n<s;){const i=e[n];if(/\s/.test(i)){n++;continue}if(/[0-9]/.test(i)||i==="."&&n+1<s&&/[0-9]/.test(e[n+1])){const r=n;let o=!1;for(;n<s&&(/[0-9]/.test(e[n])||e[n]==="."&&!o);)e[n]==="."&&(o=!0),n++;t.push({type:"NUMBER",value:e.slice(r,n),pos:r});continue}if(i==="'"||i==='"'){const r=i,o=n;n++;let a="";for(;n<s&&e[n]!==r;)e[n]==="\\"&&n+1<s&&n++,a+=e[n],n++;n<s&&e[n]===r&&n++,t.push({type:"STRING",value:a,pos:o});continue}if(i==="("){t.push({type:"LPAREN",value:"(",pos:n++});continue}if(i===")"){t.push({type:"RPAREN",value:")",pos:n++});continue}if(i===","){t.push({type:"COMMA",value:",",pos:n++});continue}if(i==="<"){if(n+1<s&&e[n+1]==="="){t.push({type:"OP",value:"<=",pos:n}),n+=2;continue}if(n+1<s&&e[n+1]===">"){t.push({type:"OP",value:"!=",pos:n}),n+=2;continue}t.push({type:"OP",value:"<",pos:n++});continue}if(i===">"){if(n+1<s&&e[n+1]==="="){t.push({type:"OP",value:">=",pos:n}),n+=2;continue}t.push({type:"OP",value:">",pos:n++});continue}if(i==="="){if(n+1<s&&e[n+1]==="="){t.push({type:"OP",value:"=",pos:n}),n+=2;continue}t.push({type:"OP",value:"=",pos:n++});continue}if(i==="!"&&n+1<s&&e[n+1]==="="){t.push({type:"OP",value:"!=",pos:n}),n+=2;continue}if(i==="+"||i==="-"||i==="/"||i==="%"){t.push({type:"OP",value:i,pos:n++});continue}if(i==="*"){t.push({type:"STAR",value:"*",pos:n++});continue}if(/[a-zA-Z_]/.test(i)){const r=n;for(;n<s;)if(/[a-zA-Z0-9_]/.test(e[n]))n++;else if(e[n]==="."&&n+1<s&&/[a-zA-Z_]/.test(e[n+1]))n+=2;else break;const o=e.slice(r,n);t.push({type:"IDENT",value:o,pos:r});continue}n++}return t.push({type:"EOF",value:"",pos:s}),t}class tc{constructor(t){U(this,"tokens");U(this,"cursor",0);this.tokens=t}peek(){return this.tokens[this.cursor]??{type:"EOF",value:"",pos:0}}consume(){const t=this.peek();return this.cursor++,t}match(t,n){const s=this.peek();return s.type!==t||n!==void 0&&s.value.toLowerCase()!==n.toLowerCase()?!1:(this.cursor++,!0)}getPrecedence(t){if(t.type==="OP"||t.type==="STAR"){if(t.value==="="||t.value==="!="||t.value==="<"||t.value==="<="||t.value===">"||t.value===">=")return 5;if(t.value==="+"||t.value==="-")return 10;if(t.value==="*"||t.value==="/"||t.value==="%")return 20}return 0}parse(t=0){let n=this.parsePrimary();for(;;){const s=this.peek(),i=this.getPrecedence(s);if(i===0||i<=t)break;this.consume();const r=this.parse(i);n={type:"binary",op:s.value,left:n,right:r}}return n}parsePrimary(){const t=this.peek();if(t.type==="OP"&&t.value==="-"){this.consume();const n=this.parse(25);return n.type==="literal"&&typeof n.value=="number"?{type:"literal",value:-n.value}:{type:"binary",op:"-",left:{type:"literal",value:0},right:n}}if(this.match("NUMBER"))return{type:"literal",value:Number(t.value)};if(this.match("STRING"))return{type:"literal",value:t.value};if(this.match("LPAREN")){const n=this.parse(0);if(!this.match("RPAREN"))throw new Error("Unclosed parenthesis in expression");return n}if(this.match("STAR"))return{type:"col",name:"*"};if(t.type==="IDENT"){this.consume();const n=t.value,s=n.toLowerCase();if(s==="null"&&this.peek().type!=="LPAREN")return{type:"literal",value:null};if(s==="true"&&this.peek().type!=="LPAREN")return{type:"literal",value:!0};if(s==="false"&&this.peek().type!=="LPAREN")return{type:"literal",value:!1};if(this.match("LPAREN")){const i=[];if(!this.match("RPAREN")){for(;;)if(i.push(this.parse(0)),!this.match("COMMA")){if(this.match("RPAREN"))break;throw new Error(`Expected ',' or ')' in argument list of function ${n}`)}}return{type:"fn",name:s,args:i}}return{type:"col",name:n}}throw new Error(`Unexpected token "${t.value}" in expression at position ${t.pos}`)}}function ft(e){const t=e.trim();if(!t)throw new Error("Cannot parse empty expression");const n=zl(t);return new tc(n).parse(0)}function ec(e){let t=0,n=null;const s=e.length;for(let i=0;i<s;i++){const r=e[i];if(n){r===n&&e[i-1]!=="\\"&&(n=null);continue}if(r==="'"||r==='"'){n=r;continue}if(r==="("){t++;continue}if(r===")"){t--;continue}if(t===0&&(r===" "||r===" ")&&i+4<s&&e.slice(i+1,i+3).toLowerCase()==="as"&&/\s/.test(e[i+3])){const o=e.slice(0,i).trim(),a=e.slice(i+4).trim();return{exprStr:o,explicitAlias:a}}}return{exprStr:e.trim()}}function Qt(e){if(e.type==="col")return e.name.includes(".")?e.name.slice(e.name.lastIndexOf(".")+1):e.name;if(e.type==="fn"){if(e.args.length>0&&e.args[0].type==="col"&&e.args[0].name!=="*"){const t=e.args[0].name.includes(".")?e.args[0].name.slice(e.args[0].name.lastIndexOf(".")+1):e.args[0].name;return`${e.name}_${t}`}return e.name}return e.type==="binary"?"expr":"val"}function Bs(e){const{exprStr:t,explicitAlias:n}=ec(e),s=ft(t),i=n&&n.length>0?n:Qt(s);return{expr:s,alias:i}}class it{constructor(t){U(this,"node");this.node=t}add(t){return new it({type:"binary",op:"+",left:this.node,right:Xt(t)})}sub(t){return new it({type:"binary",op:"-",left:this.node,right:Xt(t)})}mul(t){return new it({type:"binary",op:"*",left:this.node,right:Xt(t)})}div(t){return new it({type:"binary",op:"/",left:this.node,right:Xt(t)})}mod(t){return new it({type:"binary",op:"%",left:this.node,right:Xt(t)})}eq(t){return new it({type:"binary",op:"=",left:this.node,right:Xt(t)})}ne(t){return new it({type:"binary",op:"!=",left:this.node,right:Xt(t)})}lt(t){return new it({type:"binary",op:"<",left:this.node,right:Xt(t)})}lte(t){return new it({type:"binary",op:"<=",left:this.node,right:Xt(t)})}gt(t){return new it({type:"binary",op:">",left:this.node,right:Xt(t)})}gte(t){return new it({type:"binary",op:">=",left:this.node,right:Xt(t)})}as(t){return{expr:this.node,alias:t}}}function Xt(e){return e===null?{type:"literal",value:null}:typeof e=="boolean"?{type:"literal",value:e}:e instanceof it?e.node:typeof e=="number"?{type:"literal",value:e}:typeof e=="string"?{type:"literal",value:e}:e}function Vi(e){return new it({type:"col",name:e})}function Go(e){return new it(ft(e))}const nc=Go;function Pt(e,t){return new it({type:"fn",name:e.toLowerCase(),args:t.map(n=>typeof n=="string"&&!n.startsWith("'")?Vi(n).node:Xt(n))})}const qo=(e,...t)=>Pt(e,t),sc={upper:e=>Pt("upper",[e]),lower:e=>Pt("lower",[e]),length:e=>Pt("length",[e]),substr:(e,t,n)=>{const s=[e,t];return n!==void 0&&s.push(n),Pt("substr",s)},trim:e=>Pt("trim",[e]),abs:e=>Pt("abs",[e]),round:e=>Pt("round",[e]),floor:e=>Pt("floor",[e]),ceil:e=>Pt("ceil",[e]),count:e=>Pt("count",[e??Vi("*").node]),sum:e=>Pt("sum",[e]),avg:e=>Pt("avg",[e]),min:e=>Pt("min",[e]),max:e=>Pt("max",[e]),concat:(...e)=>Pt("concat",e),coalesce:(...e)=>Pt("coalesce",e)};for(const[e,t]of Object.entries(sc))Object.defineProperty(qo,e,{value:t,writable:!0,enumerable:!0,configurable:!0});const ic=qo;function vt(e,t,n){switch(e.type){case"literal":return e.value;case"col":return e.name==="*"?null:t[e.name]!==void 0?t[e.name]:null;case"binary":{const s=vt(e.left,t,n),i=vt(e.right,t,n);if(s===null||i===null||s===void 0||i===void 0)return null;if(e.op==="="||e.op==="!="||e.op==="<"||e.op==="<="||e.op===">"||e.op===">="){const a=typeof s=="string"&&typeof i=="string"?s<i?-1:s>i?1:0:Number(s)<Number(i)?-1:Number(s)>Number(i)?1:0;switch(e.op){case"=":return a===0?1:0;case"!=":return a!==0?1:0;case"<":return a<0?1:0;case"<=":return a<=0?1:0;case">":return a>0?1:0;case">=":return a>=0?1:0}}const r=Number(s),o=Number(i);switch(e.op){case"+":return r+o;case"-":return r-o;case"*":return r*o;case"/":return o===0?null:r/o;case"%":return o===0?null:r%o}return null}case"fn":{const s=e.name.toLowerCase();if(ge(s)){if(t[s]!==void 0)return t[s];const r=e.args[0];if(r&&r.type==="col"){const o=`${s}_${r.name}`;if(t[o]!==void 0)return t[o]}return null}const i=e.args.map(r=>vt(r,t,n));switch(s){case"upper":return i[0]!==null&&i[0]!==void 0?String(i[0]).toUpperCase():null;case"lower":return i[0]!==null&&i[0]!==void 0?String(i[0]).toLowerCase():null;case"length":return i[0]!==null&&i[0]!==void 0?String(i[0]).length:null;case"trim":return i[0]!==null&&i[0]!==void 0?String(i[0]).trim():null;case"substr":{if(i[0]===null||i[0]===void 0)return null;const r=String(i[0]),o=Math.max(0,(Number(i[1])||1)-1),a=i[2]!==null&&i[2]!==void 0?Number(i[2]):void 0;return a!==void 0?r.substring(o,o+a):r.substring(o)}case"abs":return i[0]!==null&&i[0]!==void 0?Math.abs(Number(i[0])):null;case"round":return i[0]!==null&&i[0]!==void 0?Math.round(Number(i[0])):null;case"floor":return i[0]!==null&&i[0]!==void 0?Math.floor(Number(i[0])):null;case"ceil":return i[0]!==null&&i[0]!==void 0?Math.ceil(Number(i[0])):null;case"concat":return i.some(r=>r==null)?null:i.map(String).join("");case"coalesce":{for(const r of i)if(r!=null)return r;return null}case"starts_with":case"startswith":return i[0]!==null&&i[0]!==void 0&&i[1]!==null&&i[1]!==void 0?String(i[0]).startsWith(String(i[1]))?1:0:null;case"ends_with":case"endswith":return i[0]!==null&&i[0]!==void 0&&i[1]!==null&&i[1]!==void 0?String(i[0]).endsWith(String(i[1]))?1:0:null;case"contains":return i[0]!==null&&i[0]!==void 0&&i[1]!==null&&i[1]!==void 0?String(i[0]).includes(String(i[1]))?1:0:null;case"like":return i[0]!==null&&i[0]!==void 0&&i[1]!==null&&i[1]!==void 0?Xe(String(i[0]),String(i[1]))?1:0:null;default:{let r;if(typeof n=="function")r=n(s);else if(n instanceof Map){const o=n.get(s);r=typeof o=="function"?o:o==null?void 0:o.call}else if(n&&typeof n=="object"){const o=n[s];r=typeof o=="function"?o:o==null?void 0:o.call}if(r)return r(...i);throw new di(s)}}}}}const _n=.5,Ls=.05,_e=.02;function Wo(e){const t=[];function n(i){if(i.colName&&t.push(i.colName),i.expr&&s(i.expr),i.children)for(const r of i.children)n(r);i.child&&n(i.child)}function s(i){if(i&&(i.type==="col"&&i.name&&t.push(i.name),i.left&&s(i.left),i.right&&s(i.right),i.args&&Array.isArray(i.args)))for(const r of i.args)s(r)}return n(e),t}function dn(e,t){const n=Wo(e),s=new Set;for(const i of n){const r=ht(i,t);r&&s.add(r.tableIdx)}return s}function $i(e,t){var s,i;const n=Math.max(1,t.rowCountEstimate||10);if(e.type==="cmp"){const r=e.op??"=";if(r==="="){const o=(s=e.colName)==null?void 0:s.toLowerCase(),a=t.columns.findIndex(c=>c.name.toLowerCase()===o);if(a!==-1&&t.indexes){for(const c of t.indexes)if(c.columnCount===1&&c.columnIndices[0]===a)return(c.flags&(It.PRIMARY|It.UNIQUE))!==0?1/n:Math.min(.2,5/n)}return .1}if(r==="<"||r==="<="||r===">"||r===">=")return .33;if(r==="!="||r==="<>")return .9;if(r==="like"||r==="contains"||r==="starts_with"||r==="ends_with")return .15}if(e.type==="in"){const r=Math.max(1,((i=e.values)==null?void 0:i.length)||1);return Math.min(1,r*.05)}return e.type==="null"?e.isNull?.05:.95:.2}function de(e,t,n,s){var _;const i=Math.max(1,e.rowCountEstimate||10);let r=1;for(const A of t)r*=$i(A,e);const o=Math.max(1,Math.round(i*r)),a=n!==void 0&&n.length>0,c=a&&o>1?o*Math.log2(o)*_e:0,l=ks(e,t,t,n);if(l){const A=l.scanType==="point",f=l.scanType==="multi_point",g=l.satisfiesOrderBy===!0,d=g&&s!==void 0&&s>0?Math.min(s,o):o;let I=_n;return A?(I+=1*_e,{cost:I,rows:1,scanType:"IndexScan",indexName:l.index.name,isOrderSatisfied:!0,sortCostAvoided:a?c:void 0}):f?(I=(((_=l.inValues)==null?void 0:_.length)||1)*_n+d*_e,!g&&a&&(I+=c),{cost:I,rows:d,scanType:"IndexScan",indexName:l.index.name,isOrderSatisfied:g,sortCostAvoided:g?c:void 0}):(I+=d*Ls+d*_e,!g&&a&&(I+=c),{cost:I,rows:d,scanType:"IndexScan",indexName:l.index.name,isOrderSatisfied:g,sortCostAvoided:g?c:void 0})}let u=i*_e;return a&&(u+=c),{cost:u,rows:o,scanType:"TableScan",isOrderSatisfied:!1}}function Hn(e,t){if(!e.indexes||e.indexes.length===0)return null;const n=e.columns.findIndex(r=>r.name.toLowerCase()===t.toLowerCase());if(n===-1)return null;let s=null,i=999;for(const r of e.indexes)if(r.columnCount===1&&r.columnIndices[0]===n){const o=(r.flags&It.PRIMARY)!==0,a=(r.flags&It.UNIQUE)!==0,c=o?1:a?2:3;c<i&&(i=c,s={index:r,isUnique:o||a})}return s}function Rs(e,t){const n=t.length,s=[],i=Array.from({length:n},()=>new Set);if(!e.joinedTables)return{edges:s,dependencies:i};for(let r=0;r<e.joinedTables.length;r++){const o=e.joinedTables[r],a=r+1,c=ht(o.leftCol,t),l=ht(o.rightCol,t);if(c&&l&&(s.push({tableA:c.tableIdx,tableB:l.tableIdx,colA:c.col.name,colB:l.col.name,op:o.op,type:o.type,declaredRightTable:a}),o.type==="left")){const u=c.tableIdx===a?l.tableIdx:c.tableIdx;i[a].add(u)}}return{edges:s,dependencies:i}}function Vn(e,t){if(e.selectExprs&&e.selectExprs.length>0)return e.selectExprs;const n=new Set,s=new Set;for(const r of t)for(const o of r.columns)n.has(o.name.toLowerCase())&&s.add(o.name.toLowerCase()),n.add(o.name.toLowerCase());const i=[];for(const r of t)for(const o of r.columns){const a=s.has(o.name.toLowerCase())?`${r.name}.${o.name}`:o.name;i.push({expr:{type:"col",name:`${r.name}.${o.name}`},alias:a})}return i}function Fs(e,t,n,s){const i=e.length,r=[];for(let o=1;o<i;o++){const a=e[o],c=t[a],l=e.slice(0,o),u=n.find(d=>d.tableA===a&&l.includes(d.tableB)||d.tableB===a&&l.includes(d.tableA));let _,A,f="=",g="inner";if(u)f=u.op,g=u.type,u.tableA===a?(A=`${c.name}.${u.colA}`,_=`${t[u.tableB].name}.${u.colB}`):(A=`${c.name}.${u.colB}`,_=`${t[u.tableA].name}.${u.colA}`);else{const d=s==null?void 0:s.find(I=>I.table.name===c.name);_=d?d.leftCol:`${t[e[0]].name}.id`,A=d?d.rightCol:`${c.name}.id`,f=d?d.op:"=",g=d?d.type:"inner"}r.push({type:g,table:c,cursor:o,leftCol:_,op:f,rightCol:A})}return r}function xi(e,t,n,s,i){if(!s||s.length===0)return!1;for(const r of s){if(r.direction==="desc")return!1;const o=r.colName;if(!o)return!1;let a=ht(o,n);if(!a&&i){const c=i.find(l=>l.alias===o);c&&c.expr.type==="col"&&(a=ht(c.expr.name,n))}if(!a||a.tableIdx!==t)return!1}return!0}function Xi(e,t){var n;if(e.type==="null")return 1;if(e.type==="cmp"){const s=e.op??"=";if(s==="like"||s==="not like")return(typeof e.value=="string"?e.value:"").startsWith("%")?25:15;let i=!1;if(t&&e.colName){const r=e.colName.toLowerCase(),o=r.includes(".")?r.slice(r.lastIndexOf(".")+1):r;for(const a of t){const c=a.columns.find(l=>l.name.toLowerCase()===o);if(c){i=c.type===1||c.type===2||c.type===3;break}}}else typeof e.value=="number"&&(i=!0);return s==="="||s==="=="?i?2:4:i?3:6}return e.type==="in"?(((n=e.values)==null?void 0:n.length)??0)<=3?5:10:e.type==="expr"?40:e.type==="and"||e.type==="or"?15:e.type==="not"?8:10}function Yi(e,t){if(!e||e.length===0)return{filters:[],isAlwaysFalse:!1,isAlwaysTrue:!0,metrics:{originalCount:0,optimizedCount:0,isAlwaysFalse:!1,isAlwaysTrue:!0,eliminatedFiltersCount:0,reordered:!1}};const n=e.length,s=[];for(const _ of e)_.type==="and"&&Array.isArray(_.children)?s.push(..._.children):s.push(_);const i=new Map,r=[];for(const _ of s)if(_.colName){const A=_.colName.toLowerCase();i.has(A)||i.set(A,[]),i.get(A).push(_)}else r.push(_);for(const[_,A]of i.entries()){const f=rc(A);if(f)return{filters:[],isAlwaysFalse:!0,isAlwaysTrue:!1,metrics:{originalCount:n,optimizedCount:0,isAlwaysFalse:!0,isAlwaysTrue:!1,contradictionReason:`Contradiction on column "${_}": ${f}`,eliminatedFiltersCount:n,reordered:!1}}}const o=[];let a=0;for(const[,_]of i.entries()){const A=oc(_);a+=_.length-A.length,o.push(...A)}o.push(...r);const c=o.map(_=>Zi(_)).join("|");o.sort((_,A)=>{const f=Xi(_,t),g=Xi(A,t);return f-g});const l=o.map(_=>Zi(_)).join("|"),u=c!==l;return{filters:o,isAlwaysFalse:!1,isAlwaysTrue:o.length===0,metrics:{originalCount:n,optimizedCount:o.length,isAlwaysFalse:!1,isAlwaysTrue:o.length===0,eliminatedFiltersCount:a,reordered:u}}}function rc(e){let t=!1,n=!1;const s=[];let i=null,r=null,o=null;for(const a of e){if(a.type==="null"&&(a.isNull===!0&&(t=!0),a.isNull===!1&&(n=!0)),a.type==="cmp"){const c=a.op??"=",l=a.value;c==="="&&l!==null&&l!==void 0&&s.push(l),typeof l=="number"&&(c===">"?(!i||l>i.val||l===i.val&&!i.strict)&&(i={val:l,strict:!0}):c===">="?(!i||l>i.val)&&(i={val:l,strict:!1}):c==="<"?(!r||l<r.val||l===r.val&&!r.strict)&&(r={val:l,strict:!0}):c==="<="&&(!r||l<r.val)&&(r={val:l,strict:!1}))}if(a.type==="in"&&!a.notIn){if(!a.values||a.values.length===0)return"Empty IN () list";const c=new Set(a.values);if(!o)o=c;else{const l=new Set([...o].filter(u=>c.has(u)));if(l.size===0)return"Mutually exclusive IN lists with no common values";o=l}}}if(t&&n)return"Conflicting IS NULL and IS NOT NULL";if(t&&(s.length>0||i||r))return"Conflicting IS NULL and literal comparison";if(s.length>1){const a=s[0];for(let c=1;c<s.length;c++)if(s[c]!==a)return`Conflicting equality values (${a} !== ${s[c]})`}if(s.length>0&&(i||r)){const a=s[0];if(typeof a=="number"){if(i&&(i.strict?a<=i.val:a<i.val))return`Equality value ${a} violates lower bound ${i.strict?">":">="} ${i.val}`;if(r&&(r.strict?a>=r.val:a>r.val))return`Equality value ${a} violates upper bound ${r.strict?"<":"<="} ${r.val}`}}if(s.length>0&&o){const a=s[0];if(!o.has(a))return`Equality value ${a} not present in IN list`}if(i&&r){if(i.val>r.val)return`Lower bound ${i.val} is greater than upper bound ${r.val}`;if(i.val===r.val&&(i.strict||r.strict))return`Strict range bounds empty at ${i.val}`}return null}function oc(e){const t=[],n=new Set;let s=!1,i;for(const a of e)if(a.type==="cmp"&&(a.op==="="||a.op===void 0)&&a.value!==null&&a.value!==void 0){s=!0,i=a.value;break}let r=null,o=null;for(const a of e)if(a.type==="cmp"&&typeof a.value=="number"){const c=a.op??"=",l=a.value;c===">"?(!r||l>r.val||l===r.val&&!r.strict)&&(r={val:l,strict:!0,filter:a}):c===">="?(!r||l>r.val)&&(r={val:l,strict:!1,filter:a}):c==="<"?(!o||l<o.val||l===o.val&&!o.strict)&&(o={val:l,strict:!0,filter:a}):c==="<="&&(!o||l<o.val)&&(o={val:l,strict:!1,filter:a})}for(const a of e){const c=Zi(a);if(!n.has(c)&&!(a.type==="null"&&a.isNull===!1&&s)&&!(a.type==="in"&&!a.notIn&&s&&Array.isArray(a.values)&&a.values.includes(i))){if(a.type==="cmp"&&typeof a.value=="number"){const l=a.op??"=";if(l===">"||l===">="){if(r&&a!==r.filter)continue}else if((l==="<"||l==="<=")&&o&&a!==o.filter)continue}n.add(c),t.push(a)}}return t}function Zi(e){return`${e.type}:${e.colName??""}:${e.isNull??""}:${e.op??""}:${String(e.value??"")}:${e.notIn??""}:${JSON.stringify(e.values??"")}`}function Ho(e,t){const n=[...e],s=o=>o.toLowerCase(),i=o=>{const a=o.lastIndexOf(".");return a>=0?o.slice(a+1).toLowerCase():o.toLowerCase()},r=o=>{const a=s(o),c=i(o);for(const l of e)if(l.type==="cmp"&&(l.op==="="||l.op==="=="||l.op===void 0)&&l.colName&&l.value!==null&&l.value!==void 0){const u=s(l.colName),_=i(l.colName);if(u===a||_===a||u===c)return l.value}};for(const o of t){if(o.type!=="inner"&&o.type!=="left"||o.op!=="="&&o.op!=="==")continue;const a=r(o.leftCol);if(a!==void 0&&n.push({type:"cmp",colName:o.rightCol,op:"=",value:a}),o.type==="inner"){const c=r(o.rightCol);c!==void 0&&n.push({type:"cmp",colName:o.leftCol,op:"=",value:c})}}return n}class Ds{constructor(t){U(this,"name","cost");U(this,"indexSeekCost");U(this,"indexNextCost");U(this,"rowEvalCost");this.indexSeekCost=(t==null?void 0:t.indexSeekCost)??_n,this.indexNextCost=(t==null?void 0:t.indexNextCost)??Ls,this.rowEvalCost=(t==null?void 0:t.rowEvalCost)??_e}optimize(t){var L,h;const n=[t.table,...((L=t.joinedTables)==null?void 0:L.map(b=>b.table))??[]],s=n.length,i=Yi(t.filters,n);if(i.isAlwaysFalse)return{plan:{...t,filters:[]},orderedTables:n,metrics:null,isAlwaysFalse:!0,whereMetrics:i.metrics};let r=i.filters,o=i.metrics;if(t.joinedTables&&t.joinedTables.length>0){const b=Ho(r,t.joinedTables);if(b.length>r.length){const k=Yi(b,n);if(k.isAlwaysFalse)return{plan:{...t,filters:[]},orderedTables:n,metrics:null,isAlwaysFalse:!0,whereMetrics:k.metrics};r=k.filters,o=k.metrics}}if(s<=1||!t.joinedTables||t.joinedTables.length===0){const b=new Map;b.set(0,r);const k=de(t.table,r,t.orderBy,t.limit);return{plan:{...t,filters:r},orderedTables:[t.table],metrics:{totalCost:k.cost,estimatedRows:k.rows,joinOrder:[t.table.name],singleTableFilters:b,crossFilters:[],tableScanTypes:[k.scanType],tableIndexNames:[k.indexName],isOrderSatisfied:k.isOrderSatisfied,sortCostAvoided:k.sortCostAvoided},isAlwaysFalse:!1,isAlwaysTrue:o.isAlwaysTrue,whereMetrics:o,isOrderSatisfied:k.isOrderSatisfied,sortCostAvoided:k.sortCostAvoided}}const a=zt(r),c=mn(a),l=new Map,u=[];for(let b=0;b<s;b++)l.set(b,[]);for(const b of c){const k=dn(b,n);if(k.size===1){const $=k.values().next().value;$!==void 0&&((h=l.get($))==null||h.push(b))}else u.push(b)}if(s<=1||!t.joinedTables||t.joinedTables.length===0){const b=de(n[0],l.get(0)??[]);return{plan:t,orderedTables:n,metrics:{totalCost:b.cost,estimatedRows:b.rows,joinOrder:[n[0].name],singleTableFilters:l,crossFilters:u,tableScanTypes:[b.scanType],tableIndexNames:[b.indexName]}}}const{edges:_,dependencies:A}=Rs(t,n),f=new Map;for(let b=0;b<s;b++)if(A[b].size===0){const k=xi(n[b],b,n,t.orderBy,t.selectExprs),$=k?t.orderBy.map(G=>{const q=G.colName??"",ee=q.includes(".")?q.slice(q.lastIndexOf(".")+1):q;return{...G,colName:ee}}):void 0,j=de(n[b],l.get(b)??[],$,k?t.limit:void 0),J=1<<b;f.set(J,{order:[b],cost:j.cost,rows:j.rows,scanTypes:[j.scanType],indexNames:[j.indexName],edgesUsed:[],isOrderSatisfied:j.isOrderSatisfied,sortCostAvoided:j.sortCostAvoided})}const g=1<<s;for(let b=2;b<=s;b++)for(let k=1;k<g;k++)if(ac(k)===b)for(let $=0;$<s;$++){if(!(k&1<<$))continue;const j=k^1<<$,J=f.get(j);if(!J)continue;let G=!0;for(const Ne of A[$])if(!(j&1<<Ne)){G=!1;break}if(!G)continue;const q=this.evaluateJoinStep(J.rows,n[$],$,_,J.order,l.get($)??[]),ee=J.cost+q.stepCost,Et=f.get(k);let gt=!1,En=ee,In=Et?Et.cost:0;const pn=J.isOrderSatisfied===!0,Ke=(Et==null?void 0:Et.isOrderSatisfied)===!0;if(b===s&&t.orderBy&&t.orderBy.length>0&&(!pn&&q.newRows>1&&(En+=q.newRows*Math.log2(q.newRows)*this.rowEvalCost),Et&&!Ke&&Et.rows>1&&(In+=Et.rows*Math.log2(Et.rows)*this.rowEvalCost)),!Et)gt=!0;else if(pn&&!Ke)gt=!0;else if(!pn&&Ke)gt=!1;else{const Ne=J.scanTypes.filter(be=>be==="IndexScan").length+(q.scanType==="IndexScan"?1:0),Xn=Et.scanTypes.filter(be=>be==="IndexScan").length;if(Ne>Xn&&En<=In*1.2)gt=!0;else if(Ne<Xn)gt=!1;else if(En<In*.75)gt=!0;else if(In<En*.75)gt=!1;else{const be=J.order[0]===0,yn=Et.order[0]===0;if(be&&!yn)gt=!0;else if(!be&&yn)gt=!1;else{const oe=J.order.filter(Tn=>Tn>$).length,qs=Et.order.filter((Tn,Ws)=>Tn>Ws).length;oe<qs&&(gt=!0)}}}gt&&f.set(k,{order:[...J.order,$],cost:ee,rows:q.newRows,scanTypes:[...J.scanTypes,q.scanType],indexNames:[...J.indexNames,q.indexName],edgesUsed:[...J.edgesUsed,q.matchedEdge],isOrderSatisfied:J.isOrderSatisfied,sortCostAvoided:J.sortCostAvoided})}const d=(1<<s)-1,I=f.get(d);let p,y,T,N,B;I?(p=I.order,y=I.cost,T=I.rows,N=I.scanTypes,B=I.indexNames):(p=Array.from({length:s},(b,k)=>k),y=999999,T=100,N=Array.from({length:s},()=>"TableScan"),B=Array.from({length:s},()=>{}));const P=p.map(b=>n[b]),F=Fs(p,n,_,t.joinedTables),w=Vn(t,n),S=(I==null?void 0:I.isOrderSatisfied)===!0,v=S&&t.orderBy&&t.orderBy.length>0&&T>1?T*Math.log2(T)*this.rowEvalCost:void 0;return{plan:{...t,table:P[0],joinedTables:F,selectExprs:w,filters:r,isOrderSatisfied:S},orderedTables:P,metrics:{totalCost:y,estimatedRows:T,joinOrder:P.map(b=>b.name),singleTableFilters:l,crossFilters:u,tableScanTypes:N,tableIndexNames:B,isOrderSatisfied:S,sortCostAvoided:v},isAlwaysFalse:!1,isAlwaysTrue:o.isAlwaysTrue,whereMetrics:o,isOrderSatisfied:S,sortCostAvoided:v}}evaluateJoinStep(t,n,s,i,r,o){const a=Math.max(1,n.rowCountEstimate||10);let c=1;for(const f of o)c*=$i(f,n);const l=[];for(const f of i)if(f.tableA===s&&r.includes(f.tableB)){const g=Hn(n,f.colA);l.push({edge:f,nextCol:f.colA,outerCol:f.colB,idxMatch:g})}else if(f.tableB===s&&r.includes(f.tableA)){const g=Hn(n,f.colB);l.push({edge:f,nextCol:f.colB,outerCol:f.colA,idxMatch:g})}if(l.length===0){const f=t*(2+a*.1),g=Math.max(1,Math.round(t*a*c)),d={tableA:r[0],tableB:s,colA:"",colB:"",op:"=",type:"inner",declaredRightTable:s};return{stepCost:f,newRows:g,scanType:"TableScan",matchedEdge:d}}l.sort((f,g)=>{const d=f.idxMatch?f.idxMatch.isUnique?1:2:3,I=g.idxMatch?g.idxMatch.isUnique?1:2:3;return d-I});const u=l[0];if(u.idxMatch&&u.idxMatch.isUnique){const f=this.indexSeekCost+1*this.rowEvalCost,g=t*f,d=Math.max(1,Math.round(t*c));return{stepCost:g,newRows:d,scanType:"IndexScan",indexName:u.idxMatch.index.name,matchedEdge:u.edge}}if(u.idxMatch&&!u.idxMatch.isUnique){const f=Math.max(1,Math.min(10,Math.round(a/20))),g=this.indexSeekCost+f*this.indexNextCost,d=t*g,I=Math.max(1,Math.round(t*f*c));return{stepCost:d,newRows:I,scanType:"IndexScan",indexName:u.idxMatch.index.name,matchedEdge:u.edge}}const _=t*(2+a*.1),A=Math.max(1,Math.round(t*Math.max(1,Math.round(a*.1))*c));return{stepCost:_,newRows:A,scanType:"TableScan",matchedEdge:u.edge}}}function ac(e){let t=0,n=e;for(;n>0;)t+=n&1,n>>=1;return t}class Vo{constructor(){U(this,"name","heuristic")}optimize(t){var w,S,v;const n=[t.table,...((w=t.joinedTables)==null?void 0:w.map(L=>L.table))??[]],s=n.length,i=zt(t.filters),r=mn(i),o=new Map,a=[];for(let L=0;L<s;L++)o.set(L,[]);for(const L of r){const h=dn(L,n);if(h.size===1){const b=h.values().next().value;b!==void 0&&((S=o.get(b))==null||S.push(L))}else a.push(L)}if(s<=1||!t.joinedTables||t.joinedTables.length===0){const L=de(n[0],o.get(0)??[],t.orderBy,t.limit);return{plan:t,orderedTables:n,metrics:{totalCost:L.cost,estimatedRows:L.rows,joinOrder:[n[0].name],singleTableFilters:o,crossFilters:a,tableScanTypes:[L.scanType],tableIndexNames:[L.indexName],isOrderSatisfied:L.isOrderSatisfied,sortCostAvoided:L.sortCostAvoided},isOrderSatisfied:L.isOrderSatisfied,sortCostAvoided:L.sortCostAvoided}}const{edges:c,dependencies:l}=Rs(t,n),u=n.map((L,h)=>{const b=xi(L,h,n,t.orderBy,t.selectExprs),k=b?t.orderBy.map($=>{const j=$.colName??"",J=j.includes(".")?j.slice(j.lastIndexOf(".")+1):j;return{...$,colName:J}}):void 0;return de(L,o.get(h)??[],k,b?t.limit:void 0)}),_=[];for(let L=0;L<s;L++)l[L].size===0&&_.push(L);_.sort((L,h)=>{const b=u[L].isOrderSatisfied?1:0,k=u[h].isOrderSatisfied?1:0;if(b!==k)return k-b;if(u[L].rows!==u[h].rows)return u[L].rows-u[h].rows;const $=u[L].scanType==="IndexScan"?1:0,j=u[h].scanType==="IndexScan"?1:0;return $!==j?j-$:L===0?-1:h===0?1:L-h});const A=_[0]??0,f=[A],g=[u[A].scanType],d=[u[A].indexName];let I=u[A].cost,p=u[A].rows;const y=new Set;for(let L=0;L<s;L++)L!==A&&y.add(L);for(;y.size>0;){const L=[];for(const b of y){let k=!0;for(const G of l[b])if(!f.includes(G)){k=!1;break}if(!k)continue;const $=n[b],j=Math.max(1,$.rowCountEstimate||10);let J=null;for(const G of c)if(G.tableA===b&&f.includes(G.tableB)){const q=Hn($,G.colA);q&&(!J||q.isUnique)&&(J={isUnique:q.isUnique,indexName:q.index.name})}else if(G.tableB===b&&f.includes(G.tableA)){const q=Hn($,G.colB);q&&(!J||q.isUnique)&&(J={isUnique:q.isUnique,indexName:q.index.name})}if(J)if(J.isUnique){const G=_n+1*_e;L.push({tableIdx:b,rank:1,stepCost:p*G,newRows:Math.max(1,p),scanType:"IndexScan",indexName:J.indexName})}else{const G=Math.max(1,Math.min(10,Math.round(j/20))),q=_n+G*Ls;L.push({tableIdx:b,rank:2,stepCost:p*q,newRows:Math.max(1,p*G),scanType:"IndexScan",indexName:J.indexName})}else L.push({tableIdx:b,rank:3,stepCost:p*(2+j*.1),newRows:Math.max(1,p*Math.max(1,Math.round(j*.1))),scanType:"TableScan"})}if(L.length===0){const b=y.values().next().value;if(b===void 0)break;f.push(b),g.push("TableScan"),d.push(void 0),y.delete(b);continue}L.sort((b,k)=>b.rank!==k.rank?b.rank-k.rank:Math.abs(b.stepCost-k.stepCost)>.05?b.stepCost-k.stepCost:b.tableIdx-k.tableIdx);const h=L[0];f.push(h.tableIdx),g.push(h.scanType),d.push(h.indexName),I+=h.stepCost,p=h.newRows,y.delete(h.tableIdx)}const T=f.map(L=>n[L]),N=Fs(f,n,c,t.joinedTables),B=Vn(t,n),P=((v=u[A])==null?void 0:v.isOrderSatisfied)===!0,F=P&&t.orderBy&&t.orderBy.length>0&&p>1?p*Math.log2(p)*_e:void 0;return{plan:{...t,table:T[0],joinedTables:N,selectExprs:B,isOrderSatisfied:P},orderedTables:T,metrics:{totalCost:I,estimatedRows:p,joinOrder:T.map(L=>L.name),singleTableFilters:o,crossFilters:a,tableScanTypes:g,tableIndexNames:d,isOrderSatisfied:P,sortCostAvoided:F},isOrderSatisfied:P,sortCostAvoided:F}}}class $o{constructor(){U(this,"name","noop")}optimize(t){var g,d;const n=[t.table,...((g=t.joinedTables)==null?void 0:g.map(I=>I.table))??[]],s=n.length,i=zt(t.filters),r=mn(i),o=new Map,a=[];for(let I=0;I<s;I++)o.set(I,[]);for(const I of r){const p=dn(I,n);if(p.size===1){const y=p.values().next().value;y!==void 0&&((d=o.get(y))==null||d.push(I))}else a.push(I)}const c=de(n[0],o.get(0)??[]),l=[c.scanType],u=[c.indexName];let _=c.cost;const A=c.rows;if(t.joinedTables)for(let I=1;I<s;I++){const p=t.joinedTables[I-1],y=Ms(p,n[I],I,n,I);y?(l.push("IndexScan"),u.push(y.index.name),_+=A*.55):(l.push("TableScan"),u.push(void 0),_+=A*(2+(n[I].rowCountEstimate||10)*.1))}const f=Vn(t,n);return{plan:{...t,selectExprs:f},orderedTables:n,metrics:{totalCost:_,estimatedRows:A,joinOrder:n.map(I=>I.name),singleTableFilters:o,crossFilters:a,tableScanTypes:l,tableIndexNames:u}}}}class lc{constructor(t){U(this,"name","custom-order");U(this,"orderSpec");this.orderSpec=t}optimize(t){var B,P,F;const n=[t.table,...((B=t.joinedTables)==null?void 0:B.map(w=>w.table))??[]],s=n.length,i=t.joinedTables!==void 0&&t.joinedTables.length>0,r=zt(t.filters),o=mn(r),a=new Map,c=[];for(let w=0;w<s;w++)a.set(w,[]);for(const w of o){const S=dn(w,n);if(S.size===1){const v=S.values().next().value;v!==void 0&&((P=a.get(v))==null||P.push(w))}else c.push(w)}if(!i||s<=1){const w=de(n[0],a.get(0)??[]);return{plan:t,orderedTables:n,metrics:{totalCost:w.cost,estimatedRows:w.rows,joinOrder:[n[0].name],singleTableFilters:a,crossFilters:c,tableScanTypes:[w.scanType],tableIndexNames:[w.indexName]}}}const l=Array.from({length:s},(w,S)=>S);if(this.orderSpec){if(typeof this.orderSpec=="function"){const w=this.orderSpec;l.sort((S,v)=>w(n[S],n[v]))}else if(Array.isArray(this.orderSpec)){const w=this.orderSpec;l.sort((S,v)=>{const L=n[S].name,h=n[v].name,b=w.indexOf(L),k=w.indexOf(h),$=b===-1?9999:b,j=k===-1?9999:k;return $!==j?$-j:S-v})}}const{edges:u}=Rs(t,n),_=l.map(w=>n[w]),A=Fs(l,n,u,t.joinedTables),f=Vn(t,n),g={...t,table:_[0],joinedTables:A,selectExprs:f},d=new Map;for(let w=0;w<s;w++)d.set(w,[]);for(const w of o){const S=dn(w,_);if(S.size===1){const v=S.values().next().value;v!==void 0&&((F=d.get(v))==null||F.push(w))}}const I=de(_[0],d.get(0)??[]),p=[I.scanType],y=[I.indexName];let T=I.cost;const N=I.rows;if(g.joinedTables)for(let w=1;w<s;w++){const S=g.joinedTables[w-1],v=Ms(S,_[w],w,_,w);v?(p.push("IndexScan"),y.push(v.index.name),T+=N*.55):(p.push("TableScan"),y.push(void 0),T+=N*(2+(_[w].rowCountEstimate||10)*.1))}return{plan:g,orderedTables:_,metrics:{totalCost:T,estimatedRows:N,joinOrder:_.map(w=>w.name),singleTableFilters:d,crossFilters:c,tableScanTypes:p,tableIndexNames:y}}}}class xo{constructor(t){U(this,"name","custom");this.fn=t}optimize(t){return this.fn(t)}}const cc=xo,uc=Ds,fc=Ds,Ac=Vo,hc=$o,gc=new Ds;function ji(e){return e??gc}function _c(e,t){return ji(t).optimize(e)}function $n(e){if(!e)return m.OP_EQ;switch(String(e).trim().toLowerCase().replace(/\s+/g," ")){case"=":case"==":return m.OP_EQ;case"!=":case"<>":return m.OP_NE;case">":return m.OP_GT;case">=":return m.OP_GE;case"<":return m.OP_LT;case"<=":return m.OP_LE;case"like":return m.OP_STR_LIKE;case"not like":return m.OP_STR_NOT_LIKE;case"contains":return m.OP_STR_CONTAINS;case"starts_with":return m.OP_STR_STARTS_WITH;case"ends_with":return m.OP_STR_ENDS_WITH;default:return m.OP_EQ}}class Qs{constructor(){U(this,"buffer",[]);U(this,"textEncoder",new TextEncoder)}emitUint8(t){const n=this.buffer.length;return this.buffer.push(t&255),n}emitUint16(t){const n=this.buffer.length;return this.buffer.push(t&255),this.buffer.push(t>>8&255),n}emitUint32(t){const n=this.buffer.length;return this.buffer.push(t&255),this.buffer.push(t>>8&255),this.buffer.push(t>>16&255),this.buffer.push(t>>24&255),n}emitInt32(t){return this.emitUint32(t)}emitFloat64(t){const n=this.buffer.length,s=new ArrayBuffer(8);new DataView(s).setFloat64(0,t,!0);const i=new Uint8Array(s);for(let r=0;r<8;r++)this.buffer.push(i[r]);return n}emitString(t){const n=this.textEncoder.encode(t),s=this.emitUint16(n.byteLength);for(let i=0;i<n.byteLength;i++)this.buffer.push(n[i]);return s}emitBytes(t){const n=this.emitUint16(t.byteLength);for(let s=0;s<t.byteLength;s++)this.buffer.push(t[s]);return n}patchUint16(t,n){this.buffer[t]=n&255,this.buffer[t+1]=n>>8&255}currentOffset(){return this.buffer.length}toByteArray(){return new Uint8Array(this.buffer)}}function Bt(e,t,n,s,i){i===C.INT32||i===C.INT64?(e.emitUint8(m.OP_COLUMN_INT),e.emitUint8(t),e.emitUint8(n),e.emitUint8(s)):i===C.FLOAT64?(e.emitUint8(m.OP_COLUMN_FLOAT),e.emitUint8(t),e.emitUint8(n),e.emitUint8(s)):i===C.TEXT?(e.emitUint8(m.OP_COLUMN_TEXT),e.emitUint8(t),e.emitUint8(n),e.emitUint8(s)):i===C.UUID?(e.emitUint8(m.OP_COLUMN_UUID),e.emitUint8(t),e.emitUint8(n),e.emitUint8(s)):i===C.ULID?(e.emitUint8(m.OP_COLUMN_ULID),e.emitUint8(t),e.emitUint8(n),e.emitUint8(s)):i===C.BLOB&&(e.emitUint8(m.OP_COLUMN_BLOB),e.emitUint8(t),e.emitUint8(n),e.emitUint8(s))}function Oe(e){if(e.type==="in"){if(e.values&&e.values.length>Dt)throw new RangeError(`WebDB: whereIn list exceeds maximum limit of ${Dt} elements`);return{type:"in",colName:e.colName,expr:e.expr,values:e.values?Array.from(new Set(e.values)):[],notIn:!!e.notIn}}if(e.type==="cmp"){const t=e.op?String(e.op).trim().toLowerCase():"";if(t==="in"||t==="not in"){const n=Array.isArray(e.value)?e.value:[e.value];if(n.length>Dt)throw new RangeError(`WebDB: whereIn list exceeds maximum limit of ${Dt} elements`);return{type:"in",colName:e.colName,expr:e.expr,values:Array.from(new Set(n)),notIn:t==="not in"}}}if(e.type==="and")return{type:"and",children:e.children?e.children.map(Oe):[]};if(e.type==="or")return{type:"or",children:e.children?e.children.map(Oe):[]};if(e.type==="not"){const t=e.child;if(!t)return e;if(t.type==="not"&&t.child)return Oe(t.child);if(t.type==="in")return{type:"in",colName:t.colName,expr:t.expr,values:t.values,notIn:!t.notIn};if(t.type==="and")return{type:"or",children:t.children?t.children.map(n=>Oe({type:"not",child:n})):[]};if(t.type==="or")return{type:"and",children:t.children?t.children.map(n=>Oe({type:"not",child:n})):[]};if(t.type==="null")return{type:"null",colName:t.colName,expr:t.expr,isNull:!t.isNull};if(t.type==="cmp"){const n=t.op?String(t.op).trim().toLowerCase():"";if(n==="in"||n==="not in")return Oe({type:"in",colName:t.colName,expr:t.expr,values:Array.isArray(t.value)?t.value:[t.value],notIn:n==="in"});const s={"=":"!=","!=":"=",">":"<=",">=":"<","<":">=","<=":">",like:"not like","not like":"like"};return t.op&&s[t.op]?{type:"cmp",colName:t.colName,op:s[t.op],value:t.value}:{type:"and",children:[{type:"null",colName:t.colName,isNull:!1},{type:"not",child:t}]}}}return e}function zt(e){if(!e||e.length===0)return null;const t=e.length===1?e[0]:{type:"and",children:e};return Oe(t)}function Xo(e){const t=[],n=new Set;function s(i){if(i.type==="null"||i.type==="cmp"||i.type==="expr"||i.type==="in")n.has(i)||(n.add(i),t.push(i));else if(i.type==="and"||i.type==="or"){if(i.children)for(const r of i.children)s(r)}else i.type==="not"&&i.child&&s(i.child)}return s(e),t}function mn(e){if(!e)return[];const t=[];function n(s){if(s.type==="and"&&s.children)for(const i of s.children)n(i);else(s.type==="cmp"||s.type==="in"||s.type==="null")&&t.push(s)}return n(e),t}function ht(e,t){if(e.includes(".")){const n=e.split("."),s=n[0],i=n[1],r=t.findIndex(a=>a.name.toLowerCase()===s.toLowerCase());if(r===-1)return null;const o=t[r].columns.findIndex(a=>a.name.toLowerCase()===i.toLowerCase());return o===-1?null:{tableIdx:r,cursor:r,colIdx:o,col:t[r].columns[o],table:t[r]}}for(let n=0;n<t.length;n++){const s=t[n].columns.findIndex(i=>i.name.toLowerCase()===e.toLowerCase());if(s!==-1)return{tableIdx:n,cursor:n,colIdx:s,col:t[n].columns[s],table:t[n]}}return null}function Ki(e,t,n,s,i,r,o,a){const c=o??[n];if(e.type==="expr"){const A=t*2,f=t*2+1;let g=50;const d=()=>{if(g>=64)throw new st(g);return g++};Z(e.expr,n,s,0,A,d,r,void 0,c),s.emitUint8(m.OP_LOAD_INT),s.emitUint8(f),s.emitInt32(1),s.emitUint8(m.OP_EQ),s.emitUint8(A),s.emitUint8(f),i.push(s.emitUint16(0));return}if(e.type==="null"){if(e.expr){const f=t*2;let g=50;const d=()=>{if(g>=64)throw new st(g);return g++};Z(e.expr,n,s,0,f,d,r,void 0,c),e.isNull?s.emitUint8(m.OP_REG_IS_NULL):s.emitUint8(m.OP_REG_IS_NOT_NULL),s.emitUint8(f),i.push(s.emitUint16(0));return}if(!e.colName)throw new Error("Filter leaf node missing colName");const A=ht(e.colName,c);if(!A)throw new Error(`Column "${e.colName}" not found in tables`);e.isNull?s.emitUint8(m.OP_IS_NULL):s.emitUint8(m.OP_IS_NOT_NULL),s.emitUint8(A.cursor),s.emitUint8(A.colIdx),i.push(s.emitUint16(0));return}if(e.type==="in"){if(!e.values||e.values.length===0){e.notIn&&(s.emitUint8(m.OP_JUMP),i.push(s.emitUint16(0)));return}const A=t*2;if(e.expr){let g=50;const d=()=>{if(g>=64)throw new st(g);return g++};Z(e.expr,n,s,0,A,d,r,void 0,c)}else{if(!e.colName)throw new Error("Filter IN leaf node missing colName");const g=ht(e.colName,c);if(g)Bt(s,g.cursor,g.colIdx,A,g.col.type);else try{const d=ft(e.colName);let I=50;Z(d,n,s,0,A,()=>{if(I>=64)throw new st(I);return I++},r,void 0,c)}catch{throw new Error(`Column "${e.colName}" not found in tables`)}}const f=(a==null?void 0:a.get(e))??0;if(!e.notIn)s.emitUint8(m.OP_IN),s.emitUint8(A),s.emitUint16(f),i.push(s.emitUint16(0));else{let g=-1;if(e.colName){const p=ht(e.colName,c);p&&(s.emitUint8(m.OP_IS_NULL),s.emitUint8(p.cursor),s.emitUint8(p.colIdx),g=s.emitUint16(0))}s.emitUint8(m.OP_IN),s.emitUint8(A),s.emitUint16(f);const d=s.emitUint16(0);s.emitUint8(m.OP_JUMP),i.push(s.emitUint16(0));const I=s.currentOffset();g!==-1&&s.patchUint16(g,I),s.patchUint16(d,I)}return}const l=t*2,u=t*2+1;if(e.expr){let A=50;const f=()=>{if(A>=64)throw new st(A);return A++};Z(e.expr,n,s,0,l,f,r,void 0,c)}else{if(!e.colName)throw new Error("Filter leaf node missing colName");const A=ht(e.colName,c);if(A)Bt(s,A.cursor,A.colIdx,l,A.col.type);else try{const f=ft(e.colName);let g=50;Z(f,n,s,0,l,()=>{if(g>=64)throw new st(g);return g++},r,void 0,c)}catch{throw new Error(`Column "${e.colName}" not found in tables`)}}const _=$n(e.op);s.emitUint8(_),s.emitUint8(l),s.emitUint8(u),i.push(s.emitUint16(0))}function Ji(e,t,n,s,i,r,o,a){const c=o??[n];if(e.type==="expr"){const f=t*2,g=t*2+1;let d=50;const I=()=>{if(d>=64)throw new st(d);return d++};Z(e.expr,n,s,0,f,I,r,void 0,c),s.emitUint8(m.OP_LOAD_INT),s.emitUint8(g),s.emitInt32(1),s.emitUint8(m.OP_EQ),s.emitUint8(f),s.emitUint8(g);const p=s.emitUint16(0);s.emitUint8(m.OP_JUMP),i.push(s.emitUint16(0)),s.patchUint16(p,s.currentOffset());return}if(e.type==="null"){if(e.expr){const g=t*2;let d=50;const I=()=>{if(d>=64)throw new st(d);return d++};Z(e.expr,n,s,0,g,I,r,void 0,c),e.isNull?s.emitUint8(m.OP_REG_IS_NOT_NULL):s.emitUint8(m.OP_REG_IS_NULL),s.emitUint8(g),i.push(s.emitUint16(0));return}if(!e.colName)throw new Error("Filter leaf node missing colName");const f=ht(e.colName,c);if(!f)throw new Error(`Column "${e.colName}" not found in tables`);e.isNull?s.emitUint8(m.OP_IS_NOT_NULL):s.emitUint8(m.OP_IS_NULL),s.emitUint8(f.cursor),s.emitUint8(f.colIdx),i.push(s.emitUint16(0));return}if(e.type==="in"){if(!e.values||e.values.length===0){e.notIn||(s.emitUint8(m.OP_JUMP),i.push(s.emitUint16(0)));return}const f=t*2;if(e.expr){let d=50;const I=()=>{if(d>=64)throw new st(d);return d++};Z(e.expr,n,s,0,f,I,r,void 0,c)}else{if(!e.colName)throw new Error("Filter IN leaf node missing colName");const d=ht(e.colName,c);if(d)Bt(s,d.cursor,d.colIdx,f,d.col.type);else try{const I=ft(e.colName);let p=50;Z(I,n,s,0,f,()=>{if(p>=64)throw new st(p);return p++},r,void 0,c)}catch{throw new Error(`Column "${e.colName}" not found in tables`)}}const g=(a==null?void 0:a.get(e))??0;if(e.notIn){if(e.colName){const d=ht(e.colName,c);d&&(s.emitUint8(m.OP_IS_NULL),s.emitUint8(d.cursor),s.emitUint8(d.colIdx),i.push(s.emitUint16(0)))}s.emitUint8(m.OP_IN),s.emitUint8(f),s.emitUint16(g),i.push(s.emitUint16(0))}else{if(e.colName){const p=ht(e.colName,c);p&&(s.emitUint8(m.OP_IS_NULL),s.emitUint8(p.cursor),s.emitUint8(p.colIdx),i.push(s.emitUint16(0)))}s.emitUint8(m.OP_IN),s.emitUint8(f),s.emitUint16(g);const d=s.emitUint16(0);s.emitUint8(m.OP_JUMP),i.push(s.emitUint16(0));const I=s.currentOffset();s.patchUint16(d,I)}return}const l=t*2,u=t*2+1;if(e.expr){let f=50;const g=()=>{if(f>=64)throw new st(f);return f++};Z(e.expr,n,s,0,l,g,r,void 0,c)}else{if(!e.colName)throw new Error("Filter leaf node missing colName");const f=ht(e.colName,c);if(f)Bt(s,f.cursor,f.colIdx,l,f.col.type);else try{const g=ft(e.colName);let d=50;Z(g,n,s,0,l,()=>{if(d>=64)throw new st(d);return d++},r,void 0,c)}catch{throw new Error(`Column "${e.colName}" not found in tables`)}}const _=$n(e.op);s.emitUint8(_),s.emitUint8(l),s.emitUint8(u);const A=s.emitUint16(0);s.emitUint8(m.OP_JUMP),i.push(s.emitUint16(0)),s.patchUint16(A,s.currentOffset())}function dc(e,t,n,s,i,r,o,a,c,l){o==="true"?Ji(e,t,n,s,r,a,c,l):o==="false"?Ki(e,t,n,s,i,a,c,l):(Ki(e,t,n,s,i,a,c,l),s.emitUint8(m.OP_JUMP),r.push(s.emitUint16(0)))}function xn(e,t,n,s,i,r,o,a,c,l){if(e.type==="cmp"||e.type==="null"||e.type==="expr"||e.type==="in"){const u=s.get(e)??0;dc(e,u,n,t,i,r,o,a,c,l);return}if(e.type==="not"){if(!e.child)return;const u=e.child,_=s.get(u)??0;o==="true"?Ki(u,_,n,t,r,a,c,l):o==="false"?Ji(u,_,n,t,i,a,c,l):(Ji(u,_,n,t,i,a,c,l),t.emitUint8(m.OP_JUMP),r.push(t.emitUint16(0)));return}if(e.type==="and"){const u=e.children??[];if(u.length===0){o==="false"&&(t.emitUint8(m.OP_JUMP),i.push(t.emitUint16(0)));return}for(let _=0;_<u.length;_++){const A=u[_];if(_===u.length-1)xn(A,t,n,s,i,r,o,a,c,l);else{const g=[];xn(A,t,n,s,g,r,"true",a,c,l);const d=t.currentOffset();for(const I of g)t.patchUint16(I,d)}}return}if(e.type==="or"){const u=e.children??[];if(u.length===0){o==="true"&&(t.emitUint8(m.OP_JUMP),r.push(t.emitUint16(0)));return}for(let _=0;_<u.length;_++){const A=u[_];if(_===u.length-1)xn(A,t,n,s,i,r,o,a,c,l);else{const g=[];xn(A,t,n,s,i,g,"false",a,c,l);const d=t.currentOffset();for(const I of g)t.patchUint16(I,d)}}return}}function mc(e,t,n,s,i,r,o){if(e.type==="cmp"){let a;const c=s(e.colName,e.expr);if(c!==void 0)a=c;else if(e.expr)a=i(),Z(e.expr,t,n,-1,a,i,o,s);else if(e.colName){a=i();const f=ft(e.colName);Z(f,t,n,-1,a,i,o,s)}else a=i(),n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(a);const l=i(),u=e.value;u==null?(n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(l)):typeof u=="number"?Number.isInteger(u)?(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(l),n.emitInt32(u)):(n.emitUint8(m.OP_LOAD_FLOAT),n.emitUint8(l),n.emitFloat64(u)):typeof u=="string"?(n.emitUint8(m.OP_LOAD_TEXT),n.emitUint8(l),n.emitString(u)):typeof u=="boolean"?(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(l),n.emitInt32(u?1:0)):typeof u=="bigint"&&(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(l),n.emitInt32(Number(u)));const _=$n(e.op);n.emitUint8(_),n.emitUint8(a),n.emitUint8(l);const A=n.emitUint16(0);n.emitUint8(m.OP_JUMP),r.push(n.emitUint16(0)),n.patchUint16(A,n.currentOffset());return}if(e.type==="null"){let a;const c=s(e.colName,e.expr);if(c!==void 0)a=c;else if(e.expr)a=i(),Z(e.expr,t,n,-1,a,i,o,s);else if(e.colName){a=i();const l=ft(e.colName);Z(l,t,n,-1,a,i,o,s)}else a=i(),n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(a);e.isNull?(n.emitUint8(m.OP_REG_IS_NOT_NULL),n.emitUint8(a),r.push(n.emitUint16(0))):(n.emitUint8(m.OP_REG_IS_NULL),n.emitUint8(a),r.push(n.emitUint16(0)));return}if(e.type==="expr"&&e.expr){const a=i();Z(e.expr,t,n,-1,a,i,o,s);const c=i();n.emitUint8(m.OP_LOAD_INT),n.emitUint8(c),n.emitInt32(1),n.emitUint8(m.OP_EQ),n.emitUint8(a),n.emitUint8(c);const l=n.emitUint16(0);n.emitUint8(m.OP_JUMP),r.push(n.emitUint16(0)),n.patchUint16(l,n.currentOffset());return}}function Yo(e,t,n,s,i,r,o){if(e.type==="cmp"){let a;const c=s(e.colName,e.expr);if(c!==void 0)a=c;else if(e.expr)a=i(),Z(e.expr,t,n,-1,a,i,o,s);else if(e.colName){a=i();const A=ft(e.colName);Z(A,t,n,-1,a,i,o,s)}else a=i(),n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(a);const l=i(),u=e.value;u==null?(n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(l)):typeof u=="number"?Number.isInteger(u)?(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(l),n.emitInt32(u)):(n.emitUint8(m.OP_LOAD_FLOAT),n.emitUint8(l),n.emitFloat64(u)):typeof u=="string"?(n.emitUint8(m.OP_LOAD_TEXT),n.emitUint8(l),n.emitString(u)):typeof u=="boolean"?(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(l),n.emitInt32(u?1:0)):typeof u=="bigint"&&(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(l),n.emitInt32(Number(u)));const _=$n(e.op);n.emitUint8(_),n.emitUint8(a),n.emitUint8(l),r.push(n.emitUint16(0));return}if(e.type==="null"){let a;const c=s(e.colName,e.expr);if(c!==void 0)a=c;else if(e.expr)a=i(),Z(e.expr,t,n,-1,a,i,o,s);else if(e.colName){a=i();const l=ft(e.colName);Z(l,t,n,-1,a,i,o,s)}else a=i(),n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(a);e.isNull?(n.emitUint8(m.OP_REG_IS_NULL),n.emitUint8(a),r.push(n.emitUint16(0))):(n.emitUint8(m.OP_REG_IS_NOT_NULL),n.emitUint8(a),r.push(n.emitUint16(0)));return}if(e.type==="expr"&&e.expr){const a=i();Z(e.expr,t,n,-1,a,i,o,s);const c=i();n.emitUint8(m.OP_LOAD_INT),n.emitUint8(c),n.emitInt32(1),n.emitUint8(m.OP_EQ),n.emitUint8(a),n.emitUint8(c),r.push(n.emitUint16(0));return}}function Ec(e,t,n,s,i,r,o,a,c){a==="true"?mc(e,t,n,s,i,o,c):a==="false"?Yo(e,t,n,s,i,r,c):(Yo(e,t,n,s,i,r,c),n.emitUint8(m.OP_JUMP),o.push(n.emitUint16(0)))}function Pe(e,t,n,s,i,r,o,a,c){if(e.type==="cmp"||e.type==="null"||e.type==="expr"){Ec(e,n,t,s,i,r,o,a,c);return}if(e.type==="not"){if(!e.child)return;const l=e.child;a==="true"?Pe(l,t,n,s,i,o,r,"false",c):a==="false"?Pe(l,t,n,s,i,r,o,"true",c):Pe(l,t,n,s,i,o,r,"none",c);return}if(e.type==="and"){const l=e.children??[];if(l.length===0){a==="false"&&(t.emitUint8(m.OP_JUMP),r.push(t.emitUint16(0)));return}for(let u=0;u<l.length;u++){const _=l[u];if(u===l.length-1)Pe(_,t,n,s,i,r,o,a,c);else{const f=[];Pe(_,t,n,s,i,f,o,"true",c);const g=t.currentOffset();for(const d of f)t.patchUint16(d,g)}}return}if(e.type==="or"){const l=e.children??[];if(l.length===0){a==="true"&&(t.emitUint8(m.OP_JUMP),o.push(t.emitUint16(0)));return}for(let u=0;u<l.length;u++){const _=l[u];if(u===l.length-1)Pe(_,t,n,s,i,r,o,a,c);else{const f=[];Pe(_,t,n,s,i,r,f,"false",c);const g=t.currentOffset();for(const d of f)t.patchUint16(d,g)}}return}}function Ic(e,t,n,s,i,r,o){if(!e)return;const a=[];Pe(e,n,t,s,i,a,r,"true",o);const c=n.currentOffset();for(const l of a)n.patchUint16(l,c)}function te(e,t,n,s,i,r,o,a){if(!e)return;const c=[];xn(e,n,t,s,c,i,"true",r,o,a);const l=n.currentOffset();for(const u of c)n.patchUint16(u,l)}function Zo(e,t,n,s){if(e.type==="literal")return typeof e.value=="number"?Number.isInteger(e.value)?C.INT32:C.FLOAT64:(typeof e.value=="string",C.TEXT);if(e.type==="col"){const i=s??[t],r=ht(e.name,i);return r?r.col.type:C.TEXT}if(e.type==="binary")return C.FLOAT64;if(e.type==="fn"){const i=e.name.toLowerCase();if(n&&n.has(i)){const r=n.get(i);if(r.returnType!==void 0)return r.returnType}if(["upper","lower","substr","trim","concat"].includes(i))return C.TEXT;if(["length","count","starts_with","startswith","ends_with","endswith","like","contains"].includes(i))return C.INT32;if(["abs","round","floor","ceil","sum","avg","min","max"].includes(i)){if(e.args.length>0&&e.args[0].type==="col"){const r=ht(e.args[0].name,s??[t]);if(r&&r.col.type===C.INT32&&i!=="avg")return C.INT32}return C.FLOAT64}return C.TEXT}return C.TEXT}function Z(e,t,n,s,i,r,o,a,c){if(a){const l=e.type==="col"?e.name:void 0,u=a(l,e);if(u!==void 0){u!==i&&(n.emitUint8(m.OP_COPY),n.emitUint8(u),n.emitUint8(i));return}}if(e.type==="literal"){const l=e.value;l==null?(n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(i)):typeof l=="number"?Number.isInteger(l)?(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(i),n.emitInt32(l)):(n.emitUint8(m.OP_LOAD_FLOAT),n.emitUint8(i),n.emitFloat64(l)):typeof l=="string"?(n.emitUint8(m.OP_LOAD_TEXT),n.emitUint8(i),n.emitString(l)):typeof l=="boolean"&&(n.emitUint8(m.OP_LOAD_INT),n.emitUint8(i),n.emitInt32(l?1:0));return}if(e.type==="col"){if(s===-1)throw new Error(`Column "${e.name}" in HAVING clause must be an aggregate or grouping column`);const l=c??[t],u=ht(e.name,l);if(!u){if(e.name==="*"){n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(i);return}throw new Error(`Column "${e.name}" does not exist in table "${t.name}"`)}Bt(n,u.cursor,u.colIdx,i,u.col.type);return}if(e.type==="binary"){const l=r(),u=r();Z(e.left,t,n,s,l,r,o,a,c),Z(e.right,t,n,s,u,r,o,a,c);let _=m.OP_ADD;if(e.op==="+")_=m.OP_ADD;else if(e.op==="-")_=m.OP_SUB;else if(e.op==="*")_=m.OP_MUL;else if(e.op==="/")_=m.OP_DIV;else if(e.op==="%")_=m.OP_MOD;else if(e.op==="="||e.op==="!="||e.op==="<"||e.op==="<="||e.op===">"||e.op===">="){let A=m.OP_EQ;e.op==="="?A=m.OP_EQ:e.op==="!="?A=m.OP_NE:e.op==="<"?A=m.OP_LT:e.op==="<="?A=m.OP_LE:e.op===">"?A=m.OP_GT:e.op===">="&&(A=m.OP_GE),n.emitUint8(A),n.emitUint8(l),n.emitUint8(u);const f=n.emitUint16(0);n.emitUint8(m.OP_LOAD_INT),n.emitUint8(i),n.emitInt32(0),n.emitUint8(m.OP_JUMP);const g=n.emitUint16(0);n.patchUint16(f,n.currentOffset()),n.emitUint8(m.OP_LOAD_INT),n.emitUint8(i),n.emitInt32(1),n.patchUint16(g,n.currentOffset());return}n.emitUint8(_),n.emitUint8(l),n.emitUint8(u),n.emitUint8(i);return}if(e.type==="fn"){const l=e.name.toLowerCase(),u={upper:m.OP_STR_UPPER,lower:m.OP_STR_LOWER,length:m.OP_STR_LENGTH,trim:m.OP_STR_TRIM,abs:m.OP_MATH_ABS,round:m.OP_MATH_ROUND,floor:m.OP_MATH_FLOOR,ceil:m.OP_MATH_CEIL};if(u[l]){const A=r(),f=e.args[0]??{type:"literal",value:null};Z(f,t,n,s,A,r,o,a,c),n.emitUint8(u[l]),n.emitUint8(A),n.emitUint8(i);return}if(l==="substr"){const A=r(),f=r(),g=r();Z(e.args[0],t,n,s,A,r,o,a,c),Z(e.args[1]??{type:"literal",value:1},t,n,s,f,r,o,a,c),e.args[2]!==void 0?Z(e.args[2],t,n,s,g,r,o,a,c):(n.emitUint8(m.OP_LOAD_NULL),n.emitUint8(g)),n.emitUint8(m.OP_STR_SUBSTR),n.emitUint8(A),n.emitUint8(f),n.emitUint8(g),n.emitUint8(i);return}const _={starts_with:m.OP_STR_STARTS_WITH,startswith:m.OP_STR_STARTS_WITH,ends_with:m.OP_STR_ENDS_WITH,endswith:m.OP_STR_ENDS_WITH,like:m.OP_STR_LIKE,contains:m.OP_STR_CONTAINS};if(_[l]){const A=r(),f=r();Z(e.args[0]??{type:"literal",value:null},t,n,s,A,r,o,a,c),Z(e.args[1]??{type:"literal",value:""},t,n,s,f,r,o,a,c),n.emitUint8(_[l]),n.emitUint8(A),n.emitUint8(f);const g=n.emitUint16(0);n.emitUint8(m.OP_LOAD_INT),n.emitUint8(i),n.emitInt32(0),n.emitUint8(m.OP_JUMP);const d=n.emitUint16(0);n.patchUint16(g,n.currentOffset()),n.emitUint8(m.OP_LOAD_INT),n.emitUint8(i),n.emitInt32(1),n.patchUint16(d,n.currentOffset());return}if(l==="concat"||l==="coalesce"){const A=e.args.length,f=r();for(let d=1;d<A;d++)r();for(let d=0;d<A;d++)Z(e.args[d],t,n,s,f+d,r,o,a,c);const g=l==="concat"?m.OP_STR_CONCAT:m.OP_COALESCE;n.emitUint8(g),n.emitUint8(f),n.emitUint8(A),n.emitUint8(i);return}if(o&&o.has(l)){const A=o.get(l),f=e.args.length;let g=i;if(f>0){g=r();for(let d=1;d<f;d++)r();for(let d=0;d<f;d++)Z(e.args[d],t,n,s,g+d,r,o,a,c)}n.emitUint8(m.OP_CALL_UDF),n.emitUint16(A),n.emitUint8(g),n.emitUint8(f),n.emitUint8(i);return}throw new di(l)}}function zi(e,t,n,s){n==null?(e.emitUint8(m.OP_LOAD_NULL),e.emitUint8(t)):typeof n=="number"?s===C.FLOAT64||!Number.isInteger(n)?(e.emitUint8(m.OP_LOAD_FLOAT),e.emitUint8(t),e.emitFloat64(n)):(e.emitUint8(m.OP_LOAD_INT),e.emitUint8(t),e.emitInt32(Math.floor(n))):typeof n=="bigint"?(e.emitUint8(m.OP_LOAD_INT),e.emitUint8(t),e.emitInt32(Number(n))):typeof n=="string"?(e.emitUint8(m.OP_LOAD_TEXT),e.emitUint8(t),e.emitString(n)):typeof n=="boolean"&&(e.emitUint8(m.OP_LOAD_INT),e.emitUint8(t),e.emitInt32(n?1:0))}function vs(e){switch(e){case C.INT32:return-2147483648;case C.INT64:return-9223372036854775808n;case C.FLOAT64:return-1/0;case C.TEXT:case C.UUID:case C.ULID:return"";case C.BLOB:return new Uint8Array(0);default:return 0}}function tr(e,t,n,s){var a;if(!n||n.length===0)return!1;for(const c of n)if(c.direction==="desc")return!1;const i=e.columnIndices.map(c=>t.columns[c].name.toLowerCase());let r=0;if(s&&s.size>0)for(;r<i.length&&s.has(i[r]);)r++;let o=0;for(;r<i.length&&o<n.length;){const c=(a=n[o].colName)==null?void 0:a.toLowerCase();if(!c||c!==i[r])return!1;r++,o++}return o===n.length}function jo(e,t,n,s,i){if(!n||n.length===0)return!1;for(const r of n){if(r.direction==="desc")return!1;const o=r.colName;if(!o)return!1;if(s&&s.length>0){let a=ht(o,s);if(!a&&i){const c=i.find(l=>l.alias===o);c&&c.expr.type==="col"&&(a=ht(c.expr.name,s))}if(!a||a.tableIdx!==0)return!1}else{const a=o.includes(".")?o.slice(o.lastIndexOf(".")+1):o;if(!e.columns.some(l=>l.name.toLowerCase()===a.toLowerCase()))return!1}}return!0}function ks(e,t,n,s){if(!e.indexes||e.indexes.length===0)return null;const i=n??t,r=new Set;for(const a of t)a.type==="cmp"&&(a.op==="="||a.op===void 0)&&a.colName&&a.value!==void 0&&a.value!==null&&r.add(a.colName.toLowerCase());const o=a=>{if(s&&s.length>0){if(a.scanType==="point"&&a.index.flags&(It.PRIMARY|It.UNIQUE))a.satisfiesOrderBy=!0;else if(tr(a.index,e,s,r)){if(a.scanType==="multi_point"&&a.inValues){const c=s[0].direction==="desc"?-1:1;a.inValues.sort((l,u)=>typeof l=="number"&&typeof u=="number"?(l-u)*c:String(l).localeCompare(String(u))*c)}a.satisfiesOrderBy=!0}}return a};for(const a of e.indexes)if(a.flags&It.PRIMARY&&a.columnCount===1){const c=e.columns[a.columnIndices[0]];for(let l=0;l<t.length;l++){const u=t[l];if(u.type==="cmp"&&(u.op==="="||u.op===void 0)&&u.colName===c.name&&u.value!==void 0&&u.value!==null)return o({index:a,scanType:"point",seekFilter:u,filterIndex:i.indexOf(u),keyType:c.type});if(u.type==="in"&&!u.notIn&&u.colName===c.name&&Array.isArray(u.values)&&u.values.length>0){const _=Array.from(new Set(u.values.filter(A=>A!=null)));return o({index:a,scanType:"multi_point",seekFilter:u,filterIndex:i.indexOf(u),keyType:c.type,inValues:_})}}}for(const a of e.indexes)if(a.flags&It.UNIQUE&&a.columnCount===1){const c=e.columns[a.columnIndices[0]];for(let l=0;l<t.length;l++){const u=t[l];if(u.type==="cmp"&&(u.op==="="||u.op===void 0)&&u.colName===c.name&&u.value!==void 0&&u.value!==null)return o({index:a,scanType:"point",seekFilter:u,filterIndex:i.indexOf(u),keyType:c.type});if(u.type==="in"&&!u.notIn&&u.colName===c.name&&Array.isArray(u.values)&&u.values.length>0){const _=Array.from(new Set(u.values.filter(A=>A!=null)));return o({index:a,scanType:"multi_point",seekFilter:u,filterIndex:i.indexOf(u),keyType:c.type,inValues:_})}}}for(const a of e.indexes)if(a.columnCount>1){const c=[];let l=!0;for(let u=0;u<a.columnCount;u++){const _=e.columns[a.columnIndices[u]],A=t.find(f=>f.type==="cmp"&&(f.op==="="||f.op===void 0)&&f.colName===_.name&&f.value!==void 0&&f.value!==null);if(A)c.push(A);else{l=!1;break}}if(l){const u={};for(const A of c)u[A.colName]=A.value;const _=Cs(e.columns,a.columnIndices,a.columnCount,u);return o({index:a,scanType:"point",seekFilter:c[0],filterIndex:i.indexOf(c[0]),keyType:C.BLOB,compositeValue:_})}}for(const a of e.indexes)if(a.columnCount===1){const c=e.columns[a.columnIndices[0]];for(let l=0;l<t.length;l++){const u=t[l];if(u.type==="cmp"&&(u.op==="="||u.op===void 0)&&u.colName===c.name&&u.value!==void 0&&u.value!==null)return o({index:a,scanType:"range",seekFilter:u,filterIndex:i.indexOf(u),keyType:c.type})}}for(const a of e.indexes)if(a.columnCount===1){const c=e.columns[a.columnIndices[0]];for(let l=0;l<t.length;l++){const u=t[l];if(u.type==="cmp"&&(u.op===">="||u.op===">")&&u.colName===c.name&&u.value!==void 0&&u.value!==null)return o({index:a,scanType:"range",seekFilter:u,filterIndex:i.indexOf(u),keyType:c.type})}}if(s&&s.length>0){for(const a of e.indexes)if(tr(a,e,s,r))if(a.columnCount===1){const c=e.columns[a.columnIndices[0]];return{index:a,scanType:"range",seekFilter:void 0,filterIndex:-1,keyType:c.type,satisfiesOrderBy:!0}}else{const c={};for(let u=0;u<a.columnCount;u++){const _=e.columns[a.columnIndices[u]],A=t.find(f=>f.type==="cmp"&&(f.op==="="||f.op===void 0)&&f.colName===_.name&&f.value!==void 0&&f.value!==null);A?c[_.name]=A.value:c[_.name]=vs(_.type)}const l=Cs(e.columns,a.columnIndices,a.columnCount,c);return{index:a,scanType:"range",seekFilter:void 0,filterIndex:-1,keyType:C.BLOB,compositeValue:l,satisfiesOrderBy:!0}}}return null}function Ms(e,t,n,s,i){if(e.op!=="="||!t.indexes||t.indexes.length===0)return null;const r=ht(e.leftCol,s),o=ht(e.rightCol,s);if(!r||!o)return null;let a=null,c=null;if(r.tableIdx===n&&o.tableIdx<n?(a=r,c=o):o.tableIdx===n&&r.tableIdx<n&&(a=o,c=r),!a||!c)return null;let l=null,u=999;for(const A of t.indexes)if(A.columnCount===1&&A.columnIndices[0]===a.colIdx){const f=(A.flags&It.PRIMARY)!==0,g=(A.flags&It.UNIQUE)!==0,d=f?1:g?2:3;d<u&&(u=d,l=A)}if(!l)return null;const _=(l.flags&(It.PRIMARY|It.UNIQUE))!==0;return{index:l,isUnique:_,innerCol:a,outerCol:c,indexCursor:i}}function er(e,t){var qs,Tn,Ws,zo,ta,ea,na,sa,ia;const n=[e.table,...((qs=e.joinedTables)==null?void 0:qs.map(R=>R.table))??[]],i=ji((t==null?void 0:t.planner)??e.planner).optimize(e),r=i.orderedTables??n,o=i.whereMetrics,a=i.metrics;if(i.isAlwaysFalse){const R=new Qs;R.emitUint8(m.OP_HALT);const M=R.toByteArray();return e.outputColumns&&(M.outputColumns=e.outputColumns),M.allTables=r,M.whereMetrics=o,M}const c=i.plan;c!==e&&Object.assign(e,c);const l=e.joinedTables!==void 0&&e.joinedTables.length>0,u=zt(e.filters),_=u?Xo(u):[],A=mn(u),f=Array.from({length:r.length},()=>[]),g=new Set;if(l&&a)for(let R=0;R<r.length;R++){const M=n.indexOf(r[R]);if(M!==-1){const W=a.singleTableFilters.get(M)??[];if(R===0||e.joinedTables&&((Tn=e.joinedTables[R-1])==null?void 0:Tn.type)==="inner"){f[R]=W;for(const V of W)g.add(V)}}}const d=[];for(const R of A)g.has(R)||d.push(R);const I=zt(d),p=l&&jo(r[0],e.joinedTables,e.orderBy,r,e.selectExprs),y=p?e.orderBy.map(R=>{const M=R.colName??"",W=M.includes(".")?M.slice(M.lastIndexOf(".")+1):M;return{...R,colName:W}}):void 0,T=l?ks(r[0],f[0],_,y):null,N=p&&!!(T!=null&&T.satisfiesOrderBy);let B=r.length,P=-1;T&&B<16&&(P=B++);const F=new Array(r.length).fill(null);if(l&&e.joinedTables)for(let R=1;R<r.length;R++){const M=e.joinedTables[R-1];if(B<16){const W=Ms(M,r[R],R,r,B);W&&(F[R]=W,B++)}}const w=B;if(w>16)throw new rs(w,16);for(const R of A)if(R.type==="in"&&!R.notIn&&(!R.values||R.values.length===0)){const M=new Qs;M.emitUint8(m.OP_HALT);const W=M.toByteArray();return e.outputColumns&&(W.outputColumns=e.outputColumns),W}const S=[],v=new Map;for(const R of _)if(R.type==="in"){const M=S.length;v.set(R,M);const W=new Set;if(R.values)for(const V of R.values)V!=null&&(W.add(V),typeof V=="bigint"?W.add(Number(V)):typeof V=="number"&&Number.isSafeInteger(V)&&W.add(BigInt(V)));S.push(W)}const L=new Map;for(let R=0;R<_.length;R++)L.set(_[R],R);if(_.length*2>=64)throw new st(_.length*2);if(e.orderBy&&e.orderBy.length>8)throw new Mr(e.orderBy.length);if(e.groupBy&&e.groupBy.length>8)throw new Gr(e.groupBy.length);const h=new Qs;if(e.limit!==void 0&&e.limit<=0)return h.emitUint8(m.OP_HALT),h.toByteArray();let b=_.length*2;const k=e.offset!==void 0&&e.offset>0,$=e.limit!==void 0&&e.limit>0,j=k?b++:-1,J=$?b++:-1;if(b>=64)throw new st(b);const G=e.table;for(let R=0;R<_.length;R++){const M=_[R];if(M.type==="cmp"){const W=R*2+1,V=M.value;if(V==null)h.emitUint8(m.OP_LOAD_NULL),h.emitUint8(W);else if(typeof V=="number"){const _t=M.colName?ht(M.colName,r):void 0;_t&&_t.col.type===C.FLOAT64?(h.emitUint8(m.OP_LOAD_FLOAT),h.emitUint8(W),h.emitFloat64(V)):Number.isInteger(V)?(h.emitUint8(m.OP_LOAD_INT),h.emitUint8(W),h.emitInt32(Math.floor(V))):(h.emitUint8(m.OP_LOAD_FLOAT),h.emitUint8(W),h.emitFloat64(V))}else typeof V=="bigint"?(h.emitUint8(m.OP_LOAD_INT),h.emitUint8(W),h.emitInt32(Number(V))):typeof V=="string"?(h.emitUint8(m.OP_LOAD_TEXT),h.emitUint8(W),h.emitString(V)):typeof V=="boolean"&&(h.emitUint8(m.OP_LOAD_INT),h.emitUint8(W),h.emitInt32(V?1:0))}}if(k&&(h.emitUint8(m.OP_LOAD_INT),h.emitUint8(j),h.emitInt32(e.offset)),$&&(h.emitUint8(m.OP_LOAD_INT),h.emitUint8(J),h.emitInt32(e.limit)),e.aggregates&&e.aggregates.length>0||e.groupBy&&e.groupBy.length>0){const R=((Ws=e.groupBy)==null?void 0:Ws.length)??0,M=e.aggregates??[],W=M.length,V=[];for(const Q of e.groupBy??[]){const H=typeof Q=="string"?Q:Q.colName??(Q.expr?Qt(Q.expr):"group_key"),X=(zo=e.selectExprs)==null?void 0:zo.find(At=>{if(At.alias===H)return!0;if(typeof Q=="object"&&Q.expr)return JSON.stringify(At.expr)===JSON.stringify(Q.expr);if(typeof Q=="string"&&Q.includes("("))try{const jt=ft(Q);return JSON.stringify(At.expr)===JSON.stringify(jt)}catch{return!1}return!1}),Y=(X==null?void 0:X.alias)??H,K=G.columns.find(At=>At.name===H||At.name===Y);K?V.push({...K,name:Y}):V.push({name:Y,type:C.TEXT,flags:tt.NONE,colOffset:0})}for(let Q=0;Q<M.length;Q++){const H=M[Q],X=H.alias??(H.colName?`${H.func}_${H.colName}`:H.func),Y=H.func==="count"?C.INT32:C.FLOAT64;V.push({name:X,type:Y,flags:tt.NONE,colOffset:0})}const z=b,et=z+R,rt=et+4,dt=rt+4,nt=dt+R,Ot=nt+W;if(Ot>=64)throw new st(Ot);h.emitUint8(m.OP_AGG_INIT),h.emitUint8(0),h.emitUint8(z),h.emitUint8(R),h.emitUint8(0),h.emitUint8(m.OP_OPEN_CURSOR),h.emitUint8(0),h.emitUint32(G.rootPageId),h.emitUint8(m.OP_REWIND),h.emitUint8(0);const Rt=h.emitUint16(0),at=h.currentOffset(),Nt=[];if(te(u,G,h,L,Nt,e.udfNameMap,void 0,v),e.groupBy)for(let Q=0;Q<e.groupBy.length;Q++){const H=e.groupBy[Q],X=z+Q;let Y=Math.max(Ot+4,40);const K=()=>{if(Y>=64)throw new st(Y);return Y++};if(typeof H=="object"&&H.expr)Z(H.expr,G,h,0,X,K,e.udfNameMap);else{const At=typeof H=="string"?H:H.colName,jt=(ea=(ta=e.selectExprs)==null?void 0:ta.find(pt=>pt.alias===At))==null?void 0:ea.expr;if(jt)Z(jt,G,h,0,X,K,e.udfNameMap);else{const pt=G.columns.findIndex(Ft=>Ft.name===At);if(pt!==-1){const Ft=G.columns[pt];Bt(h,0,pt,X,Ft.type)}else try{const Ft=ft(At);Z(Ft,G,h,0,X,K,e.udfNameMap)}catch{throw new Error(`Grouping column "${At}" not found in table "${G.name}"`)}}}}W===0&&R>0&&(h.emitUint8(m.OP_AGG_STEP),h.emitUint8(0),h.emitUint8(z),h.emitUint8(R),h.emitUint8(255),h.emitUint8(0));const Yt=M.some(Q=>Q.func==="count"),Gt=M.some(Q=>Q.func==="avg"),Be=M.some(Q=>Q.func==="sum"),ae=M.some(Q=>Q.func==="min"),bt=M.some(Q=>Q.func==="max");if(Yt||Gt||Be){const Q=M.find(X=>X.func==="count");let H=255;if(Q&&Q.colName&&Q.colName!=="*"){const X=G.columns.findIndex(Y=>Y.name===Q.colName);if(X!==-1){const Y=G.columns[X];H=et,Bt(h,0,X,H,Y.type)}}h.emitUint8(m.OP_AGG_STEP),h.emitUint8(0),h.emitUint8(z),h.emitUint8(R),h.emitUint8(H),h.emitUint8(0)}if(Be||Gt){const Q=M.find(X=>X.func==="sum"||X.func==="avg");let H=255;if(Q&&Q.colName&&Q.colName!=="*"){const X=G.columns.findIndex(Y=>Y.name===Q.colName);if(X!==-1){const Y=G.columns[X];H=et+1,Bt(h,0,X,H,Y.type)}}h.emitUint8(m.OP_AGG_STEP),h.emitUint8(0),h.emitUint8(z),h.emitUint8(R),h.emitUint8(H),h.emitUint8(1)}if(ae){const Q=M.find(X=>X.func==="min");let H=255;if(Q&&Q.colName&&Q.colName!=="*"){const X=G.columns.findIndex(Y=>Y.name===Q.colName);if(X!==-1){const Y=G.columns[X];H=et+2,Bt(h,0,X,H,Y.type)}}h.emitUint8(m.OP_AGG_STEP),h.emitUint8(0),h.emitUint8(z),h.emitUint8(R),h.emitUint8(H),h.emitUint8(3)}if(bt){const Q=M.find(X=>X.func==="max");let H=255;if(Q&&Q.colName&&Q.colName!=="*"){const X=G.columns.findIndex(Y=>Y.name===Q.colName);if(X!==-1){const Y=G.columns[X];H=et+3,Bt(h,0,X,H,Y.type)}}h.emitUint8(m.OP_AGG_STEP),h.emitUint8(0),h.emitUint8(z),h.emitUint8(R),h.emitUint8(H),h.emitUint8(4)}const me=h.currentOffset();for(const Q of Nt)h.patchUint16(Q,me);h.emitUint8(m.OP_NEXT_ROW),h.emitUint8(0);const D=h.emitUint16(0);h.emitUint8(m.OP_JUMP),h.emitUint16(at);const mt=h.currentOffset();h.patchUint16(Rt,mt),h.patchUint16(D,mt);const lt=h.currentOffset();h.emitUint8(m.OP_AGG_NEXT),h.emitUint8(0),h.emitUint8(dt),h.emitUint8(rt);const kt=h.emitUint16(0),St=h.currentOffset();h.emitUint8(m.OP_HALT);const Zt=h.currentOffset();h.patchUint16(kt,Zt);for(let Q=0;Q<M.length;Q++){const H=M[Q],X=nt+Q;let Y=rt,K=0;H.func==="count"?(Y=rt,K=0):H.func==="sum"?(Y=rt,K=1):H.func==="avg"?(Y=rt,K=2):H.func==="min"?(Y=rt+2,K=3):H.func==="max"&&(Y=rt+3,K=4),h.emitUint8(m.OP_AGG_FINAL),h.emitUint8(Y),h.emitUint8(rt+1),h.emitUint8(X),h.emitUint8(K)}const Cn=(Q,H)=>{var X;for(let Y=0;Y<M.length;Y++){const K=M[Y],At=nt+Y;if(Q&&(K.alias&&K.alias===Q||(K.colName?`${K.func}_${K.colName}`:K.func)===Q||`${K.func}(${K.colName??"*"})`===Q.replace(/\s+/g,"")||K.func===Q))return At;if(H&&H.type==="fn"){const jt=H.name.toLowerCase();if(K.func===jt)if(jt==="count"){const pt=H.args[0],Ft=pt&&pt.type==="col"?pt.name:void 0;if(K.colName===void 0||K.colName==="*"||K.colName===Ft)return At}else{const pt=H.args[0],Ft=pt&&pt.type==="col"?pt.name:void 0;if(K.colName===Ft)return At}}}if(e.groupBy)for(let Y=0;Y<e.groupBy.length;Y++){const K=e.groupBy[Y],At=dt+Y,jt=typeof K=="string"?K:K.colName,pt=typeof K=="object"?K.expr:void 0;if(Q){if(jt===Q||pt&&Qt(pt)===Q)return At;const Ft=(X=e.selectExprs)==null?void 0:X.find(ir=>ir.alias===Q);if(Ft){if(jt===Ft.alias||pt&&JSON.stringify(pt)===JSON.stringify(Ft.expr))return At;if(typeof K=="string"&&K.includes("("))try{const ir=ft(K);if(JSON.stringify(ir)===JSON.stringify(Ft.expr))return At}catch{}}}if(H){if(pt&&JSON.stringify(pt)===JSON.stringify(H)||H.type==="col"&&jt===H.name)return At;if(typeof K=="string"&&K.includes("("))try{const Ft=ft(K);if(JSON.stringify(Ft)===JSON.stringify(H))return At}catch{}}}};if(e.having&&e.having.length>0){let Q=null;e.having.length===1?Q=e.having[0]:Q={type:"and",children:e.having};const H=[];let X=Math.max(Ot+4,40);Ic(Q,G,h,Cn,()=>{if(X>=64)throw new st(X);return X++},H,e.udfNameMap);for(const K of H)h.patchUint16(K,lt)}k&&(h.emitUint8(m.OP_OFFSET),h.emitUint8(j),h.emitUint16(lt)),h.emitUint8(m.OP_RESULT_ROW),h.emitUint8(dt),h.emitUint8(R+W),$&&(h.emitUint8(m.OP_LIMIT),h.emitUint8(J),h.emitUint16(St)),h.emitUint8(m.OP_JUMP),h.emitUint16(lt);const Le=h.toByteArray();return Le.outputColumns=V,Le.inSets=S,e.outputColumns=V,Le}const q=l?null:ks(G,A,_,e.orderBy);if(!l&&e.orderBy&&e.orderBy.length>0&&!(q!=null&&q.satisfiesOrderBy)){const R=e.orderBy.length,M=b,W=M+R;if(W>=64)throw new st(W);const V={numKeys:R,directions:e.orderBy.map(at=>at.direction==="desc"?1:0),nullOrders:e.orderBy.map(at=>at.nullOrder==="nulls_last"?1:at.nullOrder==="nulls_first"?0:at.direction==="desc"?1:0),limit:e.limit,offset:e.offset};e.keyInfos=[V],h.emitUint8(m.OP_SORTER_OPEN),h.emitUint8(0),h.emitUint8(0),h.emitUint8(m.OP_OPEN_CURSOR),h.emitUint8(0),h.emitUint32(G.rootPageId),h.emitUint8(m.OP_REWIND),h.emitUint8(0);const _t=h.emitUint16(0),z=h.currentOffset(),et=[];te(u,G,h,L,et,e.udfNameMap,void 0,v);for(let at=0;at<R;at++){const Nt=e.orderBy[at],Yt=M+at;let Gt=50;const Be=()=>{if(Gt>=64)throw new st(Gt);return Gt++};if(Nt.expr)Z(Nt.expr,G,h,0,Yt,Be,e.udfNameMap);else if(Nt.colName){const ae=Nt.colName,bt=(sa=(na=e.selectExprs)==null?void 0:na.find(me=>me.alias===ae))==null?void 0:sa.expr;if(bt)Z(bt,G,h,0,Yt,Be,e.udfNameMap);else{const me=G.columns.findIndex(D=>D.name===ae);if(me!==-1){const D=G.columns[me];Bt(h,0,me,Yt,D.type)}else try{const D=ft(ae);Z(D,G,h,0,Yt,Be,e.udfNameMap)}catch{throw new Error(`Order by column "${ae}" not found in table "${G.name}"`)}}}}h.emitUint8(m.OP_SORTER_INSERT),h.emitUint8(0),h.emitUint8(M),h.emitUint8(R),h.emitUint8(0);const rt=h.currentOffset();for(const at of et)h.patchUint16(at,rt);h.emitUint8(m.OP_NEXT_ROW),h.emitUint8(0);const dt=h.emitUint16(0);h.emitUint8(m.OP_JUMP),h.emitUint16(z);const nt=h.currentOffset();h.patchUint16(_t,nt),h.patchUint16(dt,nt),h.emitUint8(m.OP_SORTER_SORT),h.emitUint8(0);const Ot=h.currentOffset();h.emitUint8(m.OP_SORTER_NEXT),h.emitUint8(0),h.emitUint16(Ot),h.emitUint8(m.OP_HALT);const Rt=h.toByteArray();return Rt.keyInfos=e.keyInfos,Rt.inSets=S,a&&(Rt.planMetrics=a,Rt.estimatedCost=a.totalCost,Rt.estimatedRows=a.estimatedRows,Rt.joinOrder=a.joinOrder),Rt}const ee=e.selectExprs!==void 0&&e.selectExprs.length>0&&!(e.selectExprs.length===1&&e.selectExprs[0].expr.type==="col"&&e.selectExprs[0].expr.name==="*");let Et=[];if(ee)Et=e.selectExprs;else if(l){const R=new Set,M=new Set;for(const W of r)for(const V of W.columns)R.has(V.name.toLowerCase())&&M.add(V.name.toLowerCase()),R.add(V.name.toLowerCase());for(const W of r)for(const V of W.columns){const _t=M.has(V.name.toLowerCase())?`${W.name}.${V.name}`:V.name;Et.push({expr:{type:"col",name:`${W.name}.${V.name}`},alias:_t})}}let gt=-1;if(ee||l){const R=Et.map(M=>({name:M.alias,type:Zo(M.expr,G,e.udfDefs,r),flags:tt.NONE,colOffset:0}));if(e.outputColumns=R,gt=b,b+=Et.length,b>=64)throw new st(b)}if(l){const R=r.length,M=new Array(R);for(let D=1;D<R;D++)e.joinedTables[D-1].type==="left"&&(M[D]=b++);const W=b++,V=b++,_t=b++;let z=-1;if(T&&P!==-1)if(T.compositeValue){if(z=b++,b>=64)throw new st(b);h.emitUint8(m.OP_LOAD_BLOB),h.emitUint8(z),h.emitUint32(T.compositeValue.length),h.emitBytes(T.compositeValue)}else if(T.scanType==="multi_point"){if(z=b++,b>=64)throw new st(b)}else if(T.filterIndex>=0)z=T.filterIndex*2+1;else{if(z=b++,b>=64)throw new st(b);const D=vs(T.keyType);zi(h,z,D,T.keyType)}if(b>=64)throw new st(b);for(let D=0;D<R;D++)h.emitUint8(m.OP_OPEN_CURSOR),h.emitUint8(D),h.emitUint32(r[D].rootPageId);T&&P!==-1&&(h.emitUint8(m.OP_OPEN_INDEX),h.emitUint8(P),h.emitUint32(T.index.rootPageId));for(let D=1;D<R;D++){const mt=F[D];mt&&(h.emitUint8(m.OP_OPEN_INDEX),h.emitUint8(mt.indexCursor),h.emitUint32(mt.index.rootPageId))}const et=new Array(R),rt=new Array(R),dt=Array.from({length:R},()=>[]),nt=new Array(R),Ot=[];if(T&&P!==-1?T.scanType==="point"?(h.emitUint8(m.OP_INDEX_SEEK_EQ),h.emitUint8(P),h.emitUint8(0),h.emitUint8(z),h.emitUint8(T.keyType),et[0]=h.emitUint16(0)):(h.emitUint8(m.OP_INDEX_SEEK_GE),h.emitUint8(P),h.emitUint8(0),h.emitUint8(z),h.emitUint8(T.keyType),et[0]=h.emitUint16(0)):(h.emitUint8(m.OP_REWIND),h.emitUint8(0),et[0]=h.emitUint16(0)),rt[0]=h.currentOffset(),f[0]&&f[0].length>0){const D=zt(f[0]);te(D,r[0],h,L,dt[0],e.udfNameMap,r,v)}for(let D=1;D<R;D++){const mt=e.joinedTables[D-1],lt=F[D];if(mt.type==="left"&&(h.emitUint8(m.OP_LOAD_INT),h.emitUint8(M[D]),h.emitInt32(0)),lt&&lt.isUnique){if(Bt(h,lt.outerCol.cursor,lt.outerCol.colIdx,W,lt.outerCol.col.type),h.emitUint8(m.OP_INDEX_SEEK_EQ),h.emitUint8(lt.indexCursor),h.emitUint8(D),h.emitUint8(W),h.emitUint8(lt.outerCol.col.type),et[D]=h.emitUint16(0),rt[D]=h.currentOffset(),mt.type==="inner"&&f[D]&&f[D].length>0){const kt=zt(f[D]);te(kt,r[D],h,L,dt[D],e.udfNameMap,r,v)}mt.type==="left"&&(h.emitUint8(m.OP_LOAD_INT),h.emitUint8(M[D]),h.emitInt32(1))}else if(lt&&!lt.isUnique){Bt(h,lt.outerCol.cursor,lt.outerCol.colIdx,W,lt.outerCol.col.type),h.emitUint8(m.OP_INDEX_SEEK_GE),h.emitUint8(lt.indexCursor),h.emitUint8(D),h.emitUint8(W),h.emitUint8(lt.outerCol.col.type),et[D]=h.emitUint16(0),rt[D]=h.currentOffset(),Bt(h,D,lt.innerCol.colIdx,V,lt.innerCol.col.type),h.emitUint8(m.OP_EQ),h.emitUint8(W),h.emitUint8(V);const kt=h.emitUint16(0);if(h.emitUint8(m.OP_JUMP),dt[D].push(h.emitUint16(0)),h.patchUint16(kt,h.currentOffset()),mt.type==="inner"&&f[D]&&f[D].length>0){const St=zt(f[D]);te(St,r[D],h,L,dt[D],e.udfNameMap,r,v)}mt.type==="left"&&(h.emitUint8(m.OP_LOAD_INT),h.emitUint8(M[D]),h.emitInt32(1))}else{h.emitUint8(m.OP_REWIND),h.emitUint8(D),et[D]=h.emitUint16(0),rt[D]=h.currentOffset();const kt=ht(mt.leftCol,r);if(!kt)throw new Error(`Join column "${mt.leftCol}" not found in tables`);const St=ht(mt.rightCol,r);if(!St)throw new Error(`Join column "${mt.rightCol}" not found in tables`);Bt(h,kt.cursor,kt.colIdx,W,kt.col.type),Bt(h,St.cursor,St.colIdx,V,St.col.type);let Zt;switch(mt.op){case"=":Zt=m.OP_EQ;break;case"!=":Zt=m.OP_NE;break;case">":Zt=m.OP_GT;break;case">=":Zt=m.OP_GE;break;case"<":Zt=m.OP_LT;break;case"<=":Zt=m.OP_LE;break;default:Zt=m.OP_EQ}h.emitUint8(Zt),h.emitUint8(W),h.emitUint8(V);const Cn=h.emitUint16(0);if(h.emitUint8(m.OP_JUMP),dt[D].push(h.emitUint16(0)),h.patchUint16(Cn,h.currentOffset()),mt.type==="inner"&&f[D]&&f[D].length>0){const Le=zt(f[D]);te(Le,r[D],h,L,dt[D],e.udfNameMap,r,v)}mt.type==="left"&&(h.emitUint8(m.OP_LOAD_INT),h.emitUint8(M[D]),h.emitInt32(1))}}te(I,G,h,L,dt[R-1],e.udfNameMap,r,v);const at=!(e.orderBy!==void 0&&e.orderBy.length>0)||N;let Nt=-1;k&&at&&(h.emitUint8(m.OP_OFFSET),h.emitUint8(j),Nt=h.emitUint16(0));let Yt=b;const Gt=()=>{if(Yt>=64)throw new st(Yt);return Yt++};for(let D=0;D<Et.length;D++)Z(Et[D].expr,G,h,0,gt+D,Gt,e.udfNameMap,void 0,r);h.emitUint8(m.OP_RESULT_ROW),h.emitUint8(gt),h.emitUint8(Et.length),$&&at&&(h.emitUint8(m.OP_LIMIT),h.emitUint8(J),Ot.push(h.emitUint16(0)));for(let D=R-1;D>=1;D--){const mt=h.currentOffset();D===R-1&&Nt!==-1&&h.patchUint16(Nt,mt);for(const St of dt[D])h.patchUint16(St,mt);const lt=F[D];if(lt&&lt.isUnique){const St=h.currentOffset();h.patchUint16(et[D],St)}else if(lt&&!lt.isUnique){h.emitUint8(m.OP_INDEX_NEXT),h.emitUint8(lt.indexCursor),h.emitUint8(D),nt[D]=h.emitUint16(0),h.emitUint8(m.OP_JUMP),h.emitUint16(rt[D]);const St=h.currentOffset();h.patchUint16(et[D],St),h.patchUint16(nt[D],St)}else{h.emitUint8(m.OP_NEXT_ROW),h.emitUint8(D),nt[D]=h.emitUint16(0),h.emitUint8(m.OP_JUMP),h.emitUint16(rt[D]);const St=h.currentOffset();h.patchUint16(et[D],St),h.patchUint16(nt[D],St)}if(e.joinedTables[D-1].type==="left"){h.emitUint8(m.OP_LOAD_INT),h.emitUint8(_t),h.emitInt32(0),h.emitUint8(m.OP_EQ),h.emitUint8(M[D]),h.emitUint8(_t);const St=h.emitUint16(0);h.emitUint8(m.OP_JUMP);const Zt=h.emitUint16(0);h.patchUint16(St,h.currentOffset());for(let Q=0;Q<Et.length;Q++){const H=Et[Q];let X=-1;if(H.expr.type==="col"){const Y=ht(H.expr.name,r);Y&&(X=Y.tableIdx)}X>=D?(h.emitUint8(m.OP_LOAD_NULL),h.emitUint8(gt+Q)):Z(H.expr,G,h,0,gt+Q,Gt,e.udfNameMap,void 0,r)}const Cn=[];k&&at&&(h.emitUint8(m.OP_OFFSET),h.emitUint8(j),Cn.push(h.emitUint16(0))),h.emitUint8(m.OP_RESULT_ROW),h.emitUint8(gt),h.emitUint8(Et.length),$&&at&&(h.emitUint8(m.OP_LIMIT),h.emitUint8(J),Ot.push(h.emitUint16(0)));const Le=h.currentOffset();h.patchUint16(Zt,Le);for(const Q of Cn)h.patchUint16(Q,Le)}}const Be=h.currentOffset();for(const D of dt[0])h.patchUint16(D,Be);T&&P!==-1?T.scanType==="point"?(h.emitUint8(m.OP_JUMP),nt[0]=h.emitUint16(0)):(h.emitUint8(m.OP_INDEX_NEXT),h.emitUint8(P),h.emitUint8(0),nt[0]=h.emitUint16(0),h.emitUint8(m.OP_JUMP),h.emitUint16(rt[0])):(h.emitUint8(m.OP_NEXT_ROW),h.emitUint8(0),nt[0]=h.emitUint16(0),h.emitUint8(m.OP_JUMP),h.emitUint16(rt[0]));const ae=h.currentOffset();h.patchUint16(et[0],ae),h.patchUint16(nt[0],ae);for(const D of Ot)h.patchUint16(D,ae);h.emitUint8(m.OP_HALT);const bt=h.toByteArray();e.outputColumns&&(bt.outputColumns=e.outputColumns);const me=(ia=e.joinedTables)==null?void 0:ia.map((D,mt)=>{const lt=mt+1,kt=F[lt];return{tableIndex:lt,tableName:D.table.name,scanType:kt?"IndexScan":"TableScan",indexName:kt?kt.index.name:void 0}});return bt.joinedTableScans=me,bt.allTables=r,bt.inSets=S,bt.table0Scan=T,bt.isOrderSatisfied=N,N&&(e.isOrderSatisfied=!0),a&&(bt.planMetrics=a,bt.estimatedCost=a.totalCost,bt.estimatedRows=a.estimatedRows,bt.joinOrder=a.joinOrder),o&&(bt.whereMetrics=o),bt}if(q){let R;if(q.compositeValue){if(R=b++,R>=64)throw new st(R);h.emitUint8(m.OP_LOAD_BLOB),h.emitUint8(R),h.emitBytes(q.compositeValue)}else if(q.scanType==="multi_point"){if(R=b++,R>=64)throw new st(R)}else if(q.filterIndex>=0)R=q.filterIndex*2+1;else{if(R=b++,R>=64)throw new st(R);const M=vs(q.keyType);zi(h,R,M,q.keyType)}if(q.scanType==="point"){h.emitUint8(m.OP_OPEN_CURSOR),h.emitUint8(0),h.emitUint32(G.rootPageId),h.emitUint8(m.OP_OPEN_INDEX),h.emitUint8(1),h.emitUint32(q.index.rootPageId),h.emitUint8(m.OP_INDEX_SEEK_EQ),h.emitUint8(1),h.emitUint8(0),h.emitUint8(R),h.emitUint8(q.keyType);const M=h.emitUint16(0),W=[];te(u,G,h,L,W,e.udfNameMap,void 0,v);let V=-1;if(k&&(h.emitUint8(m.OP_OFFSET),h.emitUint8(j),V=h.emitUint16(0)),ee){let rt=b;const dt=()=>{if(rt>=64)throw new st(rt);return rt++};for(let nt=0;nt<e.selectExprs.length;nt++)Z(e.selectExprs[nt].expr,G,h,0,gt+nt,dt,e.udfNameMap);h.emitUint8(m.OP_RESULT_ROW),h.emitUint8(gt),h.emitUint8(e.selectExprs.length)}else h.emitUint8(m.OP_EMIT_ROW),h.emitUint8(0);h.emitUint8(m.OP_JUMP);const _t=h.emitUint16(0),z=h.currentOffset();h.patchUint16(M,z),h.patchUint16(_t,z),V!==-1&&h.patchUint16(V,z);for(const rt of W)h.patchUint16(rt,z);h.emitUint8(m.OP_HALT);const et=h.toByteArray();return et.indexScan=q,et.inSets=S,e.outputColumns&&(et.outputColumns=e.outputColumns),q!=null&&q.satisfiesOrderBy&&(et.isOrderSatisfied=!0,e.isOrderSatisfied=!0),a&&(et.planMetrics=a,et.estimatedCost=a.totalCost,et.estimatedRows=a.estimatedRows,et.joinOrder=a.joinOrder),et}else if(q.scanType==="multi_point"){const M=q.inValues?q.inValues.length:0;if(M===0){h.emitUint8(m.OP_HALT);const z=h.toByteArray();return z.indexScan=q,z.inSets=S,e.outputColumns&&(z.outputColumns=e.outputColumns),z}h.emitUint8(m.OP_OPEN_CURSOR),h.emitUint8(0),h.emitUint32(G.rootPageId),h.emitUint8(m.OP_OPEN_INDEX),h.emitUint8(1),h.emitUint32(q.index.rootPageId);const W=[];for(let z=0;z<M;z++){const et=q.inValues[z];zi(h,R,et,q.keyType),h.emitUint8(m.OP_INDEX_SEEK_EQ),h.emitUint8(1),h.emitUint8(0),h.emitUint8(R),h.emitUint8(q.keyType);const rt=h.emitUint16(0),dt=[];te(u,G,h,L,dt,e.udfNameMap,void 0,v);let nt=-1;if(k&&(h.emitUint8(m.OP_OFFSET),h.emitUint8(j),nt=h.emitUint16(0)),ee){let Nt=b;const Yt=()=>{if(Nt>=64)throw new st(Nt);return Nt++};for(let Gt=0;Gt<e.selectExprs.length;Gt++)Z(e.selectExprs[Gt].expr,G,h,0,gt+Gt,Yt,e.udfNameMap);h.emitUint8(m.OP_RESULT_ROW),h.emitUint8(gt),h.emitUint8(e.selectExprs.length)}else h.emitUint8(m.OP_EMIT_ROW),h.emitUint8(0);$&&(h.emitUint8(m.OP_LIMIT),h.emitUint8(J),W.push(h.emitUint16(0)));const Ot=z===M-1;let Rt=-1;Ot||(h.emitUint8(m.OP_JUMP),Rt=h.emitUint16(0));const at=h.currentOffset();h.patchUint16(rt,at);for(const Nt of dt)h.patchUint16(Nt,at);nt!==-1&&h.patchUint16(nt,at),Rt!==-1&&h.patchUint16(Rt,at)}const V=h.currentOffset();for(const z of W)h.patchUint16(z,V);h.emitUint8(m.OP_HALT);const _t=h.toByteArray();return _t.indexScan=q,_t.inSets=S,e.outputColumns&&(_t.outputColumns=e.outputColumns),q!=null&&q.satisfiesOrderBy&&(_t.isOrderSatisfied=!0,e.isOrderSatisfied=!0),a&&(_t.planMetrics=a,_t.estimatedCost=a.totalCost,_t.estimatedRows=a.estimatedRows,_t.joinOrder=a.joinOrder),_t}else{h.emitUint8(m.OP_OPEN_CURSOR),h.emitUint8(0),h.emitUint32(G.rootPageId),h.emitUint8(m.OP_OPEN_INDEX),h.emitUint8(1),h.emitUint32(q.index.rootPageId),h.emitUint8(m.OP_INDEX_SEEK_GE),h.emitUint8(1),h.emitUint8(0),h.emitUint8(R),h.emitUint8(q.keyType);const M=h.emitUint16(0),W=h.currentOffset(),V=[];te(u,G,h,L,V,e.udfNameMap,void 0,v);let _t=-1;if(k&&(h.emitUint8(m.OP_OFFSET),h.emitUint8(j),_t=h.emitUint16(0)),ee){let Ot=b;const Rt=()=>{if(Ot>=64)throw new st(Ot);return Ot++};for(let at=0;at<e.selectExprs.length;at++)Z(e.selectExprs[at].expr,G,h,0,gt+at,Rt,e.udfNameMap);h.emitUint8(m.OP_RESULT_ROW),h.emitUint8(gt),h.emitUint8(e.selectExprs.length)}else h.emitUint8(m.OP_EMIT_ROW),h.emitUint8(0);let z=-1;$&&(h.emitUint8(m.OP_LIMIT),h.emitUint8(J),z=h.emitUint16(0));const et=h.currentOffset();_t!==-1&&h.patchUint16(_t,et);for(const Ot of V)h.patchUint16(Ot,et);h.emitUint8(m.OP_INDEX_NEXT),h.emitUint8(1),h.emitUint8(0);const rt=h.emitUint16(0);h.emitUint8(m.OP_JUMP),h.emitUint16(W);const dt=h.currentOffset();h.patchUint16(M,dt),h.patchUint16(rt,dt),z!==-1&&h.patchUint16(z,dt),h.emitUint8(m.OP_HALT);const nt=h.toByteArray();return nt.indexScan=q,nt.inSets=S,e.outputColumns&&(nt.outputColumns=e.outputColumns),q!=null&&q.satisfiesOrderBy&&(nt.isOrderSatisfied=!0,e.isOrderSatisfied=!0),a&&(nt.planMetrics=a,nt.estimatedCost=a.totalCost,nt.estimatedRows=a.estimatedRows,nt.joinOrder=a.joinOrder),nt}}h.emitUint8(m.OP_OPEN_CURSOR),h.emitUint8(0),h.emitUint32(G.rootPageId),h.emitUint8(m.OP_REWIND),h.emitUint8(0);const En=h.emitUint16(0),In=h.currentOffset(),pn=[];te(u,G,h,L,pn,e.udfNameMap,void 0,v);let Ke=-1;if(k&&(h.emitUint8(m.OP_OFFSET),h.emitUint8(j),Ke=h.emitUint16(0)),ee){let R=b;const M=()=>{if(R>=64)throw new st(R);return R++};for(let W=0;W<e.selectExprs.length;W++)Z(e.selectExprs[W].expr,G,h,0,gt+W,M,e.udfNameMap);h.emitUint8(m.OP_RESULT_ROW),h.emitUint8(gt),h.emitUint8(e.selectExprs.length)}else h.emitUint8(m.OP_EMIT_ROW),h.emitUint8(0);let Ne=-1;$&&(h.emitUint8(m.OP_LIMIT),h.emitUint8(J),Ne=h.emitUint16(0));const Xn=h.currentOffset();Ke!==-1&&h.patchUint16(Ke,Xn);for(const R of pn)h.patchUint16(R,Xn);h.emitUint8(m.OP_NEXT_ROW),h.emitUint8(0);const be=h.emitUint16(0);h.emitUint8(m.OP_JUMP),h.emitUint16(In);const yn=h.currentOffset();h.patchUint16(En,yn),h.patchUint16(be,yn),Ne!==-1&&h.patchUint16(Ne,yn),h.emitUint8(m.OP_HALT);const oe=h.toByteArray();return oe.inSets=S,e.outputColumns&&(oe.outputColumns=e.outputColumns),o&&(oe.whereMetrics=o),a&&(oe.planMetrics=a,oe.estimatedCost=a.totalCost,oe.estimatedRows=a.estimatedRows,oe.joinOrder=a.joinOrder),oe}const pc=new TextDecoder;function Ko(e,t){const n=[],s=new DataView(e.buffer,e.byteOffset,e.byteLength);let i=0;const r=a=>{var c;return(c=t==null?void 0:t.columns[a])!=null&&c.name?`'${t.columns[a].name}'`:`col_${a}`},o=a=>`0x${a.toString(16).padStart(4,"0")}`;for(;i<e.byteLength;){const a=i,c=e[i++];switch(c){case m.OP_HALT:n.push({addr:a,opcode:"OP_HALT",p1:"",p2:"",p3:"",comment:"Halt VM execution (STATUS_DONE)"});break;case m.OP_OPEN_CURSOR:{const l=e[i++],u=s.getUint32(i,!0);i+=4,n.push({addr:a,opcode:"OP_OPEN_CURSOR",p1:`c[${l}]`,p2:`page=${u}`,p3:"",comment:`Open cursor ${l} on root page ${u}${t?` ('${t.name}')`:""}`});break}case m.OP_OPEN_INDEX:{const l=e[i++],u=s.getUint32(i,!0);i+=4,n.push({addr:a,opcode:"OP_OPEN_INDEX",p1:`c[${l}]`,p2:`page=${u}`,p3:"",comment:`Open index cursor ${l} on root page ${u}`});break}case m.OP_INDEX_SEEK_EQ:{const l=e[i++],u=e[i++],_=e[i++],A=e[i++],f=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_INDEX_SEEK_EQ",p1:`idx=c[${l}], data=c[${u}]`,p2:`key=r[${_}], type=${A}`,p3:o(f),comment:`Seek exact key in index; position data cursor or jump to ${o(f)} if not found`});break}case m.OP_INDEX_SEEK_GE:{const l=e[i++],u=e[i++],_=e[i++],A=e[i++],f=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_INDEX_SEEK_GE",p1:`idx=c[${l}], data=c[${u}]`,p2:`key=r[${_}], type=${A}`,p3:o(f),comment:`Seek first entry >= key in index; position data cursor or jump to ${o(f)} if EOF`});break}case m.OP_INDEX_NEXT:{const l=e[i++],u=e[i++],_=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_INDEX_NEXT",p1:`idx=c[${l}], data=c[${u}]`,p2:o(_),p3:"",comment:`Advance index cursor to next entry; jump to ${o(_)} if EOF`});break}case m.OP_REWIND:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_REWIND",p1:`c[${l}]`,p2:o(u),p3:"",comment:`Rewind cursor to first row; jump to ${o(u)} if empty`});break}case m.OP_NEXT_ROW:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_NEXT_ROW",p1:`c[${l}]`,p2:o(u),p3:"",comment:`Advance cursor to next row; jump to ${o(u)} if EOF`});break}case m.OP_LAST:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_LAST",p1:`c[${l}]`,p2:o(u),p3:"",comment:`Position cursor to last row; jump to ${o(u)} if empty`});break}case m.OP_PREV_ROW:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_PREV_ROW",p1:`c[${l}]`,p2:o(u),p3:"",comment:`Advance cursor to previous row; jump to ${o(u)} if BOF`});break}case m.OP_COLUMN_INT:{const l=e[i++],u=e[i++],_=e[i++];n.push({addr:a,opcode:"OP_COLUMN_INT",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:`r[${_}]`,comment:`Read ${r(u)} as INT into r[${_}]`});break}case m.OP_COLUMN_FLOAT:{const l=e[i++],u=e[i++],_=e[i++];n.push({addr:a,opcode:"OP_COLUMN_FLOAT",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:`r[${_}]`,comment:`Read ${r(u)} as FLOAT into r[${_}]`});break}case m.OP_COLUMN_TEXT:{const l=e[i++],u=e[i++],_=e[i++];n.push({addr:a,opcode:"OP_COLUMN_TEXT",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:`r[${_}]`,comment:`Read ${r(u)} as TEXT into r[${_}]`});break}case m.OP_COLUMN_BLOB:{const l=e[i++],u=e[i++],_=e[i++];n.push({addr:a,opcode:"OP_COLUMN_BLOB",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:`r[${_}]`,comment:`Read ${r(u)} as BLOB into r[${_}]`});break}case m.OP_COLUMN_UUID:{const l=e[i++],u=e[i++],_=e[i++];n.push({addr:a,opcode:"OP_COLUMN_UUID",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:`r[${_}]`,comment:`Read ${r(u)} as UUID into r[${_}]`});break}case m.OP_COLUMN_ULID:{const l=e[i++],u=e[i++],_=e[i++];n.push({addr:a,opcode:"OP_COLUMN_ULID",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:`r[${_}]`,comment:`Read ${r(u)} as ULID into r[${_}]`});break}case m.OP_IS_NULL:{const l=e[i++],u=e[i++],_=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_IS_NULL",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:o(_),comment:`If ${r(u)} IS NULL -> jump to ${o(_)}`});break}case m.OP_IS_NOT_NULL:{const l=e[i++],u=e[i++],_=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_IS_NOT_NULL",p1:`c[${l}]`,p2:`${u} (${r(u)})`,p3:o(_),comment:`If ${r(u)} IS NOT NULL -> jump to ${o(_)}`});break}case m.OP_EQ:case m.OP_NE:case m.OP_GT:case m.OP_GE:case m.OP_LT:case m.OP_LE:{const l={[m.OP_EQ]:"OP_EQ",[m.OP_NE]:"OP_NE",[m.OP_GT]:"OP_GT",[m.OP_GE]:"OP_GE",[m.OP_LT]:"OP_LT",[m.OP_LE]:"OP_LE"},u={[m.OP_EQ]:"==",[m.OP_NE]:"!=",[m.OP_GT]:">",[m.OP_GE]:">=",[m.OP_LT]:"<",[m.OP_LE]:"<="},_=e[i++],A=e[i++],f=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:l[c],p1:`r[${_}]`,p2:`r[${A}]`,p3:o(f),comment:`If r[${_}] ${u[c]} r[${A}] -> jump to ${o(f)}`});break}case m.OP_JUMP:{const l=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_JUMP",p1:o(l),p2:"",p3:"",comment:`Unconditional jump to ${o(l)}`});break}case m.OP_STR_LIKE:case m.OP_STR_NOT_LIKE:case m.OP_STR_CONTAINS:case m.OP_STR_STARTS_WITH:case m.OP_STR_ENDS_WITH:{const l={[m.OP_STR_LIKE]:"OP_STR_LIKE",[m.OP_STR_NOT_LIKE]:"OP_STR_NOT_LIKE",[m.OP_STR_CONTAINS]:"OP_STR_CONTAINS",[m.OP_STR_STARTS_WITH]:"OP_STR_STARTS_WITH",[m.OP_STR_ENDS_WITH]:"OP_STR_ENDS_WITH"},u={[m.OP_STR_LIKE]:"LIKE",[m.OP_STR_NOT_LIKE]:"NOT LIKE",[m.OP_STR_CONTAINS]:"CONTAINS",[m.OP_STR_STARTS_WITH]:"STARTS_WITH",[m.OP_STR_ENDS_WITH]:"ENDS_WITH"},_=e[i++],A=e[i++],f=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:l[c],p1:`r[${_}]`,p2:`r[${A}]`,p3:o(f),comment:`If r[${_}] ${u[c]} r[${A}] -> jump to ${o(f)}`});break}case m.OP_IN:{const l=e[i++],u=s.getUint16(i,!0);i+=2;const _=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_IN",p1:`r[${l}]`,p2:`set[${u}]`,p3:o(_),comment:`If r[${l}] IN set[${u}] -> jump to ${o(_)}`});break}case m.OP_LOAD_INT:{const l=e[i++],u=s.getInt32(i,!0);i+=4,n.push({addr:a,opcode:"OP_LOAD_INT",p1:`r[${l}]`,p2:`${u}`,p3:"",comment:`Load literal int ${u} into r[${l}]`});break}case m.OP_LOAD_FLOAT:{const l=e[i++],u=s.getFloat64(i,!0);i+=8,n.push({addr:a,opcode:"OP_LOAD_FLOAT",p1:`r[${l}]`,p2:`${u}`,p3:"",comment:`Load literal float ${u} into r[${l}]`});break}case m.OP_LOAD_TEXT:{const l=e[i++],u=s.getUint16(i,!0);i+=2;const _=new Uint8Array(e.buffer,e.byteOffset+i,u),A=pc.decode(_);i+=u,n.push({addr:a,opcode:"OP_LOAD_TEXT",p1:`r[${l}]`,p2:`"${A}"`,p3:"",comment:`Load literal text "${A}" into r[${l}]`});break}case m.OP_LOAD_BLOB:{const l=e[i++],u=s.getUint16(i,!0);i+=2+u,n.push({addr:a,opcode:"OP_LOAD_BLOB",p1:`r[${l}]`,p2:`len=${u}`,p3:"",comment:`Load literal BLOB (${u} bytes) into r[${l}]`});break}case m.OP_LOAD_NULL:{const l=e[i++];n.push({addr:a,opcode:"OP_LOAD_NULL",p1:`r[${l}]`,p2:"NULL",p3:"",comment:`Set r[${l}] to NULL`});break}case m.OP_EMIT_ROW:{const l=e[i++];n.push({addr:a,opcode:"OP_EMIT_ROW",p1:`c[${l}]`,p2:"",p3:"",comment:"Row passed all filters -> emit to Output Result Buffer"});break}case m.OP_RESULT_ROW:{const l=e[i++],u=e[i++];n.push({addr:a,opcode:"OP_RESULT_ROW",p1:`r[${l}]`,p2:`cols=${u}`,p3:"",comment:`Serialize registers r[${l}..${l+u-1}] to Result Buffer`});break}case m.OP_OFFSET:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_OFFSET",p1:`r[${l}]`,p2:o(u),p3:"",comment:`If r[${l}] > 0 -> decrement and skip row to ${o(u)}`});break}case m.OP_LIMIT:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_LIMIT",p1:`r[${l}]`,p2:o(u),p3:"",comment:`If r[${l}] <= 1 -> halt to ${o(u)}, else decrement`});break}case m.OP_CALL_UDF:{const l=s.getUint16(i,!0);i+=2;const u=e[i++],_=e[i++],A=e[i++];n.push({addr:a,opcode:"OP_CALL_UDF",p1:`udf#${l}`,p2:`r[${u}..${u+_-1}]`,p3:`r[${A}]`,comment:`Call UDF #${l} with ${_} args -> r[${A}]`});break}case m.OP_STR_LOWER:case m.OP_STR_UPPER:case m.OP_STR_LENGTH:case m.OP_STR_TRIM:case m.OP_MATH_ABS:case m.OP_MATH_ROUND:case m.OP_MATH_FLOOR:case m.OP_MATH_CEIL:{const l={[m.OP_STR_LOWER]:"OP_STR_LOWER",[m.OP_STR_UPPER]:"OP_STR_UPPER",[m.OP_STR_LENGTH]:"OP_STR_LENGTH",[m.OP_STR_TRIM]:"OP_STR_TRIM",[m.OP_MATH_ABS]:"OP_MATH_ABS",[m.OP_MATH_ROUND]:"OP_MATH_ROUND",[m.OP_MATH_FLOOR]:"OP_MATH_FLOOR",[m.OP_MATH_CEIL]:"OP_MATH_CEIL"},u=e[i++],_=e[i++];n.push({addr:a,opcode:l[c],p1:`r[${u}]`,p2:`r[${_}]`,p3:"",comment:`${l[c]}: r[${_}] = ${l[c].toLowerCase()}(r[${u}])`});break}case m.OP_STR_SUBSTR:{const l=e[i++],u=e[i++],_=e[i++],A=e[i++];n.push({addr:a,opcode:"OP_STR_SUBSTR",p1:`r[${l}]`,p2:`start=r[${u}], len=r[${_}]`,p3:`r[${A}]`,comment:`Extract substring from r[${l}] into r[${A}]`});break}case m.OP_ADD:case m.OP_SUB:case m.OP_MUL:case m.OP_DIV:case m.OP_MOD:{const l={[m.OP_ADD]:"OP_ADD",[m.OP_SUB]:"OP_SUB",[m.OP_MUL]:"OP_MUL",[m.OP_DIV]:"OP_DIV",[m.OP_MOD]:"OP_MOD"},u=e[i++],_=e[i++],A=e[i++];n.push({addr:a,opcode:l[c],p1:`r[${u}]`,p2:`r[${_}]`,p3:`r[${A}]`,comment:`${l[c]}: r[${A}] = r[${u}] ${l[c].replace("OP_","")} r[${_}]`});break}case m.OP_STR_CONCAT:case m.OP_COALESCE:{const l={[m.OP_STR_CONCAT]:"OP_STR_CONCAT",[m.OP_COALESCE]:"OP_COALESCE"},u=e[i++],_=e[i++],A=e[i++];n.push({addr:a,opcode:l[c],p1:`r[${u}..${u+_-1}]`,p2:`count=${_}`,p3:`r[${A}]`,comment:`${l[c]}: r[${A}]`});break}case m.OP_COPY:{const l=e[i++],u=e[i++];n.push({addr:a,opcode:"OP_COPY",p1:`r[${l}]`,p2:`r[${u}]`,p3:"",comment:`Copy r[${l}] to r[${u}]`});break}case m.OP_SORTER_OPEN:{const l=e[i++],u=e[i++];n.push({addr:a,opcode:"OP_SORTER_OPEN",p1:`s[${l}]`,p2:`keyInfo=${u}`,p3:"",comment:`Open sorter ${l} with keyInfo ${u}`});break}case m.OP_SORTER_INSERT:{const l=e[i++],u=e[i++],_=e[i++],A=e[i++];n.push({addr:a,opcode:"OP_SORTER_INSERT",p1:`s[${l}]`,p2:`r[${u}..+${_}]`,p3:`c[${A}]`,comment:`Insert row from cursor ${A} into sorter ${l}`});break}case m.OP_SORTER_SORT:{const l=e[i++];n.push({addr:a,opcode:"OP_SORTER_SORT",p1:`s[${l}]`,p2:"",p3:"",comment:`Sort entries in sorter ${l}`});break}case m.OP_SORTER_NEXT:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_SORTER_NEXT",p1:`s[${l}]`,p2:o(u),p3:"",comment:`Emit next sorted row from sorter ${l}; jump to ${o(u)} while more rows`});break}case m.OP_AGG_INIT:{const l=e[i++],u=e[i++],_=e[i++],A=e[i++];n.push({addr:a,opcode:"OP_AGG_INIT",p1:`agg[${l}]`,p2:`keys=r[${u}..+${_}]`,p3:`mode=${A===0?"hash":"stream"}`,comment:`Initialize aggregator ${l} (${A===0?"hash table":"stream"})`});break}case m.OP_AGG_STEP:{const l=e[i++],u=e[i++],_=e[i++],A=e[i++],f=e[i++],g=["COUNT","SUM","AVG","MIN","MAX"];n.push({addr:a,opcode:"OP_AGG_STEP",p1:`agg[${l}]`,p2:`val=${A===255?"*":`r[${A}]`}`,p3:g[f]??`${f}`,comment:`Update accumulator ${g[f]??f} for group r[${u}..+${_}]`});break}case m.OP_AGG_NEXT:{const l=e[i++],u=e[i++],_=e[i++],A=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_AGG_NEXT",p1:`agg[${l}]`,p2:`out_keys=r[${u}], out_acc=r[${_}]`,p3:o(A),comment:`Iterate next group bucket; jump to ${o(A)}`});break}case m.OP_AGG_FINAL:{const l=e[i++],u=e[i++],_=e[i++],A=e[i++],f=["COUNT","SUM","AVG","MIN","MAX"];n.push({addr:a,opcode:"OP_AGG_FINAL",p1:`sum=r[${l}], cnt=r[${u}]`,p2:`r[${_}]`,p3:f[A]??`${A}`,comment:`Finalize ${f[A]??A} into r[${_}]`});break}case m.OP_REG_IS_NULL:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_REG_IS_NULL",p1:`r[${l}]`,p2:o(u),p3:"",comment:`Jump to ${o(u)} if r[${l}] is NULL`});break}case m.OP_REG_IS_NOT_NULL:{const l=e[i++],u=s.getUint16(i,!0);i+=2,n.push({addr:a,opcode:"OP_REG_IS_NOT_NULL",p1:`r[${l}]`,p2:o(u),p3:"",comment:`Jump to ${o(u)} if r[${l}] is NOT NULL`});break}default:n.push({addr:a,opcode:`OP_UNKNOWN(0x${c.toString(16)})`,p1:"",p2:"",p3:"",comment:"Unknown opcode"});break}}return n}function Jo(e){const t=(i,r)=>i.padEnd(r," "),n=i=>`0x${i.toString(16).padStart(4,"0")}`;let s=`${t("ADDR",8)} ${t("OPCODE",18)} ${t("P1",12)} ${t("P2",20)} ${t("P3",10)} COMMENT
2
- `;s+="-".repeat(95)+`
3
- `;for(const i of e)s+=`${t(n(i.addr),8)} ${t(i.opcode,18)} ${t(i.p1,12)} ${t(i.p2,20)} ${t(i.p3,10)} ${i.comment}
4
- `;return s}function x(e){return e instanceof Lt||typeof e=="object"&&e!==null&&typeof e.toArray=="function"&&typeof e.where=="function"&&typeof e.select=="function"&&"filters"in e}function wt(e){if(e instanceof it||typeof e=="object"&&e!==null&&"node"in e)return{expr:e.node};if(typeof e=="object"&&e!==null&&"type"in e)return{expr:e};if(typeof e=="string"){const t=e.trim();return t.includes("(")||t.includes("+")||t.includes("-")||t.includes("*")||t.includes("/")||t.includes("%")?{expr:ft(t),colName:t}:{colName:t}}return{}}function nr(e){const t=[];function n(s){if(s.type==="fn"){const i=s.name.toLowerCase();if(ge(i)){const r=s.args[0],o=r&&r.type==="col"&&r.name!=="*"?r.name:void 0;t.push({func:i,colName:o})}for(const r of s.args)n(r)}else s.type==="binary"&&(n(s.left),n(s.right))}return n(e),t}function Gs(e){if(!e)return[];if(Array.isArray(e)){const t=[];for(const n of e)t.push(...Gs(n));return t}if(x(e)){const t=e.getSelectFields(),n=e.getAggregates();return[{alias:t.length>0?t[0].alias:n.length>0?n[0].alias??(n[0].colName?`${n[0].func}_${n[0].colName}`:n[0].func):"subquery",subquery:e}]}if(e instanceof it||typeof e=="object"&&e!==null&&"node"in e){const t=e.node;return[{alias:Qt(t),expr:t,sourceCol:t.type==="col"&&t.name!=="*"?t.name:void 0,fn:t.type==="fn"?t.name:void 0}]}if(typeof e=="string"){const t=e.trim();if(!t)return[];const n=Bs(t);return[{alias:n.alias,expr:n.expr,sourceCol:n.expr.type==="col"&&n.expr.name!=="*"?n.expr.name:void 0,fn:n.expr.type==="fn"?n.expr.name:void 0}]}if(typeof e=="object"&&e!==null){if("subquery"in e&&"as"in e&&x(e.subquery)&&typeof e.as=="string")return[{alias:e.as,subquery:e.subquery}];if("expr"in e&&"alias"in e){const n=e.expr;return[{alias:e.alias,expr:n,sourceCol:n.type==="col"&&n.name!=="*"?n.name:void 0,fn:n.type==="fn"?n.name:void 0}]}if("col"in e&&"as"in e&&typeof e.col=="string"&&typeof e.as=="string"){const n=Bs(`${e.col} as ${e.as}`);return[{sourceCol:e.col==="*"?void 0:e.col,alias:e.as,expr:n.expr,fn:n.expr.type==="fn"?n.expr.name:void 0}]}const t=[];for(const[n,s]of Object.entries(e))if(typeof s=="string"){const i=Bs(`${n} as ${s}`);t.push({sourceCol:n==="*"?void 0:n,alias:s,expr:i.expr,fn:i.expr.type==="fn"?i.expr.name:void 0})}else if(x(s))t.push({alias:n,subquery:s});else if(typeof s=="object"&&s!==null&&"subquery"in s&&x(s.subquery))t.push({alias:n,subquery:s.subquery});else if(s instanceof it||typeof s=="object"&&s!==null&&"node"in s){const i=s.node;t.push({alias:n,expr:i,sourceCol:i.type==="col"&&i.name!=="*"?i.name:void 0,fn:i.type==="fn"?i.name:void 0})}else if(typeof s=="object"&&s!==null&&"type"in s){const i=s;t.push({alias:n,expr:i,sourceCol:i.type==="col"&&i.name!=="*"?i.name:void 0,fn:i.type==="fn"?i.name:void 0})}return t}return[]}function ct(e){if(!x(e))if(typeof e=="string"){const t=e.trim();if(ge(t))throw new os(t);if(t.includes("("))try{const n=ft(t);je(n,"where")}catch(n){if(n instanceof os)throw n}}else e instanceof it||typeof e=="object"&&e!==null&&"node"in e?je(e.node,"where"):typeof e=="object"&&e!==null&&"type"in e&&je(e,"where")}class Lt{constructor(t,n){U(this,"db");U(this,"tableName");U(this,"sourceSubquery");U(this,"filters",[]);U(this,"selectFields",[]);U(this,"limitCount",null);U(this,"offsetCount",null);U(this,"sortCol",null);U(this,"sortDir","asc");U(this,"orderKeys",[]);U(this,"groupCols",[]);U(this,"groupKeys",[]);U(this,"aggExprs",[]);U(this,"havingFilters",[]);U(this,"joins",[]);U(this,"planner");this.db=t,x(n)?(this.sourceSubquery=n,this.tableName="__subquery__",this.assertSubqueryDepth()):this.tableName=n}withPlanner(t){return this.planner=t,this}as(t){return{subquery:this,as:t}}getTableName(){return this.tableName}getSourceSubquery(){return this.sourceSubquery}getAggregates(){return this.aggExprs}getFilterSubqueryDepth(t){let n=0;if(t.subquery&&x(t.subquery)&&(n=Math.max(n,1+t.subquery.getMaxSubqueryDepth())),t.value&&x(t.value)&&(n=Math.max(n,1+t.value.getMaxSubqueryDepth())),t.child&&(n=Math.max(n,this.getFilterSubqueryDepth(t.child))),t.children)for(const s of t.children)n=Math.max(n,this.getFilterSubqueryDepth(s));return n}getMaxSubqueryDepth(){let t=0;this.sourceSubquery&&(t=Math.max(t,1+this.sourceSubquery.getMaxSubqueryDepth()));for(const n of this.selectFields)n.subquery&&(t=Math.max(t,1+n.subquery.getMaxSubqueryDepth()));for(const n of this.filters)t=Math.max(t,this.getFilterSubqueryDepth(n));for(const n of this.havingFilters)t=Math.max(t,this.getFilterSubqueryDepth(n));return t}assertSubqueryDepth(){const t=this.getMaxSubqueryDepth();if(t>7)throw new Qr(t,7)}join(t,n,s,i){const r=i!==void 0?s:"=",o=i!==void 0?i:s;return this.joins.push({type:"inner",table:t,leftCol:n,op:r,rightCol:o}),this}innerJoin(t,n,s,i){return this.join(t,n,s,i)}leftJoin(t,n,s,i){const r=i!==void 0?s:"=",o=i!==void 0?i:s;return this.joins.push({type:"left",table:t,leftCol:n,op:r,rightCol:o}),this}getJoins(){return this.joins}where(t,n,s){if(typeof t=="function"){const i=new Lt(this.db,this.tableName);t(i);const r=i.getRootFilter();r&&(this.filters.push(r),this.assertSubqueryDepth())}else if(n===void 0&&s===void 0){if(typeof t=="string"){ct(t);const i=ft(t);this.filters.push({type:"expr",expr:i})}else if(t instanceof it||typeof t=="object"&&t!==null&&"node"in t)ct(t),this.filters.push({type:"expr",expr:t.node});else if(typeof t=="object"&&t!==null&&"type"in t)ct(t),this.filters.push({type:"expr",expr:t});else if(typeof t=="object"&&t!==null)for(const[i,r]of Object.entries(t))this.where(i,"=",r)}else{if(ct(t),ct(s),typeof n=="string"&&n.trim().toLowerCase()==="in")return this.whereIn(t,s);if(typeof n=="string"&&n.trim().toLowerCase()==="not in")return this.whereNotIn(t,s);const i=wt(t);x(s)?(this.filters.push({type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:s}),this.assertSubqueryDepth()):this.filters.push({type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s})}return this}orWhere(t,n,s){if(typeof t=="function"){const i=new Lt(this.db,this.tableName);t(i);const r=i.getRootFilter();r&&(this.addOrFilter(r),this.assertSubqueryDepth())}else if(n===void 0&&s===void 0)if(typeof t=="string"){ct(t);const i=ft(t);this.addOrFilter({type:"expr",expr:i})}else t instanceof it||typeof t=="object"&&t!==null&&"node"in t?(ct(t),this.addOrFilter({type:"expr",expr:t.node})):typeof t=="object"&&t!==null&&"type"in t&&(ct(t),this.addOrFilter({type:"expr",expr:t}));else{if(ct(t),ct(s),typeof n=="string"&&n.trim().toLowerCase()==="in")return this.orWhereIn(t,s);if(typeof n=="string"&&n.trim().toLowerCase()==="not in")return this.orWhereNotIn(t,s);const i=wt(t);x(s)?(this.addOrFilter({type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:s}),this.assertSubqueryDepth()):this.addOrFilter({type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s})}return this}whereNot(t,n,s){if(typeof t=="function"){const i=new Lt(this.db,this.tableName);t(i);const r=i.getRootFilter();r&&(this.filters.push({type:"not",child:r}),this.assertSubqueryDepth())}else if(n===void 0&&s===void 0)if(typeof t=="string"){ct(t);const i=ft(t);this.filters.push({type:"not",child:{type:"expr",expr:i}})}else t instanceof it||typeof t=="object"&&t!==null&&"node"in t?(ct(t),this.filters.push({type:"not",child:{type:"expr",expr:t.node}})):typeof t=="object"&&t!==null&&"type"in t&&(ct(t),this.filters.push({type:"not",child:{type:"expr",expr:t}}));else{if(ct(t),ct(s),typeof n=="string"&&n.trim().toLowerCase()==="in")return this.whereNotIn(t,s);if(typeof n=="string"&&n.trim().toLowerCase()==="not in")return this.whereIn(t,s);const i=wt(t);this.filters.push({type:"not",child:{type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:x(s)?s:void 0}}),x(s)&&this.assertSubqueryDepth()}return this}orWhereNot(t,n,s){if(typeof t=="function"){const i=new Lt(this.db,this.tableName);t(i);const r=i.getRootFilter();r&&(this.addOrFilter({type:"not",child:r}),this.assertSubqueryDepth())}else if(n===void 0&&s===void 0)if(typeof t=="string"){ct(t);const i=ft(t);this.addOrFilter({type:"not",child:{type:"expr",expr:i}})}else t instanceof it||typeof t=="object"&&t!==null&&"node"in t?(ct(t),this.addOrFilter({type:"not",child:{type:"expr",expr:t.node}})):typeof t=="object"&&t!==null&&"type"in t&&(ct(t),this.addOrFilter({type:"not",child:{type:"expr",expr:t}}));else{if(ct(t),ct(s),typeof n=="string"&&n.trim().toLowerCase()==="in")return this.orWhereNotIn(t,s);if(typeof n=="string"&&n.trim().toLowerCase()==="not in")return this.orWhereIn(t,s);const i=wt(t);this.addOrFilter({type:"not",child:{type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:x(s)?s:void 0}}),x(s)&&this.assertSubqueryDepth()}return this}whereRaw(t){return this.where(t)}orWhereRaw(t){return this.orWhere(t)}whereNull(t){return ct(t),this.filters.push({type:"null",colName:t,isNull:!0}),this}whereNotNull(t){return ct(t),this.filters.push({type:"null",colName:t,isNull:!1}),this}orWhereNull(t){return ct(t),this.addOrFilter({type:"null",colName:t,isNull:!0}),this}orWhereNotNull(t){return ct(t),this.addOrFilter({type:"null",colName:t,isNull:!1}),this}whereLike(t,n){return this.where(t,"like",n)}whereNotLike(t,n){return this.where(t,"not like",n)}whereStartsWith(t,n){return this.where(t,"starts_with",n)}whereEndsWith(t,n){return this.where(t,"ends_with",n)}whereContains(t,n){return this.where(t,"contains",n)}orWhereLike(t,n){return this.orWhere(t,"like",n)}orWhereNotLike(t,n){return this.orWhere(t,"not like",n)}orWhereStartsWith(t,n){return this.orWhere(t,"starts_with",n)}orWhereEndsWith(t,n){return this.orWhere(t,"ends_with",n)}orWhereContains(t,n){return this.orWhere(t,"contains",n)}whereIn(t,n){ct(t);const s=wt(t);if(x(n))return this.filters.push({type:"in",colName:s.colName,expr:s.expr,subquery:n,notIn:!1}),this.assertSubqueryDepth(),this;if(!Array.isArray(n))throw new TypeError("WebDB: whereIn requires an array of values");if(n.length>Dt)throw new RangeError(`WebDB: whereIn list exceeds maximum limit of ${Dt} elements`);return this.filters.push({type:"in",colName:s.colName,expr:s.expr,values:n,notIn:!1}),this}whereNotIn(t,n){ct(t);const s=wt(t);if(x(n))return this.filters.push({type:"in",colName:s.colName,expr:s.expr,subquery:n,notIn:!0}),this.assertSubqueryDepth(),this;if(!Array.isArray(n))throw new TypeError("WebDB: whereNotIn requires an array of values");if(n.length>Dt)throw new RangeError(`WebDB: whereNotIn list exceeds maximum limit of ${Dt} elements`);return this.filters.push({type:"in",colName:s.colName,expr:s.expr,values:n,notIn:!0}),this}orWhereIn(t,n){ct(t);const s=wt(t);if(x(n))return this.addOrFilter({type:"in",colName:s.colName,expr:s.expr,subquery:n,notIn:!1}),this.assertSubqueryDepth(),this;if(!Array.isArray(n))throw new TypeError("WebDB: orWhereIn requires an array of values");if(n.length>Dt)throw new RangeError(`WebDB: orWhereIn list exceeds maximum limit of ${Dt} elements`);return this.addOrFilter({type:"in",colName:s.colName,expr:s.expr,values:n,notIn:!1}),this}orWhereNotIn(t,n){ct(t);const s=wt(t);if(x(n))return this.addOrFilter({type:"in",colName:s.colName,expr:s.expr,subquery:n,notIn:!0}),this.assertSubqueryDepth(),this;if(!Array.isArray(n))throw new TypeError("WebDB: orWhereNotIn requires an array of values");if(n.length>Dt)throw new RangeError(`WebDB: orWhereNotIn list exceeds maximum limit of ${Dt} elements`);return this.addOrFilter({type:"in",colName:s.colName,expr:s.expr,values:n,notIn:!0}),this}whereExists(t){if(!x(t))throw new TypeError("WebDB: whereExists requires a QueryBuilder subquery");return this.filters.push({type:"exists",subquery:t,notExists:!1}),this.assertSubqueryDepth(),this}whereNotExists(t){if(!x(t))throw new TypeError("WebDB: whereNotExists requires a QueryBuilder subquery");return this.filters.push({type:"exists",subquery:t,notExists:!0}),this.assertSubqueryDepth(),this}orWhereExists(t){if(!x(t))throw new TypeError("WebDB: orWhereExists requires a QueryBuilder subquery");return this.addOrFilter({type:"exists",subquery:t,notExists:!1}),this.assertSubqueryDepth(),this}orWhereNotExists(t){if(!x(t))throw new TypeError("WebDB: orWhereNotExists requires a QueryBuilder subquery");return this.addOrFilter({type:"exists",subquery:t,notExists:!0}),this.assertSubqueryDepth(),this}getFilters(){return this.filters}getRootFilter(){return this.filters.length===0?null:this.filters.length===1?this.filters[0]:{type:"and",children:[...this.filters]}}addOrFilter(t){if(this.filters.length===0){this.filters.push(t);return}if(this.filters.length===1&&this.filters[0].type==="or"&&this.filters[0].children){this.filters[0].children.push(t);return}let n;this.filters.length===1?n=this.filters[0]:n={type:"and",children:[...this.filters]},this.filters=[{type:"or",children:[n,t]}]}limit(t){return this.limitCount=t,this}offset(t){return this.offsetCount=t,this}orderBy(t,n="asc",s){if(typeof t=="string"){this.sortCol=t,this.sortDir=n;const i=wt(t);this.orderKeys.push({colName:i.colName??t,expr:i.expr,direction:n,nullOrder:s})}else if(t instanceof it||typeof t=="object"&&t!==null&&"node"in t)this.orderKeys.push({expr:t.node,direction:n,nullOrder:s});else if(typeof t=="object"&&t!==null&&"type"in t)this.orderKeys.push({expr:t,direction:n,nullOrder:s});else if(Array.isArray(t))for(const i of t)if(typeof i=="string"){const r=wt(i);this.orderKeys.push({colName:r.colName??i,expr:r.expr,direction:"asc"})}else this.orderKeys.push(i);else this.orderKeys.push(t);return this}groupBy(...t){for(const n of t)if(Array.isArray(n))for(const s of n)this.addGroupByItem(s);else this.addGroupByItem(n);return this}addGroupByItem(t){if(t instanceof it||typeof t=="object"&&t!==null&&"node"in t)this.groupKeys.push({expr:t.node}),this.groupCols.push(Qt(t.node));else if(typeof t=="object"&&t!==null&&"type"in t)this.groupKeys.push({expr:t}),this.groupCols.push(Qt(t));else if(typeof t=="string"){const n=wt(t);this.groupKeys.push({colName:n.colName??t,expr:n.expr}),this.groupCols.push(t)}}registerAggregatesFromFilter(t){const n=(s,i)=>{if(i){const r=nr(i);for(const o of r)this.aggExprs.some(c=>c.func===o.func&&(c.colName===o.colName||c.colName===void 0&&o.colName===void 0))||this.aggExprs.push(o)}else if(s&&s.includes("("))try{const r=ft(s),o=nr(r);for(const a of o)this.aggExprs.some(l=>l.func===a.func&&(l.colName===a.colName||l.colName===void 0&&a.colName===void 0))||this.aggExprs.push(a)}catch{}};if(t.type==="cmp")n(t.colName,t.expr);else if(t.type==="expr"&&t.expr)n(void 0,t.expr);else if(t.type==="null")n(t.colName,t.expr);else if(t.type==="not"&&t.child)this.registerAggregatesFromFilter(t.child);else if((t.type==="and"||t.type==="or")&&t.children)for(const s of t.children)this.registerAggregatesFromFilter(s)}having(t,n,s){if(typeof t=="function"){const i=new Lt(this.db,this.tableName);t(i);const r=i.getRootHavingFilter();r&&(this.havingFilters.push(r),this.registerAggregatesFromFilter(r),this.assertSubqueryDepth())}else if(n===void 0&&s===void 0){if(typeof t=="string"){const r={type:"expr",expr:ft(t)};this.havingFilters.push(r),this.registerAggregatesFromFilter(r)}else if(t instanceof it||typeof t=="object"&&t!==null&&"node"in t){const i={type:"expr",expr:t.node};this.havingFilters.push(i),this.registerAggregatesFromFilter(i)}else if(typeof t=="object"&&t!==null&&"type"in t){const i={type:"expr",expr:t};this.havingFilters.push(i),this.registerAggregatesFromFilter(i)}}else{const i=wt(t);if(typeof n=="string"&&(n.trim().toLowerCase()==="in"||n.trim().toLowerCase()==="not in")){const o=n.trim().toLowerCase()==="not in",a=x(s)?{type:"in",colName:i.colName,expr:i.expr,subquery:s,notIn:o}:{type:"in",colName:i.colName,expr:i.expr,values:s,notIn:o};return this.havingFilters.push(a),this.registerAggregatesFromFilter(a),this.assertSubqueryDepth(),this}const r={type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:x(s)?s:void 0};this.havingFilters.push(r),this.registerAggregatesFromFilter(r),x(s)&&this.assertSubqueryDepth()}return this}orHaving(t,n,s){if(typeof t=="function"){const i=new Lt(this.db,this.tableName);t(i);const r=i.getRootHavingFilter();r&&(this.addHavingOrFilter(r),this.registerAggregatesFromFilter(r),this.assertSubqueryDepth())}else if(n===void 0&&s===void 0){if(typeof t=="string"){const r={type:"expr",expr:ft(t)};this.addHavingOrFilter(r),this.registerAggregatesFromFilter(r)}else if(t instanceof it||typeof t=="object"&&t!==null&&"node"in t){const i={type:"expr",expr:t.node};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i)}else if(typeof t=="object"&&t!==null&&"type"in t){const i={type:"expr",expr:t};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i)}}else{const i=wt(t),r={type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:x(s)?s:void 0};this.addHavingOrFilter(r),this.registerAggregatesFromFilter(r),x(s)&&this.assertSubqueryDepth()}return this}havingNot(t,n,s){if(typeof t=="function"){const i=new Lt(this.db,this.tableName);t(i);const r=i.getRootHavingFilter();if(r){const o={type:"not",child:r};this.havingFilters.push(o),this.registerAggregatesFromFilter(o),this.assertSubqueryDepth()}}else if(n===void 0&&s===void 0){if(typeof t=="string"){const r={type:"not",child:{type:"expr",expr:ft(t)}};this.havingFilters.push(r),this.registerAggregatesFromFilter(r)}else if(t instanceof it||typeof t=="object"&&t!==null&&"node"in t){const i={type:"not",child:{type:"expr",expr:t.node}};this.havingFilters.push(i),this.registerAggregatesFromFilter(i)}else if(typeof t=="object"&&t!==null&&"type"in t){const i={type:"not",child:{type:"expr",expr:t}};this.havingFilters.push(i),this.registerAggregatesFromFilter(i)}}else{const i=wt(t),r={type:"not",child:{type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:x(s)?s:void 0}};this.havingFilters.push(r),this.registerAggregatesFromFilter(r),x(s)&&this.assertSubqueryDepth()}return this}orHavingNot(t,n,s){if(typeof t=="function"){const i=new Lt(this.db,this.tableName);t(i);const r=i.getRootHavingFilter();if(r){const o={type:"not",child:r};this.addHavingOrFilter(o),this.registerAggregatesFromFilter(o),this.assertSubqueryDepth()}}else if(n===void 0&&s===void 0){if(typeof t=="string"){const r={type:"not",child:{type:"expr",expr:ft(t)}};this.addHavingOrFilter(r),this.registerAggregatesFromFilter(r)}else if(t instanceof it||typeof t=="object"&&t!==null&&"node"in t){const i={type:"not",child:{type:"expr",expr:t.node}};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i)}else if(typeof t=="object"&&t!==null&&"type"in t){const i={type:"not",child:{type:"expr",expr:t}};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i)}}else{const i=wt(t),r={type:"not",child:{type:"cmp",colName:i.colName,expr:i.expr,op:n,value:s,subquery:x(s)?s:void 0}};this.addHavingOrFilter(r),this.registerAggregatesFromFilter(r),x(s)&&this.assertSubqueryDepth()}return this}havingRaw(t){return this.having(t)}orHavingRaw(t){return this.orHaving(t)}havingNull(t){const n=wt(t),s={type:"null",colName:n.colName,expr:n.expr,isNull:!0};return this.havingFilters.push(s),this.registerAggregatesFromFilter(s),this}havingNotNull(t){const n=wt(t),s={type:"null",colName:n.colName,expr:n.expr,isNull:!1};return this.havingFilters.push(s),this.registerAggregatesFromFilter(s),this}orHavingNull(t){const n=wt(t),s={type:"null",colName:n.colName,expr:n.expr,isNull:!0};return this.addHavingOrFilter(s),this.registerAggregatesFromFilter(s),this}orHavingNotNull(t){const n=wt(t),s={type:"null",colName:n.colName,expr:n.expr,isNull:!1};return this.addHavingOrFilter(s),this.registerAggregatesFromFilter(s),this}getHavingFilters(){return this.havingFilters}getRootHavingFilter(){return this.havingFilters.length===0?null:this.havingFilters.length===1?this.havingFilters[0]:{type:"and",children:[...this.havingFilters]}}addHavingOrFilter(t){if(this.havingFilters.length===0){this.havingFilters.push(t);return}if(this.havingFilters.length===1&&this.havingFilters[0].type==="or"&&this.havingFilters[0].children){this.havingFilters[0].children.push(t);return}let n;this.havingFilters.length===1?n=this.havingFilters[0]:n={type:"and",children:[...this.havingFilters]},this.havingFilters=[{type:"or",children:[n,t]}]}aggregate(t){return this.aggExprs.push(...t),this}count(t,n){return this.aggExprs.push({func:"count",colName:t,alias:n}),this}sum(t,n){return this.aggExprs.push({func:"sum",colName:t,alias:n}),this}avg(t,n){return this.aggExprs.push({func:"avg",colName:t,alias:n}),this}min(t,n){return this.aggExprs.push({func:"min",colName:t,alias:n}),this}max(t,n){return this.aggExprs.push({func:"max",colName:t,alias:n}),this}select(t,...n){if(t===void 0)return this;const s=[];s.push(...Gs(t));for(const i of n)s.push(...Gs(i));this.selectFields.push(...s),this.assertSubqueryDepth();for(const i of s)if(i.expr&&i.expr.type==="fn"){const r=i.expr.name.toLowerCase();if(ge(r)&&!this.aggExprs.some(a=>a.alias===i.alias)){const a=i.expr.args[0],c=a&&a.type==="col"&&a.name!=="*"?a.name:void 0;this.aggExprs.push({func:r,colName:c,alias:i.alias})}}else if(typeof i.fn=="string"){const r=i.fn.toLowerCase();ge(r)&&(this.aggExprs.some(a=>a.alias===i.alias)||this.aggExprs.push({func:r,colName:i.sourceCol==="*"?void 0:i.sourceCol,alias:i.alias}))}return this}getSelectFields(){return this.selectFields}clone(t){const n=t??this.db,s=new Lt(n,this.sourceSubquery?this.sourceSubquery.clone(n):this.tableName),i=r=>({...r,values:r.values?[...r.values]:void 0,subquery:r.subquery&&x(r.subquery)?r.subquery.clone(n):r.subquery,value:x(r.value)?r.value.clone(n):r.value,child:r.child?i(r.child):void 0,children:r.children?r.children.map(i):void 0});return s.filters=this.filters.map(i),s.selectFields=this.selectFields.map(r=>({...r,args:r.args?[...r.args]:void 0,subquery:r.subquery?r.subquery.clone(n):void 0})),s.limitCount=this.limitCount,s.offsetCount=this.offsetCount,s.sortCol=this.sortCol,s.sortDir=this.sortDir,s.orderKeys=this.orderKeys.map(r=>({...r})),s.groupCols=[...this.groupCols],s.groupKeys=this.groupKeys.map(r=>({...r})),s.aggExprs=this.aggExprs.map(r=>({...r})),s.havingFilters=this.havingFilters.map(i),s.joins=this.joins.map(r=>({...r})),s.planner=this.planner,s}cloneExprNode(t){return t.type==="binary"?{...t,left:this.cloneExprNode(t.left),right:this.cloneExprNode(t.right)}:t.type==="fn"?{...t,args:t.args.map(n=>this.cloneExprNode(n))}:{...t}}substituteExpr(t,n){if(t.type==="col"){if(t.name==="*")return t;const s=t.name.includes(".")?t.name.slice(t.name.lastIndexOf(".")+1):t.name,i=n.get(t.name)??n.get(s);return i?this.cloneExprNode(i):{...t}}return t.type==="binary"?{...t,left:this.substituteExpr(t.left,n),right:this.substituteExpr(t.right,n)}:t.type==="fn"?{...t,args:t.args.map(s=>this.substituteExpr(s,n))}:{...t}}substituteColOrExpr(t,n,s){if(n){const i=this.substituteExpr(n,s);return i.type==="col"?{colName:i.name,expr:i}:{expr:i}}if(t){const i=t.includes(".")?t.slice(t.lastIndexOf(".")+1):t,r=s.get(t)??s.get(i);if(r){const o=this.cloneExprNode(r);return o.type==="col"?{colName:o.name}:{expr:o}}return{colName:t}}return{colName:t,expr:n}}substituteFilter(t,n){var i;if(t.type==="and"||t.type==="or")return{...t,children:(i=t.children)==null?void 0:i.map(r=>this.substituteFilter(r,n))};if(t.type==="not"&&t.child)return{...t,child:this.substituteFilter(t.child,n)};if(t.type==="exists")return{...t};const s=this.substituteColOrExpr(t.colName,t.expr,n);return{...t,colName:s.colName,expr:s.expr}}tryFlatten(){var r;if(!this.sourceSubquery)return null;const t=this.sourceSubquery.tryFlatten()??this.sourceSubquery.clone(this.db);if(t.sourceSubquery||t.groupKeys.length>0||t.groupCols.length>0||t.aggExprs.length>0||t.havingFilters.length>0||t.limitCount!==null||t.offsetCount!==null||t.joins.length>0||t.selectFields.some(o=>o.subquery)||this.joins.length>0)return null;const n=new Map;for(const o of t.selectFields){const a=o.expr??{type:"col",name:o.sourceCol??o.alias};n.set(o.alias,a)}for(const o of this.aggExprs)if(o.colName){const a=o.colName.includes(".")?o.colName.slice(o.colName.lastIndexOf(".")+1):o.colName,c=n.get(o.colName)??n.get(a);if(c&&c.type!=="col")return null}for(const o of this.groupKeys){const a=this.substituteColOrExpr(o.colName,o.expr,n);if(!a.colName&&a.expr&&a.expr.type!=="col")return null}const s=new Lt(this.db,t.tableName);s.planner=this.planner??t.planner,s.filters=[...t.filters.map(o=>({...o})),...this.filters.map(o=>this.substituteFilter(o,n))],this.selectFields.length>0?s.selectFields=this.selectFields.map(o=>{if(o.subquery)return{...o,subquery:o.subquery.clone(this.db)};const a=o.expr??{type:"col",name:o.sourceCol??o.alias},c=this.substituteExpr(a,n);return{alias:o.alias,expr:c,sourceCol:c.type==="col"&&c.name!=="*"?c.name:void 0,fn:c.type==="fn"?c.name:void 0}}):t.selectFields.length>0&&(s.selectFields=t.selectFields.map(o=>({...o})));const i=this.aggExprs.length>0||this.groupKeys.length>0||this.groupCols.length>0;return this.orderKeys.length>0?(s.orderKeys=this.orderKeys.map(o=>{const a=this.substituteColOrExpr(o.colName,o.expr,n);return{...o,colName:a.colName,expr:a.expr}}),(r=s.orderKeys[0])!=null&&r.colName&&(s.sortCol=s.orderKeys[0].colName,s.sortDir=s.orderKeys[0].direction)):!i&&t.orderKeys.length>0&&(s.orderKeys=t.orderKeys.map(o=>({...o})),s.sortCol=t.sortCol,s.sortDir=t.sortDir),s.groupKeys=this.groupKeys.map(o=>{const a=this.substituteColOrExpr(o.colName,o.expr,n);return{colName:a.colName,expr:a.expr}}),s.groupCols=this.groupCols.map(o=>{const a=n.get(o);return a&&a.type==="col"?a.name:o}),s.aggExprs=this.aggExprs.map(o=>{if(o.colName){const a=n.get(o.colName);if(a&&a.type==="col")return{...o,colName:a.name}}return{...o}}),s.havingFilters=this.havingFilters.map(o=>this.substituteFilter(o,n)),s.limitCount=this.limitCount,s.offsetCount=this.offsetCount,s}exprReferencesOuter(t,n){if(!t)return!1;if(t.type==="col"){if(t.name.includes(".")){const s=t.name.slice(0,t.name.indexOf("."));if(s==="outer"||!n.has(s))return!0}return!1}return t.type==="binary"?this.exprReferencesOuter(t.left,n)||this.exprReferencesOuter(t.right,n):t.type==="fn"?t.args.some(s=>this.exprReferencesOuter(s,n)):!1}filterIsCorrelatedWithOuter(t,n){var s;if(t.type==="and"||t.type==="or")return((s=t.children)==null?void 0:s.some(i=>this.filterIsCorrelatedWithOuter(i,n)))??!1;if(t.type==="not"&&t.child)return this.filterIsCorrelatedWithOuter(t.child,n);if(t.type==="cmp"&&(t.value instanceof it||typeof t.value=="object"&&t.value!==null&&!x(t.value)&&("node"in t.value||"type"in t.value)||t.subquery&&x(t.subquery)&&this.isSubqueryCorrelated(t.subquery))||(t.type==="in"||t.type==="exists")&&t.subquery&&x(t.subquery)&&this.isSubqueryCorrelated(t.subquery))return!0;if(t.colName&&t.colName.includes(".")){const i=t.colName.slice(0,t.colName.indexOf("."));if(i==="outer"||!n.has(i))return!0}return!!this.exprReferencesOuter(t.expr,n)}isSubqueryCorrelated(t){const n=new Set([t.tableName]);for(const s of t.joins)n.add(s.table);return!!(t.filters.some(s=>this.filterIsCorrelatedWithOuter(s,n))||t.havingFilters.some(s=>this.filterIsCorrelatedWithOuter(s,n))||t.sourceSubquery&&this.isSubqueryCorrelated(t.sourceSubquery)||t.selectFields.some(s=>s.subquery&&this.isSubqueryCorrelated(s.subquery)))}filterContainsCorrelatedSubquery(t){var s;if(t.type==="and"||t.type==="or")return((s=t.children)==null?void 0:s.some(i=>this.filterContainsCorrelatedSubquery(i)))??!1;if(t.type==="not"&&t.child)return this.filterContainsCorrelatedSubquery(t.child);const n=t.subquery&&x(t.subquery)?t.subquery:x(t.value)?t.value:void 0;return!!(n&&this.isSubqueryCorrelated(n))}getRowValue(t,n){if(n in t)return t[n];if(n.startsWith("outer.")){const s=n.slice(6);if(s in t)return t[s]}if(n.includes(".")){const s=n.slice(n.lastIndexOf(".")+1);if(s in t)return t[s]}}bindOuterRowToExpr(t,n,s,i=!1){if(t.type==="col"){if(i)return{type:"literal",value:this.getRowValue(n,t.name)??null};if(t.name.includes(".")){const r=t.name.slice(0,t.name.indexOf("."));if(r==="outer"||!s.has(r))return{type:"literal",value:this.getRowValue(n,t.name)??null}}return{...t}}return t.type==="binary"?{...t,left:this.bindOuterRowToExpr(t.left,n,s,i),right:this.bindOuterRowToExpr(t.right,n,s,i)}:t.type==="fn"?{...t,args:t.args.map(r=>this.bindOuterRowToExpr(r,n,s,i))}:{...t}}bindOuterRowToFilter(t,n,s){var r;if(t.type==="and"||t.type==="or")return{...t,children:(r=t.children)==null?void 0:r.map(o=>this.bindOuterRowToFilter(o,n,s))};if(t.type==="not"&&t.child)return{...t,child:this.bindOuterRowToFilter(t.child,n,s)};let i=t.expr?this.bindOuterRowToExpr(t.expr,n,s,!1):void 0;if(t.type==="cmp"&&(t.value instanceof it||typeof t.value=="object"&&t.value!==null&&!x(t.value)&&("node"in t.value||"type"in t.value))){const o="node"in t.value?t.value.node:t.value,a=this.bindOuterRowToExpr(o,n,s,!0);let c;typeof this.db.getUdf=="function"&&(c=u=>{var _,A;return(A=(_=this.db.getUdf(u))==null?void 0:_.def)==null?void 0:A.call});const l=vt(a,n,c);return l==null?{type:"in",values:[],notIn:!1}:{...t,expr:i,value:l}}return{...t,expr:i,subquery:t.subquery&&x(t.subquery)?this.bindOuterRowToSubquery(t.subquery,n):t.subquery}}bindOuterRowToSubquery(t,n){const s=t.clone(this.db),i=new Set([s.tableName]);for(const r of s.joins)i.add(r.table);return s.filters=s.filters.map(r=>this.bindOuterRowToFilter(r,n,i)),s.havingFilters=s.havingFilters.map(r=>this.bindOuterRowToFilter(r,n,i)),s.sourceSubquery&&(s.sourceSubquery=this.bindOuterRowToSubquery(s.sourceSubquery,n)),s}async evalScalarSubquery(t,n){const i=await(n&&this.isSubqueryCorrelated(t)?this.bindOuterRowToSubquery(t,n):t.clone(this.db)).first();if(!i)return null;const r=Object.keys(i);return r.length>0?i[r[0]]:null}async resolveUncorrelatedFilter(t){if(t.type==="and"||t.type==="or"){const n=[];for(const s of t.children??[])n.push(await this.resolveUncorrelatedFilter(s));return{...t,children:n}}if(t.type==="not"&&t.child)return{...t,child:await this.resolveUncorrelatedFilter(t.child)};if(t.type==="in"&&t.subquery&&x(t.subquery)&&!this.isSubqueryCorrelated(t.subquery)){const s=(await t.subquery.clone(this.db).toArray()).map(r=>{const o=Object.keys(r);return o.length>0?r[o[0]]:null});if(t.notIn&&s.some(r=>r==null))return{type:"in",colName:t.colName,expr:t.expr,values:[],notIn:!1};const i=s.filter(r=>r!=null);if(i.length>Dt)throw new RangeError(`WebDB: whereIn subquery result exceeds maximum limit of ${Dt} elements`);return{type:"in",colName:t.colName,expr:t.expr,values:i,notIn:t.notIn}}if(t.type==="exists"&&t.subquery&&x(t.subquery)&&!this.isSubqueryCorrelated(t.subquery)){const s=await t.subquery.clone(this.db).first()!==null,i=t.notExists?!s:s;return{type:"in",values:[],notIn:i}}if(t.type==="cmp"){const n=t.subquery&&x(t.subquery)?t.subquery:x(t.value)?t.value:void 0;if(n&&!this.isSubqueryCorrelated(n)){const s=await this.evalScalarSubquery(n);return s==null?{type:"in",colName:t.colName,expr:t.expr,values:[],notIn:!1}:{...t,value:s,subquery:void 0}}}return t}async resolveUncorrelatedFilters(t){const n=[];for(const s of t)n.push(await this.resolveUncorrelatedFilter(s));return n}evalFilterTargetValue(t,n,s){let i;if(typeof this.db.getUdf=="function"&&(i=r=>{var o,a;return(a=(o=this.db.getUdf(r))==null?void 0:o.def)==null?void 0:a.call}),n&&t[n]!==void 0)return t[n];if(s){const r=Qt(s);return t[r]!==void 0?t[r]:vt(s,t,i)}if(n)return this.getRowValue(t,n)}evalComparisonValues(t,n,s){if(t==null||s===null||s===void 0)return!1;const i=(n??"=").trim().toLowerCase();switch(i){case"=":return t===s;case"!=":case"<>":return t!==s;case"<":return t<s;case"<=":return t<=s;case">":return t>s;case">=":return t>=s;case"starts_with":return String(t).startsWith(String(s));case"ends_with":return String(t).endsWith(String(s));case"contains":return String(t).includes(String(s));case"like":case"not like":{const r=String(s).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,"."),a=new RegExp(`^${r}$`,"s").test(String(t));return i==="not like"?!a:a}default:return t===s}}async evalFilterOnRow(t,n){if(n.type==="and"){for(const s of n.children??[])if(!await this.evalFilterOnRow(t,s))return!1;return!0}if(n.type==="or"){for(const s of n.children??[])if(await this.evalFilterOnRow(t,s))return!0;return!1}if(n.type==="not"&&n.child){if(n.child.type==="cmp"||n.child.type==="in"){const s=this.evalFilterTargetValue(t,n.child.colName,n.child.expr);if(s==null)return!1}return!await this.evalFilterOnRow(t,n.child)}if(n.type==="null"){const s=this.evalFilterTargetValue(t,n.colName,n.expr),i=s==null;return n.isNull?i:!i}if(n.type==="expr"&&n.expr){let s;typeof this.db.getUdf=="function"&&(s=r=>{var o,a;return(a=(o=this.db.getUdf(r))==null?void 0:o.def)==null?void 0:a.call});const i=vt(n.expr,t,s);return!!(i&&i!==0)}if(n.type==="exists"){if(n.subquery&&x(n.subquery)){const r=await(this.isSubqueryCorrelated(n.subquery)?this.bindOuterRowToSubquery(n.subquery,t):n.subquery.clone(this.db)).first()!==null;return n.notExists?!r:r}return!!n.notExists}if(n.type==="in"){let s=n.values??[];if(n.subquery&&x(n.subquery)){const c=(await(this.isSubqueryCorrelated(n.subquery)?this.bindOuterRowToSubquery(n.subquery,t):n.subquery.clone(this.db)).toArray()).map(l=>{const u=Object.keys(l);return u.length>0?l[u[0]]:null});if(n.notIn&&c.some(l=>l==null))return!1;s=c.filter(l=>l!=null)}if(!n.colName&&!n.expr)return n.notIn?s.length===0:s.length>0;if(s.length===0)return!!n.notIn;const i=this.evalFilterTargetValue(t,n.colName,n.expr);if(i==null||n.notIn&&s.some(o=>o==null))return!1;const r=s.includes(i);return n.notIn?!r:r}if(n.type==="cmp"){const s=this.evalFilterTargetValue(t,n.colName,n.expr),i=n.subquery&&x(n.subquery)?n.subquery:x(n.value)?n.value:void 0,r=i?await this.evalScalarSubquery(i,t):n.value;return this.evalComparisonValues(s,n.op,r)}return!0}async evalFiltersOnRows(t,n){if(n.length===0)return t;const s=await this.resolveUncorrelatedFilters(n),i=[];for(const r of t){let o=!0;for(const a of s)if(!await this.evalFilterOnRow(r,a)){o=!1;break}o&&i.push(r)}return i}performInMemoryAggregation(t){const n=Math.max(this.groupKeys.length,this.groupCols.length),s=new Map;if(n===0)s.set("__global__",{keyRow:{},rows:t});else for(const a of t){const c=[],l={};for(let A=0;A<n;A++){const f=this.groupKeys[A],g=this.groupCols[A],d=this.evalFilterTargetValue(a,(f==null?void 0:f.colName)??g,f==null?void 0:f.expr);c.push(d);const I=(f==null?void 0:f.colName)??(f!=null&&f.expr?Qt(f.expr):g);I&&(l[I]=d,I.includes(".")&&(l[I.slice(I.lastIndexOf(".")+1)]=d)),g&&(l[g]=d)}const u=JSON.stringify(c);let _=s.get(u);_||(_={keyRow:l,rows:[]},s.set(u,_)),_.rows.push(a)}let i;typeof this.db.getUdf=="function"&&(i=a=>{var c,l;return(l=(c=this.db.getUdf(a))==null?void 0:c.def)==null?void 0:l.call});const r=(a,c,l,u)=>{const _=c.toLowerCase();if(_==="count"){if(!l&&(!u||u.type==="col"&&u.name==="*"))return a.length;let f=0;for(const g of a){const d=u?vt(u,g,i):this.getRowValue(g,l);d!=null&&f++}return f}const A=[];for(const f of a){const g=u?vt(u,f,i):l?this.getRowValue(f,l):null;g!=null&&A.push(g)}return A.length===0?null:_==="sum"?A.reduce((f,g)=>f+Number(g),0):_==="avg"?A.reduce((f,g)=>f+Number(g),0)/A.length:_==="min"?A.reduce((f,g)=>g<f?g:f,A[0]):_==="max"?A.reduce((f,g)=>g>f?g:f,A[0]):null},o=[];for(const{keyRow:a,rows:c}of s.values()){const l={...a};for(const u of this.aggExprs){const _=r(c,u.func,u.colName),A=u.alias??(u.colName?`${u.func}_${u.colName}`:u.func);l[A]=_,l[`${u.func}(${u.colName??"*"})`]=_,u.colName||(l[u.func]=_)}for(const u of this.selectFields)if(u.expr&&u.expr.type==="fn"&&ge(u.expr.name)){const _=u.expr.args[0],A=r(c,u.expr.name,_&&_.type==="col"&&_.name!=="*"?_.name:void 0,_);l[u.alias]=A,l[Qt(u.expr)]=A}o.push(l)}return o}async attachSelectSubqueries(t){const n=this.selectFields.filter(i=>i.subquery);if(n.length===0||t.length===0)return;const s=new Map;for(const i of n)if(i.subquery&&!this.isSubqueryCorrelated(i.subquery)){const r=await this.evalScalarSubquery(i.subquery);s.set(i,r)}for(const i of t)for(const r of n)s.has(r)?i[r.alias]=s.get(r):r.subquery&&(i[r.alias]=await this.evalScalarSubquery(r.subquery,i))}async executeMaterializedDerivedTable(){let t=await this.sourceSubquery.clone(this.db).toArray();for(const r of this.joins){const o=await new Lt(this.db,r.table).toArray(),a=[];for(const c of t){let l=!1;const u=this.getRowValue(c,r.leftCol);for(const _ of o){const A=this.getRowValue(_,r.rightCol);if(this.evalComparisonValues(u,r.op,A)){l=!0;const f={...c};for(const[g,d]of Object.entries(_))f[`${r.table}.${g}`]=d,g in f||(f[g]=d);a.push(f)}}!l&&r.type==="left"&&a.push({...c})}t=a}t=await this.evalFiltersOnRows(t,this.filters),(this.aggExprs.length>0||this.groupKeys.length>0||this.groupCols.length>0)&&(t=this.performInMemoryAggregation(t),this.havingFilters.length>0&&(t=await this.evalFiltersOnRows(t,this.havingFilters)));const s=this.selectFields.some(r=>r.subquery),i=s&&this.orderKeys.some(r=>this.selectFields.some(o=>o.subquery&&(o.alias===r.colName||o.alias===(r.expr?Qt(r.expr):void 0))));return i&&await this.attachSelectSubqueries(t),this.orderKeys.length>0&&(t=this.sortAggregatedRows(t)),this.offsetCount!==null&&this.offsetCount>0&&(t=t.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(t=t.slice(0,this.limitCount)),s&&!i&&await this.attachSelectSubqueries(t),this.selectFields.length>0&&(t=t.map(r=>this.projectRow(r))),t}projectRow(t){const n=Object.keys(t);if(this.selectFields.length>0&&n.length===this.selectFields.length&&this.selectFields.every(i=>i.alias in t))return t;const s={};for(const i of this.selectFields){const r=i.alias;if(t[r]!==void 0)s[r]=t[r];else if(i.expr&&t[Qt(i.expr)]!==void 0)s[r]=t[Qt(i.expr)];else if(i.sourceCol!==void 0&&t[i.sourceCol]!==void 0)s[r]=t[i.sourceCol];else if(i.expr){let o;typeof this.db.getUdf=="function"&&(o=a=>{var c,l;return(l=(c=this.db.getUdf(a))==null?void 0:c.def)==null?void 0:l.call}),s[r]=vt(i.expr,t,o)}else s[r]=null}return s}async explain(){if(this.assertSubqueryDepth(),this.sourceSubquery){const r=this.tryFlatten();if(r)return r.explain();const o=await this.sourceSubquery.clone(this.db).explain(),a=await this.resolveUncorrelatedFilters(this.filters);return{plan:{...o.plan,filters:[...o.plan.filters,...a],orderBy:this.orderKeys.length>0?this.orderKeys:o.plan.orderBy,groupBy:this.groupKeys.length>0?this.groupKeys:this.groupCols.length>0?this.groupCols:o.plan.groupBy,aggregates:this.aggExprs.length>0?this.aggExprs:o.plan.aggregates,having:this.havingFilters.length>0?this.havingFilters:o.plan.having,select:this.selectFields.length>0?this.selectFields:o.plan.select,limit:this.limitCount!==null?this.limitCount:o.plan.limit,offset:this.offsetCount!==null?this.offsetCount:o.plan.offset},bytecodeSize:o.bytecodeSize,instructions:o.instructions,assembly:o.assembly}}const t=await this.resolveUncorrelatedFilters(this.filters.filter(r=>!this.filterContainsCorrelatedSubquery(r))),n=await this.resolveUncorrelatedFilters(this.havingFilters.filter(r=>!this.filterContainsCorrelatedSubquery(r))),s=this.selectFields.filter(r=>!r.subquery),i=s.map(r=>({expr:r.expr??{type:"col",name:r.sourceCol??r.alias},alias:r.alias}));return this.db.explainQuery(this.tableName,t,{joins:this.joins.length>0?this.joins:void 0,orderBy:this.orderKeys.length>0?this.orderKeys:void 0,groupBy:this.groupKeys.length>0?this.groupKeys:this.groupCols.length>0?this.groupCols:void 0,aggregates:this.aggExprs.length>0?this.aggExprs:void 0,having:n.length>0?n:void 0,select:s.length>0?s:void 0,selectExprs:i.length>0?i:void 0,limit:this.limitCount!==null?this.limitCount:void 0,offset:this.offsetCount!==null?this.offsetCount:void 0,planner:this.planner})}getOrderKeyValue(t,n){const s=n.colName??(n.expr?Qt(n.expr):void 0);if(!s)return;if(t[s]!==void 0)return t[s];const i=s.includes(".")?s.slice(s.lastIndexOf(".")+1):s;if(t[i]!==void 0)return t[i];if(this.selectFields.length>0){for(const r of this.selectFields)if((r.sourceCol===s||r.sourceCol===i||r.alias===s||r.alias===i)&&t[r.alias]!==void 0)return t[r.alias]}if(t[`__sort_${s}`]!==void 0)return t[`__sort_${s}`];if(t[`__sort_${i}`]!==void 0)return t[`__sort_${i}`];if(n.expr){let r;return typeof this.db.getUdf=="function"&&(r=o=>{var a,c;return(c=(a=this.db.getUdf(o))==null?void 0:a.def)==null?void 0:c.call}),vt(n.expr,t,r)}}sortAggregatedRows(t){return[...t].sort((n,s)=>{for(const i of this.orderKeys){const r=this.getOrderKeyValue(n,i),o=this.getOrderKeyValue(s,i);if(r===o)continue;if(r==null)return i.nullOrder==="nulls_first"?-1:1;if(o==null)return i.nullOrder==="nulls_first"?1:-1;const a=i.direction==="desc"?-1:1;return typeof r=="number"&&typeof o=="number"?(r-o)*a:String(r).localeCompare(String(o))*a}return 0})}async toArray(){if(this.assertSubqueryDepth(),this.sourceSubquery){const p=this.tryFlatten();return p?p.toArray():this.executeMaterializedDerivedTable()}const t=this.filters.some(p=>this.filterContainsCorrelatedSubquery(p)),n=this.havingFilters.some(p=>this.filterContainsCorrelatedSubquery(p)),s=this.selectFields.some(p=>p.subquery),i=this.selectFields.some(p=>p.subquery&&this.isSubqueryCorrelated(p.subquery)),r=await this.resolveUncorrelatedFilters(this.filters.filter(p=>!this.filterContainsCorrelatedSubquery(p))),o=this.filters.filter(p=>this.filterContainsCorrelatedSubquery(p)),a=this.joins.length>0,c=this.orderKeys.length>0,l=this.aggExprs.length>0||this.groupKeys.length>0||this.groupCols.length>0;if(t){let p=await this.db.executeQuery(this.tableName,r,{limit:null,offset:null,sortCol:null,sortDir:this.sortDir,joins:a?this.joins:void 0,planner:this.planner});return p=await this.evalFiltersOnRows(p,o),l&&(p=this.performInMemoryAggregation(p),this.havingFilters.length>0&&(p=await this.evalFiltersOnRows(p,this.havingFilters))),s&&await this.attachSelectSubqueries(p),c&&(p=this.sortAggregatedRows(p)),this.offsetCount!==null&&this.offsetCount>0&&(p=p.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(p=p.slice(0,this.limitCount)),this.selectFields.length>0&&(p=p.map(y=>this.projectRow(y))),p}const u=await this.resolveUncorrelatedFilters(this.havingFilters.filter(p=>!this.filterContainsCorrelatedSubquery(p))),_=this.selectFields.filter(p=>!p.subquery),A=_.map(p=>({expr:p.expr??{type:"col",name:p.sourceCol??p.alias},alias:p.alias}));if(a&&c&&A.length>0)for(const p of this.orderKeys){const y=p.colName;if(y){const T=y.includes(".")?y.slice(y.lastIndexOf(".")+1):y;_.some(B=>B.alias===y||B.alias===T||B.sourceCol===y||B.sourceCol===T)||A.push({expr:{type:"col",name:y},alias:`__sort_${y}`})}}const f=!i||l,g=await this.db.executeQuery(this.tableName,r,{limit:a&&c&&l||n?null:this.limitCount,offset:a&&c&&l||n?null:this.offsetCount,sortCol:a?null:this.sortCol,sortDir:this.sortDir,orderBy:a&&l?void 0:c?this.orderKeys:void 0,joins:a?this.joins:void 0,groupBy:this.groupKeys.length>0?this.groupKeys:this.groupCols.length>0?this.groupCols:void 0,aggregates:this.aggExprs.length>0?this.aggExprs:void 0,having:u.length>0?u:void 0,select:f&&_.length>0?_:void 0,selectExprs:f&&A.length>0?A:void 0,planner:this.planner});let d=g;if(n){const p=this.havingFilters.filter(y=>this.filterContainsCorrelatedSubquery(y));d=await this.evalFiltersOnRows(d,p)}const I=g.isOrderSatisfied===!0;return(l||a)&&c&&!I?(d=this.sortAggregatedRows(d),(a||n)&&(this.offsetCount!==null&&this.offsetCount>0&&(d=d.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(d=d.slice(0,this.limitCount)))):n&&(this.offsetCount!==null&&this.offsetCount>0&&(d=d.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(d=d.slice(0,this.limitCount))),s&&await this.attachSelectSubqueries(d),this.selectFields.length>0&&(d=d.map(p=>this.projectRow(p))),d}async first(){const t=await this.limit(1).toArray();return t.length>0?t[0]:null}async update(t,n){if(!this.db.executeUpdate)throw new Error("Database executor does not support executeUpdate");this.assertSubqueryDepth();const s=await this.resolveUncorrelatedFilters(this.filters);return this.db.executeUpdate(this.tableName,s,t,n)}async delete(t){if(!this.db.executeDelete)throw new Error("Database executor does not support executeDelete");this.assertSubqueryDepth();const n=await this.resolveUncorrelatedFilters(this.filters);return this.db.executeDelete(this.tableName,n,t)}}class sr{constructor(t,n,s,i,r="js",o,a,c){U(this,"vfs");U(this,"io");U(this,"driver");U(this,"coreMode");U(this,"wasmCore");U(this,"planner");U(this,"coordinator");U(this,"currentLeaseId",null);U(this,"vmCtx");U(this,"udfs",new Map);U(this,"nextUdfId",1);U(this,"tableMetaCache",new Map);U(this,"tableTailPages",new Map);U(this,"indexTailPages",new Map);U(this,"beforeCommitHooks",new Set);U(this,"commitHooks",new Set);U(this,"subscriptions",new Set);U(this,"activeTxChanges",[]);U(this,"activeTxOrigin","local");U(this,"activeTxMeta");U(this,"activeTxId",0);U(this,"nextAutoTxId",1e6);U(this,"isRunningBeforeCommit",!1);U(this,"broadcastChannel",null);U(this,"instanceId",Math.random().toString(36).slice(2)+Date.now().toString(36));if(this.vfs=t,this.io=n,this.driver=s,this.coordinator=i,this.coreMode=r,this.wasmCore=o,this.planner=a,this.vmCtx=Nr(),this.coordinator.setOnCrossTabInvalidated(async()=>{this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear();const l=hn(this.driver.getSlotDataView(0));for(const u of l){let _=u.colCatalogPageId;for(;_!==0;){const A=await this.driver.acquireAndPinPage(_),f=this.driver.getSlotDataView(A);_=he(f,0).nextColCatalogPageId}}}),typeof BroadcastChannel<"u"&&c){const l=`webdb_sync_${t.name}_${c}`;this.broadcastChannel=new BroadcastChannel(l),this.broadcastChannel.onmessage=u=>{const _=u.data;if(!_||_.senderId===this.instanceId)return;const{tables:A,origin:f,meta:g,changeCounter:d,schemaVersion:I}=_;this.coordinator.leaseQueue.enqueue(async()=>{await this.coordinator.syncCrossTabState(!0),this.notifySubscriptions({tables:Array.isArray(A)?A:[],origin:f??"remote",meta:g,changeCounter:typeof d=="number"?d:this.getSyncState().changeCounter,schemaVersion:typeof I=="number"?I:this.getSyncState().schemaVersion,crossTab:!0})}).catch(()=>{})}}}get pool(){return this.driver}static async open(t){const n=t.storage||"memory";let s;t.vfs?s=t.vfs:n==="idb"?s=new Wr(t.name):n==="opfs"?s=new Hr(t.name):s=new qr;const i=t.slotCount??Qe,r=t.maxQueryMemory??ve,o=Ro(Math.max(i,Qe),r),a=t.core??"js";let c;a==="wasm"&&(c=Lo(o,t.wasmBinary?new Uint8Array(t.wasmBinary):void 0));const l=new Ii({vfs:s,memory:o}),u=new Fo({io:l,memory:o,slotCount:i,maxQueryMemory:r,useDefaultLayoutOffsets:!0}),_=t.name&&s.name!=="memory"?`webdb_lock_${s.name}_${t.name}`:void 0,A=new Qo(s,u,l,_);u.setTransactionCoordinator(A),await A.leaseQueue.enqueue(async()=>{await Hi(s);const[g]=await s.readPages([1]);if(!g)yo(u.getSlotDataView(0)),u.markDirty(0),await u.flushSlot(0);else{u.getPageBytesInSlot(0).set(g),u.clearDirty(0),qn(u.getSlotDataView(0),!0);const d=hn(u.getSlotDataView(0));for(const I of d){let p=I.colCatalogPageId;for(;p!==0;){const y=await u.acquireAndPinPage(p),T=u.getSlotDataView(y);p=he(T,0).nextColCatalogPageId}}}A.recordDiskPage1State()});const f=new sr(s,l,u,A,a,c,t.planner,t.name);return t.initialData&&await f.importBinary(t.initialData),f}getPlanner(){return this.planner}setPlanner(t){return this.planner=t,this}validateIdentifier(t,n="Identifier"){if(!t||typeof t!="string"||t.length===0)throw new Error(`${n} cannot be empty`);if(t.length>ne)throw new Lr(t,ne)}async createTable(t,n){return this.coordinator.leaseQueue.enqueue(()=>this._createTableInternal(t,n),this.currentLeaseId??void 0)}async _createTableInternal(t,n){var g;if(this.validateIdentifier(t,"Table name"),n.length===0)throw new Error("Table must have at least one column");if(n.length>ue)throw new Ln(n.length,ue);const s=new Set;let i=!1;for(const d of n){if(this.validateIdentifier(d.name,"Column name"),s.has(d.name))throw new ss(d.name,t);s.add(d.name);const I=typeof d.flags=="number"?d.flags:0;(d.primaryKey||(g=d.flags)!=null&&g.primaryKey||I&tt.PRIMARY_KEY)&&(i=!0)}const r=this.pool.getSlotDataView(0);if(xt(r,t)!==-1)throw new is(t);if(ki(r)===-1)throw new gi(ce,ce);const o=Math.ceil(n.length/Te),a=i&&Ns(r)!==-1?1:0,c=1+o+a,l=[];for(let d=0;d<c;d++)l.push(await this.driver.allocateAndPinPage());let u=0;const _={allocateNewPage:()=>{if(u<l.length)return l[u++];const I=r.getUint32(12,!0)+1;return r.setUint32(12,I,!0),this.pool.markDirty(0),I},getPageBytes:d=>{let I=this.pool.getResidentSlot(d);return I===-1&&(I=d<=this.pool.slotCount?d-1:1,this.pool.assignSlot(I,d)),this.pool.getPageBytesInSlot(I)},markPageDirty:d=>{const I=this.pool.getResidentSlot(d);I!==-1&&this.pool.markDirty(I)}};let A;try{A=bo(r,_,t,n)}catch(d){for(const I of l)this.driver.forceUnpinPage(I),await this.driver.freePage(I,!0);throw d}this.driver.unpinPage(A.rootPageId);for(const d of A.indexes??[])d.rootPageId>1&&this.driver.unpinPage(d.rootPageId);let f=A.colCatalogPageId;for(;f!==0;){const d=await this.driver.acquirePage(f);this.pool.isSlotPinned(d)||this.pool.pinSlot(d),f=he(this.pool.getSlotDataView(d),0).nextColCatalogPageId}return this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this.tableMetaCache.delete(t.toLowerCase()),A}async getTable(t){return this.coordinator.leaseQueue.enqueue(()=>this._getTableInternal(t),this.currentLeaseId??void 0)}async _getTableInternal(t){const n=t.toLowerCase(),s=this.tableMetaCache.get(n);if(s)return s;const i=this.pool.getSlotDataView(0),r=xt(i,t);if(r===-1)throw new Bn(t);let a=Jt(i,r).colCatalogPageId;for(;a!==0;){await this.driver.acquirePage(a);const u=this.pool.getResidentSlot(a);a=he(this.pool.getSlotDataView(u),0).nextColCatalogPageId}const l=qi(i,{getPageBytes:u=>{const _=this.pool.getResidentSlot(u);return _!==-1?this.pool.getPageBytesInSlot(_):new Uint8Array(4096)}},t);return this.tableMetaCache.set(n,l),l}async listTables(){return this.coordinator.leaseQueue.enqueue(async()=>{const t=this.pool.getSlotDataView(0),n=hn(t),s=[];for(const i of n)s.push(await this._getTableInternal(i.name));return s},this.currentLeaseId??void 0)}async freeTableTreePages(t){if(t<=1)return;const n=[],s=new Set,i=[t];for(;i.length>0;){const r=i.shift();if(r<=1||s.has(r))continue;s.add(r);const o=await this.driver.acquirePage(r),a=this.pool.getSlotDataView(o),c=qe(a,0);if(c===Me){this.driver.forceUnpinPage(r);continue}if(n.push(r),c===fi||c===Ur){const l=ut(a,0);for(let _=0;_<l;_++){const A=ot(a,0,_);if(A>0&&A+4<=4096){const f=a.getUint32(A,!0);f>1&&!s.has(f)&&i.push(f)}}const u=Ut(a,0);u>1&&!s.has(u)&&i.push(u)}else if(c===es||c===ts){const l=Ut(a,0);l>1&&!s.has(l)&&i.push(l)}}for(const r of n)this.driver.forceUnpinPage(r),await this.driver.freePage(r,!0)}async dropTable(t){return this.coordinator.leaseQueue.enqueue(()=>this._dropTableInternal(t),this.currentLeaseId??void 0)}async _dropTableInternal(t){var o;this.tableMetaCache.delete(t.toLowerCase()),this.tableTailPages.delete(t);const n=this.pool.getSlotDataView(0),s=xt(n,t);if(s===-1)throw new Bn(t);const i=Jt(n,s);for(let a=0;a<Je;a++){const c=gn(n,a);c&&(c.tableId===i.tableId||c.name.toLowerCase().startsWith(`idx_${t.toLowerCase()}_`)||c.name.toLowerCase()===`pk_${t.toLowerCase()}`)&&(c.rootPageId>1&&(await this.freeTableTreePages(c.rootPageId),this.indexTailPages.delete(c.rootPageId)),Mi(n,a))}i.rootPageId>1&&await this.freeTableTreePages(i.rootPageId);let r=i.colCatalogPageId;for(;r>1;){const a=await this.driver.acquirePage(r),c=this.pool.getSlotDataView(a);if(qe(c,0)===Me){this.driver.forceUnpinPage(r);break}const _=he(c,0).nextColCatalogPageId;this.driver.forceUnpinPage(r),await this.driver.freePage(r,!0),r=_}Uo(n,s),Ze(n),re(n),$t(n),this.pool.markDirty(0),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),((o=this.vmCtx.table)==null?void 0:o.name.toLowerCase())===t.toLowerCase()&&(this.vmCtx.table=null)}async renameTable(t,n){return this.coordinator.leaseQueue.enqueue(()=>this._renameTableInternal(t,n),this.currentLeaseId??void 0)}async _renameTableInternal(t,n){var l;this.validateIdentifier(n,"Table name");const s=this.pool.getSlotDataView(0),i=xt(s,t);if(i===-1)throw new Bn(t);if(t===n)return this._getTableInternal(n);if(xt(s,n)!==-1)throw new is(n);const r=Jt(s,i);r.name=n,An(s,i,r);const o=`pk_${t}`,a=`idx_${t}_`;for(let u=0;u<Je;u++){const _=gn(s,u);if(_&&_.tableId===r.tableId){let A=null;_.name===o?A=`pk_${n}`:_.name.startsWith(a)&&(A=`idx_${n}_${_.name.slice(a.length)}`),A&&A.length<=ne&&!bs(s,A)&&(_.name=A,Os(s,u,_))}}Ze(s),re(s),$t(s),this.pool.markDirty(0),this.tableMetaCache.delete(t.toLowerCase()),this.tableMetaCache.delete(n.toLowerCase());const c=this.tableTailPages.get(t);return c!==void 0&&(this.tableTailPages.delete(t),this.tableTailPages.set(n,c)),((l=this.vmCtx.table)==null?void 0:l.name.toLowerCase())===t.toLowerCase()&&(this.vmCtx.table=null),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this._getTableInternal(n)}async renameColumn(t,n,s){return this.coordinator.leaseQueue.enqueue(()=>this._renameColumnInternal(t,n,s),this.currentLeaseId??void 0)}async _renameColumnInternal(t,n,s){var g;this.validateIdentifier(s,"Column name");const i=await this._getTableInternal(t),r=i.columns.findIndex(d=>d.name===n);if(r===-1)throw new fe(n,t);if(n===s)return i;if(i.columns.some((d,I)=>I!==r&&d.name===s))throw new ss(s,t);const{pageChainIdx:o,colIdxInPage:a}=No(r);let c=i.colCatalogPageId;for(let d=0;d<o;d++){const I=await this.driver.acquirePage(c);c=he(this.pool.getSlotDataView(I),0).nextColCatalogPageId}const l=await this.driver.acquirePage(c),u=this.pool.getSlotDataView(l),_={...i.columns[r],name:s};Gi(u,0,a,_);const A=Ge(this.pool.getPageBytesInSlot(l));u.setUint32(12,A,!0),this.pool.markDirty(l);const f=this.pool.getSlotDataView(0);return Ze(f),re(f),$t(f),this.pool.markDirty(0),this.tableMetaCache.delete(t.toLowerCase()),((g=this.vmCtx.table)==null?void 0:g.name.toLowerCase())===t.toLowerCase()&&(this.vmCtx.table=null),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this._getTableInternal(t)}async addColumn(t,n,s){this.validateIdentifier(n.name,"Column name");const i=(s==null?void 0:s.defaultValue)!==void 0?s.defaultValue:n.defaultValue!==void 0?n.defaultValue:null;return this._executeTableRebuildAtomic(t,r=>{var _,A,f;if(r.columns.some(g=>g.name===n.name))throw new ss(n.name,t);if(r.columns.length+1>ue)throw new Ln(r.columns.length+1,ue);const o=typeof n.flags=="number"?n.flags:0,a=!!n.primaryKey||!!((_=n.flags)!=null&&_.primaryKey)||(o&tt.PRIMARY_KEY)!==0,c=!!n.autoInc||!!((A=n.flags)!=null&&A.autoInc)||(o&tt.AUTO_INC)!==0,l=!!n.indexed||!!((f=n.flags)!=null&&f.indexed)||(o&tt.INDEXED)!==0;if(a&&r.columns.some(g=>(g.flags&tt.PRIMARY_KEY)!==0))throw new Error(`Cannot add a PRIMARY KEY column "${n.name}" to table "${t}" because it already has a primary key`);return{newColumns:[...r.columns.map(g=>({name:g.name,type:g.type,flags:{primaryKey:(g.flags&tt.PRIMARY_KEY)!==0,notNull:(g.flags&tt.NOT_NULL)!==0,indexed:(g.flags&tt.INDEXED)!==0,autoInc:(g.flags&tt.AUTO_INC)!==0}})),n],transformRow:g=>{const d={...g};return(!c||i!==null)&&(d[n.name]=i),d},keepIndex:()=>!0,newAutoIndexCol:l&&!a?n.name:void 0}})}async dropColumn(t,n){return this.validateIdentifier(n,"Column name"),this._executeTableRebuildAtomic(t,s=>{const i=s.columns.findIndex(a=>a.name===n);if(i===-1)throw new fe(n,t);if(s.columns.length<=1)throw new Ai(`Cannot drop column "${n}" from table "${t}": table must have at least one column`);if(s.columns[i].flags&tt.PRIMARY_KEY)throw new Ai(`Cannot drop PRIMARY KEY column "${n}" from table "${t}"`);return{newColumns:s.columns.filter(a=>a.name!==n).map(a=>({name:a.name,type:a.type,flags:{primaryKey:(a.flags&tt.PRIMARY_KEY)!==0,notNull:(a.flags&tt.NOT_NULL)!==0,indexed:(a.flags&tt.INDEXED)!==0,autoInc:(a.flags&tt.AUTO_INC)!==0}})),transformRow:a=>{const c={...a};return delete c[n],c},keepIndex:a=>!a.includes(n)}})}async alterTable(t,n){switch(n.type){case"renameTable":return this.renameTable(t,n.newName);case"renameColumn":return this.renameColumn(t,n.from,n.to);case"addColumn":return this.addColumn(t,n.column,{defaultValue:n.defaultValue});case"dropColumn":return this.dropColumn(t,n.column);default:throw new Error(`Unsupported alterTable operation: ${n==null?void 0:n.type}`)}}async _executeTableRebuildAtomic(t,n){return this.coordinator.isInTransaction()?this.coordinator.leaseQueue.enqueue(async()=>{const s=await this.coordinator.captureSavepoint();try{return await this._rebuildTableSchemaInternal(t,n)}catch(i){throw this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await this.coordinator.restoreSavepoint(s),i}},this.currentLeaseId??void 0):this.transaction(s=>s._rebuildTableSchemaInternal(t,n))}async _rebuildTableSchemaInternal(t,n){const s=await this._getTableInternal(t),{newColumns:i,transformRow:r,keepIndex:o,newAutoIndexCol:a}=n(s),c=[];let l=s.rootPageId;for(;l!==0;){let d=await this.driver.acquirePage(l),I=this.pool.getSlotDataView(d);const p=ut(I,0),y=Ut(I,0);for(let T=0;T<p;T++){d=await this.driver.acquirePage(l),I=this.pool.getSlotDataView(d);const N=ot(I,0,T),B=xe(s.columns,I,N);B&&c.push(r(B))}l=y}const u=s.autoIncNext,_=this.pool.getSlotDataView(0),A=Ae(_,s.tableId),f=[];for(const d of A){if(d.flags&It.PRIMARY)continue;const I=d.columnIndices.slice(0,d.columnCount).map(p=>{var y;return(y=s.columns[p])==null?void 0:y.name}).filter(p=>typeof p=="string");I.length===d.columnCount&&o(I)&&f.push({name:d.name,colNames:I,unique:(d.flags&It.UNIQUE)!==0})}await this._dropTableInternal(t),await this._createTableInternal(t,i);for(const d of f)await this._createIndexInternal(t,d.colNames,{name:d.name,unique:d.unique});a&&!f.some(d=>d.colNames.length===1&&d.colNames[0]===a)&&await this._createIndexInternal(t,a),c.length>0&&await this._insertManyInternal(t,c,!1);const g=xt(_,t);if(g!==-1){const d=Jt(_,g);u>d.autoIncNext&&(d.autoIncNext=u,An(_,g,d),$t(_),this.pool.markDirty(0))}return this.tableMetaCache.delete(t.toLowerCase()),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this._getTableInternal(t)}async createIndex(t,n,s){return this.coordinator.leaseQueue.enqueue(()=>this._createIndexInternal(t,n,s),this.currentLeaseId??void 0)}async _createIndexInternal(t,n,s){const i=await this._getTableInternal(t),r=Array.isArray(n)?n:[n];if(r.length===0)throw new Error(`At least one column must be specified for createIndex on table "${t}"`);if(r.length>8)throw new Error(`Maximum 8 columns allowed per index (requested ${r.length})`);const o=[];for(const B of r){const P=i.columns.findIndex(F=>F.name===B);if(P===-1)throw new fe(B,t);o.push(P)}const a=(s==null?void 0:s.name)??`idx_${t}_${r.join("_")}`,c=this.pool.getSlotDataView(0);if(bs(c,a)!==null)throw new hi(a);const _=Ae(c,i.tableId).find(B=>{if(B.columnCount!==o.length)return!1;for(let P=0;P<B.columnCount;P++)if(B.columnIndices[P]!==o[P])return!1;return!0});if(_)throw new hi(_.name||a);const A=Ns(c);if(A===-1)throw new Fr(Je,Je);const f=await this.driver.allocateAndPinPage(),g=this.pool.getResidentSlot(f),d=this.pool.getSlotDataView(g);ys(d,0,0),this.pool.markDirty(g),this.pool.unpinSlot(g);const I=!!(s!=null&&s.unique);let p=i.rootPageId;for(;p!==0;){let B=await this.driver.acquirePage(p),P=this.pool.getSlotDataView(B);const F=ut(P,0),w=Ut(P,0);for(let S=0;S<F;S++){B=await this.driver.acquirePage(p),P=this.pool.getSlotDataView(B);const v=ot(P,0,S),L=xe(i.columns,P,v);if(L){const h=BigInt(p)<<16n|BigInt(S),{keyVal:b,keyType:k}=this.extractIndexKey(i.columns,{columnCount:o.length,columnIndices:o},L);if(b!=null){if(I&&await this.probeIndexUnique(f,k,b))throw await this.freeTableTreePages(f),this.indexTailPages.delete(f),new tn(`Duplicate key value violates unique constraint "${a}" on table "${t}"`);await this.insertIntoIndex(f,k,b,h)}}}p=w}const y=[0,0,0,0,0,0,0,0],T=[0,0,0,0,0,0,0,0];for(let B=0;B<o.length&&B<8;B++)y[B]=o[B];const N=I?It.UNIQUE:0;Os(c,A,{indexId:A+1,tableId:i.tableId,rootPageId:f,columnCount:o.length,flags:N,columnIndices:y,colDirections:T,name:a}),Ze(c),re(c),$t(c),this.pool.markDirty(0),this.tableMetaCache.delete(t.toLowerCase()),this.indexTailPages.delete(f),this.coordinator.isInTransaction()||await this.driver.flushAllDirty()}async dropIndex(t){return this.coordinator.leaseQueue.enqueue(()=>this._dropIndexInternal(t),this.currentLeaseId??void 0)}async _dropIndexInternal(t){const n=this.pool.getSlotDataView(0),s=bs(n,t);if(!s)throw new Rr(t);s.desc.rootPageId>1&&(await this.freeTableTreePages(s.desc.rootPageId),this.indexTailPages.delete(s.desc.rootPageId)),Mi(n,s.slotIdx),Ze(n),re(n),$t(n),this.pool.markDirty(0),this.tableMetaCache.clear(),this.indexTailPages.clear(),this.coordinator.isInTransaction()||await this.driver.flushAllDirty()}async listIndexes(t){return this.coordinator.leaseQueue.enqueue(async()=>{const n=this.pool.getSlotDataView(0);if(t){const i=await this._getTableInternal(t);return Ae(n,i.tableId)}const s=[];for(let i=0;i<Je;i++){const r=gn(n,i);r&&s.push(r)}return s},this.currentLeaseId??void 0)}extractIndexKey(t,n,s){if(n.columnCount===1){const i=t[n.columnIndices[0]];return{keyVal:s[i.name],keyType:i.type}}return{keyVal:Cs(t,n.columnIndices,n.columnCount,s),keyType:C.BLOB}}async probeIndexUnique(t,n,s,i){let r=t;for(;r!==0;){const o=await this.driver.acquirePage(r),a=this.pool.getSlotDataView(o);if(ut(a,0)>0){const l=vn(a,0,n,s);if(l.found){const u=ot(a,0,l.slot_idx),_=a.getUint16(u,!0),A=a.getBigInt64(u+2+_,!0);if(!i||!i.has(A))return!0}}r=Ut(a,0)}return!1}async deleteFromIndex(t,n,s,i){let r=t;for(;r!==0;){const o=await this.driver.acquirePage(r),a=this.pool.getSlotDataView(o);if(ut(a,0)>0){const l=vn(a,0,n,s,i);if(l.found)return so(a,0,l.slot_idx),this.pool.markDirty(o),!0}r=Ut(a,0)}return!1}async insertIntoIndex(t,n,s,i){let r=this.indexTailPages.get(t)??t,o=await this.driver.acquirePage(r),a=this.pool.getSlotDataView(o);for(;;){const l=Ut(a,0);if(l===0)break;r=l,o=await this.driver.acquirePage(r),a=this.pool.getSlotDataView(o)}this.indexTailPages.set(t,r);let c=Pi(a,0,n,s,i,this.pool.pageScratchpadOffset);if(c===-1){this.pool.pinSlot(o);try{const l=await this.driver.allocateAndPinPage(),u=this.pool.getResidentSlot(l);try{ds(a,0,l),this.pool.markDirty(o);const _=this.pool.getSlotDataView(u);if(ys(_,0,0),c=Pi(_,0,n,s,i,this.pool.pageScratchpadOffset),c===-1)throw new Error("Unexpected error: index entry does not fit in empty page");this.pool.markDirty(u),this.indexTailPages.set(t,l)}finally{this.pool.unpinSlot(u)}}finally{this.pool.unpinSlot(o)}}else this.pool.markDirty(o)}cloneRow(t){const n={};for(const[s,i]of Object.entries(t))n[s]=i instanceof Uint8Array?i.slice():i;return n}valuesEqual(t,n){if(t===n||t==null&&n==null)return!0;if(t instanceof Uint8Array&&n instanceof Uint8Array){if(t.byteLength!==n.byteLength)return!1;for(let s=0;s<t.byteLength;s++)if(t[s]!==n[s])return!1;return!0}return typeof t=="number"&&typeof n=="bigint"||typeof t=="bigint"&&typeof n=="number"?BigInt(t)===BigInt(n):typeof t=="boolean"&&typeof n=="number"||typeof t=="number"&&typeof n=="boolean"?Number(t)===Number(n):!1}extractPrimaryKey(t,n){const s=t.columns.filter(i=>(i.flags&tt.PRIMARY_KEY)!==0);return s.length===1?n[s[0].name]??null:s.length>1?s.map(i=>n[i.name]??null):t.columns.length===1?n[t.columns[0].name]??null:t.columns.map(i=>n[i.name]??null)}serializePkKey(t){const n=s=>s==null?"null":s instanceof Uint8Array?`b:${Array.from(s).join(",")}`:`${typeof s}:${String(s)}`;return Array.isArray(t)?`[${t.map(n).join("|")}]`:t!==null&&typeof t=="object"&&!(t instanceof Uint8Array)?`{${Object.keys(t).sort().map(i=>`${i}:${n(t[i])}`).join("|")}}`:n(t)}buildChangeset(t,n,s,i){const{changeCounter:r,schemaVersion:o}=this.getSyncState(),a=Array.from(new Set(i.map(c=>c.table)));return{txId:t,origin:n,meta:s,changeCounter:r,schemaVersion:o,tables:a,changes:i,coalesced:()=>{const c=new Map;for(const l of i){const u=`${l.table.toLowerCase()}::${this.serializePkKey(l.pk)}`,_=c.get(u);if(!_){c.set(u,{table:l.table,op:l.op,pk:Array.isArray(l.pk)?[...l.pk]:l.pk,oldRow:l.oldRow?this.cloneRow(l.oldRow):void 0,newRow:l.newRow?this.cloneRow(l.newRow):void 0,changedColumns:l.changedColumns?[...l.changedColumns]:void 0});continue}if(_.op==="insert"&&l.op==="update")c.set(u,{table:l.table,op:"insert",pk:Array.isArray(l.pk)?[...l.pk]:l.pk,newRow:l.newRow?this.cloneRow(l.newRow):_.newRow});else if(_.op==="insert"&&l.op==="delete")c.delete(u);else if(_.op==="update"&&l.op==="update"){const A=_.oldRow,f=l.newRow?this.cloneRow(l.newRow):_.newRow,g=Object.keys(f).filter(d=>!this.valuesEqual(A[d],f[d]));c.set(u,{table:l.table,op:"update",pk:Array.isArray(l.pk)?[...l.pk]:l.pk,oldRow:A,newRow:f,changedColumns:g})}else if(_.op==="update"&&l.op==="delete")c.set(u,{table:l.table,op:"delete",pk:Array.isArray(_.pk)?[..._.pk]:_.pk,oldRow:_.oldRow});else if(_.op==="delete"&&l.op==="insert"){const A=_.oldRow,f=l.newRow?this.cloneRow(l.newRow):{},g=Object.keys(f).filter(d=>!this.valuesEqual(A[d],f[d]));c.set(u,{table:l.table,op:"update",pk:Array.isArray(l.pk)?[...l.pk]:l.pk,oldRow:A,newRow:f,changedColumns:g})}else c.set(u,{table:l.table,op:l.op,pk:Array.isArray(l.pk)?[...l.pk]:l.pk,oldRow:l.oldRow?this.cloneRow(l.oldRow):void 0,newRow:l.newRow?this.cloneRow(l.newRow):void 0,changedColumns:l.changedColumns?[...l.changedColumns]:void 0})}return Array.from(c.values())}}}notifySubscriptions(t){if(t.tables.length===0||this.subscriptions.size===0)return;const n=new Set(t.tables.map(s=>s.toLowerCase()));for(const s of this.subscriptions)if(s.tables==="*")s.callback(t);else for(const i of n)if(s.tables.has(i)){s.callback(t);break}}emitCommitAndSubscriptions(t){if(t.changes.length===0)return;for(const r of this.commitHooks)r(t);const n=t.tables,{changeCounter:s,schemaVersion:i}=t;if(this.notifySubscriptions({tables:n,origin:t.origin,meta:t.meta,changeCounter:s,schemaVersion:i,crossTab:!1,changeset:t}),this.broadcastChannel)try{this.broadcastChannel.postMessage({senderId:this.instanceId,tables:n,origin:t.origin,meta:t.meta,changeCounter:s,schemaVersion:i})}catch{}}onBeforeCommit(t){return this.beforeCommitHooks.add(t),()=>{this.beforeCommitHooks.delete(t)}}onCommit(t){return this.commitHooks.add(t),()=>{this.commitHooks.delete(t)}}subscribe(t,n){const s={tables:t==="*"?"*":new Set((Array.isArray(t)?t:[t]).map(i=>i.toLowerCase())),callback:n};return this.subscriptions.add(s),()=>{this.subscriptions.delete(s)}}getSyncState(){const t=this.pool.getSlotDataView(0),n=qn(t,!1);return{changeCounter:n.changeCounter,schemaVersion:n.schemaVersion}}validateFilterColumns(t,n){const s=new Set(t.columns.map(o=>o.name)),i=o=>{if(o){if(o.type==="col"&&o.name!=="*"){if(!s.has(o.name))throw new fe(o.name,t.name)}else if(o.type==="binary")i(o.left),i(o.right);else if(o.type==="fn"&&Array.isArray(o.args))for(const a of o.args)i(a)}},r=o=>{if(o.colName&&!s.has(o.colName))throw new fe(o.colName,t.name);if(o.expr&&i(o.expr),o.child&&r(o.child),o.children)for(const a of o.children)r(a)};for(const o of n)r(o)}matchesFilter(t,n,s){switch(s.type){case"and":return(s.children??[]).every(i=>this.matchesFilter(t,n,i));case"or":return(s.children??[]).some(i=>this.matchesFilter(t,n,i));case"not":return s.child?!this.matchesFilter(t,n,s.child):!0;case"null":{const i=s.expr?vt(s.expr,n,o=>{var a;return(a=this.getUdf(o))==null?void 0:a.def.call}):n[s.colName],r=i==null;return s.isNull?r:!r}case"in":{const i=s.expr?vt(s.expr,n,a=>{var c;return(c=this.getUdf(a))==null?void 0:c.def.call}):n[s.colName];if(i==null)return!1;const o=(s.values??[]).some(a=>this.valuesEqual(i,a));return s.notIn?!o:o}case"expr":{if(!s.expr)return!0;const i=vt(s.expr,n,r=>{var o;return(o=this.getUdf(r))==null?void 0:o.def.call});return!!i&&i!==0}case"cmp":{const i=s.expr?vt(s.expr,n,a=>{var c;return(c=this.getUdf(a))==null?void 0:c.def.call}):n[s.colName],r=s.value;if(i==null||r===null||r===void 0)return!1;switch(String(s.op??"=").trim().toLowerCase().replace(/\s+/g," ")){case"=":case"==":return this.valuesEqual(i,r);case"!=":case"<>":return!this.valuesEqual(i,r);case"<":return typeof i=="string"&&typeof r=="string"?i<r:Number(i)<Number(r);case"<=":return typeof i=="string"&&typeof r=="string"?i<=r:Number(i)<=Number(r);case">":return typeof i=="string"&&typeof r=="string"?i>r:Number(i)>Number(r);case">=":return typeof i=="string"&&typeof r=="string"?i>=r:Number(i)>=Number(r);case"like":return Xe(String(i),String(r));case"not like":return!Xe(String(i),String(r));case"contains":return String(i).includes(String(r));case"starts_with":return String(i).startsWith(String(r));case"ends_with":return String(i).endsWith(String(r));default:return this.valuesEqual(i,r)}}default:return!0}}matchesFilters(t,n,s){for(const i of s)if(!this.matchesFilter(t,n,i))return!1;return!0}async deleteCellsOnDataPageAndShiftIndexes(t,n,s,i,r){if(i.length===0)return;const o=new Set(i);if(n.length>0){for(const u of i){const _=r[u];if(!_)continue;const A=BigInt(s)<<16n|BigInt(u);for(const f of n){const{keyVal:g,keyType:d}=this.extractIndexKey(t.columns,f,_.row);g!=null&&await this.deleteFromIndex(f.rootPageId,d,g,A)}}let l=0;for(let u=0;u<r.length;u++)if(!o.has(u)){if(l!==u){const _=r[u].row,A=BigInt(s)<<16n|BigInt(u),f=BigInt(s)<<16n|BigInt(l);for(const g of n){const{keyVal:d,keyType:I}=this.extractIndexKey(t.columns,g,_);d!=null&&(await this.deleteFromIndex(g.rootPageId,I,d,A),await this.insertIntoIndex(g.rootPageId,I,d,f))}}l++}}const a=await this.driver.acquirePage(s),c=this.pool.getSlotDataView(a);for(let l=i.length-1;l>=0;l--)zr(c,0,i[l]);this.pool.markDirty(a)}normalizeWhereOrPkFilters(t,n){if(n!==null&&typeof n=="object"&&!(n instanceof Uint8Array)){const i=[];for(const[r,o]of Object.entries(n))o!==void 0&&(o===null?i.push({type:"null",colName:r,isNull:!0}):i.push({type:"cmp",colName:r,op:"=",value:o}));return i}const s=t.columns.find(i=>(i.flags&tt.PRIMARY_KEY)!==0);if(!s)throw new Error(`Table "${t.name}" does not have a primary key column for scalar lookup`);return[{type:"cmp",colName:s.name,op:"=",value:n}]}async insert(t,n,s){await this.insertMany(t,[n],s)}async insertMany(t,n,s){if(!(!n||n.length===0)){if(!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0){await this.transaction(async i=>{await i._insertManyInternal(t,n,!0)},s);return}return this.coordinator.leaseQueue.enqueue(async()=>{const i=this.coordinator.isInTransaction(),r=await this._insertManyInternal(t,n,!0);if(!i&&r.length>0){const o=this.buildChangeset(this.nextAutoTxId++,(s==null?void 0:s.origin)??"local",s==null?void 0:s.meta,r);this.emitCommitAndSubscriptions(o)}},this.currentLeaseId??void 0)}}async _insertManyInternal(t,n,s=!0){if(!n||n.length===0)return[];const i=await this._getTableInternal(t),r=this.pool.getSlotDataView(0),o=Ae(r,i.tableId),a=o.filter(p=>(p.flags&(It.UNIQUE|It.PRIMARY))!==0),c=i.columns.find(p=>(p.flags&tt.AUTO_INC)!==0),l=new Map;for(const p of a)l.set(p.name,new Set);let u=i.autoIncNext;const _=[];for(let p=0;p<n.length;p++){const y=n[p];for(const P of i.columns)if(P.flags&tt.PRIMARY_KEY&&!(P.flags&tt.AUTO_INC)&&(y[P.name]===void 0||y[P.name]===null))throw new ns(P.name,t);let T,N={};for(const P of i.columns)y[P.name]!==void 0?N[P.name]=y[P.name]:N[P.name]=null;c&&(y[c.name]===void 0||y[c.name]===null)&&(T=Number(u),u+=1n,N[c.name]=T);for(const P of a){const{keyVal:F,keyType:w}=this.extractIndexKey(i.columns,P,N);if(F!=null){const S=F instanceof Uint8Array?Array.from(F).join(","):F,v=l.get(P.name);if(v.has(S))throw new tn(`Duplicate key value violates unique constraint "${P.name}" on table "${t}"`);if(v.add(S),await this.probeIndexUnique(P.rootPageId,w,F))throw new tn(`Duplicate key value violates unique constraint "${P.name}" on table "${t}"`)}}const B=Is(i.columns,N);_.push({row:y,effectiveRow:N,rowBytes:B,assignedAutoInc:T})}i.autoIncNext=u;let A=this.tableTailPages.get(t)??i.rootPageId,f=await this.driver.acquirePage(A),g=this.pool.getSlotDataView(f);for(;;){const p=Ut(g,0);if(p===0)break;A=p,f=await this.driver.acquirePage(A),g=this.pool.getSlotDataView(f)}this.tableTailPages.set(t,A);const d=[];for(let p=0;p<_.length;p++){const{row:y,effectiveRow:T,rowBytes:N,assignedAutoInc:B}=_[p];c&&B!==void 0&&(y[c.name]=B),f=await this.driver.acquirePage(A),g=this.pool.getSlotDataView(f);let P=A,F=an(g,0,N,this.pool.pageScratchpadOffset);if(F===-1){const S=f;this.pool.pinSlot(S);try{const v=await this.driver.allocateAndPinPage(),L=this.pool.getResidentSlot(v);try{ds(g,0,v),this.pool.markDirty(S);const h=this.pool.getSlotDataView(L);if(F=an(h,0,N,this.pool.pageScratchpadOffset),F===-1)throw new Error("Unexpected error: row does not fit in empty page");this.pool.markDirty(L),A=v,P=v,f=L,g=h,this.tableTailPages.set(t,v)}finally{this.pool.unpinSlot(L)}}finally{this.pool.unpinSlot(S)}}else this.pool.markDirty(f);const w=BigInt(P)<<16n|BigInt(F);for(const S of o){const{keyVal:v,keyType:L}=this.extractIndexKey(i.columns,S,T);v!=null&&await this.insertIntoIndex(S.rootPageId,L,v,w)}if(s){const S={table:i.name,op:"insert",pk:this.extractPrimaryKey(i,T),newRow:this.cloneRow(T)};d.push(S),this.coordinator.isInTransaction()&&this.activeTxChanges.push(S)}}const I=xt(r,t);if(I!==-1){const p=Jt(r,I);p.rowCountEstimate+=n.length,c&&(p.autoIncNext=i.autoIncNext),An(r,I,p),re(r),$t(r),this.pool.markDirty(0)}return this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),d}async update(t,n,s,i){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(r=>r.update(t,n,s,i),i):this.coordinator.leaseQueue.enqueue(async()=>{const r=await this._getTableInternal(t),o=this.normalizeWhereOrPkFilters(r,n),a=this.coordinator.isInTransaction(),{count:c,changes:l}=await this._executeUpdateInternal(t,o,s);if(!a&&l.length>0){const u=this.buildChangeset(this.nextAutoTxId++,(i==null?void 0:i.origin)??"local",i==null?void 0:i.meta,l);this.emitCommitAndSubscriptions(u)}return c},this.currentLeaseId??void 0)}async executeUpdate(t,n,s,i){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(r=>r.executeUpdate(t,n,s,i),i):this.coordinator.leaseQueue.enqueue(async()=>{const r=this.coordinator.isInTransaction(),{count:o,changes:a}=await this._executeUpdateInternal(t,n,s);if(!r&&a.length>0){const c=this.buildChangeset(this.nextAutoTxId++,(i==null?void 0:i.origin)??"local",i==null?void 0:i.meta,a);this.emitCommitAndSubscriptions(c)}return o},this.currentLeaseId??void 0)}async _executeUpdateInternal(t,n,s){const i=await this._getTableInternal(t);this.validateFilterColumns(i,n);const r=new Map(i.columns.map(d=>[d.name,d]));for(const d of Object.keys(s))if(!r.has(d))throw new fe(d,t);const o=this.pool.getSlotDataView(0),a=Ae(o,i.tableId),c=a.filter(d=>(d.flags&(It.UNIQUE|It.PRIMARY))!==0),l=[],u=new Set;let _=0,A=i.rootPageId;for(;A!==0;){const d=await this.driver.acquirePage(A),I=this.pool.getSlotDataView(d),p=ut(I,0),y=Ut(I,0),T=[],N=[];for(let B=0;B<p;B++){const P=ot(I,0,B),F=xe(i.columns,I,P);if(T.push({cellIdx:B,row:F}),this.matchesFilters(i,F,n)){const w={...F};for(const[L,h]of Object.entries(s))h!==void 0&&(w[L]=h);for(const L of i.columns)if(L.flags&tt.PRIMARY_KEY&&(w[L.name]===null||w[L.name]===void 0))throw new ns(L.name,t);const S=i.columns.map(L=>L.name).filter(L=>!this.valuesEqual(F[L],w[L])),v=Is(i.columns,w);N.push({cellIdx:B,oldRow:F,newRow:w,changedColumns:S,newRowBytes:v}),u.add(BigInt(A)<<16n|BigInt(B)),_++}}N.length>0&&l.push({pageId:A,allCells:T,matches:N}),A=y}if(_===0)return{count:0,changes:[]};for(const d of c){const I=new Set;for(const p of l)for(const y of p.matches){const{keyVal:T,keyType:N}=this.extractIndexKey(i.columns,d,y.newRow);if(T!=null){const B=T instanceof Uint8Array?Array.from(T).join(","):T;if(I.has(B))throw new tn(`Duplicate key value violates unique constraint "${d.name}" on table "${t}"`);if(I.add(B),await this.probeIndexUnique(d.rootPageId,N,T,u))throw new tn(`Duplicate key value violates unique constraint "${d.name}" on table "${t}"`)}}}const f=[],g=[];for(const d of l){const I=[];for(const p of d.matches){const y=await this.driver.acquirePage(d.pageId),T=this.pool.getSlotDataView(y);if(Ui(T,0,p.cellIdx,p.newRowBytes,this.pool.pageScratchpadOffset)){this.pool.markDirty(y),d.allCells[p.cellIdx].row=p.newRow;const B=BigInt(d.pageId)<<16n|BigInt(p.cellIdx);for(const F of a){const w=this.extractIndexKey(i.columns,F,p.oldRow),S=this.extractIndexKey(i.columns,F,p.newRow);this.valuesEqual(w.keyVal,S.keyVal)||(w.keyVal!==void 0&&w.keyVal!==null&&await this.deleteFromIndex(F.rootPageId,w.keyType,w.keyVal,B),S.keyVal!==void 0&&S.keyVal!==null&&await this.insertIntoIndex(F.rootPageId,S.keyType,S.keyVal,B))}const P={table:i.name,op:"update",pk:this.extractPrimaryKey(i,p.newRow),oldRow:this.cloneRow(p.oldRow),newRow:this.cloneRow(p.newRow),changedColumns:p.changedColumns};f.push(P),this.coordinator.isInTransaction()&&this.activeTxChanges.push(P)}else I.push(p.cellIdx),g.push(p)}I.length>0&&await this.deleteCellsOnDataPageAndShiftIndexes(i,a,d.pageId,I,d.allCells)}if(g.length>0){let d=this.tableTailPages.get(t)??i.rootPageId,I=await this.driver.acquirePage(d),p=this.pool.getSlotDataView(I);for(;;){const y=Ut(p,0);if(y===0)break;d=y,I=await this.driver.acquirePage(d),p=this.pool.getSlotDataView(I)}this.tableTailPages.set(t,d);for(const y of g){I=await this.driver.acquirePage(d),p=this.pool.getSlotDataView(I);let T=d,N=an(p,0,y.newRowBytes,this.pool.pageScratchpadOffset);if(N===-1){const F=I;this.pool.pinSlot(F);try{const w=await this.driver.allocateAndPinPage(),S=this.pool.getResidentSlot(w);try{ds(p,0,w),this.pool.markDirty(F);const v=this.pool.getSlotDataView(S);N=an(v,0,y.newRowBytes,this.pool.pageScratchpadOffset),this.pool.markDirty(S),d=w,T=w,this.tableTailPages.set(t,w)}finally{this.pool.unpinSlot(S)}}finally{this.pool.unpinSlot(F)}}else this.pool.markDirty(I);const B=BigInt(T)<<16n|BigInt(N);for(const F of a){const{keyVal:w,keyType:S}=this.extractIndexKey(i.columns,F,y.newRow);w!=null&&await this.insertIntoIndex(F.rootPageId,S,w,B)}const P={table:i.name,op:"update",pk:this.extractPrimaryKey(i,y.newRow),oldRow:this.cloneRow(y.oldRow),newRow:this.cloneRow(y.newRow),changedColumns:y.changedColumns};f.push(P),this.coordinator.isInTransaction()&&this.activeTxChanges.push(P)}}return re(o),$t(o),this.pool.markDirty(0),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),{count:_,changes:f}}async delete(t,n,s){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(i=>i.delete(t,n,s),s):this.coordinator.leaseQueue.enqueue(async()=>{const i=await this._getTableInternal(t),r=this.normalizeWhereOrPkFilters(i,n),o=this.coordinator.isInTransaction(),{count:a,changes:c}=await this._executeDeleteInternal(t,r);if(!o&&c.length>0){const l=this.buildChangeset(this.nextAutoTxId++,(s==null?void 0:s.origin)??"local",s==null?void 0:s.meta,c);this.emitCommitAndSubscriptions(l)}return a},this.currentLeaseId??void 0)}async executeDelete(t,n,s){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(i=>i.executeDelete(t,n,s),s):this.coordinator.leaseQueue.enqueue(async()=>{const i=this.coordinator.isInTransaction(),{count:r,changes:o}=await this._executeDeleteInternal(t,n);if(!i&&o.length>0){const a=this.buildChangeset(this.nextAutoTxId++,(s==null?void 0:s.origin)??"local",s==null?void 0:s.meta,o);this.emitCommitAndSubscriptions(a)}return r},this.currentLeaseId??void 0)}async _executeDeleteInternal(t,n){const s=await this._getTableInternal(t);this.validateFilterColumns(s,n);const i=this.pool.getSlotDataView(0),r=Ae(i,s.tableId),o=[];let a=0,c=s.rootPageId;for(;c!==0;){const u=await this.driver.acquirePage(c),_=this.pool.getSlotDataView(u),A=ut(_,0),f=Ut(_,0);if(A>0){const g=[],d=[];for(let I=0;I<A;I++){const p=ot(_,0,I),y=xe(s.columns,_,p);if(g.push({cellIdx:I,row:y}),this.matchesFilters(s,y,n)){d.push(I);const T={table:s.name,op:"delete",pk:this.extractPrimaryKey(s,y),oldRow:this.cloneRow(y)};o.push(T),this.coordinator.isInTransaction()&&this.activeTxChanges.push(T)}}d.length>0&&(a+=d.length,await this.deleteCellsOnDataPageAndShiftIndexes(s,r,c,d,g))}c=f}if(a===0)return{count:0,changes:[]};const l=xt(i,t);if(l!==-1){const u=Jt(i,l);u.rowCountEstimate=Math.max(0,u.rowCountEstimate-a),An(i,l,u)}return re(i),$t(i),this.pool.markDirty(0),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),{count:a,changes:o}}async upsert(t,n,s){const i=await this.upsertMany(t,[n],s);return i.inserted>0?"inserted":i.updated>0?"updated":"ignored"}async upsertMany(t,n,s){return!n||n.length===0?{inserted:0,updated:0,ignored:0}:!this.coordinator.isInTransaction()&&(this.beforeCommitHooks.size>0||n.length>1)?this.transaction(i=>i._upsertManyInLease(t,n,s),s):this.coordinator.leaseQueue.enqueue(async()=>{const i=this.coordinator.isInTransaction(),r=[],o=await this._upsertManyInLease(t,n,s,i?void 0:r);if(!i&&r.length>0){const a=this.buildChangeset(this.nextAutoTxId++,(s==null?void 0:s.origin)??"local",s==null?void 0:s.meta,r);this.emitCommitAndSubscriptions(a)}return o},this.currentLeaseId??void 0)}async _upsertManyInLease(t,n,s,i){const r=await this._getTableInternal(t),o=new Set(r.columns.map(A=>A.name));let a;if(s!=null&&s.conflictTarget){a=Array.isArray(s.conflictTarget)?s.conflictTarget:[s.conflictTarget];for(const A of a)if(!o.has(A))throw new fe(A,t)}else if(a=r.columns.filter(A=>(A.flags&tt.PRIMARY_KEY)!==0).map(A=>A.name),a.length===0)throw new Error(`Cannot upsert on table "${t}" without a primary key or explicit conflictTarget`);const c=(s==null?void 0:s.mode)??"merge";let l=0,u=0,_=0;for(const A of n){for(const I of Object.keys(A))if(!o.has(I))throw new fe(I,t);const f=a.every(I=>A[I]!==void 0&&A[I]!==null);let g=null,d=[];if(f&&(d=a.map(I=>({type:"cmp",colName:I,op:"=",value:A[I]})),g=await this.findFirstMatchingRow(r,d)),g){if(c==="ignore"){_++;continue}if(s!=null&&s.where&&!s.where(this.cloneRow(g),this.cloneRow(A))){_++;continue}const I={};if(c==="replace")for(const y of r.columns)A[y.name]!==void 0?I[y.name]=A[y.name]:y.flags&tt.PRIMARY_KEY?I[y.name]=g[y.name]:I[y.name]=null;else for(const[y,T]of Object.entries(A))T!==void 0&&(I[y]=T);const{changes:p}=await this._executeUpdateInternal(t,d,I);i&&i.push(...p),u++}else{const I=await this._insertManyInternal(t,[A],!0);i&&i.push(...I),l++}}return{inserted:l,updated:u,ignored:_}}async findFirstMatchingRow(t,n){let s=t.rootPageId;for(;s!==0;){const i=await this.driver.acquirePage(s),r=this.pool.getSlotDataView(i),o=ut(r,0),a=Ut(r,0);for(let c=0;c<o;c++){const l=ot(r,0,c),u=xe(t.columns,r,l);if(this.matchesFilters(t,u,n))return u}s=a}return null}async transaction(t,n){const s=await this.coordinator.begin(),i=s.leaseId;this.activeTxChanges=[],this.activeTxOrigin=(n==null?void 0:n.origin)??"local",this.activeTxMeta=n==null?void 0:n.meta,this.activeTxId=s.txId;const r=new Proxy(this,{get:(o,a,c)=>{if(a==="currentLeaseId")return i;if(a==="transaction")return async(u,_)=>{const A=await this.coordinator.captureSavepoint(),f=this.activeTxChanges.length;try{return await u(r)}catch(g){throw this.activeTxChanges.length=f,this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await this.coordinator.restoreSavepoint(A),g}};if(a==="checkpoint")return()=>this.checkpoint();if(a==="from")return u=>{const _=new Lt(r,u);return o.planner&&_.withPlanner(o.planner),_};const l=Reflect.get(o,a,c);return typeof l=="function"?l.bind(r):l}});try{const o=await t(r);if(this.activeTxChanges.length>0&&this.beforeCommitHooks.size>0&&!this.isRunningBeforeCommit){const _=this.buildChangeset(this.activeTxId,this.activeTxOrigin,this.activeTxMeta,[...this.activeTxChanges]);this.isRunningBeforeCommit=!0;try{for(const A of this.beforeCommitHooks)await A(_,r)}finally{this.isRunningBeforeCommit=!1}}const a=[...this.activeTxChanges],c=this.activeTxOrigin,l=this.activeTxMeta,u=this.activeTxId;if(this.activeTxChanges=[],this.activeTxOrigin="local",this.activeTxMeta=void 0,await this.coordinator.commit(i),a.length>0){const _=this.buildChangeset(u,c,l,a);this.emitCommitAndSubscriptions(_)}return o}catch(o){throw this.activeTxChanges=[],this.activeTxOrigin="local",this.activeTxMeta=void 0,this.isRunningBeforeCommit=!1,this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await this.coordinator.rollback(i),o}}registerFunction(t,n){const s=t.toLowerCase(),i=typeof n=="function"?{call:n}:{...n};if(!i.returnType)try{const o=i.call(1,1,1,1,1);typeof o=="number"?i.returnType=Number.isInteger(o)?C.INT32:C.FLOAT64:typeof o=="string"&&(i.returnType=C.TEXT)}catch{try{const o=i.call("","","","","");typeof o=="number"?i.returnType=Number.isInteger(o)?C.INT32:C.FLOAT64:typeof o=="string"&&(i.returnType=C.TEXT)}catch{}}let r=this.udfs.get(s);return r?r.def=i:(r={id:this.nextUdfId++,def:i},this.udfs.set(s,r)),this}getUdf(t){return this.udfs.get(t.toLowerCase())}getUdfMap(){const t=new Map;for(const[n,s]of this.udfs.entries())t.set(n,s.id);return t}getUdfDefs(){const t=new Map;for(const[n,s]of this.udfs.entries())t.set(n,s.def);return t}from(t){return new Lt(this,t)}async explainQuery(t,n,s){return this.coordinator.leaseQueue.enqueue(()=>this._explainQueryInternal(t,n,s),this.currentLeaseId??void 0)}async _explainQueryInternal(t,n,s){var I,p,y;const i=await this._getTableInternal(t),r=[];if(s!=null&&s.joins&&s.joins.length>0){if(1+s.joins.length>16)throw new rs(1+s.joins.length,16);for(let T=0;T<s.joins.length;T++){const N=s.joins[T],B=await this._getTableInternal(N.table);r.push({type:N.type,table:B,cursor:T+1,leftCol:N.leftCol,op:N.op,rightCol:N.rightCol})}}const o=er({table:i,joinedTables:r.length>0?r:void 0,filters:n,orderBy:s==null?void 0:s.orderBy,groupBy:s==null?void 0:s.groupBy,aggregates:s==null?void 0:s.aggregates,having:s==null?void 0:s.having,selectExprs:s==null?void 0:s.selectExprs,udfNameMap:this.getUdfMap(),udfDefs:this.getUdfDefs(),limit:s==null?void 0:s.limit,offset:s==null?void 0:s.offset,planner:(s==null?void 0:s.planner)??this.planner}),c=(o.allTables??(r.length>0?[i,...r.map(T=>T.table)]:[i]))[0],l=Ko(o,c),u=Jo(l),_=o.indexScan??o.table0Scan,A=_?"IndexScan":"TableScan",f=_?_.index.name:void 0,g=o.joinedTableScans,d=(I=s==null?void 0:s.joins)==null?void 0:I.map(T=>{const N=g==null?void 0:g.find(B=>B.tableName.toLowerCase()===T.table.toLowerCase());return N&&N.scanType==="IndexScan"?{...T,scanType:N.scanType,indexName:N.indexName}:T});return{plan:{table:c.name,rootPageId:c.rootPageId,scanType:A,indexName:f,filters:n,orderBy:s==null?void 0:s.orderBy,groupBy:s==null?void 0:s.groupBy,aggregates:s==null?void 0:s.aggregates,having:s==null?void 0:s.having,select:s==null?void 0:s.select,joins:d,limit:s==null?void 0:s.limit,offset:s==null?void 0:s.offset,estimatedCost:o.estimatedCost,estimatedRows:o.estimatedRows,joinOrder:o.joinOrder,isOrderSatisfied:o.isOrderSatisfied??((p=o.planMetrics)==null?void 0:p.isOrderSatisfied)??!1,sortCostAvoided:((y=o.planMetrics)==null?void 0:y.sortCostAvoided)??void 0},bytecodeSize:o.byteLength,instructions:l,assembly:u}}async executeQuery(t,n,s){return this.coordinator.leaseQueue.enqueue(()=>this._executeQueryInternal(t,n,s),this.currentLeaseId??void 0)}async _executeQueryInternal(t,n,s){var d;const i=await this._getTableInternal(t),r=[],o=[];if(s.joins&&s.joins.length>0){if(1+s.joins.length>16)throw new rs(1+s.joins.length,16);for(let I=0;I<s.joins.length;I++){const p=s.joins[I],y=await this._getTableInternal(p.table);r.push(y),o.push({type:p.type,table:y,cursor:I+1,leftCol:p.leftCol,op:p.op,rightCol:p.rightCol})}}for(const I of[i,...r]){let p=I.rootPageId;for(;p!==0;){const y=await this.driver.acquirePage(p),T=this.pool.getSlotDataView(y);p=Ut(T,0)}for(const y of I.indexes??[]){let T=y.rootPageId;for(;T!==0;){const N=await this.driver.acquirePage(T),B=this.pool.getSlotDataView(N);T=Ut(B,0)}}}let a=s.orderBy;!a&&s.sortCol&&(a=[{colName:s.sortCol,direction:s.sortDir}]);const c={table:i,joinedTables:o.length>0?o:void 0,filters:n,orderBy:a,groupBy:s.groupBy,aggregates:s.aggregates,having:s.having,selectExprs:s.selectExprs,udfNameMap:this.getUdfMap(),udfDefs:this.getUdfDefs(),limit:s.limit!==null?s.limit:void 0,offset:s.offset!==null?s.offset:void 0,planner:s.planner??this.planner},l=er(c),u=l.allTables??[i,...r];br(this.vmCtx,u[0],u),l.inSets&&(this.vmCtx.inSets=l.inSets);const _=l.keyInfos??c.keyInfos;_&&(this.vmCtx.keyInfos=_);const A={};for(const I of this.udfs.values())A[I.id]=I.def.call;this.vmCtx.udfs=A;let f=l.outputColumns??c.outputColumns??i.columns;if(c.aggregates&&c.aggregates.length>0||c.groupBy&&c.groupBy.length>0)if(l.outputColumns)f=l.outputColumns;else{f=[];const I=c.groupBy??[];for(const p of I){const y=typeof p=="string"?p:p.colName??(p.expr?Qt(p.expr):"group_key"),T=i.columns.find(N=>N.name===y);T?f.push(T):f.push({name:y,type:C.TEXT,flags:tt.NONE,colOffset:0})}for(let p=0;p<(((d=c.aggregates)==null?void 0:d.length)??0);p++){const y=c.aggregates[p],T=y.alias??(y.colName?`${y.func}_${y.colName}`:y.func),N=y.func==="count"?C.INT32:C.FLOAT64;f.push({name:T,type:N,flags:tt.NONE,colOffset:0})}}this.vmCtx.outputColumns=f;const g=[];for(;;){const I=Gn(this.vmCtx,this.pool.view,l);let p=0;for(let y=0;y<this.vmCtx.resultCount;y++){const T=this.pool.view.getUint16(On+p,!0),N=On+p+2,B=xe(f,this.pool.view,N);g.push(B),p+=2+T}if(I===O.DONE)break;if(I===O.BUFFER_FULL)this.vmCtx.resultOffset=0,this.vmCtx.resultCount=0,this.vmCtx.status=O.RUNNING;else if(I===O.PAGE_FAULT){this.vmCtx.resultOffset=0,this.vmCtx.resultCount=0;const y=[],T=this.vmCtx.cursors??[this.vmCtx.cursor];for(const N of T)if(N&&N.pageId>1){const B=this.pool.getResidentSlot(N.pageId);B>0&&(this.pool.pinSlot(B),y.push(B))}try{await this.driver.acquirePage(this.vmCtx.fault_page_id)}finally{for(const N of y)this.pool.unpinSlot(N)}this.vmCtx.status=O.RUNNING}else throw I===O.ARENA_EXHAUSTED?(this.vmCtx.arenaOffset=0,new _i):I===O.TIMEOUT?new vr:I===O.INVALID_BYTECODE?new kr:new Error(`VM execution error: status=${I}`)}return Object.defineProperty(g,"isOrderSatisfied",{value:l.isOrderSatisfied??!1,writable:!0,enumerable:!1,configurable:!0}),g}async checkpoint(){return this.coordinator.checkpoint()}async exportBinary(){return this.coordinator.leaseQueue.enqueue(async()=>{this.coordinator.isInTransaction()||(await this.coordinator.executeCheckpoint(),await this.driver.flushAllDirty());const t=this.pool.getSlotDataView(0),n=To(t),s=new Uint8Array(n*4096);s.set(this.pool.getPageBytesInSlot(0),0);const i=new DataView(s.buffer,s.byteOffset,4096);$t(i,0);const r=[];for(let c=2;c<=n;c++)this.pool.getResidentSlot(c)===-1&&!this.coordinator.hasSpilledPage(c)&&r.push(c);const o=r.length>0?await this.vfs.readPages(r):[],a=new Map;for(let c=0;c<r.length;c++)a.set(r[c],o[c]??null);for(let c=2;c<=n;c++){const l=(c-1)*4096,u=s.subarray(l,l+4096),_=this.pool.getResidentSlot(c);if(_!==-1)u.set(this.pool.getPageBytesInSlot(_));else if(this.coordinator.hasSpilledPage(c))u.set(this.coordinator.getSpilledPage(c));else{const f=a.get(c);f&&u.set(f)}const A=Ge(u);new DataView(u.buffer,u.byteOffset,4096).setUint32(12,A,!0)}return s},this.currentLeaseId??void 0)}async importBinary(t){if(this.coordinator.isInTransaction())throw new Error("Cannot import binary database while a transaction is active");return this.coordinator.leaseQueue.enqueue(async()=>{var l,u;const n=t instanceof Uint8Array?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t);if(n.byteLength<4096||n.byteLength%4096!==0)throw new Rn(`Invalid database binary size (${n.byteLength} bytes): must be a non-zero multiple of 4096 bytes`);const s=n.byteLength/4096,i=n.subarray(0,4096),r=new DataView(i.buffer,i.byteOffset,4096),o=qn(r,!0);if(o.pageSize!==4096)throw new Rn(`Invalid database page size ${o.pageSize} (expected 4096)`);if(o.totalPages!==s)throw new Rn(`Database page count mismatch: header specifies ${o.totalPages} pages, but binary image contains ${s} pages`);for(let _=2;_<=s;_++){const A=(_-1)*4096,f=n.subarray(A,A+4096),d=new DataView(f.buffer,f.byteOffset,4096).getUint32(12,!0);if(d!==0){const I=Ge(f);if(I!==d)throw new Se(_,d,I)}}const a=[];for(let _=1;_<=s;_++){const A=(_-1)*4096;a.push({pageId:_,data:n.subarray(A,A+4096).slice()})}for(let _=1;_<this.pool.slotCount;_++)this.pool.forceUnpinSlot(_),this.pool.unassignSlot(_),this.pool.clearDirty(_),this.pool.getPageBytesInSlot(_).fill(0);this.pool.getPageBytesInSlot(0).set(a[0].data),this.pool.clearDirty(0),await this.vfs.writePages(a),await((u=(l=this.vfs).flush)==null?void 0:u.call(l)),await this.coordinator.resetWalAfterImport(),this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),this.vmCtx.table=null;const c=hn(this.pool.getSlotDataView(0));for(const _ of c){let A=_.colCatalogPageId;for(;A!==0;){const f=await this.driver.acquireAndPinPage(A),g=this.pool.getSlotDataView(f);A=he(g,0).nextColCatalogPageId}}})}async close(){var t,n;this.broadcastChannel&&(this.broadcastChannel.close(),this.broadcastChannel=null),this.beforeCommitHooks.clear(),this.commitHooks.clear(),this.subscriptions.clear(),await this.coordinator.close(),await this.driver.flushAllDirty(),await((n=(t=this.vfs).close)==null?void 0:n.call(t))}}E.ALIGNMENT_PADDING_OFFSET=rl,E.ALIGNMENT_PADDING_SIZE=dr,E.AggregateNotAllowedInWhereError=os,E.BUILTIN_AGGREGATES=vo,E.BUILTIN_SCALARS=ko,E.BYTECODE_OFFSET=Ir,E.BYTECODE_SIZE=gr,E.BufferPoolDriver=Fo,E.BytecodeEmitter=Qs,E.CATALOG_PAGE_HEADER_FIELDS=Wa,E.CATALOG_PAGE_HEADER_OFFSET_COL_COUNT_IN_PAGE=$a,E.CATALOG_PAGE_HEADER_OFFSET_FLAGS=Va,E.CATALOG_PAGE_HEADER_OFFSET_NEXT_COL_CATALOG_PAGE_ID=Ya,E.CATALOG_PAGE_HEADER_OFFSET_PAGE_CHECKSUM=Za,E.CATALOG_PAGE_HEADER_OFFSET_PAGE_TYPE=Ha,E.CATALOG_PAGE_HEADER_OFFSET_START_COL_INDEX=Xa,E.CATALOG_PAGE_HEADER_OFFSET_TABLE_ID=xa,E.CATALOG_PAGE_HEADER_SIZE=xs,E.COLUMN_META_FIELDS=ja,E.COLUMN_META_OFFSET_COL_OFFSET=za,E.COLUMN_META_OFFSET_FLAGS=Ja,E.COLUMN_META_OFFSET_NAME=tl,E.COLUMN_META_OFFSET_RESERVED=el,E.COLUMN_META_OFFSET_TYPE=Ka,E.COLUMN_META_SIZE=Xs,E.COST_INDEX_NEXT=Ls,E.COST_INDEX_SEEK=_n,E.COST_ROW_EVAL=_e,E.CURRENT_ENGINE_VERSION=zn,E.CURRENT_MIN_READ_VERSION=Sr,E.CannotDropColumnError=Ai,E.ColumnAlreadyExistsError=ss,E.ColumnFlag=tt,E.ColumnNotFoundError=fe,E.CorruptPageError=Se,E.CorruptWalFrameError=Fn,E.CorruptWalHeaderError=as,E.CostBasedPlanner=Ds,E.CostBasedQueryPlanner=fc,E.CustomOrderPlanner=lc,E.CustomPlanner=xo,E.CustomQueryPlanner=cc,E.DEFAULT_BUFFER_POOL_REGIONS=il,E.DEFAULT_CACHE_SIZE_BYTES=nl,E.DEFAULT_MAX_QUERY_MEMORY=ve,E.DEFAULT_PAGE_SLOTS=sl,E.DEFAULT_PAGE_TO_SLOT_BUCKETS=qt,E.DEFAULT_SLOT_COUNT=Qe,E.DIRTY_MASK_OFFSET=mr,E.DataType=C,E.DefaultQueryPlanner=uc,E.ExclusiveLeaseQueue=Do,E.ExpressionBuilder=it,E.FILE_HEADER_SIZE=ga,E.HEADER_OFFSET_CHANGE_COUNTER=pe,E.HEADER_OFFSET_FILE_FORMAT_VERSION=Vs,E.HEADER_OFFSET_FREE_PAGE_HEAD=le,E.HEADER_OFFSET_MAGIC=Ee,E.HEADER_OFFSET_MIN_READ_VERSION=$s,E.HEADER_OFFSET_NEXT_CATALOG_PAGE_ID=ur,E.HEADER_OFFSET_NEXT_INDEX_CATALOG_PAGE_ID=fr,E.HEADER_OFFSET_PAGE_CHECKSUM=ye,E.HEADER_OFFSET_PAGE_SIZE=Hs,E.HEADER_OFFSET_RESERVED=_a,E.HEADER_OFFSET_SCHEMA_VERSION=Ie,E.HEADER_OFFSET_TOTAL_PAGES=se,E.HeuristicPlanner=Vo,E.HeuristicQueryPlanner=Ac,E.INDEX_CATALOG_OFFSET=Un,E.INDEX_DESCRIPTOR_FIELDS=La,E.INDEX_DESCRIPTOR_OFFSET_COLUMN_COUNT=Qa,E.INDEX_DESCRIPTOR_OFFSET_COLUMN_INDICES=ka,E.INDEX_DESCRIPTOR_OFFSET_COL_DIRECTIONS=Ma,E.INDEX_DESCRIPTOR_OFFSET_FLAGS=va,E.INDEX_DESCRIPTOR_OFFSET_INDEX_ID=Ra,E.INDEX_DESCRIPTOR_OFFSET_NAME=Ga,E.INDEX_DESCRIPTOR_OFFSET_RESERVED=qa,E.INDEX_DESCRIPTOR_OFFSET_ROOT_PAGE_ID=Da,E.INDEX_DESCRIPTOR_OFFSET_TABLE_ID=Fa,E.INDEX_DESCRIPTOR_SIZE=De,E.IdentifierTooLongError=Lr,E.IndexAlreadyExistsError=hi,E.IndexFlag=It,E.IndexNotFoundError=Rr,E.IndexedDbVfsAdapter=Wr,E.InvalidBytecodeError=kr,E.InvalidDatabaseError=Rn,E.Io=Ii,E.MASTER_TABLE_OFFSET=Sn,E.MAX_COLUMNS_PER_CATALOG_PAGE=Te,E.MAX_COLUMNS_PER_TABLE=ue,E.MAX_CURSORS_PER_FRAME=Al,E.MAX_INDEXES_PAGE1=Je,E.MAX_INDEXES_SYSPAGE=ma,E.MAX_IN_LIST_SIZE=Dt,E.MAX_NAME_LENGTH=ne,E.MAX_REGISTERS_PER_FRAME=fl,E.MAX_ROW_SIZE=2048,E.MAX_SUBQUERY_DEPTH=hl,E.MAX_TABLES_PAGE1=ce,E.MAX_TABLES_SYSPAGE=da,E.MAX_TABLE_INTERIOR_CELLS=lr,E.MAX_TOPK_HEAP_LIMIT=Or,E.MemoryVfsAdapter=qr,E.NEXT_DESCRIPTOR_CATALOG_PAGE_OFFSET=Ea,E.NEXT_DESCRIPTOR_CATALOG_PAGE_SIZE=Ia,E.NoOpPlanner=$o,E.NoOpQueryPlanner=hc,E.NotNullConstraintError=ns,E.OpCode=m,E.OpfsVfsAdapter=Hr,E.PAGE_HEADER_OFFSET_CELL_COUNT=aa,E.PAGE_HEADER_OFFSET_CHECKSUM=Re,E.PAGE_HEADER_OFFSET_CONTENT_OFFSET=la,E.PAGE_HEADER_OFFSET_FLAGS=oa,E.PAGE_HEADER_OFFSET_FREE_BYTES=ca,E.PAGE_HEADER_OFFSET_NEXT_PAGE_ID=or,E.PAGE_HEADER_OFFSET_TYPE=rr,E.PAGE_HEADER_SIZE=Kt,E.PAGE_SCRATCHPAD_OFFSET=pr,E.PAGE_SCRATCHPAD_SIZE=_r,E.PAGE_SIZE=4096,E.PAGE_TO_SLOT_BUCKET_SIZE=Ce,E.PAGE_TO_SLOT_OFFSET=Mt,E.PAGE_TO_SLOT_SIZE=Ar,E.PAGE_TYPE_CATALOG_PAGE=Nn,E.PAGE_TYPE_FREE=Me,E.PAGE_TYPE_INDEX_INTERIOR=Ur,E.PAGE_TYPE_INDEX_LEAF=ts,E.PAGE_TYPE_LEAF_DATA=es,E.PAGE_TYPE_TABLE_INTERIOR=fi,E.QueryArenaExhaustedError=_i,E.QueryBuilder=Lt,E.QueryTimeoutError=vr,E.RESULT_BUFFER_OFFSET=On,E.RESULT_BUFFER_SIZE=Ys,E.RowSizeLimitExceededError=Br,E.SLOTTED_PAGE_HEADER_FIELDS=ra,E.SLOT_TO_PAGE_OFFSET=Yn,E.SYSPAGE_FILE_HEADER_FIELDS=ha,E.SYSPAGE_RESERVED_OFFSET=pa,E.SYSPAGE_RESERVED_SIZE=ya,E.SubqueryNestingTooDeepError=Qr,E.TABLE_DESCRIPTOR_FIELDS=Ta,E.TABLE_DESCRIPTOR_OFFSET_AUTO_INC_NEXT=ba,E.TABLE_DESCRIPTOR_OFFSET_COLUMN_COUNT=wa,E.TABLE_DESCRIPTOR_OFFSET_COL_CATALOG_PAGE_ID=Ua,E.TABLE_DESCRIPTOR_OFFSET_FLAGS=Pa,E.TABLE_DESCRIPTOR_OFFSET_NAME=Oa,E.TABLE_DESCRIPTOR_OFFSET_RESERVED=Ba,E.TABLE_DESCRIPTOR_OFFSET_ROOT_PAGE_ID=Sa,E.TABLE_DESCRIPTOR_OFFSET_ROW_COUNT_ESTIMATE=Na,E.TABLE_DESCRIPTOR_OFFSET_TABLE_ID=Ca,E.TABLE_DESCRIPTOR_SIZE=Fe,E.TABLE_INTERIOR_CELL_FIELDS=ua,E.TABLE_INTERIOR_CELL_OFFSET_CHILD_PAGE_ID=fa,E.TABLE_INTERIOR_CELL_OFFSET_ROWID=Aa,E.TABLE_INTERIOR_CELL_SIZE=ar,E.TABLE_INTERIOR_SPLIT_INDEX=cr,E.TOTAL_MEMORY_BYTES=ol,E.TRANSIENT_ARENA_OFFSET=yr,E.TableAlreadyExistsError=is,E.TableFlag=bn,E.TableNotFoundError=Bn,E.TooManyColumnsError=Ln,E.TooManyCursorsError=rs,E.TooManyGroupByColumnsError=Gr,E.TooManyIndexesError=Fr,E.TooManyOrderByColumnsError=Mr,E.TooManyRegistersError=st,E.TooManyTablesError=gi,E.TransactionCoordinator=Qo,E.UniqueConstraintViolationError=tn,E.UnknownFunctionError=di,E.UnsupportedFormatVersionError=Dr,E.VM_CONTEXT_OFFSET=Er,E.VM_CONTEXT_SIZE=hr,E.VM_FRAME_COUNT=ul,E.VM_FRAME_SIZE=cl,E.VmStatus=O,E.WAL_CURRENT_VERSION=Tr,E.WAL_FILE_HEADER_FIELDS=al,E.WAL_FILE_HEADER_SIZE=Jn,E.WAL_FRAME_HEADER_FIELDS=ll,E.WAL_FRAME_HEADER_SIZE=ke,E.WAL_FRAME_MAGIC=Pn,E.WAL_FRAME_OFFSET_CHECKSUM=ui,E.WAL_FRAME_OFFSET_DB_SIZE_PAGES=li,E.WAL_FRAME_OFFSET_FLAGS=ri,E.WAL_FRAME_OFFSET_FRAME_SEQ=ci,E.WAL_FRAME_OFFSET_FRAME_TYPE=ii,E.WAL_FRAME_OFFSET_MAGIC=si,E.WAL_FRAME_OFFSET_PAGE_ID=ai,E.WAL_FRAME_OFFSET_RESERVED=wr,E.WAL_FRAME_OFFSET_TX_ID=oi,E.WAL_FRAME_SIZE=ze,E.WAL_FRAME_TYPE_PAGE_DATA=Zn,E.WAL_FRAME_TYPE_TX_COMMIT=jn,E.WAL_FRAME_TYPE_TX_UNCOMMITTED=Kn,E.WAL_HEADER_OFFSET_CHECKPOINT_SEQ=zs,E.WAL_HEADER_OFFSET_CHECKSUM=ni,E.WAL_HEADER_OFFSET_MAGIC=js,E.WAL_HEADER_OFFSET_PAGE_SIZE=Js,E.WAL_HEADER_OFFSET_RESERVED=Cr,E.WAL_HEADER_OFFSET_SALT1=ti,E.WAL_HEADER_OFFSET_SALT2=ei,E.WAL_HEADER_OFFSET_WAL_VERSION=Ks,E.WAL_HEADER_SIZE=gl,E.WAL_MAGIC_BYTES=pi,E.WAL_PAGE_SIZE=we,E.WEBDB_CORE_WASM_BASE64=Wi,E.WebDB=sr,E.buf_pool_assign_slot=ao,E.buf_pool_clear_dirty=uo,E.buf_pool_find_victim=Fi,E.buf_pool_get_resident_slot=Wt,E.buf_pool_get_slot_offset=kl,E.buf_pool_is_dirty=Bi,E.buf_pool_is_pinned=cn,E.buf_pool_mark_dirty=co,E.buf_pool_pin_slot=Li,E.buf_pool_read_slot_to_page=ln,E.buf_pool_select_eviction_victim=Di,E.buf_pool_unassign_slot=lo,E.buf_pool_unpin_slot=Ri,E.buf_pool_write_slot_to_page=bi,E.buildJoinEdges=Rs,E.buildRootFilter=zt,E.c_assert=Yr,E.canJoinPreserveOrder=jo,E.catalog_create_table=bo,E.catalog_delete_index_descriptor=Mi,E.catalog_delete_table_descriptor=Uo,E.catalog_find_free_index_slot=Ns,E.catalog_find_free_table_slot=ki,E.catalog_find_index_by_name=bs,E.catalog_find_table_by_name=Zl,E.catalog_find_table_slot=xt,E.catalog_get_change_counter=wo,E.catalog_get_free_page_head=Xl,E.catalog_get_schema_version=Co,E.catalog_get_total_pages=To,E.catalog_increment_change_counter=re,E.catalog_increment_schema_version=Ze,E.catalog_init_page=Oo,E.catalog_init_page1=yo,E.catalog_list_table_descriptors=hn,E.catalog_list_table_indexes=Ae,E.catalog_load_all_tables=Kl,E.catalog_load_table_meta=qi,E.catalog_map_column_location=No,E.catalog_parse_data_type=So,E.catalog_read_column_meta=Po,E.catalog_read_fixed_string=Us,E.catalog_read_index_descriptor=gn,E.catalog_read_page1_header=qn,E.catalog_read_page_header=he,E.catalog_read_table_descriptor=Jt,E.catalog_set_free_page_head=Yl,E.catalog_set_total_pages=xl,E.catalog_update_page1_checksum=$t,E.catalog_write_column_meta=Gi,E.catalog_write_fixed_string=Ss,E.catalog_write_index_descriptor=Os,E.catalog_write_page_header=jl,E.catalog_write_table_descriptor=An,E.chooseIndexScan=ks,E.chooseJoinIndex=Ms,E.clear_bit=Xr,E.col=Vi,E.collectLeafFilters=Xo,E.compare_sorter_keys=fn,E.compileQuery=er,E.computeBufferPoolOffsets=Zs,E.computePage1Checksum=Ei,E.computePageChecksum=Ge,E.computeWalFrameChecksum=ls,E.crc32=mi,E.createVmContext=Nr,E.createVmCursor=Pr,E.createWasmCore=Lo,E.createWasmMemory=Ro,E.decodeWalFileHeader=hs,E.decodeWalFrame=Sl,E.decodeWalFrameHeader=yi,E.deriveDefaultAlias=Qt,E.disassembleBytecode=Ko,E.doesTableSatisfyJoinOrderKeys=xi,E.emitExpression=Z,E.encodeWalFileHeader=As,E.encodeWalFrame=gs,E.estimateFilterSelectivity=$i,E.estimateWhereCost=Xi,E.evalExprNode=vt,E.exp=Go,E.extractAggregatesFromExpr=nr,E.extractFilterColumnNames=Wo,E.findIndexOnColumn=Hn,E.fn=ic,E.fnv1a_32=ws,E.formatDisassembly=Jo,E.getCmpOpcode=$n,E.getFilterReferencedTables=dn,E.getMinKeyValueForType=vs,E.getSingleTableBaseCost=de,E.getTopLevelConjunctionFilters=mn,E.getWebDbCoreWasmBytes=Bo,E.get_bit=$r,E.inferExprType=Zo,E.inferTransitivePredicates=Ho,E.isAggregateFunction=ge,E.isBuiltinFunction=Jl,E.isBuiltinScalarFunction=Mo,E.isIndexAlignedWithOrderBy=tr,E.isQueryBuilder=x,E.materializeOutputSelectExprs=Vn,E.memcmp=_l,E.memcpy=nn,E.memset=ie,E.normalizeFilter=Oe,E.normalizeSelectItem=Gs,E.optimizeQueryPlan=_c,E.optimizeWherePredicates=Yi,E.page_binary_search_index_leaf=vn,E.page_binary_search_interior=Dl,E.page_compact=Qn,E.page_compare_index_keys=Ts,E.page_delete_index_leaf_cell=so,E.page_delete_row=zr,E.page_deserialize_row=xe,E.page_get_cell_content_offset=He,E.page_get_cell_count=ut,E.page_get_cell_offset=ot,E.page_get_checksum=Ll,E.page_get_contiguous_free_space=ms,E.page_get_free_bytes=Ue,E.page_get_next_page_id=Ut,E.page_get_right_child_page_id=ps,E.page_get_row_length=Es,E.page_get_table_layout=Fl,E.page_get_total_free_space=Jr,E.page_get_type=qe,E.page_init=Dn,E.page_init_free=Kr,E.page_init_index_leaf=ys,E.page_init_interior=to,E.page_insert_index_leaf_cell=Pi,E.page_insert_interior_cell=no,E.page_insert_row=an,E.page_serialize_row=Is,E.page_set_cell_content_offset=Ve,E.page_set_cell_count=We,E.page_set_cell_offset=on,E.page_set_checksum=Rl,E.page_set_free_bytes=$e,E.page_set_next_page_id=ds,E.page_set_right_child_page_id=eo,E.page_set_type=Bl,E.page_split_interior=Ql,E.page_table_delete=Ni,E.page_table_get=ro,E.page_table_hash=kn,E.page_table_set=oo,E.page_update_row=Ui,E.parseExpression=ft,E.parseFilterTarget=wt,E.parseSelectExpr=Bs,E.read_f64=Il,E.read_i32=ml,E.read_i64=Cl,E.read_u16=us,E.read_u32=yt,E.read_u64=yl,E.read_u8=Vr,E.reconstructJoinPlans=Fs,E.recoverFromWal=Hi,E.resetVmContext=br,E.resolveColumnAcrossTables=ht,E.resolveQueryPlanner=ji,E.serialize_composite_key=Cs,E.serialize_single_key=io,E.set_bit=xr,E.sql=nc,E.sql_like_match=Xe,E.strlen=cs,E.validateClause=je,E.validateWalFrame=Ti,E.vm_step=Gn,E.write_f64=pl,E.write_i32=El,E.write_i64=wl,E.write_u16=fs,E.write_u32=Tt,E.write_u64=Tl,E.write_u8=dl,Object.defineProperty(E,Symbol.toStringTag,{value:"Module"})});
1
+ (function(f,de){typeof exports=="object"&&typeof module<"u"?de(exports):typeof define=="function"&&define.amd?define(["exports"],de):(f=typeof globalThis<"u"?globalThis:f||self,de(f.WebDB={}))})(this,function(f){"use strict";var Cg=Object.defineProperty;var Qg=(f,de,fn)=>de in f?Cg(f,de,{enumerable:!0,configurable:!0,writable:!0,value:fn}):f[de]=fn;var G=(f,de,fn)=>Qg(f,typeof de!="symbol"?de+"":de,fn);const _c=[["TYPE",1],["FLAGS",1],["CELL_COUNT",2],["CONTENT_OFFSET",2],["NEXT_PAGE_ID",4],["FREE_BYTES",2],["CHECKSUM",4]],Fe=16,jo=0,mc=1,yc=2,pc=4,$o=6,Uc=10,DA=12,Tc=[["CHILD_PAGE_ID",4],["ROWID",8]],zo=12,Sc=0,Nc=4,vo=291,tr=145,we=64,Rc=[["MAGIC",6],["PAGE_SIZE",2],["FILE_FORMAT_VERSION",2],["MIN_READ_VERSION",2],["TOTAL_PAGES",4],["FREE_PAGE_HEAD",4],["SCHEMA_VERSION",4],["CHANGE_COUNTER",4],["PAGE_CHECKSUM",4],["NEXT_CATALOG_PAGE_ID",4],["NEXT_INDEX_CATALOG_PAGE_ID",4],["RESERVED",60]],Dc=100,iA=0,hi=6,fi=8,Ci=10,ke=12,Je=16,oA=20,rA=24,aA=28,FA=32,LA=36,Fc=40,Lc=16,bc=8,Le=16,Qi=8,es=100,As=2148,Oc=3172,Pc=4,Gc=3176,wc=920,cA=56,We=256,kc=[["TABLE_ID",2],["COLUMN_COUNT",2],["ROOT_PAGE_ID",4],["COL_CATALOG_PAGE_ID",4],["NAME",64],["FLAGS",4],["ROW_COUNT_ESTIMATE",4],["AUTO_INC_NEXT",8],["RESERVED",36]],lA=128,qc=0,Mc=2,Hc=4,Yc=8,xc=12,Vc=76,Xc=80,Jc=84,Wc=92,Kc=[["INDEX_ID",2],["TABLE_ID",2],["ROOT_PAGE_ID",4],["COLUMN_COUNT",1],["FLAGS",1],["COLUMN_INDICES",16],["COL_DIRECTIONS",8],["NAME",64],["RESERVED",30]],uA=128,Zc=0,jc=2,$c=4,zc=8,vc=9,tl=10,el=26,Al=34,nl=98,sl=[["PAGE_TYPE",1],["FLAGS",1],["COL_COUNT_IN_PAGE",2],["TABLE_ID",2],["START_COL_INDEX",2],["NEXT_COL_CATALOG_PAGE_ID",4],["PAGE_CHECKSUM",4]],Cn=16,il=0,ol=1,rl=2,al=4,cl=6,ll=8,ul=12,gl=[["TYPE",1],["FLAGS",1],["COL_OFFSET",2],["NAME",64],["RESERVED",4]],di=72,El=0,Il=1,Bl=2,hl=4,fl=68,Cl=4194304,bA=1024,Ql=1024,Ie=2048,gA=8,dl=16384,er=12288,ns=65536,Ar=32768,nr=4096,sr=61312,EA=16777216,_l=[["SLOT_TO_PAGE",4096],["PAGE_TO_SLOT",16384],["DIRTY_MASK",128],["VM_CONTEXT",12288],["RESULT_BUFFER",65536],["BYTECODE",32768],["PAGE_SCRATCHPAD",4096],["ALIGNMENT_PADDING",61312]],ss=4194304,Be=4198400,ir=4214784,Qn=4214912,_e=4227200,zt=4292736,_i=4325504,ml=4329600,dn=4390912,mi=21168128;function yi(t,e=EA){const A=t*4096,n=t*4+7&-8;let s=16;for(;s<t*2;)s<<=1;const i=s*8,o=Math.ceil(t/8)+7&-8;if(t===bA)return{slotsEndOffset:A,slotToPageOffset:ss,pageToSlotOffset:Be,pageToSlotBuckets:Ie,dirtyMaskOffset:ir,vmContextOffset:Qn,resultBufferOffset:_e,bytecodeOffset:zt,pageScratchpadOffset:_i,transientArenaOffset:dn};const r=A,a=r+n,c=a+i,l=c+o,u=l+er,g=u+ns,E=g+Ar,h=E+nr+sr;return{slotsEndOffset:A,slotToPageOffset:r,pageToSlotOffset:a,pageToSlotBuckets:s,dirtyMaskOffset:c,vmContextOffset:l,resultBufferOffset:u,bytecodeOffset:g,pageScratchpadOffset:E,transientArenaOffset:h}}const IA=4096,XA=4128,or=1,_n=1463897158,is=1,os=2,rs=3,yl=[["MAGIC",6],["WAL_VERSION",2],["PAGE_SIZE",4],["CHECKPOINT_SEQ",4],["SALT1",4],["SALT2",4],["CHECKSUM",4],["RESERVED",4]],as=32,pi=0,Ui=6,Ti=8,Si=12,Ni=16,Ri=20,Di=24,rr=28,pl=[["MAGIC",4],["FRAME_TYPE",2],["FLAGS",2],["TX_ID",4],["PAGE_ID",4],["DB_SIZE_PAGES",4],["FRAME_SEQ",4],["CHECKSUM",4],["RESERVED",4]],OA=32,Fi=0,Li=4,bi=6,Oi=8,Pi=12,Gi=16,wi=20,ki=24,ar=28,cs=1,cr=1,PA=0,lr=2,qi=5,mn=10,yn=12,ls=13,Ul=1280,Tl=8,Sl=64,Nl=16,Rl=7,Dl=32,ur=1e4,ae=1e4;function gr(){return{pageId:0,rootPageId:0,slotIdx:0,cellIdx:0,rowOffset:0,btreeDepth:0,flags:0}}function Er(){const t=Array.from({length:16},()=>gr());return{pc:0,status:L.RUNNING,fault_page_id:0,resultCount:0,resultOffset:0,arenaOffset:0,maxQueryMemory:EA,rowsAffected:0,registers:new Array(64).fill(null),cursor:t[0],cursors:t,keyInfos:[],sorters:[],aggregators:[],table:null,tables:void 0,outputColumns:void 0,inSets:[],_resetId:0}}function Ir(t,e,A){if(t.pc=0,t.status=L.RUNNING,t.fault_page_id=0,t.resultCount=0,t.resultOffset=0,t.arenaOffset=0,t.maxQueryMemory=EA,t.rowsAffected=0,!t._fastHostMode){t.registers.fill(null);for(let n=0;n<t.cursors.length;n++){const s=t.cursors[n];s.pageId=0,s.rootPageId=0,s.slotIdx=0,s.cellIdx=0,s.rowOffset=0,s.btreeDepth=0,s.flags=0}t.cursor=t.cursors[0]}t.keyInfos=[],t.sorters=[],t.aggregators=[],t.table=e??null,t.tables=A,t.outputColumns=void 0,t.inSets=[],t._resetId=(t._resetId??0)+1}var _=(t=>(t[t.NULL=0]="NULL",t[t.INT32=1]="INT32",t[t.INT64=2]="INT64",t[t.FLOAT64=3]="FLOAT64",t[t.TEXT=4]="TEXT",t[t.BLOB=5]="BLOB",t[t.UUID=6]="UUID",t[t.ULID=7]="ULID",t))(_||{}),gt=(t=>(t[t.NONE=0]="NONE",t[t.PRIMARY_KEY=1]="PRIMARY_KEY",t[t.NOT_NULL=2]="NOT_NULL",t[t.INDEXED=4]="INDEXED",t[t.AUTO_INC=8]="AUTO_INC",t))(gt||{}),GA=(t=>(t[t.NONE=0]="NONE",t[t.ACTIVE=1]="ACTIVE",t[t.SYSTEM=2]="SYSTEM",t))(GA||{}),ft=(t=>(t[t.NONE=0]="NONE",t[t.UNIQUE=1]="UNIQUE",t[t.PRIMARY=2]="PRIMARY",t[t.SPATIAL_VECTOR=4]="SPATIAL_VECTOR",t))(ft||{}),C=(t=>(t[t.OP_HALT=0]="OP_HALT",t[t.OP_OPEN_CURSOR=1]="OP_OPEN_CURSOR",t[t.OP_REWIND=2]="OP_REWIND",t[t.OP_NEXT_ROW=3]="OP_NEXT_ROW",t[t.OP_COLUMN_INT=4]="OP_COLUMN_INT",t[t.OP_COLUMN_FLOAT=5]="OP_COLUMN_FLOAT",t[t.OP_COLUMN_TEXT=6]="OP_COLUMN_TEXT",t[t.OP_COLUMN_BLOB=7]="OP_COLUMN_BLOB",t[t.OP_LAST=8]="OP_LAST",t[t.OP_PREV_ROW=9]="OP_PREV_ROW",t[t.OP_COLUMN_UUID=10]="OP_COLUMN_UUID",t[t.OP_COLUMN_ULID=11]="OP_COLUMN_ULID",t[t.OP_OPEN_INDEX=12]="OP_OPEN_INDEX",t[t.OP_INDEX_SEEK_EQ=13]="OP_INDEX_SEEK_EQ",t[t.OP_INDEX_SEEK_GE=14]="OP_INDEX_SEEK_GE",t[t.OP_INDEX_NEXT=15]="OP_INDEX_NEXT",t[t.OP_IS_NULL=16]="OP_IS_NULL",t[t.OP_IS_NOT_NULL=17]="OP_IS_NOT_NULL",t[t.OP_EQ=18]="OP_EQ",t[t.OP_NE=19]="OP_NE",t[t.OP_GT=20]="OP_GT",t[t.OP_GE=21]="OP_GE",t[t.OP_LT=22]="OP_LT",t[t.OP_LE=23]="OP_LE",t[t.OP_JUMP=24]="OP_JUMP",t[t.OP_STR_LIKE=25]="OP_STR_LIKE",t[t.OP_STR_NOT_LIKE=26]="OP_STR_NOT_LIKE",t[t.OP_STR_CONTAINS=27]="OP_STR_CONTAINS",t[t.OP_STR_STARTS_WITH=28]="OP_STR_STARTS_WITH",t[t.OP_STR_ENDS_WITH=29]="OP_STR_ENDS_WITH",t[t.OP_LOAD_BLOB=30]="OP_LOAD_BLOB",t[t.OP_IN=31]="OP_IN",t[t.OP_LOAD_INT=32]="OP_LOAD_INT",t[t.OP_LOAD_FLOAT=33]="OP_LOAD_FLOAT",t[t.OP_LOAD_TEXT=34]="OP_LOAD_TEXT",t[t.OP_LOAD_NULL=35]="OP_LOAD_NULL",t[t.OP_EMIT_ROW=36]="OP_EMIT_ROW",t[t.OP_RESULT_ROW=37]="OP_RESULT_ROW",t[t.OP_OFFSET=38]="OP_OFFSET",t[t.OP_LIMIT=39]="OP_LIMIT",t[t.OP_CALL_UDF=40]="OP_CALL_UDF",t[t.OP_STR_LOWER=41]="OP_STR_LOWER",t[t.OP_STR_UPPER=42]="OP_STR_UPPER",t[t.OP_STR_LENGTH=43]="OP_STR_LENGTH",t[t.OP_STR_SUBSTR=44]="OP_STR_SUBSTR",t[t.OP_STR_TRIM=45]="OP_STR_TRIM",t[t.OP_MATH_ABS=46]="OP_MATH_ABS",t[t.OP_MATH_ROUND=47]="OP_MATH_ROUND",t[t.OP_SORTER_OPEN=48]="OP_SORTER_OPEN",t[t.OP_SORTER_INSERT=49]="OP_SORTER_INSERT",t[t.OP_SORTER_SORT=50]="OP_SORTER_SORT",t[t.OP_SORTER_NEXT=51]="OP_SORTER_NEXT",t[t.OP_MATH_FLOOR=52]="OP_MATH_FLOOR",t[t.OP_MATH_CEIL=53]="OP_MATH_CEIL",t[t.OP_ADD=54]="OP_ADD",t[t.OP_SUB=55]="OP_SUB",t[t.OP_MUL=56]="OP_MUL",t[t.OP_DIV=57]="OP_DIV",t[t.OP_MOD=58]="OP_MOD",t[t.OP_ENTER_SUBQUERY=59]="OP_ENTER_SUBQUERY",t[t.OP_RETURN_SUBQUERY=60]="OP_RETURN_SUBQUERY",t[t.OP_STR_CONCAT=61]="OP_STR_CONCAT",t[t.OP_COALESCE=62]="OP_COALESCE",t[t.OP_COPY=63]="OP_COPY",t[t.OP_AGG_INIT=64]="OP_AGG_INIT",t[t.OP_AGG_STEP=65]="OP_AGG_STEP",t[t.OP_AGG_NEXT=66]="OP_AGG_NEXT",t[t.OP_AGG_FINAL=67]="OP_AGG_FINAL",t[t.OP_REG_IS_NULL=72]="OP_REG_IS_NULL",t[t.OP_REG_IS_NOT_NULL=73]="OP_REG_IS_NOT_NULL",t[t.OP_DELETE_ROW=80]="OP_DELETE_ROW",t[t.OP_UPDATE_FIELD=81]="OP_UPDATE_FIELD",t[t.OP_INSERT_ROW=82]="OP_INSERT_ROW",t))(C||{}),L=(t=>(t[t.RUNNING=0]="RUNNING",t[t.DONE=1]="DONE",t[t.PAGE_FAULT=2]="PAGE_FAULT",t[t.BUFFER_FULL=3]="BUFFER_FULL",t[t.ERROR=4]="ERROR",t[t.TIMEOUT=5]="TIMEOUT",t[t.ARENA_EXHAUSTED=6]="ARENA_EXHAUSTED",t[t.INVALID_BYTECODE=7]="INVALID_BYTECODE",t))(L||{});class Mi extends Error{constructor(e,A=2048){super(`Row size (${e} bytes) exceeds maximum limit of ${A} bytes`),this.name="RowSizeLimitExceededError"}}class us extends Error{constructor(e,A){super(`NOT NULL constraint failed: ${A?A+".":""}${e}`),this.name="NotNullConstraintError"}}class Br extends Error{constructor(e,A=64){super(`Identifier "${e}" (${e.length} characters) exceeds maximum limit of ${A} characters`),this.name="IdentifierTooLongError"}}class gs extends Error{constructor(e,A){super(A?`Column "${e}" already exists on table "${A}"`:`Column "${e}" already exists`),this.name="ColumnAlreadyExistsError"}}class Hi extends Error{constructor(e){super(e),this.name="CannotDropColumnError"}}class Ke extends Error{constructor(e,A){super(A?`Column "${e}" not found on table "${A}"`:`Column "${e}" not found`),this.name="ColumnNotFoundError"}}class pn extends Error{constructor(e){super(`Table not found: "${e}"`),this.name="TableNotFoundError"}}class Es extends Error{constructor(e){super(`Table already exists: "${e}"`),this.name="TableAlreadyExistsError"}}class hr extends Error{constructor(e){super(`Index not found: "${e}"`),this.name="IndexNotFoundError"}}class Yi extends Error{constructor(e){super(`Index already exists: "${e}"`),this.name="IndexAlreadyExistsError"}}class JA extends Error{constructor(e){super(e),this.name="UniqueConstraintViolationError"}}class BA extends Error{constructor(e,A,n){super(`Corrupted page detected (pageId: ${e}): stored checksum ${A}${n!==void 0?`, computed checksum ${n}`:""}`),this.pageId=e,this.storedChecksum=A,this.computedChecksum=n,this.name="CorruptPageError"}}class Un extends Error{constructor(e,A=256){super(`Too many columns: ${e} exceeds maximum limit of ${A} columns`),this.name="TooManyColumnsError"}}class xi extends Error{constructor(e,A=16){super(`Too many tables: ${e} exceeds maximum limit of ${A} tables on Page 1`),this.name="TooManyTablesError"}}class fr extends Error{constructor(e,A=8){super(`Too many indexes: ${e} exceeds maximum limit of ${A} indexes on Page 1`),this.name="TooManyIndexesError"}}class Cr extends Error{constructor(e){super(e),this.name="UnsupportedFormatVersionError"}}class Tn extends Error{constructor(e){super(e),this.name="InvalidDatabaseError"}}class Vi extends Error{constructor(e="Transient query arena exhausted"){super(e),this.name="QueryArenaExhaustedError"}}class Is extends Error{constructor(e,A=16){super(`Too many cursors: ${e} exceeds maximum limit of ${A} cursors`),this.name="TooManyCursorsError"}}class Bt extends Error{constructor(e,A=64){super(`Too many registers: ${e} exceeds maximum limit of ${A} registers`),this.name="TooManyRegistersError"}}class Qr extends Error{constructor(e,A=7){super(`Subquery nesting depth ${e} exceeds maximum limit of ${A}`),this.name="SubqueryNestingTooDeepError"}}class dr extends Error{constructor(e="Query execution exceeded maximum cycle limit (TIMEOUT)"){super(e),this.name="QueryTimeoutError"}}class _r extends Error{constructor(e="Malformed bytecode execution halted (INVALID_BYTECODE)"){super(e),this.name="InvalidBytecodeError"}}class mr extends Error{constructor(e,A=8){super(`Too many order by columns: ${e} exceeds maximum limit of ${A}`),this.name="TooManyOrderByColumnsError"}}class yr extends Error{constructor(e,A=8){super(`Too many group by columns: ${e} exceeds maximum limit of ${A}`),this.name="TooManyGroupByColumnsError"}}class Xi extends Error{constructor(e){super(`Function "${e}" is neither a native built-in function nor a registered UDF`),this.name="UnknownFunctionError"}}class Bs extends Error{constructor(e){super(`Aggregate function "${e}" cannot be used in WHERE clause`),this.name="AggregateNotAllowedInWhereError"}}class hs extends Error{constructor(e="Corrupted WAL file header detected"){super(e),this.name="CorruptWalHeaderError"}}class Sn extends Error{constructor(e="Corrupted WAL frame detected"){super(e),this.name="CorruptWalFrameError"}}class pr{constructor(){G(this,"name","memory");G(this,"isSynchronous",!0);G(this,"pages",new Map);G(this,"walHeader",null);G(this,"walFrames",[])}async readPages(e){return e.map(A=>{const n=this.pages.get(A);return n?new Uint8Array(n):null})}async writePages(e){for(const{pageId:A,data:n}of e){const s=new Uint8Array(n.byteLength);s.set(n),this.pages.set(A,s)}}async flush(){}async truncate(e){for(const A of Array.from(this.pages.keys()))A>e&&this.pages.delete(A)}snapshot(){const e=new Map;for(const[A,n]of this.pages.entries())e.set(A,new Uint8Array(n));return e}restoreSnapshot(e){this.pages.clear();for(const[A,n]of e.entries())this.pages.set(A,new Uint8Array(n))}async readWalHeader(){return this.walHeader?new Uint8Array(this.walHeader):null}async writeWalHeader(e){const A=new Uint8Array(e.byteLength);A.set(e),this.walHeader=A}async readWalFrames(e,A){const n=A!==void 0?e+A:this.walFrames.length;return this.walFrames.slice(e,n).map(i=>new Uint8Array(i))}async appendWalFrames(e){for(const A of e){const n=new Uint8Array(A.byteLength);n.set(A),this.walFrames.push(n)}}async flushWal(){}async truncateWal(e){e===0?(this.walFrames=[],this.walHeader=null):this.walFrames.length=Math.min(this.walFrames.length,e)}async getWalFrameCount(){return this.walFrames.length}async close(){}}class Ur{constructor(e){G(this,"name","idb");G(this,"isSynchronous",!1);G(this,"dbName");G(this,"dbPromise",null);this.dbName=`webdb_${e}`}getDb(){return this.dbPromise||(this.dbPromise=new Promise((e,A)=>{const n=globalThis.indexedDB;if(!n){A(new Error("IndexedDB is not available in the current environment"));return}const s=n.open(this.dbName,1);s.onupgradeneeded=()=>{const i=s.result;i.objectStoreNames.contains("pages")||i.createObjectStore("pages"),i.objectStoreNames.contains("wal_frames")||i.createObjectStore("wal_frames"),i.objectStoreNames.contains("wal_meta")||i.createObjectStore("wal_meta")},s.onsuccess=()=>e(s.result),s.onerror=()=>A(s.error)})),this.dbPromise}async readPages(e){if(e.length===0)return[];const A=await this.getDb();return new Promise((n,s)=>{const i=A.transaction("pages","readonly"),o=i.objectStore("pages"),r=new Array(e.length).fill(null);for(let a=0;a<e.length;a++){const c=o.get(e[a]);c.onsuccess=()=>{const l=c.result;l&&(r[a]=l instanceof Uint8Array?l:new Uint8Array(l))}}i.oncomplete=()=>n(r),i.onerror=()=>s(i.error),i.onabort=()=>s(i.error)})}async writePages(e){if(e.length===0)return;const A=await this.getDb();return new Promise((n,s)=>{const i=A.transaction("pages","readwrite"),o=i.objectStore("pages");for(const{pageId:r,data:a}of e){const c=new Uint8Array(a.byteLength);c.set(a),o.put(c,r)}i.oncomplete=()=>n(),i.onerror=()=>s(i.error),i.onabort=()=>s(i.error)})}async flush(){}async truncate(e){const A=await this.getDb();return new Promise((n,s)=>{const o=A.transaction("pages","readwrite").objectStore("pages"),r=IDBKeyRange.lowerBound(e,!0),a=o.delete(r);a.onsuccess=()=>n(),a.onerror=()=>s(a.error)})}async readWalHeader(){const e=await this.getDb();return new Promise((A,n)=>{const o=e.transaction("wal_meta","readonly").objectStore("wal_meta").get("header");o.onsuccess=()=>{const r=o.result;A(r?r instanceof Uint8Array?r:new Uint8Array(r):null)},o.onerror=()=>n(o.error)})}async writeWalHeader(e){const A=await this.getDb();return new Promise((n,s)=>{const i=A.transaction("wal_meta","readwrite"),o=i.objectStore("wal_meta"),r=new Uint8Array(e.byteLength);r.set(e),o.put(r,"header"),i.oncomplete=()=>n(),i.onerror=()=>s(i.error),i.onabort=()=>s(i.error)})}async readWalFrames(e,A){const n=await this.getDb();return new Promise((s,i)=>{const r=n.transaction("wal_frames","readonly").objectStore("wal_frames"),a=[],c=A!==void 0?IDBKeyRange.bound(e,e+A-1):IDBKeyRange.lowerBound(e,!1),l=r.openCursor(c);l.onsuccess=()=>{const u=l.result;if(u){const g=u.value;a.push(g instanceof Uint8Array?g:new Uint8Array(g)),u.continue()}else s(a)},l.onerror=()=>i(l.error)})}async appendWalFrames(e){if(e.length===0)return;const A=await this.getDb();return new Promise((n,s)=>{const i=A.transaction("wal_frames","readwrite"),o=i.objectStore("wal_frames"),r=o.count();r.onsuccess=()=>{let a=r.result;for(const c of e){const l=new Uint8Array(c.byteLength);l.set(c),o.put(l,a++)}},i.oncomplete=()=>n(),i.onerror=()=>s(i.error),i.onabort=()=>s(i.error)})}async flushWal(){}async truncateWal(e){const A=await this.getDb();return new Promise((n,s)=>{const i=A.transaction(["wal_frames","wal_meta"],"readwrite"),o=i.objectStore("wal_frames"),r=i.objectStore("wal_meta");if(e===0)o.clear(),r.delete("header");else{const a=IDBKeyRange.lowerBound(e,!1);o.delete(a)}i.oncomplete=()=>n(),i.onerror=()=>s(i.error),i.onabort=()=>s(i.error)})}async getWalFrameCount(){const e=await this.getDb();return new Promise((A,n)=>{const o=e.transaction("wal_frames","readonly").objectStore("wal_frames").count();o.onsuccess=()=>A(o.result),o.onerror=()=>n(o.error)})}async close(){this.dbPromise&&((await this.dbPromise).close(),this.dbPromise=null)}}class Tr{constructor(e){G(this,"name","opfs");G(this,"isSynchronous");G(this,"dbName");G(this,"rootDir",null);G(this,"dbFileHandle",null);G(this,"walFileHandle",null);G(this,"dbSyncHandle",null);G(this,"walSyncHandle",null);this.dbName=e,this.isSynchronous=typeof globalThis.FileSystemSyncAccessHandle<"u"}async initHandles(){var e;if(!this.rootDir){if(!((e=navigator==null?void 0:navigator.storage)!=null&&e.getDirectory))throw new Error("OPFS (Origin Private File System) is not available in the current environment");if(this.rootDir=await navigator.storage.getDirectory(),this.dbFileHandle=await this.rootDir.getFileHandle(`${this.dbName}.db`,{create:!0}),this.walFileHandle=await this.rootDir.getFileHandle(`${this.dbName}.wal`,{create:!0}),this.isSynchronous)try{this.dbSyncHandle=await this.dbFileHandle.createSyncAccessHandle(),this.walSyncHandle=await this.walFileHandle.createSyncAccessHandle()}catch{}}}async readPages(e){if(e.length===0)return[];if(await this.initHandles(),this.dbSyncHandle){const s=this.dbSyncHandle.getSize();return e.map(i=>{const o=(i-1)*4096;if(o+4096>s)return null;const r=new Uint8Array(4096);return this.dbSyncHandle.read(r,{at:o}),r})}const A=await this.dbFileHandle.getFile(),n=[];for(const s of e){const i=(s-1)*4096;if(i+4096>A.size)n.push(null);else{const r=await A.slice(i,i+4096).arrayBuffer();n.push(new Uint8Array(r))}}return n}async writePages(e){if(e.length===0)return;if(await this.initHandles(),this.dbSyncHandle){for(const{pageId:n,data:s}of e){const i=(n-1)*4096;this.dbSyncHandle.write(s,{at:i})}return}const A=await this.dbFileHandle.createWritable({keepExistingData:!0});for(const{pageId:n,data:s}of e){const i=(n-1)*4096;await A.seek(i),await A.write(s)}await A.close()}async flush(){this.dbSyncHandle&&this.dbSyncHandle.flush()}async truncate(e){await this.initHandles();const A=e*4096;if(this.dbSyncHandle){this.dbSyncHandle.truncate(A);return}const n=await this.dbFileHandle.createWritable({keepExistingData:!0});await n.truncate(A),await n.close()}async readWalHeader(){if(await this.initHandles(),this.walSyncHandle){if(this.walSyncHandle.getSize()<32)return null;const s=new Uint8Array(32);return this.walSyncHandle.read(s,{at:0}),s}const e=await this.walFileHandle.getFile();if(e.size<32)return null;const A=e.slice(0,32);return new Uint8Array(await A.arrayBuffer())}async writeWalHeader(e){if(await this.initHandles(),this.walSyncHandle){this.walSyncHandle.write(e,{at:0});return}const A=await this.walFileHandle.createWritable({keepExistingData:!0});await A.seek(0),await A.write(e),await A.close()}async readWalFrames(e,A){await this.initHandles();const n=[];let s=e;const i=A!==void 0?e+A:1/0;if(this.walSyncHandle){const r=this.walSyncHandle.getSize();for(;s<i;){const a=32+s*4128;if(a>=r)break;const c=Math.min(4128,r-a),l=new Uint8Array(c);this.walSyncHandle.read(l,{at:a}),n.push(l),s++}return n}const o=await this.walFileHandle.getFile();for(;s<i;){const r=32+s*4128;if(r>=o.size)break;const a=Math.min(4128,o.size-r),c=o.slice(r,r+a);n.push(new Uint8Array(await c.arrayBuffer())),s++}return n}async appendWalFrames(e){if(await this.initHandles(),this.walSyncHandle){let s=Math.max(32,this.walSyncHandle.getSize());for(const i of e)this.walSyncHandle.write(i,{at:s}),s+=i.byteLength;return}const A=await this.walFileHandle.getFile(),n=await this.walFileHandle.createWritable({keepExistingData:!0});await n.seek(Math.max(32,A.size));for(const s of e)await n.write(s);await n.close()}async flushWal(){this.walSyncHandle&&this.walSyncHandle.flush()}async truncateWal(e){await this.initHandles();const A=e===0?0:32+e*4128;if(this.walSyncHandle){this.walSyncHandle.truncate(A);return}const n=await this.walFileHandle.createWritable({keepExistingData:e>0});await n.truncate(A),await n.close()}async getWalFrameCount(){await this.initHandles();let e=0;return this.walSyncHandle?e=this.walSyncHandle.getSize():e=(await this.walFileHandle.getFile()).size,e<=32?0:Math.ceil((e-32)/4128)}async close(){this.dbSyncHandle&&(this.dbSyncHandle.close(),this.dbSyncHandle=null),this.walSyncHandle&&(this.walSyncHandle.close(),this.walSyncHandle=null),this.dbFileHandle=null,this.walFileHandle=null,this.rootDir=null}}const WA=new Uint32Array(256);for(let t=0;t<256;t++){let e=t;for(let A=0;A<8;A++)e=e&1?3988292384^e>>>1:e>>>1;WA[t]=e>>>0}function Ji(t,e=0,A=t.byteLength-e){let n=4294967295;const s=e+A;for(let i=e;i<s;i++)n=WA[(n^t[i])&255]^n>>>8;return(n^4294967295)>>>0}function hA(t){let e=4294967295;for(let A=0;A<4096;A++){const n=A>=12&&A<=15?0:t[A];e=WA[(e^n)&255]^e>>>8}return(e^4294967295)>>>0}function Wi(t){let e=4294967295;for(let A=0;A<4096;A++){const n=A>=28&&A<=31?0:t[A];e=WA[(e^n)&255]^e>>>8}return(e^4294967295)>>>0}function fs(t){let e=4294967295;for(let n=0;n<24;n++)e=WA[(e^t[n])&255]^e>>>8;const A=Math.min(t.byteLength,4128);for(let n=32;n<A;n++)e=WA[(e^t[n])&255]^e>>>8;return(e^4294967295)>>>0}const Sr=new WeakMap;function Nn(t){if(t instanceof Uint8Array)return t;if(t.byteOffset===0&&t.byteLength===t.buffer.byteLength){let e=Sr.get(t.buffer);return e||(e=new Uint8Array(t.buffer),Sr.set(t.buffer,e)),e}return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function kt(t,e,A,n,s){if(s<=0)return;const i=Nn(t),o=Nn(A);if(i===o)i.copyWithin(e,n,n+s);else for(let r=0;r<s;r++)i[e+r]=o[n+r]}function Zt(t,e,A,n){if(n<=0)return;Nn(t).fill(A&255,e,e+n)}function Fl(t,e,A,n,s){const i=Nn(t),o=Nn(A);for(let r=0;r<s;r++){const a=i[e+r]-o[n+r];if(a!==0)return a}return 0}function Cs(t){return t.length}function y(t,e){return t instanceof Uint8Array?t[e]:t.getUint8(e)}function K(t,e,A){t instanceof Uint8Array?t[e]=A&255:t.setUint8(e,A&255)}function v(t,e){return t.getUint16(e,!0)}function se(t,e,A){t.setUint16(e,A&65535,!0)}function R(t,e){return t.getUint32(e,!0)}function S(t,e,A){t.setUint32(e,A>>>0,!0)}function vt(t,e){return t.getInt32(e,!0)}function q(t,e,A){t.setInt32(e,A|0,!0)}function st(t,e){return t.getFloat64(e,!0)}function ge(t,e,A){t.setFloat64(e,A,!0)}function Ll(t,e){return t.getBigUint64(e,!0)}function bl(t,e,A){t.setBigUint64(e,A,!0)}function ie(t,e){return t.getBigInt64(e,!0)}function Ze(t,e,A){t.setBigInt64(e,A,!0)}function Qs(t){return Number(t)}function Nt(t){return Number(t)|0}function ds(t){return BigInt(Math.trunc(t))}function _s(t){return Math.trunc(t)|0}function Nr(t,e,A){return A!==void 0?t[e+(A>>3)]&1<<(A&7)?1:0:t[e>>3]&1<<(e&7)?1:0}function Rr(t,e,A){A!==void 0?t[e+(A>>3)]|=1<<(A&7):t[e>>3]|=1<<(e&7)}function Dr(t,e,A){A!==void 0?t[e+(A>>3)]&=~(1<<(A&7)):t[e>>3]&=~(1<<(e&7))}function Fr(t,e){if(!t)throw new Error(`Assertion failed: ${e}`)}class Ki{constructor(e){G(this,"vfs");G(this,"buffer");G(this,"uint8");G(this,"view");G(this,"in_flight_flushes",new Map);G(this,"in_flight_reads",new Map);G(this,"coordinator",null);if(!e.vfs)throw new Error("Io requires a valid IVfsAdapter instance");if(!e.memory)throw new Error("Io requires a valid memory buffer or WebAssembly.Memory");this.vfs=e.vfs,this.buffer=e.memory instanceof WebAssembly.Memory?e.memory.buffer:e.memory,this.uint8=new Uint8Array(this.buffer),this.view=new DataView(this.buffer)}setTransactionCoordinator(e){this.coordinator=e}isInTransaction(){return this.coordinator?this.coordinator.isInTransaction():!1}stampSlotChecksum(e,A){const n=e*4096,s=this.uint8.subarray(n,n+4096);if(A===1){const i=Wi(s);S(this.view,n+aA,i)}else{const i=hA(s);S(this.view,n+DA,i)}}async readSlot(e,A){if(A<=0)throw new Error(`Invalid page ID: ${A}. Page IDs must be positive integers.`);if(this.coordinator&&this.coordinator.hasSpilledPage(A)){const o=e*4096,r=this.coordinator.getSpilledPage(A);this.uint8.set(r,o);return}const n=this.in_flight_flushes.get(A);n&&await n;const s=this.in_flight_reads.get(A);if(s){await s;return}const i=(async()=>{const[o]=await this.vfs.readPages([A]),r=e*4096;if(o){if(o.byteLength!==4096)throw new BA(A,`Unexpected page byte length: ${o.byteLength}, expected 4096`);const a=A===1?aA:DA,c=R(new DataView(o.buffer,o.byteOffset),a);if(c!==0){const l=A===1?Wi(o):hA(o);if(l!==c)throw new BA(A,c,l)}this.uint8.set(o,r)}else this.uint8.fill(0,r,r+4096)})();this.in_flight_reads.set(A,i);try{await i}finally{this.in_flight_reads.delete(A)}}async writeSlot(e,A){if(A<=0)throw new Error(`Invalid page ID: ${A}. Page IDs must be positive integers.`);const n=this.in_flight_flushes.get(A);if(n){await n;return}const s=e*4096,i=this.uint8.subarray(s,s+4096);this.stampSlotChecksum(e,A);const o=i.slice();this.coordinator&&this.coordinator.onDirectPageWrite(A,o);const r=this.vfs.writePages([{pageId:A,data:o}]);this.in_flight_flushes.set(A,r);try{await r}finally{this.in_flight_flushes.delete(A)}}async spillOrWriteSlot(e,A){this.coordinator&&this.coordinator.isInTransaction()?await this.coordinator.spillUncommittedSlot(e,A):await this.writeSlot(e,A)}async resolvePageFault(e,A,n){if(n>0&&(this.coordinator&&this.coordinator.isInTransaction()?await this.coordinator.spillUncommittedSlot(e,n):await this.writeSlot(e,n)),this.coordinator&&this.coordinator.hasSpilledPage(A)){const s=e*4096,i=this.coordinator.getSpilledPage(A);this.uint8.set(i,s)}else await this.readSlot(e,A)}async flush(){var e,A;await((A=(e=this.vfs).flush)==null?void 0:A.call(e))}}const Zi=new Uint8Array([87,69,66,87,65,76]);function ms(t={}){const e=new Uint8Array(as),A=new DataView(e.buffer,e.byteOffset,e.byteLength);e.set(Zi,pi),se(A,Ui,t.walVersion??or),S(A,Ti,t.pageSize??IA),S(A,Si,t.checkpointSeq??0);const n=t.salt1??Math.floor(Math.random()*4294967295)>>>0;S(A,Ni,n);const s=t.salt2??Math.floor(Math.random()*4294967295)>>>0;S(A,Ri,s);const i=t.checksum??Ji(e,0,24);return S(A,Di,i),S(A,rr,0),e}function ys(t,e=!0){if(t.byteLength<as)throw new hs(`Truncated WAL file header: expected at least ${as} bytes, received ${t.byteLength}`);for(let c=0;c<6;c++)if(t[pi+c]!==Zi[c])throw new hs('Invalid WAL file header magic identifier (expected "WEBWAL")');const A=new DataView(t.buffer,t.byteOffset,t.byteLength),n=v(A,Ui),s=R(A,Ti),i=R(A,Si),o=R(A,Ni),r=R(A,Ri),a=R(A,Di);if(e){const c=Ji(t,0,24);if(a!==c)throw new hs(`WAL file header CRC32 checksum mismatch: stored ${a}, computed ${c}`)}return{walVersion:n,pageSize:s,checkpointSeq:i,salt1:o,salt2:r,checksum:a}}function ps(t,e){const A=new Uint8Array(XA),n=new DataView(A.buffer,A.byteOffset,A.byteLength);S(n,Fi,t.magic??_n),se(n,Li,t.frameType),se(n,bi,t.flags??0),S(n,Oi,t.txId),S(n,Pi,t.pageId),S(n,Gi,t.dbSizePages??0),S(n,wi,t.frameSeq),S(n,ar,0),e&&A.set(e.subarray(0,IA),OA);const s=t.checksum??fs(A);return S(n,ki,s),A}function ji(t){if(t.byteLength<OA)throw new Sn(`Truncated WAL frame header: expected at least ${OA} bytes, received ${t.byteLength}`);const e=new DataView(t.buffer,t.byteOffset,t.byteLength);return{magic:R(e,Fi),frameType:v(e,Li),flags:v(e,bi),txId:R(e,Oi),pageId:R(e,Pi),dbSizePages:R(e,Gi),frameSeq:R(e,wi),checksum:R(e,ki)}}function $i(t){if(t.byteLength<XA)return{valid:!1,reason:"truncated"};const e=ji(t);if(e.magic!==_n)return{valid:!1,reason:"magic_mismatch",header:e};const A=fs(t);return e.checksum!==A?{valid:!1,reason:"checksum_mismatch",header:e}:{valid:!0,header:e}}function Ol(t,e=!0){if(t.byteLength<XA)throw new Sn(`Truncated WAL frame: expected ${XA} bytes, received ${t.byteLength}`);const A=ji(t);if(A.magic!==_n)throw new Sn(`Invalid WAL frame magic: expected 0x${_n.toString(16)}, got 0x${A.magic.toString(16)}`);if(e){const s=fs(t);if(A.checksum!==s)throw new Sn(`WAL frame CRC32 checksum mismatch: stored ${A.checksum}, computed ${s}`)}const n=t.subarray(OA,XA);return{header:A,pageData:n}}const Lr=new TextDecoder,br="0123456789abcdef",zi="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function Or(t){return t>=48&&t<=57?t-48:t>=97&&t<=102?t-97+10:t>=65&&t<=70?t-65+10:-1}function KA(t){if(t>=48&&t<=57)return t-48;switch(t>=97&&t<=122&&(t=t-32),t){case 65:return 10;case 66:return 11;case 67:return 12;case 68:return 13;case 69:return 14;case 70:return 15;case 71:return 16;case 72:return 17;case 74:return 18;case 75:return 19;case 77:return 20;case 78:return 21;case 80:return 22;case 81:return 23;case 82:return 24;case 83:return 25;case 84:return 26;case 86:return 27;case 87:return 28;case 88:return 29;case 89:return 30;case 90:return 31;case 73:case 76:return 1;case 79:return 0;default:return-1}}function Pl(t,e,A){let n=0,s=-1;for(let i=0;i<Cs(t);i++){const o=t.charCodeAt(i);if(o!==45){if(n>=32)return-1;const r=Or(o);if(r<0)return-1;n%2===0?s=r:e[A+(n>>1)]=s<<4|r,n++}}return n!==32?-1:0}function Gl(t,e,A){let n=0;for(let s=0;s<16;s++){(s===4||s===6||s===8||s===10)&&(A[n++]=45);const i=t[e+s];A[n++]=br.charCodeAt(i>>4&15),A[n++]=br.charCodeAt(i&15)}A[n]=0}class fA{static encode(e,A,n=0){if(Pl(e,A,n)!==0)throw new Error(`Invalid UUID format: "${e}" (must be 36 characters with hyphens)`)}static decode(e,A=0){const n=new Uint8Array(37);return Gl(e,A,n),Lr.decode(n.subarray(0,36))}}function wl(t,e,A){if(Cs(t)!==26)return-1;let n=0n;for(let o=0;o<10;o++){const r=KA(t.charCodeAt(o));if(r<0)return-1;n=n<<5n|BigInt(r)}e[A+0]=Number(n>>40n&0xffn),e[A+1]=Number(n>>32n&0xffn),e[A+2]=Number(n>>24n&0xffn),e[A+3]=Number(n>>16n&0xffn),e[A+4]=Number(n>>8n&0xffn),e[A+5]=Number(n&0xffn);let s=0n;for(let o=10;o<18;o++){const r=KA(t.charCodeAt(o));if(r<0)return-1;s=s<<5n|BigInt(r)}let i=0n;for(let o=18;o<26;o++){const r=KA(t.charCodeAt(o));if(r<0)return-1;i=i<<5n|BigInt(r)}for(let o=0;o<5;o++)e[A+6+o]=Number(s>>BigInt((4-o)*8)&0xffn),e[A+11+o]=Number(i>>BigInt((4-o)*8)&0xffn);return 0}function kl(t,e,A){let n=0n;for(let o=0;o<6;o++)n=n<<8n|BigInt(t[e+o]);for(let o=9;o>=0;o--)A[o]=zi.charCodeAt(Number(n%32n)),n/=32n;let s=0n;for(let o=0;o<5;o++)s=s<<8n|BigInt(t[e+6+o]);let i=0n;for(let o=0;o<5;o++)i=i<<8n|BigInt(t[e+11+o]);for(let o=25;o>=18;o--)A[o]=zi.charCodeAt(Number(i&31n)),i>>=5n;for(let o=17;o>=10;o--)A[o]=zi.charCodeAt(Number(s&31n)),s>>=5n;A[26]=0}class CA{static encode(e,A,n=0){if(wl(e,A,n)!==0)throw new Error(`Invalid ULID length: "${e}" (must be 26 Crockford Base32 characters)`)}static decode(e,A=0){const n=new Uint8Array(27);return kl(e,A,n),Lr.decode(n.subarray(0,26))}}const QA=new TextEncoder,ql=new TextDecoder,Ml=new Uint8Array(4096),Hl=new DataView(Ml.buffer),me=new Uint8Array(8192),qe=new DataView(me.buffer),Ct=new Uint8Array(4096),ZA=new DataView(Ct.buffer);function Rn(t,e,A=ls,n=0){t.setUint8(e+0,A),t.setUint8(e+1,0),t.setUint16(e+2,0,!0),t.setUint16(e+4,4096,!0),t.setUint32(e+6,n,!0),t.setUint16(e+10,0,!0),t.setUint32(e+DA,0,!0)}function Pr(t,e,A=0){t.setUint8(e+0,PA),t.setUint8(e+1,0),t.setUint16(e+2,0,!0),t.setUint16(e+4,0,!0),t.setUint32(e+6,A,!0),t.setUint16(e+10,0,!0),t.setUint32(e+DA,0,!0)}function dA(t,e){return t.getUint8(e+0)}function Yl(t,e,A){t.setUint8(e+0,A)}function _t(t,e){return t.getUint16(e+2,!0)}function _A(t,e,A){t.setUint16(e+2,A,!0)}function mA(t,e){return t.getUint16(e+4,!0)}function Me(t,e,A){t.setUint16(e+4,A,!0)}function jt(t,e){return t.getUint32(e+6,!0)}function Us(t,e,A){t.setUint32(e+6,A,!0)}function je(t,e){return t.getUint16(e+10,!0)}function $e(t,e,A){t.setUint16(e+10,A,!0)}function xl(t,e){return t.getUint32(e+DA,!0)}function Vl(t,e,A){t.setUint32(e+DA,A,!0)}function Et(t,e,A){const n=e+Fe+A*2;return t.getUint16(n,!0)}function He(t,e,A,n){const s=e+Fe+A*2;t.setUint16(s,n,!0)}function Dn(t,e){const A=_t(t,e),n=mA(t,e),s=Fe+A*2;return n-s}function Gr(t,e){return Dn(t,e)+je(t,e)}function wr(t,e,A){const n=_t(t,e);if(n===0){Me(t,e,4096),$e(t,e,0);return}const s=A===0||A===e?_i:A;kt(t,s,t,e,Fe);let i=4096;const o=dA(t,e);for(let r=0;r<n;r++){const a=Et(t,e,r);let c=0;o===mn?c=2+v(t,e+a)+8:c=Ln(t,e+a),i=i-c,kt(t,s+i,t,e+a,c),He(t,s,r,i)}Me(t,s,i),$e(t,s,0),kt(t,e,t,s,4096)}function Fn(t,e,A=0,n){if(!n&&A>0&&A!==e&&A+4096<=t.byteLength){wr(t,e,A);return}const s=_t(t,e);if(s===0){Me(t,e,4096),$e(t,e,0);return}let i=t,o=A;(A===0||A===e||A+4096>t.byteLength)&&(i=Hl,o=0),kt(i,o,t,e,Fe);let r=4096;const a=dA(t,e);for(let c=0;c<s;c++){let l=0,u=t,g=0;if(n&&c===n.cell_idx)l=n.row_bytes.byteLength,u=n.row_bytes,g=0;else{const E=Et(t,e,c);a===mn?l=2+t.getUint16(e+E,!0)+8:l=Ln(t,e+E),u=t,g=e+E}r=r-l,kt(i,o+r,u,g,l),He(i,o,c,r)}Me(i,o,r),$e(i,o,0),kt(t,e,i,o,4096)}function Ln(t,e){return t.getUint16(e+1,!0)}function bn(t,e,A,n){const s=_t(t,e),i=mA(t,e),o=A.byteLength+2,r=Fe+s*2,a=i-r,c=a+je(t,e);if(o>c)return-1;o>a&&Fn(t,e,n);const l=mA(t,e),u=_t(t,e),g=l-A.byteLength;return kt(t,e+g,A,0,A.byteLength),He(t,e,u,g),_A(t,e,u+1),Me(t,e,g),u}function kr(t,e,A){const n=_t(t,e);if(A>=n)return;const s=Et(t,e,A),i=Ln(t,e+s),o=e+Fe,r=o+(A+1)*2,a=o+A*2,c=(n-1-A)*2;c>0&&kt(t,a,t,r,c),_A(t,e,n-1),$e(t,e,je(t,e)+i)}function vi(t,e,A,n,s){const i=_t(t,e);if(A<0||A>=i)throw new Error(`Invalid cell index ${A} for update`);const o=Et(t,e,A),r=Ln(t,e+o),a=n.byteLength,c=new Uint8Array(t.buffer);if(a<=r)return c.set(n,t.byteOffset+e+o),a<r&&$e(t,e,je(t,e)+(r-a)),!0;const l=Gr(t,e),u=a-r;if(l>=u){if(Dn(t,e)<a)return Fn(t,e,s,{cell_idx:A,row_bytes:n}),!0;$e(t,e,je(t,e)+r);const h=mA(t,e)-a;return c.set(n,t.byteOffset+e+h),He(t,e,A,h),Me(t,e,h),!0}return!1}function Xl(t){const e=Array.isArray(t)?t:t.columns,A=Math.ceil(e.length/8);let n=0,s=0;for(let i=0;i<e.length;i++){const o=e[i];o.type===_.INT32?n+=4:o.type===_.INT64||o.type===_.FLOAT64?n+=8:o.type===_.UUID||o.type===_.ULID?n+=16:(o.type===_.TEXT||o.type===_.BLOB)&&s++}return{null_bitmap_bytes:A,fixed_slice_size:n,var_col_count:s}}function to(t,e){const A=Array.isArray(t)?t:t.columns,n=A.length;if(n>We)throw new Un(n,We);const s=n+7>>3;for(let E=0;E<s;E++)me[3+E]=0;let i=0,o=0;for(let E=0;E<n;E++){const h=A[E],B=e[h.name],Q=B==null,d=h.type;if(Q){if(h.flags&gt.NOT_NULL)throw new us(h.name);me[3+(E>>3)]|=1<<(E&7),(d===_.TEXT||d===_.BLOB)&&o++}else switch(d){case _.INT32:i+=4;break;case _.INT64:case _.FLOAT64:i+=8;break;case _.UUID:case _.ULID:i+=16;break;case _.TEXT:case _.BLOB:o++;break}}const r=o<<2,a=3+s+i+r;if(a>2048)throw new Mi(a,2048);let c=3+s,l=c+i,u=a;for(let E=0;E<n;E++){const h=A[E],B=h.type;if((me[3+(E>>3)]&1<<(E&7))!==0){(B===_.TEXT||B===_.BLOB)&&(qe.setUint16(l,0,!0),qe.setUint16(l+2,0,!0),l+=4);continue}const d=e[h.name];switch(B){case _.INT32:qe.setInt32(c,Number(d),!0),c+=4;break;case _.INT64:qe.setBigInt64(c,BigInt(d),!0),c+=8;break;case _.FLOAT64:qe.setFloat64(c,Number(d),!0),c+=8;break;case _.UUID:fA.encode(String(d),me,c),c+=16;break;case _.ULID:CA.encode(String(d),me,c),c+=16;break;case _.TEXT:{const p=String(d??"");let U=0;if(p.length>0)if(u+p.length*3<=me.byteLength)U=QA.encodeInto(p,me.subarray(u)).written;else{const N=QA.encode(p);U=N.byteLength,u+U<=2048&&me.set(N,u)}u<=2048&&(qe.setUint16(l,u,!0),qe.setUint16(l+2,U,!0)),u+=U,l+=4;break}case _.BLOB:{const p=d instanceof Uint8Array?d:new Uint8Array(d),U=p.byteLength;u+U<=2048&&(qe.setUint16(l,u,!0),qe.setUint16(l+2,U,!0),me.set(p,u)),u+=U,l+=4;break}}}const g=u;if(g>2048)throw new Mi(g,2048);return me[0]=1,qe.setUint16(1,g,!0),me.slice(0,g)}function wA(t,e,A){let n,s,i;if(t instanceof DataView){s=t,i=e;const B=A;n=Array.isArray(B)?B:B.columns}else n=Array.isArray(t)?t:t.columns,s=e,i=A;const o={},r=n.length,a=r+7>>3,c=i+3,l=c+a;let u=l,g=r>0?s.getUint8(c):0;for(let B=0;B<r;B++)if(!(B&7)&&B>0&&(g=s.getUint8(c+(B>>3))),!(g&1<<(B&7))){const Q=n[B].type;Q===_.INT32?u+=4:Q===_.INT64||Q===_.FLOAT64?u+=8:(Q===_.UUID||Q===_.ULID)&&(u+=16)}const E=u;u=l;let h=0;g=r>0?s.getUint8(c):0;for(let B=0;B<r;B++){!(B&7)&&B>0&&(g=s.getUint8(c+(B>>3)));const Q=n[B],d=Q.type;if((g&1<<(B&7))!==0){o[Q.name]=null,(d===_.TEXT||d===_.BLOB)&&h++;continue}switch(d){case _.INT32:o[Q.name]=s.getInt32(u,!0),u+=4;break;case _.INT64:o[Q.name]=s.getBigInt64(u,!0),u+=8;break;case _.FLOAT64:o[Q.name]=s.getFloat64(u,!0),u+=8;break;case _.UUID:{const U=new Uint8Array(s.buffer,s.byteOffset+u,16);o[Q.name]=fA.decode(U,0),u+=16;break}case _.ULID:{const U=new Uint8Array(s.buffer,s.byteOffset+u,16);o[Q.name]=CA.decode(U,0),u+=16;break}case _.TEXT:{const U=E+(h<<2),N=s.getUint16(U,!0),m=s.getUint16(U+2,!0);if(m===0)o[Q.name]="";else{const T=s.byteOffset+i+N,F=new Uint8Array(s.buffer,T,m);o[Q.name]=ql.decode(F)}h++;break}case _.BLOB:{const U=E+(h<<2),N=s.getUint16(U,!0),m=s.getUint16(U+2,!0),T=s.byteOffset+i+N,F=new Uint8Array(m);m>0&&F.set(new Uint8Array(s.buffer,T,m)),o[Q.name]=F,h++;break}}}return o}function qr(t,e,A=0){Rn(t,e,qi,A)}function Ts(t,e){return t.getUint32(e+6,!0)}function Mr(t,e,A){t.setUint32(e+6,A,!0)}function Hr(t,e,A,n){const s=_t(t,e);if(s>=vo)return-1;const o=mA(t,e)-zo,r=e+o;return t.setUint32(r,A,!0),t.setBigInt64(r+4,n,!0),He(t,e,s,o),_A(t,e,s+1),Me(t,e,o),s+1}function Jl(t,e,A){const n=_t(t,e);if(n===0)return Ts(t,e);let s=0,i=n-1,o=-1;for(;s<=i;){const r=s+i>>1,a=Et(t,e,r),c=t.getBigInt64(e+a+4,!0);A<=c?(o=t.getUint32(e+a,!0),i=r-1):s=r+1}return o!==-1?o:Ts(t,e)}function Wl(t,e,A){const n=_t(t,e),s=tr;if(n<=s)throw new Error(`Cannot split interior page with only ${n} cells`);const i=Et(t,e,s),o=t.getUint32(e+i,!0),r=t.getBigInt64(e+i+4,!0),a=Ts(t,e);qr(t,A,a);for(let c=s+1;c<n;c++){const l=Et(t,e,c),u=t.getUint32(e+l,!0),g=t.getBigInt64(e+l+4,!0);Hr(t,A,u,g)}return Mr(t,e,o),_A(t,e,s),{median_rowid:r,promoted_child_page_id:o,right_child_page_id:a}}function Ss(t,e,A=0){Rn(t,e,mn,A)}function Kl(t,e,A,n,s,i){if(t!==n)return t-n;if(t===_.NULL)return A<i?-1:A>i?1:0;let o=0;if(t===_.INT32||t===_.INT64||t===_.FLOAT64){const r=typeof e=="bigint"?Number(e):e,a=typeof s=="bigint"?Number(s):s;o=r<a?-1:r>a?1:0}else if(t===_.TEXT||t===_.UUID||t===_.ULID){const r=String(e),a=String(s);o=r<a?-1:r>a?1:0}else if(t===_.BLOB){const r=e,a=s,c=Math.min(r.length,a.length);for(let l=0;l<c;l++)if(r[l]!==a[l]){o=r[l]<a[l]?-1:1;break}o===0&&(o=r.length-a.length)}return o!==0?o:A<i?-1:A>i?1:0}function Ns(t,e,A,n,s,i,o,r,a,c){let l=_.TEXT,u=0;if(A===0)l=_.NULL;else if(s===_.TEXT)if(A===4){const E=y(t,e+2),h=y(t,e+3);E===0&&h===0||E===255&&h===255?(l=_.INT32,u=vt(t,e)):l=_.TEXT}else A===2&&y(t,e)<32&&y(t,e+1)<32?l=_.BLOB:l=_.TEXT;else A===2?l=_.BLOB:A===4?(l=_.INT32,u=vt(t,e)):s===_.UUID&&A===16?l=_.UUID:s===_.ULID&&A===16?l=_.ULID:s===_.FLOAT64&&A===8?(l=_.FLOAT64,u=st(t,e)):s===_.INT64&&A===8?(l=_.INT64,u=Qs(ie(t,e))):s===_.BLOB?A===5||A===6?l=_.TEXT:l=_.BLOB:l=_.TEXT;if(i!==l)return i-l;if(i===_.NULL)return c<n?-1:c>n?1:0;let g=0;if(i===_.INT32||i===_.INT64||i===_.FLOAT64)g=o<u?-1:o>u?1:0;else{const E=a<A?a:A;for(let h=0;h<E;h++){const B=y(t,r+h),Q=y(t,e+h);if(B!==Q){g=B<Q?-1:1;break}}g===0&&(g=a-A)}return g!==0?g:c<n?-1:c>n?1:0}function Rs(t,e,A,n,s,i,o,r,a){const c=2+o+8,l=c+2,u=_t(t,e),g=Dn(t,e),E=g+je(t,e);if(l>E)return-1;l>g&&wr(t,e,a);const B=mA(t,e)-c,Q=e+B;se(t,Q,o),o>0&&(A===_.INT32?q(t,Q+2,_s(s)):A===_.INT64?Ze(t,Q+2,n):A===_.FLOAT64?ge(t,Q+2,s):i!==Q+2&&kt(t,Q+2,t,i,o)),Ze(t,Q+2+o,r);let d=0,p=u-1,U=u;for(;d<=p;){const N=d+p>>1,m=Et(t,e,N),T=v(t,e+m),F=ie(t,e+m+2+T);Ns(t,e+m+2,T,F,A,A,s,Q+2,o,r)<0?(U=N,p=N-1):d=N+1}for(let N=u-1;N>=U;N--){const m=Et(t,e,N);He(t,e,N+1,m)}return He(t,e,U,B),_A(t,e,u+1),Me(t,e,B),U}function Zl(t,e,A,n,s,i,o,r){const a=_t(t,e);let c=0,l=a-1;for(;c<=l;){const u=c+l>>1,g=Et(t,e,u),E=v(t,e+g),h=ie(t,e+g+2+E),B=o!==0?r:h,Q=Ns(t,e+g+2,E,h,A,A,n,s,i,B);if(Q===0){if(o===0){let d=u;for(;d>0;){const p=d-1,U=Et(t,e,p),N=v(t,e+U);if(Ns(t,e+U+2,N,0n,A,A,n,s,i,0n)===0)d=p;else break}return d}return u}else Q<0?l=u-1:c=u+1}return-(c+1)}function eo(t,e,A,n,s,i=0){let o=A;if((A===_.NULL||n===null||n===void 0)&&(o=_.NULL),o===_.NULL){if(i>0&&i!==e&&i+4096<=t.byteLength)return Rs(t,e,_.NULL,0n,0,0,0,s,i)}else if(o===_.INT32){const m=Number(n)|0;if(i>0&&i!==e&&i+4096<=t.byteLength)return Rs(t,e,_.INT32,0n,m,0,4,s,i)}else if(o===_.INT64){const m=BigInt(n);if(i>0&&i!==e&&i+4096<=t.byteLength)return Rs(t,e,_.INT64,m,Number(m),0,8,s,i)}else if(o===_.FLOAT64){const m=Number(n);if(i>0&&i!==e&&i+4096<=t.byteLength)return Rs(t,e,_.FLOAT64,0n,m,0,8,s,i)}let r=0,a=0,c=null;if(o===_.NULL)r=0;else if(o===_.INT32)a=Number(n)|0,ZA.setInt32(0,a,!0),r=4;else if(o===_.INT64){const m=BigInt(n);a=Number(m),ZA.setBigInt64(0,m,!0),r=8}else if(o===_.FLOAT64)a=Number(n),ZA.setFloat64(0,a,!0),r=8;else if(o===_.UUID)fA.encode(String(n),Ct,0),r=16;else if(o===_.ULID)CA.encode(String(n),Ct,0),r=16;else if(o===_.TEXT){const m=String(n);m.length*3<=Ct.byteLength?r=QA.encodeInto(m,Ct).written:(c=QA.encode(m),r=c.byteLength)}else c=n instanceof Uint8Array?n:new Uint8Array(n),r=c.byteLength;const l=2+r+8,u=l+2,g=_t(t,e),E=Dn(t,e),h=E+je(t,e);if(u>h)return-1;u>E&&Fn(t,e,i);const Q=mA(t,e)-l,d=e+Q;t.setUint16(d,r,!0),r>0&&(c!==null?kt(t,d+2,c,0,r):kt(t,d+2,Ct,0,r)),t.setBigInt64(d+2+r,s,!0);let p=0,U=g-1,N=g;for(;p<=U;){const m=p+U>>1,T=Et(t,e,m),F=t.getUint16(e+T,!0),D=t.getBigInt64(e+T+2+F,!0);Ns(t,e+T+2,F,D,o,o,a,d+2,r,s)<0?(N=m,U=m-1):p=m+1}for(let m=g-1;m>=N;m--){const T=Et(t,e,m);He(t,e,m+1,T)}return He(t,e,N,Q),_A(t,e,g+1),Me(t,e,Q),N}function Ao(t,e,A){const n=_t(t,e);if(A<0||A>=n)return;const s=Et(t,e,A),o=2+t.getUint16(e+s,!0)+8,r=e+Fe,a=r+(A+1)*2,c=r+A*2,l=(n-1-A)*2;l>0&&kt(t,c,t,a,l),_A(t,e,n-1),$e(t,e,je(t,e)+o)}function Ds(t,e,A,n,s){let i=A;(A===_.NULL||n===null||n===void 0)&&(i=_.NULL);const o=s!==void 0?1:0,r=s!==void 0?s:0n;if(i===_.NULL||i===_.INT32||i===_.INT64||i===_.FLOAT64){const E=i===_.NULL?0:Number(n),h=Zl(t,e,i,E,0,0,o,r);return h>=0?{found:!0,slot_idx:h}:{found:!1,slot_idx:-h-1}}let a=0,c=Ct;if(i===_.UUID)fA.encode(String(n),Ct,0),a=16;else if(i===_.ULID)CA.encode(String(n),Ct,0),a=16;else if(i===_.TEXT){const E=String(n);E.length*3<=Ct.byteLength?a=QA.encodeInto(E,Ct).written:(c=QA.encode(E),a=c.byteLength)}else c=n instanceof Uint8Array?n:new Uint8Array(n),a=c.byteLength;const l=_t(t,e);let u=0,g=l-1;for(;u<=g;){const E=u+g>>1,h=Et(t,e,E),B=t.getUint16(e+h,!0),Q=t.getBigInt64(e+h+2+B,!0),d=e+h+2;let p=_.TEXT;if(B===0)p=_.NULL;else if(i===_.TEXT)if(B===4){const N=t.getUint8(d+2),m=t.getUint8(d+3);(N===0&&m===0||N===255&&m===255)&&(p=_.INT32)}else B===2&&t.getUint8(d)<32&&t.getUint8(d+1)<32&&(p=_.BLOB);else B===2?p=_.BLOB:B===4?p=_.INT32:i===_.UUID&&B===16?p=_.UUID:i===_.ULID&&B===16?p=_.ULID:i===_.BLOB&&(p=B===5||B===6?_.TEXT:_.BLOB);let U=0;if(i!==p)U=i-p;else{const N=a<B?a:B;for(let m=0;m<N;m++){const T=c[m],F=t.getUint8(d+m);if(T!==F){U=T<F?-1:1;break}}U===0&&(U=a-B),U===0&&o!==0&&(U=r<Q?-1:r>Q?1:0)}if(U===0){if(o===0){let N=E;for(;N>0;){const m=N-1,T=Et(t,e,m);if(t.getUint16(e+T,!0)!==a)break;const D=e+T+2;let O=!0;for(let w=0;w<a;w++)if(c[w]!==t.getUint8(D+w)){O=!1;break}if(O)N=m;else break}return{found:!0,slot_idx:N}}return{found:!0,slot_idx:E}}else U<0?g=E-1:u=E+1}return{found:!1,slot_idx:u}}function jl(t,e){if(e==null)return new Uint8Array(0);if(t===_.INT32){const A=new Uint8Array(4);return new DataView(A.buffer).setInt32(0,Number(e),!0),A}if(t===_.INT64){const A=new Uint8Array(8);return new DataView(A.buffer).setBigInt64(0,BigInt(e),!0),A}if(t===_.FLOAT64){const A=new Uint8Array(8);return new DataView(A.buffer).setFloat64(0,Number(e),!0),A}if(t===_.UUID){const A=new Uint8Array(16);return fA.encode(String(e),A,0),A}if(t===_.ULID){const A=new Uint8Array(16);return CA.encode(String(e),A,0),A}return t===_.TEXT?QA.encode(String(e)):e instanceof Uint8Array?e:new Uint8Array(e)}function Fs(t,e,A,n){let s=0;for(let i=0;i<A;i++){const o=t[e[i]],r=n[o.name],a=o.type;if(Ct[s]=a,r==null){Ct[s+1]=0,Ct[s+2]=0,s+=3;continue}switch(a){case _.INT32:Ct[s+1]=4,Ct[s+2]=0,ZA.setInt32(s+3,Number(r),!0),s+=7;break;case _.INT64:Ct[s+1]=8,Ct[s+2]=0,ZA.setBigInt64(s+3,BigInt(r),!0),s+=11;break;case _.FLOAT64:Ct[s+1]=8,Ct[s+2]=0,ZA.setFloat64(s+3,Number(r),!0),s+=11;break;case _.UUID:Ct[s+1]=16,Ct[s+2]=0,fA.encode(String(r),Ct,s+3),s+=19;break;case _.ULID:Ct[s+1]=16,Ct[s+2]=0,CA.encode(String(r),Ct,s+3),s+=19;break;case _.TEXT:{const c=String(r);let l=0;c.length>0&&(l=QA.encodeInto(c,Ct.subarray(s+3)).written),Ct[s+1]=l&255,Ct[s+2]=l>>8&255,s+=3+l;break}default:{const c=r instanceof Uint8Array?r:new Uint8Array(r),l=c.byteLength;Ct[s+1]=l&255,Ct[s+2]=l>>8&255,Ct.set(c,s+3),s+=3+l;break}}}return Ct.slice(0,s)}const $l=2654435769;function On(t,e){const A=Math.imul(t,$l);return(A^A>>>16)>>>0&e}function Yr(t,e,A,n){const s=A-1;let i=On(n,s);for(let o=0;o<A;o++){const r=e+i*gA,a=t.getUint32(r,!0);if(a===0)return-1;if(a===n)return t.getUint32(r+4,!0);i=i+1&s}return-1}function xr(t,e,A,n,s){const i=A-1;let o=On(n,i);for(let r=0;r<A;r++){const a=e+o*gA,c=t.getUint32(a,!0);if(c===0||c===n){t.setUint32(a,n,!0),t.setUint32(a+4,s,!0);return}o=o+1&i}throw new Error(`BufferPool page table full: cannot insert page ${n}`)}function no(t,e,A,n){const s=A-1;let i=On(n,s),o=!1;for(let c=0;c<A;c++){const l=e+i*gA,u=t.getUint32(l,!0);if(u===0)return!1;if(u===n){o=!0;break}i=i+1&s}if(!o)return!1;let r=i;for(;;){r=r+1&s;const c=e+r*gA,l=t.getUint32(c,!0);if(l===0)break;const u=On(l,s);if((i-u&s)<(r-u&s)){const g=t.getUint32(c+4,!0),E=e+i*gA;t.setUint32(E,l,!0),t.setUint32(E+4,g,!0),i=r}}const a=e+i*gA;return t.setUint32(a,0,!0),t.setUint32(a+4,0,!0),!0}function zl(t){return t*4096}function jA(t,e,A){return R(t,e+A*4)}function so(t,e,A,n){S(t,e+A*4,n)}function he(t,e,A,n){return Yr(t,e,A,n)}function Vr(t,e,A,n,s,i){Fr(i>0,"page_id must be > 0");const o=jA(t,e,s);return o>0&&o!==i&&no(t,A,n,o),so(t,e,s,i),xr(t,A,n,i,s),0}function Xr(t,e,A,n,s){const i=jA(t,e,s);return i>0?(no(t,A,n,i),so(t,e,s,0),1):0}function Jr(t,e,A){Rr(t,e,A)}function Wr(t,e,A){Dr(t,e,A)}function io(t,e,A){return Nr(t,e,A)===1}function oo(t,e){if(t[e]>=4294967295)throw new Error(`Pin count overflow on slot ${e}`);t[e]++}function ro(t,e){e!==0&&t[e]>0&&t[e]--}function $A(t,e){return e===0||t[e]>0}function ao(t,e,A,n,s,i){const o=new DataView(t);for(let a=1;a<s;a++)if(R(o,n+a*4)===0&&!$A(A,a))return{candidate_slot:a,next_clock_hand:i};let r=i;for(let a=0;a<s*2;a++){if(r=(r+1)%s,r===0||$A(A,r))continue;const c=new DataView(t,r*4096,4096);if(dA(c,0)!==yn)if(e[r]===1)e[r]=0;else return{candidate_slot:r,next_clock_hand:r}}throw new Error("Cache deadlock: all slots are pinned")}function co(t,e,A,n,s,i,o,r){const a=new DataView(t);let c=-1,l=o;if(r>1&&r<=i&&jA(a,n,r-1)===0&&!$A(A,r-1))c=r-1;else{const Q=ao(t,e,A,n,i,o);c=Q.candidate_slot,l=Q.next_clock_hand}const u=jA(a,n,c),g=io(new Uint8Array(t),s,c),E=new DataView(t,c*4096,4096),h=u>0&&dA(E,0)===PA,B=g&&!h&&u>0?u:0;return{candidate_slot:c,flush_page_id:B,next_clock_hand:l}}const j=0,x=4,fe=8,zA=12,vA=16,ye=20,Pn=24,Kr=28,lo=32,vl=40,Zr=44,jr=48,$r=52,zr=56,vr=60,ta=64,Ls=68,ea=72,Aa=32,$=0,ce=1,be=4,pe=8,It=16,pt=24,mt=28,na=2120,tu=24,xt=0,Gn=4,ze=8,Jt=12,Ht=16,bs=2504,sa=260,ia=6664,wn=6928,kn=32,oa=0,uo=1,go=4,Os=8,ra=12,aa=20,qn=7184,Ps=32,Gs=0,ca=1,ws=2,Mn=4,Eo=8,ks=12,la=16,Hn=20,eu=24,qs=7312,Ms=32,Yn=0,Hs=1,Io=2,Bo=3,tn=4,xn=8,en=12,Vn=16,Ys=20,ua=7440,ho=7680,fo=99;function Xn(t){return t>=65&&t<=90?t+32:t}function Au(t){return t>=97&&t<=122?t-32:t}function k(t,e){return t+ea+(e<<5)}function qt(t,e){return t+na+e*tu}function xs(t,e,A){const n=R(t,e+lo);return A<n?e+bs+A*sa:e+bs}function te(t,e,A,n){const s=n+7&4294967288,i=R(t,e+ta);return i+s>EA?0:(S(t,e+ta,i+s),A+i)}function Qt(t,e){K(t,e+$,1),K(t,e+ce,_.NULL),q(t,e+be,0),Ze(t,e+pe,0n),ge(t,e+It,0),S(t,e+pt,0),S(t,e+mt,0)}function Oe(t,e,A){K(t,e+$,0),K(t,e+ce,_.INT32),q(t,e+be,A),Ze(t,e+pe,ds(A)),ge(t,e+It,A),S(t,e+pt,0),S(t,e+mt,0)}function ga(t,e,A){const n=Qs(A);K(t,e+$,0),K(t,e+ce,_.INT64),q(t,e+be,Nt(A)),Ze(t,e+pe,A),ge(t,e+It,n),S(t,e+pt,0),S(t,e+mt,0)}function Yt(t,e,A){K(t,e+$,0),K(t,e+ce,_.FLOAT64),q(t,e+be,_s(A)),Ze(t,e+pe,ds(A)),ge(t,e+It,A),S(t,e+pt,0),S(t,e+mt,0)}function $t(t,e,A,n,s){K(t,e+$,0),K(t,e+ce,A),q(t,e+be,0),Ze(t,e+pe,0n),ge(t,e+It,0),S(t,e+pt,n),S(t,e+mt,s)}function Vs(t,e,A){e!==A&&kt(t,e,t,A,Aa)}function Co(t,e,A,n,s){if(kt(t,n,t,s,Aa),y(t,s+$)!==0)return 0;const o=y(t,s+ce);if(o===_.TEXT||o===_.BLOB||o===_.UUID||o===_.ULID){const r=R(t,s+pt),a=R(t,s+mt);if(a>0&&r<A){const c=te(t,e,A,a);if(c===0)return-1;kt(t,c,t,r,a),S(t,n+pt,c)}}return 0}function Ea(t){return t<10?48+t:87+t}function Qo(t){return t<10?48+t:t<18?65+(t-10):t===18?74:t===19?75:t===20?77:t===21?78:t<26?80+(t-22):86+(t-26)}function Ia(t,e,A){let n=0;for(let s=0;s<16;s++){(s===4||s===6||s===8||s===10)&&(K(t,A+n,45),n++);const i=y(t,e+s);K(t,A+n,Ea(i>>4&15)),n++,K(t,A+n,Ea(i&15)),n++}}function nu(t,e,A,n){let s=0,i=-1;for(let o=0;o<A;o++){const r=y(t,e+o);if(r!==45){if(s>=32)return-1;const a=Or(r);if(a<0)return-1;s&1?K(t,n+(s>>1),i<<4|a):i=a,s++}}return s===32?0:-1}function Ba(t,e,A){let n=0n;for(let o=0;o<6;o++)n=n<<8n|BigInt(y(t,e+o));for(let o=9;o>=0;o--){const r=Nt(n&31n);K(t,A+o,Qo(r)),n=n>>5n}let s=0n;for(let o=0;o<5;o++)s=s<<8n|BigInt(y(t,e+6+o));let i=0n;for(let o=0;o<5;o++)i=i<<8n|BigInt(y(t,e+11+o));for(let o=25;o>=18;o--){const r=Nt(i&31n);K(t,A+o,Qo(r)),i=i>>5n}for(let o=17;o>=10;o--){const r=Nt(s&31n);K(t,A+o,Qo(r)),s=s>>5n}}function su(t,e,A,n){if(A!==26)return-1;let s=0n;for(let r=0;r<10;r++){const a=KA(y(t,e+r));if(a<0)return-1;s=s<<5n|BigInt(a)}K(t,n+0,Nt(s>>40n&0xffn)),K(t,n+1,Nt(s>>32n&0xffn)),K(t,n+2,Nt(s>>24n&0xffn)),K(t,n+3,Nt(s>>16n&0xffn)),K(t,n+4,Nt(s>>8n&0xffn)),K(t,n+5,Nt(s&0xffn));let i=0n;for(let r=10;r<18;r++){const a=KA(y(t,e+r));if(a<0)return-1;i=i<<5n|BigInt(a)}let o=0n;for(let r=18;r<26;r++){const a=KA(y(t,e+r));if(a<0)return-1;o=o<<5n|BigInt(a)}return K(t,n+6,Nt(i>>32n&0xffn)),K(t,n+7,Nt(i>>24n&0xffn)),K(t,n+8,Nt(i>>16n&0xffn)),K(t,n+9,Nt(i>>8n&0xffn)),K(t,n+10,Nt(i&0xffn)),K(t,n+11,Nt(o>>32n&0xffn)),K(t,n+12,Nt(o>>24n&0xffn)),K(t,n+13,Nt(o>>16n&0xffn)),K(t,n+14,Nt(o>>8n&0xffn)),K(t,n+15,Nt(o&0xffn)),0}function Ue(t,e,A){if(A===0)return 0;if(e!==0){const n=he(t,Be,Ie,A);if(n>=0)return n*4096}return(A-1)*4096}function kA(t,e,A){return y(t,e+(A>>3))&1<<(A&7)?1:0}function Jn(t,e,A,n,s){let i=e+A;for(let o=0;o<s;o++)if(kA(t,e,o)===0){const r=y(t,n+4+o);r===_.INT32?i+=4:r===_.INT64||r===_.FLOAT64?i+=8:(r===_.UUID||r===_.ULID)&&(i+=16)}return i}function ha(t,e,A){let n=0;for(let s=0;s<A;s++){const i=y(t,e+4+s);(i===_.TEXT||i===_.BLOB)&&n++}return n}function Xs(t,e,A,n,s){const i=A<s?A:s;for(let o=0;o<i;o++){const r=y(t,e+o),a=y(t,n+o);if(r!==a)return r<a?-1:1}return A===s?0:A<s?-1:1}function ve(t,e,A){const n=y(t,e+$),s=y(t,A+$);if(n!==0||s!==0)return-2;const i=y(t,e+ce),o=y(t,A+ce);if(i===_.INT64&&o===_.INT64){const E=ie(t,e+pe),h=ie(t,A+pe);return E<h?-1:E>h?1:0}const r=i===_.INT32||i===_.INT64||i===_.FLOAT64?1:0,a=o===_.INT32||o===_.INT64||o===_.FLOAT64?1:0;if(r!==0&&a!==0){const E=st(t,e+It),h=st(t,A+It);return E<h?-1:E>h?1:0}const c=R(t,e+pt),l=R(t,e+mt),u=R(t,A+pt),g=R(t,A+mt);return Xs(t,c,l,u,g)}function fa(t,e,A,n,s,i){const o=Et(t,A,n),r=A+o,a=v(t,r);if(a===0)return 1;const c=r+2;if(s===_.INT32){const g=st(t,i+It),E=vt(t,c);return g<E?-1:g>E?1:0}if(s===_.INT64){const g=ie(t,c);if(y(t,i+ce)===_.INT64){const Q=ie(t,i+pe);return Q<g?-1:Q>g?1:0}const h=st(t,i+It),B=Qs(g);return h<B?-1:h>B?1:0}if(s===_.FLOAT64){const g=st(t,i+It),E=st(t,c);return g<E?-1:g>E?1:0}const l=R(t,i+pt),u=R(t,i+mt);if(s===_.UUID&&a===16){const g=e+ho;return Ia(t,c,g),Xs(t,l,u,g,36)}if(s===_.ULID&&a===16){const g=e+ho;return Ba(t,c,g),Xs(t,l,u,g,26)}return Xs(t,l,u,c,a)}function iu(t,e,A,n,s){const i=_t(t,A);let o=0,r=i-1,a=-1;for(;o<=r;){const c=o+r>>1,l=fa(t,e,A,c,n,s);l<=0?(l===0&&(a=c),r=c-1):o=c+1}return a}function ou(t,e,A,n,s){const i=_t(t,A);let o=0,r=i-1,a=-1;for(;o<=r;){const c=o+r>>1;fa(t,e,A,c,n,s)<=0?(a=c,r=c-1):o=c+1}return a}function Ca(t,e,A,n,s){let i=0,o=0,r=-1,a=-1;for(;i<A;){const c=o<s?y(t,n+o):0,l=y(t,e+i);if(o<s&&(c===95||Xn(c)===Xn(l)))i++,o++;else if(o<s&&c===37)r=o,o++,a=i;else if(r!==-1)o=r+1,a++,i=a;else return 0}for(;o<s&&y(t,n+o)===37;)o++;return o===s?1:0}function ru(t,e,A,n,s){if(s===0)return 1;if(s>A)return 0;const i=A-s;for(let o=0;o<=i;o++){let r=1;for(let a=0;a<s;a++)if(y(t,e+o+a)!==y(t,n+a)){r=0;break}if(r!==0)return 1}return 0}function au(t,e,A,n,s){if(s>A)return 0;for(let i=0;i<s;i++)if(y(t,e+i)!==y(t,n+i))return 0;return 1}function cu(t,e,A,n,s){if(s>A)return 0;const i=A-s;for(let o=0;o<s;o++)if(y(t,e+i+o)!==y(t,n+o))return 0;return 1}function lu(t,e,A){let n=0,s=0;for(;s<A;){const i=y(t,e+s);i&128?(i&224)===192?s+=2:(i&240)===224?s+=3:s+=4:s+=1,n++}return n}function uu(t,e,A,n,s){if(y(t,n+$)!==0){Qt(t,s);return}const i=R(t,n+pt),o=R(t,n+mt);if(o===0){$t(t,s,_.TEXT,0,0);return}const r=te(t,e,A,o);if(r===0){q(t,e+x,L.ARENA_EXHAUSTED);return}for(let a=0;a<o;a++)K(t,r+a,Xn(y(t,i+a)));$t(t,s,_.TEXT,r,o)}function gu(t,e,A,n,s){if(y(t,n+$)!==0){Qt(t,s);return}const i=R(t,n+pt),o=R(t,n+mt);if(o===0){$t(t,s,_.TEXT,0,0);return}const r=te(t,e,A,o);if(r===0){q(t,e+x,L.ARENA_EXHAUSTED);return}for(let a=0;a<o;a++)K(t,r+a,Au(y(t,i+a)));$t(t,s,_.TEXT,r,o)}function Eu(t,e,A){if(y(t,e+$)!==0){Qt(t,A);return}const n=R(t,e+pt),s=R(t,e+mt);let i=0,o=s;for(;i<o;){const r=y(t,n+i);if(r===32||r===9||r===10||r===13)i++;else break}for(;o>i;){const r=y(t,n+o-1);if(r===32||r===9||r===10||r===13)o--;else break}$t(t,A,_.TEXT,n+i,o-i)}function Iu(t,e,A,n,s){if(y(t,e+$)!==0||y(t,A+$)!==0){Qt(t,s);return}const i=R(t,e+pt),o=R(t,e+mt),r=vt(t,A+be)-1,a=r<0?0:r,c=y(t,n+$)===0?1:0;let l=2147483647;if(c!==0){const B=vt(t,n+be);l=B<0?0:B}let u=0,g=0,E=o;for(;g<o&&u<a;){const B=y(t,i+g);B&128?(B&224)===192?g+=2:(B&240)===224?g+=3:g+=4:g+=1,u++}E=g;let h=0;for(;g<o&&h<l;){const B=y(t,i+g);B&128?(B&224)===192?g+=2:(B&240)===224?g+=3:g+=4:g+=1,h++}$t(t,s,_.TEXT,i+E,g-E)}function Qa(t,e,A){if(A===0n)return K(t,e,48),1;let n=A,s=0;n<0n&&(s=1,n=-n);let i=0;const o=e+32;for(;n>0n;){const a=Nt(n%10n);K(t,o+i,48+a),i++,n=n/10n}let r=0;s!==0&&(K(t,e,45),r++);for(let a=0;a<i;a++)K(t,e+r,y(t,o+i-1-a)),r++;return r}function Bu(t,e,A,n,s,i){let o=0,r=0;const a=e+ho;for(let g=0;g<s;g++){const E=k(e,n+g);if(y(t,E+$)===0){r=1;const h=y(t,E+ce);h===_.TEXT||h===_.BLOB||h===_.UUID||h===_.ULID?o+=R(t,E+mt):o+=Qa(t,a,ie(t,E+pe))}}const c=k(e,i);if(r===0){Qt(t,c);return}if(o===0){$t(t,c,_.TEXT,0,0);return}const l=te(t,e,A,o);if(l===0){q(t,e+x,L.ARENA_EXHAUSTED);return}let u=0;for(let g=0;g<s;g++){const E=k(e,n+g);if(y(t,E+$)===0){const h=y(t,E+ce);if(h===_.TEXT||h===_.BLOB||h===_.UUID||h===_.ULID){const B=R(t,E+pt),Q=R(t,E+mt);Q>0&&(kt(t,l+u,t,B,Q),u+=Q)}else{const B=Qa(t,a,ie(t,E+pe));kt(t,l+u,t,a,B),u+=B}}}$t(t,c,_.TEXT,l,o)}function hu(t){return t<0?-t:t}function da(t){const e=Math.trunc(t);return t<e?e-1:e}function fu(t){const e=Math.trunc(t);return t>e?e+1:e}function Cu(t){return da(t+.5)}function Qu(t,e,A,n){if(y(t,n+$)!==0)return 0;const s=R(t,e+Zr);if(A>=s)return 0;const i=e+ua+A*8,o=R(t,i),r=R(t,i+4);for(let a=0;a<o;a++){const c=r+(a<<5);if(ve(t,n,c)===0)return 1}return 0}function _a(t,e,A,n,s){const i=R(t,e+vA),o=2+n;if(i+o>ns)return q(t,e+x,L.BUFFER_FULL),S(t,e+j,s),L.BUFFER_FULL;const r=_e+i;return se(t,r,n),kt(t,r+2,t,A,n),S(t,e+vA,i+o),S(t,e+zA,R(t,e+zA)+1),L.RUNNING}function ma(t,e,A,n,s){const i=e+ia,o=y(t,i),r=v(t,i+2);if(o!==0&&n===r)return y(t,i+4+s);if(R(t,e+lo)>0){const u=e+bs,g=v(t,u);if(n===g)return y(t,u+4+s)}const c=k(e,A+s);if(y(t,c+$)!==0)return _.TEXT;const l=y(t,c+ce);if(l===_.FLOAT64){const u=st(t,c+It);return u===Math.trunc(u)&&u>=-2147483648&&u<=2147483647?_.INT32:_.FLOAT64}return l}function du(t,e,A,n,s){const i=n+7>>3;let o=0,r=0,a=0;for(let U=0;U<n;U++){const N=ma(t,e,A,n,U),m=k(e,A+U),T=y(t,m+$);N===_.TEXT||N===_.BLOB?(r++,T===0&&(a+=R(t,m+mt))):T===0&&(N===_.INT32?o+=4:N===_.INT64||N===_.FLOAT64?o+=8:(N===_.UUID||N===_.ULID)&&(o+=16))}const c=r*4,l=3+i+o+c,u=l+a,g=R(t,e+vA),E=2+u;if(g+E>ns)return q(t,e+x,L.BUFFER_FULL),S(t,e+j,s),L.BUFFER_FULL;const h=_e+g;se(t,h,u);const B=h+2;K(t,B+0,1),se(t,B+1,u),Zt(t,B+3,0,i);let Q=B+3+i,d=Q+o,p=l;for(let U=0;U<n;U++){const N=ma(t,e,A,n,U),m=k(e,A+U);if(y(t,m+$)!==0){const F=B+3+(U>>3);K(t,F,y(t,F)|1<<(U&7)),(N===_.TEXT||N===_.BLOB)&&(se(t,d,0),se(t,d+2,0),d+=4)}else if(N===_.TEXT||N===_.BLOB){const F=R(t,m+pt),D=R(t,m+mt);se(t,d,p),se(t,d+2,D),D>0&&(kt(t,B+p,t,F,D),p+=D),d+=4}else if(N===_.INT32)q(t,Q,_s(st(t,m+It))),Q+=4;else if(N===_.INT64){const D=y(t,m+ce)===_.INT64?ie(t,m+pe):ds(st(t,m+It));Ze(t,Q,D),Q+=8}else if(N===_.FLOAT64)ge(t,Q,st(t,m+It)),Q+=8;else if(N===_.UUID){const F=R(t,m+pt),D=R(t,m+mt);nu(t,F,D,Q),Q+=16}else if(N===_.ULID){const F=R(t,m+pt),D=R(t,m+mt);su(t,F,D,Q),Q+=16}}return S(t,e+vA,g+E),S(t,e+zA,R(t,e+zA)+1),L.RUNNING}function Js(t,e,A,n){const s=y(t,n+oa);for(let i=0;i<s;i++){const o=e+(i<<5),r=A+(i<<5),a=y(t,n+ra+i),c=y(t,n+aa+i),l=y(t,o+$),u=y(t,r+$);if(l!==0&&u!==0)continue;if(l!==0||u!==0)return c===0?l!==0?-1:1:l!==0?1:-1;const g=ve(t,o,r);if(g!==0)return a===1?-g:g}return 0}function ya(t,e,A,n,s){let i=A;for(;;){let o=i;const r=2*i+1,a=2*i+2;if(r<n){const c=R(t,e+(r<<2)),l=R(t,e+(o<<2));Js(t,c+16,l+16,s)>0&&(o=r)}if(a<n){const c=R(t,e+(a<<2)),l=R(t,e+(o<<2));Js(t,c+16,l+16,s)>0&&(o=a)}if(o!==i){const c=R(t,e+(i<<2));S(t,e+(i<<2),R(t,e+(o<<2))),S(t,e+(o<<2),c),i=o}else break}}function _u(t,e,A,n,s){const i=e+qn+n*Ps,o=e+wn+s*kn,r=y(t,o+uo),a=R(t,o+go),c=R(t,o+Os);let l=0;r!==0&&a>0&&(l=c+a);const u=l>0&&l<=ur?l:0,g=u>0?u:256,E=te(t,e,A,g*4);return E===0?(q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED):(K(t,i+Gs,1),K(t,i+ca,0),K(t,i+ws,s),S(t,i+Mn,0),S(t,i+Eo,g),S(t,i+ks,0),S(t,i+la,u),S(t,i+Hn,E),S(t,i+eu,0),L.RUNNING)}function mu(t,e,A,n,s,i,o){const r=e+qn+n*Ps;if(y(t,r+Gs)===0)return q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const a=y(t,r+ws),c=e+wn+a*kn,l=R(t,r+Mn),u=R(t,r+la);let g=R(t,r+Hn);const E=k(e,s);if(u>0&&l>=u){const O=R(t,g);if(Js(t,E,O+16,c)>=0)return L.RUNNING;const P=qt(e,o),I=R(t,P+Ht),b=v(t,I+1),H=R(t,O+4),J=R(t,e+ye),ot=R(t,e+Pn);if(b>H){const Ft=b-H;if(J+Ft>ot)return q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;S(t,e+ye,J+Ft)}else{const Ft=H-b;S(t,e+ye,J>=Ft?J-Ft:0)}const rt=16+(i<<5)+b,V=te(t,e,A,rt);if(V===0)return q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;const X=V+16+(i<<5);S(t,V+0,i),S(t,V+4,b),S(t,V+8,X),S(t,V+12,0);for(let Ft=0;Ft<i;Ft++)Co(t,e,A,V+16+(Ft<<5),k(e,s+Ft));return kt(t,X,t,I,b),S(t,g,V),ya(t,g,0,u,c),L.RUNNING}const h=qt(e,o),B=R(t,h+Ht),Q=v(t,B+1),d=16+16*i+Q,p=R(t,e+ye),U=R(t,e+Pn);if(p+d>U)return q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;S(t,e+ye,p+d);let N=R(t,r+Eo);if(l>=N){const O=N*2,w=te(t,e,A,O*4);if(w===0)return q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;kt(t,w,t,g,l*4),g=w,N=O,S(t,r+Eo,N),S(t,r+Hn,g)}const m=16+(i<<5)+Q,T=te(t,e,A,m);if(T===0)return q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;const F=T+16+(i<<5);S(t,T+0,i),S(t,T+4,Q),S(t,T+8,F),S(t,T+12,0);for(let O=0;O<i;O++)Co(t,e,A,T+16+(O<<5),k(e,s+O));kt(t,F,t,B,Q),S(t,g+(l<<2),T);const D=l+1;if(S(t,r+Mn,D),u>0&&D===u)for(let O=(u>>1)-1;O>=0;O--)ya(t,g,O,u,c);return L.RUNNING}function yu(t,e,A,n){const s=e+qn+n*Ps;if(y(t,s+Gs)===0)return q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const i=R(t,s+Mn),o=y(t,s+ws),r=e+wn+o*kn,a=R(t,r+Os);if(i>1){const c=R(t,s+Hn),l=te(t,e,A,i*4);if(l===0)return q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;for(let u=1;u<i;u=u<<1){for(let g=0;g<i;g+=u<<1){const E=g,h=g+u<i?g+u:i,B=g+(u<<1)<i?g+(u<<1):i;let Q=E,d=h;for(let p=E;p<B;p++)if(Q<h&&d<B){const U=R(t,c+(Q<<2)),N=R(t,c+(d<<2));Js(t,U+16,N+16,r)<=0?(S(t,l+(p<<2),U),Q++):(S(t,l+(p<<2),N),d++)}else Q<h?(S(t,l+(p<<2),R(t,c+(Q<<2))),Q++):(S(t,l+(p<<2),R(t,c+(d<<2))),d++)}kt(t,c,t,l,i*4)}}return S(t,s+ks,a),K(t,s+ca,1),L.RUNNING}function pu(t,e,A,n,s){const i=e+qn+A*Ps;if(y(t,i+Gs)===0)return q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const o=R(t,i+Mn),r=R(t,i+ks),a=y(t,i+ws),c=e+wn+a*kn,l=y(t,c+uo),u=R(t,c+go),g=R(t,c+Os);let E=o;if(l!==0){const U=g+u;U<E&&(E=U)}if(r>=E)return L.RUNNING;const h=R(t,i+Hn),B=R(t,h+(r<<2)),Q=R(t,B+4),d=R(t,B+8),p=_a(t,e,d,Q,s);return p!==L.RUNNING?p:(S(t,i+ks,r+1),S(t,e+j,n),L.RUNNING)}function Uu(t,e,A){let n=2166136261;for(let s=0;s<A;s++){const i=e+(s<<5);if(y(t,i+$)!==0)n^=255,n=Math.imul(n,16777619)>>>0;else{const r=y(t,i+ce);if(r===_.INT32||r===_.INT64||r===_.FLOAT64)for(let a=0;a<8;a++)n^=y(t,i+It+a),n=Math.imul(n,16777619)>>>0;else{const a=R(t,i+pt),c=R(t,i+mt);for(let l=0;l<c;l++)n^=y(t,a+l),n=Math.imul(n,16777619)>>>0}}}return n=n>>>0,n===0?1:n}function Tu(t,e,A,n){for(let s=0;s<n;s++){const i=e+(s<<5),o=A+(s<<5),r=y(t,i+$),a=y(t,o+$);if(!(r!==0&&a!==0)&&(r!==0||a!==0||ve(t,i,o)!==0))return 0}return 1}function pa(t,e,A,n,s,i){const o=te(t,e,A,1320);if(o===0)return 0;Zt(t,o,0,1320),S(t,o+0,n),S(t,o+4,s);for(let r=0;r<s;r++)if(Co(t,e,A,o+40+(r<<5),i+(r<<5))<0)return 0;return o}function Su(t,e,A,n,s,i,o){const r=e+qs+n*Ms;if(S(t,e+Ls,0),o===0){const l=R(t,e+ye),u=R(t,e+Pn);if(l+40960>u)return q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;S(t,e+ye,l+40960);const g=te(t,e,A,1024*4);if(g===0)return q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;Zt(t,g,0,1024*4);let E=0;if(i===0){const Q=pa(t,e,A,2166136261,0,0);if(Q===0)return q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;S(t,g+1812,Q),E=1}K(t,r+Yn,1),K(t,r+Hs,0),K(t,r+Io,s),K(t,r+Bo,i),S(t,r+tn,1024),S(t,r+xn,E),S(t,r+en,0),S(t,r+Vn,g),S(t,r+Ys,0)}else K(t,r+Yn,1),K(t,r+Hs,1),K(t,r+Io,s),K(t,r+Bo,i),S(t,r+tn,1),S(t,r+xn,0),S(t,r+en,0),S(t,r+Vn,0),S(t,r+Ys,0);return L.RUNNING}function Nu(t,e,A,n,s,i,o,r){const a=e+qs+n*Ms;if(y(t,a+Yn)===0)return q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const c=r&7,l=r>>3;if(y(t,a+Hs)===0){let g=R(t,a+tn),E=R(t,a+xn),h=R(t,a+Vn);const B=k(e,s),Q=Uu(t,B,i),d=Q%g;let p=0;for(let m=0;m<g;m++){const T=(d+m)%g,F=R(t,h+(T<<2));if(F===0){const D=pa(t,e,A,Q,i,B);if(D===0)return q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;S(t,h+(T<<2),D),E++,S(t,a+xn,E),p=D;break}else if(R(t,F+0)===Q&&Tu(t,F+40,B,i)!==0){p=F;break}}if(p===0)return q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;const U=p+296+(l<<5),N=o!==255&&y(t,k(e,o)+$)===0?1:0;if(c===0)(o===255||N!==0)&&(S(t,U+0,R(t,U+0)+1),S(t,p+8,R(t,p+8)+1));else if(c===1||c===2){if(N!==0){const m=st(t,k(e,o)+It);ge(t,U+8,st(t,U+8)+m),S(t,U+0,R(t,U+0)+1),S(t,U+4,1),ge(t,p+16,st(t,p+16)+m),S(t,p+12,1)}}else if(c===3){if(N!==0){const m=st(t,k(e,o)+It);(R(t,U+4)===0||m<st(t,U+16))&&ge(t,U+16,m),S(t,U+0,R(t,U+0)+1),S(t,U+4,1),(R(t,p+12)===0||m<st(t,p+24))&&ge(t,p+24,m),S(t,p+12,1)}}else if(c===4&&N!==0){const m=st(t,k(e,o)+It);(R(t,U+4)===0||m>st(t,U+24))&&ge(t,U+24,m),S(t,U+0,R(t,U+0)+1),S(t,U+4,1),(R(t,p+12)===0||m>st(t,p+32))&&ge(t,p+32,m),S(t,p+12,1)}if(E*10>g*7){const m=g*2,T=m*40,F=R(t,e+ye),D=R(t,e+Pn);if(F+T>D)return q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;S(t,e+ye,F+T);const O=te(t,e,A,m*4);if(O===0)return q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;Zt(t,O,0,m*4);for(let w=0;w<g;w++){const P=R(t,h+(w<<2));if(P!==0){const b=R(t,P+0)%m;for(let H=0;H<m;H++){const J=(b+H)%m;if(R(t,O+(J<<2))===0){S(t,O+(J<<2),P);break}}}}S(t,a+tn,m),S(t,a+Vn,O)}}return L.RUNNING}function Ru(t,e,A,n,s,i){const o=e+qs+A*Ms;if(y(t,o+Yn)===0)return q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const r=R(t,o+tn),a=R(t,o+Vn);let c=R(t,o+en);for(;c<r&&R(t,a+(c<<2))===0;)c++;if(c>=r)return S(t,o+en,c),S(t,o+Ys,0),S(t,e+Ls,0),L.RUNNING;const l=R(t,a+(c<<2));c++,S(t,o+en,c),S(t,o+Ys,l),S(t,e+Ls,l);const u=R(t,l+4);for(let d=0;d<u;d++)Vs(t,k(e,n+d),l+40+(d<<5));const g=R(t,l+8),E=R(t,l+12),h=st(t,l+16),B=st(t,l+24),Q=st(t,l+32);return Yt(t,k(e,s),h),Oe(t,k(e,s+1),g),E!==0?(Yt(t,k(e,s+2),B),Yt(t,k(e,s+3),Q)):(Qt(t,k(e,s+2)),Qt(t,k(e,s+3))),S(t,e+j,i),L.RUNNING}function Du(t,e,A,n,s,i){const o=i&7,r=i>>3,a=k(e,s),c=R(t,e+Ls);if(c!==0){const E=c+296+(r<<5),h=R(t,E+0),B=R(t,E+4),Q=st(t,E+8),d=st(t,E+16),p=st(t,E+24);return o===0?Oe(t,a,h):o===1?B!==0?Yt(t,a,Q):Qt(t,a):o===2?h>0?Yt(t,a,Q/h):Qt(t,a):o===3?B!==0?Yt(t,a,d):Qt(t,a):o===4&&(B!==0?Yt(t,a,p):Qt(t,a)),L.RUNNING}const l=k(e,A),u=k(e,n),g=y(t,u+$)!==0?0:vt(t,u+be);return o===0?Oe(t,a,g):o===1?g>0?Yt(t,a,st(t,l+It)):Qt(t,a):o===2?g>0?Yt(t,a,st(t,l+It)/g):Qt(t,a):(o===3||o===4)&&Vs(t,a,l),L.RUNNING}function Fu(t,e,A,n){let s=0,i=0,o=-1,r=-1;for(;s<e;){const a=i<n?A.charCodeAt(i):0,c=t.charCodeAt(s);if(i<n&&(a===95||Xn(a)===Xn(c)))s++,i++;else if(i<n&&a===37)o=i++,r=s;else if(o!==-1)i=o+1,s=++r;else return 0}for(;i<n&&A.charCodeAt(i)===37;)i++;return i===n?1:0}function Lu(t,e){if(t==null||e===null||e===void 0)return{result:0,is_unknown:!0};if(typeof t=="boolean"||typeof e=="boolean"){const A=t?1:0,n=e?1:0;return{result:A===n?0:A>n?1:-1,is_unknown:!1}}if(typeof t=="bigint"||typeof e=="bigint"){const A=BigInt(t),n=BigInt(e);return{result:A===n?0:A>n?1:-1,is_unknown:!1}}if(t instanceof Uint8Array&&e instanceof Uint8Array){const A=Math.min(t.byteLength,e.byteLength);for(let n=0;n<A;n++)if(t[n]!==e[n])return{result:t[n]>e[n]?1:-1,is_unknown:!1};return{result:t.byteLength===e.byteLength?0:t.byteLength>e.byteLength?1:-1,is_unknown:!1}}return{result:t===e?0:t>e?1:-1,is_unknown:!1}}function Wn(t,e){return Fu(t,t.length,e,e.length)===1}function Ua(t,e,A){const n=A.numKeys;for(let s=0;s<n;s++){const i=t[s],o=e[s],r=A.directions[s]??0,a=A.nullOrders[s]??(r===1?1:0),c=i==null,l=o==null;if(c&&l)continue;if(c||l)return a===0?c?-1:1:c?1:-1;const u=Lu(i,o).result;if(u!==0)return r===1?-u:u}return 0}function Ta(t){let e=2166136261;for(let A=0;A<t.length;A++){const n=t[A];if(n==null)e^=255,e=Math.imul(e,16777619);else if(typeof n=="string")for(let s=0;s<n.length;s++)e^=n.charCodeAt(s)&255,e=Math.imul(e,16777619);else{const s=Number(n)|0;e^=s&255,e=Math.imul(e,16777619)}}return e=e>>>0,e===0?1:e}function bu(t,e,A,n,s){let o=0;const r=R(t,e+Kr);let a=R(t,e+j);for(;a<n;){if(o++,o>1e7)return S(t,e+j,a),q(t,e+x,L.TIMEOUT),L.TIMEOUT;const c=a,l=y(t,A+a);switch(a+=1,l){case C.OP_HALT:return S(t,e+ye,0),S(t,e+j,a),q(t,e+x,L.DONE),L.DONE;case C.OP_OPEN_CURSOR:{const u=y(t,A+a),g=R(t,A+a+1);a+=5;const E=qt(e,u);if(S(t,E+xt,g),q(t,E+Jt,0),S(t,E+Ht,0),r!==0&&g>0){const h=he(t,Be,Ie,g);if(h<0)return S(t,e+fe,g),q(t,e+x,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;q(t,E+ze,h)}break}case C.OP_REWIND:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const E=qt(e,u),h=R(t,E+xt);if(r!==0&&h>0){const d=he(t,Be,Ie,h);if(d<0)return S(t,e+fe,h),q(t,e+x,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;q(t,E+ze,d)}const B=Ue(t,r,h);if(_t(t,B)===0)a=g;else{q(t,E+Jt,0);const d=Et(t,B,0);S(t,E+Ht,B+d)}break}case C.OP_NEXT_ROW:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const E=qt(e,u),h=R(t,E+xt),B=Ue(t,r,h),Q=_t(t,B),d=vt(t,E+Jt)+1;if(d<Q){q(t,E+Jt,d);const p=Et(t,B,d);S(t,E+Ht,B+p)}else{const p=jt(t,B);if(p!==0){if(r!==0){const m=he(t,Be,Ie,p);if(m<0)return S(t,e+fe,p),q(t,e+x,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;q(t,E+ze,m)}S(t,E+xt,p),q(t,E+Jt,0);const U=Ue(t,r,p);if(_t(t,U)>0){const m=Et(t,U,0);S(t,E+Ht,U+m)}else a=g}else a=g}break}case C.OP_LAST:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const E=qt(e,u),h=R(t,E+xt),B=Ue(t,r,h),Q=_t(t,B);if(Q===0)a=g;else{const d=Q-1;q(t,E+Jt,d);const p=Et(t,B,d);S(t,E+Ht,B+p)}break}case C.OP_PREV_ROW:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const E=qt(e,u),h=R(t,E+xt),B=Ue(t,r,h),Q=vt(t,E+Jt);if(Q>0){const d=Q-1;q(t,E+Jt,d);const p=Et(t,B,d);S(t,E+Ht,B+p)}else a=g;break}case C.OP_COLUMN_INT:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=qt(e,u),B=R(t,h+Ht),Q=xs(t,e,u),d=v(t,Q+2),p=B+3,U=k(e,E);if(kA(t,p,g)!==0){Qt(t,U);break}const N=Jn(t,p,d,Q,g),m=y(t,Q+4+g);m===_.INT32?Oe(t,U,vt(t,N)):m===_.INT64&&ga(t,U,ie(t,N));break}case C.OP_COLUMN_FLOAT:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=qt(e,u),B=R(t,h+Ht),Q=xs(t,e,u),d=v(t,Q+2),p=B+3,U=k(e,E);if(kA(t,p,g)!==0){Qt(t,U);break}const N=Jn(t,p,d,Q,g);Yt(t,U,st(t,N));break}case C.OP_COLUMN_UUID:case C.OP_COLUMN_ULID:case C.OP_COLUMN_TEXT:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=qt(e,u),B=R(t,h+Ht),Q=xs(t,e,u),d=v(t,Q+0),p=v(t,Q+2),U=B+3,N=k(e,E);if(kA(t,U,g)!==0){Qt(t,N);break}const m=y(t,Q+4+g);if(m===_.UUID||m===_.ULID){const P=Jn(t,U,p,Q,g);if(m===_.UUID){const I=te(t,e,s,36);if(I===0)return S(t,e+j,a),q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;Ia(t,P,I),$t(t,N,_.UUID,I,36)}else{const I=te(t,e,s,26);if(I===0)return S(t,e+j,a),q(t,e+x,L.ARENA_EXHAUSTED),L.ARENA_EXHAUSTED;Ba(t,P,I),$t(t,N,_.ULID,I,26)}break}const T=Jn(t,U,p,Q,d),F=ha(t,Q,g),D=T+(F<<2),O=v(t,D),w=v(t,D+2);$t(t,N,_.TEXT,B+O,w);break}case C.OP_COLUMN_BLOB:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=qt(e,u),B=R(t,h+Ht),Q=xs(t,e,u),d=v(t,Q+0),p=v(t,Q+2),U=B+3,N=k(e,E);if(kA(t,U,g)!==0){Qt(t,N);break}const m=Jn(t,U,p,Q,d),T=ha(t,Q,g),F=m+(T<<2),D=v(t,F),O=v(t,F+2);$t(t,N,_.BLOB,B+D,O);break}case C.OP_OPEN_INDEX:{const u=y(t,A+a),g=R(t,A+a+1);a+=5;const E=qt(e,u);if(S(t,E+xt,g),S(t,E+Gn,g),q(t,E+Jt,0),S(t,E+Ht,0),r!==0&&g>0){const h=he(t,Be,Ie,g);if(h<0)return S(t,e+fe,g),q(t,e+x,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;q(t,E+ze,h)}break}case C.OP_INDEX_SEEK_EQ:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=y(t,A+a+3),B=v(t,A+a+4);if(a+=6,B>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const Q=k(e,E);if(y(t,Q+$)!==0){a=B;break}const d=qt(e,u),p=R(t,d+Gn);let U=p!==0?p:R(t,d+xt),N=0,m=0n;for(;U!==0;){if(r!==0&&U>0){const D=he(t,Be,Ie,U);if(D<0)return S(t,e+fe,U),q(t,e+x,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;q(t,d+ze,D)}const T=Ue(t,r,U),F=iu(t,e,T,h,Q);if(F>=0){N=1,S(t,d+xt,U),q(t,d+Jt,F);const D=Et(t,T,F),O=v(t,T+D);m=ie(t,T+D+2+O);break}U=jt(t,T)}if(N===0)a=B;else{const T=Nt(m>>16n),F=Nt(m&0xffffn);if(r!==0&&T>0&&he(t,Be,Ie,T)<0)return S(t,e+fe,T),q(t,e+x,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;const D=qt(e,g);S(t,D+xt,T),q(t,D+Jt,F);const O=Ue(t,r,T),w=Et(t,O,F);S(t,D+Ht,O+w)}break}case C.OP_INDEX_SEEK_GE:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=y(t,A+a+3),B=v(t,A+a+4);if(a+=6,B>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const Q=k(e,E);if(y(t,Q+$)!==0){a=B;break}const d=qt(e,u),p=R(t,d+Gn);let U=p!==0?p:R(t,d+xt),N=0,m=0n;for(;U!==0;){if(r!==0&&U>0){const D=he(t,Be,Ie,U);if(D<0)return S(t,e+fe,U),q(t,e+x,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;q(t,d+ze,D)}const T=Ue(t,r,U),F=ou(t,e,T,h,Q);if(F>=0){N=1,S(t,d+xt,U),q(t,d+Jt,F);const D=Et(t,T,F),O=v(t,T+D);m=ie(t,T+D+2+O);break}U=jt(t,T)}if(N===0)a=B;else{const T=Nt(m>>16n),F=Nt(m&0xffffn);if(r!==0&&T>0&&he(t,Be,Ie,T)<0)return S(t,e+fe,T),q(t,e+x,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;const D=qt(e,g);S(t,D+xt,T),q(t,D+Jt,F);const O=Ue(t,r,T),w=Et(t,O,F);S(t,D+Ht,O+w)}break}case C.OP_INDEX_NEXT:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=qt(e,u);let B=R(t,h+xt),Q=Ue(t,r,B);const d=_t(t,Q);let p=vt(t,h+Jt)+1;if(p>=d){if(B=jt(t,Q),B===0){a=E;break}if(r!==0&&B>0){const P=he(t,Be,Ie,B);if(P<0)return S(t,e+fe,B),q(t,e+x,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;q(t,h+ze,P)}Q=Ue(t,r,B),p=0,S(t,h+xt,B),q(t,h+Jt,-1)}const U=Et(t,Q,p),N=v(t,Q+U),m=ie(t,Q+U+2+N),T=Nt(m>>16n),F=Nt(m&0xffffn);if(r!==0&&T>0&&he(t,Be,Ie,T)<0)return S(t,e+fe,T),q(t,e+x,L.PAGE_FAULT),S(t,e+j,c),L.PAGE_FAULT;S(t,h+xt,B),q(t,h+Jt,p);const D=qt(e,g);S(t,D+xt,T),q(t,D+Jt,F);const O=Ue(t,r,T),w=Et(t,O,F);S(t,D+Ht,O+w);break}case C.OP_IS_NULL:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=qt(e,u),B=R(t,h+Ht);kA(t,B+3,g)!==0&&(a=E);break}case C.OP_IS_NOT_NULL:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=qt(e,u),B=R(t,h+Ht);kA(t,B+3,g)===0&&(a=E);break}case C.OP_EQ:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;ve(t,k(e,u),k(e,g))===0&&(a=E);break}case C.OP_NE:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=ve(t,k(e,u),k(e,g));h!==-2&&h!==0&&(a=E);break}case C.OP_GT:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;ve(t,k(e,u),k(e,g))===1&&(a=E);break}case C.OP_GE:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=ve(t,k(e,u),k(e,g));(h===0||h===1)&&(a=E);break}case C.OP_LT:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;ve(t,k(e,u),k(e,g))===-1&&(a=E);break}case C.OP_LE:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=ve(t,k(e,u),k(e,g));(h===-1||h===0)&&(a=E);break}case C.OP_JUMP:{const u=v(t,A+a);if(u>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;a=u;break}case C.OP_STR_LIKE:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=k(e,u),B=k(e,g);if(y(t,h+$)!==0||y(t,B+$)!==0)break;Ca(t,R(t,h+pt),R(t,h+mt),R(t,B+pt),R(t,B+mt))!==0&&(a=E);break}case C.OP_STR_NOT_LIKE:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=k(e,u),B=k(e,g);if(y(t,h+$)!==0||y(t,B+$)!==0)break;Ca(t,R(t,h+pt),R(t,h+mt),R(t,B+pt),R(t,B+mt))===0&&(a=E);break}case C.OP_STR_CONTAINS:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=k(e,u),B=k(e,g);if(y(t,h+$)!==0||y(t,B+$)!==0)break;ru(t,R(t,h+pt),R(t,h+mt),R(t,B+pt),R(t,B+mt))!==0&&(a=E);break}case C.OP_STR_STARTS_WITH:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=k(e,u),B=k(e,g);if(y(t,h+$)!==0||y(t,B+$)!==0)break;au(t,R(t,h+pt),R(t,h+mt),R(t,B+pt),R(t,B+mt))!==0&&(a=E);break}case C.OP_STR_ENDS_WITH:{const u=y(t,A+a),g=y(t,A+a+1),E=v(t,A+a+2);if(a+=4,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const h=k(e,u),B=k(e,g);if(y(t,h+$)!==0||y(t,B+$)!==0)break;cu(t,R(t,h+pt),R(t,h+mt),R(t,B+pt),R(t,B+mt))!==0&&(a=E);break}case C.OP_IN:{const u=y(t,A+a),g=v(t,A+a+1),E=v(t,A+a+3);if(a+=5,E>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;Qu(t,e,g,k(e,u))!==0&&(a=E);break}case C.OP_LOAD_INT:{const u=y(t,A+a),g=vt(t,A+a+1);a+=5,Oe(t,k(e,u),g);break}case C.OP_LOAD_FLOAT:{const u=y(t,A+a),g=st(t,A+a+1);a+=9,Yt(t,k(e,u),g);break}case C.OP_LOAD_TEXT:{const u=y(t,A+a),g=v(t,A+a+1),E=A+a+3;a+=3+g,$t(t,k(e,u),_.TEXT,E,g);break}case C.OP_LOAD_BLOB:{const u=y(t,A+a),g=v(t,A+a+1),E=A+a+3;a+=3+g,$t(t,k(e,u),_.BLOB,E,g);break}case C.OP_LOAD_NULL:{const u=y(t,A+a);a+=1,Qt(t,k(e,u));break}case C.OP_EMIT_ROW:{const u=y(t,A+a);a+=1;const g=qt(e,u),E=R(t,g+Ht),h=v(t,E+1),B=_a(t,e,E,h,c);if(B!==L.RUNNING)return B;break}case C.OP_OFFSET:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const E=k(e,u),h=y(t,E+$)!==0?0:vt(t,E+be);h>0&&(Oe(t,E,h-1),a=g);break}case C.OP_LIMIT:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;const E=k(e,u),h=y(t,E+$)!==0?0:vt(t,E+be);h<=1?(Oe(t,E,0),a=g):Oe(t,E,h-1);break}case C.OP_CALL_UDF:{const u=v(t,A+a),g=y(t,A+a+2),E=y(t,A+a+3),h=y(t,A+a+4);return a+=5,S(t,e+jr,u),S(t,e+$r,g),S(t,e+zr,E),S(t,e+vr,h),S(t,e+j,a),q(t,e+x,fo),fo}case C.OP_STR_LOWER:{const u=y(t,A+a),g=y(t,A+a+1);a+=2,uu(t,e,s,k(e,u),k(e,g));break}case C.OP_STR_UPPER:{const u=y(t,A+a),g=y(t,A+a+1);a+=2,gu(t,e,s,k(e,u),k(e,g));break}case C.OP_STR_LENGTH:{const u=y(t,A+a),g=y(t,A+a+1);a+=2;const E=k(e,u),h=k(e,g);if(y(t,E+$)!==0)Qt(t,h);else{const B=lu(t,R(t,E+pt),R(t,E+mt));Oe(t,h,B)}break}case C.OP_STR_SUBSTR:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=y(t,A+a+3);a+=4,Iu(t,k(e,u),k(e,g),k(e,E),k(e,h));break}case C.OP_STR_TRIM:{const u=y(t,A+a),g=y(t,A+a+1);a+=2,Eu(t,k(e,u),k(e,g));break}case C.OP_MATH_ABS:{const u=y(t,A+a),g=y(t,A+a+1);a+=2;const E=k(e,u),h=k(e,g);y(t,E+$)!==0?Qt(t,h):Yt(t,h,hu(st(t,E+It)));break}case C.OP_MATH_ROUND:{const u=y(t,A+a),g=y(t,A+a+1);a+=2;const E=k(e,u),h=k(e,g);y(t,E+$)!==0?Qt(t,h):Yt(t,h,Cu(st(t,E+It)));break}case C.OP_RESULT_ROW:{const u=y(t,A+a),g=y(t,A+a+1);a+=2;const E=du(t,e,u,g,c);if(E!==L.RUNNING)return E;break}case C.OP_SORTER_OPEN:{const u=y(t,A+a),g=y(t,A+a+1);a+=2;const E=_u(t,e,s,u,g);if(E!==L.RUNNING)return S(t,e+j,a),E;break}case C.OP_SORTER_INSERT:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=y(t,A+a+3);a+=4;const B=mu(t,e,s,u,g,E,h);if(B!==L.RUNNING)return S(t,e+j,a),B;break}case C.OP_SORTER_SORT:{const u=y(t,A+a);a+=1;const g=yu(t,e,s,u);if(g!==L.RUNNING)return S(t,e+j,a),g;break}case C.OP_SORTER_NEXT:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;S(t,e+j,a);const E=pu(t,e,u,g,c);if(E!==L.RUNNING)return E;a=R(t,e+j);break}case C.OP_MATH_FLOOR:{const u=y(t,A+a),g=y(t,A+a+1);a+=2;const E=k(e,u),h=k(e,g);y(t,E+$)!==0?Qt(t,h):Yt(t,h,da(st(t,E+It)));break}case C.OP_MATH_CEIL:{const u=y(t,A+a),g=y(t,A+a+1);a+=2;const E=k(e,u),h=k(e,g);y(t,E+$)!==0?Qt(t,h):Yt(t,h,fu(st(t,E+It)));break}case C.OP_ADD:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=k(e,u),B=k(e,g),Q=k(e,E);y(t,h+$)!==0||y(t,B+$)!==0?Qt(t,Q):Yt(t,Q,st(t,h+It)+st(t,B+It));break}case C.OP_SUB:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=k(e,u),B=k(e,g),Q=k(e,E);y(t,h+$)!==0||y(t,B+$)!==0?Qt(t,Q):Yt(t,Q,st(t,h+It)-st(t,B+It));break}case C.OP_MUL:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=k(e,u),B=k(e,g),Q=k(e,E);y(t,h+$)!==0||y(t,B+$)!==0?Qt(t,Q):Yt(t,Q,st(t,h+It)*st(t,B+It));break}case C.OP_DIV:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=k(e,u),B=k(e,g),Q=k(e,E);if(y(t,h+$)!==0||y(t,B+$)!==0)Qt(t,Q);else{const d=st(t,B+It);d===0?Qt(t,Q):Yt(t,Q,st(t,h+It)/d)}break}case C.OP_MOD:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=k(e,u),B=k(e,g),Q=k(e,E);if(y(t,h+$)!==0||y(t,B+$)!==0)Qt(t,Q);else{const d=st(t,B+It);if(d===0)Qt(t,Q);else{const p=st(t,h+It),U=Math.trunc(p/d);Yt(t,Q,p-U*d)}}break}case C.OP_STR_CONCAT:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3,Bu(t,e,s,u,g,E);break}case C.OP_COALESCE:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2);a+=3;const h=k(e,E);let B=0;for(let Q=0;Q<g;Q++){const d=k(e,u+Q);if(y(t,d+$)===0){Vs(t,h,d),B=1;break}}B===0&&Qt(t,h);break}case C.OP_COPY:{const u=y(t,A+a),g=y(t,A+a+1);a+=2,Vs(t,k(e,g),k(e,u));break}case C.OP_AGG_INIT:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=y(t,A+a+3);a+=4;const B=Su(t,e,s,u,g,E,h);if(B!==L.RUNNING)return S(t,e+j,a),B;break}case C.OP_AGG_STEP:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=y(t,A+a+3),B=y(t,A+a+4);a+=5;const Q=Nu(t,e,s,u,g,E,h,B);if(Q!==L.RUNNING)return S(t,e+j,a),Q;break}case C.OP_AGG_NEXT:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=v(t,A+a+3);if(a+=5,h>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;S(t,e+j,a);const B=Ru(t,e,u,g,E,h);if(B!==L.RUNNING)return B;a=R(t,e+j);break}case C.OP_AGG_FINAL:{const u=y(t,A+a),g=y(t,A+a+1),E=y(t,A+a+2),h=y(t,A+a+3);a+=4,Du(t,e,u,g,E,h);break}case C.OP_REG_IS_NULL:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;y(t,k(e,u)+$)!==0&&(a=g);break}case C.OP_REG_IS_NOT_NULL:{const u=y(t,A+a),g=v(t,A+a+1);if(a+=3,g>n)return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE;y(t,k(e,u)+$)===0&&(a=g);break}default:return S(t,e+j,a),q(t,e+x,L.INVALID_BYTECODE),L.INVALID_BYTECODE}}return S(t,e+j,a),q(t,e+x,L.DONE),L.DONE}const Ou=new TextEncoder,Pu=new TextDecoder;function _o(t,e,A,n,s){if(s==null)Qt(t,n);else if(typeof s=="boolean")Oe(t,n,s?1:0);else if(typeof s=="number")Number.isInteger(s)&&s>=-2147483648&&s<=2147483647?Oe(t,n,s):Yt(t,n,s);else if(typeof s=="bigint")ga(t,n,s);else if(typeof s=="string"){const i=Ou.encode(s);if(i.byteLength===0)$t(t,n,_.TEXT,0,0);else{const o=te(t,e,A,i.byteLength);new Uint8Array(t.buffer,t.byteOffset+o,i.byteLength).set(i),$t(t,n,_.TEXT,o,i.byteLength)}}else if(s instanceof Uint8Array)if(s.byteLength===0)$t(t,n,_.BLOB,0,0);else{const i=te(t,e,A,s.byteLength);new Uint8Array(t.buffer,t.byteOffset+i,s.byteLength).set(s),$t(t,n,_.BLOB,i,s.byteLength)}else Qt(t,n)}function Sa(t,e){if(y(t,e+$)!==0)return null;const A=y(t,e+ce);if(A===_.INT32)return vt(t,e+be);if(A===_.INT64)return Number(ie(t,e+pe));if(A===_.FLOAT64)return st(t,e+It);const n=R(t,e+pt),s=R(t,e+mt);if(A===_.TEXT||A===_.UUID||A===_.ULID)return s===0?"":Pu.decode(new Uint8Array(t.buffer,t.byteOffset+n,s));if(A===_.BLOB){const i=new Uint8Array(s);return s>0&&i.set(new Uint8Array(t.buffer,t.byteOffset+n,s)),i}return null}function mo(t,e,A,n,s){var p,U,N;let i=e,o=!1;if(s)if(e.buffer===s&&e.byteOffset===0)i=e.byteLength>=dn+65536?e:new DataView(s);else{i=new DataView(s);const m=Math.min(e.byteLength,Qn);new Uint8Array(s,0,m).set(new Uint8Array(e.buffer,e.byteOffset,m)),o=!0}else if(e.byteLength<dn+65536||e.byteOffset!==0){const m=mo;(!m._fallbackBuffer||!m._fallbackView)&&(m._fallbackBuffer=new ArrayBuffer(mi),m._fallbackView=new DataView(m._fallbackBuffer));const T=Math.min(e.byteLength,Qn);new Uint8Array(m._fallbackBuffer,0,T).set(new Uint8Array(e.buffer,e.byteOffset,T)),i=m._fallbackView,o=!0}const r=Qn,a=zt,c=dn,l=t,u=t._fastHostMode===!0;if(l._syncedResetId!==t._resetId||l._syncedBuffer!==i.buffer){Zt(i,r,0,na+384),Zt(i,r+qn,0,256);for(let m=0;m<64;m++)K(i,r+ea+(m<<5)+$,1);u||(l._lastSyncedRegs?l._lastSyncedRegs.fill(null):l._lastSyncedRegs=new Array(64).fill(null)),l._syncedInSetsRef=null,l._syncedResetId=t._resetId,l._syncedBuffer=i.buffer}if(o&&t.resultOffset>0){const m=_e+t.resultOffset;e.byteLength>=m&&new Uint8Array(i.buffer,i.byteOffset+_e,t.resultOffset).set(new Uint8Array(e.buffer,e.byteOffset+_e,t.resultOffset))}const g=t.tables??(t.table?[t.table]:[]),E=Math.min(g.length,16);S(i,r+lo,E);for(let m=0;m<E;m++){const T=g[m]??g[0],F=r+bs+m*sa;if(T){const D=Math.min(T.columns.length,256);se(i,F+0,D),se(i,F+2,Math.ceil(D/8));for(let O=0;O<D;O++)K(i,F+4+O,T.columns[O].type)}}const h=r+ia;if(t.outputColumns&&t.outputColumns.length>0){const m=Math.min(t.outputColumns.length,256);K(i,h+0,1),se(i,h+2,m);for(let T=0;T<m;T++)K(i,h+4+T,t.outputColumns[T].type)}else K(i,h+0,0),se(i,h+2,0);const B=Math.min(((p=t.keyInfos)==null?void 0:p.length)??0,8);S(i,r+vl,B);for(let m=0;m<B;m++){const T=t.keyInfos[m],F=r+wn+m*kn,D=Math.min(T.numKeys,8);K(i,F+oa,D),K(i,F+uo,T.limit!==void 0?1:0),S(i,F+go,T.limit??0),S(i,F+Os,T.offset??0);for(let O=0;O<D;O++){const w=T.directions[O]??0,P=((U=T.nullOrders)==null?void 0:U[O])??(w===1?1:0);K(i,F+ra+O,w),K(i,F+aa+O,P)}}if(t.inSets&&t.inSets.length>0&&l._syncedInSetsRef!==t.inSets){const m=Math.min(t.inSets.length,16);S(i,r+Zr,m);for(let T=0;T<m;T++){const F=t.inSets[T],D=r+ua+T*8;if(!F||F.size===0)S(i,D+0,0),S(i,D+4,0);else{const O=Array.from(F),w=te(i,r,c,O.length*32);S(i,D+0,O.length),S(i,D+4,w);for(let P=0;P<O.length;P++)_o(i,r,c,w+P*32,O[P])}}l._syncedInSetsRef=t.inSets}if(!u){for(let T=0;T<16;T++){const F=(t.cursors&&t.cursors[T])??(T===0?t.cursor:void 0),D=qt(r,T);F&&(S(i,D+xt,F.pageId),S(i,D+Gn,F.rootPageId??0),q(i,D+ze,F.slotIdx),q(i,D+Jt,F.cellIdx),S(i,D+Ht,F.rowOffset))}const m=l._lastSyncedRegs;for(let T=0;T<64;T++)t.registers[T]!==m[T]&&(_o(i,r,c,k(r,T),t.registers[T]),m[T]=t.registers[T])}const Q=e.byteLength>=ss+4&&e.getUint32(ss,!0)>0?1:0;S(i,r+j,t.pc),q(i,r+x,t.status),S(i,r+fe,t.fault_page_id),S(i,r+zA,t.resultCount),S(i,r+vA,t.resultOffset),S(i,r+ye,t.arenaOffset),S(i,r+Pn,t.maxQueryMemory),S(i,r+Kr,Q),new Uint8Array(i.buffer,i.byteOffset+a,A.byteLength).set(A);let d=n(i,r,a,A.byteLength,c);for(;d===fo;){const m=R(i,r+jr),T=R(i,r+$r),F=R(i,r+zr),D=R(i,r+vr),O=(N=t.udfs)==null?void 0:N[m];if(!O){d=L.INVALID_BYTECODE,q(i,r+x,d);break}const w=[];for(let P=0;P<F;P++)w.push(Sa(i,k(r,T+P)));try{const P=O(...w);_o(i,r,c,k(r,D),P),q(i,r+x,L.RUNNING),d=n(i,r,a,A.byteLength,c)}catch{d=L.ERROR,q(i,r+x,d);break}}if(t.pc=R(i,r+j),t.status=d,t.resultCount=R(i,r+zA),t.resultOffset=R(i,r+vA),t.arenaOffset=R(i,r+ye),u){if(d===L.PAGE_FAULT){t.fault_page_id=R(i,r+fe);for(let m=0;m<16;m++){const T=t.cursors[m];T&&(T.pageId=R(i,qt(r,m)+xt))}}}else{t.fault_page_id=R(i,r+fe);for(let T=0;T<16;T++){const F=qt(r,T),D=t.cursors[T];D&&(D.pageId=R(i,F+xt),D.rootPageId=R(i,F+Gn),D.slotIdx=vt(i,F+ze),D.cellIdx=vt(i,F+Jt),D.rowOffset=R(i,F+Ht))}t.cursor&&t.cursors&&t.cursor!==t.cursors[0]&&Object.assign(t.cursor,t.cursors[0]);const m=l._lastSyncedRegs;for(let T=0;T<64;T++){const F=Sa(i,k(r,T));t.registers[T]=F,m[T]=F}for(let T=0;T<4;T++){const F=r+qs+T*Ms;if(y(i,F+Yn)!==0){const D=R(i,F+tn),O=R(i,F+xn),w=R(i,F+en);t.aggregators[T]?(t.aggregators[T].capacity=D,t.aggregators[T].occupiedCount=O,t.aggregators[T].readIdx=w):t.aggregators[T]={mode:y(i,F+Hs),startKeyReg:y(i,F+Io),numKeys:y(i,F+Bo),capacity:D,occupiedCount:O,readIdx:w,buckets:[],currentBucket:null}}}}if(o&&t.resultOffset>0){const m=_e+t.resultOffset;e.byteLength>=m&&new Uint8Array(e.buffer,e.byteOffset+_e,t.resultOffset).set(new Uint8Array(i.buffer,i.byteOffset+_e,t.resultOffset))}return d}function Gu(t,e,A){return mo(t,e,A,(n,s,i,o,r)=>bu(n,s,i,o,r))}const yo="AGFzbQEAAAABuAEZYAF/AX9gAn9/AGAEf39/fwF/YAJ/fwF/YAN/f38Bf2ADf39/AGAEf39/fwBgBX9/f39/AX9gAXwBfGACf34Bf2ABfwBgBX9/f39/AGAGf39/f39/AX9gAABgA39/fgF/YAl/f35/f3x/f34Bf2AIf39+fH9/fn8Bf2AHf398f39/fgF/YAJ/fgBgAn98AGAHf39/f39/fwF/YAV/fn9+fwBgBX98f3x/AGAHf39/f39/fwBgAAF/Ag8BA2VudgZtZW1vcnkCAEMDhgGEAQ0AAAQABQQFAwQCBAADBQcCAQEDBQEAAQABAAEAAQABAAEDBQAAAQACAQEOCQEPEBEBAwAACgABAAAAAAAFBgsAAAMDAwQKARITBgECAAABBAEEAwMCAwIDBwICAgICAgMGBgEGCQsICAgIBAICAgQGAgwEAgMEBwwUBwcDAhUWFwIEGAYJAX8BQYCgiwILB7MXiQEPX19zdGFja19wb2ludGVyAwAHaGV4X3ZhbAABEGNyb2NrZm9yZF9kZWNvZGUAAgt1dWlkX2VuY29kZQADBnN0cmxlbgAEC3V1aWRfZGVjb2RlAAULdWxpZF9lbmNvZGUABgt1bGlkX2RlY29kZQAHD3BhZ2VfdGFibGVfaGFzaAAIDnBhZ2VfdGFibGVfZ2V0AAkOcGFnZV90YWJsZV9zZXQAChFwYWdlX3RhYmxlX2RlbGV0ZQALGGJ1Zl9wb29sX2dldF9zbG90X29mZnNldAAMGmJ1Zl9wb29sX3JlYWRfc2xvdF90b19wYWdlAA0bYnVmX3Bvb2xfd3JpdGVfc2xvdF90b19wYWdlAA4aYnVmX3Bvb2xfZ2V0X3Jlc2lkZW50X3Nsb3QACRRidWZfcG9vbF9hc3NpZ25fc2xvdAAPFmJ1Zl9wb29sX3VuYXNzaWduX3Nsb3QAEBNidWZfcG9vbF9tYXJrX2RpcnR5ABEUYnVmX3Bvb2xfY2xlYXJfZGlydHkAEhFidWZfcG9vbF9pc19kaXJ0eQATCXBhZ2VfaW5pdAAUDnBhZ2VfaW5pdF9mcmVlABUNcGFnZV9nZXRfdHlwZQAWDXBhZ2Vfc2V0X3R5cGUAFxNwYWdlX2dldF9jZWxsX2NvdW50ABgTcGFnZV9zZXRfY2VsbF9jb3VudAAZHHBhZ2VfZ2V0X2NlbGxfY29udGVudF9vZmZzZXQAGhxwYWdlX3NldF9jZWxsX2NvbnRlbnRfb2Zmc2V0ABsVcGFnZV9nZXRfbmV4dF9wYWdlX2lkABwVcGFnZV9zZXRfbmV4dF9wYWdlX2lkAB0TcGFnZV9nZXRfZnJlZV9ieXRlcwAeE3BhZ2Vfc2V0X2ZyZWVfYnl0ZXMAHxFwYWdlX2dldF9jaGVja3N1bQAgEXBhZ2Vfc2V0X2NoZWNrc3VtACEUcGFnZV9nZXRfY2VsbF9vZmZzZXQAIhRwYWdlX3NldF9jZWxsX29mZnNldAAjHnBhZ2VfZ2V0X2NvbnRpZ3VvdXNfZnJlZV9zcGFjZQAkGXBhZ2VfZ2V0X3RvdGFsX2ZyZWVfc3BhY2UAJRBwYWdlX2NvbXBhY3RfcmF3ACYTcGFnZV9nZXRfcm93X2xlbmd0aAAnE3BhZ2VfaW5zZXJ0X3Jvd19yYXcAKA9wYWdlX2RlbGV0ZV9yb3cAKRJwYWdlX2luaXRfaW50ZXJpb3IAKhxwYWdlX2dldF9yaWdodF9jaGlsZF9wYWdlX2lkABwccGFnZV9zZXRfcmlnaHRfY2hpbGRfcGFnZV9pZAAdGXBhZ2VfaW5zZXJ0X2ludGVyaW9yX2NlbGwAKxtwYWdlX2JpbmFyeV9zZWFyY2hfaW50ZXJpb3IALBRwYWdlX2luaXRfaW5kZXhfbGVhZgAtG3BhZ2VfY29tcGFyZV9pbmRleF9jZWxsX3JhdwAuGnBhZ2VfaW5zZXJ0X2luZGV4X2NlbGxfcmF3AC8ccGFnZV9iaW5hcnlfc2VhcmNoX2luZGV4X3JhdwAwG3BhZ2VfZGVsZXRlX2luZGV4X2xlYWZfY2VsbAAxDWNvbXB1dGVfY3JjMzIAMhVjb21wdXRlX3BhZ2VfY2hlY2tzdW0AMxZjb21wdXRlX3BhZ2UxX2NoZWNrc3VtADQSY2F0YWxvZ19pbml0X3BhZ2UxADUXY2F0YWxvZ19nZXRfdG90YWxfcGFnZXMAIBdjYXRhbG9nX3NldF90b3RhbF9wYWdlcwAhGmNhdGFsb2dfZ2V0X2ZyZWVfcGFnZV9oZWFkADYaY2F0YWxvZ19zZXRfZnJlZV9wYWdlX2hlYWQANxpjYXRhbG9nX2dldF9zY2hlbWFfdmVyc2lvbgA4IGNhdGFsb2dfaW5jcmVtZW50X3NjaGVtYV92ZXJzaW9uADkaY2F0YWxvZ19nZXRfY2hhbmdlX2NvdW50ZXIAOiBjYXRhbG9nX2luY3JlbWVudF9jaGFuZ2VfY291bnRlcgA7HWNhdGFsb2dfdXBkYXRlX3BhZ2UxX2NoZWNrc3VtADwaY2F0YWxvZ193cml0ZV9maXhlZF9zdHJpbmcAPRFjYXRhbG9nX2luaXRfcGFnZQA+GWNhdGFsb2dfd3JpdGVfcGFnZV9oZWFkZXIAPw10b19sb3dlcl9jaGFyAEANdG9fdXBwZXJfY2hhcgBBCnZtX3JlZ19vZmYAQg12bV9jdXJzb3Jfb2ZmAEMUdm1fcmVzb2x2ZV90YWJsZV9vZmYARA12bV9waHlzX2FsbG9jAEUPdm1fcmVnX3NldF9udWxsAEYOdm1fcmVnX3NldF9pMzIARw52bV9yZWdfc2V0X2k2NABIDnZtX3JlZ19zZXRfZjY0AEkQdm1fcmVnX3NldF9zbGljZQBKC3ZtX3JlZ19jb3B5AEsVdm1fcmVnX2Nsb25lX3RvX2FyZW5hAEwLdm1faGV4X2NoYXIATRF2bV9jcm9ja2ZvcmRfY2hhcgBOE3ZtX3V1aWRfZGVjb2RlX3ZpZXcATxN2bV91dWlkX2VuY29kZV92aWV3AFATdm1fdWxpZF9kZWNvZGVfdmlldwBRE3ZtX3VsaWRfZW5jb2RlX3ZpZXcAUhZ2bV9yZXNvbHZlX3BhZ2Vfb2Zmc2V0AFMOdm1fcm93X2lzX251bGwAVBt2bV9jb21wdXRlX2ZpeGVkX2NvbF9vZmZzZXQAVRZ2bV9jb21wdXRlX3Zhcl9jb2xfaWR4AFYUdm1fY29tcGFyZV9ieXRlc19yYXcAVxJ2bV9jb21wYXJlX3JlZ18zdmwAWBV2bV9jb21wYXJlX2luZGV4X2NlbGwAWRV2bV9pbmRleF9zZWVrX2xlYWZfZXEAWhV2bV9pbmRleF9zZWVrX2xlYWZfZ2UAWxNzcWxfbGlrZV9tYXRjaF92aWV3AFwUdm1fc3RyX2NvbnRhaW5zX3ZpZXcAXRd2bV9zdHJfc3RhcnRzX3dpdGhfdmlldwBeFXZtX3N0cl9lbmRzX3dpdGhfdmlldwBfEnZtX3V0ZjhfY2hhcl9jb3VudABgDHZtX3N0cl9sb3dlcgBhDHZtX3N0cl91cHBlcgBiC3ZtX3N0cl90cmltAGMOdm1fdXRmOF9zdWJzdHIAZBh2bV9mb3JtYXRfaTY0X3RvX3NjcmF0Y2gAZQ12bV9zdHJfY29uY2F0AGYLdm1fbWF0aF9hYnMAZw12bV9tYXRoX2Zsb29yAGgMdm1fbWF0aF9jZWlsAGkNdm1fbWF0aF9yb3VuZABqEnZtX2luX3NldF9jb250YWlucwBrD3ZtX2VtaXRfcmF3X3JvdwBsGHZtX2luZmVyX3Jlc3VsdF9jb2xfdHlwZQBtIHZtX3NlcmlhbGl6ZV9hbmRfZW1pdF9yZXN1bHRfcm93AG4bdm1fY29tcGFyZV9zb3J0ZXJfa2V5X3Nsb3RzAG8Ydm1fc29ydGVyX2hlYXBfc2lmdF9kb3duAHASdm1fc29ydGVyX29wZW5fcmF3AHEUdm1fc29ydGVyX2luc2VydF9yYXcAchJ2bV9zb3J0ZXJfc29ydF9yYXcAcxJ2bV9zb3J0ZXJfbmV4dF9yYXcAdBJ2bV9oYXNoX2dyb3VwX2tleXMAdRh2bV9ncm91cF9rZXlfc2xvdHNfbWF0Y2gAdhN2bV9hbGxvY19hZ2dfYnVja2V0AHcPdm1fYWdnX2luaXRfcmF3AHgPdm1fYWdnX3N0ZXBfcmF3AHkPdm1fYWdnX25leHRfcmF3AHoQdm1fYWdnX2ZpbmFsX3JhdwB7DmZudjFhXzMyX2J5dGVzAHwSc3FsX2xpa2VfbWF0Y2hfcmF3AH0RY29tcGFyZV8zdmxfaW50NjQAfhNjb21wYXJlXzN2bF9mbG9hdDY0AH8RY29tcGFyZV8zdmxfYnl0ZXMAgAELdm1fc3RlcF9yYXcAgQEGbWVtY21wAIIBEndlYmRiX2NvcmVfdmVyc2lvbgCDAQgBAAwBAQrB8QKEAQ8AQeCpiwJBAEGBCPwLAAs4AQF/IABBMGsiAUEKTwR/IABB4QBrQQVNBEAgAEHXAGsPC0F/IABBN2sgAEHBAGtBBk8bBSABCwtCAQF/AkAgAEEwayIBQQpJDQBBfyEBIABBIGsgACAAQeEAa0EaSRtBwQBrIgBBGUsNACAAQQJ0KALQqIsCIQELIAELyAEBBH8gASACaiEGQX8hBQNAQQAhAQNAIAEiAkEBaiEBIAAgAmotAAANAAsCQCACIARNDQAgACAEaiwAACIBQS1HBEAgA0EfSg0BAkAgAUEwayICQQpJDQAg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DQAgAkEBayEFIAZBufPd8XlsIgBBEHYgAHMhAwNAIAMgBXEiAEEDdCABaiIEKAAAIghFDQEgAEEBaiEDIAYgCEcEQCACQQFrIgINAQwCCwsgAyAFcSICQQN0IAFqIgYoAAAiAwRAA0AgACADQbnz3fF5bCIEQRB2IARzIAVxIgRrIAVxIAIgBGsgBXFJBEAgBkEEaigAACEEIABBA3QgAWoiACADNgAAIABBBGogBDYAACACIQALIAJBAWogBXEiAkEDdCABaiIGKAAAIgMNAAsgAEEDdCABaiEECyAEQQA2AAAgBEEEakEANgAACyAHQQA2AABBAQsdACAAIAFBA3ZqIgAgAC0AAEEBIAFBB3F0cjoAAAsdACAAIAFBA3ZqIgAgAC0AAEF+IAFBB3F3cToAAAsWACAAIAFBA3ZqLQAAIAFBB3F2QQFxCz8AIAAgAToAACAAQQxqQQA2AAAgAEEKakEAOwAAIABBBmogAjYAACAAQQJqQYCAgIABNgAAIABBAWpBADoAAAsxACAAQQA7AAAgAEEMakEANgAAIABBCmpBADsAACAAQQZqIAE2AAAgAEECakEANgAACwcAIAAtAAALCQAgACABOgAACwoAIABBAmovAAALDAAgAEECaiABOwAACwoAIABBBGovAAALDAAgAEEEaiABOwAACwoAIABBBmooAAALDAAgAEEGaiABNgAACwoAIABBCmovAAALDAAgAEEKaiABOwAACwoAIABBDGooAAALDAAgAEEMaiABNgAACxAAIAAgAUEBdGpBEGovAAALEgAgACABQQF0akEQaiACOwAACx4AIABBBGovAAAgAEECai8AAEEBdGtBEGtB//8DcQsnACAAQQpqLwAAIABBBGovAAAgAEECai8AAEEBdGtqQRBrQf//A3EL0gIBB38gAEECai8AACIGRQRAIABBCmpBADsAACAAQQRqQYAgOwAADwtBgIGIAiABIAAgAUYbQYCBiAIgARsiAiAAKQAINwAIIAIgACkAADcAAAJAIAAtAABBCkcEQCAAQQFqIQUgAEEQaiEDIAJBEGohBEGAICEBA0AgASAFIAMvAAAiCGovAAAiB2shASAHBEAgAiABQf//A3FqIAAgCGogB/wKAAALIAQgATsAACADQQJqIQMgBEECaiEEIAZBAWsiBg0ACwwBCyAAQRBqIQMg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AAtBACEBQX8hAgNAAn8gAUH8H3FBHEYEQCACQf8BcUECdCgC4KmLAiACQQh2cyICDAELIAIgACABaiIDLQAAc0H/AXFBAnRB4KmLAmooAgAgAkEIdnMiAiADQQFqLQAAcwtB/wFxQQJ0KALgqYsCIAJBCHZzIQIgAUECaiIBQYAgRw0ACyAAQRxqIAJBf3MiADYAACAAC6kBAQN/AkACQCACRQ0AA0BBACEDA0AgAyIFQQFqIQMgASAFai0AAA0ACyAEIAVPDQEgACAEaiABIARqLQAAOgAAIARBAWoiBCACRw0ACwwBCyACIARNDQAgBCEDIAIgBGtBB3EiAQRAA0AgACADakEAOgAAIANBAWohAyABQQFrIgENAAsLIAQgAmtBeEsNAANAIAAgA2pCADcAACACIANBCGoiA0cNAAsLCz4AIABBAWpBAEH/H/wLACAAQQxqQQA2AAAgAEEIaiADNgAAIABBBmogAjsAACAAQQRqIAE7AAAgAEEMNgAACzEAIABBDDsAACAAQQhqIAQ2AAAgAEEGaiADOwAAIABBBGogAjsAACAAQQJqIAE7AAALEwAgAEEgciAAIABBwQBrQRpJGwsTACAAQSBrIAAgAEHhAGtBGkkbCw4AIAAgAUEFdGpByABqCw4AIAAgAUEYbGpByBBqCx0AIAAgAUGEAmxBACABIABBIGooAABJG2pByBNqCzMBAX8gAEFAayIAKAAAIgMgAkEHakF4cWoiAkGAgIAITQR/IAAgAjYAACABIANqBUEACwsxACAAQQE7AAAgAEEYakIANwAAIABBEGpCADcAACAAQQhqQgA3AAAgAEEEakEANgAACzQAIABBgAI7AAAgAEEYakIANwAAIABBEGogAbc5AAAgAEEIaiABrDcAACAAQQRqIAE2AAALMwAgAEGABDsAACAAQRhqQgA3AAAgAEEQaiABuTkAACAAQQhqIAE3AAAgAEEEaiABPgAACzYAIABBgAY7AAAgAEEYakIANwAAIABBEGogATkAACAAQQhqIAH8BjcAACAAQQRqIAH8AjYAAAtFACAAQQA6AAAgAEEcaiADNgAAIABBGGogAjYAACAAQRBqQgA3AAAgAEEIakIANwAAIABBBGpBADYAACAAQQFqIAE6AAALMgAgACABRwRAIAAgASkAGDcAGCAAIAEpABA3ABAgACAB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AkAgAi0AAARAIANBATsAAAwBCyACQRxqKAAAIgRFBEAgA0GACDsAAAwBCwJAIABBQGsiBSgAACIGIARBB2pBeHFqIgdBgICACEsNACACQRhqKAAAIQggBSAHNgAAIAEgBmoiAUUNAEEAIQICQCAEQQFHBEAgBEEBcSAEQX5xIQYDQCABIAJqIgcgAiAIaiIJLQAAIgBBIHIgACAAQcEAa0H/AXFBGkkbOgAAIAdBAWogCUEBai0AACIAQSByIAAgAEHBAGtB/wFxQRpJGzoAACAGIAJBAmoiAkcNAAtFDQELIAEgAmogAiAIai0AACIAQSByIAAgAEHBAGtB/wFxQRpJGzoAAAsgA0GACDsAACADQRhqIAE2AAAgA0EQakIANwAAIANBCGpCADcAACADQQRqQQA2AAAgA0EcaiAENgAADwsgAEEEakEGNgAADwsgA0EYakEANgAAIANBEGpCADcAACADQQhqQgA3AAAgA0EEakEANgAAIANBHGpBADYAAAuFAwEGfwJAIAItAAAEQCADQQE7AAAMAQsgAkEcaigAACIERQRAIANBgAg7AAAMAQsCQCAAQUBrIgUoAAAiBiAEQQdqQXhxaiIHQYCAgAhLDQAgAkEYaigAACEIIAUgBzYAACABIAZqIgFFDQBBACECAkAgBEEBRwRAIARBAXEgBEF+cSEGA0AgASACaiIHIAIgCGoiCS0AACIAQSBrIAAgAEHhAGtB/wFxQRpJGzoAACAHQQFqIAlBAWotAAAiAEEgayAAIABB4QBrQf8BcUEaSRs6AAAgBiACQQJqIgJHDQALRQ0BCyABIAJqIAIgCGotAAAiAEEgayAAIABB4QBrQf8BcUEaSRs6AAALIANBgAg7AAAgA0EYaiABNgAAIANBEGpCADcAACADQQhqQgA3AAAgA0EEakEANgAAIANBHGogBDYAAA8LIABBBGpBBjYAAA8LIANBGGpBADYAACADQRBqQgA3AAAgA0EIakIANwAAIANBBGpBADYAACADQRxqQQA2AAALigIBBX9BASEGIAAtAABFBEAgAEEYaigAACEEQQAhBgJAIABBHGooAAAiAEUNAAJAA0AgAiAEai0AAEEJayIDQRdLDQFBASADdEGTgIAEcUUNASAAIAJBAWoiAkcNAAsgACICIQMMAQsgACACTQRAIAAhAwwBCyAEQQFr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IQggACADIAEgB2oiBC0AACAEQQFqLQAAIARBAmotAAAgBEEDai0AABB4IgRFDTgMQwsgBUEDaiEIIAEgB2oiBEEBai0AAEEFdCIGIAQtAABBBXQiBUYNNyAGIAxqIgQgBSAMaiIGKQAYNwAYIAQgBikAEDcAECAEIAYpAAg3AAggBCAGKQAANwAADDcLIAVBBGohCCABIAdqIgVBAmotAABBBXQiCSAMaiEGAkAgBUEBai0AACIERQ0AIAUtAABBBXQhBQNAIAUgDGoiBy0AAARAIAVBIGohBSAEQQFrIgQNAQwCCwsgBSAJRg03IAYgBykAGDcAGCAGIAcpABA3ABAgBiAHKQAINwAIIAYgBykAADcAAAw3CyAGQQE7AAAgBkEYakIANwAAIAZBEGpCADcAACAGQQhqQgA3AAAgBkEEakEANgAADDYLIAAgAyABIAdqIggtAAAgCEEBai0AACAIQQJqLQAAEGYgBUEEaiEIDDULIAVBBGohCCABIAdqIgZBAmotAABBBXQgDGohBAJAIAYtAABBBXQgDGoiBS0AAEUEQCAGQQFqLQAAQQV0IAxqIgYtAABFDQELIARBATsAACAEQRhqQgA3AAAgBEEQakIANwAAIARBCGpCADcAACAEQQRqQQA2AAAMNQsgBkEQaisAACIbRAAAAAAAAAAAYQRAIARBATsAACAEQRhqQgA3AAAgBEEQakIANwAAIARBCGpCADcAACAEQQRqQQA2AAAMNQsgBUEQaisAACEcIARBGGpCADcAACAEQYAGOwAAIARBEGogHCAcIBuj/Aa5IBuioSIbOQAAIARBCGogG/wGNwAAIARBBGogG/wCNgAADDQLIAVBBGohCCABIAdqIgZBAmotAABBBXQgDGohBAJAIAYtAABBBXQgDGoiBS0AAEUEQCAGQQFqLQAAQQV0IAxqIgYtAABFDQELIARBATsAACAEQRhqQgA3AAAgBEEQakIANwAAIARBCGpCADcAACAEQQRqQQA2AAAMNAsgBkEQaisAACIbRAAAAAAAAAAAYQRAIARBATsAACAEQRhqQgA3AAAgBEEQakIANwAAIARBCGpCADcAACAEQQRqQQA2AAAMNAsgBUEQaisAACEcIARBGGpCADcAACAEQYAGOwAAIARBEGogHCAboyIbOQAAIARBCGogG/wGNwAAIARBBGog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";let Kn=null;function Na(){if(!Kn){const t=globalThis.Buffer;if(typeof t<"u"&&typeof t.from=="function")Kn=new Uint8Array(t.from(yo,"base64"));else{const e=atob(yo),A=e.length;Kn=new Uint8Array(A);for(let n=0;n<A;n++)Kn[n]=e.charCodeAt(n)}}return Kn}const wu=new TextDecoder,Ra=new Uint8Array([87,69,66,68,66,0]),Da=new Uint32Array(256);let Fa=0;function ku(){if(!Fa){for(let t=0;t<256;t++){let e=t;for(let A=0;A<8;A++)e=e&1?3988292384^e>>>1:e>>>1;Da[t]=e>>>0}Fa=1}}function po(t,e=0){ku();let A=4294967295;for(let n=0;n<4096;n++){const s=n>=28&&n<=31?0:t.getUint8(e+n);A=Da[(A^s)&255]^A>>>8}return(A^4294967295)>>>0}function La(t,e=0){Zt(t,e,0,4096),t.setUint8(e+iA+0,87),t.setUint8(e+iA+1,69),t.setUint8(e+iA+2,66),t.setUint8(e+iA+3,68),t.setUint8(e+iA+4,66),t.setUint8(e+iA+5,0),t.setUint16(e+hi,4096,!0),t.setUint16(e+fi,cs,!0),t.setUint16(e+Ci,cr,!0),t.setUint32(e+ke,1,!0),t.setUint32(e+Je,0,!0),t.setUint32(e+oA,1,!0),t.setUint32(e+rA,0,!0),t.setUint32(e+aA,0,!0),t.setUint32(e+FA,0,!0),t.setUint32(e+LA,0,!0);const A=po(t,e);t.setUint32(e+aA,A,!0)}function Zn(t,e=!1){for(let l=0;l<Ra.length;l++)if(t.getUint8(iA+l)!==Ra[l])throw new Tn("Invalid database file: magic bytes mismatch");const A=t.getUint16(hi,!0),n=t.getUint16(fi,!0),s=t.getUint16(Ci,!0),i=t.getUint32(ke,!0),o=t.getUint32(Je,!0),r=t.getUint32(oA,!0),a=t.getUint32(rA,!0),c=t.getUint32(aA,!0);if(s>cs)throw new Cr(`Database file format requires engine version >= ${s}, but running engine is version ${cs}`);if(e&&c!==0){const l=po(t,0);if(l!==c)throw new BA(1,c,l)}return{pageSize:A,fileFormatVersion:n,minReadVersion:s,totalPages:i,freePageHead:o,schemaVersion:r,changeCounter:a,storedChecksum:c}}function ba(t,e=0){return t.getUint32(e+ke,!0)}function qu(t,e,A){A===void 0&&(A=e,e=0),t.setUint32(e+ke,A,!0)}function Mu(t,e=0){return t.getUint32(e+Je,!0)}function Hu(t,e,A){A===void 0&&(A=e,e=0),t.setUint32(e+Je,A,!0)}function Oa(t,e=0){return t.getUint32(e+oA,!0)}function qA(t,e=0){const A=Oa(t,e)+1;return t.setUint32(e+oA,A,!0),A}function Pa(t,e=0){return t.getUint32(e+rA,!0)}function Ye(t,e=0){const A=Pa(t,e)+1;return t.setUint32(e+rA,A,!0),A}function Te(t,e=0){t.setUint32(e+aA,0,!0);const A=po(t,e);return t.setUint32(e+aA,A,!0),A}function Ws(t,e,A,n){let s=0;for(;s<n&&s<Cs(A);s++)t.setUint8(e+s,A.charCodeAt(s));for(;s<n;s++)t.setUint8(e+s,0)}function Ks(t,e,A){const n=[];for(let s=0;s<A;s++){const i=t.getUint8(e+s);if(i===0)break;n.push(i)}return wu.decode(new Uint8Array(n))}function Ga(t){switch(t.toUpperCase()){case"INT32":return _.INT32;case"INT64":return _.INT64;case"FLOAT64":return _.FLOAT64;case"TEXT":return _.TEXT;case"BLOB":return _.BLOB;case"UUID":return _.UUID;case"ULID":return _.ULID;default:throw new Error(`Unsupported column data type: "${t}"`)}}const MA=31,Yu=1,xu=2;function xe(t,e,A){var s;if(e<=1)return t;if(A){const i=A.getPageBytes(e);if(i&&i.byteLength>=4096)return new DataView(i.buffer,i.byteOffset,4096)}const n=(s=t.buffer)==null?void 0:s.__webdbPool;if(n&&typeof n.getResidentSlot=="function"){const i=n.getResidentSlot(e);if(i!==-1)return n.getSlotDataView(i)}return t.buffer.byteLength>=e*4096?new DataView(t.buffer,(e-1)*4096,4096):null}function yA(t,e,A,n){var r;const s=new Uint8Array(A.buffer,A.byteOffset,4096),i=hA(s);A.setUint32(12,i,!0),n!=null&&n.markPageDirty&&n.markPageDirty(e);const o=(r=t.buffer)==null?void 0:r.__webdbPool;if(o&&typeof o.getResidentSlot=="function"){const a=o.getResidentSlot(e);a!==-1&&o.markDirty(a)}}function An(t,e){let A=Le,n=t.getUint32(FA,!0);for(;n!==0;){const s=xe(t,n,e);if(!s)break;A+=MA,n=s.getUint32(8,!0)}return A}function Zs(t,e,A){if(e<0)return null;if(e<Le)return{view:t,offset:es+e*lA,pageId:1};const n=e-Le,s=Math.floor(n/MA),i=n%MA;let o=t.getUint32(FA,!0);for(let a=0;a<s;a++){if(o===0)return null;const c=xe(t,o,A);if(!c)return null;o=c.getUint32(8,!0)}if(o===0)return null;const r=xe(t,o,A);return r?{view:r,offset:Cn+i*lA,pageId:o}:null}function wa(t,e,A){const n=An(t,A),s=xe(t,e,A);if(!s)return-1;zs(s,0,0,n,0),s.setUint8(1,Yu),yA(t,e,s,A);const i=t.getUint32(FA,!0);if(i===0)t.setUint32(FA,e,!0);else{let o=i;for(;o!==0;){const r=xe(t,o,A);if(!r)break;const a=r.getUint32(8,!0);if(a===0){r.setUint32(8,e,!0),yA(t,o,r,A);break}o=a}}return n}function Ee(t,e,A){const n=Zs(t,e,A);if(!n)return null;const{view:s,offset:i}=n,o=s.getUint16(i+0,!0);if(o===0)return null;const r=s.getUint16(i+2,!0),a=s.getUint32(i+4,!0),c=s.getUint32(i+8,!0),l=Ks(s,i+12,we),u=s.getUint32(i+76,!0),g=s.getUint32(i+80,!0),E=s.getBigUint64(i+84,!0),h=s.getUint32(i+92,!0),B=s.getUint8(i+96),Q=s.getUint8(i+97),d=[];for(let p=0;p<8;p++)d.push(s.getUint16(i+98+p*2,!0));return{tableId:o,columnCount:r,rootPageId:a,colCatalogPageId:c,name:l,flags:u,rowCountEstimate:g,autoIncNext:E,pkRootPageId:h>0?h:void 0,pkColumnCount:h>0?B:void 0,pkFlags:h>0?Q:void 0,pkColumnIndices:h>0?d:void 0}}function HA(t,e,A,n){var c;const s=Zs(t,e,n);if(!s)throw new Error(`Invalid table descriptor slot ${e}`);const{view:i,offset:o,pageId:r}=s;if(i.setUint16(o+0,A.tableId,!0),i.setUint16(o+2,A.columnCount,!0),i.setUint32(o+4,A.rootPageId,!0),i.setUint32(o+8,A.colCatalogPageId,!0),Ws(i,o+12,A.name,we),i.setUint32(o+76,A.flags,!0),i.setUint32(o+80,A.rowCountEstimate,!0),i.setBigUint64(o+84,A.autoIncNext,!0),new Uint8Array(i.buffer,i.byteOffset).fill(0,o+92,o+lA),A.pkRootPageId&&A.pkRootPageId>0){i.setUint32(o+92,A.pkRootPageId,!0),i.setUint8(o+96,A.pkColumnCount??1),i.setUint8(o+97,A.pkFlags??ft.PRIMARY|ft.UNIQUE);for(let l=0;l<8;l++)i.setUint16(o+98+l*2,((c=A.pkColumnIndices)==null?void 0:c[l])??0,!0)}r>1&&yA(t,r,i,n)}function Uo(t){return t.pkRootPageId&&t.pkRootPageId>0&&t.pkColumnCount&&t.pkColumnCount>0&&(t.pkFlags??ft.PRIMARY|ft.UNIQUE)&ft.PRIMARY?{indexId:32768+t.tableId,tableId:t.tableId,rootPageId:t.pkRootPageId,columnCount:t.pkColumnCount,flags:t.pkFlags??ft.PRIMARY|ft.UNIQUE,columnIndices:t.pkColumnIndices?[...t.pkColumnIndices]:[0,0,0,0,0,0,0,0],colDirections:[0,0,0,0,0,0,0,0],name:`pk_${t.name}`}:null}function Vu(t,e,A){const n=Se(t,e,A);return n!==-1?Ee(t,n,A):null}function Se(t,e,A){const n=An(t,A);for(let s=0;s<n;s++){const i=Ee(t,s,A);if(i&&i.flags&GA.ACTIVE&&i.name===e)return s}return-1}function To(t,e=0,A){for(let n=0;n<Le;n++){const s=e+es+n*lA;if(t.getUint16(s,!0)===0)return n}if(e===0){const n=An(t,A);for(let s=Le;s<n;s++){const i=Zs(t,s,A);if(i&&i.view.getUint16(i.offset,!0)===0)return s}}return-1}function nn(t,e){const A=[],n=An(t,e);for(let s=0;s<n;s++){const i=Ee(t,s,e);i&&i.flags&GA.ACTIVE&&A.push(i)}return A}function pA(t,e){let A=on,n=t.getUint32(LA,!0);for(;n!==0;){const s=xe(t,n,e);if(!s)break;A+=MA,n=s.getUint32(8,!0)}return A}function js(t,e,A){if(e<0)return null;if(e<on)return{view:t,offset:As+e*uA,pageId:1};const n=e-on,s=Math.floor(n/MA),i=n%MA;let o=t.getUint32(LA,!0);for(let a=0;a<s;a++){if(o===0)return null;const c=xe(t,o,A);if(!c)return null;o=c.getUint32(8,!0)}if(o===0)return null;const r=xe(t,o,A);return r?{view:r,offset:Cn+i*uA,pageId:o}:null}function ka(t,e,A){const n=pA(t,A),s=xe(t,e,A);if(!s)return-1;zs(s,0,0,n,0),s.setUint8(1,xu),yA(t,e,s,A);const i=t.getUint32(LA,!0);if(i===0)t.setUint32(LA,e,!0);else{let o=i;for(;o!==0;){const r=xe(t,o,A);if(!r)break;const a=r.getUint32(8,!0);if(a===0){r.setUint32(8,e,!0),yA(t,o,r,A);break}o=a}}return n}function sn(t,e,A){const n=js(t,e,A);if(!n)return null;const{view:s,offset:i}=n,o=s.getUint16(i+0,!0);if(o===0)return null;const r=s.getUint16(i+2,!0),a=s.getUint32(i+4,!0),c=s.getUint8(i+8),l=s.getUint8(i+9),u=[];for(let h=0;h<8;h++)u.push(s.getUint16(i+10+h*2,!0));const g=[];for(let h=0;h<8;h++)g.push(s.getUint8(i+26+h));const E=Ks(s,i+34,we);return{indexId:o,tableId:r,rootPageId:a,columnCount:c,flags:l,columnIndices:u,colDirections:g,name:E}}function So(t,e,A,n){const s=js(t,e,n);if(!s)throw new Error(`Invalid index descriptor slot ${e}`);const{view:i,offset:o,pageId:r}=s;i.setUint16(o+0,A.indexId,!0),i.setUint16(o+2,A.tableId,!0),i.setUint32(o+4,A.rootPageId,!0),i.setUint8(o+8,A.columnCount),i.setUint8(o+9,A.flags);for(let c=0;c<8;c++)i.setUint16(o+10+c*2,A.columnIndices[c]??0,!0);for(let c=0;c<8;c++)i.setUint8(o+26+c,A.colDirections[c]??0);Ws(i,o+34,A.name,we),new Uint8Array(i.buffer,i.byteOffset).fill(0,o+98,o+uA),r>1&&yA(t,r,i,n)}const on=8;function qa(t,e=0,A){for(let n=0;n<on;n++){const s=e+As+n*uA;if(t.getUint16(s+0,!0)===0)return n}if(e===0){const n=pA(t,A);for(let s=on;s<n;s++){const i=js(t,s,A);if(i&&i.view.getUint16(i.offset,!0)===0)return s}}return-1}function $s(t,e,A){const n=e.toLowerCase(),s=pA(t,A);for(let o=0;o<s;o++){const r=sn(t,o,A);if(r&&r.name.toLowerCase()===n)return{slotIdx:o,desc:r}}const i=An(t,A);for(let o=0;o<i;o++){const r=Ee(t,o,A);if(r&&r.flags&GA.ACTIVE){const a=Uo(r);if(a&&a.name.toLowerCase()===n)return{slotIdx:-(o+1),desc:a}}}return null}function Ve(t,e,A){const n=[];let s=!1;const i=e-1;let o=i>=0?Ee(t,i,A):null;if((!o||o.tableId!==e)&&(o=nn(t,A).find(c=>c.tableId===e)??null),o&&o.flags&GA.ACTIVE){const a=Uo(o);a&&(n.push(a),s=!0)}const r=pA(t,A);for(let a=0;a<r;a++){const c=sn(t,a,A);if(c&&c.tableId===e){if(s&&c.flags&ft.PRIMARY)continue;n.push(c)}}return n}function Ma(t,e){const A=[],n=nn(t,e),s=new Set;for(const o of n){s.add(o.tableId);const r=Ve(t,o.tableId,e);for(const a of r)A.push(a)}const i=pA(t,e);for(let o=0;o<i;o++){const r=sn(t,o,e);r&&!s.has(r.tableId)&&A.push(r)}return A}function No(t,e,A){if(A===void 0&&(A=e,e=0),A<on){const n=e+As+A*uA;return Zt(t,n,0,uA),0}if(e===0){const n=js(t,A);return n?(Zt(n.view,n.offset,0,uA),n.pageId>1&&yA(t,n.pageId,n.view),0):-1}return-1}function Ha(t,e,A){if(A===void 0&&(A=e,e=0),A<Le){const n=e+es+A*lA;return Zt(t,n,0,lA),0}if(e===0){const n=Zs(t,A);return n?(Zt(n.view,n.offset,0,lA),n.pageId>1&&yA(t,n.pageId,n.view),0):-1}return-1}function zs(t,e,A,n,s=0){Zt(t,e,0,4096),t.setUint8(e+0,yn),t.setUint8(e+1,0),t.setUint16(e+2,0,!0),t.setUint16(e+4,A,!0),t.setUint16(e+6,n,!0),t.setUint32(e+8,s,!0),t.setUint32(e+12,0,!0)}function tA(t,e){return{pageType:t.getUint8(e+0),flags:t.getUint8(e+1),colCountInPage:t.getUint16(e+2,!0),tableId:t.getUint16(e+4,!0),startColIndex:t.getUint16(e+6,!0),nextColCatalogPageId:t.getUint32(e+8,!0),pageChecksum:t.getUint32(e+12,!0)}}function Xu(t,e,A,n,s,i){t.setUint8(e+0,yn),t.setUint8(e+1,0),t.setUint16(e+2,A,!0),t.setUint16(e+4,n,!0),t.setUint16(e+6,s,!0),t.setUint32(e+8,i,!0)}function Ro(t,e,A,n){if(A<0||A>=cA)throw new Error(`Invalid catalog in-page slot ${A}`);const s=e+Cn+A*di;t.setUint8(s+0,n.type),t.setUint8(s+1,n.flags),t.setUint16(s+2,n.colOffset,!0),Ws(t,s+4,n.name,we),t.setUint32(s+68,0,!0)}function Ya(t,e,A){const n=e+Cn+A*di,s=t.getUint8(n+0),i=t.getUint8(n+1),o=t.getUint16(n+2,!0),r=Ks(t,n+4,we);return{type:s,flags:i,colOffset:o,name:r}}function xa(t){return{pageChainIdx:Math.floor(t/cA),colIdxInPage:t%cA}}function Va(t,e,A,n){var F,D,O,w,P;if(n.length===0)throw new Error("Table must have at least one column");if(n.length>We)throw new Un(n.length,We);if(Se(t,A,e)!==-1)throw new Es(A);let s=To(t,0,e);if(s===-1){const I=e.allocateNewPage();if(!I||I<=1)throw new xi(Le+1,Le);if(s=wa(t,I,e),s===-1)throw new xi(Le+1,Le)}const i=s+1,o=e.allocateNewPage(),r=e.getPageBytes(o),a=new DataView(r.buffer,r.byteOffset);a.setUint8(0,13),a.setUint8(1,0),a.setUint16(2,0,!0),a.setUint16(4,4096,!0),a.setUint32(6,0,!0),a.setUint16(10,0,!0),a.setUint32(12,0,!0),e.markPageDirty(o);const c=[];let l=0;for(let I=0;I<n.length;I++){const b=n[I],H=typeof b.type=="string"?Ga(b.type):b.type;let J=0;typeof b.flags=="number"?J=b.flags:((b.primaryKey||(F=b.flags)!=null&&F.primaryKey)&&(J|=gt.PRIMARY_KEY),(b.notNull||(D=b.flags)!=null&&D.notNull)&&(J|=gt.NOT_NULL),(b.indexed||(O=b.flags)!=null&&O.indexed)&&(J|=gt.INDEXED),(b.autoInc||b.autoIncrement||(w=b.flags)!=null&&w.autoInc||(P=b.flags)!=null&&P.autoIncrement)&&(J|=gt.AUTO_INC));const ot=l;switch(H){case _.INT32:l+=4;break;case _.INT64:case _.FLOAT64:l+=8;break;case _.UUID:case _.ULID:l+=16;break}c.push({type:H,flags:J,colOffset:ot,name:b.name})}const u=c.length,g=Math.ceil(u/cA),E=[];for(let I=0;I<g;I++)E.push(e.allocateNewPage());for(let I=0;I<g;I++){const b=E[I],H=I<g-1?E[I+1]:0,J=I*cA,ot=Math.min(u-J,cA),rt=e.getPageBytes(b),V=new DataView(rt.buffer,rt.byteOffset);zs(V,0,i,J,H),V.setUint16(2,ot,!0);for(let Ft=0;Ft<ot;Ft++){const bt=c[J+Ft];Ro(V,0,Ft,bt)}const X=hA(rt);V.setUint32(12,X,!0),e.markPageDirty(b)}const h=E[0],B=[];for(let I=0;I<c.length;I++)c[I].flags&gt.PRIMARY_KEY&&B.push(c[I]);let Q=0,d=0,p=0;const U=[0,0,0,0,0,0,0,0];if(B.length>0){Q=e.allocateNewPage();const I=e.getPageBytes(Q),b=new DataView(I.buffer,I.byteOffset);Ss(b,0,0),e.markPageDirty(Q),d=Math.min(B.length,8),p=ft.PRIMARY|ft.UNIQUE;for(let H=0;H<d;H++){const J=B[H].name;let ot=0;for(let rt=0;rt<c.length;rt++)if(c[rt].name===J){ot=rt;break}U[H]=ot}}const N={tableId:i,columnCount:u,rootPageId:o,colCatalogPageId:h,name:A,flags:GA.ACTIVE,rowCountEstimate:0,autoIncNext:1n,pkRootPageId:Q>0?Q:void 0,pkColumnCount:Q>0?d:void 0,pkFlags:Q>0?p:void 0,pkColumnIndices:Q>0?U:void 0};HA(t,s,N,e),qA(t),Ye(t),Te(t);const m=Ve(t,i,e),T=[];for(let I=0;I<B.length;I++)T.push(B[I].name);return{...N,columns:c,primaryKey:T.length>0?T:void 0,indexes:m.length>0?m:void 0}}function Do(t,e,A){const n=Se(t,A,e);if(n===-1)throw new pn(A);const s=Ee(t,n,e),i=[];let o=s.colCatalogPageId,r=0;for(;o!==0&&r<s.columnCount;){const l=e.getPageBytes(o),u=new DataView(l.buffer,l.byteOffset),g=tA(u,0);for(let E=0;E<g.colCountInPage;E++){const h=Ya(u,0,E);i.push(h),r++}o=g.nextColCatalogPageId}const a=Ve(t,s.tableId,e),c=[];for(let l=0;l<i.length;l++)i[l].flags&gt.PRIMARY_KEY&&c.push(i[l].name);return{...s,columns:i,primaryKey:c.length>0?c:void 0,indexes:a.length>0?a:void 0}}function Ju(t,e){const A=nn(t,e),n=[];for(let s=0;s<A.length;s++)n.push(Do(t,e,A[s].name));return n}const Xa=new TextEncoder;function vs(t,e){const A=e??Na(),n=new WebAssembly.Module(A),s=new WebAssembly.Instance(n,{env:{memory:t}}),i=s.exports;i.__stack_pointer&&typeof i.__stack_pointer=="object"&&"value"in i.__stack_pointer&&(i.__stack_pointer.value=4378624);const o=(l,u=0)=>l.byteOffset+u;let r=new Uint8Array(t.buffer);const a=()=>(r.buffer!==t.buffer&&(r=new Uint8Array(t.buffer)),r);return{instance:s,exports:i,memory:t,page_init:(l,u,g=ls,E=0)=>{i.page_init(o(l,u),g,E)},page_init_free:(l,u,g=0)=>{i.page_init_free(o(l,u),g)},page_get_type:(l,u)=>i.page_get_type(o(l,u)),page_set_type:(l,u,g)=>{i.page_set_type(o(l,u),g)},page_get_cell_count:(l,u)=>i.page_get_cell_count(o(l,u)),page_set_cell_count:(l,u,g)=>{i.page_set_cell_count(o(l,u),g)},page_get_cell_content_offset:(l,u)=>i.page_get_cell_content_offset(o(l,u)),page_set_cell_content_offset:(l,u,g)=>{i.page_set_cell_content_offset(o(l,u),g)},page_get_next_page_id:(l,u)=>i.page_get_next_page_id(o(l,u)),page_set_next_page_id:(l,u,g)=>{i.page_set_next_page_id(o(l,u),g)},page_get_free_bytes:(l,u)=>i.page_get_free_bytes(o(l,u)),page_set_free_bytes:(l,u,g)=>{i.page_set_free_bytes(o(l,u),g)},page_get_checksum:(l,u)=>i.page_get_checksum(o(l,u)),page_set_checksum:(l,u,g)=>{i.page_set_checksum(o(l,u),g)},page_get_cell_offset:(l,u,g)=>i.page_get_cell_offset(o(l,u),g),page_set_cell_offset:(l,u,g,E)=>{i.page_set_cell_offset(o(l,u),g,E)},page_get_contiguous_free_space:(l,u)=>i.page_get_contiguous_free_space(o(l,u)),page_get_total_free_space:(l,u)=>i.page_get_total_free_space(o(l,u)),page_compact:(l,u,g=0,E)=>{E||l.buffer!==t.buffer?Fn(l,u,g,E):i.page_compact_raw(o(l,u),g)},page_get_row_length:(l,u)=>i.page_get_row_length(o(l,u)),page_insert_row:(l,u,g,E=0)=>l.buffer===t.buffer&&i.page_insert_row_raw?(a().set(g,zt),i.page_insert_row_raw(o(l,u),zt,g.byteLength,E)):bn(l,u,g,E),page_delete_row:(l,u,g)=>{i.page_delete_row(o(l,u),g)},page_update_row:(l,u,g,E,h=0)=>vi(l,u,g,E,h),page_insert_index_leaf_cell:(l,u,g,E,h,B=0)=>{if(l.buffer===t.buffer&&i.page_insert_index_cell_raw){const Q=o(l,u);if(g===_.NULL||E===null||E===void 0)return i.page_insert_index_cell_raw(Q,_.NULL,0n,0,0,0,h,B);if(g===_.INT32)return i.page_insert_index_cell_raw(Q,_.INT32,0n,Number(E)|0,0,4,h,B);if(g===_.INT64){const U=BigInt(E);return i.page_insert_index_cell_raw(Q,_.INT64,U,Number(U),0,8,h,B)}if(g===_.FLOAT64)return i.page_insert_index_cell_raw(Q,_.FLOAT64,0n,Number(E),0,8,h,B);const d=a();let p=0;if(g===_.UUID)fA.encode(String(E),d,zt),p=16;else if(g===_.ULID)CA.encode(String(E),d,zt),p=16;else if(g===_.TEXT)p=Xa.encodeInto(String(E),d.subarray(zt,zt+8192)).written;else{const U=E instanceof Uint8Array?E:new Uint8Array(E);p=U.byteLength,d.set(U,zt)}return i.page_insert_index_cell_raw(Q,g,0n,0,zt,p,h,B)}return eo(l,u,g,E,h,B)},page_delete_index_leaf_cell:(l,u,g)=>{l.buffer===t.buffer&&i.page_delete_index_leaf_cell?i.page_delete_index_leaf_cell(o(l,u),g):Ao(l,u,g)},page_binary_search_index_leaf:(l,u,g,E,h)=>{if(l.buffer===t.buffer&&i.page_binary_search_index_raw){const B=o(l,u),Q=h!==void 0?1:0,d=h!==void 0?h:0n;let p=g;if((g===_.NULL||E===null||E===void 0)&&(p=_.NULL),p===_.NULL||p===_.INT32||p===_.INT64||p===_.FLOAT64){const T=p===_.NULL?0:Number(E),F=i.page_binary_search_index_raw(B,p,T,0,0,Q,d);return F>=0?{found:!0,slot_idx:F}:{found:!1,slot_idx:-F-1}}const U=a();let N=0;if(p===_.UUID)fA.encode(String(E),U,zt),N=16;else if(p===_.ULID)CA.encode(String(E),U,zt),N=16;else if(p===_.TEXT)N=Xa.encodeInto(String(E),U.subarray(zt,zt+8192)).written;else{const T=E instanceof Uint8Array?E:new Uint8Array(E);N=T.byteLength,U.set(T,zt)}const m=i.page_binary_search_index_raw(B,p,0,zt,N,Q,d);return m>=0?{found:!0,slot_idx:m}:{found:!1,slot_idx:-m-1}}return Ds(l,u,g,E,h)},page_table_hash:(l,u)=>i.page_table_hash(l,u),page_table_get:(l,u,g,E)=>i.page_table_get(o(l,u),g,E),page_table_set:(l,u,g,E,h)=>{if(i.page_table_set(o(l,u),g,E,h)<0)throw new Error(`BufferPool page table full: cannot insert page ${E}`)},page_table_delete:(l,u,g,E)=>i.page_table_delete(o(l,u),g,E)!==0,buf_pool_get_slot_offset:l=>i.buf_pool_get_slot_offset(l),buf_pool_read_slot_to_page:(l,u,g)=>i.buf_pool_read_slot_to_page(o(l,u),g),buf_pool_write_slot_to_page:(l,u,g,E)=>{i.buf_pool_write_slot_to_page(o(l,u),g,E)},buf_pool_get_resident_slot:(l,u,g,E)=>i.buf_pool_get_resident_slot(o(l,u),g,E),buf_pool_assign_slot:(l,u,g,E,h,B)=>{i.buf_pool_assign_slot(o(l,u),o(l,g),E,h,B)},buf_pool_unassign_slot:(l,u,g,E,h)=>{i.buf_pool_unassign_slot(o(l,u),o(l,g),E,h)},buf_pool_mark_dirty:(l,u,g)=>{i.buf_pool_mark_dirty(o(l,u),g)},buf_pool_clear_dirty:(l,u,g)=>{i.buf_pool_clear_dirty(o(l,u),g)},buf_pool_is_dirty:(l,u,g)=>i.buf_pool_is_dirty(o(l,u),g)!==0,buf_pool_pin_slot:(l,u)=>{oo(l,u)},buf_pool_unpin_slot:(l,u)=>{ro(l,u)},buf_pool_is_pinned:(l,u)=>$A(l,u),buf_pool_find_victim:(l,u,g,E,h,B)=>ao(l,u,g,E,h,B),buf_pool_select_eviction_victim:(l,u,g,E,h,B,Q,d)=>co(l,u,g,E,h,B,Q,d),catalog_init_page1:l=>{i.catalog_init_page1(o(l))},catalog_read_page1_header:(l,u)=>Zn(l,u),catalog_get_total_pages:l=>i.catalog_get_total_pages(o(l)),catalog_set_total_pages:(l,u)=>{i.catalog_set_total_pages(o(l),u)},catalog_get_free_page_head:l=>i.catalog_get_free_page_head(o(l)),catalog_set_free_page_head:(l,u)=>{i.catalog_set_free_page_head(o(l),u)},catalog_get_schema_version:l=>i.catalog_get_schema_version(o(l)),catalog_increment_schema_version:l=>i.catalog_increment_schema_version(o(l)),catalog_get_change_counter:l=>i.catalog_get_change_counter(o(l)),catalog_increment_change_counter:l=>i.catalog_increment_change_counter(o(l)),catalog_update_page1_checksum:l=>i.catalog_update_page1_checksum(o(l)),sql_like_match:(l,u)=>Wn(l,u),fnv1a_32:l=>Ta(l),compare_sorter_keys:Ua,vm_step:(l,u,g)=>mo(l,u,g,(E,h,B,Q,d)=>i.vm_step_raw(h,B,Q,d),t.buffer)}}let Fo=null;const Ja=new WeakMap;function ti(t,e,A){var i,o,r;const n=(o=(i=globalThis.process)==null?void 0:i.env)==null?void 0:o.WEBDB_CORE;if((n==="wasm"||n==="js"?n:globalThis.__WEBDB_DEFAULT_CORE__)==="wasm"){const a=(r=e.buffer)==null?void 0:r.__webdbPool;if(a!=null&&a.wasmMemory){let c=Ja.get(e.buffer);return c||(c=vs(a.wasmMemory),Ja.set(e.buffer,c)),c.vm_step(t,e,A)}if(!Fo){const c=Math.ceil(mi/65536),l=new WebAssembly.Memory({initial:c,maximum:c});Fo=vs(l)}return Fo.vm_step(t,e,A)}return Gu(t,e,A)}function Wa(t=bA,e=EA){const A=yi(t,e),n=A.transientArenaOffset+Math.min(e,2*1024*1024),s=Math.ceil(n/65536),i=Math.ceil((A.transientArenaOffset+e)/65536);return new WebAssembly.Memory({initial:s,maximum:Math.max(s,i)})}class Ka{constructor(e){G(this,"io");G(this,"wasmMemory");G(this,"buffer");G(this,"view");G(this,"uint8");G(this,"slotCount");G(this,"maxQueryMemory");G(this,"offsets");G(this,"slotsEndOffset");G(this,"slotToPageOffset");G(this,"pageToSlotOffset");G(this,"pageToSlotBuckets");G(this,"dirtyMaskOffset");G(this,"vmContextOffset");G(this,"resultBufferOffset");G(this,"bytecodeOffset");G(this,"pageScratchpadOffset");G(this,"transientArenaOffset");G(this,"pin_counts");G(this,"slot_dirty_generations");G(this,"ref_bits");G(this,"slot_views");G(this,"clock_hand",0);G(this,"arena_offset",0);G(this,"in_flight_acquires",new Map);G(this,"allocation_lock",Promise.resolve());var n,s,i;this.slotCount=e.slotCount??((n=e.pool)==null?void 0:n.slotCount)??bA,this.maxQueryMemory=e.maxQueryMemory??((s=e.pool)==null?void 0:s.maxQueryMemory)??EA;const A=e.memory??((i=e.pool)==null?void 0:i.wasmMemory);if(!A)throw new Error("BufferPoolDriver requires a valid WebAssembly.Memory (or pool with wasmMemory)");this.wasmMemory=A,this.buffer=this.wasmMemory.buffer,this.buffer.__webdbPool=this,this.view=new DataView(this.buffer),this.uint8=new Uint8Array(this.buffer),this.offsets=yi(e.useDefaultLayoutOffsets?bA:this.slotCount,this.maxQueryMemory),this.slotsEndOffset=this.offsets.slotsEndOffset,this.slotToPageOffset=this.offsets.slotToPageOffset,this.pageToSlotOffset=this.offsets.pageToSlotOffset,this.pageToSlotBuckets=this.offsets.pageToSlotBuckets,this.dirtyMaskOffset=this.offsets.dirtyMaskOffset,this.vmContextOffset=this.offsets.vmContextOffset,this.resultBufferOffset=this.offsets.resultBufferOffset,this.bytecodeOffset=this.offsets.bytecodeOffset,this.pageScratchpadOffset=this.offsets.pageScratchpadOffset,this.transientArenaOffset=this.offsets.transientArenaOffset,this.ref_bits=new Uint8Array(this.slotCount),this.pin_counts=new Uint32Array(this.slotCount),this.slot_dirty_generations=new Uint32Array(this.slotCount),this.slot_views=new Array(this.slotCount);for(let o=0;o<this.slotCount;o++)this.slot_views[o]=new DataView(this.buffer,o*4096,4096);if(e.io)this.io=e.io;else if(e.vfs)this.io=new Ki({vfs:e.vfs,memory:this.wasmMemory});else throw new Error("BufferPoolDriver requires either an Io instance or IVfsAdapter");Zt(this.uint8,this.slotToPageOffset,0,this.slotCount*4),Zt(this.uint8,this.pageToSlotOffset,0,this.pageToSlotBuckets*gA),Zt(this.uint8,this.dirtyMaskOffset,0,Math.ceil(this.slotCount/8)),this.assignSlot(0,1),this.pin_counts[0]=1}validate_slot_idx(e){if(!Number.isInteger(e)||e<0||e>=this.slotCount)throw new Error(`Invalid slot index: ${e}. Must be an integer between 0 and ${this.slotCount-1}`)}validate_page_id(e){if(!Number.isInteger(e)||e<=0)throw new Error(`Invalid page ID: ${e}. Page IDs must be positive integers.`)}async with_allocation_lock(e){const A=this.allocation_lock;let n;this.allocation_lock=new Promise(s=>{n=s}),await A;try{return await e()}finally{n()}}setTransactionCoordinator(e){this.io.setTransactionCoordinator(e)}getSlotOffset(e){return this.validate_slot_idx(e),e*4096}getPageBytesInSlot(e){return this.validate_slot_idx(e),this.uint8.subarray(e*4096,(e+1)*4096)}getSlotDataView(e){this.validate_slot_idx(e);const A=this.slot_views[e];if(A&&A.buffer===this.wasmMemory.buffer)return A;const n=new DataView(this.wasmMemory.buffer,e*4096,4096);return this.slot_views[e]=n,n}getResidentSlot(e){return this.validate_page_id(e),he(this.view,this.pageToSlotOffset,this.pageToSlotBuckets,e)}getAssignedPage(e){return this.validate_slot_idx(e),jA(this.view,this.slotToPageOffset,e)}assignSlot(e,A){if(this.validate_slot_idx(e),!Number.isInteger(A)||A<=0)throw new Error(`Invalid page ID: ${A}. Must be a positive integer >= 1`);if(e===0&&A!==1)throw new Error(`Cannot reassign slot 0: reserved permanently for page 1 (got page ${A})`);const n=this.getResidentSlot(A);if(n!==-1&&n!==e)throw new Error(`Cannot map page ${A} to slot ${e}: already resident in slot ${n}`);Vr(this.view,this.slotToPageOffset,this.pageToSlotOffset,this.pageToSlotBuckets,e,A),this.ref_bits[e]=1}unassignSlot(e){if(this.validate_slot_idx(e),e===0)throw new Error("Cannot unassign slot 0: reserved permanently for page 1");Xr(this.view,this.slotToPageOffset,this.pageToSlotOffset,this.pageToSlotBuckets,e),this.ref_bits[e]=0}markDirty(e){this.validate_slot_idx(e),Jr(this.uint8,this.dirtyMaskOffset,e),this.slot_dirty_generations[e]++}clearDirty(e){this.validate_slot_idx(e),Wr(this.uint8,this.dirtyMaskOffset,e)}isDirty(e){return this.validate_slot_idx(e),io(this.uint8,this.dirtyMaskOffset,e)}pinSlot(e){this.validate_slot_idx(e),oo(this.pin_counts,e)}unpinSlot(e){this.validate_slot_idx(e),ro(this.pin_counts,e)}pinPage(e){this.validate_page_id(e);const A=this.getResidentSlot(e);if(A===-1)throw new Error(`Cannot pin page ${e}: page is not resident in buffer pool`);this.pinSlot(A)}unpinPage(e){if(this.validate_page_id(e),e===1)return;const A=this.getResidentSlot(e);A!==-1&&this.unpinSlot(A)}forceUnpinSlot(e){this.validate_slot_idx(e),e!==0&&(this.pin_counts[e]=0)}forceUnpinPage(e){if(this.validate_page_id(e),e<=1)return;const A=this.getResidentSlot(e);A!==-1&&this.forceUnpinSlot(A)}isSlotPinned(e){return this.validate_slot_idx(e),$A(this.pin_counts,e)}getPinCount(e){return this.validate_slot_idx(e),this.pin_counts[e]}getRefBit(e){return this.validate_slot_idx(e),this.ref_bits[e]}setRefBit(e,A){this.validate_slot_idx(e),this.ref_bits[e]=A?1:0}allocArena(e){const A=e+7&-8;if(this.arena_offset+A>this.maxQueryMemory)throw new Vi;const n=this.transientArenaOffset+this.arena_offset;return this.arena_offset+=A,n}resetArena(){this.arena_offset>0&&(Zt(this.uint8,this.transientArenaOffset,0,this.arena_offset),this.arena_offset=0)}getArenaOffset(){return this.arena_offset}async acquirePage(e,A=!1){this.validate_page_id(e);const n=this.getResidentSlot(e);if(n!==-1)return this.setRefBit(n,1),A&&this.pinSlot(n),n;const s=this.in_flight_acquires.get(e);if(s){const o=await s;return A&&this.pinSlot(o),o}const i=(async()=>{const{candidate_slot:o,flush_page_id:r,next_clock_hand:a}=co(this.buffer,this.ref_bits,this.pin_counts,this.slotToPageOffset,this.dirtyMaskOffset,this.slotCount,this.clock_hand,e);this.clock_hand=a,this.pinSlot(o);try{return await this.io.resolvePageFault(o,e,r),this.assignSlot(o,e),this.setRefBit(o,1),this.clearDirty(o),o}catch(c){throw o!==-1&&this.unpinSlot(o),c}})();this.in_flight_acquires.set(e,i);try{const o=await i;return A||this.unpinSlot(o),o}finally{this.in_flight_acquires.delete(e)}}acquireAndPinPage(e){return this.acquirePage(e,!0)}async flushSlot(e){this.validate_slot_idx(e);const A=this.getAssignedPage(e);if(A===0)return;if(e===0&&A!==1)throw new Error(`Corruption detected: slot 0 is assigned to page ${A} instead of page 1`);const n=this.slot_dirty_generations[e];await this.io.writeSlot(e,A),this.slot_dirty_generations[e]===n&&this.clearDirty(e)}async flushPage(e){this.validate_page_id(e);const A=this.getResidentSlot(e);A!==-1&&this.isDirty(A)&&await this.flushSlot(A)}async flushAllDirty(){for(let e=0;e<this.slotCount;e++)this.isDirty(e)&&await this.flushSlot(e);await this.io.flush()}async allocatePage(e=!1){return this.with_allocation_lock(async()=>{const A=this.getSlotDataView(0),n=R(A,Je),s=R(A,ke);if(n>0){if(n<=1||s>0&&n>s)throw new BA(n,`Corrupted free_page_head pointer ${n} (totalPages: ${s})`);const a=await this.acquirePage(n,e),c=this.getSlotDataView(a),l=y(c,jo);if(l!==PA)throw new BA(n,`Expected free page type 0x00, got 0x${l.toString(16)}`);const u=R(c,$o);if(u===n||s>0&&u>s)throw new BA(n,`Corrupted next_free_page_id pointer ${u} in free page ${n}`);return S(A,Je,u),this.markDirty(0),Rn(c,0),this.markDirty(a),n}const i=s+1;S(A,ke,i),this.markDirty(0);const o=await this.acquirePage(i,e),r=this.getSlotDataView(o);return Rn(r,0),this.markDirty(o),i})}allocateAndPinPage(){return this.allocatePage(!0)}async freePage(e,A=!1){if(this.validate_page_id(e),e<=1)throw new Error(`Cannot free reserved database page ${e}`);return this.with_allocation_lock(async()=>{const n=this.getSlotDataView(0),s=R(n,ke);if(s>0&&e>s)throw new Error(`Cannot free page ${e} beyond total pages ${s}`);const i=this.getResidentSlot(e);if(i!==-1){if(A)this.forceUnpinSlot(i);else if(this.isSlotPinned(i))throw new Error(`Cannot free pinned/active database page ${e}`)}const o=await this.acquirePage(e,!0);try{const r=this.getSlotDataView(o),a=dA(r,0);if(a===PA){if(this.unassignSlot(o),A)return;throw new Error(`Double-free detected: page ${e} is already marked free`)}if(!A&&a===yn)throw new Error(`Cannot free system catalog page ${e}`);const c=R(n,Je);Pr(r,0,c),Zt(this.uint8,o*4096+Fe,0,4096-Fe),this.io.isInTransaction()?await this.io.spillOrWriteSlot(o,e):await this.flushSlot(o),this.unassignSlot(o),this.clearDirty(o),this.setRefBit(o,0),S(n,Je,e),this.markDirty(0)}finally{this.unpinSlot(o)}})}async stepVm(e,A){let n=ti(e,this.view,A);for(;n===L.PAGE_FAULT;){const s=e.cursor.pageId;await this.acquirePage(s),e.status=L.RUNNING,n=ti(e,this.view,A)}return n}}async function Lo(t){var l;const e=await t.getWalFrameCount();if(e===0)return{frameCount:0,committedTxCount:0,abortedTxCount:0,replayedPageCount:0};const A=await t.readWalHeader();if(!A)return await t.truncateWal(0),{frameCount:0,committedTxCount:0,abortedTxCount:0,replayedPageCount:0};try{ys(A,!0)}catch{return await t.truncateWal(0),{frameCount:0,committedTxCount:0,abortedTxCount:0,replayedPageCount:0}}const n=await t.readWalFrames(0,e),s=new Map,i=new Set;let o=0;for(const u of n){const g=$i(u);if(!g.valid||!g.header)break;const{header:E}=g;if(E.frameSeq!==o+1)break;if(o++,s.has(E.txId)||s.set(E.txId,[]),E.frameType===os)i.add(E.txId);else if(E.frameType===is||E.frameType===rs){const h=new Uint8Array(u.buffer,u.byteOffset+OA,4096),B=new Uint8Array(4096);B.set(h),s.get(E.txId).push({pageId:E.pageId,data:B,frameType:E.frameType})}}const r=new Map;let a=0,c=0;for(const[u,g]of s.entries())if(i.has(u)){a++;for(const E of g)E.pageId>0&&r.set(E.pageId,E.data)}else c++;if(r.size>0){const u=[];for(const[g,E]of r.entries())u.push({pageId:g,data:E});u.sort((g,E)=>g.pageId-E.pageId),await t.writePages(u)}return await((l=t.flush)==null?void 0:l.call(t)),await t.truncateWal(0),{frameCount:o,committedTxCount:a,abortedTxCount:c,replayedPageCount:r.size}}class Za{constructor(e,A){G(this,"activeLease",null);G(this,"inFlightNonTxCount",0);G(this,"queue",[]);G(this,"leaseWaiters",[]);G(this,"nextLeaseId",1);G(this,"nextTxId",1);G(this,"crossTabLockName");G(this,"onSyncCrossTab");G(this,"releaseWebLock",null);this.crossTabLockName=e,this.onSyncCrossTab=A}hasWebLocks(){var e;return!!this.crossTabLockName&&typeof navigator<"u"&&typeof((e=navigator==null?void 0:navigator.locks)==null?void 0:e.request)=="function"}async acquireWebLock(){!this.hasWebLocks()||this.releaseWebLock||await new Promise(e=>{navigator.locks.request(this.crossTabLockName,{mode:"exclusive"},()=>new Promise(A=>{this.releaseWebLock=A,e()})).catch(()=>{e()})})}releaseCurrentWebLock(){if(this.releaseWebLock){const e=this.releaseWebLock;this.releaseWebLock=null,e()}}get isLeased(){return this.activeLease!==null}get currentLease(){return this.activeLease}async enqueue(e,A){if(this.activeLease&&A===this.activeLease.leaseId)return e();if(this.activeLease||this.leaseWaiters.length>0||this.hasWebLocks()&&this.inFlightNonTxCount>0)return new Promise((n,s)=>{this.queue.push(async()=>{this.inFlightNonTxCount++;try{this.hasWebLocks()&&this.inFlightNonTxCount===1&&(await this.acquireWebLock(),this.onSyncCrossTab&&await this.onSyncCrossTab());const i=await e();n(i)}catch(i){s(i)}finally{this.inFlightNonTxCount--,this.inFlightNonTxCount===0&&!this.activeLease&&this.releaseCurrentWebLock(),this.drain()}})});this.inFlightNonTxCount++;try{return this.hasWebLocks()&&this.inFlightNonTxCount===1&&(await this.acquireWebLock(),this.onSyncCrossTab&&await this.onSyncCrossTab()),await e()}finally{this.inFlightNonTxCount--,this.inFlightNonTxCount===0&&!this.activeLease&&this.releaseCurrentWebLock(),this.drain()}}async acquireExclusiveLease(){if(!this.activeLease&&this.inFlightNonTxCount===0&&this.queue.length===0){const e={leaseId:this.nextLeaseId++,txId:this.nextTxId++,createdAt:Date.now()};return this.activeLease=e,await this.acquireWebLock(),e}return new Promise(e=>{this.leaseWaiters.push({resolve:async A=>{await this.acquireWebLock(),e(A)}}),this.drain()})}releaseExclusiveLease(e){!this.activeLease||this.activeLease.leaseId!==e||(this.activeLease=null,this.releaseCurrentWebLock(),this.drain())}drain(){if(!this.activeLease){if(this.leaseWaiters.length>0){if(this.inFlightNonTxCount===0){const e=this.leaseWaiters.shift(),A={leaseId:this.nextLeaseId++,txId:this.nextTxId++,createdAt:Date.now()};this.activeLease=A,e.resolve(A)}return}for(;this.queue.length>0&&!this.activeLease&&this.leaseWaiters.length===0&&(!this.hasWebLocks()||this.inFlightNonTxCount===0);){const e=this.queue.shift();e&&e()}}}}class ja{constructor(e,A,n,s){G(this,"vfs");G(this,"pool");G(this,"io");G(this,"queue");G(this,"activeLease",null);G(this,"snapshotFrameCount",0);G(this,"snapshotWalFrameSeq",0);G(this,"slotSnapshots",new Map);G(this,"pinCountsSnapshot",null);G(this,"spilledPages",new Map);G(this,"committedWalPages",new Map);G(this,"walFrameSeq",0);G(this,"txCommitCount",0);G(this,"checkpointSeq",0);G(this,"instanceSalt",Math.floor(Math.random()*4294967295)>>>0||1);G(this,"expectedWalFrameCount",0);G(this,"lastDiskChangeCounter",0);G(this,"lastDiskSchemaVersion",0);G(this,"onCrossTabInvalidated");G(this,"idleTimer",null);G(this,"isClosed",!1);this.vfs=e,this.pool=A,this.io=n,this.queue=new Za(s,()=>this.syncCrossTabState())}setOnCrossTabInvalidated(e){this.onCrossTabInvalidated=e}recordDiskPage1State(){const e=this.pool.getSlotDataView(0);this.lastDiskChangeCounter=e.getUint32(rA,!0),this.lastDiskSchemaVersion=e.getUint32(oA,!0)}async reloadFromDisk(e,A,n){this.pool.getPageBytesInSlot(0).set(e),this.pool.clearDirty(0),this.lastDiskChangeCounter=A,this.lastDiskSchemaVersion=n;for(let s=1;s<this.pool.slotCount;s++)this.pool.unassignSlot(s),this.pool.clearDirty(s),this.pool.pin_counts[s]=0;this.pool.pin_counts[0]=1,this.onCrossTabInvalidated&&await this.onCrossTabInvalidated()}async syncCrossTabState(e=!1){if(!e&&!this.queue.hasWebLocks())return;const A=await this.vfs.getWalFrameCount();let n=!1;if(A>0){const i=await this.vfs.readWalHeader();let o=0;if(i)try{o=ys(i,!0).salt1}catch{o=0}(o!==this.instanceSalt||A!==this.expectedWalFrameCount)&&(n=!0,await Lo(this.vfs),this.committedWalPages.clear(),this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0)}else this.expectedWalFrameCount>0&&(n=!0,this.committedWalPages.clear(),this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0);const[s]=await this.vfs.readPages([1]);if(s){const i=new DataView(s.buffer,s.byteOffset,s.byteLength),o=i.getUint32(rA,!0),r=i.getUint32(oA,!0);(n||o!==this.lastDiskChangeCounter||r!==this.lastDiskSchemaVersion)&&await this.reloadFromDisk(s,o,r)}}get leaseQueue(){return this.queue}isInTransaction(){return this.activeLease!==null}getActiveLeaseId(){return this.activeLease?this.activeLease.leaseId:null}getActiveTxId(){return this.activeLease?this.activeLease.txId:null}hasSpilledPage(e){return this.spilledPages.has(e)||this.committedWalPages.has(e)}getSpilledPage(e){const A=this.spilledPages.get(e)??this.committedWalPages.get(e);return A?new Uint8Array(A):null}onDirectPageWrite(e,A){if(this.committedWalPages.has(e)&&this.committedWalPages.set(e,new Uint8Array(A)),e===1){const n=new DataView(A.buffer,A.byteOffset,A.byteLength);this.lastDiskChangeCounter=n.getUint32(rA,!0),this.lastDiskSchemaVersion=n.getUint32(oA,!0)}}async spillUncommittedSlot(e,A){if(!this.activeLease){await this.io.writeSlot(e,A);return}this.io.stampSlotChecksum(e,A);const n=this.pool.getPageBytesInSlot(e),s=new Uint8Array(IA);s.set(n),this.spilledPages.set(A,s);const i=this.pool.getSlotDataView(0).getUint32(ke,!0),o=ps({frameType:rs,flags:0,txId:this.activeLease.txId,pageId:A,dbSizePages:i,frameSeq:++this.walFrameSeq},s);await this.vfs.appendWalFrames([o]),this.expectedWalFrameCount=await this.vfs.getWalFrameCount()}async captureSavepoint(){const e=await this.vfs.getWalFrameCount(),A=new Map;for(let i=0;i<this.pool.slotCount;i++){const o=this.pool.getAssignedPage(i);if(o>0){const r=this.pool.isDirty(i),a=new Uint8Array(this.pool.getPageBytesInSlot(i));A.set(i,{pageId:o,dirty:r,data:a})}}const n=new Uint32Array(this.pool.pin_counts),s=new Map;for(const[i,o]of this.spilledPages.entries())s.set(i,new Uint8Array(o));return{frameCount:e,slotSnapshots:A,pinCounts:n,spilledPages:s,walFrameSeq:this.walFrameSeq}}async restoreSavepoint(e){for(let A=1;A<this.pool.slotCount;A++)this.pool.unassignSlot(A),this.pool.clearDirty(A);for(let A=0;A<this.pool.slotCount;A++){const n=e.slotSnapshots.get(A);n&&(this.pool.assignSlot(A,n.pageId),this.pool.getPageBytesInSlot(A).set(n.data),n.dirty?this.pool.markDirty(A):this.pool.clearDirty(A))}this.pool.pin_counts.set(e.pinCounts),this.spilledPages.clear();for(const[A,n]of e.spilledPages.entries())this.spilledPages.set(A,new Uint8Array(n));this.walFrameSeq=e.walFrameSeq,await this.vfs.truncateWal(e.frameCount),this.expectedWalFrameCount=e.frameCount}async begin(){const e=await this.queue.acquireExclusiveLease();this.activeLease=e,this.pauseIdleTimer();try{await this.syncCrossTabState();const A=await this.vfs.getWalFrameCount(),n=await this.vfs.readWalHeader();let s=!1;if(n&&A>0)try{s=ys(n,!0).salt1===this.instanceSalt}catch{s=!1}s||await this.vfs.writeWalHeader(ms({checkpointSeq:this.checkpointSeq,salt1:this.instanceSalt})),this.spilledPages.clear();const i=await this.captureSavepoint();return this.snapshotFrameCount=i.frameCount,this.snapshotWalFrameSeq=i.walFrameSeq,this.slotSnapshots=i.slotSnapshots,this.pinCountsSnapshot=i.pinCounts,e}catch(A){throw this.activeLease=null,this.queue.releaseExclusiveLease(e.leaseId),A}}async commit(e){var o,r;if(!this.activeLease||this.activeLease.leaseId!==e)return;const A=this.activeLease.txId,n=[],s=this.pool.getSlotDataView(0).getUint32(ke,!0);for(const[a,c]of this.spilledPages.entries())this.committedWalPages.set(a,c);for(let a=0;a<this.pool.slotCount;a++)if(this.pool.isDirty(a)){const c=this.pool.getAssignedPage(a);if(c>0){this.io.stampSlotChecksum(a,c);const l=this.pool.getPageBytesInSlot(a),u=new Uint8Array(IA);u.set(l),this.committedWalPages.set(c,u),this.pool.clearDirty(a),n.push(ps({frameType:is,flags:0,txId:A,pageId:c,dbSizePages:s,frameSeq:++this.walFrameSeq},u))}}n.push(ps({frameType:os,flags:0,txId:A,pageId:0,dbSizePages:s,frameSeq:++this.walFrameSeq})),await this.vfs.appendWalFrames(n),await((r=(o=this.vfs).flushWal)==null?void 0:r.call(o));const i=await this.vfs.getWalFrameCount();this.expectedWalFrameCount=i,this.activeLease=null,this.spilledPages.clear(),this.slotSnapshots.clear(),this.pinCountsSnapshot=null,this.txCommitCount++,this.queue.releaseExclusiveLease(e),this.scheduleIdleTimer(),(i>=256||this.txCommitCount>=100)&&this.queue.enqueue(()=>this.executeCheckpoint())}async rollback(e){!this.activeLease||this.activeLease.leaseId!==e||(await this.restoreSavepoint({frameCount:this.snapshotFrameCount,slotSnapshots:this.slotSnapshots,pinCounts:this.pinCountsSnapshot??new Uint32Array(this.pool.pin_counts),spilledPages:new Map,walFrameSeq:this.snapshotWalFrameSeq}),this.activeLease=null,this.spilledPages.clear(),this.slotSnapshots.clear(),this.pinCountsSnapshot=null,this.queue.releaseExclusiveLease(e),this.scheduleIdleTimer())}async checkpoint(){return this.queue.enqueue(()=>this.executeCheckpoint())}async executeCheckpoint(){var o,r;const e=await this.vfs.getWalFrameCount(),A=new Map;if(e>0){const a=await this.vfs.readWalFrames(0,e),c=new Map,l=new Set;for(const u of a){const g=$i(u);if(!g.valid||!g.header)break;const{frameType:E,txId:h,pageId:B}=g.header;if(c.has(h)||c.set(h,[]),E===os)l.add(h);else if(E===is||E===rs){const Q=new Uint8Array(u.buffer,u.byteOffset+OA,IA),d=new Uint8Array(IA);d.set(Q),c.get(h).push({pageId:B,data:d})}}for(const[u,g]of c.entries())if(l.has(u))for(const E of g)E.pageId>0&&A.set(E.pageId,E.data)}for(const[a,c]of this.committedWalPages.entries())A.set(a,c);const n=new Map;for(let a=0;a<this.pool.slotCount;a++)if(this.pool.isDirty(a)){const c=this.pool.getAssignedPage(a);if(c>0){this.io.stampSlotChecksum(a,c);const l=this.pool.getPageBytesInSlot(a),u=new Uint8Array(IA);u.set(l),n.set(c,{slotIdx:a,data:u})}}const s=new Set([...A.keys(),...n.keys()]),i=[];for(const a of s)if(n.has(a)){const{slotIdx:c,data:l}=n.get(a);i.push({pageId:a,data:l}),this.pool.clearDirty(c)}else i.push({pageId:a,data:A.get(a)});return i.length>0&&(i.sort((a,c)=>a.pageId-c.pageId),await this.vfs.writePages(i)),await((r=(o=this.vfs).flush)==null?void 0:r.call(o)),await this.vfs.truncateWal(0),this.committedWalPages.clear(),this.checkpointSeq++,this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0,this.recordDiskPage1State(),await this.vfs.writeWalHeader(ms({checkpointSeq:this.checkpointSeq,salt1:this.instanceSalt})),{pagesWritten:i.length}}async resetWalAfterImport(){this.spilledPages.clear(),this.committedWalPages.clear(),await this.vfs.truncateWal(0),this.checkpointSeq++,this.walFrameSeq=0,this.txCommitCount=0,this.expectedWalFrameCount=0,this.recordDiskPage1State(),await this.vfs.writeWalHeader(ms({checkpointSeq:this.checkpointSeq,salt1:this.instanceSalt}))}scheduleIdleTimer(){this.isClosed||(this.pauseIdleTimer(),this.idleTimer=setTimeout(()=>{this.checkpoint().catch(()=>{})},5e3))}pauseIdleTimer(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null)}async close(){this.isClosed=!0,this.pauseIdleTimer(),await this.checkpoint()}}const $a=new Set(["count","sum","avg","min","max"]),za=new Set(["upper","lower","length","substr","trim","abs","round","floor","ceil","concat","coalesce"]);function eA(t){return $a.has(t.toLowerCase())}function va(t){return za.has(t.toLowerCase())}function Wu(t){return eA(t)||va(t)}function YA(t,e){if(e==="where"){if(t.type==="fn"&&eA(t.name))throw new Bs(t.name);if(t.type==="binary"&&(YA(t.left,e),YA(t.right,e)),t.type==="fn")for(const A of t.args)YA(A,e)}}function Ku(t){const e=[];let A=0;const n=t.length;for(;A<n;){const s=t[A];if(/\s/.test(s)){A++;continue}if(/[0-9]/.test(s)||s==="."&&A+1<n&&/[0-9]/.test(t[A+1])){const i=A;let o=!1;for(;A<n&&(/[0-9]/.test(t[A])||t[A]==="."&&!o);)t[A]==="."&&(o=!0),A++;e.push({type:"NUMBER",value:t.slice(i,A),pos:i});continue}if(s==="'"||s==='"'){const i=s,o=A;A++;let r="";for(;A<n&&t[A]!==i;)t[A]==="\\"&&A+1<n&&A++,r+=t[A],A++;A<n&&t[A]===i&&A++,e.push({type:"STRING",value:r,pos:o});continue}if(s==="("){e.push({type:"LPAREN",value:"(",pos:A++});continue}if(s===")"){e.push({type:"RPAREN",value:")",pos:A++});continue}if(s===","){e.push({type:"COMMA",value:",",pos:A++});continue}if(s==="<"){if(A+1<n&&t[A+1]==="="){e.push({type:"OP",value:"<=",pos:A}),A+=2;continue}if(A+1<n&&t[A+1]===">"){e.push({type:"OP",value:"!=",pos:A}),A+=2;continue}e.push({type:"OP",value:"<",pos:A++});continue}if(s===">"){if(A+1<n&&t[A+1]==="="){e.push({type:"OP",value:">=",pos:A}),A+=2;continue}e.push({type:"OP",value:">",pos:A++});continue}if(s==="="){if(A+1<n&&t[A+1]==="="){e.push({type:"OP",value:"=",pos:A}),A+=2;continue}e.push({type:"OP",value:"=",pos:A++});continue}if(s==="!"&&A+1<n&&t[A+1]==="="){e.push({type:"OP",value:"!=",pos:A}),A+=2;continue}if(s==="+"||s==="-"||s==="/"||s==="%"){e.push({type:"OP",value:s,pos:A++});continue}if(s==="*"){e.push({type:"STAR",value:"*",pos:A++});continue}if(/[a-zA-Z_]/.test(s)){const i=A;for(;A<n;)if(/[a-zA-Z0-9_]/.test(t[A]))A++;else if(t[A]==="."&&A+1<n&&/[a-zA-Z_]/.test(t[A+1]))A+=2;else break;const o=t.slice(i,A);e.push({type:"IDENT",value:o,pos:i});continue}A++}return e.push({type:"EOF",value:"",pos:n}),e}class Zu{constructor(e){G(this,"tokens");G(this,"cursor",0);this.tokens=e}peek(){return this.tokens[this.cursor]??{type:"EOF",value:"",pos:0}}consume(){const e=this.peek();return this.cursor++,e}match(e,A){const n=this.peek();return n.type!==e||A!==void 0&&n.value.toLowerCase()!==A.toLowerCase()?!1:(this.cursor++,!0)}getPrecedence(e){if(e.type==="OP"||e.type==="STAR"){if(e.value==="="||e.value==="!="||e.value==="<"||e.value==="<="||e.value===">"||e.value===">=")return 5;if(e.value==="+"||e.value==="-")return 10;if(e.value==="*"||e.value==="/"||e.value==="%")return 20}return 0}parse(e=0){let A=this.parsePrimary();for(;;){const n=this.peek(),s=this.getPrecedence(n);if(s===0||s<=e)break;this.consume();const i=this.parse(s);A={type:"binary",op:n.value,left:A,right:i}}return A}parsePrimary(){const e=this.peek();if(e.type==="OP"&&e.value==="-"){this.consume();const A=this.parse(25);return A.type==="literal"&&typeof A.value=="number"?{type:"literal",value:-A.value}:{type:"binary",op:"-",left:{type:"literal",value:0},right:A}}if(this.match("NUMBER"))return{type:"literal",value:Number(e.value)};if(this.match("STRING"))return{type:"literal",value:e.value};if(this.match("LPAREN")){const A=this.parse(0);if(!this.match("RPAREN"))throw new Error("Unclosed parenthesis in expression");return A}if(this.match("STAR"))return{type:"col",name:"*"};if(e.type==="IDENT"){this.consume();const A=e.value,n=A.toLowerCase();if(n==="null"&&this.peek().type!=="LPAREN")return{type:"literal",value:null};if(n==="true"&&this.peek().type!=="LPAREN")return{type:"literal",value:!0};if(n==="false"&&this.peek().type!=="LPAREN")return{type:"literal",value:!1};if(this.match("LPAREN")){const s=[];if(!this.match("RPAREN")){for(;;)if(s.push(this.parse(0)),!this.match("COMMA")){if(this.match("RPAREN"))break;throw new Error(`Expected ',' or ')' in argument list of function ${A}`)}}return{type:"fn",name:n,args:s}}return{type:"col",name:A}}throw new Error(`Unexpected token "${e.value}" in expression at position ${e.pos}`)}}function Rt(t){const e=t.trim();if(!e)throw new Error("Cannot parse empty expression");const A=Ku(e);return new Zu(A).parse(0)}function ju(t){let e=0,A=null;const n=t.length;for(let s=0;s<n;s++){const i=t[s];if(A){i===A&&t[s-1]!=="\\"&&(A=null);continue}if(i==="'"||i==='"'){A=i;continue}if(i==="("){e++;continue}if(i===")"){e--;continue}if(e===0&&(i===" "||i===" ")&&s+4<n&&t.slice(s+1,s+3).toLowerCase()==="as"&&/\s/.test(t[s+3])){const o=t.slice(0,s).trim(),r=t.slice(s+4).trim();return{exprStr:o,explicitAlias:r}}}return{exprStr:t.trim()}}function le(t){if(t.type==="col")return t.name.includes(".")?t.name.slice(t.name.lastIndexOf(".")+1):t.name;if(t.type==="fn"){if(t.args.length>0&&t.args[0].type==="col"&&t.args[0].name!=="*"){const e=t.args[0].name.includes(".")?t.args[0].name.slice(t.args[0].name.lastIndexOf(".")+1):t.args[0].name;return`${t.name}_${e}`}return t.name}return t.type==="binary"?"expr":"val"}function ei(t){const{exprStr:e,explicitAlias:A}=ju(t),n=Rt(e),s=A&&A.length>0?A:le(n);return{expr:n,alias:s}}class dt{constructor(e){G(this,"node");this.node=e}add(e){return new dt({type:"binary",op:"+",left:this.node,right:Ne(e)})}sub(e){return new dt({type:"binary",op:"-",left:this.node,right:Ne(e)})}mul(e){return new dt({type:"binary",op:"*",left:this.node,right:Ne(e)})}div(e){return new dt({type:"binary",op:"/",left:this.node,right:Ne(e)})}mod(e){return new dt({type:"binary",op:"%",left:this.node,right:Ne(e)})}eq(e){return new dt({type:"binary",op:"=",left:this.node,right:Ne(e)})}ne(e){return new dt({type:"binary",op:"!=",left:this.node,right:Ne(e)})}lt(e){return new dt({type:"binary",op:"<",left:this.node,right:Ne(e)})}lte(e){return new dt({type:"binary",op:"<=",left:this.node,right:Ne(e)})}gt(e){return new dt({type:"binary",op:">",left:this.node,right:Ne(e)})}gte(e){return new dt({type:"binary",op:">=",left:this.node,right:Ne(e)})}as(e){return{expr:this.node,alias:e}}}function Ne(t){return t===null?{type:"literal",value:null}:typeof t=="boolean"?{type:"literal",value:t}:t instanceof dt?t.node:typeof t=="number"?{type:"literal",value:t}:typeof t=="string"?{type:"literal",value:t}:t}function bo(t){return new dt({type:"col",name:t})}function tc(t){return new dt(Rt(t))}const $u=tc;function ee(t,e){return new dt({type:"fn",name:t.toLowerCase(),args:e.map(A=>typeof A=="string"&&!A.startsWith("'")?bo(A).node:Ne(A))})}const ec=(t,...e)=>ee(t,e),zu={upper:t=>ee("upper",[t]),lower:t=>ee("lower",[t]),length:t=>ee("length",[t]),substr:(t,e,A)=>{const n=[t,e];return A!==void 0&&n.push(A),ee("substr",n)},trim:t=>ee("trim",[t]),abs:t=>ee("abs",[t]),round:t=>ee("round",[t]),floor:t=>ee("floor",[t]),ceil:t=>ee("ceil",[t]),count:t=>ee("count",[t??bo("*").node]),sum:t=>ee("sum",[t]),avg:t=>ee("avg",[t]),min:t=>ee("min",[t]),max:t=>ee("max",[t]),concat:(...t)=>ee("concat",t),coalesce:(...t)=>ee("coalesce",t)};for(const[t,e]of Object.entries(zu))Object.defineProperty(ec,t,{value:e,writable:!0,enumerable:!0,configurable:!0});const vu=ec;function ue(t,e,A){switch(t.type){case"literal":return t.value;case"col":return t.name==="*"?null:e[t.name]!==void 0?e[t.name]:null;case"binary":{const n=ue(t.left,e,A),s=ue(t.right,e,A);if(n===null||s===null||n===void 0||s===void 0)return null;if(t.op==="="||t.op==="!="||t.op==="<"||t.op==="<="||t.op===">"||t.op===">="){const r=typeof n=="string"&&typeof s=="string"?n<s?-1:n>s?1:0:Number(n)<Number(s)?-1:Number(n)>Number(s)?1:0;switch(t.op){case"=":return r===0?1:0;case"!=":return r!==0?1:0;case"<":return r<0?1:0;case"<=":return r<=0?1:0;case">":return r>0?1:0;case">=":return r>=0?1:0}}const i=Number(n),o=Number(s);switch(t.op){case"+":return i+o;case"-":return i-o;case"*":return i*o;case"/":return o===0?null:i/o;case"%":return o===0?null:i%o}return null}case"fn":{const n=t.name.toLowerCase();if(eA(n)){if(e[n]!==void 0)return e[n];const i=t.args[0];if(i&&i.type==="col"){const o=`${n}_${i.name}`;if(e[o]!==void 0)return e[o]}return null}const s=t.args.map(i=>ue(i,e,A));switch(n){case"upper":return s[0]!==null&&s[0]!==void 0?String(s[0]).toUpperCase():null;case"lower":return s[0]!==null&&s[0]!==void 0?String(s[0]).toLowerCase():null;case"length":return s[0]!==null&&s[0]!==void 0?String(s[0]).length:null;case"trim":return s[0]!==null&&s[0]!==void 0?String(s[0]).trim():null;case"substr":{if(s[0]===null||s[0]===void 0)return null;const i=String(s[0]),o=Math.max(0,(Number(s[1])||1)-1),r=s[2]!==null&&s[2]!==void 0?Number(s[2]):void 0;return r!==void 0?i.substring(o,o+r):i.substring(o)}case"abs":return s[0]!==null&&s[0]!==void 0?Math.abs(Number(s[0])):null;case"round":return s[0]!==null&&s[0]!==void 0?Math.round(Number(s[0])):null;case"floor":return s[0]!==null&&s[0]!==void 0?Math.floor(Number(s[0])):null;case"ceil":return s[0]!==null&&s[0]!==void 0?Math.ceil(Number(s[0])):null;case"concat":return s.some(i=>i==null)?null:s.map(String).join("");case"coalesce":{for(const i of s)if(i!=null)return i;return null}case"starts_with":case"startswith":return s[0]!==null&&s[0]!==void 0&&s[1]!==null&&s[1]!==void 0?String(s[0]).startsWith(String(s[1]))?1:0:null;case"ends_with":case"endswith":return s[0]!==null&&s[0]!==void 0&&s[1]!==null&&s[1]!==void 0?String(s[0]).endsWith(String(s[1]))?1:0:null;case"contains":return s[0]!==null&&s[0]!==void 0&&s[1]!==null&&s[1]!==void 0?String(s[0]).includes(String(s[1]))?1:0:null;case"like":return s[0]!==null&&s[0]!==void 0&&s[1]!==null&&s[1]!==void 0?Wn(String(s[0]),String(s[1]))?1:0:null;default:{let i;if(typeof A=="function")i=A(n);else if(A instanceof Map){const o=A.get(n);i=typeof o=="function"?o:o==null?void 0:o.call}else if(A&&typeof A=="object"){const o=A[n];i=typeof o=="function"?o:o==null?void 0:o.call}if(i)return i(...s);throw new Xi(n)}}}}}const rn=.5,Ai=.05,AA=.02;function Ac(t){const e=[];function A(s){if(s.colName&&e.push(s.colName),s.expr&&n(s.expr),s.children)for(const i of s.children)A(i);s.child&&A(s.child)}function n(s){if(s&&(s.type==="col"&&s.name&&e.push(s.name),s.left&&n(s.left),s.right&&n(s.right),s.args&&Array.isArray(s.args)))for(const i of s.args)n(i)}return A(t),e}function an(t,e){const A=Ac(t),n=new Set;for(const s of A){const i=Lt(s,e);i&&n.add(i.tableIdx)}return n}function Oo(t,e){var n,s;const A=Math.max(1,e.rowCountEstimate||10);if(t.type==="cmp"){const i=t.op??"=";if(i==="="){const o=(n=t.colName)==null?void 0:n.toLowerCase(),r=e.columns.findIndex(a=>a.name.toLowerCase()===o);if(r!==-1&&e.indexes){for(const a of e.indexes)if(a.columnCount===1&&a.columnIndices[0]===r)return(a.flags&(ft.PRIMARY|ft.UNIQUE))!==0?1/A:Math.min(.2,5/A)}return .1}if(i==="<"||i==="<="||i===">"||i===">=")return .33;if(i==="!="||i==="<>")return .9;if(i==="like"||i==="contains"||i==="starts_with"||i==="ends_with")return .15}if(t.type==="in"){const i=Math.max(1,((s=t.values)==null?void 0:s.length)||1);return Math.min(1,i*.05)}return t.type==="null"?t.isNull?.05:.95:.2}function nA(t,e,A,n){var u;const s=Math.max(1,t.rowCountEstimate||10);let i=1;for(const g of e)i*=Oo(g,t);const o=Math.max(1,Math.round(s*i)),r=A!==void 0&&A.length>0,a=r&&o>1?o*Math.log2(o)*AA:0,c=ai(t,e,e,A);if(c){const g=c.scanType==="point",E=c.scanType==="multi_point",h=c.satisfiesOrderBy===!0,B=h&&n!==void 0&&n>0?Math.min(n,o):o;let Q=rn;return g?(Q+=1*AA,{cost:Q,rows:1,scanType:"IndexScan",indexName:c.index.name,isOrderSatisfied:!0,sortCostAvoided:r?a:void 0}):E?(Q=(((u=c.inValues)==null?void 0:u.length)||1)*rn+B*AA,!h&&r&&(Q+=a),{cost:Q,rows:B,scanType:"IndexScan",indexName:c.index.name,isOrderSatisfied:h,sortCostAvoided:h?a:void 0}):(Q+=B*Ai+B*AA,!h&&r&&(Q+=a),{cost:Q,rows:B,scanType:"IndexScan",indexName:c.index.name,isOrderSatisfied:h,sortCostAvoided:h?a:void 0})}let l=s*AA;return r&&(l+=a),{cost:l,rows:o,scanType:"TableScan",isOrderSatisfied:!1}}function jn(t,e){if(!t.indexes||t.indexes.length===0)return null;const A=t.columns.findIndex(i=>i.name.toLowerCase()===e.toLowerCase());if(A===-1)return null;let n=null,s=999;for(const i of t.indexes)if(i.columnCount===1&&i.columnIndices[0]===A){const o=(i.flags&ft.PRIMARY)!==0,r=(i.flags&ft.UNIQUE)!==0,a=o?1:r?2:3;a<s&&(s=a,n={index:i,isUnique:o||r})}return n}function ni(t,e){const A=e.length,n=[],s=Array.from({length:A},()=>new Set);if(!t.joinedTables)return{edges:n,dependencies:s};for(let i=0;i<t.joinedTables.length;i++){const o=t.joinedTables[i],r=i+1,a=Lt(o.leftCol,e),c=Lt(o.rightCol,e);if(a&&c&&(n.push({tableA:a.tableIdx,tableB:c.tableIdx,colA:a.col.name,colB:c.col.name,op:o.op,type:o.type,declaredRightTable:r}),o.type==="left")){const l=a.tableIdx===r?c.tableIdx:a.tableIdx;s[r].add(l)}}return{edges:n,dependencies:s}}function $n(t,e){if(t.selectExprs&&t.selectExprs.length>0)return t.selectExprs;const A=new Set,n=new Set;for(const i of e)for(const o of i.columns)A.has(o.name.toLowerCase())&&n.add(o.name.toLowerCase()),A.add(o.name.toLowerCase());const s=[];for(const i of e)for(const o of i.columns){const r=n.has(o.name.toLowerCase())?`${i.name}.${o.name}`:o.name;s.push({expr:{type:"col",name:`${i.name}.${o.name}`},alias:r})}return s}function si(t,e,A,n){const s=t.length,i=[];for(let o=1;o<s;o++){const r=t[o],a=e[r],c=t.slice(0,o),l=A.find(B=>B.tableA===r&&c.includes(B.tableB)||B.tableB===r&&c.includes(B.tableA));let u,g,E="=",h="inner";if(l)E=l.op,h=l.type,l.tableA===r?(g=`${a.name}.${l.colA}`,u=`${e[l.tableB].name}.${l.colB}`):(g=`${a.name}.${l.colB}`,u=`${e[l.tableA].name}.${l.colA}`);else{const B=n==null?void 0:n.find(Q=>Q.table.name===a.name);u=B?B.leftCol:`${e[t[0]].name}.id`,g=B?B.rightCol:`${a.name}.id`,E=B?B.op:"=",h=B?B.type:"inner"}i.push({type:h,table:a,cursor:o,leftCol:u,op:E,rightCol:g})}return i}function Po(t,e,A,n,s){if(!n||n.length===0)return!1;for(const i of n){if(i.direction==="desc")return!1;const o=i.colName;if(!o)return!1;let r=Lt(o,A);if(!r&&s){const a=s.find(c=>c.alias===o);a&&a.expr.type==="col"&&(r=Lt(a.expr.name,A))}if(!r||r.tableIdx!==e)return!1}return!0}function Go(t,e){var A;if(t.type==="null")return 1;if(t.type==="cmp"){const n=t.op??"=";if(n==="like"||n==="not like")return(typeof t.value=="string"?t.value:"").startsWith("%")?25:15;let s=!1;if(e&&t.colName){const i=t.colName.toLowerCase(),o=i.includes(".")?i.slice(i.lastIndexOf(".")+1):i;for(const r of e){const a=r.columns.find(c=>c.name.toLowerCase()===o);if(a){s=a.type===1||a.type===2||a.type===3;break}}}else typeof t.value=="number"&&(s=!0);return n==="="||n==="=="?s?2:4:s?3:6}return t.type==="in"?(((A=t.values)==null?void 0:A.length)??0)<=3?5:10:t.type==="expr"?40:t.type==="and"||t.type==="or"?15:t.type==="not"?8:10}function wo(t,e){if(!t||t.length===0)return{filters:[],isAlwaysFalse:!1,isAlwaysTrue:!0,metrics:{originalCount:0,optimizedCount:0,isAlwaysFalse:!1,isAlwaysTrue:!0,eliminatedFiltersCount:0,reordered:!1}};const A=t.length,n=[];for(const u of t)u.type==="and"&&Array.isArray(u.children)?n.push(...u.children):n.push(u);const s=new Map,i=[];for(const u of n)if(u.colName){const g=u.colName.toLowerCase();s.has(g)||s.set(g,[]),s.get(g).push(u)}else i.push(u);for(const[u,g]of s.entries()){const E=tg(g);if(E)return{filters:[],isAlwaysFalse:!0,isAlwaysTrue:!1,metrics:{originalCount:A,optimizedCount:0,isAlwaysFalse:!0,isAlwaysTrue:!1,contradictionReason:`Contradiction on column "${u}": ${E}`,eliminatedFiltersCount:A,reordered:!1}}}const o=[];let r=0;for(const[,u]of s.entries()){const g=eg(u);r+=u.length-g.length,o.push(...g)}o.push(...i);const a=o.map(u=>ko(u)).join("|");o.sort((u,g)=>{const E=Go(u,e),h=Go(g,e);return E-h});const c=o.map(u=>ko(u)).join("|"),l=a!==c;return{filters:o,isAlwaysFalse:!1,isAlwaysTrue:o.length===0,metrics:{originalCount:A,optimizedCount:o.length,isAlwaysFalse:!1,isAlwaysTrue:o.length===0,eliminatedFiltersCount:r,reordered:l}}}function tg(t){let e=!1,A=!1;const n=[];let s=null,i=null,o=null;for(const r of t){if(r.type==="null"&&(r.isNull===!0&&(e=!0),r.isNull===!1&&(A=!0)),r.type==="cmp"){const a=r.op??"=",c=r.value;a==="="&&c!==null&&c!==void 0&&n.push(c),typeof c=="number"&&(a===">"?(!s||c>s.val||c===s.val&&!s.strict)&&(s={val:c,strict:!0}):a===">="?(!s||c>s.val)&&(s={val:c,strict:!1}):a==="<"?(!i||c<i.val||c===i.val&&!i.strict)&&(i={val:c,strict:!0}):a==="<="&&(!i||c<i.val)&&(i={val:c,strict:!1}))}if(r.type==="in"&&!r.notIn){if(!r.values||r.values.length===0)return"Empty IN () list";const a=new Set(r.values);if(!o)o=a;else{const c=new Set([...o].filter(l=>a.has(l)));if(c.size===0)return"Mutually exclusive IN lists with no common values";o=c}}}if(e&&A)return"Conflicting IS NULL and IS NOT NULL";if(e&&(n.length>0||s||i))return"Conflicting IS NULL and literal comparison";if(n.length>1){const r=n[0];for(let a=1;a<n.length;a++)if(n[a]!==r)return`Conflicting equality values (${r} !== ${n[a]})`}if(n.length>0&&(s||i)){const r=n[0];if(typeof r=="number"){if(s&&(s.strict?r<=s.val:r<s.val))return`Equality value ${r} violates lower bound ${s.strict?">":">="} ${s.val}`;if(i&&(i.strict?r>=i.val:r>i.val))return`Equality value ${r} violates upper bound ${i.strict?"<":"<="} ${i.val}`}}if(n.length>0&&o){const r=n[0];if(!o.has(r))return`Equality value ${r} not present in IN list`}if(s&&i){if(s.val>i.val)return`Lower bound ${s.val} is greater than upper bound ${i.val}`;if(s.val===i.val&&(s.strict||i.strict))return`Strict range bounds empty at ${s.val}`}return null}function eg(t){const e=[],A=new Set;let n=!1,s;for(const r of t)if(r.type==="cmp"&&(r.op==="="||r.op===void 0)&&r.value!==null&&r.value!==void 0){n=!0,s=r.value;break}let i=null,o=null;for(const r of t)if(r.type==="cmp"&&typeof r.value=="number"){const a=r.op??"=",c=r.value;a===">"?(!i||c>i.val||c===i.val&&!i.strict)&&(i={val:c,strict:!0,filter:r}):a===">="?(!i||c>i.val)&&(i={val:c,strict:!1,filter:r}):a==="<"?(!o||c<o.val||c===o.val&&!o.strict)&&(o={val:c,strict:!0,filter:r}):a==="<="&&(!o||c<o.val)&&(o={val:c,strict:!1,filter:r})}for(const r of t){const a=ko(r);if(!A.has(a)&&!(r.type==="null"&&r.isNull===!1&&n)&&!(r.type==="in"&&!r.notIn&&n&&Array.isArray(r.values)&&r.values.includes(s))){if(r.type==="cmp"&&typeof r.value=="number"){const c=r.op??"=";if(c===">"||c===">="){if(i&&r!==i.filter)continue}else if((c==="<"||c==="<=")&&o&&r!==o.filter)continue}A.add(a),e.push(r)}}return e}function ko(t){return`${t.type}:${t.colName??""}:${t.isNull??""}:${t.op??""}:${String(t.value??"")}:${t.notIn??""}:${JSON.stringify(t.values??"")}`}function nc(t,e){const A=[...t],n=o=>o.toLowerCase(),s=o=>{const r=o.lastIndexOf(".");return r>=0?o.slice(r+1).toLowerCase():o.toLowerCase()},i=o=>{const r=n(o),a=s(o);for(const c of t)if(c.type==="cmp"&&(c.op==="="||c.op==="=="||c.op===void 0)&&c.colName&&c.value!==null&&c.value!==void 0){const l=n(c.colName),u=s(c.colName);if(l===r||u===r||l===a)return c.value}};for(const o of e){if(o.type!=="inner"&&o.type!=="left"||o.op!=="="&&o.op!=="==")continue;const r=i(o.leftCol);if(r!==void 0&&A.push({type:"cmp",colName:o.rightCol,op:"=",value:r}),o.type==="inner"){const a=i(o.rightCol);a!==void 0&&A.push({type:"cmp",colName:o.leftCol,op:"=",value:a})}}return A}class ii{constructor(e){G(this,"name","cost");G(this,"indexSeekCost");G(this,"indexNextCost");G(this,"rowEvalCost");this.indexSeekCost=(e==null?void 0:e.indexSeekCost)??rn,this.indexNextCost=(e==null?void 0:e.indexNextCost)??Ai,this.rowEvalCost=(e==null?void 0:e.rowEvalCost)??AA}optimize(e){var P,I;const A=[e.table,...((P=e.joinedTables)==null?void 0:P.map(b=>b.table))??[]],n=A.length,s=wo(e.filters,A);if(s.isAlwaysFalse)return{plan:{...e,filters:[]},orderedTables:A,metrics:null,isAlwaysFalse:!0,whereMetrics:s.metrics};let i=s.filters,o=s.metrics;if(e.joinedTables&&e.joinedTables.length>0){const b=nc(i,e.joinedTables);if(b.length>i.length){const H=wo(b,A);if(H.isAlwaysFalse)return{plan:{...e,filters:[]},orderedTables:A,metrics:null,isAlwaysFalse:!0,whereMetrics:H.metrics};i=H.filters,o=H.metrics}}if(n<=1||!e.joinedTables||e.joinedTables.length===0){const b=new Map;b.set(0,i);const H=nA(e.table,i,e.orderBy,e.limit);return{plan:{...e,filters:i},orderedTables:[e.table],metrics:{totalCost:H.cost,estimatedRows:H.rows,joinOrder:[e.table.name],singleTableFilters:b,crossFilters:[],tableScanTypes:[H.scanType],tableIndexNames:[H.indexName],isOrderSatisfied:H.isOrderSatisfied,sortCostAvoided:H.sortCostAvoided},isAlwaysFalse:!1,isAlwaysTrue:o.isAlwaysTrue,whereMetrics:o,isOrderSatisfied:H.isOrderSatisfied,sortCostAvoided:H.sortCostAvoided}}const r=Pe(i),a=cn(r),c=new Map,l=[];for(let b=0;b<n;b++)c.set(b,[]);for(const b of a){const H=an(b,A);if(H.size===1){const J=H.values().next().value;J!==void 0&&((I=c.get(J))==null||I.push(b))}else l.push(b)}if(n<=1||!e.joinedTables||e.joinedTables.length===0){const b=nA(A[0],c.get(0)??[]);return{plan:e,orderedTables:A,metrics:{totalCost:b.cost,estimatedRows:b.rows,joinOrder:[A[0].name],singleTableFilters:c,crossFilters:l,tableScanTypes:[b.scanType],tableIndexNames:[b.indexName]}}}const{edges:u,dependencies:g}=ni(e,A),E=new Map;for(let b=0;b<n;b++)if(g[b].size===0){const H=Po(A[b],b,A,e.orderBy,e.selectExprs),J=H?e.orderBy.map(V=>{const X=V.colName??"",Ft=X.includes(".")?X.slice(X.lastIndexOf(".")+1):X;return{...V,colName:Ft}}):void 0,ot=nA(A[b],c.get(b)??[],J,H?e.limit:void 0),rt=1<<b;E.set(rt,{order:[b],cost:ot.cost,rows:ot.rows,scanTypes:[ot.scanType],indexNames:[ot.indexName],edgesUsed:[],isOrderSatisfied:ot.isOrderSatisfied,sortCostAvoided:ot.sortCostAvoided})}const h=1<<n;for(let b=2;b<=n;b++)for(let H=1;H<h;H++)if(Ag(H)===b)for(let J=0;J<n;J++){if(!(H&1<<J))continue;const ot=H^1<<J,rt=E.get(ot);if(!rt)continue;let V=!0;for(const SA of g[J])if(!(ot&1<<SA)){V=!1;break}if(!V)continue;const X=this.evaluateJoinStep(rt.rows,A[J],J,u,rt.order,c.get(J)??[]),Ft=rt.cost+X.stepCost,bt=E.get(H);let Ot=!1,gn=Ft,En=bt?bt.cost:0;const In=rt.isOrderSatisfied===!0,VA=(bt==null?void 0:bt.isOrderSatisfied)===!0;if(b===n&&e.orderBy&&e.orderBy.length>0&&(!In&&X.newRows>1&&(gn+=X.newRows*Math.log2(X.newRows)*this.rowEvalCost),bt&&!VA&&bt.rows>1&&(En+=bt.rows*Math.log2(bt.rows)*this.rowEvalCost)),!bt)Ot=!0;else if(In&&!VA)Ot=!0;else if(!In&&VA)Ot=!1;else{const SA=rt.scanTypes.filter(NA=>NA==="IndexScan").length+(X.scanType==="IndexScan"?1:0),ts=bt.scanTypes.filter(NA=>NA==="IndexScan").length;if(SA>ts&&gn<=En*1.2)Ot=!0;else if(SA<ts)Ot=!1;else if(gn<En*.75)Ot=!0;else if(En<gn*.75)Ot=!1;else{const NA=rt.order[0]===0,Bn=bt.order[0]===0;if(NA&&!Bn)Ot=!0;else if(!NA&&Bn)Ot=!1;else{const Xe=rt.order.filter(hn=>hn>J).length,Ii=bt.order.filter((hn,Bi)=>hn>Bi).length;Xe<Ii&&(Ot=!0)}}}Ot&&E.set(H,{order:[...rt.order,J],cost:Ft,rows:X.newRows,scanTypes:[...rt.scanTypes,X.scanType],indexNames:[...rt.indexNames,X.indexName],edgesUsed:[...rt.edgesUsed,X.matchedEdge],isOrderSatisfied:rt.isOrderSatisfied,sortCostAvoided:rt.sortCostAvoided})}const B=(1<<n)-1,Q=E.get(B);let d,p,U,N,m;Q?(d=Q.order,p=Q.cost,U=Q.rows,N=Q.scanTypes,m=Q.indexNames):(d=Array.from({length:n},(b,H)=>H),p=999999,U=100,N=Array.from({length:n},()=>"TableScan"),m=Array.from({length:n},()=>{}));const T=d.map(b=>A[b]),F=si(d,A,u,e.joinedTables),D=$n(e,A),O=(Q==null?void 0:Q.isOrderSatisfied)===!0,w=O&&e.orderBy&&e.orderBy.length>0&&U>1?U*Math.log2(U)*this.rowEvalCost:void 0;return{plan:{...e,table:T[0],joinedTables:F,selectExprs:D,filters:i,isOrderSatisfied:O},orderedTables:T,metrics:{totalCost:p,estimatedRows:U,joinOrder:T.map(b=>b.name),singleTableFilters:c,crossFilters:l,tableScanTypes:N,tableIndexNames:m,isOrderSatisfied:O,sortCostAvoided:w},isAlwaysFalse:!1,isAlwaysTrue:o.isAlwaysTrue,whereMetrics:o,isOrderSatisfied:O,sortCostAvoided:w}}evaluateJoinStep(e,A,n,s,i,o){const r=Math.max(1,A.rowCountEstimate||10);let a=1;for(const E of o)a*=Oo(E,A);const c=[];for(const E of s)if(E.tableA===n&&i.includes(E.tableB)){const h=jn(A,E.colA);c.push({edge:E,nextCol:E.colA,outerCol:E.colB,idxMatch:h})}else if(E.tableB===n&&i.includes(E.tableA)){const h=jn(A,E.colB);c.push({edge:E,nextCol:E.colB,outerCol:E.colA,idxMatch:h})}if(c.length===0){const E=e*(2+r*.1),h=Math.max(1,Math.round(e*r*a)),B={tableA:i[0],tableB:n,colA:"",colB:"",op:"=",type:"inner",declaredRightTable:n};return{stepCost:E,newRows:h,scanType:"TableScan",matchedEdge:B}}c.sort((E,h)=>{const B=E.idxMatch?E.idxMatch.isUnique?1:2:3,Q=h.idxMatch?h.idxMatch.isUnique?1:2:3;return B-Q});const l=c[0];if(l.idxMatch&&l.idxMatch.isUnique){const E=this.indexSeekCost+1*this.rowEvalCost,h=e*E,B=Math.max(1,Math.round(e*a));return{stepCost:h,newRows:B,scanType:"IndexScan",indexName:l.idxMatch.index.name,matchedEdge:l.edge}}if(l.idxMatch&&!l.idxMatch.isUnique){const E=Math.max(1,Math.min(10,Math.round(r/20))),h=this.indexSeekCost+E*this.indexNextCost,B=e*h,Q=Math.max(1,Math.round(e*E*a));return{stepCost:B,newRows:Q,scanType:"IndexScan",indexName:l.idxMatch.index.name,matchedEdge:l.edge}}const u=e*(2+r*.1),g=Math.max(1,Math.round(e*Math.max(1,Math.round(r*.1))*a));return{stepCost:u,newRows:g,scanType:"TableScan",matchedEdge:l.edge}}}function Ag(t){let e=0,A=t;for(;A>0;)e+=A&1,A>>=1;return e}class sc{constructor(){G(this,"name","heuristic")}optimize(e){var D,O,w;const A=[e.table,...((D=e.joinedTables)==null?void 0:D.map(P=>P.table))??[]],n=A.length,s=Pe(e.filters),i=cn(s),o=new Map,r=[];for(let P=0;P<n;P++)o.set(P,[]);for(const P of i){const I=an(P,A);if(I.size===1){const b=I.values().next().value;b!==void 0&&((O=o.get(b))==null||O.push(P))}else r.push(P)}if(n<=1||!e.joinedTables||e.joinedTables.length===0){const P=nA(A[0],o.get(0)??[],e.orderBy,e.limit);return{plan:e,orderedTables:A,metrics:{totalCost:P.cost,estimatedRows:P.rows,joinOrder:[A[0].name],singleTableFilters:o,crossFilters:r,tableScanTypes:[P.scanType],tableIndexNames:[P.indexName],isOrderSatisfied:P.isOrderSatisfied,sortCostAvoided:P.sortCostAvoided},isOrderSatisfied:P.isOrderSatisfied,sortCostAvoided:P.sortCostAvoided}}const{edges:a,dependencies:c}=ni(e,A),l=A.map((P,I)=>{const b=Po(P,I,A,e.orderBy,e.selectExprs),H=b?e.orderBy.map(J=>{const ot=J.colName??"",rt=ot.includes(".")?ot.slice(ot.lastIndexOf(".")+1):ot;return{...J,colName:rt}}):void 0;return nA(P,o.get(I)??[],H,b?e.limit:void 0)}),u=[];for(let P=0;P<n;P++)c[P].size===0&&u.push(P);u.sort((P,I)=>{const b=l[P].isOrderSatisfied?1:0,H=l[I].isOrderSatisfied?1:0;if(b!==H)return H-b;if(l[P].rows!==l[I].rows)return l[P].rows-l[I].rows;const J=l[P].scanType==="IndexScan"?1:0,ot=l[I].scanType==="IndexScan"?1:0;return J!==ot?ot-J:P===0?-1:I===0?1:P-I});const g=u[0]??0,E=[g],h=[l[g].scanType],B=[l[g].indexName];let Q=l[g].cost,d=l[g].rows;const p=new Set;for(let P=0;P<n;P++)P!==g&&p.add(P);for(;p.size>0;){const P=[];for(const b of p){let H=!0;for(const V of c[b])if(!E.includes(V)){H=!1;break}if(!H)continue;const J=A[b],ot=Math.max(1,J.rowCountEstimate||10);let rt=null;for(const V of a)if(V.tableA===b&&E.includes(V.tableB)){const X=jn(J,V.colA);X&&(!rt||X.isUnique)&&(rt={isUnique:X.isUnique,indexName:X.index.name})}else if(V.tableB===b&&E.includes(V.tableA)){const X=jn(J,V.colB);X&&(!rt||X.isUnique)&&(rt={isUnique:X.isUnique,indexName:X.index.name})}if(rt)if(rt.isUnique){const V=rn+1*AA;P.push({tableIdx:b,rank:1,stepCost:d*V,newRows:Math.max(1,d),scanType:"IndexScan",indexName:rt.indexName})}else{const V=Math.max(1,Math.min(10,Math.round(ot/20))),X=rn+V*Ai;P.push({tableIdx:b,rank:2,stepCost:d*X,newRows:Math.max(1,d*V),scanType:"IndexScan",indexName:rt.indexName})}else P.push({tableIdx:b,rank:3,stepCost:d*(2+ot*.1),newRows:Math.max(1,d*Math.max(1,Math.round(ot*.1))),scanType:"TableScan"})}if(P.length===0){const b=p.values().next().value;if(b===void 0)break;E.push(b),h.push("TableScan"),B.push(void 0),p.delete(b);continue}P.sort((b,H)=>b.rank!==H.rank?b.rank-H.rank:Math.abs(b.stepCost-H.stepCost)>.05?b.stepCost-H.stepCost:b.tableIdx-H.tableIdx);const I=P[0];E.push(I.tableIdx),h.push(I.scanType),B.push(I.indexName),Q+=I.stepCost,d=I.newRows,p.delete(I.tableIdx)}const U=E.map(P=>A[P]),N=si(E,A,a,e.joinedTables),m=$n(e,A),T=((w=l[g])==null?void 0:w.isOrderSatisfied)===!0,F=T&&e.orderBy&&e.orderBy.length>0&&d>1?d*Math.log2(d)*AA:void 0;return{plan:{...e,table:U[0],joinedTables:N,selectExprs:m,isOrderSatisfied:T},orderedTables:U,metrics:{totalCost:Q,estimatedRows:d,joinOrder:U.map(P=>P.name),singleTableFilters:o,crossFilters:r,tableScanTypes:h,tableIndexNames:B,isOrderSatisfied:T,sortCostAvoided:F},isOrderSatisfied:T,sortCostAvoided:F}}}class ic{constructor(){G(this,"name","noop")}optimize(e){var h,B;const A=[e.table,...((h=e.joinedTables)==null?void 0:h.map(Q=>Q.table))??[]],n=A.length,s=Pe(e.filters),i=cn(s),o=new Map,r=[];for(let Q=0;Q<n;Q++)o.set(Q,[]);for(const Q of i){const d=an(Q,A);if(d.size===1){const p=d.values().next().value;p!==void 0&&((B=o.get(p))==null||B.push(Q))}else r.push(Q)}const a=nA(A[0],o.get(0)??[]),c=[a.scanType],l=[a.indexName];let u=a.cost;const g=a.rows;if(e.joinedTables)for(let Q=1;Q<n;Q++){const d=e.joinedTables[Q-1],p=ci(d,A[Q],Q,A,Q);p?(c.push("IndexScan"),l.push(p.index.name),u+=g*.55):(c.push("TableScan"),l.push(void 0),u+=g*(2+(A[Q].rowCountEstimate||10)*.1))}const E=$n(e,A);return{plan:{...e,selectExprs:E},orderedTables:A,metrics:{totalCost:u,estimatedRows:g,joinOrder:A.map(Q=>Q.name),singleTableFilters:o,crossFilters:r,tableScanTypes:c,tableIndexNames:l}}}}class ng{constructor(e){G(this,"name","custom-order");G(this,"orderSpec");this.orderSpec=e}optimize(e){var m,T,F;const A=[e.table,...((m=e.joinedTables)==null?void 0:m.map(D=>D.table))??[]],n=A.length,s=e.joinedTables!==void 0&&e.joinedTables.length>0,i=Pe(e.filters),o=cn(i),r=new Map,a=[];for(let D=0;D<n;D++)r.set(D,[]);for(const D of o){const O=an(D,A);if(O.size===1){const w=O.values().next().value;w!==void 0&&((T=r.get(w))==null||T.push(D))}else a.push(D)}if(!s||n<=1){const D=nA(A[0],r.get(0)??[]);return{plan:e,orderedTables:A,metrics:{totalCost:D.cost,estimatedRows:D.rows,joinOrder:[A[0].name],singleTableFilters:r,crossFilters:a,tableScanTypes:[D.scanType],tableIndexNames:[D.indexName]}}}const c=Array.from({length:n},(D,O)=>O);if(this.orderSpec){if(typeof this.orderSpec=="function"){const D=this.orderSpec;c.sort((O,w)=>D(A[O],A[w]))}else if(Array.isArray(this.orderSpec)){const D=this.orderSpec;c.sort((O,w)=>{const P=A[O].name,I=A[w].name,b=D.indexOf(P),H=D.indexOf(I),J=b===-1?9999:b,ot=H===-1?9999:H;return J!==ot?J-ot:O-w})}}const{edges:l}=ni(e,A),u=c.map(D=>A[D]),g=si(c,A,l,e.joinedTables),E=$n(e,A),h={...e,table:u[0],joinedTables:g,selectExprs:E},B=new Map;for(let D=0;D<n;D++)B.set(D,[]);for(const D of o){const O=an(D,u);if(O.size===1){const w=O.values().next().value;w!==void 0&&((F=B.get(w))==null||F.push(D))}}const Q=nA(u[0],B.get(0)??[]),d=[Q.scanType],p=[Q.indexName];let U=Q.cost;const N=Q.rows;if(h.joinedTables)for(let D=1;D<n;D++){const O=h.joinedTables[D-1],w=ci(O,u[D],D,u,D);w?(d.push("IndexScan"),p.push(w.index.name),U+=N*.55):(d.push("TableScan"),p.push(void 0),U+=N*(2+(u[D].rowCountEstimate||10)*.1))}return{plan:h,orderedTables:u,metrics:{totalCost:U,estimatedRows:N,joinOrder:u.map(D=>D.name),singleTableFilters:B,crossFilters:a,tableScanTypes:d,tableIndexNames:p}}}}class oc{constructor(e){G(this,"name","custom");this.fn=e}optimize(e){return this.fn(e)}}const sg=oc,ig=ii,og=ii,rg=sc,ag=ic,cg=new ii;function qo(t){return t??cg}function lg(t,e){return qo(e).optimize(t)}function zn(t){if(!t)return C.OP_EQ;switch(String(t).trim().toLowerCase().replace(/\s+/g," ")){case"=":case"==":return C.OP_EQ;case"!=":case"<>":return C.OP_NE;case">":return C.OP_GT;case">=":return C.OP_GE;case"<":return C.OP_LT;case"<=":return C.OP_LE;case"like":return C.OP_STR_LIKE;case"not like":return C.OP_STR_NOT_LIKE;case"contains":return C.OP_STR_CONTAINS;case"starts_with":return C.OP_STR_STARTS_WITH;case"ends_with":return C.OP_STR_ENDS_WITH;default:return C.OP_EQ}}class oi{constructor(){G(this,"buffer",[]);G(this,"textEncoder",new TextEncoder)}emitUint8(e){const A=this.buffer.length;return this.buffer.push(e&255),A}emitUint16(e){const A=this.buffer.length;return this.buffer.push(e&255),this.buffer.push(e>>8&255),A}emitUint32(e){const A=this.buffer.length;return this.buffer.push(e&255),this.buffer.push(e>>8&255),this.buffer.push(e>>16&255),this.buffer.push(e>>24&255),A}emitInt32(e){return this.emitUint32(e)}emitFloat64(e){const A=this.buffer.length,n=new ArrayBuffer(8);new DataView(n).setFloat64(0,e,!0);const s=new Uint8Array(n);for(let i=0;i<8;i++)this.buffer.push(s[i]);return A}emitString(e){const A=this.textEncoder.encode(e),n=this.emitUint16(A.byteLength);for(let s=0;s<A.byteLength;s++)this.buffer.push(A[s]);return n}emitBytes(e){const A=this.emitUint16(e.byteLength);for(let n=0;n<e.byteLength;n++)this.buffer.push(e[n]);return A}patchUint16(e,A){this.buffer[e]=A&255,this.buffer[e+1]=A>>8&255}currentOffset(){return this.buffer.length}toByteArray(){return new Uint8Array(this.buffer)}}function Ce(t,e,A,n,s){s===_.INT32||s===_.INT64?(t.emitUint8(C.OP_COLUMN_INT),t.emitUint8(e),t.emitUint8(A),t.emitUint8(n)):s===_.FLOAT64?(t.emitUint8(C.OP_COLUMN_FLOAT),t.emitUint8(e),t.emitUint8(A),t.emitUint8(n)):s===_.TEXT?(t.emitUint8(C.OP_COLUMN_TEXT),t.emitUint8(e),t.emitUint8(A),t.emitUint8(n)):s===_.UUID?(t.emitUint8(C.OP_COLUMN_UUID),t.emitUint8(e),t.emitUint8(A),t.emitUint8(n)):s===_.ULID?(t.emitUint8(C.OP_COLUMN_ULID),t.emitUint8(e),t.emitUint8(A),t.emitUint8(n)):s===_.BLOB&&(t.emitUint8(C.OP_COLUMN_BLOB),t.emitUint8(e),t.emitUint8(A),t.emitUint8(n))}function UA(t){if(t.type==="in"){if(t.values&&t.values.length>ae)throw new RangeError(`WebDB: whereIn list exceeds maximum limit of ${ae} elements`);return{type:"in",colName:t.colName,expr:t.expr,values:t.values?Array.from(new Set(t.values)):[],notIn:!!t.notIn}}if(t.type==="cmp"){const e=t.op?String(t.op).trim().toLowerCase():"";if(e==="in"||e==="not in"){const A=Array.isArray(t.value)?t.value:[t.value];if(A.length>ae)throw new RangeError(`WebDB: whereIn list exceeds maximum limit of ${ae} elements`);return{type:"in",colName:t.colName,expr:t.expr,values:Array.from(new Set(A)),notIn:e==="not in"}}}if(t.type==="and")return{type:"and",children:t.children?t.children.map(UA):[]};if(t.type==="or")return{type:"or",children:t.children?t.children.map(UA):[]};if(t.type==="not"){const e=t.child;if(!e)return t;if(e.type==="not"&&e.child)return UA(e.child);if(e.type==="in")return{type:"in",colName:e.colName,expr:e.expr,values:e.values,notIn:!e.notIn};if(e.type==="and")return{type:"or",children:e.children?e.children.map(A=>UA({type:"not",child:A})):[]};if(e.type==="or")return{type:"and",children:e.children?e.children.map(A=>UA({type:"not",child:A})):[]};if(e.type==="null")return{type:"null",colName:e.colName,expr:e.expr,isNull:!e.isNull};if(e.type==="cmp"){const A=e.op?String(e.op).trim().toLowerCase():"";if(A==="in"||A==="not in")return UA({type:"in",colName:e.colName,expr:e.expr,values:Array.isArray(e.value)?e.value:[e.value],notIn:A==="in"});const n={"=":"!=","!=":"=",">":"<=",">=":"<","<":">=","<=":">",like:"not like","not like":"like"};return e.op&&n[e.op]?{type:"cmp",colName:e.colName,op:n[e.op],value:e.value}:{type:"and",children:[{type:"null",colName:e.colName,isNull:!1},{type:"not",child:e}]}}}return t}function Pe(t){if(!t||t.length===0)return null;const e=t.length===1?t[0]:{type:"and",children:t};return UA(e)}function rc(t){const e=[],A=new Set;function n(s){if(s.type==="null"||s.type==="cmp"||s.type==="expr"||s.type==="in")A.has(s)||(A.add(s),e.push(s));else if(s.type==="and"||s.type==="or"){if(s.children)for(const i of s.children)n(i)}else s.type==="not"&&s.child&&n(s.child)}return n(t),e}function cn(t){if(!t)return[];const e=[];function A(n){if(n.type==="and"&&n.children)for(const s of n.children)A(s);else(n.type==="cmp"||n.type==="in"||n.type==="null")&&e.push(n)}return A(t),e}function Lt(t,e){if(t.includes(".")){const A=t.split("."),n=A[0],s=A[1],i=e.findIndex(r=>r.name.toLowerCase()===n.toLowerCase());if(i===-1)return null;const o=e[i].columns.findIndex(r=>r.name.toLowerCase()===s.toLowerCase());return o===-1?null:{tableIdx:i,cursor:i,colIdx:o,col:e[i].columns[o],table:e[i]}}for(let A=0;A<e.length;A++){const n=e[A].columns.findIndex(s=>s.name.toLowerCase()===t.toLowerCase());if(n!==-1)return{tableIdx:A,cursor:A,colIdx:n,col:e[A].columns[n],table:e[A]}}return null}function Mo(t,e,A,n,s,i,o,r){const a=o??[A];if(t.type==="expr"){const g=e*2,E=e*2+1;let h=50;const B=()=>{if(h>=64)throw new Bt(h);return h++};it(t.expr,A,n,0,g,B,i,void 0,a),n.emitUint8(C.OP_LOAD_INT),n.emitUint8(E),n.emitInt32(1),n.emitUint8(C.OP_EQ),n.emitUint8(g),n.emitUint8(E),s.push(n.emitUint16(0));return}if(t.type==="null"){if(t.expr){const E=e*2;let h=50;const B=()=>{if(h>=64)throw new Bt(h);return h++};it(t.expr,A,n,0,E,B,i,void 0,a),t.isNull?n.emitUint8(C.OP_REG_IS_NULL):n.emitUint8(C.OP_REG_IS_NOT_NULL),n.emitUint8(E),s.push(n.emitUint16(0));return}if(!t.colName)throw new Error("Filter leaf node missing colName");const g=Lt(t.colName,a);if(!g)throw new Error(`Column "${t.colName}" not found in tables`);t.isNull?n.emitUint8(C.OP_IS_NULL):n.emitUint8(C.OP_IS_NOT_NULL),n.emitUint8(g.cursor),n.emitUint8(g.colIdx),s.push(n.emitUint16(0));return}if(t.type==="in"){if(!t.values||t.values.length===0){t.notIn&&(n.emitUint8(C.OP_JUMP),s.push(n.emitUint16(0)));return}const g=e*2;if(t.expr){let h=50;const B=()=>{if(h>=64)throw new Bt(h);return h++};it(t.expr,A,n,0,g,B,i,void 0,a)}else{if(!t.colName)throw new Error("Filter IN leaf node missing colName");const h=Lt(t.colName,a);if(h)Ce(n,h.cursor,h.colIdx,g,h.col.type);else try{const B=Rt(t.colName);let Q=50;it(B,A,n,0,g,()=>{if(Q>=64)throw new Bt(Q);return Q++},i,void 0,a)}catch{throw new Error(`Column "${t.colName}" not found in tables`)}}const E=(r==null?void 0:r.get(t))??0;if(!t.notIn)n.emitUint8(C.OP_IN),n.emitUint8(g),n.emitUint16(E),s.push(n.emitUint16(0));else{let h=-1;if(t.colName){const d=Lt(t.colName,a);d&&(n.emitUint8(C.OP_IS_NULL),n.emitUint8(d.cursor),n.emitUint8(d.colIdx),h=n.emitUint16(0))}n.emitUint8(C.OP_IN),n.emitUint8(g),n.emitUint16(E);const B=n.emitUint16(0);n.emitUint8(C.OP_JUMP),s.push(n.emitUint16(0));const Q=n.currentOffset();h!==-1&&n.patchUint16(h,Q),n.patchUint16(B,Q)}return}const c=e*2,l=e*2+1;if(t.expr){let g=50;const E=()=>{if(g>=64)throw new Bt(g);return g++};it(t.expr,A,n,0,c,E,i,void 0,a)}else{if(!t.colName)throw new Error("Filter leaf node missing colName");const g=Lt(t.colName,a);if(g)Ce(n,g.cursor,g.colIdx,c,g.col.type);else try{const E=Rt(t.colName);let h=50;it(E,A,n,0,c,()=>{if(h>=64)throw new Bt(h);return h++},i,void 0,a)}catch{throw new Error(`Column "${t.colName}" not found in tables`)}}const u=zn(t.op);n.emitUint8(u),n.emitUint8(c),n.emitUint8(l),s.push(n.emitUint16(0))}function Ho(t,e,A,n,s,i,o,r){const a=o??[A];if(t.type==="expr"){const E=e*2,h=e*2+1;let B=50;const Q=()=>{if(B>=64)throw new Bt(B);return B++};it(t.expr,A,n,0,E,Q,i,void 0,a),n.emitUint8(C.OP_LOAD_INT),n.emitUint8(h),n.emitInt32(1),n.emitUint8(C.OP_EQ),n.emitUint8(E),n.emitUint8(h);const d=n.emitUint16(0);n.emitUint8(C.OP_JUMP),s.push(n.emitUint16(0)),n.patchUint16(d,n.currentOffset());return}if(t.type==="null"){if(t.expr){const h=e*2;let B=50;const Q=()=>{if(B>=64)throw new Bt(B);return B++};it(t.expr,A,n,0,h,Q,i,void 0,a),t.isNull?n.emitUint8(C.OP_REG_IS_NOT_NULL):n.emitUint8(C.OP_REG_IS_NULL),n.emitUint8(h),s.push(n.emitUint16(0));return}if(!t.colName)throw new Error("Filter leaf node missing colName");const E=Lt(t.colName,a);if(!E)throw new Error(`Column "${t.colName}" not found in tables`);t.isNull?n.emitUint8(C.OP_IS_NOT_NULL):n.emitUint8(C.OP_IS_NULL),n.emitUint8(E.cursor),n.emitUint8(E.colIdx),s.push(n.emitUint16(0));return}if(t.type==="in"){if(!t.values||t.values.length===0){t.notIn||(n.emitUint8(C.OP_JUMP),s.push(n.emitUint16(0)));return}const E=e*2;if(t.expr){let B=50;const Q=()=>{if(B>=64)throw new Bt(B);return B++};it(t.expr,A,n,0,E,Q,i,void 0,a)}else{if(!t.colName)throw new Error("Filter IN leaf node missing colName");const B=Lt(t.colName,a);if(B)Ce(n,B.cursor,B.colIdx,E,B.col.type);else try{const Q=Rt(t.colName);let d=50;it(Q,A,n,0,E,()=>{if(d>=64)throw new Bt(d);return d++},i,void 0,a)}catch{throw new Error(`Column "${t.colName}" not found in tables`)}}const h=(r==null?void 0:r.get(t))??0;if(t.notIn){if(t.colName){const B=Lt(t.colName,a);B&&(n.emitUint8(C.OP_IS_NULL),n.emitUint8(B.cursor),n.emitUint8(B.colIdx),s.push(n.emitUint16(0)))}n.emitUint8(C.OP_IN),n.emitUint8(E),n.emitUint16(h),s.push(n.emitUint16(0))}else{if(t.colName){const d=Lt(t.colName,a);d&&(n.emitUint8(C.OP_IS_NULL),n.emitUint8(d.cursor),n.emitUint8(d.colIdx),s.push(n.emitUint16(0)))}n.emitUint8(C.OP_IN),n.emitUint8(E),n.emitUint16(h);const B=n.emitUint16(0);n.emitUint8(C.OP_JUMP),s.push(n.emitUint16(0));const Q=n.currentOffset();n.patchUint16(B,Q)}return}const c=e*2,l=e*2+1;if(t.expr){let E=50;const h=()=>{if(E>=64)throw new Bt(E);return E++};it(t.expr,A,n,0,c,h,i,void 0,a)}else{if(!t.colName)throw new Error("Filter leaf node missing colName");const E=Lt(t.colName,a);if(E)Ce(n,E.cursor,E.colIdx,c,E.col.type);else try{const h=Rt(t.colName);let B=50;it(h,A,n,0,c,()=>{if(B>=64)throw new Bt(B);return B++},i,void 0,a)}catch{throw new Error(`Column "${t.colName}" not found in tables`)}}const u=zn(t.op);n.emitUint8(u),n.emitUint8(c),n.emitUint8(l);const g=n.emitUint16(0);n.emitUint8(C.OP_JUMP),s.push(n.emitUint16(0)),n.patchUint16(g,n.currentOffset())}function ug(t,e,A,n,s,i,o,r,a,c){o==="true"?Ho(t,e,A,n,i,r,a,c):o==="false"?Mo(t,e,A,n,s,r,a,c):(Mo(t,e,A,n,s,r,a,c),n.emitUint8(C.OP_JUMP),i.push(n.emitUint16(0)))}function vn(t,e,A,n,s,i,o,r,a,c){if(t.type==="cmp"||t.type==="null"||t.type==="expr"||t.type==="in"){const l=n.get(t)??0;ug(t,l,A,e,s,i,o,r,a,c);return}if(t.type==="not"){if(!t.child)return;const l=t.child,u=n.get(l)??0;o==="true"?Mo(l,u,A,e,i,r,a,c):o==="false"?Ho(l,u,A,e,s,r,a,c):(Ho(l,u,A,e,s,r,a,c),e.emitUint8(C.OP_JUMP),i.push(e.emitUint16(0)));return}if(t.type==="and"){const l=t.children??[];if(l.length===0){o==="false"&&(e.emitUint8(C.OP_JUMP),s.push(e.emitUint16(0)));return}for(let u=0;u<l.length;u++){const g=l[u];if(u===l.length-1)vn(g,e,A,n,s,i,o,r,a,c);else{const h=[];vn(g,e,A,n,h,i,"true",r,a,c);const B=e.currentOffset();for(const Q of h)e.patchUint16(Q,B)}}return}if(t.type==="or"){const l=t.children??[];if(l.length===0){o==="true"&&(e.emitUint8(C.OP_JUMP),i.push(e.emitUint16(0)));return}for(let u=0;u<l.length;u++){const g=l[u];if(u===l.length-1)vn(g,e,A,n,s,i,o,r,a,c);else{const h=[];vn(g,e,A,n,s,h,"false",r,a,c);const B=e.currentOffset();for(const Q of h)e.patchUint16(Q,B)}}return}}function gg(t,e,A,n,s,i,o){if(t.type==="cmp"){let r;const a=n(t.colName,t.expr);if(a!==void 0)r=a;else if(t.expr)r=s(),it(t.expr,e,A,-1,r,s,o,n);else if(t.colName){r=s();const E=Rt(t.colName);it(E,e,A,-1,r,s,o,n)}else r=s(),A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(r);const c=s(),l=t.value;l==null?(A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(c)):typeof l=="number"?Number.isInteger(l)?(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(c),A.emitInt32(l)):(A.emitUint8(C.OP_LOAD_FLOAT),A.emitUint8(c),A.emitFloat64(l)):typeof l=="string"?(A.emitUint8(C.OP_LOAD_TEXT),A.emitUint8(c),A.emitString(l)):typeof l=="boolean"?(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(c),A.emitInt32(l?1:0)):typeof l=="bigint"&&(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(c),A.emitInt32(Number(l)));const u=zn(t.op);A.emitUint8(u),A.emitUint8(r),A.emitUint8(c);const g=A.emitUint16(0);A.emitUint8(C.OP_JUMP),i.push(A.emitUint16(0)),A.patchUint16(g,A.currentOffset());return}if(t.type==="null"){let r;const a=n(t.colName,t.expr);if(a!==void 0)r=a;else if(t.expr)r=s(),it(t.expr,e,A,-1,r,s,o,n);else if(t.colName){r=s();const c=Rt(t.colName);it(c,e,A,-1,r,s,o,n)}else r=s(),A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(r);t.isNull?(A.emitUint8(C.OP_REG_IS_NOT_NULL),A.emitUint8(r),i.push(A.emitUint16(0))):(A.emitUint8(C.OP_REG_IS_NULL),A.emitUint8(r),i.push(A.emitUint16(0)));return}if(t.type==="expr"&&t.expr){const r=s();it(t.expr,e,A,-1,r,s,o,n);const a=s();A.emitUint8(C.OP_LOAD_INT),A.emitUint8(a),A.emitInt32(1),A.emitUint8(C.OP_EQ),A.emitUint8(r),A.emitUint8(a);const c=A.emitUint16(0);A.emitUint8(C.OP_JUMP),i.push(A.emitUint16(0)),A.patchUint16(c,A.currentOffset());return}}function ac(t,e,A,n,s,i,o){if(t.type==="cmp"){let r;const a=n(t.colName,t.expr);if(a!==void 0)r=a;else if(t.expr)r=s(),it(t.expr,e,A,-1,r,s,o,n);else if(t.colName){r=s();const g=Rt(t.colName);it(g,e,A,-1,r,s,o,n)}else r=s(),A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(r);const c=s(),l=t.value;l==null?(A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(c)):typeof l=="number"?Number.isInteger(l)?(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(c),A.emitInt32(l)):(A.emitUint8(C.OP_LOAD_FLOAT),A.emitUint8(c),A.emitFloat64(l)):typeof l=="string"?(A.emitUint8(C.OP_LOAD_TEXT),A.emitUint8(c),A.emitString(l)):typeof l=="boolean"?(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(c),A.emitInt32(l?1:0)):typeof l=="bigint"&&(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(c),A.emitInt32(Number(l)));const u=zn(t.op);A.emitUint8(u),A.emitUint8(r),A.emitUint8(c),i.push(A.emitUint16(0));return}if(t.type==="null"){let r;const a=n(t.colName,t.expr);if(a!==void 0)r=a;else if(t.expr)r=s(),it(t.expr,e,A,-1,r,s,o,n);else if(t.colName){r=s();const c=Rt(t.colName);it(c,e,A,-1,r,s,o,n)}else r=s(),A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(r);t.isNull?(A.emitUint8(C.OP_REG_IS_NULL),A.emitUint8(r),i.push(A.emitUint16(0))):(A.emitUint8(C.OP_REG_IS_NOT_NULL),A.emitUint8(r),i.push(A.emitUint16(0)));return}if(t.type==="expr"&&t.expr){const r=s();it(t.expr,e,A,-1,r,s,o,n);const a=s();A.emitUint8(C.OP_LOAD_INT),A.emitUint8(a),A.emitInt32(1),A.emitUint8(C.OP_EQ),A.emitUint8(r),A.emitUint8(a),i.push(A.emitUint16(0));return}}function Eg(t,e,A,n,s,i,o,r,a){r==="true"?gg(t,e,A,n,s,o,a):r==="false"?ac(t,e,A,n,s,i,a):(ac(t,e,A,n,s,i,a),A.emitUint8(C.OP_JUMP),o.push(A.emitUint16(0)))}function TA(t,e,A,n,s,i,o,r,a){if(t.type==="cmp"||t.type==="null"||t.type==="expr"){Eg(t,A,e,n,s,i,o,r,a);return}if(t.type==="not"){if(!t.child)return;const c=t.child;r==="true"?TA(c,e,A,n,s,o,i,"false",a):r==="false"?TA(c,e,A,n,s,i,o,"true",a):TA(c,e,A,n,s,o,i,"none",a);return}if(t.type==="and"){const c=t.children??[];if(c.length===0){r==="false"&&(e.emitUint8(C.OP_JUMP),i.push(e.emitUint16(0)));return}for(let l=0;l<c.length;l++){const u=c[l];if(l===c.length-1)TA(u,e,A,n,s,i,o,r,a);else{const E=[];TA(u,e,A,n,s,E,o,"true",a);const h=e.currentOffset();for(const B of E)e.patchUint16(B,h)}}return}if(t.type==="or"){const c=t.children??[];if(c.length===0){r==="true"&&(e.emitUint8(C.OP_JUMP),o.push(e.emitUint16(0)));return}for(let l=0;l<c.length;l++){const u=c[l];if(l===c.length-1)TA(u,e,A,n,s,i,o,r,a);else{const E=[];TA(u,e,A,n,s,i,E,"false",a);const h=e.currentOffset();for(const B of E)e.patchUint16(B,h)}}return}}function Ig(t,e,A,n,s,i,o){if(!t)return;const r=[];TA(t,A,e,n,s,r,i,"true",o);const a=A.currentOffset();for(const c of r)A.patchUint16(c,a)}function Ge(t,e,A,n,s,i,o,r){if(!t)return;const a=[];vn(t,A,e,n,a,s,"true",i,o,r);const c=A.currentOffset();for(const l of a)A.patchUint16(l,c)}function cc(t,e,A,n){if(t.type==="literal")return typeof t.value=="number"?Number.isInteger(t.value)?_.INT32:_.FLOAT64:(typeof t.value=="string",_.TEXT);if(t.type==="col"){const s=n??[e],i=Lt(t.name,s);return i?i.col.type:_.TEXT}if(t.type==="binary")return _.FLOAT64;if(t.type==="fn"){const s=t.name.toLowerCase();if(A&&A.has(s)){const i=A.get(s);if(i.returnType!==void 0)return i.returnType}if(["upper","lower","substr","trim","concat"].includes(s))return _.TEXT;if(["length","count","starts_with","startswith","ends_with","endswith","like","contains"].includes(s))return _.INT32;if(["abs","round","floor","ceil","sum","avg","min","max"].includes(s)){if(t.args.length>0&&t.args[0].type==="col"){const i=Lt(t.args[0].name,n??[e]);if(i&&i.col.type===_.INT32&&s!=="avg")return _.INT32}return _.FLOAT64}return _.TEXT}return _.TEXT}function it(t,e,A,n,s,i,o,r,a){if(r){const c=t.type==="col"?t.name:void 0,l=r(c,t);if(l!==void 0){l!==s&&(A.emitUint8(C.OP_COPY),A.emitUint8(l),A.emitUint8(s));return}}if(t.type==="literal"){const c=t.value;c==null?(A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(s)):typeof c=="number"?Number.isInteger(c)?(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(s),A.emitInt32(c)):(A.emitUint8(C.OP_LOAD_FLOAT),A.emitUint8(s),A.emitFloat64(c)):typeof c=="string"?(A.emitUint8(C.OP_LOAD_TEXT),A.emitUint8(s),A.emitString(c)):typeof c=="boolean"&&(A.emitUint8(C.OP_LOAD_INT),A.emitUint8(s),A.emitInt32(c?1:0));return}if(t.type==="col"){if(n===-1)throw new Error(`Column "${t.name}" in HAVING clause must be an aggregate or grouping column`);const c=a??[e],l=Lt(t.name,c);if(!l){if(t.name==="*"){A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(s);return}throw new Error(`Column "${t.name}" does not exist in table "${e.name}"`)}Ce(A,l.cursor,l.colIdx,s,l.col.type);return}if(t.type==="binary"){const c=i(),l=i();it(t.left,e,A,n,c,i,o,r,a),it(t.right,e,A,n,l,i,o,r,a);let u=C.OP_ADD;if(t.op==="+")u=C.OP_ADD;else if(t.op==="-")u=C.OP_SUB;else if(t.op==="*")u=C.OP_MUL;else if(t.op==="/")u=C.OP_DIV;else if(t.op==="%")u=C.OP_MOD;else if(t.op==="="||t.op==="!="||t.op==="<"||t.op==="<="||t.op===">"||t.op===">="){let g=C.OP_EQ;t.op==="="?g=C.OP_EQ:t.op==="!="?g=C.OP_NE:t.op==="<"?g=C.OP_LT:t.op==="<="?g=C.OP_LE:t.op===">"?g=C.OP_GT:t.op===">="&&(g=C.OP_GE),A.emitUint8(g),A.emitUint8(c),A.emitUint8(l);const E=A.emitUint16(0);A.emitUint8(C.OP_LOAD_INT),A.emitUint8(s),A.emitInt32(0),A.emitUint8(C.OP_JUMP);const h=A.emitUint16(0);A.patchUint16(E,A.currentOffset()),A.emitUint8(C.OP_LOAD_INT),A.emitUint8(s),A.emitInt32(1),A.patchUint16(h,A.currentOffset());return}A.emitUint8(u),A.emitUint8(c),A.emitUint8(l),A.emitUint8(s);return}if(t.type==="fn"){const c=t.name.toLowerCase(),l={upper:C.OP_STR_UPPER,lower:C.OP_STR_LOWER,length:C.OP_STR_LENGTH,trim:C.OP_STR_TRIM,abs:C.OP_MATH_ABS,round:C.OP_MATH_ROUND,floor:C.OP_MATH_FLOOR,ceil:C.OP_MATH_CEIL};if(l[c]){const g=i(),E=t.args[0]??{type:"literal",value:null};it(E,e,A,n,g,i,o,r,a),A.emitUint8(l[c]),A.emitUint8(g),A.emitUint8(s);return}if(c==="substr"){const g=i(),E=i(),h=i();it(t.args[0],e,A,n,g,i,o,r,a),it(t.args[1]??{type:"literal",value:1},e,A,n,E,i,o,r,a),t.args[2]!==void 0?it(t.args[2],e,A,n,h,i,o,r,a):(A.emitUint8(C.OP_LOAD_NULL),A.emitUint8(h)),A.emitUint8(C.OP_STR_SUBSTR),A.emitUint8(g),A.emitUint8(E),A.emitUint8(h),A.emitUint8(s);return}const u={starts_with:C.OP_STR_STARTS_WITH,startswith:C.OP_STR_STARTS_WITH,ends_with:C.OP_STR_ENDS_WITH,endswith:C.OP_STR_ENDS_WITH,like:C.OP_STR_LIKE,contains:C.OP_STR_CONTAINS};if(u[c]){const g=i(),E=i();it(t.args[0]??{type:"literal",value:null},e,A,n,g,i,o,r,a),it(t.args[1]??{type:"literal",value:""},e,A,n,E,i,o,r,a),A.emitUint8(u[c]),A.emitUint8(g),A.emitUint8(E);const h=A.emitUint16(0);A.emitUint8(C.OP_LOAD_INT),A.emitUint8(s),A.emitInt32(0),A.emitUint8(C.OP_JUMP);const B=A.emitUint16(0);A.patchUint16(h,A.currentOffset()),A.emitUint8(C.OP_LOAD_INT),A.emitUint8(s),A.emitInt32(1),A.patchUint16(B,A.currentOffset());return}if(c==="concat"||c==="coalesce"){const g=t.args.length,E=i();for(let B=1;B<g;B++)i();for(let B=0;B<g;B++)it(t.args[B],e,A,n,E+B,i,o,r,a);const h=c==="concat"?C.OP_STR_CONCAT:C.OP_COALESCE;A.emitUint8(h),A.emitUint8(E),A.emitUint8(g),A.emitUint8(s);return}if(o&&o.has(c)){const g=o.get(c),E=t.args.length;let h=s;if(E>0){h=i();for(let B=1;B<E;B++)i();for(let B=0;B<E;B++)it(t.args[B],e,A,n,h+B,i,o,r,a)}A.emitUint8(C.OP_CALL_UDF),A.emitUint16(g),A.emitUint8(h),A.emitUint8(E),A.emitUint8(s);return}throw new Xi(c)}}function Yo(t,e,A,n){A==null?(t.emitUint8(C.OP_LOAD_NULL),t.emitUint8(e)):typeof A=="number"?n===_.FLOAT64||!Number.isInteger(A)?(t.emitUint8(C.OP_LOAD_FLOAT),t.emitUint8(e),t.emitFloat64(A)):(t.emitUint8(C.OP_LOAD_INT),t.emitUint8(e),t.emitInt32(Math.floor(A))):typeof A=="bigint"?(t.emitUint8(C.OP_LOAD_INT),t.emitUint8(e),t.emitInt32(Number(A))):typeof A=="string"?(t.emitUint8(C.OP_LOAD_TEXT),t.emitUint8(e),t.emitString(A)):typeof A=="boolean"&&(t.emitUint8(C.OP_LOAD_INT),t.emitUint8(e),t.emitInt32(A?1:0))}function ri(t){switch(t){case _.INT32:return-2147483648;case _.INT64:return-9223372036854775808n;case _.FLOAT64:return-1/0;case _.TEXT:case _.UUID:case _.ULID:return"";case _.BLOB:return new Uint8Array(0);default:return 0}}function xo(t,e,A,n){var r;if(!A||A.length===0)return!1;for(const a of A)if(a.direction==="desc")return!1;const s=t.columnIndices.map(a=>e.columns[a].name.toLowerCase());let i=0;if(n&&n.size>0)for(;i<s.length&&n.has(s[i]);)i++;let o=0;for(;i<s.length&&o<A.length;){const a=(r=A[o].colName)==null?void 0:r.toLowerCase();if(!a||a!==s[i])return!1;i++,o++}return o===A.length}function lc(t,e,A,n,s){if(!A||A.length===0)return!1;for(const i of A){if(i.direction==="desc")return!1;const o=i.colName;if(!o)return!1;if(n&&n.length>0){let r=Lt(o,n);if(!r&&s){const a=s.find(c=>c.alias===o);a&&a.expr.type==="col"&&(r=Lt(a.expr.name,n))}if(!r||r.tableIdx!==0)return!1}else{const r=o.includes(".")?o.slice(o.lastIndexOf(".")+1):o;if(!t.columns.some(c=>c.name.toLowerCase()===r.toLowerCase()))return!1}}return!0}function ai(t,e,A,n){if(!t.indexes||t.indexes.length===0)return null;const s=A??e,i=new Set;for(const r of e)r.type==="cmp"&&(r.op==="="||r.op===void 0)&&r.colName&&r.value!==void 0&&r.value!==null&&i.add(r.colName.toLowerCase());const o=r=>{if(n&&n.length>0){if(r.scanType==="point"&&r.index.flags&(ft.PRIMARY|ft.UNIQUE))r.satisfiesOrderBy=!0;else if(xo(r.index,t,n,i)){if(r.scanType==="multi_point"&&r.inValues){const a=n[0].direction==="desc"?-1:1;r.inValues.sort((c,l)=>typeof c=="number"&&typeof l=="number"?(c-l)*a:String(c).localeCompare(String(l))*a)}r.satisfiesOrderBy=!0}}return r};for(const r of t.indexes)if(r.flags&ft.PRIMARY&&r.columnCount===1){const a=t.columns[r.columnIndices[0]];for(let c=0;c<e.length;c++){const l=e[c];if(l.type==="cmp"&&(l.op==="="||l.op===void 0)&&l.colName===a.name&&l.value!==void 0&&l.value!==null)return o({index:r,scanType:"point",seekFilter:l,filterIndex:s.indexOf(l),keyType:a.type});if(l.type==="in"&&!l.notIn&&l.colName===a.name&&Array.isArray(l.values)&&l.values.length>0){const u=Array.from(new Set(l.values.filter(g=>g!=null)));return o({index:r,scanType:"multi_point",seekFilter:l,filterIndex:s.indexOf(l),keyType:a.type,inValues:u})}}}for(const r of t.indexes)if(r.flags&ft.UNIQUE&&r.columnCount===1){const a=t.columns[r.columnIndices[0]];for(let c=0;c<e.length;c++){const l=e[c];if(l.type==="cmp"&&(l.op==="="||l.op===void 0)&&l.colName===a.name&&l.value!==void 0&&l.value!==null)return o({index:r,scanType:"point",seekFilter:l,filterIndex:s.indexOf(l),keyType:a.type});if(l.type==="in"&&!l.notIn&&l.colName===a.name&&Array.isArray(l.values)&&l.values.length>0){const u=Array.from(new Set(l.values.filter(g=>g!=null)));return o({index:r,scanType:"multi_point",seekFilter:l,filterIndex:s.indexOf(l),keyType:a.type,inValues:u})}}}for(const r of t.indexes)if(r.columnCount>1){const a=[];let c=!0;for(let l=0;l<r.columnCount;l++){const u=t.columns[r.columnIndices[l]],g=e.find(E=>E.type==="cmp"&&(E.op==="="||E.op===void 0)&&E.colName===u.name&&E.value!==void 0&&E.value!==null);if(g)a.push(g);else{c=!1;break}}if(c){const l={};for(const g of a)l[g.colName]=g.value;const u=Fs(t.columns,r.columnIndices,r.columnCount,l);return o({index:r,scanType:r.flags&(ft.UNIQUE|ft.PRIMARY)?"point":"range",seekFilter:a[0],filterIndex:s.indexOf(a[0]),keyType:_.BLOB,compositeValue:u})}}for(const r of t.indexes)if(r.columnCount===1){const a=t.columns[r.columnIndices[0]];for(let c=0;c<e.length;c++){const l=e[c];if(l.type==="cmp"&&(l.op==="="||l.op===void 0)&&l.colName===a.name&&l.value!==void 0&&l.value!==null)return o({index:r,scanType:"range",seekFilter:l,filterIndex:s.indexOf(l),keyType:a.type})}}for(const r of t.indexes)if(r.columnCount===1){const a=t.columns[r.columnIndices[0]];for(let c=0;c<e.length;c++){const l=e[c];if(l.type==="cmp"&&(l.op===">="||l.op===">")&&l.colName===a.name&&l.value!==void 0&&l.value!==null)return o({index:r,scanType:"range",seekFilter:l,filterIndex:s.indexOf(l),keyType:a.type})}}if(n&&n.length>0){for(const r of t.indexes)if(xo(r,t,n,i))if(r.columnCount===1){const a=t.columns[r.columnIndices[0]];return{index:r,scanType:"range",seekFilter:void 0,filterIndex:-1,keyType:a.type,satisfiesOrderBy:!0}}else{const a={};for(let l=0;l<r.columnCount;l++){const u=t.columns[r.columnIndices[l]],g=e.find(E=>E.type==="cmp"&&(E.op==="="||E.op===void 0)&&E.colName===u.name&&E.value!==void 0&&E.value!==null);g?a[u.name]=g.value:a[u.name]=ri(u.type)}const c=Fs(t.columns,r.columnIndices,r.columnCount,a);return{index:r,scanType:"range",seekFilter:void 0,filterIndex:-1,keyType:_.BLOB,compositeValue:c,satisfiesOrderBy:!0}}}return null}function ci(t,e,A,n,s){if(t.op!=="="||!e.indexes||e.indexes.length===0)return null;const i=Lt(t.leftCol,n),o=Lt(t.rightCol,n);if(!i||!o)return null;let r=null,a=null;if(i.tableIdx===A&&o.tableIdx<A?(r=i,a=o):o.tableIdx===A&&i.tableIdx<A&&(r=o,a=i),!r||!a)return null;let c=null,l=999;for(const g of e.indexes)if(g.columnCount===1&&g.columnIndices[0]===r.colIdx){const E=(g.flags&ft.PRIMARY)!==0,h=(g.flags&ft.UNIQUE)!==0,B=E?1:h?2:3;B<l&&(l=B,c=g)}if(!c)return null;const u=(c.flags&(ft.PRIMARY|ft.UNIQUE))!==0;return{index:c,isUnique:u,innerCol:r,outerCol:a,indexCursor:s}}function Vo(t,e){var Ii,hn,Bi,Bc,hc,fc,Cc,Qc,dc;const A=[t.table,...((Ii=t.joinedTables)==null?void 0:Ii.map(M=>M.table))??[]],s=qo((e==null?void 0:e.planner)??t.planner).optimize(t),i=s.orderedTables??A,o=s.whereMetrics,r=s.metrics;if(s.isAlwaysFalse){const M=new oi;M.emitUint8(C.OP_HALT);const Z=M.toByteArray();return t.outputColumns&&(Z.outputColumns=t.outputColumns),Z.allTables=i,Z.whereMetrics=o,Z}const a=s.plan;a!==t&&Object.assign(t,a);const c=t.joinedTables!==void 0&&t.joinedTables.length>0,l=Pe(t.filters),u=l?rc(l):[],g=cn(l),E=Array.from({length:i.length},()=>[]),h=new Set;if(c&&r)for(let M=0;M<i.length;M++){const Z=A.indexOf(i[M]);if(Z!==-1){const tt=r.singleTableFilters.get(Z)??[];if(M===0||t.joinedTables&&((hn=t.joinedTables[M-1])==null?void 0:hn.type)==="inner"){E[M]=tt;for(const et of tt)h.add(et)}}}const B=[];for(const M of g)h.has(M)||B.push(M);const Q=Pe(B),d=c&&lc(i[0],t.joinedTables,t.orderBy,i,t.selectExprs),p=d?t.orderBy.map(M=>{const Z=M.colName??"",tt=Z.includes(".")?Z.slice(Z.lastIndexOf(".")+1):Z;return{...M,colName:tt}}):void 0,U=c?ai(i[0],E[0],u,p):null,N=d&&!!(U!=null&&U.satisfiesOrderBy);let m=i.length,T=-1;U&&m<16&&(T=m++);const F=new Array(i.length).fill(null);if(c&&t.joinedTables)for(let M=1;M<i.length;M++){const Z=t.joinedTables[M-1];if(m<16){const tt=ci(Z,i[M],M,i,m);tt&&(F[M]=tt,m++)}}const D=m;if(D>16)throw new Is(D,16);for(const M of g)if(M.type==="in"&&!M.notIn&&(!M.values||M.values.length===0)){const Z=new oi;Z.emitUint8(C.OP_HALT);const tt=Z.toByteArray();return t.outputColumns&&(tt.outputColumns=t.outputColumns),tt}const O=[],w=new Map;for(const M of u)if(M.type==="in"){const Z=O.length;w.set(M,Z);const tt=new Set;if(M.values)for(const et of M.values)et!=null&&(tt.add(et),typeof et=="bigint"?tt.add(Number(et)):typeof et=="number"&&Number.isSafeInteger(et)&&tt.add(BigInt(et)));O.push(tt)}const P=new Map;for(let M=0;M<u.length;M++)P.set(u[M],M);if(u.length*2>=64)throw new Bt(u.length*2);if(t.orderBy&&t.orderBy.length>8)throw new mr(t.orderBy.length);if(t.groupBy&&t.groupBy.length>8)throw new yr(t.groupBy.length);const I=new oi;if(t.limit!==void 0&&t.limit<=0)return I.emitUint8(C.OP_HALT),I.toByteArray();let b=u.length*2;const H=t.offset!==void 0&&t.offset>0,J=t.limit!==void 0&&t.limit>0,ot=H?b++:-1,rt=J?b++:-1;if(b>=64)throw new Bt(b);const V=t.table;for(let M=0;M<u.length;M++){const Z=u[M];if(Z.type==="cmp"){const tt=M*2+1,et=Z.value;if(et==null)I.emitUint8(C.OP_LOAD_NULL),I.emitUint8(tt);else if(typeof et=="number"){const Pt=Z.colName?Lt(Z.colName,i):void 0;Pt&&Pt.col.type===_.FLOAT64?(I.emitUint8(C.OP_LOAD_FLOAT),I.emitUint8(tt),I.emitFloat64(et)):Number.isInteger(et)?(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(tt),I.emitInt32(Math.floor(et))):(I.emitUint8(C.OP_LOAD_FLOAT),I.emitUint8(tt),I.emitFloat64(et))}else typeof et=="bigint"?(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(tt),I.emitInt32(Number(et))):typeof et=="string"?(I.emitUint8(C.OP_LOAD_TEXT),I.emitUint8(tt),I.emitString(et)):typeof et=="boolean"&&(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(tt),I.emitInt32(et?1:0))}}if(H&&(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(ot),I.emitInt32(t.offset)),J&&(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(rt),I.emitInt32(t.limit)),t.aggregates&&t.aggregates.length>0||t.groupBy&&t.groupBy.length>0){const M=((Bi=t.groupBy)==null?void 0:Bi.length)??0,Z=t.aggregates??[],tt=Z.length,et=[];for(const z of t.groupBy??[]){const W=typeof z=="string"?z:z.colName??(z.expr?le(z.expr):"group_key"),ut=(Bc=t.selectExprs)==null?void 0:Bc.find(at=>{if(at.alias===W)return!0;if(typeof z=="object"&&z.expr)return JSON.stringify(at.expr)===JSON.stringify(z.expr);if(typeof z=="string"&&z.includes("("))try{const Xt=Rt(z);return JSON.stringify(at.expr)===JSON.stringify(Xt)}catch{return!1}return!1}),ct=(ut==null?void 0:ut.alias)??W,nt=V.columns.find(at=>at.name===W||at.name===ct);nt?et.push({...nt,name:ct}):et.push({name:ct,type:_.TEXT,flags:gt.NONE,colOffset:0})}for(let z=0;z<Z.length;z++){const W=Z[z],ut=W.alias??(W.colName?`${W.func}_${W.colName}`:W.func),ct=W.func==="count"?_.INT32:_.FLOAT64;et.push({name:ut,type:ct,flags:gt.NONE,colOffset:0})}const lt=b,yt=lt+M,Ut=yt+4,wt=Ut+4,ht=wt+M,Wt=ht+tt;if(Wt>=64)throw new Bt(Wt);I.emitUint8(C.OP_AGG_INIT),I.emitUint8(0),I.emitUint8(lt),I.emitUint8(M),I.emitUint8(0),I.emitUint8(C.OP_OPEN_CURSOR),I.emitUint8(0),I.emitUint32(V.rootPageId),I.emitUint8(C.OP_REWIND),I.emitUint8(0);const re=I.emitUint16(0),Tt=I.currentOffset(),Ae=[];if(Ge(l,V,I,P,Ae,t.udfNameMap,void 0,w),t.groupBy)for(let z=0;z<t.groupBy.length;z++){const W=t.groupBy[z],ut=lt+z;let ct=Math.max(Wt+4,40);const nt=()=>{if(ct>=64)throw new Bt(ct);return ct++};if(typeof W=="object"&&W.expr)it(W.expr,V,I,0,ut,nt,t.udfNameMap);else{const at=typeof W=="string"?W:W.colName,Xt=(fc=(hc=t.selectExprs)==null?void 0:hc.find(Gt=>Gt.alias===at))==null?void 0:fc.expr;if(Xt)it(Xt,V,I,0,ut,nt,t.udfNameMap);else{const Gt=V.columns.findIndex(Kt=>Kt.name===at);if(Gt!==-1){const Kt=V.columns[Gt];Ce(I,0,Gt,ut,Kt.type)}else try{const Kt=Rt(at);it(Kt,V,I,0,ut,nt,t.udfNameMap)}catch{throw new Error(`Grouping column "${at}" not found in table "${V.name}"`)}}}}tt===0&&M>0&&(I.emitUint8(C.OP_AGG_STEP),I.emitUint8(0),I.emitUint8(lt),I.emitUint8(M),I.emitUint8(255),I.emitUint8(0));for(let z=0;z<Z.length;z++){const W=Z[z];let ut=0;W.func==="count"?ut=0:W.func==="sum"?ut=1:W.func==="avg"?ut=2:W.func==="min"?ut=3:W.func==="max"&&(ut=4);let ct=255;if(W.colName&&W.colName!=="*"){const nt=V.columns.findIndex(at=>at.name===W.colName);if(nt!==-1){const at=V.columns[nt];ct=yt,Ce(I,0,nt,ct,at.type)}else try{const at=Rt(W.colName);let Xt=Math.max(Wt+4,40);const Gt=()=>{if(Xt>=64)throw new Bt(Xt);return Xt++};ct=yt,it(at,V,I,0,ct,Gt,t.udfNameMap)}catch{}}I.emitUint8(C.OP_AGG_STEP),I.emitUint8(0),I.emitUint8(lt),I.emitUint8(M),I.emitUint8(ct),I.emitUint8(z<<3|ut)}const Re=I.currentOffset();for(const z of Ae)I.patchUint16(z,Re);I.emitUint8(C.OP_NEXT_ROW),I.emitUint8(0);const Qe=I.emitUint16(0);I.emitUint8(C.OP_JUMP),I.emitUint16(Tt);const RA=I.currentOffset();I.patchUint16(re,RA),I.patchUint16(Qe,RA);const De=I.currentOffset();I.emitUint8(C.OP_AGG_NEXT),I.emitUint8(0),I.emitUint8(wt),I.emitUint8(Ut);const ne=I.emitUint16(0),sA=I.currentOffset();I.emitUint8(C.OP_HALT);const Y=I.currentOffset();I.patchUint16(ne,Y);for(let z=0;z<Z.length;z++){const W=Z[z],ut=ht+z;let ct=Ut,nt=0;W.func==="count"?(ct=Ut,nt=0):W.func==="sum"?(ct=Ut,nt=1):W.func==="avg"?(ct=Ut,nt=2):W.func==="min"?(ct=Ut+2,nt=3):W.func==="max"&&(ct=Ut+3,nt=4),I.emitUint8(C.OP_AGG_FINAL),I.emitUint8(ct),I.emitUint8(Ut+1),I.emitUint8(ut),I.emitUint8(z<<3|nt)}const Mt=(z,W)=>{var ut;for(let ct=0;ct<Z.length;ct++){const nt=Z[ct],at=ht+ct;if(z&&(nt.alias&&nt.alias===z||(nt.colName?`${nt.func}_${nt.colName}`:nt.func)===z||`${nt.func}(${nt.colName??"*"})`===z.replace(/\s+/g,"")||nt.func===z))return at;if(W&&W.type==="fn"){const Xt=W.name.toLowerCase();if(nt.func===Xt)if(Xt==="count"){const Gt=W.args[0],Kt=Gt&&Gt.type==="col"?Gt.name:void 0;if(nt.colName===void 0||nt.colName==="*"||nt.colName===Kt)return at}else{const Gt=W.args[0],Kt=Gt&&Gt.type==="col"?Gt.name:void 0;if(nt.colName===Kt)return at}}}if(t.groupBy)for(let ct=0;ct<t.groupBy.length;ct++){const nt=t.groupBy[ct],at=wt+ct,Xt=typeof nt=="string"?nt:nt.colName,Gt=typeof nt=="object"?nt.expr:void 0;if(z){if(Xt===z||Gt&&le(Gt)===z)return at;const Kt=(ut=t.selectExprs)==null?void 0:ut.find(Zo=>Zo.alias===z);if(Kt){if(Xt===Kt.alias||Gt&&JSON.stringify(Gt)===JSON.stringify(Kt.expr))return at;if(typeof nt=="string"&&nt.includes("("))try{const Zo=Rt(nt);if(JSON.stringify(Zo)===JSON.stringify(Kt.expr))return at}catch{}}}if(W){if(Gt&&JSON.stringify(Gt)===JSON.stringify(W)||W.type==="col"&&Xt===W.name)return at;if(typeof nt=="string"&&nt.includes("("))try{const Kt=Rt(nt);if(JSON.stringify(Kt)===JSON.stringify(W))return at}catch{}}}};if(t.having&&t.having.length>0){let z=null;t.having.length===1?z=t.having[0]:z={type:"and",children:t.having};const W=[];let ut=Math.max(Wt+4,40);Ig(z,V,I,Mt,()=>{if(ut>=64)throw new Bt(ut);return ut++},W,t.udfNameMap);for(const nt of W)I.patchUint16(nt,De)}H&&(I.emitUint8(C.OP_OFFSET),I.emitUint8(ot),I.emitUint16(De)),I.emitUint8(C.OP_RESULT_ROW),I.emitUint8(wt),I.emitUint8(M+tt),J&&(I.emitUint8(C.OP_LIMIT),I.emitUint8(rt),I.emitUint16(sA)),I.emitUint8(C.OP_JUMP),I.emitUint16(De);const St=I.toByteArray();return St.outputColumns=et,St.inSets=O,t.outputColumns=et,St}const X=c?null:ai(V,g,u,t.orderBy);if(!c&&t.orderBy&&t.orderBy.length>0&&!(X!=null&&X.satisfiesOrderBy)){const M=t.orderBy.length,Z=b,tt=Z+M;if(tt>=64)throw new Bt(tt);const et={numKeys:M,directions:t.orderBy.map(Tt=>Tt.direction==="desc"?1:0),nullOrders:t.orderBy.map(Tt=>Tt.nullOrder==="nulls_last"?1:Tt.nullOrder==="nulls_first"?0:Tt.direction==="desc"?1:0),limit:t.limit,offset:t.offset};t.keyInfos=[et],I.emitUint8(C.OP_SORTER_OPEN),I.emitUint8(0),I.emitUint8(0),I.emitUint8(C.OP_OPEN_CURSOR),I.emitUint8(0),I.emitUint32(V.rootPageId),I.emitUint8(C.OP_REWIND),I.emitUint8(0);const Pt=I.emitUint16(0),lt=I.currentOffset(),yt=[];Ge(l,V,I,P,yt,t.udfNameMap,void 0,w);for(let Tt=0;Tt<M;Tt++){const Ae=t.orderBy[Tt],Re=Z+Tt;let Qe=50;const RA=()=>{if(Qe>=64)throw new Bt(Qe);return Qe++};if(Ae.expr)it(Ae.expr,V,I,0,Re,RA,t.udfNameMap);else if(Ae.colName){const De=Ae.colName,ne=(Qc=(Cc=t.selectExprs)==null?void 0:Cc.find(sA=>sA.alias===De))==null?void 0:Qc.expr;if(ne)it(ne,V,I,0,Re,RA,t.udfNameMap);else{const sA=V.columns.findIndex(Y=>Y.name===De);if(sA!==-1){const Y=V.columns[sA];Ce(I,0,sA,Re,Y.type)}else try{const Y=Rt(De);it(Y,V,I,0,Re,RA,t.udfNameMap)}catch{throw new Error(`Order by column "${De}" not found in table "${V.name}"`)}}}}I.emitUint8(C.OP_SORTER_INSERT),I.emitUint8(0),I.emitUint8(Z),I.emitUint8(M),I.emitUint8(0);const Ut=I.currentOffset();for(const Tt of yt)I.patchUint16(Tt,Ut);I.emitUint8(C.OP_NEXT_ROW),I.emitUint8(0);const wt=I.emitUint16(0);I.emitUint8(C.OP_JUMP),I.emitUint16(lt);const ht=I.currentOffset();I.patchUint16(Pt,ht),I.patchUint16(wt,ht),I.emitUint8(C.OP_SORTER_SORT),I.emitUint8(0);const Wt=I.currentOffset();I.emitUint8(C.OP_SORTER_NEXT),I.emitUint8(0),I.emitUint16(Wt),I.emitUint8(C.OP_HALT);const re=I.toByteArray();return re.keyInfos=t.keyInfos,re.inSets=O,r&&(re.planMetrics=r,re.estimatedCost=r.totalCost,re.estimatedRows=r.estimatedRows,re.joinOrder=r.joinOrder),re}const Ft=t.selectExprs!==void 0&&t.selectExprs.length>0&&!(t.selectExprs.length===1&&t.selectExprs[0].expr.type==="col"&&t.selectExprs[0].expr.name==="*");let bt=[];if(Ft)bt=t.selectExprs;else if(c){const M=new Set,Z=new Set;for(const tt of i)for(const et of tt.columns)M.has(et.name.toLowerCase())&&Z.add(et.name.toLowerCase()),M.add(et.name.toLowerCase());for(const tt of i)for(const et of tt.columns){const Pt=Z.has(et.name.toLowerCase())?`${tt.name}.${et.name}`:et.name;bt.push({expr:{type:"col",name:`${tt.name}.${et.name}`},alias:Pt})}}let Ot=-1;if(Ft||c){const M=bt.map(Z=>({name:Z.alias,type:cc(Z.expr,V,t.udfDefs,i),flags:gt.NONE,colOffset:0}));if(t.outputColumns=M,Ot=b,b+=bt.length,b>=64)throw new Bt(b)}if(c){const M=i.length,Z=new Array(M);for(let Y=1;Y<M;Y++)t.joinedTables[Y-1].type==="left"&&(Z[Y]=b++);const tt=b++,et=b++,Pt=b++;let lt=-1;if(U&&T!==-1)if(U.compositeValue){if(lt=b++,b>=64)throw new Bt(b);I.emitUint8(C.OP_LOAD_BLOB),I.emitUint8(lt),I.emitUint32(U.compositeValue.length),I.emitBytes(U.compositeValue)}else if(U.scanType==="multi_point"){if(lt=b++,b>=64)throw new Bt(b)}else if(U.filterIndex>=0)lt=U.filterIndex*2+1;else{if(lt=b++,b>=64)throw new Bt(b);const Y=ri(U.keyType);Yo(I,lt,Y,U.keyType)}if(b>=64)throw new Bt(b);for(let Y=0;Y<M;Y++)I.emitUint8(C.OP_OPEN_CURSOR),I.emitUint8(Y),I.emitUint32(i[Y].rootPageId);U&&T!==-1&&(I.emitUint8(C.OP_OPEN_INDEX),I.emitUint8(T),I.emitUint32(U.index.rootPageId));for(let Y=1;Y<M;Y++){const Mt=F[Y];Mt&&(I.emitUint8(C.OP_OPEN_INDEX),I.emitUint8(Mt.indexCursor),I.emitUint32(Mt.index.rootPageId))}const yt=new Array(M),Ut=new Array(M),wt=Array.from({length:M},()=>[]),ht=new Array(M),Wt=[];if(U&&T!==-1?U.scanType==="point"?(I.emitUint8(C.OP_INDEX_SEEK_EQ),I.emitUint8(T),I.emitUint8(0),I.emitUint8(lt),I.emitUint8(U.keyType),yt[0]=I.emitUint16(0)):(I.emitUint8(C.OP_INDEX_SEEK_GE),I.emitUint8(T),I.emitUint8(0),I.emitUint8(lt),I.emitUint8(U.keyType),yt[0]=I.emitUint16(0)):(I.emitUint8(C.OP_REWIND),I.emitUint8(0),yt[0]=I.emitUint16(0)),Ut[0]=I.currentOffset(),E[0]&&E[0].length>0){const Y=Pe(E[0]);Ge(Y,i[0],I,P,wt[0],t.udfNameMap,i,w)}for(let Y=1;Y<M;Y++){const Mt=t.joinedTables[Y-1],St=F[Y];if(Mt.type==="left"&&(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(Z[Y]),I.emitInt32(0)),St&&St.isUnique){if(Ce(I,St.outerCol.cursor,St.outerCol.colIdx,tt,St.outerCol.col.type),I.emitUint8(C.OP_INDEX_SEEK_EQ),I.emitUint8(St.indexCursor),I.emitUint8(Y),I.emitUint8(tt),I.emitUint8(St.outerCol.col.type),yt[Y]=I.emitUint16(0),Ut[Y]=I.currentOffset(),Mt.type==="inner"&&E[Y]&&E[Y].length>0){const z=Pe(E[Y]);Ge(z,i[Y],I,P,wt[Y],t.udfNameMap,i,w)}Mt.type==="left"&&(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(Z[Y]),I.emitInt32(1))}else if(St&&!St.isUnique){Ce(I,St.outerCol.cursor,St.outerCol.colIdx,tt,St.outerCol.col.type),I.emitUint8(C.OP_INDEX_SEEK_GE),I.emitUint8(St.indexCursor),I.emitUint8(Y),I.emitUint8(tt),I.emitUint8(St.outerCol.col.type),yt[Y]=I.emitUint16(0),Ut[Y]=I.currentOffset(),Ce(I,Y,St.innerCol.colIdx,et,St.innerCol.col.type),I.emitUint8(C.OP_EQ),I.emitUint8(tt),I.emitUint8(et);const z=I.emitUint16(0);if(I.emitUint8(C.OP_JUMP),wt[Y].push(I.emitUint16(0)),I.patchUint16(z,I.currentOffset()),Mt.type==="inner"&&E[Y]&&E[Y].length>0){const W=Pe(E[Y]);Ge(W,i[Y],I,P,wt[Y],t.udfNameMap,i,w)}Mt.type==="left"&&(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(Z[Y]),I.emitInt32(1))}else{I.emitUint8(C.OP_REWIND),I.emitUint8(Y),yt[Y]=I.emitUint16(0),Ut[Y]=I.currentOffset();const z=Lt(Mt.leftCol,i);if(!z)throw new Error(`Join column "${Mt.leftCol}" not found in tables`);const W=Lt(Mt.rightCol,i);if(!W)throw new Error(`Join column "${Mt.rightCol}" not found in tables`);Ce(I,z.cursor,z.colIdx,tt,z.col.type),Ce(I,W.cursor,W.colIdx,et,W.col.type);let ut;switch(Mt.op){case"=":ut=C.OP_EQ;break;case"!=":ut=C.OP_NE;break;case">":ut=C.OP_GT;break;case">=":ut=C.OP_GE;break;case"<":ut=C.OP_LT;break;case"<=":ut=C.OP_LE;break;default:ut=C.OP_EQ}I.emitUint8(ut),I.emitUint8(tt),I.emitUint8(et);const ct=I.emitUint16(0);if(I.emitUint8(C.OP_JUMP),wt[Y].push(I.emitUint16(0)),I.patchUint16(ct,I.currentOffset()),Mt.type==="inner"&&E[Y]&&E[Y].length>0){const nt=Pe(E[Y]);Ge(nt,i[Y],I,P,wt[Y],t.udfNameMap,i,w)}Mt.type==="left"&&(I.emitUint8(C.OP_LOAD_INT),I.emitUint8(Z[Y]),I.emitInt32(1))}}Ge(Q,V,I,P,wt[M-1],t.udfNameMap,i,w);const Tt=!(t.orderBy!==void 0&&t.orderBy.length>0)||N;let Ae=-1;H&&Tt&&(I.emitUint8(C.OP_OFFSET),I.emitUint8(ot),Ae=I.emitUint16(0));let Re=b;const Qe=()=>{if(Re>=64)throw new Bt(Re);return Re++};for(let Y=0;Y<bt.length;Y++)it(bt[Y].expr,V,I,0,Ot+Y,Qe,t.udfNameMap,void 0,i);I.emitUint8(C.OP_RESULT_ROW),I.emitUint8(Ot),I.emitUint8(bt.length),J&&Tt&&(I.emitUint8(C.OP_LIMIT),I.emitUint8(rt),Wt.push(I.emitUint16(0)));for(let Y=M-1;Y>=1;Y--){const Mt=I.currentOffset();Y===M-1&&Ae!==-1&&I.patchUint16(Ae,Mt);for(const W of wt[Y])I.patchUint16(W,Mt);const St=F[Y];if(St&&St.isUnique){const W=I.currentOffset();I.patchUint16(yt[Y],W)}else if(St&&!St.isUnique){I.emitUint8(C.OP_INDEX_NEXT),I.emitUint8(St.indexCursor),I.emitUint8(Y),ht[Y]=I.emitUint16(0),I.emitUint8(C.OP_JUMP),I.emitUint16(Ut[Y]);const W=I.currentOffset();I.patchUint16(yt[Y],W),I.patchUint16(ht[Y],W)}else{I.emitUint8(C.OP_NEXT_ROW),I.emitUint8(Y),ht[Y]=I.emitUint16(0),I.emitUint8(C.OP_JUMP),I.emitUint16(Ut[Y]);const W=I.currentOffset();I.patchUint16(yt[Y],W),I.patchUint16(ht[Y],W)}if(t.joinedTables[Y-1].type==="left"){I.emitUint8(C.OP_LOAD_INT),I.emitUint8(Pt),I.emitInt32(0),I.emitUint8(C.OP_EQ),I.emitUint8(Z[Y]),I.emitUint8(Pt);const W=I.emitUint16(0);I.emitUint8(C.OP_JUMP);const ut=I.emitUint16(0);I.patchUint16(W,I.currentOffset());for(let at=0;at<bt.length;at++){const Xt=bt[at];let Gt=-1;if(Xt.expr.type==="col"){const Kt=Lt(Xt.expr.name,i);Kt&&(Gt=Kt.tableIdx)}Gt>=Y?(I.emitUint8(C.OP_LOAD_NULL),I.emitUint8(Ot+at)):it(Xt.expr,V,I,0,Ot+at,Qe,t.udfNameMap,void 0,i)}const ct=[];H&&Tt&&(I.emitUint8(C.OP_OFFSET),I.emitUint8(ot),ct.push(I.emitUint16(0))),I.emitUint8(C.OP_RESULT_ROW),I.emitUint8(Ot),I.emitUint8(bt.length),J&&Tt&&(I.emitUint8(C.OP_LIMIT),I.emitUint8(rt),Wt.push(I.emitUint16(0)));const nt=I.currentOffset();I.patchUint16(ut,nt);for(const at of ct)I.patchUint16(at,nt)}}const RA=I.currentOffset();for(const Y of wt[0])I.patchUint16(Y,RA);U&&T!==-1?U.scanType==="point"?(I.emitUint8(C.OP_JUMP),ht[0]=I.emitUint16(0)):(I.emitUint8(C.OP_INDEX_NEXT),I.emitUint8(T),I.emitUint8(0),ht[0]=I.emitUint16(0),I.emitUint8(C.OP_JUMP),I.emitUint16(Ut[0])):(I.emitUint8(C.OP_NEXT_ROW),I.emitUint8(0),ht[0]=I.emitUint16(0),I.emitUint8(C.OP_JUMP),I.emitUint16(Ut[0]));const De=I.currentOffset();I.patchUint16(yt[0],De),I.patchUint16(ht[0],De);for(const Y of Wt)I.patchUint16(Y,De);I.emitUint8(C.OP_HALT);const ne=I.toByteArray();t.outputColumns&&(ne.outputColumns=t.outputColumns);const sA=(dc=t.joinedTables)==null?void 0:dc.map((Y,Mt)=>{const St=Mt+1,z=F[St];return{tableIndex:St,tableName:Y.table.name,scanType:z?"IndexScan":"TableScan",indexName:z?z.index.name:void 0}});return ne.joinedTableScans=sA,ne.allTables=i,ne.inSets=O,ne.table0Scan=U,ne.isOrderSatisfied=N,N&&(t.isOrderSatisfied=!0),r&&(ne.planMetrics=r,ne.estimatedCost=r.totalCost,ne.estimatedRows=r.estimatedRows,ne.joinOrder=r.joinOrder),o&&(ne.whereMetrics=o),ne}if(X){let M;if(X.compositeValue){if(M=b++,M>=64)throw new Bt(M);I.emitUint8(C.OP_LOAD_BLOB),I.emitUint8(M),I.emitBytes(X.compositeValue)}else if(X.scanType==="multi_point"){if(M=b++,M>=64)throw new Bt(M)}else if(X.filterIndex>=0)M=X.filterIndex*2+1;else{if(M=b++,M>=64)throw new Bt(M);const Z=ri(X.keyType);Yo(I,M,Z,X.keyType)}if(X.scanType==="point"){I.emitUint8(C.OP_OPEN_CURSOR),I.emitUint8(0),I.emitUint32(V.rootPageId),I.emitUint8(C.OP_OPEN_INDEX),I.emitUint8(1),I.emitUint32(X.index.rootPageId),I.emitUint8(C.OP_INDEX_SEEK_EQ),I.emitUint8(1),I.emitUint8(0),I.emitUint8(M),I.emitUint8(X.keyType);const Z=I.emitUint16(0),tt=[];Ge(l,V,I,P,tt,t.udfNameMap,void 0,w);let et=-1;if(H&&(I.emitUint8(C.OP_OFFSET),I.emitUint8(ot),et=I.emitUint16(0)),Ft){let Ut=b;const wt=()=>{if(Ut>=64)throw new Bt(Ut);return Ut++};for(let ht=0;ht<t.selectExprs.length;ht++)it(t.selectExprs[ht].expr,V,I,0,Ot+ht,wt,t.udfNameMap);I.emitUint8(C.OP_RESULT_ROW),I.emitUint8(Ot),I.emitUint8(t.selectExprs.length)}else I.emitUint8(C.OP_EMIT_ROW),I.emitUint8(0);I.emitUint8(C.OP_JUMP);const Pt=I.emitUint16(0),lt=I.currentOffset();I.patchUint16(Z,lt),I.patchUint16(Pt,lt),et!==-1&&I.patchUint16(et,lt);for(const Ut of tt)I.patchUint16(Ut,lt);I.emitUint8(C.OP_HALT);const yt=I.toByteArray();return yt.indexScan=X,yt.inSets=O,t.outputColumns&&(yt.outputColumns=t.outputColumns),X!=null&&X.satisfiesOrderBy&&(yt.isOrderSatisfied=!0,t.isOrderSatisfied=!0),r&&(yt.planMetrics=r,yt.estimatedCost=r.totalCost,yt.estimatedRows=r.estimatedRows,yt.joinOrder=r.joinOrder),yt}else if(X.scanType==="multi_point"){const Z=X.inValues?X.inValues.length:0;if(Z===0){I.emitUint8(C.OP_HALT);const lt=I.toByteArray();return lt.indexScan=X,lt.inSets=O,t.outputColumns&&(lt.outputColumns=t.outputColumns),lt}I.emitUint8(C.OP_OPEN_CURSOR),I.emitUint8(0),I.emitUint32(V.rootPageId),I.emitUint8(C.OP_OPEN_INDEX),I.emitUint8(1),I.emitUint32(X.index.rootPageId);const tt=[];for(let lt=0;lt<Z;lt++){const yt=X.inValues[lt];Yo(I,M,yt,X.keyType),I.emitUint8(C.OP_INDEX_SEEK_EQ),I.emitUint8(1),I.emitUint8(0),I.emitUint8(M),I.emitUint8(X.keyType);const Ut=I.emitUint16(0),wt=[];Ge(l,V,I,P,wt,t.udfNameMap,void 0,w);let ht=-1;if(H&&(I.emitUint8(C.OP_OFFSET),I.emitUint8(ot),ht=I.emitUint16(0)),Ft){let Ae=b;const Re=()=>{if(Ae>=64)throw new Bt(Ae);return Ae++};for(let Qe=0;Qe<t.selectExprs.length;Qe++)it(t.selectExprs[Qe].expr,V,I,0,Ot+Qe,Re,t.udfNameMap);I.emitUint8(C.OP_RESULT_ROW),I.emitUint8(Ot),I.emitUint8(t.selectExprs.length)}else I.emitUint8(C.OP_EMIT_ROW),I.emitUint8(0);J&&(I.emitUint8(C.OP_LIMIT),I.emitUint8(rt),tt.push(I.emitUint16(0)));const Wt=lt===Z-1;let re=-1;Wt||(I.emitUint8(C.OP_JUMP),re=I.emitUint16(0));const Tt=I.currentOffset();I.patchUint16(Ut,Tt);for(const Ae of wt)I.patchUint16(Ae,Tt);ht!==-1&&I.patchUint16(ht,Tt),re!==-1&&I.patchUint16(re,Tt)}const et=I.currentOffset();for(const lt of tt)I.patchUint16(lt,et);I.emitUint8(C.OP_HALT);const Pt=I.toByteArray();return Pt.indexScan=X,Pt.inSets=O,t.outputColumns&&(Pt.outputColumns=t.outputColumns),X!=null&&X.satisfiesOrderBy&&(Pt.isOrderSatisfied=!0,t.isOrderSatisfied=!0),r&&(Pt.planMetrics=r,Pt.estimatedCost=r.totalCost,Pt.estimatedRows=r.estimatedRows,Pt.joinOrder=r.joinOrder),Pt}else{I.emitUint8(C.OP_OPEN_CURSOR),I.emitUint8(0),I.emitUint32(V.rootPageId),I.emitUint8(C.OP_OPEN_INDEX),I.emitUint8(1),I.emitUint32(X.index.rootPageId),I.emitUint8(C.OP_INDEX_SEEK_GE),I.emitUint8(1),I.emitUint8(0),I.emitUint8(M),I.emitUint8(X.keyType);const Z=I.emitUint16(0),tt=I.currentOffset(),et=[];Ge(l,V,I,P,et,t.udfNameMap,void 0,w);let Pt=-1;if(H&&(I.emitUint8(C.OP_OFFSET),I.emitUint8(ot),Pt=I.emitUint16(0)),Ft){let Wt=b;const re=()=>{if(Wt>=64)throw new Bt(Wt);return Wt++};for(let Tt=0;Tt<t.selectExprs.length;Tt++)it(t.selectExprs[Tt].expr,V,I,0,Ot+Tt,re,t.udfNameMap);I.emitUint8(C.OP_RESULT_ROW),I.emitUint8(Ot),I.emitUint8(t.selectExprs.length)}else I.emitUint8(C.OP_EMIT_ROW),I.emitUint8(0);let lt=-1;J&&(I.emitUint8(C.OP_LIMIT),I.emitUint8(rt),lt=I.emitUint16(0));const yt=I.currentOffset();Pt!==-1&&I.patchUint16(Pt,yt);for(const Wt of et)I.patchUint16(Wt,yt);I.emitUint8(C.OP_INDEX_NEXT),I.emitUint8(1),I.emitUint8(0);const Ut=I.emitUint16(0);I.emitUint8(C.OP_JUMP),I.emitUint16(tt);const wt=I.currentOffset();I.patchUint16(Z,wt),I.patchUint16(Ut,wt),lt!==-1&&I.patchUint16(lt,wt),I.emitUint8(C.OP_HALT);const ht=I.toByteArray();return ht.indexScan=X,ht.inSets=O,t.outputColumns&&(ht.outputColumns=t.outputColumns),X!=null&&X.satisfiesOrderBy&&(ht.isOrderSatisfied=!0,t.isOrderSatisfied=!0),r&&(ht.planMetrics=r,ht.estimatedCost=r.totalCost,ht.estimatedRows=r.estimatedRows,ht.joinOrder=r.joinOrder),ht}}I.emitUint8(C.OP_OPEN_CURSOR),I.emitUint8(0),I.emitUint32(V.rootPageId),I.emitUint8(C.OP_REWIND),I.emitUint8(0);const gn=I.emitUint16(0),En=I.currentOffset(),In=[];Ge(l,V,I,P,In,t.udfNameMap,void 0,w);let VA=-1;if(H&&(I.emitUint8(C.OP_OFFSET),I.emitUint8(ot),VA=I.emitUint16(0)),Ft){let M=b;const Z=()=>{if(M>=64)throw new Bt(M);return M++};for(let tt=0;tt<t.selectExprs.length;tt++)it(t.selectExprs[tt].expr,V,I,0,Ot+tt,Z,t.udfNameMap);I.emitUint8(C.OP_RESULT_ROW),I.emitUint8(Ot),I.emitUint8(t.selectExprs.length)}else I.emitUint8(C.OP_EMIT_ROW),I.emitUint8(0);let SA=-1;J&&(I.emitUint8(C.OP_LIMIT),I.emitUint8(rt),SA=I.emitUint16(0));const ts=I.currentOffset();VA!==-1&&I.patchUint16(VA,ts);for(const M of In)I.patchUint16(M,ts);I.emitUint8(C.OP_NEXT_ROW),I.emitUint8(0);const NA=I.emitUint16(0);I.emitUint8(C.OP_JUMP),I.emitUint16(En);const Bn=I.currentOffset();I.patchUint16(gn,Bn),I.patchUint16(NA,Bn),SA!==-1&&I.patchUint16(SA,Bn),I.emitUint8(C.OP_HALT);const Xe=I.toByteArray();return Xe.inSets=O,t.outputColumns&&(Xe.outputColumns=t.outputColumns),o&&(Xe.whereMetrics=o),r&&(Xe.planMetrics=r,Xe.estimatedCost=r.totalCost,Xe.estimatedRows=r.estimatedRows,Xe.joinOrder=r.joinOrder),Xe}const Bg=new TextDecoder;function uc(t,e){const A=[],n=new DataView(t.buffer,t.byteOffset,t.byteLength);let s=0;const i=r=>{var a;return(a=e==null?void 0:e.columns[r])!=null&&a.name?`'${e.columns[r].name}'`:`col_${r}`},o=r=>`0x${r.toString(16).padStart(4,"0")}`;for(;s<t.byteLength;){const r=s,a=t[s++];switch(a){case C.OP_HALT:A.push({addr:r,opcode:"OP_HALT",p1:"",p2:"",p3:"",comment:"Halt VM execution (STATUS_DONE)"});break;case C.OP_OPEN_CURSOR:{const c=t[s++],l=n.getUint32(s,!0);s+=4,A.push({addr:r,opcode:"OP_OPEN_CURSOR",p1:`c[${c}]`,p2:`page=${l}`,p3:"",comment:`Open cursor ${c} on root page ${l}${e?` ('${e.name}')`:""}`});break}case C.OP_OPEN_INDEX:{const c=t[s++],l=n.getUint32(s,!0);s+=4,A.push({addr:r,opcode:"OP_OPEN_INDEX",p1:`c[${c}]`,p2:`page=${l}`,p3:"",comment:`Open index cursor ${c} on root page ${l}`});break}case C.OP_INDEX_SEEK_EQ:{const c=t[s++],l=t[s++],u=t[s++],g=t[s++],E=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_INDEX_SEEK_EQ",p1:`idx=c[${c}], data=c[${l}]`,p2:`key=r[${u}], type=${g}`,p3:o(E),comment:`Seek exact key in index; position data cursor or jump to ${o(E)} if not found`});break}case C.OP_INDEX_SEEK_GE:{const c=t[s++],l=t[s++],u=t[s++],g=t[s++],E=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_INDEX_SEEK_GE",p1:`idx=c[${c}], data=c[${l}]`,p2:`key=r[${u}], type=${g}`,p3:o(E),comment:`Seek first entry >= key in index; position data cursor or jump to ${o(E)} if EOF`});break}case C.OP_INDEX_NEXT:{const c=t[s++],l=t[s++],u=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_INDEX_NEXT",p1:`idx=c[${c}], data=c[${l}]`,p2:o(u),p3:"",comment:`Advance index cursor to next entry; jump to ${o(u)} if EOF`});break}case C.OP_REWIND:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_REWIND",p1:`c[${c}]`,p2:o(l),p3:"",comment:`Rewind cursor to first row; jump to ${o(l)} if empty`});break}case C.OP_NEXT_ROW:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_NEXT_ROW",p1:`c[${c}]`,p2:o(l),p3:"",comment:`Advance cursor to next row; jump to ${o(l)} if EOF`});break}case C.OP_LAST:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_LAST",p1:`c[${c}]`,p2:o(l),p3:"",comment:`Position cursor to last row; jump to ${o(l)} if empty`});break}case C.OP_PREV_ROW:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_PREV_ROW",p1:`c[${c}]`,p2:o(l),p3:"",comment:`Advance cursor to previous row; jump to ${o(l)} if BOF`});break}case C.OP_COLUMN_INT:{const c=t[s++],l=t[s++],u=t[s++];A.push({addr:r,opcode:"OP_COLUMN_INT",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:`r[${u}]`,comment:`Read ${i(l)} as INT into r[${u}]`});break}case C.OP_COLUMN_FLOAT:{const c=t[s++],l=t[s++],u=t[s++];A.push({addr:r,opcode:"OP_COLUMN_FLOAT",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:`r[${u}]`,comment:`Read ${i(l)} as FLOAT into r[${u}]`});break}case C.OP_COLUMN_TEXT:{const c=t[s++],l=t[s++],u=t[s++];A.push({addr:r,opcode:"OP_COLUMN_TEXT",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:`r[${u}]`,comment:`Read ${i(l)} as TEXT into r[${u}]`});break}case C.OP_COLUMN_BLOB:{const c=t[s++],l=t[s++],u=t[s++];A.push({addr:r,opcode:"OP_COLUMN_BLOB",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:`r[${u}]`,comment:`Read ${i(l)} as BLOB into r[${u}]`});break}case C.OP_COLUMN_UUID:{const c=t[s++],l=t[s++],u=t[s++];A.push({addr:r,opcode:"OP_COLUMN_UUID",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:`r[${u}]`,comment:`Read ${i(l)} as UUID into r[${u}]`});break}case C.OP_COLUMN_ULID:{const c=t[s++],l=t[s++],u=t[s++];A.push({addr:r,opcode:"OP_COLUMN_ULID",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:`r[${u}]`,comment:`Read ${i(l)} as ULID into r[${u}]`});break}case C.OP_IS_NULL:{const c=t[s++],l=t[s++],u=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_IS_NULL",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:o(u),comment:`If ${i(l)} IS NULL -> jump to ${o(u)}`});break}case C.OP_IS_NOT_NULL:{const c=t[s++],l=t[s++],u=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_IS_NOT_NULL",p1:`c[${c}]`,p2:`${l} (${i(l)})`,p3:o(u),comment:`If ${i(l)} IS NOT NULL -> jump to ${o(u)}`});break}case C.OP_EQ:case C.OP_NE:case C.OP_GT:case C.OP_GE:case C.OP_LT:case C.OP_LE:{const c={[C.OP_EQ]:"OP_EQ",[C.OP_NE]:"OP_NE",[C.OP_GT]:"OP_GT",[C.OP_GE]:"OP_GE",[C.OP_LT]:"OP_LT",[C.OP_LE]:"OP_LE"},l={[C.OP_EQ]:"==",[C.OP_NE]:"!=",[C.OP_GT]:">",[C.OP_GE]:">=",[C.OP_LT]:"<",[C.OP_LE]:"<="},u=t[s++],g=t[s++],E=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:c[a],p1:`r[${u}]`,p2:`r[${g}]`,p3:o(E),comment:`If r[${u}] ${l[a]} r[${g}] -> jump to ${o(E)}`});break}case C.OP_JUMP:{const c=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_JUMP",p1:o(c),p2:"",p3:"",comment:`Unconditional jump to ${o(c)}`});break}case C.OP_STR_LIKE:case C.OP_STR_NOT_LIKE:case C.OP_STR_CONTAINS:case C.OP_STR_STARTS_WITH:case C.OP_STR_ENDS_WITH:{const c={[C.OP_STR_LIKE]:"OP_STR_LIKE",[C.OP_STR_NOT_LIKE]:"OP_STR_NOT_LIKE",[C.OP_STR_CONTAINS]:"OP_STR_CONTAINS",[C.OP_STR_STARTS_WITH]:"OP_STR_STARTS_WITH",[C.OP_STR_ENDS_WITH]:"OP_STR_ENDS_WITH"},l={[C.OP_STR_LIKE]:"LIKE",[C.OP_STR_NOT_LIKE]:"NOT LIKE",[C.OP_STR_CONTAINS]:"CONTAINS",[C.OP_STR_STARTS_WITH]:"STARTS_WITH",[C.OP_STR_ENDS_WITH]:"ENDS_WITH"},u=t[s++],g=t[s++],E=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:c[a],p1:`r[${u}]`,p2:`r[${g}]`,p3:o(E),comment:`If r[${u}] ${l[a]} r[${g}] -> jump to ${o(E)}`});break}case C.OP_IN:{const c=t[s++],l=n.getUint16(s,!0);s+=2;const u=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_IN",p1:`r[${c}]`,p2:`set[${l}]`,p3:o(u),comment:`If r[${c}] IN set[${l}] -> jump to ${o(u)}`});break}case C.OP_LOAD_INT:{const c=t[s++],l=n.getInt32(s,!0);s+=4,A.push({addr:r,opcode:"OP_LOAD_INT",p1:`r[${c}]`,p2:`${l}`,p3:"",comment:`Load literal int ${l} into r[${c}]`});break}case C.OP_LOAD_FLOAT:{const c=t[s++],l=n.getFloat64(s,!0);s+=8,A.push({addr:r,opcode:"OP_LOAD_FLOAT",p1:`r[${c}]`,p2:`${l}`,p3:"",comment:`Load literal float ${l} into r[${c}]`});break}case C.OP_LOAD_TEXT:{const c=t[s++],l=n.getUint16(s,!0);s+=2;const u=new Uint8Array(t.buffer,t.byteOffset+s,l),g=Bg.decode(u);s+=l,A.push({addr:r,opcode:"OP_LOAD_TEXT",p1:`r[${c}]`,p2:`"${g}"`,p3:"",comment:`Load literal text "${g}" into r[${c}]`});break}case C.OP_LOAD_BLOB:{const c=t[s++],l=n.getUint16(s,!0);s+=2+l,A.push({addr:r,opcode:"OP_LOAD_BLOB",p1:`r[${c}]`,p2:`len=${l}`,p3:"",comment:`Load literal BLOB (${l} bytes) into r[${c}]`});break}case C.OP_LOAD_NULL:{const c=t[s++];A.push({addr:r,opcode:"OP_LOAD_NULL",p1:`r[${c}]`,p2:"NULL",p3:"",comment:`Set r[${c}] to NULL`});break}case C.OP_EMIT_ROW:{const c=t[s++];A.push({addr:r,opcode:"OP_EMIT_ROW",p1:`c[${c}]`,p2:"",p3:"",comment:"Row passed all filters -> emit to Output Result Buffer"});break}case C.OP_RESULT_ROW:{const c=t[s++],l=t[s++];A.push({addr:r,opcode:"OP_RESULT_ROW",p1:`r[${c}]`,p2:`cols=${l}`,p3:"",comment:`Serialize registers r[${c}..${c+l-1}] to Result Buffer`});break}case C.OP_OFFSET:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_OFFSET",p1:`r[${c}]`,p2:o(l),p3:"",comment:`If r[${c}] > 0 -> decrement and skip row to ${o(l)}`});break}case C.OP_LIMIT:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_LIMIT",p1:`r[${c}]`,p2:o(l),p3:"",comment:`If r[${c}] <= 1 -> halt to ${o(l)}, else decrement`});break}case C.OP_CALL_UDF:{const c=n.getUint16(s,!0);s+=2;const l=t[s++],u=t[s++],g=t[s++];A.push({addr:r,opcode:"OP_CALL_UDF",p1:`udf#${c}`,p2:`r[${l}..${l+u-1}]`,p3:`r[${g}]`,comment:`Call UDF #${c} with ${u} args -> r[${g}]`});break}case C.OP_STR_LOWER:case C.OP_STR_UPPER:case C.OP_STR_LENGTH:case C.OP_STR_TRIM:case C.OP_MATH_ABS:case C.OP_MATH_ROUND:case C.OP_MATH_FLOOR:case C.OP_MATH_CEIL:{const c={[C.OP_STR_LOWER]:"OP_STR_LOWER",[C.OP_STR_UPPER]:"OP_STR_UPPER",[C.OP_STR_LENGTH]:"OP_STR_LENGTH",[C.OP_STR_TRIM]:"OP_STR_TRIM",[C.OP_MATH_ABS]:"OP_MATH_ABS",[C.OP_MATH_ROUND]:"OP_MATH_ROUND",[C.OP_MATH_FLOOR]:"OP_MATH_FLOOR",[C.OP_MATH_CEIL]:"OP_MATH_CEIL"},l=t[s++],u=t[s++];A.push({addr:r,opcode:c[a],p1:`r[${l}]`,p2:`r[${u}]`,p3:"",comment:`${c[a]}: r[${u}] = ${c[a].toLowerCase()}(r[${l}])`});break}case C.OP_STR_SUBSTR:{const c=t[s++],l=t[s++],u=t[s++],g=t[s++];A.push({addr:r,opcode:"OP_STR_SUBSTR",p1:`r[${c}]`,p2:`start=r[${l}], len=r[${u}]`,p3:`r[${g}]`,comment:`Extract substring from r[${c}] into r[${g}]`});break}case C.OP_ADD:case C.OP_SUB:case C.OP_MUL:case C.OP_DIV:case C.OP_MOD:{const c={[C.OP_ADD]:"OP_ADD",[C.OP_SUB]:"OP_SUB",[C.OP_MUL]:"OP_MUL",[C.OP_DIV]:"OP_DIV",[C.OP_MOD]:"OP_MOD"},l=t[s++],u=t[s++],g=t[s++];A.push({addr:r,opcode:c[a],p1:`r[${l}]`,p2:`r[${u}]`,p3:`r[${g}]`,comment:`${c[a]}: r[${g}] = r[${l}] ${c[a].replace("OP_","")} r[${u}]`});break}case C.OP_STR_CONCAT:case C.OP_COALESCE:{const c={[C.OP_STR_CONCAT]:"OP_STR_CONCAT",[C.OP_COALESCE]:"OP_COALESCE"},l=t[s++],u=t[s++],g=t[s++];A.push({addr:r,opcode:c[a],p1:`r[${l}..${l+u-1}]`,p2:`count=${u}`,p3:`r[${g}]`,comment:`${c[a]}: r[${g}]`});break}case C.OP_COPY:{const c=t[s++],l=t[s++];A.push({addr:r,opcode:"OP_COPY",p1:`r[${c}]`,p2:`r[${l}]`,p3:"",comment:`Copy r[${c}] to r[${l}]`});break}case C.OP_SORTER_OPEN:{const c=t[s++],l=t[s++];A.push({addr:r,opcode:"OP_SORTER_OPEN",p1:`s[${c}]`,p2:`keyInfo=${l}`,p3:"",comment:`Open sorter ${c} with keyInfo ${l}`});break}case C.OP_SORTER_INSERT:{const c=t[s++],l=t[s++],u=t[s++],g=t[s++];A.push({addr:r,opcode:"OP_SORTER_INSERT",p1:`s[${c}]`,p2:`r[${l}..+${u}]`,p3:`c[${g}]`,comment:`Insert row from cursor ${g} into sorter ${c}`});break}case C.OP_SORTER_SORT:{const c=t[s++];A.push({addr:r,opcode:"OP_SORTER_SORT",p1:`s[${c}]`,p2:"",p3:"",comment:`Sort entries in sorter ${c}`});break}case C.OP_SORTER_NEXT:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_SORTER_NEXT",p1:`s[${c}]`,p2:o(l),p3:"",comment:`Emit next sorted row from sorter ${c}; jump to ${o(l)} while more rows`});break}case C.OP_AGG_INIT:{const c=t[s++],l=t[s++],u=t[s++],g=t[s++];A.push({addr:r,opcode:"OP_AGG_INIT",p1:`agg[${c}]`,p2:`keys=r[${l}..+${u}]`,p3:`mode=${g===0?"hash":"stream"}`,comment:`Initialize aggregator ${c} (${g===0?"hash table":"stream"})`});break}case C.OP_AGG_STEP:{const c=t[s++],l=t[s++],u=t[s++],g=t[s++],E=t[s++],h=E&7,B=E>>3,Q=["COUNT","SUM","AVG","MIN","MAX"];A.push({addr:r,opcode:"OP_AGG_STEP",p1:`agg[${c}]`,p2:`val=${g===255?"*":`r[${g}]`}`,p3:Q[h]??`${h}`,comment:`Update accumulator ${Q[h]??h} (slot ${B}) for group r[${l}..+${u}]`});break}case C.OP_AGG_NEXT:{const c=t[s++],l=t[s++],u=t[s++],g=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_AGG_NEXT",p1:`agg[${c}]`,p2:`out_keys=r[${l}], out_acc=r[${u}]`,p3:o(g),comment:`Iterate next group bucket; jump to ${o(g)}`});break}case C.OP_AGG_FINAL:{const c=t[s++],l=t[s++],u=t[s++],g=t[s++],E=g&7,h=g>>3,B=["COUNT","SUM","AVG","MIN","MAX"];A.push({addr:r,opcode:"OP_AGG_FINAL",p1:`sum=r[${c}], cnt=r[${l}]`,p2:`r[${u}]`,p3:B[E]??`${E}`,comment:`Finalize ${B[E]??E} (slot ${h}) into r[${u}]`});break}case C.OP_REG_IS_NULL:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_REG_IS_NULL",p1:`r[${c}]`,p2:o(l),p3:"",comment:`Jump to ${o(l)} if r[${c}] is NULL`});break}case C.OP_REG_IS_NOT_NULL:{const c=t[s++],l=n.getUint16(s,!0);s+=2,A.push({addr:r,opcode:"OP_REG_IS_NOT_NULL",p1:`r[${c}]`,p2:o(l),p3:"",comment:`Jump to ${o(l)} if r[${c}] is NOT NULL`});break}default:A.push({addr:r,opcode:`OP_UNKNOWN(0x${a.toString(16)})`,p1:"",p2:"",p3:"",comment:"Unknown opcode"});break}}return A}function gc(t){const e=(s,i)=>s.padEnd(i," "),A=s=>`0x${s.toString(16).padStart(4,"0")}`;let n=`${e("ADDR",8)} ${e("OPCODE",18)} ${e("P1",12)} ${e("P2",20)} ${e("P3",10)} COMMENT
2
+ `;n+="-".repeat(95)+`
3
+ `;for(const s of t)n+=`${e(A(s.addr),8)} ${e(s.opcode,18)} ${e(s.p1,12)} ${e(s.p2,20)} ${e(s.p3,10)} ${s.comment}
4
+ `;return n}const Ec=new WeakMap;let hg=1;function fg(t){const e=t==null?void 0:t.instanceId;if(typeof e=="string"&&e.length>0)return e;let A=Ec.get(t);return A===void 0&&(A=hg++,Ec.set(t,A)),`db_${A}`}let ln=null;const Xo=[];function li(t){Xo.push(ln),ln=t}function ui(){ln=Xo.length>0?Xo.pop():null}function Jo(){return ln}function Wo(t,e){return e?new Promise((A,n)=>{t.then(s=>{queueMicrotask(()=>li(e)),A(s),queueMicrotask(()=>ui())},s=>{queueMicrotask(()=>li(e)),n(s),queueMicrotask(()=>ui())})}):t}function xA(t,e){if(!ln||!t)return;const A=Array.isArray(e)?e:[e];ln.record(t,A)}function Ic(t,e={}){let A={data:e.initialData,isLoading:!0,error:null,lastUpdated:null,lastEvent:null};const n=new Set;let s=[],i="",o=0,r=null,a=!1,c=!1,l=null,u;const g=e.tables!==void 0,E=()=>!e.tables||e.tables==="*"?["*"]:(Array.isArray(e.tables)?e.tables:[e.tables]).map(m=>m.toLowerCase()),h=()=>{if(!a)for(const N of n)try{N(A)}catch{}},B=()=>{for(const N of s)try{N()}catch{}s=[],i=""},Q=N=>{if(!a){if(u=N,e.debounceMs&&e.debounceMs>0){l!==null&&clearTimeout(l),l=setTimeout(()=>{l=null;const m=u;u=void 0,p(m)},e.debounceMs);return}c||(c=!0,queueMicrotask(()=>{if(!c||a)return;c=!1;const m=u;u=void 0,p(m)}))}},d=N=>{if(a)return;if(N.size===0&&e.db&&typeof e.db.subscribe=="function"&&N.set(e.db,new Set),g){const F=E();for(const[D]of N)N.set(D,new Set(F))}const m=[];for(const[F,D]of N){const O=fg(F),w=D.has("*")?["*"]:Array.from(D).sort();m.push(`${O}:${w.join(",")}`)}m.sort();const T=m.join("|");if(!(T===i&&s.length>0)){B(),i=T;for(const[F,D]of N){if(!F||typeof F.subscribe!="function")continue;const O=D.has("*")||D.size===0?"*":Array.from(D),w=F.subscribe(O,P=>{Q(P)});s.push(w)}}},p=N=>{if(a)return Promise.resolve(A.data);c&&(c=!1),l!==null&&(clearTimeout(l),l=null),N===void 0&&u!==void 0&&(N=u,u=void 0);const m=++o,T=(async()=>{const F=new Map,D={record(w,P){if(!w||typeof w.subscribe!="function")return;let I=F.get(w);if(I||(I=new Set,F.set(w,I)),!g)for(const b of P)b&&b!=="__subquery__"&&I.add(b.toLowerCase())}},O=g&&!!(e.db&&typeof e.db.subscribe=="function");try{let w;if(O)w=t();else{li(D);try{w=t()}finally{ui()}}let P;if(At(w)){const I=w;O||D.record(I.getDb(),I.getReferencedTables()),P=await I.toArray()}else{const I=await w;if(At(I)){const b=I;O||D.record(b.getDb(),b.getReferencedTables()),P=await b.toArray()}else P=I}return a?A.data:m!==o?r?await r:A.data:(d(F),A={data:P,isLoading:!1,error:null,lastUpdated:Date.now(),lastEvent:N??A.lastEvent},h(),P)}catch(w){if(a)return A.data;if(m!==o)return r?await r:A.data;(F.size>0||e.db)&&d(F);const P=w instanceof Error?w:new Error(String(w));if(A={...A,isLoading:!1,error:P},e.onError)try{e.onError(P)}catch{}return h(),A.data}})();return r=T,T};e.autoStart!==!1&&p();const U={getState(){return A},subscribe(N){return a?()=>{}:(n.add(N),N(A),()=>{n.delete(N)})},onData(N){return U.subscribe(m=>{!m.isLoading&&!m.error&&m.data!==void 0&&N(m.data,m)})},refresh(){return p()},destroy(){a||(a=!0,o++,l!==null&&(clearTimeout(l),l=null),B(),n.clear())},[Symbol.asyncIterator](){const N=[];let m=null,T=null,F=null,D=!1;const O=I=>{if(!D)if(m){const b=m;m=null,T=null,b({value:I,done:!1})}else N.push({value:I})},w=I=>{if(!D)if(T){const b=T;m=null,T=null,b(I)}else N.push({error:I})};F=U.subscribe(I=>{I.isLoading||(I.error?w(I.error):I.data!==void 0&&O(I.data))});const P=()=>{if(!D&&(D=!0,F&&(F(),F=null),U.destroy(),m)){const I=m;m=null,T=null,I({value:void 0,done:!0})}};return{next(){if(N.length>0){const I=N.shift();return I.error?Promise.reject(I.error):I.done?Promise.resolve({value:void 0,done:!0}):Promise.resolve({value:I.value,done:!1})}return D||a?Promise.resolve({value:void 0,done:!0}):new Promise((I,b)=>{m=I,T=b})},return(){return P(),Promise.resolve({value:void 0,done:!0})},throw(I){return P(),Promise.reject(I)},[Symbol.asyncIterator](){return this}}}};return U}function gi(t,e,A){const n=typeof e=="function",i=Ic(t,n?A:e);return n&&i.onData(e),i}function At(t){return t instanceof oe||typeof t=="object"&&t!==null&&typeof t.toArray=="function"&&typeof t.where=="function"&&typeof t.select=="function"&&"filters"in t}function Vt(t){if(t instanceof dt||typeof t=="object"&&t!==null&&"node"in t)return{expr:t.node};if(typeof t=="object"&&t!==null&&"type"in t)return{expr:t};if(typeof t=="string"){const e=t.trim();return e.includes("(")||e.includes("+")||e.includes("-")||e.includes("*")||e.includes("/")||e.includes("%")?{expr:Rt(e),colName:e}:{colName:e}}return{}}function Ko(t){const e=[];function A(n){if(n.type==="fn"){const s=n.name.toLowerCase();if(eA(s)){const i=n.args[0],o=i&&i.type==="col"&&i.name!=="*"?i.name:void 0;e.push({func:s,colName:o})}for(const i of n.args)A(i)}else n.type==="binary"&&(A(n.left),A(n.right))}return A(t),e}function Ei(t){if(!t)return[];if(Array.isArray(t)){const e=[];for(const A of t)e.push(...Ei(A));return e}if(At(t)){const e=t.getSelectFields(),A=t.getAggregates();return[{alias:e.length>0?e[0].alias:A.length>0?A[0].alias??(A[0].colName?`${A[0].func}_${A[0].colName}`:A[0].func):"subquery",subquery:t}]}if(t instanceof dt||typeof t=="object"&&t!==null&&"node"in t){const e=t.node;return[{alias:le(e),expr:e,sourceCol:e.type==="col"&&e.name!=="*"?e.name:void 0,fn:e.type==="fn"?e.name:void 0}]}if(typeof t=="string"){const e=t.trim();if(!e)return[];const A=ei(e);return[{alias:A.alias,expr:A.expr,sourceCol:A.expr.type==="col"&&A.expr.name!=="*"?A.expr.name:void 0,fn:A.expr.type==="fn"?A.expr.name:void 0}]}if(typeof t=="object"&&t!==null){if("subquery"in t&&"as"in t&&At(t.subquery)&&typeof t.as=="string")return[{alias:t.as,subquery:t.subquery}];if("expr"in t&&"alias"in t){const A=t.expr;return[{alias:t.alias,expr:A,sourceCol:A.type==="col"&&A.name!=="*"?A.name:void 0,fn:A.type==="fn"?A.name:void 0}]}if("col"in t&&"as"in t&&typeof t.col=="string"&&typeof t.as=="string"){const A=ei(`${t.col} as ${t.as}`);return[{sourceCol:t.col==="*"?void 0:t.col,alias:t.as,expr:A.expr,fn:A.expr.type==="fn"?A.expr.name:void 0}]}const e=[];for(const[A,n]of Object.entries(t))if(typeof n=="string"){const s=ei(`${A} as ${n}`);e.push({sourceCol:A==="*"?void 0:A,alias:n,expr:s.expr,fn:s.expr.type==="fn"?s.expr.name:void 0})}else if(At(n))e.push({alias:A,subquery:n});else if(typeof n=="object"&&n!==null&&"subquery"in n&&At(n.subquery))e.push({alias:A,subquery:n.subquery});else if(n instanceof dt||typeof n=="object"&&n!==null&&"node"in n){const s=n.node;e.push({alias:A,expr:s,sourceCol:s.type==="col"&&s.name!=="*"?s.name:void 0,fn:s.type==="fn"?s.name:void 0})}else if(typeof n=="object"&&n!==null&&"type"in n){const s=n;e.push({alias:A,expr:s,sourceCol:s.type==="col"&&s.name!=="*"?s.name:void 0,fn:s.type==="fn"?s.name:void 0})}return e}return[]}function Dt(t){if(!At(t))if(typeof t=="string"){const e=t.trim();if(eA(e))throw new Bs(e);if(e.includes("("))try{const A=Rt(e);YA(A,"where")}catch(A){if(A instanceof Bs)throw A}}else t instanceof dt||typeof t=="object"&&t!==null&&"node"in t?YA(t.node,"where"):typeof t=="object"&&t!==null&&"type"in t&&YA(t,"where")}class oe{constructor(e,A){G(this,"db");G(this,"tableName");G(this,"sourceSubquery");G(this,"filters",[]);G(this,"selectFields",[]);G(this,"limitCount",null);G(this,"offsetCount",null);G(this,"sortCol",null);G(this,"sortDir","asc");G(this,"orderKeys",[]);G(this,"groupCols",[]);G(this,"groupKeys",[]);G(this,"aggExprs",[]);G(this,"havingFilters",[]);G(this,"joins",[]);G(this,"planner");this.db=e,At(A)?(this.sourceSubquery=A,this.tableName="__subquery__",this.assertSubqueryDepth(),xA(this.db,A.getReferencedTables())):(this.tableName=A,xA(this.db,A))}withPlanner(e){return this.planner=e,this}as(e){return{subquery:this,as:e}}getDb(){return this.db}getTableName(){return this.tableName}getReferencedTables(){const e=new Set,A=n=>{if(!n)return;n.tableName&&n.tableName!=="__subquery__"&&e.add(n.tableName),n.sourceSubquery&&A(n.sourceSubquery);for(const i of n.joins)i.table&&e.add(i.table);for(const i of n.selectFields)i.subquery&&At(i.subquery)&&A(i.subquery);const s=i=>{if(i&&(i.subquery&&At(i.subquery)&&A(i.subquery),i.value&&At(i.value)&&A(i.value),i.child&&s(i.child),i.children))for(const o of i.children)s(o)};for(const i of n.filters)s(i);for(const i of n.havingFilters)s(i)};return A(this),Array.from(e)}getSourceSubquery(){return this.sourceSubquery}getAggregates(){return this.aggExprs}getFilterSubqueryDepth(e){let A=0;if(e.subquery&&At(e.subquery)&&(A=Math.max(A,1+e.subquery.getMaxSubqueryDepth())),e.value&&At(e.value)&&(A=Math.max(A,1+e.value.getMaxSubqueryDepth())),e.child&&(A=Math.max(A,this.getFilterSubqueryDepth(e.child))),e.children)for(const n of e.children)A=Math.max(A,this.getFilterSubqueryDepth(n));return A}getMaxSubqueryDepth(){let e=0;this.sourceSubquery&&(e=Math.max(e,1+this.sourceSubquery.getMaxSubqueryDepth()));for(const A of this.selectFields)A.subquery&&(e=Math.max(e,1+A.subquery.getMaxSubqueryDepth()));for(const A of this.filters)e=Math.max(e,this.getFilterSubqueryDepth(A));for(const A of this.havingFilters)e=Math.max(e,this.getFilterSubqueryDepth(A));return e}assertSubqueryDepth(){const e=this.getMaxSubqueryDepth();if(e>7)throw new Qr(e,7)}join(e,A,n,s){const i=s!==void 0?n:"=",o=s!==void 0?s:n;return this.joins.push({type:"inner",table:e,leftCol:A,op:i,rightCol:o}),xA(this.db,e),this}innerJoin(e,A,n,s){return this.join(e,A,n,s)}leftJoin(e,A,n,s){const i=s!==void 0?n:"=",o=s!==void 0?s:n;return this.joins.push({type:"left",table:e,leftCol:A,op:i,rightCol:o}),xA(this.db,e),this}getJoins(){return this.joins}where(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootFilter();i&&(this.filters.push(i),this.assertSubqueryDepth())}else if(A===void 0&&n===void 0){if(typeof e=="string"){Dt(e);const s=Rt(e);this.filters.push({type:"expr",expr:s})}else if(e instanceof dt||typeof e=="object"&&e!==null&&"node"in e)Dt(e),this.filters.push({type:"expr",expr:e.node});else if(typeof e=="object"&&e!==null&&"type"in e)Dt(e),this.filters.push({type:"expr",expr:e});else if(typeof e=="object"&&e!==null)for(const[s,i]of Object.entries(e))this.where(s,"=",i)}else{if(Dt(e),Dt(n),typeof A=="string"&&A.trim().toLowerCase()==="in")return this.whereIn(e,n);if(typeof A=="string"&&A.trim().toLowerCase()==="not in")return this.whereNotIn(e,n);const s=Vt(e);At(n)?(this.filters.push({type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:n}),this.assertSubqueryDepth()):this.filters.push({type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n})}return this}orWhere(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootFilter();i&&(this.addOrFilter(i),this.assertSubqueryDepth())}else if(A===void 0&&n===void 0)if(typeof e=="string"){Dt(e);const s=Rt(e);this.addOrFilter({type:"expr",expr:s})}else e instanceof dt||typeof e=="object"&&e!==null&&"node"in e?(Dt(e),this.addOrFilter({type:"expr",expr:e.node})):typeof e=="object"&&e!==null&&"type"in e&&(Dt(e),this.addOrFilter({type:"expr",expr:e}));else{if(Dt(e),Dt(n),typeof A=="string"&&A.trim().toLowerCase()==="in")return this.orWhereIn(e,n);if(typeof A=="string"&&A.trim().toLowerCase()==="not in")return this.orWhereNotIn(e,n);const s=Vt(e);At(n)?(this.addOrFilter({type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:n}),this.assertSubqueryDepth()):this.addOrFilter({type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n})}return this}whereNot(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootFilter();i&&(this.filters.push({type:"not",child:i}),this.assertSubqueryDepth())}else if(A===void 0&&n===void 0)if(typeof e=="string"){Dt(e);const s=Rt(e);this.filters.push({type:"not",child:{type:"expr",expr:s}})}else e instanceof dt||typeof e=="object"&&e!==null&&"node"in e?(Dt(e),this.filters.push({type:"not",child:{type:"expr",expr:e.node}})):typeof e=="object"&&e!==null&&"type"in e&&(Dt(e),this.filters.push({type:"not",child:{type:"expr",expr:e}}));else{if(Dt(e),Dt(n),typeof A=="string"&&A.trim().toLowerCase()==="in")return this.whereNotIn(e,n);if(typeof A=="string"&&A.trim().toLowerCase()==="not in")return this.whereIn(e,n);const s=Vt(e);this.filters.push({type:"not",child:{type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:At(n)?n:void 0}}),At(n)&&this.assertSubqueryDepth()}return this}orWhereNot(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootFilter();i&&(this.addOrFilter({type:"not",child:i}),this.assertSubqueryDepth())}else if(A===void 0&&n===void 0)if(typeof e=="string"){Dt(e);const s=Rt(e);this.addOrFilter({type:"not",child:{type:"expr",expr:s}})}else e instanceof dt||typeof e=="object"&&e!==null&&"node"in e?(Dt(e),this.addOrFilter({type:"not",child:{type:"expr",expr:e.node}})):typeof e=="object"&&e!==null&&"type"in e&&(Dt(e),this.addOrFilter({type:"not",child:{type:"expr",expr:e}}));else{if(Dt(e),Dt(n),typeof A=="string"&&A.trim().toLowerCase()==="in")return this.orWhereNotIn(e,n);if(typeof A=="string"&&A.trim().toLowerCase()==="not in")return this.orWhereIn(e,n);const s=Vt(e);this.addOrFilter({type:"not",child:{type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:At(n)?n:void 0}}),At(n)&&this.assertSubqueryDepth()}return this}whereRaw(e){return this.where(e)}orWhereRaw(e){return this.orWhere(e)}whereNull(e){return Dt(e),this.filters.push({type:"null",colName:e,isNull:!0}),this}whereNotNull(e){return Dt(e),this.filters.push({type:"null",colName:e,isNull:!1}),this}orWhereNull(e){return Dt(e),this.addOrFilter({type:"null",colName:e,isNull:!0}),this}orWhereNotNull(e){return Dt(e),this.addOrFilter({type:"null",colName:e,isNull:!1}),this}whereLike(e,A){return this.where(e,"like",A)}whereNotLike(e,A){return this.where(e,"not like",A)}whereStartsWith(e,A){return this.where(e,"starts_with",A)}whereEndsWith(e,A){return this.where(e,"ends_with",A)}whereContains(e,A){return this.where(e,"contains",A)}orWhereLike(e,A){return this.orWhere(e,"like",A)}orWhereNotLike(e,A){return this.orWhere(e,"not like",A)}orWhereStartsWith(e,A){return this.orWhere(e,"starts_with",A)}orWhereEndsWith(e,A){return this.orWhere(e,"ends_with",A)}orWhereContains(e,A){return this.orWhere(e,"contains",A)}whereIn(e,A){Dt(e);const n=Vt(e);if(At(A))return this.filters.push({type:"in",colName:n.colName,expr:n.expr,subquery:A,notIn:!1}),this.assertSubqueryDepth(),this;if(!Array.isArray(A))throw new TypeError("WebDB: whereIn requires an array of values");if(A.length>ae)throw new RangeError(`WebDB: whereIn list exceeds maximum limit of ${ae} elements`);return this.filters.push({type:"in",colName:n.colName,expr:n.expr,values:A,notIn:!1}),this}whereNotIn(e,A){Dt(e);const n=Vt(e);if(At(A))return this.filters.push({type:"in",colName:n.colName,expr:n.expr,subquery:A,notIn:!0}),this.assertSubqueryDepth(),this;if(!Array.isArray(A))throw new TypeError("WebDB: whereNotIn requires an array of values");if(A.length>ae)throw new RangeError(`WebDB: whereNotIn list exceeds maximum limit of ${ae} elements`);return this.filters.push({type:"in",colName:n.colName,expr:n.expr,values:A,notIn:!0}),this}orWhereIn(e,A){Dt(e);const n=Vt(e);if(At(A))return this.addOrFilter({type:"in",colName:n.colName,expr:n.expr,subquery:A,notIn:!1}),this.assertSubqueryDepth(),this;if(!Array.isArray(A))throw new TypeError("WebDB: orWhereIn requires an array of values");if(A.length>ae)throw new RangeError(`WebDB: orWhereIn list exceeds maximum limit of ${ae} elements`);return this.addOrFilter({type:"in",colName:n.colName,expr:n.expr,values:A,notIn:!1}),this}orWhereNotIn(e,A){Dt(e);const n=Vt(e);if(At(A))return this.addOrFilter({type:"in",colName:n.colName,expr:n.expr,subquery:A,notIn:!0}),this.assertSubqueryDepth(),this;if(!Array.isArray(A))throw new TypeError("WebDB: orWhereNotIn requires an array of values");if(A.length>ae)throw new RangeError(`WebDB: orWhereNotIn list exceeds maximum limit of ${ae} elements`);return this.addOrFilter({type:"in",colName:n.colName,expr:n.expr,values:A,notIn:!0}),this}whereExists(e){if(!At(e))throw new TypeError("WebDB: whereExists requires a QueryBuilder subquery");return this.filters.push({type:"exists",subquery:e,notExists:!1}),this.assertSubqueryDepth(),this}whereNotExists(e){if(!At(e))throw new TypeError("WebDB: whereNotExists requires a QueryBuilder subquery");return this.filters.push({type:"exists",subquery:e,notExists:!0}),this.assertSubqueryDepth(),this}orWhereExists(e){if(!At(e))throw new TypeError("WebDB: orWhereExists requires a QueryBuilder subquery");return this.addOrFilter({type:"exists",subquery:e,notExists:!1}),this.assertSubqueryDepth(),this}orWhereNotExists(e){if(!At(e))throw new TypeError("WebDB: orWhereNotExists requires a QueryBuilder subquery");return this.addOrFilter({type:"exists",subquery:e,notExists:!0}),this.assertSubqueryDepth(),this}getFilters(){return this.filters}getRootFilter(){return this.filters.length===0?null:this.filters.length===1?this.filters[0]:{type:"and",children:[...this.filters]}}addOrFilter(e){if(this.filters.length===0){this.filters.push(e);return}if(this.filters.length===1&&this.filters[0].type==="or"&&this.filters[0].children){this.filters[0].children.push(e);return}let A;this.filters.length===1?A=this.filters[0]:A={type:"and",children:[...this.filters]},this.filters=[{type:"or",children:[A,e]}]}limit(e){return this.limitCount=e,this}offset(e){return this.offsetCount=e,this}orderBy(e,A="asc",n){if(typeof e=="string"){this.sortCol=e,this.sortDir=A;const s=Vt(e);this.orderKeys.push({colName:s.colName??e,expr:s.expr,direction:A,nullOrder:n})}else if(e instanceof dt||typeof e=="object"&&e!==null&&"node"in e)this.orderKeys.push({expr:e.node,direction:A,nullOrder:n});else if(typeof e=="object"&&e!==null&&"type"in e)this.orderKeys.push({expr:e,direction:A,nullOrder:n});else if(Array.isArray(e))for(const s of e)if(typeof s=="string"){const i=Vt(s);this.orderKeys.push({colName:i.colName??s,expr:i.expr,direction:"asc"})}else this.orderKeys.push(s);else this.orderKeys.push(e);return this}groupBy(...e){for(const A of e)if(Array.isArray(A))for(const n of A)this.addGroupByItem(n);else this.addGroupByItem(A);return this}addGroupByItem(e){if(e instanceof dt||typeof e=="object"&&e!==null&&"node"in e)this.groupKeys.push({expr:e.node}),this.groupCols.push(le(e.node));else if(typeof e=="object"&&e!==null&&"type"in e)this.groupKeys.push({expr:e}),this.groupCols.push(le(e));else if(typeof e=="string"){const A=Vt(e);this.groupKeys.push({colName:A.colName??e,expr:A.expr}),this.groupCols.push(e)}}registerAggregatesFromFilter(e){const A=(n,s)=>{if(s){const i=Ko(s);for(const o of i)this.aggExprs.some(a=>a.func===o.func&&(a.colName===o.colName||a.colName===void 0&&o.colName===void 0))||(o.fromHaving=!0,this.aggExprs.push(o))}else if(n&&n.includes("("))try{const i=Rt(n),o=Ko(i);for(const r of o)this.aggExprs.some(c=>c.func===r.func&&(c.colName===r.colName||c.colName===void 0&&r.colName===void 0))||(r.fromHaving=!0,this.aggExprs.push(r))}catch{}};if(e.type==="cmp")A(e.colName,e.expr);else if(e.type==="expr"&&e.expr)A(void 0,e.expr);else if(e.type==="null")A(e.colName,e.expr);else if(e.type==="not"&&e.child)this.registerAggregatesFromFilter(e.child);else if((e.type==="and"||e.type==="or")&&e.children)for(const n of e.children)this.registerAggregatesFromFilter(n)}having(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootHavingFilter();i&&(this.havingFilters.push(i),this.registerAggregatesFromFilter(i),this.assertSubqueryDepth())}else if(A===void 0&&n===void 0){if(typeof e=="string"){const i={type:"expr",expr:Rt(e)};this.havingFilters.push(i),this.registerAggregatesFromFilter(i)}else if(e instanceof dt||typeof e=="object"&&e!==null&&"node"in e){const s={type:"expr",expr:e.node};this.havingFilters.push(s),this.registerAggregatesFromFilter(s)}else if(typeof e=="object"&&e!==null&&"type"in e){const s={type:"expr",expr:e};this.havingFilters.push(s),this.registerAggregatesFromFilter(s)}}else{const s=Vt(e);if(typeof A=="string"&&(A.trim().toLowerCase()==="in"||A.trim().toLowerCase()==="not in")){const o=A.trim().toLowerCase()==="not in",r=At(n)?{type:"in",colName:s.colName,expr:s.expr,subquery:n,notIn:o}:{type:"in",colName:s.colName,expr:s.expr,values:n,notIn:o};return this.havingFilters.push(r),this.registerAggregatesFromFilter(r),this.assertSubqueryDepth(),this}const i={type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:At(n)?n:void 0};this.havingFilters.push(i),this.registerAggregatesFromFilter(i),At(n)&&this.assertSubqueryDepth()}return this}orHaving(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootHavingFilter();i&&(this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i),this.assertSubqueryDepth())}else if(A===void 0&&n===void 0){if(typeof e=="string"){const i={type:"expr",expr:Rt(e)};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i)}else if(e instanceof dt||typeof e=="object"&&e!==null&&"node"in e){const s={type:"expr",expr:e.node};this.addHavingOrFilter(s),this.registerAggregatesFromFilter(s)}else if(typeof e=="object"&&e!==null&&"type"in e){const s={type:"expr",expr:e};this.addHavingOrFilter(s),this.registerAggregatesFromFilter(s)}}else{const s=Vt(e),i={type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:At(n)?n:void 0};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i),At(n)&&this.assertSubqueryDepth()}return this}havingNot(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootHavingFilter();if(i){const o={type:"not",child:i};this.havingFilters.push(o),this.registerAggregatesFromFilter(o),this.assertSubqueryDepth()}}else if(A===void 0&&n===void 0){if(typeof e=="string"){const i={type:"not",child:{type:"expr",expr:Rt(e)}};this.havingFilters.push(i),this.registerAggregatesFromFilter(i)}else if(e instanceof dt||typeof e=="object"&&e!==null&&"node"in e){const s={type:"not",child:{type:"expr",expr:e.node}};this.havingFilters.push(s),this.registerAggregatesFromFilter(s)}else if(typeof e=="object"&&e!==null&&"type"in e){const s={type:"not",child:{type:"expr",expr:e}};this.havingFilters.push(s),this.registerAggregatesFromFilter(s)}}else{const s=Vt(e),i={type:"not",child:{type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:At(n)?n:void 0}};this.havingFilters.push(i),this.registerAggregatesFromFilter(i),At(n)&&this.assertSubqueryDepth()}return this}orHavingNot(e,A,n){if(typeof e=="function"){const s=new oe(this.db,this.tableName);e(s);const i=s.getRootHavingFilter();if(i){const o={type:"not",child:i};this.addHavingOrFilter(o),this.registerAggregatesFromFilter(o),this.assertSubqueryDepth()}}else if(A===void 0&&n===void 0){if(typeof e=="string"){const i={type:"not",child:{type:"expr",expr:Rt(e)}};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i)}else if(e instanceof dt||typeof e=="object"&&e!==null&&"node"in e){const s={type:"not",child:{type:"expr",expr:e.node}};this.addHavingOrFilter(s),this.registerAggregatesFromFilter(s)}else if(typeof e=="object"&&e!==null&&"type"in e){const s={type:"not",child:{type:"expr",expr:e}};this.addHavingOrFilter(s),this.registerAggregatesFromFilter(s)}}else{const s=Vt(e),i={type:"not",child:{type:"cmp",colName:s.colName,expr:s.expr,op:A,value:n,subquery:At(n)?n:void 0}};this.addHavingOrFilter(i),this.registerAggregatesFromFilter(i),At(n)&&this.assertSubqueryDepth()}return this}havingRaw(e){return this.having(e)}orHavingRaw(e){return this.orHaving(e)}havingNull(e){const A=Vt(e),n={type:"null",colName:A.colName,expr:A.expr,isNull:!0};return this.havingFilters.push(n),this.registerAggregatesFromFilter(n),this}havingNotNull(e){const A=Vt(e),n={type:"null",colName:A.colName,expr:A.expr,isNull:!1};return this.havingFilters.push(n),this.registerAggregatesFromFilter(n),this}orHavingNull(e){const A=Vt(e),n={type:"null",colName:A.colName,expr:A.expr,isNull:!0};return this.addHavingOrFilter(n),this.registerAggregatesFromFilter(n),this}orHavingNotNull(e){const A=Vt(e),n={type:"null",colName:A.colName,expr:A.expr,isNull:!1};return this.addHavingOrFilter(n),this.registerAggregatesFromFilter(n),this}getHavingFilters(){return this.havingFilters}getRootHavingFilter(){return this.havingFilters.length===0?null:this.havingFilters.length===1?this.havingFilters[0]:{type:"and",children:[...this.havingFilters]}}addHavingOrFilter(e){if(this.havingFilters.length===0){this.havingFilters.push(e);return}if(this.havingFilters.length===1&&this.havingFilters[0].type==="or"&&this.havingFilters[0].children){this.havingFilters[0].children.push(e);return}let A;this.havingFilters.length===1?A=this.havingFilters[0]:A={type:"and",children:[...this.havingFilters]},this.havingFilters=[{type:"or",children:[A,e]}]}aggregate(e){return this.aggExprs.push(...e),this}count(e,A){return this.aggExprs.push({func:"count",colName:e,alias:A}),this}sum(e,A){return this.aggExprs.push({func:"sum",colName:e,alias:A}),this}avg(e,A){return this.aggExprs.push({func:"avg",colName:e,alias:A}),this}min(e,A){return this.aggExprs.push({func:"min",colName:e,alias:A}),this}max(e,A){return this.aggExprs.push({func:"max",colName:e,alias:A}),this}select(e,...A){if(e===void 0)return this;const n=[];n.push(...Ei(e));for(const s of A)n.push(...Ei(s));this.selectFields.push(...n),this.assertSubqueryDepth();for(const s of n)if(s.expr&&s.expr.type==="fn"){const i=s.expr.name.toLowerCase();if(eA(i)&&!this.aggExprs.some(r=>r.alias===s.alias)){const r=s.expr.args[0],a=r&&r.type==="col"&&r.name!=="*"?r.name:void 0;this.aggExprs.push({func:i,colName:a,alias:s.alias})}}else if(typeof s.fn=="string"){const i=s.fn.toLowerCase();eA(i)&&(this.aggExprs.some(r=>r.alias===s.alias)||this.aggExprs.push({func:i,colName:s.sourceCol==="*"?void 0:s.sourceCol,alias:s.alias}))}return this}getSelectFields(){return this.selectFields}clone(e){const A=e??this.db,n=new oe(A,this.sourceSubquery?this.sourceSubquery.clone(A):this.tableName),s=i=>({...i,values:i.values?[...i.values]:void 0,subquery:i.subquery&&At(i.subquery)?i.subquery.clone(A):i.subquery,value:At(i.value)?i.value.clone(A):i.value,child:i.child?s(i.child):void 0,children:i.children?i.children.map(s):void 0});return n.filters=this.filters.map(s),n.selectFields=this.selectFields.map(i=>({...i,args:i.args?[...i.args]:void 0,subquery:i.subquery?i.subquery.clone(A):void 0})),n.limitCount=this.limitCount,n.offsetCount=this.offsetCount,n.sortCol=this.sortCol,n.sortDir=this.sortDir,n.orderKeys=this.orderKeys.map(i=>({...i})),n.groupCols=[...this.groupCols],n.groupKeys=this.groupKeys.map(i=>({...i})),n.aggExprs=this.aggExprs.map(i=>({...i})),n.havingFilters=this.havingFilters.map(s),n.joins=this.joins.map(i=>({...i})),n.planner=this.planner,n}cloneExprNode(e){return e.type==="binary"?{...e,left:this.cloneExprNode(e.left),right:this.cloneExprNode(e.right)}:e.type==="fn"?{...e,args:e.args.map(A=>this.cloneExprNode(A))}:{...e}}substituteExpr(e,A){if(e.type==="col"){if(e.name==="*")return e;const n=e.name.includes(".")?e.name.slice(e.name.lastIndexOf(".")+1):e.name,s=A.get(e.name)??A.get(n);return s?this.cloneExprNode(s):{...e}}return e.type==="binary"?{...e,left:this.substituteExpr(e.left,A),right:this.substituteExpr(e.right,A)}:e.type==="fn"?{...e,args:e.args.map(n=>this.substituteExpr(n,A))}:{...e}}substituteColOrExpr(e,A,n){if(A){const s=this.substituteExpr(A,n);return s.type==="col"?{colName:s.name,expr:s}:{expr:s}}if(e){const s=e.includes(".")?e.slice(e.lastIndexOf(".")+1):e,i=n.get(e)??n.get(s);if(i){const o=this.cloneExprNode(i);return o.type==="col"?{colName:o.name}:{expr:o}}return{colName:e}}return{colName:e,expr:A}}substituteFilter(e,A){var s;if(e.type==="and"||e.type==="or")return{...e,children:(s=e.children)==null?void 0:s.map(i=>this.substituteFilter(i,A))};if(e.type==="not"&&e.child)return{...e,child:this.substituteFilter(e.child,A)};if(e.type==="exists")return{...e};const n=this.substituteColOrExpr(e.colName,e.expr,A);return{...e,colName:n.colName,expr:n.expr}}tryFlatten(){var i;if(!this.sourceSubquery)return null;const e=this.sourceSubquery.tryFlatten()??this.sourceSubquery.clone(this.db);if(e.sourceSubquery||e.groupKeys.length>0||e.groupCols.length>0||e.aggExprs.length>0||e.havingFilters.length>0||e.limitCount!==null||e.offsetCount!==null||e.joins.length>0||e.selectFields.some(o=>o.subquery)||this.joins.length>0)return null;const A=new Map;for(const o of e.selectFields){const r=o.expr??{type:"col",name:o.sourceCol??o.alias};A.set(o.alias,r)}for(const o of this.aggExprs)if(o.colName){const r=o.colName.includes(".")?o.colName.slice(o.colName.lastIndexOf(".")+1):o.colName,a=A.get(o.colName)??A.get(r);if(a&&a.type!=="col")return null}for(const o of this.groupKeys){const r=this.substituteColOrExpr(o.colName,o.expr,A);if(!r.colName&&r.expr&&r.expr.type!=="col")return null}const n=new oe(this.db,e.tableName);n.planner=this.planner??e.planner,n.filters=[...e.filters.map(o=>({...o})),...this.filters.map(o=>this.substituteFilter(o,A))],this.selectFields.length>0?n.selectFields=this.selectFields.map(o=>{if(o.subquery)return{...o,subquery:o.subquery.clone(this.db)};const r=o.expr??{type:"col",name:o.sourceCol??o.alias},a=this.substituteExpr(r,A);return{alias:o.alias,expr:a,sourceCol:a.type==="col"&&a.name!=="*"?a.name:void 0,fn:a.type==="fn"?a.name:void 0}}):e.selectFields.length>0&&(n.selectFields=e.selectFields.map(o=>({...o})));const s=this.aggExprs.length>0||this.groupKeys.length>0||this.groupCols.length>0;return this.orderKeys.length>0?(n.orderKeys=this.orderKeys.map(o=>{const r=this.substituteColOrExpr(o.colName,o.expr,A);return{...o,colName:r.colName,expr:r.expr}}),(i=n.orderKeys[0])!=null&&i.colName&&(n.sortCol=n.orderKeys[0].colName,n.sortDir=n.orderKeys[0].direction??"asc")):!s&&e.orderKeys.length>0&&(n.orderKeys=e.orderKeys.map(o=>({...o})),n.sortCol=e.sortCol,n.sortDir=e.sortDir),n.groupKeys=this.groupKeys.map(o=>{const r=this.substituteColOrExpr(o.colName,o.expr,A);return{colName:r.colName,expr:r.expr}}),n.groupCols=this.groupCols.map(o=>{const r=A.get(o);return r&&r.type==="col"?r.name:o}),n.aggExprs=this.aggExprs.map(o=>{if(o.colName){const r=A.get(o.colName);if(r&&r.type==="col")return{...o,colName:r.name}}return{...o}}),n.havingFilters=this.havingFilters.map(o=>this.substituteFilter(o,A)),n.limitCount=this.limitCount,n.offsetCount=this.offsetCount,n}exprReferencesOuter(e,A){if(!e)return!1;if(e.type==="col"){if(e.name.includes(".")){const n=e.name.slice(0,e.name.indexOf("."));if(n==="outer"||!A.has(n))return!0}return!1}return e.type==="binary"?this.exprReferencesOuter(e.left,A)||this.exprReferencesOuter(e.right,A):e.type==="fn"?e.args.some(n=>this.exprReferencesOuter(n,A)):!1}filterIsCorrelatedWithOuter(e,A){var n;if(e.type==="and"||e.type==="or")return((n=e.children)==null?void 0:n.some(s=>this.filterIsCorrelatedWithOuter(s,A)))??!1;if(e.type==="not"&&e.child)return this.filterIsCorrelatedWithOuter(e.child,A);if(e.type==="cmp"&&(e.value instanceof dt||typeof e.value=="object"&&e.value!==null&&!At(e.value)&&("node"in e.value||"type"in e.value)||e.subquery&&At(e.subquery)&&this.isSubqueryCorrelated(e.subquery))||(e.type==="in"||e.type==="exists")&&e.subquery&&At(e.subquery)&&this.isSubqueryCorrelated(e.subquery))return!0;if(e.colName&&e.colName.includes(".")){const s=e.colName.slice(0,e.colName.indexOf("."));if(s==="outer"||!A.has(s))return!0}return!!this.exprReferencesOuter(e.expr,A)}isSubqueryCorrelated(e){const A=new Set([e.tableName]);for(const n of e.joins)A.add(n.table);return!!(e.filters.some(n=>this.filterIsCorrelatedWithOuter(n,A))||e.havingFilters.some(n=>this.filterIsCorrelatedWithOuter(n,A))||e.sourceSubquery&&this.isSubqueryCorrelated(e.sourceSubquery)||e.selectFields.some(n=>n.subquery&&this.isSubqueryCorrelated(n.subquery)))}filterContainsCorrelatedSubquery(e){var n;if(e.type==="and"||e.type==="or")return((n=e.children)==null?void 0:n.some(s=>this.filterContainsCorrelatedSubquery(s)))??!1;if(e.type==="not"&&e.child)return this.filterContainsCorrelatedSubquery(e.child);const A=e.subquery&&At(e.subquery)?e.subquery:At(e.value)?e.value:void 0;return!!(A&&this.isSubqueryCorrelated(A))}getRowValue(e,A){if(A in e)return e[A];if(A.startsWith("outer.")){const n=A.slice(6);if(n in e)return e[n]}if(A.includes(".")){const n=A.slice(A.lastIndexOf(".")+1);if(n in e)return e[n]}}bindOuterRowToExpr(e,A,n,s=!1){if(e.type==="col"){if(s)return{type:"literal",value:this.getRowValue(A,e.name)??null};if(e.name.includes(".")){const i=e.name.slice(0,e.name.indexOf("."));if(i==="outer"||!n.has(i))return{type:"literal",value:this.getRowValue(A,e.name)??null}}return{...e}}return e.type==="binary"?{...e,left:this.bindOuterRowToExpr(e.left,A,n,s),right:this.bindOuterRowToExpr(e.right,A,n,s)}:e.type==="fn"?{...e,args:e.args.map(i=>this.bindOuterRowToExpr(i,A,n,s))}:{...e}}bindOuterRowToFilter(e,A,n){var i;if(e.type==="and"||e.type==="or")return{...e,children:(i=e.children)==null?void 0:i.map(o=>this.bindOuterRowToFilter(o,A,n))};if(e.type==="not"&&e.child)return{...e,child:this.bindOuterRowToFilter(e.child,A,n)};let s=e.expr?this.bindOuterRowToExpr(e.expr,A,n,!1):void 0;if(e.type==="cmp"&&(e.value instanceof dt||typeof e.value=="object"&&e.value!==null&&!At(e.value)&&("node"in e.value||"type"in e.value))){const o="node"in e.value?e.value.node:e.value,r=this.bindOuterRowToExpr(o,A,n,!0);let a;typeof this.db.getUdf=="function"&&(a=l=>{var u,g;return(g=(u=this.db.getUdf(l))==null?void 0:u.def)==null?void 0:g.call});const c=ue(r,A,a);return c==null?{type:"in",values:[],notIn:!1}:{...e,expr:s,value:c}}return{...e,expr:s,subquery:e.subquery&&At(e.subquery)?this.bindOuterRowToSubquery(e.subquery,A):e.subquery}}bindOuterRowToSubquery(e,A){const n=e.clone(this.db),s=new Set([n.tableName]);for(const i of n.joins)s.add(i.table);return n.filters=n.filters.map(i=>this.bindOuterRowToFilter(i,A,s)),n.havingFilters=n.havingFilters.map(i=>this.bindOuterRowToFilter(i,A,s)),n.sourceSubquery&&(n.sourceSubquery=this.bindOuterRowToSubquery(n.sourceSubquery,A)),n}async evalScalarSubquery(e,A){const s=await(A&&this.isSubqueryCorrelated(e)?this.bindOuterRowToSubquery(e,A):e.clone(this.db)).first();if(!s)return null;const i=Object.keys(s);return i.length>0?s[i[0]]:null}async resolveUncorrelatedFilter(e){if(e.type==="and"||e.type==="or"){const A=[];for(const n of e.children??[])A.push(await this.resolveUncorrelatedFilter(n));return{...e,children:A}}if(e.type==="not"&&e.child)return{...e,child:await this.resolveUncorrelatedFilter(e.child)};if(e.type==="in"&&e.subquery&&At(e.subquery)&&!this.isSubqueryCorrelated(e.subquery)){const n=(await e.subquery.clone(this.db).toArray()).map(i=>{const o=Object.keys(i);return o.length>0?i[o[0]]:null});if(e.notIn&&n.some(i=>i==null))return{type:"in",colName:e.colName,expr:e.expr,values:[],notIn:!1};const s=n.filter(i=>i!=null);if(s.length>ae)throw new RangeError(`WebDB: whereIn subquery result exceeds maximum limit of ${ae} elements`);return{type:"in",colName:e.colName,expr:e.expr,values:s,notIn:e.notIn}}if(e.type==="exists"&&e.subquery&&At(e.subquery)&&!this.isSubqueryCorrelated(e.subquery)){const n=await e.subquery.clone(this.db).first()!==null,s=e.notExists?!n:n;return{type:"in",values:[],notIn:s}}if(e.type==="cmp"){const A=e.subquery&&At(e.subquery)?e.subquery:At(e.value)?e.value:void 0;if(A&&!this.isSubqueryCorrelated(A)){const n=await this.evalScalarSubquery(A);return n==null?{type:"in",colName:e.colName,expr:e.expr,values:[],notIn:!1}:{...e,value:n,subquery:void 0}}}return e}async resolveUncorrelatedFilters(e){const A=[];for(const n of e)A.push(await this.resolveUncorrelatedFilter(n));return A}evalFilterTargetValue(e,A,n){let s;if(typeof this.db.getUdf=="function"&&(s=i=>{var o,r;return(r=(o=this.db.getUdf(i))==null?void 0:o.def)==null?void 0:r.call}),A&&e[A]!==void 0)return e[A];if(n){const i=le(n);return e[i]!==void 0?e[i]:ue(n,e,s)}if(A)return this.getRowValue(e,A)}evalComparisonValues(e,A,n){if(e==null||n===null||n===void 0)return!1;const s=(A??"=").trim().toLowerCase();switch(s){case"=":return e===n;case"!=":case"<>":return e!==n;case"<":return e<n;case"<=":return e<=n;case">":return e>n;case">=":return e>=n;case"starts_with":return String(e).startsWith(String(n));case"ends_with":return String(e).endsWith(String(n));case"contains":return String(e).includes(String(n));case"like":case"not like":{const i=String(n).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,"."),r=new RegExp(`^${i}$`,"s").test(String(e));return s==="not like"?!r:r}default:return e===n}}async evalFilterOnRow(e,A){if(A.type==="and"){for(const n of A.children??[])if(!await this.evalFilterOnRow(e,n))return!1;return!0}if(A.type==="or"){for(const n of A.children??[])if(await this.evalFilterOnRow(e,n))return!0;return!1}if(A.type==="not"&&A.child){if(A.child.type==="cmp"||A.child.type==="in"){const n=this.evalFilterTargetValue(e,A.child.colName,A.child.expr);if(n==null)return!1}return!await this.evalFilterOnRow(e,A.child)}if(A.type==="null"){const n=this.evalFilterTargetValue(e,A.colName,A.expr),s=n==null;return A.isNull?s:!s}if(A.type==="expr"&&A.expr){let n;typeof this.db.getUdf=="function"&&(n=i=>{var o,r;return(r=(o=this.db.getUdf(i))==null?void 0:o.def)==null?void 0:r.call});const s=ue(A.expr,e,n);return!!(s&&s!==0)}if(A.type==="exists"){if(A.subquery&&At(A.subquery)){const i=await(this.isSubqueryCorrelated(A.subquery)?this.bindOuterRowToSubquery(A.subquery,e):A.subquery.clone(this.db)).first()!==null;return A.notExists?!i:i}return!!A.notExists}if(A.type==="in"){let n=A.values??[];if(A.subquery&&At(A.subquery)){const a=(await(this.isSubqueryCorrelated(A.subquery)?this.bindOuterRowToSubquery(A.subquery,e):A.subquery.clone(this.db)).toArray()).map(c=>{const l=Object.keys(c);return l.length>0?c[l[0]]:null});if(A.notIn&&a.some(c=>c==null))return!1;n=a.filter(c=>c!=null)}if(!A.colName&&!A.expr)return A.notIn?n.length===0:n.length>0;if(n.length===0)return!!A.notIn;const s=this.evalFilterTargetValue(e,A.colName,A.expr);if(s==null||A.notIn&&n.some(o=>o==null))return!1;const i=n.includes(s);return A.notIn?!i:i}if(A.type==="cmp"){const n=this.evalFilterTargetValue(e,A.colName,A.expr),s=A.subquery&&At(A.subquery)?A.subquery:At(A.value)?A.value:void 0,i=s?await this.evalScalarSubquery(s,e):A.value;return this.evalComparisonValues(n,A.op,i)}return!0}async evalFiltersOnRows(e,A){if(A.length===0)return e;const n=await this.resolveUncorrelatedFilters(A),s=[];for(const i of e){let o=!0;for(const r of n)if(!await this.evalFilterOnRow(i,r)){o=!1;break}o&&s.push(i)}return s}performInMemoryAggregation(e){const A=Math.max(this.groupKeys.length,this.groupCols.length),n=new Map;if(A===0)n.set("__global__",{keyRow:{},rows:e});else for(const r of e){const a=[],c={};for(let g=0;g<A;g++){const E=this.groupKeys[g],h=this.groupCols[g],B=this.evalFilterTargetValue(r,(E==null?void 0:E.colName)??h,E==null?void 0:E.expr);a.push(B);const Q=(E==null?void 0:E.colName)??(E!=null&&E.expr?le(E.expr):h);Q&&(c[Q]=B,Q.includes(".")&&(c[Q.slice(Q.lastIndexOf(".")+1)]=B)),h&&(c[h]=B)}const l=JSON.stringify(a);let u=n.get(l);u||(u={keyRow:c,rows:[]},n.set(l,u)),u.rows.push(r)}let s;typeof this.db.getUdf=="function"&&(s=r=>{var a,c;return(c=(a=this.db.getUdf(r))==null?void 0:a.def)==null?void 0:c.call});const i=(r,a,c,l)=>{const u=a.toLowerCase();if(u==="count"){if(!c&&(!l||l.type==="col"&&l.name==="*"))return r.length;let E=0;for(const h of r){const B=l?ue(l,h,s):this.getRowValue(h,c);B!=null&&E++}return E}const g=[];for(const E of r){const h=l?ue(l,E,s):c?this.getRowValue(E,c):null;h!=null&&g.push(h)}return g.length===0?null:u==="sum"?g.reduce((E,h)=>E+Number(h),0):u==="avg"?g.reduce((E,h)=>E+Number(h),0)/g.length:u==="min"?g.reduce((E,h)=>h<E?h:E,g[0]):u==="max"?g.reduce((E,h)=>h>E?h:E,g[0]):null},o=[];for(const{keyRow:r,rows:a}of n.values()){const c={...r};for(const l of this.aggExprs){const u=i(a,l.func,l.colName),g=l.alias??(l.colName?`${l.func}_${l.colName}`:l.func);c[g]=u,c[`${l.func}(${l.colName??"*"})`]=u,l.colName||(c[l.func]=u)}for(const l of this.selectFields)if(l.expr&&l.expr.type==="fn"&&eA(l.expr.name)){const u=l.expr.args[0],g=i(a,l.expr.name,u&&u.type==="col"&&u.name!=="*"?u.name:void 0,u);c[l.alias]=g,c[le(l.expr)]=g}o.push(c)}return o}async attachSelectSubqueries(e){const A=this.selectFields.filter(s=>s.subquery);if(A.length===0||e.length===0)return;const n=new Map;for(const s of A)if(s.subquery&&!this.isSubqueryCorrelated(s.subquery)){const i=await this.evalScalarSubquery(s.subquery);n.set(s,i)}for(const s of e)for(const i of A)n.has(i)?s[i.alias]=n.get(i):i.subquery&&(s[i.alias]=await this.evalScalarSubquery(i.subquery,s))}async executeMaterializedDerivedTable(){let e=await this.sourceSubquery.clone(this.db).toArray();for(const i of this.joins){const o=await new oe(this.db,i.table).toArray(),r=[];for(const a of e){let c=!1;const l=this.getRowValue(a,i.leftCol);for(const u of o){const g=this.getRowValue(u,i.rightCol);if(this.evalComparisonValues(l,i.op,g)){c=!0;const E={...a};for(const[h,B]of Object.entries(u))E[`${i.table}.${h}`]=B,h in E||(E[h]=B);r.push(E)}}!c&&i.type==="left"&&r.push({...a})}e=r}e=await this.evalFiltersOnRows(e,this.filters),(this.aggExprs.length>0||this.groupKeys.length>0||this.groupCols.length>0)&&(e=this.performInMemoryAggregation(e),this.havingFilters.length>0&&(e=await this.evalFiltersOnRows(e,this.havingFilters)));const n=this.selectFields.some(i=>i.subquery),s=n&&this.orderKeys.some(i=>this.selectFields.some(o=>o.subquery&&(o.alias===i.colName||o.alias===(i.expr?le(i.expr):void 0))));return s&&await this.attachSelectSubqueries(e),this.orderKeys.length>0&&(e=this.sortAggregatedRows(e)),this.offsetCount!==null&&this.offsetCount>0&&(e=e.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(e=e.slice(0,this.limitCount)),n&&!s&&await this.attachSelectSubqueries(e),this.selectFields.length>0&&(e=e.map(i=>this.projectRow(i))),e}projectRow(e){const A=this.aggExprs.filter(i=>!i.fromHaving),n=Object.keys(e);if(this.selectFields.length>0&&A.length===0&&n.length===this.selectFields.length&&this.selectFields.every(i=>i.alias in e))return e;const s={};for(const i of this.selectFields){const o=i.alias;if(e[o]!==void 0)s[o]=e[o];else if(i.expr&&e[le(i.expr)]!==void 0)s[o]=e[le(i.expr)];else if(i.sourceCol!==void 0&&e[i.sourceCol]!==void 0)s[o]=e[i.sourceCol];else if(i.expr){let r;typeof this.db.getUdf=="function"&&(r=a=>{var c,l;return(l=(c=this.db.getUdf(a))==null?void 0:c.def)==null?void 0:l.call}),s[o]=ue(i.expr,e,r)}else s[o]=null}for(const i of A){const o=i.alias??(i.colName?`${i.func}_${i.colName}`:i.func);!(o in s)&&e[o]!==void 0&&(s[o]=e[o])}return s}async explain(){if(this.assertSubqueryDepth(),this.sourceSubquery){const i=this.tryFlatten();if(i)return i.explain();const o=await this.sourceSubquery.clone(this.db).explain(),r=await this.resolveUncorrelatedFilters(this.filters);return{plan:{...o.plan,filters:[...o.plan.filters,...r],orderBy:this.orderKeys.length>0?this.orderKeys:o.plan.orderBy,groupBy:this.groupKeys.length>0?this.groupKeys:this.groupCols.length>0?this.groupCols:o.plan.groupBy,aggregates:this.aggExprs.length>0?this.aggExprs:o.plan.aggregates,having:this.havingFilters.length>0?this.havingFilters:o.plan.having,select:this.selectFields.length>0?this.selectFields:o.plan.select,limit:this.limitCount!==null?this.limitCount:o.plan.limit,offset:this.offsetCount!==null?this.offsetCount:o.plan.offset},bytecodeSize:o.bytecodeSize,instructions:o.instructions,assembly:o.assembly}}const e=await this.resolveUncorrelatedFilters(this.filters.filter(i=>!this.filterContainsCorrelatedSubquery(i))),A=await this.resolveUncorrelatedFilters(this.havingFilters.filter(i=>!this.filterContainsCorrelatedSubquery(i))),n=this.selectFields.filter(i=>!i.subquery),s=n.map(i=>({expr:i.expr??{type:"col",name:i.sourceCol??i.alias},alias:i.alias}));return this.db.explainQuery(this.tableName,e,{joins:this.joins.length>0?this.joins:void 0,orderBy:this.orderKeys.length>0?this.orderKeys:void 0,groupBy:this.groupKeys.length>0?this.groupKeys:this.groupCols.length>0?this.groupCols:void 0,aggregates:this.aggExprs.length>0?this.aggExprs:void 0,having:A.length>0?A:void 0,select:n.length>0?n:void 0,selectExprs:s.length>0?s:void 0,limit:this.limitCount!==null?this.limitCount:void 0,offset:this.offsetCount!==null?this.offsetCount:void 0,planner:this.planner})}getOrderKeyValue(e,A){const n=A.colName??(A.expr?le(A.expr):void 0);if(!n)return;if(e[n]!==void 0)return e[n];const s=n.includes(".")?n.slice(n.lastIndexOf(".")+1):n;if(e[s]!==void 0)return e[s];if(this.selectFields.length>0){for(const i of this.selectFields)if((i.sourceCol===n||i.sourceCol===s||i.alias===n||i.alias===s)&&e[i.alias]!==void 0)return e[i.alias]}if(e[`__sort_${n}`]!==void 0)return e[`__sort_${n}`];if(e[`__sort_${s}`]!==void 0)return e[`__sort_${s}`];if(A.expr){let i;return typeof this.db.getUdf=="function"&&(i=o=>{var r,a;return(a=(r=this.db.getUdf(o))==null?void 0:r.def)==null?void 0:a.call}),ue(A.expr,e,i)}}sortAggregatedRows(e){return[...e].sort((A,n)=>{for(const s of this.orderKeys){const i=this.getOrderKeyValue(A,s),o=this.getOrderKeyValue(n,s);if(i===o)continue;if(i==null)return s.nullOrder==="nulls_first"?-1:1;if(o==null)return s.nullOrder==="nulls_first"?1:-1;const r=s.direction==="desc"?-1:1;return typeof i=="number"&&typeof o=="number"?(i-o)*r:String(i).localeCompare(String(o))*r}return 0})}toArray(){this.assertSubqueryDepth();const e=Jo();xA(this.db,this.getReferencedTables());const A=this._toArrayInternal();return Wo(A,e)}async _toArrayInternal(){if(this.sourceSubquery){const d=this.tryFlatten();return d?d._toArrayInternal():this.executeMaterializedDerivedTable()}const e=this.filters.some(d=>this.filterContainsCorrelatedSubquery(d)),A=this.havingFilters.some(d=>this.filterContainsCorrelatedSubquery(d)),n=this.selectFields.some(d=>d.subquery),s=this.selectFields.some(d=>d.subquery&&this.isSubqueryCorrelated(d.subquery)),i=await this.resolveUncorrelatedFilters(this.filters.filter(d=>!this.filterContainsCorrelatedSubquery(d))),o=this.filters.filter(d=>this.filterContainsCorrelatedSubquery(d)),r=this.joins.length>0,a=this.orderKeys.length>0,c=this.aggExprs.length>0||this.groupKeys.length>0||this.groupCols.length>0;if(e){let d=await this.db.executeQuery(this.tableName,i,{limit:null,offset:null,sortCol:null,sortDir:this.sortDir,joins:r?this.joins:void 0,planner:this.planner});return d=await this.evalFiltersOnRows(d,o),c&&(d=this.performInMemoryAggregation(d),this.havingFilters.length>0&&(d=await this.evalFiltersOnRows(d,this.havingFilters))),n&&await this.attachSelectSubqueries(d),a&&(d=this.sortAggregatedRows(d)),this.offsetCount!==null&&this.offsetCount>0&&(d=d.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(d=d.slice(0,this.limitCount)),this.selectFields.length>0&&(d=d.map(p=>this.projectRow(p))),d}const l=await this.resolveUncorrelatedFilters(this.havingFilters.filter(d=>!this.filterContainsCorrelatedSubquery(d))),u=this.selectFields.filter(d=>!d.subquery),g=u.map(d=>({expr:d.expr??{type:"col",name:d.sourceCol??d.alias},alias:d.alias}));if(r&&a&&g.length>0)for(const d of this.orderKeys){const p=d.colName;if(p){const U=p.includes(".")?p.slice(p.lastIndexOf(".")+1):p;u.some(m=>m.alias===p||m.alias===U||m.sourceCol===p||m.sourceCol===U)||g.push({expr:{type:"col",name:p},alias:`__sort_${p}`})}}const E=!s||c,h=await this.db.executeQuery(this.tableName,i,{limit:r&&a&&c||A?null:this.limitCount,offset:r&&a&&c||A?null:this.offsetCount,sortCol:r?null:this.sortCol,sortDir:this.sortDir,orderBy:r&&c?void 0:a?this.orderKeys:void 0,joins:r?this.joins:void 0,groupBy:this.groupKeys.length>0?this.groupKeys:this.groupCols.length>0?this.groupCols:void 0,aggregates:this.aggExprs.length>0?this.aggExprs:void 0,having:l.length>0?l:void 0,select:E&&u.length>0?u:void 0,selectExprs:E&&g.length>0?g:void 0,planner:this.planner});let B=h;if(A){const d=this.havingFilters.filter(p=>this.filterContainsCorrelatedSubquery(p));B=await this.evalFiltersOnRows(B,d)}const Q=h.isOrderSatisfied===!0;return(c||r)&&a&&!Q?(B=this.sortAggregatedRows(B),(r||A)&&(this.offsetCount!==null&&this.offsetCount>0&&(B=B.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(B=B.slice(0,this.limitCount)))):A&&(this.offsetCount!==null&&this.offsetCount>0&&(B=B.slice(this.offsetCount)),this.limitCount!==null&&this.limitCount>=0&&(B=B.slice(0,this.limitCount))),n&&await this.attachSelectSubqueries(B),this.selectFields.length>0&&(B=B.map(d=>this.projectRow(d))),B}first(){const e=Jo();this.limit(1),this.assertSubqueryDepth(),xA(this.db,this.getReferencedTables());const A=this._toArrayInternal().then(n=>n.length>0?n[0]:null);return Wo(A,e)}live(e,A){return gi(()=>this.clone(this.db).toArray(),e,A)}async update(e,A){if(!this.db.executeUpdate)throw new Error("Database executor does not support executeUpdate");this.assertSubqueryDepth();const n=await this.resolveUncorrelatedFilters(this.filters);return this.db.executeUpdate(this.tableName,n,e,A)}async delete(e){if(!this.db.executeDelete)throw new Error("Database executor does not support executeDelete");this.assertSubqueryDepth();const A=await this.resolveUncorrelatedFilters(this.filters);return this.db.executeDelete(this.tableName,A,e)}}class un{constructor(e,A,n,s,i="js",o,r,a){G(this,"vfs");G(this,"io");G(this,"driver");G(this,"coreMode");G(this,"wasmCore");G(this,"planner");G(this,"coordinator");G(this,"currentLeaseId",null);G(this,"vmCtx");G(this,"udfs",new Map);G(this,"nextUdfId",1);G(this,"tableMetaCache",new Map);G(this,"tableTailPages",new Map);G(this,"indexTailPages",new Map);G(this,"beforeCommitHooks",new Set);G(this,"commitHooks",new Set);G(this,"subscriptions",new Set);G(this,"activeTxChanges",[]);G(this,"activeTxOrigin","local");G(this,"activeTxMeta");G(this,"activeTxId",0);G(this,"nextAutoTxId",1e6);G(this,"isRunningBeforeCommit",!1);G(this,"broadcastChannel",null);G(this,"instanceId",Math.random().toString(36).slice(2)+Date.now().toString(36));if(this.vfs=e,this.io=A,this.driver=n,this.coordinator=s,this.coreMode=i,this.wasmCore=o,this.planner=r,this.vmCtx=Er(),this.vmCtx._fastHostMode=!0,this.coordinator.setOnCrossTabInvalidated(async()=>{this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await un.pinAllCatalogPages(this.driver)}),typeof BroadcastChannel<"u"&&a){const c=`webdb_sync_${e.name}_${a}`;this.broadcastChannel=new BroadcastChannel(c),this.broadcastChannel.onmessage=l=>{const u=l.data;if(!u||u.senderId===this.instanceId)return;const{tables:g,origin:E,meta:h,changeCounter:B,schemaVersion:Q}=u;this.coordinator.leaseQueue.enqueue(async()=>{await this.coordinator.syncCrossTabState(!0),this.notifySubscriptions({tables:Array.isArray(g)?g:[],origin:E??"remote",meta:h,changeCounter:typeof B=="number"?B:this.getSyncState().changeCounter,schemaVersion:typeof Q=="number"?Q:this.getSyncState().schemaVersion,crossTab:!0})}).catch(()=>{})}}}get pool(){return this.driver}static async open(e){var Q,d;const A=e.storage||"memory";let n;e.vfs?n=e.vfs:A==="idb"?n=new Ur(e.name):A==="opfs"?n=new Tr(e.name):n=new pr;const s=e.slotCount??bA,i=e.maxQueryMemory??EA,o=Wa(Math.max(s,bA),i),r=(d=(Q=globalThis.process)==null?void 0:Q.env)==null?void 0:d.WEBDB_CORE,a=r==="wasm"||r==="js"?r:globalThis.__WEBDB_DEFAULT_CORE__,c=e.core??a??"js";let l;c==="wasm"&&(l=vs(o,e.wasmBinary?new Uint8Array(e.wasmBinary):void 0));const u=new Ki({vfs:n,memory:o}),g=new Ka({io:u,memory:o,slotCount:s,maxQueryMemory:i,useDefaultLayoutOffsets:!0}),E=e.name&&n.name!=="memory"?`webdb_lock_${n.name}_${e.name}`:void 0,h=new ja(n,g,u,E);g.setTransactionCoordinator(h),await h.leaseQueue.enqueue(async()=>{await Lo(n);const[p]=await n.readPages([1]);p?(g.getPageBytesInSlot(0).set(p),g.clearDirty(0),Zn(g.getSlotDataView(0),!0),await un.pinAllCatalogPages(g)):(La(g.getSlotDataView(0)),g.markDirty(0),await g.flushSlot(0)),h.recordDiskPage1State()});const B=new un(n,u,g,h,c,l,e.planner,e.name);return e.initialData&&await B.importBinary(e.initialData),B}static async pinAllCatalogPages(e){const A=e.getSlotDataView(0);let n=A.getUint32(FA,!0);for(;n!==0;){const o=await e.acquireAndPinPage(n),r=e.getSlotDataView(o);n=tA(r,0).nextColCatalogPageId}let s=A.getUint32(LA,!0);for(;s!==0;){const o=await e.acquireAndPinPage(s),r=e.getSlotDataView(o);s=tA(r,0).nextColCatalogPageId}const i=nn(A);for(const o of i){let r=o.colCatalogPageId;for(;r!==0;){const a=await e.acquireAndPinPage(r),c=e.getSlotDataView(a);r=tA(c,0).nextColCatalogPageId}}}getPlanner(){return this.planner}setPlanner(e){return this.planner=e,this}validateIdentifier(e,A="Identifier"){if(!e||typeof e!="string"||e.length===0)throw new Error(`${A} cannot be empty`);if(e.length>we)throw new Br(e,we)}async createTable(e,A){return this.coordinator.leaseQueue.enqueue(()=>this._createTableInternal(e,A),this.currentLeaseId??void 0)}async _createTableInternal(e,A){var B;if(this.validateIdentifier(e,"Table name"),A.length===0)throw new Error("Table must have at least one column");if(A.length>We)throw new Un(A.length,We);const n=new Set;let s=!1;for(const Q of A){if(this.validateIdentifier(Q.name,"Column name"),n.has(Q.name))throw new gs(Q.name,e);n.add(Q.name);const d=typeof Q.flags=="number"?Q.flags:0;(Q.primaryKey||(B=Q.flags)!=null&&B.primaryKey||d&gt.PRIMARY_KEY)&&(s=!0)}const i=this.pool.getSlotDataView(0);if(Se(i,e)!==-1)throw new Es(e);const o=To(i)===-1?1:0,r=Math.ceil(A.length/cA),a=s?1:0,c=1+r+a+o,l=[];for(let Q=0;Q<c;Q++)l.push(await this.driver.allocateAndPinPage());let u=0;const g={allocateNewPage:()=>{if(u<l.length)return l[u++];const d=i.getUint32(12,!0)+1;return i.setUint32(12,d,!0),this.pool.markDirty(0),d},getPageBytes:Q=>{let d=this.pool.getResidentSlot(Q);return d===-1&&(d=Q<=this.pool.slotCount?Q-1:1,this.pool.assignSlot(d,Q)),this.pool.getPageBytesInSlot(d)},markPageDirty:Q=>{const d=this.pool.getResidentSlot(Q);d!==-1&&this.pool.markDirty(d)}};let E;try{E=Va(i,g,e,A)}catch(Q){for(const d of l)this.driver.forceUnpinPage(d),await this.driver.freePage(d,!0);throw Q}this.driver.unpinPage(E.rootPageId);for(const Q of E.indexes??[])Q.rootPageId>1&&this.driver.unpinPage(Q.rootPageId);let h=E.colCatalogPageId;for(;h!==0;){const Q=await this.driver.acquirePage(h);this.pool.isSlotPinned(Q)||this.pool.pinSlot(Q),h=tA(this.pool.getSlotDataView(Q),0).nextColCatalogPageId}return this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this.tableMetaCache.delete(e.toLowerCase()),E}async getTable(e){return this.coordinator.leaseQueue.enqueue(()=>this._getTableInternal(e),this.currentLeaseId??void 0)}async _getTableInternal(e){const A=e.toLowerCase(),n=this.tableMetaCache.get(A);if(n)return n;const s=this.pool.getSlotDataView(0),i=Se(s,e);if(i===-1)throw new pn(e);let r=Ee(s,i).colCatalogPageId;for(;r!==0;){await this.driver.acquirePage(r);const l=this.pool.getResidentSlot(r);r=tA(this.pool.getSlotDataView(l),0).nextColCatalogPageId}const c=Do(s,{getPageBytes:l=>{const u=this.pool.getResidentSlot(l);return u!==-1?this.pool.getPageBytesInSlot(u):new Uint8Array(4096)}},e);return this.tableMetaCache.set(A,c),c}async listTables(){return this.coordinator.leaseQueue.enqueue(async()=>{const e=this.pool.getSlotDataView(0),A=nn(e),n=[];for(const s of A)n.push(await this._getTableInternal(s.name));return n},this.currentLeaseId??void 0)}async freeTableTreePages(e){if(e<=1)return;const A=[],n=new Set,s=[e];for(;s.length>0;){const i=s.shift();if(i<=1||n.has(i))continue;n.add(i);const o=await this.driver.acquirePage(i),r=this.pool.getSlotDataView(o),a=dA(r,0);if(a===PA){this.driver.forceUnpinPage(i);continue}if(A.push(i),a===qi||a===lr){const c=_t(r,0);for(let u=0;u<c;u++){const g=Et(r,0,u);if(g>0&&g+4<=4096){const E=r.getUint32(g,!0);E>1&&!n.has(E)&&s.push(E)}}const l=jt(r,0);l>1&&!n.has(l)&&s.push(l)}else if(a===ls||a===mn){const c=jt(r,0);c>1&&!n.has(c)&&s.push(c)}}for(const i of A)this.driver.forceUnpinPage(i),await this.driver.freePage(i,!0)}async dropTable(e){return this.coordinator.leaseQueue.enqueue(()=>this._dropTableInternal(e),this.currentLeaseId??void 0)}async _dropTableInternal(e){var r;this.tableMetaCache.delete(e.toLowerCase()),this.tableTailPages.delete(e);const A=this.pool.getSlotDataView(0),n=Se(A,e);if(n===-1)throw new pn(e);const s=Ee(A,n);s.pkRootPageId&&s.pkRootPageId>1&&(await this.freeTableTreePages(s.pkRootPageId),this.indexTailPages.delete(s.pkRootPageId));const i=pA(A);for(let a=0;a<i;a++){const c=sn(A,a);c&&(c.tableId===s.tableId||c.name.toLowerCase().startsWith(`idx_${e.toLowerCase()}_`)||c.name.toLowerCase()===`pk_${e.toLowerCase()}`)&&(c.rootPageId>1&&c.rootPageId!==s.pkRootPageId&&(await this.freeTableTreePages(c.rootPageId),this.indexTailPages.delete(c.rootPageId)),No(A,a))}s.rootPageId>1&&await this.freeTableTreePages(s.rootPageId);let o=s.colCatalogPageId;for(;o>1;){const a=await this.driver.acquirePage(o),c=this.pool.getSlotDataView(a);if(dA(c,0)===PA){this.driver.forceUnpinPage(o);break}const g=tA(c,0).nextColCatalogPageId;this.driver.forceUnpinPage(o),await this.driver.freePage(o,!0),o=g}Ha(A,n),qA(A),Ye(A),Te(A),this.pool.markDirty(0),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),((r=this.vmCtx.table)==null?void 0:r.name.toLowerCase())===e.toLowerCase()&&(this.vmCtx.table=null)}async renameTable(e,A){return this.coordinator.leaseQueue.enqueue(()=>this._renameTableInternal(e,A),this.currentLeaseId??void 0)}async _renameTableInternal(e,A){var l;this.validateIdentifier(A,"Table name");const n=this.pool.getSlotDataView(0),s=Se(n,e);if(s===-1)throw new pn(e);if(e===A)return this._getTableInternal(A);if(Se(n,A)!==-1)throw new Es(A);const i=Ee(n,s);i.name=A,HA(n,s,i);const o=`pk_${e}`,r=`idx_${e}_`,a=pA(n);for(let u=0;u<a;u++){const g=sn(n,u);if(g&&g.tableId===i.tableId){let E=null;g.name===o?E=`pk_${A}`:g.name.startsWith(r)&&(E=`idx_${A}_${g.name.slice(r.length)}`),E&&E.length<=we&&!$s(n,E)&&(g.name=E,So(n,u,g))}}qA(n),Ye(n),Te(n),this.pool.markDirty(0),this.tableMetaCache.delete(e.toLowerCase()),this.tableMetaCache.delete(A.toLowerCase());const c=this.tableTailPages.get(e);return c!==void 0&&(this.tableTailPages.delete(e),this.tableTailPages.set(A,c)),((l=this.vmCtx.table)==null?void 0:l.name.toLowerCase())===e.toLowerCase()&&(this.vmCtx.table=null),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this._getTableInternal(A)}async renameColumn(e,A,n){return this.coordinator.leaseQueue.enqueue(()=>this._renameColumnInternal(e,A,n),this.currentLeaseId??void 0)}async _renameColumnInternal(e,A,n){var h;this.validateIdentifier(n,"Column name");const s=await this._getTableInternal(e),i=s.columns.findIndex(B=>B.name===A);if(i===-1)throw new Ke(A,e);if(A===n)return s;if(s.columns.some((B,Q)=>Q!==i&&B.name===n))throw new gs(n,e);const{pageChainIdx:o,colIdxInPage:r}=xa(i);let a=s.colCatalogPageId;for(let B=0;B<o;B++){const Q=await this.driver.acquirePage(a);a=tA(this.pool.getSlotDataView(Q),0).nextColCatalogPageId}const c=await this.driver.acquirePage(a),l=this.pool.getSlotDataView(c),u={...s.columns[i],name:n};Ro(l,0,r,u);const g=hA(this.pool.getPageBytesInSlot(c));l.setUint32(12,g,!0),this.pool.markDirty(c);const E=this.pool.getSlotDataView(0);return qA(E),Ye(E),Te(E),this.pool.markDirty(0),this.tableMetaCache.delete(e.toLowerCase()),((h=this.vmCtx.table)==null?void 0:h.name.toLowerCase())===e.toLowerCase()&&(this.vmCtx.table=null),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this._getTableInternal(e)}async addColumn(e,A,n){this.validateIdentifier(A.name,"Column name");const s=(n==null?void 0:n.defaultValue)!==void 0?n.defaultValue:A.defaultValue!==void 0?A.defaultValue:null;return this._executeTableRebuildAtomic(e,i=>{var u,g,E;if(i.columns.some(h=>h.name===A.name))throw new gs(A.name,e);if(i.columns.length+1>We)throw new Un(i.columns.length+1,We);const o=typeof A.flags=="number"?A.flags:0,r=!!A.primaryKey||!!((u=A.flags)!=null&&u.primaryKey)||(o&gt.PRIMARY_KEY)!==0,a=!!A.autoInc||!!((g=A.flags)!=null&&g.autoInc)||(o&gt.AUTO_INC)!==0,c=!!A.indexed||!!((E=A.flags)!=null&&E.indexed)||(o&gt.INDEXED)!==0;if(r&&i.columns.some(h=>(h.flags&gt.PRIMARY_KEY)!==0))throw new Error(`Cannot add a PRIMARY KEY column "${A.name}" to table "${e}" because it already has a primary key`);return{newColumns:[...i.columns.map(h=>({name:h.name,type:h.type,flags:{primaryKey:(h.flags&gt.PRIMARY_KEY)!==0,notNull:(h.flags&gt.NOT_NULL)!==0,indexed:(h.flags&gt.INDEXED)!==0,autoInc:(h.flags&gt.AUTO_INC)!==0}})),A],transformRow:h=>{const B={...h};return(!a||s!==null)&&(B[A.name]=s),B},keepIndex:()=>!0,newAutoIndexCol:c&&!r?A.name:void 0}})}async dropColumn(e,A){return this.validateIdentifier(A,"Column name"),this._executeTableRebuildAtomic(e,n=>{const s=n.columns.findIndex(r=>r.name===A);if(s===-1)throw new Ke(A,e);if(n.columns.length<=1)throw new Hi(`Cannot drop column "${A}" from table "${e}": table must have at least one column`);if(n.columns[s].flags&gt.PRIMARY_KEY)throw new Hi(`Cannot drop PRIMARY KEY column "${A}" from table "${e}"`);return{newColumns:n.columns.filter(r=>r.name!==A).map(r=>({name:r.name,type:r.type,flags:{primaryKey:(r.flags&gt.PRIMARY_KEY)!==0,notNull:(r.flags&gt.NOT_NULL)!==0,indexed:(r.flags&gt.INDEXED)!==0,autoInc:(r.flags&gt.AUTO_INC)!==0}})),transformRow:r=>{const a={...r};return delete a[A],a},keepIndex:r=>!r.includes(A)}})}async alterTable(e,A){switch(A.type){case"renameTable":return this.renameTable(e,A.newName);case"renameColumn":return this.renameColumn(e,A.from,A.to);case"addColumn":return this.addColumn(e,A.column,{defaultValue:A.defaultValue});case"dropColumn":return this.dropColumn(e,A.column);default:throw new Error(`Unsupported alterTable operation: ${A==null?void 0:A.type}`)}}async _executeTableRebuildAtomic(e,A){return this.coordinator.isInTransaction()?this.coordinator.leaseQueue.enqueue(async()=>{const n=await this.coordinator.captureSavepoint();try{return await this._rebuildTableSchemaInternal(e,A)}catch(s){throw this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await this.coordinator.restoreSavepoint(n),s}},this.currentLeaseId??void 0):this.transaction(n=>n._rebuildTableSchemaInternal(e,A))}async _rebuildTableSchemaInternal(e,A){const n=await this._getTableInternal(e),{newColumns:s,transformRow:i,keepIndex:o,newAutoIndexCol:r}=A(n),a=[];let c=n.rootPageId;for(;c!==0;){let B=await this.driver.acquirePage(c),Q=this.pool.getSlotDataView(B);const d=_t(Q,0),p=jt(Q,0);for(let U=0;U<d;U++){B=await this.driver.acquirePage(c),Q=this.pool.getSlotDataView(B);const N=Et(Q,0,U),m=wA(n.columns,Q,N);m&&a.push(i(m))}c=p}const l=n.autoIncNext,u=this.pool.getSlotDataView(0),g=Ve(u,n.tableId),E=[];for(const B of g){if(B.flags&ft.PRIMARY)continue;const Q=B.columnIndices.slice(0,B.columnCount).map(d=>{var p;return(p=n.columns[d])==null?void 0:p.name}).filter(d=>typeof d=="string");Q.length===B.columnCount&&o(Q)&&E.push({name:B.name,colNames:Q,unique:(B.flags&ft.UNIQUE)!==0})}await this._dropTableInternal(e),await this._createTableInternal(e,s);for(const B of E)await this._createIndexInternal(e,B.colNames,{name:B.name,unique:B.unique});r&&!E.some(B=>B.colNames.length===1&&B.colNames[0]===r)&&await this._createIndexInternal(e,r),a.length>0&&await this._insertManyInternal(e,a,!1);const h=Se(u,e);if(h!==-1){const B=Ee(u,h);l>B.autoIncNext&&(B.autoIncNext=l,HA(u,h,B),Te(u),this.pool.markDirty(0))}return this.tableMetaCache.delete(e.toLowerCase()),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),this._getTableInternal(e)}async createIndex(e,A,n){return this.coordinator.leaseQueue.enqueue(()=>this._createIndexInternal(e,A,n),this.currentLeaseId??void 0)}async _createIndexInternal(e,A,n){const s=await this._getTableInternal(e),i=Array.isArray(A)?A:[A];if(i.length===0)throw new Error(`At least one column must be specified for createIndex on table "${e}"`);if(i.length>8)throw new Error(`Maximum 8 columns allowed per index (requested ${i.length})`);const o=[];for(const T of i){const F=s.columns.findIndex(D=>D.name===T);if(F===-1)throw new Ke(T,e);o.push(F)}const r=(n==null?void 0:n.name)??`idx_${e}_${i.join("_")}`,a=this.pool.getSlotDataView(0);if($s(a,r)!==null)throw new Yi(r);const u=Ve(a,s.tableId).find(T=>{if(T.columnCount!==o.length)return!1;for(let F=0;F<T.columnCount;F++)if(T.columnIndices[F]!==o[F])return!1;return!0});if(u)throw new Yi(u.name||r);const g=await this.driver.allocateAndPinPage(),E=this.pool.getResidentSlot(g),h=this.pool.getSlotDataView(E);Ss(h,0,0),this.pool.markDirty(E),this.pool.unpinSlot(E);const B=!!(n!=null&&n.unique),Q=B?new Set:null;let d=s.rootPageId;for(;d!==0;){let T=this.pool.getResidentSlot(d);T!==-1?this.pool.setRefBit(T,1):T=await this.driver.acquirePage(d);let F=this.pool.getSlotDataView(T);const D=_t(F,0),O=jt(F,0);for(let w=0;w<D;w++){T=this.pool.getResidentSlot(d),T!==-1?this.pool.setRefBit(T,1):T=await this.driver.acquirePage(d),F=this.pool.getSlotDataView(T);const P=Et(F,0,w),I=wA(s.columns,F,P);if(I){const b=BigInt(d)<<16n|BigInt(w),{keyVal:H,keyType:J}=this.extractIndexKey(s.columns,{columnCount:o.length,columnIndices:o},I);if(H!=null){if(Q!==null){const ot=H instanceof Uint8Array?Array.from(H).join(","):H;if(Q.has(ot))throw await this.freeTableTreePages(g),this.indexTailPages.delete(g),new JA(`Duplicate key value violates unique constraint "${r}" on table "${e}"`);Q.add(ot)}await this.insertIntoIndex(g,J,H,b)}}}d=O}let p=qa(a);if(p===-1){const T=await this.driver.allocateAndPinPage();if(p=ka(a,T),p===-1)throw new fr(Qi+1,Qi);this.pool.markDirty(0)}const U=[0,0,0,0,0,0,0,0],N=[0,0,0,0,0,0,0,0];for(let T=0;T<o.length&&T<8;T++)U[T]=o[T];const m=B?ft.UNIQUE:0;So(a,p,{indexId:p+1,tableId:s.tableId,rootPageId:g,columnCount:o.length,flags:m,columnIndices:U,colDirections:N,name:r}),qA(a),Ye(a),Te(a),this.pool.markDirty(0),this.tableMetaCache.delete(e.toLowerCase()),this.indexTailPages.delete(g),this.coordinator.isInTransaction()||await this.driver.flushAllDirty()}async dropIndex(e){return this.coordinator.leaseQueue.enqueue(()=>this._dropIndexInternal(e),this.currentLeaseId??void 0)}async _dropIndexInternal(e){const A=this.pool.getSlotDataView(0),n=$s(A,e);if(!n)throw new hr(e);if(n.desc.rootPageId>1&&(await this.freeTableTreePages(n.desc.rootPageId),this.indexTailPages.delete(n.desc.rootPageId)),n.slotIdx>=0)No(A,n.slotIdx);else{const s=-n.slotIdx-1,i=Ee(A,s);i&&(i.pkRootPageId=void 0,i.pkColumnCount=void 0,i.pkFlags=void 0,i.pkColumnIndices=void 0,HA(A,s,i))}qA(A),Ye(A),Te(A),this.pool.markDirty(0),this.tableMetaCache.clear(),this.indexTailPages.clear(),this.coordinator.isInTransaction()||await this.driver.flushAllDirty()}async listIndexes(e){return this.coordinator.leaseQueue.enqueue(async()=>{const A=this.pool.getSlotDataView(0);if(e){const n=await this._getTableInternal(e);return Ve(A,n.tableId)}return Ma(A)},this.currentLeaseId??void 0)}extractIndexKey(e,A,n){if(A.columnCount===1){const s=e[A.columnIndices[0]];return{keyVal:n[s.name],keyType:s.type}}return{keyVal:Fs(e,A.columnIndices,A.columnCount,n),keyType:_.BLOB}}async probeIndexUnique(e,A,n,s){const i=this.wasmCore?this.wasmCore.page_binary_search_index_leaf:Ds;let o=e;for(;o!==0;){let r=this.pool.getResidentSlot(o);r!==-1?this.pool.setRefBit(r,1):r=await this.driver.acquirePage(o);const a=this.pool.getSlotDataView(r);if(_t(a,0)>0){const l=i(a,0,A,n);if(l.found){const u=Et(a,0,l.slot_idx),g=a.getUint16(u,!0),E=a.getBigInt64(u+2+g,!0);if(!s||!s.has(E))return!0}}o=jt(a,0)}return!1}async deleteFromIndex(e,A,n,s){const i=this.wasmCore?this.wasmCore.page_binary_search_index_leaf:Ds,o=this.wasmCore?this.wasmCore.page_delete_index_leaf_cell:Ao;let r=e;for(;r!==0;){let a=this.pool.getResidentSlot(r);a!==-1?this.pool.setRefBit(a,1):a=await this.driver.acquirePage(r);const c=this.pool.getSlotDataView(a);if(_t(c,0)>0){const u=i(c,0,A,n,s);if(u.found)return o(c,0,u.slot_idx),this.pool.markDirty(a),!0}r=jt(c,0)}return!1}async insertIntoIndex(e,A,n,s){const i=this.wasmCore?this.wasmCore.page_insert_index_leaf_cell:eo;let o=this.indexTailPages.get(e)??e,r=this.pool.getResidentSlot(o);r!==-1?this.pool.setRefBit(r,1):r=await this.driver.acquirePage(o);let a=this.pool.getSlotDataView(r);for(;;){const l=jt(a,0);if(l===0)break;o=l,r=this.pool.getResidentSlot(o),r!==-1?this.pool.setRefBit(r,1):r=await this.driver.acquirePage(o),a=this.pool.getSlotDataView(r)}this.indexTailPages.set(e,o);let c=i(a,0,A,n,s,this.pool.pageScratchpadOffset);if(c===-1){this.pool.pinSlot(r);try{const l=await this.driver.allocateAndPinPage(),u=this.pool.getResidentSlot(l);try{Us(a,0,l),this.pool.markDirty(r);const g=this.pool.getSlotDataView(u);if(Ss(g,0,0),c=i(g,0,A,n,s,this.pool.pageScratchpadOffset),c===-1)throw new Error("Unexpected error: index entry does not fit in empty page");this.pool.markDirty(u),this.indexTailPages.set(e,l)}finally{this.pool.unpinSlot(u)}}finally{this.pool.unpinSlot(r)}}else this.pool.markDirty(r)}cloneRow(e){const A={};for(const[n,s]of Object.entries(e))A[n]=s instanceof Uint8Array?s.slice():s;return A}valuesEqual(e,A){if(e===A||e==null&&A==null)return!0;if(e instanceof Uint8Array&&A instanceof Uint8Array){if(e.byteLength!==A.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==A[n])return!1;return!0}return typeof e=="number"&&typeof A=="bigint"||typeof e=="bigint"&&typeof A=="number"?BigInt(e)===BigInt(A):typeof e=="boolean"&&typeof A=="number"||typeof e=="number"&&typeof A=="boolean"?Number(e)===Number(A):!1}extractPrimaryKey(e,A){const n=e.columns.filter(s=>(s.flags&gt.PRIMARY_KEY)!==0);return n.length===1?A[n[0].name]??null:n.length>1?n.map(s=>A[s.name]??null):e.columns.length===1?A[e.columns[0].name]??null:e.columns.map(s=>A[s.name]??null)}serializePkKey(e){const A=n=>n==null?"null":n instanceof Uint8Array?`b:${Array.from(n).join(",")}`:`${typeof n}:${String(n)}`;return Array.isArray(e)?`[${e.map(A).join("|")}]`:e!==null&&typeof e=="object"&&!(e instanceof Uint8Array)?`{${Object.keys(e).sort().map(s=>`${s}:${A(e[s])}`).join("|")}}`:A(e)}buildChangeset(e,A,n,s){const{changeCounter:i,schemaVersion:o}=this.getSyncState(),r=Array.from(new Set(s.map(a=>a.table)));return{txId:e,origin:A,meta:n,changeCounter:i,schemaVersion:o,tables:r,changes:s,coalesced:()=>{const a=new Map;for(const c of s){const l=`${c.table.toLowerCase()}::${this.serializePkKey(c.pk)}`,u=a.get(l);if(!u){a.set(l,{table:c.table,op:c.op,pk:Array.isArray(c.pk)?[...c.pk]:c.pk,oldRow:c.oldRow?this.cloneRow(c.oldRow):void 0,newRow:c.newRow?this.cloneRow(c.newRow):void 0,changedColumns:c.changedColumns?[...c.changedColumns]:void 0});continue}if(u.op==="insert"&&c.op==="update")a.set(l,{table:c.table,op:"insert",pk:Array.isArray(c.pk)?[...c.pk]:c.pk,newRow:c.newRow?this.cloneRow(c.newRow):u.newRow});else if(u.op==="insert"&&c.op==="delete")a.delete(l);else if(u.op==="update"&&c.op==="update"){const g=u.oldRow,E=c.newRow?this.cloneRow(c.newRow):u.newRow,h=Object.keys(E).filter(B=>!this.valuesEqual(g[B],E[B]));a.set(l,{table:c.table,op:"update",pk:Array.isArray(c.pk)?[...c.pk]:c.pk,oldRow:g,newRow:E,changedColumns:h})}else if(u.op==="update"&&c.op==="delete")a.set(l,{table:c.table,op:"delete",pk:Array.isArray(u.pk)?[...u.pk]:u.pk,oldRow:u.oldRow});else if(u.op==="delete"&&c.op==="insert"){const g=u.oldRow,E=c.newRow?this.cloneRow(c.newRow):{},h=Object.keys(E).filter(B=>!this.valuesEqual(g[B],E[B]));a.set(l,{table:c.table,op:"update",pk:Array.isArray(c.pk)?[...c.pk]:c.pk,oldRow:g,newRow:E,changedColumns:h})}else a.set(l,{table:c.table,op:c.op,pk:Array.isArray(c.pk)?[...c.pk]:c.pk,oldRow:c.oldRow?this.cloneRow(c.oldRow):void 0,newRow:c.newRow?this.cloneRow(c.newRow):void 0,changedColumns:c.changedColumns?[...c.changedColumns]:void 0})}return Array.from(a.values())}}}notifySubscriptions(e){if(e.tables.length===0||this.subscriptions.size===0)return;const A=new Set(e.tables.map(n=>n.toLowerCase()));for(const n of this.subscriptions)if(n.tables==="*")n.callback(e);else for(const s of A)if(n.tables.has(s)){n.callback(e);break}}emitCommitAndSubscriptions(e){if(e.changes.length===0)return;for(const i of this.commitHooks)i(e);const A=e.tables,{changeCounter:n,schemaVersion:s}=e;if(this.notifySubscriptions({tables:A,origin:e.origin,meta:e.meta,changeCounter:n,schemaVersion:s,crossTab:!1,changeset:e}),this.broadcastChannel)try{this.broadcastChannel.postMessage({senderId:this.instanceId,tables:A,origin:e.origin,meta:e.meta,changeCounter:n,schemaVersion:s})}catch{}}onBeforeCommit(e){return this.beforeCommitHooks.add(e),()=>{this.beforeCommitHooks.delete(e)}}onCommit(e){return this.commitHooks.add(e),()=>{this.commitHooks.delete(e)}}subscribe(e,A){const n={tables:e==="*"?"*":new Set((Array.isArray(e)?e:[e]).map(s=>s.toLowerCase())),callback:A};return this.subscriptions.add(n),()=>{this.subscriptions.delete(n)}}liveQuery(e,A,n){const s=typeof A=="function",i={db:this,...s?n:A};return s?gi(e,A,i):gi(e,i)}getSyncState(){const e=this.pool.getSlotDataView(0),A=Zn(e,!1);return{changeCounter:A.changeCounter,schemaVersion:A.schemaVersion}}validateFilterColumns(e,A){const n=new Set(e.columns.map(o=>o.name)),s=o=>{if(o){if(o.type==="col"&&o.name!=="*"){if(!n.has(o.name))throw new Ke(o.name,e.name)}else if(o.type==="binary")s(o.left),s(o.right);else if(o.type==="fn"&&Array.isArray(o.args))for(const r of o.args)s(r)}},i=o=>{if(o.colName&&!n.has(o.colName))throw new Ke(o.colName,e.name);if(o.expr&&s(o.expr),o.child&&i(o.child),o.children)for(const r of o.children)i(r)};for(const o of A)i(o)}matchesFilter(e,A,n){switch(n.type){case"and":return(n.children??[]).every(s=>this.matchesFilter(e,A,s));case"or":return(n.children??[]).some(s=>this.matchesFilter(e,A,s));case"not":return n.child?!this.matchesFilter(e,A,n.child):!0;case"null":{const s=n.expr?ue(n.expr,A,o=>{var r;return(r=this.getUdf(o))==null?void 0:r.def.call}):A[n.colName],i=s==null;return n.isNull?i:!i}case"in":{const s=n.expr?ue(n.expr,A,r=>{var a;return(a=this.getUdf(r))==null?void 0:a.def.call}):A[n.colName];if(s==null)return!1;const o=(n.values??[]).some(r=>this.valuesEqual(s,r));return n.notIn?!o:o}case"expr":{if(!n.expr)return!0;const s=ue(n.expr,A,i=>{var o;return(o=this.getUdf(i))==null?void 0:o.def.call});return!!s&&s!==0}case"cmp":{const s=n.expr?ue(n.expr,A,r=>{var a;return(a=this.getUdf(r))==null?void 0:a.def.call}):A[n.colName],i=n.value;if(s==null||i===null||i===void 0)return!1;switch(String(n.op??"=").trim().toLowerCase().replace(/\s+/g," ")){case"=":case"==":return this.valuesEqual(s,i);case"!=":case"<>":return!this.valuesEqual(s,i);case"<":return typeof s=="string"&&typeof i=="string"?s<i:Number(s)<Number(i);case"<=":return typeof s=="string"&&typeof i=="string"?s<=i:Number(s)<=Number(i);case">":return typeof s=="string"&&typeof i=="string"?s>i:Number(s)>Number(i);case">=":return typeof s=="string"&&typeof i=="string"?s>=i:Number(s)>=Number(i);case"like":return Wn(String(s),String(i));case"not like":return!Wn(String(s),String(i));case"contains":return String(s).includes(String(i));case"starts_with":return String(s).startsWith(String(i));case"ends_with":return String(s).endsWith(String(i));default:return this.valuesEqual(s,i)}}default:return!0}}matchesFilters(e,A,n){for(const s of n)if(!this.matchesFilter(e,A,s))return!1;return!0}async deleteCellsOnDataPageAndShiftIndexes(e,A,n,s,i){if(s.length===0)return;const o=new Set(s);if(A.length>0){for(const l of s){const u=i[l];if(!u)continue;const g=BigInt(n)<<16n|BigInt(l);for(const E of A){const{keyVal:h,keyType:B}=this.extractIndexKey(e.columns,E,u.row);h!=null&&await this.deleteFromIndex(E.rootPageId,B,h,g)}}let c=0;for(let l=0;l<i.length;l++)if(!o.has(l)){if(c!==l){const u=i[l].row,g=BigInt(n)<<16n|BigInt(l),E=BigInt(n)<<16n|BigInt(c);for(const h of A){const{keyVal:B,keyType:Q}=this.extractIndexKey(e.columns,h,u);B!=null&&(await this.deleteFromIndex(h.rootPageId,Q,B,g),await this.insertIntoIndex(h.rootPageId,Q,B,E))}}c++}}const r=await this.driver.acquirePage(n),a=this.pool.getSlotDataView(r);for(let c=s.length-1;c>=0;c--)kr(a,0,s[c]);this.pool.markDirty(r)}normalizeWhereOrPkFilters(e,A){if(A!==null&&typeof A=="object"&&!(A instanceof Uint8Array)){const s=[];for(const[i,o]of Object.entries(A))o!==void 0&&(o===null?s.push({type:"null",colName:i,isNull:!0}):s.push({type:"cmp",colName:i,op:"=",value:o}));return s}const n=e.columns.find(s=>(s.flags&gt.PRIMARY_KEY)!==0);if(!n)throw new Error(`Table "${e.name}" does not have a primary key column for scalar lookup`);return[{type:"cmp",colName:n.name,op:"=",value:A}]}async insert(e,A,n){await this.insertMany(e,[A],n)}async insertMany(e,A,n){if(!(!A||A.length===0)){if(!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0){await this.transaction(async s=>{await s._insertManyInternal(e,A,!0)},n);return}return this.coordinator.leaseQueue.enqueue(async()=>{const s=this.coordinator.isInTransaction(),i=s||this.commitHooks.size>0||this.beforeCommitHooks.size>0||this.subscriptions.size>0,o=await this._insertManyInternal(e,A,i);if(!s){if(o.length>0){const r=this.buildChangeset(this.nextAutoTxId++,(n==null?void 0:n.origin)??"local",n==null?void 0:n.meta,o);this.emitCommitAndSubscriptions(r)}else if(this.broadcastChannel){const{changeCounter:r,schemaVersion:a}=this.getSyncState();try{this.broadcastChannel.postMessage({senderId:this.instanceId,tables:[e],origin:(n==null?void 0:n.origin)??"local",meta:n==null?void 0:n.meta,changeCounter:r,schemaVersion:a})}catch{}}}},this.currentLeaseId??void 0)}}async _insertManyInternal(e,A,n=!0){if(!A||A.length===0)return[];const s=await this._getTableInternal(e),i=this.pool.getSlotDataView(0),o=Ve(i,s.tableId),r=o.filter(N=>(N.flags&(ft.UNIQUE|ft.PRIMARY))!==0),a=s.columns.find(N=>(N.flags&gt.AUTO_INC)!==0),c=s.columns.filter(N=>(N.flags&gt.PRIMARY_KEY)!==0&&(N.flags&gt.AUTO_INC)===0),l=new Set;for(const N of r){let m=this.pool.getResidentSlot(N.rootPageId);m!==-1?this.pool.setRefBit(m,1):m=await this.driver.acquirePage(N.rootPageId);const T=this.pool.getSlotDataView(m);(_t(T,0)>0||jt(T,0)!==0)&&l.add(N.rootPageId)}const u=new Map;for(const N of r)u.set(N.name,new Set);let g=s.autoIncNext;const E=new Array(A.length);for(let N=0;N<A.length;N++){const m=A[N];for(let O=0;O<c.length;O++){const w=c[O].name;if(m[w]===void 0||m[w]===null)throw new us(w,e)}let T,F;if(n){F={};for(let O=0;O<s.columns.length;O++){const w=s.columns[O].name;F[w]=m[w]!==void 0?m[w]:null}a&&(m[a.name]===void 0||m[a.name]===null)&&(T=Number(g),g+=1n,F[a.name]=T)}else a&&(m[a.name]===void 0||m[a.name]===null)?(T=Number(g),g+=1n,F={...m,[a.name]:T}):F=m;for(let O=0;O<r.length;O++){const w=r[O],{keyVal:P,keyType:I}=this.extractIndexKey(s.columns,w,F);if(P!=null){const b=P instanceof Uint8Array?Array.from(P).join(","):P,H=u.get(w.name);if(H.has(b))throw new JA(`Duplicate key value violates unique constraint "${w.name}" on table "${e}"`);if(H.add(b),l.has(w.rootPageId)&&await this.probeIndexUnique(w.rootPageId,I,P))throw new JA(`Duplicate key value violates unique constraint "${w.name}" on table "${e}"`)}}const D=to(s.columns,F);E[N]={row:m,effectiveRow:F,rowBytes:D,assignedAutoInc:T}}s.autoIncNext=g;let h=this.tableTailPages.get(e)??s.rootPageId,B=this.pool.getResidentSlot(h);B!==-1?this.pool.setRefBit(B,1):B=await this.driver.acquirePage(h);let Q=this.pool.getSlotDataView(B);for(;;){const N=jt(Q,0);if(N===0)break;h=N,B=this.pool.getResidentSlot(h),B!==-1?this.pool.setRefBit(B,1):B=await this.driver.acquirePage(h),Q=this.pool.getSlotDataView(B)}this.tableTailPages.set(e,h);const d=[],p=this.wasmCore?this.wasmCore.page_insert_row:bn;for(let N=0;N<E.length;N++){const{row:m,effectiveRow:T,rowBytes:F,assignedAutoInc:D}=E[N];a&&D!==void 0&&(m[a.name]=D),B=this.pool.getResidentSlot(h),B!==-1?this.pool.setRefBit(B,1):B=await this.driver.acquirePage(h),Q=this.pool.getSlotDataView(B);let O=h,w=p(Q,0,F,this.pool.pageScratchpadOffset);if(w===-1){const I=B;this.pool.pinSlot(I);try{const b=await this.driver.allocateAndPinPage(),H=this.pool.getResidentSlot(b);try{Us(Q,0,b),this.pool.markDirty(I);const J=this.pool.getSlotDataView(H);if(w=p(J,0,F,this.pool.pageScratchpadOffset),w===-1)throw new Error("Unexpected error: row does not fit in empty page");this.pool.markDirty(H),h=b,O=b,B=H,Q=J,this.tableTailPages.set(e,b)}finally{this.pool.unpinSlot(H)}}finally{this.pool.unpinSlot(I)}}else this.pool.markDirty(B);const P=BigInt(O)<<16n|BigInt(w);for(let I=0;I<o.length;I++){const b=o[I],{keyVal:H,keyType:J}=this.extractIndexKey(s.columns,b,T);H!=null&&await this.insertIntoIndex(b.rootPageId,J,H,P)}if(n){const I={table:s.name,op:"insert",pk:this.extractPrimaryKey(s,T),newRow:this.cloneRow(T)};d.push(I),this.coordinator.isInTransaction()&&this.activeTxChanges.push(I)}}const U=Se(i,e);if(U!==-1){const N=Ee(i,U);N.rowCountEstimate+=A.length,a&&(N.autoIncNext=s.autoIncNext),HA(i,U,N),Ye(i),Te(i),this.pool.markDirty(0)}return this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),d}async update(e,A,n,s){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(i=>i.update(e,A,n,s),s):this.coordinator.leaseQueue.enqueue(async()=>{const i=await this._getTableInternal(e),o=this.normalizeWhereOrPkFilters(i,A),r=this.coordinator.isInTransaction(),{count:a,changes:c}=await this._executeUpdateInternal(e,o,n);if(!r&&c.length>0){const l=this.buildChangeset(this.nextAutoTxId++,(s==null?void 0:s.origin)??"local",s==null?void 0:s.meta,c);this.emitCommitAndSubscriptions(l)}return a},this.currentLeaseId??void 0)}async executeUpdate(e,A,n,s){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(i=>i.executeUpdate(e,A,n,s),s):this.coordinator.leaseQueue.enqueue(async()=>{const i=this.coordinator.isInTransaction(),{count:o,changes:r}=await this._executeUpdateInternal(e,A,n);if(!i&&r.length>0){const a=this.buildChangeset(this.nextAutoTxId++,(s==null?void 0:s.origin)??"local",s==null?void 0:s.meta,r);this.emitCommitAndSubscriptions(a)}return o},this.currentLeaseId??void 0)}async _executeUpdateInternal(e,A,n){const s=await this._getTableInternal(e);this.validateFilterColumns(s,A);const i=new Map(s.columns.map(B=>[B.name,B]));for(const B of Object.keys(n))if(!i.has(B))throw new Ke(B,e);const o=this.pool.getSlotDataView(0),r=Ve(o,s.tableId),a=r.filter(B=>(B.flags&(ft.UNIQUE|ft.PRIMARY))!==0),c=[],l=new Set;let u=0,g=s.rootPageId;for(;g!==0;){const B=await this.driver.acquirePage(g),Q=this.pool.getSlotDataView(B),d=_t(Q,0),p=jt(Q,0),U=[],N=[];for(let m=0;m<d;m++){const T=Et(Q,0,m),F=wA(s.columns,Q,T);if(U.push({cellIdx:m,row:F}),this.matchesFilters(s,F,A)){const D={...F};for(const[P,I]of Object.entries(n))I!==void 0&&(D[P]=I);for(const P of s.columns)if(P.flags&gt.PRIMARY_KEY&&(D[P.name]===null||D[P.name]===void 0))throw new us(P.name,e);const O=s.columns.map(P=>P.name).filter(P=>!this.valuesEqual(F[P],D[P])),w=to(s.columns,D);N.push({cellIdx:m,oldRow:F,newRow:D,changedColumns:O,newRowBytes:w}),l.add(BigInt(g)<<16n|BigInt(m)),u++}}N.length>0&&c.push({pageId:g,allCells:U,matches:N}),g=p}if(u===0)return{count:0,changes:[]};for(const B of a){const Q=new Set;for(const d of c)for(const p of d.matches){const{keyVal:U,keyType:N}=this.extractIndexKey(s.columns,B,p.newRow);if(U!=null){const m=U instanceof Uint8Array?Array.from(U).join(","):U;if(Q.has(m))throw new JA(`Duplicate key value violates unique constraint "${B.name}" on table "${e}"`);if(Q.add(m),await this.probeIndexUnique(B.rootPageId,N,U,l))throw new JA(`Duplicate key value violates unique constraint "${B.name}" on table "${e}"`)}}}const E=[],h=[];for(const B of c){const Q=[];for(const d of B.matches){const p=await this.driver.acquirePage(B.pageId),U=this.pool.getSlotDataView(p);if(vi(U,0,d.cellIdx,d.newRowBytes,this.pool.pageScratchpadOffset)){this.pool.markDirty(p),B.allCells[d.cellIdx].row=d.newRow;const m=BigInt(B.pageId)<<16n|BigInt(d.cellIdx);for(const F of r){const D=this.extractIndexKey(s.columns,F,d.oldRow),O=this.extractIndexKey(s.columns,F,d.newRow);this.valuesEqual(D.keyVal,O.keyVal)||(D.keyVal!==void 0&&D.keyVal!==null&&await this.deleteFromIndex(F.rootPageId,D.keyType,D.keyVal,m),O.keyVal!==void 0&&O.keyVal!==null&&await this.insertIntoIndex(F.rootPageId,O.keyType,O.keyVal,m))}const T={table:s.name,op:"update",pk:this.extractPrimaryKey(s,d.newRow),oldRow:this.cloneRow(d.oldRow),newRow:this.cloneRow(d.newRow),changedColumns:d.changedColumns};E.push(T),this.coordinator.isInTransaction()&&this.activeTxChanges.push(T)}else Q.push(d.cellIdx),h.push(d)}Q.length>0&&await this.deleteCellsOnDataPageAndShiftIndexes(s,r,B.pageId,Q,B.allCells)}if(h.length>0){let B=this.tableTailPages.get(e)??s.rootPageId,Q=await this.driver.acquirePage(B),d=this.pool.getSlotDataView(Q);for(;;){const p=jt(d,0);if(p===0)break;B=p,Q=await this.driver.acquirePage(B),d=this.pool.getSlotDataView(Q)}this.tableTailPages.set(e,B);for(const p of h){Q=await this.driver.acquirePage(B),d=this.pool.getSlotDataView(Q);let U=B,N=bn(d,0,p.newRowBytes,this.pool.pageScratchpadOffset);if(N===-1){const F=Q;this.pool.pinSlot(F);try{const D=await this.driver.allocateAndPinPage(),O=this.pool.getResidentSlot(D);try{Us(d,0,D),this.pool.markDirty(F);const w=this.pool.getSlotDataView(O);N=bn(w,0,p.newRowBytes,this.pool.pageScratchpadOffset),this.pool.markDirty(O),B=D,U=D,this.tableTailPages.set(e,D)}finally{this.pool.unpinSlot(O)}}finally{this.pool.unpinSlot(F)}}else this.pool.markDirty(Q);const m=BigInt(U)<<16n|BigInt(N);for(const F of r){const{keyVal:D,keyType:O}=this.extractIndexKey(s.columns,F,p.newRow);D!=null&&await this.insertIntoIndex(F.rootPageId,O,D,m)}const T={table:s.name,op:"update",pk:this.extractPrimaryKey(s,p.newRow),oldRow:this.cloneRow(p.oldRow),newRow:this.cloneRow(p.newRow),changedColumns:p.changedColumns};E.push(T),this.coordinator.isInTransaction()&&this.activeTxChanges.push(T)}}return Ye(o),Te(o),this.pool.markDirty(0),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),{count:u,changes:E}}async delete(e,A,n){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(s=>s.delete(e,A,n),n):this.coordinator.leaseQueue.enqueue(async()=>{const s=await this._getTableInternal(e),i=this.normalizeWhereOrPkFilters(s,A),o=this.coordinator.isInTransaction(),{count:r,changes:a}=await this._executeDeleteInternal(e,i);if(!o&&a.length>0){const c=this.buildChangeset(this.nextAutoTxId++,(n==null?void 0:n.origin)??"local",n==null?void 0:n.meta,a);this.emitCommitAndSubscriptions(c)}return r},this.currentLeaseId??void 0)}async executeDelete(e,A,n){return!this.coordinator.isInTransaction()&&this.beforeCommitHooks.size>0?this.transaction(s=>s.executeDelete(e,A,n),n):this.coordinator.leaseQueue.enqueue(async()=>{const s=this.coordinator.isInTransaction(),{count:i,changes:o}=await this._executeDeleteInternal(e,A);if(!s&&o.length>0){const r=this.buildChangeset(this.nextAutoTxId++,(n==null?void 0:n.origin)??"local",n==null?void 0:n.meta,o);this.emitCommitAndSubscriptions(r)}return i},this.currentLeaseId??void 0)}async _executeDeleteInternal(e,A){const n=await this._getTableInternal(e);this.validateFilterColumns(n,A);const s=this.pool.getSlotDataView(0),i=Ve(s,n.tableId),o=[];let r=0,a=n.rootPageId;for(;a!==0;){const l=await this.driver.acquirePage(a),u=this.pool.getSlotDataView(l),g=_t(u,0),E=jt(u,0);if(g>0){const h=[],B=[];for(let Q=0;Q<g;Q++){const d=Et(u,0,Q),p=wA(n.columns,u,d);if(h.push({cellIdx:Q,row:p}),this.matchesFilters(n,p,A)){B.push(Q);const U={table:n.name,op:"delete",pk:this.extractPrimaryKey(n,p),oldRow:this.cloneRow(p)};o.push(U),this.coordinator.isInTransaction()&&this.activeTxChanges.push(U)}}B.length>0&&(r+=B.length,await this.deleteCellsOnDataPageAndShiftIndexes(n,i,a,B,h))}a=E}if(r===0)return{count:0,changes:[]};const c=Se(s,e);if(c!==-1){const l=Ee(s,c);l.rowCountEstimate=Math.max(0,l.rowCountEstimate-r),HA(s,c,l)}return Ye(s),Te(s),this.pool.markDirty(0),this.coordinator.isInTransaction()||await this.driver.flushAllDirty(),{count:r,changes:o}}async upsert(e,A,n){const s=await this.upsertMany(e,[A],n);return s.inserted>0?"inserted":s.updated>0?"updated":"ignored"}async upsertMany(e,A,n){return!A||A.length===0?{inserted:0,updated:0,ignored:0}:!this.coordinator.isInTransaction()&&(this.beforeCommitHooks.size>0||A.length>1)?this.transaction(s=>s._upsertManyInLease(e,A,n),n):this.coordinator.leaseQueue.enqueue(async()=>{const s=this.coordinator.isInTransaction(),i=[],o=await this._upsertManyInLease(e,A,n,s?void 0:i);if(!s&&i.length>0){const r=this.buildChangeset(this.nextAutoTxId++,(n==null?void 0:n.origin)??"local",n==null?void 0:n.meta,i);this.emitCommitAndSubscriptions(r)}return o},this.currentLeaseId??void 0)}async _upsertManyInLease(e,A,n,s){const i=await this._getTableInternal(e),o=new Set(i.columns.map(g=>g.name));let r;if(n!=null&&n.conflictTarget){r=Array.isArray(n.conflictTarget)?n.conflictTarget:[n.conflictTarget];for(const g of r)if(!o.has(g))throw new Ke(g,e)}else if(r=i.columns.filter(g=>(g.flags&gt.PRIMARY_KEY)!==0).map(g=>g.name),r.length===0)throw new Error(`Cannot upsert on table "${e}" without a primary key or explicit conflictTarget`);const a=(n==null?void 0:n.mode)??"merge";let c=0,l=0,u=0;for(const g of A){for(const Q of Object.keys(g))if(!o.has(Q))throw new Ke(Q,e);const E=r.every(Q=>g[Q]!==void 0&&g[Q]!==null);let h=null,B=[];if(E&&(B=r.map(Q=>({type:"cmp",colName:Q,op:"=",value:g[Q]})),h=await this.findFirstMatchingRow(i,B)),h){if(a==="ignore"){u++;continue}if(n!=null&&n.where&&!n.where(this.cloneRow(h),this.cloneRow(g))){u++;continue}const Q={};if(a==="replace")for(const p of i.columns)g[p.name]!==void 0?Q[p.name]=g[p.name]:p.flags&gt.PRIMARY_KEY?Q[p.name]=h[p.name]:Q[p.name]=null;else for(const[p,U]of Object.entries(g))U!==void 0&&(Q[p]=U);const{changes:d}=await this._executeUpdateInternal(e,B,Q);s&&s.push(...d),l++}else{const Q=await this._insertManyInternal(e,[g],!0);s&&s.push(...Q),c++}}return{inserted:c,updated:l,ignored:u}}async findFirstMatchingRow(e,A){let n=e.rootPageId;for(;n!==0;){const s=await this.driver.acquirePage(n),i=this.pool.getSlotDataView(s),o=_t(i,0),r=jt(i,0);for(let a=0;a<o;a++){const c=Et(i,0,a),l=wA(e.columns,i,c);if(this.matchesFilters(e,l,A))return l}n=r}return null}async transaction(e,A){const n=await this.coordinator.begin(),s=n.leaseId;this.activeTxChanges=[],this.activeTxOrigin=(A==null?void 0:A.origin)??"local",this.activeTxMeta=A==null?void 0:A.meta,this.activeTxId=n.txId;const i=new Proxy(this,{get:(o,r,a)=>{if(r==="currentLeaseId")return s;if(r==="transaction")return async(l,u)=>{const g=await this.coordinator.captureSavepoint(),E=this.activeTxChanges.length;try{return await l(i)}catch(h){throw this.activeTxChanges.length=E,this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await this.coordinator.restoreSavepoint(g),h}};if(r==="checkpoint")return()=>this.checkpoint();if(r==="from")return l=>{const u=new oe(i,l);return o.planner&&u.withPlanner(o.planner),u};const c=Reflect.get(o,r,a);return typeof c=="function"?c.bind(i):c}});try{const o=await e(i);if(this.activeTxChanges.length>0&&this.beforeCommitHooks.size>0&&!this.isRunningBeforeCommit){const u=this.buildChangeset(this.activeTxId,this.activeTxOrigin,this.activeTxMeta,[...this.activeTxChanges]);this.isRunningBeforeCommit=!0;try{for(const g of this.beforeCommitHooks)await g(u,i)}finally{this.isRunningBeforeCommit=!1}}const r=[...this.activeTxChanges],a=this.activeTxOrigin,c=this.activeTxMeta,l=this.activeTxId;if(this.activeTxChanges=[],this.activeTxOrigin="local",this.activeTxMeta=void 0,await this.coordinator.commit(s),r.length>0){const u=this.buildChangeset(l,a,c,r);this.emitCommitAndSubscriptions(u)}return o}catch(o){throw this.activeTxChanges=[],this.activeTxOrigin="local",this.activeTxMeta=void 0,this.isRunningBeforeCommit=!1,this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),await this.coordinator.rollback(s),o}}registerFunction(e,A){const n=e.toLowerCase(),s=typeof A=="function"?{call:A}:{...A};if(!s.returnType)try{const o=s.call(1,1,1,1,1);typeof o=="number"?s.returnType=Number.isInteger(o)?_.INT32:_.FLOAT64:typeof o=="string"&&(s.returnType=_.TEXT)}catch{try{const o=s.call("","","","","");typeof o=="number"?s.returnType=Number.isInteger(o)?_.INT32:_.FLOAT64:typeof o=="string"&&(s.returnType=_.TEXT)}catch{}}let i=this.udfs.get(n);return i?i.def=s:(i={id:this.nextUdfId++,def:s},this.udfs.set(n,i)),this}getUdf(e){return this.udfs.get(e.toLowerCase())}getUdfMap(){const e=new Map;for(const[A,n]of this.udfs.entries())e.set(A,n.id);return e}getUdfDefs(){const e=new Map;for(const[A,n]of this.udfs.entries())e.set(A,n.def);return e}from(e){return new oe(this,e)}async explainQuery(e,A,n){return this.coordinator.leaseQueue.enqueue(()=>this._explainQueryInternal(e,A,n),this.currentLeaseId??void 0)}async _explainQueryInternal(e,A,n){var Q,d,p;const s=await this._getTableInternal(e),i=[];if(n!=null&&n.joins&&n.joins.length>0){if(1+n.joins.length>16)throw new Is(1+n.joins.length,16);for(let U=0;U<n.joins.length;U++){const N=n.joins[U],m=await this._getTableInternal(N.table);i.push({type:N.type,table:m,cursor:U+1,leftCol:N.leftCol,op:N.op,rightCol:N.rightCol})}}const o=Vo({table:s,joinedTables:i.length>0?i:void 0,filters:A,orderBy:n==null?void 0:n.orderBy,groupBy:n==null?void 0:n.groupBy,aggregates:n==null?void 0:n.aggregates,having:n==null?void 0:n.having,selectExprs:n==null?void 0:n.selectExprs,udfNameMap:this.getUdfMap(),udfDefs:this.getUdfDefs(),limit:n==null?void 0:n.limit,offset:n==null?void 0:n.offset,planner:(n==null?void 0:n.planner)??this.planner}),a=(o.allTables??(i.length>0?[s,...i.map(U=>U.table)]:[s]))[0],c=uc(o,a),l=gc(c),u=o.indexScan??o.table0Scan,g=u?"IndexScan":"TableScan",E=u?u.index.name:void 0,h=o.joinedTableScans,B=(Q=n==null?void 0:n.joins)==null?void 0:Q.map(U=>{const N=h==null?void 0:h.find(m=>m.tableName.toLowerCase()===U.table.toLowerCase());return N&&N.scanType==="IndexScan"?{...U,scanType:N.scanType,indexName:N.indexName}:U});return{plan:{table:a.name,rootPageId:a.rootPageId,scanType:g,indexName:E,filters:A,orderBy:n==null?void 0:n.orderBy,groupBy:n==null?void 0:n.groupBy,aggregates:n==null?void 0:n.aggregates,having:n==null?void 0:n.having,select:n==null?void 0:n.select,joins:B,limit:n==null?void 0:n.limit,offset:n==null?void 0:n.offset,estimatedCost:o.estimatedCost,estimatedRows:o.estimatedRows,joinOrder:o.joinOrder,isOrderSatisfied:o.isOrderSatisfied??((d=o.planMetrics)==null?void 0:d.isOrderSatisfied)??!1,sortCostAvoided:((p=o.planMetrics)==null?void 0:p.sortCostAvoided)??void 0},bytecodeSize:o.byteLength,instructions:c,assembly:l}}async executeQuery(e,A,n){return this.coordinator.leaseQueue.enqueue(()=>this._executeQueryInternal(e,A,n),this.currentLeaseId??void 0)}async _executeQueryInternal(e,A,n){var Q;const s=await this._getTableInternal(e),i=[],o=[];if(n.joins&&n.joins.length>0){if(1+n.joins.length>16)throw new Is(1+n.joins.length,16);for(let d=0;d<n.joins.length;d++){const p=n.joins[d],U=await this._getTableInternal(p.table);i.push(U),o.push({type:p.type,table:U,cursor:d+1,leftCol:p.leftCol,op:p.op,rightCol:p.rightCol})}}let r=n.orderBy;!r&&n.sortCol&&(r=[{colName:n.sortCol,direction:n.sortDir}]);const a=this.udfs.size>0,c={table:s,joinedTables:o.length>0?o:void 0,filters:A,orderBy:r,groupBy:n.groupBy,aggregates:n.aggregates,having:n.having,selectExprs:n.selectExprs,udfNameMap:a?this.getUdfMap():void 0,udfDefs:a?this.getUdfDefs():void 0,limit:n.limit!==null?n.limit:void 0,offset:n.offset!==null?n.offset:void 0,planner:n.planner??this.planner},l=Vo(c),u=l.allTables??[s,...i];Ir(this.vmCtx,u[0],u),l.inSets&&(this.vmCtx.inSets=l.inSets);const g=l.keyInfos??c.keyInfos;if(g&&(this.vmCtx.keyInfos=g),a){const d={};for(const p of this.udfs.values())d[p.id]=p.def.call;this.vmCtx.udfs=d}else this.vmCtx.udfs=void 0;let E=l.outputColumns??c.outputColumns??s.columns;if(c.aggregates&&c.aggregates.length>0||c.groupBy&&c.groupBy.length>0)if(l.outputColumns)E=l.outputColumns;else{E=[];const d=c.groupBy??[];for(const p of d){const U=typeof p=="string"?p:p.colName??(p.expr?le(p.expr):"group_key"),N=s.columns.find(m=>m.name===U);N?E.push(N):E.push({name:U,type:_.TEXT,flags:gt.NONE,colOffset:0})}for(let p=0;p<(((Q=c.aggregates)==null?void 0:Q.length)??0);p++){const U=c.aggregates[p],N=U.alias??(U.colName?`${U.func}_${U.colName}`:U.func),m=U.func==="count"?_.INT32:_.FLOAT64;E.push({name:N,type:m,flags:gt.NONE,colOffset:0})}}this.vmCtx.outputColumns=E;const h=[],B=this.wasmCore?this.wasmCore.vm_step:ti;for(;;){const d=B(this.vmCtx,this.pool.view,l);let p=0;for(let U=0;U<this.vmCtx.resultCount;U++){const N=this.pool.view.getUint16(_e+p,!0),m=_e+p+2,T=wA(E,this.pool.view,m);h.push(T),p+=2+N}if(d===L.DONE)break;if(d===L.BUFFER_FULL)this.vmCtx.resultOffset=0,this.vmCtx.resultCount=0,this.vmCtx.status=L.RUNNING;else if(d===L.PAGE_FAULT){this.vmCtx.resultOffset=0,this.vmCtx.resultCount=0;const U=[],N=this.vmCtx.cursors??[this.vmCtx.cursor];for(const m of N)if(m&&m.pageId>1){const T=this.pool.getResidentSlot(m.pageId);T>0&&(this.pool.pinSlot(T),U.push(T))}try{await this.driver.acquirePage(this.vmCtx.fault_page_id)}finally{for(const m of U)this.pool.unpinSlot(m)}this.vmCtx.status=L.RUNNING}else throw d===L.ARENA_EXHAUSTED?(this.vmCtx.arenaOffset=0,new Vi):d===L.TIMEOUT?new dr:d===L.INVALID_BYTECODE?new _r:new Error(`VM execution error: status=${d}`)}return Object.defineProperty(h,"isOrderSatisfied",{value:l.isOrderSatisfied??!1,writable:!0,enumerable:!1,configurable:!0}),h}async checkpoint(){return this.coordinator.checkpoint()}async exportBinary(){return this.coordinator.leaseQueue.enqueue(async()=>{this.coordinator.isInTransaction()||(await this.coordinator.executeCheckpoint(),await this.driver.flushAllDirty());const e=this.pool.getSlotDataView(0),A=ba(e),n=new Uint8Array(A*4096);n.set(this.pool.getPageBytesInSlot(0),0);const s=new DataView(n.buffer,n.byteOffset,4096);Te(s,0);const i=[];for(let a=2;a<=A;a++)this.pool.getResidentSlot(a)===-1&&!this.coordinator.hasSpilledPage(a)&&i.push(a);const o=i.length>0?await this.vfs.readPages(i):[],r=new Map;for(let a=0;a<i.length;a++)r.set(i[a],o[a]??null);for(let a=2;a<=A;a++){const c=(a-1)*4096,l=n.subarray(c,c+4096),u=this.pool.getResidentSlot(a);if(u!==-1)l.set(this.pool.getPageBytesInSlot(u));else if(this.coordinator.hasSpilledPage(a))l.set(this.coordinator.getSpilledPage(a));else{const E=r.get(a);E&&l.set(E)}const g=hA(l);new DataView(l.buffer,l.byteOffset,4096).setUint32(12,g,!0)}return n},this.currentLeaseId??void 0)}async importBinary(e){if(this.coordinator.isInTransaction())throw new Error("Cannot import binary database while a transaction is active");return this.coordinator.leaseQueue.enqueue(async()=>{var a,c;const A=e instanceof Uint8Array?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e);if(A.byteLength<4096||A.byteLength%4096!==0)throw new Tn(`Invalid database binary size (${A.byteLength} bytes): must be a non-zero multiple of 4096 bytes`);const n=A.byteLength/4096,s=A.subarray(0,4096),i=new DataView(s.buffer,s.byteOffset,4096),o=Zn(i,!0);if(o.pageSize!==4096)throw new Tn(`Invalid database page size ${o.pageSize} (expected 4096)`);if(o.totalPages!==n)throw new Tn(`Database page count mismatch: header specifies ${o.totalPages} pages, but binary image contains ${n} pages`);for(let l=2;l<=n;l++){const u=(l-1)*4096,g=A.subarray(u,u+4096),h=new DataView(g.buffer,g.byteOffset,4096).getUint32(12,!0);if(h!==0){const B=hA(g);if(B!==h)throw new BA(l,h,B)}}const r=[];for(let l=1;l<=n;l++){const u=(l-1)*4096;r.push({pageId:l,data:A.subarray(u,u+4096).slice()})}for(let l=1;l<this.pool.slotCount;l++)this.pool.forceUnpinSlot(l),this.pool.unassignSlot(l),this.pool.clearDirty(l),this.pool.getPageBytesInSlot(l).fill(0);this.pool.getPageBytesInSlot(0).set(r[0].data),this.pool.clearDirty(0),await this.vfs.writePages(r),await((c=(a=this.vfs).flush)==null?void 0:c.call(a)),await this.coordinator.resetWalAfterImport(),this.tableMetaCache.clear(),this.tableTailPages.clear(),this.indexTailPages.clear(),this.vmCtx.table=null,await un.pinAllCatalogPages(this.driver)})}async close(){var e,A;this.broadcastChannel&&(this.broadcastChannel.close(),this.broadcastChannel=null),this.beforeCommitHooks.clear(),this.commitHooks.clear(),this.subscriptions.clear(),await this.coordinator.close(),await this.driver.flushAllDirty(),await((A=(e=this.vfs).close)==null?void 0:A.call(e))}}f.ALIGNMENT_PADDING_OFFSET=ml,f.ALIGNMENT_PADDING_SIZE=sr,f.AggregateNotAllowedInWhereError=Bs,f.BUILTIN_AGGREGATES=$a,f.BUILTIN_SCALARS=za,f.BYTECODE_OFFSET=zt,f.BYTECODE_SIZE=Ar,f.BufferPoolDriver=Ka,f.BytecodeEmitter=oi,f.CATALOG_PAGE_HEADER_FIELDS=sl,f.CATALOG_PAGE_HEADER_OFFSET_COL_COUNT_IN_PAGE=rl,f.CATALOG_PAGE_HEADER_OFFSET_FLAGS=ol,f.CATALOG_PAGE_HEADER_OFFSET_NEXT_COL_CATALOG_PAGE_ID=ll,f.CATALOG_PAGE_HEADER_OFFSET_PAGE_CHECKSUM=ul,f.CATALOG_PAGE_HEADER_OFFSET_PAGE_TYPE=il,f.CATALOG_PAGE_HEADER_OFFSET_START_COL_INDEX=cl,f.CATALOG_PAGE_HEADER_OFFSET_TABLE_ID=al,f.CATALOG_PAGE_HEADER_SIZE=Cn,f.COLUMN_META_FIELDS=gl,f.COLUMN_META_OFFSET_COL_OFFSET=Bl,f.COLUMN_META_OFFSET_FLAGS=Il,f.COLUMN_META_OFFSET_NAME=hl,f.COLUMN_META_OFFSET_RESERVED=fl,f.COLUMN_META_OFFSET_TYPE=El,f.COLUMN_META_SIZE=di,f.COST_INDEX_NEXT=Ai,f.COST_INDEX_SEEK=rn,f.COST_ROW_EVAL=AA,f.CURRENT_ENGINE_VERSION=cs,f.CURRENT_MIN_READ_VERSION=cr,f.CannotDropColumnError=Hi,f.ColumnAlreadyExistsError=gs,f.ColumnFlag=gt,f.ColumnNotFoundError=Ke,f.CorruptPageError=BA,f.CorruptWalFrameError=Sn,f.CorruptWalHeaderError=hs,f.CostBasedPlanner=ii,f.CostBasedQueryPlanner=og,f.CustomOrderPlanner=ng,f.CustomPlanner=oc,f.CustomQueryPlanner=sg,f.DEFAULT_BUFFER_POOL_REGIONS=_l,f.DEFAULT_CACHE_SIZE_BYTES=Cl,f.DEFAULT_MAX_QUERY_MEMORY=EA,f.DEFAULT_PAGE_SLOTS=Ql,f.DEFAULT_PAGE_TO_SLOT_BUCKETS=Ie,f.DEFAULT_SLOT_COUNT=bA,f.DIRTY_MASK_OFFSET=ir,f.DataType=_,f.DefaultQueryPlanner=ig,f.ExclusiveLeaseQueue=Za,f.ExpressionBuilder=dt,f.FILE_HEADER_SIZE=Dc,f.HEADER_OFFSET_CHANGE_COUNTER=rA,f.HEADER_OFFSET_FILE_FORMAT_VERSION=fi,f.HEADER_OFFSET_FREE_PAGE_HEAD=Je,f.HEADER_OFFSET_MAGIC=iA,f.HEADER_OFFSET_MIN_READ_VERSION=Ci,f.HEADER_OFFSET_NEXT_CATALOG_PAGE_ID=FA,f.HEADER_OFFSET_NEXT_INDEX_CATALOG_PAGE_ID=LA,f.HEADER_OFFSET_PAGE_CHECKSUM=aA,f.HEADER_OFFSET_PAGE_SIZE=hi,f.HEADER_OFFSET_RESERVED=Fc,f.HEADER_OFFSET_SCHEMA_VERSION=oA,f.HEADER_OFFSET_TOTAL_PAGES=ke,f.HeuristicPlanner=sc,f.HeuristicQueryPlanner=rg,f.INDEX_CATALOG_OFFSET=As,f.INDEX_DESCRIPTOR_FIELDS=Kc,f.INDEX_DESCRIPTOR_OFFSET_COLUMN_COUNT=zc,f.INDEX_DESCRIPTOR_OFFSET_COLUMN_INDICES=tl,f.INDEX_DESCRIPTOR_OFFSET_COL_DIRECTIONS=el,f.INDEX_DESCRIPTOR_OFFSET_FLAGS=vc,f.INDEX_DESCRIPTOR_OFFSET_INDEX_ID=Zc,f.INDEX_DESCRIPTOR_OFFSET_NAME=Al,f.INDEX_DESCRIPTOR_OFFSET_RESERVED=nl,f.INDEX_DESCRIPTOR_OFFSET_ROOT_PAGE_ID=$c,f.INDEX_DESCRIPTOR_OFFSET_TABLE_ID=jc,f.INDEX_DESCRIPTOR_SIZE=uA,f.IdentifierTooLongError=Br,f.IndexAlreadyExistsError=Yi,f.IndexFlag=ft,f.IndexNotFoundError=hr,f.IndexedDbVfsAdapter=Ur,f.InvalidBytecodeError=_r,f.InvalidDatabaseError=Tn,f.Io=Ki,f.MASTER_TABLE_OFFSET=es,f.MAX_COLUMNS_PER_CATALOG_PAGE=cA,f.MAX_COLUMNS_PER_TABLE=We,f.MAX_CURSORS_PER_FRAME=Nl,f.MAX_DESCRIPTORS_PER_OVERFLOW_PAGE=MA,f.MAX_INDEXES_PAGE1=Qi,f.MAX_INDEXES_SYSPAGE=bc,f.MAX_IN_LIST_SIZE=ae,f.MAX_NAME_LENGTH=we,f.MAX_REGISTERS_PER_FRAME=Sl,f.MAX_ROW_SIZE=2048,f.MAX_SUBQUERY_DEPTH=Rl,f.MAX_TABLES_PAGE1=Le,f.MAX_TABLES_SYSPAGE=Lc,f.MAX_TABLE_INTERIOR_CELLS=vo,f.MAX_TOPK_HEAP_LIMIT=ur,f.MemoryVfsAdapter=pr,f.NEXT_DESCRIPTOR_CATALOG_PAGE_OFFSET=Oc,f.NEXT_DESCRIPTOR_CATALOG_PAGE_SIZE=Pc,f.NoOpPlanner=ic,f.NoOpQueryPlanner=ag,f.NotNullConstraintError=us,f.OpCode=C,f.OpfsVfsAdapter=Tr,f.PAGE_HEADER_OFFSET_CELL_COUNT=yc,f.PAGE_HEADER_OFFSET_CHECKSUM=DA,f.PAGE_HEADER_OFFSET_CONTENT_OFFSET=pc,f.PAGE_HEADER_OFFSET_FLAGS=mc,f.PAGE_HEADER_OFFSET_FREE_BYTES=Uc,f.PAGE_HEADER_OFFSET_NEXT_PAGE_ID=$o,f.PAGE_HEADER_OFFSET_TYPE=jo,f.PAGE_HEADER_SIZE=Fe,f.PAGE_SCRATCHPAD_OFFSET=_i,f.PAGE_SCRATCHPAD_SIZE=nr,f.PAGE_SIZE=4096,f.PAGE_TO_SLOT_BUCKET_SIZE=gA,f.PAGE_TO_SLOT_OFFSET=Be,f.PAGE_TO_SLOT_SIZE=dl,f.PAGE_TYPE_CATALOG_PAGE=yn,f.PAGE_TYPE_FREE=PA,f.PAGE_TYPE_INDEX_INTERIOR=lr,f.PAGE_TYPE_INDEX_LEAF=mn,f.PAGE_TYPE_LEAF_DATA=ls,f.PAGE_TYPE_TABLE_INTERIOR=qi,f.QueryArenaExhaustedError=Vi,f.QueryBuilder=oe,f.QueryTimeoutError=dr,f.RESULT_BUFFER_OFFSET=_e,f.RESULT_BUFFER_SIZE=ns,f.RowSizeLimitExceededError=Mi,f.SLOTTED_PAGE_HEADER_FIELDS=_c,f.SLOT_TO_PAGE_OFFSET=ss,f.SYSPAGE_FILE_HEADER_FIELDS=Rc,f.SYSPAGE_RESERVED_OFFSET=Gc,f.SYSPAGE_RESERVED_SIZE=wc,f.SubqueryNestingTooDeepError=Qr,f.TABLE_DESCRIPTOR_FIELDS=kc,f.TABLE_DESCRIPTOR_OFFSET_AUTO_INC_NEXT=Jc,f.TABLE_DESCRIPTOR_OFFSET_COLUMN_COUNT=Mc,f.TABLE_DESCRIPTOR_OFFSET_COL_CATALOG_PAGE_ID=Yc,f.TABLE_DESCRIPTOR_OFFSET_FLAGS=Vc,f.TABLE_DESCRIPTOR_OFFSET_NAME=xc,f.TABLE_DESCRIPTOR_OFFSET_RESERVED=Wc,f.TABLE_DESCRIPTOR_OFFSET_ROOT_PAGE_ID=Hc,f.TABLE_DESCRIPTOR_OFFSET_ROW_COUNT_ESTIMATE=Xc,f.TABLE_DESCRIPTOR_OFFSET_TABLE_ID=qc,f.TABLE_DESCRIPTOR_SIZE=lA,f.TABLE_INTERIOR_CELL_FIELDS=Tc,f.TABLE_INTERIOR_CELL_OFFSET_CHILD_PAGE_ID=Sc,f.TABLE_INTERIOR_CELL_OFFSET_ROWID=Nc,f.TABLE_INTERIOR_CELL_SIZE=zo,f.TABLE_INTERIOR_SPLIT_INDEX=tr,f.TOTAL_MEMORY_BYTES=mi,f.TRANSIENT_ARENA_OFFSET=dn,f.TableAlreadyExistsError=Es,f.TableFlag=GA,f.TableNotFoundError=pn,f.TooManyColumnsError=Un,f.TooManyCursorsError=Is,f.TooManyGroupByColumnsError=yr,f.TooManyIndexesError=fr,f.TooManyOrderByColumnsError=mr,f.TooManyRegistersError=Bt,f.TooManyTablesError=xi,f.TransactionCoordinator=ja,f.UniqueConstraintViolationError=JA,f.UnknownFunctionError=Xi,f.UnsupportedFormatVersionError=Cr,f.VM_CONTEXT_OFFSET=Qn,f.VM_CONTEXT_SIZE=er,f.VM_FRAME_COUNT=Tl,f.VM_FRAME_SIZE=Ul,f.VmStatus=L,f.WAL_CURRENT_VERSION=or,f.WAL_FILE_HEADER_FIELDS=yl,f.WAL_FILE_HEADER_SIZE=as,f.WAL_FRAME_HEADER_FIELDS=pl,f.WAL_FRAME_HEADER_SIZE=OA,f.WAL_FRAME_MAGIC=_n,f.WAL_FRAME_OFFSET_CHECKSUM=ki,f.WAL_FRAME_OFFSET_DB_SIZE_PAGES=Gi,f.WAL_FRAME_OFFSET_FLAGS=bi,f.WAL_FRAME_OFFSET_FRAME_SEQ=wi,f.WAL_FRAME_OFFSET_FRAME_TYPE=Li,f.WAL_FRAME_OFFSET_MAGIC=Fi,f.WAL_FRAME_OFFSET_PAGE_ID=Pi,f.WAL_FRAME_OFFSET_RESERVED=ar,f.WAL_FRAME_OFFSET_TX_ID=Oi,f.WAL_FRAME_SIZE=XA,f.WAL_FRAME_TYPE_PAGE_DATA=is,f.WAL_FRAME_TYPE_TX_COMMIT=os,f.WAL_FRAME_TYPE_TX_UNCOMMITTED=rs,f.WAL_HEADER_OFFSET_CHECKPOINT_SEQ=Si,f.WAL_HEADER_OFFSET_CHECKSUM=Di,f.WAL_HEADER_OFFSET_MAGIC=pi,f.WAL_HEADER_OFFSET_PAGE_SIZE=Ti,f.WAL_HEADER_OFFSET_RESERVED=rr,f.WAL_HEADER_OFFSET_SALT1=Ni,f.WAL_HEADER_OFFSET_SALT2=Ri,f.WAL_HEADER_OFFSET_WAL_VERSION=Ui,f.WAL_HEADER_SIZE=Dl,f.WAL_MAGIC_BYTES=Zi,f.WAL_PAGE_SIZE=IA,f.WEBDB_CORE_WASM_BASE64=yo,f.WebDB=un,f.buf_pool_assign_slot=Vr,f.buf_pool_clear_dirty=Wr,f.buf_pool_find_victim=ao,f.buf_pool_get_resident_slot=he,f.buf_pool_get_slot_offset=zl,f.buf_pool_is_dirty=io,f.buf_pool_is_pinned=$A,f.buf_pool_mark_dirty=Jr,f.buf_pool_pin_slot=oo,f.buf_pool_read_slot_to_page=jA,f.buf_pool_select_eviction_victim=co,f.buf_pool_unassign_slot=Xr,f.buf_pool_unpin_slot=ro,f.buf_pool_write_slot_to_page=so,f.buildJoinEdges=ni,f.buildRootFilter=Pe,f.c_assert=Fr,f.canJoinPreserveOrder=lc,f.catalog_append_index_overflow_page=ka,f.catalog_append_table_overflow_page=wa,f.catalog_create_table=Va,f.catalog_delete_index_descriptor=No,f.catalog_delete_table_descriptor=Ha,f.catalog_find_free_index_slot=qa,f.catalog_find_free_table_slot=To,f.catalog_find_index_by_name=$s,f.catalog_find_table_by_name=Vu,f.catalog_find_table_slot=Se,f.catalog_get_change_counter=Pa,f.catalog_get_free_page_head=Mu,f.catalog_get_index_slot_capacity=pA,f.catalog_get_schema_version=Oa,f.catalog_get_table_pk_index=Uo,f.catalog_get_table_slot_capacity=An,f.catalog_get_total_pages=ba,f.catalog_increment_change_counter=Ye,f.catalog_increment_schema_version=qA,f.catalog_init_page=zs,f.catalog_init_page1=La,f.catalog_list_all_indexes=Ma,f.catalog_list_table_descriptors=nn,f.catalog_list_table_indexes=Ve,f.catalog_load_all_tables=Ju,f.catalog_load_table_meta=Do,f.catalog_map_column_location=xa,f.catalog_parse_data_type=Ga,f.catalog_read_column_meta=Ya,f.catalog_read_fixed_string=Ks,f.catalog_read_index_descriptor=sn,f.catalog_read_page1_header=Zn,f.catalog_read_page_header=tA,f.catalog_read_table_descriptor=Ee,f.catalog_set_free_page_head=Hu,f.catalog_set_total_pages=qu,f.catalog_update_page1_checksum=Te,f.catalog_write_column_meta=Ro,f.catalog_write_fixed_string=Ws,f.catalog_write_index_descriptor=So,f.catalog_write_page_header=Xu,f.catalog_write_table_descriptor=HA,f.chooseIndexScan=ai,f.chooseJoinIndex=ci,f.clear_bit=Dr,f.col=bo,f.collectLeafFilters=rc,f.compare_sorter_keys=Ua,f.compileQuery=Vo,f.computeBufferPoolOffsets=yi,f.computePage1Checksum=Wi,f.computePageChecksum=hA,f.computeWalFrameChecksum=fs,f.crc32=Ji,f.createLiveQuery=Ic,f.createVmContext=Er,f.createVmCursor=gr,f.createWasmCore=vs,f.createWasmMemory=Wa,f.decodeWalFileHeader=ys,f.decodeWalFrame=Ol,f.decodeWalFrameHeader=ji,f.deriveDefaultAlias=le,f.disassembleBytecode=uc,f.doesTableSatisfyJoinOrderKeys=Po,f.emitExpression=it,f.encodeWalFileHeader=ms,f.encodeWalFrame=ps,f.estimateFilterSelectivity=Oo,f.estimateWhereCost=Go,f.evalExprNode=ue,f.exp=tc,f.extractAggregatesFromExpr=Ko,f.extractFilterColumnNames=Ac,f.f64_to_i32=_s,f.f64_to_i64=ds,f.findIndexOnColumn=jn,f.fn=vu,f.fnv1a_32=Ta,f.formatDisassembly=gc,f.getActiveLiveQueryTracker=Jo,f.getCmpOpcode=zn,f.getFilterReferencedTables=an,f.getMinKeyValueForType=ri,f.getSingleTableBaseCost=nA,f.getTopLevelConjunctionFilters=cn,f.getWebDbCoreWasmBytes=Na,f.get_bit=Nr,f.i64_to_f64=Qs,f.i64_to_i32=Nt,f.inferExprType=cc,f.inferTransitivePredicates=nc,f.isAggregateFunction=eA,f.isBuiltinFunction=Wu,f.isBuiltinScalarFunction=va,f.isIndexAlignedWithOrderBy=xo,f.isQueryBuilder=At,f.liveQuery=gi,f.materializeOutputSelectExprs=$n,f.memcmp=Fl,f.memcpy=kt,f.memset=Zt,f.normalizeFilter=UA,f.normalizeSelectItem=Ei,f.notifyLiveQueryTableRead=xA,f.optimizeQueryPlan=lg,f.optimizeWherePredicates=wo,f.page_binary_search_index_leaf=Ds,f.page_binary_search_interior=Jl,f.page_compact=Fn,f.page_compare_index_keys=Kl,f.page_delete_index_leaf_cell=Ao,f.page_delete_row=kr,f.page_deserialize_row=wA,f.page_get_cell_content_offset=mA,f.page_get_cell_count=_t,f.page_get_cell_offset=Et,f.page_get_checksum=xl,f.page_get_contiguous_free_space=Dn,f.page_get_free_bytes=je,f.page_get_next_page_id=jt,f.page_get_right_child_page_id=Ts,f.page_get_row_length=Ln,f.page_get_table_layout=Xl,f.page_get_total_free_space=Gr,f.page_get_type=dA,f.page_init=Rn,f.page_init_free=Pr,f.page_init_index_leaf=Ss,f.page_init_interior=qr,f.page_insert_index_leaf_cell=eo,f.page_insert_interior_cell=Hr,f.page_insert_row=bn,f.page_serialize_row=to,f.page_set_cell_content_offset=Me,f.page_set_cell_count=_A,f.page_set_cell_offset=He,f.page_set_checksum=Vl,f.page_set_free_bytes=$e,f.page_set_next_page_id=Us,f.page_set_right_child_page_id=Mr,f.page_set_type=Yl,f.page_split_interior=Wl,f.page_table_delete=no,f.page_table_get=Yr,f.page_table_hash=On,f.page_table_set=xr,f.page_update_row=vi,f.parseExpression=Rt,f.parseFilterTarget=Vt,f.parseSelectExpr=ei,f.popLiveQueryTracker=ui,f.pushLiveQueryTracker=li,f.read_f64=st,f.read_i32=vt,f.read_i64=ie,f.read_u16=v,f.read_u32=R,f.read_u64=Ll,f.read_u8=y,f.reconstructJoinPlans=si,f.recoverFromWal=Lo,f.resetVmContext=Ir,f.resolveColumnAcrossTables=Lt,f.resolveQueryPlanner=qo,f.serialize_composite_key=Fs,f.serialize_single_key=jl,f.set_bit=Rr,f.sql=$u,f.sql_like_match=Wn,f.strlen=Cs,f.trackLiveQueryPromise=Wo,f.validateClause=YA,f.validateWalFrame=$i,f.vm_step=ti,f.write_f64=ge,f.write_i32=q,f.write_i64=Ze,f.write_u16=se,f.write_u32=S,f.write_u64=bl,f.write_u8=K,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});
5
5
  //# sourceMappingURL=webdb.umd.cjs.map