43 lines
2.0 MiB
43 lines
2.0 MiB
/*
|
||
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD AND TERSER
|
||
if you want to view the source, please visit the github repository of this plugin
|
||
*/
|
||
|
||
"use strict";function Logger(message,level,key2){_logger(message,level,key2)}function info(message,flagsOrKey,key2){(function __logger(message,baseLevel,flagsOrKey,key2){let level=baseLevel;"string"==typeof flagsOrKey?key2=flagsOrKey:void 0!==flagsOrKey&&(level|=flagsOrKey);_logger(message,level,key2)})(message,LEVEL_INFO,flagsOrKey,key2)}function statusDisplay(status){return status?"EXPERIMENTAL"==status?" (Experimental)":"ALPHA"==status?" (Alpha)":"BETA"==status?" (Beta)":` (${status})`:""}function confName(key2,alt=""){var _a7,_b3;return key2 in configurationNames?`${null==(_a7=configurationNames[key2])?void 0:_a7.name}${statusDisplay(null==(_b3=configurationNames[key2])?void 0:_b3.status)}`:`${alt||""}`}async function getWebCrypto(){if(webcrypto)return webcrypto;if(globalThis.crypto)return webcrypto=globalThis.crypto;{const module2=await import("crypto");return webcrypto=module2.webcrypto}}function base64ToArrayBuffer(base64){if("string"==typeof base64)return base64ToArrayBufferInternalBrowser(base64);const bufItems=base64.map((e3=>base64ToArrayBufferInternalBrowser(e3))),len=bufItems.reduce(((p4,c3)=>p4+c3.byteLength),0),joinedArray=new Uint8Array(len);let offset=0;bufItems.forEach((e3=>{joinedArray.set(new Uint8Array(e3),offset);offset+=e3.byteLength}));return joinedArray.buffer}function base64ToArrayBufferInternalBrowser(base64){try{const binary_string=globalThis.atob(base64),len=binary_string.length,bytes=new Uint8Array(len);for(let i2=0;i2<len;i2++)bytes[i2]=binary_string.charCodeAt(i2);return bytes.buffer}catch(ex){Logger("Base64 Decode error",LOG_LEVEL_VERBOSE);Logger(ex,LOG_LEVEL_VERBOSE);return new ArrayBuffer(0)}}function arrayBufferToBase64internalBrowser(buffer){return new Promise(((res2,rej)=>{const blob=new Blob([buffer],{type:"application/octet-binary"}),reader=new FileReader;reader.onload=function(evt){var _a7,_b3;const dataURI=(null==(_b3=null==(_a7=evt.target)?void 0:_a7.result)?void 0:_b3.toString())||"";if(0!=buffer.byteLength&&(""==dataURI||"data:"==dataURI))return rej(new TypeError("Could not parse the encoded string"));const result=dataURI.substring(dataURI.indexOf(",")+1);res2(result)};reader.readAsDataURL(blob)}))}async function arrayBufferToBase64Single(buffer){const buf=buffer instanceof Uint8Array?buffer:new Uint8Array(buffer);return buf.byteLength<QUANTUM?btoa(String.fromCharCode.apply(null,[...buf])):await arrayBufferToBase64internalBrowser(buf)}async function arrayBufferToBase64(buffer){const buf=buffer instanceof Uint8Array?buffer:new Uint8Array(buffer);if(buf.byteLength<QUANTUM)return[btoa(String.fromCharCode.apply(null,[...buf]))];const bufLen=buf.byteLength,pieces=[];let idx2=0;do{const offset=idx2*encodeChunkSize,pBuf=new DataView(buf.buffer,offset,Math.min(encodeChunkSize,buf.byteLength-offset));pieces.push(await arrayBufferToBase64internalBrowser(pBuf));idx2++}while(idx2*encodeChunkSize<bufLen);return pieces}function writeString(string){if(string.length>128)return te.encode(string);const buffer=new Uint8Array(4*string.length),length=string.length;let index6=0,chr=0,idx2=0;for(;idx2<length;){chr=string.charCodeAt(idx2++);if(chr<128)buffer[index6++]=chr;else if(chr<2048){buffer[index6++]=192|chr>>>6;buffer[index6++]=128|63&chr}else if(chr<55296||chr>57343){buffer[index6++]=224|chr>>>12;buffer[index6++]=128|chr>>>6&63;buffer[index6++]=128|63&chr}else{chr=65536+(chr-55296<<10|string.charCodeAt(idx2++)-56320);buffer[index6++]=240|chr>>>18;buffer[index6++]=128|chr>>>12&63;buffer[index6++]=128|chr>>>6&63;buffer[index6++]=128|63&chr}}return buffer.slice(0,index6)}function readString(buffer){const length=buffer.length;if(length>128)return td.decode(buffer);let index6=0;const end=length;let string="";for(;index6<end;){const chunk=[],cEnd=Math.min(index6+QUANTUM,end);for(;index6<cEnd;){const chr=buffer[index6++];if(chr<128)chunk.push(chr);else if(192==(224&chr))chunk.push((31&chr)<<6|63&buffer[index6++]);else if(224==(240&chr))chunk.push((15&chr)<<12|(63&buffer[index6++])<<6|63&buffer[index6++]);else if(240==(248&chr)){let code=(7&chr)<<18|(63&buffer[index6++])<<12|(63&buffer[index6++])<<6|63&buffer[index6++];if(code<65536)chunk.push(code);else{code-=65536;chunk.push(55296+(code>>>10),56320+(1023&code))}}}string+=String.fromCharCode(...chunk)}return string}function base64ToString(base64){try{if("string"!=typeof base64)return base64.map((e3=>base64ToString(e3))).join("");const binary_string=atob(base64),len=binary_string.length,bytes=new Uint8Array(len);for(let i2=0;i2<len;i2++)bytes[i2]=binary_string.charCodeAt(i2);return readString(bytes)}catch(ex){Logger("Base64 To String error",LOG_LEVEL_VERBOSE);Logger(ex,LOG_LEVEL_VERBOSE);return"string"!=typeof base64?base64.join(""):base64}}function*arrayToChunkedArray(arr,chunkLength){const source2=[...arr];for(;source2.length;){const s2=source2.splice(0,chunkLength);yield s2}}function unique(arr){return[...new Set(arr)]}function _decodeToArrayBuffer(src){const out=new Uint8Array(src.length),len=src.length;for(let i2=0;i2<len;i2++){const char=src.charCodeAt(i2);out[i2]=char>=38&&char<=126&&58!=char?char:revTable[char]}return out.buffer}function hexStringToUint8Array(src){const len=src.length/2,ret=new Uint8Array(len);for(let i2=0;i2<len;i2++)ret[i2]=revMap[src[2*i2]+src[2*i2+1]];return ret}function uint8ArrayToHexString(src){return[...src].map((e3=>numMap[e3])).join("")}function concatUInt8Array(arrays){const length=arrays.reduce(((acc,cur)=>acc+cur.length),0),result=new Uint8Array(length);let pos=0;for(const array of arrays){result.set(array,pos);pos+=array.length}return result}function decodeBinary(src){if(0==src.length)return(new Uint8Array).buffer;if("string"==typeof src){if("%"===src[0])return _decodeToArrayBuffer(src.substring(1))}else if("%"===src[0][0]){const[head2,...last]=src;return function decodeToArrayBuffer(src){if(1==src.length)return _decodeToArrayBuffer(src[0]);const bufItems=src.map((e3=>_decodeToArrayBuffer(e3))),len=bufItems.reduce(((p4,c3)=>p4+c3.byteLength),0),joinedArray=new Uint8Array(len);let offset=0;bufItems.forEach((e3=>{joinedArray.set(new Uint8Array(e3),offset);offset+=e3.byteLength}));return joinedArray.buffer}([head2.substring(1),...last])}return base64ToArrayBuffer(src)}function replaceAll(str,search,replace){return"replaceAll"in String.prototype?str.replaceAll(search,replace):str.split(search).join(replace)}function escapeStringToHTML(str){return str?str.replace(/[<>&"'`]/g,(match3=>({"<":"<",">":">","&":"&",'"':""","'":"'","`":"`"}[match3]))):""}function versionNumberString2Number(version2){return version2.split(".").reverse().map(((e3,i2)=>e3/1*1e3**i2)).reduce(((prev,current)=>prev+current),0)}function isValidFilenameInWidows(filename){return!/[\u0000-\u001f]|[\\":?<>|*#]/g.test(filename)&&!/(\\|\/)(COM\d|LPT\d|CON|PRN|AUX|NUL|CLOCK$)($|\.)/gi.test(filename)}function isValidFilenameInDarwin(filename){return!/[\u0000-\u001f]|[:]/g.test(filename)}function stripAllPrefixes(prefixedPath){if(function isFilePath(path2){return-1===path2.indexOf(":")}(prefixedPath))return prefixedPath;const[,body]=expandFilePathPrefix(prefixedPath);return stripAllPrefixes(body)}function addPrefix(path2,prefix){return prefix&&path2.startsWith(prefix)?path2:`${null!=prefix?prefix:""}${path2}`}function expandFilePathPrefix(path2){let[prefix,body]=path2.split(":",2);if(body)prefix+=":";else{body=prefix;prefix=""}return[prefix,body]}function hashString(key2){return _hashString(key2)}function id2path_base(id,entry){if(entry&&(null==entry?void 0:entry.path))return id2path_base(entry.path);if(id.startsWith(PREFIX_OBFUSCATED))throw new Error("Entry has been obfuscated!");const[prefix,body]=function expandDocumentIDPrefix(id){let[prefix,body]=id.split(":",2);if(body)prefix+=":";else{body=prefix;prefix=""}return[prefix,body]}(id);if(body.startsWith(PREFIX_OBFUSCATED))throw new Error("Entry has been obfuscated!");return body.startsWith("/")?body.substring(1):prefix+body}function getPath(entry){return id2path_base(entry._id,entry)}function shouldBeIgnored(filename){return filename==FLAGMD_REDFLAG||filename==FLAGMD_REDFLAG2||filename==FLAGMD_REDFLAG2_HR||filename==FLAGMD_REDFLAG3||filename==FLAGMD_REDFLAG3_HR||!!filename.startsWith(PREFIXMD_LOGFILE)||!!filename.startsWith(PREFIXMD_LOGFILE_UC)}function isPlainText(filename){return!!(filename.endsWith(".md")||filename.endsWith(".txt")||filename.endsWith(".svg")||filename.endsWith(".html")||filename.endsWith(".csv")||filename.endsWith(".css")||filename.endsWith(".js")||filename.endsWith(".xml")||filename.endsWith(".canvas"))}function isAccepted(path2,ignore){if(-1!==path2.indexOf("./")||-1!==path2.indexOf("../"))return!1;const patterns=ignore.map((e3=>e3.trim())).filter((e3=>e3.length>0&&!e3.startsWith("#")));let result;for(const pattern of patterns){if(pattern.endsWith("/")&&minimatch(path2,`${pattern}**`,matchOpts))return!1;const newResult=pattern.startsWith("!");(minimatch(path2,pattern,matchOpts)||!pattern.endsWith("/")&&minimatch(path2,pattern+"/**",matchOpts))&&(result=newResult)}return result}async function isSomeResolved(promises){return 0!=promises.length&&await Promise.race([...promises,Promise.resolve(UNRESOLVED)])!==UNRESOLVED}function fireAndForget(p4){if("function"==typeof p4)return fireAndForget(p4());p4.then(noop).catch(noop)}function yieldMicrotask(){return new Promise((res2=>queueMicrotask(res2)))}function cancelableDelay(timeout,cancel2=TIMED_OUT_SIGNAL){let timer;const promise=promiseWithResolver();timer=setTimeout((()=>{timer=void 0;promise.resolve(cancel2)}),timeout);return{promise:promise.promise,cancel(){if(timer){clearTimeout(timer);timer=void 0}}}}function Semaphore(limit){let counter=0;const _limit=limit,queue2=[];return{get waiting(){return queue2.length},async tryAcquire(quantity=1,timeout){if(counter<_limit){counter+=quantity;return()=>{this.release(quantity)}}const d4=cancelableDelay(timeout,TIMED_OUT_SIGNAL),aq2=this.acquire(quantity),p4=await Promise.race([d4.promise,aq2]);if(p4===TIMED_OUT_SIGNAL){fireAndForget((()=>aq2.then((release=>release()))));return!1}return p4},async acquire(quantity=1){if(counter<_limit){counter+=quantity;return()=>this.release()}const n3=promiseWithResolver();queue2.push(n3);await n3.promise;return()=>{this.release(quantity)}},release(quantity=1){if(queue2.length>0){const next2=queue2.shift();next2&&fireAndForget((async()=>await yieldMicrotask().then((()=>next2.resolve()))))}else counter>0&&(counter-=quantity)}}}function resetV3Buf(){_nonceV3[0]=0;const _wk=webcrypto2.getRandomValues(new Uint8Array(12));bufV3.set(_wk);bufV3.set(_nonceV3,8)}async function generateKey(passphrase){const passphraseBin=(new TextEncoder).encode(passphrase),salt=(await webcrypto2.subtle.digest("SHA-256",new Uint8Array([...passphraseBin,...SALT]))).slice(0,16),baseKey=await webcrypto2.subtle.importKey("raw",passphraseBin,"PBKDF2",!1,["deriveBits","deriveKey"]),pbkdf2Params={name:"PBKDF2",hash:"SHA-256",salt,iterations:1e5};return await webcrypto2.subtle.deriveKey(pbkdf2Params,baseKey,{name:"AES-GCM",length:256},!1,["decrypt","encrypt"])}async function getKeyForEncrypt(passphrase,autoCalculateIterations){const buffKey=`${passphrase}-${autoCalculateIterations}`,f4=KeyBuffs.get(buffKey);if(f4){f4.count--;if(f4.count>0)return[f4.key,f4.salt];f4.count--}const passphraseLen=15-passphrase.length,iteration=autoCalculateIterations?1e3*(passphraseLen>0?passphraseLen:0)+121-passphraseLen:1e5,passphraseBin=(new TextEncoder).encode(passphrase),digest=await webcrypto3.subtle.digest({name:"SHA-256"},passphraseBin),keyMaterial=await webcrypto3.subtle.importKey("raw",digest,{name:"PBKDF2"},!1,["deriveKey"]),salt=webcrypto3.getRandomValues(new Uint8Array(16)),key2=await webcrypto3.subtle.deriveKey({name:"PBKDF2",salt,iterations:iteration,hash:"SHA-256"},keyMaterial,{name:"AES-GCM",length:256},!1,["encrypt"]);KeyBuffs.set(buffKey,{key:key2,salt,count:KEY_RECYCLE_COUNT});return[key2,salt]}async function getKeyForDecryption(passphrase,salt,autoCalculateIterations){if(--keyGCCount<0){keyGCCount=KEY_RECYCLE_COUNT;const threshold=(decKeyIdx-decKeyMin)/2;for(const[key3,buff]of decKeyBuffs){buff.count<threshold&&decKeyBuffs.delete(key3);decKeyMin=decKeyIdx}}decKeyIdx++;const bufKey=passphrase+uint8ArrayToHexString(salt)+autoCalculateIterations,f4=decKeyBuffs.get(bufKey);if(f4){f4.count=decKeyIdx;return[f4.key,f4.salt]}const passphraseLen=15-passphrase.length,iteration=autoCalculateIterations?1e3*(passphraseLen>0?passphraseLen:0)+121-passphraseLen:1e5,passphraseBin=(new TextEncoder).encode(passphrase),digest=await webcrypto3.subtle.digest({name:"SHA-256"},passphraseBin),keyMaterial=await webcrypto3.subtle.importKey("raw",digest,{name:"PBKDF2"},!1,["deriveKey"]),key2=await webcrypto3.subtle.deriveKey({name:"PBKDF2",salt,iterations:iteration,hash:"SHA-256"},keyMaterial,{name:"AES-GCM",length:256},!1,["decrypt"]);decKeyBuffs.set(bufKey,{key:key2,salt,count:0});return[key2,salt]}function getSemiStaticField(reset2){return null==semiStaticFieldBuffer||reset2?semiStaticFieldBuffer=webcrypto3.getRandomValues(new Uint8Array(12)):semiStaticFieldBuffer}function getNonce(){nonceBuffer[0]++;nonceBuffer[0]>1e4&&getSemiStaticField(!0);return nonceBuffer}async function encrypt(input,passphrase,autoCalculateIterations){const[key2,salt]=await getKeyForEncrypt(passphrase,autoCalculateIterations),fixedPart=getSemiStaticField(),invocationPart=getNonce(),iv=new Uint8Array([...fixedPart,...new Uint8Array(invocationPart.buffer)]),dataBuf=writeString(input),encryptedDataArrayBuffer=await webcrypto3.subtle.encrypt({name:"AES-GCM",iv},key2,dataBuf),encryptedData2=""+await arrayBufferToBase64Single(new Uint8Array(encryptedDataArrayBuffer));return`%${uint8ArrayToHexString(iv)}${uint8ArrayToHexString(salt)}${encryptedData2}`}function isPathProbablyObfuscated(path2){return path2.startsWith("%")&&path2.length>64}async function decrypt(encryptedResult,passphrase,autoCalculateIterations){try{if("%"==encryptedResult[0])return"~"===encryptedResult[1]?async function decryptV3(encryptedResult,passphrase){if(previousDecryptionPassphrase!==passphrase){const key2=await generateKey(passphrase);decryptionKey=key2;previousDecryptionPassphrase=passphrase}const ivStr=encryptedResult.substring(2,26),encryptedData=encryptedResult.substring(26),iv=hexStringToUint8Array(ivStr),encryptedDataArrayBuffer=base64ToArrayBuffer(encryptedData),dataBuffer=await webcrypto2.subtle.decrypt({name:"AES-GCM",iv},decryptionKey,encryptedDataArrayBuffer);return readString(new Uint8Array(dataBuffer))}(encryptedResult,passphrase):async function decryptV2(encryptedResult,passphrase,autoCalculateIterations){try{const ivStr=encryptedResult.substring(1,33),salt=encryptedResult.substring(33,65),encryptedData=encryptedResult.substring(65),[key2]=await getKeyForDecryption(passphrase,hexStringToUint8Array(salt),autoCalculateIterations),iv=hexStringToUint8Array(ivStr),encryptedDataArrayBuffer=decodeBinary(encryptedData),dataBuffer=await webcrypto3.subtle.decrypt({name:"AES-GCM",iv},key2,encryptedDataArrayBuffer);return readString(new Uint8Array(dataBuffer))}catch(ex){Logger("Couldn't decode! You should wrong the passphrases (V2)",LOG_LEVEL_VERBOSE);Logger(ex,LOG_LEVEL_VERBOSE);throw ex}}(encryptedResult,passphrase,autoCalculateIterations);if(!encryptedResult.startsWith("[")||!encryptedResult.endsWith("]"))throw new Error("Encrypted data corrupted!");const w2=encryptedResult.substring(1,encryptedResult.length-1).split(",").map((e3=>'"'==e3[0]?e3.substring(1,e3.length-1):e3)),[encryptedData,ivString,salt]=w2,[key2]=await getKeyForDecryption(passphrase,hexStringToUint8Array(salt),autoCalculateIterations),iv=hexStringToUint8Array(ivString),encryptedDataBin=atob(encryptedData),len=encryptedDataBin.length,encryptedDataArrayBuffer=new Uint8Array(len);for(let i2=len;i2>=0;--i2)encryptedDataArrayBuffer[i2]=encryptedDataBin.charCodeAt(i2);const plainStringBuffer=await webcrypto3.subtle.decrypt({name:"AES-GCM",iv},key2,encryptedDataArrayBuffer),plainStringified=readString(new Uint8Array(plainStringBuffer));return JSON.parse(plainStringified)}catch(ex){Logger("Couldn't decode! You should wrong the passphrases",LOG_LEVEL_VERBOSE);Logger(ex,LOG_LEVEL_VERBOSE);throw ex}}async function testCrypt(){const src="✨supercalifragilisticexpialidocious✨⛰️",encoded=await encrypt(src,"passwordTest",!1);if(src!=await decrypt(encoded,"passwordTest",!1)){Logger("WARNING! Your device would not support encryption.",LOG_LEVEL_VERBOSE);return!1}{Logger("CRYPT LOGIC OK",LOG_LEVEL_VERBOSE);const w2=(new TextEncoder).encode(src),encodedBinary=await encryptBinary(w2,"passwordTest",!1),decryptedBinary=await decryptBinary(encodedBinary,"passwordTest",!1);if(w2.join("-")!==decryptedBinary.join("-")){Logger("WARNING! Your device would not support encryption (Binary).",LOG_LEVEL_VERBOSE);return!1}Logger("CRYPT LOGIC OK (Binary)",LOG_LEVEL_VERBOSE);return await async function testCryptV3(){const src="✨supercalifragilisticexpialidocious✨⛰️",encoded=await async function encryptV3(input,passphrase){if(previousPassphrase!==passphrase){resetV3Buf();const key2=await generateKey(passphrase);encryptionKey=key2;previousPassphrase=passphrase}const iv=function incIV(){_nonceV3[0]++;bufV3.set(_nonceV3,8);_nonceV3[0]>1500&&resetV3Buf();return bufV3}(),dataBuf=writeString(input),encryptedDataArrayBuffer=await webcrypto2.subtle.encrypt({name:"AES-GCM",iv},encryptionKey,dataBuf),encryptedData2=""+await arrayBufferToBase64Single(new Uint8Array(encryptedDataArrayBuffer));return`%~${uint8ArrayToHexString(iv)}${encryptedData2}`}(src,"passwordTest");if(src!=await decrypt(encoded,"passwordTest",!1)){Logger("WARNING! Your device would not support encryption V3.",LOG_LEVEL_VERBOSE);return!1}Logger("CRYPT LOGIC (V3) OK",LOG_LEVEL_VERBOSE);return!0}()}}async function encryptBinary(input,passphrase,autoCalculateIterations){const[key2,salt]=await getKeyForEncrypt(passphrase,autoCalculateIterations),fixedPart=getSemiStaticField(),invocationPart=getNonce(),iv=new Uint8Array([...fixedPart,...new Uint8Array(invocationPart.buffer)]),dataBuf=input,encryptedDataArrayBuffer=new Uint8Array(await webcrypto3.subtle.encrypt({name:"AES-GCM",iv},key2,dataBuf)),ret=new Uint8Array(encryptedDataArrayBuffer.byteLength+iv.byteLength+salt.byteLength);ret.set(iv,0);ret.set(salt,iv.byteLength);ret.set(encryptedDataArrayBuffer,iv.byteLength+salt.byteLength);return ret}async function decryptBinary(encryptedResult,passphrase,autoCalculateIterations){try{const iv=encryptedResult.slice(0,16),salt=encryptedResult.slice(16,32),encryptedData=encryptedResult.slice(32),[key2]=await getKeyForDecryption(passphrase,salt,autoCalculateIterations),dataBuffer=await webcrypto3.subtle.decrypt({name:"AES-GCM",iv},key2,encryptedData);return new Uint8Array(dataBuffer)}catch(ex){Logger("Couldn't decode! You should wrong the passphrases (V2 Bin)",LOG_LEVEL_VERBOSE);Logger(ex,LOG_LEVEL_VERBOSE);throw ex}}function handleTaskSplit(process2,data){const key2=data.key,task=process2.task;if("result"in data)if(null===data.result){task.resolve(null);tasks.delete(key2)}else{task.resolve(data.result);process2.task=promiseWithResolver()}else{data.error?task.reject(data.error):task.reject(new Error("Unknown error in background splitting"));tasks.delete(key2)}}function handleTaskEncrypt(process2,data){const key2=data.key,task=process2.task;"result"in data?task.resolve(data.result):data.error?task.reject(data.error):task.reject(new Error("Unknown error in background encryption"));tasks.delete(key2)}function splitPieces2Worker(dataSrc,pieceSize,plainSplit,minimumChunkSize,filename,useSegmenter){return _splitPieces2Worker(dataSrc,pieceSize,plainSplit,minimumChunkSize,filename,!1,null!=useSegmenter&&useSegmenter)}function splitPieces2WorkerV2(dataSrc,pieceSize,plainSplit,minimumChunkSize,filename,useSegmenter){return _splitPieces2Worker(dataSrc,pieceSize,plainSplit,minimumChunkSize,filename,!0,null!=useSegmenter&&useSegmenter)}function startWorker(data){const _key=key++,inst=function nextWorker(){const inst=workers[roundRobinIdx];roundRobinIdx=(roundRobinIdx+1)%workers.length;return inst}(),item={key:_key,task:promiseWithResolver(),type:data.type,finalize:()=>{inst.processing--}};tasks.set(_key,item);inst.processing++;inst.worker.postMessage({data:{...data,key:_key}});return item}function encryptionOnWorker(data){const process2=startWorker(data);return(async()=>{const ret=await process2.task.promise;process2.finalize();return ret})()}function _splitPieces2Worker(dataSrc,pieceSize,plainSplit,minimumChunkSize,filename,useV2,useSegmenter){const process2=startWorker({type:"split",dataSrc,pieceSize,plainSplit,minimumChunkSize,filename,useV2,useSegmenter}),_key=process2.key;return async function*(){for(;tasks.has(_key);){const{task}=tasks.get(_key),result=await task.promise;if(null===result){process2.finalize();return}yield result}}}function serialized(key2,proc){var _a7;const prev=serializedMap.get(key2),p4=promiseWithResolver();queueCount.set(key2,(null!=(_a7=queueCount.get(key2))?_a7:0)+1);const nextTask=async()=>{try{p4.resolve(await proc())}catch(ex){p4.reject(ex)}finally{const count=queueCount.get(key2)-1;if(0===count){serializedMap.delete(key2);queueCount.delete(key2)}else queueCount.set(key2,count)}};if(prev){const newP=prev.then((()=>nextTask()));serializedMap.set(key2,newP)}else serializedMap.set(key2,nextTask());return p4.promise}function shareRunningResult(key2,proc){const prev=shareSerializedMap.get(key2);if(prev)return prev;const p4=promiseWithResolver();shareSerializedMap.set(key2,p4.promise);fireAndForget((()=>(async()=>{try{p4.resolve(await proc())}catch(ex){p4.reject(ex)}finally{shareSerializedMap.delete(key2)}})()));return p4.promise}function skipIfDuplicated(key2,proc){if(skipDuplicatedMap.get(key2))return Promise.resolve(null);const p4=promiseWithResolver();skipDuplicatedMap.set(key2,p4.promise);fireAndForget((()=>(async()=>{try{p4.resolve(await proc())}catch(ex){p4.reject(ex)}finally{skipDuplicatedMap.delete(key2)}})()));return p4.promise}async function scheduleOnceIfDuplicated(key2,proc){if(isLockAcquired(key2)){waitingProcessMap.set(key2,proc);return Promise.resolve(void 0)}return await serialized(key2,proc).then((()=>{const nextProc=waitingProcessMap.get(key2);if(nextProc){waitingProcessMap.delete(key2);return scheduleOnceIfDuplicated(key2,nextProc)}}))}function isLockAcquired(key2){var _a7;return(null!=(_a7=queueCount.get(key2))?_a7:0)>0}function deflateSync(data,opts){return dopt(data,opts||{},0,0)}function inflateSync(data,opts){return inflt(data,{i:2},opts&&opts.out,opts&&opts.dictionary)}function isCloudantURI(uri){return-1!==uri.indexOf(".cloudantnosqldb.")||-1!==uri.indexOf(".cloudant.com")}function wrapFflateFunc(func){return(data,opts)=>new Promise(((res2,rej)=>{func(data,opts,((err2,result)=>{err2?rej(err2):res2(result)}))}))}function isErrorOfMissingDoc(ex){return 404==(ex&&(null==ex?void 0:ex.status))}async function collectChunks(db,type){const rows=await async function collectChunksUsage(db){if(!await async function prepareChunkDesignDoc(db){var _a7;const chunkDesignDoc={_id:"_design/chunks",_rev:void 0,ver:2,views:{collectDangling:{map:(function(doc){doc._id.startsWith("h:")?emit([doc._id],0):"children"in doc&&doc.children.forEach((e3=>emit([e3],1)))}).toString(),reduce:"_sum"}}};let updateDDoc=!1;try{const old=await db.get(chunkDesignDoc._id);if(null!=(_a7=null==old?void 0:old.ver)?_a7:0<chunkDesignDoc.ver){chunkDesignDoc._rev=old._rev;updateDDoc=!0}}catch(ex){if(404!=ex.status){Logger("Failed to make design document for operating chunks");Logger(ex,LOG_LEVEL_VERBOSE);return!1}updateDDoc=!0}try{updateDDoc&&await db.put(chunkDesignDoc)}catch(ex){Logger("Failed to make design document for operating chunks");Logger(ex,LOG_LEVEL_VERBOSE);return!1}return!0}(db)){Logger("Could not prepare design document for operating chunks");return[]}return(await db.query("chunks/collectDangling",{reduce:!0,group:!0})).rows}(db),ids=("ALL"==type?rows:rows.filter((e3=>"DANGLING"==type?0==e3.value:0!=e3.value))).flatMap((e3=>e3.key));return(await db.allDocs({keys:ids})).rows.filter((e3=>!("error"in e3))).map((e3=>({id:e3.id,rev:e3.value.rev})))}function sizeToHumanReadable(size){if(!size)return"-";const i2=Math.floor(Math.log(size)/Math.log(1024));return Number.parseInt((size/Math.pow(1024,i2)).toFixed(2))+" "+["B","kB","MB","GB","TB"][i2]}async function purgeUnreferencedChunks(db,dryRun,connSetting,performCompact=!1){const info3=await db.info();let resultCount=0;const getSize=function(info4,key2){var _a7,_b3;return Number.parseInt(null!=(_b3=null==(_a7=null==info4?void 0:info4.sizes)?void 0:_a7[key2])?_b3:0)},keySuffix=connSetting?"-remote":"-local";Logger(`${dryRun?"Counting":"Cleaning"} ${connSetting?"remote":"local"} database`,LOG_LEVEL_NOTICE);connSetting&&Logger(`Database active-size: ${sizeToHumanReadable(getSize(info3,"active"))}, external-size:${sizeToHumanReadable(getSize(info3,"external"))}, file-size: ${sizeToHumanReadable(getSize(info3,"file"))}`,LOG_LEVEL_NOTICE);Logger(`Collecting unreferenced chunks on ${info3.db_name}`,LOG_LEVEL_NOTICE,"gc-count-chunk"+keySuffix);const chunks=await function collectUnreferencedChunks(db){return collectChunks(db,"DANGLING")}(db);resultCount=chunks.length;if(0==chunks.length)Logger(`No unreferenced chunks! ${info3.db_name}`,LOG_LEVEL_NOTICE,"gc-count-chunk"+keySuffix);else{Logger(`Number of unreferenced chunks on ${info3.db_name}: ${chunks.length}`,LOG_LEVEL_NOTICE,"gc-count-chunk"+keySuffix);if(dryRun){Logger(`DryRun of cleaning ${connSetting?"remote":"local"} database up: Done`,LOG_LEVEL_NOTICE);return resultCount}if(connSetting){Logger("Cleaning unreferenced chunks on remote",LOG_LEVEL_NOTICE,"gc-purge"+keySuffix);await async function purgeChunksRemote(setting,docs){await serialized("purge-remote",(async()=>{const buffer=function makeChunkedArrayFromArray(items){const chunked=[];for(let i2=0;i2<items.length;i2+=100)chunked.push(items.slice(i2,i2+100));return chunked}(docs);for(const chunkedPayload of buffer){const rets=await _requestToCouchDBFetch(`${setting.couchDB_URI}/${setting.couchDB_DBNAME}`,setting.couchDB_USER,setting.couchDB_PASSWORD,"_purge",Object.fromEntries(chunkedPayload.map((e3=>[e3.id,[e3.rev]]))),"POST");Logger(JSON.stringify(await rets.json()),LOG_LEVEL_VERBOSE)}}))}(connSetting,chunks)}else{Logger("Cleaning unreferenced chunks on local",LOG_LEVEL_NOTICE,"gc-purge"+keySuffix);await async function purgeChunksLocal(db,docs){await serialized("purge-local",(async()=>{try{Logger(`Purging unused ${docs.length} chunks `,LOG_LEVEL_NOTICE,"purge-local-backup");const batchDocsBackup=arrayToChunkedArray(docs,100);let total={ok:0,exist:0,error:0};for(const docsInBatch of batchDocsBackup){const backupDocs=(await db.allDocs({keys:docsInBatch.map((e3=>e3.id)),include_docs:!0})).rows.filter((e3=>"doc"in e3)).map((e3=>{const chunk={...e3.doc};delete chunk._rev;chunk._id=`_local/${chunk._id}`;return chunk})),ret=await db.bulkDocs(backupDocs);total=ret.map((e3=>({ok:"ok"in e3?1:0,exist:"status"in e3&&409==e3.status?1:0,error:"status"in e3&&409!=e3.status?1:0}))).reduce(((p4,c3)=>({ok:p4.ok+c3.ok,exist:p4.exist+c3.exist,error:p4.error+c3.error})),total);Logger(`Local chunk backed up: new:${total.ok} ,exist:${total.exist}, error:${total.error}`,LOG_LEVEL_NOTICE,"purge-local-backup");const erroredItems=ret.filter((e3=>"error"in e3&&409!=e3.status));for(const item of erroredItems)Logger(`Failed to back up: ${item.id} / ${item.rev}`,LOG_LEVEL_VERBOSE)}}catch(ex){Logger("Could not back up chunks");Logger(ex,LOG_LEVEL_VERBOSE)}Logger(`Purging unused ${docs.length} chunks... `,LOG_LEVEL_NOTICE,"purge-local");const batchDocs=arrayToChunkedArray(docs,100);let totalRemoved=0;for(const docsInBatch of batchDocs){const removed=await db.purgeMulti(docsInBatch.map((e3=>[e3.id,e3.rev])));totalRemoved+=Object.values(removed).filter((e3=>"ok"in e3)).length;Logger(`Purging: ${totalRemoved} / ${docs.length}`,LOG_LEVEL_NOTICE,"purge-local")}Logger(`Purging unused chunks done!: ${totalRemoved} chunks has been deleted.`,LOG_LEVEL_NOTICE,"purge-local")}))}(db,chunks)}Logger("Cleaning unreferenced chunks done!",LOG_LEVEL_NOTICE,"gc-purge"+keySuffix)}if(performCompact){Logger("Compacting database...",LOG_LEVEL_NOTICE,"gc-compact"+keySuffix);await db.compact();Logger("Compacting database done",LOG_LEVEL_NOTICE,"gc-compact"+keySuffix)}if(connSetting){const endInfo=await db.info();Logger(`Processed database active-size: ${sizeToHumanReadable(getSize(endInfo,"active"))}, external-size:${sizeToHumanReadable(getSize(endInfo,"external"))}, file-size: ${sizeToHumanReadable(getSize(endInfo,"file"))}`,LOG_LEVEL_NOTICE);Logger(`Reduced sizes: active-size: ${sizeToHumanReadable(getSize(info3,"active")-getSize(endInfo,"active"))}, external-size:${sizeToHumanReadable(getSize(info3,"external")-getSize(endInfo,"external"))}, file-size: ${sizeToHumanReadable(getSize(info3,"file")-getSize(endInfo,"file"))}`,LOG_LEVEL_NOTICE)}Logger(`Cleaning ${connSetting?"remote":"local"} database up: Done`,LOG_LEVEL_NOTICE);return resultCount}function transferChunks(key2,label,dbFrom,dbTo,items){let totalProcessed=0;const total=items.length;return new QueueProcessor((async batched=>{const requestItems=batched.map((e3=>e3.id));return(await dbTo.allDocs({keys:requestItems})).rows.filter((e3=>"error"in e3&&"not_found"==e3.error)).map((e3=>e3.key))}),{batchSize:50,concurrentLimit:5,suspended:!0,delay:100},items).pipeTo(new QueueProcessor((async chunkIds=>(await dbFrom.allDocs({keys:chunkIds,include_docs:!0})).rows.filter((e3=>!("error"in e3))).map((e3=>e3.doc))),{batchSize:25,concurrentLimit:1,suspended:!0,delay:100})).pipeTo(new QueueProcessor((async docs=>{try{await dbTo.bulkDocs(docs,{new_edits:!1})}catch(ex){Logger(`${label}: Something went wrong on balancing`,LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_VERBOSE)}finally{totalProcessed+=docs.length;Logger(`${label}: ${totalProcessed} / ${total}`,LOG_LEVEL_NOTICE,"balance-"+key2)}}),{batchSize:100,delay:100,concurrentLimit:2,suspended:!1})).startPipeline().waitForAllDoneAndTerminate()}async function balanceChunkPurgedDBs(local,remote){Logger("Complement missing chunks between databases",LOG_LEVEL_NOTICE);try{const{onlyOnLocal,onlyOnRemote}=await async function collectUnbalancedChunkIDs(local,remote){const chunksOnLocal=await collectChunks(local,"INUSE"),chunksOnRemote=await collectChunks(remote,"INUSE");return{onlyOnLocal:chunksOnLocal.filter((e3=>!chunksOnRemote.some((ee=>ee.id==e3.id)))),onlyOnRemote:chunksOnRemote.filter((e3=>!chunksOnLocal.some((ee=>ee.id==e3.id))))}}(local,remote),localToRemote=transferChunks("l2r","local -> remote",local,remote,onlyOnLocal),remoteToLocal=transferChunks("r2l","remote -> local",remote,local,onlyOnRemote);await Promise.all([localToRemote,remoteToLocal]);Logger("local -> remote: Done",LOG_LEVEL_NOTICE,"balance-l2r");Logger("remote -> local: Done",LOG_LEVEL_NOTICE,"balance-r2l")}catch(ex){Logger("Something went wrong on balancing!",LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_VERBOSE)}Logger("Complement completed!",LOG_LEVEL_NOTICE)}function extractObject(template2,obj){const ret={...template2};for(const key2 in ret)ret[key2]=obj[key2];return ret}function isObjectDifferent(a2,b3,ignoreUndefined=!1){if(typeof a2!=typeof b3)return!0;if("object"==typeof a2){if(null===a2||null===b3)return a2!==b3;const keys3=[...new Set([...Object.keys(a2),...Object.keys(b3)])];return ignoreUndefined?keys3.map((key2=>void 0!==(null==a2?void 0:a2[key2])&&void 0!==(null==b3?void 0:b3[key2])&&isObjectDifferent(null==a2?void 0:a2[key2],null==b3?void 0:b3[key2]))).some((e3=>1==e3)):keys3.map((key2=>isObjectDifferent(key2 in a2?a2[key2]:SYMBOL_A,key2 in b3?b3[key2]:SYMBOL_B))).some((e3=>1==e3))}return a2!==b3}function sizeToHumanReadable2(size){const units=["B","KB","MB","GB","TB"];let i2=0;for(;size>=1024&&i2<units.length;){size/=1024;i2++}return size.toFixed(2)+units[i2]}function resolveWithIgnoreKnownError(p4,def){return new Promise(((res2,rej)=>{p4.then(res2).catch((ex=>isErrorOfMissingDoc(ex)?res2(def):rej(ex)))}))}function getDocData(doc){return"string"==typeof doc?doc:doc.join("")}function getDocDataAsArray(doc){return"string"==typeof doc?[doc]:doc}function isTextBlob(blob){return"text/plain"===blob.type}function createTextBlob(data){const d4=Array.isArray(data)?data:[data];return new Blob(d4,{endings:"transparent",type:"text/plain"})}function createBinaryBlob(data){return new Blob([data],{endings:"transparent",type:"application/octet-stream"})}function createBlob(data){return data instanceof Blob?data:data instanceof Uint8Array||data instanceof ArrayBuffer?createBinaryBlob(data):createTextBlob(data)}function isTextDocument(doc){return"plain"==doc.type||"plain"==doc.datatype||!!isPlainText(doc.path)}function readAsBlob(doc){return isTextDocument(doc)?createTextBlob(doc.data):createBinaryBlob(decodeBinary(doc.data))}function readContent(doc){return isTextDocument(doc)?getDocData(doc.data):decodeBinary(doc.data)}async function isDocContentSame(docA,docB){const blob1=createBlob(docA),blob2=createBlob(docB);if(blob1.size!=blob2.size)return!1;if(isIndexDBCmpExist)return 0===window.indexedDB.cmp(await blob1.arrayBuffer(),await blob2.arrayBuffer());const length=blob1.size;let i2=0;for(;i2<length;){const ab1=await blob1.slice(i2,i2+1e4).arrayBuffer(),ab2=await blob2.slice(i2,i2+1e4).arrayBuffer();i2+=1e4;if(await arrayBufferToBase64Single(ab1)!=await arrayBufferToBase64Single(ab2))return!1}return!0}function isObfuscatedEntry(doc){return!!doc._id.startsWith(PREFIX_OBFUSCATED)}function isEncryptedChunkEntry(doc){return!!doc._id.startsWith(PREFIX_ENCRYPTED_CHUNK)}function isSyncInfoEntry(doc){return doc._id==SYNCINFO_ID}function determineTypeFromBlob(data){return isTextBlob(data)?"plain":"newnote"}function isAnyNote(doc){return"type"in doc&&("newnote"==doc.type||"plain"==doc.type)}function setAllItems(set2,items){items.forEach((e3=>set2.add(e3)));return set2}function escapeMarkdownValue(value){return"string"==typeof value?function replaceAllPairs(str,...fromTo){let r4=`${str}`;for(const[from,to]of fromTo)r4=replaceAll(r4,from,to);return r4}(value,["|","\\|"],["`","\\`"]):value}async function wrapException(func){try{return await func()}catch(ex){return ex instanceof Error?ex:new Error(ex)}}function isDirty(key2,value){if(previousValues.get(key2)===value)return!1;previousValues.set(key2,value);return!0}function isSensibleMargeApplicable(path2){return!!path2.endsWith(".md")}function isObjectMargeApplicable(path2){return!!path2.endsWith(".canvas")||!!path2.endsWith(".json")}function tryParseJSON(str,fallbackValue){try{return JSON.parse(str)}catch(e3){return fallbackValue}}function unorderedArrayToObject(obj){return obj.map((e3=>({[e3.id]:e3}))).reduce(((p4,c3)=>({...p4,...c3})),{})}function objectToUnorderedArray(obj){const entries2=Object.entries(obj);if(entries2.some((e3=>{var _a7;return e3[0]!=(null==(_a7=e3[1])?void 0:_a7.id)})))throw new Error("Item looks like not unordered array");return entries2.map((e3=>e3[1]))}function generatePatchUnorderedArray(from,to){if(from.every((e3=>"object"==typeof e3&&"id"in e3))&&to.every((e3=>"object"==typeof e3&&"id"in e3))){const diff=generatePatchObj(unorderedArrayToObject(from),unorderedArrayToObject(to));return Object.keys(diff).length>0?{[MARK_ISARRAY]:diff}:{}}return{[MARK_SWAPPED]:to}}function generatePatchObj(from,to){const entries2=Object.entries(from),tempMap=new Map(entries2),ret={},newEntries=Object.entries(to);for(const[key2,value]of newEntries)if(tempMap.has(key2)){const v2=tempMap.get(key2);if(typeof v2!=typeof value||Array.isArray(v2)!==Array.isArray(value))ret[key2]={[MARK_SWAPPED]:value};else if(null===v2&&null===value);else if(null===v2&&null!==value)ret[key2]={[MARK_SWAPPED]:value};else if(null!==v2&&null===value)ret[key2]={[MARK_SWAPPED]:value};else if("object"!=typeof v2||"object"!=typeof value||Array.isArray(v2)||Array.isArray(value))if("object"==typeof v2&&"object"==typeof value&&Array.isArray(v2)&&Array.isArray(value)){const wk2=generatePatchUnorderedArray(v2,value);Object.keys(wk2).length>0&&(ret[key2]=wk2)}else"object"!=typeof v2&&"object"!=typeof value?JSON.stringify(tempMap.get(key2))!==JSON.stringify(value)&&(ret[key2]=value):JSON.stringify(tempMap.get(key2))!==JSON.stringify(value)&&(ret[key2]={[MARK_SWAPPED]:value});else{const wk2=generatePatchObj(v2,value);Object.keys(wk2).length>0&&(ret[key2]=wk2)}tempMap.delete(key2)}else{ret[key2]=value;tempMap.delete(key2)}for(const[key2]of tempMap)ret[key2]=MARK_DELETED;return ret}function applyPatch(from,patch){const ret=from,patches=Object.entries(patch);for(const[key2,value]of patches)if(value!=MARK_DELETED)if(null!==value)if("object"==typeof value){if(MARK_SWAPPED in value){ret[key2]=value[MARK_SWAPPED];continue}if(MARK_ISARRAY in value){key2 in ret||(ret[key2]=[]);if(!Array.isArray(ret[key2]))throw new Error("Patch target type is mismatched (array to something)");const appliedArray=objectToUnorderedArray(applyPatch(unorderedArrayToObject(ret[key2]),value[MARK_ISARRAY]));ret[key2]=[...appliedArray]}else{if(!(key2 in ret)){ret[key2]=value;continue}ret[key2]=applyPatch(ret[key2],value)}}else ret[key2]=value;else ret[key2]=null;else delete ret[key2];return ret}function mergeObject(objA,objB){const newEntries=Object.entries(objB),ret={...objA};if(typeof objA!=typeof objB||Array.isArray(objA)!==Array.isArray(objB))return objB;for(const[key2,v2]of newEntries)if(key2 in ret){const value=ret[key2];typeof v2!=typeof value||Array.isArray(v2)!==Array.isArray(value)?ret[key2]=v2:"object"!=typeof v2||"object"!=typeof value||Array.isArray(v2)||Array.isArray(value)?"object"==typeof v2&&"object"==typeof value&&Array.isArray(v2)&&Array.isArray(value)?ret[key2]=[...new Set([...v2,...value])]:ret[key2]=v2:ret[key2]=mergeObject(v2,value)}else ret[key2]=v2;const retSorted=Object.fromEntries(Object.entries(ret).sort(((a2,b3)=>a2[0]<b3[0]?-1:a2[0]>b3[0]?1:0)));return Array.isArray(objA)&&Array.isArray(objB)?Object.values(retSorted):retSorted}function flattenObject(obj,path2=[]){if("object"!=typeof obj)return[[path2.join("."),obj]];if(null===obj)return[[path2.join("."),null]];if(Array.isArray(obj))return[[path2.join("."),JSON.stringify(obj)]];const e3=Object.entries(obj),ret=[];for(const[key2,value]of e3){const p4=flattenObject(value,[...path2,key2]);ret.push(...p4)}return ret}async function e(){function c3(t3,n4){if(e3.buffer.byteLength<t3+n4){const r5=Math.ceil((t3+n4-e3.buffer.byteLength)/65536);e3.grow(r5),a2=new Uint8Array(e3.buffer)}}function l2(t3,e4,n4,r5,i3,o3){c3(t3);const h4=new Uint8Array(t3);return a2.set(h4),n4(0,e4),h4.set(a2.slice(0,t3)),{update(e5){let n5;return a2.set(h4),"string"==typeof e5?(c3(3*e5.length,t3),n5=b3.encodeInto(e5,a2.subarray(t3)).written):(c3(e5.byteLength,t3),a2.set(e5,t3),n5=e5.byteLength),r5(0,t3,n5),h4.set(a2.slice(0,t3)),this},digest:()=>(a2.set(h4),o3(i3(0)))}}function d4(t3){return t3>>>0}function y2(t3){return t3&f4}function p4(t3){let e4=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return c3(3*t3.length,0),d4(n3(0,b3.encodeInto(t3,a2).written,e4))}function v2(t3){let e4=arguments.length>1&&void 0!==arguments[1]?arguments[1]:w2;return c3(3*t3.length,0),y2(r4(0,b3.encodeInto(t3,a2).written,e4))}const{instance:{exports:{mem:e3,xxh32:n3,xxh64:r4,init32:i2,update32:o2,digest32:h3,init64:s2,update64:u2,digest64:g2}}}=await WebAssembly.instantiate(t);let a2=new Uint8Array(e3.buffer);const f4=BigInt(2)**BigInt(64)-BigInt(1),b3=new TextEncoder,w2=BigInt(0);return{h32:p4,h32ToString(t3){return p4(t3,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0).toString(16).padStart(8,"0")},h32Raw(t3){let e4=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return c3(t3.byteLength,0),a2.set(t3),d4(n3(0,t3.byteLength,e4))},create32(){return l2(48,arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i2,o2,h3,d4)},h64:v2,h64ToString(t3){return v2(t3,arguments.length>1&&void 0!==arguments[1]?arguments[1]:w2).toString(16).padStart(16,"0")},h64Raw(t3){let e4=arguments.length>1&&void 0!==arguments[1]?arguments[1]:w2;return c3(t3.byteLength,0),a2.set(t3),y2(r4(0,t3.byteLength,e4))},create64(){return l2(88,arguments.length>0&&void 0!==arguments[0]?arguments[0]:w2,s2,u2,g2,y2)}}}function mixedHash(str,seed,fnv1aHash_=epochFNV1a){let h1=seed,fnv1aHash=fnv1aHash_;const len=str.length;for(let i2=0;i2<len;i2++){let k1=str.charCodeAt(i2);fnv1aHash^=k1;fnv1aHash=Math.imul(fnv1aHash,16777619)>>>0;k1*=c1;k1=k1<<r1|k1>>>32-r1;k1*=c2;h1^=k1;h1=h1<<r2|h1>>>32-r2;h1=h1*m+n}h1^=len;h1^=h1>>>16;h1=Math.imul(h1,2246822507);h1^=h1>>>13;h1=Math.imul(h1,3266489909);h1^=h1>>>16;return[h1>>>0,fnv1aHash]}function fallbackMixedHashEach(src){let m3=1,f4=epochFNV1a;[m3,f4]=mixedHash(`${src.length}${src}`,m3,f4);return`${m3.toString(36)}${f4.toString(36)}`}async function sha1(src){const bytes=writeString(src),digest=await globalThis.crypto.subtle.digest({name:"SHA-1"},bytes);return await arrayBufferToBase64Single(digest)}function digestHash(src){let hash3="";for(const v2 of src)hash3=hashFunc(hash3+v2);return""==hash3?hashFunc("**"):hash3}function isTextBlob2(blob){return"text/plain"===blob.type}function*pickPiece(leftData,minimumChunkSize){let buffer="";L1:do{const curLine=leftData.shift();if(void 0===curLine){yield buffer;break L1}if(curLine.startsWith("```")||curLine.startsWith(" ```")||curLine.startsWith(" ```")||curLine.startsWith(" ```")){yield buffer;buffer=curLine+(0!=leftData.length?"\n":"");L2:do{const curPx=leftData.shift();if(void 0===curPx)break L2;buffer+=curPx+(0!=leftData.length?"\n":"")}while(leftData.length>0&&!(leftData[0].startsWith("```")||leftData[0].startsWith(" ```")||leftData[0].startsWith(" ```")||leftData[0].startsWith(" ```")));const isLooksLikeBASE64=buffer.endsWith("="),maybeUneditable=buffer.length>2048,endOfCodeBlock=leftData.shift();if(void 0!==endOfCodeBlock){buffer+=endOfCodeBlock;buffer+=0!=leftData.length?"\n":""}if(isLooksLikeBASE64||maybeUneditable)yield buffer;else{const splitExpr=/(.*?[;,:<])/g,sx=buffer.split(splitExpr).filter((e3=>""!=e3));for(const v2 of sx)yield v2}buffer=""}else{buffer+=curLine+(0!=leftData.length?"\n":"");if(buffer.length>=minimumChunkSize||0==leftData.length||"#"==leftData[0]||"#"==buffer[0]){yield buffer;buffer=""}}}while(leftData.length>0)}function*splitStringWithinLength(text2,pieceSize){let leftData=text2;do{const splitSize=pieceSize,piece=leftData.substring(0,splitSize);leftData=leftData.substring(splitSize);yield piece}while(""!=leftData)}function*splitTextInSegment(text2,pieceSize,minimumChunkSize){const segments=segmenter.segment(text2);let prev="",buf="";for(const seg of segments){const buffer=seg.segment;if(prev==buffer||buf.length<minimumChunkSize){buf+=buffer;prev=buffer}else{prev=buffer;buf.length>0&&(yield*splitStringWithinLength(buf,pieceSize));buf=buffer}}buf.length>0&&(yield*splitStringWithinLength(buf,pieceSize))}function*chunkStringGenerator(source2,maxLength){const strLen=source2.length;if(strLen>maxLength){let from=0;do{let end=from+maxLength;if(end>strLen){yield source2.substring(from);break}for(;source2.charCodeAt(end-1)!=source2.codePointAt(end-1);)end++;yield source2.substring(from,end);from=end}while(from<strLen)}else yield source2}async function splitPieces2V2(dataSrc,pieceSize,plainSplit,minimumChunkSize,filename,useSegmenter){if(0==dataSrc.size)return function*noItems(){};if(isTextBlob2(dataSrc)){const text2=await dataSrc.text();if(!plainSplit){const gen2=chunkStringGenerator(text2,pieceSize);return function*pieces(){yield*gen2}}const textLen=text2.length;let xMinimumChunkSize=minimumChunkSize;for(;textLen/xMinimumChunkSize>MAX_ITEMS;)xMinimumChunkSize+=minimumChunkSize;const gen1=function*splitByDelimiterWithMinLength(sources,delimiter,minimumChunkLength=25,splitThreshold){let buf="",last=!1;const dl=delimiter.length;for(const source2 of sources){const max3=source2.length;if(splitThreshold&&max3>splitThreshold){yield buf+source2;last=!1;buf="";continue}let i2=-1,prev=0;L1:do{i2=source2.indexOf(delimiter,prev);if(-1==i2)break L1;buf+=source2.slice(prev,i2)+delimiter;if(buf.length>minimumChunkLength){yield buf;buf="";last=!1}else last=!0;prev=i2+dl}while(i2<max3);if(prev!=i2||-1==prev&&-1==i2){buf+=source2.slice(prev);last=!0}}last&&(yield buf)}(function*stringGenerator(sources){for(const str of sources)yield str}([text2]),"\n",xMinimumChunkSize),gen=function*chunkStringGeneratorFromGenerator(sources,maxLength){for(const source2 of sources)yield*chunkStringGenerator(source2,maxLength)}(gen1,pieceSize);return function*pieces(){yield*gen}}let canBeSmall=!1,delimiter=0;if(filename&&filename.endsWith(".pdf"))delimiter="/".charCodeAt(0);else if(filename&&filename.endsWith(".json")){canBeSmall=!0;delimiter=",".charCodeAt(0)}const clampMin=canBeSmall?100:1e5;let step=1,w2=Math.max(clampMin,Math.min(1e8,dataSrc.size));for(;w2>10;){w2/=12.5;step++}minimumChunkSize=Math.floor(10**(step-1));return async function*piecesBlob(){const size=dataSrc.size;let i2=0;const buf=new Uint8Array(await dataSrc.arrayBuffer());do{const findStart=i2+minimumChunkSize,defaultSplitEnd=i2+pieceSize;let splitEnd,i1=buf.indexOf(delimiter,findStart);-1==i1&&(i1=buf.indexOf(charNewLine,findStart));splitEnd=-1==i1?defaultSplitEnd:i1<defaultSplitEnd?i1:defaultSplitEnd;yield await arrayBufferToBase64Single(buf.slice(i2,splitEnd));i2=splitEnd}while(i2<size)}}async function splitPieces2(dataSrc,pieceSize,plainSplit,minimumChunkSize,filename,useSegmenter){if(isTextBlob2(dataSrc))return function splitPiecesText(dataSrc,pieceSize,plainSplit,minimumChunkSize,useSegmenter){return useSegmenter&&segmenter?plainSplit?function splitPiecesTextV2(dataSrc,pieceSize,minimumChunkSize){const dataListAll=function*splitInNewLine(texts){for(const text2 of texts){let start=-1,end=-1;do{end=text2.indexOf("\n",start);if(-1==end){yield text2.substring(start);break}for(;"\n"==text2[end];)end++;yield text2.substring(start,end);start=end}while(-1!=end)}}("string"==typeof dataSrc?[dataSrc]:dataSrc);let inCodeBlock=0,flush=!1,flushBefore=!1;return function*(){const buf=[];for(const line of dataListAll){if(line.startsWith("````")){if(0==inCodeBlock){inCodeBlock=4;flushBefore=!0}else if(4==inCodeBlock){inCodeBlock=0;flush=!0}}else if(line.startsWith("```"))if(0==inCodeBlock){inCodeBlock=3;flushBefore=!0}else if(3==inCodeBlock){inCodeBlock=0;flush=!0}if(flushBefore){if(buf.length>0){yield*splitTextInSegment(buf.join(""),pieceSize,minimumChunkSize);buf.length=0}flushBefore=!1}buf.push(line);if(flush){if(buf.length>0){yield*splitStringWithinLength(buf.join(""),pieceSize);buf.length=0}flush=!1}}buf.length>0&&(0==inCodeBlock?yield*splitTextInSegment(buf.join(""),pieceSize,minimumChunkSize):yield*splitStringWithinLength(buf.join(""),pieceSize))}}(dataSrc,pieceSize,minimumChunkSize):function binaryTextSplit(data,pieceSize){return function*pieces(){yield*splitStringWithinLength(data,pieceSize)}}(dataSrc,pieceSize):function splitPiecesTextV1(dataSrc,pieceSize,plainSplit,minimumChunkSize){const dataList="string"==typeof dataSrc?[dataSrc]:dataSrc;return function*pieces(){for(const data of dataList)if(plainSplit){const f4=pickPiece(data.split("\n"),minimumChunkSize);for(const piece of f4){let buffer=piece;do{let ps=pieceSize;buffer.charCodeAt(ps-1)!=buffer.codePointAt(ps-1)&&ps++;yield buffer.substring(0,ps);buffer=buffer.substring(ps)}while(""!=buffer)}}else{let leftData=data;do{const splitSize=pieceSize,piece=leftData.substring(0,splitSize);leftData=leftData.substring(splitSize);yield piece}while(""!=leftData)}}}(dataSrc,pieceSize,plainSplit,minimumChunkSize)}(await dataSrc.text(),pieceSize,plainSplit,minimumChunkSize,null!=useSegmenter&&useSegmenter);let delimiter=0,canBeSmall=!1;if(filename&&filename.endsWith(".pdf"))delimiter="/".charCodeAt(0);else if(filename&&filename.endsWith(".json")){canBeSmall=!0;delimiter=",".charCodeAt(0)}const clampMin=canBeSmall?100:1e5;let step=1,w2=Math.max(clampMin,Math.min(1e8,dataSrc.size));for(;w2>10;){w2/=12.5;step++}minimumChunkSize=Math.floor(10**(step-1));return async function*piecesBlob(){const size=dataSrc.size;let i2=0;do{let splitSize=pieceSize;const currentData=new Uint8Array(await dataSrc.slice(i2,i2+pieceSize).arrayBuffer());let nextIdx=currentData.indexOf(delimiter,minimumChunkSize);splitSize=-1==nextIdx?pieceSize:Math.min(pieceSize,nextIdx);-1==nextIdx&&(nextIdx=currentData.indexOf(charNewLine,minimumChunkSize));const piece=currentData.slice(0,splitSize);i2+=piece.length;const b64=await arrayBufferToBase64Single(piece);yield b64}while(i2<size)}}function getNoFromRev(rev3){return rev3?parseInt(rev3.split("-")[0]):0}function replaceTraps(callback){idbProxyTraps=callback(idbProxyTraps)}function wrap(value){if(value instanceof IDBRequest)return function promisifyRequest(request2){const promise=new Promise(((resolve,reject)=>{const unlisten=()=>{request2.removeEventListener("success",success);request2.removeEventListener("error",error)},success=()=>{resolve(wrap(request2.result));unlisten()},error=()=>{reject(request2.error);unlisten()};request2.addEventListener("success",success);request2.addEventListener("error",error)}));reverseTransformCache.set(promise,request2);return promise}(value);if(transformCache.has(value))return transformCache.get(value);const newValue=function transformCachableValue(value){if("function"==typeof value)return function wrapFunction(func){return function getCursorAdvanceMethods(){return cursorAdvanceMethods||(cursorAdvanceMethods=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}().includes(func)?function(...args){func.apply(unwrap(this),args);return wrap(this.request)}:function(...args){return wrap(func.apply(unwrap(this),args))}}(value);value instanceof IDBTransaction&&function cacheDonePromiseForTransaction(tx){if(transactionDoneMap.has(tx))return;const done=new Promise(((resolve,reject)=>{const unlisten=()=>{tx.removeEventListener("complete",complete);tx.removeEventListener("error",error);tx.removeEventListener("abort",error)},complete=()=>{resolve();unlisten()},error=()=>{reject(tx.error||new DOMException("AbortError","AbortError"));unlisten()};tx.addEventListener("complete",complete);tx.addEventListener("error",error);tx.addEventListener("abort",error)}));transactionDoneMap.set(tx,done)}(value);return instanceOfAny(value,function getIdbProxyableTypes(){return idbProxyableTypes||(idbProxyableTypes=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}())?new Proxy(value,idbProxyTraps):value}(value);if(newValue!==value){transformCache.set(value,newValue);reverseTransformCache.set(newValue,value)}return newValue}function getMethod(target,prop2){if(!(target instanceof IDBDatabase)||prop2 in target||"string"!=typeof prop2)return;if(cachedMethods.get(prop2))return cachedMethods.get(prop2);const targetFuncName=prop2.replace(/FromIndex$/,""),useIndex=prop2!==targetFuncName,isWrite=writeMethods.includes(targetFuncName);if(!(targetFuncName in(useIndex?IDBIndex:IDBObjectStore).prototype)||!isWrite&&!readMethods.includes(targetFuncName))return;const method=async function(storeName,...args){const tx=this.transaction(storeName,isWrite?"readwrite":"readonly");let target2=tx.store;useIndex&&(target2=target2.index(args.shift()));return(await Promise.all([target2[targetFuncName](...args),isWrite&&tx.done]))[0]};cachedMethods.set(prop2,method);return method}async function*iterate(...args){let cursor=this;cursor instanceof IDBCursor||(cursor=await cursor.openCursor(...args));if(!cursor)return;const proxiedCursor=new Proxy(cursor,cursorIteratorTraps);ittrProxiedCursorToOriginalProxy.set(proxiedCursor,cursor);reverseTransformCache.set(proxiedCursor,unwrap(cursor));for(;cursor;){yield proxiedCursor;cursor=await(advanceResults.get(proxiedCursor)||cursor.continue());advanceResults.delete(proxiedCursor)}}function isIteratorProp(target,prop2){return prop2===Symbol.asyncIterator&&instanceOfAny(target,[IDBIndex,IDBObjectStore,IDBCursor])||"iterate"===prop2&&instanceOfAny(target,[IDBIndex,IDBObjectStore])}function isTaskWaiting(task){if(task instanceof Promise)return!1;if(task instanceof Function)return!0;throw new Error("Invalid state")}async function wrapEachProcess(key2,task){try{return{key:key2,ok:await task}}catch(ex){return{key:key2,err:ex instanceof Error?ex:new Error(`${ex}`)}}}function scheduleTask(key2,timeout,proc,skipIfTaskExist){if(tasks2.has(key2)){if(skipIfTaskExist)return;cancelTask(key2)}const newTask=setTimeout((()=>{tasks2.delete(key2);proc()}),timeout);tasks2.set(key2,newTask)}function cancelTask(key2){const old=tasks2.get(key2);if(old){clearTimeout(old);tasks2.delete(key2)}}function cancelPeriodicTask(key2){if(key2 in intervals){clearInterval(intervals[key2]);delete intervals[key2]}}async function waitForTimeout(key2,timeout){return await shareRunningResult(key2,(async()=>{waitingItems.add(key2);try{const ret=await globalSlipBoard.awaitNext("wait-for-timeout",key2,{timeout});return ret===TIMED_OUT_SIGNAL||ret}finally{waitingItems.delete(key2)}}))}function id2path(id,entry){const temp=id2path_base(id,entry).split(":"),path2=temp.pop(),normalizedPath=normalizePath(path2);temp.push(normalizedPath);return temp.join(":")}function getPath2(entry){return id2path(entry._id,entry)}function getPathWithoutPrefix2(entry){return stripAllPrefixes(getPath2(entry))}function getPathFromTFile(file){return file.path}function getStoragePathFromUXFileInfo(file){return stripAllPrefixes("string"==typeof file?file:file.path)}function getDatabasePathFromUXFileInfo(file){if("string"==typeof file&&file.startsWith(ICXHeader))return file;const prefix=function isInternalFile(file){return"string"==typeof file?file.startsWith(ICHeader):!!file.isInternal}(file)?ICHeader:"";return"string"==typeof file?prefix+stripAllPrefixes(file):prefix+stripAllPrefixes(file.path)}function memoObject(key2,obj){memos[key2]=obj;return memos[key2]}async function memoIfNotExist(key2,func){if(!(key2 in memos)){const w2=func(),v2=w2 instanceof Promise?await w2:w2;memos[key2]=v2}return memos[key2]}function retrieveMemoObject(key2){return key2 in memos&&memos[key2]}function disposeMemoObject(key2){delete memos[key2]}function isValidPath(filename){if(import_obsidian.Platform.isDesktop)return"darwin"==process.platform?isValidFilenameInDarwin(filename):"linux"==process.platform?function isValidFilenameInLinux(filename){return!/[\u0000-\u001f]|[:]/g.test(filename)}(filename):isValidFilenameInWidows(filename);if(import_obsidian.Platform.isAndroidApp)return function isValidFilenameInAndroid(filename){return!/[\u0000-\u001f]|[\\":?<>|*#]/g.test(filename)}(filename);if(import_obsidian.Platform.isIosApp)return isValidFilenameInDarwin(filename);Logger("Could not determine platform for checking filename",LOG_LEVEL_VERBOSE);return isValidFilenameInWidows(filename)}function isInternalMetadata(id){return id.startsWith(ICHeader)}function isPluginMetadata(str){return str.startsWith(PSCHeader)}function isCustomisationSyncMetadata(str){return str.startsWith(ICXHeader)}function compareMTime(baseMTime,targetMTime){const truncatedBaseMTime=~~(baseMTime/resolution)*resolution,truncatedTargetMTime=~~(targetMTime/resolution)*resolution;if(truncatedBaseMTime==truncatedTargetMTime)return EVEN;if(truncatedBaseMTime>truncatedTargetMTime)return BASE_IS_NEW;if(truncatedBaseMTime<truncatedTargetMTime)return TARGET_IS_NEW;throw new Error("Unexpected error")}function getKey(file){return"string"==typeof file?file:stripAllPrefixes(file.path)}function markChangesAreSame(file,mtime1,mtime2){if(mtime1===mtime2)return!0;const key2=getKey(file),pairs=sameChangePairs.get(key2,[])||[];pairs.some((e3=>e3==mtime1||e3==mtime2))?sameChangePairs.set(key2,[...new Set([...pairs,mtime1,mtime2])]):sameChangePairs.set(key2,[mtime1,mtime2])}function unmarkChanges(file){const key2=getKey(file);sameChangePairs.delete(key2)}function isMarkedAsSameChanges(file,mtimes){const key2=getKey(file),pairs=sameChangePairs.get(key2,[])||[];if(mtimes.every((e3=>-1!==pairs.indexOf(e3))))return EVEN}function compareFileFreshness(baseFile,checkTarget){var _a7,_b3,_c2,_d2,_e2,_f;if(void 0===baseFile&&null==checkTarget)return EVEN;if(null==baseFile)return TARGET_IS_NEW;if(null==checkTarget)return BASE_IS_NEW;const modifiedBase="stat"in baseFile?null!=(_b3=null==(_a7=null==baseFile?void 0:baseFile.stat)?void 0:_a7.mtime)?_b3:0:null!=(_c2=null==baseFile?void 0:baseFile.mtime)?_c2:0,modifiedTarget="stat"in checkTarget?null!=(_e2=null==(_d2=null==checkTarget?void 0:checkTarget.stat)?void 0:_d2.mtime)?_e2:0:null!=(_f=null==checkTarget?void 0:checkTarget.mtime)?_f:0;return modifiedBase&&modifiedTarget&&isMarkedAsSameChanges(baseFile,[modifiedBase,modifiedTarget])?EVEN:compareMTime(modifiedBase,modifiedTarget)}function displayRev(rev3){const[number,hash3]=rev3.split("-");return`${number}-${hash3.substring(0,6)}`}function getLogLevel(showNotice){return showNotice?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO}async function autosaveCache(db,mapKey){var _a7;const savedData=null!=(_a7=await db.get(mapKey))?_a7:new Map,_commit=()=>{try{scheduleTask("commit-map-save-"+mapKey,250,(async()=>{await db.set(mapKey,savedData)}))}catch(e3){}};return{set(key2,value){const modified=savedData.get(key2)!==value,result=savedData.set(key2,value);modified&&_commit();return result},clear(){savedData.clear();_commit()},delete(key2){const result=savedData.delete(key2);result&&_commit();return result},get:key2=>savedData.get(key2),has:key2=>savedData.has(key2),keys:()=>savedData.keys(),get size(){return savedData.size}}}function onlyInNTimes(n3,proc){let counter=0;return function(){counter++%n3==0&&proc(counter)}}function updatePreviousExecutionTime(key2,timeDelta=0){key2 in waitingTasks||(waitingTasks[key2]={task:void 0,previous:0,leastNext:0});waitingTasks[key2].leastNext=Math.max(Date.now()+timeDelta,waitingTasks[key2].leastNext)}function reactiveSource(initialValue){return _reactive({initialValue})}function reactive(expression,initialValue){return _reactive({expression,initialValue})}function topologicalSort(startNode){if(topologicalSortCache.has(startNode.id)){const ref=topologicalSortCache.get(startNode.id);if(ref){const result2=ref.map((e3=>e3.instance.deref())).filter((e3=>e3));if(result2.length===ref.length)return result2}}const visited=new Set,sorted=[],recursionStack=new Set;(function visit(node){if(!visited.has(node)){if(recursionStack.has(node))throw new Error("Circular dependency detected!");visited.add(node);recursionStack.add(node);for(const dependant of node.dependants)visit(dependant);sorted.push(node);recursionStack.delete(node)}})(startNode);const result=sorted.reverse();topologicalSortCache.set(startNode.id,result.map((e3=>({id:e3.id,instance:new FallbackWeakRef(e3)}))));return result}function _reactive({expression,initialValue,isSource}){let value,_isDirty=!1;const id=_reactiveSourceId++,changeHandlers=new Set,instance3={id,dependants:new Set,_markDirty(){_isDirty||(_isDirty=!0)},markDirty(){topologicalSort(instance3).forEach((node=>node._markDirty()))},_rippleChanged(){changeHandlers.forEach((e3=>e3(instance3)))},rippleChanged(){topologicalSort(instance3).forEach((node=>node._rippleChanged()))},markClean(){_isDirty=!1},get isDirty(){return _isDirty},get value(){if(context&&!instance3.dependants.has(context)){instance3.dependants.add(context);(function resetTopologicalSortCacheFor(ids){ids.forEach((id=>topologicalSortCache.delete(id)));topologicalSortCache.forEach(((value,key2)=>{ids.includes(key2)||topologicalSortCache.delete(key2)}))})([instance3.id,context.id])}if(_isDirty){if(expression){const oldValue=value,newValue=expression();isObjectDifferent(oldValue,newValue)&&(value=newValue)}instance3.markClean()}return value},set value(newValue){if(_isDirty&&!expression)value=newValue;else if(isObjectDifferent(value,newValue)){value=newValue;if(!_isDirty){instance3.markDirty();instance3.rippleChanged()}}},onChanged(handler){changeHandlers.add(handler)},offChanged(handler){changeHandlers.delete(handler)}};value=function initialize(){const previousContext=context;context=instance3;const r4=expression?expression(initialValue):initialValue;context=previousContext;return r4}();return instance3}function computed(expression){const v2=reactive(expression);return()=>v2.value}function isOverridableKey(key2){return key2.startsWith("$")}function isInjectableKey(key2){return key2.startsWith("$$")}function isAllExecuteKey(key2){return key2.startsWith("$all")}function isEveryExecuteKey(key2){return key2.startsWith("$every")}function isAnyExecuteKey(key2){return key2.startsWith("$any")}function is_function(thing){return"function"==typeof thing}function run(fn){return fn()}function run_all(arr){for(var i2=0;i2<arr.length;i2++)arr[i2]()}function process_micro_tasks(){is_micro_task_queued=!1;const tasks3=current_queued_micro_tasks.slice();current_queued_micro_tasks=[];run_all(tasks3)}function process_idle_tasks(){is_idle_task_queued=!1;const tasks3=current_queued_idle_tasks.slice();current_queued_idle_tasks=[];run_all(tasks3)}function queue_micro_task(fn){if(!is_micro_task_queued){is_micro_task_queued=!0;queueMicrotask(process_micro_tasks)}current_queued_micro_tasks.push(fn)}function equals(value){return value===this.v}function safe_not_equal(a2,b3){return a2!=a2?b3==b3:a2!==b3||null!==a2&&"object"==typeof a2||"function"==typeof a2}function safe_equals(value){return!safe_not_equal(value,this.v)}function bind_invalid_checkbox_value(){if(dev_fallback_default){const error=new Error("bind_invalid_checkbox_value\nUsing `bind:value` together with a checkbox input is not allowed. Use `bind:checked` instead\nhttps://svelte.dev/e/bind_invalid_checkbox_value");error.name="Svelte error";throw error}throw new Error("https://svelte.dev/e/bind_invalid_checkbox_value")}function get_stack(label){let error=Error();const stack2=error.stack;if(stack2){const lines=stack2.split("\n"),new_lines=["\n"];for(let i2=0;i2<lines.length;i2++){const line=lines[i2];if("Error"!==line){if(line.includes("validate_each_keys"))return null;line.includes("svelte/src/internal")||new_lines.push(line)}}if(1===new_lines.length)return null;define_property(error,"stack",{value:new_lines.join("\n")});define_property(error,"name",{value:`${label}Error`})}return error}function set_inspect_effects(v2){inspect_effects=v2}function source(v2,stack2){var signal={f:0,v:v2,reactions:null,equals,rv:0,wv:0};if(dev_fallback_default&&tracing_mode_flag){signal.created=null!=stack2?stack2:get_stack("CreatedAt");signal.debug=null}return signal}function state(v2){return push_derived_source(source(v2))}function mutable_source(initial_value,immutable=!1){var _a7,_b3;const s2=source(initial_value);immutable||(s2.equals=safe_equals);legacy_mode_flag&&null!==component_context&&null!==component_context.l&&(null!=(_b3=(_a7=component_context.l).s)?_b3:_a7.s=[]).push(s2);return s2}function mutable_state(v2,immutable=!1){return push_derived_source(mutable_source(v2,immutable))}function push_derived_source(source2){null!==active_reaction&&!untracking&&active_reaction.f&DERIVED&&(null===derived_sources?function set_derived_sources(sources){derived_sources=sources}([source2]):derived_sources.push(source2));return source2}function set(source2,value){null!==active_reaction&&!untracking&&is_runes()&&active_reaction.f&(DERIVED|BLOCK_EFFECT)&&(null===derived_sources||!derived_sources.includes(source2))&&function state_unsafe_mutation(){if(dev_fallback_default){const error=new Error("state_unsafe_mutation\nUpdating state inside a derived or a template expression is forbidden. If the value should not be reactive, declare it without `$state`\nhttps://svelte.dev/e/state_unsafe_mutation");error.name="Svelte error";throw error}throw new Error("https://svelte.dev/e/state_unsafe_mutation")}();return internal_set(source2,value)}function internal_set(source2,value){var old_value,previously_flushing_effect;if(!source2.equals(value)){old_value=source2.v;source2.v=value;source2.wv=increment_write_version();if(dev_fallback_default&&tracing_mode_flag){source2.updated=get_stack("UpdatedAt");if(null!=active_effect){source2.trace_need_increase=!0;null!=source2.trace_v||(source2.trace_v=old_value)}}mark_reactions(source2,DIRTY);is_runes()&&null!==active_effect&&active_effect.f&CLEAN&&!(active_effect.f&(BRANCH_EFFECT|ROOT_EFFECT))&&(null===untracked_writes?function set_untracked_writes(value){untracked_writes=value}([source2]):untracked_writes.push(source2));if(dev_fallback_default&&inspect_effects.size>0){const inspects=Array.from(inspect_effects);previously_flushing_effect=is_flushing_effect;set_is_flushing_effect(!0);try{for(const effect2 of inspects){effect2.f&CLEAN&&set_signal_status(effect2,MAYBE_DIRTY);check_dirtiness(effect2)&&update_effect(effect2)}}finally{set_is_flushing_effect(previously_flushing_effect)}inspect_effects.clear()}}return value}function update(source2,d4=1){var value=get(source2),result=1===d4?value++:value--;set(source2,value);return result}function mark_reactions(signal,status){var runes,length,i2,reaction,flags,reactions=signal.reactions;if(null!==reactions){runes=is_runes();length=reactions.length;for(i2=0;i2<length;i2++)if(!((flags=(reaction=reactions[i2]).f)&DIRTY)&&(runes||reaction!==active_effect))if(dev_fallback_default&&flags&INSPECT_EFFECT)inspect_effects.add(reaction);else{set_signal_status(reaction,status);flags&(CLEAN|UNOWNED)&&(flags&DERIVED?mark_reactions(reaction,MAYBE_DIRTY):schedule_effect(reaction))}}}function derived(fn){var flags=DERIVED|DIRTY,parent_derived=null!==active_reaction&&active_reaction.f&DERIVED?active_reaction:null;null===active_effect||null!==parent_derived&&parent_derived.f&UNOWNED?flags|=UNOWNED:active_effect.f|=EFFECT_HAS_DERIVED;const signal={ctx:component_context,deps:null,effects:null,equals,f:flags,fn,reactions:null,rv:0,v:null,wv:0,parent:null!=parent_derived?parent_derived:active_effect};dev_fallback_default&&tracing_mode_flag&&(signal.created=get_stack("CreatedAt"));return signal}function derived_safe_equal(fn){const signal=derived(fn);signal.equals=safe_equals;return signal}function destroy_derived_effects(derived3){var i2,effects=derived3.effects;if(null!==effects){derived3.effects=null;for(i2=0;i2<effects.length;i2+=1)destroy_effect(effects[i2])}}function update_derived(derived3){var value=function execute_derived(derived3){var value,prev_active_effect=active_effect;set_active_effect(function get_derived_parent_effect(derived3){for(var parent=derived3.parent;null!==parent;){if(!(parent.f&DERIVED))return parent;parent=parent.parent}return null}(derived3));if(dev_fallback_default){let prev_inspect_effects=inspect_effects;set_inspect_effects(new Set);try{stack.includes(derived3)&&function derived_references_self(){if(dev_fallback_default){const error=new Error("derived_references_self\nA derived value cannot reference itself recursively\nhttps://svelte.dev/e/derived_references_self");error.name="Svelte error";throw error}throw new Error("https://svelte.dev/e/derived_references_self")}();stack.push(derived3);destroy_derived_effects(derived3);value=update_reaction(derived3)}finally{set_active_effect(prev_active_effect);set_inspect_effects(prev_inspect_effects);stack.pop()}}else try{destroy_derived_effects(derived3);value=update_reaction(derived3)}finally{set_active_effect(prev_active_effect)}return value}(derived3);set_signal_status(derived3,(skip_reaction||derived3.f&UNOWNED)&&null!==derived3.deps?MAYBE_DIRTY:CLEAN);if(!derived3.equals(value)){derived3.v=value;derived3.wv=increment_write_version()}}function hydration_mismatch(location){dev_fallback_default?console.warn(`%c[svelte] hydration_mismatch\n%c${location?`Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${location}`:"Hydration failed because the initial UI does not match what was rendered on the server"}\nhttps://svelte.dev/e/hydration_mismatch`,bold2,normal2):console.warn("https://svelte.dev/e/hydration_mismatch")}function ownership_invalid_mutation(component2,owner){dev_fallback_default?console.warn(`%c[svelte] ownership_invalid_mutation\n%c${component2?`${component2} mutated a value owned by ${owner}. This is strongly discouraged. Consider passing values to child components with \`bind:\`, or use a callback instead`:"Mutating a value outside the component that created it is strongly discouraged. Consider passing values to child components with `bind:`, or use a callback instead"}\nhttps://svelte.dev/e/ownership_invalid_mutation`,bold2,normal2):console.warn("https://svelte.dev/e/ownership_invalid_mutation")}function state_proxy_equality_mismatch(operator){dev_fallback_default?console.warn(`%c[svelte] state_proxy_equality_mismatch\n%cReactive \`$state(...)\` proxies and the values they proxy have different identities. Because of this, comparisons with \`${operator}\` will produce unexpected results\nhttps://svelte.dev/e/state_proxy_equality_mismatch`,bold2,normal2):console.warn("https://svelte.dev/e/state_proxy_equality_mismatch")}function set_hydrating(value){hydrating=value}function set_hydrate_node(node){if(null===node){hydration_mismatch();throw HYDRATION_ERROR}return hydrate_node=node}function hydrate_next(){return set_hydrate_node(get_next_sibling(hydrate_node))}function reset(node){if(hydrating){if(null!==get_next_sibling(hydrate_node)){hydration_mismatch();throw HYDRATION_ERROR}hydrate_node=node}}function next(count=1){var i2,node;if(hydrating){i2=count;node=hydrate_node;for(;i2--;)node=get_next_sibling(node);hydrate_node=node}}function remove_nodes(){for(var data,next2,depth=0,node=hydrate_node;;){if(8===node.nodeType)if((data=node.data)===HYDRATION_END){if(0===depth)return node;depth-=1}else data!==HYDRATION_START&&data!==HYDRATION_START_ELSE||(depth+=1);next2=get_next_sibling(node);node.remove();node=next2}}function proxy(value,parent=null,prev){var _a7,_b3,sources,is_proxied_array,version2,metadata,stack2=null;dev_fallback_default&&tracing_mode_flag&&(stack2=get_stack("CreatedAt"));if("object"!=typeof value||null===value||STATE_SYMBOL in value)return value;const prototype=get_prototype_of(value);if(prototype!==object_prototype&&prototype!==array_prototype)return value;sources=new Map;is_proxied_array=is_array(value);version2=source(0);is_proxied_array&&sources.set("length",source(value.length,stack2));if(dev_fallback_default){metadata={parent,owners:null};if(prev){const prev_owners=null==(_b3=null==(_a7=prev.v)?void 0:_a7[STATE_SYMBOL_METADATA])?void 0:_b3.owners;metadata.owners=prev_owners?new Set(prev_owners):null}else metadata.owners=null===parent?null!==component_context?new Set([component_context.function]):null:new Set}return new Proxy(value,{defineProperty(_,prop2,descriptor){"value"in descriptor&&!1!==descriptor.configurable&&!1!==descriptor.enumerable&&!1!==descriptor.writable||function state_descriptors_fixed(){if(dev_fallback_default){const error=new Error("state_descriptors_fixed\nProperty descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.\nhttps://svelte.dev/e/state_descriptors_fixed");error.name="Svelte error";throw error}throw new Error("https://svelte.dev/e/state_descriptors_fixed")}();var s2=sources.get(prop2);if(void 0===s2){s2=source(descriptor.value,stack2);sources.set(prop2,s2)}else set(s2,proxy(descriptor.value,metadata));return!0},deleteProperty(target,prop2){var ls,n3,s2=sources.get(prop2);if(void 0===s2)prop2 in target&&sources.set(prop2,source(UNINITIALIZED,stack2));else{if(is_proxied_array&&"string"==typeof prop2){ls=sources.get("length");n3=Number(prop2);Number.isInteger(n3)&&n3<ls.v&&set(ls,n3)}set(s2,UNINITIALIZED);update_version(version2)}return!0},get(target,prop2,receiver){var _a8,s2,exists,v2,prop_metadata;if(dev_fallback_default&&prop2===STATE_SYMBOL_METADATA)return metadata;if(prop2===STATE_SYMBOL)return value;exists=prop2 in target;if(void 0===(s2=sources.get(prop2))&&(!exists||(null==(_a8=get_descriptor(target,prop2))?void 0:_a8.writable))){s2=source(proxy(exists?target[prop2]:UNINITIALIZED,metadata),stack2);sources.set(prop2,s2)}if(void 0!==s2){v2=get(s2);dev_fallback_default&&(prop_metadata=null==v2?void 0:v2[STATE_SYMBOL_METADATA])&&(null==prop_metadata?void 0:prop_metadata.parent)!==metadata&&widen_ownership(metadata,prop_metadata);return v2===UNINITIALIZED?void 0:v2}return Reflect.get(target,prop2,receiver)},getOwnPropertyDescriptor(target,prop2){var s2,source2,value2,descriptor=Reflect.getOwnPropertyDescriptor(target,prop2);if(descriptor&&"value"in descriptor)(s2=sources.get(prop2))&&(descriptor.value=get(s2));else if(void 0===descriptor){value2=null==(source2=sources.get(prop2))?void 0:source2.v;if(void 0!==source2&&value2!==UNINITIALIZED)return{enumerable:!0,configurable:!0,value:value2,writable:!0}}return descriptor},has(target,prop2){var _a8,s2,has;if(dev_fallback_default&&prop2===STATE_SYMBOL_METADATA)return!0;if(prop2===STATE_SYMBOL)return!0;has=void 0!==(s2=sources.get(prop2))&&s2.v!==UNINITIALIZED||Reflect.has(target,prop2);if(void 0!==s2||null!==active_effect&&(!has||(null==(_a8=get_descriptor(target,prop2))?void 0:_a8.writable))){if(void 0===s2){s2=source(has?proxy(target[prop2],metadata):UNINITIALIZED,stack2);sources.set(prop2,s2)}if(get(s2)===UNINITIALIZED)return!1}return has},set(target,prop2,value2,receiver){var _a8,i2,other_s,prop_metadata,descriptor,ls,n3,s2=sources.get(prop2),has=prop2 in target;if(is_proxied_array&&"length"===prop2)for(i2=value2;i2<s2.v;i2+=1)if(void 0!==(other_s=sources.get(i2+"")))set(other_s,UNINITIALIZED);else if(i2 in target){other_s=source(UNINITIALIZED,stack2);sources.set(i2+"",other_s)}if(void 0===s2){if(!has||(null==(_a8=get_descriptor(target,prop2))?void 0:_a8.writable)){set(s2=source(void 0,stack2),proxy(value2,metadata));sources.set(prop2,s2)}}else{has=s2.v!==UNINITIALIZED;set(s2,proxy(value2,metadata))}if(dev_fallback_default){(prop_metadata=null==value2?void 0:value2[STATE_SYMBOL_METADATA])&&(null==prop_metadata?void 0:prop_metadata.parent)!==metadata&&widen_ownership(metadata,prop_metadata);(function check_ownership(metadata){if(skip)return;const component2=function get_component(){var _a7;const stack2=null==(_a7=function get_stack2(){var _a7;const stack2=(new Error).stack;if(!stack2)return null;const entries2=[];for(const line of stack2.split("\n")){let match3=null!=(_a7=chrome_pattern.exec(line))?_a7:firefox_pattern.exec(line);match3&&entries2.push({file:match3[1],line:+match3[2],column:+match3[3]})}return entries2}())?void 0:_a7.slice(4);if(!stack2)return null;for(let i2=0;i2<stack2.length;i2++){const entry=stack2[i2],modules=boundaries[entry.file];if(modules)for(const module2 of modules){if(null==module2.end)return null;if(module2.start.line<entry.line&&module2.end.line>entry.line)return module2.component}else if(0===i2)return null}return null}();if(component2&&!has_owner(metadata,component2)){let original=get_owner(metadata);original[FILENAME]!==component2[FILENAME]?ownership_invalid_mutation(component2[FILENAME],original[FILENAME]):ownership_invalid_mutation()}})(metadata)}(null==(descriptor=Reflect.getOwnPropertyDescriptor(target,prop2))?void 0:descriptor.set)&&descriptor.set.call(receiver,value2);if(!has){if(is_proxied_array&&"string"==typeof prop2){ls=sources.get("length");n3=Number(prop2);Number.isInteger(n3)&&n3>=ls.v&&set(ls,n3+1)}update_version(version2)}return!0},ownKeys(target){var own_keys;get(version2);own_keys=Reflect.ownKeys(target).filter((key3=>{var source3=sources.get(key3);return void 0===source3||source3.v!==UNINITIALIZED}));for(var[key2,source2]of sources)source2.v===UNINITIALIZED||key2 in target||own_keys.push(key2);return own_keys},setPrototypeOf(){(function state_prototype_fixed(){if(dev_fallback_default){const error=new Error("state_prototype_fixed\nCannot set prototype of `$state` object\nhttps://svelte.dev/e/state_prototype_fixed");error.name="Svelte error";throw error}throw new Error("https://svelte.dev/e/state_prototype_fixed")})()}})}function update_version(signal,d4=1){set(signal,signal.v+d4)}function get_proxied_value(value){return null!==value&&"object"==typeof value&&STATE_SYMBOL in value?value[STATE_SYMBOL]:value}function is(a2,b3){return Object.is(get_proxied_value(a2),get_proxied_value(b3))}function create_text(value=""){return document.createTextNode(value)}function get_first_child(node){return first_child_getter.call(node)}function get_next_sibling(node){return next_sibling_getter.call(node)}function child(node,is_text){var child2,text2;if(!hydrating)return get_first_child(node);if(null===(child2=get_first_child(hydrate_node)))child2=hydrate_node.appendChild(create_text());else if(is_text&&3!==child2.nodeType){text2=create_text();null==child2||child2.before(text2);set_hydrate_node(text2);return text2}set_hydrate_node(child2);return child2}function first_child(fragment,is_text){var _a7,_b3,first,text2;if(!hydrating)return(first=get_first_child(fragment))instanceof Comment&&""===first.data?get_next_sibling(first):first;if(is_text&&3!==(null==(_a7=hydrate_node)?void 0:_a7.nodeType)){text2=create_text();null==(_b3=hydrate_node)||_b3.before(text2);set_hydrate_node(text2);return text2}return hydrate_node}function sibling(node,count=1,is_text=!1){var last_sibling,type,text2;let next_sibling=hydrating?hydrate_node:node;for(;count--;){last_sibling=next_sibling;next_sibling=get_next_sibling(next_sibling)}if(!hydrating)return next_sibling;type=null==next_sibling?void 0:next_sibling.nodeType;if(is_text&&3!==type){text2=create_text();null===next_sibling?null==last_sibling||last_sibling.after(text2):next_sibling.before(text2);set_hydrate_node(text2);return text2}set_hydrate_node(next_sibling);return next_sibling}function set_is_flushing_effect(value){is_flushing_effect=value}function set_is_destroying_effect(value){is_destroying_effect=value}function set_active_reaction(reaction){active_reaction=reaction}function set_active_effect(effect2){active_effect=effect2}function increment_write_version(){return++write_version}function check_dirtiness(reaction){var _a7,_b3,dependencies,is_unowned,i2,dependency,is_disconnected,is_unowned_connected,length,derived3,parent,flags=reaction.f;if(flags&DIRTY)return!0;if(flags&MAYBE_DIRTY){dependencies=reaction.deps;is_unowned=!!(flags&UNOWNED);if(null!==dependencies){is_disconnected=!!(flags&DISCONNECTED);is_unowned_connected=is_unowned&&null!==active_effect&&!skip_reaction;length=dependencies.length;if(is_disconnected||is_unowned_connected){parent=(derived3=reaction).parent;for(i2=0;i2<length;i2++){dependency=dependencies[i2];!is_disconnected&&(null==(_a7=null==dependency?void 0:dependency.reactions)?void 0:_a7.includes(derived3))||(null!=(_b3=dependency.reactions)?_b3:dependency.reactions=[]).push(derived3)}is_disconnected&&(derived3.f^=DISCONNECTED);!is_unowned_connected||null===parent||parent.f&UNOWNED||(derived3.f^=UNOWNED)}for(i2=0;i2<length;i2++){check_dirtiness(dependency=dependencies[i2])&&update_derived(dependency);if(dependency.wv>reaction.wv)return!0}}is_unowned&&(null===active_effect||skip_reaction)||set_signal_status(reaction,CLEAN)}return!1}function propagate_error(error,effect2){for(var current=effect2;null!==current;){if(current.f&BOUNDARY_EFFECT)try{current.fn(error);return}catch(e3){current.f^=BOUNDARY_EFFECT}current=current.parent}is_throwing_error=!1;throw error}function should_rethrow_error(effect2){return!(effect2.f&DESTROYED||null!==effect2.parent&&effect2.parent.f&BOUNDARY_EFFECT)}function handle_error(error,effect2,previous_effect,component_context2){var _a7,_b3,filename;if(is_throwing_error){null===previous_effect&&(is_throwing_error=!1);if(should_rethrow_error(effect2))throw error;return}null!==previous_effect&&(is_throwing_error=!0);if(!dev_fallback_default||null===component_context2||!(error instanceof Error)||handled_errors.has(error)){propagate_error(error,effect2);return}handled_errors.add(error);const component_stack=[],effect_name=null==(_a7=effect2.fn)?void 0:_a7.name;effect_name&&component_stack.push(effect_name);let current_context=component_context2;for(;null!==current_context;){if(dev_fallback_default&&(filename=null==(_b3=current_context.function)?void 0:_b3[FILENAME])){const file=filename.split("/").pop();component_stack.push(file)}current_context=current_context.p}const indent=is_firefox?" ":"\t";define_property(error,"message",{value:error.message+`\n${component_stack.map((name=>`\n${indent}in ${name}`)).join("")}\n`});define_property(error,"component_stack",{value:component_stack});const stack2=error.stack;if(stack2){const lines=stack2.split("\n"),new_lines=[];for(let i2=0;i2<lines.length;i2++){const line=lines[i2];line.includes("svelte/src/internal")||new_lines.push(line)}define_property(error,"stack",{value:new_lines.join("\n")})}propagate_error(error,effect2);if(should_rethrow_error(effect2))throw error}function schedule_possible_effect_self_invalidation(signal,effect2,root9=!0){var i2,reaction,reactions=signal.reactions;if(null!==reactions)for(i2=0;i2<reactions.length;i2++)if((reaction=reactions[i2]).f&DERIVED)schedule_possible_effect_self_invalidation(reaction,effect2,!1);else if(effect2===reaction){root9?set_signal_status(reaction,DIRTY):reaction.f&CLEAN&&set_signal_status(reaction,MAYBE_DIRTY);schedule_effect(reaction)}}function update_reaction(reaction){var _a7,_b3,result,deps,i2,previous_deps=new_deps,previous_skipped_deps=skipped_deps,previous_untracked_writes=untracked_writes,previous_reaction=active_reaction,previous_skip_reaction=skip_reaction,prev_derived_sources=derived_sources,previous_component_context=component_context,previous_untracking=untracking,flags=reaction.f;new_deps=null;skipped_deps=0;untracked_writes=null;active_reaction=flags&(BRANCH_EFFECT|ROOT_EFFECT)?null:reaction;skip_reaction=!!(flags&UNOWNED)&&(!is_flushing_effect||null===previous_reaction||previous_untracking);derived_sources=null;set_component_context(reaction.ctx);untracking=!1;read_version++;try{result=(0,reaction.fn)();deps=reaction.deps;if(null!==new_deps){remove_reactions(reaction,skipped_deps);if(null!==deps&&skipped_deps>0){deps.length=skipped_deps+new_deps.length;for(i2=0;i2<new_deps.length;i2++)deps[skipped_deps+i2]=new_deps[i2]}else reaction.deps=deps=new_deps;if(!skip_reaction)for(i2=skipped_deps;i2<deps.length;i2++)(null!=(_b3=(_a7=deps[i2]).reactions)?_b3:_a7.reactions=[]).push(reaction)}else if(null!==deps&&skipped_deps<deps.length){remove_reactions(reaction,skipped_deps);deps.length=skipped_deps}if(is_runes()&&null!==untracked_writes&&!untracking&&null!==deps&&!(reaction.f&(DERIVED|MAYBE_DIRTY|DIRTY)))for(i2=0;i2<untracked_writes.length;i2++)schedule_possible_effect_self_invalidation(untracked_writes[i2],reaction);null!==previous_reaction&&read_version++;return result}finally{new_deps=previous_deps;skipped_deps=previous_skipped_deps;untracked_writes=previous_untracked_writes;active_reaction=previous_reaction;skip_reaction=previous_skip_reaction;derived_sources=prev_derived_sources;set_component_context(previous_component_context);untracking=previous_untracking}}function remove_reaction(signal,dependency){var index6,new_length;let reactions=dependency.reactions;if(null!==reactions&&-1!==(index6=index_of.call(reactions,signal)))if(0==(new_length=reactions.length-1))reactions=dependency.reactions=null;else{reactions[index6]=reactions[new_length];reactions.pop()}if(null===reactions&&dependency.f&DERIVED&&(null===new_deps||!new_deps.includes(dependency))){set_signal_status(dependency,MAYBE_DIRTY);dependency.f&(UNOWNED|DISCONNECTED)||(dependency.f^=DISCONNECTED);destroy_derived_effects(dependency);remove_reactions(dependency,0)}}function remove_reactions(signal,start_index){var i2,dependencies=signal.deps;if(null!==dependencies)for(i2=start_index;i2<dependencies.length;i2++)remove_reaction(signal,dependencies[i2])}function update_effect(effect2){var previous_effect,previous_component_context,previous_component_fn,teardown2,deps,dep,flags=effect2.f;if(!(flags&DESTROYED)){set_signal_status(effect2,CLEAN);previous_effect=active_effect;previous_component_context=component_context;active_effect=effect2;if(dev_fallback_default){previous_component_fn=dev_current_component_function;set_dev_current_component_function(effect2.component_function)}try{flags&BLOCK_EFFECT?function destroy_block_effect_children(signal){for(var next2,effect2=signal.first;null!==effect2;){next2=effect2.next;effect2.f&BRANCH_EFFECT||destroy_effect(effect2);effect2=next2}}(effect2):destroy_effect_children(effect2);execute_effect_teardown(effect2);teardown2=update_reaction(effect2);effect2.teardown="function"==typeof teardown2?teardown2:null;effect2.wv=write_version;deps=effect2.deps;if(dev_fallback_default&&tracing_mode_flag&&effect2.f&DIRTY&&null!==deps)for(let i2=0;i2<deps.length;i2++)if((dep=deps[i2]).trace_need_increase){dep.wv=increment_write_version();dep.trace_need_increase=void 0;dep.trace_v=void 0}dev_fallback_default&&dev_effect_stack.push(effect2)}catch(error){handle_error(error,effect2,previous_effect,previous_component_context||effect2.ctx)}finally{active_effect=previous_effect;dev_fallback_default&&set_dev_current_component_function(previous_component_fn)}}}function log_effect_stack(){console.error("Last ten effects were: ",dev_effect_stack.slice(-10).map((d4=>d4.fn)));dev_effect_stack=[]}function flush_queued_root_effects(root_effects){var previously_flushing_effect,i2,effect2,length=root_effects.length;if(0!==length){(function infinite_loop_guard(){if(flush_count>1e3){flush_count=0;try{(function effect_update_depth_exceeded(){if(dev_fallback_default){const error=new Error("effect_update_depth_exceeded\nMaximum update depth exceeded. This can happen when a reactive block or effect repeatedly sets a new value. Svelte limits the number of nested updates to prevent infinite loops\nhttps://svelte.dev/e/effect_update_depth_exceeded");error.name="Svelte error";throw error}throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")})()}catch(error){dev_fallback_default&&define_property(error,"stack",{value:""});if(null===last_scheduled_effect){dev_fallback_default&&log_effect_stack();throw error}if(dev_fallback_default)try{handle_error(error,last_scheduled_effect,null,null)}catch(e3){log_effect_stack();throw e3}else handle_error(error,last_scheduled_effect,null,null)}}flush_count++})();previously_flushing_effect=is_flushing_effect;is_flushing_effect=!0;try{for(i2=0;i2<length;i2++){(effect2=root_effects[i2]).f&CLEAN||(effect2.f^=CLEAN);flush_queued_effects(process_effects(effect2))}}finally{is_flushing_effect=previously_flushing_effect}}}function flush_queued_effects(effects){var i2,effect2,length=effects.length;if(0!==length)for(i2=0;i2<length;i2++)if(!((effect2=effects[i2]).f&(DESTROYED|INERT)))try{if(check_dirtiness(effect2)){update_effect(effect2);null===effect2.deps&&null===effect2.first&&null===effect2.nodes_start&&(null===effect2.teardown?unlink_effect(effect2):effect2.fn=null)}}catch(error){handle_error(error,effect2,null,effect2.ctx)}}function process_deferred(){is_micro_task_queued2=!1;if(flush_count>1001)return;const previous_queued_root_effects=queued_root_effects;queued_root_effects=[];flush_queued_root_effects(previous_queued_root_effects);if(!is_micro_task_queued2){flush_count=0;last_scheduled_effect=null;dev_fallback_default&&(dev_effect_stack=[])}}function schedule_effect(signal){var effect2,flags;if(scheduler_mode===FLUSH_MICROTASK&&!is_micro_task_queued2){is_micro_task_queued2=!0;queueMicrotask(process_deferred)}last_scheduled_effect=signal;effect2=signal;for(;null!==effect2.parent;)if((flags=(effect2=effect2.parent).f)&(ROOT_EFFECT|BRANCH_EFFECT)){if(!(flags&CLEAN))return;effect2.f^=CLEAN}queued_root_effects.push(effect2)}function process_effects(effect2){var flags,is_branch,is_skippable_branch,sibling2,previous_active_reaction,child2,parent_sibling,effects=[],current_effect=effect2.first;main_loop:for(;null!==current_effect;){is_skippable_branch=(is_branch=!!((flags=current_effect.f)&BRANCH_EFFECT))&&!!(flags&CLEAN);sibling2=current_effect.next;if(!(is_skippable_branch||flags&INERT)){if(flags&EFFECT)effects.push(current_effect);else if(is_branch)current_effect.f^=CLEAN;else{previous_active_reaction=active_reaction;try{active_reaction=current_effect;check_dirtiness(current_effect)&&update_effect(current_effect)}catch(error){handle_error(error,current_effect,null,current_effect.ctx)}finally{active_reaction=previous_active_reaction}}if(null!==(child2=current_effect.first)){current_effect=child2;continue}}if(null===sibling2){let parent=current_effect.parent;for(;null!==parent;){if(effect2===parent)break main_loop;if(null!==(parent_sibling=parent.next)){current_effect=parent_sibling;continue main_loop}parent=parent.parent}}current_effect=sibling2}return effects}function get(signal){var deps,derived3,parent,entry,is_derived=!!(signal.f&DERIVED);null!==captured_signals&&captured_signals.add(signal);if(null===active_reaction||untracking)is_derived&&null===signal.deps&&null===signal.effects&&(null===(parent=(derived3=signal).parent)||parent.f&UNOWNED||(derived3.f^=UNOWNED));else{null!==derived_sources&&derived_sources.includes(signal)&&function state_unsafe_local_read(){if(dev_fallback_default){const error=new Error("state_unsafe_local_read\nReading state that was created inside the same derived is forbidden. Consider using `untrack` to read locally created state\nhttps://svelte.dev/e/state_unsafe_local_read");error.name="Svelte error";throw error}throw new Error("https://svelte.dev/e/state_unsafe_local_read")}();deps=active_reaction.deps;if(signal.rv<read_version){signal.rv=read_version;null===new_deps&&null!==deps&&deps[skipped_deps]===signal?skipped_deps++:null===new_deps?new_deps=[signal]:skip_reaction&&new_deps.includes(signal)||new_deps.push(signal)}}is_derived&&check_dirtiness(derived3=signal)&&update_derived(derived3);if(dev_fallback_default&&tracing_mode_flag&&null!==tracing_expressions&&null!==active_reaction&&tracing_expressions.reaction===active_reaction)if(signal.debug)signal.debug();else if(signal.created){if(void 0===(entry=tracing_expressions.entries.get(signal))){entry={read:[]};tracing_expressions.entries.set(signal,entry)}entry.read.push(get_stack("TracedAt"))}return signal.v}function invalidate_inner_signals(fn){var signal,captured=function capture_signals(fn){var captured,signal,previous_captured_signals=captured_signals;captured=captured_signals=new Set;try{untrack(fn);if(null!==previous_captured_signals)for(signal of captured_signals)previous_captured_signals.add(signal)}finally{captured_signals=previous_captured_signals}return captured}((()=>untrack(fn)));for(signal of captured)if(signal.f&LEGACY_DERIVED_PROP)for(const dep of signal.deps||[])dep.f&DERIVED||internal_set(dep,dep.v);else internal_set(signal,signal.v)}function untrack(fn){var previous_untracking=untracking;try{untracking=!0;return fn()}finally{untracking=previous_untracking}}function set_signal_status(signal,status){signal.f=signal.f&STATUS_MASK|status}function deep_read_state(value){if("object"==typeof value&&value&&!(value instanceof EventTarget))if(STATE_SYMBOL in value)deep_read(value);else if(!Array.isArray(value))for(let key2 in value){const prop2=value[key2];"object"==typeof prop2&&prop2&&STATE_SYMBOL in prop2&&deep_read(prop2)}}function deep_read(value,visited=new Set){if(!("object"!=typeof value||null===value||value instanceof EventTarget||visited.has(value))){visited.add(value);value instanceof Date&&value.getTime();for(let key2 in value)try{deep_read(value[key2],visited)}catch(e3){}const proto=get_prototype_of(value);if(proto!==Object.prototype&&proto!==Array.prototype&&proto!==Map.prototype&&proto!==Set.prototype&&proto!==Date.prototype){const descriptors=get_descriptors(proto);for(let key2 in descriptors){const get4=descriptors[key2].get;if(get4)try{get4.call(value)}catch(e3){}}}}}function validate_effect(rune){null===active_effect&&null===active_reaction&&function effect_orphan(rune){if(dev_fallback_default){const error=new Error(`effect_orphan\n\`${rune}\` can only be used inside an effect (e.g. during component initialisation)\nhttps://svelte.dev/e/effect_orphan`);error.name="Svelte error";throw error}throw new Error("https://svelte.dev/e/effect_orphan")}(rune);null!==active_reaction&&active_reaction.f&UNOWNED&&null===active_effect&&function effect_in_unowned_derived(){if(dev_fallback_default){const error=new Error("effect_in_unowned_derived\nEffect cannot be created inside a `$derived` value that was not itself created inside an effect\nhttps://svelte.dev/e/effect_in_unowned_derived");error.name="Svelte error";throw error}throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}();is_destroying_effect&&function effect_in_teardown(rune){if(dev_fallback_default){const error=new Error(`effect_in_teardown\n\`${rune}\` cannot be used inside an effect cleanup function\nhttps://svelte.dev/e/effect_in_teardown`);error.name="Svelte error";throw error}throw new Error("https://svelte.dev/e/effect_in_teardown")}(rune)}function create_effect(type,fn,sync3,push2=!0){var _a7,effect2,previously_flushing_effect,derived3,is_root=!!(type&ROOT_EFFECT),parent_effect=active_effect;if(dev_fallback_default)for(;null!==parent_effect&&parent_effect.f&INSPECT_EFFECT;)parent_effect=parent_effect.parent;effect2={ctx:component_context,deps:null,nodes_start:null,nodes_end:null,f:type|DIRTY,first:null,fn,last:null,next:null,parent:is_root?null:parent_effect,prev:null,teardown:null,transitions:null,wv:0};dev_fallback_default&&(effect2.component_function=dev_current_component_function);if(sync3){previously_flushing_effect=is_flushing_effect;try{set_is_flushing_effect(!0);update_effect(effect2);effect2.f|=EFFECT_RAN}catch(e3){destroy_effect(effect2);throw e3}finally{set_is_flushing_effect(previously_flushing_effect)}}else null!==fn&&schedule_effect(effect2);if((!sync3||null!==effect2.deps||null!==effect2.first||null!==effect2.nodes_start||null!==effect2.teardown||effect2.f&(EFFECT_HAS_DERIVED|BOUNDARY_EFFECT))&&!is_root&&push2){null!==parent_effect&&function push_effect(effect2,parent_effect){var parent_last=parent_effect.last;if(null===parent_last)parent_effect.last=parent_effect.first=effect2;else{parent_last.next=effect2;effect2.prev=parent_last;parent_effect.last=effect2}}(effect2,parent_effect);null!==active_reaction&&active_reaction.f&DERIVED&&(null!=(_a7=(derived3=active_reaction).effects)?_a7:derived3.effects=[]).push(effect2)}return effect2}function teardown(fn){const effect2=create_effect(RENDER_EFFECT,null,!1);set_signal_status(effect2,CLEAN);effect2.teardown=fn;return effect2}function user_effect(fn){var _a7,defer,context2;validate_effect("$effect");defer=null!==active_effect&&!!(active_effect.f&BRANCH_EFFECT)&&null!==component_context&&!component_context.m;dev_fallback_default&&define_property(fn,"name",{value:"$effect"});if(!defer)return effect(fn);(null!=(_a7=(context2=component_context).e)?_a7:context2.e=[]).push({fn,effect:active_effect,reaction:active_reaction})}function effect(fn){return create_effect(EFFECT,fn,!1)}function legacy_pre_effect(deps,fn){var context2=component_context,token={effect:null,ran:!1};context2.l.r1.push(token);token.effect=render_effect((()=>{deps();if(!token.ran){token.ran=!0;set(context2.l.r2,!0);untrack(fn)}}))}function legacy_pre_effect_reset(){var context2=component_context;render_effect((()=>{var token,effect2;if(get(context2.l.r2)){for(token of context2.l.r1){(effect2=token.effect).f&CLEAN&&set_signal_status(effect2,MAYBE_DIRTY);check_dirtiness(effect2)&&update_effect(effect2);token.ran=!1}context2.l.r2.v=!1}}))}function render_effect(fn){return create_effect(RENDER_EFFECT,fn,!0)}function template_effect(fn,thunks=[],d4=derived){const deriveds=thunks.map(d4),effect2=()=>fn(...deriveds.map(get));dev_fallback_default&&define_property(effect2,"name",{value:"{expression}"});return block(effect2)}function block(fn,flags=0){return create_effect(RENDER_EFFECT|BLOCK_EFFECT|flags,fn,!0)}function branch(fn,push2=!0){return create_effect(RENDER_EFFECT|BRANCH_EFFECT,fn,!0,push2)}function execute_effect_teardown(effect2){var teardown2=effect2.teardown;if(null!==teardown2){const previously_destroying_effect=is_destroying_effect,previous_reaction=active_reaction;set_is_destroying_effect(!0);set_active_reaction(null);try{teardown2.call(null)}finally{set_is_destroying_effect(previously_destroying_effect);set_active_reaction(previous_reaction)}}}function destroy_effect_children(signal,remove_dom=!1){var next2,effect2=signal.first;signal.first=signal.last=null;for(;null!==effect2;){next2=effect2.next;destroy_effect(effect2,remove_dom);effect2=next2}}function destroy_effect(effect2,remove_dom=!0){var node,end,next2,transitions,parent,removed=!1;if((remove_dom||effect2.f&HEAD_EFFECT)&&null!==effect2.nodes_start){node=effect2.nodes_start;end=effect2.nodes_end;for(;null!==node;){next2=node===end?null:get_next_sibling(node);node.remove();node=next2}removed=!0}destroy_effect_children(effect2,remove_dom&&!removed);remove_reactions(effect2,0);set_signal_status(effect2,DESTROYED);if(null!==(transitions=effect2.transitions))for(const transition2 of transitions)transition2.stop();execute_effect_teardown(effect2);null!==(parent=effect2.parent)&&null!==parent.first&&unlink_effect(effect2);dev_fallback_default&&(effect2.component_function=null);effect2.next=effect2.prev=effect2.teardown=effect2.ctx=effect2.deps=effect2.fn=effect2.nodes_start=effect2.nodes_end=null}function unlink_effect(effect2){var parent=effect2.parent,prev=effect2.prev,next2=effect2.next;null!==prev&&(prev.next=next2);null!==next2&&(next2.prev=prev);if(null!==parent){parent.first===effect2&&(parent.first=next2);parent.last===effect2&&(parent.last=prev)}}function pause_effect(effect2,callback){var transitions=[];pause_children(effect2,transitions,!0);run_out_transitions(transitions,(()=>{destroy_effect(effect2);callback&&callback()}))}function run_out_transitions(transitions,fn){var check,transition2,remaining=transitions.length;if(remaining>0){check=()=>--remaining||fn();for(transition2 of transitions)transition2.out(check)}else fn()}function pause_children(effect2,transitions,local){var child2,sibling2;if(!(effect2.f&INERT)){effect2.f^=INERT;if(null!==effect2.transitions)for(const transition2 of effect2.transitions)(transition2.is_global||local)&&transitions.push(transition2);child2=effect2.first;for(;null!==child2;){sibling2=child2.next;pause_children(child2,transitions,!!(child2.f&EFFECT_TRANSPARENT||child2.f&BRANCH_EFFECT)&&local);child2=sibling2}}}function resume_effect(effect2){resume_children(effect2,!0)}function resume_children(effect2,local){var child2,sibling2;if(effect2.f&INERT){effect2.f^=INERT;effect2.f&CLEAN||(effect2.f^=CLEAN);if(check_dirtiness(effect2)){set_signal_status(effect2,DIRTY);schedule_effect(effect2)}child2=effect2.first;for(;null!==child2;){sibling2=child2.next;resume_children(child2,!!(child2.f&EFFECT_TRANSPARENT||child2.f&BRANCH_EFFECT)&&local);child2=sibling2}if(null!==effect2.transitions)for(const transition2 of effect2.transitions)(transition2.is_global||local)&&transition2.in()}}function add_owner(object,owner,global=!1,skip_warning=!1){if(object&&!global){const component2=dev_current_component_function,metadata=object[STATE_SYMBOL_METADATA];if(metadata&&!has_owner(metadata,component2)){let original=get_owner(metadata);owner&&owner[FILENAME]!==component2[FILENAME]&&!skip_warning&&function ownership_invalid_binding(parent,child2,owner){dev_fallback_default?console.warn(`%c[svelte] ownership_invalid_binding\n%c${parent} passed a value to ${child2} with \`bind:\`, but the value is owned by ${owner}. Consider creating a binding between ${owner} and ${parent}\nhttps://svelte.dev/e/ownership_invalid_binding`,bold2,normal2):console.warn("https://svelte.dev/e/ownership_invalid_binding")}(component2[FILENAME],owner[FILENAME],original[FILENAME])}}add_owner_to_object(object,owner,new Set)}function widen_ownership(from,to){if(null!==to.owners)for(;from;){if(null===from.owners){to.owners=null;break}for(const owner of from.owners)to.owners.add(owner);from=from.parent}}function add_owner_to_object(object,owner,seen){var _a7,proto;const metadata=null==object?void 0:object[STATE_SYMBOL_METADATA];if(metadata)"owners"in metadata&&null!=metadata.owners&&(owner?metadata.owners.add(owner):metadata.owners=null);else if(object&&"object"==typeof object){if(seen.has(object))return;seen.add(object);if(ADD_OWNER in object&&object[ADD_OWNER])render_effect((()=>{object[ADD_OWNER](owner)}));else if((proto=get_prototype_of(object))===Object.prototype)for(const key2 in object)if(null==(_a7=Object.getOwnPropertyDescriptor(object,key2))?void 0:_a7.get){let current=UNINITIALIZED;render_effect((()=>{const next2=object[key2];if(current!==next2){current=next2;add_owner_to_object(next2,owner,seen)}}))}else add_owner_to_object(object[key2],owner,seen);else if(proto===Array.prototype)for(let i2=0;i2<object.length;i2+=1)add_owner_to_object(object[i2],owner,seen)}}function has_owner(metadata,component2){return null===metadata.owners||metadata.owners.has(component2)||FILENAME in component2&&[...metadata.owners].some((owner=>owner[FILENAME]===component2[FILENAME]))||null!==metadata.parent&&has_owner(metadata.parent,component2)}function get_owner(metadata){var _a7,_b3;return null!=(_b3=null==(_a7=null==metadata?void 0:metadata.owners)?void 0:_a7.values().next().value)?_b3:get_owner(metadata.parent)}function lifecycle_outside_component(name){if(dev_fallback_default){const error=new Error(`lifecycle_outside_component\n\`${name}(...)\` can only be used during component initialisation\nhttps://svelte.dev/e/lifecycle_outside_component`);error.name="Svelte error";throw error}throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function set_component_context(context2){component_context=context2}function set_dev_current_component_function(fn){dev_current_component_function=fn}function push(props,runes=!1,fn){component_context={p:component_context,c:null,e:null,m:!1,s:props,x:null,l:null};legacy_mode_flag&&!runes&&(component_context.l={s:null,u:null,r1:[],r2:source(!1)});if(dev_fallback_default){component_context.function=fn;dev_current_component_function=fn}}function pop(component2){var _a7,_b3,previous_effect,previous_reaction,i2,component_effect;const context_stack_item=component_context;if(null!==context_stack_item){void 0!==component2&&(context_stack_item.x=component2);const component_effects=context_stack_item.e;if(null!==component_effects){previous_effect=active_effect;previous_reaction=active_reaction;context_stack_item.e=null;try{for(i2=0;i2<component_effects.length;i2++){set_active_effect((component_effect=component_effects[i2]).effect);set_active_reaction(component_effect.reaction);effect(component_effect.fn)}}finally{set_active_effect(previous_effect);set_active_reaction(previous_reaction)}}component_context=context_stack_item.p;dev_fallback_default&&(dev_current_component_function=null!=(_b3=null==(_a7=context_stack_item.p)?void 0:_a7.function)?_b3:null);context_stack_item.m=!0}return component2||{}}function is_runes(){return!legacy_mode_flag||null!==component_context&&null===component_context.l}function get_or_init_context_map(name){var _a7;null===component_context&&lifecycle_outside_component(name);return null!=(_a7=component_context.c)?_a7:component_context.c=new Map(function get_parent_context(component_context2){let parent=component_context2.p;for(;null!==parent;){const context_map=parent.c;if(null!==context_map)return context_map;parent=parent.p}return null}(component_context)||void 0)}function add_form_reset_listener(){if(!listening_to_form_reset){listening_to_form_reset=!0;document.addEventListener("reset",(evt=>{Promise.resolve().then((()=>{var _a7;if(!evt.defaultPrevented)for(const e3 of evt.target.elements)null==(_a7=e3.__on_r)||_a7.call(e3)}))}),{capture:!0})}}function without_reactive_context(fn){var previous_reaction=active_reaction,previous_effect=active_effect;set_active_reaction(null);set_active_effect(null);try{return fn()}finally{set_active_reaction(previous_reaction);set_active_effect(previous_effect)}}function listen_to_event_and_reset_event(element2,event2,handler,on_reset=handler){element2.addEventListener(event2,(()=>without_reactive_context(handler)));const prev=element2.__on_r;element2.__on_r=prev?()=>{prev();on_reset(!0)}:()=>on_reset(!0);add_form_reset_listener()}function event(event_name,dom,handler,capture,passive2){var options={capture,passive:passive2},target_handler=function create_event(event_name,dom,handler,options={}){function target_handler(event2){options.capture||handle_event_propagation.call(dom,event2);if(!event2.cancelBubble)return without_reactive_context((()=>null==handler?void 0:handler.call(this,event2)))}event_name.startsWith("pointer")||event_name.startsWith("touch")||"wheel"===event_name?queue_micro_task((()=>{dom.addEventListener(event_name,target_handler,options)})):dom.addEventListener(event_name,target_handler,options);return target_handler}(event_name,dom,handler,options);dom!==document.body&&dom!==window&&dom!==document||teardown((()=>{dom.removeEventListener(event_name,target_handler,options)}))}function delegate(events){var i2,fn;for(i2=0;i2<events.length;i2++)all_registered_events.add(events[i2]);for(fn of root_event_handles)fn(events)}function handle_event_propagation(event2){var _a7,at_idx,handler_idx,previous_reaction,previous_effect,throw_error,other_errors,parent_element,delegated,handler_element=this,owner_document=handler_element.ownerDocument,event_name=event2.type,path2=(null==(_a7=event2.composedPath)?void 0:_a7.call(event2))||[],current_target=path2[0]||event2.target,path_idx=0,handled_at=event2.__root;if(handled_at){if(-1!==(at_idx=path2.indexOf(handled_at))&&(handler_element===document||handler_element===window)){event2.__root=handler_element;return}if(-1===(handler_idx=path2.indexOf(handler_element)))return;at_idx<=handler_idx&&(path_idx=at_idx)}if((current_target=path2[path_idx]||event2.target)!==handler_element){define_property(event2,"currentTarget",{configurable:!0,get:()=>current_target||owner_document});previous_reaction=active_reaction;previous_effect=active_effect;set_active_reaction(null);set_active_effect(null);try{other_errors=[];for(;null!==current_target;){parent_element=current_target.assignedSlot||current_target.parentNode||current_target.host||null;try{if(void 0!==(delegated=current_target["__"+event_name])&&!current_target.disabled)if(is_array(delegated)){var[fn,...data]=delegated;fn.apply(current_target,[event2,...data])}else delegated.call(current_target,event2)}catch(error){throw_error?other_errors.push(error):throw_error=error}if(event2.cancelBubble||parent_element===handler_element||null===parent_element)break;current_target=parent_element}if(throw_error){for(let error of other_errors)queueMicrotask((()=>{throw error}));throw throw_error}}finally{event2.__root=handler_element;delete event2.currentTarget;set_active_reaction(previous_reaction);set_active_effect(previous_effect)}}}function assign_nodes(start,end){var effect2=active_effect;if(null===effect2.nodes_start){effect2.nodes_start=start;effect2.nodes_end=end}}function template(content,flags){var node,is_fragment=!!(flags&TEMPLATE_FRAGMENT),use_import_node=!!(flags&TEMPLATE_USE_IMPORT_NODE),has_start=!content.startsWith("<!>");return()=>{var clone3;if(hydrating){assign_nodes(hydrate_node,null);return hydrate_node}if(void 0===node){node=function create_fragment_from_html(html2){var elem=document.createElement("template");elem.innerHTML=html2;return elem.content}(has_start?content:"<!>"+content);is_fragment||(node=get_first_child(node))}clone3=use_import_node||is_firefox?document.importNode(node,!0):node.cloneNode(!0);is_fragment?assign_nodes(get_first_child(clone3),clone3.lastChild):assign_nodes(clone3,clone3);return clone3}}function text(value=""){var t3,node;if(!hydrating){assign_nodes(t3=create_text(value+""),t3);return t3}if(3!==(node=hydrate_node).nodeType){node.before(node=create_text());set_hydrate_node(node)}assign_nodes(node,node);return node}function comment(){var frag,start,anchor;if(hydrating){assign_nodes(hydrate_node,null);return hydrate_node}frag=document.createDocumentFragment();start=document.createComment("");anchor=create_text();frag.append(start,anchor);assign_nodes(start,anchor);return frag}function append(anchor,dom){if(hydrating){active_effect.nodes_end=hydrate_node;hydrate_next()}else null!==anchor&&anchor.before(dom)}function set_text(text2,value){var _a7,str=null==value?"":"object"==typeof value?value+"":value;if(str!==(null!=(_a7=text2.__t)?_a7:text2.__t=text2.nodeValue)){text2.__t=str;text2.nodeValue=str+""}}function mount(component2,options){return function _mount(Component,{target,anchor,props={},events,context:context2,intro=!0}){var registered_events,event_handle,component2,unmount2;(function init_operations(){var element_prototype,node_prototype;if(void 0===$window){$window=window;document;is_firefox=/Firefox/.test(navigator.userAgent);element_prototype=Element.prototype;node_prototype=Node.prototype;first_child_getter=get_descriptor(node_prototype,"firstChild").get;next_sibling_getter=get_descriptor(node_prototype,"nextSibling").get;element_prototype.__click=void 0;element_prototype.__className="";element_prototype.__attributes=null;element_prototype.__styles=null;element_prototype.__e=void 0;Text.prototype.__t=void 0;if(dev_fallback_default){element_prototype.__svelte_meta=null;(function init_array_prototype_warnings(){const array_prototype2=Array.prototype,cleanup=Array.__svelte_cleanup;cleanup&&cleanup();const{indexOf,lastIndexOf,includes}=array_prototype2;array_prototype2.indexOf=function(item,from_index){const index6=indexOf.call(this,item,from_index);if(-1===index6)for(let i2=null!=from_index?from_index:0;i2<this.length;i2+=1)if(get_proxied_value(this[i2])===item){state_proxy_equality_mismatch("array.indexOf(...)");break}return index6};array_prototype2.lastIndexOf=function(item,from_index){const index6=lastIndexOf.call(this,item,null!=from_index?from_index:this.length-1);if(-1===index6)for(let i2=0;i2<=(null!=from_index?from_index:this.length-1);i2+=1)if(get_proxied_value(this[i2])===item){state_proxy_equality_mismatch("array.lastIndexOf(...)");break}return index6};array_prototype2.includes=function(item,from_index){const has=includes.call(this,item,from_index);if(!has)for(let i2=0;i2<this.length;i2+=1)if(get_proxied_value(this[i2])===item){state_proxy_equality_mismatch("array.includes(...)");break}return has};Array.__svelte_cleanup=()=>{array_prototype2.indexOf=indexOf;array_prototype2.lastIndexOf=lastIndexOf;array_prototype2.includes=includes}})()}}})();registered_events=new Set;event_handle=events2=>{var i2,event_name,passive2,n3,name;for(i2=0;i2<events2.length;i2++){event_name=events2[i2];if(!registered_events.has(event_name)){registered_events.add(event_name);passive2=(name=event_name,PASSIVE_EVENTS.includes(name));target.addEventListener(event_name,handle_event_propagation,{passive:passive2});if(void 0===(n3=document_listeners.get(event_name))){document.addEventListener(event_name,handle_event_propagation,{passive:passive2});document_listeners.set(event_name,1)}else document_listeners.set(event_name,n3+1)}}};event_handle(array_from(all_registered_events));root_event_handles.add(event_handle);component2=void 0;unmount2=function component_root(fn){const effect2=create_effect(ROOT_EFFECT,fn,!0);return(options={})=>new Promise((fulfil=>{if(options.outro)pause_effect(effect2,(()=>{destroy_effect(effect2);fulfil(void 0)}));else{destroy_effect(effect2);fulfil(void 0)}}))}((()=>{var anchor_node=null!=anchor?anchor:target.appendChild(create_text());branch((()=>{if(context2){push({});component_context.c=context2}events&&(props.$$events=events);hydrating&&assign_nodes(anchor_node,null);component2=Component(anchor_node,props)||{};hydrating&&(active_effect.nodes_end=hydrate_node);context2&&pop()}));return()=>{var _a7,event_name,n3;for(event_name of registered_events){target.removeEventListener(event_name,handle_event_propagation);n3=document_listeners.get(event_name);if(0==--n3){document.removeEventListener(event_name,handle_event_propagation);document_listeners.delete(event_name)}else document_listeners.set(event_name,n3)}root_event_handles.delete(event_handle);anchor_node!==anchor&&(null==(_a7=anchor_node.parentNode)||_a7.removeChild(anchor_node))}}));mounted_components.set(component2,unmount2);return component2}(component2,options)}function unmount(component2,options){const fn=mounted_components.get(component2);if(fn){mounted_components.delete(component2);return fn(options)}dev_fallback_default&&function lifecycle_double_unmount(){dev_fallback_default?console.warn("%c[svelte] lifecycle_double_unmount\n%cTried to unmount a component that was not mounted\nhttps://svelte.dev/e/lifecycle_double_unmount",bold2,normal2):console.warn("https://svelte.dev/e/lifecycle_double_unmount")}();return Promise.resolve()}function if_block(node,fn,elseif=!1){var anchor,consequent_effect,alternate_effect,condition,has_branch;hydrating&&hydrate_next();anchor=node;consequent_effect=null;alternate_effect=null;condition=UNINITIALIZED;has_branch=!1;const set_branch=(fn2,flag=!0)=>{has_branch=!0;update_branch(flag,fn2)},update_branch=(new_condition,fn2)=>{if(condition===(condition=new_condition))return;let mismatch=!1;if(hydrating){const is_else=anchor.data===HYDRATION_START_ELSE;if(!!condition===is_else){set_hydrate_node(anchor=remove_nodes());set_hydrating(!1);mismatch=!0}}if(condition){consequent_effect?resume_effect(consequent_effect):fn2&&(consequent_effect=branch((()=>fn2(anchor))));alternate_effect&&pause_effect(alternate_effect,(()=>{alternate_effect=null}))}else{alternate_effect?resume_effect(alternate_effect):fn2&&(alternate_effect=branch((()=>fn2(anchor))));consequent_effect&&pause_effect(consequent_effect,(()=>{consequent_effect=null}))}mismatch&&set_hydrating(!0)};block((()=>{has_branch=!1;fn(set_branch);has_branch||update_branch(null,null)}),elseif?EFFECT_TRANSPARENT:0);hydrating&&(anchor=hydrate_node)}function index(_,i2){return i2}function each(node,flags,get_collection,get_key,render_fn,fallback_fn=null){var parent_node,fallback2,was_empty,each_array,anchor=node,state2={flags,items:new Map,first:null};if(flags&EACH_IS_CONTROLLED){parent_node=node;anchor=hydrating?set_hydrate_node(get_first_child(parent_node)):parent_node.appendChild(create_text())}hydrating&&hydrate_next();fallback2=null;was_empty=!1;each_array=derived_safe_equal((()=>{var collection=get_collection();return is_array(collection)?collection:null==collection?[]:array_from(collection)}));block((()=>{var prev,item,i2,value,key2,array=get(each_array),length=array.length;if(was_empty&&0===length)return;was_empty=0===length;let mismatch=!1;if(hydrating&&anchor.data===HYDRATION_START_ELSE!=(0===length)){set_hydrate_node(anchor=remove_nodes());set_hydrating(!1);mismatch=!0}if(hydrating){prev=null;for(i2=0;i2<length;i2++){if(8===hydrate_node.nodeType&&hydrate_node.data===HYDRATION_END){anchor=hydrate_node;mismatch=!0;set_hydrating(!1);break}value=array[i2];key2=get_key(value,i2);item=create_item(hydrate_node,state2,prev,null,value,key2,i2,render_fn,flags,get_collection);state2.items.set(key2,item);prev=item}length>0&&set_hydrate_node(remove_nodes())}hydrating||function reconcile(array,state2,anchor,render_fn,flags,get_key,get_collection){var _a7,_b3,_c2,_d2,seen,to_animate,value,key2,item,i2,start,j2,a2,b3,to_destroy,destroy_length,controlled_anchor,is_animated=!!(flags&EACH_IS_ANIMATED),should_update=!!(flags&(EACH_ITEM_REACTIVE|EACH_INDEX_REACTIVE)),length=array.length,items=state2.items,current=state2.first,prev=null,matched=[],stashed=[];if(is_animated)for(i2=0;i2<length;i2+=1){key2=get_key(value=array[i2],i2);if(void 0!==(item=items.get(key2))){null==(_a7=item.a)||_a7.measure();(null!=to_animate?to_animate:to_animate=new Set).add(item)}}for(i2=0;i2<length;i2+=1){key2=get_key(value=array[i2],i2);if(void 0!==(item=items.get(key2))){should_update&&update_item(item,value,i2,flags);if(item.e.f&INERT){resume_effect(item.e);if(is_animated){null==(_b3=item.a)||_b3.unfix();(null!=to_animate?to_animate:to_animate=new Set).delete(item)}}if(item!==current){if(void 0!==seen&&seen.has(item)){if(matched.length<stashed.length){prev=(start=stashed[0]).prev;a2=matched[0];b3=matched[matched.length-1];for(j2=0;j2<matched.length;j2+=1)move(matched[j2],start,anchor);for(j2=0;j2<stashed.length;j2+=1)seen.delete(stashed[j2]);link(state2,a2.prev,b3.next);link(state2,prev,a2);link(state2,b3,start);current=start;prev=b3;i2-=1;matched=[];stashed=[]}else{seen.delete(item);move(item,current,anchor);link(state2,item.prev,item.next);link(state2,item,null===prev?state2.first:prev.next);link(state2,prev,item);prev=item}continue}matched=[];stashed=[];for(;null!==current&¤t.k!==key2;){current.e.f&INERT||(null!=seen?seen:seen=new Set).add(current);stashed.push(current);current=current.next}if(null===current)continue;item=current}matched.push(item);prev=item;current=item.next}else{prev=create_item(current?current.e.nodes_start:anchor,state2,prev,null===prev?state2.first:prev.next,value,key2,i2,render_fn,flags,get_collection);items.set(key2,prev);matched=[];stashed=[];current=prev.next}}if(null!==current||void 0!==seen){to_destroy=void 0===seen?[]:array_from(seen);for(;null!==current;){current.e.f&INERT||to_destroy.push(current);current=current.next}if((destroy_length=to_destroy.length)>0){controlled_anchor=flags&EACH_IS_CONTROLLED&&0===length?anchor:null;if(is_animated){for(i2=0;i2<destroy_length;i2+=1)null==(_c2=to_destroy[i2].a)||_c2.measure();for(i2=0;i2<destroy_length;i2+=1)null==(_d2=to_destroy[i2].a)||_d2.fix()}(function pause_effects(state2,items,controlled_anchor,items_map){var i2,is_controlled,parent_node,transitions=[],length=items.length;for(i2=0;i2<length;i2++)pause_children(items[i2].e,transitions,!0);if(is_controlled=length>0&&0===transitions.length&&null!==controlled_anchor){(function clear_text_content(node){node.textContent=""})(parent_node=controlled_anchor.parentNode);parent_node.append(controlled_anchor);items_map.clear();link(state2,items[0].prev,items[length-1].next)}run_out_transitions(transitions,(()=>{var i3,item;for(i3=0;i3<length;i3++){item=items[i3];if(!is_controlled){items_map.delete(item.k);link(state2,item.prev,item.next)}destroy_effect(item.e,!is_controlled)}}))})(state2,to_destroy,controlled_anchor,items)}}is_animated&&queue_micro_task((()=>{var _a8;if(void 0!==to_animate)for(item of to_animate)null==(_a8=item.a)||_a8.apply()}));active_effect.first=state2.first&&state2.first.e;active_effect.last=prev&&prev.e}(array,state2,anchor,render_fn,flags,get_key,get_collection);null!==fallback_fn&&(0===length?fallback2?resume_effect(fallback2):fallback2=branch((()=>fallback_fn(anchor))):null!==fallback2&&pause_effect(fallback2,(()=>{fallback2=null})));mismatch&&set_hydrating(!0);get(each_array)}));hydrating&&(anchor=hydrate_node)}function update_item(item,value,index6,type){type&EACH_ITEM_REACTIVE&&internal_set(item.v,value);type&EACH_INDEX_REACTIVE?internal_set(item.i,index6):item.i=index6}function create_item(anchor,state2,prev,next2,value,key2,index6,render_fn,flags,get_collection){var item,previous_each_item=current_each_item,reactive2=!!(flags&EACH_ITEM_REACTIVE),v2=reactive2?flags&EACH_ITEM_IMMUTABLE?source(value):mutable_source(value):value,i2=flags&EACH_INDEX_REACTIVE?source(index6):index6;dev_fallback_default&&reactive2&&(v2.debug=()=>{var collection_index="number"==typeof i2?index6:i2.v;get_collection()[collection_index]});current_each_item=item={i:i2,v:v2,k:key2,a:null,e:null,prev,next:next2};try{item.e=branch((()=>render_fn(anchor,v2,i2,get_collection)),hydrating);item.e.prev=prev&&prev.e;item.e.next=next2&&next2.e;if(null===prev)state2.first=item;else{prev.next=item;prev.e.next=item.e}if(null!==next2){next2.prev=item;next2.e.prev=item.e}return item}finally{current_each_item=previous_each_item}}function move(item,next2,anchor){for(var next_node,end=item.next?item.next.e.nodes_start:anchor,dest=next2?next2.e.nodes_start:anchor,node=item.e.nodes_start;node!==end;){next_node=get_next_sibling(node);dest.before(node);node=next_node}}function link(state2,prev,next2){if(null===prev)state2.first=next2;else{prev.next=next2;prev.e.next=next2&&next2.e}if(null!==next2){next2.prev=prev;next2.e.prev=prev&&prev.e}}function append_styles(anchor,css){queue_micro_task((()=>{var _a7,root9=anchor.getRootNode(),target=root9.host?root9:null!=(_a7=root9.head)?_a7:root9.ownerDocument.head;if(!target.querySelector("#"+css.hash)){const style=document.createElement("style");style.id=css.hash;style.textContent=css.code;target.appendChild(style);dev_fallback_default&&function register_style(hash3,style){var styles=all_styles.get(hash3);if(!styles){styles=new Set;all_styles.set(hash3,styles)}styles.add(style)}(css.hash,style)}}))}function r(e3){var t3,f4,o2,n3="";if("string"==typeof e3||"number"==typeof e3)n3+=e3;else if("object"==typeof e3)if(Array.isArray(e3)){o2=e3.length;for(t3=0;t3<o2;t3++)e3[t3]&&(f4=r(e3[t3]))&&(n3&&(n3+=" "),n3+=f4)}else for(f4 in e3)e3[f4]&&(n3&&(n3+=" "),n3+=f4);return n3}function clsx2(value){return"object"==typeof value?function clsx(){for(var e3,t3,f4=0,n3="",o2=arguments.length;f4<o2;f4++)(e3=arguments[f4])&&(t3=r(e3))&&(n3&&(n3+=" "),n3+=t3);return n3}(value):null!=value?value:""}function remove_input_defaults(input){var already_removed,remove_defaults;if(hydrating){already_removed=!1;remove_defaults=()=>{var value,checked;if(!already_removed){already_removed=!0;if(input.hasAttribute("value")){value=input.value;set_attribute(input,"value",null);input.value=value}if(input.hasAttribute("checked")){checked=input.checked;set_attribute(input,"checked",null);input.checked=checked}}};input.__on_r=remove_defaults;(function queue_idle_task(fn){if(!is_idle_task_queued){is_idle_task_queued=!0;request_idle_callback(process_idle_tasks)}current_queued_idle_tasks.push(fn)})(remove_defaults);add_form_reset_listener()}}function set_attribute(element2,attribute,value,skip_warning){var _a7,attributes=null!=(_a7=element2.__attributes)?_a7:element2.__attributes={};if(hydrating){attributes[attribute]=element2.getAttribute(attribute);if("src"===attribute||"srcset"===attribute||"href"===attribute&&"LINK"===element2.nodeName){skip_warning||function check_src_in_dev_hydration(element2,attribute,value){var _a7;dev_fallback_default&&("srcset"===attribute&&function srcset_url_equal(element2,srcset){var element_urls=split_srcset(element2.srcset),urls=split_srcset(srcset);return urls.length===element_urls.length&&urls.every((([url,width],i2)=>width===element_urls[i2][1]&&(src_url_equal(element_urls[i2][0],url)||src_url_equal(url,element_urls[i2][0]))))}(element2,value)||src_url_equal(null!=(_a7=element2.getAttribute(attribute))?_a7:"",value)||function hydration_attribute_changed(attribute,html2,value){dev_fallback_default?console.warn(`%c[svelte] hydration_attribute_changed\n%cThe \`${attribute}\` attribute on \`${html2}\` changed its value between server and client renders. The client value, \`${value}\`, will be ignored in favour of the server value\nhttps://svelte.dev/e/hydration_attribute_changed`,bold2,normal2):console.warn("https://svelte.dev/e/hydration_attribute_changed")}(attribute,element2.outerHTML.replace(element2.innerHTML,element2.innerHTML&&"..."),String(value)))}(element2,attribute,null!=value?value:"");return}}if(attributes[attribute]!==(attributes[attribute]=value)){"style"===attribute&&"__styles"in element2&&(element2.__styles={});"loading"===attribute&&(element2[LOADING_ATTR_SYMBOL]=value);null==value?element2.removeAttribute(attribute):"string"!=typeof value&&function get_setters(element2){var descriptors,proto,element_proto,key2,setters=setters_cache.get(element2.nodeName);if(setters)return setters;setters_cache.set(element2.nodeName,setters=[]);proto=element2;element_proto=Element.prototype;for(;element_proto!==proto;){descriptors=get_descriptors(proto);for(key2 in descriptors)descriptors[key2].set&&setters.push(key2);proto=get_prototype_of(proto)}return setters}(element2).includes(attribute)?element2[attribute]=value:element2.setAttribute(attribute,value)}}function src_url_equal(element_src,url){return element_src===url||new URL(element_src,document.baseURI).href===new URL(url,document.baseURI).href}function split_srcset(srcset){return srcset.split(",").map((src=>src.trim().split(" ").filter(Boolean)))}function set_class(dom,value,hash3){var prev_class_name=dom.__className,next_class_name=function to_class(value,hash3){return(null==value?"":value)+(hash3?" "+hash3:"")}(value,hash3);if(hydrating&&dom.className===next_class_name)dom.__className=next_class_name;else if(prev_class_name!==next_class_name||hydrating&&dom.className!==next_class_name){null!=value||hash3?dom.className=next_class_name:dom.removeAttribute("class");dom.__className=next_class_name}}function bind_value(input,get4,set2=get4){var runes=is_runes();listen_to_event_and_reset_event(input,"input",(is_reset=>{var value,start,end;dev_fallback_default&&"checkbox"===input.type&&bind_invalid_checkbox_value();value=is_reset?input.defaultValue:input.value;value=is_numberlike_input(input)?to_number(value):value;set2(value);if(runes&&value!==(value=get4())){start=input.selectionStart;end=input.selectionEnd;input.value=null!=value?value:"";if(null!==end){input.selectionStart=start;input.selectionEnd=Math.min(end,input.value.length)}}}));(hydrating&&input.defaultValue!==input.value||null==untrack(get4)&&input.value)&&set2(is_numberlike_input(input)?to_number(input.value):input.value);render_effect((()=>{dev_fallback_default&&"checkbox"===input.type&&bind_invalid_checkbox_value();var value=get4();is_numberlike_input(input)&&value===to_number(input.value)||("date"!==input.type||value||input.value)&&value!==input.value&&(input.value=null!=value?value:"")}))}function bind_checked(input,get4,set2=get4){listen_to_event_and_reset_event(input,"change",(is_reset=>{var value=is_reset?input.defaultChecked:input.checked;set2(value)}));(hydrating&&input.defaultChecked!==input.checked||null==untrack(get4))&&set2(input.checked);render_effect((()=>{var value=get4();input.checked=Boolean(value)}))}function get_binding_group_value(group,__value,checked){var i2,value=new Set;for(i2=0;i2<group.length;i2+=1)group[i2].checked&&value.add(group[i2].__value);checked||value.delete(__value);return Array.from(value)}function is_numberlike_input(input){var type=input.type;return"number"===type||"range"===type}function to_number(value){return""===value?null:+value}function select_option(select,value,mounting){var option;if(select.multiple)return function select_options(select,value){for(var option of select.options)option.selected=~value.indexOf(get_option_value(option))}(select,value);for(option of select.options)if(is(get_option_value(option),value)){option.selected=!0;return}mounting&&void 0===value||(select.selectedIndex=-1)}function bind_select_value(select,get4,set2=get4){var mounting=!0;listen_to_event_and_reset_event(select,"change",(is_reset=>{var _a7,value,selected_option,query3=is_reset?"[selected]":":checked";value=select.multiple?[].map.call(select.querySelectorAll(query3),get_option_value):(selected_option=null!=(_a7=select.querySelector(query3))?_a7:select.querySelector("option:not([disabled])"))&&get_option_value(selected_option);set2(value)}));effect((()=>{var selected_option,value=get4();select_option(select,value,mounting);if(mounting&&void 0===value&&null!==(selected_option=select.querySelector(":checked"))){value=get_option_value(selected_option);set2(value)}select.__value=value;mounting=!1}));(function init_select(select,get_value){let mounting=!0;effect((()=>{get_value&&select_option(select,untrack(get_value),mounting);mounting=!1;var observer=new MutationObserver((()=>{var value=select.__value;select_option(select,value)}));observer.observe(select,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]});return()=>{observer.disconnect()}}))})(select)}function get_option_value(option){return"__value"in option?option.__value:option.value}function is_bound_this(bound_value,element_or_component){return bound_value===element_or_component||(null==bound_value?void 0:bound_value[STATE_SYMBOL])===element_or_component}function bind_this(element_or_component={},update2,get_value,get_parts){effect((()=>{var old_parts,parts;render_effect((()=>{old_parts=parts;parts=(null==get_parts?void 0:get_parts())||[];untrack((()=>{if(element_or_component!==get_value(...parts)){update2(element_or_component,...parts);old_parts&&is_bound_this(get_value(...old_parts),element_or_component)&&update2(null,...old_parts)}}))}));return()=>{queue_micro_task((()=>{parts&&is_bound_this(get_value(...parts),element_or_component)&&update2(null,...parts)}))}}));return element_or_component}function bind_property(property,event_name,element2,set2,get4){var handler=()=>{set2(element2[property])};element2.addEventListener(event_name,handler);get4?render_effect((()=>{element2[property]=get4()})):handler();element2!==document.body&&element2!==window&&element2!==document||teardown((()=>{element2.removeEventListener(event_name,handler)}))}function init(immutable=!1){const context2=component_context,callbacks=context2.l.u;if(!callbacks)return;let props=()=>deep_read_state(context2.s);if(immutable){let version2=0,prev={};const d4=derived((()=>{let changed=!1;const props2=context2.s;for(const key2 in props2)if(props2[key2]!==prev[key2]){prev[key2]=props2[key2];changed=!0}changed&&version2++;return version2}));props=()=>get(d4)}callbacks.b.length&&function user_pre_effect(fn){validate_effect("$effect.pre");dev_fallback_default&&define_property(fn,"name",{value:"$effect.pre"});render_effect(fn)}((()=>{observe_all(context2,props);run_all(callbacks.b)}));user_effect((()=>{const fns=untrack((()=>callbacks.m.map(run)));return()=>{for(const fn of fns)"function"==typeof fn&&fn()}}));callbacks.a.length&&user_effect((()=>{observe_all(context2,props);run_all(callbacks.a)}))}function observe_all(context2,props){if(context2.l.s)for(const signal of context2.l.s)get(signal);props()}function onMount(fn){null===component_context&&lifecycle_outside_component("onMount");legacy_mode_flag&&null!==component_context.l?function init_update_callbacks(context2){var _a7,l2=context2.l;return null!=(_a7=l2.u)?_a7:l2.u={a:[],b:[],m:[]}}(component_context).m.push(fn):user_effect((()=>{const cleanup=untrack(fn);if("function"==typeof cleanup)return cleanup}))}function onDestroy(fn){null===component_context&&lifecycle_outside_component("onDestroy");onMount((()=>()=>untrack(fn)))}function subscribe_to_store(store,run3,invalidate){if(null==store){run3(void 0);invalidate&&invalidate(void 0);return noop2}const unsub=untrack((()=>store.subscribe(run3,invalidate)));return unsub.unsubscribe?()=>unsub.unsubscribe():unsub}function writable(value,start=noop2){function set2(new_value){if(safe_not_equal(value,new_value)){value=new_value;if(stop){const run_queue=!subscriber_queue.length;for(const subscriber of subscribers){subscriber[1]();subscriber_queue.push(subscriber,value)}if(run_queue){for(let i2=0;i2<subscriber_queue.length;i2+=2)subscriber_queue[i2][0](subscriber_queue[i2+1]);subscriber_queue.length=0}}}}function update2(fn){set2(fn(value))}let stop=null;const subscribers=new Set;return{set:set2,update:update2,subscribe:function subscribe2(run3,invalidate=noop2){const subscriber=[run3,invalidate];subscribers.add(subscriber);1===subscribers.size&&(stop=start(set2,update2)||noop2);run3(value);return()=>{subscribers.delete(subscriber);if(0===subscribers.size&&stop){stop();stop=null}}}}}function store_get(store,store_name,stores){var _a7,is_synchronous_callback;const entry=null!=(_a7=stores[store_name])?_a7:stores[store_name]={store:null,source:mutable_source(void 0),unsubscribe:noop2};if(entry.store!==store&&!(IS_UNMOUNTED in stores)){entry.unsubscribe();entry.store=null!=store?store:null;if(null==store){entry.source.v=void 0;entry.unsubscribe=noop2}else{is_synchronous_callback=!0;entry.unsubscribe=subscribe_to_store(store,(v2=>{is_synchronous_callback?entry.source.v=v2:set(entry.source,v2)}));is_synchronous_callback=!1}}return store&&IS_UNMOUNTED in stores?function get2(store){let value;subscribe_to_store(store,(_=>value=_))();return value}(store):get(entry.source)}function setup_stores(){const stores={};return[stores,function cleanup(){teardown((()=>{for(var store_name in stores)stores[store_name].unsubscribe();define_property(stores,IS_UNMOUNTED,{enumerable:!1,value:!0})}))}]}function spread_props(...props){return new Proxy({props},spread_props_handler)}function prop(props,key2,flags,fallback2){var _a7,_b3,prop_value,is_entry_props,setter,fallback_value,fallback_dirty,fallback_used,get_fallback,getter,derived_getter,legacy_parent,from_child,was_from_child,inner_current_value,current_value,immutable=!!(flags&PROPS_IS_IMMUTABLE),runes=!legacy_mode_flag||!!(flags&PROPS_IS_RUNES),bindable=!!(flags&PROPS_IS_BINDABLE),lazy=!!(flags&PROPS_IS_LAZY_INITIAL),is_store_sub=!1;bindable?[prop_value,is_store_sub]=function capture_store_binding(fn){var previous_is_store_binding=is_store_binding;try{is_store_binding=!1;return[fn(),is_store_binding]}finally{is_store_binding=previous_is_store_binding}}((()=>props[key2])):prop_value=props[key2];is_entry_props=STATE_SYMBOL in props||LEGACY_PROPS in props;setter=bindable&&(null!=(_b3=null==(_a7=get_descriptor(props,key2))?void 0:_a7.set)?_b3:is_entry_props&&key2 in props&&(v2=>props[key2]=v2))||void 0;fallback_value=fallback2;fallback_dirty=!0;fallback_used=!1;get_fallback=()=>{fallback_used=!0;if(fallback_dirty){fallback_dirty=!1;fallback_value=lazy?untrack(fallback2):fallback2}return fallback_value};if(void 0===prop_value&&void 0!==fallback2){setter&&runes&&function props_invalid_value(key2){if(dev_fallback_default){const error=new Error(`props_invalid_value\nCannot do \`bind:${key2}={undefined}\` when \`${key2}\` has a fallback value\nhttps://svelte.dev/e/props_invalid_value`);error.name="Svelte error";throw error}throw new Error("https://svelte.dev/e/props_invalid_value")}(key2);prop_value=get_fallback();setter&&setter(prop_value)}if(runes)getter=()=>{var value=props[key2];if(void 0===value)return get_fallback();fallback_dirty=!0;fallback_used=!1;return value};else{(derived_getter=(immutable?derived:derived_safe_equal)((()=>props[key2]))).f|=LEGACY_DERIVED_PROP;getter=()=>{var value=get(derived_getter);void 0!==value&&(fallback_value=void 0);return void 0===value?fallback_value:value}}if(!(flags&PROPS_IS_UPDATED))return getter;if(setter){legacy_parent=props.$$legacy;return function(value,mutation){if(arguments.length>0){runes&&mutation&&!legacy_parent&&!is_store_sub||setter(mutation?getter():value);return value}return getter()}}from_child=!1;was_from_child=!1;inner_current_value=mutable_source(prop_value);current_value=derived((()=>{var parent_value=getter(),child_value=get(inner_current_value);if(from_child){from_child=!1;was_from_child=!0;return child_value}was_from_child=!1;return inner_current_value.v=parent_value}));immutable||(current_value.equals=safe_equals);return function(value,mutation){if(null!==captured_signals){from_child=was_from_child;getter();get(inner_current_value)}if(arguments.length>0){const new_value=mutation?get(current_value):runes&&bindable?proxy(value):value;if(!current_value.equals(new_value)){from_child=!0;set(inner_current_value,new_value);fallback_used&&void 0!==fallback_value&&(fallback_value=new_value);untrack((()=>get(current_value)))}return value}return get(current_value)}}function expandKeywords(message,lang,recurseLimit=10){if(recurseLimit<=0){Logger("ExpandKeywords hit the recursion limit, returning the current state. but this is not expected. May recursive referenced.");return message}const keywords=Object.entries(message).map((([key2,value])=>[key2,value[lang]])).map((([key2,value])=>[`${key2.startsWith("K.")?key2.substring(2):key2}`,value])).map((([key2,value])=>[[`%{${key2}}`,value]])).flat().sort(((a2,b3)=>{var _a7,_b3,_c2,_d2;return(null!=(_b3=null==(_a7=a2[1])?void 0:_a7.length)?_b3:0)-(null!=(_d2=null==(_c2=b3[1])?void 0:_c2.length)?_d2:0)})),ret={...message};let isChanged=!1;for(const key2 of Object.keys(message))if(lang in ret[key2])for(const[keyword,replacement]of keywords)if(ret[key2][lang].includes(keyword)){ret[key2][lang]=ret[key2][lang].split(keyword).join(replacement);isChanged=!0}return isChanged?expandKeywords(ret,lang,recurseLimit--):ret}function __onMissingTranslation(callback){__onMissingTranslations=callback}function setLang(lang){if(lang!==currentLang){currentLang=lang;msgCache.clear()}}function _getMessage(key2,lang){var _a7;if(""==key2.trim())return key2;const msgs=null!=(_a7=allMessages[key2])?_a7:void 0;""==lang&&(lang="def");let msg=null==msgs?void 0:msgs[lang];if(!msg){if(!missingTranslations.contains(key2)){__onMissingTranslations(key2);missingTranslations.push(key2)}msg=null==msgs?void 0:msgs.def}return null!=msg?msg:key2}function $t(message,lang){return void 0!==lang?_getMessage(message,lang):function getMessage(key2){if(msgCache.has(key2))return msgCache.get(key2);const msg=_getMessage(key2,currentLang);msgCache.set(key2,msg);return msg}(message)}function $msg(key2,params={},lang){let msg=$t(key2,lang);for(const[placeholder,value]of Object.entries(params)){const regex=new RegExp(`\\\${${placeholder}}`,"g");msg=msg.replace(regex,value)}return msg}function LogPane($$anchor,$$props){function updateLog(logs){const e3=logs.value;if(!get(suspended)){set(messages,proxy([...e3]));setTimeout((()=>{scroll&&(scroll.scrollTop=scroll.scrollHeight)}),10)}}var div,div_1,div_2,label,input,span,text2,label_1,input_1,span_1,text_1,label_2,input_2,span_2,text_2,div_3;push($$props,!0);append_styles($$anchor,$$css);let unsubscribe2,scroll,messages=state(proxy([])),wrapRight=state(!1),autoScroll=state(!0),suspended=state(!1);onMount((async()=>{const _logMessages=reactive((()=>logMessages.value));_logMessages.onChanged(updateLog);Logger($msg("logPane.logWindowOpened",{},currentLang));unsubscribe2=()=>_logMessages.offChanged(updateLog)}));onDestroy((()=>{unsubscribe2&&unsubscribe2()}));div_1=child(div=root());div_2=child(div_1);label=child(div_2);remove_input_defaults(input=child(label));span=sibling(input,2);text2=child(span,!0);reset(span);reset(label);remove_input_defaults(input_1=child(label_1=sibling(label,2)));span_1=sibling(input_1,2);text_1=child(span_1,!0);reset(span_1);reset(label_1);remove_input_defaults(input_2=child(label_2=sibling(label_1,2)));span_2=sibling(input_2,2);text_2=child(span_2,!0);reset(span_2);reset(label_2);sibling(label_2,4).__click=[on_click,function closeDialogue(){$$props.close()}];reset(div_2);reset(div_1);each(div_3=sibling(div_1,2),21,(()=>get(messages)),index,(($$anchor2,line)=>{var pre=root_1(),text_3=child(pre,!0);reset(pre);template_effect((()=>{(function toggle_class(dom,class_name,value){if(value){if(dom.classList.contains(class_name))return;dom.classList.add(class_name)}else{if(!dom.classList.contains(class_name))return;dom.classList.remove(class_name)}})(pre,"wrap-right",get(wrapRight));set_text(text_3,get(line))}));append($$anchor2,pre)}));reset(div_3);bind_this(div_3,($$value=>scroll=$$value),(()=>scroll));reset(div);template_effect((($0,$1,$2)=>{set_text(text2,$0);set_text(text_1,$1);set_text(text_2,$2)}),[()=>$msg("logPane.wrap",{},currentLang),()=>$msg("logPane.autoScroll",{},currentLang),()=>$msg("logPane.pause",{},currentLang)]);bind_checked(input,(()=>get(wrapRight)),($$value=>set(wrapRight,$$value)));bind_checked(input_1,(()=>get(autoScroll)),($$value=>set(autoScroll,$$value)));bind_checked(input_2,(()=>get(suspended)),($$value=>set(suspended,$$value)));append($$anchor,div);pop()}function anumber(n3){if(!Number.isSafeInteger(n3)||n3<0)throw new Error("positive integer expected, got "+n3)}function abytes(b3,...lengths){if(!function isBytes(a2){return a2 instanceof Uint8Array||ArrayBuffer.isView(a2)&&"Uint8Array"===a2.constructor.name}(b3))throw new Error("Uint8Array expected");if(lengths.length>0&&!lengths.includes(b3.length))throw new Error("Uint8Array expected of length "+lengths+", got length="+b3.length)}function aexists(instance3,checkFinished=!0){if(instance3.destroyed)throw new Error("Hash instance has been destroyed");if(checkFinished&&instance3.finished)throw new Error("Hash#digest() has already been called")}function createView(arr){return new DataView(arr.buffer,arr.byteOffset,arr.byteLength)}function rotr(word,shift){return word<<32-shift|word>>>shift}function toBytes(data){"string"==typeof data&&(data=function utf8ToBytes(str){if("string"!=typeof str)throw new Error("utf8ToBytes expected string, got "+typeof str);return new Uint8Array((new TextEncoder).encode(str))}(data));abytes(data);return data}function wrapConstructor(hashCons){const hashC=msg=>hashCons().update(toBytes(msg)).digest(),tmp=hashCons();hashC.outputLen=tmp.outputLen;hashC.blockLen=tmp.blockLen;hashC.create=()=>hashCons();return hashC}function randomBytes(bytesLength=32){if(crypto2&&"function"==typeof crypto2.getRandomValues)return crypto2.getRandomValues(new Uint8Array(bytesLength));if(crypto2&&"function"==typeof crypto2.randomBytes)return crypto2.randomBytes(bytesLength);throw new Error("crypto.getRandomValues must be defined")}function Maj(a2,b3,c3){return a2&b3^a2&c3^b3&c3}function isBytes3(a2){return a2 instanceof Uint8Array||ArrayBuffer.isView(a2)&&"Uint8Array"===a2.constructor.name}function abytes2(item){if(!isBytes3(item))throw new Error("Uint8Array expected")}function abool(title,value){if("boolean"!=typeof value)throw new Error(title+" boolean expected, got "+value)}function bytesToHex2(bytes){abytes2(bytes);let hex="";for(let i2=0;i2<bytes.length;i2++)hex+=hexes2[bytes[i2]];return hex}function numberToHexUnpadded(num2){const hex=num2.toString(16);return 1&hex.length?"0"+hex:hex}function hexToNumber(hex){if("string"!=typeof hex)throw new Error("hex string expected, got "+typeof hex);return""===hex?_0n:BigInt("0x"+hex)}function asciiToBase162(ch4){return ch4>=asciis2._0&&ch4<=asciis2._9?ch4-asciis2._0:ch4>=asciis2.A&&ch4<=asciis2.F?ch4-(asciis2.A-10):ch4>=asciis2.a&&ch4<=asciis2.f?ch4-(asciis2.a-10):void 0}function hexToBytes2(hex){if("string"!=typeof hex)throw new Error("hex string expected, got "+typeof hex);const hl=hex.length,al2=hl/2;if(hl%2)throw new Error("hex string expected, got unpadded hex of length "+hl);const array=new Uint8Array(al2);for(let ai2=0,hi=0;ai2<al2;ai2++,hi+=2){const n1=asciiToBase162(hex.charCodeAt(hi)),n22=asciiToBase162(hex.charCodeAt(hi+1));if(void 0===n1||void 0===n22){const char=hex[hi]+hex[hi+1];throw new Error('hex string expected, got non-hex character "'+char+'" at index '+hi)}array[ai2]=16*n1+n22}return array}function bytesToNumberBE(bytes){return hexToNumber(bytesToHex2(bytes))}function bytesToNumberLE(bytes){abytes2(bytes);return hexToNumber(bytesToHex2(Uint8Array.from(bytes).reverse()))}function numberToBytesBE(n3,len){return hexToBytes2(n3.toString(16).padStart(2*len,"0"))}function numberToBytesLE(n3,len){return numberToBytesBE(n3,len).reverse()}function numberToVarBytesBE(n3){return hexToBytes2(numberToHexUnpadded(n3))}function ensureBytes(title,hex,expectedLength){let res2;if("string"==typeof hex)try{res2=hexToBytes2(hex)}catch(e3){throw new Error(title+" must be hex string or Uint8Array, cause: "+e3)}else{if(!isBytes3(hex))throw new Error(title+" must be hex string or Uint8Array");res2=Uint8Array.from(hex)}const len=res2.length;if("number"==typeof expectedLength&&len!==expectedLength)throw new Error(title+" of length "+expectedLength+" expected, got "+len);return res2}function concatBytes2(...arrays){let sum2=0;for(let i2=0;i2<arrays.length;i2++){const a2=arrays[i2];abytes2(a2);sum2+=a2.length}const res2=new Uint8Array(sum2);for(let i2=0,pad2=0;i2<arrays.length;i2++){const a2=arrays[i2];res2.set(a2,pad2);pad2+=a2.length}return res2}function equalBytes(a2,b3){if(a2.length!==b3.length)return!1;let diff=0;for(let i2=0;i2<a2.length;i2++)diff|=a2[i2]^b3[i2];return 0===diff}function utf8ToBytes2(str){if("string"!=typeof str)throw new Error("string expected");return new Uint8Array((new TextEncoder).encode(str))}function inRange(n3,min,max3){return isPosBig(n3)&&isPosBig(min)&&isPosBig(max3)&&min<=n3&&n3<max3}function aInRange(title,n3,min,max3){if(!inRange(n3,min,max3))throw new Error("expected valid "+title+": "+min+" <= n < "+max3+", got "+n3)}function bitLen(n3){let len;for(len=0;n3>_0n;n3>>=_1n,len+=1);return len}function bitGet(n3,pos){return n3>>BigInt(pos)&_1n}function bitSet(n3,pos,value){return n3|(value?_1n:_0n)<<BigInt(pos)}function createHmacDrbg(hashLen,qByteLen,hmacFn){if("number"!=typeof hashLen||hashLen<2)throw new Error("hashLen must be a number");if("number"!=typeof qByteLen||qByteLen<2)throw new Error("qByteLen must be a number");if("function"!=typeof hmacFn)throw new Error("hmacFn must be a function");let v2=u8n(hashLen),k2=u8n(hashLen),i2=0;const reset2=()=>{v2.fill(1);k2.fill(0);i2=0},h3=(...b3)=>hmacFn(k2,v2,...b3),reseed=(seed=u8n())=>{k2=h3(u8fr([0]),seed);v2=h3();if(0!==seed.length){k2=h3(u8fr([1]),seed);v2=h3()}},gen=()=>{if(i2++>=1e3)throw new Error("drbg: tried 1000 values");let len=0;const out=[];for(;len<qByteLen;){v2=h3();const sl=v2.slice();out.push(sl);len+=v2.length}return concatBytes2(...out)};return(seed,pred)=>{reset2();reseed(seed);let res2;for(;!(res2=pred(gen()));)reseed();reset2();return res2}}function validateObject(object,validators,optValidators={}){const checkField=(fieldName,type,isOptional)=>{const checkVal=validatorFns[type];if("function"!=typeof checkVal)throw new Error("invalid validator function");const val2=object[fieldName];if(!(isOptional&&void 0===val2||checkVal(val2,object)))throw new Error("param "+String(fieldName)+" is invalid. Expected "+type+", got "+val2)};for(const[fieldName,type]of Object.entries(validators))checkField(fieldName,type,!1);for(const[fieldName,type]of Object.entries(optValidators))checkField(fieldName,type,!0);return object}function memoized(fn){const map3=new WeakMap;return(arg,...args)=>{const val2=map3.get(arg);if(void 0!==val2)return val2;const computed2=fn(arg,...args);map3.set(arg,computed2);return computed2}}function mod(a2,b3){const result=a2%b3;return result>=_0n2?result:b3+result}function pow(num2,power,modulo){if(power<_0n2)throw new Error("invalid exponent, negatives unsupported");if(modulo<=_0n2)throw new Error("invalid modulus");if(modulo===_1n2)return _0n2;let res2=_1n2;for(;power>_0n2;){power&_1n2&&(res2=res2*num2%modulo);num2=num2*num2%modulo;power>>=_1n2}return res2}function pow2(x2,power,modulo){let res2=x2;for(;power-- >_0n2;){res2*=res2;res2%=modulo}return res2}function invert(number,modulo){if(number===_0n2)throw new Error("invert: expected non-zero number");if(modulo<=_0n2)throw new Error("invert: expected positive modulus, got "+modulo);let a2=mod(number,modulo),b3=modulo,x2=_0n2,y2=_1n2,u2=_1n2,v2=_0n2;for(;a2!==_0n2;){const q2=b3/a2,r4=b3%a2,m3=x2-u2*q2,n3=y2-v2*q2;b3=a2,a2=r4,x2=u2,y2=v2,u2=m3,v2=n3}if(b3!==_1n2)throw new Error("invert: does not exist");return mod(x2,modulo)}function nLength(n3,nBitLength){const _nBitLength=void 0!==nBitLength?nBitLength:n3.toString(2).length;return{nBitLength:_nBitLength,nByteLength:Math.ceil(_nBitLength/8)}}function Field(ORDER,bitLen2,isLE2=!1,redef={}){if(ORDER<=_0n2)throw new Error("invalid field: expected ORDER > 0, got "+ORDER);const{nBitLength:BITS,nByteLength:BYTES}=nLength(ORDER,bitLen2);if(BYTES>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let sqrtP;const f4=Object.freeze({ORDER,isLE:isLE2,BITS,BYTES,MASK:bitMask(BITS),ZERO:_0n2,ONE:_1n2,create:num2=>mod(num2,ORDER),isValid:num2=>{if("bigint"!=typeof num2)throw new Error("invalid field element: expected bigint, got "+typeof num2);return _0n2<=num2&&num2<ORDER},is0:num2=>num2===_0n2,isOdd:num2=>(num2&_1n2)===_1n2,neg:num2=>mod(-num2,ORDER),eql:(lhs,rhs)=>lhs===rhs,sqr:num2=>mod(num2*num2,ORDER),add:(lhs,rhs)=>mod(lhs+rhs,ORDER),sub:(lhs,rhs)=>mod(lhs-rhs,ORDER),mul:(lhs,rhs)=>mod(lhs*rhs,ORDER),pow:(num2,power)=>function FpPow(f4,num2,power){if(power<_0n2)throw new Error("invalid exponent, negatives unsupported");if(power===_0n2)return f4.ONE;if(power===_1n2)return num2;let p4=f4.ONE,d4=num2;for(;power>_0n2;){power&_1n2&&(p4=f4.mul(p4,d4));d4=f4.sqr(d4);power>>=_1n2}return p4}(f4,num2,power),div:(lhs,rhs)=>mod(lhs*invert(rhs,ORDER),ORDER),sqrN:num2=>num2*num2,addN:(lhs,rhs)=>lhs+rhs,subN:(lhs,rhs)=>lhs-rhs,mulN:(lhs,rhs)=>lhs*rhs,inv:num2=>invert(num2,ORDER),sqrt:redef.sqrt||(n3=>{sqrtP||(sqrtP=function FpSqrt(P2){if(P2%_4n===_3n){const p1div4=(P2+_1n2)/_4n;return function sqrt3mod4(Fp,n3){const root9=Fp.pow(n3,p1div4);if(!Fp.eql(Fp.sqr(root9),n3))throw new Error("Cannot find square root");return root9}}if(P2%_8n===_5n){const c12=(P2-_5n)/_8n;return function sqrt5mod8(Fp,n3){const n22=Fp.mul(n3,_2n2),v2=Fp.pow(n22,c12),nv=Fp.mul(n3,v2),i2=Fp.mul(Fp.mul(nv,_2n2),v2),root9=Fp.mul(nv,Fp.sub(i2,Fp.ONE));if(!Fp.eql(Fp.sqr(root9),n3))throw new Error("Cannot find square root");return root9}}return function tonelliShanks(P2){const legendreC=(P2-_1n2)/_2n2;let Q2,S2,Z2;for(Q2=P2-_1n2,S2=0;Q2%_2n2===_0n2;Q2/=_2n2,S2++);for(Z2=_2n2;Z2<P2&&pow(Z2,legendreC,P2)!==P2-_1n2;Z2++)if(Z2>1e3)throw new Error("Cannot find square root: likely non-prime P");if(1===S2){const p1div4=(P2+_1n2)/_4n;return function tonelliFast(Fp,n3){const root9=Fp.pow(n3,p1div4);if(!Fp.eql(Fp.sqr(root9),n3))throw new Error("Cannot find square root");return root9}}const Q1div2=(Q2+_1n2)/_2n2;return function tonelliSlow(Fp,n3){if(Fp.pow(n3,legendreC)===Fp.neg(Fp.ONE))throw new Error("Cannot find square root");let r4=S2,g2=Fp.pow(Fp.mul(Fp.ONE,Z2),Q2),x2=Fp.pow(n3,Q1div2),b3=Fp.pow(n3,Q2);for(;!Fp.eql(b3,Fp.ONE);){if(Fp.eql(b3,Fp.ZERO))return Fp.ZERO;let m3=1;for(let t22=Fp.sqr(b3);m3<r4&&!Fp.eql(t22,Fp.ONE);m3++)t22=Fp.sqr(t22);const ge=Fp.pow(g2,_1n2<<BigInt(r4-m3-1));g2=Fp.sqr(ge);x2=Fp.mul(x2,ge);b3=Fp.mul(b3,g2);r4=m3}return x2}}(P2)}(ORDER));return sqrtP(f4,n3)}),invertBatch:lst=>function FpInvertBatch(f4,nums){const tmp=new Array(nums.length),lastMultiplied=nums.reduce(((acc,num2,i2)=>{if(f4.is0(num2))return acc;tmp[i2]=acc;return f4.mul(acc,num2)}),f4.ONE),inverted=f4.inv(lastMultiplied);nums.reduceRight(((acc,num2,i2)=>{if(f4.is0(num2))return acc;tmp[i2]=f4.mul(acc,tmp[i2]);return f4.mul(acc,num2)}),inverted);return tmp}(f4,lst),cmov:(a2,b3,c3)=>c3?b3:a2,toBytes:num2=>isLE2?numberToBytesLE(num2,BYTES):numberToBytesBE(num2,BYTES),fromBytes:bytes=>{if(bytes.length!==BYTES)throw new Error("Field.fromBytes: expected "+BYTES+" bytes, got "+bytes.length);return isLE2?bytesToNumberLE(bytes):bytesToNumberBE(bytes)}});return Object.freeze(f4)}function getFieldBytesLength(fieldOrder){if("bigint"!=typeof fieldOrder)throw new Error("field order must be bigint");const bitLength=fieldOrder.toString(2).length;return Math.ceil(bitLength/8)}function getMinHashLength(fieldOrder){const length=getFieldBytesLength(fieldOrder);return length+Math.ceil(length/2)}function constTimeNegate(condition,item){const neg=item.negate();return condition?neg:item}function validateW(W2,bits2){if(!Number.isSafeInteger(W2)||W2<=0||W2>bits2)throw new Error("invalid window size, expected [1.."+bits2+"], got W="+W2)}function calcWOpts(W2,bits2){validateW(W2,bits2);return{windows:Math.ceil(bits2/W2)+1,windowSize:2**(W2-1)}}function getW(P2){return pointWindowSizes.get(P2)||1}function validateBasic(curve){(function validateField(field){return validateObject(field,FIELD_FIELDS.reduce(((map3,val2)=>{map3[val2]="function";return map3}),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"}))})(curve.Fp);validateObject(curve,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"});return Object.freeze({...nLength(curve.n,curve.nBitLength),...curve,p:curve.Fp.ORDER})}function validateSigVerOpts(opts){void 0!==opts.lowS&&abool("lowS",opts.lowS);void 0!==opts.prehash&&abool("prehash",opts.prehash)}function getHash(hash3){return{hash:hash3,hmac:(key2,...msgs)=>hmac(hash3,key2,function concatBytes(...arrays){let sum2=0;for(let i2=0;i2<arrays.length;i2++){const a2=arrays[i2];abytes(a2);sum2+=a2.length}const res2=new Uint8Array(sum2);for(let i2=0,pad2=0;i2<arrays.length;i2++){const a2=arrays[i2];res2.set(a2,pad2);pad2+=a2.length}return res2}(...msgs)),randomBytes}}function sqrtMod(y2){const P2=secp256k1P,_3n3=BigInt(3),_6n=BigInt(6),_11n=BigInt(11),_22n=BigInt(22),_23n=BigInt(23),_44n=BigInt(44),_88n=BigInt(88),b22=y2*y2*y2%P2,b3=b22*b22*y2%P2,b6=pow2(b3,_3n3,P2)*b3%P2,b9=pow2(b6,_3n3,P2)*b3%P2,b11=pow2(b9,_2n4,P2)*b22%P2,b222=pow2(b11,_11n,P2)*b11%P2,b44=pow2(b222,_22n,P2)*b222%P2,b88=pow2(b44,_44n,P2)*b44%P2,b176=pow2(b88,_88n,P2)*b88%P2,b220=pow2(b176,_44n,P2)*b44%P2,b223=pow2(b220,_3n3,P2)*b3%P2,t1=pow2(b223,_23n,P2)*b222%P2,t22=pow2(t1,_6n,P2)*b22%P2,root9=pow2(t22,_2n4,P2);if(!Fpk1.eql(Fpk1.sqr(root9),y2))throw new Error("Cannot find square root");return root9}function taggedHash(tag2,...messages){let tagP=TAGGED_HASH_PREFIXES[tag2];if(void 0===tagP){const tagH=sha256(Uint8Array.from(tag2,(c3=>c3.charCodeAt(0))));tagP=concatBytes2(tagH,tagH);TAGGED_HASH_PREFIXES[tag2]=tagP}return sha256(concatBytes2(tagP,...messages))}function schnorrGetExtPubKey(priv){let d_=secp256k1.utils.normPrivateKeyToScalar(priv),p4=Point.fromPrivateKey(d_);return{scalar:p4.hasEvenY()?d_:modN(-d_),bytes:pointToBytes(p4)}}function lift_x(x2){aInRange("x",x2,_1n5,secp256k1P);const xx=modP(x2*x2);let y2=sqrtMod(modP(xx*x2+BigInt(7)));y2%_2n4!==_0n5&&(y2=modP(-y2));const p4=new Point(x2,y2,_1n5);p4.assertValidity();return p4}function challenge(...args){return modN(num(taggedHash("BIP0340/challenge",...args)))}function schnorrGetPublicKey(privateKey2){return schnorrGetExtPubKey(privateKey2).bytes}function schnorrSign(message,privateKey2,auxRand=randomBytes(32)){const m3=ensureBytes("message",message),{bytes:px,scalar:d4}=schnorrGetExtPubKey(privateKey2),a2=ensureBytes("auxRand",auxRand,32),t3=numTo32b(d4^num(taggedHash("BIP0340/aux",a2))),rand=taggedHash("BIP0340/nonce",t3,px,m3),k_=modN(num(rand));if(k_===_0n5)throw new Error("sign failed: k is zero");const{bytes:rx,scalar:k2}=schnorrGetExtPubKey(k_),e3=challenge(rx,px,m3),sig=new Uint8Array(64);sig.set(rx,0);sig.set(numTo32b(modN(k2+e3*d4)),32);if(!schnorrVerify(sig,m3,px))throw new Error("sign: Invalid signature produced");return sig}function schnorrVerify(signature,message,publicKey2){const sig=ensureBytes("signature",signature,64),m3=ensureBytes("message",message),pub=ensureBytes("publicKey",publicKey2,32);try{const P2=lift_x(num(pub)),r4=num(sig.subarray(0,32));if(!inRange(r4,_1n5,secp256k1P))return!1;const s2=num(sig.subarray(32,64));if(!inRange(s2,_1n5,secp256k1N))return!1;const e3=challenge(numTo32b(r4),pointToBytes(P2),m3),R2=GmulAdd(P2,s2,modN(-e3));return!(!R2||!R2.hasEvenY()||R2.toAffine().x!==r4)}catch(error){return!1}}function filterTrickle(sdp){return sdp.replace(/a=ice-options:trickle\s\n/g,"")}function getConfirmInstance(){return instance?Promise.resolve(instance):p.promise}function getReplicatorInstance(){return replicatorInstanceGetter()}function setReplicatorFunc(func){replicatorInstanceGetter=func}async function upsert(db,id,func){try{const updated=func(await db.get(id)),result=await db.put(updated,{});if(result&&result.ok)return updated;throw new Error("Failed to update")}catch(ex){if("not_found"===ex.name){const result=await db.put(func({_id:id}),{});if(result&&result.ok)return func({_id:id});throw new Error("Failed to insert")}throw ex}}async function getHashedStringWithCurrentTime(source2){const salt=(~~((new Date).getTime()/1e3/180)).toString(36),salt2=await sha1(salt);return await sha1(salt2+source2)}function apply2(__1,docA,docB,mode,callback,docToString,objBA,objAB){if(get(docA)&&get(docB)){if(get(docA)._id==get(docB)._id){if("A"==get(mode))return callback()(get(docA)._rev,void 0);if("B"==get(mode))return callback()(get(docB)._rev,void 0)}else{if("A"==get(mode))return callback()(void 0,docToString(get(docA)));if("B"==get(mode))return callback()(void 0,docToString(get(docB)))}if("BA"==get(mode))return callback()(void 0,JSON.stringify(get(objBA),null,2));if("AB"==get(mode))return callback()(void 0,JSON.stringify(get(objAB),null,2));callback()(void 0,void 0)}}function cancel(__2,callback){callback()(void 0,void 0)}function JsonResolvePane($$anchor,$$props){function parseJson(json){if(!1===json)return!1;try{return JSON.parse(json)}catch(ex){return!1}}function docToString(doc){return"plain"==doc.datatype?getDocData(doc.data):readString(new Uint8Array(decodeBinary(doc.data)))}function revStringToRevNumber(rev3){return rev3?rev3.split("-")[0]:""}var fragment,h22,text2,node,consequent,alternate_1;push($$props,!0);append_styles($$anchor,$$css2);const binding_group=[];let docs=prop($$props,"docs",27,(()=>proxy([]))),callback=prop($$props,"callback",11,(async(_,__)=>{Promise.resolve()})),filename=prop($$props,"filename",11,""),nameA=prop($$props,"nameA",11,"A"),nameB=prop($$props,"nameB",11,"B"),defaultSelect=prop($$props,"defaultSelect",11,""),keepOrder=prop($$props,"keepOrder",11,!1),hideLocal=prop($$props,"hideLocal",11,!1);const docsArray=derived((()=>docs()&&docs().length>=1?keepOrder()||docs()[0].mtime<docs()[1].mtime?{a:docs()[0],b:docs()[1]}:{a:docs()[1],b:docs()[0]}:{a:!1,b:!1})),docA=derived((()=>get(docsArray).a)),docB=derived((()=>get(docsArray).b)),docAContent=derived((()=>get(docA)&&docToString(get(docA)))),docBContent=derived((()=>get(docB)&&docToString(get(docB)))),objA=derived((()=>parseJson(get(docAContent))||{})),objB=derived((()=>parseJson(get(docBContent))||{})),objAB=derived((()=>mergeObject(get(objA),get(objB)))),objBAw=derived((()=>mergeObject(get(objB),get(objA)))),objBA=derived((()=>!!isObjectDifferent(get(objBAw),get(objAB))&&get(objBAw)));let diffs=derived((()=>get(objA)&&get(selectedObj)?function getJsonDiff(a2,b3){return function getDiff(left,right){const dmp=new import_diff_match_patch.diff_match_patch,mapLeft=dmp.diff_linesToChars_(left,right),diffLeftSrc=dmp.diff_main(mapLeft.chars1,mapLeft.chars2,!1);dmp.diff_charsToLines_(diffLeftSrc,mapLeft.lineArray);return diffLeftSrc}(JSON.stringify(a2,null,2),JSON.stringify(b3,null,2))}(get(objA),get(selectedObj)):[])),mode=state(proxy(defaultSelect()));const mergedObjs=derived((()=>({"":!1,A:get(objA),B:get(objB),AB:get(objAB),BA:get(objBA)})));let selectedObj=derived((()=>get(mode)in get(mergedObjs)?get(mergedObjs)[get(mode)]:{}));proxy([]);const modes=derived((()=>{let newModes=[];if(!hideLocal()){newModes.push(["","Not now"]);newModes.push(["A",nameA()||"A"])}newModes.push(["B",nameB()||"B"]);newModes.push(["AB",`${nameA()||"A"} + ${nameB()||"B"}`]);newModes.push(["BA",`${nameB()||"B"} + ${nameA()||"A"}`]);return newModes}));h22=first_child(fragment=root2());text2=child(h22,!0);reset(h22);node=sibling(h22,2);consequent=$$anchor2=>{var fragment_1=root_12(),div=sibling(first_child(fragment_1),2);child(div).__click=[apply2,docA,docB,mode,callback,docToString,objBA,objAB];reset(div);append($$anchor2,fragment_1)};alternate_1=$$anchor2=>{var node_2,consequent_2,alternate,div_4,table2,tbody,tr,th,text_4,td3,node_3,consequent_3,text_6,td_1,text_7,tr_1,th_1,text_8,td_2,node_4,consequent_4,text_10,td_3,text_11,div_5,node_5,consequent_5,fragment_2=root_2(),div_1=first_child(fragment_2);each(div_1,21,(()=>get(modes)),index,(($$anchor3,m3)=>{var fragment_3=comment(),node_1=first_child(fragment_3),consequent_1=$$anchor4=>{var input_value,div_2,text_1,label=root_4(),input=child(label);remove_input_defaults(input);div_2=sibling(input,2);text_1=child(div_2,!0);reset(div_2);reset(label);template_effect((()=>{var _a7;set_class(label,`${null!=(_a7="sls-setting-label "+(get(m3)[0]==get(mode)?"selected":""))?_a7:""} svelte-dk5958`);input_value!==(input_value=get(m3)[0])&&(input.value=null==(input.__value=get(m3)[0])?"":get(m3)[0]);set_text(text_1,get(m3)[1])}));(function bind_group(inputs,group_index,input,get4,set2=get4){var _a7,index6,is_checkbox="checkbox"===input.getAttribute("type"),binding_group=inputs;let hydration_mismatch2=!1;if(null!==group_index)for(index6 of group_index)binding_group=null!=(_a7=binding_group[index6])?_a7:binding_group[index6]=[];binding_group.push(input);listen_to_event_and_reset_event(input,"change",(()=>{var value=input.__value;is_checkbox&&(value=get_binding_group_value(binding_group,value,input.checked));set2(value)}),(()=>set2(is_checkbox?[]:null)));render_effect((()=>{var value=get4();if(hydrating&&input.defaultChecked!==input.checked)hydration_mismatch2=!0;else if(is_checkbox){value=value||[];input.checked=value.includes(input.__value)}else input.checked=is(input.__value,value)}));teardown((()=>{var index7=binding_group.indexOf(input);-1!==index7&&binding_group.splice(index7,1)}));if(!pending.has(binding_group)){pending.add(binding_group);queue_micro_task((()=>{binding_group.sort(((a2,b3)=>4===a2.compareDocumentPosition(b3)?-1:1));pending.delete(binding_group)}))}queue_micro_task((()=>{var value,hydration_input;if(hydration_mismatch2){value=is_checkbox?get_binding_group_value(binding_group,value,input.checked):null==(hydration_input=binding_group.find((input2=>input2.checked)))?void 0:hydration_input.__value;set2(value)}}))})(binding_group,[],input,(()=>{get(m3)[0];return get(mode)}),($$value=>set(mode,$$value)));append($$anchor4,label)};if_block(node_1,($$render=>{""!=get(m3)[0]&&0==get(mergedObjs)[get(m3)[0]]||$$render(consequent_1)}));append($$anchor3,fragment_3)}));reset(div_1);node_2=sibling(div_1,2);consequent_2=$$anchor3=>{var div_3=root_5();each(div_3,21,(()=>get(diffs)),index,(($$anchor4,diff)=>{var span=root_6(),text_2=child(span,!0);reset(span);template_effect((()=>{set_class(span,clsx2(get(diff)[0]==import_diff_match_patch.DIFF_DELETE?"deleted":get(diff)[0]==import_diff_match_patch.DIFF_INSERT?"added":"normal"),"svelte-dk5958");set_text(text_2,get(diff)[1])}));append($$anchor4,span)}));reset(div_3);append($$anchor3,div_3)};alternate=$$anchor3=>{append($$anchor3,text("NO PREVIEW"))};if_block(node_2,($$render=>{0!=get(selectedObj)?$$render(consequent_2):$$render(alternate,!1)}));table2=child(div_4=sibling(node_2,2));tbody=child(table2);tr=child(tbody);th=child(tr);text_4=child(th,!0);reset(th);node_3=child(td3=sibling(th));consequent_3=$$anchor3=>{var text_5=text();template_effect(($0=>set_text(text_5,`Rev:${null!=$0?$0:""}`)),[()=>revStringToRevNumber(get(docA)._rev)]);append($$anchor3,text_5)};if_block(node_3,($$render=>{get(docA)._id==get(docB)._id&&$$render(consequent_3)}));text_6=sibling(node_3);reset(td3);td_1=sibling(td3);text_7=child(td_1);reset(td_1);reset(tr);th_1=child(tr_1=sibling(tr));text_8=child(th_1,!0);reset(th_1);node_4=child(td_2=sibling(th_1));consequent_4=$$anchor3=>{var text_9=text();template_effect(($0=>set_text(text_9,`Rev:${null!=$0?$0:""}`)),[()=>revStringToRevNumber(get(docB)._rev)]);append($$anchor3,text_9)};if_block(node_4,($$render=>{get(docA)._id==get(docB)._id&&$$render(consequent_4)}));text_10=sibling(node_4);reset(td_2);td_3=sibling(td_2);text_11=child(td_3);reset(td_3);reset(tr_1);reset(tbody);reset(table2);reset(div_4);node_5=child(div_5=sibling(div_4,2));consequent_5=$$anchor3=>{var button_1=root_10();button_1.__click=[cancel,callback];append($$anchor3,button_1)};if_block(node_5,($$render=>{hideLocal()&&$$render(consequent_5)}));sibling(node_5,2).__click=[apply2,docA,docB,mode,callback,docToString,objBA,objAB];reset(div_5);template_effect((($0,$1)=>{var _a7,_b3;set_text(text_4,nameA());set_text(text_6,` ${null!=$0?$0:""}`);set_text(text_7,`${null!=(_a7=get(docAContent)&&get(docAContent).length)?_a7:""} letters`);set_text(text_8,nameB());set_text(text_10,` ${null!=$1?$1:""}`);set_text(text_11,`${null!=(_b3=get(docBContent)&&get(docBContent).length)?_b3:""} letters`)}),[()=>new Date(get(docA).mtime).toLocaleString(),()=>new Date(get(docB).mtime).toLocaleString()]);append($$anchor2,fragment_2)};if_block(node,($$render=>{get(docA)&&get(docB)?$$render(alternate_1,!1):$$render(consequent)}));template_effect((()=>set_text(text2,filename())));append($$anchor,fragment);pop()}function getComparingMTime(doc,includeDeleted=!1){var _a7,_b3,_c2;if(null===doc)return 0;if(!1===doc)return 0;if(void 0===doc)return 0;if(!includeDeleted){if("deleted"in doc&&doc.deleted)return 0;if("_deleted"in doc&&doc._deleted)return 0}return"stat"in doc?null!=(_b3=null==(_a7=doc.stat)?void 0:_a7.mtime)?_b3:0:null!=(_c2=doc.mtime)?_c2:0}function PluginCombo($$anchor,$$props){async function comparePlugin(local,remote){var _a7,_b3;let freshness2="",version3="",contentCheck=!1,canApply2=!1;if(local||remote)if(local&&!remote)freshness2="Local only";else if(remote&&!local){freshness2="Remote only";canApply2=!0}else{const dtDiff=(null!==(_a7=null==local?void 0:local.mtime)&&void 0!==_a7?_a7:0)-(null!==(_b3=null==remote?void 0:remote.mtime)&&void 0!==_b3?_b3:0),diff=function timeDeltaToHumanReadable(delta){const sec=delta/1e3;if(sec<60)return`${sec.toFixed(2)}s`;const min=sec/60;if(min<60)return`${min.toFixed(2)}m`;const hour=min/60;if(hour<24)return`${hour.toFixed(2)}h`;const day=hour/24;return day<365?`${day.toFixed(2)}d`:`${(day/365).toFixed(2)}y`}(Math.abs(dtDiff));if(dtDiff/1e3<-10){freshness2=`Newer (${diff})`;canApply2=!0;contentCheck=!0}else if(dtDiff/1e3>10){freshness2=`Older (${diff})`;canApply2=!0;contentCheck=!0}else{freshness2="Same";canApply2=!1;contentCheck=!0}}else freshness2="";const localVersionStr=(null==local?void 0:local.version)||"0.0.0",remoteVersionStr=(null==remote?void 0:remote.version)||"0.0.0";if((null==local?void 0:local.version)||(null==remote?void 0:remote.version)){const compare3=`${localVersionStr}`.localeCompare(remoteVersionStr,void 0,{numeric:!0});0==compare3?version3="Same":compare3<0?version3=`Lower (${localVersionStr} < ${remoteVersionStr})`:compare3>0&&(version3=`Higher (${localVersionStr} > ${remoteVersionStr})`)}if(contentCheck&&local&&remote){const{canApply:canApply3,equivalency:equivalency3,canCompare:canCompare3}=await async function checkEquivalency(local,remote){let equivalency2="",canApply2=!1,canCompare2=!1;const matchingStatus=[...new Set([...local.files.map((e3=>e3.filename)),...remote.files.map((e3=>e3.filename))])].map((filename=>{const localFile=local.files.find((e3=>e3.filename==filename)),remoteFile=remote.files.find((e3=>e3.filename==filename));return localFile||remoteFile?localFile&&!remoteFile?2:!localFile&&remoteFile?8:localFile&&remoteFile&&getDocData(localFile.data)==getDocData(remoteFile.data)?4:16:0})).reduce(((p4,c3)=>p4|c3),0);if(4==matchingStatus){equivalency2="Same";canApply2=!1}else if(matchingStatus<=4){equivalency2="Same or local only";canApply2=!1}else if(16==matchingStatus){canApply2=!0;canCompare2=!0;equivalency2="Different"}else{canApply2=!0;canCompare2=!0;equivalency2="Mixed"}return{equivalency:equivalency2,canApply:canApply2,canCompare:canCompare2}}(local,remote);return{canApply:canApply3,freshness:freshness2,equivalency:equivalency3,version:version3,canCompare:canCompare3}}return{canApply:canApply2,freshness:freshness2,equivalency:"",version:version3,canCompare:!1}}async function applySelected(){const local=list().find((e3=>e3.term==thisTerm())),selectedItem=list().find((e3=>e3.term==selected()));selectedItem&&await applyData()(selectedItem)&&addOn.updatePluginList(!0,null==local?void 0:local.documentPath)}async function compareSelected(){const local=list().find((e3=>e3.term==thisTerm())),selectedItem=list().find((e3=>e3.term==selected()));await compareItems(local,selectedItem)}async function compareItems(local,remote,filename){if(local&&remote){if(!filename){await compareData()(local,remote)&&addOn.updatePluginList(!0,local.documentPath);return}{const localCopy=local instanceof PluginDataExDisplayV2?new PluginDataExDisplayV2(local):{...local},remoteCopy=remote instanceof PluginDataExDisplayV2?new PluginDataExDisplayV2(remote):{...remote};localCopy.files=localCopy.files.filter((e3=>e3.filename==filename));remoteCopy.files=remoteCopy.files.filter((e3=>e3.filename==filename));await compareData()(localCopy,remoteCopy,!0)&&addOn.updatePluginList(!0,local.documentPath)}}else remote||local?remote?local||Logger("Could not locally item",LOG_LEVEL_INFO):Logger("Could not find remote item",LOG_LEVEL_INFO):Logger("Could not find both remote and local item",LOG_LEVEL_INFO)}async function pickCompareItem(evt){const local=list().find((e3=>e3.term==thisTerm())),selectedItem=list().find((e3=>e3.term==selected()));if(!local)return;if(!selectedItem)return;const menu=new import_obsidian5.Menu;menu.addItem((item=>item.setTitle("Compare file").setIsLabel(!0)));menu.addSeparator();const files=unique(local.files.map((e3=>e3.filename)).concat(selectedItem.files.map((e3=>e3.filename)))),convDate=dt=>dt?new Date(dt.mtime).toLocaleString():"(Missing)";for(const filename of files)menu.addItem((item=>{const localFile=local.files.find((e3=>e3.filename==filename)),remoteFile=selectedItem.files.find((e3=>e3.filename==filename)),title=`${filename} (${convDate(localFile)} <--\x3e ${convDate(remoteFile)})`;item.setTitle(title).onClick((e3=>compareItems(local,selectedItem,filename)))}));menu.showAtMouseEvent(evt)}async function deleteSelected(){const selectedItem=list().find((e3=>e3.term==selected()));selectedItem&&await deleteData()(selectedItem)&&addOn.reloadPluginList(!0)}async function duplicateItem(){const local=list().find((e3=>e3.term==thisTerm()));if(!local){Logger("Could not find local item",LOG_LEVEL_VERBOSE);return}const duplicateTermName=await plugin3().confirm.askString("Duplicate","device name","");if(duplicateTermName){if(duplicateTermName.contains("/")){Logger('We can not use "/" to the device name',LOG_LEVEL_NOTICE);return}const key2=`${plugin3().app.vault.configDir}/${local.files[0].filename}`;await addOn.storeCustomizationFiles(key2,duplicateTermName);await addOn.updatePluginList(!1,addOn.filenameToUnifiedKey(key2,duplicateTermName))}}var fragment,node,consequent_6,alternate_4;push($$props,!1);append_styles($$anchor,$$css3);let list=prop($$props,"list",24,(()=>[])),thisTerm=prop($$props,"thisTerm",8,""),hideNotApplicable=prop($$props,"hideNotApplicable",8,!1),selectNewest=prop($$props,"selectNewest",8,0),selectNewestStyle=prop($$props,"selectNewestStyle",8,0),applyAllPluse=prop($$props,"applyAllPluse",8,0),applyData=prop($$props,"applyData",8),compareData=prop($$props,"compareData",8),deleteData=prop($$props,"deleteData",8),hidden=prop($$props,"hidden",8),plugin3=prop($$props,"plugin",8),isMaintenanceMode=prop($$props,"isMaintenanceMode",8,!1),isFlagged=prop($$props,"isFlagged",8,!1);const addOn=plugin3().getAddOn(ConfigSync.name);if(!addOn){Logger(`Could not load the add-on ${ConfigSync.name}`,LOG_LEVEL_INFO);throw new Error(`Could not load the add-on ${ConfigSync.name}`)}let selected=prop($$props,"selected",12,""),freshness=mutable_state(""),equivalency=mutable_state(""),version2=mutable_state(""),canApply=mutable_state(!1),canCompare=mutable_state(!1),pickToCompare=mutable_state(!1),currentSelectNewest=mutable_state(0),currentApplyAll=mutable_state(0),terms=mutable_state([]);legacy_pre_effect((()=>(deep_read_state(selectNewest()),get(currentSelectNewest),deep_read_state(selectNewestStyle()),deep_read_state(isFlagged()),deep_read_state(list()),deep_read_state(isMaintenanceMode()))),(()=>{let doSelectNewest=!1;selectNewest()!=get(currentSelectNewest)&&(1==selectNewestStyle()?doSelectNewest=!0:2==selectNewestStyle()?doSelectNewest=isFlagged():3==selectNewestStyle()&&selected(""));(async function updateTerms(list2,selectNewest2,isMaintenanceMode2){const local=list2.find((e3=>e3.term==thisTerm()));if(isMaintenanceMode2)set(terms,[...new Set(list2.map((e3=>e3.term)))]);else if(hideNotApplicable()){const termsTmp=[],wk2=[...new Set(list2.map((e3=>e3.term)))];for(const termName of wk2){const remote=list2.find((e3=>e3.term==termName));(await comparePlugin(local,remote)).canApply&&termsTmp.push(termName)}set(terms,[...termsTmp])}else set(terms,[...new Set(list2.map((e3=>e3.term)))].filter((e3=>e3!=thisTerm())));let newest=local;if(selectNewest2){for(const term of get(terms)){const remote=list2.find((e3=>e3.term==term));remote&&remote.mtime&&((null==newest?void 0:newest.mtime)||0)<remote.mtime&&(newest=remote)}newest&&newest.term!=thisTerm()&&selected(newest.term)}get(terms).indexOf(selected())<0&&selected("")})(list(),doSelectNewest,isMaintenanceMode());set(currentSelectNewest,selectNewest())}));legacy_pre_effect((()=>(deep_read_state(applyAllPluse()),get(currentApplyAll),deep_read_state(selected()),deep_read_state(hidden()))),(()=>{const doApply=applyAllPluse()!=get(currentApplyAll);set(currentApplyAll,applyAllPluse());doApply&&selected()&&(hidden()||applySelected())}));legacy_pre_effect((()=>(deep_read_state(selected()),deep_read_state(thisTerm()),deep_read_state(list()))),(()=>{set(freshness,"");set(equivalency,"");set(version2,"");set(canApply,!1);if(""==selected());else if(selected()==thisTerm()){set(freshness,"This device");set(canApply,!1)}else(async function performCompare(local,remote){const result=await comparePlugin(local,remote);set(canApply,result.canApply);set(freshness,result.freshness);set(equivalency,result.equivalency);set(version2,result.version);set(canCompare,result.canCompare);set(pickToCompare,!1);get(canCompare)&&((null==local?void 0:local.files.length)==(null==remote?void 0:remote.files.length)&&1==(null==local?void 0:local.files.length)&&(null==local?void 0:local.files[0].filename)==(null==remote?void 0:remote.files[0].filename)?set(pickToCompare,!1):set(pickToCompare,!0))})(list().find((e3=>e3.term==thisTerm())),list().find((e3=>e3.term==selected())))}));legacy_pre_effect_reset();init();node=first_child(fragment=comment());consequent_6=$$anchor2=>{var fragment_1=root_13(),node_1=sibling(first_child(fragment_1),2),consequent_5=$$anchor3=>{var span_2,text_1,span_3,text_2,select,option,node_3,consequent_2,alternate_2,node_6,consequent_4,fragment_2=root_22(),span=first_child(fragment_2),span_1=child(span),text2=child(span_1,!0);reset(span_1);span_2=sibling(span_1,2);text_1=child(span_2,!0);reset(span_2);span_3=sibling(span_2,2);text_2=child(span_3,!0);reset(span_3);reset(span);select=sibling(span,2);template_effect((()=>{selected();invalidate_inner_signals((()=>{get(terms)}))}));(option=child(select)).value=(option.__value="","");each(sibling(option),1,(()=>get(terms)),index,(($$anchor4,term)=>{var option_1=root_3(),option_1_value={},text_3=child(option_1,!0);reset(option_1);template_effect((()=>{option_1_value!==(option_1_value=get(term))&&(option_1.value=null==(option_1.__value=get(term))?"":get(term));set_text(text_3,get(term))}));append($$anchor4,option_1)}));reset(select);node_3=sibling(select,2);consequent_2=$$anchor4=>{var fragment_3=root_42(),node_4=first_child(fragment_3),consequent_1=$$anchor5=>{var fragment_4=comment(),node_5=first_child(fragment_4),consequent=$$anchor6=>{var button=root_62();event("click",button,pickCompareItem);append($$anchor6,button)},alternate=$$anchor6=>{var button_1=root_7();event("click",button_1,compareSelected);append($$anchor6,button_1)};if_block(node_5,($$render=>{get(pickToCompare)?$$render(consequent):$$render(alternate,!1)}));append($$anchor5,fragment_4)},alternate_1=$$anchor5=>{append($$anchor5,root_8())};if_block(node_4,($$render=>{get(canCompare)?$$render(consequent_1):$$render(alternate_1,!1)}));event("click",sibling(node_4,2),applySelected);append($$anchor4,fragment_3)};alternate_2=$$anchor4=>{var fragment_5=root_9();next(2);append($$anchor4,fragment_5)};if_block(node_3,($$render=>{get(canApply)||isMaintenanceMode()&&""!=selected()?$$render(consequent_2):$$render(alternate_2,!1)}));node_6=sibling(node_3,2);consequent_4=$$anchor4=>{var fragment_6=comment(),node_7=first_child(fragment_6),consequent_3=$$anchor5=>{var button_4=root_11();event("click",button_4,deleteSelected);append($$anchor5,button_4)},alternate_3=$$anchor5=>{var button_5=root_122();event("click",button_5,duplicateItem);append($$anchor5,button_5)};if_block(node_7,($$render=>{""!=selected()?$$render(consequent_3):$$render(alternate_3,!1)}));append($$anchor4,fragment_6)};if_block(node_6,($$render=>{isMaintenanceMode()&&$$render(consequent_4)}));template_effect((()=>{set_text(text2,get(freshness));set_text(text_1,get(equivalency));set_text(text_2,get(version2))}));bind_select_value(select,selected);append($$anchor3,fragment_2)};if_block(node_1,($$render=>{hidden()||$$render(consequent_5)}));append($$anchor2,fragment_1)};alternate_4=$$anchor2=>{var fragment_7=root_132();next(6);append($$anchor2,fragment_7)};if_block(node,($$render=>{get(terms).length>0?$$render(consequent_6):$$render(alternate_4,!1)}));append($$anchor,fragment);pop()}function PluginPane($$anchor,$$props){async function requestUpdate(){await addOn.updatePluginList(!0)}function filterList(list2,categories){return list2.filter((e3=>-1!==categories.indexOf(e3.category))).sort(((a2,b3)=>`${a2.category}-${a2.name}`.localeCompare(`${b3.category}-${b3.name}`)))}function selectAllNewest(selectMode){update(selectNewestPulse);set(selectNewestStyle,selectMode?1:2)}async function applyData(data){return await addOn.applyData(data)}async function compareData(docA,docB,compareEach=!1){return await addOn.compareUsingDisplayData(docA,docB,compareEach)}async function deleteData(data){return await addOn.deleteData(data)}function askMode(evt,title,key2){var _a7;const menu=new import_obsidian6.Menu;menu.addItem((item=>item.setTitle(title).setIsLabel(!0)));menu.addSeparator();const prevMode=null!==(_a7=automaticList.get(key2))&&void 0!==_a7?_a7:MODE_SELECTIVE;for(const mode of[MODE_SELECTIVE,MODE_AUTOMATIC,MODE_PAUSED,MODE_SHINY])menu.addItem((item=>{item.setTitle(`${getIcon(mode)}:${TITLES[mode]}`).onClick((e3=>{mode===MODE_AUTOMATIC?askOverwriteModeForAutomatic(evt,key2):setMode(key2,mode)})).setChecked(prevMode==mode).setDisabled(prevMode==mode)}));menu.showAtMouseEvent(evt)}function applyAutomaticSync(key2,direction){var _a7,_b3;setMode(key2,MODE_AUTOMATIC);const configDir=normalizePath(plugin3().app.vault.configDir),files=(null!==(_b3=null===(_a7=plugin3().settings.pluginSyncExtendedSetting[key2])||void 0===_a7?void 0:_a7.files)&&void 0!==_b3?_b3:[]).map((e3=>`${configDir}/${e3}`));addOnHiddenFileSync.initialiseInternalFileSync(direction,!0,files)}function askOverwriteModeForAutomatic(evt,key2){const menu=new import_obsidian6.Menu;menu.addItem((item=>item.setTitle("Initial Action").setIsLabel(!0)));menu.addSeparator();menu.addItem((item=>{item.setTitle("↑: Overwrite Remote").onClick((e3=>{applyAutomaticSync(key2,"pushForce")}))})).addItem((item=>{item.setTitle("↓: Overwrite Local").onClick((e3=>{applyAutomaticSync(key2,"pullForce")}))})).addItem((item=>{item.setTitle("⇅: Use newer").onClick((e3=>{applyAutomaticSync(key2,"safe")}))}));menu.showAtMouseEvent(evt)}function setMode(key2,mode){if(key2.startsWith(PREFIX_PLUGIN_ALL+"/")){setMode(PREFIX_PLUGIN_DATA+key2.substring(PREFIX_PLUGIN_ALL.length),mode);setMode(PREFIX_PLUGIN_MAIN+key2.substring(PREFIX_PLUGIN_ALL.length),mode);return}const files=unique(get(list).filter((e3=>`${e3.category}/${e3.name}`==key2)).map((e3=>e3.files)).flat().map((e3=>e3.filename)));if(mode==MODE_SELECTIVE){automaticList.delete(key2);delete plugin3().settings.pluginSyncExtendedSetting[key2];set(automaticListDisp,automaticList)}else{automaticList.set(key2,mode);set(automaticListDisp,automaticList);key2 in plugin3().settings.pluginSyncExtendedSetting||plugin3(plugin3().settings.pluginSyncExtendedSetting[key2]={key:key2,mode,files:[]},!0);plugin3(plugin3().settings.pluginSyncExtendedSetting[key2].files=files,!0);plugin3(plugin3().settings.pluginSyncExtendedSetting[key2].mode=mode,!0)}plugin3().$$saveSettingData()}function getIcon(mode){if(mode in ICONS)return ICONS[mode]}var fragment,div,div_1,button,button_1,button_2,node,consequent,div_2,button_4,button_5,button_6,button_7,div_3,node_1,consequent_1,div_4,node_2,consequent_2,alternate_5,node_13,consequent_10,div_32,label_1,input,div_33,label_2,input_1;push($$props,!1);append_styles($$anchor,$$css4);const[$$stores,$$cleanup]=setup_stores(),$pluginManifestStore=()=>store_get(pluginManifestStore,"$pluginManifestStore",$$stores),$pluginV2Progress=()=>store_get(pluginV2Progress,"$pluginV2Progress",$$stores),hideNotApplicable=mutable_state(),thisTerm=mutable_state(),options=mutable_state();let plugin3=prop($$props,"plugin",12);const addOn=plugin3().getAddOn(ConfigSync.name);if(!addOn){const msg="AddOn Module (ConfigSync) has not been loaded. This is very unexpected situation. Please report this issue.";Logger(msg,LOG_LEVEL_NOTICE);throw new Error(msg)}const addOnHiddenFileSync=plugin3().getAddOn(HiddenFileSync.name);if(!addOnHiddenFileSync){const msg="AddOn Module (HiddenFileSync) has not been loaded. This is very unexpected situation. Please report this issue.";Logger(msg,LOG_LEVEL_NOTICE);throw new Error(msg)}let list=mutable_state([]),selectNewestPulse=mutable_state(0),selectNewestStyle=mutable_state(0),hideEven=mutable_state(!1),loading=mutable_state(!1),applyAllPluse=mutable_state(0),isMaintenanceMode=mutable_state(!1),allTerms=mutable_state([]);pluginList.subscribe((e3=>{set(list,e3);set(allTerms,unique(get(list).map((e4=>e4.term))))}));pluginIsEnumerating.subscribe((e3=>{set(loading,e3)}));onMount((async()=>{requestUpdate()}));const displays={CONFIG:"Configuration",THEME:"Themes",SNIPPET:"Snippets"},ICONS={[MODE_SELECTIVE]:"🔀",[MODE_PAUSED]:"⛔",[MODE_AUTOMATIC]:"✨",[MODE_SHINY]:"🚩"},TITLES={[MODE_SELECTIVE]:"Selective",[MODE_PAUSED]:"Ignore",[MODE_AUTOMATIC]:"Automatic",[MODE_SHINY]:"Flagged Selective"},PREFIX_PLUGIN_ALL="PLUGIN_ALL",PREFIX_PLUGIN_DATA="PLUGIN_DATA",PREFIX_PLUGIN_MAIN="PLUGIN_MAIN";let automaticList=new Map,automaticListDisp=mutable_state(new Map);for(const{key:key2,mode}of Object.values(plugin3().settings.pluginSyncExtendedSetting))automaticList.set(key2,mode);set(automaticListDisp,automaticList);let displayKeys=mutable_state({}),deleteTerm=mutable_state(""),nameMap=mutable_state(new Map),displayEntries=mutable_state([]),pluginEntries=mutable_state([]),useSyncPluginEtc=plugin3().settings.usePluginEtc;legacy_pre_effect((()=>{}),(()=>{set(hideNotApplicable,!1)}));legacy_pre_effect((()=>deep_read_state(plugin3())),(()=>{set(thisTerm,plugin3().$$getDeviceAndVaultName())}));legacy_pre_effect((()=>(get(thisTerm),get(hideNotApplicable),get(selectNewestPulse),get(selectNewestStyle),get(applyAllPluse),deep_read_state(plugin3()),get(isMaintenanceMode))),(()=>{set(options,{thisTerm:get(thisTerm),hideNotApplicable:get(hideNotApplicable),selectNewest:get(selectNewestPulse),selectNewestStyle:get(selectNewestStyle),applyAllPluse:get(applyAllPluse),applyData,compareData,deleteData,plugin:plugin3(),isMaintenanceMode:get(isMaintenanceMode)})}));legacy_pre_effect((()=>get(list)),(()=>{set(displayKeys,function computeDisplayKeys(list2){return[...list2,...Object.keys(plugin3().settings.pluginSyncExtendedSetting).map((e3=>`${e3}///`.split("/"))).filter((e3=>e3[0]&&e3[1])).map((e3=>({category:e3[0],name:e3[1],displayName:e3[1]})))].sort(((a2,b3)=>{var _a7,_b3;return(null!==(_a7=a2.displayName)&&void 0!==_a7?_a7:a2.name).localeCompare(null!==(_b3=b3.displayName)&&void 0!==_b3?_b3:b3.name)})).reduce(((p4,c3)=>{var _a7,_b3;return{...p4,[c3.category]:unique(c3.category in p4?[...p4[c3.category],null!==(_a7=c3.displayName)&&void 0!==_a7?_a7:c3.name]:[null!==(_b3=c3.displayName)&&void 0!==_b3?_b3:c3.name])}}),{})}(get(list)))}));legacy_pre_effect((()=>$pluginManifestStore()),(()=>{(function updateNameMap(e3){const items=[...e3.entries()].map((([k2,v2])=>[k2.split("/").slice(-2).join("/"),v2.name])),newMap=new Map(items);if(newMap.size==get(nameMap).size){let diff=!1;for(const[k2,v2]of newMap)if(get(nameMap).get(k2)!=v2){diff=!0;break}if(!diff)return}set(nameMap,newMap)})($pluginManifestStore())}));legacy_pre_effect((()=>get(displayKeys)),(()=>{set(displayEntries,Object.entries(displays).filter((([key2,_])=>key2 in get(displayKeys))))}));legacy_pre_effect((()=>get(list)),(()=>{set(pluginEntries,function groupBy(items,key2){let ret={};for(const v2 of items){const k2=key2 in v2?v2[key2]:"";ret[k2]=ret[k2]||[];ret[k2].push(v2)}for(const k2 in ret)ret[k2]=ret[k2].sort(((a2,b3)=>`${a2.category}-${a2.name}`.localeCompare(`${b3.category}-${b3.name}`)));return Object.entries(ret).sort((([a2],[b3])=>`${a2}`.localeCompare(`${b3}`)))}(filterList(get(list),["PLUGIN_MAIN","PLUGIN_DATA","PLUGIN_ETC"]),"name"))}));legacy_pre_effect_reset();init();div_1=child(div=first_child(fragment=root3()));button_1=sibling(button=child(div_1),2);button_2=sibling(button_1,2);node=sibling(button_2,2);consequent=$$anchor2=>{var button_3=root_14();event("click",button_3,(()=>async function requestReload(){await addOn.reloadPluginList(!0)}()));append($$anchor2,button_3)};if_block(node,($$render=>{get(isMaintenanceMode)&&$$render(consequent)}));reset(div_1);div_2=sibling(div_1,2);(button_5=sibling(button_4=child(div_2),2)).textContent="🚩 Select Flagged Shiny";button_6=sibling(button_5,2);button_7=sibling(button_6,2);reset(div_2);reset(div);node_1=child(div_3=sibling(div,2));consequent_1=$$anchor2=>{var span=root_23(),text2=child(span);reset(span);template_effect((()=>{var _a7;return set_text(text2,`Updating list...${null!=(_a7=0==$pluginV2Progress()?"":` (${$pluginV2Progress()})`)?_a7:""}`)}));append($$anchor2,span)};if_block(node_1,($$render=>{(get(loading)||0!==$pluginV2Progress())&&$$render(consequent_1)}));reset(div_3);node_2=child(div_4=sibling(div_3,2));consequent_2=$$anchor2=>{append($$anchor2,root_32())};alternate_5=$$anchor2=>{var div_11,fragment_1=root_43(),node_3=first_child(fragment_1);each(node_3,1,(()=>get(displayEntries)),index,(($$anchor3,$$item)=>{var div_6,h3,text_1;let key2=()=>get($$item)[0];h3=child(div_6=root_52());text_1=child(h3,!0);reset(h3);each(sibling(h3,2),1,(()=>get(displayKeys)[key2()]),index,(($$anchor4,name)=>{var div_8,button_8,text_2,span_1,text_3,div_9,node_5,consequent_3,alternate,div_7=root_63();const bindKey=derived_safe_equal((()=>`${key2()}/${get(name)}`)),mode=derived_safe_equal((()=>{var _a7;return null!=(_a7=get(automaticListDisp).get(get(bindKey)))?_a7:MODE_SELECTIVE}));div_8=child(div_7);button_8=child(div_8);text_2=child(button_8,!0);reset(button_8);span_1=sibling(button_8,2);text_3=child(span_1,!0);reset(span_1);reset(div_8);node_5=child(div_9=sibling(div_8,2));consequent_3=$$anchor5=>{const expression=derived_safe_equal((()=>get(mode)==MODE_SHINY)),expression_1=derived_safe_equal((()=>get(list).filter((e3=>e3.category==key2()&&e3.name==get(name)))));PluginCombo($$anchor5,spread_props((()=>get(options)),{get isFlagged(){return get(expression)},get list(){return get(expression_1)},hidden:!1}))};alternate=$$anchor5=>{var div_10=root_82(),text_4=child(div_10,!0);reset(div_10);template_effect((()=>set_text(text_4,TITLES[get(mode)])));append($$anchor5,div_10)};if_block(node_5,($$render=>{get(mode)==MODE_SELECTIVE||get(mode)==MODE_SHINY?$$render(consequent_3):$$render(alternate,!1)}));reset(div_9);reset(div_7);template_effect((($0,$1)=>{var _a7;set_class(div_7,`labelrow ${null!=(_a7=get(hideEven)?"hideeven":"")?_a7:""} svelte-1pucu7f`);set_text(text_2,$0);set_text(text_3,$1)}),[()=>getIcon(get(mode)),()=>"THEME"==key2()&&get(nameMap).get(`themes/${get(name)}`)||get(name)],derived_safe_equal);event("click",button_8,(evt=>askMode(evt,`${key2()}/${get(name)}`,get(bindKey))));append($$anchor4,div_7)}));reset(div_6);template_effect((()=>set_text(text_1,get($$item)[1])));append($$anchor3,div_6)}));div_11=sibling(node_3,2);each(sibling(child(div_11),2),1,(()=>get(pluginEntries)),index,(($$anchor3,$$item)=>{var fragment_3,div_12,div_13,button_9,text_5,span_2,text_6,div_14,node_7,consequent_4,node_8,consequent_9,alternate_4;let name=()=>get($$item)[0],listX=()=>get($$item)[1];fragment_3=root_92();const bindKeyAll=derived_safe_equal((()=>`${PREFIX_PLUGIN_ALL}/${name()}`)),modeAll=derived_safe_equal((()=>{var _a7;return null!=(_a7=get(automaticListDisp).get(get(bindKeyAll)))?_a7:MODE_SELECTIVE})),bindKeyMain=derived_safe_equal((()=>`${PREFIX_PLUGIN_MAIN}/${name()}`)),modeMain=derived_safe_equal((()=>{var _a7;return null!=(_a7=get(automaticListDisp).get(get(bindKeyMain)))?_a7:MODE_SELECTIVE})),bindKeyData=derived_safe_equal((()=>`${PREFIX_PLUGIN_DATA}/${name()}`)),modeData=derived_safe_equal((()=>{var _a7;return null!=(_a7=get(automaticListDisp).get(get(bindKeyData)))?_a7:MODE_SELECTIVE})),bindKeyETC=derived_safe_equal((()=>`PLUGIN_ETC/${name()}`)),modeEtc=derived_safe_equal((()=>{var _a7;return null!=(_a7=get(automaticListDisp).get(get(bindKeyETC)))?_a7:MODE_SELECTIVE}));div_13=child(div_12=first_child(fragment_3));button_9=child(div_13);text_5=child(button_9,!0);reset(button_9);span_2=sibling(button_9,2);text_6=child(span_2,!0);reset(span_2);reset(div_13);node_7=child(div_14=sibling(div_13,2));consequent_4=$$anchor4=>{const expression_2=derived_safe_equal((()=>get(modeAll)==MODE_SHINY));PluginCombo($$anchor4,spread_props((()=>get(options)),{get isFlagged(){return get(expression_2)},get list(){return listX()},hidden:!0}))};if_block(node_7,($$render=>{get(modeAll)!=MODE_SELECTIVE&&get(modeAll)!=MODE_SHINY||$$render(consequent_4)}));reset(div_14);reset(div_12);node_8=sibling(div_12,2);consequent_9=$$anchor4=>{var div_17,node_9,consequent_5,alternate_1,div_19,div_20,button_11,text_9,div_21,node_10,consequent_6,alternate_2,node_11,consequent_8,fragment_5=root_112(),div_15=first_child(fragment_5),div_16=child(div_15),button_10=child(div_16),text_7=child(button_10,!0);reset(button_10);next(2);reset(div_16);node_9=child(div_17=sibling(div_16,2));consequent_5=$$anchor5=>{const expression_3=derived_safe_equal((()=>get(modeMain)==MODE_SHINY)),expression_4=derived_safe_equal((()=>filterList(listX(),["PLUGIN_MAIN"])));PluginCombo($$anchor5,spread_props((()=>get(options)),{get isFlagged(){return get(expression_3)},get list(){return get(expression_4)},hidden:!1}))};alternate_1=$$anchor5=>{var div_18=root_133(),text_8=child(div_18,!0);reset(div_18);template_effect((()=>set_text(text_8,TITLES[get(modeMain)])));append($$anchor5,div_18)};if_block(node_9,($$render=>{get(modeMain)==MODE_SELECTIVE||get(modeMain)==MODE_SHINY?$$render(consequent_5):$$render(alternate_1,!1)}));reset(div_17);reset(div_15);div_20=child(div_19=sibling(div_15,2));button_11=child(div_20);text_9=child(button_11,!0);reset(button_11);next(2);reset(div_20);node_10=child(div_21=sibling(div_20,2));consequent_6=$$anchor5=>{const expression_5=derived_safe_equal((()=>get(modeData)==MODE_SHINY)),expression_6=derived_safe_equal((()=>filterList(listX(),["PLUGIN_DATA"])));PluginCombo($$anchor5,spread_props((()=>get(options)),{get isFlagged(){return get(expression_5)},get list(){return get(expression_6)},hidden:!1}))};alternate_2=$$anchor5=>{var div_22=root_15(),text_10=child(div_22,!0);reset(div_22);template_effect((()=>set_text(text_10,TITLES[get(modeData)])));append($$anchor5,div_22)};if_block(node_10,($$render=>{get(modeData)==MODE_SELECTIVE||get(modeData)==MODE_SHINY?$$render(consequent_6):$$render(alternate_2,!1)}));reset(div_21);reset(div_19);node_11=sibling(div_19,2);consequent_8=$$anchor5=>{var div_25,node_12,consequent_7,alternate_3,div_23=root_16(),div_24=child(div_23),button_12=child(div_24),text_11=child(button_12,!0);reset(button_12);next(2);reset(div_24);node_12=child(div_25=sibling(div_24,2));consequent_7=$$anchor6=>{const expression_7=derived_safe_equal((()=>get(modeEtc)==MODE_SHINY)),expression_8=derived_safe_equal((()=>filterList(listX(),["PLUGIN_ETC"])));PluginCombo($$anchor6,spread_props((()=>get(options)),{get isFlagged(){return get(expression_7)},get list(){return get(expression_8)},hidden:!1}))};alternate_3=$$anchor6=>{var div_26=root_18(),text_12=child(div_26,!0);reset(div_26);template_effect((()=>set_text(text_12,TITLES[get(modeEtc)])));append($$anchor6,div_26)};if_block(node_12,($$render=>{get(modeEtc)==MODE_SELECTIVE||get(modeEtc)==MODE_SHINY?$$render(consequent_7):$$render(alternate_3,!1)}));reset(div_25);reset(div_23);template_effect(($0=>{var _a7;set_class(div_23,`filerow ${null!=(_a7=get(hideEven)?"hideeven":"")?_a7:""} svelte-1pucu7f`);set_text(text_11,$0)}),[()=>getIcon(get(modeEtc))],derived_safe_equal);event("click",button_12,(evt=>askMode(evt,`PLUGIN_ETC/${name()}`,get(bindKeyETC))));append($$anchor5,div_23)};if_block(node_11,($$render=>{useSyncPluginEtc&&$$render(consequent_8)}));template_effect((($0,$1)=>{var _a7,_b3;set_class(div_15,`filerow ${null!=(_a7=get(hideEven)?"hideeven":"")?_a7:""} svelte-1pucu7f`);set_text(text_7,$0);set_class(div_19,`filerow ${null!=(_b3=get(hideEven)?"hideeven":"")?_b3:""} svelte-1pucu7f`);set_text(text_9,$1)}),[()=>getIcon(get(modeMain)),()=>getIcon(get(modeData))],derived_safe_equal);event("click",button_10,(evt=>askMode(evt,`${PREFIX_PLUGIN_MAIN}/${name()}/MAIN`,get(bindKeyMain))));event("click",button_11,(evt=>askMode(evt,`${PREFIX_PLUGIN_DATA}/${name()}`,get(bindKeyData))));append($$anchor4,fragment_5)};alternate_4=$$anchor4=>{var div_27=root_19(),div_28=child(div_27),text_13=child(div_28,!0);reset(div_28);reset(div_27);template_effect((()=>set_text(text_13,TITLES[get(modeAll)])));append($$anchor4,div_27)};if_block(node_8,($$render=>{get(modeAll)==MODE_SELECTIVE||get(modeAll)==MODE_SHINY?$$render(consequent_9):$$render(alternate_4,!1)}));template_effect((($0,$1)=>{var _a7;set_class(div_12,`labelrow ${null!=(_a7=get(hideEven)?"hideeven":"")?_a7:""} svelte-1pucu7f`);set_text(text_5,$0);set_text(text_6,$1)}),[()=>getIcon(get(modeAll)),()=>get(nameMap).get(`plugins/${name()}`)||name()],derived_safe_equal);event("click",button_9,(evt=>askMode(evt,`${PREFIX_PLUGIN_ALL}/${name()}`,get(bindKeyAll))));append($$anchor3,fragment_3)}));reset(div_11);append($$anchor2,fragment_1)};if_block(node_2,($$render=>{0==get(list).length?$$render(consequent_2):$$render(alternate_5,!1)}));reset(div_4);node_13=sibling(div_4,2);consequent_10=$$anchor2=>{var button_13,div_29=root_20(),div_30=child(div_29),div_31=sibling(child(div_30),2),select=sibling(child(div_31),2);template_effect((()=>{get(deleteTerm);invalidate_inner_signals((()=>{get(allTerms)}))}));each(select,5,(()=>get(allTerms)),index,(($$anchor3,term)=>{var option=root_21(),option_value={},text_14=child(option,!0);reset(option);template_effect((()=>{option_value!==(option_value=get(term))&&(option.value=null==(option.__value=get(term))?"":get(term));set_text(text_14,get(term))}));append($$anchor3,option)}));reset(select);button_13=sibling(select,2);reset(div_31);reset(div_30);reset(div_29);bind_select_value(select,(()=>get(deleteTerm)),($$value=>set(deleteTerm,$$value)));event("click",button_13,(evt=>{(async function deleteAllItems(term){const deleteItems=get(list).filter((e3=>e3.term==term));for(const item of deleteItems)await deleteData(item);addOn.reloadPluginList(!0)})(get(deleteTerm))}));append($$anchor2,div_29)};if_block(node_13,($$render=>{get(isMaintenanceMode)&&$$render(consequent_10)}));label_1=child(div_32=sibling(node_13,2));remove_input_defaults(input=sibling(child(label_1)));reset(label_1);reset(div_32);label_2=child(div_33=sibling(div_32,2));remove_input_defaults(input_1=sibling(child(label_2)));reset(label_2);reset(div_33);event("click",button,(()=>async function scanAgain(){await addOn.scanAllConfigFiles(!0);await requestUpdate()}()));event("click",button_1,(()=>async function replicate2(){await plugin3().$$replicate(!0)}()));event("click",button_2,(()=>requestUpdate()));event("click",button_4,(()=>selectAllNewest(!0)));event("click",button_5,(()=>selectAllNewest(!1)));event("click",button_6,(()=>function resetSelectNewest(){update(selectNewestPulse);set(selectNewestStyle,3)}()));event("click",button_7,(()=>function applyAll(){update(applyAllPluse)}()));bind_checked(input,(()=>get(hideEven)),($$value=>set(hideEven,$$value)));bind_checked(input_1,(()=>get(isMaintenanceMode)),($$value=>set(isMaintenanceMode,$$value)));append($$anchor,fragment);pop();$$cleanup()}function serialize(data){var _a7,_b3,_c2,_d2,_e2;let ret="";ret+=":";ret+=data.category+d+data.name+d+data.term+d2;ret+=(null!=(_a7=data.version)?_a7:"")+d2;ret+=data.mtime+d2;for(const file of data.files){ret+=file.filename+d+(null!=(_b3=file.displayName)?_b3:"")+d+(null!=(_c2=file.version)?_c2:"")+d2;const hash3=digestHash(null!=(_d2=file.data)?_d2:[]);ret+=file.mtime+d+file.size+d+hash3+d2;for(const data2 of null!=(_e2=file.data)?_e2:[])ret+=data2+d;ret+=d2}return ret}function deserialize(str,def){try{if(":"==str[0][0]){const o2=function deserialize2(str){const tokens=function getTokenizer(source2){const sources=function splitWithDelimiters(sources){const result=[];for(const str of sources){let startIndex=0;const maxLen=str.length;let i1,i22,i2=-1;do{i1=str.indexOf(d,startIndex);i22=str.indexOf(d2,startIndex);if(-1==i1&&-1==i22)break;i2=-1==i1?i22:-1==i22||i1<i22?i1:i22;result.push(str.slice(startIndex,i2+1));startIndex=i2+1}while(i2<maxLen);startIndex<maxLen&&result.push(str.slice(startIndex))}""==sources[sources.length-1]&&result.push("");return result}(source2);sources[0]=sources[0].substring(1);let pos=0,lineRunOut=!1;return{next(){if(lineRunOut)return"";if(pos>=sources.length)return"";const item=sources[pos];item.endsWith(d2)?lineRunOut=!0:pos++;return item.endsWith(d)||item.endsWith(d2)?item.substring(0,item.length-1):item+this.next()},nextLine(){if(lineRunOut)pos++;else{for(;!sources[pos].endsWith(d2);){pos++;if(pos>=sources.length)break}pos++}lineRunOut=!1}}}(str),category=tokens.next(),name=tokens.next(),term=tokens.next();tokens.nextLine();const version2=tokens.next();tokens.nextLine();const mtime=Number(tokens.next());tokens.nextLine();const result=Object.assign({},{category,name,term,version:version2,mtime,files:[]});let filename="";do{filename=tokens.next();if(!filename)break;const displayName=tokens.next(),version3=tokens.next();tokens.nextLine();const mtime2=Number(tokens.next()),size=Number(tokens.next()),hash3=tokens.next();tokens.nextLine();const data=[];let piece="";do{piece=tokens.next();if(""==piece)break;data.push(piece)}while(""!=piece);result.files.push({filename,displayName,version:version3,mtime:mtime2,size,data,hash:hash3});tokens.nextLine()}while(filename);return result}(str);return o2}return JSON.parse(str.join(""))}catch(e3){try{return(0,import_obsidian.parseYaml)(str.join(""))}catch(e4){return def}}}function categoryToFolder(category,configDir=""){switch(category){case"CONFIG":return`${configDir}/`;case"THEME":return`${configDir}/themes/`;case"SNIPPET":return`${configDir}/snippets/`;case"PLUGIN_MAIN":return`${configDir}/plugins/`;case"PLUGIN_DATA":return`${configDir}/plugins/`;case"PLUGIN_ETC":return`${configDir}/plugins/`;default:return""}}function toBase64(_input){let input;input="string"==typeof _input?fromUtf8(_input):_input;const isArrayLike="object"==typeof input&&"number"==typeof input.length,isUint8Array="object"==typeof input&&"number"==typeof input.byteOffset&&"number"==typeof input.byteLength;if(!isArrayLike&&!isUint8Array)throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");let str="";for(let i2=0;i2<input.length;i2+=3){let bits2=0,bitLength=0;for(let j2=i2,limit=Math.min(i2+3,input.length);j2<limit;j2++){bits2|=input[j2]<<(limit-j2-1)*bitsPerByte;bitLength+=bitsPerByte}const bitClusterCount=Math.ceil(bitLength/bitsPerLetter);bits2<<=bitClusterCount*bitsPerLetter-bitLength;for(let k2=1;k2<=bitClusterCount;k2++){const offset=(bitClusterCount-k2)*bitsPerLetter;str+=alphabetByValue[(bits2&maxLetterValue<<offset)>>offset]}str+="==".slice(0,4-bitClusterCount)}return str}function buildQueryString(query3){const parts=[];for(let key2 of Object.keys(query3).sort()){const value=query3[key2];key2=escapeUri(key2);if(Array.isArray(value))for(let i2=0,iLen=value.length;i2<iLen;i2++)parts.push(`${key2}=${escapeUri(value[i2])}`);else{let qsEntry=key2;(value||"string"==typeof value)&&(qsEntry+=`=${escapeUri(value)}`);parts.push(qsEntry)}}return parts.join("&")}function requestTimeout(timeoutInMs=0){return new Promise(((resolve,reject)=>{timeoutInMs&&setTimeout((()=>{const timeoutError=new Error(`Request did not complete within ${timeoutInMs} ms`);timeoutError.name="TimeoutError";reject(timeoutError)}),timeoutInMs)}))}function fromHex(encoded){if(encoded.length%2!=0)throw new Error("Hex encoded strings must have an even number length");const out=new Uint8Array(encoded.length/2);for(let i2=0;i2<encoded.length;i2+=2){const encodedByte=encoded.slice(i2,i2+2).toLowerCase();if(!(encodedByte in HEX_TO_SHORT))throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);out[i2/2]=HEX_TO_SHORT[encodedByte]}return out}function toHex2(bytes){let out="";for(let i2=0;i2<bytes.byteLength;i2++)out+=SHORT_TO_HEX[bytes[i2]];return out}function dateToUtcString(date){const year=date.getUTCFullYear(),month=date.getUTCMonth(),dayOfWeek=date.getUTCDay(),dayOfMonthInt=date.getUTCDate(),hoursInt=date.getUTCHours(),minutesInt=date.getUTCMinutes(),secondsInt=date.getUTCSeconds(),dayOfMonthString=dayOfMonthInt<10?`0${dayOfMonthInt}`:`${dayOfMonthInt}`,hoursString=hoursInt<10?`0${hoursInt}`:`${hoursInt}`,minutesString=minutesInt<10?`0${minutesInt}`:`${minutesInt}`,secondsString=secondsInt<10?`0${secondsInt}`:`${secondsInt}`;return`${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`}function extendedEncodeURIComponent(str){return encodeURIComponent(str).replace(/[!'()*]/g,(function(c3){return"%"+c3.charCodeAt(0).toString(16).toUpperCase()}))}function map(arg0,arg1,arg2){let target,filter4,instructions;if(void 0===arg1&&void 0===arg2){target={};instructions=arg0}else{target=arg0;if("function"==typeof arg1){filter4=arg1;instructions=arg2;return mapWithFilter(target,filter4,instructions)}instructions=arg1}for(const key2 of Object.keys(instructions))Array.isArray(instructions[key2])?applyInstruction(target,null,instructions,key2):target[key2]=instructions[key2];return target}function negate(bytes){for(let i2=0;i2<8;i2++)bytes[i2]^=255;for(let i2=7;i2>-1;i2--){bytes[i2]++;if(0!==bytes[i2])break}}function getCredentialsWithoutSessionToken(credentials){return{accessKeyId:credentials.accessKeyId,secretAccessKey:credentials.secretAccessKey,expiration:credentials.expiration}}function setSingleOverride(privateAccess,credentialsWithoutSessionToken){const id=setTimeout((()=>{throw new Error("SignatureV4S3Express credential override was created but not called.")}),10),currentCredentialProvider=privateAccess.credentialProvider;privateAccess.credentialProvider=()=>{clearTimeout(id);privateAccess.credentialProvider=currentCredentialProvider;return Promise.resolve(credentialsWithoutSessionToken)}}function getSerdePlugin(config,serializer,deserializer){return{applyToStack:commandStack=>{commandStack.add(deserializerMiddleware(config,deserializer),deserializerMiddlewareOption);commandStack.add(serializerMiddleware(config,serializer),serializerMiddlewareOption)}}}function rng(){if(!getRandomValues&&!(getRandomValues="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return getRandomValues(rnds8)}function requestBuilder(input,context2){return new RequestBuilder(input,context2)}function toDebugString(input){return"object"!=typeof input||null==input?input:"ref"in input?`$${toDebugString(input.ref)}`:"fn"in input?`${input.fn}(${(input.argv||[]).map(toDebugString).join(", ")})`:JSON.stringify(input,null,2)}function createAwsAuthSigv4HttpAuthOption(authParameters){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"s3",region:authParameters.region},propertiesExtractor:(config,context2)=>({signingProperties:{config,context:context2}})}}function createAwsAuthSigv4aHttpAuthOption(authParameters){return{schemeId:"aws.auth#sigv4a",signingProperties:{name:"s3",region:authParameters.region},propertiesExtractor:(config,context2)=>({signingProperties:{config,context:context2}})}}function isEmptyData(data){return"string"==typeof data?0===data.length:0===data.byteLength}function locateWindow(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:fallbackWindow}function convertToBuffer(data){return"string"==typeof data?fromUtf82(data):ArrayBuffer.isView(data)?new Uint8Array(data.buffer,data.byteOffset,data.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(data)}function __awaiter(thisArg,_arguments,P2,generator){return new(P2||(P2=Promise))((function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e3){reject(e3)}}function rejected(value){try{step(generator.throw(value))}catch(e3){reject(e3)}}function step(result){result.done?resolve(result.value):function adopt(value){return value instanceof P2?value:new P2((function(resolve){resolve(value)}))}(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())}))}function __generator(thisArg,body){function verb(n3){return function(v2){return function step(op){if(f4)throw new TypeError("Generator is already executing.");for(;g2&&(g2=0,op[0]&&(_=0)),_;)try{if(f4=1,y2&&(t3=2&op[0]?y2.return:op[0]?y2.throw||((t3=y2.return)&&t3.call(y2),0):y2.next)&&!(t3=t3.call(y2,op[1])).done)return t3;(y2=0,t3)&&(op=[2&op[0],t3.value]);switch(op[0]){case 0:case 1:t3=op;break;case 4:_.label++;return{value:op[1],done:!1};case 5:_.label++;y2=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t3=_.trys,t3=t3.length>0&&t3[t3.length-1])&&(6===op[0]||2===op[0])){_=0;continue}if(3===op[0]&&(!t3||op[1]>t3[0]&&op[1]<t3[3])){_.label=op[1];break}if(6===op[0]&&_.label<t3[1]){_.label=t3[1];t3=op;break}if(t3&&_.label<t3[2]){_.label=t3[2];_.ops.push(op);break}t3[2]&&_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e3){op=[6,e3];y2=0}finally{f4=t3=0}if(5&op[0])throw op[1];return{value:op[0]?op[1]:void 0,done:!0}}([n3,v2])}}var f4,y2,t3,_={label:0,sent:function(){if(1&t3[0])throw t3[1];return t3[1]},trys:[],ops:[]},g2=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return g2.next=verb(0),g2.throw=verb(1),g2.return=verb(2),"function"==typeof Symbol&&(g2[Symbol.iterator]=function(){return this}),g2}function __values(o2){var s2="function"==typeof Symbol&&Symbol.iterator,m3=s2&&o2[s2],i2=0;if(m3)return m3.call(o2);if(o2&&"number"==typeof o2.length)return{next:function(){o2&&i2>=o2.length&&(o2=void 0);return{value:o2&&o2[i2++],done:!o2}}};throw new TypeError(s2?"Object is not iterable.":"Symbol.iterator is not defined.")}function supportsWebCrypto(window2){return!(!function supportsSecureRandom(window2){return"object"==typeof window2&&"object"==typeof window2.crypto&&"function"==typeof window2.crypto.getRandomValues}(window2)||"object"!=typeof window2.crypto.subtle)&&function supportsSubtleCrypto(subtle2){return subtle2&&subtleCryptoMethods.every((function(methodName){return"function"==typeof subtle2[methodName]}))}(window2.crypto.subtle)}function convertToBuffer2(data){return data instanceof Uint8Array?data:"string"==typeof data?fromUtf84(data):ArrayBuffer.isView(data)?new Uint8Array(data.buffer,data.byteOffset,data.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(data)}function isEmptyData2(data){return"string"==typeof data?0===data.length:0===data.byteLength}function numToUint8(num2){return new Uint8Array([(4278190080&num2)>>24,(16711680&num2)>>16,(65280&num2)>>8,255&num2])}function uint32ArrayFrom(a_lookUpTable2){var return_array,a_index;if(!Uint32Array.from){return_array=new Uint32Array(a_lookUpTable2.length);a_index=0;for(;a_index<a_lookUpTable2.length;){return_array[a_index]=a_lookUpTable2[a_index];a_index+=1}return return_array}return Uint32Array.from(a_lookUpTable2)}function negate2(bytes){for(let i2=0;i2<8;i2++)bytes[i2]^=255;for(let i2=7;i2>-1;i2--){bytes[i2]++;if(0!==bytes[i2])break}}function getMessageUnmarshaller(deserializer,toUtf82){return async function(message){const{value:messageType}=message.headers[":message-type"];if("error"===messageType){const unmodeledError=new Error(message.headers[":error-message"].value||"UnknownError");unmodeledError.name=message.headers[":error-code"].value;throw unmodeledError}if("exception"===messageType){const code=message.headers[":exception-type"].value,exception={[code]:message},deserializedException=await deserializer(exception);if(deserializedException.$unknown){const error=new Error(toUtf82(message.body));error.name=code;throw error}throw deserializedException[code]}if("event"===messageType){const event2={[message.headers[":event-type"].value]:message},deserialized=await deserializer(event2);if(deserialized.$unknown)return;return deserialized}throw Error(`Unrecognizable event type: ${message.headers[":event-type"].value}`)}}function cmn(q2,a2,b3,x2,s2,t3){return((a2=(a2+q2&4294967295)+(x2+t3&4294967295)&4294967295)<<s2|a2>>>32-s2)+b3&4294967295}function ff(a2,b3,c3,d4,x2,s2,t3){return cmn(b3&c3|~b3&d4,a2,b3,x2,s2,t3)}function gg(a2,b3,c3,d4,x2,s2,t3){return cmn(b3&d4|c3&~d4,a2,b3,x2,s2,t3)}function hh(a2,b3,c3,d4,x2,s2,t3){return cmn(b3^c3^d4,a2,b3,x2,s2,t3)}function ii(a2,b3,c3,d4,x2,s2,t3){return cmn(c3^(b3|~d4),a2,b3,x2,s2,t3)}function isValidBase64EncodedSSECustomerKey(str,options){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str))return!1;try{return 32===options.base64Decoder(str).length}catch(e3){return!1}}function createReadStreamOnBuffer(buffer){return new Blob([buffer]).stream()}function generateId(prefix){if(++idx>1e4){series=`${Date.now()}`;idx=0}return`${PREFIX_TRENCH}-${prefix}-${series}-${idx+1e7}`}function createRange(prefix,series2){return[`${PREFIX_TRENCH}-${prefix}-${series2}-`,`${PREFIX_TRENCH}-${prefix}-${series2}.`]}function serializeDoc(doc){if(doc._id.startsWith("h:")){const writeData=function escapeNewLineFromString(str){return str.indexOf("\n")<0?str:"\\f"+replaceAll(replaceAll(str,"\\","\\\\"),"\n","\\n")}(doc.data);return te4.encode(`~${doc._id}${UNIT_SPLIT}${writeData}${RECORD_SPLIT}`)}return te4.encode(JSON.stringify(doc)+RECORD_SPLIT)}async function ensureRemoteIsCompatible(infoSrc,setting,deviceNodeID,currentVersionRange3,updateCallback){var _a7,_b3,_c2,_d2;const baseMilestone={_id:MILESTONE_DOCID,type:"milestoneinfo",created:new Date/1,locked:!1,accepted_nodes:[deviceNodeID],node_chunk_info:{[deviceNodeID]:currentVersionRange3},tweak_values:{}};let remoteMilestone=infoSrc;remoteMilestone||(remoteMilestone=baseMilestone);const currentTweakValues=extractObject(TweakValuesTemplate,setting);remoteMilestone.node_chunk_info={...baseMilestone.node_chunk_info,...remoteMilestone.node_chunk_info};if(remoteMilestone.node_chunk_info[deviceNodeID].min!=currentVersionRange3.min||remoteMilestone.node_chunk_info[deviceNodeID].max!=currentVersionRange3.max||isObjectDifferent(null==(_a7=remoteMilestone.tweak_values)?void 0:_a7[deviceNodeID],currentTweakValues)||void 0===remoteMilestone._rev||!(DEVICE_ID_PREFERRED in remoteMilestone.tweak_values)){remoteMilestone.node_chunk_info[deviceNodeID].min=currentVersionRange3.min;remoteMilestone.node_chunk_info[deviceNodeID].max=currentVersionRange3.max;remoteMilestone.tweak_values={...null!=(_b3=remoteMilestone.tweak_values)?_b3:{},[deviceNodeID]:currentTweakValues};DEVICE_ID_PREFERRED in remoteMilestone.tweak_values||(remoteMilestone.tweak_values[DEVICE_ID_PREFERRED]=currentTweakValues);await updateCallback(remoteMilestone)}let globalMin=currentVersionRange3.min,globalMax=currentVersionRange3.max;for(const nodeId of remoteMilestone.accepted_nodes)if(nodeId!=deviceNodeID)if(nodeId in remoteMilestone.node_chunk_info){const nodeInfo=remoteMilestone.node_chunk_info[nodeId];globalMin=Math.max(nodeInfo.min,globalMin);globalMax=Math.min(nodeInfo.max,globalMax)}else{globalMin=0;globalMax=0}if(globalMax<globalMin&&!setting.ignoreVersionCheck)return"INCOMPATIBLE";if(!setting.disableCheckingConfigMismatch){const preferred_tweak=null!=(_d2=null==(_c2=remoteMilestone.tweak_values)?void 0:_c2[DEVICE_ID_PREFERRED])?_d2:currentTweakValues,current_tweak=currentTweakValues;if(isObjectDifferent(extractObject(TweakValuesShouldMatchedTemplate,{...TweakValuesDefault,...preferred_tweak}),extractObject(TweakValuesShouldMatchedTemplate,{...TweakValuesDefault,...current_tweak}),!0))return["MISMATCHED",preferred_tweak]}return remoteMilestone.locked?-1==remoteMilestone.accepted_nodes.indexOf(deviceNodeID)?remoteMilestone.cleaned?"NODE_CLEANED":"NODE_LOCKED":"LOCKED":"OK"}function clearResult(name){measures.set(name,[0,0])}async function measureEach(name,proc){var _a7;const[times,spent]=null!=(_a7=measures.get(name))?_a7:[0,0],start=performance.now(),result=proc();result instanceof Promise&&await result;const end=performance.now();measures.set(name,[times+1,spent+(end-start)])}function formatNumber(num2){return num2.toLocaleString("en-US",{maximumFractionDigits:2})}async function measure(name,proc,times=1e4,duration=1e3){const from=Date.now();let last=times;clearResult(name);do{await measureEach(name,proc)}while(last-- >0&&Date.now()-from<duration);return[name,measures.get(name)]}function TestPane($$anchor,$$props){async function allTest(){if(!get(moduleTesting)){set(moduleTesting,!0);try{await plugin3().$everyModuleTest();await plugin3().$everyModuleTestMultiDevice()}finally{set(moduleTesting,!1)}}}var fragment,button,button_1,button_2,button_3,node,pre_1,text_2,button_4,button_5;push($$props,!1);append_styles($$anchor,$$css5);const[$$stores,$$cleanup]=setup_stores(),$results=()=>store_get(results,"$results",$$stores),resultLines=mutable_state();let plugin3=prop($$props,"plugin",8),moduleDev=prop($$props,"moduleDev",8),performanceTestResult=mutable_state(""),testRunning=mutable_state(!1),prefTestResultEl=mutable_state(),isReady=mutable_state(!1);onMount((async()=>{set(isReady,!0);eventHub.onceEvent(EVENT_LAYOUT_READY,(async()=>{if(await plugin3().storageAccess.isExistsIncludeHidden("_AUTO_TEST.md")){new import_obsidian.Notice("Auto test file found, running tests...");fireAndForget((async()=>{await allTest()}))}}))}));let moduleTesting=mutable_state(!1);const results=moduleDev().testResults;let syncStatus=mutable_state([]);eventHub.onEvent("debug-sync-status",(status=>{set(syncStatus,[...status])}));legacy_pre_effect((()=>(get(performanceTestResult),get(isReady),import_obsidian.MarkdownRenderer,deep_read_state(plugin3()),get(prefTestResultEl))),(()=>{""!=get(performanceTestResult)&&get(isReady)&&import_obsidian.MarkdownRenderer.render(plugin3().app,get(performanceTestResult),get(prefTestResultEl),"/",plugin3())}));legacy_pre_effect((()=>$results()),(()=>{set(resultLines,$results())}));legacy_pre_effect_reset();init();fragment=root4();button=sibling(first_child(fragment),4);button_1=sibling(button,2);button_2=sibling(button_1,2);button_3=sibling(button_2,2);each(node=sibling(button_3,2),1,(()=>get(resultLines)),index,(($$anchor2,$$item)=>{var details,summary,text2,pre,text_1;let result=()=>get($$item)[0];summary=child(details=root_17());text2=child(summary);reset(summary);pre=sibling(summary,2);text_1=child(pre,!0);reset(pre);reset(details);template_effect((()=>{var _a7,_b3;details.open=!result();set_text(text2,`[${null!=(_a7=result()?"PASS":"FAILED")?_a7:""}] ${null!=(_b3=get($$item)[1])?_b3:""}`);set_text(text_1,get($$item)[2])}));append($$anchor2,details)}));pre_1=sibling(node,4);text_2=child(pre_1,!0);reset(pre_1);button_4=sibling(pre_1,4);button_5=sibling(button_4,2);bind_this(sibling(button_5,2),($$value=>set(prefTestResultEl,$$value)),(()=>get(prefTestResultEl)));template_effect(($0=>{button.disabled=get(moduleTesting);button_1.disabled=get(moduleTesting);button_2.disabled=get(moduleTesting);set_text(text_2,$0);button_4.disabled=get(testRunning)}),[()=>get(syncStatus).join("\n")],derived_safe_equal);event("click",button,(()=>function moduleMultiDeviceTest(){if(!get(moduleTesting)){set(moduleTesting,!0);plugin3().$everyModuleTestMultiDevice().finally((()=>{set(moduleTesting,!1)}))}}()));event("click",button_1,(()=>function moduleSingleDeviceTest(){if(!get(moduleTesting)){set(moduleTesting,!0);plugin3().$everyModuleTest().finally((()=>{set(moduleTesting,!1)}))}}()));event("click",button_2,(()=>allTest()));event("click",button_3,(()=>function clearResult2(){moduleDev().testResults.update((v2=>[]))}()));event("click",button_4,(()=>async function performTest(){try{set(testRunning,!0);set(performanceTestResult,await async function perf_trench(plugin3){clearResult("trench");const trench=new Trench(plugin3.simpleStore),result=[];result.push(await measure("trench-short-string",(async()=>{const p4=trench.evacuate("string");await p4()})));{const testBinary=await plugin3.storageAccess.readHiddenFileBinary("testdata/10kb.png"),uint8Array=new Uint8Array(testBinary);result.push(await measure("trench-binary-10kb",(async()=>{const p4=trench.evacuate(uint8Array);await p4()})))}{const testBinary=await plugin3.storageAccess.readHiddenFileBinary("testdata/100kb.jpeg"),uint8Array=new Uint8Array(testBinary);result.push(await measure("trench-binary-100kb",(async()=>{const p4=trench.evacuate(uint8Array);await p4()})))}{const testBinary=await plugin3.storageAccess.readHiddenFileBinary("testdata/1mb.png"),uint8Array=new Uint8Array(testBinary);result.push(await measure("trench-binary-1mb",(async()=>{const p4=trench.evacuate(uint8Array);await p4()})))}return async function formatPerfResults(items){return"| Name | Runs | Each | Total |\n| --- | --- | --- | --- | \n"+items.map((e3=>`| ${e3[0]} | ${e3[1][0]} | ${0!=e3[1][0]?formatNumber(e3[1][1]/e3[1][0]):"-"} | ${formatNumber(e3[1][0])} |`)).join("\n")}(result)}(plugin3()))}finally{set(testRunning,!1)}}()));event("click",button_5,(()=>function clearPerfTestResult(){get(prefTestResultEl).empty()}()));append($$anchor,fragment);pop();$$cleanup()}function getFileLockKey(file){return`fl:${"string"==typeof file?file:file.path}`}function toArrayBuffer(arr){return arr instanceof Uint8Array||arr instanceof DataView?arr.buffer:arr}async function processReadFile(file,proc){return await serialized(getFileLockKey(file),(()=>proc()))}async function processWriteFile(file,proc){return await serialized(getFileLockKey(file),(()=>proc()))}function TFileToUXFileInfoStub(file,deleted){if(!(file instanceof import_obsidian.TFile))throw new Error("Invalid file type");return{name:file.name,path:file.path,isFolder:!1,stat:{size:file.stat.size,mtime:file.stat.mtime,ctime:file.stat.ctime,type:"file"},deleted}}function confirmWithMessage(plugin3,title,contentMd,buttons,defaultAction,timeout){return new Promise((res2=>{new MessageBox(plugin3,title,contentMd,buttons,defaultAction,timeout,!1,(result=>res2(result))).open()}))}function confirmWithMessageWithWideButton(plugin3,title,contentMd,buttons,defaultAction,timeout){return new Promise((res2=>{new MessageBox(plugin3,title,contentMd,buttons,defaultAction,timeout,!0,(result=>res2(result))).open()}))}function getConfig(key2){return function translateInfo(infoSrc){if(!infoSrc)return!1;const info3={...infoSrc};info3.name=$t(info3.name);info3.desc&&(info3.desc=$t(info3.desc));return info3}(function _getConfig(key2){return key2 in configurationNames?configurationNames[key2]:key2 in SettingInformation&&SettingInformation[key2]}(key2))}function getConfName(key2){const conf=getConfig(key2);return conf?conf.name:`${key2} (No info)`}function createError(error,reason){function CustomPouchError(reason2){var i2,len,names=Object.getOwnPropertyNames(error);for(i2=0,len=names.length;i2<len;i2++)"function"!=typeof error[names[i2]]&&(this[names[i2]]=error[names[i2]]);void 0===this.stack&&(this.stack=(new Error).stack);void 0!==reason2&&(this.reason=reason2)}CustomPouchError.prototype=PouchError.prototype;return new CustomPouchError(reason)}function generateErrorFromResponse(err2){if("object"!=typeof err2){var data=err2;(err2=UNKNOWN_ERROR).data=data}if("error"in err2&&"conflict"===err2.error){err2.name="conflict";err2.status=409}"name"in err2||(err2.name=err2.error||"unknown");"status"in err2||(err2.status=500);"message"in err2||(err2.message=err2.message||err2.reason);"stack"in err2||(err2.stack=(new Error).stack);return err2}function rng2(){if(!getRandomValues2&&!(getRandomValues2="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return getRandomValues2(rnds82)}function createBlob2(parts,properties){var builder,i2;parts=parts||[];properties=properties||{};try{return new Blob(parts,properties)}catch(e3){if("TypeError"!==e3.name)throw e3;builder=new("undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder);for(i2=0;i2<parts.length;i2+=1)builder.append(parts[i2]);return builder.getBlob(properties.type)}}function binaryStringToArrayBuffer(bin){var i2,length=bin.length,buf=new ArrayBuffer(length),arr=new Uint8Array(buf);for(i2=0;i2<length;i2++)arr[i2]=bin.charCodeAt(i2);return buf}function binStringToBluffer(binString,type){return createBlob2([binaryStringToArrayBuffer(binString)],{type})}function b64ToBluffer(b64,type){return binStringToBluffer(thisAtob(b64),type)}function readAsBinaryString(blob,callback){var reader=new FileReader,hasBinaryString="function"==typeof reader.readAsBinaryString;reader.onloadend=function(e3){var result=e3.target.result||"";if(hasBinaryString)return callback(result);callback(function arrayBufferToBinaryString(buffer){var i2,binary="",bytes=new Uint8Array(buffer),length=bytes.byteLength;for(i2=0;i2<length;i2++)binary+=String.fromCharCode(bytes[i2]);return binary}(result))};hasBinaryString?reader.readAsBinaryString(blob):reader.readAsArrayBuffer(blob)}function blobToBinaryString(blobOrBuffer,callback){readAsBinaryString(blobOrBuffer,(function(bin){callback(bin)}))}function blobToBase64(blobOrBuffer,callback){blobToBinaryString(blobOrBuffer,(function(base64){callback(thisBtoa(base64))}))}function readAsArrayBuffer(blob,callback){var reader=new FileReader;reader.onloadend=function(e3){var result=e3.target.result||new ArrayBuffer(0);callback(result)};reader.readAsArrayBuffer(blob)}function clone2(object){var newObject,i2,len,value;if(!object||"object"!=typeof object)return object;if(Array.isArray(object)){newObject=[];for(i2=0,len=object.length;i2<len;i2++)newObject[i2]=clone2(object[i2]);return newObject}if(object instanceof Date&&isFinite(object))return object.toISOString();if(function isBinaryObject(object){return"undefined"!=typeof ArrayBuffer&&object instanceof ArrayBuffer||"undefined"!=typeof Blob&&object instanceof Blob}(object))return function cloneBinaryObject(object){return object instanceof ArrayBuffer?object.slice(0):object.slice(0,object.size,object.type)}(object);if(!function isPlainObject(value){var Ctor,proto=Object.getPrototypeOf(value);return null===proto||"function"==typeof(Ctor=proto.constructor)&&Ctor instanceof Ctor&&funcToString.call(Ctor)==objectCtorString}(object))return object;newObject={};for(i2 in object)Object.prototype.hasOwnProperty.call(object,i2)&&void 0!==(value=clone2(object[i2]))&&(newObject[i2]=value);return newObject}function once2(fun){var called=!1;return function(...args){if(called)throw new Error("once called more than once");called=!0;fun.apply(this,args)}}function toPromise(func){return function(...args){var self3,usedCB,promise;args=clone2(args);self3=this;usedCB="function"==typeof args[args.length-1]&&args.pop();promise=new Promise((function(fulfill,reject){var resp,callback;try{callback=once2((function(err2,mesg){err2?reject(err2):fulfill(mesg)}));args.push(callback);(resp=func.apply(self3,args))&&"function"==typeof resp.then&&fulfill(resp)}catch(e3){reject(e3)}}));usedCB&&promise.then((function(result){usedCB(null,result)}),usedCB);return promise}}function adapterFun(name,callback){return toPromise((function(...args){if(this._closed)return Promise.reject(new Error("database is closed"));if(this._destroyed)return Promise.reject(new Error("database is destroyed"));var self3=this;(function logApiCall(self3,name,args){var logArgs,i2,origCallback;if(self3.constructor.listeners("debug").length){logArgs=["api",self3.name,name];for(i2=0;i2<args.length-1;i2++)logArgs.push(args[i2]);self3.constructor.emit("debug",logArgs);origCallback=args[args.length-1];args[args.length-1]=function(err2,res2){var responseArgs=["api",self3.name,name];responseArgs=responseArgs.concat(err2?["error",err2]:["success",res2]);self3.constructor.emit("debug",responseArgs);origCallback(err2,res2)}}})(self3,name,args);return this.taskqueue.isReady?callback.apply(this,args):new Promise((function(fulfill,reject){self3.taskqueue.addTask((function(failed2){failed2?reject(failed2):fulfill(self3[name].apply(self3,args))}))}))}))}function pick(obj,arr){var i2,len,prop2,res2={};for(i2=0,len=arr.length;i2<len;i2++)(prop2=arr[i2])in obj&&(res2[prop2]=obj[prop2]);return res2}function identityFunction(x2){return x2}function formatResultForOpenRevsGet(result){return[{ok:result}]}function bulkGet(db,opts,callback){var numDocs,numDone,perDocResults,allRequests,i2,requests=opts.docs,requestsById=new Map;requests.forEach((function(request2){requestsById.has(request2.id)?requestsById.get(request2.id).push(request2):requestsById.set(request2.id,[request2])}));numDocs=requestsById.size;numDone=0;perDocResults=new Array(numDocs);allRequests=[];requestsById.forEach((function(value,key2){allRequests.push(key2)}));i2=0;(function nextBatch(){var upTo,batch;if(!(i2>=allRequests.length)){upTo=Math.min(i2+MAX_NUM_CONCURRENT_REQUESTS,allRequests.length);(function processBatch(batch,offset){batch.forEach((function(docId,j2){var formatResult,docIdx=offset+j2,docRequests=requestsById.get(docId),docOpts=pick(docRequests[0],["atts_since","attachments"]);docOpts.open_revs=docRequests.map((function(request2){return request2.rev}));docOpts.open_revs=docOpts.open_revs.filter(identityFunction);formatResult=identityFunction;if(0===docOpts.open_revs.length){delete docOpts.open_revs;formatResult=formatResultForOpenRevsGet}["revs","attachments","binary","ajax","latest"].forEach((function(param){param in opts&&(docOpts[param]=opts[param])}));db.get(docId,docOpts,(function(err2,res2){var result;result=err2?[{error:err2}]:formatResult(res2);(function gotResult(docIndex,id,docs){perDocResults[docIndex]={id,docs};(function checkDone(){++numDone===numDocs&&function collapseResultsAndFinish(){var results=[];perDocResults.forEach((function(res2){res2.docs.forEach((function(info3){results.push({id:res2.id,docs:[info3]})}))}));callback(null,{results})}()})()})(docIdx,docId,result);nextBatch()}))}))})(batch=allRequests.slice(i2,upTo),i2);i2+=batch.length}})()}function hasLocalStorage(){return hasLocal}function guardedConsole(method){if("undefined"!=typeof console&&"function"==typeof console[method]){var args=Array.prototype.slice.call(arguments,1);console[method].apply(console,args)}}function defaultBackOff(min){var max3=0;min||(max3=2e3);return function randomNumber(min,max3){min=parseInt(min,10)||0;(max3=parseInt(max3,10))!=max3||max3<=min?max3=(min||1)<<1:max3+=1;if(max3>6e5){min=3e5;max3=6e5}return~~((max3-min)*Math.random()+min)}(min,max3)}function explainError(status,str){guardedConsole("info","The above "+status+" is totally normal. "+str)}function filterChange(opts){var req={},hasFilter=opts.filter&&"function"==typeof opts.filter;req.query=opts.query_params;return function filter4(change){var filterReturn,att;change.doc||(change.doc={});filterReturn=hasFilter&&function tryFilter(filter4,doc,req){try{return!filter4(doc,req)}catch(err2){var msg="Filter function threw: "+err2.toString();return createError(BAD_REQUEST,msg)}}(opts.filter,change.doc,req);if("object"==typeof filterReturn)return filterReturn;if(filterReturn)return!1;if(opts.include_docs){if(!opts.attachments)for(att in change.doc._attachments)Object.prototype.hasOwnProperty.call(change.doc._attachments,att)&&(change.doc._attachments[att].stub=!0)}else delete change.doc;return!0}}function invalidIdError(id){var err2;id?"string"!=typeof id?err2=createError(INVALID_ID):/^_/.test(id)&&!/^_(design|local)/.test(id)&&(err2=createError(RESERVED_ID)):err2=createError(MISSING_ID);if(err2)throw err2}function isRemote(db){if("boolean"==typeof db._remote)return db._remote;if("function"==typeof db.type){guardedConsole("warn","db.type() is deprecated and will be removed in a future version of PouchDB");return"http"===db.type()}return!1}function parseDesignDocFunctionName(s2){if(!s2)return null;var parts=s2.split("/");return 2===parts.length?parts:1===parts.length?[s2,s2]:null}function normalizeDesignDocFunctionName(s2){var normalized=parseDesignDocFunctionName(s2);return normalized?normalized.join("/"):null}function parseUri(str){for(var key2,value,encoded,m3=parser.exec(str),uri={},i2=14;i2--;){key2=keys2[i2];value=m3[i2]||"";encoded=-1!==["user","password"].indexOf(key2);uri[key2]=encoded?decodeURIComponent(value):value}uri[qName]={};uri[keys2[12]].replace(qParser,(function($0,$1,$2){$1&&(uri[qName][$1]=$2)}));return uri}function scopeEval(source2,scope3){var key2,keys3=[],values=[];for(key2 in scope3)if(Object.prototype.hasOwnProperty.call(scope3,key2)){keys3.push(key2);values.push(scope3[key2])}keys3.push(source2);return Function.apply(null,keys3).apply(null,values)}function upsert2(db,docId,diffFun){return db.get(docId).catch((function(err2){if(404!==err2.status)throw err2;return{}})).then((function(doc){var docRev=doc._rev,newDoc=diffFun(doc);if(!newDoc)return{updated:!1,rev:docRev};newDoc._id=docId;newDoc._rev=docRev;return function tryAndPut(db,doc,diffFun){return db.put(doc).then((function(res2){return{updated:!0,rev:res2.rev}}),(function(err2){if(409!==err2.status)throw err2;return upsert2(db,doc._id,diffFun)}))}(db,newDoc,diffFun)}))}function rev2(doc,deterministic_revs){if(!deterministic_revs)return v4_default2().replace(/-/g,"").toLowerCase();var mutateableDoc=Object.assign({},doc);delete mutateableDoc._rev_tree;return function stringMd5(string){return import_spark_md5.default.hash(string)}(JSON.stringify(mutateableDoc))}function winningRev(metadata){for(var winningId,winningPos,winningDeleted,node,tree,branches,pos,i2,len,deleted,id,toVisit=metadata.rev_tree.slice();node=toVisit.pop();){branches=(tree=node.ids)[2];pos=node.pos;if(branches.length)for(i2=0,len=branches.length;i2<len;i2++)toVisit.push({pos:pos+1,ids:branches[i2]});else{deleted=!!tree[1].deleted;id=tree[0];if(!winningId||(winningDeleted!==deleted?winningDeleted:winningPos!==pos?winningPos<pos:winningId<id)){winningId=id;winningPos=pos;winningDeleted=deleted}}}return winningPos+"-"+winningId}function traverseRevTree(revs,callback){for(var node,pos,tree,branches,newCtx,i2,len,toVisit=revs.slice();node=toVisit.pop();){pos=node.pos;newCtx=callback(0===(branches=(tree=node.ids)[2]).length,pos,tree[0],node.ctx,tree[1]);for(i2=0,len=branches.length;i2<len;i2++)toVisit.push({pos:pos+1,ids:branches[i2],ctx:newCtx})}}function sortByPos(a2,b3){return a2.pos-b3.pos}function collectLeaves(revs){var i2,len,leaves=[];traverseRevTree(revs,(function(isLeaf,pos,id,acc,opts){isLeaf&&leaves.push({rev:pos+"-"+id,pos,opts})}));leaves.sort(sortByPos).reverse();for(i2=0,len=leaves.length;i2<len;i2++)delete leaves[i2].pos;return leaves}function collectConflicts(metadata){var i2,len,leaf,win=winningRev(metadata),leaves=collectLeaves(metadata.rev_tree),conflicts=[];for(i2=0,len=leaves.length;i2<len;i2++)(leaf=leaves[i2]).rev===win||leaf.opts.deleted||conflicts.push(leaf.rev);return conflicts}function compactTree(metadata){var revs=[];traverseRevTree(metadata.rev_tree,(function(isLeaf,pos,revHash,ctx,opts){if("available"===opts.status&&!isLeaf){revs.push(pos+"-"+revHash);opts.status="missing"}}));return revs}function findPathToLeaf(revs,targetRev){let path2=[];const toVisit=revs.slice();let node;for(;node=toVisit.pop();){const{pos,ids:tree}=node,rev3=`${pos}-${tree[0]}`,branches=tree[2];path2.push(rev3);if(rev3===targetRev){if(0!==branches.length)throw new Error("The requested revision is not a leaf");return path2.reverse()}(0===branches.length||branches.length>1)&&(path2=[]);for(let i2=0,len=branches.length;i2<len;i2++)toVisit.push({pos:pos+1,ids:branches[i2]})}if(0===path2.length)throw new Error("The requested revision does not exist");return path2.reverse()}function rootToLeaf(revs){for(var node,pos,tree,id,opts,branches,isLeaf,history,i2,len,paths=[],toVisit=revs.slice();node=toVisit.pop();){pos=node.pos;id=(tree=node.ids)[0];opts=tree[1];isLeaf=0===(branches=tree[2]).length;(history=node.history?node.history.slice():[]).push({id,opts});isLeaf&&paths.push({pos:pos+1-history.length,ids:history});for(i2=0,len=branches.length;i2<len;i2++)toVisit.push({pos:pos+1,ids:branches[i2],history})}return paths.reverse()}function sortByPos$1(a2,b3){return a2.pos-b3.pos}function insertSorted(arr,item,comparator){var idx2=function binarySearch(arr,item,comparator){for(var mid,low=0,high=arr.length;low<high;)comparator(arr[mid=low+high>>>1],item)<0?low=mid+1:high=mid;return low}(arr,item,comparator);arr.splice(idx2,0,item)}function pathToTree(path2,numStemmed){var root9,leaf,i2,len,node,currentLeaf;for(i2=numStemmed,len=path2.length;i2<len;i2++){currentLeaf=[(node=path2[i2]).id,node.opts,[]];if(leaf){leaf[2].push(currentLeaf);leaf=currentLeaf}else root9=leaf=currentLeaf}return root9}function compareTree(a2,b3){return a2[0]<b3[0]?-1:1}function mergeTree(in_tree1,in_tree2){for(var item,tree1,tree2,i2,merged,j2,queue2=[{tree1:in_tree1,tree2:in_tree2}],conflicts=!1;queue2.length>0;){tree1=(item=queue2.pop()).tree1;tree2=item.tree2;(tree1[1].status||tree2[1].status)&&(tree1[1].status="available"===tree1[1].status||"available"===tree2[1].status?"available":"missing");for(i2=0;i2<tree2[2].length;i2++)if(tree1[2][0]){merged=!1;for(j2=0;j2<tree1[2].length;j2++)if(tree1[2][j2][0]===tree2[2][i2][0]){queue2.push({tree1:tree1[2][j2],tree2:tree2[2][i2]});merged=!0}if(!merged){conflicts="new_branch";insertSorted(tree1[2],tree2[2][i2],compareTree)}}else{conflicts="new_leaf";tree1[2][0]=tree2[2][i2]}}return{conflicts,tree:in_tree1}}function doMerge(tree,path2,dontExpand){var res2,i2,len,branch2,t1,t22,diff,candidateParents,trees,item,elements,j2,elementsLen,el,restree=[],conflicts=!1,merged=!1;if(!tree.length)return{tree:[path2],conflicts:"new_leaf"};for(i2=0,len=tree.length;i2<len;i2++)if((branch2=tree[i2]).pos===path2.pos&&branch2.ids[0]===path2.ids[0]){res2=mergeTree(branch2.ids,path2.ids);restree.push({pos:branch2.pos,ids:res2.tree});conflicts=conflicts||res2.conflicts;merged=!0}else if(!0!==dontExpand){t1=branch2.pos<path2.pos?branch2:path2;diff=(t22=branch2.pos<path2.pos?path2:branch2).pos-t1.pos;candidateParents=[];(trees=[]).push({ids:t1.ids,diff,parent:null,parentIdx:null});for(;trees.length>0;)if(0!==(item=trees.pop()).diff)for(j2=0,elementsLen=(elements=item.ids[2]).length;j2<elementsLen;j2++)trees.push({ids:elements[j2],diff:item.diff-1,parent:item.ids,parentIdx:j2});else item.ids[0]===t22.ids[0]&&candidateParents.push(item);if(el=candidateParents[0]){res2=mergeTree(el.ids,t22.ids);el.parent[2][el.parentIdx]=res2.tree;restree.push({pos:t1.pos,ids:t1.ids});conflicts=conflicts||res2.conflicts;merged=!0}else restree.push(branch2)}else restree.push(branch2);merged||restree.push(path2);restree.sort(sortByPos$1);return{tree:restree,conflicts:conflicts||"internal_node"}}function merge(tree,path2,depth){var newTree=doMerge(tree,path2),stemmed=function stem(tree,depth){var stemmedRevs,result,i2,len,path2,stemmed,node,numStemmed,s2,rev3,paths=rootToLeaf(tree);for(i2=0,len=paths.length;i2<len;i2++){if((stemmed=(path2=paths[i2]).ids).length>depth){stemmedRevs||(stemmedRevs={});numStemmed=stemmed.length-depth;node={pos:path2.pos+numStemmed,ids:pathToTree(stemmed,numStemmed)};for(s2=0;s2<numStemmed;s2++){rev3=path2.pos+s2+"-"+stemmed[s2].id;stemmedRevs[rev3]=!0}}else node={pos:path2.pos,ids:pathToTree(stemmed,0)};result=result?doMerge(result,node,!0).tree:[node]}stemmedRevs&&traverseRevTree(result,(function(isLeaf,pos,revHash){delete stemmedRevs[pos+"-"+revHash]}));return{tree:result,revs:stemmedRevs?Object.keys(stemmedRevs):[]}}(newTree.tree,depth);return{tree:stemmed.tree,stemmedRevs:stemmed.revs,conflicts:newTree.conflicts}}function removeLeafFromRevTree(tree,leafRev){return tree.flatMap((path2=>{path2=function removeLeafFromPath(path2,leafRev){const tree=clone2(path2),toVisit=[tree];let node;for(;node=toVisit.pop();){const{pos,ids:[id,,branches],parent}=node;if(0===branches.length&&`${pos}-${id}`===leafRev){if(!parent)return null;parent.ids[2]=parent.ids[2].filter((function(branchNode){return branchNode[0]!==id}));return tree}for(let i2=0,len=branches.length;i2<len;i2++)toVisit.push({pos:pos+1,ids:branches[i2],parent:node})}return tree}(path2,leafRev);return path2?[path2]:[]}))}function getTrees(node){return node.ids}function isDeleted(metadata,rev3){var id,toVisit,tree;rev3||(rev3=winningRev(metadata));id=rev3.substring(rev3.indexOf("-")+1);toVisit=metadata.rev_tree.map(getTrees);for(;tree=toVisit.pop();){if(tree[0]===id)return!!tree[1].deleted;toVisit=toVisit.concat(tree[2])}}function isLocalId(id){return"string"==typeof id&&id.startsWith("_local/")}function latest(rev3,metadata){for(var node,pos,tree,id,opts,branches,isLeaf,history,i2,len,historyNode,j2,l2,toVisit=metadata.rev_tree.slice();node=toVisit.pop();){pos=node.pos;id=(tree=node.ids)[0];opts=tree[1];isLeaf=0===(branches=tree[2]).length;(history=node.history?node.history.slice():[]).push({id,pos,opts});if(isLeaf)for(i2=0,len=history.length;i2<len;i2++)if((historyNode=history[i2]).pos+"-"+historyNode.id===rev3)return pos+"-"+id;for(j2=0,l2=branches.length;j2<l2;j2++)toVisit.push({pos:pos+1,ids:branches[j2],history})}throw new Error("Unable to resolve latest revision for id "+metadata.id+", rev "+rev3)}function collate(a2,b3){var ai2,bi2;if(a2===b3)return 0;a2=normalizeKey(a2);b3=normalizeKey(b3);if((ai2=collationIndex(a2))-(bi2=collationIndex(b3))!=0)return ai2-bi2;switch(typeof a2){case"number":return a2-b3;case"boolean":return a2<b3?-1:1;case"string":return function stringCollate(a2,b3){return a2===b3?0:a2>b3?1:-1}(a2,b3)}return Array.isArray(a2)?function arrayCollate(a2,b3){var len,i2,sort;for(len=Math.min(a2.length,b3.length),i2=0;i2<len;i2++)if(0!==(sort=collate(a2[i2],b3[i2])))return sort;return a2.length===b3.length?0:a2.length>b3.length?1:-1}(a2,b3):function objectCollate(a2,b3){var ak2,bk2,len,i2,sort;for(ak2=Object.keys(a2),bk2=Object.keys(b3),len=Math.min(ak2.length,bk2.length),i2=0;i2<len;i2++){if(0!==(sort=collate(ak2[i2],bk2[i2])))return sort;if(0!==(sort=collate(a2[ak2[i2]],b3[bk2[i2]])))return sort}return ak2.length===bk2.length?0:ak2.length>bk2.length?1:-1}(a2,b3)}function normalizeKey(key2){var origKey,len,i2,k2,val2;switch(typeof key2){case"undefined":return null;case"number":return key2===1/0||key2===-1/0||isNaN(key2)?null:key2;case"object":origKey=key2;if(Array.isArray(key2)){len=key2.length;key2=new Array(len);for(i2=0;i2<len;i2++)key2[i2]=normalizeKey(origKey[i2])}else{if(key2 instanceof Date)return key2.toJSON();if(null!==key2){key2={};for(k2 in origKey)Object.prototype.hasOwnProperty.call(origKey,k2)&&void 0!==(val2=origKey[k2])&&(key2[k2]=normalizeKey(val2))}}}return key2}function toIndexableString(key2){return collationIndex(key2=normalizeKey(key2))+SEP+function indexify(key2){var isArray2,arr,i2,len,result,objKey;if(null!==key2)switch(typeof key2){case"boolean":return key2?1:0;case"number":return function numToIndexableString(num2){var expFormat,magnitude,neg,result,magString,factor,factorStr;if(0===num2)return"1";expFormat=num2.toExponential().split(/e\+?/),magnitude=parseInt(expFormat[1],10),result=(neg=num2<0)?"0":"2",magString=function padLeft(str,padWith,upToLength){return function pad(str,padWith,upToLength){for(var padding="",targetLength=upToLength-str.length;padding.length<targetLength;)padding+=padWith;return padding}(str,padWith,upToLength)+str}(((neg?-magnitude:magnitude)-MIN_MAGNITUDE).toString(),"0",MAGNITUDE_DIGITS);result+=SEP+magString;factor=Math.abs(parseFloat(expFormat[0]));neg&&(factor=10-factor);factorStr=(factorStr=factor.toFixed(20)).replace(/\.?0+$/,"");return result+(SEP+factorStr)}(key2);case"string":return key2.replace(/\u0002/g,"").replace(/\u0001/g,"").replace(/\u0000/g,"");case"object":i2=-1;len=(arr=(isArray2=Array.isArray(key2))?key2:Object.keys(key2)).length;result="";if(isArray2)for(;++i2<len;)result+=toIndexableString(arr[i2]);else for(;++i2<len;)result+=toIndexableString(objKey=arr[i2])+toIndexableString(key2[objKey]);return result}return""}(key2)+"\0"}function parseNumber2(str,i2){var num2,neg,numAsString,magAsString,magnitude,ch4,originalIdx=i2;if("1"===str[i2]){num2=0;i2++}else{neg="0"===str[i2];i2++;numAsString="";magAsString=str.substring(i2,i2+MAGNITUDE_DIGITS);magnitude=parseInt(magAsString,10)+MIN_MAGNITUDE;neg&&(magnitude=-magnitude);i2+=MAGNITUDE_DIGITS;for(;"\0"!==(ch4=str[i2]);){numAsString+=ch4;i2++}num2=1===(numAsString=numAsString.split(".")).length?parseInt(numAsString,10):parseFloat(numAsString[0]+"."+numAsString[1]);neg&&(num2-=10);0!==magnitude&&(num2=parseFloat(num2+"e"+magnitude))}return{num:num2,length:i2-originalIdx}}function pop2(stack2,metaStack){var lastMetaElement,element2,lastElementIndex,obj=stack2.pop();if(metaStack.length){if(obj===(lastMetaElement=metaStack[metaStack.length-1]).element){metaStack.pop();lastMetaElement=metaStack[metaStack.length-1]}element2=lastMetaElement.element;lastElementIndex=lastMetaElement.index;Array.isArray(element2)?element2.push(obj):lastElementIndex===stack2.length-2?element2[stack2.pop()]=obj:stack2.push(obj)}}function collationIndex(x2){var idx2=["boolean","number","string","object"].indexOf(typeof x2);return~idx2?null===x2?1:Array.isArray(x2)?5:idx2<3?idx2+2:idx2+3:Array.isArray(x2)?5:void 0}function getFieldFromDoc(doc,parsedField){var i2,len,value=doc;for(i2=0,len=parsedField.length;i2<len&&(value=value[parsedField[i2]]);i2++);return value}function setFieldInDoc(doc,parsedField,value){var i2,len,elem;for(i2=0,len=parsedField.length;i2<len-1;i2++)doc=doc[elem=parsedField[i2]]=doc[elem]||{};doc[parsedField[len-1]]=value}function compare2(left,right){return left<right?-1:left>right?1:0}function parseField(fieldName){var i2,len,ch4,fields=[],current="";for(i2=0,len=fieldName.length;i2<len;i2++){ch4=fieldName[i2];if(i2>0&&"\\"===fieldName[i2-1]&&("$"===ch4||"."===ch4))current=current.substring(0,current.length-1)+ch4;else if("."===ch4){fields.push(current);current=""}else current+=ch4}fields.push(current);return fields}function isCombinationalField(field){return combinationFields.indexOf(field)>-1}function getKey2(obj){return Object.keys(obj)[0]}function getValue(obj){return obj[getKey2(obj)]}function mergeAndedSelectors(selectors){var res2={},first={$or:!0,$nor:!0};selectors.forEach((function(selector){Object.keys(selector).forEach((function(field){var entries2,fieldMatchers,matcher=selector[field];"object"!=typeof matcher&&(matcher={$eq:matcher});if(isCombinationalField(field))if(matcher instanceof Array){if(first[field]){first[field]=!1;res2[field]=matcher;return}entries2=[];res2[field].forEach((function(existing){Object.keys(matcher).forEach((function(key2){var m3=matcher[key2],longest=Math.max(Object.keys(existing).length,Object.keys(m3).length),merged=mergeAndedSelectors([existing,m3]);Object.keys(merged).length<=longest||entries2.push(merged)}))}));res2[field]=entries2}else res2[field]=mergeAndedSelectors([matcher]);else{fieldMatchers=res2[field]=res2[field]||{};Object.keys(matcher).forEach((function(operator){var value=matcher[operator];if("$gt"===operator||"$gte"===operator)return function mergeGtGte(operator,value,fieldMatchers){if(void 0===fieldMatchers.$eq)if(void 0!==fieldMatchers.$gte){if("$gte"===operator)value>fieldMatchers.$gte&&(fieldMatchers.$gte=value);else if(value>=fieldMatchers.$gte){delete fieldMatchers.$gte;fieldMatchers.$gt=value}}else if(void 0!==fieldMatchers.$gt)if("$gte"===operator){if(value>fieldMatchers.$gt){delete fieldMatchers.$gt;fieldMatchers.$gte=value}}else value>fieldMatchers.$gt&&(fieldMatchers.$gt=value);else fieldMatchers[operator]=value}(operator,value,fieldMatchers);if("$lt"===operator||"$lte"===operator)return function mergeLtLte(operator,value,fieldMatchers){if(void 0===fieldMatchers.$eq)if(void 0!==fieldMatchers.$lte){if("$lte"===operator)value<fieldMatchers.$lte&&(fieldMatchers.$lte=value);else if(value<=fieldMatchers.$lte){delete fieldMatchers.$lte;fieldMatchers.$lt=value}}else if(void 0!==fieldMatchers.$lt)if("$lte"===operator){if(value<fieldMatchers.$lt){delete fieldMatchers.$lt;fieldMatchers.$lte=value}}else value<fieldMatchers.$lt&&(fieldMatchers.$lt=value);else fieldMatchers[operator]=value}(operator,value,fieldMatchers);if("$ne"===operator)return function mergeNe(value,fieldMatchers){"$ne"in fieldMatchers?fieldMatchers.$ne.push(value):fieldMatchers.$ne=[value]}(value,fieldMatchers);if("$eq"===operator)return function mergeEq(value,fieldMatchers){delete fieldMatchers.$gt;delete fieldMatchers.$gte;delete fieldMatchers.$lt;delete fieldMatchers.$lte;delete fieldMatchers.$ne;fieldMatchers.$eq=value}(value,fieldMatchers);if("$regex"===operator)return function mergeRegex(value,fieldMatchers){"$regex"in fieldMatchers?fieldMatchers.$regex.push(value):fieldMatchers.$regex=[value]}(value,fieldMatchers);fieldMatchers[operator]=value}))}}))}));return res2}function mergeAndedSelectorsNested(obj){var prop2,i2,value;for(prop2 in obj){if(Array.isArray(obj))for(i2 in obj)obj[i2].$and&&(obj[i2]=mergeAndedSelectors(obj[i2].$and));"object"==typeof(value=obj[prop2])&&mergeAndedSelectorsNested(value)}return obj}function isAndInSelector(obj,isAnd){var prop2,value;for(prop2 in obj){"$and"===prop2&&(isAnd=!0);"object"==typeof(value=obj[prop2])&&(isAnd=isAndInSelector(value,isAnd))}return isAnd}function massageSelector(input){var fields,i2,field,matcher,result=clone2(input);isAndInSelector(result,!1)&&"$and"in(result=mergeAndedSelectorsNested(result))&&(result=mergeAndedSelectors(result.$and));["$or","$nor"].forEach((function(orOrNor){orOrNor in result&&result[orOrNor].forEach((function(subSelector){var i3,field2,matcher2,fields2=Object.keys(subSelector);for(i3=0;i3<fields2.length;i3++)"object"==typeof(matcher2=subSelector[field2=fields2[i3]])&&null!==matcher2||(subSelector[field2]={$eq:matcher2})}))}));"$not"in result&&(result.$not=mergeAndedSelectors([result.$not]));fields=Object.keys(result);for(i2=0;i2<fields.length;i2++){field=fields[i2];"object"==typeof(matcher=result[field])&&null!==matcher||(matcher={$eq:matcher});result[field]=matcher}normalizeArrayOperators(result);return result}function normalizeArrayOperators(selector){Object.keys(selector).forEach((function(field){var matcher=selector[field];Array.isArray(matcher)?matcher.forEach((function(matcherItem){matcherItem&&"object"==typeof matcherItem&&normalizeArrayOperators(matcherItem)})):"$ne"===field?selector.$ne=[matcher]:"$regex"===field?selector.$regex=[matcher]:matcher&&"object"==typeof matcher&&normalizeArrayOperators(matcher)}))}function filterInMemoryFields(rows,requestDef,inMemoryFields){var fieldSorter,skip2,limit;rows=rows.filter((function(row){return rowFilter(row.doc,requestDef.selector,inMemoryFields)}));if(requestDef.sort){fieldSorter=function createFieldSorter(sort){function getFieldValuesAsArray(doc){return sort.map((function(sorting){var parsedField=parseField(getKey2(sorting));return getFieldFromDoc(doc,parsedField)}))}return function(aRow,bRow){var collation=collate(getFieldValuesAsArray(aRow.doc),getFieldValuesAsArray(bRow.doc));return 0!==collation?collation:compare2(aRow.doc._id,bRow.doc._id)}}(requestDef.sort);rows=rows.sort(fieldSorter);"string"!=typeof requestDef.sort[0]&&"desc"===getValue(requestDef.sort[0])&&(rows=rows.reverse())}if("limit"in requestDef||"skip"in requestDef){skip2=requestDef.skip||0;limit=("limit"in requestDef?requestDef.limit:rows.length)+skip2;rows=rows.slice(skip2,limit)}return rows}function rowFilter(doc,selector,inMemoryFields){return inMemoryFields.every((function(field){var matcher=selector[field],parsedField=parseField(field),docFieldValue=getFieldFromDoc(doc,parsedField);return isCombinationalField(field)?function matchCominationalSelector(field,matcher,doc){return"$or"===field?matcher.some((function(orMatchers){return rowFilter(doc,orMatchers,Object.keys(orMatchers))})):"$not"===field?!rowFilter(doc,matcher,Object.keys(matcher)):!matcher.find((function(orMatchers){return rowFilter(doc,orMatchers,Object.keys(orMatchers))}))}(field,matcher,doc):matchSelector(matcher,doc,parsedField,docFieldValue)}))}function matchSelector(matcher,doc,parsedField,docFieldValue){return!matcher||("object"==typeof matcher?Object.keys(matcher).every((function(maybeUserOperator){var subParsedField,subDocFieldValue,userValue=matcher[maybeUserOperator];if(0===maybeUserOperator.indexOf("$"))return match2(maybeUserOperator,doc,userValue,parsedField,docFieldValue);subParsedField=parseField(maybeUserOperator);if(void 0===docFieldValue&&"object"!=typeof userValue&&subParsedField.length>0)return!1;subDocFieldValue=getFieldFromDoc(docFieldValue,subParsedField);return"object"==typeof userValue?matchSelector(userValue,doc,parsedField,subDocFieldValue):match2("$eq",doc,userValue,subParsedField,subDocFieldValue)})):matcher===docFieldValue)}function match2(userOperator,doc,userValue,parsedField,docFieldValue){if(!matchers[userOperator])throw new Error('unknown operator "'+userOperator+'" - should be one of $eq, $lte, $lt, $gt, $gte, $exists, $ne, $in, $nin, $size, $mod, $regex, $elemMatch, $type, $allMatch or $all');return matchers[userOperator](doc,userValue,parsedField,docFieldValue)}function fieldExists(docFieldValue){return null!=docFieldValue}function fieldIsNotUndefined(docFieldValue){return void 0!==docFieldValue}function arrayContainsValue(docFieldValue,userValue){return userValue.some((function(val2){return docFieldValue instanceof Array?docFieldValue.some((function(docFieldValueItem){return 0===collate(val2,docFieldValueItem)})):0===collate(val2,docFieldValue)}))}function matchesSelector(doc,selector){var rowsMatched;if("object"!=typeof selector)throw new Error("Selector error: expected a JSON object");return(rowsMatched=filterInMemoryFields([{doc}],{selector:selector=massageSelector(selector)},Object.keys(selector)))&&1===rowsMatched.length}function validate4(opts,callback){if(opts.selector&&opts.filter&&"_selector"!==opts.filter){var filterName="string"==typeof opts.filter?opts.filter:"function";return callback(new Error('selector invalid for filter "'+filterName+'"'))}callback()}function normalize(opts){opts.view&&!opts.filter&&(opts.filter="_view");opts.selector&&!opts.filter&&(opts.filter="_selector");opts.filter&&"string"==typeof opts.filter&&("_view"===opts.filter?opts.view=normalizeDesignDocFunctionName(opts.view):opts.filter=normalizeDesignDocFunctionName(opts.filter))}function shouldFilter(changesHandler,opts){return opts.filter&&"string"==typeof opts.filter&&!opts.doc_ids&&!isRemote(changesHandler.db)}function filter2(changesHandler,opts){var err2,viewName,filterName,callback=opts.complete;if("_view"===opts.filter){if(!opts.view||"string"!=typeof opts.view){err2=createError(BAD_REQUEST,"`view` filter parameter not found or invalid.");return callback(err2)}viewName=parseDesignDocFunctionName(opts.view);changesHandler.db.get("_design/"+viewName[0],(function(err3,ddoc){if(changesHandler.isCancelled)return callback(null,{status:"cancelled"});if(err3)return callback(generateErrorFromResponse(err3));var mapFun=ddoc&&ddoc.views&&ddoc.views[viewName[1]]&&ddoc.views[viewName[1]].map;if(!mapFun)return callback(createError(MISSING_DOC,ddoc.views?"missing json key: "+viewName[1]:"missing json key: views"));opts.filter=function evalView(input){return scopeEval(["return function(doc) {",' "use strict";'," var emitted = false;"," var emit = function (a, b) {"," emitted = true;"," };"," var view = "+input+";"," view(doc);"," if (emitted) {"," return true;"," }","};"].join("\n"),{})}(mapFun);changesHandler.doChanges(opts)}))}else if(opts.selector){opts.filter=function(doc){return matchesSelector(doc,opts.selector)};changesHandler.doChanges(opts)}else{filterName=parseDesignDocFunctionName(opts.filter);changesHandler.db.get("_design/"+filterName[0],(function(err3,ddoc){if(changesHandler.isCancelled)return callback(null,{status:"cancelled"});if(err3)return callback(generateErrorFromResponse(err3));var filterFun=ddoc&&ddoc.filters&&ddoc.filters[filterName[1]];if(!filterFun)return callback(createError(MISSING_DOC,ddoc&&ddoc.filters?"missing json key: "+filterName[1]:"missing json key: filters"));opts.filter=function evalFilter(input){return scopeEval('"use strict";\nreturn '+input+";",{})}(filterFun);changesHandler.doChanges(opts)}))}}function processChange(doc,metadata,opts){var change,changeList=[{rev:doc._rev}];"all_docs"===opts.style&&(changeList=collectLeaves(metadata.rev_tree).map((function(x2){return{rev:x2.rev}})));change={id:metadata.id,changes:changeList,doc};isDeleted(metadata,doc._rev)&&(change.deleted=!0);if(opts.conflicts){change.doc._conflicts=collectConflicts(metadata);change.doc._conflicts.length||delete change.doc._conflicts}return change}function yankError(callback,docId){return function(err2,results){if(err2||results[0]&&results[0].error){(err2=err2||results[0]).docId=docId;callback(err2)}else callback(null,results.length?results[0]:results)}}function compareByIdThenRev(a2,b3){return a2._id===b3._id?(a2._revisions?a2._revisions.start:0)-(b3._revisions?b3._revisions.start:0):a2._id<b3._id?-1:1}function doNextCompaction(self3){var task=self3._compactionQueue[0],opts=task.opts,callback=task.callback;self3.get("_local/compaction").catch((function(){return!1})).then((function(doc){doc&&doc.last_seq&&(opts.last_seq=doc.last_seq);self3._compact(opts,(function(err2,res2){err2?callback(err2):callback(null,res2);nextTick2((function(){self3._compactionQueue.shift();self3._compactionQueue.length&&doNextCompaction(self3)}))}))}))}function isNotSingleDoc(doc){return null===doc||"object"!=typeof doc||Array.isArray(doc)}function isValidRev(rev$$1){return"string"==typeof rev$$1&&validRevRegex.test(rev$$1)}function createClass(parent,init3){let klass=function(...args){if(!(this instanceof klass))return new klass(...args);init3.apply(this,args)};(function inherits(A2,B2){A2.prototype=Object.create(B2.prototype,{constructor:{value:A2}})})(klass,parent);return klass}function safeJsonStringify(json){try{return JSON.stringify(json)}catch(e3){return import_vuvuzela.default.stringify(json)}}function appendBlob2(buffer,blob,start,end,callback){(start>0||end<blob.size)&&(blob=blob.slice(start,end));readAsArrayBuffer(blob,(function(arrayBuffer){buffer.append(arrayBuffer);callback()}))}function appendString2(buffer,string,start,end,callback){(start>0||end<string.length)&&(string=string.substring(start,end));buffer.appendBinary(string);callback()}function binaryMd52(data,callback){function next2(){setImmediateShim2(loadNextChunk)}function done(){var base64=function rawToBase642(raw){return thisBtoa(raw)}(buffer.end(!0));callback(base64);buffer.destroy()}function loadNextChunk(){var start=currentChunk*chunkSize2;currentChunk++;append2(buffer,data,start,start+chunkSize2,currentChunk<chunks?next2:done)}var inputIsString="string"==typeof data,len=inputIsString?data.length:data.size,chunkSize2=Math.min(MD5_CHUNK_SIZE2,len),chunks=Math.ceil(len/chunkSize2),currentChunk=0,buffer=inputIsString?new import_spark_md52.default:new import_spark_md52.default.ArrayBuffer,append2=inputIsString?appendString2:appendBlob2;loadNextChunk()}function checkBlobSupport(txn,store,docIdOrCreateDoc){return new Promise((function(resolve){var blob$$1=createBlob2([""]);let req;if("function"==typeof docIdOrCreateDoc){const doc=docIdOrCreateDoc(blob$$1);req=txn.objectStore(store).put(doc)}else{const docId=docIdOrCreateDoc;req=txn.objectStore(store).put(blob$$1,docId)}req.onsuccess=function(){var matchedChrome=navigator.userAgent.match(/Chrome\/(\d+)/),matchedEdge=navigator.userAgent.match(/Edge\//);resolve(matchedEdge||!matchedChrome||parseInt(matchedChrome[1],10)>=43)};req.onerror=txn.onabort=function(e3){e3.preventDefault();e3.stopPropagation();resolve(!1)}})).catch((function(){return!1}))}function toObject(array){return array.reduce((function(obj,item){obj[item]=!0;return obj}),{})}function parseRevisionInfo(rev$$1){var idx2,left,right;if(!/^\d+-/.test(rev$$1))return createError(INVALID_REV);idx2=rev$$1.indexOf("-");left=rev$$1.substring(0,idx2);right=rev$$1.substring(idx2+1);return{prefix:parseInt(left,10),id:right}}function parseDoc(doc,newEdits,dbOpts){var nRevNum,newRevId,revInfo,opts,result,key2,specialKey,error;dbOpts||(dbOpts={deterministic_revs:!0});opts={status:"available"};doc._deleted&&(opts.deleted=!0);if(newEdits){doc._id||(doc._id=uuid());newRevId=rev2(doc,dbOpts.deterministic_revs);if(doc._rev){if((revInfo=parseRevisionInfo(doc._rev)).error)return revInfo;doc._rev_tree=[{pos:revInfo.prefix,ids:[revInfo.id,{status:"missing"},[[newRevId,opts,[]]]]}];nRevNum=revInfo.prefix+1}else{doc._rev_tree=[{pos:1,ids:[newRevId,opts,[]]}];nRevNum=1}}else{if(doc._revisions){doc._rev_tree=function makeRevTreeFromRevisions(revisions,opts){var i2,len,pos=revisions.start-revisions.ids.length+1,revisionIds=revisions.ids,ids=[revisionIds[0],opts,[]];for(i2=1,len=revisionIds.length;i2<len;i2++)ids=[revisionIds[i2],{status:"missing"},[ids]];return[{pos,ids}]}(doc._revisions,opts);nRevNum=doc._revisions.start;newRevId=doc._revisions.ids[0]}if(!doc._rev_tree){if((revInfo=parseRevisionInfo(doc._rev)).error)return revInfo;nRevNum=revInfo.prefix;newRevId=revInfo.id;doc._rev_tree=[{pos:nRevNum,ids:[newRevId,opts,[]]}]}}invalidIdError(doc._id);doc._rev=nRevNum+"-"+newRevId;result={metadata:{},data:{}};for(key2 in doc)if(Object.prototype.hasOwnProperty.call(doc,key2)){if((specialKey="_"===key2[0])&&!reservedWords[key2]){(error=createError(DOC_VALIDATION,key2)).message=DOC_VALIDATION.message+": "+key2;throw error}specialKey&&!dataWords[key2]?result.metadata[key2.slice(1)]=doc[key2]:result.data[key2]=doc[key2]}return result}function preprocessAttachment(att,blobType,callback){if(att.stub)return callback();"string"==typeof att.data?function preprocessString(att,blobType,callback){var asBinary=function parseBase64(data){try{return thisAtob(data)}catch(e3){return{error:createError(BAD_ARG,"Attachment is not a valid base64 string")}}}(att.data);if(asBinary.error)return callback(asBinary.error);att.length=asBinary.length;att.data="blob"===blobType?binStringToBluffer(asBinary,att.content_type):"base64"===blobType?thisBtoa(asBinary):asBinary;binaryMd52(asBinary,(function(result){att.digest="md5-"+result;callback()}))}(att,blobType,callback):function preprocessBlob(att,blobType,callback){binaryMd52(att.data,(function(md5){att.digest="md5-"+md5;att.length=att.data.size||att.data.length||0;"binary"===blobType?blobToBinaryString(att.data,(function(binString){att.data=binString;callback()})):"base64"===blobType?blobToBase64(att.data,(function(b64){att.data=b64;callback()})):callback()}))}(att,blobType,callback)}function idbError(callback){return function(evt){var message="unknown_error";evt.target&&evt.target.error&&(message=evt.target.error.name||evt.target.error.message);callback(createError(IDB_ERROR,message,evt.type))}}function encodeMetadata(metadata,winningRev$$1,deleted){return{data:safeJsonStringify(metadata),winningRev:winningRev$$1,deletedOrLocal:deleted?"1":"0",seq:metadata.seq,id:metadata.id}}function decodeMetadata(storedObject){if(!storedObject)return null;var metadata=function safeJsonParse(str){try{return JSON.parse(str)}catch(e3){return import_vuvuzela.default.parse(str)}}(storedObject.data);metadata.winningRev=storedObject.winningRev;metadata.deleted="1"===storedObject.deletedOrLocal;metadata.seq=storedObject.seq;return metadata}function decodeDoc(doc){if(!doc)return doc;var idx2=doc._doc_id_rev.lastIndexOf(":");doc._id=doc._doc_id_rev.substring(0,idx2-1);doc._rev=doc._doc_id_rev.substring(idx2+1);delete doc._doc_id_rev;return doc}function readBlobData(body,type,asBlob,callback){asBlob?callback(body?"string"!=typeof body?body:b64ToBluffer(body,type):createBlob2([""],{type})):body?"string"!=typeof body?readAsBinaryString(body,(function(binary){callback(thisBtoa(binary))})):callback(body):callback("")}function fetchAttachmentsIfNecessary(doc,opts,txn,cb2){function checkDone(){++numDone===attachments.length&&cb2&&cb2()}var numDone,attachments=Object.keys(doc._attachments||{});if(!attachments.length)return cb2&&cb2();numDone=0;attachments.forEach((function(att){if(opts.attachments&&opts.include_docs)(function fetchAttachment(doc2,att){var attObj=doc2._attachments[att],digest=attObj.digest;txn.objectStore(ATTACH_STORE).get(digest).onsuccess=function(e3){attObj.body=e3.target.result.body;checkDone()}})(doc,att);else{doc._attachments[att].stub=!0;checkDone()}}))}function postProcessAttachments(results,asBlob){return Promise.all(results.map((function(row){if(row.doc&&row.doc._attachments){var attNames=Object.keys(row.doc._attachments);return Promise.all(attNames.map((function(att){var body,type,attObj=row.doc._attachments[att];if("body"in attObj){body=attObj.body;type=attObj.content_type;return new Promise((function(resolve){readBlobData(body,type,asBlob,(function(data){row.doc._attachments[att]=Object.assign(pick(attObj,["digest","content_type"]),{data});resolve()}))}))}})))}})))}function compactRevs(revs,docId,txn){function checkDone(){--count||function deleteOrphanedAttachments(){possiblyOrphanedDigests.length&&possiblyOrphanedDigests.forEach((function(digest){attAndSeqStore.index("digestSeq").count(IDBKeyRange.bound(digest+"::",digest+"::",!1,!1)).onsuccess=function(e3){e3.target.result||attStore.delete(digest)}}))}()}var possiblyOrphanedDigests=[],seqStore=txn.objectStore(BY_SEQ_STORE),attStore=txn.objectStore(ATTACH_STORE),attAndSeqStore=txn.objectStore(ATTACH_AND_SEQ_STORE),count=revs.length;revs.forEach((function(rev3){var index6=seqStore.index("_doc_id_rev"),key2=docId+"::"+rev3;index6.getKey(key2).onsuccess=function(e3){var seq=e3.target.result;if("number"!=typeof seq)return checkDone();seqStore.delete(seq);attAndSeqStore.index("seq").openCursor(IDBKeyRange.only(seq)).onsuccess=function(event2){var digest,cursor2=event2.target.result;if(cursor2){digest=cursor2.value.digestSeq.split("::")[0];possiblyOrphanedDigests.push(digest);attAndSeqStore.delete(cursor2.primaryKey);cursor2.continue()}else checkDone()}}}))}function openTransactionSafely(idb,stores,mode){try{return{txn:idb.transaction(stores,mode)}}catch(err2){return{error:err2}}}function idbBulkDocs(dbOpts,req,opts,api,idb,callback){function onAllDocsProcessed(){allDocsProcessed=!0;updateDocCountIfReady()}function updateDocCountIfReady(){if(metaDoc&&allDocsProcessed){metaDoc.docCount+=docCountDelta;metaStore.put(metaDoc)}}function complete(){if(!preconditionErrored){changesHandler$1.notify(api._meta.name);callback(null,results)}}function writeDoc(docInfo,winningRev$$1,winningRevIsDeleted,newRevIsDeleted,isUpdate,delta,resultsIdx,callback2){var doc2;docInfo.metadata.winningRev=winningRev$$1;docInfo.metadata.deleted=winningRevIsDeleted;(doc2=docInfo.data)._id=docInfo.metadata.id;doc2._rev=docInfo.metadata.rev;newRevIsDeleted&&(doc2._deleted=!0);if(doc2._attachments&&Object.keys(doc2._attachments).length)return function writeAttachments(docInfo,winningRev$$1,winningRevIsDeleted,isUpdate,resultsIdx,callback2){function collectResults(){numDone===attachments.length&&finishDoc(docInfo,winningRev$$1,winningRevIsDeleted,isUpdate,resultsIdx,callback2)}function attachmentSaved(){numDone++;collectResults()}var doc2=docInfo.data,numDone=0,attachments=Object.keys(doc2._attachments);attachments.forEach((function(key2){var data,att=docInfo.data._attachments[key2];if(att.stub){numDone++;collectResults()}else{data=att.data;delete att.data;att.revpos=parseInt(winningRev$$1,10);(function saveAttachment(digest,data,callback2){attachStore.count(digest).onsuccess=function(e3){var newAtt;if(e3.target.result)return callback2();newAtt={digest,body:data};attachStore.put(newAtt).onsuccess=callback2}})(att.digest,data,attachmentSaved)}}))}(docInfo,winningRev$$1,winningRevIsDeleted,isUpdate,resultsIdx,callback2);docCountDelta+=delta;updateDocCountIfReady();finishDoc(docInfo,winningRev$$1,winningRevIsDeleted,isUpdate,resultsIdx,callback2)}function finishDoc(docInfo,winningRev$$1,winningRevIsDeleted,isUpdate,resultsIdx,callback2){function afterPutDoc(e3){var metadataToStore,revsToDelete=docInfo.stemmedRevs||[];isUpdate&&api.auto_compaction&&(revsToDelete=revsToDelete.concat(compactTree(docInfo.metadata)));revsToDelete&&revsToDelete.length&&compactRevs(revsToDelete,docInfo.metadata.id,txn);metadata.seq=e3.target.result;metadataToStore=encodeMetadata(metadata,winningRev$$1,winningRevIsDeleted);docStore.put(metadataToStore).onsuccess=afterPutMetadata}function afterPutMetadata(){results[resultsIdx]={ok:!0,id:metadata.id,rev:metadata.rev};fetchedDocs.set(docInfo.metadata.id,docInfo.metadata);(function insertAttachmentMappings(docInfo,seq,callback2){function checkDone(){++attsAdded===attsToAdd.length&&callback2()}function add(att){var digest=docInfo.data._attachments[att].digest,req2=attachAndSeqStore.put({seq,digestSeq:digest+"::"+seq});req2.onsuccess=checkDone;req2.onerror=function(e3){e3.preventDefault();e3.stopPropagation();checkDone()}}var i3,attsAdded=0,attsToAdd=Object.keys(docInfo.data._attachments||{});if(!attsToAdd.length)return callback2();for(i3=0;i3<attsToAdd.length;i3++)add(attsToAdd[i3])})(docInfo,metadata.seq,callback2)}var putReq,doc2=docInfo.data,metadata=docInfo.metadata;doc2._doc_id_rev=metadata.id+"::"+metadata.rev;delete doc2._id;delete doc2._rev;(putReq=bySeqStore.put(doc2)).onsuccess=afterPutDoc;putReq.onerror=function afterPutDocError(e3){e3.preventDefault();e3.stopPropagation();bySeqStore.index("_doc_id_rev").getKey(doc2._doc_id_rev).onsuccess=function(e4){bySeqStore.put(doc2,e4.target.result).onsuccess=afterPutDoc}}}var txn,docStore,bySeqStore,attachStore,attachAndSeqStore,metaStore,docInfoError,metaDoc,i2,len,doc,allDocsProcessed,docCountDelta,results,fetchedDocs,preconditionErrored,blobType,docInfos=req.docs;for(i2=0,len=docInfos.length;i2<len;i2++)(doc=docInfos[i2])._id&&isLocalId(doc._id)||(doc=docInfos[i2]=parseDoc(doc,opts.new_edits,dbOpts)).error&&!docInfoError&&(docInfoError=doc);if(docInfoError)return callback(docInfoError);allDocsProcessed=!1;docCountDelta=0;results=new Array(docInfos.length);fetchedDocs=new Map;preconditionErrored=!1;blobType=api._meta.blobSupport?"blob":"base64";(function preprocessAttachments(docInfos,blobType,callback){function done(){docv++;docInfos.length===docv&&(overallErr?callback(overallErr):callback())}var docv,overallErr;if(!docInfos.length)return callback();docv=0;docInfos.forEach((function(docInfo){function processedAttachment(err2){overallErr=err2;++recv===attachments.length&&done()}var key2,attachments=docInfo.data&&docInfo.data._attachments?Object.keys(docInfo.data._attachments):[],recv=0;if(!attachments.length)return done();for(key2 in docInfo.data._attachments)Object.prototype.hasOwnProperty.call(docInfo.data._attachments,key2)&&preprocessAttachment(docInfo.data._attachments[key2],blobType,processedAttachment)}))})(docInfos,blobType,(function(err2){if(err2)return callback(err2);(function startTransaction(){var txnResult=openTransactionSafely(idb,[DOC_STORE,BY_SEQ_STORE,ATTACH_STORE,LOCAL_STORE,ATTACH_AND_SEQ_STORE,META_STORE],"readwrite");if(txnResult.error)return callback(txnResult.error);(txn=txnResult.txn).onabort=idbError(callback);txn.ontimeout=idbError(callback);txn.oncomplete=complete;docStore=txn.objectStore(DOC_STORE);bySeqStore=txn.objectStore(BY_SEQ_STORE);attachStore=txn.objectStore(ATTACH_STORE);attachAndSeqStore=txn.objectStore(ATTACH_AND_SEQ_STORE);(metaStore=txn.objectStore(META_STORE)).get(META_STORE).onsuccess=function(e3){metaDoc=e3.target.result;updateDocCountIfReady()};(function verifyAttachments(finish){var numDone,err2,digests=[];docInfos.forEach((function(docInfo){docInfo.data&&docInfo.data._attachments&&Object.keys(docInfo.data._attachments).forEach((function(filename){var att=docInfo.data._attachments[filename];att.stub&&digests.push(att.digest)}))}));if(!digests.length)return finish();numDone=0;digests.forEach((function(digest){(function verifyAttachment(digest,callback2){attachStore.get(digest).onsuccess=function(e3){if(e3.target.result)callback2();else{var err2=createError(MISSING_STUB,"unknown stub attachment with digest "+digest);err2.status=412;callback2(err2)}}})(digest,(function(attErr){attErr&&!err2&&(err2=attErr);(function checkDone(){++numDone===digests.length&&finish(err2)})()}))}))})((function(err2){if(err2){preconditionErrored=!0;return callback(err2)}(function fetchExistingDocs(){function checkDone(){++numFetched===docInfos.length&&function idbProcessDocs(){(function processDocs(revLimit,docInfos,api,fetchedDocs,tx,results,writeDoc,opts,overallCallback){function checkAllDocsDone(){++docsDone===docsToDo&&overallCallback&&overallCallback()}var newEdits,idsToDocs,docsDone,docsToDo;revLimit=revLimit||1e3;newEdits=opts.new_edits;idsToDocs=new Map;docsDone=0;docsToDo=docInfos.length;docInfos.forEach((function(currentDoc,resultsIdx){var fun,id;if(currentDoc._id&&isLocalId(currentDoc._id)){fun=currentDoc._deleted?"_removeLocal":"_putLocal";api[fun](currentDoc,{ctx:tx},(function(err2,res2){results[resultsIdx]=err2||res2;checkAllDocsDone()}))}else{id=currentDoc.metadata.id;if(idsToDocs.has(id)){docsToDo--;idsToDocs.get(id).push([currentDoc,resultsIdx])}else idsToDocs.set(id,[[currentDoc,resultsIdx]])}}));idsToDocs.forEach((function(docs,id){function docWritten(){++numDone<docs.length?nextDoc():checkAllDocsDone()}function nextDoc(){var merged,value=docs[numDone],currentDoc=value[0],resultsIdx=value[1];if(fetchedDocs.has(id))(function updateDoc(revLimit,prev,docInfo,results,i2,cb2,writeDoc,newEdits){var previousWinningRev,previouslyDeleted,deleted,isRoot,newDoc,merged,err2,newRev,winningRev$$1,winningRevIsDeleted,delta;if(function revExists(revs,rev3){for(var node,branches,i2,len,toVisit=revs.slice(),splitRev=rev3.split("-"),targetPos=parseInt(splitRev[0],10),targetId=splitRev[1];node=toVisit.pop();){if(node.pos===targetPos&&node.ids[0]===targetId)return!0;for(i2=0,len=(branches=node.ids[2]).length;i2<len;i2++)toVisit.push({pos:node.pos+1,ids:branches[i2]})}return!1}(prev.rev_tree,docInfo.metadata.rev)&&!newEdits){results[i2]=docInfo;return cb2()}previousWinningRev=prev.winningRev||winningRev(prev);previouslyDeleted="deleted"in prev?prev.deleted:isDeleted(prev,previousWinningRev);deleted="deleted"in docInfo.metadata?docInfo.metadata.deleted:isDeleted(docInfo.metadata);isRoot=/^1-/.test(docInfo.metadata.rev);if(previouslyDeleted&&!deleted&&newEdits&&isRoot){(newDoc=docInfo.data)._rev=previousWinningRev;newDoc._id=docInfo.metadata.id;docInfo=parseDoc(newDoc,newEdits)}merged=merge(prev.rev_tree,docInfo.metadata.rev_tree[0],revLimit);if(newEdits&&(previouslyDeleted&&deleted&&"new_leaf"!==merged.conflicts||!previouslyDeleted&&"new_leaf"!==merged.conflicts||previouslyDeleted&&!deleted&&"new_branch"===merged.conflicts)){err2=createError(REV_CONFLICT);results[i2]=err2;return cb2()}newRev=docInfo.metadata.rev;docInfo.metadata.rev_tree=merged.tree;docInfo.stemmedRevs=merged.stemmedRevs||[];prev.rev_map&&(docInfo.metadata.rev_map=prev.rev_map);winningRev$$1=winningRev(docInfo.metadata);delta=previouslyDeleted===(winningRevIsDeleted=isDeleted(docInfo.metadata,winningRev$$1))?0:previouslyDeleted<winningRevIsDeleted?-1:1;writeDoc(docInfo,winningRev$$1,winningRevIsDeleted,newRev===winningRev$$1?winningRevIsDeleted:isDeleted(docInfo.metadata,newRev),!0,delta,i2,cb2)})(revLimit,fetchedDocs.get(id),currentDoc,results,resultsIdx,docWritten,writeDoc,newEdits);else{merged=merge([],currentDoc.metadata.rev_tree[0],revLimit);currentDoc.metadata.rev_tree=merged.tree;currentDoc.stemmedRevs=merged.stemmedRevs||[];(function insertDoc(docInfo,resultsIdx,callback){var err2,winningRev$$1=winningRev(docInfo.metadata),deleted=isDeleted(docInfo.metadata,winningRev$$1);if("was_delete"in opts&&deleted){results[resultsIdx]=createError(MISSING_DOC,"deleted");return callback()}if(newEdits&&function rootIsMissing(docInfo){return"missing"===docInfo.metadata.rev_tree[0].ids[1].status}(docInfo)){err2=createError(REV_CONFLICT);results[resultsIdx]=err2;return callback()}writeDoc(docInfo,winningRev$$1,deleted,deleted,!1,deleted?0:1,resultsIdx,callback)})(currentDoc,resultsIdx,docWritten)}}var numDone=0;nextDoc()}))})(dbOpts.revs_limit,docInfos,api,fetchedDocs,txn,results,writeDoc,opts,onAllDocsProcessed)}()}function readMetadata(event2){var metadata=decodeMetadata(event2.target.result);metadata&&fetchedDocs.set(metadata.id,metadata);checkDone()}var numFetched,i3,len2,docInfo;if(docInfos.length){numFetched=0;for(i3=0,len2=docInfos.length;i3<len2;i3++)(docInfo=docInfos[i3])._id&&isLocalId(docInfo._id)?checkDone():docStore.get(docInfo.metadata.id).onsuccess=readMetadata}})()}))})()}))}function runBatchedCursor(objectStore,keyRange,descending,batchSize,onBatch){function onGetAll(e3){valuesBatch=e3.target.result;keysBatch&&onBatch(keysBatch,valuesBatch,pseudoCursor)}function onGetAllKeys(e3){keysBatch=e3.target.result;valuesBatch&&onBatch(keysBatch,valuesBatch,pseudoCursor)}function onCursor(e3){var cursor=e3.target.result;if(!cursor)return onBatch();onBatch([cursor.key],[cursor.value],cursor)}var keysBatch,valuesBatch,pseudoCursor;-1===batchSize&&(batchSize=1e3);if("function"==typeof objectStore.getAll&&"function"==typeof objectStore.getAllKeys&&batchSize>1&&!descending){pseudoCursor={continue:function continuePseudoCursor(){var lastKey,newKeyRange;if(!keysBatch.length)return onBatch();lastKey=keysBatch[keysBatch.length-1];if(keyRange&&keyRange.upper)try{newKeyRange=IDBKeyRange.bound(lastKey,keyRange.upper,!0,keyRange.upperOpen)}catch(e3){if("DataError"===e3.name&&0===e3.code)return onBatch()}else newKeyRange=IDBKeyRange.lowerBound(lastKey,!0);keyRange=newKeyRange;keysBatch=null;valuesBatch=null;objectStore.getAll(keyRange,batchSize).onsuccess=onGetAll;objectStore.getAllKeys(keyRange,batchSize).onsuccess=onGetAllKeys}};objectStore.getAll(keyRange,batchSize).onsuccess=onGetAll;objectStore.getAllKeys(keyRange,batchSize).onsuccess=onGetAllKeys}else descending?objectStore.openCursor(keyRange,"prev").onsuccess=onCursor:objectStore.openCursor(keyRange).onsuccess=onCursor}function applyNext(){if(!running&&queue.length){running=!0;queue.shift()()}}function IdbPouch(opts,callback){var api=this;(function enqueueTask(action2,callback,PouchDB2){queue.push((function runAction(){action2((function runCallback(err2,res2){(function tryCode(fun,err2,res2,PouchDB2){try{fun(err2,res2)}catch(err3){PouchDB2.emit("error",err3)}})(callback,err2,res2,PouchDB2);running=!1;nextTick2((function runNext(){applyNext()}))}))}));applyNext()})((function(thisCallback){(function init2(api,opts,callback){function enrichCallbackError(callback2){return function(error,result){error&&error instanceof Error&&!error.reason&&idbGlobalFailureError&&(error.reason=idbGlobalFailureError);callback2(error,result)}}function addDeletedOrLocalIndex(txn,callback2){var docStore=txn.objectStore(DOC_STORE);docStore.createIndex("deletedOrLocal","deletedOrLocal",{unique:!1});docStore.openCursor().onsuccess=function(event2){var metadata,deleted,cursor=event2.target.result;if(cursor){deleted=isDeleted(metadata=cursor.value);metadata.deletedOrLocal=deleted?"1":"0";docStore.put(metadata);cursor.continue()}else callback2()}}function migrateLocalStore(txn,cb2){var localStore=txn.objectStore(LOCAL_STORE),docStore=txn.objectStore(DOC_STORE),seqStore=txn.objectStore(BY_SEQ_STORE);docStore.openCursor().onsuccess=function(event2){var metadata,docId,local,rev3,docIdRev,start,end,index6,range2,seqCursor,cursor2=event2.target.result;if(cursor2){local=isLocalId(docId=(metadata=cursor2.value).id);rev3=winningRev(metadata);if(local){docIdRev=docId+"::"+rev3;start=docId+"::";end=docId+"::~";index6=seqStore.index("_doc_id_rev");range2=IDBKeyRange.bound(start,end,!1,!1);(seqCursor=index6.openCursor(range2)).onsuccess=function(e3){if(seqCursor=e3.target.result){var data=seqCursor.value;data._doc_id_rev===docIdRev&&localStore.put(data);seqStore.delete(seqCursor.primaryKey);seqCursor.continue()}else{docStore.delete(cursor2.primaryKey);cursor2.continue()}}}else cursor2.continue()}else cb2&&cb2()}}function migrateAttsAndSeqs(txn,callback2){var seqStore=txn.objectStore(BY_SEQ_STORE),attStore=txn.objectStore(ATTACH_STORE),attAndSeqStore=txn.objectStore(ATTACH_AND_SEQ_STORE);attStore.count().onsuccess=function(e3){if(!e3.target.result)return callback2();seqStore.openCursor().onsuccess=function(e4){var doc,seq,atts,digestMap,j2,digests,digest,cursor=e4.target.result;if(!cursor)return callback2();doc=cursor.value;seq=cursor.primaryKey;atts=Object.keys(doc._attachments||{});digestMap={};for(j2=0;j2<atts.length;j2++)digestMap[doc._attachments[atts[j2]].digest]=!0;digests=Object.keys(digestMap);for(j2=0;j2<digests.length;j2++){digest=digests[j2];attAndSeqStore.put({seq,digestSeq:digest+"::"+seq})}cursor.continue()}}}function migrateMetadata(txn){var bySeqStore=txn.objectStore(BY_SEQ_STORE),docStore=txn.objectStore(DOC_STORE);docStore.openCursor().onsuccess=function(e3){function onGetMetadataSeq(){var metadataToStore=encodeMetadata(metadata,metadata.winningRev,metadata.deleted);docStore.put(metadataToStore).onsuccess=function(){cursor2.continue()}}var metadata,cursor2=e3.target.result;if(cursor2){(metadata=function decodeMetadataCompat(storedObject){if(!storedObject.data){storedObject.deleted="1"===storedObject.deletedOrLocal;return storedObject}return decodeMetadata(storedObject)}(cursor2.value)).winningRev=metadata.winningRev||winningRev(metadata);if(metadata.seq)return onGetMetadataSeq();(function fetchMetadataSeq(){var start=metadata.id+"::",end=metadata.id+"::",req2=bySeqStore.index("_doc_id_rev").openCursor(IDBKeyRange.bound(start,end)),metadataSeq=0;req2.onsuccess=function(e4){var seq,cursor3=e4.target.result;if(!cursor3){metadata.seq=metadataSeq;return onGetMetadataSeq()}(seq=cursor3.primaryKey)>metadataSeq&&(metadataSeq=seq);cursor3.continue()}})()}}}var cached,req,dbName=opts.name,idb=null,idbGlobalFailureError=null;api._meta=null;api._remote=!1;api.type=function(){return"idb"};api._id=toPromise((function(callback2){callback2(null,api._meta.instanceId)}));api._bulkDocs=function idb_bulkDocs(req2,reqOpts,callback2){idbBulkDocs(opts,req2,reqOpts,api,idb,enrichCallbackError(callback2))};api._get=function idb_get(id,opts2,callback2){function finish(){callback2(err2,{doc,metadata,ctx:txn})}var doc,metadata,err2,txnResult,txn=opts2.ctx;if(!txn){if((txnResult=openTransactionSafely(idb,[DOC_STORE,BY_SEQ_STORE,ATTACH_STORE],"readonly")).error)return callback2(txnResult.error);txn=txnResult.txn}txn.objectStore(DOC_STORE).get(id).onsuccess=function(e3){var rev3,objectStore,key2;if(!(metadata=decodeMetadata(e3.target.result))){err2=createError(MISSING_DOC,"missing");return finish()}if(opts2.rev)rev3=opts2.latest?latest(opts2.rev,metadata):opts2.rev;else{rev3=metadata.winningRev;if(isDeleted(metadata)){err2=createError(MISSING_DOC,"deleted");return finish()}}objectStore=txn.objectStore(BY_SEQ_STORE);key2=metadata.id+"::"+rev3;objectStore.index("_doc_id_rev").get(key2).onsuccess=function(e4){(doc=e4.target.result)&&(doc=decodeDoc(doc));if(!doc){err2=createError(MISSING_DOC,"missing");return finish()}finish()}}};api._getAttachment=function(docId,attachId,attachment,opts2,callback2){var txn,txnResult,digest,type;if(opts2.ctx)txn=opts2.ctx;else{if((txnResult=openTransactionSafely(idb,[DOC_STORE,BY_SEQ_STORE,ATTACH_STORE],"readonly")).error)return callback2(txnResult.error);txn=txnResult.txn}digest=attachment.digest;type=attachment.content_type;txn.objectStore(ATTACH_STORE).get(digest).onsuccess=function(e3){readBlobData(e3.target.result.body,type,opts2.binary,(function(blobData){callback2(null,blobData)}))}};api._info=function idb_info(callback2){var updateSeq,docCount,txn,txnResult=openTransactionSafely(idb,[META_STORE,BY_SEQ_STORE],"readonly");if(txnResult.error)return callback2(txnResult.error);(txn=txnResult.txn).objectStore(META_STORE).get(META_STORE).onsuccess=function(e3){docCount=e3.target.result.docCount};txn.objectStore(BY_SEQ_STORE).openKeyCursor(null,"prev").onsuccess=function(e3){var cursor=e3.target.result;updateSeq=cursor?cursor.key:0};txn.oncomplete=function(){callback2(null,{doc_count:docCount,update_seq:updateSeq,idb_attachment_format:api._meta.blobSupport?"binary":"base64"})}};api._allDocs=function idb_allDocs(opts2,callback2){(function idbAllDocs(opts,idb,callback){function allDocsInner(winningRev$$1,metadata){var row={id:metadata.id,key:metadata.id,value:{rev:winningRev$$1}};if(metadata.deleted){if(keys3){results.push(row);row.value.deleted=!0;row.doc=null}}else if(skip2--<=0){results.push(row);opts.include_docs&&function fetchDocAsynchronously(metadata,row,winningRev$$1){var key3=metadata.id+"::"+winningRev$$1;docIdRevIndex.get(key3).onsuccess=function onGetDoc(e3){row.doc=decodeDoc(e3.target.result)||{};if(opts.conflicts){var conflicts=collectConflicts(metadata);conflicts.length&&(row.doc._conflicts=conflicts)}fetchAttachmentsIfNecessary(row.doc,opts,txn)}}(metadata,row,winningRev$$1)}}function processBatch(batchValues){var i2,len,batchValue,metadata;for(i2=0,len=batchValues.length;i2<len&&results.length!==limit;i2++)(batchValue=batchValues[i2]).error&&keys3?results.push(batchValue):allDocsInner((metadata=decodeMetadata(batchValue)).winningRev,metadata)}function onBatch(batchKeys,batchValues,cursor){if(cursor){processBatch(batchValues);results.length<limit&&cursor.continue()}}function onResultsReady(){var returnVal={total_rows:docCount,offset:opts.skip,rows:results};opts.update_seq&&void 0!==updateSeq&&(returnVal.update_seq=updateSeq);callback(null,returnVal)}var keyRange,keyRangeError,stores,txnResult,txn,docStore,seqStore,metaStore,docIdRevIndex,results,docCount,updateSeq,start="startkey"in opts&&opts.startkey,end="endkey"in opts&&opts.endkey,key2="key"in opts&&opts.key,keys3="keys"in opts&&opts.keys,skip2=opts.skip||0,limit="number"==typeof opts.limit?opts.limit:-1,inclusiveEnd=!1!==opts.inclusive_end;if(!keys3){keyRange=function createKeyRange(start,end,inclusiveEnd,key2,descending){try{if(start&&end)return descending?IDBKeyRange.bound(end,start,!inclusiveEnd,!1):IDBKeyRange.bound(start,end,!1,!inclusiveEnd);if(start)return descending?IDBKeyRange.upperBound(start):IDBKeyRange.lowerBound(start);if(end)return descending?IDBKeyRange.lowerBound(end,!inclusiveEnd):IDBKeyRange.upperBound(end,!inclusiveEnd);if(key2)return IDBKeyRange.only(key2)}catch(e3){return{error:e3}}return null}(start,end,inclusiveEnd,key2,opts.descending);if((keyRangeError=keyRange&&keyRange.error)&&("DataError"!==keyRangeError.name||0!==keyRangeError.code))return callback(createError(IDB_ERROR,keyRangeError.name,keyRangeError.message))}stores=[DOC_STORE,BY_SEQ_STORE,META_STORE];opts.attachments&&stores.push(ATTACH_STORE);if((txnResult=openTransactionSafely(idb,stores,"readonly")).error)return callback(txnResult.error);(txn=txnResult.txn).oncomplete=function onTxnComplete(){opts.attachments?postProcessAttachments(results,opts.binary).then(onResultsReady):onResultsReady()};txn.onabort=idbError(callback);docStore=txn.objectStore(DOC_STORE);seqStore=txn.objectStore(BY_SEQ_STORE);metaStore=txn.objectStore(META_STORE);docIdRevIndex=seqStore.index("_doc_id_rev");results=[];metaStore.get(META_STORE).onsuccess=function(e3){docCount=e3.target.result.docCount};opts.update_seq&&(seqStore.openKeyCursor(null,"prev").onsuccess=e3=>{var cursor=e3.target.result;cursor&&cursor.key&&(updateSeq=cursor.key)});if(!keyRangeError&&0!==limit){if(keys3)return function allDocsKeys(keys3,docStore,onBatch){var valuesBatch=new Array(keys3.length),count=0;keys3.forEach((function(key2,index6){docStore.get(key2).onsuccess=function(event2){event2.target.result?valuesBatch[index6]=event2.target.result:valuesBatch[index6]={key:key2,error:"not_found"};++count===keys3.length&&onBatch(keys3,valuesBatch,{})}}))}(keys3,docStore,onBatch);if(-1===limit)return function getAll(objectStore,keyRange,onSuccess){if("function"!=typeof objectStore.getAll){var values=[];objectStore.openCursor(keyRange).onsuccess=function onCursor(e3){var cursor=e3.target.result;if(cursor){values.push(cursor.value);cursor.continue()}else onSuccess({target:{result:values}})}}else objectStore.getAll(keyRange).onsuccess=onSuccess}(docStore,keyRange,(function onGetAll(e3){var values=e3.target.result;opts.descending&&(values=values.reverse());processBatch(values)}));runBatchedCursor(docStore,keyRange,opts.descending,limit+skip2,onBatch)}})(opts2,idb,enrichCallbackError(callback2))};api._changes=function idbChanges2(opts2){return function changes(opts,api,dbName,idb){function onGetMetadata(doc,seq,metadata,cb2){var docIdRev;if(metadata.seq!==seq)return cb2();if(metadata.winningRev===doc._rev)return cb2(metadata,doc);docIdRev=doc._id+"::"+metadata.winningRev;docIdRevIndex.get(docIdRev).onsuccess=function(e3){cb2(metadata,decodeDoc(e3.target.result))}}function finish(){opts.complete(null,{results,last_seq:lastSeq})}var id,docIds,lastSeq,limit,results,numResults,filter4,docIdsToMetadata,txn,bySeqStore,docStore,docIdRevIndex,objectStores,txnResult;if((opts=clone2(opts)).continuous){id=dbName+":"+uuid();changesHandler$1.addListener(dbName,id,api,opts);changesHandler$1.notify(dbName);return{cancel:function(){changesHandler$1.removeListener(dbName,id)}}}docIds=opts.doc_ids&&new Set(opts.doc_ids);opts.since=opts.since||0;lastSeq=opts.since;0===(limit="limit"in opts?opts.limit:-1)&&(limit=1);results=[];numResults=0;filter4=filterChange(opts);docIdsToMetadata=new Map;objectStores=[DOC_STORE,BY_SEQ_STORE];opts.attachments&&objectStores.push(ATTACH_STORE);if((txnResult=openTransactionSafely(idb,objectStores,"readonly")).error)return opts.complete(txnResult.error);(txn=txnResult.txn).onabort=idbError(opts.complete);txn.oncomplete=function onTxnComplete(){!opts.continuous&&opts.attachments?postProcessAttachments(results).then(finish):finish()};bySeqStore=txn.objectStore(BY_SEQ_STORE);docStore=txn.objectStore(DOC_STORE);docIdRevIndex=bySeqStore.index("_doc_id_rev");runBatchedCursor(bySeqStore,opts.since&&!opts.descending?IDBKeyRange.lowerBound(opts.since,!0):null,opts.descending,limit,(function onBatch(batchKeys,batchValues,cursor){function processMetadataAndWinningDoc(metadata,winningDoc){var filtered,change=opts.processChange(winningDoc,metadata,opts);lastSeq=change.seq=metadata.seq;if("object"==typeof(filtered=filter4(change)))return Promise.reject(filtered);if(!filtered)return Promise.resolve();numResults++;opts.return_docs&&results.push(change);return opts.attachments&&opts.include_docs?new Promise((function(resolve){fetchAttachmentsIfNecessary(winningDoc,opts,txn,(function(){postProcessAttachments([change],opts.binary).then((function(){resolve(change)}))}))})):Promise.resolve(change)}var winningDocs,metadatas,numDone;if(cursor&&batchKeys.length){winningDocs=new Array(batchKeys.length);metadatas=new Array(batchKeys.length);numDone=0;batchValues.forEach((function(value,i2){(function fetchWinningDocAndMetadata(doc,seq,cb2){if(docIds&&!docIds.has(doc._id))return cb2();var metadata=docIdsToMetadata.get(doc._id);if(metadata)return onGetMetadata(doc,seq,metadata,cb2);docStore.get(doc._id).onsuccess=function(e3){metadata=decodeMetadata(e3.target.result);docIdsToMetadata.set(doc._id,metadata);onGetMetadata(doc,seq,metadata,cb2)}})(decodeDoc(value),batchKeys[i2],(function(metadata,winningDoc){metadatas[i2]=metadata;winningDocs[i2]=winningDoc;++numDone===batchKeys.length&&function onBatchDone(){var i2,len,winningDoc,metadata,promises=[];for(i2=0,len=winningDocs.length;i2<len&&numResults!==limit;i2++)if(winningDoc=winningDocs[i2]){metadata=metadatas[i2];promises.push(processMetadataAndWinningDoc(metadata,winningDoc))}Promise.all(promises).then((function(changes3){for(var i3=0,len2=changes3.length;i3<len2;i3++)changes3[i3]&&opts.onChange(changes3[i3])})).catch(opts.complete);numResults!==limit&&cursor.continue()}()}))}))}}))}(opts2,api,dbName,idb)};api._close=function(callback2){idb.close();cachedDBs.delete(dbName);callback2()};api._getRevisionTree=function(docId,callback2){var txnResult=openTransactionSafely(idb,[DOC_STORE],"readonly");if(txnResult.error)return callback2(txnResult.error);txnResult.txn.objectStore(DOC_STORE).get(docId).onsuccess=function(event2){var doc=decodeMetadata(event2.target.result);doc?callback2(null,doc.rev_tree):callback2(createError(MISSING_DOC))}};api._doCompaction=function(docId,revs,callback2){var txn,txnResult=openTransactionSafely(idb,[DOC_STORE,BY_SEQ_STORE,ATTACH_STORE,ATTACH_AND_SEQ_STORE],"readwrite");if(txnResult.error)return callback2(txnResult.error);(txn=txnResult.txn).objectStore(DOC_STORE).get(docId).onsuccess=function(event2){var winningRev$$1,deleted,metadata=decodeMetadata(event2.target.result);traverseRevTree(metadata.rev_tree,(function(isLeaf,pos,revHash,ctx,opts2){var rev3=pos+"-"+revHash;-1!==revs.indexOf(rev3)&&(opts2.status="missing")}));compactRevs(revs,docId,txn);winningRev$$1=metadata.winningRev;deleted=metadata.deleted;txn.objectStore(DOC_STORE).put(encodeMetadata(metadata,winningRev$$1,deleted))};txn.onabort=idbError(callback2);txn.oncomplete=function(){callback2()}};api._getLocal=function(id,callback2){var req2,txnResult=openTransactionSafely(idb,[LOCAL_STORE],"readonly");if(txnResult.error)return callback2(txnResult.error);(req2=txnResult.txn.objectStore(LOCAL_STORE).get(id)).onerror=idbError(callback2);req2.onsuccess=function(e3){var doc=e3.target.result;if(doc){delete doc._doc_id_rev;callback2(null,doc)}else callback2(createError(MISSING_DOC))}};api._putLocal=function(doc,opts2,callback2){var oldRev,id,tx,ret,txnResult,oStore,req2;if("function"==typeof opts2){callback2=opts2;opts2={}}delete doc._revisions;oldRev=doc._rev;id=doc._id;doc._rev=oldRev?"0-"+(parseInt(oldRev.split("-")[1],10)+1):"0-1";if(!(tx=opts2.ctx)){if((txnResult=openTransactionSafely(idb,[LOCAL_STORE],"readwrite")).error)return callback2(txnResult.error);(tx=txnResult.txn).onerror=idbError(callback2);tx.oncomplete=function(){ret&&callback2(null,ret)}}oStore=tx.objectStore(LOCAL_STORE);if(oldRev)(req2=oStore.get(id)).onsuccess=function(e3){var oldDoc=e3.target.result;oldDoc&&oldDoc._rev===oldRev?oStore.put(doc).onsuccess=function(){ret={ok:!0,id:doc._id,rev:doc._rev};opts2.ctx&&callback2(null,ret)}:callback2(createError(REV_CONFLICT))};else{(req2=oStore.add(doc)).onerror=function(e3){callback2(createError(REV_CONFLICT));e3.preventDefault();e3.stopPropagation()};req2.onsuccess=function(){ret={ok:!0,id:doc._id,rev:doc._rev};opts2.ctx&&callback2(null,ret)}}};api._removeLocal=function(doc,opts2,callback2){var tx,txnResult,ret,id,oStore,req2;if("function"==typeof opts2){callback2=opts2;opts2={}}if(!(tx=opts2.ctx)){if((txnResult=openTransactionSafely(idb,[LOCAL_STORE],"readwrite")).error)return callback2(txnResult.error);(tx=txnResult.txn).oncomplete=function(){ret&&callback2(null,ret)}}id=doc._id;(req2=(oStore=tx.objectStore(LOCAL_STORE)).get(id)).onerror=idbError(callback2);req2.onsuccess=function(e3){var oldDoc=e3.target.result;if(oldDoc&&oldDoc._rev===doc._rev){oStore.delete(id);ret={ok:!0,id,rev:"0-0"};opts2.ctx&&callback2(null,ret)}else callback2(createError(MISSING_DOC))}};api._destroy=function(opts2,callback2){var openReq,req2;changesHandler$1.removeAllListeners(dbName);if((openReq=openReqList.get(dbName))&&openReq.result){openReq.result.close();cachedDBs.delete(dbName)}(req2=indexedDB.deleteDatabase(dbName)).onsuccess=function(){openReqList.delete(dbName);hasLocalStorage()&&dbName in localStorage&&delete localStorage[dbName];callback2(null,{ok:!0})};req2.onerror=idbError(callback2)};if(cached=cachedDBs.get(dbName)){idb=cached.idb;api._meta=cached.global;return nextTick2((function(){callback(null,api)}))}req=indexedDB.open(dbName,ADAPTER_VERSION);openReqList.set(dbName,req);req.onupgradeneeded=function(e3){var txn,migrations,i2,db=e3.target.result;if(e3.oldVersion<1)return function createSchema(db){var attAndSeqStore,docStore=db.createObjectStore(DOC_STORE,{keyPath:"id"});db.createObjectStore(BY_SEQ_STORE,{autoIncrement:!0}).createIndex("_doc_id_rev","_doc_id_rev",{unique:!0});db.createObjectStore(ATTACH_STORE,{keyPath:"digest"});db.createObjectStore(META_STORE,{keyPath:"id",autoIncrement:!1});db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);docStore.createIndex("deletedOrLocal","deletedOrLocal",{unique:!1});db.createObjectStore(LOCAL_STORE,{keyPath:"_id"});(attAndSeqStore=db.createObjectStore(ATTACH_AND_SEQ_STORE,{autoIncrement:!0})).createIndex("seq","seq");attAndSeqStore.createIndex("digestSeq","digestSeq",{unique:!0})}(db);txn=e3.currentTarget.transaction;e3.oldVersion<3&&function createLocalStoreSchema(db){db.createObjectStore(LOCAL_STORE,{keyPath:"_id"}).createIndex("_doc_id_rev","_doc_id_rev",{unique:!0})}(db);e3.oldVersion<4&&function addAttachAndSeqStore(db){var attAndSeqStore=db.createObjectStore(ATTACH_AND_SEQ_STORE,{autoIncrement:!0});attAndSeqStore.createIndex("seq","seq");attAndSeqStore.createIndex("digestSeq","digestSeq",{unique:!0})}(db);migrations=[addDeletedOrLocalIndex,migrateLocalStore,migrateAttsAndSeqs,migrateMetadata];i2=e3.oldVersion;(function next2(){var migration=migrations[i2-1];i2++;migration&&migration(txn,next2)})()};req.onsuccess=function(e3){function completeSetup(){if(void 0!==blobSupport&&storedMetaDoc){api._meta={name:dbName,instanceId,blobSupport};cachedDBs.set(dbName,{idb,global:api._meta});callback(null,api)}}function storeMetaDocIfReady(){if(void 0!==docCount&&void 0!==metaDoc){var instanceKey=dbName+"_id";instanceKey in metaDoc?instanceId=metaDoc[instanceKey]:metaDoc[instanceKey]=instanceId=uuid();metaDoc.docCount=docCount;txn.objectStore(META_STORE).put(metaDoc)}}var txn,storedMetaDoc,metaDoc,docCount,blobSupport,instanceId;(idb=e3.target.result).onversionchange=function(){idb.close();cachedDBs.delete(dbName)};idb.onabort=function(e4){guardedConsole("error","Database has a global failure",e4.target.error);idbGlobalFailureError=e4.target.error;idb.close();cachedDBs.delete(dbName)};txn=idb.transaction([META_STORE,DETECT_BLOB_SUPPORT_STORE,DOC_STORE],"readwrite");storedMetaDoc=!1;txn.objectStore(META_STORE).get(META_STORE).onsuccess=function(e4){metaDoc=e4.target.result||{id:META_STORE};storeMetaDocIfReady()};(function countDocs(txn,cb2){txn.objectStore(DOC_STORE).index("deletedOrLocal").count(IDBKeyRange.only("0")).onsuccess=function(e3){cb2(e3.target.result)}})(txn,(function(count){docCount=count;storeMetaDocIfReady()}));blobSupportPromise||(blobSupportPromise=checkBlobSupport(txn,DETECT_BLOB_SUPPORT_STORE,"key"));blobSupportPromise.then((function(val2){blobSupport=val2;completeSetup()}));txn.oncomplete=function(){storedMetaDoc=!0;completeSetup()};txn.onabort=idbError(callback)};req.onerror=function(e3){var msg=e3.target.error&&e3.target.error.message;msg?-1!==msg.indexOf("stored database is a higher version")&&(msg=new Error('This DB was created with the newer "indexeddb" adapter, but you are trying to open it with the older "idb" adapter')):msg="Failed to open indexedDB, are you in private browsing mode?";guardedConsole("error",msg);callback(createError(IDB_ERROR,msg))}})(api,opts,thisCallback)}),callback,api.constructor)}function appendBlob3(buffer,blob,start,end,callback){(start>0||end<blob.size)&&(blob=blob.slice(start,end));readAsArrayBuffer(blob,(function(arrayBuffer){buffer.append(arrayBuffer);callback()}))}function appendString3(buffer,string,start,end,callback){(start>0||end<string.length)&&(string=string.substring(start,end));buffer.appendBinary(string);callback()}function binaryMd53(data,callback){function next2(){setImmediateShim3(loadNextChunk)}function done(){var base64=function rawToBase643(raw){return thisBtoa(raw)}(buffer.end(!0));callback(base64);buffer.destroy()}function loadNextChunk(){var start=currentChunk*chunkSize2;currentChunk++;append2(buffer,data,start,start+chunkSize2,currentChunk<chunks?next2:done)}var inputIsString="string"==typeof data,len=inputIsString?data.length:data.size,chunkSize2=Math.min(MD5_CHUNK_SIZE3,len),chunks=Math.ceil(len/chunkSize2),currentChunk=0,buffer=inputIsString?new import_spark_md53.default:new import_spark_md53.default.ArrayBuffer,append2=inputIsString?appendString3:appendBlob3;loadNextChunk()}function sanitise(name,isPath){const correctCharacters=function(match3){let good="";for(let i2=0;i2<match3.length;i2++){const code=match3.charCodeAt(i2);if(code===IS_DOT&&isPath&&0===i2)good+=".";else{if(code===SLASH&&isPath)continue;good+="_c"+code+"_"}}return good};return isPath?name.replace(PATH_INVALID,correctCharacters):name.replace(KEY_INVALID,correctCharacters)}function needsRewrite(data){for(const key2 of Object.keys(data)){if(name=key2,TEST_KEY_INVALID.test(name))return!0;if(null===data[key2]||"boolean"==typeof data[key2])return!0;if("object"==typeof data[key2])return needsRewrite(data[key2])}var name}function rewrite(data){if(!needsRewrite(data))return!1;const isArray2=Array.isArray(data),clone3=isArray2?[]:{};Object.keys(data).forEach((function(key2){const safeKey=isArray2?key2:sanitise(key2);null===data[key2]?clone3[safeKey]=IDB_NULL:"boolean"==typeof data[key2]?clone3[safeKey]=data[key2]?IDB_TRUE:IDB_FALSE:"object"==typeof data[key2]?clone3[safeKey]=rewrite(data[key2]):clone3[safeKey]=data[key2]}));return clone3}function idbError2(callback){return function(evt){let message="unknown_error";evt.target&&evt.target.error&&(message=evt.target.error.name||evt.target.error.message);callback(createError(IDB_ERROR,message,evt.type))}}function processAttachment(name,src,doc,isBinary,attachmentFormat){delete doc._attachments[name].stub;if("base64"===attachmentFormat){if(isBinary){const att=src.attachments[doc._attachments[name].digest];doc._attachments[name].data=b64ToBluffer(att.data,att.content_type)}else doc._attachments[name].data=src.attachments[doc._attachments[name].digest].data;delete doc._attachments[name].length;return Promise.resolve()}if(isBinary){doc._attachments[name].data=src.attachments[doc._attachments[name].digest].data;return Promise.resolve()}return new Promise((function(resolve){readAsBinaryString(src.attachments[doc._attachments[name].digest].data,(function(binString){doc._attachments[name].data=thisBtoa(binString);delete doc._attachments[name].length;resolve()}))}))}function rawIndexFields(ddoc,viewName){return(ddoc.views[viewName].options&&ddoc.views[viewName].options.def&&ddoc.views[viewName].options.def.fields||[]).map((function(field){return"string"==typeof field?field:Object.keys(field)[0]}))}function naturalIndexName(fields){return"_find_idx/"+fields.join("/")}function setup(openDatabases2,api,opts){if(!openDatabases2[opts.name]||openDatabases2[opts.name].versionChangedWhileOpen){opts.versionChangedWhileOpen=openDatabases2[opts.name]&&openDatabases2[opts.name].versionChangedWhileOpen;openDatabases2[opts.name]=new Promise((function(resolve,reject){(function openDatabase(openDatabases2,api,opts,resolve,reject){const openReq=opts.versionChangedWhileOpen?indexedDB.open(opts.name):indexedDB.open(opts.name,function createIdbVersion(){return versionMultiplier*POUCHDB_IDB_VERSION+(new Date).getTime()}());openReq.onupgradeneeded=function(e3){if(e3.oldVersion>0&&e3.oldVersion<versionMultiplier)throw new Error('Incorrect adapter: you should specify the "idb" adapter to open this DB');if(0===e3.oldVersion&&e3.newVersion<versionMultiplier){indexedDB.deleteDatabase(opts.name);throw new Error("Database was deleted while open")}const tx=e3.target.transaction,db=e3.target.result,pouchdbVersion=function getPouchDbVersion(version2){return Math.floor(version2/versionMultiplier)}(e3.oldVersion);(function upgradePouchDbSchema(dbName,db,tx,pouchdbVersion){if(pouchdbVersion<1){db.createObjectStore(DOC_STORE2,{keyPath:"id"}).createIndex("seq","seq",{unique:!0});db.createObjectStore(META_LOCAL_STORE,{keyPath:"id"})}if(pouchdbVersion<2){const docStore=tx.objectStore(DOC_STORE2);docStore.createIndex("deleted,id",["deleted","id"],{unique:!0});dbName.includes("-mrview-")&&docStore.deleteIndex("seq")}})(opts.name,db,tx,pouchdbVersion);(function maintainNativeIndexes(openReq,reject){const docStore=openReq.transaction.objectStore(DOC_STORE2);docStore.getAll(IDBKeyRange.bound("_design/","_design/")).onsuccess=function(e3){const results=e3.target.result,existingIndexNames=Array.from(docStore.indexNames),expectedIndexes=results.filter((function(row){return 0===row.deleted&&row.revs[row.rev].data.views})).map((function(row){return row.revs[row.rev].data})).reduce((function(indexes2,ddoc){return Object.keys(ddoc.views).reduce((function(acc,viewName){const fields=rawIndexFields(ddoc,viewName);fields&&fields.length>0&&(acc[naturalIndexName(fields)]=function correctIndexFields(fields){return["deleted"].concat(fields.map((function(field){return["_id","_rev","_deleted","_attachments"].includes(field)?field.substr(1):"data."+sanitise(field,!0)})))}(fields));return acc}),indexes2)}),{}),expectedIndexNames=Object.keys(expectedIndexes),systemIndexNames=["seq","deleted,id"];existingIndexNames.forEach((function(index6){-1===systemIndexNames.indexOf(index6)&&-1===expectedIndexNames.indexOf(index6)&&docStore.deleteIndex(index6)}));const newIndexNames=expectedIndexNames.filter((function(ei){return-1===existingIndexNames.indexOf(ei)}));try{newIndexNames.forEach((function(indexName){docStore.createIndex(indexName,expectedIndexes[indexName])}))}catch(err2){reject(err2)}}})(openReq,reject);if(pouchdbVersion<2){const docStore=openReq.transaction.objectStore(DOC_STORE2),metaStore=openReq.transaction.objectStore(META_LOCAL_STORE);docStore.openCursor().onsuccess=event2=>{const cursor=event2.target.result;if(!cursor)return;const doc=cursor.value;if(!isLocalId(doc.id))return cursor.continue();metaStore.put(doc).onsuccess=()=>{cursor.delete(doc).onsuccess=()=>{cursor.continue()}}}}};openReq.onblocked=function(e3){console.error("onblocked, this should never happen",e3)};openReq.onsuccess=function(e3){const idb=e3.target.result;idb.onabort=function(e4){console.error("Database has a global failure",e4.target.error);delete openDatabases2[opts.name];idb.close()};idb.onversionchange=function(){console.log("Database was made stale, closing handle");openDatabases2[opts.name].versionChangedWhileOpen=!0;idb.close()};idb.onclose=function(){console.log("Database was made stale, closing handle");opts.name in openDatabases2&&(openDatabases2[opts.name].versionChangedWhileOpen=!0)};let metadata={id:META_LOCAL_STORE};const txn=idb.transaction([META_LOCAL_STORE],"readwrite");txn.oncomplete=function(){resolve({idb,metadata})};const metaStore=txn.objectStore(META_LOCAL_STORE);metaStore.get(META_LOCAL_STORE).onsuccess=function(e4){metadata=e4.target.result||metadata;let changed=!1;if(!("doc_count"in metadata)){changed=!0;metadata.doc_count=0}if(!("seq"in metadata)){changed=!0;metadata.seq=0}if(!("db_uuid"in metadata)){changed=!0;metadata.db_uuid=uuid()}if("idb_attachment_format"in metadata){if(changed){api.blobSupport=metadata.idb_attachment_format;metaStore.put(metadata)}}else checkBlobSupport(txn,META_LOCAL_STORE,(blob=>({id:"blob-support",blob}))).then((blobSupport=>{api.blobSupport=metadata.idb_attachment_format=blobSupport?"binary":"base64";metaStore.put(metadata)}))}};openReq.onerror=function(e3){reject(e3.target.error)}})(openDatabases2,api,opts,resolve,reject)}))}return openDatabases2[opts.name]}function get3(txn,id,opts,callback){if(txn.error)return callback(txn.error);txn.txn.objectStore(DOC_STORE2).get(id).onsuccess=function(e3){const doc=e3.target.result;let rev3;rev3=opts.rev?opts.latest?latest(opts.rev,doc):opts.rev:doc&&doc.rev;if(!doc||doc.deleted&&!opts.rev||!(rev3 in doc.revs)){callback(createError(MISSING_DOC,"missing"));return}const result=doc.revs[rev3].data;result._id=doc.id;result._rev=rev3;callback(null,{doc:result,metadata:doc,ctx:txn})}}function getAttachment(docId,attachId,attachment,opts,cb2){if(isLocalId(docId)){cb2(createError(MISSING_DOC,"missing"));return}const data=opts.metadata.attachments[attachment.digest].data;if("string"!=typeof data){if(opts.binary)return cb2(null,data);readAsBinaryString(data,(function(binString){cb2(null,thisBtoa(binString))}))}else opts.binary?cb2(null,b64ToBluffer(data,attachment.content_type)):cb2(null,data)}function createKeyRange2(start,end,inclusiveStart,inclusiveEnd,key2,descending){try{return key2?IDBKeyRange.only([0,key2]):descending?IDBKeyRange.bound(end,start,!inclusiveEnd,!inclusiveStart):IDBKeyRange.bound(start,end,!inclusiveStart,!inclusiveEnd)}catch(e3){return{error:e3}}}function handleKeyRangeError(opts,metadata,err2,callback){if("DataError"===err2.name&&0===err2.code){const returnVal={total_rows:metadata.doc_count,offset:opts.skip,rows:[]};opts.update_seq&&(returnVal.update_seq=metadata.seq);return callback(null,returnVal)}callback(createError(IDB_ERROR,err2.name,err2.message))}function getRevisionTree(txn,id,callback){if(txn.error)return callback(txn.error);txn.txn.objectStore(DOC_STORE2).get(id).onsuccess=function(e3){e3.target.result?callback(null,e3.target.result.rev_tree):callback(createError(MISSING_DOC))}}function doCompaction(txn,id,revs,callback){if(txn.error)return callback(txn.error);const docStore=txn.txn.objectStore(DOC_STORE2);docStore.get(id).onsuccess=function(e3){const doc=e3.target.result;traverseRevTree(doc.rev_tree,(function(isLeaf,pos,revHash,ctx,opts){const rev3=pos+"-"+revHash;-1!==revs.indexOf(rev3)&&(opts.status="missing")}));const attachments=[];revs.forEach((function(rev3){if(rev3 in doc.revs){if(doc.revs[rev3].data._attachments)for(const k2 in doc.revs[rev3].data._attachments)attachments.push(doc.revs[rev3].data._attachments[k2].digest);delete doc.revs[rev3]}}));attachments.forEach((function(digest){revs.forEach((function(rev3){delete doc.attachments[digest].revs[rev3]}));Object.keys(doc.attachments[digest].revs).length||delete doc.attachments[digest]}));docStore.put(doc)};txn.txn.oncomplete=function(){callback()}}function externaliseRecord(idbDoc){const doc=idbDoc.revs[idbDoc.rev].data;doc._id=idbDoc.id;doc._rev=idbDoc.rev;idbDoc.deleted&&(doc._deleted=!0);return doc}function getIndexHandle(pdb,fields,reject){const indexName=naturalIndexName(fields);return new Promise((function(resolve){pdb._openTransactionSafely([DOC_STORE2],"readonly",(function(err2,txn){if(err2)return idbError2(reject)(err2);txn.onabort=idbError2(reject);txn.ontimeout=idbError2(reject);-1===Array.from(txn.objectStore(DOC_STORE2).indexNames).indexOf(indexName)?pdb._freshen().then((function(){return getIndexHandle(pdb,fields,reject)})).then(resolve):resolve(txn.objectStore(DOC_STORE2).index(indexName))}))}))}function query(idb,signature,opts,fallback2){const pdb=this,parts=signature.split("/");return new Promise((function(resolve,reject){pdb.get("_design/"+parts[0]).then((function(ddoc){if(function isPartialFilterView(ddoc,viewName){return viewName in ddoc.views&&ddoc.views[viewName].options&&ddoc.views[viewName].options.def&&ddoc.views[viewName].options.def.partial_filter_selector}(ddoc,parts[1]))return fallback2(signature,opts).then(resolve,reject);const fields=rawIndexFields(ddoc,parts[1]);if(!fields)throw new Error("ddoc "+ddoc._id+" with view "+parts[1]+" does not have map.options.def.fields defined.");let skip2=opts.skip,limit=Number.isInteger(opts.limit)&&opts.limit;return getIndexHandle(pdb,fields,reject).then((function(indexHandle){const keyRange=function generateKeyRange(opts){function defined(obj,k2){return void 0!==obj[k2]}function convert(key2,exact){return[0].concat(key2).map((function(k2){if(null===k2&&exact)return IDB_NULL;if(!0===k2)return IDB_TRUE;if(!1===k2)return IDB_FALSE;if(!exact){if(k2===COUCH_COLLATE_LO)return IDB_COLLATE_LO;if(Object.prototype.hasOwnProperty.call(k2,COUCH_COLLATE_HI))return IDB_COLLATE_HI}return k2}))}defined(opts,"inclusive_end")||(opts.inclusive_end=!0);defined(opts,"inclusive_start")||(opts.inclusive_start=!0);if(opts.descending){const realEndkey=opts.startkey,realInclusiveEnd=opts.inclusive_start;opts.startkey=opts.endkey;opts.endkey=realEndkey;opts.inclusive_start=opts.inclusive_end;opts.inclusive_end=realInclusiveEnd}try{return defined(opts,"key")?IDBKeyRange.only(convert(opts.key,!0)):defined(opts,"startkey")&&!defined(opts,"endkey")?IDBKeyRange.bound(convert(opts.startkey),[1],!opts.inclusive_start,!0):!defined(opts,"startkey")&&defined(opts,"endkey")?IDBKeyRange.upperBound(convert(opts.endkey),!opts.inclusive_end):defined(opts,"startkey")&&defined(opts,"endkey")?IDBKeyRange.bound(convert(opts.startkey),convert(opts.endkey),!opts.inclusive_start,!opts.inclusive_end):IDBKeyRange.only([0])}catch(err2){console.error("Could not generate keyRange",err2,opts);throw Error("Could not generate key range with "+JSON.stringify(opts))}}(opts),req=indexHandle.openCursor(keyRange,opts.descending?"prev":"next"),rows=[];req.onerror=idbError2(reject);req.onsuccess=function(e3){const cursor=e3.target.result;if(!cursor||0===limit)return resolve({rows});if(skip2){cursor.advance(skip2);skip2=!1}else{limit&&(limit-=1);rows.push({doc:externaliseRecord(cursor.value)});cursor.continue()}}}))})).catch(reject)}))}function viewCleanup(idb,fallback2){return fallback2()}function purge(txn,docId,revs,callback){if(txn.error)return callback(txn.error);const docStore=txn.txn.objectStore(DOC_STORE2),deletedRevs=[];let documentWasRemovedCompletely=!1;docStore.get(docId).onsuccess=e3=>{const doc=e3.target.result;for(const rev3 of revs){doc.rev_tree=removeLeafFromRevTree(doc.rev_tree,rev3);delete doc.revs[rev3];deletedRevs.push(rev3)}if(0!==doc.rev_tree.length){doc.rev=winningRev(doc);doc.data=doc.revs[doc.rev].data;doc.attachments=function purgeAttachments(doc,revs){if(!doc.attachments)return{};for(let key2 in doc.attachments){const attachment=doc.attachments[key2];for(let rev3 of revs)attachment.revs[rev3]&&delete attachment.revs[rev3];0===Object.keys(attachment.revs).length&&delete doc.attachments[key2]}return doc.attachments}(doc,revs);docStore.put(doc)}else{docStore.delete(doc.id);documentWasRemovedCompletely=!0}};txn.txn.oncomplete=function(){callback(null,{ok:!0,deletedRevs,documentWasRemovedCompletely})}}function IndexeddbPouch(dbOpts,callback){dbOpts.view_adapter&&console.log("Please note that the indexeddb adapter manages _find indexes itself, therefore it is not using your specified view_adapter");const api=this;let metadata={};const $=function(fun){return function(){const args=Array.prototype.slice.call(arguments);setup(openDatabases,api,dbOpts).then((function(res2){metadata=res2.metadata;args.unshift(res2.idb);fun.apply(api,args)})).catch((function(err2){const last=args.pop();"function"==typeof last?last(err2):console.error(err2)}))}},$p=function(fun){return function(){const args=Array.prototype.slice.call(arguments);return setup(openDatabases,api,dbOpts).then((function(res2){metadata=res2.metadata;args.unshift(res2.idb);return fun.apply(api,args)}))}},$t2=function(fun,stores,mode){mode=mode||"readonly";return function(){const args=Array.prototype.slice.call(arguments),txn={};setup(openDatabases,api,dbOpts).then((function(res2){metadata=res2.metadata;txn.txn=res2.idb.transaction(stores,mode)})).catch((function(err2){console.error("Failed to establish transaction safely");console.error(err2);txn.error=err2})).then((function(){args.unshift(txn);fun.apply(api,args)}))}};api._openTransactionSafely=function(stores,mode,callback2){$t2((function(txn,callback3){callback3(txn.error,txn.txn)}),stores,mode)(callback2)};api._remote=!1;api.type=function(){return ADAPTER_NAME};api._id=$((function(_,cb2){cb2(null,metadata.db_uuid)}));api._info=$((function(_,cb2){return function info2(metadata,callback){callback(null,{doc_count:metadata.doc_count,update_seq:metadata.seq})}(metadata,cb2)}));api._get=$t2(get3,[DOC_STORE2]);api._getLocal=$t2((function(txn,id,callback2){return function getLocal(txn,id,api,callback){if(txn.error)return callback(txn.error);txn.txn.objectStore(META_LOCAL_STORE).get(id).onsuccess=function(e3){const doc=e3.target.result;if(!doc){callback(createError(MISSING_DOC,"missing"));return}const result=doc.revs[doc.rev].data;result._id=doc.id;result._rev=doc.rev;if(result._attachments){const processing=[];for(const name in result._attachments)processing.push(processAttachment(name,doc,result,BINARY_ATTACHMENTS,api.blobSupport));Promise.all(processing).then((()=>callback(null,result))).catch(callback)}else callback(null,result)}}(txn,id,api,callback2)}),[META_LOCAL_STORE]);api._bulkDocs=$((function(_,req,opts,callback2){(function bulkDocs(api,req,opts,metadata,dbOpts,idbChanges2,callback){function docsRevsLimit(doc){return isLocalId(doc.id)?1:revsLimit}function revHasAttachment(doc,rev3,digest){return doc.revs[rev3]&&doc.revs[rev3].data._attachments&&Object.values(doc.revs[rev3].data._attachments).find((function(att){return att.digest===digest}))}function convertDocFormat(doc){const newDoc={id:doc.metadata.id,rev:doc.metadata.rev,rev_tree:doc.metadata.rev_tree,revs:doc.metadata.revs||{}};newDoc.revs[newDoc.rev]={data:doc.data,deleted:doc.metadata.deleted};return newDoc}function updateSeq(i2){i2===lastWriteIndex&&txn.objectStore(META_LOCAL_STORE).put(metadata)}let txn,error;const results=[],docs=[];let lastWriteIndex;const revsLimit=dbOpts.revs_limit||1e3,rewriteEnabled=-1===dbOpts.name.indexOf("-mrview-"),autoCompaction=dbOpts.auto_compaction;for(let i2=0,len=req.docs.length;i2<len;i2++){let result;try{result=parseDoc(req.docs[i2],opts.new_edits,dbOpts)}catch(err2){result=err2}if(result.error)return callback(result);docs.push(convertDocFormat(result))}(function preProcessAttachments(){const promises=docs.map((function(doc){const data=doc.revs[doc.rev].data;if(!data._attachments)return Promise.resolve(data);const attachments=Object.keys(data._attachments).map((function(k2){data._attachments[k2].name=k2;return function preProcessAttachment(attachment){if(attachment.stub)return Promise.resolve(attachment);let binData;if("string"==typeof attachment.data){try{binData=thisAtob(attachment.data)}catch(e3){return Promise.reject(createError(BAD_ARG,"Attachment is not a valid base64 string"))}"binary"===metadata.idb_attachment_format&&(attachment.data=binStringToBluffer(binData,attachment.content_type))}else{binData=attachment.data;if("base64"===metadata.idb_attachment_format)return new Promise((resolve=>{blobToBase64(attachment.data,(function(b64){attachment.data=b64;binaryMd53(binData,(function(result){attachment.digest="md5-"+result;attachment.length=binData.size||binData.length||0;resolve(attachment)}))}))}))}return new Promise((function(resolve){binaryMd53(binData,(function(result){attachment.digest="md5-"+result;attachment.length=binData.size||binData.length||0;resolve(attachment)}))}))}(data._attachments[k2])}));return Promise.all(attachments).then((function(newAttachments){const processed={};newAttachments.forEach((function(attachment){processed[attachment.name]=attachment;delete attachment.name}));data._attachments=processed;return data}))}));return Promise.all(promises)})().then((function(){api._openTransactionSafely([DOC_STORE2,META_LOCAL_STORE],"readwrite",(function(err2,_txn){if(err2)return callback(err2);txn=_txn;txn.onabort=function(){callback(error||createError(UNKNOWN_ERROR,"transaction was aborted"))};txn.ontimeout=idbError2(callback);txn.oncomplete=function(){idbChanges2.notify(dbOpts.name);callback(null,results)};(function fetchExistingDocs(txn2,docs2){function readDone(e3){e3.target.result&&(oldDocs[e3.target.result.id]=e3.target.result);++fetched===docs2.length&&function processDocs2(txn2,docs2,oldDocs){docs2.forEach((function(doc,i2){let newDoc;if("was_delete"in opts&&!Object.prototype.hasOwnProperty.call(oldDocs,doc.id))newDoc=createError(MISSING_DOC,"deleted");else if(opts.new_edits&&!Object.prototype.hasOwnProperty.call(oldDocs,doc.id)&&function rootIsMissing2(doc){return"missing"===doc.rev_tree[0].ids[1].status}(doc))newDoc=createError(REV_CONFLICT);else if(Object.prototype.hasOwnProperty.call(oldDocs,doc.id)){newDoc=function update2(txn2,doc,oldDoc){if(doc.rev in oldDoc.revs&&!opts.new_edits)return!1;const isRoot=/^1-/.test(doc.rev);if(oldDoc.deleted&&!doc.deleted&&opts.new_edits&&isRoot){const tmp=doc.revs[doc.rev].data;tmp._rev=oldDoc.rev;tmp._id=oldDoc.id;doc=convertDocFormat(parseDoc(tmp,opts.new_edits,dbOpts))}const merged=merge(oldDoc.rev_tree,doc.rev_tree[0],docsRevsLimit(doc));doc.stemmedRevs=merged.stemmedRevs;doc.rev_tree=merged.tree;const revs=oldDoc.revs;revs[doc.rev]=doc.revs[doc.rev];doc.revs=revs;doc.attachments=oldDoc.attachments;if(opts.new_edits&&(oldDoc.deleted&&doc.deleted||!oldDoc.deleted&&"new_leaf"!==merged.conflicts||oldDoc.deleted&&!doc.deleted&&"new_branch"===merged.conflicts||oldDoc.rev===doc.rev))return createError(REV_CONFLICT);doc.wasDeleted=oldDoc.deleted;return doc}(0,doc,oldDocs[doc.id]);if(0==newDoc)return}else{const merged=merge([],doc.rev_tree[0],docsRevsLimit(doc));doc.rev_tree=merged.tree;doc.stemmedRevs=merged.stemmedRevs;newDoc=doc;newDoc.isNewDoc=!0;newDoc.wasDeleted=doc.revs[doc.rev].deleted?1:0}if(newDoc.error)results[i2]=newDoc;else{oldDocs[newDoc.id]=newDoc;lastWriteIndex=i2;(function write(txn2,doc,i2){const winningRev$$1=winningRev(doc),writtenRev=doc.rev,isLocal=isLocalId(doc.id),theDoc=doc.revs[winningRev$$1].data,isNewDoc=doc.isNewDoc;if(rewriteEnabled){const result=rewrite(theDoc);if(result){doc.data=result;delete doc.data._attachments}else doc.data=theDoc}else doc.data=theDoc;doc.rev=winningRev$$1;doc.deleted=doc.revs[winningRev$$1].deleted?1:0;if(!isLocal){doc.seq=++metadata.seq;let delta=0;doc.isNewDoc?delta=doc.deleted?0:1:doc.wasDeleted!==doc.deleted&&(delta=doc.deleted?-1:1);metadata.doc_count+=delta}delete doc.isNewDoc;delete doc.wasDeleted;let revsToDelete=doc.stemmedRevs||[];if(autoCompaction&&!isNewDoc){const result=compactTree(doc);result.length&&(revsToDelete=revsToDelete.concat(result))}revsToDelete.length&&revsToDelete.forEach((function(rev3){delete doc.revs[rev3]}));delete doc.stemmedRevs;"attachments"in doc||(doc.attachments={});if(theDoc._attachments)for(const k2 in theDoc._attachments){const attachment=theDoc._attachments[k2];if(attachment.stub){if(!(attachment.digest in doc.attachments)){error=createError(MISSING_STUB);txn2.abort();return}revHasAttachment(doc,writtenRev,attachment.digest)&&(doc.attachments[attachment.digest].revs[writtenRev]=!0)}else{doc.attachments[attachment.digest]=attachment;doc.attachments[attachment.digest].revs={};doc.attachments[attachment.digest].revs[writtenRev]=!0;theDoc._attachments[k2]={stub:!0,digest:attachment.digest,content_type:attachment.content_type,length:attachment.length,revpos:parseInt(writtenRev,10)}}}if(isLocal&&doc.deleted){txn2.objectStore(META_LOCAL_STORE).delete(doc.id).onsuccess=function(){results[i2]={ok:!0,id:doc.id,rev:"0-0"}};updateSeq(i2);return}const docStore=isLocal?META_LOCAL_STORE:DOC_STORE2;txn2.objectStore(docStore).put(doc).onsuccess=function(){results[i2]={ok:!0,id:doc.id,rev:writtenRev};updateSeq(i2)}})(txn2,newDoc,i2)}}))}(txn2,docs2,oldDocs)}let fetched=0;const oldDocs={};docs2.forEach((function(doc){const docStore=isLocalId(doc.id)?META_LOCAL_STORE:DOC_STORE2;txn2.objectStore(docStore).get(doc.id).onsuccess=readDone}))})(txn,docs)}))})).catch((function(err2){callback(err2)}))})(api,req,opts,metadata,dbOpts,idbChanges,callback2)}));api._allDocs=$t2((function(txn,opts,cb2){(function allDocs(txn,metadata,opts,callback){function include_doc(row,doc){const docData=doc.revs[doc.rev].data;row.doc=docData;row.doc._id=doc.id;row.doc._rev=doc.rev;if(opts.conflicts){const conflicts=collectConflicts(doc);conflicts.length&&(row.doc._conflicts=conflicts)}if(opts.attachments&&docData._attachments)for(const name in docData._attachments)processing.push(processAttachment(name,doc,row.doc,opts.binary,metadata.idb_attachment_format))}function onTxnComplete(){const returnVal={total_rows:metadata.doc_count,offset:0,rows:results};opts.update_seq&&(returnVal.update_seq=metadata.seq);processing.length?Promise.all(processing).then((function(){callback(null,returnVal)})):callback(null,returnVal)}async function fetchResults(){function fetchNextBatch(kr2){return new Promise((resolve=>{dbIndex.getAll(kr2,100).onsuccess=e3=>{const batch=e3.target.result;for(let i2=0;i2<batch.length;++i2){const doc=batch[i2],row={id:doc.id,key:doc.id,value:{rev:doc.rev}};opts.include_docs&&include_doc(row,doc);results.push(row)}if(batch.length>=100){const lastSeenKey=[0,batch[batch.length-1].id],startKey=descending?kr2.upper:lastSeenKey,endKey=descending?lastSeenKey:kr2.upper;if(startKey[1]!==endKey[1])return resolve(createKeyRange2(startKey,endKey,!!descending,!descending&&inclusiveEnd,key2,descending))}return resolve()}}))}let kr=keyRange;do{kr=await fetchNextBatch(kr)}while(kr);descending&&results.reverse();return txn.txn.commit()}if(txn.error)return callback(txn.error);if(0===opts.limit){const returnVal={total_rows:metadata.doc_count,offset:opts.skip,rows:[]};opts.update_seq&&(returnVal.update_seq=metadata.seq);return callback(null,returnVal)}const results=[],processing=[],key2="key"in opts&&opts.key,keys3="keys"in opts&&opts.keys;let skip2=opts.skip||0,limit="number"==typeof opts.limit?opts.limit:void 0;const inclusiveEnd=!1!==opts.inclusive_end,descending="descending"in opts&&opts.descending?"prev":null,start="startkey"in opts?opts.startkey:descending?"":"",end="endkey"in opts?opts.endkey:descending?"":"",docStore=txn.txn.objectStore(DOC_STORE2);if(keys3){txn.txn.oncomplete=onTxnComplete;return function allDocsKeys2(keys3,docStore,allDocsInner){const valuesBatch=new Array(keys3.length);let count=0;keys3.forEach((function(key2,index6){docStore.get(key2).onsuccess=function(event2){event2.target.result?valuesBatch[index6]=event2.target.result:valuesBatch[index6]={key:key2,error:"not_found"};count++;count===keys3.length&&valuesBatch.forEach((function(doc){allDocsInner(doc)}))}}))}(keys3,docStore,(doc=>{if(doc.error)return results.push(doc);const row={id:doc.id,key:doc.id,value:{rev:doc.rev}};if(doc.deleted){row.value.deleted=!0;row.doc=null}else opts.include_docs&&include_doc(row,doc);results.push(row)}))}let keyRange=createKeyRange2([0,start],[0,end],!0,inclusiveEnd,key2,descending);if(keyRange.error)return handleKeyRangeError(opts,metadata,keyRange.error,callback);txn.txn.oncomplete=onTxnComplete;const dbIndex=docStore.index("deleted,id");if(skip2||limit){let firstKey,limitKey=limit>0;dbIndex.openKeyCursor(keyRange,descending||"next").onsuccess=e3=>{const cursor=e3.target.result;if(skip2){if(!cursor)return txn.txn.commit();cursor.advance(skip2);skip2=0}else{if(void 0===firstKey){firstKey=cursor&&cursor.key;if(!firstKey)return txn.txn.commit()}if(limit){if(limit>1&&cursor){cursor.advance(limit-1);limit=void 0;return}limit=void 0}limitKey&&(limitKey=cursor&&cursor.key);limitKey||(limitKey=descending?keyRange.lower:keyRange.upper);keyRange=createKeyRange2(firstKey,limitKey,!0,inclusiveEnd,key2,descending);if(keyRange.error){txn.txn.abort();return handleKeyRangeError(opts,metadata,keyRange.error,callback)}fetchResults()}}}else fetchResults()})(txn,metadata,opts,cb2)}),[DOC_STORE2]);api._getAttachment=getAttachment;api._changes=$t2((function(txn,opts){(function changes2(txn,idbChanges2,api,dbOpts,opts){if(txn.error)return opts.complete(txn.error);if(opts.continuous){const id=dbOpts.name+":"+uuid();idbChanges2.addListener(dbOpts.name,id,api,opts);idbChanges2.notify(dbOpts.name);return{cancel:function(){idbChanges2.removeListener(dbOpts.name,id)}}}let limit="limit"in opts?opts.limit:-1;0===limit&&(limit=1);const store=txn.txn.objectStore(DOC_STORE2).index("seq"),filter4=filterChange(opts);let received=0,lastSeq=opts.since||0;const results=[],processing=[];let req;req=opts.descending?store.openCursor(null,"prev"):store.openCursor(IDBKeyRange.lowerBound(opts.since,!0));txn.txn.oncomplete=function onTxnComplete(){Promise.all(processing).then((function(){opts.complete(null,{results,last_seq:lastSeq})}))};req.onsuccess=function onReqSuccess(e3){if(!e3.target.result)return;const cursor=e3.target.result,doc=cursor.value;doc.data=doc.revs[doc.rev].data;doc.data._id=doc.id;doc.data._rev=doc.rev;doc.deleted&&(doc.data._deleted=!0);if(opts.doc_ids&&-1===opts.doc_ids.indexOf(doc.id))return cursor.continue();const change=opts.processChange(doc.data,doc,opts);change.seq=doc.seq;lastSeq=doc.seq;const filtered=filter4(change);if("object"==typeof filtered)return opts.complete(filtered);if(filtered){received++;opts.return_docs&&results.push(change);if(opts.include_docs&&opts.attachments&&doc.data._attachments){const promises=[];for(const name in doc.data._attachments){const p4=processAttachment(name,doc,change.doc,opts.binary,api.blobSupport);promises.push(p4);processing.push(p4)}Promise.all(promises).then((function(){opts.onChange(change)}))}else opts.onChange(change)}received!==limit&&cursor.continue()}})(txn,idbChanges,api,dbOpts,opts)}),[DOC_STORE2]);api._getRevisionTree=$t2(getRevisionTree,[DOC_STORE2]);api._doCompaction=$t2(doCompaction,[DOC_STORE2],"readwrite");api._customFindAbstractMapper={query:$p(query),viewCleanup:$p(viewCleanup)};api._destroy=function(opts,callback2){return function destroy(dbOpts,openDatabases2,idbChanges2,callback){function doDestroy(){indexedDB.deleteDatabase(dbOpts.name).onsuccess=function(){delete openDatabases2[dbOpts.name];callback(null,{ok:!0})}}idbChanges2.removeAllListeners(dbOpts.name);dbOpts.name in openDatabases2?openDatabases2[dbOpts.name].then((function(res2){res2.idb.close();doDestroy()})):doDestroy()}(dbOpts,openDatabases,idbChanges,callback2)};api._close=$((function(db,cb2){delete openDatabases[dbOpts.name];db.close();cb2()}));api._freshen=function(){return new Promise((function(resolve){api._close((function(){$(resolve)()}))}))};api._purge=$t2(purge,[DOC_STORE2],"readwrite");setTimeout((function(){callback(null,api)}))}function readAttachmentsAsBlobOrBuffer(row){const doc=row.doc||row.ok,atts=doc&&doc._attachments;atts&&Object.keys(atts).forEach((function(filename){const att=atts[filename];att.data=b64ToBluffer(att.data,att.content_type)}))}function encodeDocId(id){return/^_design/.test(id)?"_design/"+encodeURIComponent(id.slice(8)):id.startsWith("_local/")?"_local/"+encodeURIComponent(id.slice(7)):encodeURIComponent(id)}function preprocessAttachments2(doc){return doc._attachments&&Object.keys(doc._attachments)?Promise.all(Object.keys(doc._attachments).map((function(key2){const attachment=doc._attachments[key2];if(attachment.data&&"string"!=typeof attachment.data)return new Promise((function(resolve){blobToBase64(attachment.data,resolve)})).then((function(b64){attachment.data=b64}))}))):Promise.resolve()}function genDBUrl(opts,path2){return genUrl(opts,opts.db+"/"+path2)}function genUrl(opts,path2){const pathDel=opts.path?"/":"";return opts.protocol+"://"+opts.host+(opts.port?":"+opts.port:"")+"/"+opts.path+pathDel+path2}function paramsToStr(params){const paramKeys=Object.keys(params);return 0===paramKeys.length?"":"?"+paramKeys.map((key2=>key2+"="+encodeURIComponent(params[key2]))).join("&")}function HttpPouch(opts,callback){function adapterFun$$1(name,fun){return adapterFun(name,(function(...args){setup2().then((function(){return fun.apply(this,args)})).catch((function(e3){args.pop()(e3)}))})).bind(api)}async function fetchJSON(url,options){const result={};(options=options||{}).headers=options.headers||new h2;options.headers.get("Content-Type")||options.headers.set("Content-Type","application/json");options.headers.get("Accept")||options.headers.set("Accept","application/json");const response=await ourFetch(url,options);result.ok=response.ok;result.status=response.status;const json=await response.json();result.data=json;if(!result.ok){result.data.status=result.status;throw generateErrorFromResponse(result.data)}Array.isArray(result.data)&&(result.data=result.data.map((function(v2){return v2.error||v2.missing?generateErrorFromResponse(v2):v2})));return result}async function setup2(){if(opts.skip_setup)return Promise.resolve();if(setupPromise)return setupPromise;setupPromise=fetchJSON(dbUrl).catch((function(err2){if(err2&&err2.status&&404===err2.status){explainError(404,"PouchDB is just detecting if the remote exists.");return fetchJSON(dbUrl,{method:"PUT"})}return Promise.reject(err2)})).catch((function(err2){return!(!err2||!err2.status||412!==err2.status)||Promise.reject(err2)}));setupPromise.catch((function(){setupPromise=null}));return setupPromise}function encodeAttachmentId(attachmentId){return attachmentId.split("/").map(encodeURIComponent).join("/")}const api=this,host=function getHost(name,opts){if(function hasUrlPrefix(opts){if(!opts.prefix)return!1;const protocol=parseUri(opts.prefix).protocol;return"http"===protocol||"https"===protocol}(opts)){const dbName=opts.name.substr(opts.prefix.length);name=opts.prefix.replace(/\/?$/,"/")+encodeURIComponent(dbName)}const uri=parseUri(name);(uri.user||uri.password)&&(uri.auth={username:uri.user,password:uri.password});const parts=uri.path.replace(/(^\/|\/$)/g,"").split("/");uri.db=parts.pop();-1===uri.db.indexOf("%")&&(uri.db=encodeURIComponent(uri.db));uri.path=parts.join("/");return uri}(opts.name,opts),dbUrl=genDBUrl(host,"");opts=clone2(opts);const ourFetch=async function(url,options){(options=options||{}).headers=options.headers||new h2;options.credentials="include";if(opts.auth||host.auth){const nAuth=opts.auth||host.auth,str=nAuth.username+":"+nAuth.password,token=thisBtoa(unescape(encodeURIComponent(str)));options.headers.set("Authorization","Basic "+token)}const headers=opts.headers||{};Object.keys(headers).forEach((function(key2){options.headers.append(key2,headers[key2])}));(function shouldCacheBust(opts){const ua="undefined"!=typeof navigator&&navigator.userAgent?navigator.userAgent.toLowerCase():"",isIE=-1!==ua.indexOf("msie"),isTrident=-1!==ua.indexOf("trident"),isEdge=-1!==ua.indexOf("edge"),isGET=!("method"in opts)||"GET"===opts.method;return(isIE||isTrident||isEdge)&&isGET})(options)&&(url+=(-1===url.indexOf("?")?"?":"&")+"_nonce="+Date.now());const fetchFun=opts.fetch||f3;return await fetchFun(url,options)};let setupPromise;nextTick2((function(){callback(null,api)}));api._remote=!0;api.type=function(){return"http"};api.id=adapterFun$$1("id",(async function(callback2){let result;try{const response=await ourFetch(genUrl(host,""));result=await response.json()}catch(err2){result={}}callback2(null,result&&result.uuid?result.uuid+host.db:genDBUrl(host,""))}));api.compact=adapterFun$$1("compact",(async function(opts2,callback2){if("function"==typeof opts2){callback2=opts2;opts2={}}opts2=clone2(opts2);await fetchJSON(genDBUrl(host,"_compact"),{method:"POST"});(function ping(){api.info((function(err2,res2){res2&&!res2.compact_running?callback2(null,{ok:!0}):setTimeout(ping,opts2.interval||200)}))})()}));api.bulkGet=adapterFun("bulkGet",(function(opts2,callback2){async function doBulkGet(cb2){const params={};opts2.revs&&(params.revs=!0);opts2.attachments&&(params.attachments=!0);opts2.latest&&(params.latest=!0);try{const result=await fetchJSON(genDBUrl(host,"_bulk_get"+paramsToStr(params)),{method:"POST",body:JSON.stringify({docs:opts2.docs})});opts2.attachments&&opts2.binary&&result.data.results.forEach((function(res2){res2.docs.forEach(readAttachmentsAsBlobOrBuffer)}));cb2(null,result.data)}catch(error){cb2(error)}}function doBulkGetShim(){function onResult(batchNum){return function(err2,res2){results[batchNum]=res2.results;++numDone===numBatches&&callback2(null,{results:results.flat()})}}const batchSize=MAX_SIMULTANEOUS_REVS,numBatches=Math.ceil(opts2.docs.length/batchSize);let numDone=0;const results=new Array(numBatches);for(let i2=0;i2<numBatches;i2++){const subOpts=pick(opts2,["revs","attachments","binary","latest"]);subOpts.docs=opts2.docs.slice(i2*batchSize,Math.min(opts2.docs.length,(i2+1)*batchSize));bulkGet(self3,subOpts,onResult(i2))}}const self3=this,dbUrl2=genUrl(host,""),supportsBulkGet=supportsBulkGetMap[dbUrl2];"boolean"!=typeof supportsBulkGet?doBulkGet((function(err2,res2){if(err2){supportsBulkGetMap[dbUrl2]=!1;explainError(err2.status,"PouchDB is just detecting if the remote supports the _bulk_get API.");doBulkGetShim()}else{supportsBulkGetMap[dbUrl2]=!0;callback2(null,res2)}})):supportsBulkGet?doBulkGet(callback2):doBulkGetShim()}));api._info=async function(callback2){try{await setup2();const response=await ourFetch(genDBUrl(host,"")),info3=await response.json();info3.host=genDBUrl(host,"");callback2(null,info3)}catch(err2){callback2(err2)}};api.fetch=async function(path2,options){await setup2();const url="/"===path2.substring(0,1)?genUrl(host,path2.substring(1)):genDBUrl(host,path2);return ourFetch(url,options)};api.get=adapterFun$$1("get",(async function(id,opts2,callback2){function fetchAttachments(doc){const atts=doc._attachments,filenames=atts&&Object.keys(atts);if(atts&&filenames.length)return function pool(promiseFactories,limit){return new Promise((function(resolve,reject){function runNext(){running2++;promiseFactories[current++]().then(onSuccess,onError)}function doNext(){++done===len?err2?reject(err2):resolve():runNextBatch()}function onSuccess(){running2--;doNext()}function onError(thisErr){running2--;err2=err2||thisErr;doNext()}function runNextBatch(){for(;running2<limit&¤t<len;)runNext()}var err2,running2=0,current=0,done=0,len=promiseFactories.length;runNextBatch()}))}(filenames.map((function(filename){return function(){return async function fetchData(filename){const att=atts[filename],path2=encodeDocId(doc._id)+"/"+encodeAttachmentId(filename)+"?rev="+doc._rev,response=await ourFetch(genDBUrl(host,path2));let blob,data;blob="buffer"in response?await response.buffer():await response.blob();if(opts2.binary){const typeFieldDescriptor=Object.getOwnPropertyDescriptor(blob.__proto__,"type");typeFieldDescriptor&&!typeFieldDescriptor.set||(blob.type=att.content_type);data=blob}else data=await new Promise((function(resolve){blobToBase64(blob,resolve)}));delete att.stub;delete att.length;att.data=data}(filename)}})),5)}if("function"==typeof opts2){callback2=opts2;opts2={}}const params={};(opts2=clone2(opts2)).revs&&(params.revs=!0);opts2.revs_info&&(params.revs_info=!0);opts2.latest&&(params.latest=!0);if(opts2.open_revs){"all"!==opts2.open_revs&&(opts2.open_revs=JSON.stringify(opts2.open_revs));params.open_revs=opts2.open_revs}opts2.rev&&(params.rev=opts2.rev);opts2.conflicts&&(params.conflicts=opts2.conflicts);opts2.update_seq&&(params.update_seq=opts2.update_seq);id=encodeDocId(id);const url=genDBUrl(host,id+paramsToStr(params));try{const res2=await fetchJSON(url);opts2.attachments&&await function fetchAllAttachments(docOrDocs){return Array.isArray(docOrDocs)?Promise.all(docOrDocs.map((function(doc){if(doc.ok)return fetchAttachments(doc.ok)}))):fetchAttachments(docOrDocs)}(res2.data);callback2(null,res2.data)}catch(error){error.docId=id;callback2(error)}}));api.remove=adapterFun$$1("remove",(async function(docOrId,optsOrRev,opts2,cb2){let doc;if("string"==typeof optsOrRev){doc={_id:docOrId,_rev:optsOrRev};if("function"==typeof opts2){cb2=opts2;opts2={}}}else{doc=docOrId;if("function"==typeof optsOrRev){cb2=optsOrRev;opts2={}}else{cb2=opts2;opts2=optsOrRev}}const rev3=doc._rev||opts2.rev,url=genDBUrl(host,encodeDocId(doc._id))+"?rev="+rev3;try{cb2(null,(await fetchJSON(url,{method:"DELETE"})).data)}catch(error){cb2(error)}}));api.getAttachment=adapterFun$$1("getAttachment",(async function(docId,attachmentId,opts2,callback2){if("function"==typeof opts2){callback2=opts2;opts2={}}const params=opts2.rev?"?rev="+opts2.rev:"",url=genDBUrl(host,encodeDocId(docId))+"/"+encodeAttachmentId(attachmentId)+params;let contentType;try{const response=await ourFetch(url,{method:"GET"});if(!response.ok)throw response;contentType=response.headers.get("content-type");let blob;blob="undefined"==typeof process||process.browser||"function"!=typeof response.buffer?await response.blob():await response.buffer();if("undefined"!=typeof process&&!process.browser){const typeFieldDescriptor=Object.getOwnPropertyDescriptor(blob.__proto__,"type");typeFieldDescriptor&&!typeFieldDescriptor.set||(blob.type=contentType)}callback2(null,blob)}catch(err2){callback2(err2)}}));api.removeAttachment=adapterFun$$1("removeAttachment",(async function(docId,attachmentId,rev3,callback2){const url=genDBUrl(host,encodeDocId(docId)+"/"+encodeAttachmentId(attachmentId))+"?rev="+rev3;try{callback2(null,(await fetchJSON(url,{method:"DELETE"})).data)}catch(error){callback2(error)}}));api.putAttachment=adapterFun$$1("putAttachment",(async function(docId,attachmentId,rev3,blob,type,callback2){if("function"==typeof type){callback2=type;type=blob;blob=rev3;rev3=null}const id=encodeDocId(docId)+"/"+encodeAttachmentId(attachmentId);let url=genDBUrl(host,id);rev3&&(url+="?rev="+rev3);if("string"==typeof blob){let binary;try{binary=thisAtob(blob)}catch(err2){return callback2(createError(BAD_ARG,"Attachment is not a valid base64 string"))}blob=binary?binStringToBluffer(binary,type):""}try{callback2(null,(await fetchJSON(url,{headers:new h2({"Content-Type":type}),method:"PUT",body:blob})).data)}catch(error){callback2(error)}}));api._bulkDocs=async function(req,opts2,callback2){req.new_edits=opts2.new_edits;try{await setup2();await Promise.all(req.docs.map(preprocessAttachments2));callback2(null,(await fetchJSON(genDBUrl(host,"_bulk_docs"),{method:"POST",body:JSON.stringify(req)})).data)}catch(error){callback2(error)}};api._put=async function(doc,opts2,callback2){try{await setup2();await preprocessAttachments2(doc);callback2(null,(await fetchJSON(genDBUrl(host,encodeDocId(doc._id)),{method:"PUT",body:JSON.stringify(doc)})).data)}catch(error){error.docId=doc&&doc._id;callback2(error)}};api.allDocs=adapterFun$$1("allDocs",(async function(opts2,callback2){if("function"==typeof opts2){callback2=opts2;opts2={}}const params={};let body,method="GET";(opts2=clone2(opts2)).conflicts&&(params.conflicts=!0);opts2.update_seq&&(params.update_seq=!0);opts2.descending&&(params.descending=!0);opts2.include_docs&&(params.include_docs=!0);opts2.attachments&&(params.attachments=!0);opts2.key&&(params.key=JSON.stringify(opts2.key));opts2.start_key&&(opts2.startkey=opts2.start_key);opts2.startkey&&(params.startkey=JSON.stringify(opts2.startkey));opts2.end_key&&(opts2.endkey=opts2.end_key);opts2.endkey&&(params.endkey=JSON.stringify(opts2.endkey));void 0!==opts2.inclusive_end&&(params.inclusive_end=!!opts2.inclusive_end);void 0!==opts2.limit&&(params.limit=opts2.limit);void 0!==opts2.skip&&(params.skip=opts2.skip);const paramStr=paramsToStr(params);if(void 0!==opts2.keys){method="POST";body={keys:opts2.keys}}try{const result=await fetchJSON(genDBUrl(host,"_all_docs"+paramStr),{method,body:JSON.stringify(body)});opts2.include_docs&&opts2.attachments&&opts2.binary&&result.data.rows.forEach(readAttachmentsAsBlobOrBuffer);callback2(null,result.data)}catch(error){callback2(error)}}));api._changes=function(opts2){const batchSize="batch_size"in opts2?opts2.batch_size:CHANGES_BATCH_SIZE;(opts2=clone2(opts2)).continuous&&!("heartbeat"in opts2)&&(opts2.heartbeat=DEFAULT_HEARTBEAT);let requestTimeout2="timeout"in opts2?opts2.timeout:3e4;"timeout"in opts2&&opts2.timeout&&requestTimeout2-opts2.timeout<CHANGES_TIMEOUT_BUFFER&&(requestTimeout2=opts2.timeout+CHANGES_TIMEOUT_BUFFER);"heartbeat"in opts2&&opts2.heartbeat&&requestTimeout2-opts2.heartbeat<CHANGES_TIMEOUT_BUFFER&&(requestTimeout2=opts2.heartbeat+CHANGES_TIMEOUT_BUFFER);const params={};"timeout"in opts2&&opts2.timeout&&(params.timeout=opts2.timeout);const limit=void 0!==opts2.limit&&opts2.limit;let leftToFetch=limit;opts2.style&&(params.style=opts2.style);(opts2.include_docs||opts2.filter&&"function"==typeof opts2.filter)&&(params.include_docs=!0);opts2.attachments&&(params.attachments=!0);opts2.continuous&&(params.feed="longpoll");opts2.seq_interval&&(params.seq_interval=opts2.seq_interval);opts2.conflicts&&(params.conflicts=!0);opts2.descending&&(params.descending=!0);opts2.update_seq&&(params.update_seq=!0);"heartbeat"in opts2&&opts2.heartbeat&&(params.heartbeat=opts2.heartbeat);opts2.filter&&"string"==typeof opts2.filter&&(params.filter=opts2.filter);if(opts2.view&&"string"==typeof opts2.view){params.filter="_view";params.view=opts2.view}if(opts2.query_params&&"object"==typeof opts2.query_params)for(const param_name in opts2.query_params)Object.prototype.hasOwnProperty.call(opts2.query_params,param_name)&&(params[param_name]=opts2.query_params[param_name]);let body,method="GET";if(opts2.doc_ids){params.filter="_doc_ids";method="POST";body={doc_ids:opts2.doc_ids}}else if(opts2.selector){params.filter="_selector";method="POST";body={selector:opts2.selector}}const controller=new AbortController;let lastFetchedSeq;const fetchData=async function(since,callback2){if(opts2.aborted)return;params.since=since;"object"==typeof params.since&&(params.since=JSON.stringify(params.since));opts2.descending?limit&&(params.limit=leftToFetch):params.limit=!limit||leftToFetch>batchSize?batchSize:leftToFetch;const url=genDBUrl(host,"_changes"+paramsToStr(params)),fetchOpts={signal:controller.signal,method,body:JSON.stringify(body)};lastFetchedSeq=since;if(!opts2.aborted)try{await setup2();callback2(null,(await fetchJSON(url,fetchOpts)).data)}catch(error){callback2(error)}},results={results:[]},fetched=function(err2,res2){if(opts2.aborted)return;let raw_results_length=0;if(res2&&res2.results){raw_results_length=res2.results.length;results.last_seq=res2.last_seq;let pending2=null,lastSeq=null;"number"==typeof res2.pending&&(pending2=res2.pending);"string"!=typeof results.last_seq&&"number"!=typeof results.last_seq||(lastSeq=results.last_seq);({}).query=opts2.query_params;res2.results=res2.results.filter((function(c3){leftToFetch--;const ret=filterChange(opts2)(c3);if(ret){opts2.include_docs&&opts2.attachments&&opts2.binary&&readAttachmentsAsBlobOrBuffer(c3);opts2.return_docs&&results.results.push(c3);opts2.onChange(c3,pending2,lastSeq)}return ret}))}else if(err2){opts2.aborted=!0;opts2.complete(err2);return}res2&&res2.last_seq&&(lastFetchedSeq=res2.last_seq);const finished=limit&&leftToFetch<=0||res2&&raw_results_length<batchSize||opts2.descending;(!opts2.continuous||limit&&leftToFetch<=0)&&finished?opts2.complete(null,results):nextTick2((function(){fetchData(lastFetchedSeq,fetched)}))};fetchData(opts2.since||0,fetched);return{cancel:function(){opts2.aborted=!0;controller.abort()}}};api.revsDiff=adapterFun$$1("revsDiff",(async function(req,opts2,callback2){if("function"==typeof opts2){callback2=opts2;opts2={}}try{callback2(null,(await fetchJSON(genDBUrl(host,"_revs_diff"),{method:"POST",body:JSON.stringify(req)})).data)}catch(error){callback2(error)}}));api._close=function(callback2){callback2()};api._destroy=async function(options,callback2){try{callback2(null,await fetchJSON(genDBUrl(host,""),{method:"DELETE"}))}catch(error){404===error.status?callback2(null,{ok:!0}):callback2(error)}}}function promisedCallback(promise,callback){callback&&promise.then((function(res2){nextTick2((function(){callback(null,res2)}))}),(function(reason){nextTick2((function(){callback(reason)}))}));return promise}function sequentialize(queue2,promiseFactory){return function(){var args=arguments,that=this;return queue2.add((function(){return promiseFactory.apply(that,args)}))}}function uniq(arr){var theSet=new Set(arr),result=new Array(theSet.size),index6=-1;theSet.forEach((function(value){result[++index6]=value}));return result}function mapToKeysArray(map3){var result=new Array(map3.size),index6=-1;map3.forEach((function(value,key2){result[++index6]=key2}));return result}function stringify3(input){if(!input)return"undefined";switch(typeof input){case"function":return input.toString();case"string":return input.toString();default:return JSON.stringify(input)}}async function createView2(sourceDB,viewName,mapFun,reduceFun,temporary,localDocName2){const viewSignature=function createViewSignature(mapFun,reduceFun){return stringify3(mapFun)+stringify3(reduceFun)+"undefined"}(mapFun,reduceFun);let cachedViews;if(!temporary){cachedViews=sourceDB._cachedViews=sourceDB._cachedViews||{};if(cachedViews[viewSignature])return cachedViews[viewSignature]}const promiseForView=sourceDB.info().then((async function(info3){const depDbName=info3.db_name+"-mrview-"+(temporary?"temp":function stringMd54(string){return import_spark_md54.default.hash(string)}(viewSignature));await upsert2(sourceDB,"_local/"+localDocName2,(function diffFunction(doc){doc.views=doc.views||{};let fullViewName=viewName;-1===fullViewName.indexOf("/")&&(fullViewName=viewName+"/"+viewName);const depDbs=doc.views[fullViewName]=doc.views[fullViewName]||{};if(!depDbs[depDbName]){depDbs[depDbName]=!0;return doc}}));const db=(await sourceDB.registerDependentDatabase(depDbName)).db;db.auto_compaction=!0;const view={name:depDbName,db,sourceDB,adapter:sourceDB.adapter,mapFun,reduceFun};let lastSeqDoc;try{lastSeqDoc=await view.db.get("_local/lastSeq")}catch(err2){if(404!==err2.status)throw err2}view.seq=lastSeqDoc?lastSeqDoc.seq:0;cachedViews&&view.db.once("destroyed",(function(){delete cachedViews[viewSignature]}));return view}));cachedViews&&(cachedViews[viewSignature]=promiseForView);return promiseForView}function parseViewName(name){return-1===name.indexOf("/")?[name,name]:name.split("/")}function emitError(db,e3,data){try{db.emit("error",e3)}catch(err2){guardedConsole("error","The user's map/reduce function threw an uncaught error.\nYou can debug this error by doing:\nmyDatabase.on('error', function (err) { debugger; });\nPlease double-check your map/reduce function.");guardedConsole("error",e3,data)}}function createBuiltInError(name){return new BuiltInError("builtin "+name+" function requires map values to be numbers or number arrays")}function sum(values){var i2,len,num2,j2,jLen,jNum,result=0;for(i2=0,len=values.length;i2<len;i2++)if("number"!=typeof(num2=values[i2])){if(!Array.isArray(num2))throw createBuiltInError("_sum");result="number"==typeof result?[result]:result;for(j2=0,jLen=num2.length;j2<jLen;j2++){if("number"!=typeof(jNum=num2[j2]))throw createBuiltInError("_sum");void 0===result[j2]?result.push(jNum):result[j2]+=jNum}}else"number"==typeof result?result+=num2:result[0]+=num2;return result}function evalFunctionWithEval(func,emit2){return scopeEval("return ("+func.replace(/;\s*$/,"")+");",{emit:emit2,sum,log,isArray,toJSON})}function updateCheckpoint(db,id,checkpoint,session,returnValue){return db.get(id).catch((function(err2){if(404===err2.status){"http"!==db.adapter&&"https"!==db.adapter||explainError(404,"PouchDB is just checking if a remote checkpoint exists.");return{session_id:session,_id:id,history:[],replicator:REPLICATOR,version:CHECKPOINT_VERSION}}throw err2})).then((function(doc){if(!returnValue.cancelled&&doc.last_seq!==checkpoint){doc.history=(doc.history||[]).filter((function(item){return item.session_id!==session}));doc.history.unshift({last_seq:checkpoint,session_id:session});doc.history=doc.history.slice(0,CHECKPOINT_HISTORY_SIZE);doc.version=CHECKPOINT_VERSION;doc.replicator=REPLICATOR;doc.session_id=session;doc.last_seq=checkpoint;return db.put(doc).catch((function(err2){if(409===err2.status)return updateCheckpoint(db,id,checkpoint,session,returnValue);throw err2}))}}))}function compareReplicationLogs(srcDoc,tgtDoc){return srcDoc.session_id===tgtDoc.session_id?{last_seq:srcDoc.last_seq,history:srcDoc.history}:compareReplicationHistory(srcDoc.history,tgtDoc.history)}function compareReplicationHistory(sourceHistory,targetHistory){var S2=sourceHistory[0],sourceRest=sourceHistory.slice(1),T2=targetHistory[0],targetRest=targetHistory.slice(1);return S2&&0!==targetHistory.length?hasSessionId(S2.session_id,targetHistory)?{last_seq:S2.last_seq,history:sourceHistory}:hasSessionId(T2.session_id,sourceRest)?{last_seq:T2.last_seq,history:targetRest}:compareReplicationHistory(sourceRest,targetRest):{last_seq:LOWEST_SEQ,history:[]}}function hasSessionId(sessionId,history){var props=history[0],rest=history.slice(1);return!(!sessionId||0===history.length)&&(sessionId===props.session_id||hasSessionId(sessionId,rest))}function isForbiddenError(err2){return"number"==typeof err2.status&&4===Math.floor(err2.status/100)}function appendBlob5(buffer,blob,start,end,callback){(start>0||end<blob.size)&&(blob=blob.slice(start,end));readAsArrayBuffer(blob,(function(arrayBuffer){buffer.append(arrayBuffer);callback()}))}function appendString5(buffer,string,start,end,callback){(start>0||end<string.length)&&(string=string.substring(start,end));buffer.appendBinary(string);callback()}function getDocAttachments(db,doc){var filenames=Object.keys(doc._attachments);return Promise.all(filenames.map((function(filename){return db.getAttachment(doc._id,filename,{rev:doc._rev})})))}function replicate(src,target,opts,returnValue,result){function initCheckpointer(){return checkpointer?Promise.resolve():index_es_default7(src,target,opts).then((function(res2){repId=res2;var checkpointOpts;checkpointOpts=!1===opts.checkpoint?{writeSourceCheckpoint:!1,writeTargetCheckpoint:!1}:"source"===opts.checkpoint?{writeSourceCheckpoint:!0,writeTargetCheckpoint:!1}:"target"===opts.checkpoint?{writeSourceCheckpoint:!1,writeTargetCheckpoint:!0}:{writeSourceCheckpoint:!0,writeTargetCheckpoint:!0};checkpointer=new index_es_default6(src,target,repId,returnValue,checkpointOpts)}))}function writeDocs(){var docs,bulkOpts;changedDocs=[];if(0!==currentBatch.docs.length){docs=currentBatch.docs;bulkOpts={timeout:opts.timeout};return target.bulkDocs({docs,new_edits:!1},bulkOpts).then((function(res2){var errorsById,errorsNo;if(returnValue.cancelled){completeReplication();throw new Error("cancelled")}errorsById=Object.create(null);res2.forEach((function(res3){res3.error&&(errorsById[res3.id]=res3)}));errorsNo=Object.keys(errorsById).length;result.doc_write_failures+=errorsNo;result.docs_written+=docs.length-errorsNo;docs.forEach((function(doc){var errorName,error=errorsById[doc._id];if(error){result.errors.push(error);if("unauthorized"!==(errorName=(error.name||"").toLowerCase())&&"forbidden"!==errorName)throw error;returnValue.emit("denied",clone2(error))}else changedDocs.push(doc)}))}),(function(err2){result.doc_write_failures+=docs.length;throw err2}))}}function finishBatch(){if(currentBatch.error)throw new Error("There was a problem getting docs.");result.last_seq=last_seq=currentBatch.seq;var outResult=clone2(result);if(changedDocs.length){outResult.docs=changedDocs;if("number"==typeof currentBatch.pending){outResult.pending=currentBatch.pending;delete currentBatch.pending}returnValue.emit("change",outResult)}writingCheckpoint=!0;src.info().then((function(info3){var completed,total_items,task=src.activeTasks.get(taskId);if(currentBatch&&task){completed=task.completed_items||0;total_items=parseInt(info3.update_seq,10)-parseInt(initial_last_seq,10);src.activeTasks.update(taskId,{completed_items:completed+currentBatch.changes.length,total_items})}}));return checkpointer.writeCheckpoint(currentBatch.seq,session).then((function(){returnValue.emit("checkpoint",{checkpoint:currentBatch.seq});writingCheckpoint=!1;if(returnValue.cancelled){completeReplication();throw new Error("cancelled")}currentBatch=void 0;getChanges()})).catch((function(err2){onCheckpointError(err2);throw err2}))}function getBatchDocs(){return function getDocs(src,target,diffs,state2){diffs=clone2(diffs);var resultDocs=[],ok=!0;return Promise.resolve().then((function getAllDocs(){var bulkGetOpts=function createBulkGetOpts(diffs){var requests=[];Object.keys(diffs).forEach((function(id){diffs[id].missing.forEach((function(missingRev){requests.push({id,rev:missingRev})}))}));return{docs:requests,revs:!0,latest:!0}}(diffs);if(bulkGetOpts.docs.length)return src.bulkGet(bulkGetOpts).then((function(bulkGetResponse){if(state2.cancelled)throw new Error("cancelled");return Promise.all(bulkGetResponse.results.map((function(bulkGetInfo){return Promise.all(bulkGetInfo.docs.map((function(doc){var remoteDoc=doc.ok;doc.error&&(ok=!1);return remoteDoc&&remoteDoc._attachments?function getDocAttachmentsFromTargetOrSource(target,src,doc){var doCheckForLocalAttachments=isRemote(src)&&!isRemote(target),filenames=Object.keys(doc._attachments);return doCheckForLocalAttachments?target.get(doc._id).then((function(localDoc){return Promise.all(filenames.map((function(filename){return function fileHasChanged(localDoc,remoteDoc,filename){return!localDoc._attachments||!localDoc._attachments[filename]||localDoc._attachments[filename].digest!==remoteDoc._attachments[filename].digest}(localDoc,doc,filename)?src.getAttachment(doc._id,filename):target.getAttachment(localDoc._id,filename)})))})).catch((function(error){if(404!==error.status)throw error;return getDocAttachments(src,doc)})):getDocAttachments(src,doc)}(target,src,remoteDoc).then((attachments=>{var filenames=Object.keys(remoteDoc._attachments);attachments.forEach((function(attachment,i2){var att=remoteDoc._attachments[filenames[i2]];delete att.stub;delete att.length;att.data=attachment}));return remoteDoc})):remoteDoc})))}))).then((function(results){resultDocs=resultDocs.concat(results.flat().filter(Boolean))}))}))})).then((function returnResult(){return{ok,docs:resultDocs}}))}(src,target,currentBatch.diffs,returnValue).then((function(got){currentBatch.error=!got.ok;got.docs.forEach((function(doc){delete currentBatch.diffs[doc._id];result.docs_read++;currentBatch.docs.push(doc)}))}))}function startNextBatch(){if(!returnValue.cancelled&&!currentBatch)if(0!==batches.length){currentBatch=batches.shift();returnValue.emit("checkpoint",{start_next_batch:currentBatch.seq});(function getDiffs(){var diff={};currentBatch.changes.forEach((function(change){returnValue.emit("checkpoint",{revs_diff:change});"_user/"!==change.id&&(diff[change.id]=change.changes.map((function(x2){return x2.rev})))}));return target.revsDiff(diff).then((function(diffs){if(returnValue.cancelled){completeReplication();throw new Error("cancelled")}currentBatch.diffs=diffs}))})().then(getBatchDocs).then(writeDocs).then(finishBatch).then(startNextBatch).catch((function(err2){abortReplication("batch processing terminated with error",err2)}))}else processPendingBatch(!0)}function processPendingBatch(immediate){if(0!==pendingBatch.changes.length){if(immediate||changesCompleted||pendingBatch.changes.length>=batch_size){batches.push(pendingBatch);pendingBatch={seq:0,changes:[],docs:[]};if("pending"===returnValue.state||"stopped"===returnValue.state){returnValue.state="active";returnValue.emit("active")}startNextBatch()}}else if(0===batches.length&&!currentBatch){if(continuous&&changesOpts.live||changesCompleted){returnValue.state="pending";returnValue.emit("paused")}changesCompleted&&completeReplication()}}function abortReplication(reason,err2){if(!replicationCompleted){err2.message||(err2.message=reason);result.ok=!1;result.status="aborting";batches=[];pendingBatch={seq:0,changes:[],docs:[]};completeReplication(err2)}}function completeReplication(fatalError){if(!replicationCompleted){if(returnValue.cancelled){result.status="cancelled";if(writingCheckpoint)return}result.status=result.status||"complete";result.end_time=(new Date).toISOString();result.last_seq=last_seq;replicationCompleted=!0;src.activeTasks.remove(taskId,fatalError);if(fatalError){(fatalError=createError(fatalError)).result=result;var errorName=(fatalError.name||"").toLowerCase();if("unauthorized"===errorName||"forbidden"===errorName){returnValue.emit("error",fatalError);returnValue.removeAllListeners()}else(function backOff(opts,returnValue,error,callback){var backOffSet,removeBackOffSetter;if(!1!==opts.retry){"function"!=typeof opts.back_off_function&&(opts.back_off_function=defaultBackOff);returnValue.emit("requestError",error);if("active"===returnValue.state||"pending"===returnValue.state){returnValue.emit("paused",error);returnValue.state="stopped";backOffSet=function backoffTimeSet(){opts.current_back_off=STARTING_BACK_OFF};removeBackOffSetter=function removeBackOffTimeSet(){returnValue.removeListener("active",backOffSet)};returnValue.once("paused",removeBackOffSetter);returnValue.once("active",backOffSet)}opts.current_back_off=opts.current_back_off||STARTING_BACK_OFF;opts.current_back_off=opts.back_off_function(opts.current_back_off);setTimeout(callback,opts.current_back_off)}else{returnValue.emit("error",error);returnValue.removeAllListeners()}})(opts,returnValue,fatalError,(function(){replicate(src,target,opts,returnValue)}))}else{returnValue.emit("complete",result);returnValue.removeAllListeners()}}}function onChange(change,pending2,lastSeq){var task,completed;if(returnValue.cancelled)return completeReplication();"number"==typeof pending2&&(pendingBatch.pending=pending2);if(filterChange(opts)(change)){pendingBatch.seq=change.seq||lastSeq;pendingBatch.changes.push(change);returnValue.emit("checkpoint",{pending_batch:pendingBatch.seq});nextTick2((function(){processPendingBatch(0===batches.length&&changesOpts.live)}))}else if(task=src.activeTasks.get(taskId)){completed=task.completed_items||0;src.activeTasks.update(taskId,{completed_items:++completed})}}function onChangesComplete(changes3){changesPending=!1;if(returnValue.cancelled)return completeReplication();if(changes3.results.length>0){changesOpts.since=changes3.results[changes3.results.length-1].seq;getChanges();processPendingBatch(!0)}else{var complete=function(){if(continuous){changesOpts.live=!0;getChanges()}else changesCompleted=!0;processPendingBatch(!0)};if(currentBatch||0!==changes3.results.length)complete();else{writingCheckpoint=!0;checkpointer.writeCheckpoint(changes3.last_seq,session).then((function(){writingCheckpoint=!1;result.last_seq=last_seq=changes3.last_seq;if(returnValue.cancelled){completeReplication();throw new Error("cancelled")}complete()})).catch(onCheckpointError)}}}function onChangesError(err2){changesPending=!1;if(returnValue.cancelled)return completeReplication();abortReplication("changes rejected",err2)}function getChanges(){function abortChanges(){changes3.cancel()}function removeListener(){returnValue.removeListener("cancel",abortChanges)}if(!changesPending&&!changesCompleted&&batches.length<batches_limit){changesPending=!0;if(returnValue._changes){returnValue.removeListener("cancel",returnValue._abortChanges);returnValue._changes.cancel()}returnValue.once("cancel",abortChanges);var changes3=src.changes(changesOpts).on("change",onChange);changes3.then(removeListener,removeListener);changes3.then(onChangesComplete).catch(onChangesError);if(opts.retry){returnValue._changes=changes3;returnValue._abortChanges=abortChanges}}}function createTask(checkpoint){return src.info().then((function(info3){var total_items=void 0===opts.since?parseInt(info3.update_seq,10)-parseInt(checkpoint,10):parseInt(info3.update_seq,10);taskId=src.activeTasks.add({name:`${continuous?"continuous ":""}replication from ${info3.db_name}`,total_items});return checkpoint}))}function startChanges(){initCheckpointer().then((function(){if(!returnValue.cancelled)return checkpointer.getCheckpoint().then(createTask).then((function(checkpoint){initial_last_seq=checkpoint;changesOpts={since:last_seq=checkpoint,limit:batch_size,batch_size,style,doc_ids,selector,return_docs:!0};opts.filter&&("string"!=typeof opts.filter?changesOpts.include_docs=!0:changesOpts.filter=opts.filter);"heartbeat"in opts&&(changesOpts.heartbeat=opts.heartbeat);"timeout"in opts&&(changesOpts.timeout=opts.timeout);opts.query_params&&(changesOpts.query_params=opts.query_params);opts.view&&(changesOpts.view=opts.view);getChanges()}));completeReplication()})).catch((function(err2){abortReplication("getCheckpoint rejected with ",err2)}))}function onCheckpointError(err2){writingCheckpoint=!1;abortReplication("writeCheckpoint completed with error",err2)}var currentBatch,repId,checkpointer,taskId,changesOpts,batches=[],pendingBatch={seq:0,changes:[],docs:[]},writingCheckpoint=!1,changesCompleted=!1,replicationCompleted=!1,initial_last_seq=0,last_seq=0,continuous=opts.continuous||opts.live||!1,batch_size=opts.batch_size||100,batches_limit=opts.batches_limit||10,style=opts.style||"all_docs",changesPending=!1,doc_ids=opts.doc_ids,selector=opts.selector,changedDocs=[],session=uuid();result=result||{ok:!0,start_time:(new Date).toISOString(),docs_read:0,docs_written:0,doc_write_failures:0,errors:[]};changesOpts={};returnValue.ready(src,target);if(returnValue.cancelled)completeReplication();else{if(!returnValue._addedListeners){returnValue.once("cancel",completeReplication);if("function"==typeof opts.complete){returnValue.once("error",opts.complete);returnValue.once("complete",(function(result2){opts.complete(null,result2)}))}returnValue._addedListeners=!0}void 0===opts.since?startChanges():initCheckpointer().then((function(){writingCheckpoint=!0;return checkpointer.writeCheckpoint(opts.since,session)})).then((function(){writingCheckpoint=!1;if(returnValue.cancelled)completeReplication();else{last_seq=opts.since;startChanges()}})).catch(onCheckpointError)}}function toPouch(db,opts){var PouchConstructor=opts.PouchConstructor;return"string"==typeof db?new PouchConstructor(db,opts):db}function replicateWrapper(src,target,opts,callback){var replicateRet;if("function"==typeof opts){callback=opts;opts={}}void 0===opts&&(opts={});if(opts.doc_ids&&!Array.isArray(opts.doc_ids))throw createError(BAD_REQUEST,"`doc_ids` filter parameter is not a list.");opts.complete=callback;(opts=clone2(opts)).continuous=opts.continuous||opts.live;opts.retry="retry"in opts&&opts.retry;opts.PouchConstructor=opts.PouchConstructor||this;replicateRet=new Replication(opts);replicate(toPouch(src,opts),toPouch(target,opts),opts,replicateRet);return replicateRet}function sync(src,target,opts,callback){if("function"==typeof opts){callback=opts;opts={}}void 0===opts&&(opts={});(opts=clone2(opts)).PouchConstructor=opts.PouchConstructor||this;src=toPouch(src,opts);target=toPouch(target,opts);return new Sync(src,target,opts,callback)}function mergeObjects(arr){const res2={};for(const element2 of arr)Object.assign(res2,element2);return res2}function oneArrayIsSubArrayOfOther(left,right){for(let i2=0,len=Math.min(left.length,right.length);i2<len;i2++)if(left[i2]!==right[i2])return!1;return!0}function arrayEquals(arr1,arr2){if(arr1.length!==arr2.length)return!1;for(let i2=0,len=arr1.length;i2<len;i2++)if(arr1[i2]!==arr2[i2])return!1;return!0}function resolveToCallback(fun){return function(...args){const maybeCallback=args[args.length-1];if("function"!=typeof maybeCallback)return fun.apply(this,args);{const fulfilled=maybeCallback.bind(null,null),rejected=maybeCallback.bind(null);fun.apply(this,args.slice(0,-1)).then(fulfilled,rejected)}}}function massageCreateIndexRequest(requestDef){(requestDef=clone2(requestDef)).index||(requestDef.index={});for(const key2 of["type","name","ddoc"])if(requestDef.index[key2]){requestDef[key2]=requestDef.index[key2];delete requestDef.index[key2]}if(requestDef.fields){requestDef.index.fields=requestDef.fields;delete requestDef.fields}requestDef.type||(requestDef.type="json");return requestDef}function isNonNullObject(value){return"object"==typeof value&&null!==value}function checkFieldValueType(name,value,isHttp){let message="",received=value,addReceived=!0;-1!==["$in","$nin","$or","$and","$mod","$nor","$all"].indexOf(name)&&(Array.isArray(value)||(message="Query operator "+name+" must be an array."));-1!==["$not","$elemMatch","$allMatch"].indexOf(name)&&(!Array.isArray(value)&&isNonNullObject(value)||(message="Query operator "+name+" must be an object."));if("$mod"===name&&Array.isArray(value))if(2!==value.length)message="Query operator $mod must be in the format [divisor, remainder], where divisor and remainder are both integers.";else{const divisor=value[0],mod2=value[1];if(0===divisor){message="Query operator $mod's divisor cannot be 0, cannot divide by zero.";addReceived=!1}if("number"!=typeof divisor||parseInt(divisor,10)!==divisor){message="Query operator $mod's divisor is not an integer.";received=divisor}if(parseInt(mod2,10)!==mod2){message="Query operator $mod's remainder is not an integer.";received=mod2}}"$exists"===name&&"boolean"!=typeof value&&(message="Query operator $exists must be a boolean.");if("$type"===name){const allowed=["null","boolean","number","string","array","object"],allowedStr='"'+allowed.slice(0,allowed.length-1).join('", "')+'", or "'+allowed[allowed.length-1]+'"';("string"!=typeof value||-1==allowed.indexOf(value))&&(message="Query operator $type must be a string. Supported values: "+allowedStr+".")}"$size"===name&&parseInt(value,10)!==value&&(message="Query operator $size must be a integer.");"$regex"===name&&"string"!=typeof value&&(isHttp?message="Query operator $regex must be a string.":value instanceof RegExp||(message="Query operator $regex must be a string or an instance of a javascript regular expression."));if(message){addReceived&&(message+=" Received"+(null===received?" ":Array.isArray(received)?" array":" "+typeof received)+": "+(isNonNullObject(received)?JSON.stringify(received,null,"\t"):received));throw new Error(message)}}function validateSelector(input,isHttp){if(Array.isArray(input))for(const entry of input)isNonNullObject(entry)&&validateSelector(entry,isHttp);else for(const[key2,value]of Object.entries(input)){-1!==requireValidation.indexOf(key2)&&checkFieldValueType(key2,value,isHttp);-1===equalityOperators.indexOf(key2)&&-1===arrayTypeComparisonOperators.indexOf(key2)&&isNonNullObject(value)&&validateSelector(value,isHttp)}}async function dbFetch(db,path2,opts){if(opts.body){opts.body=JSON.stringify(opts.body);opts.headers=new h2({"Content-type":"application/json"})}const response=await db.fetch(path2,opts),json=await response.json();if(!response.ok){json.status=response.status;throw generateErrorFromResponse(createError(json))}return json}async function createIndex(db,requestDef){return await dbFetch(db,"_index",{method:"POST",body:massageCreateIndexRequest(requestDef)})}async function find(db,requestDef){validateSelector(requestDef.selector,!0);return await dbFetch(db,"_find",{method:"POST",body:requestDef})}async function explain(db,requestDef){return await dbFetch(db,"_explain",{method:"POST",body:requestDef})}async function getIndexes(db){return await dbFetch(db,"_index",{method:"GET"})}async function deleteIndex(db,indexDef){const ddoc=indexDef.ddoc,type=indexDef.type||"json",name=indexDef.name;if(!ddoc)throw new Error("you must provide an index's ddoc");if(!name)throw new Error("you must provide an index's name");const url="_index/"+[ddoc,type,name].map(encodeURIComponent).join("/");return await dbFetch(db,url,{method:"DELETE"})}function getDeepValue(value,path2){for(const key2 of path2)if(void 0===(value=value[key2]))return;return value}function abstractMapper$1(db){return db._customFindAbstractMapper?{query:function addQueryFallback(signature,opts){const fallback2=abstractMapper.query.bind(this);return db._customFindAbstractMapper.query.call(this,signature,opts,fallback2)},viewCleanup:function addViewCleanupFallback(){const fallback2=abstractMapper.viewCleanup.bind(this);return db._customFindAbstractMapper.viewCleanup.call(this,fallback2)}}:abstractMapper}function massageIndexDef(indexDef){indexDef.fields=indexDef.fields.map((function(field){if("string"==typeof field){const obj={};obj[field]="asc";return obj}return field}));indexDef.partial_filter_selector&&(indexDef.partial_filter_selector=massageSelector(indexDef.partial_filter_selector));return indexDef}function getKeyFromDoc(doc,index6){return index6.def.fields.map((obj=>{const field=getKey2(obj);return getFieldFromDoc(doc,parseField(field))}))}async function createIndex$1(db,requestDef){function getMd5(){return md5||(md5=function stringMd56(string){return import_spark_md56.default.hash(string)}(JSON.stringify(requestDef)))}const originalIndexDef=clone2((requestDef=massageCreateIndexRequest(requestDef)).index);requestDef.index=massageIndexDef(requestDef.index);(function validateIndex(index6){const ascFields=index6.fields.filter((function(field){return"asc"===getValue(field)}));if(0!==ascFields.length&&ascFields.length!==index6.fields.length)throw new Error("unsupported mixed sorting")})(requestDef.index);let md5;const viewName=requestDef.name||"idx-"+getMd5(),ddocName=requestDef.ddoc||"idx-"+getMd5(),ddocId="_design/"+ddocName;let hasInvalidLanguage=!1,viewExists=!1;db.constructor.emit("debug",["find","creating index",ddocId]);await upsert2(db,ddocId,(function updateDdoc(doc){doc._rev&&"query"!==doc.language&&(hasInvalidLanguage=!0);doc.language="query";doc.views=doc.views||{};viewExists=!!doc.views[viewName];if(viewExists)return!1;doc.views[viewName]={map:{fields:mergeObjects(requestDef.index.fields),partial_filter_selector:requestDef.index.partial_filter_selector},reduce:"_count",options:{def:originalIndexDef}};return doc}));if(hasInvalidLanguage)throw new Error('invalid language for ddoc with id "'+ddocId+'" (should be "query")');const signature=ddocName+"/"+viewName;await abstractMapper$1(db).query.call(db,signature,{limit:0,reduce:!1});return{id:ddocId,name:viewName,result:viewExists?"exists":"created"}}async function getIndexes$1(db){const allDocsRes=await db.allDocs({startkey:"_design/",endkey:"_design/",include_docs:!0}),res2={indexes:[{ddoc:null,name:"_all_docs",type:"special",def:{fields:[{_id:"asc"}]}}]};res2.indexes=flatten(res2.indexes,allDocsRes.rows.filter((function(row){return"query"===row.doc.language})).map((function(row){return(void 0!==row.doc.views?Object.keys(row.doc.views):[]).map((function(viewName){const view=row.doc.views[viewName];return{ddoc:row.id,name:viewName,type:"json",def:massageIndexDef(view.options.def)}}))})));res2.indexes.sort((function(left,right){return compare2(left.name,right.name)}));res2.total_rows=res2.indexes.length;return res2}function checkFieldInIndex(index6,field){return index6.def.fields.some((key2=>getKey2(key2)===field))}function userOperatorLosesPrecision(selector,field){return"$eq"!==getKey2(selector[field])}function sortFieldsByIndex(userFields,index6){const indexFields=index6.def.fields.map(getKey2);return userFields.slice().sort((function(a2,b3){let aIdx=indexFields.indexOf(a2),bIdx=indexFields.indexOf(b3);-1===aIdx&&(aIdx=Number.MAX_VALUE);-1===bIdx&&(bIdx=Number.MAX_VALUE);return compare2(aIdx,bIdx)}))}function getInMemoryFields(coreInMemoryFields,index6,selector,userFields){const result=flatten(coreInMemoryFields,function getBasicInMemoryFields(index6,selector,userFields){let needToFilterInMemory=!1;for(let i2=0,len=(userFields=sortFieldsByIndex(userFields,index6)).length;i2<len;i2++){const field=userFields[i2];if(needToFilterInMemory||!checkFieldInIndex(index6,field))return userFields.slice(i2);i2<len-1&&userOperatorLosesPrecision(selector,field)&&(needToFilterInMemory=!0)}return[]}(index6,selector,userFields),function getInMemoryFieldsFromNe(selector){const fields=[];for(const[field,matcher]of Object.entries(selector))for(const operator of Object.keys(matcher))"$ne"===operator&&fields.push(field);return fields}(selector));return sortFieldsByIndex(function uniq2(arr){return Array.from(new Set(arr))}(result),index6)}function isNonLogicalMatcher(matcher){return-1===logicalMatchers.indexOf(matcher)}function getSingleFieldQueryOptsFor(userOperator,userValue){switch(userOperator){case"$eq":return{key:userValue};case"$lte":return{endkey:userValue};case"$gte":return{startkey:userValue};case"$lt":return{endkey:userValue,inclusive_end:!1};case"$gt":return{startkey:userValue,inclusive_start:!1}}return{startkey:COLLATE_LO}}function getMultiFieldCoreQueryPlan(userOperator,userValue){switch(userOperator){case"$eq":return{startkey:userValue,endkey:userValue};case"$lte":return{endkey:userValue};case"$gte":return{startkey:userValue};case"$lt":return{endkey:userValue,inclusive_end:!1};case"$gt":return{startkey:userValue,inclusive_start:!1}}}async function find$1(db,requestDef,explain2){if(requestDef.selector){validateSelector(requestDef.selector,!1);requestDef.selector=massageSelector(requestDef.selector)}requestDef.sort&&(requestDef.sort=function massageSort(sort){if(!Array.isArray(sort))throw new Error("invalid sort json - should be an array");return sort.map((function(sorting){if("string"==typeof sorting){const obj={};obj[sorting]="asc";return obj}return sorting}))}(requestDef.sort));requestDef.use_index&&(requestDef.use_index=function massageUseIndex(useIndex){let cleanedUseIndex=[];"string"==typeof useIndex?cleanedUseIndex.push(useIndex):cleanedUseIndex=useIndex;return cleanedUseIndex.map((function(name){return name.replace(ddocIdPrefix,"")}))}(requestDef.use_index));"limit"in requestDef||(requestDef.limit=25);(function validateFindRequest(requestDef){if("object"!=typeof requestDef.selector)throw new Error("you must provide a selector when you find()")})(requestDef);const getIndexesRes=await getIndexes$1(db);db.constructor.emit("debug",["find","planning query",requestDef]);const queryPlan=function planQuery(request2,indexes2){const selector=request2.selector,sort=request2.sort;if(function shouldShortCircuit(selector){return Object.keys(selector).map((function(key2){return selector[key2]})).some((function(val2){return"object"==typeof val2&&0===Object.keys(val2).length}))}(selector))return Object.assign({},SHORT_CIRCUIT_QUERY,{index:indexes2[0]});const userFieldsRes=function getUserFields(selector,sort){const selectorFields=Object.keys(selector),sortFields=sort?sort.map(getKey2):[];let userFields;userFields=selectorFields.length>=sortFields.length?selectorFields:sortFields;if(0===sortFields.length)return{fields:userFields};userFields=userFields.sort((function(left,right){let leftIdx=sortFields.indexOf(left);-1===leftIdx&&(leftIdx=Number.MAX_VALUE);let rightIdx=sortFields.indexOf(right);-1===rightIdx&&(rightIdx=Number.MAX_VALUE);return leftIdx<rightIdx?-1:leftIdx>rightIdx?1:0}));return{fields:userFields,sortOrder:sort.map(getKey2)}}(selector,sort),userFields=userFieldsRes.fields,index6=function findBestMatchingIndex(selector,userFields,sortOrder,indexes2,useIndex){const matchingIndexes=function findMatchingIndexes(selector,userFields,sortOrder,indexes2){return indexes2.filter((function(index6){return function checkIndexMatches(index6,sortOrder,fields,selector){const indexFields=index6.def.fields.map(getKey2);return!!function checkIndexFieldsMatch(indexFields,sortOrder,fields){if(sortOrder){const sortMatches=function oneArrayIsStrictSubArrayOfOther(left,right){return!(left.length>right.length)&&oneArrayIsSubArrayOfOther(left,right)}(sortOrder,indexFields),selectorMatches=oneArrayIsSubArrayOfOther(fields,indexFields);return sortMatches&&selectorMatches}return function oneSetIsSubArrayOfOther(left,right){left=left.slice();for(const field of right){if(!left.length)break;const leftIdx=left.indexOf(field);if(-1===leftIdx)return!1;left.splice(leftIdx,1)}return!0}(fields,indexFields)}(indexFields,sortOrder,fields)&&function checkFieldsLogicallySound(indexFields,selector){const matcher=selector[indexFields[0]];return void 0===matcher||!(1===Object.keys(matcher).length&&"$ne"===getKey2(matcher))}(indexFields,selector)}(index6,sortOrder,userFields,selector)}))}(selector,userFields,sortOrder,indexes2);if(0===matchingIndexes.length){if(useIndex)throw{error:"no_usable_index",message:"There is no index available for this selector."};const defaultIndex=indexes2[0];defaultIndex.defaultUsed=!0;return defaultIndex}if(1===matchingIndexes.length&&!useIndex)return matchingIndexes[0];const userFieldsMap=function arrayToObject(arr){const res2={};for(const field of arr)res2[field]=!0;return res2}(userFields);if(useIndex){const useIndexDdoc="_design/"+useIndex[0],useIndexName=2===useIndex.length&&useIndex[1],index6=matchingIndexes.find((function(index7){return!(!useIndexName||index7.ddoc!==useIndexDdoc||useIndexName!==index7.name)||index7.ddoc===useIndexDdoc}));if(!index6)throw{error:"unknown_error",message:"Could not find that index or could not use that index for the query"};return index6}return function max2(arr,fun){let max3=null,maxScore=-1;for(const element2 of arr){const score=fun(element2);if(score>maxScore){maxScore=score;max3=element2}}return max3}(matchingIndexes,(function scoreIndex(index6){const indexFields=index6.def.fields.map(getKey2);let score=0;for(const indexField of indexFields)userFieldsMap[indexField]&&score++;return score}))}(selector,userFields,userFieldsRes.sortOrder,indexes2,request2.use_index),coreQueryPlan=function getCoreQueryPlan(selector,index6){return index6.defaultUsed?function getDefaultQueryPlan(selector){return{queryOpts:{startkey:null},inMemoryFields:[Object.keys(selector)]}}(selector):1===index6.def.fields.length?function getSingleFieldCoreQueryPlan(selector,index6){const field=getKey2(index6.def.fields[0]),matcher=selector[field]||{},inMemoryFields=[],userOperators=Object.keys(matcher);let combinedOpts;for(const userOperator of userOperators){isNonLogicalMatcher(userOperator)&&inMemoryFields.push(field);const newQueryOpts=getSingleFieldQueryOptsFor(userOperator,matcher[userOperator]);combinedOpts=combinedOpts?mergeObjects([combinedOpts,newQueryOpts]):newQueryOpts}return{queryOpts:combinedOpts,inMemoryFields}}(selector,index6):function getMultiFieldQueryOpts(selector,index6){function finish(i2){!1!==inclusiveStart&&startkey.push(COLLATE_LO);!1!==inclusiveEnd&&endkey.push(COLLATE_HI);inMemoryFields=indexFields.slice(i2)}const indexFields=index6.def.fields.map(getKey2);let inMemoryFields=[];const startkey=[],endkey=[];let inclusiveStart,inclusiveEnd;for(let i2=0,len=indexFields.length;i2<len;i2++){const matcher=selector[indexFields[i2]];if(!matcher||!Object.keys(matcher).length){finish(i2);break}if(Object.keys(matcher).some(isNonLogicalMatcher)){finish(i2);break}if(i2>0){const usingGtlt="$gt"in matcher||"$gte"in matcher||"$lt"in matcher||"$lte"in matcher,previousKeys=Object.keys(selector[indexFields[i2-1]]),previousWasEq=arrayEquals(previousKeys,["$eq"]),previousWasSame=arrayEquals(previousKeys,Object.keys(matcher));if(usingGtlt&&!previousWasEq&&!previousWasSame){finish(i2);break}}const userOperators=Object.keys(matcher);let combinedOpts=null;for(const userOperator of userOperators){const newOpts=getMultiFieldCoreQueryPlan(userOperator,matcher[userOperator]);combinedOpts=combinedOpts?mergeObjects([combinedOpts,newOpts]):newOpts}startkey.push("startkey"in combinedOpts?combinedOpts.startkey:COLLATE_LO);endkey.push("endkey"in combinedOpts?combinedOpts.endkey:COLLATE_HI);"inclusive_start"in combinedOpts&&(inclusiveStart=combinedOpts.inclusive_start);"inclusive_end"in combinedOpts&&(inclusiveEnd=combinedOpts.inclusive_end)}const res2={startkey,endkey};void 0!==inclusiveStart&&(res2.inclusive_start=inclusiveStart);void 0!==inclusiveEnd&&(res2.inclusive_end=inclusiveEnd);return{queryOpts:res2,inMemoryFields}}(selector,index6)}(selector,index6);return{queryOpts:coreQueryPlan.queryOpts,index:index6,inMemoryFields:getInMemoryFields(coreQueryPlan.inMemoryFields,index6,selector,userFields)}}(requestDef,getIndexesRes.indexes);db.constructor.emit("debug",["find","query plan",queryPlan]);const indexToUse=queryPlan.index;(function validateSort(requestDef,index6){if(index6.defaultUsed&&requestDef.sort){const noneIdSorts=requestDef.sort.filter((function(sortItem){return"_id"!==Object.keys(sortItem)[0]})).map((function(sortItem){return Object.keys(sortItem)[0]}));if(noneIdSorts.length>0)throw new Error('Cannot sort on field(s) "'+noneIdSorts.join(",")+'" when using the default index')}index6.defaultUsed})(requestDef,indexToUse);let opts=Object.assign({include_docs:!0,reduce:!1,indexes_count:getIndexesRes.total_rows},queryPlan.queryOpts);if("startkey"in opts&&"endkey"in opts&&collate(opts.startkey,opts.endkey)>0)return{docs:[]};if(requestDef.sort&&"string"!=typeof requestDef.sort[0]&&"desc"===getValue(requestDef.sort[0])){opts.descending=!0;opts=function reverseOptions(opts){const newOpts=clone2(opts);delete newOpts.startkey;delete newOpts.endkey;delete newOpts.inclusive_start;delete newOpts.inclusive_end;"endkey"in opts&&(newOpts.startkey=opts.endkey);"startkey"in opts&&(newOpts.endkey=opts.startkey);"inclusive_start"in opts&&(newOpts.inclusive_end=opts.inclusive_start);"inclusive_end"in opts&&(newOpts.inclusive_start=opts.inclusive_end);return newOpts}(opts)}if(!queryPlan.inMemoryFields.length){opts.limit=requestDef.limit;"skip"in requestDef&&(opts.skip=requestDef.skip)}if(explain2)return Promise.resolve(queryPlan,opts);const res2=await async function queryAllOrIndex(db,opts,indexToUse){return"_all_docs"===indexToUse.name?async function doAllDocs(db,originalOpts){const opts=clone2(originalOpts);if(opts.descending){"endkey"in opts&&"string"!=typeof opts.endkey&&(opts.endkey="");"startkey"in opts&&"string"!=typeof opts.startkey&&(opts.limit=0)}else{"startkey"in opts&&"string"!=typeof opts.startkey&&(opts.startkey="");"endkey"in opts&&"string"!=typeof opts.endkey&&(opts.limit=0)}"key"in opts&&"string"!=typeof opts.key&&(opts.limit=0);if(opts.limit>0&&opts.indexes_count){opts.original_limit=opts.limit;opts.limit+=opts.indexes_count}const res2=await db.allDocs(opts);res2.rows=res2.rows.filter((function(row){return!/^_design\//.test(row.id)}));opts.original_limit&&(opts.limit=opts.original_limit);res2.rows=res2.rows.slice(0,opts.limit);return res2}(db,opts):abstractMapper$1(db).query.call(db,function indexToSignature(index6){return index6.ddoc.substring(8)+"/"+index6.name}(indexToUse),opts)}(db,opts,indexToUse);!1===opts.inclusive_start&&(res2.rows=function filterInclusiveStart(rows,targetValue,index6){const indexFields=index6.def.fields;let startAt=0;for(const row of rows){let docKey=getKeyFromDoc(row.doc,index6);if(1===indexFields.length)docKey=docKey[0];else for(;docKey.length>targetValue.length;)docKey.pop();if(Math.abs(collate(docKey,targetValue))>0)break;++startAt}return startAt>0?rows.slice(startAt):rows}(res2.rows,opts.startkey,indexToUse));queryPlan.inMemoryFields.length&&(res2.rows=filterInMemoryFields(res2.rows,requestDef,queryPlan.inMemoryFields));const resp={docs:res2.rows.map((function(row){const doc=row.doc;return requestDef.fields?function pick2(obj,arr){const res2={};for(const field of arr){const parsedField=parseField(field),value=getFieldFromDoc(obj,parsedField);void 0!==value&&setFieldInDoc(res2,parsedField,value)}return res2}(doc,requestDef.fields):doc}))};indexToUse.defaultUsed&&(resp.warning="No matching index found, create an index to optimize query time.");return resp}async function explain$1(db,requestDef){const queryPlan=await find$1(db,requestDef,!0);return{dbname:db.name,index:queryPlan.index,selector:requestDef.selector,range:{start_key:queryPlan.queryOpts.startkey,end_key:queryPlan.queryOpts.endkey},opts:{use_index:requestDef.use_index||[],bookmark:"nil",limit:requestDef.limit,skip:requestDef.skip,sort:requestDef.sort||{},fields:requestDef.fields,conflicts:!1,r:[49]},limit:requestDef.limit,skip:requestDef.skip||0,fields:requestDef.fields}}async function deleteIndex$1(db,index6){if(!index6.ddoc)throw new Error("you must supply an index.ddoc when deleting");if(!index6.name)throw new Error("you must supply an index.name when deleting");const docId=index6.ddoc,viewName=index6.name;await upsert2(db,docId,(function deltaFun(doc){if(1===Object.keys(doc.views).length&&doc.views[viewName])return{_id:docId,_deleted:!0};delete doc.views[viewName];return doc}));await abstractMapper$1(db).viewCleanup.apply(db);return{ok:!0}}function MultipleRegExpControl($$anchor,$$props){var ul,node,li_1,label_1,button_1,li_2,button_2,button_3;push($$props,!1);append_styles($$anchor,$$css6);const statusName=mutable_state(),modified=mutable_state();let patterns=prop($$props,"patterns",28,(()=>[])),originals=prop($$props,"originals",24,(()=>[])),apply3=prop($$props,"apply",8,(_=>Promise.resolve()));legacy_pre_effect((()=>deep_read_state(patterns())),(()=>{set(statusName,patterns().map((e3=>function checkRegExp(pattern){if(""==pattern.trim())return"";try{new RegExp(pattern);return"✔"}catch(ex){return"⚠"}}(e3))))}));legacy_pre_effect((()=>(deep_read_state(patterns()),deep_read_state(originals()))),(()=>{set(modified,patterns().map(((e3,i2)=>{var _a7;return e3!=(null!==(_a7=null===originals()||void 0===originals()?void 0:originals()[i2])&&void 0!==_a7?_a7:"")?"✏ ":""})))}));legacy_pre_effect_reset();init();each(node=child(ul=root5()),1,patterns,index,(($$anchor2,pattern,idx2)=>{var input,button,li=root_110(),label=child(li),text2=child(label);reset(label);remove_input_defaults(input=sibling(label));button=sibling(input,2);reset(li);template_effect((()=>{var _a7,_b3;set_text(text2,`${null!=(_a7=get(modified)[idx2])?_a7:""}${null!=(_b3=get(statusName)[idx2])?_b3:""}`);set_class(input,clsx2(get(modified)[idx2]),"svelte-1xnxxxe")}));bind_value(input,(()=>patterns()[idx2]),($$value=>(patterns()[idx2]=$$value,invalidate_inner_signals((()=>patterns())))));event("click",button,(()=>function remove(idx2){patterns(patterns()[idx2]="",!0)}(idx2)));append($$anchor2,li)}));label_1=child(li_1=sibling(node,2));button_1=child(label_1);reset(label_1);reset(li_1);li_2=sibling(li_1,2);button_2=child(li_2);button_3=sibling(button_2,2);reset(li_2);reset(ul);template_effect(($0=>{button_2.disabled=$0;button_3.disabled=$0}),[()=>get(statusName).some((e3=>"⚠"===e3))||get(modified).every((e3=>""===e3))],derived_safe_equal);event("click",button_1,(()=>function add(){patterns([...patterns(),""])}()));event("click",button_2,(()=>apply3()(patterns())));event("click",button_3,(()=>function revert2(){patterns([...originals()])}()));append($$anchor,ul);pop()}function visibleOnly(cond){return()=>({visibility:cond()})}function enableOnly(cond){return()=>({disabled:!cond()})}function getLevelStr(level){return level==LEVEL_POWER_USER?$msg("obsidianLiveSyncSettingTab.levelPowerUser"):level==LEVEL_ADVANCED?$msg("obsidianLiveSyncSettingTab.levelAdvanced"):level==LEVEL_EDGE_CASE?$msg("obsidianLiveSyncSettingTab.levelEdgeCase"):""}function findAttrFromParent(el,attr2){let current=el;for(;current;){const value=current.getAttribute(attr2);if(value)return value;current=current.parentElement}return""}function wrapMemo(func){let buf;return arg=>{if(buf!==arg){func(arg);buf=arg}}}function isImage(path2){const ext2=path2.split(".").splice(-1)[0].toLowerCase();return["png","jpg","jpeg","gif","bmp","webp"].includes(ext2)}function readDocument(w2){if(0==w2.data.length)return"";if(isImage(w2.path))return new Uint8Array(decodeBinary(w2.data));if("plain"==w2.type||"plain"==w2.datatype)return getDocData(w2.data);if(function isComparableTextDecode(path2){const ext2=path2.split(".").splice(-1)[0].toLowerCase();return["json"].includes(ext2)}(w2.path))return readString(new Uint8Array(decodeBinary(w2.data)));if(function isComparableText(path2){const ext2=path2.split(".").splice(-1)[0].toLowerCase();return isPlainText(path2)||["md","mdx","txt","json"].includes(ext2)}(w2.path))return getDocData(w2.data);try{return readString(new Uint8Array(decodeBinary(w2.data)))}catch(ex){Logger(ex,LOG_LEVEL_VERBOSE)}return getDocData(w2.data)}function GlobalHistory($$anchor,$$props){function mtimeToDate(mtime){return new Date(mtime).toLocaleString()}async function getHistory(showDiffInfo2,showChunkCorrected2,checkStorageDiff2){set(loading,!0);const newDisplay=[],page=await async function fetchChanges(){var _a7,_b3,_c2;try{const db=plugin3().localDatabase;let result=[];for await(const docA of db.findAllNormalDocs()){if(docA.mtime<get(range_from_epoch))continue;if(!isAnyNote(docA))continue;const path2=getPath2(docA),isPlain=isPlainText(docA.path);let p4;const reversedRevs=(null!==(_a7=(await db.getRaw(docA._id,{revs_info:!0}))._revs_info)&&void 0!==_a7?_a7:[]).reverse(),DIFF_DELETE4=-1,DIFF_EQUAL4=0,DIFF_INSERT4=1;for(const revInfo of reversedRevs)if("available"==revInfo.status){const doc=!isPlain&&get(showDiffInfo)||get(checkStorageDiff)&&revInfo.rev==docA._rev?await db.getDBEntry(path2,{rev:revInfo.rev},!1,!1,!0):await db.getDBEntryMeta(path2,{rev:revInfo.rev},!0);if(!1===doc)continue;const rev3=revInfo.rev,mtime="mtime"in doc?doc.mtime:0;if(get(range_from_epoch)>mtime)continue;if(get(range_to_epoch)<mtime)continue;let diffDetail="";if(get(showDiffInfo)&&!isPlain){const data=getDocData(doc.data);void 0===p4&&(p4=data);if(p4!=data){const dmp=new import_diff_match_patch.diff_match_patch,diff=dmp.diff_main(p4,data);dmp.diff_cleanupSemantic(diff);p4=data;const pxInit={[DIFF_DELETE4]:0,[DIFF_EQUAL4]:0,[DIFF_INSERT4]:0},px=diff.reduce(((p5,c3)=>{var _a8;return{...p5,[c3[0]]:(null!==(_a8=p5[c3[0]])&&void 0!==_a8?_a8:0)+c3[1].length}}),pxInit);diffDetail=`-${px[DIFF_DELETE4]}, +${px[DIFF_INSERT4]}`}}const isDeleted2=doc._deleted||(null==doc?void 0:doc.deleted)||!1;isDeleted2&&(diffDetail+=" 🗑️");if(rev3==docA._rev&&get(checkStorageDiff)&&await plugin3().storageAccess.isExistsIncludeHidden(stripAllPrefixes(getPath2(docA)))){const data=await plugin3().storageAccess.readHiddenFileBinary(stripAllPrefixes(getPath2(docA))),d4=readAsBlob(doc);diffDetail+=await isDocContentSame(data,d4)?" ⚖️":" ⚠️"}const docPath=getPath2(doc),[filename,...pathItems]=docPath.split("/").reverse();let chunksStatus="";if(get(showChunkCorrected)){const chunks=null!==(_b3=null==doc?void 0:doc.children)&&void 0!==_b3?_b3:[],loadedChunks=await db.allDocsRaw({keys:[...chunks]}),totalCount=loadedChunks.rows.length,errorCount=loadedChunks.rows.filter((e3=>"error"in e3)).length;chunksStatus=0==errorCount?`✅ ${totalCount}`:`🔎 ${errorCount} ✅ ${totalCount}`}result.push({id:doc._id,rev:doc._rev,path:docPath,dirname:pathItems.reverse().join("/"),filename,mtime,mtimeDisp:mtimeToDate(mtime),size:null!==(_c2=null==doc?void 0:doc.size)&&void 0!==_c2?_c2:0,isDeleted:isDeleted2,changes:diffDetail,chunks:chunksStatus,isPlain})}}return[...result].sort(((a2,b3)=>b3.mtime-a2.mtime))}finally{set(loading,!1)}}();newDisplay.push(...page);set(history,[...newDisplay])}var div,div_1,div_2,input,div_3,input_1,div_4,label,input_2,label_1,input_3,label_2,input_4,node,consequent,table2,tbody,tr,node_1,consequent_1,tr_1,td3,node_2,consequent_2,alternate,node_3,tr_3,td_6,node_6,consequent_5,alternate_2;push($$props,!1);append_styles($$anchor,$$css7);let plugin3=prop($$props,"plugin",8),showDiffInfo=mutable_state(!1),showChunkCorrected=mutable_state(!1),checkStorageDiff=mutable_state(!1),range_from_epoch=mutable_state(Date.now()-6048e5),range_to_epoch=mutable_state(Date.now()+1728e5);const timezoneOffset=(new Date).getTimezoneOffset();let dispDateFrom=mutable_state(new Date(get(range_from_epoch)-timezoneOffset).toISOString().split("T")[0]),dispDateTo=mutable_state(new Date(get(range_to_epoch)-timezoneOffset).toISOString().split("T")[0]),history=mutable_state([]),loading=mutable_state(!1);onMount((async()=>{await getHistory(get(showDiffInfo),get(showChunkCorrected),get(checkStorageDiff))}));onDestroy((()=>{}));legacy_pre_effect((()=>(get(dispDateFrom),get(dispDateTo),get(showDiffInfo),get(showChunkCorrected),get(checkStorageDiff))),(()=>{set(range_from_epoch,new Date(get(dispDateFrom)).getTime()+timezoneOffset);set(range_to_epoch,new Date(get(dispDateTo)).getTime()+timezoneOffset);getHistory(get(showDiffInfo),get(showChunkCorrected),get(checkStorageDiff))}));legacy_pre_effect_reset();init();div_1=sibling(child(div=root6()),2);div_2=child(div_1);remove_input_defaults(input=sibling(child(div_2)));reset(div_2);div_3=sibling(div_2,2);remove_input_defaults(input_1=sibling(child(div_3)));reset(div_3);div_4=sibling(div_3,2);label=sibling(child(div_4),2);remove_input_defaults(input_2=child(label));next();reset(label);label_1=sibling(label,2);remove_input_defaults(input_3=child(label_1));next();reset(label_1);label_2=sibling(label_1,2);remove_input_defaults(input_4=child(label_2));next();reset(label_2);reset(div_4);reset(div_1);node=sibling(div_1,2);consequent=$$anchor2=>{append($$anchor2,root_111())};if_block(node,($$render=>{get(loading)&&$$render(consequent)}));tbody=child(table2=sibling(node,2));tr=child(tbody);node_1=sibling(child(tr),4);consequent_1=$$anchor2=>{append($$anchor2,root_24())};if_block(node_1,($$render=>{get(showChunkCorrected)&&$$render(consequent_1)}));reset(tr);td3=child(tr_1=sibling(tr));node_2=child(td3);consequent_2=$$anchor2=>{append($$anchor2,root_33())};alternate=$$anchor2=>{var div_7=root_44(),button=child(div_7);reset(div_7);event("click",button,(()=>function nextWeek(){set(dispDateTo,new Date(get(range_to_epoch)-timezoneOffset+6048e5).toISOString().split("T")[0])}()));append($$anchor2,div_7)};if_block(node_2,($$render=>{get(loading)?$$render(consequent_2):$$render(alternate,!1)}));reset(td3);reset(tr_1);each(node_3=sibling(tr_1),1,(()=>get(history)),index,(($$anchor2,entry)=>{var td_2,div_8,span,text_1,span_1,a_1,text_2,td_3,span_2,node_4,consequent_3,alternate_1,td_4,text_5,node_5,consequent_4,tr_2=root_53(),td_1=child(tr_2),text2=child(td_1,!0);reset(td_1);div_8=child(td_2=sibling(td_1));span=child(div_8);text_1=child(span);reset(span);a_1=child(span_1=sibling(span,2));text_2=child(a_1,!0);reset(a_1);reset(span_1);reset(div_8);reset(td_2);span_2=child(td_3=sibling(td_2));node_4=child(span_2);consequent_3=$$anchor3=>{var a_2=root_64(),text_3=child(a_2,!0);reset(a_2);template_effect((()=>set_text(text_3,get(entry).rev)));event("click",a_2,(()=>{var _a7;return function showHistory(file,rev3){new DocumentHistoryModal(plugin3().app,plugin3(),file,void 0,rev3).open()}(get(entry).path,(null==(_a7=get(entry))?void 0:_a7.rev)||"")}));append($$anchor3,a_2)};alternate_1=$$anchor3=>{var text_4=text();template_effect((()=>set_text(text_4,get(entry).rev)));append($$anchor3,text_4)};if_block(node_4,($$render=>{get(entry).isPlain?$$render(consequent_3):$$render(alternate_1,!1)}));reset(span_2);reset(td_3);td_4=sibling(td_3);text_5=child(td_4,!0);reset(td_4);node_5=sibling(td_4);consequent_4=$$anchor3=>{var td_5=root_83(),text_6=child(td_5,!0);reset(td_5);template_effect((()=>set_text(text_6,get(entry).chunks)));append($$anchor3,td_5)};if_block(node_5,($$render=>{get(showChunkCorrected)&&$$render(consequent_4)}));reset(tr_2);template_effect(($0=>{set_text(text2,get(entry).mtimeDisp);set_text(text_1,`/${null!=$0?$0:""}`);set_text(text_2,get(entry).filename);set_text(text_5,get(entry).changes)}),[()=>get(entry).dirname.split("/").join("/")],derived_safe_equal);event("click",a_1,(()=>function openFile(file){plugin3().app.workspace.openLinkText(file,file)}(get(entry).path)));append($$anchor2,tr_2)}));td_6=child(tr_3=sibling(node_3));node_6=child(td_6);consequent_5=$$anchor2=>{append($$anchor2,root_93())};alternate_2=$$anchor2=>{var div_10=root_102(),button_1=child(div_10);reset(div_10);event("click",button_1,(()=>function prevWeek(){set(dispDateFrom,new Date(get(range_from_epoch)-timezoneOffset-6048e5).toISOString().split("T")[0])}()));append($$anchor2,div_10)};if_block(node_6,($$render=>{get(loading)?$$render(consequent_5):$$render(alternate_2,!1)}));reset(td_6);reset(tr_3);reset(tbody);reset(table2);reset(div);template_effect((()=>{input.disabled=get(loading);input_1.disabled=get(loading);input_2.disabled=get(loading);input_3.disabled=get(loading);input_4.disabled=get(loading)}));bind_value(input,(()=>get(dispDateFrom)),($$value=>set(dispDateFrom,$$value)));bind_value(input_1,(()=>get(dispDateTo)),($$value=>set(dispDateTo,$$value)));bind_checked(input_2,(()=>get(showDiffInfo)),($$value=>set(showDiffInfo,$$value)));bind_checked(input_3,(()=>get(showChunkCorrected)),($$value=>set(showChunkCorrected,$$value)));bind_checked(input_4,(()=>get(checkStorageDiff)),($$value=>set(checkStorageDiff,$$value)));append($$anchor,div);pop()}function startWatching(_,replicator,peer){replicator.watchPeer(get(peer).peerId)}function stopWatching(__1,replicator,peer){replicator.unwatchPeer(get(peer).peerId)}function sync2(__2,replicator,peer){replicator.sync(get(peer).peerId,!1)}function moreMenu(evt,peer){eventHub.emitEvent(EVENT_P2P_PEER_SHOW_EXTRA_MENU,{peer:get(peer),event:evt})}async function saveAndApply(_,plugin3,eP2PEnabled,eRelay,eRoomId,ePassword,eAppId,eAutoAccept,eAutoStart,eAutoBroadcast,$$props,eDeviceName,deviceName){const newSettings={...plugin3().settings,P2P_Enabled:get(eP2PEnabled),P2P_relays:get(eRelay),P2P_roomID:get(eRoomId),P2P_passphrase:get(ePassword),P2P_AppID:get(eAppId),P2P_AutoAccepting:get(eAutoAccept)?1:0,P2P_AutoStart:get(eAutoStart),P2P_AutoBroadcast:get(eAutoBroadcast)};plugin3().settings=newSettings;$$props.cmdSync.setConfig("p2p_device_name",get(eDeviceName));set(deviceName,proxy(get(eDeviceName)));await plugin3().saveSettings()}async function revert(__1,eP2PEnabled,settings,eRelay,eRoomId,ePassword,eAppId,eAutoAccept,eAutoStart,eAutoBroadcast){set(eP2PEnabled,proxy(get(settings).P2P_Enabled));set(eRelay,proxy(get(settings).P2P_relays));set(eRoomId,proxy(get(settings).P2P_roomID));set(ePassword,proxy(get(settings).P2P_passphrase));set(eAppId,proxy(get(settings).P2P_AppID));set(eAutoAccept,1==get(settings).P2P_AutoAccepting);set(eAutoStart,proxy(get(settings).P2P_AutoStart));set(eAutoBroadcast,proxy(get(settings).P2P_AutoBroadcast))}async function openServer(__2,$$props){await $$props.cmdSync.open()}function startBroadcasting(__3,$$props){$$props.cmdSync.enableBroadcastCastings()}function stopBroadcasting(__4,$$props){$$props.cmdSync.disableBroadcastCastings()}function P2PReplicatorPane($$anchor,$$props){async function closeServer(){await $$props.cmdSync.close()}var _a7,_b3,_c2,article,details,summary,text2,p4,text_1,p_1,text_2,details_1,summary_1,text_4,table2,tbody,tr,td3,label,input,tr_1,td_1,label_1,input_1,tr_2,td_2,label_2,input_2,tr_3,td_3,label_3,input_3,tr_4,td_4,label_4,input_4,tr_5,td_5,label_5,input_5,tr_6,td_6,label_6,input_6,button_2,button_3,div,div_1,node_1,consequent,alternate,div_2,node_2,consequent_1,alternate_2,div_3,table_1,tbody_1;push($$props,!0);append_styles($$anchor,$$css9);let plugin3=prop($$props,"plugin",7);(function setContext(key2,context2){const context_map=get_or_init_context_map("setContext");dev_fallback_default&&untrack((()=>add_owner(context2,null,!0)));context_map.set(key2,context2)})("getReplicator",(()=>$$props.cmdSync));const initialSettings={...plugin3().settings};let settings=state(proxy(initialSettings));const initialDeviceName=null!==(_a7=$$props.cmdSync.getConfig("p2p_device_name"))&&void 0!==_a7?_a7:plugin3().$$getVaultName();let deviceName=state(proxy(initialDeviceName)),eP2PEnabled=state(proxy(initialSettings.P2P_Enabled)),eRelay=state(proxy(initialSettings.P2P_relays)),eRoomId=state(proxy(initialSettings.P2P_roomID)),ePassword=state(proxy(initialSettings.P2P_passphrase)),eAppId=state(proxy(initialSettings.P2P_AppID)),eDeviceName=state(proxy(initialDeviceName)),eAutoAccept=state(1==initialSettings.P2P_AutoAccepting),eAutoStart=state(proxy(initialSettings.P2P_AutoStart)),eAutoBroadcast=state(proxy(initialSettings.P2P_AutoBroadcast));const isP2PEnabledModified=derived((()=>get(eP2PEnabled)!==get(settings).P2P_Enabled)),isRelayModified=derived((()=>get(eRelay)!==get(settings).P2P_relays)),isRoomIdModified=derived((()=>get(eRoomId)!==get(settings).P2P_roomID)),isPasswordModified=derived((()=>get(ePassword)!==get(settings).P2P_passphrase)),isAppIdModified=derived((()=>get(eAppId)!==get(settings).P2P_AppID)),isDeviceNameModified=derived((()=>get(eDeviceName)!==get(deviceName))),isAutoAcceptModified=derived((()=>get(eAutoAccept)!==(1==get(settings).P2P_AutoAccepting))),isAutoStartModified=derived((()=>get(eAutoStart)!==get(settings).P2P_AutoStart)),isAutoBroadcastModified=derived((()=>get(eAutoBroadcast)!==get(settings).P2P_AutoBroadcast)),isAnyModified=derived((()=>get(isP2PEnabledModified)||get(isRelayModified)||get(isRoomIdModified)||get(isPasswordModified)||get(isAppIdModified)||get(isDeviceNameModified)||get(isAutoAcceptModified)||get(isAutoStartModified)||get(isAutoBroadcastModified)));let serverInfo=state(void 0),replicatorInfo=state(void 0);const applyLoadSettings=(d4,force)=>{const{P2P_relays,P2P_roomID,P2P_passphrase,P2P_AppID,P2P_AutoAccepting}=d4;!force&&get(isP2PEnabledModified)||set(eP2PEnabled,proxy(d4.P2P_Enabled));!force&&get(isRelayModified)||set(eRelay,proxy(P2P_relays));!force&&get(isRoomIdModified)||set(eRoomId,proxy(P2P_roomID));!force&&get(isPasswordModified)||set(ePassword,proxy(P2P_passphrase));!force&&get(isAppIdModified)||set(eAppId,proxy(P2P_AppID));const newAutoAccept=1===P2P_AutoAccepting;!force&&get(isAutoAcceptModified)||set(eAutoAccept,newAutoAccept);!force&&get(isAutoStartModified)||set(eAutoStart,proxy(d4.P2P_AutoStart));!force&&get(isAutoBroadcastModified)||set(eAutoBroadcast,proxy(d4.P2P_AutoBroadcast));set(settings,proxy(d4))};onMount((()=>{const r4=eventHub.onEvent("setting-saved",(async d4=>{applyLoadSettings(d4,!1);closeServer()})),r22=(eventHub.onEvent(EVENT_LAYOUT_READY,(()=>{applyLoadSettings(plugin3().settings,!0)})),eventHub.onEvent(EVENT_SERVER_STATUS,(status=>{var _a8;set(serverInfo,proxy(status));set(advertisements,proxy(null!==(_a8=null==status?void 0:status.knownAdvertisements)&&void 0!==_a8?_a8:[]))}))),r32=eventHub.onEvent(EVENT_P2P_REPLICATOR_STATUS,(status=>{set(replicatorInfo,proxy(status))}));eventHub.emitEvent(EVENT_REQUEST_STATUS);return()=>{r4();r22();r32()}}));let isConnected=derived((()=>{var _a8;return null!==(_a8=null===get(serverInfo)||void 0===get(serverInfo)?void 0:get(serverInfo).isConnected)&&void 0!==_a8&&_a8})),serverPeerId=derived((()=>{var _a8;return null!==(_a8=null===get(serverInfo)||void 0===get(serverInfo)?void 0:get(serverInfo).serverPeerId)&&void 0!==_a8?_a8:""})),advertisements=state(proxy([])),autoSyncPeers=derived((()=>get(settings).P2P_AutoSyncPeers.split(",").map((e3=>e3.trim())).filter((e3=>e3)))),autoWatchPeers=derived((()=>get(settings).P2P_AutoWatchPeers.split(",").map((e3=>e3.trim())).filter((e3=>e3)))),syncOnCommand=derived((()=>get(settings).P2P_SyncOnReplication.split(",").map((e3=>e3.trim())).filter((e3=>e3))));const peers=derived((()=>get(advertisements).map((ad2=>{let accepted;const isTemporaryAccepted=ad2.isTemporaryAccepted;accepted=void 0===isTemporaryAccepted?void 0===ad2.isAccepted?"Unknown":ad2.isAccepted?"Accepted":"Denied":!0===isTemporaryAccepted?"Accepted in session":"Denied in session";const isFetching=-1!==(null===get(replicatorInfo)||void 0===get(replicatorInfo)?void 0:get(replicatorInfo).replicatingFrom.indexOf(ad2.peerId)),isSending=-1!==(null===get(replicatorInfo)||void 0===get(replicatorInfo)?void 0:get(replicatorInfo).replicatingTo.indexOf(ad2.peerId)),isWatching=-1!==(null===get(replicatorInfo)||void 0===get(replicatorInfo)?void 0:get(replicatorInfo).watchingPeers.indexOf(ad2.peerId)),syncOnStart=-1!==get(autoSyncPeers).indexOf(ad2.name),watchOnStart=-1!==get(autoWatchPeers).indexOf(ad2.name),syncOnReplicationCommand=-1!==get(syncOnCommand).indexOf(ad2.name);return{name:ad2.name,peerId:ad2.peerId,accepted,status:ad2.isAccepted?"Connected":"Disconnected",isSending,isFetching,isWatching,syncOnConnect:syncOnStart,watchOnConnect:watchOnStart,syncOnReplicationCommand}})))),initialDialogStatus=(()=>{var _a8;try{return JSON.parse(null!==(_a8=$$props.cmdSync.getConfig("p2p-dialog-status"))&&void 0!==_a8?_a8:"{}")}catch(e3){return{}}})();let isNoticeOpened=state(proxy(null===(_b3=initialDialogStatus.notice)||void 0===_b3||_b3)),isSettingOpened=state(proxy(null===(_c2=initialDialogStatus.setting)||void 0===_c2||_c2));user_effect((()=>{const dialogStatus={notice:get(isNoticeOpened),setting:get(isSettingOpened)};$$props.cmdSync.setConfig("p2p-dialog-status",JSON.stringify(dialogStatus))}));details=sibling(child(article=root8()),2);summary=child(details);text2=child(summary,!0);reset(summary);p4=sibling(summary,2);text_1=child(p4,!0);reset(p4);p_1=sibling(p4,2);text_2=child(p_1,!0);reset(p_1);each(sibling(p_1,2),17,(()=>$msg("P2P.Note.description").split("\n\n")),index,(($$anchor2,paragraph)=>{var p_2=root_114(),text_3=child(p_2,!0);reset(p_2);template_effect((()=>set_text(text_3,get(paragraph))));append($$anchor2,p_2)}));reset(details);summary_1=child(details_1=sibling(details,4));text_4=child(summary_1,!0);reset(summary_1);tbody=child(table2=sibling(summary_1,2));tr=child(tbody);td3=sibling(child(tr));label=child(td3);remove_input_defaults(input=child(label));reset(label);reset(td3);reset(tr);tr_1=sibling(tr);td_1=sibling(child(tr_1));label_1=child(td_1);remove_input_defaults(input_1=child(label_1));sibling(input_1,2).__click=[on_click3,function useDefaultRelay(){set(eRelay,proxy(DEFAULT_SETTINGS.P2P_relays))}];reset(label_1);reset(td_1);reset(tr_1);tr_2=sibling(tr_1);td_2=sibling(child(tr_2));label_2=child(td_2);remove_input_defaults(input_2=child(label_2));sibling(input_2,2).__click=[on_click_12,function chooseRandom(){set(eRoomId,function generateRandom(length){let buf="";for(;buf.length<length;)buf+="-"+(Math.floor(1e3*Math.random())+1e3).toString().substring(1);return buf.substring(1,length)}(12)+"-"+Math.random().toString(36).substring(2,5))}];reset(label_2);next(2);reset(td_2);reset(tr_2);tr_3=sibling(tr_2);td_3=sibling(child(tr_3));label_3=child(td_3);remove_input_defaults(input_3=child(label_3));reset(label_3);next(2);reset(td_3);reset(tr_3);tr_4=sibling(tr_3);td_4=sibling(child(tr_4));label_4=child(td_4);remove_input_defaults(input_4=child(label_4));reset(label_4);next(2);reset(td_4);reset(tr_4);tr_5=sibling(tr_4);td_5=sibling(child(tr_5));label_5=child(td_5);remove_input_defaults(input_5=child(label_5));reset(label_5);reset(td_5);reset(tr_5);tr_6=sibling(tr_5);td_6=sibling(child(tr_6));label_6=child(td_6);remove_input_defaults(input_6=child(label_6));reset(label_6);reset(td_6);reset(tr_6);reset(tbody);reset(table2);(button_2=sibling(table2,2)).__click=[saveAndApply,plugin3,eP2PEnabled,eRelay,eRoomId,ePassword,eAppId,eAutoAccept,eAutoStart,eAutoBroadcast,$$props,eDeviceName,deviceName];(button_3=sibling(button_2,2)).__click=[revert,eP2PEnabled,settings,eRelay,eRoomId,ePassword,eAppId,eAutoAccept,eAutoStart,eAutoBroadcast];reset(details_1);div=sibling(details_1,2);div_1=sibling(child(div),2);node_1=child(div_1);consequent=$$anchor2=>{append($$anchor2,root_26())};alternate=$$anchor2=>{var p_4=root_35(),text_5=child(p_4);reset(p_4);template_effect((()=>{var _a8;return set_text(text_5,`Connected to Signaling Server (as Peer ID: ${null!=(_a8=get(serverPeerId))?_a8:""})`)}));append($$anchor2,p_4)};if_block(node_1,($$render=>{get(isConnected)?$$render(alternate,!1):$$render(consequent)}));reset(div_1);node_2=child(div_2=sibling(div_1,2));consequent_1=$$anchor2=>{var button_4=root_46();button_4.__click=[openServer,$$props];append($$anchor2,button_4)};alternate_2=$$anchor2=>{var node_3,consequent_3,fragment=root_55(),button_5=first_child(fragment);button_5.__click=closeServer;node_3=sibling(button_5,2);consequent_3=$$anchor3=>{var fragment_1=comment(),node_4=first_child(fragment_1),consequent_2=$$anchor4=>{var button_6=root_73();button_6.__click=[stopBroadcasting,$$props];append($$anchor4,button_6)},alternate_1=$$anchor4=>{var button_7=root_85();button_7.__click=[startBroadcasting,$$props];append($$anchor4,button_7)};if_block(node_4,($$render=>{var _a8;(null==(_a8=get(replicatorInfo))?void 0:_a8.isBroadcasting)?$$render(consequent_2):$$render(alternate_1,!1)}));append($$anchor3,fragment_1)};if_block(node_3,($$render=>{var _a8;void 0!==(null==(_a8=get(replicatorInfo))?void 0:_a8.isBroadcasting)&&$$render(consequent_3)}));next(2);append($$anchor2,fragment)};if_block(node_2,($$render=>{get(isConnected)?$$render(alternate_2,!1):$$render(consequent_1)}));reset(div_2);reset(div);div_3=sibling(div,2);table_1=sibling(child(div_3),2);each(tbody_1=sibling(child(table_1)),21,(()=>get(peers)),index,(($$anchor2,peer)=>{(function PeerStatusRow($$anchor,$$props){function select(d4,cond,def){return d4 in cond?cond[d4]:def}function makeDecision(isAccepted3,isTemporary){var _a7,_b3;null===(_b3=null===(_a7=cmdReplicator._replicatorInstance)||void 0===_a7?void 0:_a7.server)||void 0===_b3||_b3.makeDecision({peerId:get(peer).peerId,name:get(peer).name,decision:isAccepted3,isTemporary})}function revokeDecision(){var _a7,_b3;null===(_b3=null===(_a7=cmdReplicator._replicatorInstance)||void 0===_a7?void 0:_a7.server)||void 0===_b3||_b3.revokeDecision({peerId:get(peer).peerId,name:get(peer).name})}var tr,td3,div,div_1,span,text2,div_2,span_1,text_1,div_3,div_4,span_2,text_2,node,consequent,div_6,td_1,div_7,div_8,node_1,consequent_3,alternate,td_2,node_4,consequent_5;push($$props,!0);append_styles($$anchor,$$css8);let peer=derived((()=>$$props.peerStatus)),statusChips=derived((()=>[get(peer).isWatching?["WATCHING"]:[],get(peer).isFetching?["FETCHING"]:[],get(peer).isSending?["SENDING"]:[]].flat())),acceptedStatusChip=derived((()=>select(get(peer).accepted.toString(),{["Accepted"]:"ACCEPTED",["Accepted in session"]:"ACCEPTED (in session)",["Denied in session"]:"DENIED (in session)",["Denied"]:"DENIED",["Unknown"]:"NEW"},"")));const classList={["SENDING"]:"connected",["FETCHING"]:"connected",["WATCHING"]:"connected-live",["WAITING"]:"waiting",["ACCEPTED"]:"accepted",["DENIED"]:"denied",["NEW"]:"unknown"};let isAccepted2=derived((()=>"Accepted"===get(peer).accepted||"Accepted in session"===get(peer).accepted)),isDenied=derived((()=>"Denied"===get(peer).accepted||"Denied in session"===get(peer).accepted)),isNew=derived((()=>"Unknown"===get(peer).accepted));const cmdReplicator=function getContext(key2){return get_or_init_context_map("getContext").get(key2)}("getReplicator")(),replicator=cmdReplicator._replicatorInstance,peerAttrLabels=derived((()=>{const attrs=[];get(peer).syncOnConnect&&attrs.push("✔ SYNC");get(peer).watchOnConnect&&attrs.push("✔ WATCH");get(peer).syncOnReplicationCommand&&attrs.push("✔ SELECT");return attrs}));td3=child(tr=root7());div=child(td3);div_1=child(div);span=child(div_1);text2=child(span,!0);reset(span);reset(div_1);span_1=child(div_2=sibling(div_1,2));text_1=child(span_1);reset(span_1);reset(div_2);reset(div);div_4=child(div_3=sibling(div,2));span_2=child(div_4);text_2=child(span_2,!0);reset(span_2);reset(div_4);node=sibling(div_4,2);consequent=$$anchor2=>{var div_5=root_113();each(div_5,21,(()=>get(statusChips)),index,(($$anchor3,chip)=>{var span_3=root_25(),text_3=child(span_3,!0);reset(span_3);template_effect(($0=>{set_class(span_3,`chip ${null!=$0?$0:""} svelte-d7sijc`);set_text(text_3,get(chip))}),[()=>select(get(chip),classList)]);append($$anchor3,span_3)}));reset(div_5);append($$anchor2,div_5)};if_block(node,($$render=>{get(isAccepted2)&&$$render(consequent)}));each(div_6=sibling(node,2),21,(()=>get(peerAttrLabels)),index,(($$anchor2,attr2)=>{var span_4=root_34(),text_4=child(span_4,!0);reset(span_4);template_effect((()=>set_text(text_4,get(attr2))));append($$anchor2,span_4)}));reset(div_6);reset(div_3);reset(td3);div_7=child(td_1=sibling(td3));div_8=child(div_7);node_1=child(div_8);consequent_3=$$anchor2=>{var node_3,consequent_2,fragment=root_45(),node_2=first_child(fragment),consequent_1=$$anchor3=>{var fragment_1=root_54(),button=first_child(fragment_1);button.__click=[on_click2,makeDecision];sibling(button,2).__click=[on_click_1,makeDecision];append($$anchor3,fragment_1)};if_block(node_2,($$render=>{get(isAccepted2)||$$render(consequent_1)}));node_3=sibling(node_2,2);consequent_2=$$anchor3=>{var fragment_2=root_65(),button_2=first_child(fragment_2);button_2.__click=[on_click_2,makeDecision];sibling(button_2,2).__click=[on_click_3,makeDecision];append($$anchor3,fragment_2)};if_block(node_3,($$render=>{get(isDenied)||$$render(consequent_2)}));append($$anchor2,fragment)};alternate=$$anchor2=>{var button_4=root_72();button_4.__click=[on_click_4,revokeDecision];append($$anchor2,button_4)};if_block(node_1,($$render=>{get(isNew)?$$render(consequent_3):$$render(alternate,!1)}));reset(div_8);reset(div_7);reset(td_1);node_4=child(td_2=sibling(td_1));consequent_5=$$anchor2=>{var node_5,consequent_4,alternate_1,div_9=root_84(),div_10=child(div_9),button_5=child(div_10);button_5.__click=[sync2,replicator,peer];node_5=sibling(button_5,2);consequent_4=$$anchor3=>{var button_6=root_94();button_6.__click=[stopWatching,replicator,peer];append($$anchor3,button_6)};alternate_1=$$anchor3=>{var button_7=root_103();button_7.__click=[startWatching,replicator,peer];append($$anchor3,button_7)};if_block(node_5,($$render=>{get(peer).isWatching?$$render(consequent_4):$$render(alternate_1,!1)}));sibling(node_5,2).__click=[moreMenu,peer];reset(div_10);reset(div_9);template_effect((()=>button_5.disabled=get(peer).isSending||get(peer).isFetching));append($$anchor2,div_9)};if_block(node_4,($$render=>{get(isAccepted2)&&$$render(consequent_5)}));reset(td_2);reset(tr);template_effect(($0=>{var _a7;set_text(text2,get(peer).name);set_text(text_1,`(${null!=(_a7=get(peer).peerId)?_a7:""})`);set_class(span_2,`chip ${null!=$0?$0:""} svelte-d7sijc`);set_text(text_2,get(acceptedStatusChip))}),[()=>select(get(acceptedStatusChip),classList)]);append($$anchor,tr);pop()})($$anchor2,{get peerStatus(){return get(peer)}})}));reset(tbody_1);reset(table_1);reset(div_3);reset(article);template_effect((($0,$1,$2)=>{set_text(text2,$0);set_text(text_1,$1);set_text(text_2,$2);set_text(text_4,get(eRelay));set_class(label,clsx2({"is-dirty":get(isP2PEnabledModified)}),"svelte-1i6qkqk");set_class(label_1,clsx2({"is-dirty":get(isRelayModified)}),"svelte-1i6qkqk");set_class(label_2,clsx2({"is-dirty":get(isRoomIdModified)}),"svelte-1i6qkqk");set_class(label_3,clsx2({"is-dirty":get(isPasswordModified)}),"svelte-1i6qkqk");set_class(label_4,clsx2({"is-dirty":get(isDeviceNameModified)}),"svelte-1i6qkqk");set_class(label_5,clsx2({"is-dirty":get(isAutoStartModified)}),"svelte-1i6qkqk");set_class(label_6,clsx2({"is-dirty":get(isAutoBroadcastModified)}),"svelte-1i6qkqk");button_2.disabled=!get(isAnyModified);button_3.disabled=!get(isAnyModified)}),[()=>$msg("P2P.Note.Summary"),()=>$msg("P2P.Note.important_note"),()=>$msg("P2P.Note.important_note_sub")]);bind_property("open","toggle",details,($$value=>set(isNoticeOpened,$$value)),(()=>get(isNoticeOpened)));bind_checked(input,(()=>get(eP2PEnabled)),($$value=>set(eP2PEnabled,$$value)));bind_value(input_1,(()=>get(eRelay)),($$value=>set(eRelay,$$value)));bind_value(input_2,(()=>get(eRoomId)),($$value=>set(eRoomId,$$value)));bind_value(input_3,(()=>get(ePassword)),($$value=>set(ePassword,$$value)));bind_value(input_4,(()=>get(eDeviceName)),($$value=>set(eDeviceName,$$value)));bind_checked(input_5,(()=>get(eAutoStart)),($$value=>set(eAutoStart,$$value)));bind_checked(input_6,(()=>get(eAutoBroadcast)),($$value=>set(eAutoBroadcast,$$value)));bind_property("open","toggle",details_1,($$value=>set(isSettingOpened,$$value)),(()=>get(isSettingOpened)));append($$anchor,article);pop()}function getPlatformName(){return import_obsidian16.Platform.isAndroidApp?"android-app":import_obsidian16.Platform.isIosApp?"ios":import_obsidian16.Platform.isMacOS?"macos":import_obsidian16.Platform.isMobileApp?"mobile-app":import_obsidian16.Platform.isMobile?"mobile":import_obsidian16.Platform.isSafari?"safari":import_obsidian16.Platform.isDesktop?"desktop":import_obsidian16.Platform.isDesktopApp?"desktop-app":"unknown-obsidian"}function throwShouldBeOverridden(){throw new Error("This function should be overridden by the module.")}var LOG_LEVEL_VERBOSE,LOG_LEVEL_INFO,LOG_LEVEL_NOTICE,LEVEL_INFO,defaultLoggerEnv_minLogLevel,_logger,RESULT_TIMED_OUT,CANCELLED,AUTO_MERGED,NOT_CONFLICTED,MISSING_OR_ERROR,LEAVE_TO_SUBSEQUENT,MILESTONE_DOCID,MODE_SELECTIVE,MODE_AUTOMATIC,MODE_PAUSED,MODE_SHINY,REMOTE_COUCHDB,REMOTE_MINIO,REMOTE_P2P,AutoAccepting,P2P_DEFAULT_SETTINGS,DEFAULT_SETTINGS,PREFERRED_SETTING_CLOUDANT,PREFERRED_SETTING_SELF_HOSTED,PREFERRED_JOURNAL_SYNC,TweakValuesShouldMatchedTemplate,IncompatibleChanges,CompatibleButLossyChanges,IncompatibleChangesInSpecificPattern,TweakValuesDefault,configurationNames,LEVEL_ADVANCED,LEVEL_POWER_USER,LEVEL_EDGE_CASE,TweakValuesTemplate,DEVICE_ID_PREFERRED,PREFIXMD_LOGFILE,PREFIXMD_LOGFILE_UC,FLAGMD_REDFLAG,FLAGMD_REDFLAG2,FLAGMD_REDFLAG2_HR,FLAGMD_REDFLAG3,FLAGMD_REDFLAG3_HR,SYNCINFO_ID,PREFIX_OBFUSCATED,PREFIX_ENCRYPTED_CHUNK,import_obsidian,import_obsidian2,import_diff_match_patch,normalizePath,PSCHeader,ICHeader,ICHeaderLength,ICXHeader,configURIBase,LRUCache,assertValidPattern,posixClasses,braceEscape,regexpEscape,rangesToString,parseClass,unescape2,_root,_hasMagic,_uflag,_parts,_parent,_parentIndex,_negs,_filledNegs,_options,_toString,_emptyExt,_AST_instances,fillNegs_fn,_AST_static,parseAST_fn,partsToRegExp_fn,parseGlob_fn,types,isExtglobType,addPatternStart,justDots,reSpecials,regExpEscape,_AST,AST,escape,import_brace_expansion,minimatch,starDotExtRE,starDotExtTest,starDotExtTestDot,starDotExtTestNocase,starDotExtTestNocaseDot,starDotStarRE,starDotStarTest,starDotStarTestDot,dotStarRE,dotStarTest,starRE,starTest,starTestDot,qmarksRE,qmarksTestNocase,qmarksTestNocaseDot,qmarksTestDot,qmarksTest,qmarksTestNoExt,qmarksTestNoExtDot,defaultPlatform,path_posix,sep,GLOBSTAR,filter,ext,defaults,braceExpand,makeRe,match,globMagic,regExpEscape2,Minimatch,webcrypto,encodeChunkSize,QUANTUM,te,td,regexpBase64,table,revTable,revMap,numMap,_hashString,matchOpts,delay,UNRESOLVED,promiseWithResolver,noop,currentYieldingAnimationFrame,TIMED_OUT_SIGNAL,webcrypto2,SALT,previousPassphrase,encryptionKey,_nonceV3,bufV3,previousDecryptionPassphrase,decryptionKey,KeyBuffs,decKeyBuffs,KEY_RECYCLE_COUNT,semiStaticFieldBuffer,nonceBuffer,webcrypto3,keyGCCount,decKeyIdx,decKeyMin,_a,FallbackWeakRef,EventHub,eventHub,APIBase,tasks,maxConcurrency,roundRobinIdx,workers,key,serializedMap,queueCount,waitingProcessMap,shareSerializedMap,skipDuplicatedMap,PaceMaker,NOT_AVAILABLE,READY_PICK_SIGNAL,READY_POST_SIGNAL,DISPOSE_ERROR,SyncInbox,Inbox,InboxWithEvent,ClerkState,SENTINEL_FINISHED,SENTINEL_FLUSH,ClerkBase,Clerk,ClerkGroup,Porter,Notifier,allRunningProcessors,QueueProcessor,ch2,wk,u8,u16,i32,fleb,fdeb,clim,freb,_a2,fl,revfl,_b,fd,revfd,rev,hMap,flt,fdt,flm,flrm,fdm,fdrm,max,bits,bits16,shft,slc,ec,err,inflt,wbits,wbits16,hTree,ln,lc,clen,wfblk,wblk,deo,et,dflt,dopt,mrg,wcln,ch,cbfs,wrkr,bInflt,bDflt,pbf,gopt,cbify,fltn,td2,x2,i2,encrypt2,decrypt2,isValidRemoteCouchDBURI,checkRemoteVersion,bumpRemoteVersion,checkSyncInfo,wrappedInflate,wrappedDeflate,replicationFilter,EDEN_ENCRYPTED_KEY,preprocessOutgoing,enableEncryption,_requestToCouchDBFetch,SYMBOL_A,SYMBOL_B,globalSlipBoard,throttle,_a3,isIndexDBCmpExist,globalConcurrencyController,previousValues,MARK_DELETED,MARK_ISARRAY,MARK_SWAPPED,t,epochFNV1a,c1,c2,r1,r2,m,n,hashFunc,charNewLine,segmenter,MAX_ITEMS,globalSlipBoard2,BatchReader,ChunkCollector,import_diff_match_patch2,LiveSyncLocalDB,LiveSyncAbstractReplicator,instanceOfAny,idbProxyableTypes,cursorAdvanceMethods,transactionDoneMap,transformCache,reverseTransformCache,idbProxyTraps,unwrap,readMethods,writeMethods,cachedMethods,advanceMethodProps,methodMap,advanceResults,ittrProxiedCursorToOriginalProxy,cursorIteratorTraps,databaseCache,OpenKeyValueDatabase,tasks2,intervals,waitingItems,PersistentMap,sameChangePairs,EVENT_LAYOUT_READY,memos,PeriodicProcessor,_requestToCouchDB,requestToCouchDB,BASE_IS_NEW,TARGET_IS_NEW,EVEN,resolution,_cached,waitingTasks,context,topologicalSortCache,_reactiveSourceId,collectingChunks,pluginScanningCount,hiddenFilesProcessingCount,hiddenFilesEventCount,logStore,logMessages,AbstractModule,AbstractObsidianModule,EACH_ITEM_REACTIVE,EACH_INDEX_REACTIVE,EACH_IS_CONTROLLED,EACH_IS_ANIMATED,EACH_ITEM_IMMUTABLE,PROPS_IS_IMMUTABLE,PROPS_IS_RUNES,PROPS_IS_UPDATED,PROPS_IS_BINDABLE,PROPS_IS_LAZY_INITIAL,TEMPLATE_FRAGMENT,TEMPLATE_USE_IMPORT_NODE,HYDRATION_START,HYDRATION_START_ELSE,HYDRATION_END,HYDRATION_ERROR,UNINITIALIZED,FILENAME,_a4,_b2,node_env,dev_fallback_default,DERIVED,EFFECT,RENDER_EFFECT,BLOCK_EFFECT,BRANCH_EFFECT,ROOT_EFFECT,BOUNDARY_EFFECT,UNOWNED,DISCONNECTED,CLEAN,DIRTY,MAYBE_DIRTY,INERT,DESTROYED,EFFECT_RAN,EFFECT_TRANSPARENT,LEGACY_DERIVED_PROP,INSPECT_EFFECT,HEAD_EFFECT,EFFECT_HAS_DERIVED,STATE_SYMBOL,STATE_SYMBOL_METADATA,LEGACY_PROPS,LOADING_ATTR_SYMBOL,is_array,index_of,array_from,define_property,get_descriptor,get_descriptors,object_prototype,array_prototype,get_prototype_of,noop2,request_idle_callback,is_micro_task_queued,is_idle_task_queued,current_queued_micro_tasks,current_queued_idle_tasks,legacy_mode_flag,tracing_mode_flag,tracing_expressions,inspect_effects,stack,bold2,normal2,hydrating,hydrate_node,$window,is_firefox,first_child_getter,next_sibling_getter,FLUSH_MICROTASK,handled_errors,is_throwing_error,scheduler_mode,is_micro_task_queued2,last_scheduled_effect,is_flushing_effect,is_destroying_effect,queued_root_effects,flush_count,dev_effect_stack,active_reaction,untracking,active_effect,derived_sources,new_deps,skipped_deps,untracked_writes,write_version,read_version,skip_reaction,captured_signals,STATUS_MASK,boundaries,chrome_pattern,firefox_pattern,ADD_OWNER,skip,component_context,dev_current_component_function,PASSIVE_EVENTS,all_styles,listening_to_form_reset,all_registered_events,root_event_handles,document_listeners,mounted_components,current_each_item,setters_cache,pending,_listeners,_observer,_options2,_ResizeObserverSingleton_instances,getObserver_fn,_ResizeObserverSingleton,subscriber_queue,is_store_binding,IS_UNMOUNTED,spread_props_handler,_allMessages,SUPPORTED_I18N_LANGS,expandedMessage,allMessages,currentLang,missingTranslations,__onMissingTranslations,msgCache,on_click,root_1,root,$$css,import_obsidian3,SvelteItemView,LogPaneView,crypto2,Hash,HashMD,SHA256_K,SHA256_IV,SHA256_W,SHA256,sha256,HMAC,hmac,utils_exports,_0n,_1n,_2n,hexes2,asciis2,isPosBig,bitMask,u8n,u8fr,validatorFns,notImplemented,_0n2,_1n2,_2n2,_3n,_4n,_5n,_8n,FIELD_FIELDS,_0n3,_1n3,pointPrecomputes,pointWindowSizes,DERErr,DER,_0n4,_1n4,_3n2,secp256k1P,secp256k1N,_1n5,_2n4,divNearest,Fpk1,secp256k1,_0n5,TAGGED_HASH_PREFIXES,pointToBytes,numTo32b,modP,modN,Point,GmulAdd,num,schnorr,alloc,genId,selfId,all,isBrowser,noOp,mkErr,encoder,decoder,encodeBytes,decodeBytes,toHex,topicPath,shuffle,getRelays,toJson,fromJson,strToNum,socketRetryPeriods,makeSocket,socketGetter,strToSha1,pack,unpack,sha12,genKey,encrypt3,decrypt3,browser_exports2,scope,RTCPeerConnection,RTCSessionDescription,RTCIceCandidate,RTCIceTransport,RTCDataChannel,RTCSctpTransport,RTCDtlsTransport,RTCCertificate,MediaStream,MediaStreamTrack,MediaStreamTrackEvent,RTCPeerConnectionIceEvent,RTCDataChannelEvent,RTCTrackEvent,RTCError,RTCErrorEvent,RTCRtpTransceiver,RTCRtpReceiver,RTCRtpSender,encodeLookup,decodeLookup,arr2hex,chars,lookup,encoder2,text2arr,scope2,crypto3,randomBytes2,import_debug,import_streamx,import_err_code,Debug,Peer,lite_default,import_err_code2,simple_peer_default,peer_default,defaultIceServers,TypedArray,progressIndex,payloadIndex,chunkSize,internalNs,room_default,strategy_default,clients,privateKey,publicKey,subIdToTopic,msgHandlers,kindCache,now2,topicToKind,createEvent,subscribe,unsubscribe,joinRoom,defaultRelayUrls,ResponsePreventedError,DeviceDecisions,StoredMapLike,TrysteroReplicatorP2PClient,EVENT_SERVER_STATUS,EVENT_REQUEST_STATUS,EVENT_P2P_REPLICATOR_STATUS,TrysteroReplicatorP2PServer,p,instance,replicatorInstanceGetter,LiveSyncTrysteroReplicator,TrysteroReplicator,P2PLogCollector,recentLogs,recentLogProcessor,ModuleLog,noticeIndex,LiveSyncCommands,root_12,root_4,root_6,root_5,root_10,root_2,root2,$$css2,JsonResolveModal,HiddenFileSync,import_diff_match_patch3,ConflictResolveModal,import_obsidian5,root_3,root_62,root_7,root_8,root_42,root_9,root_11,root_122,root_22,root_13,root_132,$$css3,import_obsidian6,root_14,root_23,root_32,root_82,root_63,root_52,root_133,root_15,root_18,root_16,root_112,root_19,root_92,root_43,root_21,root_20,root3,$$css4,PluginDialogModal,d,d2,DUMMY_HEAD,DUMMY_END,pluginList,pluginIsEnumerating,pluginV2Progress,pluginManifests,pluginManifestStore,PluginDataExDisplayV2,ConfigSync,getHttpHandlerExtensionConfiguration,resolveHttpHandlerRuntimeConfig,HttpAuthLocation,HttpApiKeyAuthLocation,EndpointURLScheme,AlgorithmId,FieldPosition,SMITHY_CONTEXT_KEY,IniSectionType,RequestHandlerProtocol,HttpRequest,HttpResponse,addExpectContinueMiddlewareOptions,getAddExpectContinuePlugin,hostHeaderMiddleware,hostHeaderMiddlewareOptions,getHostHeaderPlugin,loggerMiddlewareOptions,getLoggerPlugin,recursionDetectionMiddleware,addRecursionDetectionMiddlewareOptions,getRecursionDetectionPlugin,NoOpLogger,getAllAliases,getMiddlewareNameWithAliases,constructStack,stepWeights,priorityWeights,Client,alphabetByEncoding,alphabetByValue,bitsPerLetter,bitsPerByte,maxLetterValue,fromBase64,fromUtf8,toUint8Array,toUtf8,Uint8ArrayBlobAdapter,getAwsChunkedEncodingStream,escapeUri,hexEncode,keepAliveSupport,FetchHttpHandler,streamCollector,SHORT_TO_HEX,HEX_TO_SHORT,isReadableStream,sdkStreamMixin,isBlobInstance,collectBody,Command,ClassBuilder,SENSITIVE_STRING,createAggregatedClient,parseBoolean,expectNumber,MAX_FLOAT,expectFloat32,expectLong,expectInt32,expectShort,expectByte,expectSizedInt,castInt,expectNonNull,expectObject,expectString,expectUnion,strictParseFloat32,NUMBER_REGEX,parseNumber,strictParseLong,strictParseInt32,strictParseShort,strictParseByte,stackTraceWarning,logger,DAYS,MONTHS,RFC3339_WITH_OFFSET,parseRfc3339DateTimeWithOffset,IMF_FIXDATE,RFC_850_DATE,ASC_TIME,parseRfc7231DateTime,buildDate,parseTwoDigitYear,adjustRfc850Year,parseMonthByShortName,DAYS_IN_MONTH,validateDayOfMonth,isLeapYear,parseDateValue,parseMilliseconds,parseOffsetToMilliseconds,stripLeadingZeroes,ServiceException,decorateServiceException,throwDefaultError,withBaseException,deserializeMetadata,loadConfigsForDefaultMode,getChecksumConfiguration2,resolveChecksumRuntimeConfig2,getRetryConfiguration,resolveRetryRuntimeConfig,getDefaultExtensionConfiguration,resolveDefaultRuntimeConfig2,getArrayIfSingleItem,getValueFromTextNode,StringWrapper,mapWithFilter,applyInstruction,nonNullish,pass,resolvedPath,serializeDateTime,checkContentLengthHeaderMiddlewareOptions,getCheckContentLengthHeaderPlugin,regionRedirectEndpointMiddleware,regionRedirectEndpointMiddlewareOptions,regionRedirectMiddlewareOptions,getRegionRedirectMiddlewarePlugin,s3ExpiresMiddleware,s3ExpiresMiddlewareOptions,getS3ExpiresMiddlewarePlugin,S3ExpressIdentityCache,S3ExpressIdentityCacheEntry,S3ExpressIdentityProviderImpl,getSmithyContext,normalizeProvider,AMZ_DATE_QUERY_PARAM,AMZ_DATE_HEADER,GENERATED_HEADERS,SIGNATURE_HEADER,TOKEN_HEADER,ALWAYS_UNSIGNABLE_HEADERS,PROXY_HEADER_PATTERN,SEC_HEADER_PATTERN,EVENT_ALGORITHM_IDENTIFIER,signingKeyCache,cacheQueue,createScope,getSigningKey,hmac2,getCanonicalHeaders,getCanonicalQuery,isArrayBuffer,getPayloadHash,HeaderFormatter,HEADER_VALUE_TYPE,UUID_PATTERN,Int64,hasHeader,moveHeadersToQuery,prepareRequest,iso8601,toDate,SignatureV4,formatDate,getCanonicalHeaderList,SelectorType,SESSION_TOKEN_QUERY_PARAM,SESSION_TOKEN_HEADER,SignatureV4S3Express,s3ExpressMiddleware,s3ExpressMiddlewareOptions,getS3ExpressPlugin,httpAuthSchemeMiddleware,resolveParamsForS3,DOMAIN_PATTERN,IP_ADDRESS_PATTERN,DOTS_PATTERN,isDnsCompatibleBucketName,isArnBucketName,createConfigValueProvider,getEndpointFromConfig,parseUrl,toEndpointV1,getEndpointFromInstructions,resolveParams,endpointMiddleware,deserializerMiddleware,serializerMiddleware,deserializerMiddlewareOption,serializerMiddlewareOption,endpointMiddlewareOptions,getEndpointPlugin,resolveEndpointConfig,httpAuthSchemeEndpointRuleSetMiddlewareOptions,getHttpAuthSchemeEndpointRuleSetPlugin,defaultErrorHandler,defaultSuccessHandler,httpSigningMiddleware,RETRY_MODES,DEFAULT_RETRY_MODE,CLOCK_SKEW_ERROR_CODES,THROTTLING_ERROR_CODES,TRANSIENT_ERROR_CODES,TRANSIENT_ERROR_STATUS_CODES,NODEJS_TIMEOUT_ERROR_CODES,isClockSkewCorrectedError,isThrottlingError,isTransientError,isServerError,DefaultRateLimiter,getDefaultRetryBackoffStrategy,createDefaultRetryToken,StandardRetryStrategy,AdaptiveRetryStrategy,ConfiguredRetryStrategy,getRandomValues,rnds8,byteToHex,randomUUID,native_default,v4_default,asSdkError,resolveRetryConfig,isStreamingPayload,retryMiddleware,isRetryStrategyV2,getRetryErrorInfo,getRetryErrorType,retryMiddlewareOptions,getRetryPlugin,getRetryAfterHint,httpSigningMiddlewareOptions,getHttpSigningPlugin,DefaultIdentityProviderConfig,isIdentityExpired,doesIdentityRequireRefresh,memoizeIdentityProvider,normalizeProvider2,RequestBuilder,signS3Express,defaultErrorHandler2,defaultSuccessHandler2,s3ExpressHttpSigningMiddleware,getS3ExpressHttpSigningPlugin,resolveS3Config,THROW_IF_EMPTY_BODY,throw200ExceptionsMiddleware,collectBody2,throw200ExceptionsMiddlewareOptions,getThrow200ExceptionsPlugin,validate2,bucketEndpointMiddlewareOptions,validateBucketNameMiddlewareOptions,getValidateBucketNamePlugin,IP_V4_REGEX,isIpAddress,VALID_HOST_LABEL_REGEX,isValidHostLabel,customEndpointFunctions,EndpointError,booleanEquals,getAttrPathList,getAttr,isSet,not,DEFAULT_PORTS,endpointFunctions,evaluateTemplate,getReferenceValue,evaluateExpression,callFunction,evaluateCondition,evaluateConditions,getEndpointHeaders,getEndpointProperty,getEndpointProperties,getEndpointUrl,evaluateEndpointRule,evaluateErrorRule,evaluateTreeRule,evaluateRules,resolveEndpoint,isVirtualHostableS3Bucket,selectedPartitionsInfo,awsEndpointFunctions,UA_NAME_ESCAPE_REGEX,UA_VALUE_ESCAPE_REGEX,userAgentMiddleware,escapeUserAgent,getUserAgentMiddlewareOptions,getUserAgentPlugin,isFipsRegion,getRealRegion,resolveRegionConfig,resolveEventStreamSerdeConfig,CONTENT_LENGTH_HEADER2,contentLengthMiddlewareOptions,getContentLengthPlugin,getDateHeader,getSkewCorrectedDate,isClockSkewed,getUpdatedSystemClockOffset,throwSigningPropertyError,validateSigningProperties,AwsSdkSigV4Signer,AwsSdkSigV4ASigner,memoize,resolveAwsSdkSigV4AConfig,resolveAwsSdkSigV4Config,collectBodyString,import_fast_xml_parser,parseXmlBody,parseXmlErrorBody,loadRestXmlErrorCode,SignatureV4MultiRegion,ce,cf,cg,ch3,ci,cj,ck,cl,cm,cn,co,cp,cq,cr,cs,ct,b,c,d3,e2,f,g,h,i,j,k,l,m2,n2,o,p2,q,r3,s,t2,u,v,w,x,y,z,A,B,C,D,E,F,G,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,bA,bB,bC,bD,bE,bF,bG,bH,bI,bJ,bK,bL,bM,bN,bO,bP,bQ,bR,bS,bT,bU,bV,bW,bX,bY,bZ,ca,cb,cc,cd,ruleSet,defaultEndpointResolver,defaultS3HttpAuthSchemeParametersProvider,defaultS3HttpAuthSchemeProvider,resolveHttpAuthSchemeConfig,resolveClientEndpointParameters,commonParams,S3ServiceException,NoSuchUpload,ObjectNotInActiveTierError,BucketAlreadyExists,BucketAlreadyOwnedByYou,NoSuchBucket,AnalyticsFilter,LifecycleRuleFilter,MetricsFilter,ReplicationRuleFilter,InvalidObjectState,NoSuchKey,NotFound,CompleteMultipartUploadOutputFilterSensitiveLog,CompleteMultipartUploadRequestFilterSensitiveLog,CopyObjectOutputFilterSensitiveLog,CopyObjectRequestFilterSensitiveLog,CreateMultipartUploadOutputFilterSensitiveLog,CreateMultipartUploadRequestFilterSensitiveLog,SessionCredentialsFilterSensitiveLog,CreateSessionOutputFilterSensitiveLog,ServerSideEncryptionByDefaultFilterSensitiveLog,ServerSideEncryptionRuleFilterSensitiveLog,ServerSideEncryptionConfigurationFilterSensitiveLog,GetBucketEncryptionOutputFilterSensitiveLog,SSEKMSFilterSensitiveLog,InventoryEncryptionFilterSensitiveLog,InventoryS3BucketDestinationFilterSensitiveLog,InventoryDestinationFilterSensitiveLog,InventoryConfigurationFilterSensitiveLog,GetBucketInventoryConfigurationOutputFilterSensitiveLog,GetObjectOutputFilterSensitiveLog,GetObjectRequestFilterSensitiveLog,GetObjectAttributesRequestFilterSensitiveLog,GetObjectTorrentOutputFilterSensitiveLog,HeadObjectOutputFilterSensitiveLog,HeadObjectRequestFilterSensitiveLog,ListBucketInventoryConfigurationsOutputFilterSensitiveLog,ListPartsRequestFilterSensitiveLog,PutBucketEncryptionRequestFilterSensitiveLog,PutBucketInventoryConfigurationRequestFilterSensitiveLog,XmlText,XmlNode,ObjectAlreadyInActiveTierError,SelectObjectContentEventStream,PutObjectOutputFilterSensitiveLog,PutObjectRequestFilterSensitiveLog,EncryptionFilterSensitiveLog,S3LocationFilterSensitiveLog,OutputLocationFilterSensitiveLog,RestoreRequestFilterSensitiveLog,RestoreObjectRequestFilterSensitiveLog,SelectObjectContentOutputFilterSensitiveLog,SelectObjectContentRequestFilterSensitiveLog,UploadPartOutputFilterSensitiveLog,UploadPartRequestFilterSensitiveLog,UploadPartCopyOutputFilterSensitiveLog,UploadPartCopyRequestFilterSensitiveLog,WriteGetObjectResponseRequestFilterSensitiveLog,se_AbortMultipartUploadCommand,se_CompleteMultipartUploadCommand,se_CopyObjectCommand,se_CreateBucketCommand,se_CreateMultipartUploadCommand,se_CreateSessionCommand,se_DeleteBucketCommand,se_DeleteBucketAnalyticsConfigurationCommand,se_DeleteBucketCorsCommand,se_DeleteBucketEncryptionCommand,se_DeleteBucketIntelligentTieringConfigurationCommand,se_DeleteBucketInventoryConfigurationCommand,se_DeleteBucketLifecycleCommand,se_DeleteBucketMetricsConfigurationCommand,se_DeleteBucketOwnershipControlsCommand,se_DeleteBucketPolicyCommand,se_DeleteBucketReplicationCommand,se_DeleteBucketTaggingCommand,se_DeleteBucketWebsiteCommand,se_DeleteObjectCommand,se_DeleteObjectsCommand,se_DeleteObjectTaggingCommand,se_DeletePublicAccessBlockCommand,se_GetBucketAccelerateConfigurationCommand,se_GetBucketAclCommand,se_GetBucketAnalyticsConfigurationCommand,se_GetBucketCorsCommand,se_GetBucketEncryptionCommand,se_GetBucketIntelligentTieringConfigurationCommand,se_GetBucketInventoryConfigurationCommand,se_GetBucketLifecycleConfigurationCommand,se_GetBucketLocationCommand,se_GetBucketLoggingCommand,se_GetBucketMetricsConfigurationCommand,se_GetBucketNotificationConfigurationCommand,se_GetBucketOwnershipControlsCommand,se_GetBucketPolicyCommand,se_GetBucketPolicyStatusCommand,se_GetBucketReplicationCommand,se_GetBucketRequestPaymentCommand,se_GetBucketTaggingCommand,se_GetBucketVersioningCommand,se_GetBucketWebsiteCommand,se_GetObjectCommand,se_GetObjectAclCommand,se_GetObjectAttributesCommand,se_GetObjectLegalHoldCommand,se_GetObjectLockConfigurationCommand,se_GetObjectRetentionCommand,se_GetObjectTaggingCommand,se_GetObjectTorrentCommand,se_GetPublicAccessBlockCommand,se_HeadBucketCommand,se_HeadObjectCommand,se_ListBucketAnalyticsConfigurationsCommand,se_ListBucketIntelligentTieringConfigurationsCommand,se_ListBucketInventoryConfigurationsCommand,se_ListBucketMetricsConfigurationsCommand,se_ListBucketsCommand,se_ListDirectoryBucketsCommand,se_ListMultipartUploadsCommand,se_ListObjectsCommand,se_ListObjectsV2Command,se_ListObjectVersionsCommand,se_ListPartsCommand,se_PutBucketAccelerateConfigurationCommand,se_PutBucketAclCommand,se_PutBucketAnalyticsConfigurationCommand,se_PutBucketCorsCommand,se_PutBucketEncryptionCommand,se_PutBucketIntelligentTieringConfigurationCommand,se_PutBucketInventoryConfigurationCommand,se_PutBucketLifecycleConfigurationCommand,se_PutBucketLoggingCommand,se_PutBucketMetricsConfigurationCommand,se_PutBucketNotificationConfigurationCommand,se_PutBucketOwnershipControlsCommand,se_PutBucketPolicyCommand,se_PutBucketReplicationCommand,se_PutBucketRequestPaymentCommand,se_PutBucketTaggingCommand,se_PutBucketVersioningCommand,se_PutBucketWebsiteCommand,se_PutObjectCommand,se_PutObjectAclCommand,se_PutObjectLegalHoldCommand,se_PutObjectLockConfigurationCommand,se_PutObjectRetentionCommand,se_PutObjectTaggingCommand,se_PutPublicAccessBlockCommand,se_RestoreObjectCommand,se_SelectObjectContentCommand,se_UploadPartCommand,se_UploadPartCopyCommand,se_WriteGetObjectResponseCommand,de_AbortMultipartUploadCommand,de_CompleteMultipartUploadCommand,de_CopyObjectCommand,de_CreateBucketCommand,de_CreateMultipartUploadCommand,de_CreateSessionCommand,de_DeleteBucketCommand,de_DeleteBucketAnalyticsConfigurationCommand,de_DeleteBucketCorsCommand,de_DeleteBucketEncryptionCommand,de_DeleteBucketIntelligentTieringConfigurationCommand,de_DeleteBucketInventoryConfigurationCommand,de_DeleteBucketLifecycleCommand,de_DeleteBucketMetricsConfigurationCommand,de_DeleteBucketOwnershipControlsCommand,de_DeleteBucketPolicyCommand,de_DeleteBucketReplicationCommand,de_DeleteBucketTaggingCommand,de_DeleteBucketWebsiteCommand,de_DeleteObjectCommand,de_DeleteObjectsCommand,de_DeleteObjectTaggingCommand,de_DeletePublicAccessBlockCommand,de_GetBucketAccelerateConfigurationCommand,de_GetBucketAclCommand,de_GetBucketAnalyticsConfigurationCommand,de_GetBucketCorsCommand,de_GetBucketEncryptionCommand,de_GetBucketIntelligentTieringConfigurationCommand,de_GetBucketInventoryConfigurationCommand,de_GetBucketLifecycleConfigurationCommand,de_GetBucketLocationCommand,de_GetBucketLoggingCommand,de_GetBucketMetricsConfigurationCommand,de_GetBucketNotificationConfigurationCommand,de_GetBucketOwnershipControlsCommand,de_GetBucketPolicyCommand,de_GetBucketPolicyStatusCommand,de_GetBucketReplicationCommand,de_GetBucketRequestPaymentCommand,de_GetBucketTaggingCommand,de_GetBucketVersioningCommand,de_GetBucketWebsiteCommand,de_GetObjectCommand,de_GetObjectAclCommand,de_GetObjectAttributesCommand,de_GetObjectLegalHoldCommand,de_GetObjectLockConfigurationCommand,de_GetObjectRetentionCommand,de_GetObjectTaggingCommand,de_GetObjectTorrentCommand,de_GetPublicAccessBlockCommand,de_HeadBucketCommand,de_HeadObjectCommand,de_ListBucketAnalyticsConfigurationsCommand,de_ListBucketIntelligentTieringConfigurationsCommand,de_ListBucketInventoryConfigurationsCommand,de_ListBucketMetricsConfigurationsCommand,de_ListBucketsCommand,de_ListDirectoryBucketsCommand,de_ListMultipartUploadsCommand,de_ListObjectsCommand,de_ListObjectsV2Command,de_ListObjectVersionsCommand,de_ListPartsCommand,de_PutBucketAccelerateConfigurationCommand,de_PutBucketAclCommand,de_PutBucketAnalyticsConfigurationCommand,de_PutBucketCorsCommand,de_PutBucketEncryptionCommand,de_PutBucketIntelligentTieringConfigurationCommand,de_PutBucketInventoryConfigurationCommand,de_PutBucketLifecycleConfigurationCommand,de_PutBucketLoggingCommand,de_PutBucketMetricsConfigurationCommand,de_PutBucketNotificationConfigurationCommand,de_PutBucketOwnershipControlsCommand,de_PutBucketPolicyCommand,de_PutBucketReplicationCommand,de_PutBucketRequestPaymentCommand,de_PutBucketTaggingCommand,de_PutBucketVersioningCommand,de_PutBucketWebsiteCommand,de_PutObjectCommand,de_PutObjectAclCommand,de_PutObjectLegalHoldCommand,de_PutObjectLockConfigurationCommand,de_PutObjectRetentionCommand,de_PutObjectTaggingCommand,de_PutPublicAccessBlockCommand,de_RestoreObjectCommand,de_SelectObjectContentCommand,de_UploadPartCommand,de_UploadPartCopyCommand,de_WriteGetObjectResponseCommand,de_CommandError,throwDefaultError2,de_BucketAlreadyExistsRes,de_BucketAlreadyOwnedByYouRes,de_InvalidObjectStateRes,de_NoSuchBucketRes,de_NoSuchKeyRes,de_NoSuchUploadRes,de_NotFoundRes,de_ObjectAlreadyInActiveTierErrorRes,de_ObjectNotInActiveTierErrorRes,de_SelectObjectContentEventStream,de_ContinuationEvent_event,de_EndEvent_event,de_ProgressEvent_event,de_RecordsEvent_event,de_StatsEvent_event,se_AbortIncompleteMultipartUpload,se_AccelerateConfiguration,se_AccessControlPolicy,se_AccessControlTranslation,se_AllowedHeaders,se_AllowedMethods,se_AllowedOrigins,se_AnalyticsAndOperator,se_AnalyticsConfiguration,se_AnalyticsExportDestination,se_AnalyticsFilter,se_AnalyticsS3BucketDestination,se_BucketInfo,se_BucketLifecycleConfiguration,se_BucketLoggingStatus,se_CompletedMultipartUpload,se_CompletedPart,se_CompletedPartList,se_Condition,se_CORSConfiguration,se_CORSRule,se_CORSRules,se_CreateBucketConfiguration,se_CSVInput,se_CSVOutput,se_DefaultRetention,se_Delete,se_DeleteMarkerReplication,se_Destination,se_Encryption,se_EncryptionConfiguration,se_ErrorDocument,se_EventBridgeConfiguration,se_EventList,se_ExistingObjectReplication,se_ExposeHeaders,se_FilterRule,se_FilterRuleList,se_GlacierJobParameters,se_Grant,se_Grantee,se_Grants,se_IndexDocument,se_InputSerialization,se_IntelligentTieringAndOperator,se_IntelligentTieringConfiguration,se_IntelligentTieringFilter,se_InventoryConfiguration,se_InventoryDestination,se_InventoryEncryption,se_InventoryFilter,se_InventoryOptionalFields,se_InventoryS3BucketDestination,se_InventorySchedule,se_JSONInput,se_JSONOutput,se_LambdaFunctionConfiguration,se_LambdaFunctionConfigurationList,se_LifecycleExpiration,se_LifecycleRule,se_LifecycleRuleAndOperator,se_LifecycleRuleFilter,se_LifecycleRules,se_LocationInfo,se_LoggingEnabled,se_MetadataEntry,se_Metrics,se_MetricsAndOperator,se_MetricsConfiguration,se_MetricsFilter,se_NoncurrentVersionExpiration,se_NoncurrentVersionTransition,se_NoncurrentVersionTransitionList,se_NotificationConfiguration,se_NotificationConfigurationFilter,se_ObjectIdentifier,se_ObjectIdentifierList,se_ObjectLockConfiguration,se_ObjectLockLegalHold,se_ObjectLockRetention,se_ObjectLockRule,se_OutputLocation,se_OutputSerialization,se_Owner,se_OwnershipControls,se_OwnershipControlsRule,se_OwnershipControlsRules,se_ParquetInput,se_PartitionedPrefix,se_PublicAccessBlockConfiguration,se_QueueConfiguration,se_QueueConfigurationList,se_Redirect,se_RedirectAllRequestsTo,se_ReplicaModifications,se_ReplicationConfiguration,se_ReplicationRule,se_ReplicationRuleAndOperator,se_ReplicationRuleFilter,se_ReplicationRules,se_ReplicationTime,se_ReplicationTimeValue,se_RequestPaymentConfiguration,se_RequestProgress,se_RestoreRequest,se_RoutingRule,se_RoutingRules,se_S3KeyFilter,se_S3Location,se_ScanRange,se_SelectParameters,se_ServerSideEncryptionByDefault,se_ServerSideEncryptionConfiguration,se_ServerSideEncryptionRule,se_ServerSideEncryptionRules,se_SimplePrefix,se_SourceSelectionCriteria,se_SSEKMS,se_SseKmsEncryptedObjects,se_SSES3,se_StorageClassAnalysis,se_StorageClassAnalysisDataExport,se_Tag,se_Tagging,se_TagSet,se_TargetGrant,se_TargetGrants,se_TargetObjectKeyFormat,se_Tiering,se_TieringList,se_TopicConfiguration,se_TopicConfigurationList,se_Transition,se_TransitionList,se_UserMetadata,se_VersioningConfiguration,se_WebsiteConfiguration,de_AbortIncompleteMultipartUpload,de_AccessControlTranslation,de_AllowedHeaders,de_AllowedMethods,de_AllowedOrigins,de_AnalyticsAndOperator,de_AnalyticsConfiguration,de_AnalyticsConfigurationList,de_AnalyticsExportDestination,de_AnalyticsFilter,de_AnalyticsS3BucketDestination,de_Bucket,de_Buckets,de_Checksum,de_ChecksumAlgorithmList,de_CommonPrefix,de_CommonPrefixList,de_Condition,de_ContinuationEvent,de_CopyObjectResult,de_CopyPartResult,de_CORSRule,de_CORSRules,de_DefaultRetention,de_DeletedObject,de_DeletedObjects,de_DeleteMarkerEntry,de_DeleteMarkerReplication,de_DeleteMarkers,de_Destination,de_EncryptionConfiguration,de_EndEvent,de__Error,de_ErrorDocument,de_Errors,de_EventBridgeConfiguration,de_EventList,de_ExistingObjectReplication,de_ExposeHeaders,de_FilterRule,de_FilterRuleList,de_GetObjectAttributesParts,de_Grant,de_Grantee,de_Grants,de_IndexDocument,de_Initiator,de_IntelligentTieringAndOperator,de_IntelligentTieringConfiguration,de_IntelligentTieringConfigurationList,de_IntelligentTieringFilter,de_InventoryConfiguration,de_InventoryConfigurationList,de_InventoryDestination,de_InventoryEncryption,de_InventoryFilter,de_InventoryOptionalFields,de_InventoryS3BucketDestination,de_InventorySchedule,de_LambdaFunctionConfiguration,de_LambdaFunctionConfigurationList,de_LifecycleExpiration,de_LifecycleRule,de_LifecycleRuleAndOperator,de_LifecycleRuleFilter,de_LifecycleRules,de_LoggingEnabled,de_Metrics,de_MetricsAndOperator,de_MetricsConfiguration,de_MetricsConfigurationList,de_MetricsFilter,de_MultipartUpload,de_MultipartUploadList,de_NoncurrentVersionExpiration,de_NoncurrentVersionTransition,de_NoncurrentVersionTransitionList,de_NotificationConfigurationFilter,de__Object,de_ObjectList,de_ObjectLockConfiguration,de_ObjectLockLegalHold,de_ObjectLockRetention,de_ObjectLockRule,de_ObjectPart,de_ObjectVersion,de_ObjectVersionList,de_Owner,de_OwnershipControls,de_OwnershipControlsRule,de_OwnershipControlsRules,de_Part,de_PartitionedPrefix,de_Parts,de_PartsList,de_PolicyStatus,de_Progress,de_PublicAccessBlockConfiguration,de_QueueConfiguration,de_QueueConfigurationList,de_Redirect,de_RedirectAllRequestsTo,de_ReplicaModifications,de_ReplicationConfiguration,de_ReplicationRule,de_ReplicationRuleAndOperator,de_ReplicationRuleFilter,de_ReplicationRules,de_ReplicationTime,de_ReplicationTimeValue,de_RestoreStatus,de_RoutingRule,de_RoutingRules,de_S3KeyFilter,de_ServerSideEncryptionByDefault,de_ServerSideEncryptionConfiguration,de_ServerSideEncryptionRule,de_ServerSideEncryptionRules,de_SessionCredentials,de_SourceSelectionCriteria,de_SSEKMS,de_SseKmsEncryptedObjects,de_SSES3,de_Stats,de_StorageClassAnalysis,de_StorageClassAnalysisDataExport,de_Tag,de_TagSet,de_TargetGrant,de_TargetGrants,de_TargetObjectKeyFormat,de_Tiering,de_TieringList,de_TopicConfiguration,de_TopicConfigurationList,de_Transition,de_TransitionList,deserializeMetadata2,collectBodyString2,isSerializableHeaderValue,_A,_AAO,_AC,_ACL,_ACLc,_ACLn,_ACP,_ACT,_ACc,_AD,_AED,_AF,_AH,_AHl,_AI,_AIMU,_AIc,_AKI,_AM,_AMl,_AO,_AOl,_APA,_APAc,_AQRD,_AR,_ARI,_AS,_ASBD,_ASEFF,_ASSEBD,_AT,_Ac,_B,_BAI,_BAS,_BGR,_BI,_BKE,_BLC,_BLCu,_BLN,_BLP,_BLS,_BLT,_BN,_BP,_BPA,_BPP,_BR,_BRy,_BS,_BT,_BVS,_Bu,_C,_CA,_CACL,_CBC,_CC,_CCRC,_CCRCC,_CD,_CDr,_CE,_CF,_CFC,_CL,_CLo,_CM,_CMD,_CMU,_CORSC,_CORSR,_CORSRu,_CP,_CPo,_CR,_CRSBA,_CS,_CSHA,_CSHAh,_CSIM,_CSIMS,_CSINM,_CSIUS,_CSR,_CSSSECA,_CSSSECK,_CSSSECKMD,_CSV,_CSVI,_CSVIn,_CSVO,_CT,_CTo,_CTom,_Ch,_Co,_Cod,_Com,_Con,_D,_DAI,_DE,_DM,_DMR,_DMRS,_DMVI,_DMe,_DN,_DR,_DRe,_Da,_Dat,_De,_Del,_Des,_Desc,_E,_EA,_EBC,_EBO,_EC,_ECn,_ED,_EH,_EHx,_EM,_EODM,_EOR,_EORS,_ERP,_ES,_ESBO,_ESx,_ET,_ETa,_ETn,_ETv,_ETx,_En,_Ena,_End,_Er,_Err,_Ev,_Eve,_Ex,_Exp,_F,_FD,_FHI,_FO,_FR,_FRN,_FRV,_FRi,_Fi,_Fo,_Fr,_G,_GFC,_GJP,_GR,_GRACP,_GW,_GWACP,_Gr,_Gra,_HECRE,_HN,_HRC,_I,_IC,_ICL,_ID,_ID_,_IDn,_IE,_IEn,_IF,_IFn,_IFnv,_II,_IIOV,_IL,_IM,_IMS,_INM,_IOF,_IOV,_IP,_IPA,_IRIP,_IS,_ISBD,_ISn,_IT,_ITAO,_ITAT,_ITC,_ITCL,_ITD,_ITF,_ITI,_ITS,_IUS,_In,_Ini,_JSON,_JSONI,_JSONO,_JSONT,_K,_KC,_KI,_KM,_KMSC,_KMSKI,_KMSMKID,_KPE,_L,_LC,_LE,_LEi,_LFA,_LFC,_LFCa,_LI,_LM,_LNAS,_LP,_LR,_LRAO,_LRF,_LT,_M,_MAO,_MAS,_MB,_MC,_MCL,_MD,_MDB,_MDf,_ME,_MF,_MFA,_MFAD,_MI,_MK,_MKe,_MM,_MP,_MS,_MU,_MV,_Me,_Mes,_Mi,_Mo,_N,_NC,_NCF,_NCT,_ND,_NI,_NKM,_NM,_NNV,_NPNM,_NUIM,_NVE,_NVIM,_NVT,_NVTo,_O,_OA,_OC,_OCACL,_OCR,_OF,_OI,_OK,_OL,_OLC,_OLE,_OLEFB,_OLLH,_OLLHS,_OLM,_OLR,_OLRM,_OLRUD,_OLRb,_OO,_OOA,_OOw,_OP,_OS,_OSGT,_OSGTB,_OSLT,_OSLTB,_OSV,_OSb,_OVI,_Ob,_P,_PABC,_PC,_PDS,_PI,_PN,_PNM,_PP,_Pa,_Par,_Parq,_Part,_Pe,_Pr,_Pri,_Q,_QA,_QC,_QCu,_QCuo,_QEC,_QF,_Qu,_R,_RART,_RC,_RCC,_RCD,_RCE,_RCL,_RCT,_RCe,_RD,_RE,_RED,_RKKID,_RKPW,_RKW,_RM,_RMS,_ROP,_RP,_RPB,_RPC,_RPe,_RR,_RRAO,_RRF,_RRS,_RRT,_RRe,_RRes,_RRo,_RRou,_RS,_RSe,_RT,_RTS,_RTV,_RTe,_RUD,_Re,_Red,_Ro,_Ru,_Rul,_S,_SA,_SAK,_SBD,_SC,_SCA,_SCADE,_SCASV,_SCt,_SDV,_SK,_SKEO,_SKEOS,_SKF,_SKe,_SL,_SM,_SOCR,_SP,_SPi,_SR,_SS,_SSC,_SSE,_SSEA,_SSEBD,_SSEC,_SSECA,_SSECK,_SSECKMD,_SSEKMS,_SSEKMSEC,_SSEKMSKI,_SSER,_SSES,_ST,_S_,_Sc,_Se,_Si,_St,_Su,_T,_TA,_TB,_TC,_TCo,_TCop,_TD,_TG,_TGa,_TOKF,_TP,_TPC,_TS,_TSC,_Ta,_Tag,_Ti,_Tie,_Tier,_Tim,_To,_Top,_Tr,_Tra,_Ty,_U,_UI,_UIM,_UM,_URI,_Up,_V,_VC,_VCe,_VI,_VIM,_Va,_Ve,_WC,_WRL,_Y,_a5,_ac,_acl,_ar,_at,_c,_cc,_cd,_ce,_cl,_cl_,_cm,_cr,_ct,_ct_,_d,_de,_e,_en,_et,_eta,_ex,_fo,_i,_im,_ims,_in,_inm,_it,_ius,_km,_l,_lh,_lm,_lo,_log,_lt,_m,_ma,_mb,_mdb,_me,_mk,_mp,_mu,_n,_oC,_ol,_p,_pAB,_pN,_pS,_pnm,_pr,_r,_rP,_ra,_rcc,_rcd,_rce,_rcl,_rct,_re,_res,_ret,_s,_sa,_se,_st,_t,_to,_u,_uI,_uim,_v,_vI,_ve,_ver,_vim,_w,_x,_xaa,_xaad,_xaapa,_xaari,_xaas,_xabgr,_xabln,_xablt,_xabole,_xabolt,_xabr,_xaca,_xacc,_xacc_,_xacm,_xacrsba,_xacs,_xacs_,_xacs__,_xacsim,_xacsims,_xacsinm,_xacsius,_xacsm,_xacsr,_xacssseca,_xacssseck,_xacssseckm,_xacsvi,_xadm,_xae,_xaebo,_xafec,_xafem,_xafhar,_xafhcc,_xafhcd,_xafhce,_xafhcl,_xafhcr,_xafhct,_xafhe,_xafhe_,_xafhlm,_xafhxacc,_xafhxacc_,_xafhxacs,_xafhxacs_,_xafhxadm,_xafhxae,_xafhxamm,_xafhxampc,_xafhxaollh,_xafhxaolm,_xafhxaolrud,_xafhxar,_xafhxarc,_xafhxars,_xafhxasc,_xafhxasse,_xafhxasseakki,_xafhxassebke,_xafhxasseca,_xafhxasseckm,_xafhxatc,_xafhxavi,_xafs,_xagfc,_xagr,_xagra,_xagw,_xagwa,_xam,_xamd,_xamm,_xamp,_xampc,_xaoa,_xaollh,_xaolm,_xaolrud,_xaoo,_xaooa,_xapnm,_xar,_xarc,_xarop,_xarp,_xarr,_xars,_xart,_xasc,_xasca,_xasdv,_xasebo,_xasse,_xasseakki,_xassebke,_xassec,_xasseca,_xasseck,_xasseckm,_xat,_xatc,_xatd,_xavi,_xawrl,_xi,CreateSessionCommand,fromUtf82,SHA_1_HASH,SHA_1_HMAC_ALGO,EMPTY_DATA_SHA_1,fallbackWindow,Sha1,__assign,subtleCryptoMethods,fromUtf83,fromUtf84,Sha12,SHA_256_HASH,SHA_256_HMAC_ALGO,EMPTY_DATA_SHA_256,Sha256,KEY,INIT,MAX_HASHABLE_LENGTH,RawSha256,Sha2562,Sha2563,import_bowser,defaultUserAgent,AwsCrc32,Crc32,lookupTable,Int642,HeaderMarshaller,HEADER_VALUE_TYPE2,BOOLEAN_TAG,BYTE_TAG,SHORT_TAG,INT_TAG,LONG_TAG,BINARY_TAG,STRING_TAG,TIMESTAMP_TAG,UUID_TAG,UUID_PATTERN2,EventStreamCodec,MessageDecoderStream,MessageEncoderStream,SmithyMessageDecoderStream,SmithyMessageEncoderStream,EventStreamMarshaller,readableStreamtoIterable,iterableToReadableStream,EventStreamMarshaller2,isReadableStream2,eventStreamSerdeProvider2,blobHasher,invalidProvider,INIT2,Md5,TEXT_ENCODER,calculateBodyLength,getRuntimeConfig,DEFAULTS_MODE_OPTIONS,import_bowser2,resolveDefaultsModeConfig,isMobileBrowser,getRuntimeConfig2,getAwsRegionExtensionConfiguration,resolveAwsRegionExtensionConfiguration,getHttpAuthExtensionConfiguration,resolveHttpAuthRuntimeConfig,resolveRuntimeExtensions,S3Client,AbortMultipartUploadCommand,ssecMiddlewareOptions,getSsecPlugin,CompleteMultipartUploadCommand,CopyObjectCommand,locationConstraintMiddlewareOptions,getLocationConstraintPlugin,CreateBucketCommand,CreateMultipartUploadCommand,DeleteBucketAnalyticsConfigurationCommand,DeleteBucketCommand,DeleteBucketCorsCommand,DeleteBucketEncryptionCommand,DeleteBucketIntelligentTieringConfigurationCommand,DeleteBucketInventoryConfigurationCommand,DeleteBucketLifecycleCommand,DeleteBucketMetricsConfigurationCommand,DeleteBucketOwnershipControlsCommand,DeleteBucketPolicyCommand,DeleteBucketReplicationCommand,DeleteBucketTaggingCommand,DeleteBucketWebsiteCommand,DeleteObjectCommand,ChecksumAlgorithm2,ChecksumLocation,DEFAULT_CHECKSUM_ALGORITHM,S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM,CLIENT_SUPPORTED_ALGORITHMS,PRIORITY_ORDER_ALGORITHMS,getChecksumAlgorithmForRequest,getChecksumLocationName,hasHeader2,isStreaming,AwsCrc32c,Crc32c,lookupTable2,selectChecksumAlgorithmFunction,stringHasher,flexibleChecksumsMiddlewareOptions,flexibleChecksumsMiddleware,getChecksumAlgorithmListForResponse,isChecksumWithPartNumber,getChecksum,validateChecksumFromResponse,flexibleChecksumsResponseMiddlewareOptions,flexibleChecksumsResponseMiddleware,getFlexibleChecksumsPlugin,DeleteObjectsCommand,DeleteObjectTaggingCommand,DeletePublicAccessBlockCommand,GetBucketAccelerateConfigurationCommand,GetBucketAclCommand,GetBucketAnalyticsConfigurationCommand,GetBucketCorsCommand,GetBucketEncryptionCommand,GetBucketIntelligentTieringConfigurationCommand,GetBucketInventoryConfigurationCommand,GetBucketLifecycleConfigurationCommand,GetBucketLocationCommand,GetBucketLoggingCommand,GetBucketMetricsConfigurationCommand,GetBucketNotificationConfigurationCommand,GetBucketOwnershipControlsCommand,GetBucketPolicyCommand,GetBucketPolicyStatusCommand,GetBucketReplicationCommand,GetBucketRequestPaymentCommand,GetBucketTaggingCommand,GetBucketVersioningCommand,GetBucketWebsiteCommand,GetObjectAclCommand,GetObjectAttributesCommand,GetObjectCommand,GetObjectLegalHoldCommand,GetObjectLockConfigurationCommand,GetObjectRetentionCommand,GetObjectTaggingCommand,GetObjectTorrentCommand,GetPublicAccessBlockCommand,HeadBucketCommand,HeadObjectCommand,ListBucketAnalyticsConfigurationsCommand,ListBucketIntelligentTieringConfigurationsCommand,ListBucketInventoryConfigurationsCommand,ListBucketMetricsConfigurationsCommand,ListBucketsCommand,ListDirectoryBucketsCommand,ListMultipartUploadsCommand,ListObjectsCommand,ListObjectsV2Command,ListObjectVersionsCommand,ListPartsCommand,PutBucketAccelerateConfigurationCommand,PutBucketAclCommand,PutBucketAnalyticsConfigurationCommand,PutBucketCorsCommand,PutBucketEncryptionCommand,PutBucketIntelligentTieringConfigurationCommand,PutBucketInventoryConfigurationCommand,PutBucketLifecycleConfigurationCommand,PutBucketLoggingCommand,PutBucketMetricsConfigurationCommand,PutBucketNotificationConfigurationCommand,PutBucketOwnershipControlsCommand,PutBucketPolicyCommand,PutBucketReplicationCommand,PutBucketRequestPaymentCommand,PutBucketTaggingCommand,PutBucketVersioningCommand,PutBucketWebsiteCommand,PutObjectAclCommand,PutObjectCommand,PutObjectLegalHoldCommand,PutObjectLockConfigurationCommand,PutObjectRetentionCommand,PutObjectTaggingCommand,PutPublicAccessBlockCommand,RestoreObjectCommand,SelectObjectContentCommand,UploadPartCommand,UploadPartCopyCommand,WriteGetObjectResponseCommand,S3,CheckPointInfoDefault,PREFIX_TRENCH,idx,series,indexes,inProgress,failed,Trench,RECORD_SPLIT,UNIT_SPLIT,te4,JournalSyncAbstract,JournalSyncMinio,MILSTONE_DOCID,currentVersionRange,LiveSyncJournalReplicator,currentVersionRange2,selectorOnDemandPull,LiveSyncCouchDBReplicator,ObsHttpHandler,measures,root_17,root4,$$css5,import_obsidian7,TestPaneView,ModuleDev,SerializedFileAccess,StorageEventManager,StorageEventManagerObsidian,import_obsidian8,ModuleFileAccessObsidian,AutoClosableModal,InputStringDialog,PopoverSelectString,MessageBox,askYesNo,askSelectString,askString,ModuleInputUIObsidian,ConditionType,RuleLevel,DoctorRegulation,_a6,OnDialogSettingsDefault,SettingInformation,ModuleMigration,ModuleCheckRemoteSize,import_diff_match_patch4,ModuleConflictResolver,ModuleInteractiveConflictResolver,ModuleObsidianSettings,ModuleRedFlag,ModuleObsidianMenu,ModuleSetupObsidian,ModuleDatabaseFileAccess,ModuleFileHandler,PouchError,MISSING_BULK_DOCS,MISSING_DOC,REV_CONFLICT,INVALID_ID,MISSING_ID,RESERVED_ID,UNKNOWN_ERROR,BAD_ARG,QUERY_PARSE_ERROR,DOC_VALIDATION,BAD_REQUEST,NOT_AN_OBJECT,IDB_ERROR,INVALID_REV,MISSING_STUB,getRandomValues2,rnds82,regex_default2,validate_default2,byteToHex2,stringify_default2,v4_default2,thisAtob,thisBtoa,import_spark_md5,import_events21,funcToString,objectCtorString,MAX_NUM_CONCURRENT_REQUESTS,hasLocal,nextTick2,Changes,keys2,qName,qParser,parser,uuid,f3,h2,MIN_MAGNITUDE,MAGNITUDE_DIGITS,SEP,combinationFields,matchers,index_browser_es_default,import_events22,Changes2,validRevRegex,AbstractPouchDB,TaskQueue,PouchInternal,PouchDB,ActiveTasks,eventEmitter,index_es_default,import_vuvuzela,import_spark_md52,setImmediateShim2,MD5_CHUNK_SIZE2,reservedWords,dataWords,ADAPTER_VERSION,DOC_STORE,BY_SEQ_STORE,ATTACH_STORE,ATTACH_AND_SEQ_STORE,META_STORE,LOCAL_STORE,DETECT_BLOB_SUPPORT_STORE,changesHandler$1,running,queue,cachedDBs,blobSupportPromise,openReqList,index_es_default2,import_spark_md53,setImmediateShim3,MD5_CHUNK_SIZE3,IDB_NULL,IDB_FALSE,IDB_TRUE,TEST_KEY_INVALID,TEST_PATH_INVALID,KEY_INVALID,PATH_INVALID,SLASH,IS_DOT,DOC_STORE2,META_LOCAL_STORE,POUCHDB_IDB_VERSION,versionMultiplier,BINARY_ATTACHMENTS,COUCH_COLLATE_LO,COUCH_COLLATE_HI,IDB_COLLATE_LO,IDB_COLLATE_HI,ADAPTER_NAME,idbChanges,openDatabases,index_es_default3,CHANGES_BATCH_SIZE,MAX_SIMULTANEOUS_REVS,CHANGES_TIMEOUT_BUFFER,DEFAULT_HEARTBEAT,supportsBulkGetMap,index_es_default4,QueryParseError,NotFoundError,BuiltInError,import_spark_md54,TaskQueue2,persistentQueues,tempViewQueue,index_es_default5,log,isArray,toJSON,builtInReduce__sum,builtInReduce__count,builtInReduce__stats,abstract,index_browser_es_default2,CHECKPOINT_VERSION,REPLICATOR,CHECKPOINT_HISTORY_SIZE,LOWEST_SEQ,CheckpointerInternal,comparisons,index_es_default6,import_spark_md55,setImmediateShim5,index_es_default7,import_events23,STARTING_BACK_OFF,Replication,Sync,index_es_default8,import_spark_md56,nativeFlat,polyFlat,flatten,requireValidation,arrayTypeComparisonOperators,equalityOperators,abstractMapper,ddocIdPrefix,COLLATE_LO,COLLATE_HI,SHORT_CIRCUIT_QUERY,logicalMatchers,plugin2,index_browser_es_default3,import_transform_pouch,ModuleObsidianAPI,ModuleObsidianEvents,root_110,root5,$$css6,import_obsidian10,LiveSyncSetting,LocalDatabaseMaintenance,import_obsidian11,toc,stubs,ObsidianLiveSyncSettingTab,ModuleObsidianSettingDialogue,DocumentHistoryModal,ModuleObsidianDocumentHistory,root_111,root_24,root_33,root_44,root_64,root_83,root_53,root_93,root_102,root6,$$css7,GlobalHistoryView,ModuleObsidianGlobalHistory,SETTING_HEADER,ModuleObsidianSettingsAsMarkdown,ModuleInitializerFile,ModuleKeyValueDB,ModulePouchDB,ModuleReplicator,ModuleReplicatorCouchDB,ModuleReplicatorMinIO,ModuleTargetFilter,ModulePeriodicProcess,ModuleRemoteGovernor,ModuleLocalDatabaseObsidian,ModuleConflictChecker,ModuleResolvingMismatchedTweaks,ModuleIntegratedTest,ModuleRebuilder,import_obsidian13,ModuleReplicateTest,ModuleLiveSyncMain,ModuleExtraSyncObsidian,EVENT_P2P_PEER_SHOW_EXTRA_MENU,AcceptedStatus,ConnectionStatus,root_25,root_113,root_34,on_click2,on_click_1,root_54,on_click_2,on_click_3,root_65,root_45,on_click_4,root_72,root_94,root_103,root_84,root7,$$css8,root_114,on_click3,on_click_12,root_26,root_35,root_46,root_73,root_85,root_55,root8,$$css9,import_obsidian14,P2PReplicatorPaneView,ObsidianAPIBase,instance2,p3,import_obsidian16,webcrypto4,Environment,P2PReplicatorCommandBase,P2PReplicator,InterceptiveAll,InterceptiveEvery,InterceptiveAny,ObsidianLiveSyncPlugin,__create=Object.create,__defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__typeError=msg=>{throw TypeError(msg)},__defNormalProp=(obj,key2,value)=>key2 in obj?__defProp(obj,key2,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key2]=value,__commonJS=(cb2,mod2)=>function __require(){return mod2||(0,cb2[__getOwnPropNames(cb2)[0]])((mod2={exports:{}}).exports,mod2),mod2.exports},__export=(target,all2)=>{for(var name in all2)__defProp(target,name,{get:all2[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key2 of __getOwnPropNames(from))__hasOwnProp.call(to,key2)||key2===except||__defProp(to,key2,{get:()=>from[key2],enumerable:!(desc=__getOwnPropDesc(from,key2))||desc.enumerable});return to},__toESM=(mod2,isNodeMode,target)=>(target=null!=mod2?__create(__getProtoOf(mod2)):{},__copyProps(!isNodeMode&&mod2&&mod2.__esModule?target:__defProp(target,"default",{value:mod2,enumerable:!0}),mod2)),__toCommonJS=mod2=>__copyProps(__defProp({},"__esModule",{value:!0}),mod2),__publicField=(obj,key2,value)=>__defNormalProp(obj,"symbol"!=typeof key2?key2+"":key2,value),__accessCheck=(obj,member,msg)=>member.has(obj)||__typeError("Cannot "+msg),__privateGet=(obj,member,getter)=>(__accessCheck(obj,member,"read from private field"),getter?getter.call(obj):member.get(obj)),__privateAdd=(obj,member,value)=>member.has(obj)?__typeError("Cannot add the same private member more than once"):member instanceof WeakSet?member.add(obj):member.set(obj,value),__privateSet=(obj,member,value,setter)=>(__accessCheck(obj,member,"write to private field"),setter?setter.call(obj,value):member.set(obj,value),value),__privateMethod=(obj,member,method)=>(__accessCheck(obj,member,"access private method"),method),require_diff_match_patch=__commonJS({"node_modules/diff-match-patch/index.js"(exports,module2){var diff_match_patch4=function(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1e3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32};diff_match_patch4.Diff=function(op,text2){return[op,text2]};diff_match_patch4.prototype.diff_main=function(text1,text2,opt_checklines,opt_deadline){var deadline,checklines,commonlength,commonprefix,commonsuffix,diffs;void 0===opt_deadline&&(opt_deadline=this.Diff_Timeout<=0?Number.MAX_VALUE:(new Date).getTime()+1e3*this.Diff_Timeout);deadline=opt_deadline;if(null==text1||null==text2)throw new Error("Null input. (diff_main)");if(text1==text2)return text1?[new diff_match_patch4.Diff(0,text1)]:[];void 0===opt_checklines&&(opt_checklines=!0);checklines=opt_checklines;commonlength=this.diff_commonPrefix(text1,text2);commonprefix=text1.substring(0,commonlength);text1=text1.substring(commonlength);text2=text2.substring(commonlength);commonlength=this.diff_commonSuffix(text1,text2);commonsuffix=text1.substring(text1.length-commonlength);text1=text1.substring(0,text1.length-commonlength);text2=text2.substring(0,text2.length-commonlength);diffs=this.diff_compute_(text1,text2,checklines,deadline);commonprefix&&diffs.unshift(new diff_match_patch4.Diff(0,commonprefix));commonsuffix&&diffs.push(new diff_match_patch4.Diff(0,commonsuffix));this.diff_cleanupMerge(diffs);return diffs};diff_match_patch4.prototype.diff_compute_=function(text1,text2,checklines,deadline){var diffs,longtext,shorttext,i2,hm,text1_a,text1_b,text2_a,text2_b,mid_common,diffs_a,diffs_b;if(!text1)return[new diff_match_patch4.Diff(1,text2)];if(!text2)return[new diff_match_patch4.Diff(-1,text1)];longtext=text1.length>text2.length?text1:text2;shorttext=text1.length>text2.length?text2:text1;if(-1!=(i2=longtext.indexOf(shorttext))){diffs=[new diff_match_patch4.Diff(1,longtext.substring(0,i2)),new diff_match_patch4.Diff(0,shorttext),new diff_match_patch4.Diff(1,longtext.substring(i2+shorttext.length))];text1.length>text2.length&&(diffs[0][0]=diffs[2][0]=-1);return diffs}if(1==shorttext.length)return[new diff_match_patch4.Diff(-1,text1),new diff_match_patch4.Diff(1,text2)];if(hm=this.diff_halfMatch_(text1,text2)){text1_a=hm[0];text1_b=hm[1];text2_a=hm[2];text2_b=hm[3];mid_common=hm[4];diffs_a=this.diff_main(text1_a,text2_a,checklines,deadline);diffs_b=this.diff_main(text1_b,text2_b,checklines,deadline);return diffs_a.concat([new diff_match_patch4.Diff(0,mid_common)],diffs_b)}return checklines&&text1.length>100&&text2.length>100?this.diff_lineMode_(text1,text2,deadline):this.diff_bisect_(text1,text2,deadline)};diff_match_patch4.prototype.diff_lineMode_=function(text1,text2,deadline){var linearray,diffs,pointer,count_delete,count_insert,text_delete,text_insert,subDiff,j2,a2=this.diff_linesToChars_(text1,text2);text1=a2.chars1;text2=a2.chars2;linearray=a2.lineArray;diffs=this.diff_main(text1,text2,!1,deadline);this.diff_charsToLines_(diffs,linearray);this.diff_cleanupSemantic(diffs);diffs.push(new diff_match_patch4.Diff(0,""));pointer=0;count_delete=0;count_insert=0;text_delete="";text_insert="";for(;pointer<diffs.length;){switch(diffs[pointer][0]){case 1:count_insert++;text_insert+=diffs[pointer][1];break;case-1:count_delete++;text_delete+=diffs[pointer][1];break;case 0:if(count_delete>=1&&count_insert>=1){diffs.splice(pointer-count_delete-count_insert,count_delete+count_insert);pointer=pointer-count_delete-count_insert;for(j2=(subDiff=this.diff_main(text_delete,text_insert,!1,deadline)).length-1;j2>=0;j2--)diffs.splice(pointer,0,subDiff[j2]);pointer+=subDiff.length}count_insert=0;count_delete=0;text_delete="";text_insert="";break}pointer++}diffs.pop();return diffs};diff_match_patch4.prototype.diff_bisect_=function(text1,text2,deadline){var x2,delta,front,k1start,k1end,k2start,k2end,d4,k1,k1_offset,x1,y1,k2_offset,x22,k2,y2,text1_length=text1.length,text2_length=text2.length,max_d=Math.ceil((text1_length+text2_length)/2),v_offset=max_d,v_length=2*max_d,v1=new Array(v_length),v2=new Array(v_length);for(x2=0;x2<v_length;x2++){v1[x2]=-1;v2[x2]=-1}v1[v_offset+1]=0;v2[v_offset+1]=0;front=(delta=text1_length-text2_length)%2!=0;k1start=0;k1end=0;k2start=0;k2end=0;for(d4=0;d4<max_d&&!((new Date).getTime()>deadline);d4++){for(k1=-d4+k1start;k1<=d4-k1end;k1+=2){k1_offset=v_offset+k1;y1=(x1=k1==-d4||k1!=d4&&v1[k1_offset-1]<v1[k1_offset+1]?v1[k1_offset+1]:v1[k1_offset-1]+1)-k1;for(;x1<text1_length&&y1<text2_length&&text1.charAt(x1)==text2.charAt(y1);){x1++;y1++}v1[k1_offset]=x1;if(x1>text1_length)k1end+=2;else if(y1>text2_length)k1start+=2;else if(front&&(k2_offset=v_offset+delta-k1)>=0&&k2_offset<v_length&&-1!=v2[k2_offset]&&x1>=(x22=text1_length-v2[k2_offset]))return this.diff_bisectSplit_(text1,text2,x1,y1,deadline)}for(k2=-d4+k2start;k2<=d4-k2end;k2+=2){k2_offset=v_offset+k2;y2=(x22=k2==-d4||k2!=d4&&v2[k2_offset-1]<v2[k2_offset+1]?v2[k2_offset+1]:v2[k2_offset-1]+1)-k2;for(;x22<text1_length&&y2<text2_length&&text1.charAt(text1_length-x22-1)==text2.charAt(text2_length-y2-1);){x22++;y2++}v2[k2_offset]=x22;if(x22>text1_length)k2end+=2;else if(y2>text2_length)k2start+=2;else if(!front&&(k1_offset=v_offset+delta-k2)>=0&&k1_offset<v_length&&-1!=v1[k1_offset]){y1=v_offset+(x1=v1[k1_offset])-k1_offset;if(x1>=(x22=text1_length-x22))return this.diff_bisectSplit_(text1,text2,x1,y1,deadline)}}}return[new diff_match_patch4.Diff(-1,text1),new diff_match_patch4.Diff(1,text2)]};diff_match_patch4.prototype.diff_bisectSplit_=function(text1,text2,x2,y2,deadline){var text1a=text1.substring(0,x2),text2a=text2.substring(0,y2),text1b=text1.substring(x2),text2b=text2.substring(y2),diffs=this.diff_main(text1a,text2a,!1,deadline),diffsb=this.diff_main(text1b,text2b,!1,deadline);return diffs.concat(diffsb)};diff_match_patch4.prototype.diff_linesToChars_=function(text1,text2){function diff_linesToCharsMunge_(text3){for(var line,chars3="",lineStart=0,lineEnd=-1,lineArrayLength=lineArray.length;lineEnd<text3.length-1;){-1==(lineEnd=text3.indexOf("\n",lineStart))&&(lineEnd=text3.length-1);line=text3.substring(lineStart,lineEnd+1);if(lineHash.hasOwnProperty?lineHash.hasOwnProperty(line):void 0!==lineHash[line])chars3+=String.fromCharCode(lineHash[line]);else{if(lineArrayLength==maxLines){line=text3.substring(lineStart);lineEnd=text3.length}chars3+=String.fromCharCode(lineArrayLength);lineHash[line]=lineArrayLength;lineArray[lineArrayLength++]=line}lineStart=lineEnd+1}return chars3}var maxLines,chars1,lineArray=[],lineHash={};lineArray[0]="";maxLines=4e4;chars1=diff_linesToCharsMunge_(text1);maxLines=65535;return{chars1,chars2:diff_linesToCharsMunge_(text2),lineArray}};diff_match_patch4.prototype.diff_charsToLines_=function(diffs,lineArray){var i2,chars2,text2,j2;for(i2=0;i2<diffs.length;i2++){chars2=diffs[i2][1];text2=[];for(j2=0;j2<chars2.length;j2++)text2[j2]=lineArray[chars2.charCodeAt(j2)];diffs[i2][1]=text2.join("")}};diff_match_patch4.prototype.diff_commonPrefix=function(text1,text2){var pointermin,pointermax,pointermid,pointerstart;if(!text1||!text2||text1.charAt(0)!=text2.charAt(0))return 0;pointermin=0;pointermid=pointermax=Math.min(text1.length,text2.length);pointerstart=0;for(;pointermin<pointermid;){text1.substring(pointerstart,pointermid)==text2.substring(pointerstart,pointermid)?pointerstart=pointermin=pointermid:pointermax=pointermid;pointermid=Math.floor((pointermax-pointermin)/2+pointermin)}return pointermid};diff_match_patch4.prototype.diff_commonSuffix=function(text1,text2){var pointermin,pointermax,pointermid,pointerend;if(!text1||!text2||text1.charAt(text1.length-1)!=text2.charAt(text2.length-1))return 0;pointermin=0;pointermid=pointermax=Math.min(text1.length,text2.length);pointerend=0;for(;pointermin<pointermid;){text1.substring(text1.length-pointermid,text1.length-pointerend)==text2.substring(text2.length-pointermid,text2.length-pointerend)?pointerend=pointermin=pointermid:pointermax=pointermid;pointermid=Math.floor((pointermax-pointermin)/2+pointermin)}return pointermid};diff_match_patch4.prototype.diff_commonOverlap_=function(text1,text2){var text_length,best,length,pattern,found,text1_length=text1.length,text2_length=text2.length;if(0==text1_length||0==text2_length)return 0;text1_length>text2_length?text1=text1.substring(text1_length-text2_length):text1_length<text2_length&&(text2=text2.substring(0,text1_length));text_length=Math.min(text1_length,text2_length);if(text1==text2)return text_length;best=0;length=1;for(;;){pattern=text1.substring(text_length-length);if(-1==(found=text2.indexOf(pattern)))return best;length+=found;if(0==found||text1.substring(text_length-length)==text2.substring(0,length)){best=length;length++}}};diff_match_patch4.prototype.diff_halfMatch_=function(text1,text2){function diff_halfMatchI_(longtext2,shorttext2,i2){for(var best_longtext_a,best_longtext_b,best_shorttext_a,best_shorttext_b,prefixLength,suffixLength,seed=longtext2.substring(i2,i2+Math.floor(longtext2.length/4)),j2=-1,best_common="";-1!=(j2=shorttext2.indexOf(seed,j2+1));){prefixLength=dmp.diff_commonPrefix(longtext2.substring(i2),shorttext2.substring(j2));suffixLength=dmp.diff_commonSuffix(longtext2.substring(0,i2),shorttext2.substring(0,j2));if(best_common.length<suffixLength+prefixLength){best_common=shorttext2.substring(j2-suffixLength,j2)+shorttext2.substring(j2,j2+prefixLength);best_longtext_a=longtext2.substring(0,i2-suffixLength);best_longtext_b=longtext2.substring(i2+prefixLength);best_shorttext_a=shorttext2.substring(0,j2-suffixLength);best_shorttext_b=shorttext2.substring(j2+prefixLength)}}return 2*best_common.length>=longtext2.length?[best_longtext_a,best_longtext_b,best_shorttext_a,best_shorttext_b,best_common]:null}var longtext,shorttext,dmp,hm1,hm2,hm,text1_a,text1_b,text2_a,text2_b;if(this.Diff_Timeout<=0)return null;longtext=text1.length>text2.length?text1:text2;shorttext=text1.length>text2.length?text2:text1;if(longtext.length<4||2*shorttext.length<longtext.length)return null;dmp=this;hm1=diff_halfMatchI_(longtext,shorttext,Math.ceil(longtext.length/4));hm2=diff_halfMatchI_(longtext,shorttext,Math.ceil(longtext.length/2));if(!hm1&&!hm2)return null;hm=hm2?hm1&&hm1[4].length>hm2[4].length?hm1:hm2:hm1;if(text1.length>text2.length){text1_a=hm[0];text1_b=hm[1];text2_a=hm[2];text2_b=hm[3]}else{text2_a=hm[0];text2_b=hm[1];text1_a=hm[2];text1_b=hm[3]}return[text1_a,text1_b,text2_a,text2_b,hm[4]]};diff_match_patch4.prototype.diff_cleanupSemantic=function(diffs){for(var deletion,insertion,overlap_length1,overlap_length2,changes3=!1,equalities=[],equalitiesLength=0,lastEquality=null,pointer=0,length_insertions1=0,length_deletions1=0,length_insertions2=0,length_deletions2=0;pointer<diffs.length;){if(0==diffs[pointer][0]){equalities[equalitiesLength++]=pointer;length_insertions1=length_insertions2;length_deletions1=length_deletions2;length_insertions2=0;length_deletions2=0;lastEquality=diffs[pointer][1]}else{1==diffs[pointer][0]?length_insertions2+=diffs[pointer][1].length:length_deletions2+=diffs[pointer][1].length;if(lastEquality&&lastEquality.length<=Math.max(length_insertions1,length_deletions1)&&lastEquality.length<=Math.max(length_insertions2,length_deletions2)){diffs.splice(equalities[equalitiesLength-1],0,new diff_match_patch4.Diff(-1,lastEquality));diffs[equalities[equalitiesLength-1]+1][0]=1;equalitiesLength--;pointer=--equalitiesLength>0?equalities[equalitiesLength-1]:-1;length_insertions1=0;length_deletions1=0;length_insertions2=0;length_deletions2=0;lastEquality=null;changes3=!0}}pointer++}changes3&&this.diff_cleanupMerge(diffs);this.diff_cleanupSemanticLossless(diffs);pointer=1;for(;pointer<diffs.length;){if(-1==diffs[pointer-1][0]&&1==diffs[pointer][0]){deletion=diffs[pointer-1][1];insertion=diffs[pointer][1];if((overlap_length1=this.diff_commonOverlap_(deletion,insertion))>=(overlap_length2=this.diff_commonOverlap_(insertion,deletion))){if(overlap_length1>=deletion.length/2||overlap_length1>=insertion.length/2){diffs.splice(pointer,0,new diff_match_patch4.Diff(0,insertion.substring(0,overlap_length1)));diffs[pointer-1][1]=deletion.substring(0,deletion.length-overlap_length1);diffs[pointer+1][1]=insertion.substring(overlap_length1);pointer++}}else if(overlap_length2>=deletion.length/2||overlap_length2>=insertion.length/2){diffs.splice(pointer,0,new diff_match_patch4.Diff(0,deletion.substring(0,overlap_length2)));diffs[pointer-1][0]=1;diffs[pointer-1][1]=insertion.substring(0,insertion.length-overlap_length2);diffs[pointer+1][0]=-1;diffs[pointer+1][1]=deletion.substring(overlap_length2);pointer++}pointer++}pointer++}};diff_match_patch4.prototype.diff_cleanupSemanticLossless=function(diffs){function diff_cleanupSemanticScore_(one,two){var char1,char2,nonAlphaNumeric1,nonAlphaNumeric2,whitespace1,whitespace2,lineBreak1,lineBreak2,blankLine1,blankLine2;if(!one||!two)return 6;char1=one.charAt(one.length-1);char2=two.charAt(0);nonAlphaNumeric1=char1.match(diff_match_patch4.nonAlphaNumericRegex_);nonAlphaNumeric2=char2.match(diff_match_patch4.nonAlphaNumericRegex_);whitespace1=nonAlphaNumeric1&&char1.match(diff_match_patch4.whitespaceRegex_);whitespace2=nonAlphaNumeric2&&char2.match(diff_match_patch4.whitespaceRegex_);lineBreak1=whitespace1&&char1.match(diff_match_patch4.linebreakRegex_);lineBreak2=whitespace2&&char2.match(diff_match_patch4.linebreakRegex_);blankLine1=lineBreak1&&one.match(diff_match_patch4.blanklineEndRegex_);blankLine2=lineBreak2&&two.match(diff_match_patch4.blanklineStartRegex_);return blankLine1||blankLine2?5:lineBreak1||lineBreak2?4:nonAlphaNumeric1&&!whitespace1&&whitespace2?3:whitespace1||whitespace2?2:nonAlphaNumeric1||nonAlphaNumeric2?1:0}for(var equality1,edit,equality2,commonOffset,commonString,bestEquality1,bestEdit,bestEquality2,bestScore,score,pointer=1;pointer<diffs.length-1;){if(0==diffs[pointer-1][0]&&0==diffs[pointer+1][0]){equality1=diffs[pointer-1][1];edit=diffs[pointer][1];equality2=diffs[pointer+1][1];if(commonOffset=this.diff_commonSuffix(equality1,edit)){commonString=edit.substring(edit.length-commonOffset);equality1=equality1.substring(0,equality1.length-commonOffset);edit=commonString+edit.substring(0,edit.length-commonOffset);equality2=commonString+equality2}bestEquality1=equality1;bestEdit=edit;bestEquality2=equality2;bestScore=diff_cleanupSemanticScore_(equality1,edit)+diff_cleanupSemanticScore_(edit,equality2);for(;edit.charAt(0)===equality2.charAt(0);){equality1+=edit.charAt(0);edit=edit.substring(1)+equality2.charAt(0);equality2=equality2.substring(1);if((score=diff_cleanupSemanticScore_(equality1,edit)+diff_cleanupSemanticScore_(edit,equality2))>=bestScore){bestScore=score;bestEquality1=equality1;bestEdit=edit;bestEquality2=equality2}}if(diffs[pointer-1][1]!=bestEquality1){if(bestEquality1)diffs[pointer-1][1]=bestEquality1;else{diffs.splice(pointer-1,1);pointer--}diffs[pointer][1]=bestEdit;if(bestEquality2)diffs[pointer+1][1]=bestEquality2;else{diffs.splice(pointer+1,1);pointer--}}}pointer++}};diff_match_patch4.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch4.whitespaceRegex_=/\s/;diff_match_patch4.linebreakRegex_=/[\r\n]/;diff_match_patch4.blanklineEndRegex_=/\n\r?\n$/;diff_match_patch4.blanklineStartRegex_=/^\r?\n\r?\n/;diff_match_patch4.prototype.diff_cleanupEfficiency=function(diffs){for(var changes3=!1,equalities=[],equalitiesLength=0,lastEquality=null,pointer=0,pre_ins=!1,pre_del=!1,post_ins=!1,post_del=!1;pointer<diffs.length;){if(0==diffs[pointer][0]){if(diffs[pointer][1].length<this.Diff_EditCost&&(post_ins||post_del)){equalities[equalitiesLength++]=pointer;pre_ins=post_ins;pre_del=post_del;lastEquality=diffs[pointer][1]}else{equalitiesLength=0;lastEquality=null}post_ins=post_del=!1}else{-1==diffs[pointer][0]?post_del=!0:post_ins=!0;if(lastEquality&&(pre_ins&&pre_del&&post_ins&&post_del||lastEquality.length<this.Diff_EditCost/2&&pre_ins+pre_del+post_ins+post_del==3)){diffs.splice(equalities[equalitiesLength-1],0,new diff_match_patch4.Diff(-1,lastEquality));diffs[equalities[equalitiesLength-1]+1][0]=1;equalitiesLength--;lastEquality=null;if(pre_ins&&pre_del){post_ins=post_del=!0;equalitiesLength=0}else{pointer=--equalitiesLength>0?equalities[equalitiesLength-1]:-1;post_ins=post_del=!1}changes3=!0}}pointer++}changes3&&this.diff_cleanupMerge(diffs)};diff_match_patch4.prototype.diff_cleanupMerge=function(diffs){var pointer,count_delete,count_insert,text_delete,text_insert,commonlength,changes3;diffs.push(new diff_match_patch4.Diff(0,""));pointer=0;count_delete=0;count_insert=0;text_delete="";text_insert="";for(;pointer<diffs.length;)switch(diffs[pointer][0]){case 1:count_insert++;text_insert+=diffs[pointer][1];pointer++;break;case-1:count_delete++;text_delete+=diffs[pointer][1];pointer++;break;case 0:if(count_delete+count_insert>1){if(0!==count_delete&&0!==count_insert){if(0!==(commonlength=this.diff_commonPrefix(text_insert,text_delete))){if(pointer-count_delete-count_insert>0&&0==diffs[pointer-count_delete-count_insert-1][0])diffs[pointer-count_delete-count_insert-1][1]+=text_insert.substring(0,commonlength);else{diffs.splice(0,0,new diff_match_patch4.Diff(0,text_insert.substring(0,commonlength)));pointer++}text_insert=text_insert.substring(commonlength);text_delete=text_delete.substring(commonlength)}if(0!==(commonlength=this.diff_commonSuffix(text_insert,text_delete))){diffs[pointer][1]=text_insert.substring(text_insert.length-commonlength)+diffs[pointer][1];text_insert=text_insert.substring(0,text_insert.length-commonlength);text_delete=text_delete.substring(0,text_delete.length-commonlength)}}pointer-=count_delete+count_insert;diffs.splice(pointer,count_delete+count_insert);if(text_delete.length){diffs.splice(pointer,0,new diff_match_patch4.Diff(-1,text_delete));pointer++}if(text_insert.length){diffs.splice(pointer,0,new diff_match_patch4.Diff(1,text_insert));pointer++}pointer++}else if(0!==pointer&&0==diffs[pointer-1][0]){diffs[pointer-1][1]+=diffs[pointer][1];diffs.splice(pointer,1)}else pointer++;count_insert=0;count_delete=0;text_delete="";text_insert="";break}""===diffs[diffs.length-1][1]&&diffs.pop();changes3=!1;pointer=1;for(;pointer<diffs.length-1;){if(0==diffs[pointer-1][0]&&0==diffs[pointer+1][0])if(diffs[pointer][1].substring(diffs[pointer][1].length-diffs[pointer-1][1].length)==diffs[pointer-1][1]){diffs[pointer][1]=diffs[pointer-1][1]+diffs[pointer][1].substring(0,diffs[pointer][1].length-diffs[pointer-1][1].length);diffs[pointer+1][1]=diffs[pointer-1][1]+diffs[pointer+1][1];diffs.splice(pointer-1,1);changes3=!0}else if(diffs[pointer][1].substring(0,diffs[pointer+1][1].length)==diffs[pointer+1][1]){diffs[pointer-1][1]+=diffs[pointer+1][1];diffs[pointer][1]=diffs[pointer][1].substring(diffs[pointer+1][1].length)+diffs[pointer+1][1];diffs.splice(pointer+1,1);changes3=!0}pointer++}changes3&&this.diff_cleanupMerge(diffs)};diff_match_patch4.prototype.diff_xIndex=function(diffs,loc){var x2,chars1=0,chars2=0,last_chars1=0,last_chars2=0;for(x2=0;x2<diffs.length;x2++){1!==diffs[x2][0]&&(chars1+=diffs[x2][1].length);-1!==diffs[x2][0]&&(chars2+=diffs[x2][1].length);if(chars1>loc)break;last_chars1=chars1;last_chars2=chars2}return diffs.length!=x2&&-1===diffs[x2][0]?last_chars2:last_chars2+(loc-last_chars1)};diff_match_patch4.prototype.diff_prettyHtml=function(diffs){var x2,op,text2,html2=[],pattern_amp=/&/g,pattern_lt=/</g,pattern_gt=/>/g,pattern_para=/\n/g;for(x2=0;x2<diffs.length;x2++){op=diffs[x2][0];text2=diffs[x2][1].replace(pattern_amp,"&").replace(pattern_lt,"<").replace(pattern_gt,">").replace(pattern_para,"¶<br>");switch(op){case 1:html2[x2]='<ins style="background:#e6ffe6;">'+text2+"</ins>";break;case-1:html2[x2]='<del style="background:#ffe6e6;">'+text2+"</del>";break;case 0:html2[x2]="<span>"+text2+"</span>";break}}return html2.join("")};diff_match_patch4.prototype.diff_text1=function(diffs){var x2,text2=[];for(x2=0;x2<diffs.length;x2++)1!==diffs[x2][0]&&(text2[x2]=diffs[x2][1]);return text2.join("")};diff_match_patch4.prototype.diff_text2=function(diffs){var x2,text2=[];for(x2=0;x2<diffs.length;x2++)-1!==diffs[x2][0]&&(text2[x2]=diffs[x2][1]);return text2.join("")};diff_match_patch4.prototype.diff_levenshtein=function(diffs){var x2,op,data,levenshtein=0,insertions=0,deletions=0;for(x2=0;x2<diffs.length;x2++){op=diffs[x2][0];data=diffs[x2][1];switch(op){case 1:insertions+=data.length;break;case-1:deletions+=data.length;break;case 0:levenshtein+=Math.max(insertions,deletions);insertions=0;deletions=0;break}}return levenshtein+Math.max(insertions,deletions)};diff_match_patch4.prototype.diff_toDelta=function(diffs){var x2,text2=[];for(x2=0;x2<diffs.length;x2++)switch(diffs[x2][0]){case 1:text2[x2]="+"+encodeURI(diffs[x2][1]);break;case-1:text2[x2]="-"+diffs[x2][1].length;break;case 0:text2[x2]="="+diffs[x2][1].length;break}return text2.join("\t").replace(/%20/g," ")};diff_match_patch4.prototype.diff_fromDelta=function(text1,delta){var x2,param,n3,text2,diffs=[],diffsLength=0,pointer=0,tokens=delta.split(/\t/g);for(x2=0;x2<tokens.length;x2++){param=tokens[x2].substring(1);switch(tokens[x2].charAt(0)){case"+":try{diffs[diffsLength++]=new diff_match_patch4.Diff(1,decodeURI(param))}catch(ex){throw new Error("Illegal escape in diff_fromDelta: "+param)}break;case"-":case"=":n3=parseInt(param,10);if(isNaN(n3)||n3<0)throw new Error("Invalid number in diff_fromDelta: "+param);text2=text1.substring(pointer,pointer+=n3);"="==tokens[x2].charAt(0)?diffs[diffsLength++]=new diff_match_patch4.Diff(0,text2):diffs[diffsLength++]=new diff_match_patch4.Diff(-1,text2);break;default:if(tokens[x2])throw new Error("Invalid diff operation in diff_fromDelta: "+tokens[x2])}}if(pointer!=text1.length)throw new Error("Delta length ("+pointer+") does not equal source text length ("+text1.length+").");return diffs};diff_match_patch4.prototype.match_main=function(text2,pattern,loc){if(null==text2||null==pattern||null==loc)throw new Error("Null input. (match_main)");loc=Math.max(0,Math.min(loc,text2.length));return text2==pattern?0:text2.length?text2.substring(loc,loc+pattern.length)==pattern?loc:this.match_bitap_(text2,pattern,loc):-1};diff_match_patch4.prototype.match_bitap_=function(text2,pattern,loc){function match_bitapScore_(e3,x2){var accuracy=e3/pattern.length,proximity=Math.abs(loc-x2);return dmp.Match_Distance?accuracy+proximity/dmp.Match_Distance:proximity?1:accuracy}var s2,dmp,score_threshold,best_loc,matchmask,bin_min,bin_mid,bin_max,last_rd,d4,start,finish,rd,j2,charMatch,score;if(pattern.length>this.Match_MaxBits)throw new Error("Pattern too long for this browser.");s2=this.match_alphabet_(pattern);dmp=this;score_threshold=this.Match_Threshold;if(-1!=(best_loc=text2.indexOf(pattern,loc))){score_threshold=Math.min(match_bitapScore_(0,best_loc),score_threshold);-1!=(best_loc=text2.lastIndexOf(pattern,loc+pattern.length))&&(score_threshold=Math.min(match_bitapScore_(0,best_loc),score_threshold))}matchmask=1<<pattern.length-1;best_loc=-1;bin_max=pattern.length+text2.length;for(d4=0;d4<pattern.length;d4++){bin_min=0;bin_mid=bin_max;for(;bin_min<bin_mid;){match_bitapScore_(d4,loc+bin_mid)<=score_threshold?bin_min=bin_mid:bin_max=bin_mid;bin_mid=Math.floor((bin_max-bin_min)/2+bin_min)}bin_max=bin_mid;start=Math.max(1,loc-bin_mid+1);finish=Math.min(loc+bin_mid,text2.length)+pattern.length;(rd=Array(finish+2))[finish+1]=(1<<d4)-1;for(j2=finish;j2>=start;j2--){charMatch=s2[text2.charAt(j2-1)];rd[j2]=0===d4?(rd[j2+1]<<1|1)&charMatch:(rd[j2+1]<<1|1)&charMatch|(last_rd[j2+1]|last_rd[j2])<<1|1|last_rd[j2+1];if(rd[j2]&matchmask&&(score=match_bitapScore_(d4,j2-1))<=score_threshold){score_threshold=score;if(!((best_loc=j2-1)>loc))break;start=Math.max(1,2*loc-best_loc)}}if(match_bitapScore_(d4+1,loc)>score_threshold)break;last_rd=rd}return best_loc};diff_match_patch4.prototype.match_alphabet_=function(pattern){var i2,s2={};for(i2=0;i2<pattern.length;i2++)s2[pattern.charAt(i2)]=0;for(i2=0;i2<pattern.length;i2++)s2[pattern.charAt(i2)]|=1<<pattern.length-i2-1;return s2};diff_match_patch4.prototype.patch_addContext_=function(patch,text2){var pattern,padding,prefix,suffix;if(0!=text2.length){if(null===patch.start2)throw Error("patch not initialized");pattern=text2.substring(patch.start2,patch.start2+patch.length1);padding=0;for(;text2.indexOf(pattern)!=text2.lastIndexOf(pattern)&&pattern.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;){padding+=this.Patch_Margin;pattern=text2.substring(patch.start2-padding,patch.start2+patch.length1+padding)}padding+=this.Patch_Margin;(prefix=text2.substring(patch.start2-padding,patch.start2))&&patch.diffs.unshift(new diff_match_patch4.Diff(0,prefix));(suffix=text2.substring(patch.start2+patch.length1,patch.start2+patch.length1+padding))&&patch.diffs.push(new diff_match_patch4.Diff(0,suffix));patch.start1-=prefix.length;patch.start2-=prefix.length;patch.length1+=prefix.length+suffix.length;patch.length2+=prefix.length+suffix.length}};diff_match_patch4.prototype.patch_make=function(a2,opt_b,opt_c){var text1,diffs,patches,patch,patchDiffLength,char_count1,char_count2,prepatch_text,postpatch_text,x2,diff_type,diff_text;if("string"==typeof a2&&"string"==typeof opt_b&&void 0===opt_c){text1=a2;if((diffs=this.diff_main(text1,opt_b,!0)).length>2){this.diff_cleanupSemantic(diffs);this.diff_cleanupEfficiency(diffs)}}else if(a2&&"object"==typeof a2&&void 0===opt_b&&void 0===opt_c){diffs=a2;text1=this.diff_text1(diffs)}else if("string"==typeof a2&&opt_b&&"object"==typeof opt_b&&void 0===opt_c){text1=a2;diffs=opt_b}else{if("string"!=typeof a2||"string"!=typeof opt_b||!opt_c||"object"!=typeof opt_c)throw new Error("Unknown call format to patch_make.");text1=a2;diffs=opt_c}if(0===diffs.length)return[];patches=[];patch=new diff_match_patch4.patch_obj;patchDiffLength=0;char_count1=0;char_count2=0;prepatch_text=text1;postpatch_text=text1;for(x2=0;x2<diffs.length;x2++){diff_type=diffs[x2][0];diff_text=diffs[x2][1];if(!patchDiffLength&&0!==diff_type){patch.start1=char_count1;patch.start2=char_count2}switch(diff_type){case 1:patch.diffs[patchDiffLength++]=diffs[x2];patch.length2+=diff_text.length;postpatch_text=postpatch_text.substring(0,char_count2)+diff_text+postpatch_text.substring(char_count2);break;case-1:patch.length1+=diff_text.length;patch.diffs[patchDiffLength++]=diffs[x2];postpatch_text=postpatch_text.substring(0,char_count2)+postpatch_text.substring(char_count2+diff_text.length);break;case 0:if(diff_text.length<=2*this.Patch_Margin&&patchDiffLength&&diffs.length!=x2+1){patch.diffs[patchDiffLength++]=diffs[x2];patch.length1+=diff_text.length;patch.length2+=diff_text.length}else if(diff_text.length>=2*this.Patch_Margin&&patchDiffLength){this.patch_addContext_(patch,prepatch_text);patches.push(patch);patch=new diff_match_patch4.patch_obj;patchDiffLength=0;prepatch_text=postpatch_text;char_count1=char_count2}break}1!==diff_type&&(char_count1+=diff_text.length);-1!==diff_type&&(char_count2+=diff_text.length)}if(patchDiffLength){this.patch_addContext_(patch,prepatch_text);patches.push(patch)}return patches};diff_match_patch4.prototype.patch_deepCopy=function(patches){var x2,patch,patchCopy,y2,patchesCopy=[];for(x2=0;x2<patches.length;x2++){patch=patches[x2];(patchCopy=new diff_match_patch4.patch_obj).diffs=[];for(y2=0;y2<patch.diffs.length;y2++)patchCopy.diffs[y2]=new diff_match_patch4.Diff(patch.diffs[y2][0],patch.diffs[y2][1]);patchCopy.start1=patch.start1;patchCopy.start2=patch.start2;patchCopy.length1=patch.length1;patchCopy.length2=patch.length2;patchesCopy[x2]=patchCopy}return patchesCopy};diff_match_patch4.prototype.patch_apply=function(patches,text2){var nullPadding,delta,results,x2,expected_loc,text1,start_loc,end_loc,text22,diffs,index1,index22,y2,mod2;if(0==patches.length)return[text2,[]];patches=this.patch_deepCopy(patches);text2=(nullPadding=this.patch_addPadding(patches))+text2+nullPadding;this.patch_splitMax(patches);delta=0;results=[];for(x2=0;x2<patches.length;x2++){expected_loc=patches[x2].start2+delta;end_loc=-1;(text1=this.diff_text1(patches[x2].diffs)).length>this.Match_MaxBits?-1!=(start_loc=this.match_main(text2,text1.substring(0,this.Match_MaxBits),expected_loc))&&(-1==(end_loc=this.match_main(text2,text1.substring(text1.length-this.Match_MaxBits),expected_loc+text1.length-this.Match_MaxBits))||start_loc>=end_loc)&&(start_loc=-1):start_loc=this.match_main(text2,text1,expected_loc);if(-1==start_loc){results[x2]=!1;delta-=patches[x2].length2-patches[x2].length1}else{results[x2]=!0;delta=start_loc-expected_loc;if(text1==(text22=-1==end_loc?text2.substring(start_loc,start_loc+text1.length):text2.substring(start_loc,end_loc+this.Match_MaxBits)))text2=text2.substring(0,start_loc)+this.diff_text2(patches[x2].diffs)+text2.substring(start_loc+text1.length);else{diffs=this.diff_main(text1,text22,!1);if(text1.length>this.Match_MaxBits&&this.diff_levenshtein(diffs)/text1.length>this.Patch_DeleteThreshold)results[x2]=!1;else{this.diff_cleanupSemanticLossless(diffs);index1=0;for(y2=0;y2<patches[x2].diffs.length;y2++){0!==(mod2=patches[x2].diffs[y2])[0]&&(index22=this.diff_xIndex(diffs,index1));1===mod2[0]?text2=text2.substring(0,start_loc+index22)+mod2[1]+text2.substring(start_loc+index22):-1===mod2[0]&&(text2=text2.substring(0,start_loc+index22)+text2.substring(start_loc+this.diff_xIndex(diffs,index1+mod2[1].length)));-1!==mod2[0]&&(index1+=mod2[1].length)}}}}}return[text2=text2.substring(nullPadding.length,text2.length-nullPadding.length),results]};diff_match_patch4.prototype.patch_addPadding=function(patches){var x2,patch,diffs,extraLength,paddingLength=this.Patch_Margin,nullPadding="";for(x2=1;x2<=paddingLength;x2++)nullPadding+=String.fromCharCode(x2);for(x2=0;x2<patches.length;x2++){patches[x2].start1+=paddingLength;patches[x2].start2+=paddingLength}if(0==(diffs=(patch=patches[0]).diffs).length||0!=diffs[0][0]){diffs.unshift(new diff_match_patch4.Diff(0,nullPadding));patch.start1-=paddingLength;patch.start2-=paddingLength;patch.length1+=paddingLength;patch.length2+=paddingLength}else if(paddingLength>diffs[0][1].length){extraLength=paddingLength-diffs[0][1].length;diffs[0][1]=nullPadding.substring(diffs[0][1].length)+diffs[0][1];patch.start1-=extraLength;patch.start2-=extraLength;patch.length1+=extraLength;patch.length2+=extraLength}if(0==(diffs=(patch=patches[patches.length-1]).diffs).length||0!=diffs[diffs.length-1][0]){diffs.push(new diff_match_patch4.Diff(0,nullPadding));patch.length1+=paddingLength;patch.length2+=paddingLength}else if(paddingLength>diffs[diffs.length-1][1].length){extraLength=paddingLength-diffs[diffs.length-1][1].length;diffs[diffs.length-1][1]+=nullPadding.substring(0,extraLength);patch.length1+=extraLength;patch.length2+=extraLength}return nullPadding};diff_match_patch4.prototype.patch_splitMax=function(patches){var x2,bigpatch,start1,start2,precontext,patch,empty2,diff_type,diff_text,postcontext,patch_size=this.Match_MaxBits;for(x2=0;x2<patches.length;x2++)if(!(patches[x2].length1<=patch_size)){bigpatch=patches[x2];patches.splice(x2--,1);start1=bigpatch.start1;start2=bigpatch.start2;precontext="";for(;0!==bigpatch.diffs.length;){empty2=!0;(patch=new diff_match_patch4.patch_obj).start1=start1-precontext.length;patch.start2=start2-precontext.length;if(""!==precontext){patch.length1=patch.length2=precontext.length;patch.diffs.push(new diff_match_patch4.Diff(0,precontext))}for(;0!==bigpatch.diffs.length&&patch.length1<patch_size-this.Patch_Margin;){diff_type=bigpatch.diffs[0][0];diff_text=bigpatch.diffs[0][1];if(1===diff_type){patch.length2+=diff_text.length;start2+=diff_text.length;patch.diffs.push(bigpatch.diffs.shift());empty2=!1}else if(-1===diff_type&&1==patch.diffs.length&&0==patch.diffs[0][0]&&diff_text.length>2*patch_size){patch.length1+=diff_text.length;start1+=diff_text.length;empty2=!1;patch.diffs.push(new diff_match_patch4.Diff(diff_type,diff_text));bigpatch.diffs.shift()}else{diff_text=diff_text.substring(0,patch_size-patch.length1-this.Patch_Margin);patch.length1+=diff_text.length;start1+=diff_text.length;if(0===diff_type){patch.length2+=diff_text.length;start2+=diff_text.length}else empty2=!1;patch.diffs.push(new diff_match_patch4.Diff(diff_type,diff_text));diff_text==bigpatch.diffs[0][1]?bigpatch.diffs.shift():bigpatch.diffs[0][1]=bigpatch.diffs[0][1].substring(diff_text.length)}}precontext=(precontext=this.diff_text2(patch.diffs)).substring(precontext.length-this.Patch_Margin);if(""!==(postcontext=this.diff_text1(bigpatch.diffs).substring(0,this.Patch_Margin))){patch.length1+=postcontext.length;patch.length2+=postcontext.length;0!==patch.diffs.length&&0===patch.diffs[patch.diffs.length-1][0]?patch.diffs[patch.diffs.length-1][1]+=postcontext:patch.diffs.push(new diff_match_patch4.Diff(0,postcontext))}empty2||patches.splice(++x2,0,patch)}}};diff_match_patch4.prototype.patch_toText=function(patches){var x2,text2=[];for(x2=0;x2<patches.length;x2++)text2[x2]=patches[x2];return text2.join("")};diff_match_patch4.prototype.patch_fromText=function(textline){var text2,textPointer,patchHeader,m3,patch,sign,line,patches=[];if(!textline)return patches;text2=textline.split("\n");textPointer=0;patchHeader=/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;for(;textPointer<text2.length;){if(!(m3=text2[textPointer].match(patchHeader)))throw new Error("Invalid patch string: "+text2[textPointer]);patch=new diff_match_patch4.patch_obj;patches.push(patch);patch.start1=parseInt(m3[1],10);if(""===m3[2]){patch.start1--;patch.length1=1}else if("0"==m3[2])patch.length1=0;else{patch.start1--;patch.length1=parseInt(m3[2],10)}patch.start2=parseInt(m3[3],10);if(""===m3[4]){patch.start2--;patch.length2=1}else if("0"==m3[4])patch.length2=0;else{patch.start2--;patch.length2=parseInt(m3[4],10)}textPointer++;for(;textPointer<text2.length;){sign=text2[textPointer].charAt(0);try{line=decodeURI(text2[textPointer].substring(1))}catch(ex){throw new Error("Illegal escape in patch_fromText: "+line)}if("-"==sign)patch.diffs.push(new diff_match_patch4.Diff(-1,line));else if("+"==sign)patch.diffs.push(new diff_match_patch4.Diff(1,line));else if(" "==sign)patch.diffs.push(new diff_match_patch4.Diff(0,line));else{if("@"==sign)break;if(""!==sign)throw new Error('Invalid patch mode "'+sign+'" in: '+line)}textPointer++}}return patches};diff_match_patch4.patch_obj=function(){this.diffs=[];this.start1=null;this.start2=null;this.length1=0;this.length2=0};diff_match_patch4.patch_obj.prototype.toString=function(){var text2,op,x2;text2=["@@ -"+(0===this.length1?this.start1+",0":1==this.length1?this.start1+1:this.start1+1+","+this.length1)+" +"+(0===this.length2?this.start2+",0":1==this.length2?this.start2+1:this.start2+1+","+this.length2)+" @@\n"];for(x2=0;x2<this.diffs.length;x2++){switch(this.diffs[x2][0]){case 1:op="+";break;case-1:op="-";break;case 0:op=" ";break}text2[x2+1]=op+encodeURI(this.diffs[x2][1])+"\n"}return text2.join("").replace(/%20/g," ")};module2.exports=diff_match_patch4;module2.exports.diff_match_patch=diff_match_patch4;module2.exports.DIFF_DELETE=-1;module2.exports.DIFF_INSERT=1;module2.exports.DIFF_EQUAL=0}}),require_balanced_match=__commonJS({"node_modules/balanced-match/index.js"(exports,module2){"use strict";function balanced(a2,b3,str){a2 instanceof RegExp&&(a2=maybeMatch(a2,str));b3 instanceof RegExp&&(b3=maybeMatch(b3,str));var r4=range2(a2,b3,str);return r4&&{start:r4[0],end:r4[1],pre:str.slice(0,r4[0]),body:str.slice(r4[0]+a2.length,r4[1]),post:str.slice(r4[1]+b3.length)}}function maybeMatch(reg,str){var m3=str.match(reg);return m3?m3[0]:null}function range2(a2,b3,str){var begs,beg,left,right,result,ai2=str.indexOf(a2),bi2=str.indexOf(b3,ai2+1),i2=ai2;if(ai2>=0&&bi2>0){if(a2===b3)return[ai2,bi2];begs=[];left=str.length;for(;i2>=0&&!result;){if(i2==ai2){begs.push(i2);ai2=str.indexOf(a2,i2+1)}else if(1==begs.length)result=[begs.pop(),bi2];else{if((beg=begs.pop())<left){left=beg;right=bi2}bi2=str.indexOf(b3,i2+1)}i2=ai2<bi2&&ai2>=0?ai2:bi2}begs.length&&(result=[left,right])}return result}module2.exports=balanced;balanced.range=range2}}),require_brace_expansion=__commonJS({"node_modules/brace-expansion/index.js"(exports,module2){function numeric(str){return parseInt(str,10)==str?parseInt(str,10):str.charCodeAt(0)}function unescapeBraces(str){return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join(".")}function parseCommaParts(str){var parts,m3,pre,body,post,p4,postParts;if(!str)return[""];parts=[];if(!(m3=balanced("{","}",str)))return str.split(",");pre=m3.pre;body=m3.body;post=m3.post;(p4=pre.split(","))[p4.length-1]+="{"+body+"}";postParts=parseCommaParts(post);if(post.length){p4[p4.length-1]+=postParts.shift();p4.push.apply(p4,postParts)}parts.push.apply(parts,p4);return parts}function embrace(str){return"{"+str+"}"}function isPadded(el){return/^-?0\d/.test(el)}function lte(i2,y2){return i2<=y2}function gte(i2,y2){return i2>=y2}function expand2(str,isTop){var pre,post,k2,expansion,isNumericSequence,isAlphaSequence,isSequence,isOptions,n3,N2,x2,y2,width,incr,test,pad2,i2,c3,need,z2,j2,expansions=[],m3=balanced("{","}",str);if(!m3)return[str];pre=m3.pre;post=m3.post.length?expand2(m3.post,!1):[""];if(/\$$/.test(m3.pre))for(k2=0;k2<post.length;k2++){expansion=pre+"{"+m3.body+"}"+post[k2];expansions.push(expansion)}else{isNumericSequence=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m3.body);isAlphaSequence=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m3.body);isSequence=isNumericSequence||isAlphaSequence;isOptions=m3.body.indexOf(",")>=0;if(!isSequence&&!isOptions)return m3.post.match(/,.*\}/)?expand2(str=m3.pre+"{"+m3.body+escClose+m3.post):[str];if(isSequence)n3=m3.body.split(/\.\./);else if(1===(n3=parseCommaParts(m3.body)).length&&1===(n3=expand2(n3[0],!1).map(embrace)).length)return post.map((function(p4){return m3.pre+n3[0]+p4}));if(isSequence){x2=numeric(n3[0]);y2=numeric(n3[1]);width=Math.max(n3[0].length,n3[1].length);incr=3==n3.length?Math.abs(numeric(n3[2])):1;test=lte;if(y2<x2){incr*=-1;test=gte}pad2=n3.some(isPadded);N2=[];for(i2=x2;test(i2,y2);i2+=incr){if(isAlphaSequence)"\\"===(c3=String.fromCharCode(i2))&&(c3="");else{c3=String(i2);if(pad2&&(need=width-c3.length)>0){z2=new Array(need+1).join("0");c3=i2<0?"-"+z2+c3.slice(1):z2+c3}}N2.push(c3)}}else{N2=[];for(j2=0;j2<n3.length;j2++)N2.push.apply(N2,expand2(n3[j2],!1))}for(j2=0;j2<N2.length;j2++)for(k2=0;k2<post.length;k2++){expansion=pre+N2[j2]+post[k2];(!isTop||isSequence||expansion)&&expansions.push(expansion)}}return expansions}var escSlash,escOpen,escClose,escComma,escPeriod,balanced=require_balanced_match();module2.exports=function expandTop(str){if(!str)return[];"{}"===str.substr(0,2)&&(str="\\{\\}"+str.substr(2));return expand2(function escapeBraces(str){return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod)}(str),!0).map(unescapeBraces)};escSlash="\0SLASH"+Math.random()+"\0";escOpen="\0OPEN"+Math.random()+"\0";escClose="\0CLOSE"+Math.random()+"\0";escComma="\0COMMA"+Math.random()+"\0";escPeriod="\0PERIOD"+Math.random()+"\0"}}),require_ms=__commonJS({"node_modules/debug/node_modules/ms/index.js"(exports,module2){function plural(ms,msAbs,n3,name){var isPlural=msAbs>=1.5*n3;return Math.round(ms/n3)+" "+name+(isPlural?"s":"")}var s2=1e3,m3=6e4,h3=60*m3,d4=24*h3;module2.exports=function(val2,options){options=options||{};var type=typeof val2;if("string"===type&&val2.length>0)return function parse2(str){var match3,n3;if(!((str=String(str)).length>100)&&(match3=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str))){n3=parseFloat(match3[1]);switch((match3[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*n3;case"weeks":case"week":case"w":return 6048e5*n3;case"days":case"day":case"d":return n3*d4;case"hours":case"hour":case"hrs":case"hr":case"h":return n3*h3;case"minutes":case"minute":case"mins":case"min":case"m":return n3*m3;case"seconds":case"second":case"secs":case"sec":case"s":return n3*s2;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n3;default:return}}}(val2);if("number"===type&&isFinite(val2))return options.long?function fmtLong(ms){var msAbs=Math.abs(ms);return msAbs>=d4?plural(ms,msAbs,d4,"day"):msAbs>=h3?plural(ms,msAbs,h3,"hour"):msAbs>=m3?plural(ms,msAbs,m3,"minute"):msAbs>=s2?plural(ms,msAbs,s2,"second"):ms+" ms"}(val2):function fmtShort(ms){var msAbs=Math.abs(ms);return msAbs>=d4?Math.round(ms/d4)+"d":msAbs>=h3?Math.round(ms/h3)+"h":msAbs>=m3?Math.round(ms/m3)+"m":msAbs>=s2?Math.round(ms/s2)+"s":ms+"ms"}(val2);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(val2))}}}),require_common=__commonJS({"node_modules/debug/src/common.js"(exports,module2){module2.exports=function setup2(env){function createDebug(namespace){function debug3(...args){if(!debug3.enabled)return;const self3=debug3,curr=Number(new Date),ms=curr-(prevTime||curr);self3.diff=ms;self3.prev=prevTime;self3.curr=curr;prevTime=curr;args[0]=createDebug.coerce(args[0]);"string"!=typeof args[0]&&args.unshift("%O");let index6=0;args[0]=args[0].replace(/%([a-zA-Z%])/g,((match3,format)=>{if("%%"===match3)return"%";index6++;const formatter=createDebug.formatters[format];if("function"==typeof formatter){const val2=args[index6];match3=formatter.call(self3,val2);args.splice(index6,1);index6--}return match3}));createDebug.formatArgs.call(self3,args);(self3.log||createDebug.log).apply(self3,args)}let prevTime,namespacesCache,enabledCache,enableOverride=null;debug3.namespace=namespace;debug3.useColors=createDebug.useColors();debug3.color=createDebug.selectColor(namespace);debug3.extend=extend;debug3.destroy=createDebug.destroy;Object.defineProperty(debug3,"enabled",{enumerable:!0,configurable:!1,get:()=>{if(null!==enableOverride)return enableOverride;if(namespacesCache!==createDebug.namespaces){namespacesCache=createDebug.namespaces;enabledCache=createDebug.enabled(namespace)}return enabledCache},set:v2=>{enableOverride=v2}});"function"==typeof createDebug.init&&createDebug.init(debug3);return debug3}function extend(namespace,delimiter){const newDebug=createDebug(this.namespace+(void 0===delimiter?":":delimiter)+namespace);newDebug.log=this.log;return newDebug}function matchesTemplate(search,template2){let searchIndex=0,templateIndex=0,starIndex=-1,matchIndex=0;for(;searchIndex<search.length;)if(templateIndex<template2.length&&(template2[templateIndex]===search[searchIndex]||"*"===template2[templateIndex]))if("*"===template2[templateIndex]){starIndex=templateIndex;matchIndex=searchIndex;templateIndex++}else{searchIndex++;templateIndex++}else{if(-1===starIndex)return!1;templateIndex=starIndex+1;matchIndex++;searchIndex=matchIndex}for(;templateIndex<template2.length&&"*"===template2[templateIndex];)templateIndex++;return templateIndex===template2.length}createDebug.debug=createDebug;createDebug.default=createDebug;createDebug.coerce=function coerce(val2){return val2 instanceof Error?val2.stack||val2.message:val2};createDebug.disable=function disable(){const namespaces=[...createDebug.names,...createDebug.skips.map((namespace=>"-"+namespace))].join(",");createDebug.enable("");return namespaces};createDebug.enable=function enable(namespaces){createDebug.save(namespaces);createDebug.namespaces=namespaces;createDebug.names=[];createDebug.skips=[];const split=("string"==typeof namespaces?namespaces:"").trim().replace(" ",",").split(",").filter(Boolean);for(const ns of split)"-"===ns[0]?createDebug.skips.push(ns.slice(1)):createDebug.names.push(ns)};createDebug.enabled=function enabled(name){for(const skip2 of createDebug.skips)if(matchesTemplate(name,skip2))return!1;for(const ns of createDebug.names)if(matchesTemplate(name,ns))return!0;return!1};createDebug.humanize=require_ms();createDebug.destroy=function destroy2(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")};Object.keys(env).forEach((key2=>{createDebug[key2]=env[key2]}));createDebug.names=[];createDebug.skips=[];createDebug.formatters={};createDebug.selectColor=function selectColor(namespace){let hash3=0;for(let i2=0;i2<namespace.length;i2++){hash3=(hash3<<5)-hash3+namespace.charCodeAt(i2);hash3|=0}return createDebug.colors[Math.abs(hash3)%createDebug.colors.length]};createDebug.enable(createDebug.load());return createDebug}}}),require_browser=__commonJS({"node_modules/debug/src/browser.js"(exports,module2){exports.formatArgs=function formatArgs(args){args[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+args[0]+(this.useColors?"%c ":" ")+"+"+module2.exports.humanize(this.diff);if(!this.useColors)return;const c3="color: "+this.color;args.splice(1,0,c3,"color: inherit");let index6=0,lastC=0;args[0].replace(/%[a-zA-Z%]/g,(match3=>{if("%%"!==match3){index6++;"%c"===match3&&(lastC=index6)}}));args.splice(lastC,0,c3)};exports.save=function save(namespaces){try{namespaces?exports.storage.setItem("debug",namespaces):exports.storage.removeItem("debug")}catch(error){}};exports.load=function load(){let r4;try{r4=exports.storage.getItem("debug")}catch(error){}!r4&&"undefined"!=typeof process&&"env"in process&&(r4=process.env.DEBUG);return r4};exports.useColors=function useColors(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let m3;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&(m3=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(m3[1],10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)};exports.storage=function localstorage(){try{return localStorage}catch(error){}}();exports.destroy=(()=>{let warned=!1;return()=>{if(!warned){warned=!0;console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}}})();exports.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];exports.log=console.debug||console.log||(()=>{});module2.exports=require_common()(exports);var{formatters}=module2.exports;formatters.j=function(v2){try{return JSON.stringify(v2)}catch(error){return"[UnexpectedJSONParseError]: "+error.message}}}}),require_events=__commonJS({"node_modules/events/events.js"(exports,module2){"use strict";function EventEmitter2(){EventEmitter2.init.call(this)}function checkListener(listener){if("function"!=typeof listener)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof listener)}function _getMaxListeners(that){return void 0===that._maxListeners?EventEmitter2.defaultMaxListeners:that._maxListeners}function _addListener(target,type,listener,prepend){var m3,events,existing,w2;checkListener(listener);if(void 0===(events=target._events)){events=target._events=Object.create(null);target._eventsCount=0}else{if(void 0!==events.newListener){target.emit("newListener",type,listener.listener?listener.listener:listener);events=target._events}existing=events[type]}if(void 0===existing){existing=events[type]=listener;++target._eventsCount}else{"function"==typeof existing?existing=events[type]=prepend?[listener,existing]:[existing,listener]:prepend?existing.unshift(listener):existing.push(listener);if((m3=_getMaxListeners(target))>0&&existing.length>m3&&!existing.warned){existing.warned=!0;(w2=new Error("Possible EventEmitter memory leak detected. "+existing.length+" "+String(type)+" listeners added. Use emitter.setMaxListeners() to increase limit")).name="MaxListenersExceededWarning";w2.emitter=target;w2.type=type;w2.count=existing.length;(function ProcessEmitWarning(warning){console&&console.warn&&console.warn(warning)})(w2)}}return target}function onceWrapper(){if(!this.fired){this.target.removeListener(this.type,this.wrapFn);this.fired=!0;return 0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}}function _onceWrap(target,type,listener){var state2={fired:!1,wrapFn:void 0,target,type,listener},wrapped=onceWrapper.bind(state2);wrapped.listener=listener;state2.wrapFn=wrapped;return wrapped}function _listeners2(target,type,unwrap2){var evlistener,events=target._events;return void 0===events||void 0===(evlistener=events[type])?[]:"function"==typeof evlistener?unwrap2?[evlistener.listener||evlistener]:[evlistener]:unwrap2?function unwrapListeners(arr){for(var ret=new Array(arr.length),i2=0;i2<ret.length;++i2)ret[i2]=arr[i2].listener||arr[i2];return ret}(evlistener):arrayClone(evlistener,evlistener.length)}function listenerCount2(type){var evlistener,events=this._events;if(void 0!==events){if("function"==typeof(evlistener=events[type]))return 1;if(void 0!==evlistener)return evlistener.length}return 0}function arrayClone(arr,n3){var i2,copy=new Array(n3);for(i2=0;i2<n3;++i2)copy[i2]=arr[i2];return copy}function eventTargetAgnosticAddListener(emitter,name,listener,flags){if("function"==typeof emitter.on)flags.once?emitter.once(name,listener):emitter.on(name,listener);else{if("function"!=typeof emitter.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof emitter);emitter.addEventListener(name,(function wrapListener(arg){flags.once&&emitter.removeEventListener(name,wrapListener);listener(arg)}))}}var ReflectOwnKeys,NumberIsNaN,defaultMaxListeners,R2="object"==typeof Reflect?Reflect:null,ReflectApply=R2&&"function"==typeof R2.apply?R2.apply:function ReflectApply2(target,receiver,args){return Function.prototype.apply.call(target,receiver,args)};ReflectOwnKeys=R2&&"function"==typeof R2.ownKeys?R2.ownKeys:Object.getOwnPropertySymbols?function ReflectOwnKeys2(target){return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target))}:function ReflectOwnKeys2(target){return Object.getOwnPropertyNames(target)};NumberIsNaN=Number.isNaN||function NumberIsNaN2(value){return value!=value};module2.exports=EventEmitter2;module2.exports.once=function once3(emitter,name){return new Promise((function(resolve,reject){function errorListener(err2){emitter.removeListener(name,resolver);reject(err2)}function resolver(){"function"==typeof emitter.removeListener&&emitter.removeListener("error",errorListener);resolve([].slice.call(arguments))}eventTargetAgnosticAddListener(emitter,name,resolver,{once:!0});"error"!==name&&function addErrorHandlerIfEventEmitter(emitter,handler,flags){"function"==typeof emitter.on&&eventTargetAgnosticAddListener(emitter,"error",handler,flags)}(emitter,errorListener,{once:!0})}))};EventEmitter2.EventEmitter=EventEmitter2;EventEmitter2.prototype._events=void 0;EventEmitter2.prototype._eventsCount=0;EventEmitter2.prototype._maxListeners=void 0;defaultMaxListeners=10;Object.defineProperty(EventEmitter2,"defaultMaxListeners",{enumerable:!0,get:function(){return defaultMaxListeners},set:function(arg){if("number"!=typeof arg||arg<0||NumberIsNaN(arg))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+arg+".");defaultMaxListeners=arg}});EventEmitter2.init=function(){if(void 0===this._events||this._events===Object.getPrototypeOf(this)._events){this._events=Object.create(null);this._eventsCount=0}this._maxListeners=this._maxListeners||void 0};EventEmitter2.prototype.setMaxListeners=function setMaxListeners(n3){if("number"!=typeof n3||n3<0||NumberIsNaN(n3))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+n3+".");this._maxListeners=n3;return this};EventEmitter2.prototype.getMaxListeners=function getMaxListeners(){return _getMaxListeners(this)};EventEmitter2.prototype.emit=function emit2(type){var i2,doError,events,er,err2,handler,len,listeners,args=[];for(i2=1;i2<arguments.length;i2++)args.push(arguments[i2]);doError="error"===type;if(void 0!==(events=this._events))doError=doError&&void 0===events.error;else if(!doError)return!1;if(doError){args.length>0&&(er=args[0]);if(er instanceof Error)throw er;(err2=new Error("Unhandled error."+(er?" ("+er.message+")":""))).context=er;throw err2}if(void 0===(handler=events[type]))return!1;if("function"==typeof handler)ReflectApply(handler,this,args);else{listeners=arrayClone(handler,len=handler.length);for(i2=0;i2<len;++i2)ReflectApply(listeners[i2],this,args)}return!0};EventEmitter2.prototype.addListener=function addListener(type,listener){return _addListener(this,type,listener,!1)};EventEmitter2.prototype.on=EventEmitter2.prototype.addListener;EventEmitter2.prototype.prependListener=function prependListener(type,listener){return _addListener(this,type,listener,!0)};EventEmitter2.prototype.once=function once4(type,listener){checkListener(listener);this.on(type,_onceWrap(this,type,listener));return this};EventEmitter2.prototype.prependOnceListener=function prependOnceListener(type,listener){checkListener(listener);this.prependListener(type,_onceWrap(this,type,listener));return this};EventEmitter2.prototype.removeListener=function removeListener(type,listener){var list,events,position,i2,originalListener;checkListener(listener);if(void 0===(events=this._events))return this;if(void 0===(list=events[type]))return this;if(list===listener||list.listener===listener)if(0==--this._eventsCount)this._events=Object.create(null);else{delete events[type];events.removeListener&&this.emit("removeListener",type,list.listener||listener)}else if("function"!=typeof list){position=-1;for(i2=list.length-1;i2>=0;i2--)if(list[i2]===listener||list[i2].listener===listener){originalListener=list[i2].listener;position=i2;break}if(position<0)return this;0===position?list.shift():function spliceOne(list,index6){for(;index6+1<list.length;index6++)list[index6]=list[index6+1];list.pop()}(list,position);1===list.length&&(events[type]=list[0]);void 0!==events.removeListener&&this.emit("removeListener",type,originalListener||listener)}return this};EventEmitter2.prototype.off=EventEmitter2.prototype.removeListener;EventEmitter2.prototype.removeAllListeners=function removeAllListeners(type){var listeners,i2,keys3,key2,events=this._events;if(void 0===events)return this;if(void 0===events.removeListener){if(0===arguments.length){this._events=Object.create(null);this._eventsCount=0}else void 0!==events[type]&&(0==--this._eventsCount?this._events=Object.create(null):delete events[type]);return this}if(0===arguments.length){keys3=Object.keys(events);for(i2=0;i2<keys3.length;++i2)"removeListener"!==(key2=keys3[i2])&&this.removeAllListeners(key2);this.removeAllListeners("removeListener");this._events=Object.create(null);this._eventsCount=0;return this}if("function"==typeof(listeners=events[type]))this.removeListener(type,listeners);else if(void 0!==listeners)for(i2=listeners.length-1;i2>=0;i2--)this.removeListener(type,listeners[i2]);return this};EventEmitter2.prototype.listeners=function listeners(type){return _listeners2(this,type,!0)};EventEmitter2.prototype.rawListeners=function rawListeners(type){return _listeners2(this,type,!1)};EventEmitter2.listenerCount=function(emitter,type){return"function"==typeof emitter.listenerCount?emitter.listenerCount(type):listenerCount2.call(emitter,type)};EventEmitter2.prototype.listenerCount=listenerCount2;EventEmitter2.prototype.eventNames=function eventNames(){return this._eventsCount>0?ReflectOwnKeys(this._events):[]}}}),require_fixed_size=__commonJS({"node_modules/fast-fifo/fixed-size.js"(exports,module2){module2.exports=class FixedFIFO{constructor(hwm){if(!(hwm>0)||hwm-1&hwm)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(hwm);this.mask=hwm-1;this.top=0;this.btm=0;this.next=null}clear(){this.top=this.btm=0;this.next=null;this.buffer.fill(void 0)}push(data){if(void 0!==this.buffer[this.top])return!1;this.buffer[this.top]=data;this.top=this.top+1&this.mask;return!0}shift(){const last=this.buffer[this.btm];if(void 0!==last){this.buffer[this.btm]=void 0;this.btm=this.btm+1&this.mask;return last}}peek(){return this.buffer[this.btm]}isEmpty(){return void 0===this.buffer[this.btm]}}}}),require_fast_fifo=__commonJS({"node_modules/fast-fifo/index.js"(exports,module2){var FixedFIFO=require_fixed_size();module2.exports=class FastFIFO{constructor(hwm){this.hwm=hwm||16;this.head=new FixedFIFO(this.hwm);this.tail=this.head;this.length=0}clear(){this.head=this.tail;this.head.clear();this.length=0}push(val2){this.length++;if(!this.head.push(val2)){const prev=this.head;this.head=prev.next=new FixedFIFO(2*this.head.buffer.length);this.head.push(val2)}}shift(){0!==this.length&&this.length--;const val2=this.tail.shift();if(void 0===val2&&this.tail.next){const next2=this.tail.next;this.tail.next=null;this.tail=next2;return this.tail.shift()}return val2}peek(){const val2=this.tail.peek();return void 0===val2&&this.tail.next?this.tail.next.peek():val2}isEmpty(){return 0===this.length}}}}),require_browser_decoder=__commonJS({"node_modules/text-decoder/lib/browser-decoder.js"(exports,module2){module2.exports=class BrowserDecoder{constructor(encoding){this.decoder=new TextDecoder("utf16le"===encoding?"utf16-le":encoding)}get remaining(){return-1}decode(data){return this.decoder.decode(data,{stream:!0})}flush(){return this.decoder.decode(new Uint8Array(0))}}}}),require_text_decoder=__commonJS({"node_modules/text-decoder/index.js"(exports,module2){var PassThroughDecoder=require_browser_decoder(),UTF8Decoder=require_browser_decoder();module2.exports=class TextDecoder{constructor(encoding="utf8"){this.encoding=function normalizeEncoding(encoding){switch(encoding=encoding.toLowerCase()){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return encoding;default:throw new Error("Unknown encoding: "+encoding)}}(encoding);switch(this.encoding){case"utf8":this.decoder=new UTF8Decoder;break;case"utf16le":case"base64":throw new Error("Unsupported encoding: "+this.encoding);default:this.decoder=new PassThroughDecoder(this.encoding)}}get remaining(){return this.decoder.remaining}push(data){return"string"==typeof data?data:this.decoder.decode(data)}write(data){return this.push(data)}end(data){let result="";data&&(result=this.push(data));result+=this.decoder.flush();return result}}}}),require_streamx=__commonJS({"node_modules/streamx/index.js"(exports,module2){function afterDrain(){this.stream._duplexState|=READ_PIPE_DRAINED;this.updateCallback()}function afterFinal(err2){const stream=this.stream;err2&&stream.destroy(err2);if(!(stream._duplexState&DESTROY_STATUS)){stream._duplexState|=WRITE_DONE;stream.emit("finish")}(stream._duplexState&AUTO_DESTROY)===DONE&&(stream._duplexState|=DESTROYING);stream._duplexState&=WRITE_NOT_FINISHING;stream._duplexState&WRITE_UPDATING?this.updateNextTick():this.update()}function afterDestroy(err2){const stream=this.stream;err2||this.error===STREAM_DESTROYED||(err2=this.error);err2&&stream.emit("error",err2);stream._duplexState|=DESTROYED2;stream.emit("close");const rs=stream._readableState,ws=stream._writableState;null!==rs&&null!==rs.pipeline&&rs.pipeline.done(stream,err2);if(null!==ws){for(;null!==ws.drains&&ws.drains.length>0;)ws.drains.shift().resolve(!1);null!==ws.pipeline&&ws.pipeline.done(stream,err2)}}function afterWrite(err2){const stream=this.stream;err2&&stream.destroy(err2);stream._duplexState&=WRITE_NOT_ACTIVE;null!==this.drains&&function tickDrains(drains){for(let i2=0;i2<drains.length;i2++)if(0==--drains[i2].writes){drains.shift().resolve(!0);i2--}}(this.drains);if((stream._duplexState&WRITE_DRAIN_STATUS)===WRITE_UNDRAINED){stream._duplexState&=WRITE_DRAINED;(stream._duplexState&WRITE_EMIT_DRAIN)===WRITE_EMIT_DRAIN&&stream.emit("drain")}this.updateCallback()}function afterRead(err2){err2&&this.stream.destroy(err2);this.stream._duplexState&=READ_NOT_ACTIVE;!1!==this.readAhead||this.stream._duplexState&READ_RESUMED||(this.stream._duplexState&=READ_NO_READ_AHEAD);this.updateCallback()}function updateReadNT(){if(!(this.stream._duplexState&READ_UPDATING)){this.stream._duplexState&=READ_NOT_NEXT_TICK;this.update()}}function updateWriteNT(){if(!(this.stream._duplexState&WRITE_UPDATING)){this.stream._duplexState&=WRITE_NOT_NEXT_TICK;this.update()}}function afterOpen(err2){const stream=this.stream;err2&&stream.destroy(err2);if(!(stream._duplexState&DESTROYING)){stream._duplexState&READ_PRIMARY_STATUS||(stream._duplexState|=READ_PRIMARY);stream._duplexState&WRITE_PRIMARY_STATUS||(stream._duplexState|=WRITE_PRIMARY);stream.emit("open")}stream._duplexState&=NOT_ACTIVE;null!==stream._writableState&&stream._writableState.updateCallback();null!==stream._readableState&&stream._readableState.updateCallback()}function afterTransform(err2,data){null!=data&&this.push(data);this._writableState.afterWrite(err2)}function newListener(name){if(null!==this._readableState){if("data"===name){this._duplexState|=READ_EMIT_DATA|READ_RESUMED_READ_AHEAD;this._readableState.updateNextTick()}if("readable"===name){this._duplexState|=READ_EMIT_READABLE;this._readableState.updateNextTick()}}if(null!==this._writableState&&"drain"===name){this._duplexState|=WRITE_EMIT_DRAIN;this._writableState.updateNextTick()}}function transformAfterFlush(err2,data){const cb2=this._transformState.afterFinal;if(err2)return cb2(err2);null!=data&&this.push(data);this.push(null);cb2(null)}function pipeline(stream,...streams){function errorHandle(s2,rd,wr,onerror2){s2.on("error",onerror2);s2.on("close",(function onclose(){return rd&&s2._readableState&&!s2._readableState.ended||wr&&s2._writableState&&!s2._writableState.ended?onerror2(PREMATURE_CLOSE):void 0}))}function onerror(err2){if(err2&&!error){error=err2;for(const s2 of all2)s2.destroy(err2)}}const all2=Array.isArray(stream)?[...stream,...streams]:[stream,...streams],done=all2.length&&"function"==typeof all2[all2.length-1]?all2.pop():null;if(all2.length<2)throw new Error("Pipeline requires at least 2 streams");let src=all2[0],dest=null,error=null;for(let i2=1;i2<all2.length;i2++){dest=all2[i2];if(isStreamx(src))src.pipe(dest,onerror);else{errorHandle(src,!0,i2>1,onerror);src.pipe(dest)}src=dest}if(done){let fin2=!1;const autoDestroy=isStreamx(dest)||!(!dest._writableState||!dest._writableState.autoDestroy);dest.on("error",(err2=>{null===error&&(error=err2)}));dest.on("finish",(()=>{fin2=!0;autoDestroy||done(error)}));autoDestroy&&dest.on("close",(()=>done(error||(fin2?null:PREMATURE_CLOSE))))}return dest}function echo(s2){return s2}function isStream(stream){return!!stream._readableState||!!stream._writableState}function isStreamx(stream){return"number"==typeof stream._duplexState&&isStream(stream)}function defaultByteLength(data){return function isTypedArray(data){return"object"==typeof data&&null!==data&&"number"==typeof data.byteLength}(data)?data.byteLength:1024}function noop3(){}function abort(){this.destroy(new Error("Stream aborted."))}var STREAM_DESTROYED,PREMATURE_CLOSE,FIFO,TextDecoder2,MAX,DESTROYING,DESTROYED2,NOT_OPENING,READ_UPDATING,READ_PRIMARY,READ_RESUMED,READ_PIPE_DRAINED,READ_EMIT_DATA,READ_EMIT_READABLE,READ_FLOWING,READ_PRIMARY_AND_ACTIVE,READ_EMIT_READABLE_AND_QUEUED,READ_RESUMED_READ_AHEAD,READ_NOT_ACTIVE,READ_NON_PRIMARY_AND_PUSHED,READ_PAUSED,READ_PIPE_NOT_DRAINED,READ_NOT_NEXT_TICK,READ_NOT_UPDATING,READ_NO_READ_AHEAD,READ_PAUSED_NO_READ_AHEAD,WRITE_UPDATING,WRITE_PRIMARY,WRITE_UNDRAINED,WRITE_DONE,WRITE_EMIT_DRAIN,WRITE_NOT_ACTIVE,WRITE_NON_PRIMARY,WRITE_NOT_FINISHING,WRITE_DRAINED,WRITE_NOT_NEXT_TICK,WRITE_NOT_UPDATING,NOT_ACTIVE,DONE,DESTROY_STATUS,OPEN_STATUS,AUTO_DESTROY,NON_PRIMARY,IS_OPENING,READ_PRIMARY_STATUS,READ_STATUS,READ_ENDING_STATUS,READ_READABLE_STATUS,SHOULD_NOT_READ,READ_BACKPRESSURE_STATUS,READ_UPDATE_SYNC_STATUS,WRITE_PRIMARY_STATUS,WRITE_QUEUED_AND_UNDRAINED,WRITE_DRAIN_STATUS,WRITE_STATUS,WRITE_PRIMARY_AND_ACTIVE,WRITE_FINISHING_STATUS,WRITE_BACKPRESSURE_STATUS,WRITE_UPDATE_SYNC_STATUS,WRITE_DROP_DATA,asyncIterator,WritableState,ReadableState,TransformState,Pipeline,Stream,Readable,Writable,Duplex2,Transform,PassThrough,{EventEmitter:EventEmitter2}=require_events();STREAM_DESTROYED=new Error("Stream was destroyed");PREMATURE_CLOSE=new Error("Premature close");FIFO=require_fast_fifo();TextDecoder2=require_text_decoder();NOT_OPENING=1^(MAX=536870911);READ_EMIT_DATA=2048;READ_PRIMARY_AND_ACTIVE=16|(READ_PRIMARY=64);READ_EMIT_READABLE_AND_QUEUED=128|(READ_EMIT_READABLE=4096);READ_NOT_ACTIVE=16^MAX;READ_NON_PRIMARY_AND_PUSHED=MAX^(65536|READ_PRIMARY);READ_PAUSED=MAX^(READ_RESUMED=256);READ_PIPE_NOT_DRAINED=MAX^(READ_FLOWING=READ_RESUMED|(READ_PIPE_DRAINED=512));READ_NOT_NEXT_TICK=536838143;READ_NOT_UPDATING=MAX^(READ_UPDATING=32);READ_NO_READ_AHEAD=536739839;READ_PAUSED_NO_READ_AHEAD=MAX^(READ_RESUMED_READ_AHEAD=131072|READ_RESUMED);WRITE_EMIT_DRAIN=64<<18;WRITE_NOT_ACTIVE=469499903;WRITE_NOT_FINISHING=402391039;WRITE_DRAINED=MAX^(WRITE_UNDRAINED=16<<18);WRITE_NOT_NEXT_TICK=503316479;WRITE_NOT_UPDATING=MAX^(WRITE_UPDATING=2<<18);AUTO_DESTROY=(DESTROY_STATUS=(DESTROYING=4)|(DESTROYED2=8)|2)|(DONE=16384|(WRITE_DONE=32<<18));NON_PRIMARY=(WRITE_NON_PRIMARY=MAX^(WRITE_PRIMARY=4<<18))&(MAX^READ_PRIMARY);IS_OPENING=(OPEN_STATUS=1|DESTROY_STATUS)|33587200&(NOT_ACTIVE=536608751);READ_PRIMARY_STATUS=17408|OPEN_STATUS;READ_STATUS=16512|OPEN_STATUS;READ_ENDING_STATUS=1152|OPEN_STATUS;READ_READABLE_STATUS=OPEN_STATUS|READ_EMIT_READABLE|8320;SHOULD_NOT_READ=214032|OPEN_STATUS;READ_BACKPRESSURE_STATUS=17408|DESTROY_STATUS;READ_UPDATE_SYNC_STATUS=READ_UPDATING|OPEN_STATUS|32768|READ_PRIMARY;WRITE_PRIMARY_STATUS=134217728|OPEN_STATUS|WRITE_DONE;WRITE_QUEUED_AND_UNDRAINED=2097152|WRITE_UNDRAINED;WRITE_DRAIN_STATUS=2097152|WRITE_UNDRAINED|OPEN_STATUS|262144;WRITE_STATUS=270794752|OPEN_STATUS;WRITE_PRIMARY_AND_ACTIVE=262144|WRITE_PRIMARY;WRITE_FINISHING_STATUS=136577024|OPEN_STATUS|WRITE_DONE;WRITE_BACKPRESSURE_STATUS=WRITE_UNDRAINED|DESTROY_STATUS|134217728|WRITE_DONE;WRITE_UPDATE_SYNC_STATUS=WRITE_UPDATING|OPEN_STATUS|33554432|WRITE_PRIMARY;WRITE_DROP_DATA=134217728|WRITE_DONE|DESTROY_STATUS;asyncIterator=Symbol.asyncIterator||Symbol("asyncIterator");WritableState=class{constructor(stream,{highWaterMark=16384,map:map3=null,mapWritable,byteLength,byteLengthWritable}={}){this.stream=stream;this.queue=new FIFO;this.highWaterMark=highWaterMark;this.buffered=0;this.error=null;this.pipeline=null;this.drains=null;this.byteLength=byteLengthWritable||byteLength||defaultByteLength;this.map=mapWritable||map3;this.afterWrite=afterWrite.bind(this);this.afterUpdateNextTick=updateWriteNT.bind(this)}get ended(){return!!(this.stream._duplexState&WRITE_DONE)}push(data){if(this.stream._duplexState&WRITE_DROP_DATA)return!1;null!==this.map&&(data=this.map(data));this.buffered+=this.byteLength(data);this.queue.push(data);if(this.buffered<this.highWaterMark){this.stream._duplexState|=2097152;return!0}this.stream._duplexState|=WRITE_QUEUED_AND_UNDRAINED;return!1}shift(){const data=this.queue.shift();this.buffered-=this.byteLength(data);0===this.buffered&&(this.stream._duplexState&=534773759);return data}end(data){"function"==typeof data?this.stream.once("finish",data):null!=data&&this.push(data);this.stream._duplexState=(134217728|this.stream._duplexState)&WRITE_NON_PRIMARY}autoBatch(data,cb2){const buffer=[],stream=this.stream;buffer.push(data);for(;2359296==(stream._duplexState&WRITE_STATUS);)buffer.push(stream._writableState.shift());if(stream._duplexState&OPEN_STATUS)return cb2(null);stream._writev(buffer,cb2)}update(){const stream=this.stream;stream._duplexState|=WRITE_UPDATING;do{for(;2097152==(stream._duplexState&WRITE_STATUS);){const data=this.shift();stream._duplexState|=67371008;stream._write(data,this.afterWrite)}stream._duplexState&WRITE_PRIMARY_AND_ACTIVE||this.updateNonPrimary()}while(!0===this.continueUpdate());stream._duplexState&=WRITE_NOT_UPDATING}updateNonPrimary(){const stream=this.stream;if(134217728!=(stream._duplexState&WRITE_FINISHING_STATUS)){if((stream._duplexState&DESTROY_STATUS)!==DESTROYING){if(1==(stream._duplexState&IS_OPENING)){stream._duplexState=(262160|stream._duplexState)&NOT_OPENING;stream._open(afterOpen.bind(this))}}else if(!(33587200&stream._duplexState)){stream._duplexState|=262160;stream._destroy(afterDestroy.bind(this))}}else{stream._duplexState=262144|stream._duplexState;stream._final(afterFinal.bind(this))}}continueUpdate(){if(!(33554432&this.stream._duplexState))return!1;this.stream._duplexState&=WRITE_NOT_NEXT_TICK;return!0}updateCallback(){(this.stream._duplexState&WRITE_UPDATE_SYNC_STATUS)===WRITE_PRIMARY?this.update():this.updateNextTick()}updateNextTick(){if(!(33554432&this.stream._duplexState)){this.stream._duplexState|=33554432;this.stream._duplexState&WRITE_UPDATING||queueMicrotask(this.afterUpdateNextTick)}}};ReadableState=class{constructor(stream,{highWaterMark=16384,map:map3=null,mapReadable,byteLength,byteLengthReadable}={}){this.stream=stream;this.queue=new FIFO;this.highWaterMark=0===highWaterMark?1:highWaterMark;this.buffered=0;this.readAhead=highWaterMark>0;this.error=null;this.pipeline=null;this.byteLength=byteLengthReadable||byteLength||defaultByteLength;this.map=mapReadable||map3;this.pipeTo=null;this.afterRead=afterRead.bind(this);this.afterUpdateNextTick=updateReadNT.bind(this)}get ended(){return!!(16384&this.stream._duplexState)}pipe(pipeTo,cb2){if(null!==this.pipeTo)throw new Error("Can only pipe to one destination");"function"!=typeof cb2&&(cb2=null);this.stream._duplexState|=READ_PIPE_DRAINED;this.pipeTo=pipeTo;this.pipeline=new Pipeline(this.stream,pipeTo,cb2);cb2&&this.stream.on("error",noop3);if(isStreamx(pipeTo)){pipeTo._writableState.pipeline=this.pipeline;cb2&&pipeTo.on("error",noop3);pipeTo.on("finish",this.pipeline.finished.bind(this.pipeline))}else{const onerror=this.pipeline.done.bind(this.pipeline,pipeTo),onclose=this.pipeline.done.bind(this.pipeline,pipeTo,null);pipeTo.on("error",onerror);pipeTo.on("close",onclose);pipeTo.on("finish",this.pipeline.finished.bind(this.pipeline))}pipeTo.on("drain",afterDrain.bind(this));this.stream.emit("piping",pipeTo);pipeTo.emit("pipe",this.stream)}push(data){const stream=this.stream;if(null===data){this.highWaterMark=0;stream._duplexState=(1024|stream._duplexState)&READ_NON_PRIMARY_AND_PUSHED;return!1}if(null!==this.map&&null===(data=this.map(data))){stream._duplexState&=536805375;return this.buffered<this.highWaterMark}this.buffered+=this.byteLength(data);this.queue.push(data);stream._duplexState=536805375&stream._duplexState|128;return this.buffered<this.highWaterMark}shift(){const data=this.queue.shift();this.buffered-=this.byteLength(data);0===this.buffered&&(this.stream._duplexState&=536862591);return data}unshift(data){const pending2=[null!==this.map?this.map(data):data];for(;this.buffered>0;)pending2.push(this.shift());for(let i2=0;i2<pending2.length-1;i2++){const data2=pending2[i2];this.buffered+=this.byteLength(data2);this.queue.push(data2)}this.push(pending2[pending2.length-1])}read(){const stream=this.stream;if(128==(stream._duplexState&READ_STATUS)){const data=this.shift();null!==this.pipeTo&&!1===this.pipeTo.write(data)&&(stream._duplexState&=READ_PIPE_NOT_DRAINED);stream._duplexState&READ_EMIT_DATA&&stream.emit("data",data);return data}if(!1===this.readAhead){stream._duplexState|=131072;this.updateNextTick()}return null}drain(){const stream=this.stream;for(;128==(stream._duplexState&READ_STATUS)&&stream._duplexState&READ_FLOWING;){const data=this.shift();null!==this.pipeTo&&!1===this.pipeTo.write(data)&&(stream._duplexState&=READ_PIPE_NOT_DRAINED);stream._duplexState&READ_EMIT_DATA&&stream.emit("data",data)}}update(){const stream=this.stream;stream._duplexState|=READ_UPDATING;do{this.drain();for(;this.buffered<this.highWaterMark&&131072==(stream._duplexState&SHOULD_NOT_READ);){stream._duplexState|=65552;stream._read(this.afterRead);this.drain()}if((stream._duplexState&READ_READABLE_STATUS)===READ_EMIT_READABLE_AND_QUEUED){stream._duplexState|=8192;stream.emit("readable")}stream._duplexState&READ_PRIMARY_AND_ACTIVE||this.updateNonPrimary()}while(!0===this.continueUpdate());stream._duplexState&=READ_NOT_UPDATING}updateNonPrimary(){const stream=this.stream;if(1024==(stream._duplexState&READ_ENDING_STATUS)){stream._duplexState=536869887&stream._duplexState|16384;stream.emit("end");(stream._duplexState&AUTO_DESTROY)===DONE&&(stream._duplexState|=DESTROYING);null!==this.pipeTo&&this.pipeTo.end()}if((stream._duplexState&DESTROY_STATUS)!==DESTROYING){if(1==(stream._duplexState&IS_OPENING)){stream._duplexState=(262160|stream._duplexState)&NOT_OPENING;stream._open(afterOpen.bind(this))}}else if(!(33587200&stream._duplexState)){stream._duplexState|=262160;stream._destroy(afterDestroy.bind(this))}}continueUpdate(){if(!(32768&this.stream._duplexState))return!1;this.stream._duplexState&=READ_NOT_NEXT_TICK;return!0}updateCallback(){(this.stream._duplexState&READ_UPDATE_SYNC_STATUS)===READ_PRIMARY?this.update():this.updateNextTick()}updateNextTickIfOpen(){if(!(32769&this.stream._duplexState)){this.stream._duplexState|=32768;this.stream._duplexState&READ_UPDATING||queueMicrotask(this.afterUpdateNextTick)}}updateNextTick(){if(!(32768&this.stream._duplexState)){this.stream._duplexState|=32768;this.stream._duplexState&READ_UPDATING||queueMicrotask(this.afterUpdateNextTick)}}};TransformState=class{constructor(stream){this.data=null;this.afterTransform=afterTransform.bind(stream);this.afterFinal=null}};Pipeline=class{constructor(src,dst,cb2){this.from=src;this.to=dst;this.afterPipe=cb2;this.error=null;this.pipeToFinished=!1}finished(){this.pipeToFinished=!0}done(stream,err2){err2&&(this.error=err2);if(stream===this.to){this.to=null;if(null!==this.from){16384&this.from._duplexState&&this.pipeToFinished||this.from.destroy(this.error||new Error("Writable stream closed prematurely"));return}}if(stream===this.from){this.from=null;if(null!==this.to){16384&stream._duplexState||this.to.destroy(this.error||new Error("Readable stream closed before ending"));return}}null!==this.afterPipe&&this.afterPipe(this.error);this.to=this.from=this.afterPipe=null}};Stream=class extends EventEmitter2{constructor(opts){super();this._duplexState=0;this._readableState=null;this._writableState=null;if(opts){opts.open&&(this._open=opts.open);opts.destroy&&(this._destroy=opts.destroy);opts.predestroy&&(this._predestroy=opts.predestroy);opts.signal&&opts.signal.addEventListener("abort",abort.bind(this))}this.on("newListener",newListener)}_open(cb2){cb2(null)}_destroy(cb2){cb2(null)}_predestroy(){}get readable(){return null!==this._readableState||void 0}get writable(){return null!==this._writableState||void 0}get destroyed(){return!!(this._duplexState&DESTROYED2)}get destroying(){return!!(this._duplexState&DESTROY_STATUS)}destroy(err2){if(!(this._duplexState&DESTROY_STATUS)){err2||(err2=STREAM_DESTROYED);this._duplexState=(this._duplexState|DESTROYING)&NON_PRIMARY;if(null!==this._readableState){this._readableState.highWaterMark=0;this._readableState.error=err2}if(null!==this._writableState){this._writableState.highWaterMark=0;this._writableState.error=err2}this._duplexState|=2;this._predestroy();this._duplexState&=536870909;null!==this._readableState&&this._readableState.updateNextTick();null!==this._writableState&&this._writableState.updateNextTick()}}};Readable=class _Readable extends Stream{constructor(opts){super(opts);this._duplexState|=131073|WRITE_DONE;this._readableState=new ReadableState(this,opts);if(opts){!1===this._readableState.readAhead&&(this._duplexState&=READ_NO_READ_AHEAD);opts.read&&(this._read=opts.read);opts.eagerOpen&&this._readableState.updateNextTick();opts.encoding&&this.setEncoding(opts.encoding)}}setEncoding(encoding){const dec=new TextDecoder2(encoding),map3=this._readableState.map||echo;this._readableState.map=function mapOrSkip(data){const next2=dec.push(data);return""===next2&&(0!==data.byteLength||dec.remaining>0)?null:map3(next2)};return this}_read(cb2){cb2(null)}pipe(dest,cb2){this._readableState.updateNextTick();this._readableState.pipe(dest,cb2);return dest}read(){this._readableState.updateNextTick();return this._readableState.read()}push(data){this._readableState.updateNextTickIfOpen();return this._readableState.push(data)}unshift(data){this._readableState.updateNextTickIfOpen();return this._readableState.unshift(data)}resume(){this._duplexState|=READ_RESUMED_READ_AHEAD;this._readableState.updateNextTick();return this}pause(){this._duplexState&=!1===this._readableState.readAhead?READ_PAUSED_NO_READ_AHEAD:READ_PAUSED;return this}static _fromAsyncIterator(ite,opts){function push2(data){data.done?rs.push(null):rs.push(data.value)}let destroy2;const rs=new _Readable({...opts,read(cb2){ite.next().then(push2).then(cb2.bind(null,null)).catch(cb2)},predestroy(){destroy2=ite.return()},destroy(cb2){if(!destroy2)return cb2(null);destroy2.then(cb2.bind(null,null)).catch(cb2)}});return rs}static from(data,opts){if(function isReadStreamx(stream){return isStreamx(stream)&&stream.readable}(data))return data;if(data[asyncIterator])return this._fromAsyncIterator(data[asyncIterator](),opts);Array.isArray(data)||(data=void 0===data?[]:[data]);let i2=0;return new _Readable({...opts,read(cb2){this.push(i2===data.length?null:data[i2++]);cb2(null)}})}static isBackpressured(rs){return!!(rs._duplexState&READ_BACKPRESSURE_STATUS)||rs._readableState.buffered>=rs._readableState.highWaterMark}static isPaused(rs){return!(rs._duplexState&READ_RESUMED)}[asyncIterator](){function ondata(data){if(null!==promiseReject){error?promiseReject(error):null!==data||16384&stream._duplexState?promiseResolve({value:data,done:null===data}):promiseReject(STREAM_DESTROYED);promiseReject=promiseResolve=null}}function destroy2(err2){stream.destroy(err2);return new Promise(((resolve,reject)=>{if(stream._duplexState&DESTROYED2)return resolve({value:void 0,done:!0});stream.once("close",(function(){err2?reject(err2):resolve({value:void 0,done:!0})}))}))}const stream=this;let error=null,promiseResolve=null,promiseReject=null;this.on("error",(err2=>{error=err2}));this.on("readable",(function onreadable(){null!==promiseResolve&&ondata(stream.read())}));this.on("close",(function onclose(){null!==promiseResolve&&ondata(null)}));return{[asyncIterator](){return this},next:()=>new Promise((function(resolve,reject){promiseResolve=resolve;promiseReject=reject;const data=stream.read();null!==data?ondata(data):stream._duplexState&DESTROYED2&&ondata(null)})),return:()=>destroy2(null),throw:err2=>destroy2(err2)}}};Writable=class extends Stream{constructor(opts){super(opts);this._duplexState|=16385;this._writableState=new WritableState(this,opts);if(opts){opts.writev&&(this._writev=opts.writev);opts.write&&(this._write=opts.write);opts.final&&(this._final=opts.final);opts.eagerOpen&&this._writableState.updateNextTick()}}cork(){this._duplexState|=268435456}uncork(){this._duplexState&=268435455;this._writableState.updateNextTick()}_writev(batch,cb2){cb2(null)}_write(data,cb2){this._writableState.autoBatch(data,cb2)}_final(cb2){cb2(null)}static isBackpressured(ws){return!!(ws._duplexState&WRITE_BACKPRESSURE_STATUS)}static drained(ws){if(ws.destroyed)return Promise.resolve(!1);const state2=ws._writableState,writes=(function isWritev(s2){return s2._writev!==Writable.prototype._writev&&s2._writev!==Duplex2.prototype._writev}(ws)?Math.min(1,state2.queue.length):state2.queue.length)+(67108864&ws._duplexState?1:0);if(0===writes)return Promise.resolve(!0);null===state2.drains&&(state2.drains=[]);return new Promise((resolve=>{state2.drains.push({writes,resolve})}))}write(data){this._writableState.updateNextTick();return this._writableState.push(data)}end(data){this._writableState.updateNextTick();this._writableState.end(data);return this}};Duplex2=class extends Readable{constructor(opts){super(opts);this._duplexState=1|131072&this._duplexState;this._writableState=new WritableState(this,opts);if(opts){opts.writev&&(this._writev=opts.writev);opts.write&&(this._write=opts.write);opts.final&&(this._final=opts.final)}}cork(){this._duplexState|=268435456}uncork(){this._duplexState&=268435455;this._writableState.updateNextTick()}_writev(batch,cb2){cb2(null)}_write(data,cb2){this._writableState.autoBatch(data,cb2)}_final(cb2){cb2(null)}write(data){this._writableState.updateNextTick();return this._writableState.push(data)}end(data){this._writableState.updateNextTick();this._writableState.end(data);return this}};Transform=class extends Duplex2{constructor(opts){super(opts);this._transformState=new TransformState(this);if(opts){opts.transform&&(this._transform=opts.transform);opts.flush&&(this._flush=opts.flush)}}_write(data,cb2){this._readableState.buffered>=this._readableState.highWaterMark?this._transformState.data=data:this._transform(data,this._transformState.afterTransform)}_read(cb2){if(null!==this._transformState.data){const data=this._transformState.data;this._transformState.data=null;cb2(null);this._transform(data,this._transformState.afterTransform)}else cb2(null)}destroy(err2){super.destroy(err2);if(null!==this._transformState.data){this._transformState.data=null;this._transformState.afterTransform()}}_transform(data,cb2){cb2(null,data)}_flush(cb2){cb2(null)}_final(cb2){this._transformState.afterFinal=cb2;this._flush(transformAfterFlush.bind(this))}};PassThrough=class extends Transform{};module2.exports={pipeline,pipelinePromise:function pipelinePromise(...streams){return new Promise(((resolve,reject)=>pipeline(...streams,(err2=>{if(err2)return reject(err2);resolve()}))))},isStream,isStreamx,isEnded:function isEnded(stream){return!!stream._readableState&&stream._readableState.ended},isFinished:function isFinished(stream){return!!stream._writableState&&stream._writableState.ended},isDisturbed:function isDisturbed(stream){return!!(1&~stream._duplexState)||!!(33587200&stream._duplexState)},getStreamError:function getStreamError(stream,opts={}){const err2=stream._readableState&&stream._readableState.error||stream._writableState&&stream._writableState.error;return opts.all||err2!==STREAM_DESTROYED?err2:null},Stream,Writable,Readable,Duplex:Duplex2,Transform,PassThrough}}}),require_err_code=__commonJS({"node_modules/err-code/index.js"(exports,module2){"use strict";function assign2(obj,props){for(const key2 in props)Object.defineProperty(obj,key2,{value:props[key2],enumerable:!0,configurable:!0});return obj}module2.exports=function createError2(err2,code,props){if(!err2||"string"==typeof err2)throw new TypeError("Please pass an Error to err-code");props||(props={});if("object"==typeof code){props=code;code=""}code&&(props.code=code);try{return assign2(err2,props)}catch(_){props.message=err2.message;props.stack=err2.stack;const ErrClass=function(){};ErrClass.prototype=Object.create(Object.getPrototypeOf(err2));return assign2(new ErrClass,props)}}}}),require_util=__commonJS({"node_modules/fast-xml-parser/src/util.js"(exports){"use strict";var nameStartChar=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",nameRegexp="["+nameStartChar+"]["+nameStartChar+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",regexName=new RegExp("^"+nameRegexp+"$");exports.isExist=function(v2){return void 0!==v2};exports.isEmptyObject=function(obj){return 0===Object.keys(obj).length};exports.merge=function(target,a2,arrayMode){if(a2){const keys3=Object.keys(a2),len=keys3.length;for(let i2=0;i2<len;i2++)target[keys3[i2]]="strict"===arrayMode?[a2[keys3[i2]]]:a2[keys3[i2]]}};exports.getValue=function(v2){return exports.isExist(v2)?v2:""};exports.isName=function(string){return!(null==regexName.exec(string))};exports.getAllMatches=function(string,regex){const matches=[];let match3=regex.exec(string);for(;match3;){const allmatches=[];allmatches.startIndex=regex.lastIndex-match3[0].length;const len=match3.length;for(let index6=0;index6<len;index6++)allmatches.push(match3[index6]);matches.push(allmatches);match3=regex.exec(string)}return matches};exports.nameRegexp=nameRegexp}}),require_validator=__commonJS({"node_modules/fast-xml-parser/src/validator.js"(exports){"use strict";function isWhiteSpace(char){return" "===char||"\t"===char||"\n"===char||"\r"===char}function readPI(xmlData,i2){const start=i2;for(;i2<xmlData.length;i2++)if("?"!=xmlData[i2]&&" "!=xmlData[i2]);else{const tagname=xmlData.substr(start,i2-start);if(i2>5&&"xml"===tagname)return getErrorObject("InvalidXml","XML declaration allowed only at the start of the document.",getLineNumberForPosition(xmlData,i2));if("?"==xmlData[i2]&&">"==xmlData[i2+1]){i2++;break}}return i2}function readCommentAndCDATA(xmlData,i2){if(xmlData.length>i2+5&&"-"===xmlData[i2+1]&&"-"===xmlData[i2+2]){for(i2+=3;i2<xmlData.length;i2++)if("-"===xmlData[i2]&&"-"===xmlData[i2+1]&&">"===xmlData[i2+2]){i2+=2;break}}else if(xmlData.length>i2+8&&"D"===xmlData[i2+1]&&"O"===xmlData[i2+2]&&"C"===xmlData[i2+3]&&"T"===xmlData[i2+4]&&"Y"===xmlData[i2+5]&&"P"===xmlData[i2+6]&&"E"===xmlData[i2+7]){let angleBracketsCount=1;for(i2+=8;i2<xmlData.length;i2++)if("<"===xmlData[i2])angleBracketsCount++;else if(">"===xmlData[i2]){angleBracketsCount--;if(0===angleBracketsCount)break}}else if(xmlData.length>i2+9&&"["===xmlData[i2+1]&&"C"===xmlData[i2+2]&&"D"===xmlData[i2+3]&&"A"===xmlData[i2+4]&&"T"===xmlData[i2+5]&&"A"===xmlData[i2+6]&&"["===xmlData[i2+7])for(i2+=8;i2<xmlData.length;i2++)if("]"===xmlData[i2]&&"]"===xmlData[i2+1]&&">"===xmlData[i2+2]){i2+=2;break}return i2}function readAttributeStr(xmlData,i2){let attrStr="",startChar="",tagClosed=!1;for(;i2<xmlData.length;i2++){if(xmlData[i2]===doubleQuote||xmlData[i2]===singleQuote)""===startChar?startChar=xmlData[i2]:startChar!==xmlData[i2]||(startChar="");else if(">"===xmlData[i2]&&""===startChar){tagClosed=!0;break}attrStr+=xmlData[i2]}return""===startChar&&{value:attrStr,index:i2,tagClosed}}function validateAttributeString(attrStr,options){const matches=util.getAllMatches(attrStr,validAttrStrRegxp),attrNames={};for(let i2=0;i2<matches.length;i2++){if(0===matches[i2][1].length)return getErrorObject("InvalidAttr","Attribute '"+matches[i2][2]+"' has no space in starting.",getPositionFromMatch(matches[i2]));if(void 0!==matches[i2][3]&&void 0===matches[i2][4])return getErrorObject("InvalidAttr","Attribute '"+matches[i2][2]+"' is without value.",getPositionFromMatch(matches[i2]));if(void 0===matches[i2][3]&&!options.allowBooleanAttributes)return getErrorObject("InvalidAttr","boolean attribute '"+matches[i2][2]+"' is not allowed.",getPositionFromMatch(matches[i2]));const attrName=matches[i2][2];if(!validateAttrName(attrName))return getErrorObject("InvalidAttr","Attribute '"+attrName+"' is an invalid name.",getPositionFromMatch(matches[i2]));if(attrNames.hasOwnProperty(attrName))return getErrorObject("InvalidAttr","Attribute '"+attrName+"' is repeated.",getPositionFromMatch(matches[i2]));attrNames[attrName]=1}return!0}function validateAmpersand(xmlData,i2){if(";"===xmlData[++i2])return-1;if("#"===xmlData[i2])return function validateNumberAmpersand(xmlData,i2){let re=/\d/;if("x"===xmlData[i2]){i2++;re=/[\da-fA-F]/}for(;i2<xmlData.length;i2++){if(";"===xmlData[i2])return i2;if(!xmlData[i2].match(re))break}return-1}(xmlData,++i2);let count=0;for(;i2<xmlData.length;i2++,count++)if(!(xmlData[i2].match(/\w/)&&count<20)){if(";"===xmlData[i2])break;return-1}return i2}function getErrorObject(code,message,lineNumber){return{err:{code,msg:message,line:lineNumber.line||lineNumber,col:lineNumber.col}}}function validateAttrName(attrName){return util.isName(attrName)}function getLineNumberForPosition(xmlData,index6){const lines=xmlData.substring(0,index6).split(/\r?\n/);return{line:lines.length,col:lines[lines.length-1].length+1}}function getPositionFromMatch(match3){return match3.startIndex+match3[1].length}var doubleQuote,singleQuote,validAttrStrRegxp,util=require_util(),defaultOptions={allowBooleanAttributes:!1,unpairedTags:[]};exports.validate=function(xmlData,options){options=Object.assign({},defaultOptions,options);const tags=[];let tagFound=!1,reachedRoot=!1;"\ufeff"===xmlData[0]&&(xmlData=xmlData.substr(1));for(let i2=0;i2<xmlData.length;i2++)if("<"===xmlData[i2]&&"?"===xmlData[i2+1]){i2+=2;i2=readPI(xmlData,i2);if(i2.err)return i2}else{if("<"!==xmlData[i2]){if(isWhiteSpace(xmlData[i2]))continue;return getErrorObject("InvalidChar","char '"+xmlData[i2]+"' is not expected.",getLineNumberForPosition(xmlData,i2))}{let tagStartPos=i2;i2++;if("!"===xmlData[i2]){i2=readCommentAndCDATA(xmlData,i2);continue}{let closingTag=!1;if("/"===xmlData[i2]){closingTag=!0;i2++}let tagName="";for(;i2<xmlData.length&&">"!==xmlData[i2]&&" "!==xmlData[i2]&&"\t"!==xmlData[i2]&&"\n"!==xmlData[i2]&&"\r"!==xmlData[i2];i2++)tagName+=xmlData[i2];tagName=tagName.trim();if("/"===tagName[tagName.length-1]){tagName=tagName.substring(0,tagName.length-1);i2--}if(!(tagname=tagName,util.isName(tagname))){let msg;msg=0===tagName.trim().length?"Invalid space after '<'.":"Tag '"+tagName+"' is an invalid name.";return getErrorObject("InvalidTag",msg,getLineNumberForPosition(xmlData,i2))}const result=readAttributeStr(xmlData,i2);if(!1===result)return getErrorObject("InvalidAttr","Attributes for '"+tagName+"' have open quote.",getLineNumberForPosition(xmlData,i2));let attrStr=result.value;i2=result.index;if("/"===attrStr[attrStr.length-1]){const attrStrStart=i2-attrStr.length;attrStr=attrStr.substring(0,attrStr.length-1);const isValid=validateAttributeString(attrStr,options);if(!0!==isValid)return getErrorObject(isValid.err.code,isValid.err.msg,getLineNumberForPosition(xmlData,attrStrStart+isValid.err.line));tagFound=!0}else if(closingTag){if(!result.tagClosed)return getErrorObject("InvalidTag","Closing tag '"+tagName+"' doesn't have proper closing.",getLineNumberForPosition(xmlData,i2));if(attrStr.trim().length>0)return getErrorObject("InvalidTag","Closing tag '"+tagName+"' can't have attributes or invalid starting.",getLineNumberForPosition(xmlData,tagStartPos));if(0===tags.length)return getErrorObject("InvalidTag","Closing tag '"+tagName+"' has not been opened.",getLineNumberForPosition(xmlData,tagStartPos));{const otg=tags.pop();if(tagName!==otg.tagName){let openPos=getLineNumberForPosition(xmlData,otg.tagStartPos);return getErrorObject("InvalidTag","Expected closing tag '"+otg.tagName+"' (opened in line "+openPos.line+", col "+openPos.col+") instead of closing tag '"+tagName+"'.",getLineNumberForPosition(xmlData,tagStartPos))}0==tags.length&&(reachedRoot=!0)}}else{const isValid=validateAttributeString(attrStr,options);if(!0!==isValid)return getErrorObject(isValid.err.code,isValid.err.msg,getLineNumberForPosition(xmlData,i2-attrStr.length+isValid.err.line));if(!0===reachedRoot)return getErrorObject("InvalidXml","Multiple possible root nodes found.",getLineNumberForPosition(xmlData,i2));-1!==options.unpairedTags.indexOf(tagName)||tags.push({tagName,tagStartPos});tagFound=!0}for(i2++;i2<xmlData.length;i2++)if("<"===xmlData[i2]){if("!"===xmlData[i2+1]){i2++;i2=readCommentAndCDATA(xmlData,i2);continue}if("?"!==xmlData[i2+1])break;i2=readPI(xmlData,++i2);if(i2.err)return i2}else if("&"===xmlData[i2]){const afterAmp=validateAmpersand(xmlData,i2);if(-1==afterAmp)return getErrorObject("InvalidChar","char '&' is not expected.",getLineNumberForPosition(xmlData,i2));i2=afterAmp}else if(!0===reachedRoot&&!isWhiteSpace(xmlData[i2]))return getErrorObject("InvalidXml","Extra text at the end",getLineNumberForPosition(xmlData,i2));"<"===xmlData[i2]&&i2--}}}var tagname;return tagFound?1==tags.length?getErrorObject("InvalidTag","Unclosed tag '"+tags[0].tagName+"'.",getLineNumberForPosition(xmlData,tags[0].tagStartPos)):!(tags.length>0)||getErrorObject("InvalidXml","Invalid '"+JSON.stringify(tags.map((t3=>t3.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):getErrorObject("InvalidXml","Start tag expected.",1)};doubleQuote='"';singleQuote="'";validAttrStrRegxp=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g")}}),require_OptionsBuilder=__commonJS({"node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js"(exports){var defaultOptions={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(tagName,val2){return val2},attributeValueProcessor:function(attrName,val2){return val2},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(tagName,jPath,attrs){return tagName}};exports.buildOptions=function(options){return Object.assign({},defaultOptions,options)};exports.defaultOptions=defaultOptions}}),require_xmlNode=__commonJS({"node_modules/fast-xml-parser/src/xmlparser/xmlNode.js"(exports,module2){"use strict";module2.exports=class{constructor(tagname){this.tagname=tagname;this.child=[];this[":@"]={}}add(key2,val2){"__proto__"===key2&&(key2="#__proto__");this.child.push({[key2]:val2})}addChild(node){"__proto__"===node.tagname&&(node.tagname="#__proto__");node[":@"]&&Object.keys(node[":@"]).length>0?this.child.push({[node.tagname]:node.child,[":@"]:node[":@"]}):this.child.push({[node.tagname]:node.child})}}}}),require_DocTypeReader=__commonJS({"node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js"(exports,module2){function readEntityExp(xmlData,i2){let entityName2="";for(;i2<xmlData.length&&"'"!==xmlData[i2]&&'"'!==xmlData[i2];i2++)entityName2+=xmlData[i2];entityName2=entityName2.trim();if(-1!==entityName2.indexOf(" "))throw new Error("External entites are not supported");const startChar=xmlData[i2++];let val2="";for(;i2<xmlData.length&&xmlData[i2]!==startChar;i2++)val2+=xmlData[i2];return[entityName2,val2,i2]}function isComment(xmlData,i2){return"!"===xmlData[i2+1]&&"-"===xmlData[i2+2]&&"-"===xmlData[i2+3]}function isEntity(xmlData,i2){return"!"===xmlData[i2+1]&&"E"===xmlData[i2+2]&&"N"===xmlData[i2+3]&&"T"===xmlData[i2+4]&&"I"===xmlData[i2+5]&&"T"===xmlData[i2+6]&&"Y"===xmlData[i2+7]}function isElement(xmlData,i2){return"!"===xmlData[i2+1]&&"E"===xmlData[i2+2]&&"L"===xmlData[i2+3]&&"E"===xmlData[i2+4]&&"M"===xmlData[i2+5]&&"E"===xmlData[i2+6]&&"N"===xmlData[i2+7]&&"T"===xmlData[i2+8]}function isAttlist(xmlData,i2){return"!"===xmlData[i2+1]&&"A"===xmlData[i2+2]&&"T"===xmlData[i2+3]&&"T"===xmlData[i2+4]&&"L"===xmlData[i2+5]&&"I"===xmlData[i2+6]&&"S"===xmlData[i2+7]&&"T"===xmlData[i2+8]}function isNotation(xmlData,i2){return"!"===xmlData[i2+1]&&"N"===xmlData[i2+2]&&"O"===xmlData[i2+3]&&"T"===xmlData[i2+4]&&"A"===xmlData[i2+5]&&"T"===xmlData[i2+6]&&"I"===xmlData[i2+7]&&"O"===xmlData[i2+8]&&"N"===xmlData[i2+9]}function validateEntityName(name){if(util.isName(name))return name;throw new Error(`Invalid entity name ${name}`)}var util=require_util();module2.exports=function readDocType(xmlData,i2){const entities={};if("O"!==xmlData[i2+3]||"C"!==xmlData[i2+4]||"T"!==xmlData[i2+5]||"Y"!==xmlData[i2+6]||"P"!==xmlData[i2+7]||"E"!==xmlData[i2+8])throw new Error("Invalid Tag instead of DOCTYPE");{i2+=9;let angleBracketsCount=1,hasBody=!1,comment2=!1,exp="";for(;i2<xmlData.length;i2++)if("<"!==xmlData[i2]||comment2)if(">"===xmlData[i2]){if(comment2){if("-"===xmlData[i2-1]&&"-"===xmlData[i2-2]){comment2=!1;angleBracketsCount--}}else angleBracketsCount--;if(0===angleBracketsCount)break}else"["===xmlData[i2]?hasBody=!0:exp+=xmlData[i2];else{if(hasBody&&isEntity(xmlData,i2)){i2+=7;[entityName,val,i2]=readEntityExp(xmlData,i2+1);-1===val.indexOf("&")&&(entities[validateEntityName(entityName)]={regx:RegExp(`&${entityName};`,"g"),val})}else if(hasBody&&isElement(xmlData,i2))i2+=8;else if(hasBody&&isAttlist(xmlData,i2))i2+=8;else if(hasBody&&isNotation(xmlData,i2))i2+=9;else{if(!isComment)throw new Error("Invalid DOCTYPE");comment2=!0}angleBracketsCount++;exp=""}if(0!==angleBracketsCount)throw new Error("Unclosed DOCTYPE")}return{entities,i:i2}}}}),require_strnum=__commonJS({"node_modules/strnum/strnum.js"(exports,module2){var consider,hexRegex=/^[-+]?0x[a-fA-F0-9]+$/,numRegex=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt);!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);consider={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};module2.exports=function toNumber(str,options={}){options=Object.assign({},consider,options);if(!str||"string"!=typeof str)return str;let trimmedStr=str.trim();if(void 0!==options.skipLike&&options.skipLike.test(trimmedStr))return str;if(options.hex&&hexRegex.test(trimmedStr))return Number.parseInt(trimmedStr,16);{const match3=numRegex.exec(trimmedStr);if(match3){const sign=match3[1],leadingZeros=match3[2];let numTrimmedByZeros=function trimZeros(numStr){if(numStr&&-1!==numStr.indexOf(".")){"."===(numStr=numStr.replace(/0+$/,""))?numStr="0":"."===numStr[0]?numStr="0"+numStr:"."===numStr[numStr.length-1]&&(numStr=numStr.substr(0,numStr.length-1));return numStr}return numStr}(match3[3]);const eNotation=match3[4]||match3[6];if(!options.leadingZeros&&leadingZeros.length>0&&sign&&"."!==trimmedStr[2])return str;if(!options.leadingZeros&&leadingZeros.length>0&&!sign&&"."!==trimmedStr[1])return str;{const num2=Number(trimmedStr),numStr=""+num2;return-1!==numStr.search(/[eE]/)||eNotation?options.eNotation?num2:str:-1!==trimmedStr.indexOf(".")?"0"===numStr&&""===numTrimmedByZeros||numStr===numTrimmedByZeros||sign&&numStr==="-"+numTrimmedByZeros?num2:str:leadingZeros?numTrimmedByZeros===numStr||sign+numTrimmedByZeros===numStr?num2:str:trimmedStr===numStr||trimmedStr===sign+numStr?num2:str}}return str}}}}),require_OrderedObjParser=__commonJS({"node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js"(exports,module2){"use strict";function addExternalEntities(externalEntities){const entKeys=Object.keys(externalEntities);for(let i2=0;i2<entKeys.length;i2++){const ent=entKeys[i2];this.lastEntities[ent]={regex:new RegExp("&"+ent+";","g"),val:externalEntities[ent]}}}function parseTextData(val2,tagName,jPath,dontTrim,hasAttributes,isLeafNode,escapeEntities){if(void 0!==val2){this.options.trimValues&&!dontTrim&&(val2=val2.trim());if(val2.length>0){escapeEntities||(val2=this.replaceEntitiesValue(val2));const newval=this.options.tagValueProcessor(tagName,val2,jPath,hasAttributes,isLeafNode);return null==newval?val2:typeof newval!=typeof val2||newval!==val2?newval:this.options.trimValues||val2.trim()===val2?parseValue(val2,this.options.parseTagValue,this.options.numberParseOptions):val2}}}function resolveNameSpace(tagname){if(this.options.removeNSPrefix){const tags=tagname.split(":"),prefix="/"===tagname.charAt(0)?"/":"";if("xmlns"===tags[0])return"";2===tags.length&&(tagname=prefix+tags[1])}return tagname}function buildAttributesMap(attrStr,jPath,tagName){if(!this.options.ignoreAttributes&&"string"==typeof attrStr){const matches=util.getAllMatches(attrStr,attrsRegx),len=matches.length,attrs={};for(let i2=0;i2<len;i2++){const attrName=this.resolveNameSpace(matches[i2][1]);let oldVal=matches[i2][4],aName=this.options.attributeNamePrefix+attrName;if(attrName.length){this.options.transformAttributeName&&(aName=this.options.transformAttributeName(aName));"__proto__"===aName&&(aName="#__proto__");if(void 0!==oldVal){this.options.trimValues&&(oldVal=oldVal.trim());oldVal=this.replaceEntitiesValue(oldVal);const newVal=this.options.attributeValueProcessor(attrName,oldVal,jPath);attrs[aName]=null==newVal?oldVal:typeof newVal!=typeof oldVal||newVal!==oldVal?newVal:parseValue(oldVal,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(attrs[aName]=!0)}}if(!Object.keys(attrs).length)return;if(this.options.attributesGroupName){const attrCollection={};attrCollection[this.options.attributesGroupName]=attrs;return attrCollection}return attrs}}function addChild(currentNode,childNode,jPath){const result=this.options.updateTag(childNode.tagname,jPath,childNode[":@"]);if(!1===result);else if("string"==typeof result){childNode.tagname=result;currentNode.addChild(childNode)}else currentNode.addChild(childNode)}function saveTextToParentTag(textData,currentNode,jPath,isLeafNode){if(textData){void 0===isLeafNode&&(isLeafNode=0===Object.keys(currentNode.child).length);void 0!==(textData=this.parseTextData(textData,currentNode.tagname,jPath,!1,!!currentNode[":@"]&&0!==Object.keys(currentNode[":@"]).length,isLeafNode))&&""!==textData&¤tNode.add(this.options.textNodeName,textData);textData=""}return textData}function isItStopNode(stopNodes,jPath,currentTagName){const allNodesExp="*."+currentTagName;for(const stopNodePath in stopNodes){const stopNodeExp=stopNodes[stopNodePath];if(allNodesExp===stopNodeExp||jPath===stopNodeExp)return!0}return!1}function findClosingIndex(xmlData,str,i2,errMsg){const closingIndex=xmlData.indexOf(str,i2);if(-1===closingIndex)throw new Error(errMsg);return closingIndex+str.length-1}function readTagExp(xmlData,i2,removeNSPrefix,closingChar=">"){const result=function tagExpWithClosingIndex(xmlData,i2,closingChar=">"){let attrBoundary,tagExp="";for(let index6=i2;index6<xmlData.length;index6++){let ch4=xmlData[index6];if(attrBoundary)ch4===attrBoundary&&(attrBoundary="");else if('"'===ch4||"'"===ch4)attrBoundary=ch4;else if(ch4===closingChar[0]){if(!closingChar[1])return{data:tagExp,index:index6};if(xmlData[index6+1]===closingChar[1])return{data:tagExp,index:index6}}else"\t"===ch4&&(ch4=" ");tagExp+=ch4}}(xmlData,i2+1,closingChar);if(!result)return;let tagExp=result.data;const closeIndex=result.index,separatorIndex=tagExp.search(/\s/);let tagName=tagExp,attrExpPresent=!0;if(-1!==separatorIndex){tagName=tagExp.substring(0,separatorIndex);tagExp=tagExp.substring(separatorIndex+1).trimStart()}const rawTagName=tagName;if(removeNSPrefix){const colonIndex=tagName.indexOf(":");if(-1!==colonIndex){tagName=tagName.substr(colonIndex+1);attrExpPresent=tagName!==result.data.substr(colonIndex+1)}}return{tagName,tagExp,closeIndex,attrExpPresent,rawTagName}}function readStopNodeData(xmlData,tagName,i2){const startIndex=i2;let openTagCount=1;for(;i2<xmlData.length;i2++)if("<"===xmlData[i2])if("/"===xmlData[i2+1]){const closeIndex=findClosingIndex(xmlData,">",i2,`${tagName} is not closed`);if(xmlData.substring(i2+2,closeIndex).trim()===tagName){openTagCount--;if(0===openTagCount)return{tagContent:xmlData.substring(startIndex,i2),i:closeIndex}}i2=closeIndex}else if("?"===xmlData[i2+1])i2=findClosingIndex(xmlData,"?>",i2+1,"StopNode is not closed.");else if("!--"===xmlData.substr(i2+1,3))i2=findClosingIndex(xmlData,"--\x3e",i2+3,"StopNode is not closed.");else if("!["===xmlData.substr(i2+1,2))i2=findClosingIndex(xmlData,"]]>",i2,"StopNode is not closed.")-2;else{const tagData=readTagExp(xmlData,i2,">");if(tagData){(tagData&&tagData.tagName)===tagName&&"/"!==tagData.tagExp[tagData.tagExp.length-1]&&openTagCount++;i2=tagData.closeIndex}}}function parseValue(val2,shouldParse,options){if(shouldParse&&"string"==typeof val2){const newval=val2.trim();return"true"===newval||"false"!==newval&&toNumber(val2,options)}return util.isExist(val2)?val2:""}var util=require_util(),xmlNode=require_xmlNode(),readDocType=require_DocTypeReader(),toNumber=require_strnum(),attrsRegx=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm"),parseXml=function(xmlData){xmlData=xmlData.replace(/\r\n?/g,"\n");const xmlObj=new xmlNode("!xml");let currentNode=xmlObj,textData="",jPath="";for(let i2=0;i2<xmlData.length;i2++)if("<"===xmlData[i2])if("/"===xmlData[i2+1]){const closeIndex=findClosingIndex(xmlData,">",i2,"Closing Tag is not closed.");let tagName=xmlData.substring(i2+2,closeIndex).trim();if(this.options.removeNSPrefix){const colonIndex=tagName.indexOf(":");-1!==colonIndex&&(tagName=tagName.substr(colonIndex+1))}this.options.transformTagName&&(tagName=this.options.transformTagName(tagName));currentNode&&(textData=this.saveTextToParentTag(textData,currentNode,jPath));const lastTagName=jPath.substring(jPath.lastIndexOf(".")+1);if(tagName&&-1!==this.options.unpairedTags.indexOf(tagName))throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);let propIndex=0;if(lastTagName&&-1!==this.options.unpairedTags.indexOf(lastTagName)){propIndex=jPath.lastIndexOf(".",jPath.lastIndexOf(".")-1);this.tagsNodeStack.pop()}else propIndex=jPath.lastIndexOf(".");jPath=jPath.substring(0,propIndex);currentNode=this.tagsNodeStack.pop();textData="";i2=closeIndex}else if("?"===xmlData[i2+1]){let tagData=readTagExp(xmlData,i2,!1,"?>");if(!tagData)throw new Error("Pi Tag is not closed.");textData=this.saveTextToParentTag(textData,currentNode,jPath);if(this.options.ignoreDeclaration&&"?xml"===tagData.tagName||this.options.ignorePiTags);else{const childNode=new xmlNode(tagData.tagName);childNode.add(this.options.textNodeName,"");tagData.tagName!==tagData.tagExp&&tagData.attrExpPresent&&(childNode[":@"]=this.buildAttributesMap(tagData.tagExp,jPath,tagData.tagName));this.addChild(currentNode,childNode,jPath)}i2=tagData.closeIndex+1}else if("!--"===xmlData.substr(i2+1,3)){const endIndex=findClosingIndex(xmlData,"--\x3e",i2+4,"Comment is not closed.");if(this.options.commentPropName){const comment2=xmlData.substring(i2+4,endIndex-2);textData=this.saveTextToParentTag(textData,currentNode,jPath);currentNode.add(this.options.commentPropName,[{[this.options.textNodeName]:comment2}])}i2=endIndex}else if("!D"===xmlData.substr(i2+1,2)){const result=readDocType(xmlData,i2);this.docTypeEntities=result.entities;i2=result.i}else if("!["===xmlData.substr(i2+1,2)){const closeIndex=findClosingIndex(xmlData,"]]>",i2,"CDATA is not closed.")-2,tagExp=xmlData.substring(i2+9,closeIndex);textData=this.saveTextToParentTag(textData,currentNode,jPath);let val2=this.parseTextData(tagExp,currentNode.tagname,jPath,!0,!1,!0,!0);null==val2&&(val2="");this.options.cdataPropName?currentNode.add(this.options.cdataPropName,[{[this.options.textNodeName]:tagExp}]):currentNode.add(this.options.textNodeName,val2);i2=closeIndex+2}else{let result=readTagExp(xmlData,i2,this.options.removeNSPrefix),tagName=result.tagName;const rawTagName=result.rawTagName;let tagExp=result.tagExp,attrExpPresent=result.attrExpPresent,closeIndex=result.closeIndex;this.options.transformTagName&&(tagName=this.options.transformTagName(tagName));currentNode&&textData&&"!xml"!==currentNode.tagname&&(textData=this.saveTextToParentTag(textData,currentNode,jPath,!1));const lastTag=currentNode;if(lastTag&&-1!==this.options.unpairedTags.indexOf(lastTag.tagname)){currentNode=this.tagsNodeStack.pop();jPath=jPath.substring(0,jPath.lastIndexOf("."))}tagName!==xmlObj.tagname&&(jPath+=jPath?"."+tagName:tagName);if(this.isItStopNode(this.options.stopNodes,jPath,tagName)){let tagContent="";if(tagExp.length>0&&tagExp.lastIndexOf("/")===tagExp.length-1){if("/"===tagName[tagName.length-1]){tagName=tagName.substr(0,tagName.length-1);jPath=jPath.substr(0,jPath.length-1);tagExp=tagName}else tagExp=tagExp.substr(0,tagExp.length-1);i2=result.closeIndex}else if(-1!==this.options.unpairedTags.indexOf(tagName))i2=result.closeIndex;else{const result2=this.readStopNodeData(xmlData,rawTagName,closeIndex+1);if(!result2)throw new Error(`Unexpected end of ${rawTagName}`);i2=result2.i;tagContent=result2.tagContent}const childNode=new xmlNode(tagName);tagName!==tagExp&&attrExpPresent&&(childNode[":@"]=this.buildAttributesMap(tagExp,jPath,tagName));tagContent&&(tagContent=this.parseTextData(tagContent,tagName,jPath,!0,attrExpPresent,!0,!0));jPath=jPath.substr(0,jPath.lastIndexOf("."));childNode.add(this.options.textNodeName,tagContent);this.addChild(currentNode,childNode,jPath)}else{if(tagExp.length>0&&tagExp.lastIndexOf("/")===tagExp.length-1){if("/"===tagName[tagName.length-1]){tagName=tagName.substr(0,tagName.length-1);jPath=jPath.substr(0,jPath.length-1);tagExp=tagName}else tagExp=tagExp.substr(0,tagExp.length-1);this.options.transformTagName&&(tagName=this.options.transformTagName(tagName));const childNode=new xmlNode(tagName);tagName!==tagExp&&attrExpPresent&&(childNode[":@"]=this.buildAttributesMap(tagExp,jPath,tagName));this.addChild(currentNode,childNode,jPath);jPath=jPath.substr(0,jPath.lastIndexOf("."))}else{const childNode=new xmlNode(tagName);this.tagsNodeStack.push(currentNode);tagName!==tagExp&&attrExpPresent&&(childNode[":@"]=this.buildAttributesMap(tagExp,jPath,tagName));this.addChild(currentNode,childNode,jPath);currentNode=childNode}textData="";i2=closeIndex}}else textData+=xmlData[i2];return xmlObj.child},replaceEntitiesValue=function(val2){if(this.options.processEntities){for(let entityName2 in this.docTypeEntities){const entity=this.docTypeEntities[entityName2];val2=val2.replace(entity.regx,entity.val)}for(let entityName2 in this.lastEntities){const entity=this.lastEntities[entityName2];val2=val2.replace(entity.regex,entity.val)}if(this.options.htmlEntities)for(let entityName2 in this.htmlEntities){const entity=this.htmlEntities[entityName2];val2=val2.replace(entity.regex,entity.val)}val2=val2.replace(this.ampEntity.regex,this.ampEntity.val)}return val2};module2.exports=class{constructor(options){this.options=options;this.currentNode=null;this.tagsNodeStack=[];this.docTypeEntities={};this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}};this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"};this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(_,str)=>String.fromCharCode(Number.parseInt(str,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(_,str)=>String.fromCharCode(Number.parseInt(str,16))}};this.addExternalEntities=addExternalEntities;this.parseXml=parseXml;this.parseTextData=parseTextData;this.resolveNameSpace=resolveNameSpace;this.buildAttributesMap=buildAttributesMap;this.isItStopNode=isItStopNode;this.replaceEntitiesValue=replaceEntitiesValue;this.readStopNodeData=readStopNodeData;this.saveTextToParentTag=saveTextToParentTag;this.addChild=addChild}}}}),require_node2json=__commonJS({"node_modules/fast-xml-parser/src/xmlparser/node2json.js"(exports){"use strict";function compress(arr,options,jPath){let text2;const compressedObj={};for(let i2=0;i2<arr.length;i2++){const tagObj=arr[i2],property=propName(tagObj);let newJpath="";newJpath=void 0===jPath?property:jPath+"."+property;if(property===options.textNodeName)void 0===text2?text2=tagObj[property]:text2+=""+tagObj[property];else{if(void 0===property)continue;if(tagObj[property]){let val2=compress(tagObj[property],options,newJpath);const isLeaf=isLeafTag(val2,options);tagObj[":@"]?assignAttributes(val2,tagObj[":@"],newJpath,options):1!==Object.keys(val2).length||void 0===val2[options.textNodeName]||options.alwaysCreateTextNode?0===Object.keys(val2).length&&(options.alwaysCreateTextNode?val2[options.textNodeName]="":val2=""):val2=val2[options.textNodeName];if(void 0!==compressedObj[property]&&compressedObj.hasOwnProperty(property)){Array.isArray(compressedObj[property])||(compressedObj[property]=[compressedObj[property]]);compressedObj[property].push(val2)}else options.isArray(property,newJpath,isLeaf)?compressedObj[property]=[val2]:compressedObj[property]=val2}}}"string"==typeof text2?text2.length>0&&(compressedObj[options.textNodeName]=text2):void 0!==text2&&(compressedObj[options.textNodeName]=text2);return compressedObj}function propName(obj){const keys3=Object.keys(obj);for(let i2=0;i2<keys3.length;i2++){const key2=keys3[i2];if(":@"!==key2)return key2}}function assignAttributes(obj,attrMap,jpath,options){if(attrMap){const keys3=Object.keys(attrMap),len=keys3.length;for(let i2=0;i2<len;i2++){const atrrName=keys3[i2];options.isArray(atrrName,jpath+"."+atrrName,!0,!0)?obj[atrrName]=[attrMap[atrrName]]:obj[atrrName]=attrMap[atrrName]}}}function isLeafTag(obj,options){const{textNodeName}=options,propCount=Object.keys(obj).length;return 0===propCount||!(1!==propCount||!obj[textNodeName]&&"boolean"!=typeof obj[textNodeName]&&0!==obj[textNodeName])}exports.prettify=function prettify(node,options){return compress(node,options)}}}),require_XMLParser=__commonJS({"node_modules/fast-xml-parser/src/xmlparser/XMLParser.js"(exports,module2){var OrderedObjParser,validator,XMLParser2,{buildOptions}=require_OptionsBuilder();OrderedObjParser=require_OrderedObjParser();var{prettify}=require_node2json();validator=require_validator();XMLParser2=class{constructor(options){this.externalEntities={};this.options=buildOptions(options)}parse(xmlData,validationOption){if("string"==typeof xmlData);else{if(!xmlData.toString)throw new Error("XML data is accepted in String or Bytes[] form.");xmlData=xmlData.toString()}if(validationOption){!0===validationOption&&(validationOption={});const result=validator.validate(xmlData,validationOption);if(!0!==result)throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`)}const orderedObjParser=new OrderedObjParser(this.options);orderedObjParser.addExternalEntities(this.externalEntities);const orderedResult=orderedObjParser.parseXml(xmlData);return this.options.preserveOrder||void 0===orderedResult?orderedResult:prettify(orderedResult,this.options)}addEntity(key2,value){if(-1!==value.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==key2.indexOf("&")||-1!==key2.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if("&"===value)throw new Error("An entity with value '&' is not permitted");this.externalEntities[key2]=value}};module2.exports=XMLParser2}}),require_orderedJs2Xml=__commonJS({"node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js"(exports,module2){function arrToStr(arr,options,jPath,indentation){let xmlStr="",isPreviousElementTag=!1;for(let i2=0;i2<arr.length;i2++){const tagObj=arr[i2],tagName=propName(tagObj);if(void 0===tagName)continue;let newJPath="";newJPath=0===jPath.length?tagName:`${jPath}.${tagName}`;if(tagName===options.textNodeName){let tagText=tagObj[tagName];if(!isStopNode(newJPath,options)){tagText=options.tagValueProcessor(tagName,tagText);tagText=replaceEntitiesValue(tagText,options)}isPreviousElementTag&&(xmlStr+=indentation);xmlStr+=tagText;isPreviousElementTag=!1;continue}if(tagName===options.cdataPropName){isPreviousElementTag&&(xmlStr+=indentation);xmlStr+=`<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;isPreviousElementTag=!1;continue}if(tagName===options.commentPropName){xmlStr+=indentation+`\x3c!--${tagObj[tagName][0][options.textNodeName]}--\x3e`;isPreviousElementTag=!0;continue}if("?"===tagName[0]){const attStr2=attr_to_str(tagObj[":@"],options),tempInd="?xml"===tagName?"":indentation;let piTextNodeName=tagObj[tagName][0][options.textNodeName];piTextNodeName=0!==piTextNodeName.length?" "+piTextNodeName:"";xmlStr+=tempInd+`<${tagName}${piTextNodeName}${attStr2}?>`;isPreviousElementTag=!0;continue}let newIdentation=indentation;""!==newIdentation&&(newIdentation+=options.indentBy);const tagStart=indentation+`<${tagName}${attr_to_str(tagObj[":@"],options)}`,tagValue=arrToStr(tagObj[tagName],options,newJPath,newIdentation);if(-1!==options.unpairedTags.indexOf(tagName))options.suppressUnpairedNode?xmlStr+=tagStart+">":xmlStr+=tagStart+"/>";else if(tagValue&&0!==tagValue.length||!options.suppressEmptyNode)if(tagValue&&tagValue.endsWith(">"))xmlStr+=tagStart+`>${tagValue}${indentation}</${tagName}>`;else{xmlStr+=tagStart+">";tagValue&&""!==indentation&&(tagValue.includes("/>")||tagValue.includes("</"))?xmlStr+=indentation+options.indentBy+tagValue+indentation:xmlStr+=tagValue;xmlStr+=`</${tagName}>`}else xmlStr+=tagStart+"/>";isPreviousElementTag=!0}return xmlStr}function propName(obj){const keys3=Object.keys(obj);for(let i2=0;i2<keys3.length;i2++){const key2=keys3[i2];if(obj.hasOwnProperty(key2)&&":@"!==key2)return key2}}function attr_to_str(attrMap,options){let attrStr="";if(attrMap&&!options.ignoreAttributes)for(let attr2 in attrMap){if(!attrMap.hasOwnProperty(attr2))continue;let attrVal=options.attributeValueProcessor(attr2,attrMap[attr2]);attrVal=replaceEntitiesValue(attrVal,options);!0===attrVal&&options.suppressBooleanAttributes?attrStr+=` ${attr2.substr(options.attributeNamePrefix.length)}`:attrStr+=` ${attr2.substr(options.attributeNamePrefix.length)}="${attrVal}"`}return attrStr}function isStopNode(jPath,options){let tagName=(jPath=jPath.substr(0,jPath.length-options.textNodeName.length-1)).substr(jPath.lastIndexOf(".")+1);for(let index6 in options.stopNodes)if(options.stopNodes[index6]===jPath||options.stopNodes[index6]==="*."+tagName)return!0;return!1}function replaceEntitiesValue(textValue,options){if(textValue&&textValue.length>0&&options.processEntities)for(let i2=0;i2<options.entities.length;i2++){const entity=options.entities[i2];textValue=textValue.replace(entity.regex,entity.val)}return textValue}module2.exports=function toXml(jArray,options){let indentation="";options.format&&options.indentBy.length>0&&(indentation="\n");return arrToStr(jArray,options,"",indentation)}}}),require_json2xml=__commonJS({"node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js"(exports,module2){"use strict";function Builder(options){this.options=Object.assign({},defaultOptions,options);if(this.options.ignoreAttributes||this.options.attributesGroupName)this.isAttribute=function(){return!1};else{this.attrPrefixLen=this.options.attributeNamePrefix.length;this.isAttribute=isAttribute}this.processTextOrObjNode=processTextOrObjNode;if(this.options.format){this.indentate=indentate;this.tagEndChar=">\n";this.newLine="\n"}else{this.indentate=function(){return""};this.tagEndChar=">";this.newLine=""}}function processTextOrObjNode(object,key2,level){const result=this.j2x(object,level+1);return void 0!==object[this.options.textNodeName]&&1===Object.keys(object).length?this.buildTextValNode(object[this.options.textNodeName],key2,result.attrStr,level):this.buildObjectNode(result.val,key2,result.attrStr,level)}function indentate(level){return this.options.indentBy.repeat(level)}function isAttribute(name){return!(!name.startsWith(this.options.attributeNamePrefix)||name===this.options.textNodeName)&&name.substr(this.attrPrefixLen)}var buildFromOrderedJs=require_orderedJs2Xml(),defaultOptions={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(key2,a2){return a2},attributeValueProcessor:function(attrName,a2){return a2},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};Builder.prototype.build=function(jObj){if(this.options.preserveOrder)return buildFromOrderedJs(jObj,this.options);Array.isArray(jObj)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(jObj={[this.options.arrayNodeName]:jObj});return this.j2x(jObj,0).val};Builder.prototype.j2x=function(jObj,level){let attrStr="",val2="";for(let key2 in jObj)if(Object.prototype.hasOwnProperty.call(jObj,key2))if(void 0===jObj[key2])this.isAttribute(key2)&&(val2+="");else if(null===jObj[key2])this.isAttribute(key2)?val2+="":"?"===key2[0]?val2+=this.indentate(level)+"<"+key2+"?"+this.tagEndChar:val2+=this.indentate(level)+"<"+key2+"/"+this.tagEndChar;else if(jObj[key2]instanceof Date)val2+=this.buildTextValNode(jObj[key2],key2,"",level);else if("object"!=typeof jObj[key2]){const attr2=this.isAttribute(key2);if(attr2)attrStr+=this.buildAttrPairStr(attr2,""+jObj[key2]);else if(key2===this.options.textNodeName){let newval=this.options.tagValueProcessor(key2,""+jObj[key2]);val2+=this.replaceEntitiesValue(newval)}else val2+=this.buildTextValNode(jObj[key2],key2,"",level)}else if(Array.isArray(jObj[key2])){const arrLen=jObj[key2].length;let listTagVal="",listTagAttr="";for(let j2=0;j2<arrLen;j2++){const item=jObj[key2][j2];if(void 0===item);else if(null===item)"?"===key2[0]?val2+=this.indentate(level)+"<"+key2+"?"+this.tagEndChar:val2+=this.indentate(level)+"<"+key2+"/"+this.tagEndChar;else if("object"==typeof item)if(this.options.oneListGroup){const result=this.j2x(item,level+1);listTagVal+=result.val;this.options.attributesGroupName&&item.hasOwnProperty(this.options.attributesGroupName)&&(listTagAttr+=result.attrStr)}else listTagVal+=this.processTextOrObjNode(item,key2,level);else if(this.options.oneListGroup){let textValue=this.options.tagValueProcessor(key2,item);textValue=this.replaceEntitiesValue(textValue);listTagVal+=textValue}else listTagVal+=this.buildTextValNode(item,key2,"",level)}this.options.oneListGroup&&(listTagVal=this.buildObjectNode(listTagVal,key2,listTagAttr,level));val2+=listTagVal}else if(this.options.attributesGroupName&&key2===this.options.attributesGroupName){const Ks=Object.keys(jObj[key2]),L2=Ks.length;for(let j2=0;j2<L2;j2++)attrStr+=this.buildAttrPairStr(Ks[j2],""+jObj[key2][Ks[j2]])}else val2+=this.processTextOrObjNode(jObj[key2],key2,level);return{attrStr,val:val2}};Builder.prototype.buildAttrPairStr=function(attrName,val2){val2=this.options.attributeValueProcessor(attrName,""+val2);val2=this.replaceEntitiesValue(val2);return this.options.suppressBooleanAttributes&&"true"===val2?" "+attrName:" "+attrName+'="'+val2+'"'};Builder.prototype.buildObjectNode=function(val2,key2,attrStr,level){if(""===val2)return"?"===key2[0]?this.indentate(level)+"<"+key2+attrStr+"?"+this.tagEndChar:this.indentate(level)+"<"+key2+attrStr+this.closeTag(key2)+this.tagEndChar;{let tagEndExp="</"+key2+this.tagEndChar,piClosingChar="";if("?"===key2[0]){piClosingChar="?";tagEndExp=""}return!attrStr&&""!==attrStr||-1!==val2.indexOf("<")?!1!==this.options.commentPropName&&key2===this.options.commentPropName&&0===piClosingChar.length?this.indentate(level)+`\x3c!--${val2}--\x3e`+this.newLine:this.indentate(level)+"<"+key2+attrStr+piClosingChar+this.tagEndChar+val2+this.indentate(level)+tagEndExp:this.indentate(level)+"<"+key2+attrStr+piClosingChar+">"+val2+tagEndExp}};Builder.prototype.closeTag=function(key2){let closeTag="";-1!==this.options.unpairedTags.indexOf(key2)?this.options.suppressUnpairedNode||(closeTag="/"):closeTag=this.options.suppressEmptyNode?"/":`></${key2}`;return closeTag};Builder.prototype.buildTextValNode=function(val2,key2,attrStr,level){if(!1!==this.options.cdataPropName&&key2===this.options.cdataPropName)return this.indentate(level)+`<![CDATA[${val2}]]>`+this.newLine;if(!1!==this.options.commentPropName&&key2===this.options.commentPropName)return this.indentate(level)+`\x3c!--${val2}--\x3e`+this.newLine;if("?"===key2[0])return this.indentate(level)+"<"+key2+attrStr+"?"+this.tagEndChar;{let textValue=this.options.tagValueProcessor(key2,val2);textValue=this.replaceEntitiesValue(textValue);return""===textValue?this.indentate(level)+"<"+key2+attrStr+this.closeTag(key2)+this.tagEndChar:this.indentate(level)+"<"+key2+attrStr+">"+textValue+"</"+key2+this.tagEndChar}};Builder.prototype.replaceEntitiesValue=function(textValue){if(textValue&&textValue.length>0&&this.options.processEntities)for(let i2=0;i2<this.options.entities.length;i2++){const entity=this.options.entities[i2];textValue=textValue.replace(entity.regex,entity.val)}return textValue};module2.exports=Builder}}),require_fxp=__commonJS({"node_modules/fast-xml-parser/src/fxp.js"(exports,module2){"use strict";var validator=require_validator(),XMLParser2=require_XMLParser(),XMLBuilder=require_json2xml();module2.exports={XMLParser:XMLParser2,XMLValidator:validator,XMLBuilder}}}),require_es5=__commonJS({"node_modules/bowser/es5.js"(exports,module2){e3=exports,t3=function(){return function(e3){function r4(n3){if(t3[n3])return t3[n3].exports;var i2=t3[n3]={i:n3,l:!1,exports:{}};return e3[n3].call(i2.exports,i2,i2.exports,r4),i2.l=!0,i2.exports}var t3={};return r4.m=e3,r4.c=t3,r4.d=function(e4,t4,n3){r4.o(e4,t4)||Object.defineProperty(e4,t4,{enumerable:!0,get:n3})},r4.r=function(e4){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e4,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e4,"__esModule",{value:!0})},r4.t=function(e4,t4){var n3,i2;if(1&t4&&(e4=r4(e4)),8&t4)return e4;if(4&t4&&"object"==typeof e4&&e4&&e4.__esModule)return e4;n3=Object.create(null);if(r4.r(n3),Object.defineProperty(n3,"default",{enumerable:!0,value:e4}),2&t4&&"string"!=typeof e4)for(i2 in e4)r4.d(n3,i2,(function(t5){return e4[t5]}).bind(null,i2));return n3},r4.n=function(e4){var t4=e4&&e4.__esModule?function(){return e4.default}:function(){return e4};return r4.d(t4,"a",t4),t4},r4.o=function(e4,t4){return Object.prototype.hasOwnProperty.call(e4,t4)},r4.p="",r4(r4.s=90)}({17:function(e3,t3,r4){"use strict";t3.__esModule=!0,t3.default=void 0;var n3=r4(18),i2=function(){function e4(){}return e4.getFirstMatch=function(e5,t4){var r5=t4.match(e5);return r5&&r5.length>0&&r5[1]||""},e4.getSecondMatch=function(e5,t4){var r5=t4.match(e5);return r5&&r5.length>1&&r5[2]||""},e4.matchAndReturnConst=function(e5,t4,r5){if(e5.test(t4))return r5},e4.getWindowsVersionName=function(e5){switch(e5){case"NT":return"NT";case"XP":return"XP";case"NT 5.0":return"2000";case"NT 5.1":return"XP";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e4.getMacOSVersionName=function(e5){var t4=e5.split(".").splice(0,2).map((function(e6){return parseInt(e6,10)||0}));if(t4.push(0),10===t4[0])switch(t4[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e4.getAndroidVersionName=function(e5){var t4=e5.split(".").splice(0,2).map((function(e6){return parseInt(e6,10)||0}));if(t4.push(0),!(1===t4[0]&&t4[1]<5))return 1===t4[0]&&t4[1]<6?"Cupcake":1===t4[0]&&t4[1]>=6?"Donut":2===t4[0]&&t4[1]<2?"Eclair":2===t4[0]&&2===t4[1]?"Froyo":2===t4[0]&&t4[1]>2?"Gingerbread":3===t4[0]?"Honeycomb":4===t4[0]&&t4[1]<1?"Ice Cream Sandwich":4===t4[0]&&t4[1]<4?"Jelly Bean":4===t4[0]&&t4[1]>=4?"KitKat":5===t4[0]?"Lollipop":6===t4[0]?"Marshmallow":7===t4[0]?"Nougat":8===t4[0]?"Oreo":9===t4[0]?"Pie":void 0},e4.getVersionPrecision=function(e5){return e5.split(".").length},e4.compareVersions=function(t4,r5,n4){void 0===n4&&(n4=!1);var i3=e4.getVersionPrecision(t4),s2=e4.getVersionPrecision(r5),a2=Math.max(i3,s2),o2=0,u2=e4.map([t4,r5],(function(t5){var r6=a2-e4.getVersionPrecision(t5),n5=t5+new Array(r6+1).join(".0");return e4.map(n5.split("."),(function(e5){return new Array(20-e5.length).join("0")+e5})).reverse()}));for(n4&&(o2=a2-Math.min(i3,s2)),a2-=1;a2>=o2;){if(u2[0][a2]>u2[1][a2])return 1;if(u2[0][a2]===u2[1][a2]){if(a2===o2)return 0;a2-=1}else if(u2[0][a2]<u2[1][a2])return-1}},e4.map=function(e5,t4){var r5,n4=[];if(Array.prototype.map)return Array.prototype.map.call(e5,t4);for(r5=0;r5<e5.length;r5+=1)n4.push(t4(e5[r5]));return n4},e4.find=function(e5,t4){var r5,n4,i3;if(Array.prototype.find)return Array.prototype.find.call(e5,t4);for(r5=0,n4=e5.length;r5<n4;r5+=1)if(t4(i3=e5[r5],r5))return i3},e4.assign=function(e5){var t4,r5,n4,i3,s2,a2,o2;for(n4=e5,i3=arguments.length,s2=new Array(i3>1?i3-1:0),a2=1;a2<i3;a2++)s2[a2-1]=arguments[a2];if(Object.assign)return Object.assign.apply(Object,[e5].concat(s2));o2=function(){var e6=s2[t4];"object"==typeof e6&&null!==e6&&Object.keys(e6).forEach((function(t5){n4[t5]=e6[t5]}))};for(t4=0,r5=s2.length;t4<r5;t4+=1)o2();return e5},e4.getBrowserAlias=function(e5){return n3.BROWSER_ALIASES_MAP[e5]},e4.getBrowserTypeByAlias=function(e5){return n3.BROWSER_MAP[e5]||""},e4}();t3.default=i2,e3.exports=t3.default},18:function(e3,t3,r4){"use strict";t3.__esModule=!0,t3.ENGINE_MAP=t3.OS_MAP=t3.PLATFORMS_MAP=t3.BROWSER_MAP=t3.BROWSER_ALIASES_MAP=void 0;t3.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"};t3.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"};t3.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"};t3.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"};t3.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"}},90:function(e3,t3,r4){"use strict";var n3,i2,s2,o2;t3.__esModule=!0,t3.default=void 0;i2=(n3=r4(91))&&n3.__esModule?n3:{default:n3},s2=r4(18);o2=function(){function e4(){}var n4;return e4.getParser=function(e5,t5){if(void 0===t5&&(t5=!1),"string"!=typeof e5)throw new Error("UserAgent should be a string");return new i2.default(e5,t5)},e4.parse=function(e5){return new i2.default(e5).getResult()},(n4=[{key:"BROWSER_MAP",get:function(){return s2.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return s2.ENGINE_MAP}},{key:"OS_MAP",get:function(){return s2.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return s2.PLATFORMS_MAP}}])&&function a2(e4,t4){var r5,n4;for(r5=0;r5<t4.length;r5++)(n4=t4[r5]).enumerable=n4.enumerable||!1,n4.configurable=!0,"value"in n4&&(n4.writable=!0),Object.defineProperty(e4,n4.key,n4)}(e4,n4),e4}();t3.default=o2,e3.exports=t3.default},91:function(e3,t3,r4){"use strict";function u2(e4){return e4&&e4.__esModule?e4:{default:e4}}var n3,i2,s2,a2,o2,d4;t3.__esModule=!0,t3.default=void 0;n3=u2(r4(92)),i2=u2(r4(93)),s2=u2(r4(94)),a2=u2(r4(95)),o2=u2(r4(17));d4=function(){function e4(e5,t5){if(void 0===t5&&(t5=!1),null==e5||""===e5)throw new Error("UserAgent parameter can't be empty");this._ua=e5,this.parsedResult={},!0!==t5&&this.parse()}var t4=e4.prototype;return t4.getUA=function(){return this._ua},t4.test=function(e5){return e5.test(this._ua)},t4.parseBrowser=function(){var t5,e5=this;this.parsedResult.browser={};return(t5=o2.default.find(n3.default,(function(t6){if("function"==typeof t6.test)return t6.test(e5);if(t6.test instanceof Array)return t6.test.some((function(t7){return e5.test(t7)}));throw new Error("Browser's test function is not valid")})))&&(this.parsedResult.browser=t5.describe(this.getUA())),this.parsedResult.browser},t4.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t4.getBrowserName=function(e5){return e5?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t4.getBrowserVersion=function(){return this.getBrowser().version},t4.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t4.parseOS=function(){var t5,e5=this;this.parsedResult.os={};return(t5=o2.default.find(i2.default,(function(t6){if("function"==typeof t6.test)return t6.test(e5);if(t6.test instanceof Array)return t6.test.some((function(t7){return e5.test(t7)}));throw new Error("Browser's test function is not valid")})))&&(this.parsedResult.os=t5.describe(this.getUA())),this.parsedResult.os},t4.getOSName=function(e5){var t5=this.getOS().name;return e5?String(t5).toLowerCase()||"":t5||""},t4.getOSVersion=function(){return this.getOS().version},t4.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t4.getPlatformType=function(e5){void 0===e5&&(e5=!1);var t5=this.getPlatform().type;return e5?String(t5).toLowerCase()||"":t5||""},t4.parsePlatform=function(){var t5,e5=this;this.parsedResult.platform={};return(t5=o2.default.find(s2.default,(function(t6){if("function"==typeof t6.test)return t6.test(e5);if(t6.test instanceof Array)return t6.test.some((function(t7){return e5.test(t7)}));throw new Error("Browser's test function is not valid")})))&&(this.parsedResult.platform=t5.describe(this.getUA())),this.parsedResult.platform},t4.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t4.getEngineName=function(e5){return e5?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t4.parseEngine=function(){var t5,e5=this;this.parsedResult.engine={};return(t5=o2.default.find(a2.default,(function(t6){if("function"==typeof t6.test)return t6.test(e5);if(t6.test instanceof Array)return t6.test.some((function(t7){return e5.test(t7)}));throw new Error("Browser's test function is not valid")})))&&(this.parsedResult.engine=t5.describe(this.getUA())),this.parsedResult.engine},t4.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t4.getResult=function(){return o2.default.assign({},this.parsedResult)},t4.satisfies=function(e5){var a3,u3,d5,c3,f4,l2,h3,t5=this,r5={},n4=0,i3={},s3=0;if(Object.keys(e5).forEach((function(t6){var a4=e5[t6];"string"==typeof a4?(i3[t6]=a4,s3+=1):"object"==typeof a4&&(r5[t6]=a4,n4+=1)})),n4>0){a3=Object.keys(r5);if((u3=o2.default.find(a3,(function(e6){return t5.isOS(e6)})))&&void 0!==(d5=this.satisfies(r5[u3])))return d5;if((c3=o2.default.find(a3,(function(e6){return t5.isPlatform(e6)})))&&void 0!==(f4=this.satisfies(r5[c3])))return f4}if(s3>0){l2=Object.keys(i3);if(void 0!==(h3=o2.default.find(l2,(function(e6){return t5.isBrowser(e6,!0)}))))return this.compareVersion(i3[h3])}},t4.isBrowser=function(e5,t5){void 0===t5&&(t5=!1);var r5=this.getBrowserName().toLowerCase(),n4=e5.toLowerCase(),i3=o2.default.getBrowserTypeByAlias(n4);return t5&&i3&&(n4=i3.toLowerCase()),n4===r5},t4.compareVersion=function(e5){var t5=[0],r5=e5,n4=!1,i3=this.getBrowserVersion();if("string"==typeof i3)return">"===e5[0]||"<"===e5[0]?(r5=e5.substr(1),"="===e5[1]?(n4=!0,r5=e5.substr(2)):t5=[],">"===e5[0]?t5.push(1):t5.push(-1)):"="===e5[0]?r5=e5.substr(1):"~"===e5[0]&&(n4=!0,r5=e5.substr(1)),t5.indexOf(o2.default.compareVersions(i3,r5,n4))>-1},t4.isOS=function(e5){return this.getOSName(!0)===String(e5).toLowerCase()},t4.isPlatform=function(e5){return this.getPlatformType(!0)===String(e5).toLowerCase()},t4.isEngine=function(e5){return this.getEngineName(!0)===String(e5).toLowerCase()},t4.is=function(e5,t5){return void 0===t5&&(t5=!1),this.isBrowser(e5,t5)||this.isOS(e5)||this.isPlatform(e5)},t4.some=function(e5){var t5=this;return void 0===e5&&(e5=[]),e5.some((function(e6){return t5.is(e6)}))},e4}();t3.default=d4,e3.exports=t3.default},92:function(e3,t3,r4){"use strict";var n3,i2,s2,a2;t3.__esModule=!0,t3.default=void 0;i2=(n3=r4(17))&&n3.__esModule?n3:{default:n3};s2=/version\/(\d+(\.?_?\d+)+)/i,a2=[{test:[/googlebot/i],describe:function(e4){var t4={name:"Googlebot"},r5=i2.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e4)||i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/opera/i],describe:function(e4){var t4={name:"Opera"},r5=i2.default.getFirstMatch(s2,e4)||i2.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/opr\/|opios/i],describe:function(e4){var t4={name:"Opera"},r5=i2.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e4)||i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/SamsungBrowser/i],describe:function(e4){var t4={name:"Samsung Internet for Android"},r5=i2.default.getFirstMatch(s2,e4)||i2.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/Whale/i],describe:function(e4){var t4={name:"NAVER Whale Browser"},r5=i2.default.getFirstMatch(s2,e4)||i2.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/MZBrowser/i],describe:function(e4){var t4={name:"MZ Browser"},r5=i2.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e4)||i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/focus/i],describe:function(e4){var t4={name:"Focus"},r5=i2.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e4)||i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/swing/i],describe:function(e4){var t4={name:"Swing"},r5=i2.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e4)||i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/coast/i],describe:function(e4){var t4={name:"Opera Coast"},r5=i2.default.getFirstMatch(s2,e4)||i2.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e4){var t4={name:"Opera Touch"},r5=i2.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e4)||i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/yabrowser/i],describe:function(e4){var t4={name:"Yandex Browser"},r5=i2.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e4)||i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/ucbrowser/i],describe:function(e4){var t4={name:"UC Browser"},r5=i2.default.getFirstMatch(s2,e4)||i2.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/Maxthon|mxios/i],describe:function(e4){var t4={name:"Maxthon"},r5=i2.default.getFirstMatch(s2,e4)||i2.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/epiphany/i],describe:function(e4){var t4={name:"Epiphany"},r5=i2.default.getFirstMatch(s2,e4)||i2.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/puffin/i],describe:function(e4){var t4={name:"Puffin"},r5=i2.default.getFirstMatch(s2,e4)||i2.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/sleipnir/i],describe:function(e4){var t4={name:"Sleipnir"},r5=i2.default.getFirstMatch(s2,e4)||i2.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/k-meleon/i],describe:function(e4){var t4={name:"K-Meleon"},r5=i2.default.getFirstMatch(s2,e4)||i2.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/micromessenger/i],describe:function(e4){var t4={name:"WeChat"},r5=i2.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e4)||i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/qqbrowser/i],describe:function(e4){var t4={name:/qqbrowserlite/i.test(e4)?"QQ Browser Lite":"QQ Browser"},r5=i2.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e4)||i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/msie|trident/i],describe:function(e4){var t4={name:"Internet Explorer"},r5=i2.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/\sedg\//i],describe:function(e4){var t4={name:"Microsoft Edge"},r5=i2.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/edg([ea]|ios)/i],describe:function(e4){var t4={name:"Microsoft Edge"},r5=i2.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/vivaldi/i],describe:function(e4){var t4={name:"Vivaldi"},r5=i2.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/seamonkey/i],describe:function(e4){var t4={name:"SeaMonkey"},r5=i2.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/sailfish/i],describe:function(e4){var t4={name:"Sailfish"},r5=i2.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/silk/i],describe:function(e4){var t4={name:"Amazon Silk"},r5=i2.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/phantom/i],describe:function(e4){var t4={name:"PhantomJS"},r5=i2.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/slimerjs/i],describe:function(e4){var t4={name:"SlimerJS"},r5=i2.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e4){var t4={name:"BlackBerry"},r5=i2.default.getFirstMatch(s2,e4)||i2.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/(web|hpw)[o0]s/i],describe:function(e4){var t4={name:"WebOS Browser"},r5=i2.default.getFirstMatch(s2,e4)||i2.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/bada/i],describe:function(e4){var t4={name:"Bada"},r5=i2.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/tizen/i],describe:function(e4){var t4={name:"Tizen"},r5=i2.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e4)||i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/qupzilla/i],describe:function(e4){var t4={name:"QupZilla"},r5=i2.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e4)||i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/firefox|iceweasel|fxios/i],describe:function(e4){var t4={name:"Firefox"},r5=i2.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/electron/i],describe:function(e4){var t4={name:"Electron"},r5=i2.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/MiuiBrowser/i],describe:function(e4){var t4={name:"Miui"},r5=i2.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/chromium/i],describe:function(e4){var t4={name:"Chromium"},r5=i2.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e4)||i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/chrome|crios|crmo/i],describe:function(e4){var t4={name:"Chrome"},r5=i2.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/GSA/i],describe:function(e4){var t4={name:"Google Search"},r5=i2.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:function(e4){var t4=!e4.test(/like android/i),r5=e4.test(/android/i);return t4&&r5},describe:function(e4){var t4={name:"Android Browser"},r5=i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/playstation 4/i],describe:function(e4){var t4={name:"PlayStation 4"},r5=i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/safari|applewebkit/i],describe:function(e4){var t4={name:"Safari"},r5=i2.default.getFirstMatch(s2,e4);return r5&&(t4.version=r5),t4}},{test:[/.*/i],describe:function(e4){var t4=-1!==e4.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i2.default.getFirstMatch(t4,e4),version:i2.default.getSecondMatch(t4,e4)}}}];t3.default=a2,e3.exports=t3.default},93:function(e3,t3,r4){"use strict";var n3,i2,s2,a2;t3.__esModule=!0,t3.default=void 0;i2=(n3=r4(17))&&n3.__esModule?n3:{default:n3},s2=r4(18);a2=[{test:[/Roku\/DVP/],describe:function(e4){var t4=i2.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e4);return{name:s2.OS_MAP.Roku,version:t4}}},{test:[/windows phone/i],describe:function(e4){var t4=i2.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e4);return{name:s2.OS_MAP.WindowsPhone,version:t4}}},{test:[/windows /i],describe:function(e4){var t4=i2.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e4),r5=i2.default.getWindowsVersionName(t4);return{name:s2.OS_MAP.Windows,version:t4,versionName:r5}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e4){var t4={name:s2.OS_MAP.iOS},r5=i2.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e4);return r5&&(t4.version=r5),t4}},{test:[/macintosh/i],describe:function(e4){var t4=i2.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e4).replace(/[_\s]/g,"."),r5=i2.default.getMacOSVersionName(t4),n4={name:s2.OS_MAP.MacOS,version:t4};return r5&&(n4.versionName=r5),n4}},{test:[/(ipod|iphone|ipad)/i],describe:function(e4){var t4=i2.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e4).replace(/[_\s]/g,".");return{name:s2.OS_MAP.iOS,version:t4}}},{test:function(e4){var t4=!e4.test(/like android/i),r5=e4.test(/android/i);return t4&&r5},describe:function(e4){var t4=i2.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e4),r5=i2.default.getAndroidVersionName(t4),n4={name:s2.OS_MAP.Android,version:t4};return r5&&(n4.versionName=r5),n4}},{test:[/(web|hpw)[o0]s/i],describe:function(e4){var t4=i2.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e4),r5={name:s2.OS_MAP.WebOS};return t4&&t4.length&&(r5.version=t4),r5}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e4){var t4=i2.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e4)||i2.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e4)||i2.default.getFirstMatch(/\bbb(\d+)/i,e4);return{name:s2.OS_MAP.BlackBerry,version:t4}}},{test:[/bada/i],describe:function(e4){var t4=i2.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e4);return{name:s2.OS_MAP.Bada,version:t4}}},{test:[/tizen/i],describe:function(e4){var t4=i2.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e4);return{name:s2.OS_MAP.Tizen,version:t4}}},{test:[/linux/i],describe:function(){return{name:s2.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:s2.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e4){var t4=i2.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e4);return{name:s2.OS_MAP.PlayStation4,version:t4}}}];t3.default=a2,e3.exports=t3.default},94:function(e3,t3,r4){"use strict";var n3,i2,s2,a2;t3.__esModule=!0,t3.default=void 0;i2=(n3=r4(17))&&n3.__esModule?n3:{default:n3},s2=r4(18);a2=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e4){var t4=i2.default.getFirstMatch(/(can-l01)/i,e4)&&"Nova",r5={type:s2.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t4&&(r5.model=t4),r5}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:s2.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:s2.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:s2.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:s2.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:s2.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:s2.PLATFORMS_MAP.tablet}}},{test:function(e4){var t4=e4.test(/ipod|iphone/i),r5=e4.test(/like (ipod|iphone)/i);return t4&&!r5},describe:function(e4){var t4=i2.default.getFirstMatch(/(ipod|iphone)/i,e4);return{type:s2.PLATFORMS_MAP.mobile,vendor:"Apple",model:t4}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:s2.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:s2.PLATFORMS_MAP.mobile}}},{test:function(e4){return"blackberry"===e4.getBrowserName(!0)},describe:function(){return{type:s2.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e4){return"bada"===e4.getBrowserName(!0)},describe:function(){return{type:s2.PLATFORMS_MAP.mobile}}},{test:function(e4){return"windows phone"===e4.getBrowserName()},describe:function(){return{type:s2.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e4){var t4=Number(String(e4.getOSVersion()).split(".")[0]);return"android"===e4.getOSName(!0)&&t4>=3},describe:function(){return{type:s2.PLATFORMS_MAP.tablet}}},{test:function(e4){return"android"===e4.getOSName(!0)},describe:function(){return{type:s2.PLATFORMS_MAP.mobile}}},{test:function(e4){return"macos"===e4.getOSName(!0)},describe:function(){return{type:s2.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e4){return"windows"===e4.getOSName(!0)},describe:function(){return{type:s2.PLATFORMS_MAP.desktop}}},{test:function(e4){return"linux"===e4.getOSName(!0)},describe:function(){return{type:s2.PLATFORMS_MAP.desktop}}},{test:function(e4){return"playstation 4"===e4.getOSName(!0)},describe:function(){return{type:s2.PLATFORMS_MAP.tv}}},{test:function(e4){return"roku"===e4.getOSName(!0)},describe:function(){return{type:s2.PLATFORMS_MAP.tv}}}];t3.default=a2,e3.exports=t3.default},95:function(e3,t3,r4){"use strict";var n3,i2,s2,a2;t3.__esModule=!0,t3.default=void 0;i2=(n3=r4(17))&&n3.__esModule?n3:{default:n3},s2=r4(18);a2=[{test:function(e4){return"microsoft edge"===e4.getBrowserName(!0)},describe:function(e4){if(/\sedg\//i.test(e4))return{name:s2.ENGINE_MAP.Blink};var t4=i2.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e4);return{name:s2.ENGINE_MAP.EdgeHTML,version:t4}}},{test:[/trident/i],describe:function(e4){var t4={name:s2.ENGINE_MAP.Trident},r5=i2.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:function(e4){return e4.test(/presto/i)},describe:function(e4){var t4={name:s2.ENGINE_MAP.Presto},r5=i2.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:function(e4){var t4=e4.test(/gecko/i),r5=e4.test(/like gecko/i);return t4&&!r5},describe:function(e4){var t4={name:s2.ENGINE_MAP.Gecko},r5=i2.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:s2.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e4){var t4={name:s2.ENGINE_MAP.WebKit},r5=i2.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e4);return r5&&(t4.version=r5),t4}}];t3.default=a2,e3.exports=t3.default}})},"object"==typeof exports&&"object"==typeof module2?module2.exports=t3():"function"==typeof define&&define.amd?define([],t3):"object"==typeof exports?exports.bowser=t3():e3.bowser=t3();var e3,t3}}),require_spark_md5=__commonJS({"node_modules/spark-md5/spark-md5.js"(exports,module2){(function(factory){if("object"==typeof exports)module2.exports=factory();else if("function"==typeof define&&define.amd)define(factory);else{var glob;try{glob=window}catch(e3){glob=self}glob.SparkMD5=factory()}})((function(undefined2){"use strict";function md5cycle(x2,k2){var a2=x2[0],b3=x2[1],c3=x2[2],d4=x2[3];b3=((b3+=((c3=((c3+=((d4=((d4+=((a2=((a2+=(b3&c3|~b3&d4)+k2[0]-680876936|0)<<7|a2>>>25)+b3|0)&b3|~a2&c3)+k2[1]-389564586|0)<<12|d4>>>20)+a2|0)&a2|~d4&b3)+k2[2]+606105819|0)<<17|c3>>>15)+d4|0)&d4|~c3&a2)+k2[3]-1044525330|0)<<22|b3>>>10)+c3|0;b3=((b3+=((c3=((c3+=((d4=((d4+=((a2=((a2+=(b3&c3|~b3&d4)+k2[4]-176418897|0)<<7|a2>>>25)+b3|0)&b3|~a2&c3)+k2[5]+1200080426|0)<<12|d4>>>20)+a2|0)&a2|~d4&b3)+k2[6]-1473231341|0)<<17|c3>>>15)+d4|0)&d4|~c3&a2)+k2[7]-45705983|0)<<22|b3>>>10)+c3|0;b3=((b3+=((c3=((c3+=((d4=((d4+=((a2=((a2+=(b3&c3|~b3&d4)+k2[8]+1770035416|0)<<7|a2>>>25)+b3|0)&b3|~a2&c3)+k2[9]-1958414417|0)<<12|d4>>>20)+a2|0)&a2|~d4&b3)+k2[10]-42063|0)<<17|c3>>>15)+d4|0)&d4|~c3&a2)+k2[11]-1990404162|0)<<22|b3>>>10)+c3|0;b3=((b3+=((c3=((c3+=((d4=((d4+=((a2=((a2+=(b3&c3|~b3&d4)+k2[12]+1804603682|0)<<7|a2>>>25)+b3|0)&b3|~a2&c3)+k2[13]-40341101|0)<<12|d4>>>20)+a2|0)&a2|~d4&b3)+k2[14]-1502002290|0)<<17|c3>>>15)+d4|0)&d4|~c3&a2)+k2[15]+1236535329|0)<<22|b3>>>10)+c3|0;b3=((b3+=((c3=((c3+=((d4=((d4+=((a2=((a2+=(b3&d4|c3&~d4)+k2[1]-165796510|0)<<5|a2>>>27)+b3|0)&c3|b3&~c3)+k2[6]-1069501632|0)<<9|d4>>>23)+a2|0)&b3|a2&~b3)+k2[11]+643717713|0)<<14|c3>>>18)+d4|0)&a2|d4&~a2)+k2[0]-373897302|0)<<20|b3>>>12)+c3|0;b3=((b3+=((c3=((c3+=((d4=((d4+=((a2=((a2+=(b3&d4|c3&~d4)+k2[5]-701558691|0)<<5|a2>>>27)+b3|0)&c3|b3&~c3)+k2[10]+38016083|0)<<9|d4>>>23)+a2|0)&b3|a2&~b3)+k2[15]-660478335|0)<<14|c3>>>18)+d4|0)&a2|d4&~a2)+k2[4]-405537848|0)<<20|b3>>>12)+c3|0;b3=((b3+=((c3=((c3+=((d4=((d4+=((a2=((a2+=(b3&d4|c3&~d4)+k2[9]+568446438|0)<<5|a2>>>27)+b3|0)&c3|b3&~c3)+k2[14]-1019803690|0)<<9|d4>>>23)+a2|0)&b3|a2&~b3)+k2[3]-187363961|0)<<14|c3>>>18)+d4|0)&a2|d4&~a2)+k2[8]+1163531501|0)<<20|b3>>>12)+c3|0;b3=((b3+=((c3=((c3+=((d4=((d4+=((a2=((a2+=(b3&d4|c3&~d4)+k2[13]-1444681467|0)<<5|a2>>>27)+b3|0)&c3|b3&~c3)+k2[2]-51403784|0)<<9|d4>>>23)+a2|0)&b3|a2&~b3)+k2[7]+1735328473|0)<<14|c3>>>18)+d4|0)&a2|d4&~a2)+k2[12]-1926607734|0)<<20|b3>>>12)+c3|0;b3=((b3+=((c3=((c3+=((d4=((d4+=((a2=((a2+=(b3^c3^d4)+k2[5]-378558|0)<<4|a2>>>28)+b3|0)^b3^c3)+k2[8]-2022574463|0)<<11|d4>>>21)+a2|0)^a2^b3)+k2[11]+1839030562|0)<<16|c3>>>16)+d4|0)^d4^a2)+k2[14]-35309556|0)<<23|b3>>>9)+c3|0;b3=((b3+=((c3=((c3+=((d4=((d4+=((a2=((a2+=(b3^c3^d4)+k2[1]-1530992060|0)<<4|a2>>>28)+b3|0)^b3^c3)+k2[4]+1272893353|0)<<11|d4>>>21)+a2|0)^a2^b3)+k2[7]-155497632|0)<<16|c3>>>16)+d4|0)^d4^a2)+k2[10]-1094730640|0)<<23|b3>>>9)+c3|0;b3=((b3+=((c3=((c3+=((d4=((d4+=((a2=((a2+=(b3^c3^d4)+k2[13]+681279174|0)<<4|a2>>>28)+b3|0)^b3^c3)+k2[0]-358537222|0)<<11|d4>>>21)+a2|0)^a2^b3)+k2[3]-722521979|0)<<16|c3>>>16)+d4|0)^d4^a2)+k2[6]+76029189|0)<<23|b3>>>9)+c3|0;b3=((b3+=((c3=((c3+=((d4=((d4+=((a2=((a2+=(b3^c3^d4)+k2[9]-640364487|0)<<4|a2>>>28)+b3|0)^b3^c3)+k2[12]-421815835|0)<<11|d4>>>21)+a2|0)^a2^b3)+k2[15]+530742520|0)<<16|c3>>>16)+d4|0)^d4^a2)+k2[2]-995338651|0)<<23|b3>>>9)+c3|0;b3=((b3+=((d4=((d4+=(b3^((a2=((a2+=(c3^(b3|~d4))+k2[0]-198630844|0)<<6|a2>>>26)+b3|0)|~c3))+k2[7]+1126891415|0)<<10|d4>>>22)+a2|0)^((c3=((c3+=(a2^(d4|~b3))+k2[14]-1416354905|0)<<15|c3>>>17)+d4|0)|~a2))+k2[5]-57434055|0)<<21|b3>>>11)+c3|0;b3=((b3+=((d4=((d4+=(b3^((a2=((a2+=(c3^(b3|~d4))+k2[12]+1700485571|0)<<6|a2>>>26)+b3|0)|~c3))+k2[3]-1894986606|0)<<10|d4>>>22)+a2|0)^((c3=((c3+=(a2^(d4|~b3))+k2[10]-1051523|0)<<15|c3>>>17)+d4|0)|~a2))+k2[1]-2054922799|0)<<21|b3>>>11)+c3|0;b3=((b3+=((d4=((d4+=(b3^((a2=((a2+=(c3^(b3|~d4))+k2[8]+1873313359|0)<<6|a2>>>26)+b3|0)|~c3))+k2[15]-30611744|0)<<10|d4>>>22)+a2|0)^((c3=((c3+=(a2^(d4|~b3))+k2[6]-1560198380|0)<<15|c3>>>17)+d4|0)|~a2))+k2[13]+1309151649|0)<<21|b3>>>11)+c3|0;b3=((b3+=((d4=((d4+=(b3^((a2=((a2+=(c3^(b3|~d4))+k2[4]-145523070|0)<<6|a2>>>26)+b3|0)|~c3))+k2[11]-1120210379|0)<<10|d4>>>22)+a2|0)^((c3=((c3+=(a2^(d4|~b3))+k2[2]+718787259|0)<<15|c3>>>17)+d4|0)|~a2))+k2[9]-343485551|0)<<21|b3>>>11)+c3|0;x2[0]=a2+x2[0]|0;x2[1]=b3+x2[1]|0;x2[2]=c3+x2[2]|0;x2[3]=d4+x2[3]|0}function md5blk(s2){var i2,md5blks=[];for(i2=0;i2<64;i2+=4)md5blks[i2>>2]=s2.charCodeAt(i2)+(s2.charCodeAt(i2+1)<<8)+(s2.charCodeAt(i2+2)<<16)+(s2.charCodeAt(i2+3)<<24);return md5blks}function md5blk_array(a2){var i2,md5blks=[];for(i2=0;i2<64;i2+=4)md5blks[i2>>2]=a2[i2]+(a2[i2+1]<<8)+(a2[i2+2]<<16)+(a2[i2+3]<<24);return md5blks}function md51(s2){var i2,length,tail,tmp,lo,hi,n3=s2.length,state2=[1732584193,-271733879,-1732584194,271733878];for(i2=64;i2<=n3;i2+=64)md5cycle(state2,md5blk(s2.substring(i2-64,i2)));length=(s2=s2.substring(i2-64)).length;tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(i2=0;i2<length;i2+=1)tail[i2>>2]|=s2.charCodeAt(i2)<<(i2%4<<3);tail[i2>>2]|=128<<(i2%4<<3);if(i2>55){md5cycle(state2,tail);for(i2=0;i2<16;i2+=1)tail[i2]=0}tmp=(tmp=8*n3).toString(16).match(/(.*?)(.{0,8})$/);lo=parseInt(tmp[2],16);hi=parseInt(tmp[1],16)||0;tail[14]=lo;tail[15]=hi;md5cycle(state2,tail);return state2}function rhex(n3){var j2,s2="";for(j2=0;j2<4;j2+=1)s2+=hex_chr[n3>>8*j2+4&15]+hex_chr[n3>>8*j2&15];return s2}function hex(x2){var i2;for(i2=0;i2<x2.length;i2+=1)x2[i2]=rhex(x2[i2]);return x2.join("")}function toUtf82(str){/[\u0080-\uFFFF]/.test(str)&&(str=unescape(encodeURIComponent(str)));return str}function hexToBinaryString(hex2){var x2,bytes=[],length=hex2.length;for(x2=0;x2<length-1;x2+=2)bytes.push(parseInt(hex2.substr(x2,2),16));return String.fromCharCode.apply(String,bytes)}function SparkMD5(){this.reset()}var hex_chr=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];hex(md51("hello"));"undefined"==typeof ArrayBuffer||ArrayBuffer.prototype.slice||function(){function clamp(val2,length){return(val2=0|val2||0)<0?Math.max(val2+length,0):Math.min(val2,length)}ArrayBuffer.prototype.slice=function(from,to){var num2,target,targetArray,sourceArray,length=this.byteLength,begin=clamp(from,length),end=length;to!==undefined2&&(end=clamp(to,length));if(begin>end)return new ArrayBuffer(0);num2=end-begin;target=new ArrayBuffer(num2);targetArray=new Uint8Array(target);sourceArray=new Uint8Array(this,begin,num2);targetArray.set(sourceArray);return target}}();SparkMD5.prototype.append=function(str){this.appendBinary(toUtf82(str));return this};SparkMD5.prototype.appendBinary=function(contents){this._buff+=contents;this._length+=contents.length;var i2,length=this._buff.length;for(i2=64;i2<=length;i2+=64)md5cycle(this._hash,md5blk(this._buff.substring(i2-64,i2)));this._buff=this._buff.substring(i2-64);return this};SparkMD5.prototype.end=function(raw){var i2,ret,buff=this._buff,length=buff.length,tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(i2=0;i2<length;i2+=1)tail[i2>>2]|=buff.charCodeAt(i2)<<(i2%4<<3);this._finish(tail,length);ret=hex(this._hash);raw&&(ret=hexToBinaryString(ret));this.reset();return ret};SparkMD5.prototype.reset=function(){this._buff="";this._length=0;this._hash=[1732584193,-271733879,-1732584194,271733878];return this};SparkMD5.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}};SparkMD5.prototype.setState=function(state2){this._buff=state2.buff;this._length=state2.length;this._hash=state2.hash;return this};SparkMD5.prototype.destroy=function(){delete this._hash;delete this._buff;delete this._length};SparkMD5.prototype._finish=function(tail,length){var tmp,lo,hi,i2=length;tail[i2>>2]|=128<<(i2%4<<3);if(i2>55){md5cycle(this._hash,tail);for(i2=0;i2<16;i2+=1)tail[i2]=0}tmp=(tmp=8*this._length).toString(16).match(/(.*?)(.{0,8})$/);lo=parseInt(tmp[2],16);hi=parseInt(tmp[1],16)||0;tail[14]=lo;tail[15]=hi;md5cycle(this._hash,tail)};SparkMD5.hash=function(str,raw){return SparkMD5.hashBinary(toUtf82(str),raw)};SparkMD5.hashBinary=function(content,raw){var ret=hex(md51(content));return raw?hexToBinaryString(ret):ret};SparkMD5.ArrayBuffer=function(){this.reset()};SparkMD5.ArrayBuffer.prototype.append=function(arr){var i2,buff=function concatenateArrayBuffers(first,second,returnUInt8Array){var result=new Uint8Array(first.byteLength+second.byteLength);result.set(new Uint8Array(first));result.set(new Uint8Array(second),first.byteLength);return returnUInt8Array?result:result.buffer}(this._buff.buffer,arr,!0),length=buff.length;this._length+=arr.byteLength;for(i2=64;i2<=length;i2+=64)md5cycle(this._hash,md5blk_array(buff.subarray(i2-64,i2)));this._buff=i2-64<length?new Uint8Array(buff.buffer.slice(i2-64)):new Uint8Array(0);return this};SparkMD5.ArrayBuffer.prototype.end=function(raw){var i2,ret,buff=this._buff,length=buff.length,tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(i2=0;i2<length;i2+=1)tail[i2>>2]|=buff[i2]<<(i2%4<<3);this._finish(tail,length);ret=hex(this._hash);raw&&(ret=hexToBinaryString(ret));this.reset();return ret};SparkMD5.ArrayBuffer.prototype.reset=function(){this._buff=new Uint8Array(0);this._length=0;this._hash=[1732584193,-271733879,-1732584194,271733878];return this};SparkMD5.ArrayBuffer.prototype.getState=function(){var state2=SparkMD5.prototype.getState.call(this);state2.buff=function arrayBuffer2Utf8Str(buff){return String.fromCharCode.apply(null,new Uint8Array(buff))}(state2.buff);return state2};SparkMD5.ArrayBuffer.prototype.setState=function(state2){state2.buff=function utf8Str2ArrayBuffer(str,returnUInt8Array){var i2,length=str.length,buff=new ArrayBuffer(length),arr=new Uint8Array(buff);for(i2=0;i2<length;i2+=1)arr[i2]=str.charCodeAt(i2);return returnUInt8Array?arr:buff}(state2.buff,!0);return SparkMD5.prototype.setState.call(this,state2)};SparkMD5.ArrayBuffer.prototype.destroy=SparkMD5.prototype.destroy;SparkMD5.ArrayBuffer.prototype._finish=SparkMD5.prototype._finish;SparkMD5.ArrayBuffer.hash=function(arr,raw){var hash3=function md51_array(a2){var i2,length,tail,tmp,lo,hi,n3=a2.length,state2=[1732584193,-271733879,-1732584194,271733878];for(i2=64;i2<=n3;i2+=64)md5cycle(state2,md5blk_array(a2.subarray(i2-64,i2)));length=(a2=i2-64<n3?a2.subarray(i2-64):new Uint8Array(0)).length;tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(i2=0;i2<length;i2+=1)tail[i2>>2]|=a2[i2]<<(i2%4<<3);tail[i2>>2]|=128<<(i2%4<<3);if(i2>55){md5cycle(state2,tail);for(i2=0;i2<16;i2+=1)tail[i2]=0}tmp=(tmp=8*n3).toString(16).match(/(.*?)(.{0,8})$/);lo=parseInt(tmp[2],16);hi=parseInt(tmp[1],16)||0;tail[14]=lo;tail[15]=hi;md5cycle(state2,tail);return state2}(new Uint8Array(arr)),ret=hex(hash3);return raw?hexToBinaryString(ret):ret};return SparkMD5}))}}),require_vuvuzela=__commonJS({"node_modules/vuvuzela/index.js"(exports){"use strict";function pop3(obj,stack2,metaStack){var element2,lastElementIndex,lastMetaElement=metaStack[metaStack.length-1];if(obj===lastMetaElement.element){metaStack.pop();lastMetaElement=metaStack[metaStack.length-1]}element2=lastMetaElement.element;lastElementIndex=lastMetaElement.index;Array.isArray(element2)?element2.push(obj):lastElementIndex===stack2.length-2?element2[stack2.pop()]=obj:stack2.push(obj)}exports.stringify=function stringify4(input){var res2,next2,obj,val2,i2,arrayPrefix,keys3,k2,key2,value,objPrefix,queue2=[];queue2.push({obj:input});res2="";for(;next2=queue2.pop();){obj=next2.obj;res2+=next2.prefix||"";if(val2=next2.val||"")res2+=val2;else if("object"!=typeof obj)res2+=void 0===obj?null:JSON.stringify(obj);else if(null===obj)res2+="null";else if(Array.isArray(obj)){queue2.push({val:"]"});for(i2=obj.length-1;i2>=0;i2--){arrayPrefix=0===i2?"":",";queue2.push({obj:obj[i2],prefix:arrayPrefix})}queue2.push({val:"["})}else{keys3=[];for(k2 in obj)obj.hasOwnProperty(k2)&&keys3.push(k2);queue2.push({val:"}"});for(i2=keys3.length-1;i2>=0;i2--){value=obj[key2=keys3[i2]];objPrefix=i2>0?",":"";objPrefix+=JSON.stringify(key2)+":";queue2.push({obj:value,prefix:objPrefix})}queue2.push({val:"{"})}}return res2};exports.parse=function(str){for(var collationIndex2,parsedNum,numChar,parsedString,lastCh,numConsecutiveSlashes,ch4,arrayElement,objElement,stack2=[],metaStack=[],i2=0;;)if("}"!==(collationIndex2=str[i2++])&&"]"!==collationIndex2&&void 0!==collationIndex2)switch(collationIndex2){case" ":case"\t":case"\n":case":":case",":break;case"n":i2+=3;pop3(null,stack2,metaStack);break;case"t":i2+=3;pop3(!0,stack2,metaStack);break;case"f":i2+=4;pop3(!1,stack2,metaStack);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"-":parsedNum="";i2--;for(;;){numChar=str[i2++];if(!/[\d\.\-e\+]/.test(numChar)){i2--;break}parsedNum+=numChar}pop3(parseFloat(parsedNum),stack2,metaStack);break;case'"':parsedString="";lastCh=void 0;numConsecutiveSlashes=0;for(;'"'!==(ch4=str[i2++])||"\\"===lastCh&&numConsecutiveSlashes%2==1;){parsedString+=ch4;"\\"===(lastCh=ch4)?numConsecutiveSlashes++:numConsecutiveSlashes=0}pop3(JSON.parse('"'+parsedString+'"'),stack2,metaStack);break;case"[":arrayElement={element:[],index:stack2.length};stack2.push(arrayElement.element);metaStack.push(arrayElement);break;case"{":objElement={element:{},index:stack2.length};stack2.push(objElement.element);metaStack.push(objElement);break;default:throw new Error("unexpectedly reached end of input: "+collationIndex2)}else{if(1===stack2.length)return stack2.pop();pop3(stack2.pop(),stack2,metaStack)}}}}),require_pouchdb_wrappers=__commonJS({"node_modules/pouchdb-wrappers/index.js"(exports,module2){"use strict";function replacementMethod(base,method){return function(...args){function doMethod(){let callback=null;const minArgs="query"===method?1:0;args.length>minArgs&&"function"==typeof args[args.length-1]&&(callback=args.pop());let prev=base._originals[method].bind(base);for(const handler of base._handlers[method])prev=handler.bind(base,prev);const result=prev(...args);result.then&&callback&&function nodify(promise,callback){promise.then(((...args)=>{callback(null,...args)})).catch((err2=>{callback(err2)}))}(result,callback);return result}return"changes"!==method&&base.taskqueue&&!base.taskqueue.isReady?new Promise(((resolve,reject)=>{base.taskqueue.addTask((error=>{error?reject(error):resolve()}))})).then(doMethod):doMethod()}}var toExport={install:function installWrappers(base,handlers2={}){if(!base._originals||!base._handlers){base._originals={};base._handlers={}}for(const[method,handler]of Object.entries(handlers2)){if(!(method in base))throw new Error(`Method '${method}' does not exist on given base, so it cannot be wrapped.`);method in base._originals||(base._originals[method]=base[method]);if(method in base._handlers)base._handlers[method].unshift(handler);else{base._handlers[method]=[handler];base[method]=replacementMethod(base,method)}}},uninstall:function uninstallWrappers(base,handlers2){if(!base._originals||!base._handlers)throw new Error("No wrapper methods installed, so no methods can be uninstalled.");for(const[method,handler]of Object.entries(handlers2)){const errorMessage=`Wrapper method for '${method}' not installed: ${handler.toString()}`;if(!(method in base._handlers))throw new Error(errorMessage);const i2=base._handlers[method].indexOf(handler);if(-1===i2)throw new Error(errorMessage);base._handlers[method].splice(i2,1)}}};try{module2.exports=toExport}catch(e3){}try{window.PouchDBWrappers=toExport}catch(e3){}}}),require_transform_pouch=__commonJS({"node_modules/transform-pouch/index.js"(exports,module2){"use strict";function isntInternalKey(key2){return"_"!==key2[0]}function isUntransformable(doc){return!("string"!=typeof doc._id||!/^_local/.test(doc._id))||!!doc._deleted&&0===Object.keys(doc).filter(isntInternalKey).length}function transform2(config){const incoming=function(doc){return!isUntransformable(doc)&&config.incoming?config.incoming(doc):doc},outgoing=function(doc){return!isUntransformable(doc)&&config.outgoing?config.outgoing(doc):doc},handlers2={async get(orig,...args){const response=await orig(...args);if(Array.isArray(response)){await Promise.all(response.map((async row=>{row.ok&&(row.ok=await outgoing(row.ok))})));return response}return outgoing(response)},async bulkDocs(orig,docs,...args){docs.docs?docs.docs=await Promise.all(docs.docs.map(incoming)):docs=await Promise.all(docs.map(incoming));return orig(docs,...args)},async allDocs(orig,...args){const response=await orig(...args);await Promise.all(response.rows.map((async row=>{row.doc&&(row.doc=await outgoing(row.doc))})));return response},async bulkGet(orig,...args){const mapDoc=async doc=>doc.ok?{ok:await outgoing(doc.ok)}:doc;let{results,...res2}=await orig(...args);results=await Promise.all(results.map((async result=>{const{id,docs}=result;return id&&docs&&Array.isArray(docs)?{id,docs:await Promise.all(docs.map(mapDoc))}:result})));return{results,...res2}},changes(orig,...args){async function modifyChange(change){if(change.doc){change.doc=await outgoing(change.doc);return change}return change}async function modifyChanges(res2){if(res2.results){res2.results=await Promise.all(res2.results.map(modifyChange));return res2}return res2}const changes3=orig(...args),{on:origOn,then:origThen}=changes3;return Object.assign(changes3,{on(event2,listener){const origListener=listener;"change"===event2?listener=async change=>{origListener(await modifyChange(change))}:"complete"===event2&&(listener=async res2=>{origListener(await modifyChanges(res2))});return origOn.call(changes3,event2,listener)},then:(resolve,reject)=>origThen.call(changes3,modifyChanges).then(resolve,reject)})}};if("http"===this.type()){handlers2.put=async function(orig,doc,...args){return orig(doc=await incoming(doc),...args)};handlers2.query=async function(orig,...args){const response=await orig(...args);await Promise.all(response.rows.map((async row=>{row.doc&&(row.doc=await outgoing(row.doc))})));return response}}wrappers.install(this,handlers2)}var wrappers=require_pouchdb_wrappers();module2.exports={transform:transform2,filter:transform2};"undefined"!=typeof window&&window.PouchDB&&window.PouchDB.plugin(exports)}}),main_exports={};
|
||
/*! Bundled license information:
|
||
|
||
@noble/hashes/esm/utils.js:
|
||
(*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
|
||
|
||
@noble/curves/esm/abstract/utils.js:
|
||
(*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
|
||
|
||
@noble/curves/esm/abstract/modular.js:
|
||
(*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
|
||
|
||
@noble/curves/esm/abstract/curve.js:
|
||
(*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
|
||
|
||
@noble/curves/esm/abstract/weierstrass.js:
|
||
(*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
|
||
|
||
@noble/curves/esm/_shortw_utils.js:
|
||
(*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
|
||
|
||
@noble/curves/esm/secp256k1.js:
|
||
(*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
|
||
|
||
uint8-util/util.js:
|
||
(* Common package for dealing with hex/string/uint8 conversions (and sha1 hashing)
|
||
*
|
||
* @author Jimmy Wärting <jimmy@warting.se> (https://jimmy.warting.se/opensource)
|
||
* @license MIT
|
||
*)
|
||
|
||
@thaunknown/simple-peer/lite.js:
|
||
(*! simple-peer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)
|
||
|
||
@thaunknown/simple-peer/index.js:
|
||
(*! simple-peer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)
|
||
*/__export(main_exports,{default:()=>ObsidianLiveSyncPlugin});module.exports=__toCommonJS(main_exports);LEVEL_INFO=LOG_LEVEL_INFO=32;LOG_LEVEL_NOTICE=64;LOG_LEVEL_VERBOSE=16;defaultLoggerEnv_minLogLevel=LOG_LEVEL_INFO;_logger=function defaultLogger2(message,level=LEVEL_INFO,key2){if(level<defaultLoggerEnv_minLogLevel)return;const newMessage=`${(new Date).toLocaleString()}\t${level}\t${"string"==typeof message?message:message instanceof Error?`${message.name}:${message.message}`:JSON.stringify(message,null,2)}`;1&level?console.debug(newMessage):4&level?console.warn(newMessage):8&level?console.error(newMessage):2&level?console.info(newMessage):console.log(newMessage);message instanceof Error&&console.dir(message.stack)};RESULT_TIMED_OUT=Symbol("timed out");Symbol("NotFound");CANCELLED=Symbol("cancelled");AUTO_MERGED=Symbol("auto_merged");NOT_CONFLICTED=Symbol("not_conflicted");MISSING_OR_ERROR=Symbol("missing_or_error");LEAVE_TO_SUBSEQUENT=Symbol("leave_to_subsequent_proc");Symbol("infinity");MILESTONE_DOCID="_local/obsydian_livesync_milestone";MODE_SELECTIVE=0;MODE_AUTOMATIC=1;MODE_PAUSED=2;MODE_SHINY=3;REMOTE_COUCHDB="";REMOTE_MINIO="MINIO";REMOTE_P2P="ONLY_P2P";AutoAccepting=(AutoAccepting2=>{AutoAccepting2[AutoAccepting2.NONE=0]="NONE";AutoAccepting2[AutoAccepting2.ALL=1]="ALL";return AutoAccepting2})(AutoAccepting||{});P2P_DEFAULT_SETTINGS={P2P_Enabled:!1,P2P_AutoAccepting:0,P2P_AppID:"self-hosted-livesync",P2P_roomID:"",P2P_passphrase:"",P2P_relays:"wss://exp-relay.vrtmrz.net/",P2P_AutoBroadcast:!1,P2P_AutoStart:!1,P2P_AutoSyncPeers:"",P2P_AutoWatchPeers:"",P2P_SyncOnReplication:"",P2P_RebuildFrom:""};DEFAULT_SETTINGS={remoteType:"",useCustomRequestHandler:!1,couchDB_URI:"",couchDB_USER:"",couchDB_PASSWORD:"",couchDB_DBNAME:"",liveSync:!1,syncOnSave:!1,syncOnStart:!1,savingDelay:200,lessInformationInLog:!1,gcDelay:300,versionUpFlash:"",minimumChunkSize:20,longLineThreshold:250,showVerboseLog:!1,suspendFileWatching:!1,trashInsteadDelete:!0,periodicReplication:!1,periodicReplicationInterval:60,syncOnFileOpen:!1,encrypt:!1,passphrase:"",usePathObfuscation:!1,doNotDeleteFolder:!1,resolveConflictsByNewerFile:!1,batchSave:!1,batchSaveMinimumDelay:5,batchSaveMaximumDelay:60,deviceAndVaultName:"",usePluginSettings:!1,showOwnPlugins:!1,showStatusOnEditor:!0,showStatusOnStatusbar:!0,showOnlyIconsOnEditor:!1,usePluginSync:!1,autoSweepPlugins:!1,autoSweepPluginsPeriodic:!1,notifyPluginOrSettingUpdated:!1,checkIntegrityOnSave:!1,batch_size:25,batches_limit:25,useHistory:!1,disableRequestURI:!1,skipOlderFilesOnSync:!0,checkConflictOnlyOnOpen:!1,showMergeDialogOnlyOnActive:!1,syncInternalFiles:!1,syncInternalFilesBeforeReplication:!1,syncInternalFilesIgnorePatterns:"\\/node_modules\\/, \\/\\.git\\/, \\/obsidian-livesync\\/",syncInternalFilesInterval:60,additionalSuffixOfDatabaseName:"",ignoreVersionCheck:!1,lastReadUpdates:0,deleteMetadataOfDeletedFiles:!1,syncIgnoreRegEx:"",syncOnlyRegEx:"",customChunkSize:0,readChunksOnline:!0,watchInternalFileChanges:!0,automaticallyDeleteMetadataOfDeletedFiles:0,disableMarkdownAutoMerge:!1,writeDocumentsIfConflicted:!1,useDynamicIterationCount:!1,syncAfterMerge:!1,configPassphraseStore:"",encryptedPassphrase:"",encryptedCouchDBConnection:"",permitEmptyPassphrase:!1,useIndexedDBAdapter:!0,useTimeouts:!1,writeLogToTheFile:!1,doNotPaceReplication:!1,hashCacheMaxCount:300,hashCacheMaxAmount:50,concurrencyOfReadChunksOnline:40,minimumIntervalOfReadChunksOnline:50,hashAlg:"xxhash64",suspendParseReplicationResult:!1,doNotSuspendOnFetching:!1,useIgnoreFiles:!1,ignoreFiles:".gitignore",syncOnEditorSave:!1,pluginSyncExtendedSetting:{},syncMaxSizeInMB:50,settingSyncFile:"",writeCredentialsForSettingSync:!1,notifyAllSettingSyncFile:!1,isConfigured:void 0,settingVersion:10,enableCompression:!1,accessKey:"",bucket:"",endpoint:"",region:"auto",secretKey:"",useEden:!1,maxChunksInEden:10,maxTotalLengthInEden:1024,maxAgeInEden:10,disableCheckingConfigMismatch:!1,displayLanguage:"",enableChunkSplitterV2:!1,disableWorkerForGeneratingChunks:!1,processSmallFilesInUIThread:!1,notifyThresholdOfRemoteStorageSize:-1,usePluginSyncV2:!1,usePluginEtc:!1,handleFilenameCaseSensitive:void 0,doNotUseFixedRevisionForChunks:!0,showLongerLogInsideEditor:!1,sendChunksBulk:!1,sendChunksBulkMaxSize:1,useSegmenter:!1,useAdvancedMode:!1,usePowerUserMode:!1,useEdgeCaseMode:!1,enableDebugTools:!1,suppressNotifyHiddenFilesChange:!1,syncMinimumInterval:2e3,...P2P_DEFAULT_SETTINGS,doctorProcessedVersion:""};PREFERRED_SETTING_CLOUDANT={syncMaxSizeInMB:50,customChunkSize:0,sendChunksBulkMaxSize:1,concurrencyOfReadChunksOnline:100,minimumIntervalOfReadChunksOnline:333,doNotUseFixedRevisionForChunks:!0,useSegmenter:!0,usePluginSyncV2:!0,handleFilenameCaseSensitive:!1};PREFERRED_SETTING_SELF_HOSTED={...PREFERRED_SETTING_CLOUDANT,customChunkSize:50,sendChunksBulkMaxSize:1,concurrencyOfReadChunksOnline:30,minimumIntervalOfReadChunksOnline:25};PREFERRED_JOURNAL_SYNC={...PREFERRED_SETTING_CLOUDANT,customChunkSize:10,concurrencyOfReadChunksOnline:30,minimumIntervalOfReadChunksOnline:25};TweakValuesShouldMatchedTemplate={minimumChunkSize:20,longLineThreshold:250,encrypt:!1,usePathObfuscation:!1,enableCompression:!1,useEden:!1,customChunkSize:0,useDynamicIterationCount:!1,hashAlg:"xxhash64",enableChunkSplitterV2:!0,maxChunksInEden:10,maxTotalLengthInEden:1024,maxAgeInEden:10,usePluginSyncV2:!1,handleFilenameCaseSensitive:!1,doNotUseFixedRevisionForChunks:!0,useSegmenter:!1};IncompatibleChanges=["encrypt","usePathObfuscation","useDynamicIterationCount","handleFilenameCaseSensitive"];CompatibleButLossyChanges=["hashAlg"];IncompatibleChangesInSpecificPattern=[{key:"doNotUseFixedRevisionForChunks",from:!0,to:!1,isRecommendation:!0},{key:"doNotUseFixedRevisionForChunks",to:!0,isRecommendation:!1}];TweakValuesDefault={usePluginSyncV2:!1};configurationNames={minimumChunkSize:{name:"Minimum Chunk Size (Not Configurable from the UI Now)."},longLineThreshold:{name:"Longest chunk line threshold value (Not Configurable from the UI Now)."},encrypt:{name:"End-to-End Encryption",desc:"Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended."},usePathObfuscation:{name:"Path Obfuscation"},enableCompression:{name:"Data Compression",status:"EXPERIMENTAL"},useEden:{name:"Incubate Chunks in Document",desc:"If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.",status:"BETA"},customChunkSize:{name:"Enhance chunk size"},useDynamicIterationCount:{name:"Use dynamic iteration count",status:"EXPERIMENTAL"},hashAlg:{name:"The Hash algorithm for chunk IDs",status:"EXPERIMENTAL"},enableChunkSplitterV2:{name:"Use splitting-limit-capped chunk splitter",desc:"If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker."},maxChunksInEden:{name:"Maximum Incubating Chunks",desc:"The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks."},maxTotalLengthInEden:{name:"Maximum Incubating Chunk Size",desc:"The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks."},maxAgeInEden:{name:"Maximum Incubation Period",desc:"The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks."},usePluginSyncV2:{name:"Per-file-saved customization sync",desc:"If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions."},handleFilenameCaseSensitive:{name:"Handle files as Case-Sensitive",desc:"If this enabled, All files are handled as case-Sensitive (Previous behaviour)."},doNotUseFixedRevisionForChunks:{name:"Compute revisions for chunks (Previous behaviour)",desc:"If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)"},useSegmenter:{name:"Use Segmented-splitter",desc:"If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature."}};LEVEL_ADVANCED="ADVANCED";LEVEL_POWER_USER="POWER_USER";LEVEL_EDGE_CASE="EDGE_CASE";TweakValuesTemplate={useIgnoreFiles:!1,useCustomRequestHandler:!1,batch_size:25,batches_limit:25,useIndexedDBAdapter:!0,useTimeouts:!1,readChunksOnline:!0,hashCacheMaxCount:300,hashCacheMaxAmount:50,concurrencyOfReadChunksOnline:40,minimumIntervalOfReadChunksOnline:50,ignoreFiles:".gitignore",syncMaxSizeInMB:50,enableChunkSplitterV2:!0,usePluginSyncV2:!0,handleFilenameCaseSensitive:!1,doNotUseFixedRevisionForChunks:!1,...TweakValuesShouldMatchedTemplate};DEVICE_ID_PREFERRED="PREFERRED";PREFIXMD_LOGFILE="livesync_log_";PREFIXMD_LOGFILE_UC="LIVESYNC_LOG_";FLAGMD_REDFLAG="redflag.md";FLAGMD_REDFLAG2="redflag2.md";FLAGMD_REDFLAG2_HR="flag_rebuild.md";FLAGMD_REDFLAG3="redflag3.md";FLAGMD_REDFLAG3_HR="flag_fetch.md";SYNCINFO_ID="syncinfo";PREFIX_OBFUSCATED="f:";PREFIX_ENCRYPTED_CHUNK="h:+";import_obsidian=require("obsidian");import_obsidian2=require("obsidian");import_diff_match_patch=__toESM(require_diff_match_patch(),1);normalizePath=import_obsidian2.normalizePath;PSCHeader="ps:";ICHeaderLength=(ICHeader="i:").length;ICXHeader="ix:";configURIBase="obsidian://setuplivesync?settings=";LRUCache=class{constructor(maxCache,maxCacheLength,forwardOnly=!1){Object.defineProperty(this,"cache",{enumerable:!0,configurable:!0,writable:!0,value:new Map([])});Object.defineProperty(this,"revCache",{enumerable:!0,configurable:!0,writable:!0,value:new Map([])});Object.defineProperty(this,"maxCache",{enumerable:!0,configurable:!0,writable:!0,value:200});Object.defineProperty(this,"maxCachedLength",{enumerable:!0,configurable:!0,writable:!0,value:5e7});Object.defineProperty(this,"cachedLength",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"enableReversed",{enumerable:!0,configurable:!0,writable:!0,value:!0});this.maxCache=maxCache||200;this.maxCachedLength=1e6*(maxCacheLength||1);this.enableReversed=!forwardOnly;Logger(`Cache initialized ${this.maxCache} / ${this.maxCachedLength}`,LOG_LEVEL_VERBOSE)}clear(){this.cache.clear();this.revCache.clear()}has(key2){return this.cache.has(key2)}get(key2){const v2=this.cache.get(key2);if(v2){this.cache.delete(key2);this.cache.set(key2,v2);if(this.enableReversed){this.revCache.delete(v2);this.revCache.set(v2,key2)}}return v2}revGet(value){const key2=this.revCache.get(value);if(key2){this.cache.delete(key2);this.revCache.delete(value);this.cache.set(key2,value);this.revCache.set(value,key2)}return key2}set(key2,value){this.cache.set(key2,value);this.enableReversed&&this.revCache.set(value,key2);this.cachedLength+=`${value}`.length;if(this.cache.size>this.maxCache||this.cachedLength>this.maxCachedLength)for(const[key3,value2]of this.cache){this.cache.delete(key3);this.enableReversed&&this.revCache.delete(value2);this.cachedLength-=`${value2}`.length;if(this.cache.size<=this.maxCache&&this.cachedLength<=this.maxCachedLength)break}}};assertValidPattern=pattern=>{if("string"!=typeof pattern)throw new TypeError("invalid pattern");if(pattern.length>65536)throw new TypeError("pattern is too long")};posixClasses={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]};braceEscape=s2=>s2.replace(/[[\]\\-]/g,"\\$&");regexpEscape=s2=>s2.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");rangesToString=ranges=>ranges.join("");parseClass=(glob,position)=>{const pos=position;if("["!==glob.charAt(pos))throw new Error("not in a brace expression");const ranges=[],negs=[];let i2=pos+1,sawStart=!1,uflag=!1,escaping=!1,negate3=!1,endPos=pos,rangeStart="";WHILE:for(;i2<glob.length;){const c3=glob.charAt(i2);if("!"!==c3&&"^"!==c3||i2!==pos+1){if("]"===c3&&sawStart&&!escaping){endPos=i2+1;break}sawStart=!0;if("\\"!==c3||escaping){if("["===c3&&!escaping)for(const[cls,[unip,u2,neg]]of Object.entries(posixClasses))if(glob.startsWith(cls,i2)){if(rangeStart)return["$.",!1,glob.length-pos,!0];i2+=cls.length;neg?negs.push(unip):ranges.push(unip);uflag=uflag||u2;continue WHILE}escaping=!1;if(rangeStart){c3>rangeStart?ranges.push(braceEscape(rangeStart)+"-"+braceEscape(c3)):c3===rangeStart&&ranges.push(braceEscape(c3));rangeStart="";i2++}else if(glob.startsWith("-]",i2+1)){ranges.push(braceEscape(c3+"-"));i2+=2}else if(glob.startsWith("-",i2+1)){rangeStart=c3;i2+=2}else{ranges.push(braceEscape(c3));i2++}}else{escaping=!0;i2++}}else{negate3=!0;i2++}}if(endPos<i2)return["",!1,0,!1];if(!ranges.length&&!negs.length)return["$.",!1,glob.length-pos,!0];if(0===negs.length&&1===ranges.length&&/^\\?.$/.test(ranges[0])&&!negate3){const r4=2===ranges[0].length?ranges[0].slice(-1):ranges[0];return[regexpEscape(r4),!1,endPos-pos,!1]}const sranges="["+(negate3?"^":"")+rangesToString(ranges)+"]",snegs="["+(negate3?"":"^")+rangesToString(negs)+"]";return[ranges.length&&negs.length?"("+sranges+"|"+snegs+")":ranges.length?sranges:snegs,uflag,endPos-pos,!0]};unescape2=(s2,{windowsPathsNoEscape=!1}={})=>windowsPathsNoEscape?s2.replace(/\[([^\/\\])\]/g,"$1"):s2.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");types=new Set(["!","?","+","*","@"]);isExtglobType=c3=>types.has(c3);addPatternStart=new Set(["[","."]);justDots=new Set(["..","."]);reSpecials=new Set("().*{}+?[]^$\\!");regExpEscape=s2=>s2.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");_AST=class _AST{constructor(type,parent,options={}){__privateAdd(this,_AST_instances);__publicField(this,"type");__privateAdd(this,_root);__privateAdd(this,_hasMagic);__privateAdd(this,_uflag,!1);__privateAdd(this,_parts,[]);__privateAdd(this,_parent);__privateAdd(this,_parentIndex);__privateAdd(this,_negs);__privateAdd(this,_filledNegs,!1);__privateAdd(this,_options);__privateAdd(this,_toString);__privateAdd(this,_emptyExt,!1);this.type=type;type&&__privateSet(this,_hasMagic,!0);__privateSet(this,_parent,parent);__privateSet(this,_root,__privateGet(this,_parent)?__privateGet(__privateGet(this,_parent),_root):this);__privateSet(this,_options,__privateGet(this,_root)===this?options:__privateGet(__privateGet(this,_root),_options));__privateSet(this,_negs,__privateGet(this,_root)===this?[]:__privateGet(__privateGet(this,_root),_negs));"!"!==type||__privateGet(__privateGet(this,_root),_filledNegs)||__privateGet(this,_negs).push(this);__privateSet(this,_parentIndex,__privateGet(this,_parent)?__privateGet(__privateGet(this,_parent),_parts).length:0)}get hasMagic(){if(void 0!==__privateGet(this,_hasMagic))return __privateGet(this,_hasMagic);for(const p4 of __privateGet(this,_parts))if("string"!=typeof p4&&(p4.type||p4.hasMagic))return __privateSet(this,_hasMagic,!0);return __privateGet(this,_hasMagic)}toString(){return void 0!==__privateGet(this,_toString)?__privateGet(this,_toString):this.type?__privateSet(this,_toString,this.type+"("+__privateGet(this,_parts).map((p4=>String(p4))).join("|")+")"):__privateSet(this,_toString,__privateGet(this,_parts).map((p4=>String(p4))).join(""))}push(...parts){for(const p4 of parts)if(""!==p4){if("string"!=typeof p4&&!(p4 instanceof _AST&&__privateGet(p4,_parent)===this))throw new Error("invalid part: "+p4);__privateGet(this,_parts).push(p4)}}toJSON(){var _a7;const ret=null===this.type?__privateGet(this,_parts).slice().map((p4=>"string"==typeof p4?p4:p4.toJSON())):[this.type,...__privateGet(this,_parts).map((p4=>p4.toJSON()))];this.isStart()&&!this.type&&ret.unshift([]);this.isEnd()&&(this===__privateGet(this,_root)||__privateGet(__privateGet(this,_root),_filledNegs)&&"!"===(null==(_a7=__privateGet(this,_parent))?void 0:_a7.type))&&ret.push({});return ret}isStart(){var _a7;if(__privateGet(this,_root)===this)return!0;if(!(null==(_a7=__privateGet(this,_parent))?void 0:_a7.isStart()))return!1;if(0===__privateGet(this,_parentIndex))return!0;const p4=__privateGet(this,_parent);for(let i2=0;i2<__privateGet(this,_parentIndex);i2++){const pp=__privateGet(p4,_parts)[i2];if(!(pp instanceof _AST&&"!"===pp.type))return!1}return!0}isEnd(){var _a7,_b3,_c2;if(__privateGet(this,_root)===this)return!0;if("!"===(null==(_a7=__privateGet(this,_parent))?void 0:_a7.type))return!0;if(!(null==(_b3=__privateGet(this,_parent))?void 0:_b3.isEnd()))return!1;if(!this.type)return null==(_c2=__privateGet(this,_parent))?void 0:_c2.isEnd();const pl=__privateGet(this,_parent)?__privateGet(__privateGet(this,_parent),_parts).length:0;return __privateGet(this,_parentIndex)===pl-1}copyIn(part){"string"==typeof part?this.push(part):this.push(part.clone(this))}clone(parent){const c3=new _AST(this.type,parent);for(const p4 of __privateGet(this,_parts))c3.copyIn(p4);return c3}static fromGlob(pattern,options={}){var _a7;const ast=new _AST(null,void 0,options);__privateMethod(_a7=_AST,_AST_static,parseAST_fn).call(_a7,pattern,ast,0,options);return ast}toMMPattern(){if(this!==__privateGet(this,_root))return __privateGet(this,_root).toMMPattern();const glob=this.toString(),[re,body,hasMagic,uflag]=this.toRegExpSource();if(!(hasMagic||__privateGet(this,_hasMagic)||__privateGet(this,_options).nocase&&!__privateGet(this,_options).nocaseMagicOnly&&glob.toUpperCase()!==glob.toLowerCase()))return body;const flags=(__privateGet(this,_options).nocase?"i":"")+(uflag?"u":"");return Object.assign(new RegExp(`^${re}$`,flags),{_src:re,_glob:glob})}get options(){return __privateGet(this,_options)}toRegExpSource(allowDot){var _a7;const dot=null!=allowDot?allowDot:!!__privateGet(this,_options).dot;__privateGet(this,_root)===this&&__privateMethod(this,_AST_instances,fillNegs_fn).call(this);if(!this.type){const noEmpty=this.isStart()&&this.isEnd(),src=__privateGet(this,_parts).map((p4=>{var _a8;const[re,_,hasMagic,uflag]="string"==typeof p4?__privateMethod(_a8=_AST,_AST_static,parseGlob_fn).call(_a8,p4,__privateGet(this,_hasMagic),noEmpty):p4.toRegExpSource(allowDot);__privateSet(this,_hasMagic,__privateGet(this,_hasMagic)||hasMagic);__privateSet(this,_uflag,__privateGet(this,_uflag)||uflag);return re})).join("");let start2="";if(this.isStart()&&"string"==typeof __privateGet(this,_parts)[0]&&(1!==__privateGet(this,_parts).length||!justDots.has(__privateGet(this,_parts)[0]))){const aps=addPatternStart,needNoTrav=dot&&aps.has(src.charAt(0))||src.startsWith("\\.")&&aps.has(src.charAt(2))||src.startsWith("\\.\\.")&&aps.has(src.charAt(4)),needNoDot=!dot&&!allowDot&&aps.has(src.charAt(0));start2=needNoTrav?"(?!(?:^|/)\\.\\.?(?:$|/))":needNoDot?"(?!\\.)":""}let end="";this.isEnd()&&__privateGet(__privateGet(this,_root),_filledNegs)&&"!"===(null==(_a7=__privateGet(this,_parent))?void 0:_a7.type)&&(end="(?:$|\\/)");return[start2+src+end,unescape2(src),__privateSet(this,_hasMagic,!!__privateGet(this,_hasMagic)),__privateGet(this,_uflag)]}const repeated="*"===this.type||"+"===this.type,start="!"===this.type?"(?:(?!(?:":"(?:";let body=__privateMethod(this,_AST_instances,partsToRegExp_fn).call(this,dot);if(this.isStart()&&this.isEnd()&&!body&&"!"!==this.type){const s2=this.toString();__privateSet(this,_parts,[s2]);this.type=null;__privateSet(this,_hasMagic,void 0);return[s2,unescape2(this.toString()),!1,!1]}let bodyDotAllowed=!repeated||allowDot||dot?"":__privateMethod(this,_AST_instances,partsToRegExp_fn).call(this,!0);bodyDotAllowed===body&&(bodyDotAllowed="");bodyDotAllowed&&(body=`(?:${body})(?:${bodyDotAllowed})*?`);let final="";final="!"===this.type&&__privateGet(this,_emptyExt)?(this.isStart()&&!dot?"(?!\\.)":"")+"[^/]+?":start+body+("!"===this.type?"))"+(!this.isStart()||dot||allowDot?"":"(?!\\.)")+"[^/]*?)":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&bodyDotAllowed?")":"*"===this.type&&bodyDotAllowed?")?":`)${this.type}`);return[final,unescape2(body),__privateSet(this,_hasMagic,!!__privateGet(this,_hasMagic)),__privateGet(this,_uflag)]}};_root=new WeakMap;_hasMagic=new WeakMap;_uflag=new WeakMap;_parts=new WeakMap;_parent=new WeakMap;_parentIndex=new WeakMap;_negs=new WeakMap;_filledNegs=new WeakMap;_options=new WeakMap;_toString=new WeakMap;_emptyExt=new WeakMap;_AST_instances=new WeakSet;fillNegs_fn=function(){if(this!==__privateGet(this,_root))throw new Error("should only call on root");if(__privateGet(this,_filledNegs))return this;this.toString();__privateSet(this,_filledNegs,!0);let n3;for(;n3=__privateGet(this,_negs).pop();){if("!"!==n3.type)continue;let p4=n3,pp=__privateGet(p4,_parent);for(;pp;){for(let i2=__privateGet(p4,_parentIndex)+1;!pp.type&&i2<__privateGet(pp,_parts).length;i2++)for(const part of __privateGet(n3,_parts)){if("string"==typeof part)throw new Error("string part in extglob AST??");part.copyIn(__privateGet(pp,_parts)[i2])}p4=pp;pp=__privateGet(p4,_parent)}}return this};_AST_static=new WeakSet;parseAST_fn=function(str,ast,pos,opt){var _a7,_b3;let escaping=!1,inBrace=!1,braceStart=-1,braceNeg=!1;if(null===ast.type){let i3=pos,acc2="";for(;i3<str.length;){const c3=str.charAt(i3++);if(escaping||"\\"===c3){escaping=!escaping;acc2+=c3}else if(inBrace){i3===braceStart+1?"^"!==c3&&"!"!==c3||(braceNeg=!0):"]"!==c3||i3===braceStart+2&&braceNeg||(inBrace=!1);acc2+=c3}else if("["!==c3)if(opt.noext||!isExtglobType(c3)||"("!==str.charAt(i3))acc2+=c3;else{ast.push(acc2);acc2="";const ext2=new _AST(c3,ast);i3=__privateMethod(_a7=_AST,_AST_static,parseAST_fn).call(_a7,str,ext2,i3,opt);ast.push(ext2)}else{inBrace=!0;braceStart=i3;braceNeg=!1;acc2+=c3}}ast.push(acc2);return i3}let i2=pos+1,part=new _AST(null,ast);const parts=[];let acc="";for(;i2<str.length;){const c3=str.charAt(i2++);if(escaping||"\\"===c3){escaping=!escaping;acc+=c3}else if(inBrace){i2===braceStart+1?"^"!==c3&&"!"!==c3||(braceNeg=!0):"]"!==c3||i2===braceStart+2&&braceNeg||(inBrace=!1);acc+=c3}else if("["!==c3)if(isExtglobType(c3)&&"("===str.charAt(i2)){part.push(acc);acc="";const ext2=new _AST(c3,part);part.push(ext2);i2=__privateMethod(_b3=_AST,_AST_static,parseAST_fn).call(_b3,str,ext2,i2,opt)}else if("|"!==c3){if(")"===c3){""===acc&&0===__privateGet(ast,_parts).length&&__privateSet(ast,_emptyExt,!0);part.push(acc);acc="";ast.push(...parts,part);return i2}acc+=c3}else{part.push(acc);acc="";parts.push(part);part=new _AST(null,ast)}else{inBrace=!0;braceStart=i2;braceNeg=!1;acc+=c3}}ast.type=null;__privateSet(ast,_hasMagic,void 0);__privateSet(ast,_parts,[str.substring(pos-1)]);return i2};partsToRegExp_fn=function(dot){return __privateGet(this,_parts).map((p4=>{if("string"==typeof p4)throw new Error("string type in extglob ast??");const[re,_,_hasMagic2,uflag]=p4.toRegExpSource(dot);__privateSet(this,_uflag,__privateGet(this,_uflag)||uflag);return re})).filter((p4=>!(this.isStart()&&this.isEnd()&&!p4))).join("|")};parseGlob_fn=function(glob,hasMagic,noEmpty=!1){let escaping=!1,re="",uflag=!1;for(let i2=0;i2<glob.length;i2++){const c3=glob.charAt(i2);if(escaping){escaping=!1;re+=(reSpecials.has(c3)?"\\":"")+c3}else if("\\"!==c3){if("["===c3){const[src,needUflag,consumed,magic]=parseClass(glob,i2);if(consumed){re+=src;uflag=uflag||needUflag;i2+=consumed-1;hasMagic=hasMagic||magic;continue}}if("*"!==c3)if("?"!==c3)re+=regExpEscape(c3);else{re+="[^/]";hasMagic=!0}else{re+=noEmpty&&"*"===glob?"[^/]+?":"[^/]*?";hasMagic=!0}}else i2===glob.length-1?re+="\\\\":escaping=!0}return[re,unescape2(glob),!!hasMagic,uflag]};__privateAdd(_AST,_AST_static);AST=_AST;escape=(s2,{windowsPathsNoEscape=!1}={})=>windowsPathsNoEscape?s2.replace(/[?*()[\]]/g,"[$&]"):s2.replace(/[?*()[\]\\]/g,"\\$&");import_brace_expansion=__toESM(require_brace_expansion(),1);minimatch=(p4,pattern,options={})=>{assertValidPattern(pattern);return!(!options.nocomment&&"#"===pattern.charAt(0))&&new Minimatch(pattern,options).match(p4)};starDotExtRE=/^\*+([^+@!?\*\[\(]*)$/;starDotExtTest=ext2=>f4=>!f4.startsWith(".")&&f4.endsWith(ext2);starDotExtTestDot=ext2=>f4=>f4.endsWith(ext2);starDotExtTestNocase=ext2=>{ext2=ext2.toLowerCase();return f4=>!f4.startsWith(".")&&f4.toLowerCase().endsWith(ext2)};starDotExtTestNocaseDot=ext2=>{ext2=ext2.toLowerCase();return f4=>f4.toLowerCase().endsWith(ext2)};starDotStarRE=/^\*+\.\*+$/;starDotStarTest=f4=>!f4.startsWith(".")&&f4.includes(".");starDotStarTestDot=f4=>"."!==f4&&".."!==f4&&f4.includes(".");dotStarRE=/^\.\*+$/;dotStarTest=f4=>"."!==f4&&".."!==f4&&f4.startsWith(".");starRE=/^\*+$/;starTest=f4=>0!==f4.length&&!f4.startsWith(".");starTestDot=f4=>0!==f4.length&&"."!==f4&&".."!==f4;qmarksRE=/^\?+([^+@!?\*\[\(]*)?$/;qmarksTestNocase=([$0,ext2=""])=>{const noext=qmarksTestNoExt([$0]);if(!ext2)return noext;ext2=ext2.toLowerCase();return f4=>noext(f4)&&f4.toLowerCase().endsWith(ext2)};qmarksTestNocaseDot=([$0,ext2=""])=>{const noext=qmarksTestNoExtDot([$0]);if(!ext2)return noext;ext2=ext2.toLowerCase();return f4=>noext(f4)&&f4.toLowerCase().endsWith(ext2)};qmarksTestDot=([$0,ext2=""])=>{const noext=qmarksTestNoExtDot([$0]);return ext2?f4=>noext(f4)&&f4.endsWith(ext2):noext};qmarksTest=([$0,ext2=""])=>{const noext=qmarksTestNoExt([$0]);return ext2?f4=>noext(f4)&&f4.endsWith(ext2):noext};qmarksTestNoExt=([$0])=>{const len=$0.length;return f4=>f4.length===len&&!f4.startsWith(".")};qmarksTestNoExtDot=([$0])=>{const len=$0.length;return f4=>f4.length===len&&"."!==f4&&".."!==f4};path_posix={sep:"/"};sep="win32"===(defaultPlatform="object"==typeof process&&process?"object"==typeof process.env&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix")?"\\":path_posix.sep;minimatch.sep=sep;GLOBSTAR=Symbol("globstar **");minimatch.GLOBSTAR=GLOBSTAR;filter=(pattern,options={})=>p4=>minimatch(p4,pattern,options);minimatch.filter=filter;ext=(a2,b3={})=>Object.assign({},a2,b3);defaults=def=>{if(!def||"object"!=typeof def||!Object.keys(def).length)return minimatch;const orig=minimatch;return Object.assign(((p4,pattern,options={})=>orig(p4,pattern,ext(def,options))),{Minimatch:class Minimatch extends orig.Minimatch{constructor(pattern,options={}){super(pattern,ext(def,options))}static defaults(options){return orig.defaults(ext(def,options)).Minimatch}},AST:class AST extends orig.AST{constructor(type,parent,options={}){super(type,parent,ext(def,options))}static fromGlob(pattern,options={}){return orig.AST.fromGlob(pattern,ext(def,options))}},unescape:(s2,options={})=>orig.unescape(s2,ext(def,options)),escape:(s2,options={})=>orig.escape(s2,ext(def,options)),filter:(pattern,options={})=>orig.filter(pattern,ext(def,options)),defaults:options=>orig.defaults(ext(def,options)),makeRe:(pattern,options={})=>orig.makeRe(pattern,ext(def,options)),braceExpand:(pattern,options={})=>orig.braceExpand(pattern,ext(def,options)),match:(list,pattern,options={})=>orig.match(list,pattern,ext(def,options)),sep:orig.sep,GLOBSTAR})};minimatch.defaults=defaults;braceExpand=(pattern,options={})=>{assertValidPattern(pattern);return options.nobrace||!/\{(?:(?!\{).)*\}/.test(pattern)?[pattern]:(0,import_brace_expansion.default)(pattern)};minimatch.braceExpand=braceExpand;makeRe=(pattern,options={})=>new Minimatch(pattern,options).makeRe();minimatch.makeRe=makeRe;match=(list,pattern,options={})=>{const mm=new Minimatch(pattern,options);list=list.filter((f4=>mm.match(f4)));mm.options.nonull&&!list.length&&list.push(pattern);return list};minimatch.match=match;globMagic=/[?*]|[+@!]\(.*?\)|\[|\]/;regExpEscape2=s2=>s2.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");Minimatch=class{constructor(pattern,options={}){__publicField(this,"options");__publicField(this,"set");__publicField(this,"pattern");__publicField(this,"windowsPathsNoEscape");__publicField(this,"nonegate");__publicField(this,"negate");__publicField(this,"comment");__publicField(this,"empty");__publicField(this,"preserveMultipleSlashes");__publicField(this,"partial");__publicField(this,"globSet");__publicField(this,"globParts");__publicField(this,"nocase");__publicField(this,"isWindows");__publicField(this,"platform");__publicField(this,"windowsNoMagicRoot");__publicField(this,"regexp");assertValidPattern(pattern);options=options||{};this.options=options;this.pattern=pattern;this.platform=options.platform||defaultPlatform;this.isWindows="win32"===this.platform;this.windowsPathsNoEscape=!!options.windowsPathsNoEscape||!1===options.allowWindowsEscape;this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/"));this.preserveMultipleSlashes=!!options.preserveMultipleSlashes;this.regexp=null;this.negate=!1;this.nonegate=!!options.nonegate;this.comment=!1;this.empty=!1;this.partial=!!options.partial;this.nocase=!!this.options.nocase;this.windowsNoMagicRoot=void 0!==options.windowsNoMagicRoot?options.windowsNoMagicRoot:!(!this.isWindows||!this.nocase);this.globSet=[];this.globParts=[];this.set=[];this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const pattern of this.set)for(const part of pattern)if("string"!=typeof part)return!0;return!1}debug(..._){}make(){const pattern=this.pattern,options=this.options;if(!options.nocomment&&"#"===pattern.charAt(0)){this.comment=!0;return}if(!pattern){this.empty=!0;return}this.parseNegate();this.globSet=[...new Set(this.braceExpand())];options.debug&&(this.debug=(...args)=>console.error(...args));this.debug(this.pattern,this.globSet);const rawGlobParts=this.globSet.map((s2=>this.slashSplit(s2)));this.globParts=this.preprocess(rawGlobParts);this.debug(this.pattern,this.globParts);let set2=this.globParts.map(((s2,_,__)=>{if(this.isWindows&&this.windowsNoMagicRoot){const isUNC=!(""!==s2[0]||""!==s2[1]||"?"!==s2[2]&&globMagic.test(s2[2])||globMagic.test(s2[3])),isDrive=/^[a-z]:/i.test(s2[0]);if(isUNC)return[...s2.slice(0,4),...s2.slice(4).map((ss=>this.parse(ss)))];if(isDrive)return[s2[0],...s2.slice(1).map((ss=>this.parse(ss)))]}return s2.map((ss=>this.parse(ss)))}));this.debug(this.pattern,set2);this.set=set2.filter((s2=>-1===s2.indexOf(!1)));if(this.isWindows)for(let i2=0;i2<this.set.length;i2++){const p4=this.set[i2];""===p4[0]&&""===p4[1]&&"?"===this.globParts[i2][2]&&"string"==typeof p4[3]&&/^[a-z]:$/i.test(p4[3])&&(p4[2]="?")}this.debug(this.pattern,this.set)}preprocess(globParts){if(this.options.noglobstar)for(let i2=0;i2<globParts.length;i2++)for(let j2=0;j2<globParts[i2].length;j2++)"**"===globParts[i2][j2]&&(globParts[i2][j2]="*");const{optimizationLevel=1}=this.options;if(optimizationLevel>=2){globParts=this.firstPhasePreProcess(globParts);globParts=this.secondPhasePreProcess(globParts)}else globParts=optimizationLevel>=1?this.levelOneOptimize(globParts):this.adjascentGlobstarOptimize(globParts);return globParts}adjascentGlobstarOptimize(globParts){return globParts.map((parts=>{let gs=-1;for(;-1!==(gs=parts.indexOf("**",gs+1));){let i2=gs;for(;"**"===parts[i2+1];)i2++;i2!==gs&&parts.splice(gs,i2-gs)}return parts}))}levelOneOptimize(globParts){return globParts.map((parts=>0===(parts=parts.reduce(((set2,part)=>{const prev=set2[set2.length-1];if("**"===part&&"**"===prev)return set2;if(".."===part&&prev&&".."!==prev&&"."!==prev&&"**"!==prev){set2.pop();return set2}set2.push(part);return set2}),[])).length?[""]:parts))}levelTwoFileOptimize(parts){Array.isArray(parts)||(parts=this.slashSplit(parts));let didSomething=!1;do{didSomething=!1;if(!this.preserveMultipleSlashes){for(let i2=1;i2<parts.length-1;i2++){const p4=parts[i2];if(!(1===i2&&""===p4&&""===parts[0]||"."!==p4&&""!==p4)){didSomething=!0;parts.splice(i2,1);i2--}}if("."===parts[0]&&2===parts.length&&("."===parts[1]||""===parts[1])){didSomething=!0;parts.pop()}}let dd=0;for(;-1!==(dd=parts.indexOf("..",dd+1));){const p4=parts[dd-1];if(p4&&"."!==p4&&".."!==p4&&"**"!==p4){didSomething=!0;parts.splice(dd-1,2);dd-=2}}}while(didSomething);return 0===parts.length?[""]:parts}firstPhasePreProcess(globParts){let didSomething=!1;do{didSomething=!1;for(let parts of globParts){let gs=-1;for(;-1!==(gs=parts.indexOf("**",gs+1));){let gss=gs;for(;"**"===parts[gss+1];)gss++;gss>gs&&parts.splice(gs+1,gss-gs);let next2=parts[gs+1];const p4=parts[gs+2],p22=parts[gs+3];if(".."!==next2)continue;if(!p4||"."===p4||".."===p4||!p22||"."===p22||".."===p22)continue;didSomething=!0;parts.splice(gs,1);const other=parts.slice(0);other[gs]="**";globParts.push(other);gs--}if(!this.preserveMultipleSlashes){for(let i2=1;i2<parts.length-1;i2++){const p4=parts[i2];if(!(1===i2&&""===p4&&""===parts[0]||"."!==p4&&""!==p4)){didSomething=!0;parts.splice(i2,1);i2--}}if("."===parts[0]&&2===parts.length&&("."===parts[1]||""===parts[1])){didSomething=!0;parts.pop()}}let dd=0;for(;-1!==(dd=parts.indexOf("..",dd+1));){const p4=parts[dd-1];if(p4&&"."!==p4&&".."!==p4&&"**"!==p4){didSomething=!0;const splin=1===dd&&"**"===parts[dd+1]?["."]:[];parts.splice(dd-1,2,...splin);0===parts.length&&parts.push("");dd-=2}}}}while(didSomething);return globParts}secondPhasePreProcess(globParts){for(let i2=0;i2<globParts.length-1;i2++)for(let j2=i2+1;j2<globParts.length;j2++){const matched=this.partsMatch(globParts[i2],globParts[j2],!this.preserveMultipleSlashes);if(matched){globParts[i2]=[];globParts[j2]=matched;break}}return globParts.filter((gs=>gs.length))}partsMatch(a2,b3,emptyGSMatch=!1){let ai2=0,bi2=0,result=[],which="";for(;ai2<a2.length&&bi2<b3.length;)if(a2[ai2]===b3[bi2]){result.push("b"===which?b3[bi2]:a2[ai2]);ai2++;bi2++}else if(emptyGSMatch&&"**"===a2[ai2]&&b3[bi2]===a2[ai2+1]){result.push(a2[ai2]);ai2++}else if(emptyGSMatch&&"**"===b3[bi2]&&a2[ai2]===b3[bi2+1]){result.push(b3[bi2]);bi2++}else if("*"!==a2[ai2]||!b3[bi2]||!this.options.dot&&b3[bi2].startsWith(".")||"**"===b3[bi2]){if("*"!==b3[bi2]||!a2[ai2]||!this.options.dot&&a2[ai2].startsWith(".")||"**"===a2[ai2])return!1;if("a"===which)return!1;which="b";result.push(b3[bi2]);ai2++;bi2++}else{if("b"===which)return!1;which="a";result.push(a2[ai2]);ai2++;bi2++}return a2.length===b3.length&&result}parseNegate(){if(this.nonegate)return;const pattern=this.pattern;let negate3=!1,negateOffset=0;for(let i2=0;i2<pattern.length&&"!"===pattern.charAt(i2);i2++){negate3=!negate3;negateOffset++}negateOffset&&(this.pattern=pattern.slice(negateOffset));this.negate=negate3}matchOne(file,pattern,partial=!1){var fi,pi,fl2,pl,p4,f4,fr,pr,swallowee;const options=this.options;if(this.isWindows){const fileDrive="string"==typeof file[0]&&/^[a-z]:$/i.test(file[0]),fileUNC=!fileDrive&&""===file[0]&&""===file[1]&&"?"===file[2]&&/^[a-z]:$/i.test(file[3]),patternDrive="string"==typeof pattern[0]&&/^[a-z]:$/i.test(pattern[0]),fdi=fileUNC?3:fileDrive?0:void 0,pdi=!patternDrive&&""===pattern[0]&&""===pattern[1]&&"?"===pattern[2]&&"string"==typeof pattern[3]&&/^[a-z]:$/i.test(pattern[3])?3:patternDrive?0:void 0;if("number"==typeof fdi&&"number"==typeof pdi){const[fd2,pd]=[file[fdi],pattern[pdi]];if(fd2.toLowerCase()===pd.toLowerCase()){pattern[pdi]=fd2;pdi>fdi?pattern=pattern.slice(pdi):fdi>pdi&&(file=file.slice(fdi))}}}const{optimizationLevel=1}=this.options;optimizationLevel>=2&&(file=this.levelTwoFileOptimize(file));this.debug("matchOne",this,{file,pattern});this.debug("matchOne",file.length,pattern.length);for(fi=0,pi=0,fl2=file.length,pl=pattern.length;fi<fl2&&pi<pl;fi++,pi++){this.debug("matchOne loop");p4=pattern[pi];f4=file[fi];this.debug(pattern,p4,f4);if(!1===p4)return!1;if(p4===GLOBSTAR){this.debug("GLOBSTAR",[pattern,p4,f4]);fr=fi;if((pr=pi+1)===pl){this.debug("** at the end");for(;fi<fl2;fi++)if("."===file[fi]||".."===file[fi]||!options.dot&&"."===file[fi].charAt(0))return!1;return!0}for(;fr<fl2;){swallowee=file[fr];this.debug("\nglobstar while",file,fr,pattern,pr,swallowee);if(this.matchOne(file.slice(fr),pattern.slice(pr),partial)){this.debug("globstar found match!",fr,fl2,swallowee);return!0}if("."===swallowee||".."===swallowee||!options.dot&&"."===swallowee.charAt(0)){this.debug("dot detected!",file,fr,pattern,pr);break}this.debug("globstar swallow a segment, and continue");fr++}if(partial){this.debug("\n>>> no match, partial?",file,fr,pattern,pr);if(fr===fl2)return!0}return!1}let hit;if("string"==typeof p4){hit=f4===p4;this.debug("string match",p4,f4,hit)}else{hit=p4.test(f4);this.debug("pattern match",p4,f4,hit)}if(!hit)return!1}if(fi===fl2&&pi===pl)return!0;if(fi===fl2)return partial;if(pi===pl)return fi===fl2-1&&""===file[fi];throw new Error("wtf?")}braceExpand(){return braceExpand(this.pattern,this.options)}parse(pattern){assertValidPattern(pattern);const options=this.options;if("**"===pattern)return GLOBSTAR;if(""===pattern)return"";let m3,fastTest=null;(m3=pattern.match(starRE))?fastTest=options.dot?starTestDot:starTest:(m3=pattern.match(starDotExtRE))?fastTest=(options.nocase?options.dot?starDotExtTestNocaseDot:starDotExtTestNocase:options.dot?starDotExtTestDot:starDotExtTest)(m3[1]):(m3=pattern.match(qmarksRE))?fastTest=(options.nocase?options.dot?qmarksTestNocaseDot:qmarksTestNocase:options.dot?qmarksTestDot:qmarksTest)(m3):(m3=pattern.match(starDotStarRE))?fastTest=options.dot?starDotStarTestDot:starDotStarTest:(m3=pattern.match(dotStarRE))&&(fastTest=dotStarTest);const re=AST.fromGlob(pattern,this.options).toMMPattern();fastTest&&"object"==typeof re&&Reflect.defineProperty(re,"test",{value:fastTest});return re}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;const set2=this.set;if(!set2.length){this.regexp=!1;return this.regexp}const options=this.options,twoStar=options.noglobstar?"[^/]*?":options.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",flags=new Set(options.nocase?["i"]:[]);let re=set2.map((pattern=>{const pp=pattern.map((p4=>{if(p4 instanceof RegExp)for(const f4 of p4.flags.split(""))flags.add(f4);return"string"==typeof p4?regExpEscape2(p4):p4===GLOBSTAR?GLOBSTAR:p4._src}));pp.forEach(((p4,i2)=>{const next2=pp[i2+1],prev=pp[i2-1];if(p4===GLOBSTAR&&prev!==GLOBSTAR)if(void 0===prev)void 0!==next2&&next2!==GLOBSTAR?pp[i2+1]="(?:\\/|"+twoStar+"\\/)?"+next2:pp[i2]=twoStar;else if(void 0===next2)pp[i2-1]=prev+"(?:\\/|"+twoStar+")?";else if(next2!==GLOBSTAR){pp[i2-1]=prev+"(?:\\/|\\/"+twoStar+"\\/)"+next2;pp[i2+1]=GLOBSTAR}}));return pp.filter((p4=>p4!==GLOBSTAR)).join("/")})).join("|");const[open,close]=set2.length>1?["(?:",")"]:["",""];re="^"+open+re+close+"$";this.negate&&(re="^(?!"+re+").+$");try{this.regexp=new RegExp(re,[...flags].join(""))}catch(ex){this.regexp=!1}return this.regexp}slashSplit(p4){return this.preserveMultipleSlashes?p4.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(p4)?["",...p4.split(/\/+/)]:p4.split(/\/+/)}match(f4,partial=this.partial){this.debug("match",f4,this.pattern);if(this.comment)return!1;if(this.empty)return""===f4;if("/"===f4&&partial)return!0;const options=this.options;this.isWindows&&(f4=f4.split("\\").join("/"));const ff2=this.slashSplit(f4);this.debug(this.pattern,"split",ff2);const set2=this.set;this.debug(this.pattern,"set",set2);let filename=ff2[ff2.length-1];if(!filename)for(let i2=ff2.length-2;!filename&&i2>=0;i2--)filename=ff2[i2];for(let i2=0;i2<set2.length;i2++){const pattern=set2[i2];let file=ff2;options.matchBase&&1===pattern.length&&(file=[filename]);if(this.matchOne(file,pattern,partial))return!!options.flipNegate||!this.negate}return!options.flipNegate&&this.negate}static defaults(def){return minimatch.defaults(def).Minimatch}};minimatch.AST=AST;minimatch.Minimatch=Minimatch;minimatch.escape=escape;minimatch.unescape=unescape2;encodeChunkSize=15e7;QUANTUM=32768;te=new TextEncoder;td=new TextDecoder;regexpBase64=/^[A-Za-z0-9+/]+=*$/;table={};revTable={};[...function*range(from,to){for(let i2=from;i2<=to;i2++)yield i2}(192,447)].forEach(((e3,i2)=>{table[i2]=e3;revTable[e3]=i2}));revMap={};numMap={};for(let i2=0;i2<256;i2++){revMap[`00${i2.toString(16)}`.slice(-2)]=i2;numMap[i2]=`00${i2.toString(16)}`.slice(-2)}_hashString=function memorizeFuncWithLRUCache(func){const cache=new LRUCache(100,1e5,!0);return key2=>{if(cache.has(key2))return cache.get(key2);const value=func(key2);cache.set(key2,value);return value}}((async key2=>{const buff=writeString(key2),webcrypto5=await getWebCrypto();let digest=await webcrypto5.subtle.digest("SHA-256",buff);const len=key2.length;for(let i2=0;i2<len;i2++)digest=await webcrypto5.subtle.digest("SHA-256",buff);return uint8ArrayToHexString(new Uint8Array(digest))}));matchOpts={platform:"linux",dot:!0,flipNegate:!0,nocase:!0};delay=(ms,result)=>new Promise((res2=>{setTimeout((()=>{res2(result)}),ms)}));UNRESOLVED=Symbol("UNRESOLVED");promiseWithResolver="withResolvers"in Promise?function nativePromiseWithResolvers(){const p4=Promise.withResolvers(),{promise,resolve,reject}=p4;return{promise,resolve,reject}}:function polyfillPromiseWithResolvers(){let resolve,reject;return{promise:new Promise(((res2,rej)=>{resolve=res2;reject=rej})),resolve,reject}};noop=()=>{};TIMED_OUT_SIGNAL=Symbol("timed out");webcrypto2=globalThis.crypto;SALT=(new TextEncoder).encode("fancySyncForYou!");previousPassphrase="";_nonceV3=new Uint32Array(1);bufV3=new Uint8Array(12);previousDecryptionPassphrase="";KeyBuffs=new Map;decKeyBuffs=new Map;KEY_RECYCLE_COUNT=100;nonceBuffer=new Uint32Array(1);webcrypto3=globalThis.crypto;keyGCCount=5*KEY_RECYCLE_COUNT;decKeyIdx=0;decKeyMin=0;FallbackWeakRef="WeakRef"in globalThis?globalThis.WeakRef:(_a=class WeakRef{constructor(target){Object.defineProperty(this,"__target",{enumerable:!0,configurable:!0,writable:!0,value:void 0});this.__target=target}deref(){return this.__target}},Object.defineProperty(_a,"__",{enumerable:!0,configurable:!0,writable:!0,value:console.warn("WeakRef is not supported in this environment. Using a fallback implementation. This may cause memory leaks. Please consider upgrading your browser or Node.js version. If you are on Android, please consider changing your WebView engine to a newer version. It is on the Developer Settings.")}),_a);eventHub=new(EventHub=class{constructor(){Object.defineProperty(this,"_emitter",{enumerable:!0,configurable:!0,writable:!0,value:new EventTarget});Object.defineProperty(this,"_assigned",{enumerable:!0,configurable:!0,writable:!0,value:new Map});Object.defineProperty(this,"_allAssigned",{enumerable:!0,configurable:!0,writable:!0,value:new Map})}_issueSignal(key2,callback){var _a7;let assigned=this._assigned.get(key2);void 0===assigned&&(assigned=new WeakMap);const controllerRef=assigned.get(callback);let controller=null==controllerRef?void 0:controllerRef.deref();if(!controller||controller.signal.aborted){controller=new AbortController;const refController=new FallbackWeakRef(controller);controller.signal.addEventListener("abort",(()=>{var _a8,_b3;null==(_a8=this._assigned.get(key2))||_a8.delete(callback);null==(_b3=this._allAssigned.get(key2))||_b3.delete(refController)}),{once:!0});assigned.set(callback,refController);this._assigned.set(key2,assigned);const allAssigned=null!=(_a7=this._allAssigned.get(key2))?_a7:new Set;allAssigned.add(refController);this._allAssigned.set(key2,allAssigned);return controller}return controller}emitEvent(event2,data){this._emitter.dispatchEvent(new CustomEvent(`${event2.toString()}`,{detail:null!=data?data:void 0}))}on(event2,callback,options){const key2=event2,controller=this._issueSignal(key2,callback);this._emitter.addEventListener(key2,(e3=>{callback(e3,e3 instanceof CustomEvent?null==e3?void 0:e3.detail:void 0)}),{...options,signal:controller.signal});return()=>this.off(event2,callback)}off(event2,callback){var _a7,_b3;const key2=event2;if(callback){const w2=null==(_a7=this._assigned.get(key2))?void 0:_a7.get(callback),controller=null==w2?void 0:w2.deref();null==controller||controller.abort()}else null==(_b3=this._allAssigned.get(key2))||_b3.forEach((w2=>{const controller=w2.deref();null==controller||controller.abort()}))}offAll(){for(const[key2]of this._allAssigned)this.off(key2)}onEvent(event2,callback,options){const key2=event2,controller=this._issueSignal(key2,callback);this._emitter.addEventListener(key2,(e3=>{callback(e3 instanceof CustomEvent?null==e3?void 0:e3.detail:void 0)}),{...options,signal:controller.signal});return()=>this.off(event2,callback)}once(event2,callback){return this.on(event2,callback,{once:!0})}onceEvent(event2,callback){return this.on(event2,((_,data)=>callback(data)),{once:!0})}waitFor(event2){return new Promise((resolve=>{this.onceEvent(event2,(data=>{resolve(data)}))}))}});APIBase=class{constructor(){this._isReady=!1;this._isDisposed=!1}get isReady(){return this._isReady}get isDisposed(){return this._isDisposed}async applyOptions(options){var _a7,_b3,_c2,_d2;if(this.isDisposed)throw new Error("Cannot apply options to a disposed API");this.isReady&&await(null==(_a7=this.__teardownCurrentOptions)?void 0:_a7.call(this));await(null==(_b3=this.onApplyOptions)?void 0:_b3.call(this,options));this._options?this._options={...this._options,...options}:this._options=options;await(null==(_c2=this.onOptionsApplied)?void 0:_c2.call(this));await(null==(_d2=this.onReady)?void 0:_d2.call(this))}async init(options){var _a7;await this.applyOptions(options);await(null==(_a7=this.onInit)?void 0:_a7.call(this));return this}async __teardownCurrentOptions(){var _a7,_b3;await(null==(_a7=this.onDisposeCurrentOptions)?void 0:_a7.call(this));await(null==(_b3=this.tearDownCurrentOptions)?void 0:_b3.call(this))}reload(options){return this.applyOptions(options)}async dispose(){var _a7,_b3;await(null==(_a7=this.onDisposeCurrentOptions)?void 0:_a7.call(this));await(null==(_b3=this.onDisposed)?void 0:_b3.call(this))}};tasks=new Map;maxConcurrency=~~((navigator.hardwareConcurrency||8)/2);roundRobinIdx=0;workers=Array.from({length:maxConcurrency},(()=>({worker:function inlineWorker(scriptText){let blob=new Blob([scriptText],{type:"text/javascript"}),url=URL.createObjectURL(blob),worker=new Worker(url);URL.revokeObjectURL(url);return worker}('var O=(t,e)=>(e=Symbol[t])?e:Symbol.for("Symbol."+t),pt=t=>{throw TypeError(t)};var T=function(t,e){this[0]=t,this[1]=e},I=(t,e,r)=>{var n=(a,s,c,l)=>{try{var f=r[a](s),y=(s=f.value)instanceof T,g=f.done;Promise.resolve(y?s[0]:s).then(d=>y?n(a==="return"?a:"next",s[1]?{done:d.done,value:d.value}:d,c,l):c({value:d,done:g})).catch(d=>n("throw",d,c,l))}catch(d){l(d)}},o=a=>i[a]=s=>new Promise((c,l)=>n(a,s,c,l)),i={};return r=r.apply(t,e),i[O("asyncIterator")]=()=>i,o("next"),o("throw"),o("return"),i},p=t=>{var e=t[O("asyncIterator")],r=!1,n,o={};return e==null?(e=t[O("iterator")](),n=i=>o[i]=a=>e[i](a)):(e=e.call(t),n=i=>o[i]=a=>{if(r){if(r=!1,i==="throw")throw a;return a}return r=!0,{done:!1,value:new T(new Promise(s=>{var c=e[i](a);c instanceof Object||pt("Object expected"),s(c)}),1)}}),o[O("iterator")]=()=>o,n("next"),"throw"in e?n("throw"):o.throw=i=>{throw i},"return"in e&&n("return"),o},P=(t,e,r)=>(e=t[O("asyncIterator")])?e.call(t):(t=t[O("iterator")](),e={},r=(n,o)=>(o=t[n])&&(e[n]=i=>new Promise((a,s,c)=>(i=o.call(t,i),c=i.done,Promise.resolve(i.value).then(l=>a({value:l,done:c}),s)))),r("next"),r("return"),e);var ht={minLogLevel:32},wt=function(e,r=32,n){if(r<ht.minLogLevel)return;let i=new Date().toLocaleString(),a=typeof e=="string"?e:e instanceof Error?`${e.name}:${e.message}`:JSON.stringify(e,null,2),s=`${i}\t${r}\t${a}`;r&1?console.debug(s):r&4?console.warn(s):r&8?console.error(s):r&2?console.info(s):console.log(s),e instanceof Error&&console.dir(e.stack)},bt=wt;function B(t,e,r){bt(t,e,r)}function C(t){if(typeof t=="string")return F(t);let e=t.map(i=>F(i)),r=e.reduce((i,a)=>i+a.byteLength,0),n=new Uint8Array(r),o=0;return e.forEach(i=>{n.set(new Uint8Array(i),o),o+=i.byteLength}),n.buffer}function F(t){try{let e=globalThis.atob(t),r=e.length,n=new Uint8Array(r);for(let o=0;o<r;o++)n[o]=e.charCodeAt(o);return n.buffer}catch(e){return B("Base64 Decode error",16),B(e,16),new ArrayBuffer(0)}}var Yt=3*5e7;function At(t){return new Promise((e,r)=>{let n=new Blob([t],{type:"application/octet-binary"}),o=new FileReader;o.onload=function(i){var c,l;let a=((l=(c=i.target)==null?void 0:c.result)==null?void 0:l.toString())||"";if(t.byteLength!=0&&(a==""||a=="data:"))return r(new TypeError("Could not parse the encoded string"));let s=a.substring(a.indexOf(",")+1);e(s)},o.readAsDataURL(n)})}async function E(t){let e=t instanceof Uint8Array?t:new Uint8Array(t);return e.byteLength<X?btoa(String.fromCharCode.apply(null,[...e])):await At(e)}var X=32768,xt=new TextEncoder,mt=new TextDecoder;function V(t){if(t.length>128)return xt.encode(t);let e=new Uint8Array(t.length*4),r=t.length,n=0,o=0,i=0;for(;i<r;)o=t.charCodeAt(i++),o<128?e[n++]=o:o<2048?(e[n++]=192|o>>>6,e[n++]=128|o&63):o<55296||o>57343?(e[n++]=224|o>>>12,e[n++]=128|o>>>6&63,e[n++]=128|o&63):(o=(o-55296<<10|t.charCodeAt(i++)-56320)+65536,e[n++]=240|o>>>18,e[n++]=128|o>>>12&63,e[n++]=128|o>>>6&63,e[n++]=128|o&63);return e.slice(0,n)}function G(t){let e=t.length;if(e>128)return mt.decode(t);let r=0,n=e,o="";for(;r<n;){let i=[],a=Math.min(r+X,n);for(;r<a;){let s=t[r++];if(s<128)i.push(s);else if((s&224)===192)i.push((s&31)<<6|t[r++]&63);else if((s&240)===224)i.push((s&15)<<12|(t[r++]&63)<<6|t[r++]&63);else if((s&248)===240){let c=(s&7)<<18|(t[r++]&63)<<12|(t[r++]&63)<<6|t[r++]&63;c<65536?i.push(c):(c-=65536,i.push((c>>>10)+55296,(c&1023)+56320))}}o+=String.fromCharCode(...i)}return o}function*Q(t,e){for(let r=t;r<=e;r++)yield r}var Qt=1024*1024*30,Bt={},Z={};[...Q(192,447)].forEach((t,e)=>{Bt[e]=t,Z[t]=e});function W(t){if(t.length==1)return v(t[0]);let e=t.map(i=>v(i)),r=e.reduce((i,a)=>i+a.byteLength,0),n=new Uint8Array(r),o=0;return e.forEach(i=>{n.set(new Uint8Array(i),o),o+=i.byteLength}),n.buffer}function v(t){let e=new Uint8Array(t.length),r=t.length;for(let n=0;n<r;n++){let o=t.charCodeAt(n);o>=38&&o<=126&&o!=58?e[n]=o:e[n]=Z[o]}return e.buffer}var z={},tt={};for(let t=0;t<256;t++)z[`00${t.toString(16)}`.slice(-2)]=t,tt[t]=`00${t.toString(16)}`.slice(-2);function A(t){let e=t.length/2,r=new Uint8Array(e);for(let n=0;n<e;n++)r[n]=z[t[n*2]+t[n*2+1]];return r}function _(t){return[...t].map(e=>tt[e]).join("")}function R(t){if(t.length==0)return new Uint8Array().buffer;if(typeof t=="string"){if(t[0]==="%")return v(t.substring(1))}else if(t[0][0]==="%"){let[e,...r]=t;return W([e.substring(1),...r])}return C(t)}function nt(t){return t.type==="text/plain"}function*St(t,e){let r="";t:do{let n=t.shift();if(typeof n=="undefined"){yield r;break t}if(n.startsWith("```")||n.startsWith(" ```")||n.startsWith(" ```")||n.startsWith(" ```")){yield r,r=n+(t.length!=0?`\n`:"");e:do{let s=t.shift();if(typeof s=="undefined")break e;r+=s+(t.length!=0?`\n`:"")}while(t.length>0&&!(t[0].startsWith("```")||t[0].startsWith(" ```")||t[0].startsWith(" ```")||t[0].startsWith(" ```")));let o=r.endsWith("="),i=r.length>2048,a=t.shift();if(typeof a!="undefined"&&(r+=a,r+=t.length!=0?`\n`:""),!o&&!i){let s=/(.*?[;,:<])/g,c=r.split(s).filter(l=>l!="");for(let l of c)yield l}else yield r;r=""}else r+=n+(t.length!=0?`\n`:""),(r.length>=e||t.length==0||t[0]=="#"||r[0]=="#")&&(yield r,r="")}while(t.length>0)}var rt=10,ot="Segmenter"in Intl?new Intl.Segmenter(navigator.language,{granularity:"sentence"}):void 0;function*M(t,e){let r=t;do{let n=e,o=r.substring(0,n);r=r.substring(n),yield o}while(r!="")}function*et(t,e,r){let n=ot.segment(t),o="",i="";for(let a of n){let s=a.segment;o==s||i.length<r?(i+=s,o=s):(o=s,i.length>0&&(yield*p(M(i,e))),i=s)}i.length>0&&(yield*p(M(i,e)))}function*Gt(t){for(let e of t){let r=-1,n=-1;do{if(n=e.indexOf(`\n`,r),n==-1){yield e.substring(r);break}for(;e[n]==`\n`;)n++;yield e.substring(r,n),r=n}while(n!=-1)}}function _t(t,e,r){let o=Gt(typeof t=="string"?[t]:t),i=0,a=!1,s=!1;return function*(){let c=[];for(let l of o)l.startsWith("````")?i==0?(i=4,s=!0):i==4&&(i=0,a=!0):l.startsWith("```")&&(i==0?(i=3,s=!0):i==3&&(i=0,a=!0)),s&&(c.length>0&&(yield*p(et(c.join(""),e,r)),c.length=0),s=!1),c.push(l),a&&(c.length>0&&(yield*p(M(c.join(""),e)),c.length=0),a=!1);c.length>0&&(i==0?yield*p(et(c.join(""),e,r)):yield*p(M(c.join(""),e)))}}function Ut(t,e,r){return function*(){yield*p(M(t,e))}}function Ot(t,e,r,n,o){return!o||!ot?Ct(t,e,r,n):r?_t(t,e,n):Ut(t,e,n)}function Ct(t,e,r,n){let o=typeof t=="string"?[t]:t;return function*(){for(let a of o)if(r){let s=a.split(`\n`),c=St(s,n);for(let l of c){let f=l;do{let y=e;f.charCodeAt(y-1)!=f.codePointAt(y-1)&&y++,yield f.substring(0,y),f=f.substring(y)}while(f!="")}}else{let s=a;do{let c=e,l=s.substring(0,c);s=s.substring(c),yield l}while(s!="")}}}function*Vt(t,e,r=25,n){let o="",i=!1,a=e.length;for(let s of t){let c=s.length;if(n&&c>n){yield o+s,i=!1,o="";continue}let l=-1,f=0;t:do{if(l=s.indexOf(e,f),l==-1)break t;o+=s.slice(f,l)+e,o.length>r?(yield o,o="",i=!1):i=!0,f=l+a}while(l<c);(f!=l||f==-1&&l==-1)&&(o+=s.slice(f),i=!0)}i&&(yield o)}function*it(t,e){let r=t.length;if(r>e){let n=0;do{let o=n+e;if(o>r){yield t.substring(n);break}for(;t.charCodeAt(o-1)!=t.codePointAt(o-1);)o++;yield t.substring(n,o),n=o}while(n<r)}else yield t}function*Mt(t,e){for(let r of t)yield*p(it(r,e))}function*Ft(t){for(let e of t)yield e}var vt=100;async function st(t,e,r,n,o,i){if(t.size==0)return function*(){};if(nt(t)){let d=await t.text();if(!r){let b=it(d,e);return function*(){yield*p(b)}}let U=d.length,u=n;for(;U/u>vt;)u+=n;let x=Ft([d]),m=Vt(x,`\n`,u),w=Mt(m,e);return function*(){yield*p(w)}}let a=!1,s=0;o&&o.endsWith(".pdf")?s=47:o&&o.endsWith(".json")&&(a=!0,s=44);let f=Math.max(a?100:1e5,Math.min(1e8,t.size)),y=1,g=f;for(;g>10;)g/=12.5,y++;return n=Math.floor(10**(y-1)),function(){return I(this,null,function*(){let U=t.size,u=0,x=new Uint8Array(yield new T(t.arrayBuffer()));do{let m=u+n,w=u+e,b,L=x.indexOf(s,m);L==-1&&(L=x.indexOf(rt,m)),L==-1?b=w:b=L<w?L:w,yield yield new T(E(x.slice(u,b))),u=b}while(u<U)})}}async function at(t,e,r,n,o,i){if(nt(t))return Ot(await t.text(),e,r,n,i!=null?i:!1);let a=0,s=!1;o&&o.endsWith(".pdf")?a=47:o&&o.endsWith(".json")&&(s=!0,a=44);let f=Math.max(s?100:1e5,Math.min(1e8,t.size)),y=1,g=f;for(;g>10;)g/=12.5,y++;return n=Math.floor(10**(y-1)),function(){return I(this,null,function*(){let U=t.size,u=0;do{let x=e,m=new Uint8Array(yield new T(t.slice(u,u+e).arrayBuffer())),w=m.indexOf(a,n);x=w==-1?e:Math.min(e,w),w==-1&&(w=m.indexOf(rt,n));let b=m.slice(0,x);u+=b.length,yield yield new T(E(b))}while(u<U)})}}var D=globalThis.crypto,Dt="fancySyncForYou!",Kt=new TextEncoder().encode(Dt);var Be=new Uint32Array(1),Ee=new Uint8Array(12);async function ft(t){let e=new TextEncoder().encode(t),n=(await D.subtle.digest("SHA-256",new Uint8Array([...e,...Kt]))).slice(0,16),o=await D.subtle.importKey("raw",e,"PBKDF2",!1,["deriveBits","deriveKey"]),i={name:"PBKDF2",hash:"SHA-256",salt:n,iterations:1e5};return await D.subtle.deriveKey(i,o,{name:"AES-GCM",length:256},!1,["decrypt","encrypt"])}var ct="",lt;async function $(t,e){ct!==e&&(lt=await ft(e),ct=e);let r=t.substring(2,26),n=t.substring(26),o=A(r),i=C(n),a=await D.subtle.decrypt({name:"AES-GCM",iv:o},lt,i);return G(new Uint8Array(a))}var ut=new Map,K=new Map,Y=100,N,H=new Uint32Array(1),h=globalThis.crypto;async function kt(t,e){let r=`${t}-${e}`,n=ut.get(r);if(n){if(n.count--,n.count>0)return[n.key,n.salt];n.count--}let o=15-t.length,i=e?(o>0?o:0)*1e3+121-o:1e5,a=new TextEncoder().encode(t),s=await h.subtle.digest({name:"SHA-256"},a),c=await h.subtle.importKey("raw",s,{name:"PBKDF2"},!1,["deriveKey"]),l=h.getRandomValues(new Uint8Array(16)),f=await h.subtle.deriveKey({name:"PBKDF2",salt:l,iterations:i,hash:"SHA-256"},c,{name:"AES-GCM",length:256},!1,["encrypt"]);return ut.set(r,{key:f,salt:l,count:Y}),[f,l]}var j=Y*5,k=0,yt=0;async function dt(t,e,r){if(j--,j<0){j=Y;let y=(k-yt)/2;for(let[g,d]of K)d.count<y&&K.delete(g),yt=k}k++;let n=t+_(e)+r,o=K.get(n);if(o)return o.count=k,[o.key,o.salt];let i=15-t.length,a=r?(i>0?i:0)*1e3+121-i:1e5,s=new TextEncoder().encode(t),c=await h.subtle.digest({name:"SHA-256"},s),l=await h.subtle.importKey("raw",c,{name:"PBKDF2"},!1,["deriveKey"]),f=await h.subtle.deriveKey({name:"PBKDF2",salt:e,iterations:a,hash:"SHA-256"},l,{name:"AES-GCM",length:256},!1,["decrypt"]);return K.set(n,{key:f,salt:e,count:0}),[f,e]}function gt(t){return N!=null&&!t||(N=h.getRandomValues(new Uint8Array(12))),N}function It(){return H[0]++,H[0]>1e4&>(!0),H}async function J(t,e,r){let[n,o]=await kt(e,r),i=gt(),a=It(),s=new Uint8Array([...i,...new Uint8Array(a.buffer)]),c=V(t),l=await h.subtle.encrypt({name:"AES-GCM",iv:s},n,c),f=""+await E(new Uint8Array(l));return`%${_(s)}${_(o)}${f}`}async function Pt(t,e,r){try{let n=t.substring(1,33),o=t.substring(33,65),i=t.substring(65),[a]=await dt(e,A(o),r),s=A(n),c=R(i),l=await h.subtle.decrypt({name:"AES-GCM",iv:s},a,c);return G(new Uint8Array(l))}catch(n){throw B("Couldn\'t decode! You should wrong the passphrases (V2)",16),B(n,16),n}}async function q(t,e,r){try{if(t[0]=="%")return t[1]==="~"?$(t,e):Pt(t,e,r);if(!t.startsWith("[")||!t.endsWith("]"))throw new Error("Encrypted data corrupted!");let n=t.substring(1,t.length-1).split(",").map(u=>u[0]==\'"\'?u.substring(1,u.length-1):u),[o,i,a]=n,[s]=await dt(e,A(a),r),c=A(i),l=atob(o),f=l.length,y=new Uint8Array(f);for(let u=f;u>=0;--u)y[u]=l.charCodeAt(u);let g=await h.subtle.decrypt({name:"AES-GCM",iv:c},s,y),d=G(new Uint8Array(g));return JSON.parse(d)}catch(n){throw B("Couldn\'t decode! You should wrong the passphrases",16),B(n,16),n}}async function Wt(t){let e=t.key,r=t.dataSrc,n=t.pieceSize,o=t.plainSplit,i=t.minimumChunkSize,a=t.filename,s=t.useSegmenter,l=await(t.useV2?st:at)(r,n,o,i,a,s),f=!1;try{for(var y=P(l()),g,d,U;g=!(d=await y.next()).done;g=!1){let u=d.value;f=!0,self.postMessage({key:e,result:u})}}catch(d){U=[d]}finally{try{g&&(d=y.return)&&await d.call(y)}finally{if(U)throw U[0]}}f||self.postMessage({key:e,result:""}),self.postMessage({key:e,result:null})}async function Rt(t){let e=t.key,{type:r,input:n,passphrase:o,autoCalculateIterations:i}=t;try{if(r=="encrypt"){let a=await J(n,o,i);self.postMessage({key:e,result:a})}else if(r=="decrypt"){let a=await q(n,o,i);self.postMessage({key:e,result:a})}}catch(a){self.postMessage({key:e,error:a})}}self.onmessage=t=>{let e=t.data.data;if(e.type==="split")return Wt(e);if(e.type==="encrypt"||e.type==="decrypt")return Rt(e);self.postMessage({key:e.key,error:new Error("Invalid type")})};\n'),processing:0})));for(const inst of workers){inst.worker.onmessage=({data})=>{const key2=data.key,process2=tasks.get(key2);process2?"split"===process2.type?handleTaskSplit(process2,data):"encrypt"===process2.type||"decrypt"===process2.type?handleTaskEncrypt(process2,data):info("Invalid response type"+process2):info(`Invalid key ${key2} of background processing`,8)};inst.worker.onerror=()=>{inst.worker.terminate();workers.remove(inst)}}key=0;eventHub.on("platform-unloaded",(()=>{(function terminateWorker(){for(const inst of workers)inst.worker.terminate()})()}));serializedMap=new Map;queueCount=new Map;waitingProcessMap=new Map;shareSerializedMap=new Map;skipDuplicatedMap=new Map;PaceMaker=class{constructor(interval){Object.defineProperty(this,"_interval",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_minimumNext",{enumerable:!0,configurable:!0,writable:!0,value:void 0});this._interval=interval}changeInterval(interval){if(interval!==this._interval){this._interval=interval;this._minimumNext=void 0}}mark(now3=Date.now()){void 0===this._minimumNext?this._minimumNext=now3+this._interval:this._minimumNext=Math.max(this._minimumNext+this._interval,now3+this._interval)}_getPaced(doMark){const now3=Date.now(),prevMinimum=this._minimumNext;doMark&&this.mark(now3);if(void 0!==prevMinimum){const shouldWait=prevMinimum-now3;if(shouldWait>0)return new Promise((resolve=>setTimeout((()=>{resolve()}),shouldWait)))}return Promise.resolve()}get paced(){return this._getPaced(!0)}get pacedSinceMark(){return this._getPaced(!1)}};NOT_AVAILABLE=Symbol("NotAvailable");READY_PICK_SIGNAL=Symbol("lockReady");READY_POST_SIGNAL=Symbol("lockFull");DISPOSE_ERROR="Inbox has been disposed";SyncInbox=class{constructor(capacity){Object.defineProperty(this,"_capacity",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_buffer",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_writeIdx",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"_readIdx",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"_wrapAroundCount",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"_isDisposed",{enumerable:!0,configurable:!0,writable:!0,value:!1});Object.defineProperty(this,"_disposedPromise",{enumerable:!0,configurable:!0,writable:!0,value:promiseWithResolver()});if(capacity<=0)throw new Error("Capacity must be greater than 0");this._capacity=~~capacity;let i2=256;for(;i2<capacity+1;)i2*=2;i2--;this._wrapAroundCount=i2;this._buffer=new Array(i2);this._writeIdx=0;this._readIdx=0}get size(){return this._writeIdx-this._readIdx}get free(){return this._capacity-this.size}get isRunningOut(){return this._writeIdx==this._readIdx}get isFull(){return 0==this.free}get isReady(){return this.free>0}get isDisposed(){return this._isDisposed}get onDisposed(){return this._disposedPromise.promise}__fixIdx(){if(this._readIdx>this._wrapAroundCount){this._readIdx=this._readIdx&this._wrapAroundCount;this._writeIdx=this._writeIdx&this._wrapAroundCount}}get state(){return{processed:this._writeIdx,size:this.size,free:this.free,isFull:this.isFull,isRunningOut:this.isRunningOut,isReady:this.isReady}}dispose(){this._readIdx=0;this._writeIdx=0;this._capacity=0;this._buffer.length=1;this._buffer[0]=void 0;this._wrapAroundCount=1;this._isDisposed=!0;this._disposedPromise.resolve()}__onPosted(){this.__onProgress()}__onPicked(){this.__onProgress()}__onProgress(){this.__fixIdx()}tryPost(item){if(this.isFull)return!1;this._writeIdx++;this._buffer[this._writeIdx&this._wrapAroundCount]=item;this.__onPosted();return!0}tryCancelPost(){if(0==this.size)return NOT_AVAILABLE;const pointingIdx=this._writeIdx&this._wrapAroundCount,item=this._buffer[pointingIdx];this._buffer[pointingIdx]=void 0;this._writeIdx--;this.__fixIdx();return item}tryPick(){if(this.isRunningOut)return NOT_AVAILABLE;this._readIdx++;const pointingIdx=this._readIdx&this._wrapAroundCount,item=this._buffer[pointingIdx];this._buffer[pointingIdx]=void 0;this.__onPicked();return item}};Inbox=class extends SyncInbox{constructor(capacity){super(capacity);Object.defineProperty(this,"_lockFull",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_lockReady",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}async _waitForFree(){for(;0==this.free;){this._lockFull||(this._lockFull=promiseWithResolver());return await this._lockFull.promise}return READY_POST_SIGNAL}_notifyFree(){var _a7;null==(_a7=this._lockFull)||_a7.resolve(READY_POST_SIGNAL);this._lockFull=void 0}async _waitForReady(){for(;this.isRunningOut;){this._lockReady||(this._lockReady=promiseWithResolver());return await this._lockReady.promise}return READY_PICK_SIGNAL}_notifyReady(){var _a7;null==(_a7=this._lockReady)||_a7.resolve(READY_PICK_SIGNAL);this._lockReady=void 0}__onPosted(){super.__onPosted();this._notifyReady()}__onPicked(){super.__onPicked();this._notifyFree()}dispose(){super.dispose();if(this._lockFull){this._lockFull.reject(new Error(DISPOSE_ERROR));this._lockFull=void 0}if(this._lockReady){this._lockReady.reject(new Error(DISPOSE_ERROR));this._lockReady=void 0}}async post(item,timeout,cancellation){if(this._isDisposed)throw new Error(DISPOSE_ERROR);do{if(cancellation&&cancellation.length>0&&await isSomeResolved(cancellation))return!1;if(this.tryPost(item))return!0;let p4;const tasks3=[this._waitForFree(),...timeout?[(p4=cancelableDelay(timeout)).promise]:[],...cancellation||[]],r4=await Promise.race(tasks3);null==p4||p4.cancel();if(r4!==READY_POST_SIGNAL)return!1}while(!this._isDisposed);return!1}async pick(timeout,cancellation){if(this._isDisposed)throw new Error(DISPOSE_ERROR);do{if(cancellation&&cancellation.length>0&&await isSomeResolved(cancellation))return NOT_AVAILABLE;const item=this.tryPick();if(item!==NOT_AVAILABLE)return item;let p4;const tasks3=[this._waitForReady(),...timeout?[(p4=cancelableDelay(timeout)).promise]:[],...cancellation||[]],r4=await Promise.race(tasks3);null==p4||p4.cancel();if(r4!==READY_PICK_SIGNAL)return NOT_AVAILABLE}while(!this.isDisposed);return NOT_AVAILABLE}};InboxWithEvent=class extends Inbox{constructor(capacity,onProgress){super(capacity);Object.defineProperty(this,"_callback",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_processed",{enumerable:!0,configurable:!0,writable:!0,value:0});this._callback=onProgress}__onProgress(){var _a7;this._processed++;const event2=new CustomEvent("progress",{detail:this.state});null==(_a7=this._callback)||_a7.call(this,event2.detail)}setOnProgress(callback){this._callback=callback}};(function(ClerkState2){ClerkState2.IDLE="idle";ClerkState2.DISPOSED="disposed";ClerkState2.WORKING="working";ClerkState2.STALLED="not-started"})(ClerkState||(ClerkState={}));SENTINEL_FINISHED=Symbol("finished");SENTINEL_FLUSH=Symbol("flush");ClerkBase=class{get state(){return this._state}constructor(params){Object.defineProperty(this,"_inbox",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_name",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_state",{enumerable:!0,configurable:!0,writable:!0,value:ClerkState.STALLED});Object.defineProperty(this,"_totalProcessed",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"_totalSuccess",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"_totalFailed",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"_totalFetched",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"_disposed",{enumerable:!0,configurable:!0,writable:!0,value:!1});Object.defineProperty(this,"_disposePromise",{enumerable:!0,configurable:!0,writable:!0,value:promiseWithResolver()});Object.defineProperty(this,"_onProgress",{enumerable:!0,configurable:!0,writable:!0,value:void 0});const{name,assigned}=params;this._inbox=assigned;this._name=null!=name?name:this.constructor.name;yieldMicrotask().then((()=>this._mainLoop()));this._inbox.onDisposed.then((()=>this.dispose()))}get stateDetail(){const hasStarted=0!=this._totalFetched,hasAnyUnprocessed=this._totalFetched!=this._totalProcessed,isBusy=0!=this._inbox.state.size||hasAnyUnprocessed;return{totalFetched:this._totalFetched,inboxDetail:this._inbox.state,totalProcessed:this._totalProcessed,state:this._state,hasStarted,isBusy}}onProgress(){var _a7;try{null==(_a7=this._onProgress)||_a7.call(this,this.stateDetail)}catch(e3){}}setOnProgress(callback){this._onProgress=callback}async _mainLoop(){var _a7;this._state=ClerkState.STALLED;this.onProgress();await yieldMicrotask();do{this._state=ClerkState.IDLE;this.onProgress();try{const item=await this._inbox.pick(void 0,[this._disposePromise.promise]);if(item===SENTINEL_FLUSH||item===SENTINEL_FINISHED){await(null==(_a7=this._onSentinel)?void 0:_a7.call(this,item));continue}if(item===NOT_AVAILABLE){if(this._inbox.isDisposed){this._state=ClerkState.DISPOSED;break}continue}this._totalFetched++;this._state=ClerkState.WORKING;this.onProgress();try{await this._onPick(item);this._totalSuccess++}catch(ex){this._totalFailed++;Logger("Error on processing job on clerk");Logger(ex,LOG_LEVEL_VERBOSE)}this._totalProcessed++;this.onProgress()}catch(ex){if(ex instanceof Error&&ex.message!==DISPOSE_ERROR){Logger("Error on picking item on clerk");Logger(ex,LOG_LEVEL_VERBOSE)}}}while(!this._inbox.isDisposed&&!this._disposed);this._state=ClerkState.IDLE;this._disposed?this._state=ClerkState.DISPOSED:this.dispose();this.onProgress()}dispose(){this._disposePromise.resolve();this._disposed=!0;this._state=ClerkState.DISPOSED}get onDisposed(){return this._disposePromise.promise}};Clerk=class extends ClerkBase{async _onPick(item){return await this._job(item)}constructor(params){super(params);Object.defineProperty(this,"_job",{enumerable:!0,configurable:!0,writable:!0,value:void 0});this._job=params.job}};ClerkGroup=class{constructor(params){var _a7;Object.defineProperty(this,"_clerks",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_nameBase",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_assigned",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_hiredCount",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"_job",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_instantiate",{enumerable:!0,configurable:!0,writable:!0,value:void 0});const{assigned,job,instantiate,initialMemberCount}=params;this._assigned=assigned;this._instantiate=instantiate;this._job=job;this._nameBase=null!=(_a7=params.name)?_a7:this.constructor.name;this._clerks=[];for(let i2=0;i2<initialMemberCount;i2++)this.hireMember({assigned,job})}hireMember(params){const name=`${this._nameBase}-${this._hiredCount++}`,clerk=this._instantiate({name,assigned:params.assigned,job:params.job});this._clerks.push(clerk)}fireMember(){const clerk=this._clerks.pop();null==clerk||clerk.dispose()}adjustMemberCount(count){const diff=count-this._clerks.length;if(diff>0)for(let i2=0;i2<diff;i2++)this.hireMember({assigned:this._assigned,job:this._job});else if(diff<0)for(let i2=0;i2<-diff;i2++)this.fireMember()}get stateDetail(){const states=this._clerks.map((clerk=>clerk.stateDetail)),totalFetched=states.reduce(((acc,state2)=>acc+state2.totalFetched),0),totalProcessed=states.reduce(((acc,state2)=>acc+state2.totalProcessed),0),isBusy=states.some((state2=>state2.isBusy)),hasStarted=states.some((state2=>state2.hasStarted));return{totalFetched,totalProcessed,inboxDetail:this._assigned.state,isBusy,hasStarted,state:ClerkState.IDLE}}get freeMembers(){return this._clerks.filter((clerk=>clerk.state===ClerkState.IDLE)).length}dispose(){this._clerks.forEach((clerk=>clerk.dispose()))}};Porter=class extends ClerkBase{async _flush(){this._timeoutTimer=void 0;if(this._buffer.length>0){const previous=this._outgoing.tryCancelPost();if(previous!==NOT_AVAILABLE)if(previous.length>=this._maxSize)this._outgoing.tryPost(previous);else{this._buffer=[...previous,...this._buffer];const filling=this._buffer.splice(0,this._maxSize);if(!1===this._outgoing.tryPost(filling))throw new Error("This should not happen")}const postingItems=this._buffer.splice(0,this._maxSize);if(postingItems.length>0){await this._outgoing.post(postingItems);this.onProgress()}}}get stateDetail(){const stateDetail=super.stateDetail;stateDetail.totalProcessed=this._totalProcessed-this._buffer.length;stateDetail.isBusy=stateDetail.isBusy||!!this._timeoutTimer||this._buffer.length>0;return stateDetail}async _onSentinel(item){(item===SENTINEL_FLUSH||item===SENTINEL_FINISHED)&&await this._flush()}async _onPick(item){this._buffer.push(item);this._buffer.length>=this._maxSize?await this._flush():this._timeout&&(this._timeoutTimer||(this._timeoutTimer=setTimeout((()=>{this._flush()}),this._timeout)))}flush(){return this._flush()}async changeParams(params){let anyChanged=!1;if(null!=params.timeout&&this._timeout!==params.timeout){this._timeout=params.timeout;anyChanged=!0}if(null!=params.maxSize&&this._maxSize!==params.maxSize){this._maxSize=params.maxSize;anyChanged=!0}anyChanged&&await this.flush()}constructor(params){super({assigned:params.from});Object.defineProperty(this,"_outgoing",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_timeout",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_buffer",{enumerable:!0,configurable:!0,writable:!0,value:[]});Object.defineProperty(this,"_timeoutTimer",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_flushing",{enumerable:!0,configurable:!0,writable:!0,value:Promise.resolve()});Object.defineProperty(this,"_separateChunk",{enumerable:!0,configurable:!0,writable:!0,value:!1});this._outgoing=params.to;this._timeout=params.timeout;this._maxSize=params.maxSize}dispose(){this._timeoutTimer&&clearTimeout(this._timeoutTimer);super.dispose()}};Notifier=class{constructor(){Object.defineProperty(this,"_p",{enumerable:!0,configurable:!0,writable:!0,value:promiseWithResolver()});Object.defineProperty(this,"isUsed",{enumerable:!0,configurable:!0,writable:!0,value:!1})}notify(){if(this.isUsed){this.isUsed=!1;this._p.promise.finally(noop);this._p.resolve();this._p=promiseWithResolver()}}get nextNotify(){this.isUsed=!0;return this._p.promise}};allRunningProcessors=new Set([]);QueueProcessor=class{get nowProcessing(){return this.processingEntities}get totalNowProcessing(){var _a7;return this.nowProcessing+((null==(_a7=this._pipeTo)?void 0:_a7.totalNowProcessing)||0)}get remaining(){return this._queue.length+this.processingEntities+this.waitingEntries}get totalRemaining(){var _a7;return this.remaining+((null==(_a7=this._pipeTo)?void 0:_a7.totalRemaining)||0)}updateStatus(setFunc){setFunc();this._updateReactiveSource()}suspend(){this._isSuspended=!0;this._hub.emitEvent("tickSuspended");return this}resume(){this._isSuspended=!1;this._hub.emitEvent("tickResumed");return this}resumePipeLine(){var _a7;null==(_a7=this._pipeTo)||_a7.resumePipeLine();this.resume();return this}startPipeline(){this.root.resumePipeLine();return this}get root(){return void 0===this._root?this:this._root}_initEventHub(){this._hub.onEvent("tickResumed",(()=>this._run()))}async _waitFor(keys3,timeout){const items=keys3.map((key2=>{const p4=promiseWithResolver(),releaser=this._hub.onEvent(key2,(()=>{p4.resolve(key2)}));p4.promise=p4.promise.finally((()=>{releaser()}));return p4})),timer=timeout?cancelableDelay(timeout):void 0,tasks3=[...items.map((i2=>i2.promise)),...timer?[timer.promise]:[]],ret=await Promise.race(tasks3);items.forEach((i2=>i2.resolve(void 0)));return ret}_triggerTickDelay(){this._delayTimer||(this._delayTimer=setTimeout((()=>{this._hub.emitEvent("tickDelayTimeout");this._delayTimer=void 0})))}_clearTickDelay(){if(this._delayTimer){clearTimeout(this._delayTimer);this._delayTimer=void 0}}_notifyIfIdle(){return this.root.__notifyIfIdle()}__notifyIfIdle(){0!=this._processCount||this._canCollectBatch()||this._hub.emitEvent("idle");this._pipeTo&&this._pipeTo.__notifyIfIdle()}_onTick(){if(this._canCollectBatch())if(this._nextProcessNeedsImmediate){this._clearTickDelay();this._nextProcessNeedsImmediate=!1;this._hub.emitEvent("tickImmediate")}else if(this._queue.length>this.yieldThreshold){this._clearTickDelay();this._hub.emitEvent("yielded")}else{if(!this.delay){this._clearTickDelay();this._hub.emitEvent("tickDelayTimeout");return}this._delayTimer||this._triggerTickDelay()}else{this._notifyIfIdle();this._clearTickDelay();this._hub.emitEvent("tickEmpty")}}constructor(processor,params,items,enqueueProcessor){var _a7,_b3,_c2,_d2,_e2,_f,_g;Object.defineProperty(this,"_queue",{enumerable:!0,configurable:!0,writable:!0,value:[]});Object.defineProperty(this,"_processor",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_enqueueProcessor",{enumerable:!0,configurable:!0,writable:!0,value:(queue2,entity)=>(queue2.push(entity),queue2)});Object.defineProperty(this,"_isSuspended",{enumerable:!0,configurable:!0,writable:!0,value:!0});Object.defineProperty(this,"_nextProcessNeedsImmediate",{enumerable:!0,configurable:!0,writable:!0,value:!1});Object.defineProperty(this,"_pipeTo",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_root",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_remainingReactiveSource",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_totalRemainingReactiveSource",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_processingEntitiesReactiveSource",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_keepResultUntilDownstreamConnected",{enumerable:!0,configurable:!0,writable:!0,value:!1});Object.defineProperty(this,"_keptResult",{enumerable:!0,configurable:!0,writable:!0,value:[]});Object.defineProperty(this,"_runOnUpdateBatch",{enumerable:!0,configurable:!0,writable:!0,value:()=>{}});Object.defineProperty(this,"concurrentLimit",{enumerable:!0,configurable:!0,writable:!0,value:1});Object.defineProperty(this,"batchSize",{enumerable:!0,configurable:!0,writable:!0,value:1});Object.defineProperty(this,"yieldThreshold",{enumerable:!0,configurable:!0,writable:!0,value:1});Object.defineProperty(this,"delay",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"maintainDelay",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"interval",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"processingEntities",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"waitingEntries",{enumerable:!0,configurable:!0,writable:!0,value:0});Object.defineProperty(this,"_hub",{enumerable:!0,configurable:!0,writable:!0,value:new EventHub});Object.defineProperty(this,"_delayTimer",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_intervalPaceMaker",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_processingBatches",{enumerable:!0,configurable:!0,writable:!0,value:new Set});Object.defineProperty(this,"addProcessingBatch",{enumerable:!0,configurable:!0,writable:!0,value:value=>{const r4=this._processingBatches.add(value);this._updateBatchProcessStatus();return r4}});Object.defineProperty(this,"deleteProcessingBatch",{enumerable:!0,configurable:!0,writable:!0,value:value=>{const r4=this._processingBatches.delete(value);this._updateBatchProcessStatus();return r4}});Object.defineProperty(this,"_processing",{enumerable:!0,configurable:!0,writable:!0,value:!1});Object.defineProperty(this,"_collected",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_clerks",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_processCount",{enumerable:!0,configurable:!0,writable:!0,value:0});this._root=this;this._processor=processor;this.batchSize=null!=(_a7=null==params?void 0:params.batchSize)?_a7:1;this.yieldThreshold=null!=(_c2=null!=(_b3=null==params?void 0:params.yieldThreshold)?_b3:null==params?void 0:params.batchSize)?_c2:0;this.concurrentLimit=null!=(_d2=null==params?void 0:params.concurrentLimit)?_d2:1;this.delay=null!=(_e2=null==params?void 0:params.delay)?_e2:0;this.maintainDelay=null!=(_f=null==params?void 0:params.maintainDelay)&&_f;this.interval=null!=(_g=null==params?void 0:params.interval)?_g:0;(null==params?void 0:params.keepResultUntilDownstreamConnected)&&(this._keepResultUntilDownstreamConnected=params.keepResultUntilDownstreamConnected);(null==params?void 0:params.remainingReactiveSource)&&(this._remainingReactiveSource=null==params?void 0:params.remainingReactiveSource);(null==params?void 0:params.totalRemainingReactiveSource)&&(this._totalRemainingReactiveSource=null==params?void 0:params.totalRemainingReactiveSource);(null==params?void 0:params.processingEntitiesReactiveSource)&&(this._processingEntitiesReactiveSource=null==params?void 0:params.processingEntitiesReactiveSource);void 0!==(null==params?void 0:params.suspended)&&(this._isSuspended=null==params?void 0:params.suspended);enqueueProcessor&&this.replaceEnqueueProcessor(enqueueProcessor);void 0!==(null==params?void 0:params.pipeTo)&&this.pipeTo(params.pipeTo);this._intervalPaceMaker=new PaceMaker(this.interval);items&&this.enqueueAll(items);allRunningProcessors.add(this);this._initClerks();this._initEventHub();this.resume()}replaceEnqueueProcessor(processor){this._enqueueProcessor=processor;return this}modifyQueue(processor){this._queue=processor(this._queue);this._onTick()}clearQueue(){this._queue=[];this._onTick()}onUpdateProgress(proc){this._runOnUpdateBatch=proc;return this}pipeTo(pipeTo){this._pipeTo=pipeTo;this._pipeTo._root=this.root;if(this._keptResult.length>0){const temp=[...this._keptResult];this._keptResult=[];this._pipeTo.enqueueAll(temp)}return pipeTo}isIdle(){return this._isIdle()&&(!this._pipeTo||this._pipeTo.isIdle())}_isIdle(){return 0==this.totalRemaining}async _waitForIdle(){if(this._isSuspended)return Promise.resolve();if(this._isIdle())return Promise.resolve();do{const r4=await this._waitFor(["tickEmpty","tick","tickSuspended","suspended","idle"]);if("tickSuspended"===r4)break;if("suspended"==r4)break;if("tickEmpty"==r4)break;if("idle"==r4)break}while(!this._isIdle());return Promise.resolve()}idleDetectors(){const thisPromise=this._waitForIdle();return this._pipeTo?[thisPromise,...this._pipeTo.idleDetectors()]:[thisPromise]}get isSuspended(){var _a7;return this._isSuspended||(null==(_a7=this._pipeTo)?void 0:_a7.isSuspended)||!1}_updateReactiveSource(){this.root.updateReactiveSource()}updateReactiveSource(){this._pipeTo&&this._pipeTo.updateReactiveSource();this._remainingReactiveSource&&(this._remainingReactiveSource.value=this.remaining);this._totalRemainingReactiveSource&&(this._totalRemainingReactiveSource.value=this.totalRemaining);this._processingEntitiesReactiveSource&&(this._processingEntitiesReactiveSource.value=this.nowProcessing)}_updateBatchProcessStatus(){this._updateReactiveSource();this._runOnUpdateBatch()}_collectBatch(){return this._queue.splice(0,this.batchSize)}_canCollectBatch(){return 0!==this._queue.length}enqueue(entity){this._queue=this._enqueueProcessor(this._queue,entity);this._updateBatchProcessStatus();this._onTick();return this}enqueueAll(entities){let queue2=this._queue;for(const v2 of entities)queue2=this._enqueueProcessor(queue2,v2);this._queue=queue2;this._updateBatchProcessStatus();this._onTick();return this}requestNextFlush(){this._nextProcessNeedsImmediate=!0;this._onTick()}async _waitForSuspended(){}flush(){if(this._isSuspended)return Promise.resolve(!1);this.requestNextFlush();return this.waitForAllDownstream()}async waitForAllDownstream(timeout){const baseTasks=[];timeout&&baseTasks.push(delay(timeout,RESULT_TIMED_OUT));do{const idleTasks=this.idleDetectors(),tasks3=[...baseTasks,Promise.all(idleTasks)];if(await Promise.race(tasks3)===RESULT_TIMED_OUT)return!1}while(!this.isIdle());return!0}waitForAllProcessed(timeout){this.root.startPipeline();return this.root.waitForAllDownstream(timeout)}async waitForAllDoneAndTerminate(timeout){this.root.startPipeline();const r4=await this.root.waitForAllDownstream(timeout);this.terminateAll();return r4}async _runProcessor(items){const ret=await this._processor(items);ret&&(this._pipeTo?this._pipeTo.enqueueAll(ret):this._keepResultUntilDownstreamConnected&&this._keptResult.push(...ret))}async*pump(){do{const ticked=await this._waitFor(["tickImmediate","yielded","tickSuspended","tickDelayTimeout","tickSuspended"]);L2:do{const items=this._collectBatch();if(0==items.length)break L2;yield items}while(this._canCollectBatch());if("tickSuspended"==ticked)break}while(!this._isSuspended)}_initClerks(){this._collected=new Inbox(2*this.concurrentLimit);this._clerks=new ClerkGroup({assigned:this._collected,job:async items=>{const batchLength=items.length;this.updateStatus((()=>{this.processingEntities+=batchLength;this.waitingEntries-=batchLength}));await this._intervalPaceMaker.paced;this._processCount++;try{await this._runProcessor(items)}catch(ex){Logger("Processor error!");Logger(ex,LOG_LEVEL_VERBOSE)}this.updateStatus((()=>{this.processingEntities-=batchLength}));this._processCount--;0==this._processCount&&this._notifyIfIdle()},initialMemberCount:this.concurrentLimit,instantiate:params=>new Clerk(params)})}async _process(){if(!this._processing&&!this._isSuspended)try{this._processing=!0;do{const batchPump=this.pump();for await(const batch of batchPump){if(!batch||0===batch.length){this._hub.emitEvent("tickEmpty");continue}const batchLength=batch.length;this.updateStatus((()=>{this.waitingEntries+=batchLength}));await this._collected.post(batch)}}while(!this._isSuspended);this._hub.emitEvent("suspended")}finally{this._processing=!1}}_run(){this._isSuspended||this._processing||fireAndForget((()=>this._process()))}terminateAll(){this.root.terminate()}terminate(){if(this._pipeTo){this._pipeTo.terminate();this._pipeTo=void 0}this._isSuspended=!0;this._enqueueProcessor=()=>[];this._processor=()=>Promise.resolve([]);this.clearQueue();this._hub.emitEvent("tickSuspended");this._hub.emitEvent("tickSuspended");this._hub.emitEvent("tickSuspended");this._collected.dispose();this._clerks.dispose();this._queue.length=0;allRunningProcessors.delete(this)}};ch2={};wk=function(c3,id,msg,transfer,cb2){var w2=new Worker(ch2[id]||(ch2[id]=URL.createObjectURL(new Blob([c3+';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'],{type:"text/javascript"}))));w2.onmessage=function(e3){var err2,d4=e3.data,ed=d4.$e$;if(ed){(err2=new Error(ed[0])).code=ed[1];err2.stack=ed[2];cb2(err2,null)}else cb2(null,d4)};w2.postMessage(msg,transfer);return w2};u8=Uint8Array,u16=Uint16Array,i32=Int32Array;fleb=new u8([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]);fdeb=new u8([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]);clim=new u8([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);freb=function(eb,start){var i2,r4,j2,b3=new u16(31);for(i2=0;i2<31;++i2)b3[i2]=start+=1<<eb[i2-1];r4=new i32(b3[30]);for(i2=1;i2<30;++i2)for(j2=b3[i2];j2<b3[i2+1];++j2)r4[j2]=j2-b3[i2]<<5|i2;return{b:b3,r:r4}};_a2=freb(fleb,2),fl=_a2.b,revfl=_a2.r;fl[28]=258,revfl[258]=28;_b=freb(fdeb,0),fd=_b.b,revfd=_b.r;rev=new u16(32768);for(i2=0;i2<32768;++i2){x2=(61680&(x2=(52428&(x2=(43690&i2)>>1|(21845&i2)<<1))>>2|(13107&x2)<<2))>>4|(3855&x2)<<4;rev[i2]=((65280&x2)>>8|(255&x2)<<8)>>1}hMap=function(cd2,mb,r4){for(var le,co2,rvb,sv,r_1,v2,m3,s2=cd2.length,i2=0,l2=new u16(mb);i2<s2;++i2)cd2[i2]&&++l2[cd2[i2]-1];le=new u16(mb);for(i2=1;i2<mb;++i2)le[i2]=le[i2-1]+l2[i2-1]<<1;if(r4){co2=new u16(1<<mb);rvb=15-mb;for(i2=0;i2<s2;++i2)if(cd2[i2]){sv=i2<<4|cd2[i2];r_1=mb-cd2[i2];for(m3=(v2=le[cd2[i2]-1]++<<r_1)|(1<<r_1)-1;v2<=m3;++v2)co2[rev[v2]>>rvb]=sv}}else{co2=new u16(s2);for(i2=0;i2<s2;++i2)cd2[i2]&&(co2[i2]=rev[le[cd2[i2]-1]++]>>15-cd2[i2])}return co2};flt=new u8(288);for(i2=0;i2<144;++i2)flt[i2]=8;for(i2=144;i2<256;++i2)flt[i2]=9;for(i2=256;i2<280;++i2)flt[i2]=7;for(i2=280;i2<288;++i2)flt[i2]=8;fdt=new u8(32);for(i2=0;i2<32;++i2)fdt[i2]=5;flm=hMap(flt,9,0),flrm=hMap(flt,9,1);fdm=hMap(fdt,5,0),fdrm=hMap(fdt,5,1);max=function(a2){var i2,m3=a2[0];for(i2=1;i2<a2.length;++i2)a2[i2]>m3&&(m3=a2[i2]);return m3};bits=function(d4,p4,m3){var o2=p4/8|0;return(d4[o2]|d4[o2+1]<<8)>>(7&p4)&m3};bits16=function(d4,p4){var o2=p4/8|0;return(d4[o2]|d4[o2+1]<<8|d4[o2+2]<<16)>>(7&p4)};shft=function(p4){return(p4+7)/8|0};slc=function(v2,s2,e3){(null==s2||s2<0)&&(s2=0);(null==e3||e3>v2.length)&&(e3=v2.length);return new u8(v2.subarray(s2,e3))};ec=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"];err=function(ind,msg,nt){var e3=new Error(msg||ec[ind]);e3.code=ind;Error.captureStackTrace&&Error.captureStackTrace(e3,err);if(!nt)throw e3;return e3};inflt=function(dat,st,buf,dict){var noBuf,resize,noSt,cbuf,final,pos,bt2,lm,dm,lbt,dbt,tbts,type,s2,l2,t3,hLit,hcLen,tl,ldt,clt,i2,clb,clbmsk,clm,r4,c3,n3,lt,dt,lms,dms,lpos,sym,add,b3,d4,dsym,end,shift,dend,sl=dat.length,dl=dict?dict.length:0;if(!sl||st.f&&!st.l)return buf||new u8(0);resize=(noBuf=!buf)||2!=st.i;noSt=st.i;noBuf&&(buf=new u8(3*sl));cbuf=function(l3){var nbuf,bl2=buf.length;if(l3>bl2){(nbuf=new u8(Math.max(2*bl2,l3))).set(buf);buf=nbuf}};final=st.f||0,pos=st.p||0,bt2=st.b||0,lm=st.l,dm=st.d,lbt=st.m,dbt=st.n;tbts=8*sl;do{if(!lm){final=bits(dat,pos,1);type=bits(dat,pos+1,3);pos+=3;if(!type){if((t3=(s2=shft(pos)+4)+(l2=dat[s2-4]|dat[s2-3]<<8))>sl){noSt&&err(0);break}resize&&cbuf(bt2+l2);buf.set(dat.subarray(s2,t3),bt2);st.b=bt2+=l2,st.p=pos=8*t3,st.f=final;continue}if(1==type)lm=flrm,dm=fdrm,lbt=9,dbt=5;else if(2==type){hLit=bits(dat,pos,31)+257,hcLen=bits(dat,pos+10,15)+4;tl=hLit+bits(dat,pos+5,31)+1;pos+=14;ldt=new u8(tl);clt=new u8(19);for(i2=0;i2<hcLen;++i2)clt[clim[i2]]=bits(dat,pos+3*i2,7);pos+=3*hcLen;clbmsk=(1<<(clb=max(clt)))-1;clm=hMap(clt,clb,1);for(i2=0;i2<tl;){pos+=15&(r4=clm[bits(dat,pos,clbmsk)]);if((s2=r4>>4)<16)ldt[i2++]=s2;else{c3=0,n3=0;16==s2?(n3=3+bits(dat,pos,3),pos+=2,c3=ldt[i2-1]):17==s2?(n3=3+bits(dat,pos,7),pos+=3):18==s2&&(n3=11+bits(dat,pos,127),pos+=7);for(;n3--;)ldt[i2++]=c3}}lt=ldt.subarray(0,hLit),dt=ldt.subarray(hLit);lbt=max(lt);dbt=max(dt);lm=hMap(lt,lbt,1);dm=hMap(dt,dbt,1)}else err(1);if(pos>tbts){noSt&&err(0);break}}resize&&cbuf(bt2+131072);lms=(1<<lbt)-1,dms=(1<<dbt)-1;lpos=pos;for(;;lpos=pos){sym=(c3=lm[bits16(dat,pos)&lms])>>4;if((pos+=15&c3)>tbts){noSt&&err(0);break}c3||err(2);if(sym<256)buf[bt2++]=sym;else{if(256==sym){lpos=pos,lm=null;break}add=sym-254;if(sym>264){b3=fleb[i2=sym-257];add=bits(dat,pos,(1<<b3)-1)+fl[i2];pos+=b3}dsym=(d4=dm[bits16(dat,pos)&dms])>>4;d4||err(3);pos+=15&d4;dt=fd[dsym];if(dsym>3){b3=fdeb[dsym];dt+=bits16(dat,pos)&(1<<b3)-1,pos+=b3}if(pos>tbts){noSt&&err(0);break}resize&&cbuf(bt2+131072);end=bt2+add;if(bt2<dt){shift=dl-dt,dend=Math.min(dt,end);shift+bt2<0&&err(3);for(;bt2<dend;++bt2)buf[bt2]=dict[shift+bt2]}for(;bt2<end;++bt2)buf[bt2]=buf[bt2-dt]}}st.l=lm,st.p=lpos,st.b=bt2,st.f=final;lm&&(final=1,st.m=lbt,st.d=dm,st.n=dbt)}while(!final);return bt2!=buf.length&&noBuf?slc(buf,0,bt2):buf.subarray(0,bt2)};wbits=function(d4,p4,v2){v2<<=7&p4;var o2=p4/8|0;d4[o2]|=v2;d4[o2+1]|=v2>>8};wbits16=function(d4,p4,v2){v2<<=7&p4;var o2=p4/8|0;d4[o2]|=v2;d4[o2+1]|=v2>>8;d4[o2+2]|=v2>>16};hTree=function(d4,mb){var i2,s2,t22,v2,l2,r4,i0,i1,i22,maxSym,tr,mbt,dt,lft,cst,i2_1,i2_2,i2_3,t3=[];for(i2=0;i2<d4.length;++i2)d4[i2]&&t3.push({s:i2,f:d4[i2]});s2=t3.length;t22=t3.slice();if(!s2)return{t:et,l:0};if(1==s2){(v2=new u8(t3[0].s+1))[t3[0].s]=1;return{t:v2,l:1}}t3.sort((function(a2,b3){return a2.f-b3.f}));t3.push({s:-1,f:25001});l2=t3[0],r4=t3[1],i0=0,i1=1,i22=2;t3[0]={s:-1,f:l2.f+r4.f,l:l2,r:r4};for(;i1!=s2-1;){l2=t3[t3[i0].f<t3[i22].f?i0++:i22++];r4=t3[i0!=i1&&t3[i0].f<t3[i22].f?i0++:i22++];t3[i1++]={s:-1,f:l2.f+r4.f,l:l2,r:r4}}maxSym=t22[0].s;for(i2=1;i2<s2;++i2)t22[i2].s>maxSym&&(maxSym=t22[i2].s);tr=new u16(maxSym+1);if((mbt=ln(t3[i1-1],tr,0))>mb){i2=0,dt=0;cst=1<<(lft=mbt-mb);t22.sort((function(a2,b3){return tr[b3.s]-tr[a2.s]||a2.f-b3.f}));for(;i2<s2;++i2){i2_1=t22[i2].s;if(!(tr[i2_1]>mb))break;dt+=cst-(1<<mbt-tr[i2_1]);tr[i2_1]=mb}dt>>=lft;for(;dt>0;){i2_2=t22[i2].s;tr[i2_2]<mb?dt-=1<<mb-tr[i2_2]++-1:++i2}for(;i2>=0&&dt;--i2){i2_3=t22[i2].s;if(tr[i2_3]==mb){--tr[i2_3];++dt}}mbt=mb}return{t:new u8(tr),l:mbt}};ln=function(n3,l2,d4){return-1==n3.s?Math.max(ln(n3.l,l2,d4+1),ln(n3.r,l2,d4+1)):l2[n3.s]=d4};lc=function(c3){for(var cl2,cli,cln,cls,w2,i2,s2=c3.length;s2&&!c3[--s2];);cl2=new u16(++s2);cli=0,cln=c3[0],cls=1;w2=function(v2){cl2[cli++]=v2};for(i2=1;i2<=s2;++i2)if(c3[i2]==cln&&i2!=s2)++cls;else{if(!cln&&cls>2){for(;cls>138;cls-=138)w2(32754);if(cls>2){w2(cls>10?cls-11<<5|28690:cls-3<<5|12305);cls=0}}else if(cls>3){w2(cln),--cls;for(;cls>6;cls-=6)w2(8304);cls>2&&(w2(cls-3<<5|8208),cls=0)}for(;cls--;)w2(cln);cls=1;cln=c3[i2]}return{c:cl2.subarray(0,cli),n:s2}};clen=function(cf2,cl2){var i2,l2=0;for(i2=0;i2<cl2.length;++i2)l2+=cf2[i2]*cl2[i2];return l2};wfblk=function(out,pos,dat){var i2,s2=dat.length,o2=shft(pos+2);out[o2]=255&s2;out[o2+1]=s2>>8;out[o2+2]=255^out[o2];out[o2+3]=255^out[o2+1];for(i2=0;i2<s2;++i2)out[o2+i2+4]=dat[i2];return 8*(o2+4+s2)};wblk=function(dat,out,final,syms,lf,df,eb,li,bs2,bl2,p4){var _a7,dlt,mlb,_b3,ddt,mdb,_c2,lclt,nlc,_d2,lcdt,ndc,lcfreq,i2,_e2,lct,mlcb,nlcc,flen,ftlen,dtlen,lm,ll,dm,dl,llm,lcts,it,clct,len,sym,dst;wbits(out,p4++,final);++lf[256];dlt=(_a7=hTree(lf,15)).t,mlb=_a7.l;ddt=(_b3=hTree(df,15)).t,mdb=_b3.l;lclt=(_c2=lc(dlt)).c,nlc=_c2.n;lcdt=(_d2=lc(ddt)).c,ndc=_d2.n;lcfreq=new u16(19);for(i2=0;i2<lclt.length;++i2)++lcfreq[31&lclt[i2]];for(i2=0;i2<lcdt.length;++i2)++lcfreq[31&lcdt[i2]];lct=(_e2=hTree(lcfreq,7)).t,mlcb=_e2.l;nlcc=19;for(;nlcc>4&&!lct[clim[nlcc-1]];--nlcc);flen=bl2+5<<3;ftlen=clen(lf,flt)+clen(df,fdt)+eb;dtlen=clen(lf,dlt)+clen(df,ddt)+eb+14+3*nlcc+clen(lcfreq,lct)+2*lcfreq[16]+3*lcfreq[17]+7*lcfreq[18];if(bs2>=0&&flen<=ftlen&&flen<=dtlen)return wfblk(out,p4,dat.subarray(bs2,bs2+bl2));wbits(out,p4,1+(dtlen<ftlen)),p4+=2;if(dtlen<ftlen){lm=hMap(dlt,mlb,0),ll=dlt,dm=hMap(ddt,mdb,0),dl=ddt;llm=hMap(lct,mlcb,0);wbits(out,p4,nlc-257);wbits(out,p4+5,ndc-1);wbits(out,p4+10,nlcc-4);p4+=14;for(i2=0;i2<nlcc;++i2)wbits(out,p4+3*i2,lct[clim[i2]]);p4+=3*nlcc;lcts=[lclt,lcdt];for(it=0;it<2;++it){clct=lcts[it];for(i2=0;i2<clct.length;++i2){len=31&clct[i2];wbits(out,p4,llm[len]),p4+=lct[len];len>15&&(wbits(out,p4,clct[i2]>>5&127),p4+=clct[i2]>>12)}}}else lm=flm,ll=flt,dm=fdm,dl=fdt;for(i2=0;i2<li;++i2)if((sym=syms[i2])>255){wbits16(out,p4,lm[257+(len=sym>>18&31)]),p4+=ll[len+257];len>7&&(wbits(out,p4,sym>>23&31),p4+=fleb[len]);wbits16(out,p4,dm[dst=31&sym]),p4+=dl[dst];dst>3&&(wbits16(out,p4,sym>>5&8191),p4+=fdeb[dst])}else wbits16(out,p4,lm[sym]),p4+=ll[sym];wbits16(out,p4,lm[256]);return p4+ll[256]};deo=new i32([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]);et=new u8(0);dflt=function(dat,lvl,plvl,pre,post,st){var opt,n3,c3,msk_1,prev,head2,bs1_1,bs2_1,hsh,syms,lf,df,lc_1,eb,i2,li,wi,bs2,hv,imod,pimod,rem,j2,l2,d4,ch_1,dif,maxn,maxd,ml,nl,mmd,md,ti,cd2,lin,din,e3,s2=st.z||dat.length,o2=new u8(pre+s2+5*(1+Math.ceil(s2/7e3))+post),w2=o2.subarray(pre,o2.length-post),lst=st.l,pos=7&(st.r||0);if(lvl){pos&&(w2[0]=st.r>>3);n3=(opt=deo[lvl-1])>>13,c3=8191&opt;msk_1=(1<<plvl)-1;prev=st.p||new u16(32768),head2=st.h||new u16(msk_1+1);bs1_1=Math.ceil(plvl/3),bs2_1=2*bs1_1;hsh=function(i3){return(dat[i3]^dat[i3+1]<<bs1_1^dat[i3+2]<<bs2_1)&msk_1};syms=new i32(25e3);lf=new u16(288),df=new u16(32);lc_1=0,eb=0,i2=st.i||0,li=0,wi=st.w||0,bs2=0;for(;i2+2<s2;++i2){imod=32767&i2,pimod=head2[hv=hsh(i2)];prev[imod]=pimod;head2[hv]=imod;if(wi<=i2){rem=s2-i2;if((lc_1>7e3||li>24576)&&(rem>423||!lst)){pos=wblk(dat,w2,0,syms,lf,df,eb,li,bs2,i2-bs2,pos);li=lc_1=eb=0,bs2=i2;for(j2=0;j2<286;++j2)lf[j2]=0;for(j2=0;j2<30;++j2)df[j2]=0}l2=2,d4=0,ch_1=c3,dif=imod-pimod&32767;if(rem>2&&hv==hsh(i2-dif)){maxn=Math.min(n3,rem)-1;maxd=Math.min(32767,i2);ml=Math.min(258,rem);for(;dif<=maxd&&--ch_1&&imod!=pimod;){if(dat[i2+l2]==dat[i2+l2-dif]){nl=0;for(;nl<ml&&dat[i2+nl]==dat[i2+nl-dif];++nl);if(nl>l2){l2=nl,d4=dif;if(nl>maxn)break;mmd=Math.min(dif,nl-2);md=0;for(j2=0;j2<mmd;++j2)(cd2=(ti=i2-dif+j2&32767)-prev[ti]&32767)>md&&(md=cd2,pimod=ti)}}dif+=(imod=pimod)-(pimod=prev[imod])&32767}}if(d4){syms[li++]=268435456|revfl[l2]<<18|revfd[d4];lin=31&revfl[l2],din=31&revfd[d4];eb+=fleb[lin]+fdeb[din];++lf[257+lin];++df[din];wi=i2+l2;++lc_1}else{syms[li++]=dat[i2];++lf[dat[i2]]}}}for(i2=Math.max(i2,wi);i2<s2;++i2){syms[li++]=dat[i2];++lf[dat[i2]]}pos=wblk(dat,w2,lst,syms,lf,df,eb,li,bs2,i2-bs2,pos);if(!lst){st.r=7&pos|w2[pos/8|0]<<3;pos-=7;st.h=head2,st.p=prev,st.i=i2,st.w=wi}}else{for(i2=st.w||0;i2<s2+lst;i2+=65535){if((e3=i2+65535)>=s2){w2[pos/8|0]=lst;e3=s2}pos=wfblk(w2,pos+1,dat.subarray(i2,e3))}st.i=s2}return slc(o2,0,pre+shft(pos)+post)};0;0;dopt=function(dat,opt,pre,post,st){var dict,newDat;if(!st){st={l:1};if(opt.dictionary){dict=opt.dictionary.subarray(-32768);(newDat=new u8(dict.length+dat.length)).set(dict);newDat.set(dat,dict.length);dat=newDat;st.w=dict.length}}return dflt(dat,null==opt.level?6:opt.level,null==opt.mem?st.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(dat.length)))):20:12+opt.mem,pre,post,st)};mrg=function(a2,b3){var k2,o2={};for(k2 in a2)o2[k2]=a2[k2];for(k2 in b3)o2[k2]=b3[k2];return o2};wcln=function(fn,fnStr,td3){var i2,v2,k2,st_1,spInd,t3,dt=fn(),st=fn.toString(),ks=st.slice(st.indexOf("[")+1,st.lastIndexOf("]")).replace(/\s+/g,"").split(",");for(i2=0;i2<dt.length;++i2){v2=dt[i2],k2=ks[i2];if("function"==typeof v2){fnStr+=";"+k2+"=";st_1=v2.toString();if(v2.prototype)if(-1!=st_1.indexOf("[native code]")){spInd=st_1.indexOf(" ",8)+1;fnStr+=st_1.slice(spInd,st_1.indexOf("(",spInd))}else{fnStr+=st_1;for(t3 in v2.prototype)fnStr+=";"+k2+".prototype."+t3+"="+v2.prototype[t3].toString()}else fnStr+=st_1}else td3[k2]=v2}return fnStr};ch=[];cbfs=function(v2){var k2,tl=[];for(k2 in v2)v2[k2].buffer&&tl.push((v2[k2]=new v2[k2].constructor(v2[k2])).buffer);return tl};wrkr=function(fns,init3,id,cb2){var fnStr,td_1,m3,i2,td3;if(!ch[id]){fnStr="",td_1={},m3=fns.length-1;for(i2=0;i2<m3;++i2)fnStr=wcln(fns[i2],fnStr,td_1);ch[id]={c:wcln(fns[m3],fnStr,td_1),e:td_1}}td3=mrg({},ch[id].e);return wk(ch[id].c+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+init3.toString()+"}",id,td3,cbfs(td3),cb2)};bInflt=function(){return[u8,u16,i32,fleb,fdeb,clim,fl,fd,flrm,fdrm,rev,ec,hMap,max,bits,bits16,shft,slc,err,inflt,inflateSync,pbf,gopt]};bDflt=function(){return[u8,u16,i32,fleb,fdeb,clim,revfl,revfd,flm,flt,fdm,fdt,rev,deo,et,hMap,wbits,wbits16,hTree,ln,lc,clen,wfblk,wblk,shft,slc,dflt,dopt,deflateSync,pbf]};pbf=function(msg){return postMessage(msg,[msg.buffer])};gopt=function(o2){return o2&&{out:o2.size&&new u8(o2.size),dictionary:o2.dictionary}};cbify=function(dat,opts,fns,init3,id,cb2){var w2=wrkr(fns,init3,id,(function(err2,dat2){w2.terminate();cb2(err2,dat2)}));w2.postMessage([dat,opts],opts.consume?[dat.buffer]:[]);return function(){w2.terminate()}};0;0;0;0;0;0;fltn=function(d4,p4,t3,o2){var k2,val2,n3,op;for(k2 in d4){val2=d4[k2],n3=p4+k2,op=o2;Array.isArray(val2)&&(op=mrg(o2,val2[1]),val2=val2[0]);if(val2 instanceof u8)t3[n3]=[val2,op];else{t3[n3+="/"]=[new u8(0),op];fltn(val2,n3,t3,o2)}}};td2="undefined"!=typeof TextDecoder&&new TextDecoder;try{td2.decode(et,{stream:!0})}catch(e3){}"function"==typeof queueMicrotask?queueMicrotask:"function"==typeof setTimeout&&setTimeout;encrypt2=function encryptWorker(input,passphrase,autoCalculateIterations){return encryptionOnWorker({type:"encrypt",input,passphrase,autoCalculateIterations})};decrypt2=function decryptWorker(input,passphrase,autoCalculateIterations){return encryptionOnWorker({type:"decrypt",input,passphrase,autoCalculateIterations})};isValidRemoteCouchDBURI=uri=>!!uri.startsWith("https://")||!!uri.startsWith("http://");checkRemoteVersion=async(db,migrate,barrier=10)=>{try{const versionInfo=await db.get("obsydian_livesync_version");if("versioninfo"!=versionInfo.type)return!1;const version2=versionInfo.version;if(version2<barrier&&await migrate(version2,barrier)){await bumpRemoteVersion(db);return!0}return version2==barrier}catch(ex){if(isErrorOfMissingDoc(ex))return!!await bumpRemoteVersion(db);throw ex}};bumpRemoteVersion=async(db,barrier=10)=>{const vi={_id:"obsydian_livesync_version",version:barrier,type:"versioninfo"},versionInfo=await resolveWithIgnoreKnownError(db.get("obsydian_livesync_version"),vi);if("versioninfo"!=versionInfo.type)return!1;vi._rev=versionInfo._rev;await db.put(vi);return!0};checkSyncInfo=async db=>{try{const syncinfo=await db.get(SYNCINFO_ID);console.log(syncinfo);return!0}catch(ex){if(isErrorOfMissingDoc(ex)){const randomStrSrc="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",temp=[...Array(30)].map((e3=>Math.floor(Math.random()*randomStrSrc.length))).map((e3=>randomStrSrc[e3])).join(""),newSyncInfo={_id:SYNCINFO_ID,type:"syncinfo",data:temp};return!!await db.put(newSyncInfo)}console.dir(ex);return!1}};wrappedInflate=wrapFflateFunc((function inflate(data,opts,cb2){cb2||(cb2=opts,opts={});"function"!=typeof cb2&&err(7);return cbify(data,opts,[bInflt],(function(ev){return pbf(inflateSync(ev.data[0],gopt(ev.data[1])))}),1,cb2)}));wrappedDeflate=wrapFflateFunc((function deflate(data,opts,cb2){cb2||(cb2=opts,opts={});"function"!=typeof cb2&&err(7);return cbify(data,opts,[bDflt],(function(ev){return pbf(deflateSync(ev.data[0],ev.data[1]))}),0,cb2)}));replicationFilter=(db,compress)=>{db.transform({incoming:async doc=>compress?await async function compressDoc(doc){if(!("data"in doc))return doc;if("string"!=typeof doc.data)return doc;if(doc.data.startsWith("LZ"))return doc;const oldData=doc.data,compressed=await async function _compressText(text2){const converted=function tryConvertBase64ToArrayBuffer(base64){try{const b64F=base64.replace(/\r|\n/g,"");if(!regexpBase64.test(b64F))return!1;const binary_string=globalThis.atob(b64F);if(globalThis.btoa(binary_string)!==b64F)return!1;const len=binary_string.length,bytes=new Uint8Array(len);for(let i2=0;i2<len;i2++)bytes[i2]=binary_string.charCodeAt(i2);return bytes.buffer}catch(ex){return!1}}(text2),data=new Uint8Array(converted||await new Blob([text2],{type:"application/octet-stream"}).arrayBuffer());if(0==data.buffer.byteLength)return"";const df=await wrappedDeflate(new Uint8Array(data),{consume:!0,level:8});return(converted?"~":"")+await arrayBufferToBase64Single(df)}(oldData),newData="LZ"+compressed;doc.data.length>newData.length&&(doc.data=newData);return doc}(doc):doc,outgoing:async doc=>await async function decompressDoc(doc){if(!("data"in doc))return doc;if("string"!=typeof doc.data)return doc;doc.data.startsWith("LZ")&&(doc.data=await async function _decompressText(compressed){if(0==compressed.length)return"";const converted="~"==compressed[0],src=compressed.substring(converted?1:0);if(0==src.length)return"";const ab2=new Uint8Array(base64ToArrayBuffer(src));if(0==ab2.length)return"";const ret=await wrappedInflate(new Uint8Array(ab2),{consume:!0});if(converted)return await arrayBufferToBase64Single(ret);const response=new Blob([ret]);return await response.text()}(doc.data.substring(4)));return doc}(doc)})};EDEN_ENCRYPTED_KEY="h:++encrypted";preprocessOutgoing=async doc=>Promise.resolve(doc);enableEncryption=(db,passphrase,useDynamicIterationCount,migrationDecrypt)=>{const decrypted=new Map,incoming=async doc=>{const saveDoc={...doc};if(isEncryptedChunkEntry(saveDoc)||isSyncInfoEntry(saveDoc))try{if(!("e_"in saveDoc)){saveDoc.data=await encrypt2(saveDoc.data,passphrase,useDynamicIterationCount);saveDoc.e_=!0}}catch(ex){Logger("Encryption failed.",LOG_LEVEL_NOTICE);Logger(ex);throw ex}(function shouldEncryptEden(doc){return"eden"in doc&&!("h:++encrypted"in doc.eden)})(saveDoc)&&(saveDoc.eden={[EDEN_ENCRYPTED_KEY]:{data:await encrypt2(JSON.stringify(saveDoc.eden),passphrase,useDynamicIterationCount),epoch:999999}});if(isObfuscatedEntry(saveDoc))try{const path2=getPath(saveDoc);isPathProbablyObfuscated(path2)||(saveDoc.path=await async function obfuscatePath(path2,passphrase,autoCalculateIterations){const dataBuf=writeString(path2),[key2,salt,iv]=await async function getKeyForObfuscatePath(passphrase,dataBuf,autoCalculateIterations){const passphraseLen=15-passphrase.length,iteration=autoCalculateIterations?1e3*(passphraseLen>0?passphraseLen:0)+121-passphraseLen:1e5,passphraseBin=(new TextEncoder).encode(passphrase),digest=await webcrypto3.subtle.digest({name:"SHA-256"},passphraseBin),buf2=new Uint8Array(await webcrypto3.subtle.digest({name:"SHA-256"},new Uint8Array([...dataBuf,...passphraseBin]))),salt=buf2.slice(0,16),iv=buf2.slice(16,32),keyMaterial=await webcrypto3.subtle.importKey("raw",digest,{name:"PBKDF2"},!1,["deriveKey"]);return[await webcrypto3.subtle.deriveKey({name:"PBKDF2",salt,iterations:iteration,hash:"SHA-256"},keyMaterial,{name:"AES-GCM",length:256},!1,["encrypt"]),salt,iv]}(passphrase,dataBuf,autoCalculateIterations),encryptedDataArrayBuffer=await webcrypto3.subtle.encrypt({name:"AES-GCM",iv},key2,dataBuf),encryptedData2=await arrayBufferToBase64Single(new Uint8Array(encryptedDataArrayBuffer));return`%${uint8ArrayToHexString(iv)}${uint8ArrayToHexString(salt)}${encryptedData2}`}(path2,passphrase,useDynamicIterationCount))}catch(ex){Logger("Encryption failed.",LOG_LEVEL_NOTICE);Logger(ex);throw ex}return saveDoc};preprocessOutgoing=incoming;db.transform({incoming,outgoing:async doc=>{var _a7,_b3;const loadDoc={...doc},_isChunkOrSyncInfo=isEncryptedChunkEntry(loadDoc)||isSyncInfoEntry(loadDoc),_isObfuscatedEntry=isObfuscatedEntry(loadDoc),_shouldDecryptEden=function shouldDecryptEden(doc){return"eden"in doc&&"h:++encrypted"in doc.eden}(loadDoc);if(_isChunkOrSyncInfo||_isObfuscatedEntry||_shouldDecryptEden){if(migrationDecrypt&&decrypted.has(loadDoc._id))return loadDoc;try{if(_isChunkOrSyncInfo){loadDoc.data=await decrypt2(loadDoc.data,passphrase,useDynamicIterationCount);delete loadDoc.e_}else if("e_"in loadDoc){loadDoc.data=await decrypt2(loadDoc.data,passphrase,useDynamicIterationCount);delete loadDoc.e_}if(_isObfuscatedEntry){const path2=getPath(loadDoc);isPathProbablyObfuscated(path2)&&(loadDoc.path=await decrypt2(path2,passphrase,useDynamicIterationCount))}_shouldDecryptEden&&(loadDoc.eden=JSON.parse(await decrypt2(loadDoc.eden["h:++encrypted"].data,passphrase,useDynamicIterationCount)));migrationDecrypt&&decrypted.set(loadDoc._id,!0)}catch(ex){if(!useDynamicIterationCount){Logger("Decryption failed.",LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_VERBOSE);Logger(`id:${loadDoc._id}-${null==(_b3=loadDoc._rev)?void 0:_b3.substring(0,10)}`,LOG_LEVEL_VERBOSE);throw ex}try{_isChunkOrSyncInfo&&(loadDoc.data=await decrypt2(loadDoc.data,passphrase,!1));if(_isObfuscatedEntry){const path2=getPath(loadDoc);isPathProbablyObfuscated(path2)&&(loadDoc.path=await decrypt2(path2,passphrase,!1))}_shouldDecryptEden&&(loadDoc.eden=JSON.parse(await decrypt2(loadDoc.eden["h:++encrypted"].data,passphrase,!1)));migrationDecrypt&&decrypted.set(loadDoc._id,!0)}catch(ex2){if(migrationDecrypt&&"SyntaxError"==ex2.name)return loadDoc;Logger("Decryption failed.",LOG_LEVEL_NOTICE);Logger(ex2,LOG_LEVEL_VERBOSE);Logger(`id:${loadDoc._id}-${null==(_a7=loadDoc._rev)?void 0:_a7.substring(0,10)}`,LOG_LEVEL_VERBOSE);throw ex2}}}return loadDoc}})};_requestToCouchDBFetch=async(baseUri,username,password,path2,body,method)=>{const utf8str=String.fromCharCode.apply(null,[...writeString(`${username}:${password}`)]),encoded=window.btoa(utf8str),uri=`${baseUri}/${path2}`,requestParam={url:uri,method:method||(body?"PUT":"GET"),headers:new Headers({authorization:"Basic "+encoded,"content-type":"application/json"}),contentType:"application/json",body:JSON.stringify(body)};return await fetch(uri,requestParam)};SYMBOL_A=Symbol("a");SYMBOL_B=Symbol("b");globalSlipBoard=new class{constructor(){Object.defineProperty(this,"_clip",{enumerable:!0,configurable:!0,writable:!0,value:new Map})}isAwaiting(type,key2){return this._clip.has(`${String(type)}:${key2}`)}issueAndProceed(type,key2="",opt){this.isAwaiting(type,key2)||fireAndForget((async()=>{try{const ret=await opt.callback();this.submit(type,key2,ret)}catch(ex){opt.submitAsSuccess?this.submit(type,key2,opt.transformError?opt.transformError(ex):ex):opt.dropSlipWithRisks?this._clip.delete(type):this.reject(type,key2,ex)}}));return this.awaitNext(type,key2)}async awaitNext(type,key2="",{timeout,onNotAwaited}={timeout:void 0,onNotAwaited:void 0}){let taskPromise=this._clip.get(`${String(type)}:${key2}`);if(!taskPromise){taskPromise=promiseWithResolver();taskPromise.promise=taskPromise.promise.then((ret=>ret)).finally((()=>{this._clip.delete(`${String(type)}:${key2}`)}));this._clip.set(`${String(type)}:${key2}`,taskPromise);onNotAwaited&&fireAndForget((async()=>(await yieldMicrotask(),onNotAwaited())))}if(timeout){const cDelay=cancelableDelay(timeout);return Promise.race([cDelay.promise,taskPromise.promise.then((ret=>ret)).finally((()=>cDelay.cancel()))])}return await taskPromise.promise}submit(type,key2,data){const taskPromise=this._clip.get(`${String(type)}:${key2}`);taskPromise&&taskPromise.resolve(data)}submitToAll(type,prefix,data){for(const[key2,taskPromise]of this._clip.entries())`${String(key2)}`.startsWith(`${String(type)}:${prefix}`)&&taskPromise.resolve(data)}reject(type,key2="",reason){const taskPromise=this._clip.get(`${String(type)}:${key2}`);taskPromise&&taskPromise.reject(reason)}};throttle=(func,timeout)=>{let timer,lastTime=0;return(...args)=>{if(lastTime){clearTimeout(timer);const delayTime=timeout-(Date.now()-lastTime);timer=setTimeout((()=>{func(...args);lastTime=Date.now()}),delayTime)}else{func(...args);lastTime=Date.now()}}};isIndexDBCmpExist=void 0!==(null==(_a3=null==window?void 0:window.indexedDB)?void 0:_a3.cmp);globalConcurrencyController=Semaphore(50);previousValues=new Map;MARK_DELETED="__DELETED";MARK_ISARRAY="__ARRAY";MARK_SWAPPED="__SWAP";t=new Uint8Array([0,97,115,109,1,0,0,0,1,48,8,96,3,127,127,127,0,96,3,127,127,127,1,127,96,2,127,127,0,96,2,127,126,0,96,1,127,1,127,96,1,127,1,126,96,3,127,127,126,1,126,96,3,126,127,127,1,126,3,11,10,1,1,2,0,4,6,7,3,0,5,5,3,1,0,1,7,85,9,3,109,101,109,2,0,5,120,120,104,51,50,0,0,6,105,110,105,116,51,50,0,2,8,117,112,100,97,116,101,51,50,0,3,8,100,105,103,101,115,116,51,50,0,4,5,120,120,104,54,52,0,5,6,105,110,105,116,54,52,0,7,8,117,112,100,97,116,101,54,52,0,8,8,100,105,103,101,115,116,54,52,0,9,10,211,23,10,242,1,1,4,127,32,0,32,1,106,33,3,32,1,65,16,79,4,127,32,3,65,16,107,33,6,32,2,65,168,136,141,161,2,106,33,3,32,2,65,247,148,175,175,120,106,33,4,32,2,65,177,243,221,241,121,107,33,5,3,64,32,0,40,2,0,65,247,148,175,175,120,108,32,3,106,65,13,119,65,177,243,221,241,121,108,33,3,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,32,4,106,65,13,119,65,177,243,221,241,121,108,33,4,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,32,2,106,65,13,119,65,177,243,221,241,121,108,33,2,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,32,5,106,65,13,119,65,177,243,221,241,121,108,33,5,32,0,65,4,106,34,0,32,6,77,13,0,11,32,2,65,12,119,32,5,65,18,119,106,32,4,65,7,119,106,32,3,65,1,119,106,5,32,2,65,177,207,217,178,1,106,11,32,1,106,32,0,32,1,65,15,113,16,1,11,146,1,0,32,1,32,2,106,33,2,3,64,32,1,65,4,106,32,2,75,69,4,64,32,1,40,2,0,65,189,220,202,149,124,108,32,0,106,65,17,119,65,175,214,211,190,2,108,33,0,32,1,65,4,106,33,1,12,1,11,11,3,64,32,1,32,2,79,69,4,64,32,1,45,0,0,65,177,207,217,178,1,108,32,0,106,65,11,119,65,177,243,221,241,121,108,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,65,15,118,32,0,115,65,247,148,175,175,120,108,34,0,32,0,65,13,118,115,65,189,220,202,149,124,108,34,0,32,0,65,16,118,115,11,63,0,32,0,65,8,106,32,1,65,168,136,141,161,2,106,54,2,0,32,0,65,12,106,32,1,65,247,148,175,175,120,106,54,2,0,32,0,65,16,106,32,1,54,2,0,32,0,65,20,106,32,1,65,177,243,221,241,121,107,54,2,0,11,211,4,1,6,127,32,1,32,2,106,33,6,32,0,65,24,106,33,5,32,0,65,40,106,40,2,0,33,3,32,0,32,0,40,2,0,32,2,106,54,2,0,32,0,65,4,106,34,4,32,4,40,2,0,32,2,65,16,79,32,0,40,2,0,65,16,79,114,114,54,2,0,32,2,32,3,106,65,16,73,4,64,32,3,32,5,106,32,1,32,2,252,10,0,0,32,0,65,40,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,5,106,32,1,65,16,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,40,2,0,32,5,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,3,32,4,54,2,0,32,0,65,12,106,34,3,40,2,0,32,5,65,4,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,3,32,4,54,2,0,32,0,65,16,106,34,3,40,2,0,32,5,65,8,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,3,32,4,54,2,0,32,0,65,20,106,34,3,40,2,0,32,5,65,12,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,3,32,4,54,2,0,32,0,65,40,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,32,6,65,16,107,77,4,64,32,6,65,16,107,33,8,32,0,65,8,106,40,2,0,33,2,32,0,65,12,106,40,2,0,33,3,32,0,65,16,106,40,2,0,33,4,32,0,65,20,106,40,2,0,33,7,3,64,32,1,40,2,0,65,247,148,175,175,120,108,32,2,106,65,13,119,65,177,243,221,241,121,108,33,2,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,32,3,106,65,13,119,65,177,243,221,241,121,108,33,3,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,32,4,106,65,13,119,65,177,243,221,241,121,108,33,4,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,32,7,106,65,13,119,65,177,243,221,241,121,108,33,7,32,1,65,4,106,34,1,32,8,77,13,0,11,32,0,65,8,106,32,2,54,2,0,32,0,65,12,106,32,3,54,2,0,32,0,65,16,106,32,4,54,2,0,32,0,65,20,106,32,7,54,2,0,11,32,1,32,6,73,4,64,32,5,32,1,32,6,32,1,107,34,1,252,10,0,0,32,0,65,40,106,32,1,54,2,0,11,11,97,1,1,127,32,0,65,16,106,40,2,0,33,1,32,0,65,4,106,40,2,0,4,127,32,1,65,12,119,32,0,65,20,106,40,2,0,65,18,119,106,32,0,65,12,106,40,2,0,65,7,119,106,32,0,65,8,106,40,2,0,65,1,119,106,5,32,1,65,177,207,217,178,1,106,11,32,0,40,2,0,106,32,0,65,24,106,32,0,65,40,106,40,2,0,16,1,11,157,4,2,1,127,3,126,32,0,32,1,106,33,3,32,1,65,32,79,4,126,32,3,65,32,107,33,3,32,2,66,135,149,175,175,152,182,222,155,158,127,124,66,207,214,211,190,210,199,171,217,66,124,33,4,32,2,66,207,214,211,190,210,199,171,217,66,124,33,5,32,2,66,0,124,33,6,32,2,66,135,149,175,175,152,182,222,155,158,127,125,33,2,3,64,32,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,32,4,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,4,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,32,5,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,5,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,32,6,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,32,2,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,2,32,0,65,8,106,34,0,32,3,77,13,0,11,32,6,66,12,137,32,2,66,18,137,124,32,5,66,7,137,124,32,4,66,1,137,124,32,4,66,207,214,211,190,210,199,171,217,66,126,66,0,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,227,220,202,149,252,206,242,245,133,127,124,32,5,66,207,214,211,190,210,199,171,217,66,126,66,0,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,227,220,202,149,252,206,242,245,133,127,124,32,6,66,207,214,211,190,210,199,171,217,66,126,66,0,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,227,220,202,149,252,206,242,245,133,127,124,32,2,66,207,214,211,190,210,199,171,217,66,126,66,0,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,227,220,202,149,252,206,242,245,133,127,124,5,32,2,66,197,207,217,178,241,229,186,234,39,124,11,32,1,173,124,32,0,32,1,65,31,113,16,6,11,137,2,0,32,1,32,2,106,33,2,3,64,32,1,65,8,106,32,2,77,4,64,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,66,0,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,32,0,133,66,27,137,66,135,149,175,175,152,182,222,155,158,127,126,66,227,220,202,149,252,206,242,245,133,127,124,33,0,32,1,65,8,106,33,1,12,1,11,11,32,1,65,4,106,32,2,77,4,64,32,1,53,2,0,66,135,149,175,175,152,182,222,155,158,127,126,32,0,133,66,23,137,66,207,214,211,190,210,199,171,217,66,126,66,249,243,221,241,153,246,153,171,22,124,33,0,32,1,65,4,106,33,1,11,3,64,32,1,32,2,73,4,64,32,1,49,0,0,66,197,207,217,178,241,229,186,234,39,126,32,0,133,66,11,137,66,135,149,175,175,152,182,222,155,158,127,126,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,66,33,136,32,0,133,66,207,214,211,190,210,199,171,217,66,126,34,0,32,0,66,29,136,133,66,249,243,221,241,153,246,153,171,22,126,34,0,32,0,66,32,136,133,11,88,0,32,0,65,8,106,32,1,66,135,149,175,175,152,182,222,155,158,127,124,66,207,214,211,190,210,199,171,217,66,124,55,3,0,32,0,65,16,106,32,1,66,207,214,211,190,210,199,171,217,66,124,55,3,0,32,0,65,24,106,32,1,55,3,0,32,0,65,32,106,32,1,66,135,149,175,175,152,182,222,155,158,127,125,55,3,0,11,132,5,2,3,127,4,126,32,1,32,2,106,33,5,32,0,65,40,106,33,4,32,0,65,200,0,106,40,2,0,33,3,32,0,32,0,41,3,0,32,2,173,124,55,3,0,32,2,32,3,106,65,32,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,200,0,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,32,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,41,3,0,32,4,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,3,32,6,55,3,0,32,0,65,16,106,34,3,41,3,0,32,4,65,8,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,3,32,6,55,3,0,32,0,65,24,106,34,3,41,3,0,32,4,65,16,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,3,32,6,55,3,0,32,0,65,32,106,34,3,41,3,0,32,4,65,24,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,3,32,6,55,3,0,32,0,65,200,0,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,65,32,106,32,5,77,4,64,32,5,65,32,107,33,2,32,0,65,8,106,41,3,0,33,6,32,0,65,16,106,41,3,0,33,7,32,0,65,24,106,41,3,0,33,8,32,0,65,32,106,41,3,0,33,9,3,64,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,32,6,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,32,7,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,7,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,32,8,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,8,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,32,9,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,9,32,1,65,8,106,34,1,32,2,77,13,0,11,32,0,65,8,106,32,6,55,3,0,32,0,65,16,106,32,7,55,3,0,32,0,65,24,106,32,8,55,3,0,32,0,65,32,106,32,9,55,3,0,11,32,1,32,5,73,4,64,32,4,32,1,32,5,32,1,107,34,1,252,10,0,0,32,0,65,200,0,106,32,1,54,2,0,11,11,200,2,1,5,126,32,0,65,24,106,41,3,0,33,1,32,0,41,3,0,34,2,66,32,90,4,126,32,0,65,8,106,41,3,0,34,3,66,1,137,32,0,65,16,106,41,3,0,34,4,66,7,137,124,32,1,66,12,137,32,0,65,32,106,41,3,0,34,5,66,18,137,124,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,0,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,227,220,202,149,252,206,242,245,133,127,124,32,4,66,207,214,211,190,210,199,171,217,66,126,66,0,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,227,220,202,149,252,206,242,245,133,127,124,32,1,66,207,214,211,190,210,199,171,217,66,126,66,0,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,227,220,202,149,252,206,242,245,133,127,124,32,5,66,207,214,211,190,210,199,171,217,66,126,66,0,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,227,220,202,149,252,206,242,245,133,127,124,5,32,1,66,197,207,217,178,241,229,186,234,39,124,11,32,2,124,32,0,65,40,106,32,2,66,31,131,167,16,6,11]);epochFNV1a=2166136261;c1=3432918353;c2=461845907;r1=15;r2=13;m=5;n=3864292196;new TextEncoder;hashFunc=str=>fallbackMixedHashEach(str);!async function initHashFunc(){try{const{h32ToString}=await e();hashFunc=h32ToString;Logger("xxhash for plugin initialised",LOG_LEVEL_VERBOSE)}catch(ex){Logger("Could not initialise xxhash. fallback...",LOG_LEVEL_VERBOSE);Logger(ex);hashFunc=str=>fallbackMixedHashEach(str)}}();charNewLine="\n".charCodeAt(0);segmenter="Segmenter"in Intl?new Intl.Segmenter(navigator.language,{granularity:"sentence"}):void 0;MAX_ITEMS=100;globalSlipBoard2=globalSlipBoard;BatchReader=class{constructor(db){this.requestChunkInbox=new Inbox(2e3);this.collectChunkBatch=new InboxWithEvent(100);this._porter=new Porter({from:this.requestChunkInbox,to:this.collectChunkBatch,timeout:30,maxSize:50});this._readers=new ClerkGroup({assigned:this.collectChunkBatch,initialMemberCount:3,name:"localChunkReader",instantiate:params=>new Clerk(params),job:async item=>{const chunk=await this.localDatabase.allDocs({keys:item,include_docs:!0});for(const row of chunk.rows)if("error"in row||row.value.deleted)globalSlipBoard2.submit("read-chunk",row.key,{_id:row.key,error:"NOT_FOUND"});else{const doc=row.doc;this.hashCaches.set(doc._id,doc.data);globalSlipBoard2.submit("read-chunk",doc._id,doc)}}});this._db=db}get localDatabase(){return this._db.localDatabase}get hashCaches(){return this._db.hashCaches}get settings(){return this._db.settings}get env(){return this._db.env}async readChunk(id,timeout){var _a7;const cached=this.hashCaches.get(id);if("string"==typeof cached)return Promise.resolve({_id:id,data:cached,type:"leaf"});const p4=await globalSlipBoard2.awaitNext("read-chunk",`${id}`,{onNotAwaited:()=>{this.requestChunkInbox.post(id)}});if(!p4||"error"in p4&&"NOT_FOUND"===p4.error){if(timeout){const r4=await globalSlipBoard2.awaitNext("read-chunk",`${id}`,{timeout});return r4===TIMED_OUT_SIGNAL?{_id:id,error:"TIMED_OUT"}:!r4||"error"in r4?{_id:id,error:null!=(_a7=null==r4?void 0:r4.error)?_a7:"UNKNOWN ERROR"}:r4}return{_id:id,error:"NOT_FOUND"}}return p4}};ChunkCollector=class{constructor(db){this.requestChunkInbox=new Inbox(2e3);this.collectChunkBatch=new InboxWithEvent(100);this.requestFetchChunkInbox=new Inbox(2e3);this.fetchChunkBatch=new Inbox(2e3);this._porter=new Porter({from:this.requestChunkInbox,to:this.collectChunkBatch,timeout:100,maxSize:50});this._collectors=new ClerkGroup({assigned:this.collectChunkBatch,initialMemberCount:3,instantiate:params=>new Clerk(params),job:async item=>{const chunk=await this.localDatabase.allDocs({keys:item,include_docs:!0});for(const row of chunk.rows)if("error"in row)await this.requestFetchChunkInbox.post(row.key);else{const doc=row.doc;this.hashCaches.set(doc._id,doc.data);globalSlipBoard2.submit("retrieve-chunk",doc._id,doc)}}});this._porterFetch=new Porter({from:this.requestFetchChunkInbox,to:this.fetchChunkBatch,timeout:25,maxSize:100});this._paceMaker=new PaceMaker(300);this._fetchers=new ClerkGroup({assigned:this.fetchChunkBatch,initialMemberCount:3,instantiate:params=>new Clerk(params),job:async item=>{await this._paceMaker.paced;const chunk=await this.env.$$getReplicator().fetchRemoteChunks(item,!1);if(chunk){chunk.forEach((e3=>this.hashCaches.set(e3._id,e3.data)));await this.localDatabase.bulkDocs(chunk,{new_edits:!1});chunk.forEach((e3=>globalSlipBoard2.submit("retrieve-chunk",e3._id,e3)))}else item.forEach((id=>globalSlipBoard2.submit("retrieve-chunk",id,{_id:id,error:"SERVER_OFFLINE"})))}});this._db=db}get localDatabase(){return this._db.localDatabase}get hashCaches(){return this._db.hashCaches}get settings(){return this._db.settings}get env(){return this._db.env}retrieveChunk(id,timeout){const cached=this.hashCaches.get(id);return"string"==typeof cached?Promise.resolve({_id:id,data:cached,type:"leaf"}):globalSlipBoard2.awaitNext("retrieve-chunk",`${id}`,{timeout,onNotAwaited:()=>{this.requestChunkInbox.post(id)}}).then((e3=>e3===TIMED_OUT_SIGNAL?{_id:id,error:"TIMED_OUT"}:e3))}async collectChunks(ids,showResult=!1,waitForReady){this._paceMaker._interval!==this.settings.minimumIntervalOfReadChunksOnline&&this._paceMaker.changeInterval(this.settings.minimumIntervalOfReadChunksOnline);await this._porterFetch.changeParams({maxSize:this.settings.concurrencyOfReadChunksOnline});const result=await Promise.all(ids.map((e3=>this.retrieveChunk(e3))));result.filter((e3=>"error"in e3)).length>0&&Logger("Could not fetch chunks from the server. ",showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_VERBOSE,"fetch");return result}};import_diff_match_patch2=__toESM(require_diff_match_patch(),1);LiveSyncLocalDB=class{constructor(dbname,env){this.chunkCollector=new ChunkCollector(this);this.batchReader=new BatchReader(this);this.isReady=!1;this.xxhash64=!1;this.hashCaches=new LRUCache(10,1e3);this.changeHandler=null;this.chunkVersion=-1;this.maxChunkVersion=-1;this.minChunkVersion=-1;this.needScanning=!1;this.hashedPassphrase="";this.hashedPassphrase32=0;this.auth={username:"",password:""};this.dbname=dbname;this.env=env;this.refreshSettings()}async _prepareHashFunctions(){if(null==this.h32)if("sha1"!=this.settings.hashAlg)if("mixed-purejs"!=this.settings.hashAlg)try{const{h32ToString,h32Raw,h32,h64}=await e();this.xxhash64=h64;this.xxhash32=h32;this.h32=h32ToString;this.h32Raw=h32Raw;Logger("[Hash function]: WASM (xxhash)",LOG_LEVEL_VERBOSE)}catch(ex){Logger("[Hash function]: Failed to initialise WASM xxhash. Fallback (PureJS) has been activated");Logger(ex,LOG_LEVEL_VERBOSE);this.settings.hashAlg="mixed-purejs"}else Logger("[Hash function]: Fallback (Mixed PureJS)",LOG_LEVEL_VERBOSE);else Logger("[Hash function]: Fallback (SHA1)",LOG_LEVEL_VERBOSE)}get isOnDemandChunkEnabled(){return""===this.settings.remoteType&&this.settings.readChunksOnline}onunload(){var _a7,_b3;this.env.$allOnDBUnload(this);null==(_a7=this.changeHandler)||_a7.cancel();null==(_b3=this.changeHandler)||_b3.removeAllListeners();this.localDatabase.removeAllListeners()}refreshSettings(){const settings=this.env.getSettings();this.settings=settings;this.hashCaches=new LRUCache(settings.hashCacheMaxCount,settings.hashCacheMaxAmount);const passphrase=this.settings.passphrase,usingLetters=~~(passphrase.length/4*3),passphraseForHash="a83hrf7fy7sa8g31"+passphrase.substring(0,usingLetters);this.hashedPassphrase=fallbackMixedHashEach(passphraseForHash);this.hashedPassphrase32=mixedHash(passphraseForHash,305419896)[0]}id2path(id,entry,stripPrefix2){return this.env.$$id2path(id,entry,stripPrefix2)}async path2id(filename,prefix){return await this.env.$$path2id(filename,prefix)}async close(){var _a7,_b3;Logger("Database closed (by close)");this.isReady=!1;null==(_a7=this.changeHandler)||_a7.cancel();null==(_b3=this.changeHandler)||_b3.removeAllListeners();null!=this.localDatabase&&await this.localDatabase.close();this.env.$allOnDBClose(this)}async initializeDatabase(){var _a7,_b3;await this._prepareHashFunctions();null!=this.localDatabase&&await this.localDatabase.close();null==(_a7=this.changeHandler)||_a7.cancel();await(null==(_b3=this.changeHandler)?void 0:_b3.removeAllListeners());this.localDatabase=null;this.localDatabase=this.env.$$createPouchDBInstance(this.dbname+"-livesync-v2",{auto_compaction:!1,revs_limit:100,deterministic_revs:!0});await this.env.$everyOnInitializeDatabase(this)||Logger("Initializing Database has been failed on some module",LOG_LEVEL_NOTICE);Logger("Opening Database...");Logger("Database info",LOG_LEVEL_VERBOSE);Logger(await this.localDatabase.info(),LOG_LEVEL_VERBOSE);this.localDatabase.on("close",(()=>{var _a8;Logger("Database closed.");this.isReady=!1;this.localDatabase.removeAllListeners();null==(_a8=this.env.$$getReplicator())||_a8.closeReplication()}));const changes3=this.localDatabase.changes({since:"now",live:!0,include_docs:!0,filter:doc=>"leaf"==doc.type}).on("change",(e3=>{e3.deleted||globalSlipBoard2.submit("read-chunk",e3.id,e3.doc)})),closeChanges=reason=>{if(reason)if(reason instanceof Error){Logger("Error while tracking changes",LOG_LEVEL_INFO);Logger(reason,LOG_LEVEL_VERBOSE)}else{Logger("Tracking changes has been finished",LOG_LEVEL_INFO);Logger(reason,LOG_LEVEL_VERBOSE)}changes3.cancel();changes3.removeAllListeners();this.changeHandler=null};changes3.on("error",closeChanges);changes3.on("complete",closeChanges);this.changeHandler=changes3;this.isReady=!0;Logger("Database is now ready.");return!0}async readChunk(id,timeout){const ret=await this.batchReader.readChunk(id,timeout);if("error"in ret)throw new Error(`Could not read chunk ${id}: (${ret.error})`);return ret.data}async getChunk(piece,doc){const cachedChunkId=this.hashCaches.revGet(piece);if(void 0!==cachedChunkId)return{isNew:!1,id:cachedChunkId,piece};const chunkId="h:"+await this.generateHashedChunk(piece);if(chunkId in doc.eden)return{isNew:!1,id:chunkId,piece};const cachedPiece=this.hashCaches.get(chunkId);if(cachedPiece&&cachedPiece!=piece){Logger(`Hash collided! If possible, please report the following string:${chunkId}=>\nA:--${cachedPiece}--\nB:--${piece}--`,LOG_LEVEL_NOTICE);return!1}this.hashCaches.set(chunkId,piece);return{isNew:!0,id:chunkId,piece}}async generateHashedChunk(piece){const hashedUserPassphrase=this.hashedPassphrase;if("sha1"==this.settings.hashAlg)return this.settings.encrypt?"+"+await sha1(`${piece}-${hashedUserPassphrase}-${piece.length}`):await sha1(`${piece}-${piece.length}`);if("mixed-purejs"==this.settings.hashAlg)return this.settings.encrypt?"+"+fallbackMixedHashEach(`${piece}${hashedUserPassphrase}${piece.length}`):fallbackMixedHashEach(`${piece}-${piece.length}`);if(""===this.settings.hashAlg){if(this.settings.encrypt){const userPasswordHash=this.hashedPassphrase32;return"+"+(this.h32Raw((new TextEncoder).encode(piece))^userPasswordHash^piece.length).toString(36)}return(this.h32Raw((new TextEncoder).encode(piece))^piece.length).toString(36)}return"xxhash64"==this.settings.hashAlg&&this.xxhash64?this.settings.encrypt?"+"+this.xxhash64(`${piece}-${hashedUserPassphrase}-${piece.length}`).toString(36):this.xxhash64(`${piece}-${piece.length}`).toString(36):this.settings.encrypt?"+"+this.xxhash32(`${piece}-${hashedUserPassphrase}-${piece.length}`).toString(36):this.xxhash32(`${piece}-${piece.length}`).toString(36)}async getDBLeafWithTimeout(id,timeout){try{return await this.readChunk(id,timeout)}catch(ex){Logger("Something went wrong while retrieving chunks");Logger(ex,LOG_LEVEL_VERBOSE);throw ex}}getDBLeaf(id,waitForReady){return this.getDBLeafWithTimeout(id,waitForReady?9e4:0)}async getDBEntryMeta(path2,opt,includeDeleted=!1){var _a7,_b3;if(!this.isTargetFile(path2))return!1;const id=await this.path2id(path2);try{let obj=null;obj=opt?await this.localDatabase.get(id,opt):await this.localDatabase.get(id);const deleted=null!=(_b3=null!=(_a7=null==obj?void 0:obj.deleted)?_a7:obj._deleted)?_b3:void 0;if(!includeDeleted&&deleted)return!1;if(obj.type&&"leaf"==obj.type)return!1;if(!obj.type||obj.type&&"notes"==obj.type||"newnote"==obj.type||"plain"==obj.type){const note=obj;let children=[],type="plain";if("newnote"==obj.type||"plain"==obj.type){children=obj.children;type=obj.type}return{data:"",_id:note._id,path:path2,ctime:note.ctime,mtime:note.mtime,size:note.size,_rev:obj._rev,_conflicts:obj._conflicts,children,datatype:type,deleted,type,eden:"eden"in obj?obj.eden:{}}}}catch(ex){if(isErrorOfMissingDoc(ex))return!1;throw ex}return!1}async allChunks(includeDeleted=!1){const used=new Set,existing=new Map;let since=0;for(;;){const changes3=await this.localDatabase.changes({since,limit:100,include_docs:!0,conflicts:!0,style:includeDeleted?"all_docs":"main_only"});if(0==changes3.results.length)break;for(const change of changes3.results){const doc=change.doc;if("leaf"==doc.type){if(doc._deleted&&!includeDeleted)continue;existing.set(doc._id,doc)}if("children"in doc){if(change.deleted&&(!doc._conflicts||0==doc._conflicts.length))continue;doc.children.forEach((e3=>used.add(e3)));if(doc._conflicts){const mineRevInfo=(await this.localDatabase.get(doc._id,{revs:!0,revs_info:!0}))._revs_info||[],keepRevs=new Set;for(const conflict of doc._conflicts){const conflictedRevInfo=(await this.localDatabase.get(doc._id,{rev:conflict,revs:!0,revs_info:!0}))._revs_info||[],diffRevs=mineRevInfo.filter((e3=>!conflictedRevInfo.some((f4=>f4.rev==e3.rev&&f4.status==e3.status)))),diffRevs2=conflictedRevInfo.filter((e3=>!mineRevInfo.some((f4=>f4.rev==e3.rev&&f4.status==e3.status)))),diffRevs3=diffRevs.concat(diffRevs2),sameRevs=mineRevInfo.filter((e3=>conflictedRevInfo.some((f4=>f4.rev==e3.rev&&f4.status==e3.status)))).filter((e3=>"available"==e3.status)).sort(((a2,b3)=>getNoFromRev(b3.rev)-getNoFromRev(a2.rev))),sameRevsTop=sameRevs.length>0?[sameRevs[0].rev]:[];[...diffRevs3.filter((e3=>"available"==e3.status)).map((e3=>e3.rev)),...sameRevsTop].forEach((e3=>keepRevs.add(e3)))}const detail=await this.localDatabase.bulkGet({docs:[...keepRevs.values()].map((e3=>({id:doc._id,rev:e3})))});for(const e3 of detail.results)if("docs"in e3){const docs=e3.docs;for(const doc2 of docs)"ok"in doc2&&"children"in doc2.ok&&doc2.ok.children.forEach((e4=>used.add(e4)))}}}}since=changes3.results[changes3.results.length-1].seq}return{used,existing}}async getDBEntry(path2,opt,dump=!1,waitForReady=!0,includeDeleted=!1){const meta=await this.getDBEntryMeta(path2,opt,includeDeleted);return!!meta&&await this.getDBEntryFromMeta(meta,opt,dump,waitForReady,includeDeleted)}async getDBEntryFromMeta(meta,opt,dump=!1,waitForReady=!0,includeDeleted=!1){var _a7,_b3,_c2;const filename=this.id2path(meta._id,meta);if(!this.isTargetFile(filename))return!1;const dispFilename=stripAllPrefixes(filename),deleted=null!=(_b3=null!=(_a7=meta.deleted)?_a7:meta._deleted)?_b3:void 0;if(!meta.type||meta.type&&"notes"==meta.type){const note=meta,doc={data:note.data,path:note.path,_id:note._id,ctime:note.ctime,mtime:note.mtime,size:note.size,_rev:meta._rev,_conflicts:meta._conflicts,children:[],datatype:"newnote",deleted,type:"newnote",eden:"eden"in meta?meta.eden:{}};if(dump){Logger("--Old fashioned document--");Logger(doc)}return doc}if("newnote"==meta.type||"plain"==meta.type){if(dump){const conflicts=await this.localDatabase.get(meta._id,{conflicts:!0,revs_info:!0});Logger("-- Conflicts --");Logger(null!=(_c2=conflicts._conflicts)?_c2:"No conflicts");Logger("-- Revs info -- ");Logger(conflicts._revs_info)}try{if(dump){Logger("--Bare document--");Logger(meta)}const childrenKeys=[...meta.children],loadedChildrenMap=new Map;meta.eden&&Object.entries(meta.eden).forEach((([key2,chunk])=>loadedChildrenMap.set(key2,chunk.data)));const missingChunks=unique(childrenKeys).filter((e3=>!loadedChildrenMap.has(e3)));if(0!=missingChunks.length)if(this.isOnDemandChunkEnabled){const items=await this.collectChunks(missingChunks,!1,waitForReady);if(!items||items.some((leaf=>"error"in leaf||"leaf"!=leaf.type))){Logger(`Chunks of ${dispFilename} (${meta._id.substring(0,8)}) are not valid. (p1)`,LOG_LEVEL_NOTICE);items&&Logger(`Missing chunks: ${items.map((e3=>e3._id)).join(",")}`,LOG_LEVEL_VERBOSE);return!1}items.filter((e3=>"data"in e3)).forEach((chunk=>loadedChildrenMap.set(chunk._id,chunk.data)))}else try{if(waitForReady)(await Promise.all(missingChunks.map((e3=>this.getDBLeaf(e3,waitForReady))))).forEach(((value,idx2)=>loadedChildrenMap.set(missingChunks[idx2],value)));else{const chunkDocs=await this.localDatabase.allDocs({keys:missingChunks,include_docs:!0});if(chunkDocs.rows.some((e3=>"error"in e3))){const missingChunks2=chunkDocs.rows.filter((e3=>"error"in e3)).map((e3=>e3.key)).join(", ");Logger(`Chunks of ${dispFilename} (${meta._id.substring(0,8)}) are not valid. (p2)`,LOG_LEVEL_NOTICE);Logger(`Missing chunks: ${missingChunks2}`,LOG_LEVEL_VERBOSE);return!1}if(chunkDocs.rows.some((e3=>"value"in e3&&e3.value.deleted))){const missingChunks2=chunkDocs.rows.filter((e3=>"value"in e3&&e3.value.deleted)).map((e3=>e3.key)).join(", ");Logger(`Chunks of ${dispFilename} (${meta._id.substring(0,8)}) are deleted. Please try "Resurrect deleted chunks" once.`,LOG_LEVEL_NOTICE);Logger(`Corrupted chunks: ${missingChunks2}`,LOG_LEVEL_VERBOSE);return!1}if(chunkDocs.rows.some((e3=>e3.doc&&"leaf"!=e3.doc.type))){const missingChunks2=chunkDocs.rows.filter((e3=>e3.doc&&"leaf"!=e3.doc.type)).map((e3=>e3.id)).join(", ");Logger(`Chunks of ${dispFilename} (${meta._id.substring(0,8)}) are not valid. (p3)`,LOG_LEVEL_NOTICE);Logger(`Corrupted chunks: ${missingChunks2}`,LOG_LEVEL_VERBOSE);return!1}chunkDocs.rows.forEach(((value,idx2)=>"doc"in value&&loadedChildrenMap.set(value.doc._id,value.doc.data)))}}catch(ex){Logger(`Something went wrong on reading chunks of ${dispFilename}(${meta._id.substring(0,8)}) from database, see verbose info for detail.`,LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_VERBOSE);return!1}const l2=childrenKeys.map((e3=>loadedChildrenMap.get(e3)));if(l2.some((e3=>void 0===e3)))throw new Error("Load failed");const doc={data:l2,path:meta.path,_id:meta._id,ctime:meta.ctime,mtime:meta.mtime,size:meta.size,_rev:meta._rev,children:meta.children,datatype:meta.type,_conflicts:meta._conflicts,eden:meta.eden,deleted,type:meta.type};if(dump){Logger("--Loaded Document--");Logger(doc)}return doc}catch(ex){if(isErrorOfMissingDoc(ex)){Logger(`Missing document content!, could not read ${dispFilename}(${meta._id.substring(0,8)}) from database.`,LOG_LEVEL_NOTICE);return!1}Logger(`Something went wrong on reading ${dispFilename}(${meta._id.substring(0,8)}) from database:`,LOG_LEVEL_NOTICE);Logger(ex)}}return!1}async deleteDBEntry(path2,opt){var _a7;if(!this.isTargetFile(path2))return!1;const id=await this.path2id(path2);try{return null!=(_a7=await serialized("file:"+path2,(async()=>{let obj=null;obj=opt?await this.localDatabase.get(id,opt):await this.localDatabase.get(id);const revDeletion=opt&&""!=("rev"in opt?opt.rev:"");if(obj.type&&"leaf"==obj.type)return!1;if(!obj.type||obj.type&&"notes"==obj.type){obj._deleted=!0;const r4=await this.localDatabase.put(obj,{force:!revDeletion});Logger(`Entry removed:${path2} (${obj._id.substring(0,8)}-${r4.rev})`);return!0}if("newnote"==obj.type||"plain"==obj.type){if(revDeletion)obj._deleted=!0;else{obj.deleted=!0;obj.mtime=Date.now();this.settings.deleteMetadataOfDeletedFiles&&(obj._deleted=!0)}const r4=await this.localDatabase.put(obj,{force:!revDeletion});Logger(`Entry removed:${path2} (${obj._id.substring(0,8)}-${r4.rev})`);return!0}return!1})))&&_a7}catch(ex){if(isErrorOfMissingDoc(ex))return!1;throw ex}}async deleteDBEntryPrefix(prefix){let c3=0,readCount=0;const delDocs=[];do{const result=await this.localDatabase.allDocs({include_docs:!1,skip:c3,limit:100,conflicts:!0});readCount=result.rows.length;if(readCount>0)for(const v2 of result.rows){const decodedPath=this.id2path(v2.id,v2.doc);decodedPath.startsWith(prefix)?this.isTargetFile(decodedPath)&&delDocs.push(v2.id):v2.id.startsWith("h:")}c3+=readCount}while(0!=readCount);let deleteCount=0,notfound=0;for(const v2 of delDocs)try{await serialized("file:"+v2,(async()=>{const item=await this.localDatabase.get(v2);if("newnote"==item.type||"plain"==item.type){item.deleted=!0;this.settings.deleteMetadataOfDeletedFiles&&(item._deleted=!0);item.mtime=Date.now()}else item._deleted=!0;await this.localDatabase.put(item,{force:!0})}));deleteCount++}catch(ex){if(!isErrorOfMissingDoc(ex))throw ex;notfound++}Logger(`deleteDBEntryPrefix:deleted ${deleteCount} items, skipped ${notfound}`);return!0}async putDBEntry(note,onlyChunks){var _a7;const filename=this.id2path(note._id,note),dispFilename=stripAllPrefixes(filename);note.eden||(note.eden={});if(!this.isTargetFile(filename)){Logger(`File skipped:${dispFilename}`,LOG_LEVEL_VERBOSE);return!1}let processed=0;const pieceSize=Math.floor(102400*(1*(this.settings.customChunkSize||0)+1));let plainSplit=!1;const minimumChunkSize=this.settings.minimumChunkSize;(function shouldSplitAsPlainText(filename){return!!filename.endsWith(".md")||!!filename.endsWith(".txt")||!!filename.endsWith(".canvas")})(filename)&&(plainSplit=!0);const data=note.data instanceof Blob?note.data:createTextBlob(note.data);note.type=isTextBlob(data)?"plain":"newnote";note.datatype=note.type;const splitFuncInMainThread=this.settings.enableChunkSplitterV2?splitPieces2V2:splitPieces2,splitFuncInWorker=this.settings.enableChunkSplitterV2?splitPieces2WorkerV2:splitPieces2Worker,splitFunc=this.settings.disableWorkerForGeneratingChunks||this.settings.processSmallFilesInUIThread&¬e.data.size<1024?splitFuncInMainThread:splitFuncInWorker,pieces=await splitFunc(data,pieceSize,plainSplit,minimumChunkSize,filename,this.settings.useSegmenter),chunkTasks=[];for await(const piece of pieces())if(0!==piece.length){processed++;chunkTasks.push(this.getChunk(piece,note))}const chunks=await Promise.all(chunkTasks);if(chunks.some((e3=>!1===e3))){Logger(`This document could not be saved:${dispFilename}`,LOG_LEVEL_NOTICE);return!1}let eden={},currentRevAsNo=0;"eden"in note&&(eden=note.eden);let newChunks=[];if(this.settings.useEden&&!onlyChunks){try{const old=await this.localDatabase.get(note._id);currentRevAsNo=getNoFromRev(old._rev);eden={..."eden"in old?old.eden:{},...eden}}catch(ex){if(!isErrorOfMissingDoc(ex))throw ex}const chunkOnEdenInitial=Object.keys(eden).length;let removedChunkOnEden=0;const removeEdenChunks=Object.keys(eden).filter((e3=>chunks.every((c3=>c3.id!==e3))));for(const removeId of removeEdenChunks){removedChunkOnEden++;delete eden[removeId]}let newChunkOnEden=0,existChunkOnEden=0;for(const chunk of chunks)if(chunk.id in eden)existChunkOnEden++;else{newChunkOnEden++;eden[chunk.id]={epoch:currentRevAsNo+1,data:chunk.piece}}const allEdenChunks=Object.entries(eden).sort(((a2,b3)=>b3[1].epoch-a2[1].epoch));let totalLength=0,count=0;const allEdenChunksKey=Object.keys(eden);let alreadyIndependent=0,independent=0;const edenChunkOnDB=(await this.localDatabase.allDocs({keys:allEdenChunksKey})).rows.reduce(((p4,c3)=>({...p4,[c3.key]:c3})),{});for(const[key2,chunk]of allEdenChunks){count++;let makeChunkIndependent=!1;if(!(key2 in edenChunkOnDB)||edenChunkOnDB[key2].error){(chunk.data.length>1024||chunk.epoch+this.settings.maxAgeInEden<currentRevAsNo)&&(makeChunkIndependent=!0);totalLength>this.settings.maxTotalLengthInEden&&(makeChunkIndependent=!0);count>this.settings.maxChunksInEden&&(makeChunkIndependent=!0);if(makeChunkIndependent){count--;independent++;newChunks.push({_id:key2,data:chunk.data,type:"leaf"});delete eden[key2]}else totalLength+=chunk.data.length}else{count--;delete eden[key2];alreadyIndependent++}}Logger(`Progress on Eden: doc: ${dispFilename} : ${chunkOnEdenInitial}->${Object.keys(eden).length} (removed: ${removedChunkOnEden}, new: ${newChunkOnEden}, exist: ${existChunkOnEden}, alreadyIndependent:${alreadyIndependent}, independent:${independent})`,LOG_LEVEL_VERBOSE)}else newChunks=chunks.filter((e3=>e3.isNew)).map((e3=>({_id:e3.id,data:e3.piece,type:"leaf"})));const cached=processed-newChunks.length;if(newChunks.length)if(this.settings.doNotUseFixedRevisionForChunks){const previousChunks=await this.localDatabase.allDocs({keys:newChunks.map((e3=>e3._id))}),missingChunks=previousChunks.rows.filter((e3=>"error"in e3||e3.value.deleted)).map((e3=>e3.key)),newChunksFiltered=newChunks.filter((e3=>missingChunks.includes(e3._id))),result=await this.localDatabase.bulkDocs(newChunksFiltered,{});if(result.some((e3=>"error"in e3))){Logger(`Save failed.: ${dispFilename} :${result.map((e3=>{var _a8;return null!=(_a8=null==e3?void 0:e3.id)?_a8:e3.toString()})).join(",")}`,LOG_LEVEL_VERBOSE);Logger(`This document could not be saved:${dispFilename}`,LOG_LEVEL_NOTICE);return!1}Logger(`Chunks saved: doc: ${dispFilename} ,chunks: ${processed} (new:${newChunksFiltered.length}, recycled:${previousChunks.rows.length-newChunksFiltered.length}, cached:${cached})`)}else{newChunks=newChunks.map((e3=>{return{...e3,_rev:(chunk=e3,`1-${(Math.imul(chunk.data.length,21+chunk._id.charCodeAt(5)).toString(16)+"0".repeat(32)).slice(0,32)}`)};var chunk}));const existDocMap=(await this.localDatabase.allDocs({keys:newChunks.map((e3=>e3._id)),include_docs:!0})).rows.map((e3=>"doc"in e3?e3.doc:void 0)).filter((e3=>null!=e3)).reduce(((p4,c3)=>({...p4,[c3._id]:c3})),{}),suspiciousChunks=newChunks.filter((e3=>{var _a8;return e3._id in existDocMap&&(null==(_a8=existDocMap[e3._id])?void 0:_a8._rev)!=e3._rev})),erroredChunks=suspiciousChunks.filter((e3=>{var _a8;return e3.data!=(null==(_a8=existDocMap[e3._id])?void 0:_a8.data)}));if(erroredChunks.length){Logger(`Save failed.: ${dispFilename} :${erroredChunks.length} items mismatched`,LOG_LEVEL_VERBOSE);Logger(`This document could not be saved:${dispFilename}`,LOG_LEVEL_NOTICE);Logger(`Mismatched items: ${erroredChunks.map((e3=>e3._id)).join(",")}`,LOG_LEVEL_VERBOSE);Logger(`Revision and content mismatch: ${erroredChunks.map((e3=>{var _a8;return`${e3._rev}, ${null==(_a8=null==existDocMap?void 0:existDocMap[e3._id])?void 0:_a8._rev}`})).join(",")}`,LOG_LEVEL_VERBOSE);return!1}const saveChunks=newChunks.filter((e3=>!(e3._id in existDocMap)));await this.localDatabase.bulkDocs(saveChunks,{new_edits:!1});Logger(`Chunks saved (with fixed): doc: ${dispFilename} ,chunks: ${processed} (new:${saveChunks.length}, recycled:${newChunks.length-saveChunks.length}, cached:${cached}, revision unmatched:${suspiciousChunks.length})`)}if(onlyChunks)return{id:note._id,ok:!0,rev:"dummy"};const newDoc={children:chunks.map((e3=>e3.id)),_id:note._id,path:note.path,ctime:note.ctime,mtime:note.mtime,size:note.size,type:note.datatype,eden};return null!=(_a7=await serialized("file:"+filename,(async()=>{try{const old=await this.localDatabase.get(newDoc._id);newDoc._rev=old._rev}catch(ex){if(!isErrorOfMissingDoc(ex))throw ex}const r4=await this.localDatabase.put(newDoc,{force:!0});return!!r4.ok&&r4})))&&_a7}async resetDatabase(){var _a7,_b3;null==(_a7=this.changeHandler)||_a7.cancel();await(null==(_b3=this.changeHandler)?void 0:_b3.removeAllListeners());this.env.$$getReplicator().closeReplication();if(!await this.env.$everyOnResetDatabase(this)){Logger("Database reset has been prevented or failed on some modules.",LOG_LEVEL_NOTICE);return!1}Logger("Database closed for reset Database.");this.isReady=!1;await this.localDatabase.destroy();this.localDatabase=null;await this.initializeDatabase();Logger("Local Database Reset",LOG_LEVEL_NOTICE)}isTargetFile(filenameSrc){const file=filenameSrc.startsWith("i:")?filenameSrc.substring(2):filenameSrc;if(file.startsWith("ix:"))return!0;if(file.startsWith("ps:"))return!0;if(file.includes(":"))return!1;if(this.settings.syncOnlyRegEx){const syncOnly=new RegExp(this.settings.syncOnlyRegEx,this.settings.handleFilenameCaseSensitive?"":"i");if(!file.match(syncOnly))return!1}if(this.settings.syncIgnoreRegEx){const syncIgnore=new RegExp(this.settings.syncIgnoreRegEx,this.settings.handleFilenameCaseSensitive?"":"i");if(file.match(syncIgnore))return!1}return!0}collectChunks(ids,showResult=!1,waitForReady){return this.chunkCollector.collectChunks(ids,showResult,waitForReady)}async*findAllChunks(opt){const targets=[()=>this.findEntries("h:","h:",null!=opt?opt:{})];for(const targetFun of targets){const target=targetFun();yield*target}}async*findEntries(startKey,endKey,opt){let nextKey=startKey;""==endKey&&(endKey="");let req=this.allDocsRaw({limit:100,startkey:nextKey,endkey:endKey,include_docs:!0,...opt});do{const docs=await req;if(0===docs.rows.length)break;nextKey=`${docs.rows[docs.rows.length-1].id}`;req=this.allDocsRaw({limit:100,skip:1,startkey:nextKey,endkey:endKey,include_docs:!0,...opt});for(const row of docs.rows){const doc=row.doc;"type"in doc&&("newnote"!=doc.type&&"plain"!=doc.type||(yield doc))}}while(""!=nextKey)}async*findAllDocs(opt){const targets=[()=>this.findEntries("","_",null!=opt?opt:{}),()=>this.findEntries("_","h:",null!=opt?opt:{}),()=>this.findEntries("h:","",null!=opt?opt:{})];for(const targetFun of targets)yield*targetFun()}async*findEntryNames(startKey,endKey,opt){let nextKey=startKey;""==endKey&&(endKey="");let req=this.allDocsRaw({limit:100,startkey:nextKey,endkey:endKey,...opt});do{const docs=await req;if(0==docs.rows.length){nextKey="";break}nextKey=`${docs.rows[docs.rows.length-1].key}`;req=this.allDocsRaw({limit:100,skip:1,startkey:nextKey,endkey:endKey,...opt});for(const row of docs.rows)yield row.id}while(""!=nextKey)}async*findAllDocNames(opt){const targets=[()=>this.findEntryNames("","_",null!=opt?opt:{}),()=>this.findEntryNames("_","h:",null!=opt?opt:{}),()=>this.findEntryNames("h:","i:",null!=opt?opt:{}),()=>this.findEntryNames("i:","ix:",null!=opt?opt:{}),()=>this.findEntryNames("ix:","ps:",null!=opt?opt:{}),()=>this.findEntryNames("ps:","",null!=opt?opt:{})];for(const targetFun of targets){const target=targetFun();for await(const f4 of target)f4.startsWith("_")||"obsydian_livesync_version"!=f4&&(yield f4)}}async*findAllNormalDocs(opt){const targets=[()=>this.findEntries("","_",null!=opt?opt:{}),()=>this.findEntries("_","h:",null!=opt?opt:{}),()=>this.findEntries("h:","i:",null!=opt?opt:{}),()=>this.findEntries("i:","ix:",null!=opt?opt:{}),()=>this.findEntries("ix:","ps:",null!=opt?opt:{}),()=>this.findEntries("ps:","",null!=opt?opt:{})];for(const targetFun of targets){const target=targetFun();for await(const f4 of target)f4._id.startsWith("_")||"newnote"!=f4.type&&"plain"!=f4.type||(yield f4)}}async removeRevision(docId,revision){try{const doc=await this.localDatabase.get(docId,{rev:revision});doc._deleted=!0;await this.localDatabase.put(doc);return!0}catch(ex){isErrorOfMissingDoc(ex)&&Logger(`Remove revision: Missing target revision, ${docId}-${revision}`,LOG_LEVEL_VERBOSE)}return!1}getRaw(docId,options){return this.localDatabase.get(docId,options||{})}removeRaw(docId,revision,options){return this.localDatabase.remove(docId,revision,options||{})}putRaw(doc,options){return this.localDatabase.put(doc,options||{})}allDocsRaw(options){return this.localDatabase.allDocs(options)}bulkDocsRaw(docs,options){return this.localDatabase.bulkDocs(docs,options||{})}async UXFileInfoToSavingEntry(file){const datatype=determineTypeFromBlob(file.body),fullPath=file.path;return{_id:await this.path2id(fullPath),path:fullPath,data:file.body,mtime:file.stat.mtime,ctime:file.stat.ctime,size:file.stat.size,children:[],datatype,type:datatype,eden:{}}}async getConflictedDoc(path2,rev3){try{const doc=await this.getDBEntry(path2,{rev:rev3},!1,!0,!0);if(!1===doc)return!1;let data=getDocData(doc.data);"newnote"==doc.datatype?data=readString(new Uint8Array(decodeBinary(doc.data))):doc.datatype;return{deleted:doc.deleted||doc._deleted,ctime:doc.ctime,mtime:doc.mtime,rev:rev3,data}}catch(ex){if(isErrorOfMissingDoc(ex))return!1}return!1}async mergeSensibly(path2,baseRev,currentRev,conflictedRev){function splitDiffPiece(src){const ret=[];do{const d4=src.shift();if(void 0===d4)return ret;const pieces=d4[1].split(/([^\n]*\n)/).filter((f4=>""!=f4));if(void 0===d4)break;d4[0]!=import_diff_match_patch2.DIFF_DELETE&&ret.push(...pieces.map((e3=>[d4[0],e3])));if(d4[0]==import_diff_match_patch2.DIFF_DELETE){const nd=src.shift();if(void 0!==nd){const piecesPair=nd[1].split(/([^\n]*\n)/).filter((f4=>""!=f4));if(nd[0]==import_diff_match_patch2.DIFF_INSERT){for(const pt of pieces){ret.push([d4[0],pt]);const pairP=piecesPair.shift();void 0!==pairP&&ret.push([import_diff_match_patch2.DIFF_INSERT,pairP])}ret.push(...piecesPair.map((e3=>[nd[0],e3])))}else{ret.push(...pieces.map((e3=>[d4[0],e3])));ret.push(...piecesPair.map((e3=>[nd[0],e3])))}}else ret.push(...pieces.map((e3=>[0,e3])))}}while(src.length>0);return ret}var _a7,_b3,_c2,_d2;const baseLeaf=await this.getConflictedDoc(path2,baseRev),leftLeaf=await this.getConflictedDoc(path2,currentRev),rightLeaf=await this.getConflictedDoc(path2,conflictedRev);let autoMerge=!1;if(0==baseLeaf||0==leftLeaf||0==rightLeaf)return!1;if(leftLeaf.deleted&&rightLeaf.deleted)return!1;const dmp=new import_diff_match_patch2.diff_match_patch,mapLeft=dmp.diff_linesToChars_(baseLeaf.data,leftLeaf.data),diffLeftSrc=dmp.diff_main(mapLeft.chars1,mapLeft.chars2,!1);dmp.diff_charsToLines_(diffLeftSrc,mapLeft.lineArray);const mapRight=dmp.diff_linesToChars_(baseLeaf.data,rightLeaf.data),diffRightSrc=dmp.diff_main(mapRight.chars1,mapRight.chars2,!1);dmp.diff_charsToLines_(diffRightSrc,mapRight.lineArray);const diffLeft=splitDiffPiece(diffLeftSrc),diffRight=splitDiffPiece(diffRightSrc);let rightIdx=0,leftIdx=0;const merged=[];autoMerge=!0;LOOP_MERGE:do{if(leftIdx>=diffLeft.length&&rightIdx>=diffRight.length)break LOOP_MERGE;const leftItem=null!=(_a7=diffLeft[leftIdx])?_a7:[0,""],rightItem=null!=(_b3=diffRight[rightIdx])?_b3:[0,""];leftIdx++;rightIdx++;if(leftItem[0]!=import_diff_match_patch2.DIFF_EQUAL||rightItem[0]!=import_diff_match_patch2.DIFF_EQUAL||leftItem[1]!=rightItem[1])if(leftItem[0]!=import_diff_match_patch2.DIFF_DELETE||rightItem[0]!=import_diff_match_patch2.DIFF_DELETE||leftItem[1]!=rightItem[1])if(leftItem[0]!=import_diff_match_patch2.DIFF_INSERT||rightItem[0]!=import_diff_match_patch2.DIFF_INSERT)if(leftItem[0]!=import_diff_match_patch2.DIFF_INSERT){if(rightItem[0]!=import_diff_match_patch2.DIFF_INSERT){if(rightItem[1]!=leftItem[1]){Logger(`MERGING PANIC:${leftItem[0]},${leftItem[1]} == ${rightItem[0]},${rightItem[1]}`,LOG_LEVEL_VERBOSE);autoMerge=!1;break LOOP_MERGE}if(leftItem[0]==import_diff_match_patch2.DIFF_DELETE){if(rightItem[0]==import_diff_match_patch2.DIFF_EQUAL){merged.push(leftItem);continue}autoMerge=!1;break LOOP_MERGE}if(rightItem[0]==import_diff_match_patch2.DIFF_DELETE){if(leftItem[0]==import_diff_match_patch2.DIFF_EQUAL){merged.push(rightItem);continue}autoMerge=!1;break LOOP_MERGE}Logger(`Weird condition:${leftItem[0]},${leftItem[1]} == ${rightItem[0]},${rightItem[1]}`,LOG_LEVEL_VERBOSE);break LOOP_MERGE}leftIdx--;merged.push(rightItem)}else{rightIdx--;merged.push(leftItem)}else{if(leftItem[1]==rightItem[1]){merged.push(leftItem);continue}if(leftLeaf.mtime<=rightLeaf.mtime){merged.push(leftItem);merged.push(rightItem);continue}merged.push(rightItem);merged.push(leftItem)}else{const nextLeftIdx=leftIdx,nextRightIdx=rightIdx,[nextLeftItem,nextRightItem]=[null!=(_c2=diffLeft[nextLeftIdx])?_c2:[0,""],null!=(_d2=diffRight[nextRightIdx])?_d2:[0,""]];if(nextLeftItem[0]==import_diff_match_patch2.DIFF_INSERT&&nextRightItem[0]==import_diff_match_patch2.DIFF_INSERT&&nextLeftItem[1]!=nextRightItem[1]){autoMerge=!1;break}merged.push(leftItem)}else merged.push(leftItem)}while(leftIdx<diffLeft.length||rightIdx<diffRight.length);if(autoMerge){Logger("Sensibly merge available",LOG_LEVEL_VERBOSE);return merged}return!1}async mergeObject(path2,baseRev,currentRev,conflictedRev){try{const baseLeaf=await this.getConflictedDoc(path2,baseRev),leftLeaf=await this.getConflictedDoc(path2,currentRev),rightLeaf=await this.getConflictedDoc(path2,conflictedRev);if(0==baseLeaf||0==leftLeaf||0==rightLeaf){Logger("Could not load leafs for merge",LOG_LEVEL_VERBOSE);Logger(`${baseLeaf?"base":"missing base"}, ${leftLeaf?"left":"missing left"}, ${rightLeaf?"right":"missing right"} }`,LOG_LEVEL_VERBOSE);return!1}if(leftLeaf.deleted&&rightLeaf.deleted){Logger("Both are deleted",LOG_LEVEL_VERBOSE);return!1}const baseObj={data:tryParseJSON(baseLeaf.data,{})},leftObj={data:tryParseJSON(leftLeaf.data,{})},rightObj={data:tryParseJSON(rightLeaf.data,{})},diffLeft=generatePatchObj(baseObj,leftObj),diffRight=generatePatchObj(baseObj,rightObj),diffSetLeft=new Map(flattenObject(diffLeft)),diffSetRight=new Map(flattenObject(diffRight));for(const[key2,value]of diffSetLeft)diffSetRight.has(key2)&&diffSetRight.get(key2)==value&&diffSetRight.delete(key2);for(const[key2,value]of diffSetRight)if(diffSetLeft.has(key2)&&diffSetLeft.get(key2)!=value){Logger(`Conflicted key:${key2}`,LOG_LEVEL_VERBOSE);return!1}const patches=[{mtime:leftLeaf.mtime,patch:diffLeft},{mtime:rightLeaf.mtime,patch:diffRight}].sort(((a2,b3)=>a2.mtime-b3.mtime));let newObj={...baseObj};for(const patch of patches)newObj=applyPatch(newObj,patch.patch);Logger("Object merge is applicable!",LOG_LEVEL_VERBOSE);return JSON.stringify(newObj.data)}catch(ex){Logger("Could not merge object");Logger(ex,LOG_LEVEL_VERBOSE);return!1}}async tryAutoMerge(path2,enableMarkdownAutoMerge){var _a7,_b3;const test=await this.getDBEntry(path2,{conflicts:!0,revs_info:!0},!1,!1,!0);if(!1===test)return{ok:MISSING_OR_ERROR};if(null==test)return{ok:MISSING_OR_ERROR};if(!test._conflicts)return{ok:NOT_CONFLICTED};if(0==test._conflicts.length)return{ok:NOT_CONFLICTED};const conflicts=test._conflicts.sort(((a2,b3)=>Number(a2.split("-")[0])-Number(b3.split("-")[0])));if((isSensibleMargeApplicable(path2)||isObjectMargeApplicable(path2))&&enableMarkdownAutoMerge){const conflictedRev=conflicts[0],conflictedRevNo=Number(conflictedRev.split("-")[0]),commonBase=null!=(_b3=null==(_a7=((await this.getRaw(await this.path2id(path2),{revs_info:!0}))._revs_info||[]).filter((e3=>"available"==e3.status&&Number(e3.rev.split("-")[0])<conflictedRevNo)).first())?void 0:_a7.rev)?_b3:"";let p4;if(commonBase){if(isSensibleMargeApplicable(path2)){const result=await this.mergeSensibly(path2,commonBase,test._rev,conflictedRev);if(result){p4=result.filter((e3=>e3[0]!=import_diff_match_patch2.DIFF_DELETE)).map((e3=>e3[1])).join("");Logger(`Sensible merge:${path2}`,LOG_LEVEL_INFO)}else Logger("Sensible merge is not applicable.",LOG_LEVEL_VERBOSE)}else if(isObjectMargeApplicable(path2)){const result=await this.mergeObject(path2,commonBase,test._rev,conflictedRev);if(result){Logger(`Object merge:${path2}`,LOG_LEVEL_INFO);p4=result}else Logger("Object merge is not applicable..",LOG_LEVEL_VERBOSE)}if(void 0!==p4)return{result:p4,conflictedRev}}}const leftLeaf=await this.getConflictedDoc(path2,test._rev),rightLeaf=await this.getConflictedDoc(path2,conflicts[0]);return{leftRev:test._rev,rightRev:conflicts[0],leftLeaf,rightLeaf}}};LiveSyncAbstractReplicator=class{constructor(env){this.syncStatus="NOT_CONNECTED";this.docArrived=0;this.docSent=0;this.lastSyncPullSeq=0;this.maxPullSeq=0;this.lastSyncPushSeq=0;this.maxPushSeq=0;this.nodeid="";this.remoteLocked=!1;this.remoteCleaned=!1;this.remoteLockedAndDeviceNotAccepted=!1;this.tweakSettingsMismatched=!1;this.updateInfo=()=>{this.env.replicationStat.value={sent:this.docSent,arrived:this.docArrived,maxPullSeq:this.maxPullSeq,maxPushSeq:this.maxPushSeq,lastSyncPullSeq:this.lastSyncPullSeq,lastSyncPushSeq:this.lastSyncPushSeq,syncStatus:this.syncStatus}};this.env=env}async initializeDatabaseForReplication(){const db=this.env.getDatabase();try{const nodeinfo=await resolveWithIgnoreKnownError(db.get("_local/obsydian_livesync_nodeinfo"),{_id:"_local/obsydian_livesync_nodeinfo",type:"nodeinfo",nodeid:"",v20220607:!0});if(""==nodeinfo.nodeid){nodeinfo.nodeid=Math.random().toString(36).slice(-10);await db.put(nodeinfo)}this.nodeid=nodeinfo.nodeid;return!0}catch(ex){Logger(ex)}return!1}};instanceOfAny=(object,constructors)=>constructors.some((c3=>object instanceof c3));transactionDoneMap=new WeakMap;transformCache=new WeakMap;reverseTransformCache=new WeakMap;idbProxyTraps={get(target,prop2,receiver){if(target instanceof IDBTransaction){if("done"===prop2)return transactionDoneMap.get(target);if("store"===prop2)return receiver.objectStoreNames[1]?void 0:receiver.objectStore(receiver.objectStoreNames[0])}return wrap(target[prop2])},set(target,prop2,value){target[prop2]=value;return!0},has:(target,prop2)=>target instanceof IDBTransaction&&("done"===prop2||"store"===prop2)||prop2 in target};unwrap=value=>reverseTransformCache.get(value);readMethods=["get","getKey","getAll","getAllKeys","count"];writeMethods=["put","add","delete","clear"];cachedMethods=new Map;replaceTraps((oldTraps=>({...oldTraps,get:(target,prop2,receiver)=>getMethod(target,prop2)||oldTraps.get(target,prop2,receiver),has:(target,prop2)=>!!getMethod(target,prop2)||oldTraps.has(target,prop2)})));advanceMethodProps=["continue","continuePrimaryKey","advance"];methodMap={};advanceResults=new WeakMap;ittrProxiedCursorToOriginalProxy=new WeakMap;cursorIteratorTraps={get(target,prop2){if(!advanceMethodProps.includes(prop2))return target[prop2];let cachedFunc=methodMap[prop2];cachedFunc||(cachedFunc=methodMap[prop2]=function(...args){advanceResults.set(this,ittrProxiedCursorToOriginalProxy.get(this)[prop2](...args))});return cachedFunc}};replaceTraps((oldTraps=>({...oldTraps,get:(target,prop2,receiver)=>isIteratorProp(target,prop2)?iterate:oldTraps.get(target,prop2,receiver),has:(target,prop2)=>isIteratorProp(target,prop2)||oldTraps.has(target,prop2)})));databaseCache={};OpenKeyValueDatabase=async dbKey=>{if(dbKey in databaseCache){databaseCache[dbKey].close();delete databaseCache[dbKey]}const storeKey=dbKey,dbPromise=function openDB(name,version2,{blocked,upgrade,blocking,terminated}={}){const request2=indexedDB.open(name,version2),openPromise=wrap(request2);upgrade&&request2.addEventListener("upgradeneeded",(event2=>{upgrade(wrap(request2.result),event2.oldVersion,event2.newVersion,wrap(request2.transaction),event2)}));blocked&&request2.addEventListener("blocked",(event2=>blocked(event2.oldVersion,event2.newVersion,event2)));openPromise.then((db=>{terminated&&db.addEventListener("close",(()=>terminated()));blocking&&db.addEventListener("versionchange",(event2=>blocking(event2.oldVersion,event2.newVersion,event2)))})).catch((()=>{}));return openPromise}(dbKey,1,{upgrade(db2){db2.createObjectStore(storeKey)}}),db=await dbPromise;databaseCache[dbKey]=db;return{get:async key2=>await db.get(storeKey,key2),set:async(key2,value)=>await db.put(storeKey,value,key2),del:async key2=>await db.delete(storeKey,key2),clear:async()=>await db.clear(storeKey),keys:async(query3,count)=>await db.getAllKeys(storeKey,query3,count),close(){delete databaseCache[dbKey];return db.close()},async destroy(){delete databaseCache[dbKey];db.close();await function deleteDB(name,{blocked}={}){const request2=indexedDB.deleteDatabase(name);blocked&&request2.addEventListener("blocked",(event2=>blocked(event2.oldVersion,event2)));return wrap(request2).then((()=>{}))}(dbKey)}}};tasks2=new Map;intervals={};waitingItems=new Set;PersistentMap=class{flush(){this._save()}_save(){localStorage.setItem(this._key,JSON.stringify([...this._map.entries()]))}_load(suppliedEntries=[]){var _a7;try{const savedSource=null!=(_a7=localStorage.getItem(this._key))?_a7:"",sourceToParse=""===savedSource?"[]":savedSource,obj=JSON.parse(sourceToParse);this._map=new Map([...obj,...suppliedEntries])}catch(ex){console.log(`Map read error : ${this._key}`);console.dir(ex);this._map=new Map([...suppliedEntries])}return Promise.resolve()}_queueSave(){this._setCount--;if(this._setCount<0){this._setCount=100;scheduleTask(`save-map-${this._key}`,0,(()=>this._save()))}scheduleTask(`save-map-${this._key}`,150,(()=>this._save()))}delete(key2){const ret=this._map.delete(key2);this._queueSave();return ret}has(key2){return this._map.has(key2)}set(key2,value){this._map.set(key2,value);this._queueSave();return this}clear(){this._map=new Map;this._save()}get(key2,defValue){const v2=this._map.get(key2);return void 0===v2?defValue:v2}constructor(key2,entries2){Object.defineProperty(this,"_setCount",{enumerable:!0,configurable:!0,writable:!0,value:100});Object.defineProperty(this,"_map",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_key",{enumerable:!0,configurable:!0,writable:!0,value:void 0});this._key=key2;this._map=new Map(null!=entries2?entries2:[]);this._load(entries2)}};EVENT_LAYOUT_READY="layout-ready";memos={};PeriodicProcessor=class{constructor(plugin3,process2){this._timer=void 0;this._plugin=plugin3;this._process=process2;eventHub.onceEvent("plugin-unloaded",(()=>{this.disable()}))}async process(){try{await this._process()}catch(ex){Logger(ex)}}enable(interval){this.disable();if(0!=interval){this._timer=window.setInterval((()=>fireAndForget((async()=>{await this.process();this._plugin.$$isUnloaded()&&this.disable()}))),interval);this._plugin.registerInterval(this._timer)}}disable(){if(void 0!==this._timer){window.clearInterval(this._timer);this._timer=void 0}}};_requestToCouchDB=async(baseUri,username,password,origin2,path2,body,method)=>{const utf8str=String.fromCharCode.apply(null,[...writeString(`${username}:${password}`)]),requestParam={url:`${baseUri}/${path2}`,method:method||(body?"PUT":"GET"),headers:{authorization:"Basic "+window.btoa(utf8str),origin:origin2},contentType:"application/json",body:body?JSON.stringify(body):void 0};return await(0,import_obsidian.requestUrl)(requestParam)};requestToCouchDB=async(baseUri,username,password,origin2="",key2,body,method)=>{const uri="_node/_local/_config"+(key2?"/"+key2:"");return await _requestToCouchDB(baseUri,username,password,origin2,uri,body,method)};BASE_IS_NEW=Symbol("base");TARGET_IS_NEW=Symbol("target");EVEN=Symbol("even");resolution=2e3;_cached=new Map;waitingTasks={};topologicalSortCache=new Map;_reactiveSourceId=0;reactiveSource({pending:[],running:[],count:0});collectingChunks=reactiveSource(0);pluginScanningCount=reactiveSource(0);hiddenFilesProcessingCount=reactiveSource(0);hiddenFilesEventCount=reactiveSource(0);logStore=new QueueProcessor((e3=>e3),{batchSize:1,suspended:!1,keepResultUntilDownstreamConnected:!0});logMessages=reactiveSource([]);AbstractModule=class{constructor(core){this.core=core;this._log=(msg,level=LOG_LEVEL_INFO,key2)=>{"string"==typeof msg&&level!==LOG_LEVEL_NOTICE&&(msg=`[${this.constructor.name}] ${msg}`);Logger(msg,level,key2)};this.saveSettings=this.core.saveSettings.bind(this.core);Logger(`[${this.constructor.name}] Loaded`,LOG_LEVEL_VERBOSE)}get localDatabase(){return this.core.localDatabase}get settings(){return this.core.settings}set settings(value){this.core.settings=value}addTestResult(key2,value,summary,message){this.core.$$addTestResult(`${this.constructor.name}`,key2,value,summary,message)}testDone(result=!0){return Promise.resolve(result)}testFail(message){this._log(message,LOG_LEVEL_NOTICE);return this.testDone(!1)}async _test(key2,process2){this._log(`Testing ${key2}`,LOG_LEVEL_VERBOSE);try{const ret=await process2();if(!0!==ret){this.addTestResult(key2,!1,ret.toString());return this.testFail(`${key2} failed: ${ret}`)}this.addTestResult(key2,!0,"")}catch(ex){this.addTestResult(key2,!1,"Failed by Exception",ex.toString());return this.testFail(`${key2} failed: ${ex}`)}return this.testDone()}};AbstractObsidianModule=class extends AbstractModule{constructor(plugin3,core){super(core);this.plugin=plugin3;this.core=core;this.addCommand=this.plugin.addCommand.bind(this.plugin);this.registerView=this.plugin.registerView.bind(this.plugin);this.addRibbonIcon=this.plugin.addRibbonIcon.bind(this.plugin);this.registerObsidianProtocolHandler=this.plugin.registerObsidianProtocolHandler.bind(this.plugin);this.saveSettings=this.plugin.saveSettings.bind(this.plugin)}get localDatabase(){return this.plugin.localDatabase}get settings(){return this.plugin.settings}set settings(value){this.plugin.settings=value}get app(){return this.plugin.app}_isMainReady(){return this.core.$$isReady()}_isMainSuspended(){return this.core.$$isSuspended()}_isDatabaseReady(){return this.core.$$isDatabaseReady()}_isThisModuleEnabled(){return!0}};"undefined"!=typeof window&&(window.__svelte||(window.__svelte={v:new Set})).v.add("5");EACH_ITEM_REACTIVE=1;EACH_INDEX_REACTIVE=2;EACH_IS_CONTROLLED=4;EACH_IS_ANIMATED=8;EACH_ITEM_IMMUTABLE=16;PROPS_IS_IMMUTABLE=1;PROPS_IS_RUNES=2;PROPS_IS_UPDATED=4;PROPS_IS_BINDABLE=8;PROPS_IS_LAZY_INITIAL=16;TEMPLATE_FRAGMENT=1;TEMPLATE_USE_IMPORT_NODE=2;HYDRATION_START="[";HYDRATION_START_ELSE="[!";HYDRATION_END="]";HYDRATION_ERROR={};UNINITIALIZED=Symbol();FILENAME=Symbol("filename");Symbol("hmr");node_env=null==(_b2=null==(_a4=globalThis.process)?void 0:_a4.env)?void 0:_b2.NODE_ENV;dev_fallback_default=node_env&&!node_env.toLowerCase().startsWith("prod");DERIVED=2;EFFECT=4;RENDER_EFFECT=8;BLOCK_EFFECT=16;BRANCH_EFFECT=32;ROOT_EFFECT=64;BOUNDARY_EFFECT=128;UNOWNED=256;DISCONNECTED=512;CLEAN=1024;DIRTY=2048;MAYBE_DIRTY=4096;INERT=8192;DESTROYED=16384;EFFECT_RAN=32768;EFFECT_TRANSPARENT=65536;LEGACY_DERIVED_PROP=1<<17;INSPECT_EFFECT=1<<18;HEAD_EFFECT=1<<19;EFFECT_HAS_DERIVED=1<<20;STATE_SYMBOL=Symbol("$state");STATE_SYMBOL_METADATA=Symbol("$state metadata");LEGACY_PROPS=Symbol("legacy props");LOADING_ATTR_SYMBOL=Symbol("");is_array=Array.isArray;index_of=Array.prototype.indexOf;array_from=Array.from;Object.keys;define_property=Object.defineProperty;get_descriptor=Object.getOwnPropertyDescriptor;get_descriptors=Object.getOwnPropertyDescriptors;object_prototype=Object.prototype;array_prototype=Array.prototype;get_prototype_of=Object.getPrototypeOf;noop2=()=>{};request_idle_callback="undefined"==typeof requestIdleCallback?cb2=>setTimeout(cb2,1):requestIdleCallback;is_micro_task_queued=!1;is_idle_task_queued=!1;current_queued_micro_tasks=[];current_queued_idle_tasks=[];legacy_mode_flag=!1;tracing_mode_flag=!1;tracing_expressions=null;inspect_effects=new Set;stack=[];bold2="font-weight: bold";normal2="font-weight: normal";hydrating=!1;FLUSH_MICROTASK=0;handled_errors=new WeakSet;is_throwing_error=!1;scheduler_mode=FLUSH_MICROTASK;is_micro_task_queued2=!1;last_scheduled_effect=null;is_flushing_effect=!1;is_destroying_effect=!1;queued_root_effects=[];flush_count=0;dev_effect_stack=[];active_reaction=null;untracking=!1;active_effect=null;derived_sources=null;new_deps=null;skipped_deps=0;untracked_writes=null;write_version=1;read_version=0;skip_reaction=!1;captured_signals=null;STATUS_MASK=~(DIRTY|MAYBE_DIRTY|CLEAN);boundaries={};chrome_pattern=/at (?:.+ \()?(.+):(\d+):(\d+)\)?$/;firefox_pattern=/@(.+):(\d+):(\d+)$/;ADD_OWNER=Symbol("ADD_OWNER");skip=!1;component_context=null;dev_current_component_function=null;PASSIVE_EVENTS=["touchstart","touchmove"];all_styles=new Map;listening_to_form_reset=!1;all_registered_events=new Set;root_event_handles=new Set;document_listeners=new Map;mounted_components=new WeakMap;current_each_item=null;setters_cache=new Map;pending=new Set;_ResizeObserverSingleton=class _ResizeObserverSingleton{constructor(options){__privateAdd(this,_ResizeObserverSingleton_instances);__privateAdd(this,_listeners,new WeakMap);__privateAdd(this,_observer);__privateAdd(this,_options2);__privateSet(this,_options2,options)}observe(element2,listener){var listeners=__privateGet(this,_listeners).get(element2)||new Set;listeners.add(listener);__privateGet(this,_listeners).set(element2,listeners);__privateMethod(this,_ResizeObserverSingleton_instances,getObserver_fn).call(this).observe(element2,__privateGet(this,_options2));return()=>{var listeners2=__privateGet(this,_listeners).get(element2);listeners2.delete(listener);if(0===listeners2.size){__privateGet(this,_listeners).delete(element2);__privateGet(this,_observer).unobserve(element2)}}}};_listeners=new WeakMap;_observer=new WeakMap;_options2=new WeakMap;_ResizeObserverSingleton_instances=new WeakSet;getObserver_fn=function(){var _a7;return null!=(_a7=__privateGet(this,_observer))?_a7:__privateSet(this,_observer,new ResizeObserver((entries2=>{var entry,listener;for(entry of entries2){_ResizeObserverSingleton.entries.set(entry.target,entry);for(listener of __privateGet(this,_listeners).get(entry.target)||[])listener(entry)}})))};__publicField(_ResizeObserverSingleton,"entries",new WeakMap);if(dev_fallback_default){let throw_rune_error=function(rune){if(!(rune in globalThis)){let value;Object.defineProperty(globalThis,rune,{configurable:!0,get:()=>{if(void 0!==value)return value;(function rune_outside_svelte(rune){if(dev_fallback_default){const error=new Error(`rune_outside_svelte\nThe \`${rune}\` rune is only available inside \`.svelte\` and \`.svelte.js/ts\` files\nhttps://svelte.dev/e/rune_outside_svelte`);error.name="Svelte error";throw error}throw new Error("https://svelte.dev/e/rune_outside_svelte")})(rune)},set:v2=>{value=v2}})}};throw_rune_error("$state");throw_rune_error("$effect");throw_rune_error("$derived");throw_rune_error("$inspect");throw_rune_error("$props");throw_rune_error("$bindable")}subscriber_queue=[];is_store_binding=!1;IS_UNMOUNTED=Symbol();spread_props_handler={get(target,key2){let i2=target.props.length;for(;i2--;){let p4=target.props[i2];is_function(p4)&&(p4=p4());if("object"==typeof p4&&null!==p4&&key2 in p4)return p4[key2]}},set(target,key2,value){let i2=target.props.length;for(;i2--;){let p4=target.props[i2];is_function(p4)&&(p4=p4());const desc=get_descriptor(p4,key2);if(desc&&desc.set){desc.set(value);return!0}}return!1},getOwnPropertyDescriptor(target,key2){let i2=target.props.length;for(;i2--;){let p4=target.props[i2];is_function(p4)&&(p4=p4());if("object"==typeof p4&&null!==p4&&key2 in p4){const descriptor=get_descriptor(p4,key2);descriptor&&!descriptor.configurable&&(descriptor.configurable=!0);return descriptor}}},has(target,key2){if(key2===STATE_SYMBOL||key2===LEGACY_PROPS)return!1;for(let p4 of target.props){is_function(p4)&&(p4=p4());if(null!=p4&&key2 in p4)return!0}return!1},ownKeys(target){const keys3=[];for(let p4 of target.props){is_function(p4)&&(p4=p4());for(const key2 in p4)keys3.includes(key2)||keys3.push(key2)}return keys3}};new WeakMap;new WeakMap;"function"==typeof HTMLElement&&HTMLElement;SUPPORTED_I18N_LANGS=["de","es","ja","ru","zh","zh-tw"];expandedMessage={...expandKeywords(_allMessages={"moduleMigration.logBulkSendCorrupted":{def:"Send chunks in bulk has been enabled, however, this feature had been corrupted. Sorry for your inconvenience. Automatically disabled.",es:"El envío de fragmentos en bloque se ha habilitado, sin embargo, esta función se ha corrompido. Disculpe las molestias. Deshabilitado automáticamente."},"moduleMigration.logMigrationFailed":{def:"Migration failed or cancelled from ${old} to ${current}",es:"La migración falló o se canceló de ${old} a ${current}"},"moduleMigration.logFetchRemoteTweakFailed":{def:"Failed to fetch remote tweak values",es:"Error al obtener los valores de ajuste remoto"},"moduleMigration.logRemoteTweakUnavailable":{def:"Could not get remote tweak values",es:"No se pudieron obtener los valores de ajuste remoto"},"moduleMigration.logMigratedSameBehaviour":{def:"Migrated to db:${current} with the same behaviour as before",es:"Migrado a db:${current} con el mismo comportamiento que antes"},"moduleMigration.logRedflag2CreationFail":{def:"Failed to create redflag2",es:"Error al crear redflag2"},"moduleMigration.logLocalDatabaseNotReady":{def:"Something went wrong! The local database is not ready",es:"¡Algo salió mal! La base de datos local no está lista"},"moduleMigration.logSetupCancelled":{def:"The setup has been cancelled, Self-hosted LiveSync waiting for your setup!",es:"La configuración ha sido cancelada, ¡Self-hosted LiveSync está esperando tu configuración!"},"moduleMigration.titleCaseSensitivity":{def:"Case Sensitivity",es:"Sensibilidad a mayúsculas"},"moduleMigration.msgFetchRemoteAgain":{def:"As you may already know, the self-hosted LiveSync has changed its default behaviour and database structure.\n\nAnd thankfully, with your time and efforts, the remote database appears to have already been migrated. Congratulations!\n\nHowever, we need a bit more. The configuration of this device is not compatible with the remote database. We will need to fetch the remote database again. Should we fetch from the remote again now?\n\n___Note: We cannot synchronise until the configuration has been changed and the database has been fetched again.___\n___Note2: The chunks are completely immutable, we can fetch only the metadata and difference.___",es:"Como ya sabrás, Self-hosted LiveSync ha cambiado su comportamiento predeterminado y la estructura de la base de datos.\n\nAfortunadamente, con tu tiempo y esfuerzo, la base de datos remota parece haber sido ya migrada. ¡Felicidades!\n\nSin embargo, necesitamos un poco más. La configuración de este dispositivo no es compatible con la base de datos remota. Necesitaremos volver a obtener la base de datos remota. ¿Debemos obtenerla nuevamente ahora?\n\n___Nota: No podemos sincronizar hasta que la configuración haya sido cambiada y la base de datos haya sido obtenida nuevamente.___\n___Nota2: Los fragmentos son completamente inmutables, solo podemos obtener los metadatos y diferencias.___"},"moduleMigration.optionYesFetchAgain":{def:"Yes, fetch again",es:"Sí, obtener nuevamente"},"moduleMigration.optionNoAskAgain":{def:"No, please ask again",es:"No, por favor pregúntame de nuevo"},"moduleMigration.msgSinceV02321":{def:"Since v0.23.21, the self-hosted LiveSync has changed the default behaviour and database structure. The following changes have been made:\n\n1. **Case sensitivity of filenames** \n The handling of filenames is now case-insensitive. This is a beneficial change for most platforms, other than Linux and iOS, which do not manage filename case sensitivity effectively.\n (On These, a warning will be displayed for files with the same name but different cases).\n\n2. **Revision handling of the chunks** \n Chunks are immutable, which allows their revisions to be fixed. This change will enhance the performance of file saving.\n\n___However, to enable either of these changes, both remote and local databases need to be rebuilt. This process takes a few minutes, and we recommend doing it when you have ample time.___\n\n- If you wish to maintain the previous behaviour, you can skip this process by using `${KEEP}`.\n- If you do not have enough time, please choose `${DISMISS}`. You will be prompted again later.\n- If you have rebuilt the database on another device, please select `${DISMISS}` and try synchronizing again. Since a difference has been detected, you will be prompted again.",es:"Desde la versión v0.23.21, Self-hosted LiveSync ha cambiado el comportamiento predeterminado y la estructura de la base de datos. Se han realizado los siguientes cambios:\n\n1. **Sensibilidad a mayúsculas de los nombres de archivo**\n El manejo de los nombres de archivo ahora no distingue entre mayúsculas y minúsculas. Este cambio es beneficioso para la mayoría de las plataformas, excepto Linux y iOS, que no gestionan efectivamente la sensibilidad a mayúsculas de los nombres de archivo.\n (En estos, se mostrará una advertencia para archivos con el mismo nombre pero diferentes mayúsculas).\n\n2. **Manejo de revisiones de los fragmentos**\n Los fragmentos son inmutables, lo que permite que sus revisiones sean fijas. Este cambio mejorará el rendimiento al guardar archivos.\n\n___Sin embargo, para habilitar cualquiera de estos cambios, es necesario reconstruir tanto las bases de datos remota como la local. Este proceso toma unos minutos, y recomendamos hacerlo cuando tengas tiempo suficiente.___\n\n- Si deseas mantener el comportamiento anterior, puedes omitir este proceso usando `${KEEP}`.\n- Si no tienes suficiente tiempo, por favor elige `${DISMISS}`. Se te pedirá nuevamente más tarde.\n- Si has reconstruido la base de datos en otro dispositivo, selecciona `${DISMISS}` e intenta sincronizar nuevamente. Dado que se ha detectado una diferencia, se te solicitará nuevamente."},"moduleMigration.optionEnableBoth":{def:"Enable both",es:"Habilitar ambos"},"moduleMigration.optionEnableFilenameCaseInsensitive":{def:"Enable only #1",es:"Habilitar solo #1"},"moduleMigration.optionEnableFixedRevisionForChunks":{def:"Enable only #2",es:"Habilitar solo #2"},"moduleMigration.optionAdjustRemote":{def:"Adjust to remote",es:"Ajustar al remoto"},"moduleMigration.optionKeepPreviousBehaviour":{def:"Keep previous behaviour",es:"Mantener comportamiento anterior"},"moduleMigration.optionDecideLater":{def:"Decide it later",es:"Decidirlo más tarde"},"moduleMigration.titleWelcome":{def:"Welcome to Self-hosted LiveSync",es:"Bienvenido a Self-hosted LiveSync"},"moduleMigration.msgInitialSetup":{def:"Your device has **not been set up yet**. Let me guide you through the setup process.\n\nPlease keep in mind that every dialogue content can be copied to the clipboard. If you need to refer to it later, you can paste it into a note in Obsidian. You can also translate it into your language using a translation tool.\n\nFirst, do you have **Setup URI**?\n\nNote: If you do not know what it is, please refer to the [documentation](${URI_DOC}).",es:"Tu dispositivo **aún no ha sido configurado**. Permíteme guiarte a través del proceso de configuración.\n\nTen en cuenta que todo el contenido del diálogo se puede copiar al portapapeles. Si necesitas consultarlo más tarde, puedes pegarlo en una nota en Obsidian. También puedes traducirlo a tu idioma utilizando una herramienta de traducción.\n\nPrimero, ¿tienes **URI de configuración**?\n\nNota: Si no sabes qué es, consulta la [documentación](${URI_DOC})."},"moduleMigration.docUri":{def:"https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use",es:"https://github.com/vrtmrz/obsidian-livesync/blob/main/README_ES.md#how-to-use"},"moduleMigration.optionHaveSetupUri":{def:"Yes, I have",es:"Sí, tengo"},"moduleMigration.optionNoSetupUri":{def:"No, I do not have",es:"No, no tengo"},"moduleMigration.titleRecommendSetupUri":{def:"Recommendation to use Setup URI",es:"Recomendación de uso de URI de configuración"},"moduleMigration.msgRecommendSetupUri":{def:"We strongly recommend that you generate a set-up URI and use it.\nIf you do not have knowledge about it, please refer to the [documentation](${URI_DOC}) (Sorry again, but it is important).\n\nHow do you want to set it up manually?",es:"Te recomendamos encarecidamente que generes una URI de configuración y la utilices.\nSi no tienes conocimientos al respecto, consulta la [documentación](${URI_DOC}) (Lo siento de nuevo, pero es importante).\n\n¿Cómo quieres configurarlo manualmente?"},"moduleMigration.optionSetupWizard":{def:"Take me into the setup wizard",es:"Llévame al asistente de configuración"},"moduleMigration.optionSetupViaP2P":{def:"Use %{short_p2p_sync} to set up"},"moduleMigration.optionManualSetup":{def:"Set it up all manually",es:"Configurarlo todo manualmente"},"moduleMigration.optionRemindNextLaunch":{def:"Remind me at the next launch",es:"Recordármelo en el próximo inicio"},"moduleLocalDatabase.logWaitingForReady":{def:"Waiting for ready...",es:"Esperando a que la base de datos esté lista...",ja:"しばらくお待ちください..."},"moduleCheckRemoteSize.logCheckingStorageSizes":{def:"Checking storage sizes",es:"Comprobando tamaños de almacenamiento"},"moduleCheckRemoteSize.titleDatabaseSizeNotify":{def:"Setting up database size notification",es:"Configuración de notificación de tamaño de base de datos"},"moduleCheckRemoteSize.msgSetDBCapacity":{def:"We can set a maximum database capacity warning, **to take action before running out of space on the remote storage**.\nDo you want to enable this?\n\n> [!MORE]-\n> - 0: Do not warn about storage size.\n> This is recommended if you have enough space on the remote storage especially you have self-hosted. And you can check the storage size and rebuild manually.\n> - 800: Warn if the remote storage size exceeds 800MB.\n> This is recommended if you are using fly.io with 1GB limit or IBM Cloudant.\n> - 2000: Warn if the remote storage size exceeds 2GB.\n\nIf we have reached the limit, we will be asked to enlarge the limit step by step.\n",es:"Podemos configurar una advertencia de capacidad máxima de base de datos, **para tomar medidas antes de quedarse sin espacio en el almacenamiento remoto**.\n¿Quieres habilitar esto?\n\n> [!MORE]-\n> - 0: No advertir sobre el tamaño del almacenamiento.\n> Esto es recomendado si tienes suficiente espacio en el almacenamiento remoto, especialmente si lo tienes autoalojado. Y puedes comprobar el tamaño del almacenamiento y reconstruir manualmente.\n> - 800: Advertir si el tamaño del almacenamiento remoto supera los 800 MB.\n> Esto es recomendado si estás usando fly.io con un límite de 1 GB o IBM Cloudant.\n> - 2000: Advertir si el tamaño del almacenamiento remoto supera los 2 GB.\n\nSi hemos alcanzado el límite, se nos pedirá que aumentemos el límite paso a paso.\n"},"moduleCheckRemoteSize.optionNoWarn":{def:"No, never warn please",es:"No, nunca advertir por favor"},"moduleCheckRemoteSize.option800MB":{def:"800MB (Cloudant, fly.io)",es:"800MB (Cloudant, fly.io)"},"moduleCheckRemoteSize.option2GB":{def:"2GB (Standard)",es:"2GB (Estándar)"},"moduleCheckRemoteSize.optionAskMeLater":{def:"Ask me later",es:"Pregúntame más tarde"},"moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded":{def:"Remote storage size exceeded the limit",es:"El tamaño del almacenamiento remoto superó el límite"},"moduleCheckRemoteSize.msgDatabaseGrowing":{def:"**Your database is getting larger!** But do not worry, we can address it now. The time before running out of space on the remote storage.\n\n| Measured size | Configured size |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> If you have been using it for many years, there may be unreferenced chunks - that is, garbage - accumulating in the database. Therefore, we recommend rebuilding everything. It will probably become much smaller.\n> \n> If the volume of your vault is simply increasing, it is better to rebuild everything after organizing the files. Self-hosted LiveSync does not delete the actual data even if you delete it to speed up the process. It is roughly [documented](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md).\n> \n> If you don't mind the increase, you can increase the notification limit by 100MB. This is the case if you are running it on your own server. However, it is better to rebuild everything from time to time.\n> \n\n> [!WARNING]\n> If you perform rebuild everything, make sure all devices are synchronised. The plug-in will merge as much as possible, though.\n",es:"**¡Tu base de datos está creciendo!** Pero no te preocupes, podemos abordarlo ahora. El tiempo antes de quedarse sin espacio en el almacenamiento remoto.\n\n| Tamaño medido | Tamaño configurado |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> Si lo has estado utilizando durante muchos años, puede haber fragmentos no referenciados - es decir, basura - acumulándose en la base de datos. Por lo tanto, recomendamos reconstruir todo. Probablemente se volverá mucho más pequeño.\n>\n> Si el volumen de tu bóveda simplemente está aumentando, es mejor reconstruir todo después de organizar los archivos. Self-hosted LiveSync no elimina los datos reales incluso si los eliminas para acelerar el proceso. Está aproximadamente [documentado](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md).\n>\n> Si no te importa el aumento, puedes aumentar el límite de notificación en 100 MB. Este es el caso si lo estás ejecutando en tu propio servidor. Sin embargo, es mejor reconstruir todo de vez en cuando.\n>\n\n> [!WARNING]\n> Si realizas la reconstrucción completa, asegúrate de que todos los dispositivos estén sincronizados. El complemento fusionará tanto como sea posible, sin embargo.\n"},"moduleCheckRemoteSize.optionIncreaseLimit":{def:"increase to ${newMax}MB",es:"aumentar a ${newMax}MB"},"moduleCheckRemoteSize.optionRebuildAll":{def:"Rebuild Everything Now",es:"Reconstruir todo ahora"},"moduleCheckRemoteSize.optionDismiss":{def:"Dismiss",es:"Descartar"},"moduleCheckRemoteSize.msgConfirmRebuild":{def:"This may take a bit of a long time. Do you really want to rebuild everything now?",es:"Esto puede llevar un poco de tiempo. ¿Realmente quieres reconstruir todo ahora?"},"moduleCheckRemoteSize.logThresholdEnlarged":{def:"Threshold has been enlarged to ${size}MB",es:"El umbral se ha ampliado a ${size}MB"},"moduleCheckRemoteSize.logExceededWarning":{def:"Remote storage size: ${measuredSize} exceeded ${notifySize}",es:"Tamaño del almacenamiento remoto: ${measuredSize} superó ${notifySize}"},"moduleCheckRemoteSize.logCurrentStorageSize":{def:"Remote storage size: ${measuredSize}",es:"Tamaño del almacenamiento remoto: ${measuredSize}"},"moduleInputUIObsidian.defaultTitleConfirmation":{def:"Confirmation",es:"Confirmación"},"moduleInputUIObsidian.optionYes":{def:"Yes",es:"Sí"},"moduleInputUIObsidian.optionNo":{def:"No",es:"No"},"moduleInputUIObsidian.defaultTitleSelect":{def:"Select",es:"Seleccionar"},"moduleLiveSyncMain.optionKeepLiveSyncDisabled":{def:"Keep LiveSync disabled",es:"Mantener LiveSync desactivado"},"moduleLiveSyncMain.optionResumeAndRestart":{def:"Resume and restart Obsidian",es:"Reanudar y reiniciar Obsidian"},"moduleLiveSyncMain.msgScramEnabled":{def:"Self-hosted LiveSync has been configured to ignore some events. Is this correct?\n\n| Type | Status | Note |\n|:---:|:---:|---|\n| Storage Events | ${fileWatchingStatus} | Every modification will be ignored |\n| Database Events | ${parseReplicationStatus} | Every synchronised change will be postponed |\n\nDo you want to resume them and restart Obsidian?\n\n> [!DETAILS]-\n> These flags are set by the plug-in while rebuilding, or fetching. If the process ends abnormally, it may be kept unintended.\n> If you are not sure, you can try to rerun these processes. Make sure to back your vault up.\n",es:"Self-hosted LiveSync se ha configurado para ignorar algunos eventos. ¿Es esto correcto?\n\n| Tipo | Estado | Nota |\n|:---:|:---:|---|\n| Eventos de almacenamiento | ${fileWatchingStatus} | Se ignorará cada modificación |\n| Eventos de base de datos | ${parseReplicationStatus} | Cada cambio sincronizado se pospondrá |\n\n¿Quieres reanudarlos y reiniciar Obsidian?\n\n> [!DETAILS]-\n> Estas banderas son establecidas por el complemento mientras se reconstruye o se obtiene. Si el proceso termina de forma anormal, puede mantenerse sin querer.\n> Si no estás seguro, puedes intentar volver a ejecutar estos procesos. Asegúrate de hacer una copia de seguridad de tu bóveda.\n"},"moduleLiveSyncMain.titleScramEnabled":{def:"Scram Enabled",es:"Scram habilitado"},"moduleLiveSyncMain.logAdditionalSafetyScan":{def:"Additional safety scan...",es:"Escanéo de seguridad adicional..."},"moduleLiveSyncMain.logSafetyScanFailed":{def:"Additional safety scan has failed on a module",es:"El escaneo de seguridad adicional ha fallado en un módulo"},"moduleLiveSyncMain.logSafetyScanCompleted":{def:"Additional safety scan completed",es:"Escanéo de seguridad adicional completado"},"moduleLiveSyncMain.logLoadingPlugin":{def:"Loading plugin...",es:"Cargando complemento..."},"moduleLiveSyncMain.logPluginInitCancelled":{def:"Plugin initialisation was cancelled by a module",es:"La inicialización del complemento fue cancelada por un módulo"},"moduleLiveSyncMain.logPluginVersion":{def:"Self-hosted LiveSync v${manifestVersion} ${packageVersion}",es:"Self-hosted LiveSync v${manifestVersion} ${packageVersion}"},"moduleLiveSyncMain.logReadChangelog":{def:"LiveSync has updated, please read the changelog!",es:"LiveSync se ha actualizado, ¡por favor lee el registro de cambios!"},"moduleLiveSyncMain.logVersionUpdate":{def:"LiveSync has been updated, In case of breaking updates, all automatic synchronization has been temporarily disabled. Ensure that all devices are up to date before enabling.",es:"LiveSync se ha actualizado, en caso de actualizaciones que rompan, toda la sincronización automática se ha desactivado temporalmente. Asegúrate de que todos los dispositivos estén actualizados antes de habilitar."},"moduleLiveSyncMain.logUnloadingPlugin":{def:"Unloading plugin...",es:"Descargando complemento..."},"obsidianLiveSyncSettingTab.levelPowerUser":{def:" (Power User)",es:" (experto)"},"obsidianLiveSyncSettingTab.levelAdvanced":{def:" (Advanced)",es:" (avanzado)"},"obsidianLiveSyncSettingTab.levelEdgeCase":{def:" (Edge Case)",es:" (excepción)"},"obsidianLiveSyncSettingTab.logEstimatedSize":{def:"Estimated size: ${size}",es:"Tamaño estimado: ${size}"},"obsidianLiveSyncSettingTab.msgSettingModified":{def:'The setting "${setting}" was modified from another device. Click {HERE} to reload settings. Click elsewhere to ignore changes.',es:'La configuración "${setting}" fue modificada desde otro dispositivo. Haz clic {HERE} para recargar la configuración. Haz clic en otro lugar para ignorar los cambios.'},"obsidianLiveSyncSettingTab.optionHere":{def:"HERE",es:"AQUÍ"},"obsidianLiveSyncSettingTab.logPassphraseInvalid":{def:"Passphrase is not valid, please fix it.",es:"La frase de contraseña no es válida, por favor corrígela."},"obsidianLiveSyncSettingTab.optionFetchFromRemote":{def:"Fetch from Remote",es:"Obtener del remoto"},"obsidianLiveSyncSettingTab.optionRebuildBoth":{def:"Rebuild Both from This Device",es:"Reconstructuir ambos desde este dispositivo"},"obsidianLiveSyncSettingTab.optionSaveOnlySettings":{def:"(Danger) Save Only Settings",es:"(Peligro) Guardar solo configuración"},"obsidianLiveSyncSettingTab.optionCancel":{def:"Cancel",es:"Cancelar"},"obsidianLiveSyncSettingTab.titleRebuildRequired":{def:"Rebuild Required",es:"Reconstrucción necesaria"},"obsidianLiveSyncSettingTab.msgRebuildRequired":{def:"Rebuilding Databases are required to apply the changes.. Please select the method to apply the changes.\n\n<details>\n<summary>Legends</summary>\n\n| Symbol | Meaning |\n|: ------ :| ------- |\n| ⇔ | Up to Date |\n| ⇄ | Synchronise to balance |\n| ⇐,⇒ | Transfer to overwrite |\n| ⇠,⇢ | Transfer to overwrite from other side |\n\n</details>\n\n## ${OPTION_REBUILD_BOTH}\nAt a glance: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nReconstruct both the local and remote databases using existing files from this device.\nThis causes a lockout other devices, and they need to perform fetching.\n## ${OPTION_FETCH}\nAt a glance: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nInitialise the local database and reconstruct it using data fetched from the remote database.\nThis case includes the case which you have rebuilt the remote database.\n## ${OPTION_ONLY_SETTING}\nStore only the settings. **Caution: This may lead to data corruption**; database reconstruction is generally necessary.",es:"Es necesario reconstruir las bases de datos para aplicar los cambios. Por favor selecciona el método para aplicar los cambios.\n\n<details>\n<summary>Legendas</summary>\n\n| Símbolo | Significado |\n|: ------ :| ------- |\n| ⇔ | Actualizado |\n| ⇄ | Sincronizar para equilibrar |\n| ⇐,⇒ | Transferir para sobrescribir |\n| ⇠,⇢ | Transferir para sobrescribir desde otro lado |\n\n</details>\n\n## ${OPTION_REBUILD_BOTH}\nA simple vista: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nReconstruir tanto la base de datos local como la remota utilizando los archivos existentes de este dispositivo.\nEsto bloquea a otros dispositivos, y necesitan realizar la obtención.\n## ${OPTION_FETCH}\nA simple vista: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nInicializa la base de datos local y la reconstruye utilizando los datos obtenidos de la base de datos remota.\nEste caso incluye el caso en el que has reconstruido la base de datos remota.\n## ${OPTION_ONLY_SETTING}\nAlmacena solo la configuración. **Precaución: esto puede provocar corrupción de datos**; generalmente es necesario reconstruir la base de datos."},"obsidianLiveSyncSettingTab.msgAreYouSureProceed":{def:"Are you sure to proceed?",es:"¿Estás seguro de proceder?"},"obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied":{def:"Changes need to be applied!",es:"¡Los cambios deben aplicarse!"},"obsidianLiveSyncSettingTab.optionApply":{def:"Apply",es:"Aplicar"},"obsidianLiveSyncSettingTab.logCheckPassphraseFailed":{def:"ERROR: Failed to check passphrase with the remote server: \n${db}.",es:"ERROR: Error al comprobar la frase de contraseña con el servidor remoto: \n${db}."},"obsidianLiveSyncSettingTab.logDatabaseConnected":{def:"Database connected",es:"Base de datos conectada"},"obsidianLiveSyncSettingTab.logPassphraseNotCompatible":{def:"ERROR: Passphrase is not compatible with the remote server! Please check it again!",es:"ERROR: ¡La frase de contraseña no es compatible con el servidor remoto! ¡Por favor, revísala de nuevo!"},"obsidianLiveSyncSettingTab.logEncryptionNoPassphrase":{def:"You cannot enable encryption without a passphrase",es:"No puedes habilitar el cifrado sin una frase de contraseña"},"obsidianLiveSyncSettingTab.logEncryptionNoSupport":{def:"Your device does not support encryption.",es:"Tu dispositivo no admite el cifrado."},"obsidianLiveSyncSettingTab.logRebuildNote":{def:"Syncing has been disabled, fetch and re-enabled if desired.",es:"La sincronización ha sido desactivada, obtén y vuelve a activar si lo deseas."},"obsidianLiveSyncSettingTab.panelChangeLog":{def:"Change Log",es:"Registro de cambios"},"obsidianLiveSyncSettingTab.msgNewVersionNote":{def:"Here due to an upgrade notification? Please review the version history. If you're satisfied, click the button. A new update will prompt this again.",es:"¿Aquí debido a una notificación de actualización? Por favor, revise el historial de versiones. Si está satisfecho, haga clic en el botón. Una nueva actualización volverá a mostrar esto."},"obsidianLiveSyncSettingTab.optionOkReadEverything":{def:"OK, I have read everything.",es:"OK, he leído todo."},"obsidianLiveSyncSettingTab.panelSetup":{def:"Setup",es:"Configuración"},"obsidianLiveSyncSettingTab.titleQuickSetup":{def:"Quick Setup",es:"Configuración rápida"},"obsidianLiveSyncSettingTab.nameConnectSetupURI":{def:"Connect with Setup URI",es:"Conectar con URI de configuración"},"obsidianLiveSyncSettingTab.descConnectSetupURI":{def:"This is the recommended method to set up Self-hosted LiveSync with a Setup URI.",es:"Este es el método recomendado para configurar Self-hosted LiveSync con una URI de configuración."},"obsidianLiveSyncSettingTab.btnUse":{def:"Use",es:"Usar"},"obsidianLiveSyncSettingTab.nameManualSetup":{def:"Manual Setup",es:"Configuración manual"},"obsidianLiveSyncSettingTab.descManualSetup":{def:"Not recommended, but useful if you don't have a Setup URI",es:"No recomendado, pero útil si no tienes una URI de configuración"},"obsidianLiveSyncSettingTab.btnStart":{def:"Start",es:"Iniciar"},"obsidianLiveSyncSettingTab.nameEnableLiveSync":{def:"Enable LiveSync",es:"Activar LiveSync"},"obsidianLiveSyncSettingTab.descEnableLiveSync":{def:"Only enable this after configuring either of the above two options or completing all configuration manually.",es:"Solo habilita esto después de configurar cualquiera de las dos opciones anteriores o completar toda la configuración manualmente."},"obsidianLiveSyncSettingTab.btnEnable":{def:"Enable",es:"Activar"},"obsidianLiveSyncSettingTab.titleSetupOtherDevices":{def:"To setup other devices",es:"Para configurar otros dispositivos"},"obsidianLiveSyncSettingTab.nameCopySetupURI":{def:"Copy the current settings to a Setup URI",es:"Copiar la configuración actual a una URI de configuración"},"obsidianLiveSyncSettingTab.descCopySetupURI":{def:"Perfect for setting up a new device!",es:"¡Perfecto para configurar un nuevo dispositivo!"},"obsidianLiveSyncSettingTab.btnCopy":{def:"Copy",es:"Copiar"},"obsidianLiveSyncSettingTab.titleReset":{def:"Reset",es:"Reiniciar"},"obsidianLiveSyncSettingTab.nameDiscardSettings":{def:"Discard existing settings and databases",es:"Descartar configuraciones y bases de datos existentes"},"obsidianLiveSyncSettingTab.btnDiscard":{def:"Discard",es:"Descartar"},"obsidianLiveSyncSettingTab.msgDiscardConfirmation":{def:"Do you really want to discard existing settings and databases?",es:"¿Realmente deseas descartar las configuraciones y bases de datos existentes?"},"obsidianLiveSyncSettingTab.titleExtraFeatures":{def:"Enable extra and advanced features",es:"Habilitar funciones extras y avanzadas"},"obsidianLiveSyncSettingTab.titleOnlineTips":{def:"Online Tips",es:"Consejos en línea"},"obsidianLiveSyncSettingTab.linkTroubleshooting":{def:"/docs/troubleshooting.md",es:"/docs/es/troubleshooting.md"},"obsidianLiveSyncSettingTab.linkOpenInBrowser":{def:"Open in browser",es:"Abrir en el navegador"},"obsidianLiveSyncSettingTab.logErrorOccurred":{def:"An error occurred!!",es:"¡Ocurrió un error!"},"obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting":{def:"Tips and Troubleshooting",es:"Consejos y solución de problemas"},"obsidianLiveSyncSettingTab.linkPageTop":{def:"Page Top",es:"Ir arriba"},"obsidianLiveSyncSettingTab.panelGeneralSettings":{def:"General Settings",es:"Configuraciones Generales"},"obsidianLiveSyncSettingTab.titleAppearance":{def:"Appearance",es:"Apariencia"},"obsidianLiveSyncSettingTab.defaultLanguage":{def:"Default",es:"Predeterminado"},"obsidianLiveSyncSettingTab.titleLogging":{def:"Logging",es:"Registro"},"obsidianLiveSyncSettingTab.btnNext":{def:"Next",es:"Siguiente"},"obsidianLiveSyncSettingTab.logCheckingDbConfig":{def:"Checking database configuration",es:"Verificando la configuración de la base de datos"},"obsidianLiveSyncSettingTab.logCannotUseCloudant":{def:"This feature cannot be used with IBM Cloudant.",es:"Esta función no se puede utilizar con IBM Cloudant."},"obsidianLiveSyncSettingTab.btnFix":{def:"Fix",es:"Corregir"},"obsidianLiveSyncSettingTab.logCouchDbConfigSet":{def:"CouchDB Configuration: ${title} -> Set ${key} to ${value}",es:"Configuración de CouchDB: ${title} -> Establecer ${key} en ${value}"},"obsidianLiveSyncSettingTab.logCouchDbConfigUpdated":{def:"CouchDB Configuration: ${title} successfully updated",es:"Configuración de CouchDB: ${title} actualizado correctamente"},"obsidianLiveSyncSettingTab.logCouchDbConfigFail":{def:"CouchDB Configuration: ${title} failed",es:"Configuración de CouchDB: ${title} falló"},"obsidianLiveSyncSettingTab.msgNotice":{def:"---Notice---",es:"---Aviso---"},"obsidianLiveSyncSettingTab.msgIfConfigNotPersistent":{def:"If the server configuration is not persistent (e.g., running on docker), the values here may change. Once you are able to connect, please update the settings in the server's local.ini.",es:"Si la configuración del servidor no es persistente (por ejemplo, ejecutándose en docker), los valores aquí pueden cambiar. Una vez que puedas conectarte, por favor actualiza las configuraciones en el local.ini del servidor."},"obsidianLiveSyncSettingTab.msgConfigCheck":{def:"--Config check--",es:"--Verificación de configuración--"},"obsidianLiveSyncSettingTab.warnNoAdmin":{def:"⚠ You do not have administrator privileges.",es:"⚠ No tienes privilegios de administrador."},"obsidianLiveSyncSettingTab.okAdminPrivileges":{def:"✔ You have administrator privileges.",es:"✔ Tienes privilegios de administrador."},"obsidianLiveSyncSettingTab.errRequireValidUser":{def:"❗ chttpd.require_valid_user is wrong.",es:"❗ chttpd.require_valid_user es incorrecto."},"obsidianLiveSyncSettingTab.msgSetRequireValidUser":{def:"Set chttpd.require_valid_user = true",es:"Configurar chttpd.require_valid_user = true"},"obsidianLiveSyncSettingTab.okRequireValidUser":{def:"✔ chttpd.require_valid_user is ok.",es:"✔ chttpd.require_valid_user está correcto."},"obsidianLiveSyncSettingTab.errRequireValidUserAuth":{def:"❗ chttpd_auth.require_valid_user is wrong.",es:"❗ chttpd_auth.require_valid_user es incorrecto."},"obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth":{def:"Set chttpd_auth.require_valid_user = true",es:"Configurar chttpd_auth.require_valid_user = true"},"obsidianLiveSyncSettingTab.okRequireValidUserAuth":{def:"✔ chttpd_auth.require_valid_user is ok.",es:"✔ chttpd_auth.require_valid_user está correcto."},"obsidianLiveSyncSettingTab.errMissingWwwAuth":{def:"❗ httpd.WWW-Authenticate is missing",es:"❗ httpd.WWW-Authenticate falta"},"obsidianLiveSyncSettingTab.msgSetWwwAuth":{def:"Set httpd.WWW-Authenticate",es:"Configurar httpd.WWW-Authenticate"},"obsidianLiveSyncSettingTab.okWwwAuth":{def:"✔ httpd.WWW-Authenticate is ok.",es:"✔ httpd.WWW-Authenticate está correcto."},"obsidianLiveSyncSettingTab.errEnableCors":{def:"❗ httpd.enable_cors is wrong",es:"❗ httpd.enable_cors es incorrecto"},"obsidianLiveSyncSettingTab.msgEnableCors":{def:"Set httpd.enable_cors",es:"Configurar httpd.enable_cors"},"obsidianLiveSyncSettingTab.okEnableCors":{def:"✔ httpd.enable_cors is ok.",es:"✔ httpd.enable_cors está correcto."},"obsidianLiveSyncSettingTab.errMaxRequestSize":{def:"❗ chttpd.max_http_request_size is low)",es:"❗ chttpd.max_http_request_size es bajo)"},"obsidianLiveSyncSettingTab.msgSetMaxRequestSize":{def:"Set chttpd.max_http_request_size",es:"Configurar chttpd.max_http_request_size"},"obsidianLiveSyncSettingTab.okMaxRequestSize":{def:"✔ chttpd.max_http_request_size is ok.",es:"✔ chttpd.max_http_request_size está correcto."},"obsidianLiveSyncSettingTab.errMaxDocumentSize":{def:"❗ couchdb.max_document_size is low)",es:"❗ couchdb.max_document_size es bajo)"},"obsidianLiveSyncSettingTab.msgSetMaxDocSize":{def:"Set couchdb.max_document_size",es:"Configurar couchdb.max_document_size"},"obsidianLiveSyncSettingTab.okMaxDocumentSize":{def:"✔ couchdb.max_document_size is ok.",es:"✔ couchdb.max_document_size está correcto."},"obsidianLiveSyncSettingTab.errCorsCredentials":{def:"❗ cors.credentials is wrong",es:"❗ cors.credentials es incorrecto"},"obsidianLiveSyncSettingTab.msgSetCorsCredentials":{def:"Set cors.credentials",es:"Configurar cors.credentials"},"obsidianLiveSyncSettingTab.okCorsCredentials":{def:"✔ cors.credentials is ok.",es:"✔ cors.credentials está correcto."},"obsidianLiveSyncSettingTab.okCorsOrigins":{def:"✔ cors.origins is ok.",es:"✔ cors.origins está correcto."},"obsidianLiveSyncSettingTab.errCorsOrigins":{def:"❗ cors.origins is wrong",es:"❗ cors.origins es incorrecto"},"obsidianLiveSyncSettingTab.msgSetCorsOrigins":{def:"Set cors.origins",es:"Configurar cors.origins"},"obsidianLiveSyncSettingTab.msgConnectionCheck":{def:"--Connection check--",es:"--Verificación de conexión--"},"obsidianLiveSyncSettingTab.msgCurrentOrigin":{def:"Current origin: {origin}",es:"Origen actual: {origin}"},"obsidianLiveSyncSettingTab.msgOriginCheck":{def:"Origin check: {org}",es:"Verificación de origen: {org}"},"obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials":{def:"❗ CORS is not allowing credentials",es:"CORS no permite credenciales"},"obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin":{def:"CORS credentials OK",es:"CORS credenciales OK"},"obsidianLiveSyncSettingTab.warnCorsOriginUnmatched":{def:"⚠ CORS Origin is unmatched {from}->{to}",es:"⚠ El origen de CORS no coincide: {from}->{to}"},"obsidianLiveSyncSettingTab.okCorsOriginMatched":{def:"✔ CORS origin OK",es:"✔ Origen de CORS correcto"},"obsidianLiveSyncSettingTab.msgDone":{def:"--Done--",es:"--Hecho--"},"obsidianLiveSyncSettingTab.msgConnectionProxyNote":{def:"If you're having trouble with the Connection-check (even after checking config), please check your reverse proxy configuration.",es:"Si tienes problemas con la verificación de conexión (incluso después de verificar la configuración), por favor verifica la configuración de tu proxy reverso."},"obsidianLiveSyncSettingTab.logCheckingConfigDone":{def:"Checking configuration done",es:"Verificación de configuración completada"},"obsidianLiveSyncSettingTab.errAccessForbidden":{def:"❗ Access forbidden.",es:"Acceso prohibido."},"obsidianLiveSyncSettingTab.errCannotContinueTest":{def:"We could not continue the test.",es:"No se pudo continuar con la prueba."},"obsidianLiveSyncSettingTab.logCheckingConfigFailed":{def:"Checking configuration failed",es:"La verificación de configuración falló"},"obsidianLiveSyncSettingTab.panelRemoteConfiguration":{def:"Remote Configuration",es:"Configuración remota"},"obsidianLiveSyncSettingTab.titleRemoteServer":{def:"Remote Server",es:"Servidor remoto"},"obsidianLiveSyncSettingTab.optionCouchDB":{def:"CouchDB",es:"CouchDB"},"obsidianLiveSyncSettingTab.optionMinioS3R2":{def:"Minio,S3,R2",es:"Minio,S3,R2"},"obsidianLiveSyncSettingTab.titleMinioS3R2":{def:"Minio,S3,R2",es:"Minio,S3,R2"},"obsidianLiveSyncSettingTab.msgObjectStorageWarning":{def:"WARNING: This feature is a Work In Progress, so please keep in mind the following:\n- Append only architecture. A rebuild is required to shrink the storage.\n- A bit fragile.\n- When first syncing, all history will be transferred from the remote. Be mindful of data caps and slow speeds.\n- Only differences are synced live.\n\nIf you run into any issues, or have ideas about this feature, please create a issue on GitHub.\nI appreciate you for your great dedication.",es:"ADVERTENCIA: Esta característica está en desarrollo, así que por favor ten en cuenta lo siguiente:\n- Arquitectura de solo anexado. Se requiere una reconstrucción para reducir el almacenamiento.\n- Un poco frágil.\n- Al sincronizar por primera vez, todo el historial será transferido desde el remoto. Ten en cuenta los límites de datos y las velocidades lentas.\n- Solo las diferencias se sincronizan en vivo.\n\nSi encuentras algún problema o tienes ideas sobre esta característica, por favor crea un issue en GitHub.\nAprecio mucho tu gran dedicación."},"obsidianLiveSyncSettingTab.nameTestConnection":{def:"Test Connection",es:"Probar conexión"},"obsidianLiveSyncSettingTab.btnTest":{def:"Test",es:"Probar"},"obsidianLiveSyncSettingTab.nameApplySettings":{def:"Apply Settings",es:"Aplicar configuraciones"},"obsidianLiveSyncSettingTab.titleCouchDB":{def:"CouchDB",es:"CouchDB"},"obsidianLiveSyncSettingTab.msgNonHTTPSWarning":{def:"Cannot connect to non-HTTPS URI. Please update your config and try again.",es:"No se puede conectar a URI que no sean HTTPS. Por favor, actualiza tu configuración y vuelve a intentarlo."},"obsidianLiveSyncSettingTab.msgNonHTTPSInfo":{def:"Configured as non-HTTPS URI. Be warned that this may not work on mobile devices.",es:"Configurado como URI que no es HTTPS. Ten en cuenta que esto puede no funcionar en dispositivos móviles."},"obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync":{def:'These settings are unable to be changed during synchronization. Please disable all syncing in the "Sync Settings" to unlock.',es:'Estas configuraciones no se pueden cambiar durante la sincronización. Por favor, deshabilita toda la sincronización en las "Configuraciones de Sincronización" para desbloquear.'},"obsidianLiveSyncSettingTab.nameTestDatabaseConnection":{def:"Test Database Connection",es:"Probar Conexión de Base de Datos"},"obsidianLiveSyncSettingTab.descTestDatabaseConnection":{def:"Open database connection. If the remote database is not found and you have permission to create a database, the database will be created.",es:"Abrir conexión a la base de datos. Si no se encuentra la base de datos remota y tienes permiso para crear una base de datos, se creará la base de datos."},"obsidianLiveSyncSettingTab.nameValidateDatabaseConfig":{def:"Validate Database Configuration",es:"Validar Configuración de la Base de Datos"},"obsidianLiveSyncSettingTab.descValidateDatabaseConfig":{def:"Checks and fixes any potential issues with the database config.",es:"Verifica y soluciona cualquier problema potencial con la configuración de la base de datos."},"obsidianLiveSyncSettingTab.btnCheck":{def:"Check",es:"Verificar"},"obsidianLiveSyncSettingTab.titleNotification":{def:"Notification",es:"Notificación"},"obsidianLiveSyncSettingTab.panelPrivacyEncryption":{def:"Privacy & Encryption",es:"Privacidad y Cifrado"},"obsidianLiveSyncSettingTab.titleFetchSettings":{def:"Fetch Settings",es:"Obtener configuraciones"},"obsidianLiveSyncSettingTab.titleFetchConfigFromRemote":{def:"Fetch config from remote server",es:"Obtener configuración del servidor remoto"},"obsidianLiveSyncSettingTab.descFetchConfigFromRemote":{def:"Fetch necessary settings from already configured remote server.",es:"Obtener las configuraciones necesarias del servidor remoto ya configurado."},"obsidianLiveSyncSettingTab.buttonFetch":{def:"Fetch",es:"Obtener"},"obsidianLiveSyncSettingTab.buttonNext":{def:"Next",es:"Siguiente"},"obsidianLiveSyncSettingTab.msgConfigCheckFailed":{def:"The configuration check has failed. Do you want to continue anyway?",es:"La verificación de configuración ha fallado. ¿Quieres continuar de todos modos?"},"obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed":{def:"Remote Configuration Check Failed",es:"La verificación de configuración remota falló"},"obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation":{def:"We recommend enabling End-To-End Encryption, and Path Obfuscation. Are you sure you want to continue without encryption?",es:"Recomendamos habilitar el cifrado de extremo a extremo y la obfuscación de ruta. ¿Estás seguro de querer continuar sin cifrado?"},"obsidianLiveSyncSettingTab.titleEncryptionNotEnabled":{def:"Encryption is not enabled",es:"El cifrado no está habilitado"},"obsidianLiveSyncSettingTab.msgInvalidPassphrase":{def:"Your encryption passphrase might be invalid. Are you sure you want to continue?",es:"Tu frase de contraseña de cifrado podría ser inválida. ¿Estás seguro de querer continuar?"},"obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid":{def:"Encryption Passphrase Invalid",es:"La frase de contraseña de cifrado es inválida"},"obsidianLiveSyncSettingTab.msgFetchConfigFromRemote":{def:"Do you want to fetch the config from the remote server?",es:"¿Quieres obtener la configuración del servidor remoto?"},"obsidianLiveSyncSettingTab.titleFetchConfig":{def:"Fetch Config",es:"Obtener configuración"},"obsidianLiveSyncSettingTab.titleSyncSettings":{def:"Sync Settings",es:"Configuraciones de Sincronización"},"obsidianLiveSyncSettingTab.btnGotItAndUpdated":{def:"I got it and updated.",es:"Lo entendí y actualicé."},"obsidianLiveSyncSettingTab.msgSelectAndApplyPreset":{def:"Please select and apply any preset item to complete the wizard.",es:"Por favor, selecciona y aplica cualquier elemento preestablecido para completar el asistente."},"obsidianLiveSyncSettingTab.titleSynchronizationPreset":{def:"Synchronization Preset",es:"Preestablecimiento de sincronización"},"obsidianLiveSyncSettingTab.optionLiveSync":{def:"LiveSync",es:"LiveSync"},"obsidianLiveSyncSettingTab.optionPeriodicWithBatch":{def:"Periodic w/ batch",es:"Periódico con lote"},"obsidianLiveSyncSettingTab.optionDisableAllAutomatic":{def:"Disable all automatic",es:"Desactivar lo automático"},"obsidianLiveSyncSettingTab.btnApply":{def:"Apply",es:"Aplicar"},"obsidianLiveSyncSettingTab.logSelectAnyPreset":{def:"Select any preset.",es:"Selecciona cualquier preestablecido."},"obsidianLiveSyncSettingTab.logConfiguredLiveSync":{def:"Configured synchronization mode: LiveSync",es:"Modo de sincronización configurado: Sincronización en Vivo"},"obsidianLiveSyncSettingTab.logConfiguredPeriodic":{def:"Configured synchronization mode: Periodic",es:"Modo de sincronización configurado: Periódico"},"obsidianLiveSyncSettingTab.logConfiguredDisabled":{def:"Configured synchronization mode: DISABLED",es:"Modo de sincronización configurado: DESACTIVADO"},"obsidianLiveSyncSettingTab.msgGenerateSetupURI":{def:"All done! Do you want to generate a setup URI to set up other devices?",es:"¡Todo listo! ¿Quieres generar un URI de configuración para configurar otros dispositivos?"},"obsidianLiveSyncSettingTab.titleCongratulations":{def:"Congratulations!",es:"¡Felicidades!"},"obsidianLiveSyncSettingTab.titleSynchronizationMethod":{def:"Synchronization Method",es:"Método de sincronización"},"obsidianLiveSyncSettingTab.optionOnEvents":{def:"On events",es:"En eventos"},"obsidianLiveSyncSettingTab.optionPeriodicAndEvents":{def:"Periodic and on events",es:"Periódico y en eventos"},"obsidianLiveSyncSettingTab.titleUpdateThinning":{def:"Update Thinning",es:"Actualización de adelgazamiento"},"obsidianLiveSyncSettingTab.titleDeletionPropagation":{def:"Deletion Propagation",es:"Propagación de eliminación"},"obsidianLiveSyncSettingTab.titleConflictResolution":{def:"Conflict resolution",es:"Resolución de conflictos"},"obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown":{def:"Sync Settings via Markdown",es:"Configuración de sincronización a través de Markdown"},"obsidianLiveSyncSettingTab.titleHiddenFiles":{def:"Hidden Files",es:"Archivos ocultos"},"obsidianLiveSyncSettingTab.labelEnabled":{def:"🔁 : Enabled",es:"🔁 : Activado"},"obsidianLiveSyncSettingTab.labelDisabled":{def:"⏹️ : Disabled",es:"⏹️ : Desactivado"},"obsidianLiveSyncSettingTab.nameHiddenFileSynchronization":{def:"Hidden file synchronization",es:"Sincronización de archivos ocultos"},"obsidianLiveSyncSettingTab.nameDisableHiddenFileSync":{def:"Disable Hidden files sync",es:"Desactivar sincronización de archivos ocultos"},"obsidianLiveSyncSettingTab.btnDisable":{def:"Disable",es:"Desactivar"},"obsidianLiveSyncSettingTab.nameEnableHiddenFileSync":{def:"Enable Hidden files sync",es:"Activar sincronización de archivos ocultos"},"Enable advanced features":{def:"Enable advanced features",es:"Habilitar características avanzadas"},"Enable poweruser features":{def:"Enable poweruser features",es:"Habilitar funciones para usuarios avanzados"},"Enable edge case treatment features":{def:"Enable edge case treatment features",es:"Habilitar manejo de casos límite"},"lang-de":{def:"Deutsche",es:"Alemán"},"lang-es":{def:"Español",es:"Español"},"lang-ja":{def:"日本語",es:"Japonés"},"lang-ru":{def:"Русский",es:"Ruso"},"lang-zh":{def:"简体中文",es:"Chino simplificado"},"lang-zh-tw":{def:"繁體中文",es:"Chino tradicional"},"Display Language":{def:"Display Language",es:"Idioma de visualización",ja:"インターフェースの表示言語",zh:"显示语言"},'Not all messages have been translated. And, please revert to "Default" when reporting errors.':{def:'Not all messages have been translated. And, please revert to "Default" when reporting errors.',es:'No todos los mensajes están traducidos. Por favor, vuelva a "Predeterminado" al reportar errores.',ja:'すべてのメッセージが翻訳されているわけではありません。また、Issue報告の際にはいったん"Default"に戻してください',zh:'并非所有消息都已翻译。请在报告错误时恢复为"Default"'},"Show status inside the editor":{def:"Show status inside the editor",es:"Mostrar estado dentro del editor",ja:"ステータスをエディタ内に表示",zh:"在编辑器内显示状态"},"Requires restart of Obsidian.":{def:"Requires restart of Obsidian.",es:"Requiere reiniciar Obsidian"},"Show status as icons only":{def:"Show status as icons only",es:"Mostrar estado solo con íconos",ja:"ステータス表示をアイコンのみにする",zh:"仅以图标显示状态"},"Show status on the status bar":{def:"Show status on the status bar",es:"Mostrar estado en la barra de estado",ja:"ステータスバーに、ステータスを表示",zh:"在状态栏上显示状态"},"Show only notifications":{def:"Show only notifications",es:"Mostrar solo notificaciones",ja:"通知のみ表示",zh:"仅显示通知"},"Disables logging, only shows notifications. Please disable if you report an issue.":{def:"Disables logging, only shows notifications. Please disable if you report an issue.",es:"Desactiva registros, solo muestra notificaciones. Desactívelo si reporta un problema."},"Verbose Log":{def:"Verbose Log",es:"Registro detallado",ja:"エラー以外のログ項目",zh:"详细日志"},"Show verbose log. Please enable if you report an issue.":{def:"Show verbose log. Please enable if you report an issue.",es:"Mostrar registro detallado. Actívelo si reporta un problema.",ja:"エラー以外の詳細ログ項目も表示する。問題が発生した場合は有効にしてください。"},"Remote Type":{def:"Remote Type",es:"Tipo de remoto",ja:"同期方式",zh:"远程类型"},"Remote server type":{def:"Remote server type",es:"Tipo de servidor remoto",ja:"リモートの種別",zh:"远程服务器类型"},"Notify when the estimated remote storage size exceeds on start up":{def:"Notify when the estimated remote storage size exceeds on start up",es:"Notificar cuando el tamaño estimado del almacenamiento remoto exceda al iniciar"},"MB (0 to disable).":{def:"MB (0 to disable).",es:"MB (0 para desactivar)"},"End-to-End Encryption":{def:"End-to-End Encryption",es:"Cifrado de extremo a extremo",ja:"E2E暗号化",zh:"端到端加密"},"Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.":{def:"Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.",es:"Cifrar contenido en la base de datos remota. Se recomienda habilitar si usa la sincronización del plugin.",ja:"リモートデータベースの暗号化(オンにすることをお勧めします)",zh:"加密远程数据库中的内容。如果您使用插件的同步功能,则建议启用此功能。"},Passphrase:{def:"Passphrase",es:"Frase de contraseña",ja:"パスフレーズ",zh:"口令"},"Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.":{def:"Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.",es:"Frase de cifrado. Si la cambia, sobrescriba la base del servidor con los nuevos archivos cifrados."},"Path Obfuscation":{def:"Path Obfuscation",es:"Ofuscación de rutas",ja:"パスの難読化",zh:"路径混淆"},"Use dynamic iteration count":{def:"Use dynamic iteration count",es:"Usar conteo de iteraciones dinámico",ja:"動的な繰り返し回数",zh:"使用动态迭代次数"},Presets:{def:"Presets",es:"Preconfiguraciones",ja:"プリセット",zh:"预设"},"Apply preset configuration":{def:"Apply preset configuration",es:"Aplicar configuración predefinida",ja:"初期設定値に戻す",zh:"应用预设配置"},"Sync Mode":{def:"Sync Mode",es:"Modo de sincronización",ja:"同期モード",zh:"同步模式"},"Periodic Sync interval":{def:"Periodic Sync interval",es:"Intervalo de sincronización periódica",ja:"定時同期の感覚",zh:"定期同步间隔"},"Interval (sec)":{def:"Interval (sec)",es:"Intervalo (segundos)",ja:"秒",zh:"间隔(秒)"},"Sync on Save":{def:"Sync on Save",es:"Sincronizar al guardar",ja:"保存時に同期",zh:"保存时同步"},"Starts synchronisation when a file is saved.":{def:"Starts synchronisation when a file is saved.",es:"Inicia sincronización al guardar un archivo"},"Sync on Editor Save":{def:"Sync on Editor Save",es:"Sincronizar al guardar en editor",ja:"エディタでの保存時に、同期されます",zh:"编辑器保存时同步"},"When you save a file in the editor, start a sync automatically":{def:"When you save a file in the editor, start a sync automatically",es:"Iniciar sincronización automática al guardar en editor",ja:"エディタでファイルを保存すると、自動的に同期を開始します"},"Sync on File Open":{def:"Sync on File Open",es:"Sincronizar al abrir archivo",ja:"ファイルを開いた時に同期",zh:"打开文件时同步"},"Forces the file to be synced when opened.":{def:"Forces the file to be synced when opened.",es:"Forzar sincronización al abrir archivo"},"Sync on Startup":{def:"Sync on Startup",es:"Sincronizar al iniciar",ja:"起動時同期",zh:"启动时同步"},"Automatically Sync all files when opening Obsidian.":{def:"Automatically Sync all files when opening Obsidian.",es:"Sincronizar automáticamente todos los archivos al abrir Obsidian"},"Sync after merging file":{def:"Sync after merging file",es:"Sincronizar tras fusionar archivo",ja:"ファイルがマージ(統合)された時に同期",zh:"合并文件后同步"},"Sync automatically after merging files":{def:"Sync automatically after merging files",es:"Sincronizar automáticamente tras fusionar archivos"},"Batch database update":{def:"Batch database update",es:"Actualización por lotes de BD",ja:"データベースのバッチ更新",zh:"批量数据库更新"},"Reducing the frequency with which on-disk changes are reflected into the DB":{def:"Reducing the frequency with which on-disk changes are reflected into the DB",es:"Reducir frecuencia de actualizaciones de disco a BD",zh:"降低将磁盘上的更改反映到数据库中的频率"},"Minimum delay for batch database updating":{def:"Minimum delay for batch database updating",es:"Retraso mínimo para actualización por lotes",zh:"批量数据库更新的最小延迟"},"Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.":{def:"Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.",es:"Segundos. Guardado en BD local se retrasará hasta este valor tras dejar de escribir/guardar",zh:"秒。在停止输入或保存后,保存到本地数据库将延迟此值。"},"Maximum delay for batch database updating":{def:"Maximum delay for batch database updating",es:"Retraso máximo para actualización por lotes",zh:"批量数据库更新的最大延迟"},"Saving will be performed forcefully after this number of seconds.":{def:"Saving will be performed forcefully after this number of seconds.",es:"Guardado forzado tras esta cantidad de segundos",zh:"在此秒数后将强制执行保存。"},"Use the trash bin":{def:"Use the trash bin",es:"Usar papelera",ja:"ゴミ箱を使用",zh:"使用回收站"},"Move remotely deleted files to the trash, instead of deleting.":{def:"Move remotely deleted files to the trash, instead of deleting.",es:"Mover archivos borrados remotos a papelera en lugar de eliminarlos"},"Keep empty folder":{def:"Keep empty folder",es:"Mantener carpetas vacías",ja:"空フォルダの維持",zh:"保留空文件夹"},"Should we keep folders that don't have any files inside?":{def:"Should we keep folders that don't have any files inside?",es:"¿Mantener carpetas vacías?"},"(BETA) Always overwrite with a newer file":{def:"(BETA) Always overwrite with a newer file",es:"(BETA) Sobrescribir siempre con archivo más nuevo",ja:"(ベータ機能) 常に新しいファイルで上書きする",zh:"始终使用更新的文件覆盖(测试版)"},"Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.":{def:"Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.",es:"Solo pruebas - Resolver conflictos sincronizando copias nuevas (puede sobrescribir modificaciones)"},"Delay conflict resolution of inactive files":{def:"Delay conflict resolution of inactive files",es:"Retrasar resolución de conflictos en archivos inactivos",ja:"無効なファイルは、競合解決を先送りする",zh:"推迟解决不活动文件"},"Should we only check for conflicts when a file is opened?":{def:"Should we only check for conflicts when a file is opened?",es:"¿Solo comprobar conflictos al abrir archivo?"},"Delay merge conflict prompt for inactive files.":{def:"Delay merge conflict prompt for inactive files.",es:"Retrasar aviso de fusión para archivos inactivos",ja:"手動で無効なファイルの競合を解決する",zh:"推迟手动解决不活动文件"},"Should we prompt you about conflicting files when a file is opened?":{def:"Should we prompt you about conflicting files when a file is opened?",es:"¿Notificar sobre conflictos al abrir archivo?",zh:"当文件打开时,是否提示冲突文件?"},Filename:{def:"Filename",es:"Nombre de archivo",ja:"ファイル名",zh:"文件名"},"Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.":{def:"Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.",es:"Guardar configuración en archivo markdown. Se notificarán nuevos ajustes. Puede definir diferentes archivos por plataforma",zh:"如果设置了此项,所有设置都将保存在一个Markdown文件中。当新设置到达时,您将收到通知。您可以根据平台设置不同的文件。"},"Write credentials in the file":{def:"Write credentials in the file",es:"Escribir credenciales en archivo",ja:"クレデンシャルのファイル内保存",zh:"将凭据写入文件"},"(Not recommended) If set, credentials will be stored in the file.":{def:"(Not recommended) If set, credentials will be stored in the file.",es:"(No recomendado) Almacena credenciales en el archivo",zh:"(不建议)如果设置,凭据将存储在文件中。"},"Notify all setting files":{def:"Notify all setting files",es:"Notificar todos los archivos de configuración",ja:"すべての設定を通知",zh:"通知所有设置文件"},"Suppress notification of hidden files change":{def:"Suppress notification of hidden files change",es:"Suprimir notificaciones de cambios en archivos ocultos"},"If enabled, the notification of hidden files change will be suppressed.":{def:"If enabled, the notification of hidden files change will be suppressed.",es:"Si se habilita, se suprimirá la notificación de cambios en archivos ocultos."},"Scan for hidden files before replication":{def:"Scan for hidden files before replication",es:"Escanear archivos ocultos antes de replicar",ja:"レプリケーション開始前に、隠しファイルのスキャンを行う",zh:"复制前扫描隐藏文件"},"Scan hidden files periodically":{def:"Scan hidden files periodically",es:"Escanear archivos ocultos periódicamente",ja:"定期的に隠しファイルのスキャンを行う",zh:"定期扫描隐藏文件"},"Seconds, 0 to disable":{def:"Seconds, 0 to disable",es:"Segundos, 0 para desactivar",zh:"秒,0为禁用"},"Maximum file size":{def:"Maximum file size",es:"Tamaño máximo de archivo",ja:"最大ファイル容量",zh:"最大文件大小"},"(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.":{def:"(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.",es:"(MB) Saltar cambios en archivos locales/remotos mayores a este tamaño. Si se reduce, se usará versión nueva",zh:"(MB)如果设置了此项,大于此大小的本地和远程文件的更改将被跳过。如果文件再次变小,将使用更新的文件"},"(Beta) Use ignore files":{def:"(Beta) Use ignore files",es:"(Beta) Usar archivos de ignorar",ja:"(ベータ機能) 無視ファイル(ignore)の使用",zh:"(测试版)使用忽略文件"},"If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.":{def:"If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.",es:"Saltar cambios en archivos locales que coincidan con ignore files. Cambios remotos usan ignore files locales",zh:"如果设置了此项,与忽略文件匹配的本地文件的更改将被跳过。远程更改使用本地忽略文件确定"},"Ignore files":{def:"Ignore files",es:"Archivos a ignorar",ja:"無視ファイル",zh:"忽略文件"},"Comma separated `.gitignore, .dockerignore`":{def:"Comma separated `.gitignore, .dockerignore`",es:"Separados por comas: `.gitignore, .dockerignore`",zh:"我们可以使用多个忽略文件,例如`.gitignore, .dockerignore`"},"Device name":{def:"Device name",es:"Nombre del dispositivo",ja:"デバイスネーム",zh:"设备名称"},"Unique name between all synchronized devices. To edit this setting, please disable customization sync once.":{def:"Unique name between all synchronized devices. To edit this setting, please disable customization sync once.",es:"Nombre único entre dispositivos sincronizados. Para editarlo, desactive sincronización de personalización",ja:"一意の名称を、すべての端末に設定します。この設定を変更した場合、カスタマイズ同期機能を無効にしてください。",zh:"所有同步设备之间的唯一名称。要编辑此设置,请首先禁用自定义同步"},"Per-file-saved customization sync":{def:"Per-file-saved customization sync",es:"Sincronización de personalización por archivo",zh:"按文件保存的自定义同步"},"If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.":{def:"If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.",es:"Habilita sincronización eficiente por archivo. Requiere migración y actualizar todos dispositivos a v0.23.18. Pierde compatibilidad con versiones antiguas"},"Enable customization sync":{def:"Enable customization sync",es:"Habilitar sincronización de personalización",ja:"カスタマイズ同期を有効",zh:"启用自定义同步"},"K.ScanCustomization":{def:"Scan customization"},"Scan customization automatically":{def:"Scan customization automatically",es:"Escanear personalización automáticamente",ja:"自動的にカスタマイズをスキャン",zh:"自动扫描自定义设置"},"Scan customization before replicating.":{def:"Scan customization before replicating.",es:"Escanear personalización antes de replicar",ja:"レプリケーション前に、カスタマイズをスキャン",zh:"在复制前扫描自定义设置"},"Scan customization periodically":{def:"Scan customization periodically",es:"Escanear personalización periódicamente",ja:"定期的にカスタマイズをスキャン",zh:"定期扫描自定义设置"},"Scan customization every 1 minute.":{def:"Scan customization every 1 minute.",es:"Escanear personalización cada 1 minuto",ja:"カスタマイズのスキャンを1分ごとに行う",zh:"每1分钟扫描自定义设置"},"Notify customized":{def:"Notify customized",es:"Notificar personalizaciones",ja:"カスタマイズが行われたら通知する",zh:"通知自定义设置"},"Notify when other device has newly customized.":{def:"Notify when other device has newly customized.",es:"Notificar cuando otro dispositivo personalice",ja:"別の端末がカスタマイズを行なったら通知する",zh:"当其他设备有新的自定义设置时通知"},"Write logs into the file":{def:"Write logs into the file",es:"Escribir logs en archivo",ja:"ファイルにログを記録",zh:"将日志写入文件"},"Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.":{def:"Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.",es:"¡Advertencia! Impacta rendimiento. Los logs no se sincronizan con nombre predeterminado. Contienen información confidencial",zh:"警告!这将严重影响性能。并且日志不会以默认名称同步。请小心处理日志;它们通常包含您的敏感信息"},"Suspend file watching":{def:"Suspend file watching",es:"Suspender monitorización de archivos",ja:"監視の一時停止",zh:"暂停文件监视"},"Stop watching for file changes.":{def:"Stop watching for file changes.",es:"Dejar de monitorear cambios en archivos",ja:"監視の停止"},"Suspend database reflecting":{def:"Suspend database reflecting",es:"Suspender reflejo de base de datos",ja:"データベース反映の一時停止",zh:"暂停数据库反映"},"Stop reflecting database changes to storage files.":{def:"Stop reflecting database changes to storage files.",es:"Dejar de reflejar cambios de BD en archivos",ja:"データベースの変更をストレージファイルに反映させない"},"Memory cache size (by total items)":{def:"Memory cache size (by total items)",es:"Tamaño caché memoria (por ítems)",ja:"全体のキャッシュサイズ",zh:"内存缓存大小(按总项目数)"},"Memory cache size (by total characters)":{def:"Memory cache size (by total characters)",es:"Tamaño caché memoria (por caracteres)",ja:"全体でキャッシュする文字数",zh:"内存缓存大小(按总字符数)"},"(Mega chars)":{def:"(Mega chars)",es:"(Millones de caracteres)",zh:"(百万字符)"},"Enhance chunk size":{def:"Enhance chunk size",es:"Mejorar tamaño de chunks",ja:"チャンクサイズを最新にする",zh:"增强块大小"},"Use splitting-limit-capped chunk splitter":{def:"Use splitting-limit-capped chunk splitter",es:"Usar divisor de chunks con límite"},"If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.":{def:"If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.",es:"Divide chunks en máximo 100 ítems. Menos eficiente en deduplicación"},"Use Segmented-splitter":{def:"Use Segmented-splitter",es:"Usar divisor segmentado"},"If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.":{def:"If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.",es:"Divide chunks en segmentos semánticos. No todos los sistemas lo soportan"},"Fetch chunks on demand":{def:"Fetch chunks on demand",es:"Obtener chunks bajo demanda",ja:"ユーザーのタイミングでチャンクの更新を確認する",zh:"按需获取块"},"(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.":{def:"(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.",es:"(Ej: Leer chunks online) Lee chunks directamente en línea. Aumente tamaño de chunks personalizados",zh:"(例如,在线读取块)如果启用此选项,LiveSync将直接在线读取块,而不是在本地复制块。建议增加自定义块大小"},"Batch size of on-demand fetching":{def:"Batch size of on-demand fetching",es:"Tamaño de lote para obtención bajo demanda",zh:"按需获取的批量大小"},"The delay for consecutive on-demand fetches":{def:"The delay for consecutive on-demand fetches",es:"Retraso entre obtenciones consecutivas",zh:"连续按需获取的延迟"},"Incubate Chunks in Document":{def:"Incubate Chunks in Document",es:"Incubar chunks en documento",ja:"ドキュメント内でハッチングを行う",zh:"在文档中孵化块"},"If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.":{def:"If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.",es:"Chunks nuevos se mantienen temporalmente en el documento hasta estabilizarse",zh:"如果启用,新创建的数据块将暂时保留在文档中,并在稳定后成为独立数据块。"},"Maximum Incubating Chunks":{def:"Maximum Incubating Chunks",es:"Máximo de chunks incubados",ja:"最大ハッチング数",zh:"最大孵化块数"},"The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.":{def:"The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.",es:"Número máximo de chunks que pueden incubarse en el documento. Excedentes se independizan",zh:"文档中可以孵化的数据块的最大数量。超过此数量的数据块将立即成为独立数据块。"},"Maximum Incubating Chunk Size":{def:"Maximum Incubating Chunk Size",es:"Tamaño máximo de chunks incubados",ja:"保持するチャンクの最大サイズ",zh:"最大孵化块大小"},"The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.":{def:"The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.",es:"Tamaño total máximo de chunks incubados. Excedentes se independizan",zh:"文档中可以孵化的数据块的最大尺寸。超过此大小的数据块将立即成为独立数据块。"},"Maximum Incubation Period":{def:"Maximum Incubation Period",es:"Periodo máximo de incubación",ja:"最大保持期限",zh:"最大孵化期限"},"The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.":{def:"The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.",es:"Duración máxima para incubar chunks. Excedentes se independizan",zh:"文档中可以孵化的数据块的最大持续时间。超过此时间的数据块将成为独立数据块。"},"Data Compression":{def:"Data Compression",es:"Compresión de datos",ja:"データ圧縮",zh:"数据压缩"},"Batch size":{def:"Batch size",es:"Tamaño de lote",ja:"バッチ容量",zh:"批量大小"},"Number of changes to sync at a time. Defaults to 50. Minimum is 2.":{def:"Number of changes to sync at a time. Defaults to 50. Minimum is 2.",es:"Número de cambios a sincronizar simultáneamente. Default 50, mínimo 2",zh:"一次处理的更改源项目数。默认为50。最小为2"},"Batch limit":{def:"Batch limit",es:"Límite de lotes",ja:"バッチの上限",zh:"批量限制"},"Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.":{def:"Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.",es:"Número de lotes a procesar. Default 40, mínimo 2. Controla documentos en memoria",ja:"1度に処理するバッチの数。デフォルトは40、最小は2。この数値は、どれだけの容量の書類がメモリに保存されるかも定義します。",zh:"一次处理的批量数。默认为40。最小为2。这与批量大小一起控制一次在内存中保留多少文档"},"Use timeouts instead of heartbeats":{def:"Use timeouts instead of heartbeats",es:"Usar timeouts en lugar de latidos",ja:"ハートビートの代わりにタイムアウトを使用",zh:"使用超时而不是心跳"},"If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.":{def:"If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.",es:"Mantiene conexión 60s. Si no hay cambios, reinicia socket. Útil con proxies limitantes",ja:"PouchDBの接続を60秒間維持し、その間に変更がない場合、接続を切断してソケットを再び開きます。プロキシによるリクエスト時間制限があり、なおかつリソースの使用量が増える可能性がある場合に便利です。",zh:"如果启用此选项,PouchDB将保持连接打开60秒,如果在此时间内没有更改到达,则关闭并重新打开套接字,而不是无限期保持打开。当代理限制请求持续时间时有用,但可能会增加资源使用"},"Encrypting sensitive configuration items":{def:"Encrypting sensitive configuration items",es:"Cifrando elementos sensibles",ja:"機微設定項目の暗号化",zh:"加密敏感配置项"},"Passphrase of sensitive configuration items":{def:"Passphrase of sensitive configuration items",es:"Frase para elementos sensibles",ja:"機微設定項目にパスフレーズを使用",zh:"敏感配置项的口令"},"This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.":{def:"This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.",es:"Esta frase no se copia a otros dispositivos. Usará `Default` hasta reconfigurar",zh:"此口令不会复制到另一台设备。在您再次配置之前,它将设置为`Default`。"},"Enable Developers' Debug Tools.":{def:"Enable Developers' Debug Tools.",es:"Habilitar herramientas de depuración"},"Requires restart of Obsidian":{def:"Requires restart of Obsidian",es:"Requiere reiniciar Obsidian"},"Do not keep metadata of deleted files.":{def:"Do not keep metadata of deleted files.",es:"No conservar metadatos de archivos borrados",ja:"削除済みファイルのメタデータを保持しない",zh:"不保留已删除文件的元数据"},"Delete old metadata of deleted files on start-up":{def:"Delete old metadata of deleted files on start-up",es:"Borrar metadatos viejos al iniciar",ja:"削除済みデータのメタデータをクリーンナップする",zh:"启动时删除已删除文件的旧元数据"},"(Days passed, 0 to disable automatic-deletion)":{def:"(Days passed, 0 to disable automatic-deletion)",es:"(Días transcurridos, 0 para desactivar)",zh:"(天数,0为禁用自动删除)"},"Always prompt merge conflicts":{def:"Always prompt merge conflicts",es:"Siempre preguntar en conflictos",ja:"常に競合は手動で解決する",zh:"始终手动解决冲突"},"Should we prompt you for every single merge, even if we can safely merge automatcially?":{def:"Should we prompt you for every single merge, even if we can safely merge automatcially?",es:"¿Preguntar en cada fusión aunque sea automática?",zh:"如果打开此开关,即使可以自动进行合并,也会显示合并对话框。(打开可恢复到以前的行为)"},"Apply Latest Change if Conflicting":{def:"Apply Latest Change if Conflicting",es:"Aplicar último cambio en conflictos",ja:"書類内に競合が発生しても、常に同期内容を反映する",zh:"即使笔记存在冲突,也始终反映同步的更改"},"Enable this option to automatically apply the most recent change to documents even when it conflicts":{def:"Enable this option to automatically apply the most recent change to documents even when it conflicts",es:"Aplicar cambios recientes automáticamente aunque generen conflictos",zh:"打开可恢复到以前的行为"},"(Obsolete) Use an old adapter for compatibility":{def:"(Obsolete) Use an old adapter for compatibility",es:"(Obsoleto) Usar adaptador antiguo",ja:"古いアダプターを利用(互換性重視)",zh:"为了兼容性使用旧适配器"},"Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.":{def:"Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.",es:"Antes de v0.17.16 usábamos adaptador antiguo. Nuevo adaptador requiere reconstruir BD local. Desactive cuando pueda",ja:"v0.17.6までは、古いアダプターをローカル用のデータベースに使用していました。現在は新しいアダプターを推奨しています。しかし、古いデータベースを再構築するためには必要です。有効のままにしておくと、リモートデータベースからフェッチする場合に、この設定を無効にするか質問があります。",zh:"在v0.17.16之前,我们使用了旧适配器作为本地数据库。现在更倾向于使用新适配器。但是,它需要重建本地数据库。请在有足够时间时禁用此切换。如果保留启用状态,且在从远程数据库获取时,将要求您禁用此切换"},"Compute revisions for chunks":{def:"Compute revisions for chunks"},"If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)":{def:"If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)",es:"Si se habilita, todos los chunks se almacenan con la revisión hecha desde su contenido. (comportamiento anterior)"},"Handle files as Case-Sensitive":{def:"Handle files as Case-Sensitive",es:"Manejar archivos como sensibles a mayúsculas"},"If this enabled, All files are handled as case-Sensitive (Previous behaviour).":{def:"If this enabled, All files are handled as case-Sensitive (Previous behaviour).",es:"Si se habilita, todos los archivos se manejan como sensibles a mayúsculas (comportamiento anterior)"},"Scan changes on customization sync":{def:"Scan changes on customization sync",es:"Escanear cambios en sincronización de personalización",ja:"カスタマイズされた同期時に、変更をスキャンする",zh:"在自定义同步时扫描更改"},"Do not use internal API":{def:"Do not use internal API",es:"No usar API interna",ja:"内部APIを使用しない",zh:"不使用内部API"},"Database suffix":{def:"Database suffix",es:"Sufijo de base de datos",ja:"データベースの接尾詞(サフィックス)",zh:"数据库后缀"},"LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.":{def:"LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.",es:"LiveSync no puede manejar múltiples bóvedas con mismo nombre sin prefijo. Se configura automáticamente",ja:"LiveSyncは、接頭詞のない同名の保管庫を扱うことができません。この設定は、自動的に設定されます。",zh:"LiveSync无法处理具有相同名称但没有不同前缀的多个仓库。这应该自动配置"},"The Hash algorithm for chunk IDs":{def:"The Hash algorithm for chunk IDs",es:"Algoritmo hash para IDs de chunks",ja:"チャンクIDのハッシュアルゴリズム",zh:"块ID的哈希算法"},"Fetch database with previous behaviour":{def:"Fetch database with previous behaviour",es:"Obtener BD con comportamiento anterior",ja:"以前の手法でデータベースを取得",zh:"用以前的行为获取数据库"},"Do not split chunks in the background":{def:"Do not split chunks in the background",es:"No dividir chunks en segundo plano"},"If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).":{def:"If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).",es:"Si se desactiva, chunks se dividen en hilo UI (comportamiento anterior)"},"Process small files in the foreground":{def:"Process small files in the foreground",es:"Procesar archivos pequeños en primer plano",zh:"处理小文件于前台"},"If enabled, the file under 1kb will be processed in the UI thread.":{def:"If enabled, the file under 1kb will be processed in the UI thread.",es:"Archivos <1kb se procesan en hilo UI"},"Do not check configuration mismatch before replication":{def:"Do not check configuration mismatch before replication",es:"No verificar incompatibilidades antes de replicar",zh:"在复制前不检查配置不匹配"},"Endpoint URL":{def:"Endpoint URL",es:"URL del endpoint",ja:"エンドポイントURL",zh:"终端节点网址"},"Access Key":{def:"Access Key",es:"Clave de acceso",ja:"アクセスキー",zh:"访问密钥ID"},"Secret Key":{def:"Secret Key",es:"Clave secreta",ja:"シークレットキー",zh:"访问密钥密码"},Region:{def:"Region",es:"Región",ja:"リージョン",zh:"地域"},"Bucket Name":{def:"Bucket Name",es:"Nombre del bucket",ja:"バケット名",zh:"存储桶名称"},"Use Custom HTTP Handler":{def:"Use Custom HTTP Handler",es:"Usar manejador HTTP personalizado",ja:"カスタムHTTPハンドラーの利用",zh:"使用自定义HTTP处理程序"},"Enable this if your Object Storage doesn't support CORS":{def:"Enable this if your Object Storage doesn't support CORS",es:"Habilitar si su almacenamiento no soporta CORS",zh:"如果您的对象存储无法配置接受CORS,请启用此功能。"},"Server URI":{def:"Server URI",es:"URI del servidor",ja:"URI",zh:"URI"},Username:{def:"Username",es:"Usuario",ja:"ユーザー名",zh:"用户名"},username:{def:"username",es:"nombre de usuario",ja:"ユーザー名",zh:"用户名"},Password:{def:"Password",es:"Contraseña",ja:"パスワード",zh:"密码"},password:{def:"password",es:"contraseña",ja:"パスワード",zh:"密码"},"Database Name":{def:"Database Name",es:"Nombre de la base de datos",ja:"データベース名",zh:"数据库名称"},"logPane.title":{def:"Self-hosted LiveSync Log",es:"Registro de Self-hosted LiveSync"},"logPane.wrap":{def:"Wrap",es:"Ajustar"},"logPane.autoScroll":{def:"Auto scroll",es:"Autodesplazamiento"},"logPane.pause":{def:"Pause",es:"Pausar"},"logPane.logWindowOpened":{def:"Log window opened",es:"Ventana de registro abierta"},"cmdConfigSync.showCustomizationSync":{def:"Show Customization sync",es:"Mostrar sincronización de personalización"},"moduleObsidianMenu.replicate":{def:"Replicate",es:"Replicar"},"moduleLog.showLog":{def:"Show Log",es:"Mostrar registro"},"liveSyncReplicator.replicationInProgress":{def:"Replication is already in progress",es:"Replicación en curso"},"liveSyncReplicator.oneShotSyncBegin":{def:"OneShot Sync begin... (${syncMode})",es:"Inicio de sincronización OneShot... (${syncMode})"},"liveSyncReplicator.couldNotConnectToServer":{def:"Could not connect to server.",es:"No se pudo conectar al servidor."},"liveSyncReplicator.checkingLastSyncPoint":{def:"Looking for the point last synchronized point.",es:"Buscando el último punto sincronizado."},"liveSyncReplicator.cantReplicateLowerValue":{def:"We can't replicate more lower value.",es:"No podemos replicar un valor más bajo."},"liveSyncReplicator.retryLowerBatchSize":{def:"Retry with lower batch size:${batch_size}/${batches_limit}",es:"Reintentar con tamaño de lote más bajo:${batch_size}/${batches_limit}"},"liveSyncReplicator.beforeLiveSync":{def:"Before LiveSync, start OneShot once...",es:"Antes de LiveSync, inicia OneShot..."},"liveSyncReplicator.liveSyncBegin":{def:"LiveSync begin...",es:"Inicio de LiveSync..."},"liveSyncReplicator.couldNotConnectToRemoteDb":{def:"Could not connect to remote database: ${d}",es:"No se pudo conectar a base de datos remota: ${d}"},"liveSyncReplicator.couldNotConnectToURI":{def:"Could not connect to ${uri}:${dbRet}",es:"No se pudo conectar a ${uri}:${dbRet}"},"liveSyncReplicator.couldNotConnectTo":{def:"Could not connect to ${uri} : ${name} \n(${db})",es:"No se pudo conectar a ${uri} : ${name} \n(${db})"},"liveSyncReplicator.remoteDbCorrupted":{def:"Remote database is newer or corrupted, make sure to latest version of self-hosted-livesync installed",es:"La base de datos remota es más nueva o está dañada, asegúrese de tener la última versión de self-hosted-livesync instalada"},"liveSyncReplicator.lockRemoteDb":{def:"Lock remote database to prevent data corruption",es:"Bloquear base de datos remota para prevenir corrupción de datos"},"liveSyncReplicator.unlockRemoteDb":{def:"Unlock remote database to prevent data corruption",es:"Desbloquear base de datos remota para prevenir corrupción de datos"},"liveSyncReplicator.replicationClosed":{def:"Replication closed",es:"Replicación cerrada"},"liveSyncReplicator.remoteDbDestroyed":{def:"Remote Database Destroyed",es:"Base de datos remota destruida"},"liveSyncReplicator.remoteDbDestroyError":{def:"Something happened on Remote Database Destroy:",es:"Algo ocurrió al destruir base de datos remota:"},"liveSyncReplicator.remoteDbCreatedOrConnected":{def:"Remote Database Created or Connected",es:"Base de datos remota creada o conectada"},"liveSyncReplicator.markDeviceResolved":{def:"Mark this device as 'resolved'.",es:"Marcar este dispositivo como 'resuelto'."},"liveSyncReplicator.remoteDbMarkedResolved":{def:"Remote database has been marked resolved.",es:"Base de datos remota marcada como resuelta."},"liveSyncReplicator.couldNotMarkResolveRemoteDb":{def:"Could not mark resolve remote database.",es:"No se pudo marcar como resuelta la base de datos remota."},"liveSyncSetting.errorNoSuchSettingItem":{def:"No such setting item: ${key}",es:"No existe el ajuste: ${key}"},"liveSyncSetting.valueShouldBeInRange":{def:"The value should ${min} < value < ${max}",es:"El valor debe estar entre ${min} y ${max}"},"liveSyncSettings.btnApply":{def:"Apply",es:"Aplicar"},"liveSyncSetting.originalValue":{def:"Original: ${value}",es:"Original: ${value}"},"K.Peer":{def:"Peer"},"K.P2P":{def:"%{Peer}-to-%{Peer}"},"P2P.P2PReplication":{def:"%{P2P} Replication"},"K.exp":{def:"Experimental"},"K.short_p2p_sync":{def:"P2P Sync (%{exp})"},"K.title_p2p_sync":{def:"Peer-to-Peer Sync"},"K.long_p2p_sync":{def:"%{title_p2p_sync} (%{exp})"},"P2P.PaneTitle":{def:"%{long_p2p_sync}"},"P2P.NotEnabled":{def:"%{title_p2p_sync} is not enabled. We cannot open a new connection."},"P2P.NoAutoSyncPeers":{def:"No auto-sync peers found. Please set peers on the %{long_p2p_sync} pane."},"P2P.FailedToOpen":{def:"Failed to open P2P connection to the signaling server."},"P2P.SyncCompleted":{def:"P2P Sync completed."},"P2P.SeemsOffline":{def:"Peer ${name} seems offline, skipped."},"P2P.SyncStartedWith":{def:"P2P Sync with ${name} have been started."},"P2P.ReplicatorInstanceMissing":{def:"P2P Sync replicator is not found, possibly not have been configured or enabled."},"P2P.SyncAlreadyRunning":{def:"P2P Sync is already running."},"P2P.Note.Summary":{def:"What is this feature? (and some important notes, please read once)"},"P2P.Note.important_note":{def:"The Experimental Implementation of the Peer-to-Peer Replicator."},"P2P.Note.important_note_sub":{def:"This feature is still in the experimental stage. Please be aware that this feature may not work as expected. Furthermore, it may have some bugs, security issues, and other issues. Please use this feature at your own risk. Please contribute to the development of this feature."},"P2P.Note.description":{def:" This replicator allows us to synchronise our vault with other devices using a peer-to-peer connection. We can use this to synchronise our vault with our other devices without using a cloud service.\n\nThis replicator is based on Trystero. It also uses a signaling server to establish a connection between devices. The signaling server is used to exchange connection information between devices. It does (or,should) not know or store any of our data.\n\nThe signaling server can be hosted by anyone. This is just a Nostr relay. For the sake of simplicity and checking the behaviour of the replicator, an instance of the signaling server is hosted by vrtmrz. You can use the experimental server provided by vrtmrz, or you can use any other server.\n\nBy the way, even if the signaling server does not store our data, it can see the connection information of some of our devices. Please be aware of this. Also, be cautious when using the server provided by someone else."},"P2P.NoKnownPeers":{def:"No peers has been detected, waiting incoming other peers..."},"P2P.DisabledButNeed":{def:"%{title_p2p_sync} is disabled. Do you really want to enable it?"},"P2P.AskPassphraseForDecrypt":{def:"The remote peer shared the configuration. Please input the passphrase to decrypt the configuration."},"P2P.AskPassphraseForShare":{def:"The remote peer requested this device configuration. Please input the passphrase to share the configuration. You can ignore the request by cancelling this dialogue."},"Doctor.Dialogue.Title":{def:"Self-hosted LiveSync Config Doctor"},"Doctor.Dialogue.Main":{def:"Hi! Config Doctor has been activated because of ${activateReason}!\nAnd, unfortunately some configurations were detected as potential problems.\nPlease be assured. Let's solve them one by one.\n\nTo let you know ahead of time, we will ask you about the following items.\n\n${issues}\n\nShall we get started?"},"Doctor.Dialogue.TitleFix":{def:"Fix issue ${current}/${total}"},"Doctor.Dialogue.MainFix":{def:"**Configuration name:** `${name}`\n**Current value:** `${current}`, **Ideal value:** `${ideal}`\n**Recommendation Level:** ${level}\n**Why this has been detected?**\n${reason}\n\n\n${note}\n\nFix this to the ideal value?"},"Doctor.Message.RebuildRequired":{def:"Attention! A rebuild is required to apply this!"},"Doctor.Message.RebuildLocalRequired":{def:"Attention! A local database rebuild is required to apply this!"},"Doctor.Message.SomeSkipped":{def:"We left some issues as is. Shall I ask you again on next startup?"},"Doctor.Dialogue.TitleAlmostDone":{def:"Almost done!"},"Doctor.Level.Necessary":{def:"Necessary"},"Doctor.Level.Recommended":{def:"Recommended"},"Doctor.Level.Optional":{def:"Optional"},"Doctor.Level.Must":{def:"Must"},"Doctor.Button.Fix":{def:"Fix it"},"Doctor.Button.FixButNoRebuild":{def:"Fix it but no rebuild"},"Doctor.Button.Skip":{def:"Leave it as is"},"Doctor.Button.Yes":{def:"Yes"},"Doctor.Button.No":{def:"No"},"Doctor.Button.DismissThisVersion":{def:"No, and do not ask again until the next release"},"Doctor.Message.NoIssues":{def:"No issues detected!"},"Setting.TroubleShooting":{def:"TroubleShooting"},"Setting.TroubleShooting.Doctor":{def:"Setting Doctor"},"Setting.TroubleShooting.Doctor.Desc":{def:"Detects non optimal settings. (Same as during migration)"},"TweakMismatchResolve.Table":{def:"| Value name | This device | On Remote |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n"},"TweakMismatchResolve.Table.Row":{def:"| ${name} | ${self} | ${remote} |"},"TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired":{def:"\n>[!WARNING]\n> Some remote configurations are not compatible with the local database of this device. Rebuilding the local database will be required.\n> ***Please ensure that you have time and are connected to a stable network to apply!***"},"TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended":{def:"\n>[!NOTICE]\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> ***Please ensure that you have time and are connected to a stable network to apply!***"},"TweakMismatchResolve.Message.Main":{def:"\nThe settings in the remote database are as follows. These values are configured by other devices, which are synchronised with this device at least once.\n\nIf you want to use these settings, please select %{TweakMismatchResolve.Action.UseConfigured}.\nIf you want to keep the settings of this device, please select %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!TIP]\n> If you want to synchronise all settings, please use `Sync settings via markdown` after applying minimal configuration with this feature.\n\n${additionalMessage}"},"TweakMismatchResolve.Action.UseRemote":{def:"Apply settings to this device"},"TweakMismatchResolve.Action.UseRemoteWithRebuild":{def:"Apply settings to this device, and fetch again"},"TweakMismatchResolve.Action.UseRemoteAcceptIncompatible":{def:"Apply settings to this device, but and ignore incompatibility"},"TweakMismatchResolve.Action.UseMine":{def:"Update remote database settings"},"TweakMismatchResolve.Action.UseMineWithRebuild":{def:"Update remote database settings and rebuild again"},"TweakMismatchResolve.Action.UseMineAcceptIncompatible":{def:"Update remote database settings but keep as is"},"TweakMismatchResolve.Action.UseConfigured":{def:"Use configured settings"},"TweakMismatchResolve.Action.Dismiss":{def:"Dismiss"},"TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired":{def:"\n>[!WARNING]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Either local or remote rebuilds are required. Both of them takes a few minutes or more. **Make sure it is safe to perform it now.**"},"TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended":{def:"\n>[!NOTICE]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> If you want to rebuild, it takes a few minutes or more. **Make sure it is safe to perform it now.**"},"TweakMismatchResolve.Message.MainTweakResolving":{def:"Your configuration has not been matched with the one on the remote server.\n\nFollowing configuration should be matched:\n\n${table}\n\nLet us know your decision.\n\n${additionalMessage}"},"TweakMismatchResolve.Title":{def:"Configuration Mismatch Detected"},"TweakMismatchResolve.Title.TweakResolving":{def:"Configuration Mismatch Detected"},"TweakMismatchResolve.Title.UseRemoteConfig":{def:"Use Remote Configuration"},"Replicator.Dialogue.Locked.Title":{def:"Locked"},"Replicator.Dialogue.Locked.Message":{def:"Remote database is locked. This is due to a rebuild on one of the terminals.\nThe device is therefore asked to withhold the connection to avoid database corruption.\n\nThere are three options that we can do:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n The most preferred and reliable way. This will dispose the local database once, and fetch all from the remote database again, In most case, we can perform this safely. However, it takes some time and should be done in stable network.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n This method can only be used if we are already reliably synchronised by other replication methods. This does not simply mean that we have the same files. If you are not sure, you should avoid it.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n This will cancel the operation. And we will asked again on next request.\n"},"Replicator.Dialogue.Locked.Action.Fetch":{def:"Fetch all from the remote database again"},"Replicator.Dialogue.Locked.Action.Unlock":{def:"Unlock the remote database"},"Replicator.Dialogue.Locked.Action.Dismiss":{def:"Cancel for reconfirmation"},"Replicator.Dialogue.Locked.Message.Fetch":{def:"Fetch all has been scheduled. Plug-in will be restarted to perform it."},"Replicator.Dialogue.Locked.Message.Unlocked":{def:"The remote database has been unlocked. Please retry the operation."},"Replicator.Message.Cleaned":{def:"Database cleaning up is in process. replication has been cancelled"},"Replicator.Message.VersionUpFlash":{def:"Open settings and check message, please. replication has been cancelled."},"Replicator.Message.Pending":{def:"Some file events are pending. Replication has been cancelled."},"Replicator.Message.SomeModuleFailed":{def:"Replication has been cancelled by some module failure"},"Replicator.Message.InitialiseFatalError":{def:"No replicator is available, this is the fatal error."},"SettingTab.Message.AskRebuild":{def:"Your changes require fetching from the remote database. Do you want to proceed?"},"Compute revisions for chunks (Previous behaviour)":{es:"Calcular revisiones para chunks (comportamiento anterior)"}},"def"),...expandKeywords(_allMessages,"es"),...expandKeywords(_allMessages,"ja"),...expandKeywords(_allMessages,"ru"),...expandKeywords(_allMessages,"zh"),...expandKeywords(_allMessages,"zh-tw")};allMessages=expandedMessage;currentLang="";missingTranslations=[];__onMissingTranslations=key2=>console.warn(key2);msgCache=new Map;on_click=(_,closeDialogue)=>closeDialogue();root_1=template('<pre class="svelte-47tukr"> </pre>');root=template('<div class="logpane svelte-47tukr"><div class="control svelte-47tukr"><div class="row svelte-47tukr"><label class="svelte-47tukr"><input type="checkbox" class="svelte-47tukr"> <span class="svelte-47tukr"> </span></label> <label class="svelte-47tukr"><input type="checkbox" class="svelte-47tukr"> <span class="svelte-47tukr"> </span></label> <label class="svelte-47tukr"><input type="checkbox" class="svelte-47tukr"> <span class="svelte-47tukr"> </span></label> <span class="spacer svelte-47tukr"></span> <button class="svelte-47tukr">Close</button></div></div> <div class="log svelte-47tukr"></div></div>');$$css={hash:"svelte-47tukr",code:".svelte-47tukr {box-sizing:border-box;}.logpane.svelte-47tukr {display:flex;height:100%;flex-direction:column;}.log.svelte-47tukr {overflow-y:scroll;user-select:text;-webkit-user-select:text;padding-bottom:2em;}.log.svelte-47tukr > pre:where(.svelte-47tukr) {margin:0;}.log.svelte-47tukr > pre.wrap-right:where(.svelte-47tukr) {word-break:break-all;max-width:100%;width:100%;white-space:normal;}.row.svelte-47tukr {display:flex;flex-direction:row;justify-content:flex-end;}.row.svelte-47tukr > label:where(.svelte-47tukr) {display:flex;align-items:center;min-width:5em;margin-right:1em;}"};delegate(["click"]);import_obsidian3=require("obsidian");SvelteItemView=class extends import_obsidian3.ItemView{async onOpen(){await super.onOpen();this.contentEl.empty();await this._dismountComponent();this.component=await this.instantiateComponent(this.contentEl)}async _dismountComponent(){if(this.component){await unmount(this.component);this.component=void 0}}async onClose(){await super.onClose();if(this.component){await unmount(this.component);this.component=void 0}}};require("obsidian");LogPaneView=class extends SvelteItemView{constructor(leaf,plugin3){super(leaf);this.icon="view-log";this.title="";this.navigation=!1;this.plugin=plugin3}instantiateComponent(target){return mount(LogPane,{target,props:{close:()=>{this.leaf.detach()}}})}getIcon(){return"view-log"}getViewType(){return"log-log"}getDisplayText(){return $msg("logPane.title")}};crypto2="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;Hash=class{clone(){return this._cloneInto()}};HashMD=class extends Hash{constructor(blockLen,outputLen,padOffset,isLE2){super();this.blockLen=blockLen;this.outputLen=outputLen;this.padOffset=padOffset;this.isLE=isLE2;this.finished=!1;this.length=0;this.pos=0;this.destroyed=!1;this.buffer=new Uint8Array(blockLen);this.view=createView(this.buffer)}update(data){aexists(this);const{view,buffer,blockLen}=this,len=(data=toBytes(data)).length;for(let pos=0;pos<len;){const take2=Math.min(blockLen-this.pos,len-pos);if(take2!==blockLen){buffer.set(data.subarray(pos,pos+take2),this.pos);this.pos+=take2;pos+=take2;if(this.pos===blockLen){this.process(view,0);this.pos=0}}else{const dataView=createView(data);for(;blockLen<=len-pos;pos+=blockLen)this.process(dataView,pos)}}this.length+=data.length;this.roundClean();return this}digestInto(out){aexists(this);(function aoutput(out,instance3){abytes(out);const min=instance3.outputLen;if(out.length<min)throw new Error("digestInto() expects output buffer of length at least "+min)})(out,this);this.finished=!0;const{buffer,view,blockLen,isLE:isLE2}=this;let{pos}=this;buffer[pos++]=128;this.buffer.subarray(pos).fill(0);if(this.padOffset>blockLen-pos){this.process(view,0);pos=0}for(let i2=pos;i2<blockLen;i2++)buffer[i2]=0;(function setBigUint64(view,byteOffset,value,isLE2){if("function"==typeof view.setBigUint64)return view.setBigUint64(byteOffset,value,isLE2);const _32n=BigInt(32),_u32_max=BigInt(4294967295),wh=Number(value>>_32n&_u32_max),wl=Number(value&_u32_max),h3=isLE2?4:0,l2=isLE2?0:4;view.setUint32(byteOffset+h3,wh,isLE2);view.setUint32(byteOffset+l2,wl,isLE2)})(view,blockLen-8,BigInt(8*this.length),isLE2);this.process(view,0);const oview=createView(out),len=this.outputLen;if(len%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const outLen=len/4,state2=this.get();if(outLen>state2.length)throw new Error("_sha2: outputLen bigger than state");for(let i2=0;i2<outLen;i2++)oview.setUint32(4*i2,state2[i2],isLE2)}digest(){const{buffer,outputLen}=this;this.digestInto(buffer);const res2=buffer.slice(0,outputLen);this.destroy();return res2}_cloneInto(to){to||(to=new this.constructor);to.set(...this.get());const{blockLen,buffer,length,finished,destroyed,pos}=this;to.length=length;to.pos=pos;to.finished=finished;to.destroyed=destroyed;length%blockLen&&to.buffer.set(buffer);return to}};SHA256_K=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);SHA256_IV=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);SHA256_W=new Uint32Array(64);SHA256=class extends HashMD{constructor(){super(64,32,8,!1);this.A=0|SHA256_IV[0];this.B=0|SHA256_IV[1];this.C=0|SHA256_IV[2];this.D=0|SHA256_IV[3];this.E=0|SHA256_IV[4];this.F=0|SHA256_IV[5];this.G=0|SHA256_IV[6];this.H=0|SHA256_IV[7]}get(){const{A:A2,B:B2,C:C2,D:D2,E:E2,F:F2,G:G2,H:H2}=this;return[A2,B2,C2,D2,E2,F2,G2,H2]}set(A2,B2,C2,D2,E2,F2,G2,H2){this.A=0|A2;this.B=0|B2;this.C=0|C2;this.D=0|D2;this.E=0|E2;this.F=0|F2;this.G=0|G2;this.H=0|H2}process(view,offset){for(let i2=0;i2<16;i2++,offset+=4)SHA256_W[i2]=view.getUint32(offset,!1);for(let i2=16;i2<64;i2++){const W15=SHA256_W[i2-15],W2=SHA256_W[i2-2],s0=rotr(W15,7)^rotr(W15,18)^W15>>>3,s1=rotr(W2,17)^rotr(W2,19)^W2>>>10;SHA256_W[i2]=s1+SHA256_W[i2-7]+s0+SHA256_W[i2-16]|0}let{A:A2,B:B2,C:C2,D:D2,E:E2,F:F2,G:G2,H:H2}=this;for(let i2=0;i2<64;i2++){const T1=H2+(rotr(E2,6)^rotr(E2,11)^rotr(E2,25))+((a2=E2)&F2^~a2&G2)+SHA256_K[i2]+SHA256_W[i2]|0,T2=(rotr(A2,2)^rotr(A2,13)^rotr(A2,22))+Maj(A2,B2,C2)|0;H2=G2;G2=F2;F2=E2;E2=D2+T1|0;D2=C2;C2=B2;B2=A2;A2=T1+T2|0}var a2;A2=A2+this.A|0;B2=B2+this.B|0;C2=C2+this.C|0;D2=D2+this.D|0;E2=E2+this.E|0;F2=F2+this.F|0;G2=G2+this.G|0;H2=H2+this.H|0;this.set(A2,B2,C2,D2,E2,F2,G2,H2)}roundClean(){SHA256_W.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0);this.buffer.fill(0)}};sha256=wrapConstructor((()=>new SHA256));HMAC=class extends Hash{constructor(hash3,_key){super();this.finished=!1;this.destroyed=!1;(function ahash(h3){if("function"!=typeof h3||"function"!=typeof h3.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");anumber(h3.outputLen);anumber(h3.blockLen)})(hash3);const key2=toBytes(_key);this.iHash=hash3.create();if("function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen;this.outputLen=this.iHash.outputLen;const blockLen=this.blockLen,pad2=new Uint8Array(blockLen);pad2.set(key2.length>blockLen?hash3.create().update(key2).digest():key2);for(let i2=0;i2<pad2.length;i2++)pad2[i2]^=54;this.iHash.update(pad2);this.oHash=hash3.create();for(let i2=0;i2<pad2.length;i2++)pad2[i2]^=106;this.oHash.update(pad2);pad2.fill(0)}update(buf){aexists(this);this.iHash.update(buf);return this}digestInto(out){aexists(this);abytes(out,this.outputLen);this.finished=!0;this.iHash.digestInto(out);this.oHash.update(out);this.oHash.digestInto(out);this.destroy()}digest(){const out=new Uint8Array(this.oHash.outputLen);this.digestInto(out);return out}_cloneInto(to){to||(to=Object.create(Object.getPrototypeOf(this),{}));const{oHash,iHash,finished,destroyed,blockLen,outputLen}=this;to.finished=finished;to.destroyed=destroyed;to.blockLen=blockLen;to.outputLen=outputLen;to.oHash=oHash._cloneInto(to.oHash);to.iHash=iHash._cloneInto(to.iHash);return to}destroy(){this.destroyed=!0;this.oHash.destroy();this.iHash.destroy()}};(hmac=(hash3,key2,message)=>new HMAC(hash3,key2).update(message).digest()).create=(hash3,key2)=>new HMAC(hash3,key2);__export(utils_exports={},{aInRange:()=>aInRange,abool:()=>abool,abytes:()=>abytes2,bitGet:()=>bitGet,bitLen:()=>bitLen,bitMask:()=>bitMask,bitSet:()=>bitSet,bytesToHex:()=>bytesToHex2,bytesToNumberBE:()=>bytesToNumberBE,bytesToNumberLE:()=>bytesToNumberLE,concatBytes:()=>concatBytes2,createHmacDrbg:()=>createHmacDrbg,ensureBytes:()=>ensureBytes,equalBytes:()=>equalBytes,hexToBytes:()=>hexToBytes2,hexToNumber:()=>hexToNumber,inRange:()=>inRange,isBytes:()=>isBytes3,memoized:()=>memoized,notImplemented:()=>notImplemented,numberToBytesBE:()=>numberToBytesBE,numberToBytesLE:()=>numberToBytesLE,numberToHexUnpadded:()=>numberToHexUnpadded,numberToVarBytesBE:()=>numberToVarBytesBE,utf8ToBytes:()=>utf8ToBytes2,validateObject:()=>validateObject});_0n=BigInt(0);_1n=BigInt(1);_2n=BigInt(2);hexes2=Array.from({length:256},((_,i2)=>i2.toString(16).padStart(2,"0")));asciis2={_0:48,_9:57,A:65,F:70,a:97,f:102};isPosBig=n3=>"bigint"==typeof n3&&_0n<=n3;bitMask=n3=>(_2n<<BigInt(n3-1))-_1n;u8n=data=>new Uint8Array(data);u8fr=arr=>Uint8Array.from(arr);validatorFns={bigint:val2=>"bigint"==typeof val2,function:val2=>"function"==typeof val2,boolean:val2=>"boolean"==typeof val2,string:val2=>"string"==typeof val2,stringOrUint8Array:val2=>"string"==typeof val2||isBytes3(val2),isSafeInteger:val2=>Number.isSafeInteger(val2),array:val2=>Array.isArray(val2),field:(val2,object)=>object.Fp.isValid(val2),hash:val2=>"function"==typeof val2&&Number.isSafeInteger(val2.outputLen)};notImplemented=()=>{throw new Error("not implemented")};_0n2=BigInt(0),_1n2=BigInt(1),_2n2=BigInt(2),_3n=BigInt(3);_4n=BigInt(4),_5n=BigInt(5),_8n=BigInt(8);FIELD_FIELDS=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];_0n3=BigInt(0);_1n3=BigInt(1);pointPrecomputes=new WeakMap;pointWindowSizes=new WeakMap;var{bytesToNumberBE:b2n,hexToBytes:h2b}=utils_exports;DERErr=class extends Error{constructor(m3=""){super(m3)}};DER={Err:DERErr,_tlv:{encode:(tag2,data)=>{const{Err:E2}=DER;if(tag2<0||tag2>256)throw new E2("tlv.encode: wrong tag");if(1&data.length)throw new E2("tlv.encode: unpadded data");const dataLen=data.length/2,len=numberToHexUnpadded(dataLen);if(len.length/2&128)throw new E2("tlv.encode: long form length too big");const lenLen=dataLen>127?numberToHexUnpadded(len.length/2|128):"";return numberToHexUnpadded(tag2)+lenLen+len+data},decode(tag2,data){const{Err:E2}=DER;let pos=0;if(tag2<0||tag2>256)throw new E2("tlv.encode: wrong tag");if(data.length<2||data[pos++]!==tag2)throw new E2("tlv.decode: wrong tlv");const first=data[pos++];let length=0;if(128&first){const lenLen=127&first;if(!lenLen)throw new E2("tlv.decode(long): indefinite length not supported");if(lenLen>4)throw new E2("tlv.decode(long): byte length is too big");const lengthBytes=data.subarray(pos,pos+lenLen);if(lengthBytes.length!==lenLen)throw new E2("tlv.decode: length bytes not complete");if(0===lengthBytes[0])throw new E2("tlv.decode(long): zero leftmost byte");for(const b3 of lengthBytes)length=length<<8|b3;pos+=lenLen;if(length<128)throw new E2("tlv.decode(long): not minimal encoding")}else length=first;const v2=data.subarray(pos,pos+length);if(v2.length!==length)throw new E2("tlv.decode: wrong value length");return{v:v2,l:data.subarray(pos+length)}}},_int:{encode(num2){const{Err:E2}=DER;if(num2<_0n4)throw new E2("integer: negative integers are not allowed");let hex=numberToHexUnpadded(num2);8&Number.parseInt(hex[0],16)&&(hex="00"+hex);if(1&hex.length)throw new E2("unexpected DER parsing assertion: unpadded hex");return hex},decode(data){const{Err:E2}=DER;if(128&data[0])throw new E2("invalid signature integer: negative");if(0===data[0]&&!(128&data[1]))throw new E2("invalid signature integer: unnecessary leading zero");return b2n(data)}},toSig(hex){const{Err:E2,_int:int,_tlv:tlv}=DER,data="string"==typeof hex?h2b(hex):hex;abytes2(data);const{v:seqBytes,l:seqLeftBytes}=tlv.decode(48,data);if(seqLeftBytes.length)throw new E2("invalid signature: left bytes after parsing");const{v:rBytes,l:rLeftBytes}=tlv.decode(2,seqBytes),{v:sBytes,l:sLeftBytes}=tlv.decode(2,rLeftBytes);if(sLeftBytes.length)throw new E2("invalid signature: left bytes after parsing");return{r:int.decode(rBytes),s:int.decode(sBytes)}},hexFromSig(sig){const{_tlv:tlv,_int:int}=DER,seq=tlv.encode(2,int.encode(sig.r))+tlv.encode(2,int.encode(sig.s));return tlv.encode(48,seq)}};_0n4=BigInt(0),_1n4=BigInt(1),BigInt(2),_3n2=BigInt(3),BigInt(4);secp256k1P=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f");secp256k1N=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");_1n5=BigInt(1);_2n4=BigInt(2);divNearest=(a2,b3)=>(a2+b3/_2n4)/b3;Fpk1=Field(secp256k1P,void 0,void 0,{sqrt:sqrtMod});secp256k1=function createCurve(curveDef,defHash){const create=hash3=>function weierstrass(curveDef){function modN2(a2){return mod(a2,CURVE_ORDER)}function invN(a2){return invert(a2,CURVE_ORDER)}function isBiggerThanHalfOrder(number){return number>CURVE_ORDER>>_1n4}function isProbPub(item){const arr=isBytes3(item),str="string"==typeof item,len=(arr||str)&&item.length;return arr?len===compressedLen||len===uncompressedLen:str?len===2*compressedLen||len===2*uncompressedLen:item instanceof Point2}function int2octets(num2){aInRange("num < 2^"+CURVE.nBitLength,num2,_0n4,ORDER_MASK);return numberToBytesBE(num2,CURVE.nByteLength)}const CURVE=function validateOpts(curve){const opts=validateBasic(curve);validateObject(opts,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"});return Object.freeze({lowS:!0,...opts})}(curveDef),{Fp,n:CURVE_ORDER}=CURVE,compressedLen=Fp.BYTES+1,uncompressedLen=2*Fp.BYTES+1,{ProjectivePoint:Point2,normPrivateKeyToScalar,weierstrassEquation,isWithinCurveOrder}=function weierstrassPoints(opts){function weierstrassEquation(x2){const{a:a2,b:b3}=CURVE,x22=Fp.sqr(x2),x3=Fp.mul(x22,x2);return Fp.add(Fp.add(x3,Fp.mul(x2,a2)),b3)}function normPrivateKeyToScalar(key2){const{allowedPrivateKeyLengths:lengths,nByteLength,wrapPrivateKey,n:N2}=CURVE;if(lengths&&"bigint"!=typeof key2){isBytes3(key2)&&(key2=bytesToHex2(key2));if("string"!=typeof key2||!lengths.includes(key2.length))throw new Error("invalid private key");key2=key2.padStart(2*nByteLength,"0")}let num2;try{num2="bigint"==typeof key2?key2:bytesToNumberBE(ensureBytes("private key",key2,nByteLength))}catch(error){throw new Error("invalid private key, expected hex or "+nByteLength+" bytes, got "+typeof key2)}wrapPrivateKey&&(num2=mod(num2,N2));aInRange("private key",num2,_1n4,N2);return num2}function assertPrjPoint(other){if(!(other instanceof Point2))throw new Error("ProjectivePoint expected")}const CURVE=function validatePointOpts(curve){const opts=validateBasic(curve);validateObject(opts,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});const{endo,Fp,a:a2}=opts;if(endo){if(!Fp.eql(a2,Fp.ZERO))throw new Error("invalid endomorphism, can only be defined for Koblitz curves that have a=0");if("object"!=typeof endo||"bigint"!=typeof endo.beta||"function"!=typeof endo.splitScalar)throw new Error("invalid endomorphism, expected beta: bigint and splitScalar: function")}return Object.freeze({...opts})}(opts),{Fp}=CURVE,Fn=Field(CURVE.n,CURVE.nBitLength),toBytes2=CURVE.toBytes||((_c2,point,_isCompressed)=>{const a2=point.toAffine();return concatBytes2(Uint8Array.from([4]),Fp.toBytes(a2.x),Fp.toBytes(a2.y))}),fromBytes=CURVE.fromBytes||(bytes=>{const tail=bytes.subarray(1);return{x:Fp.fromBytes(tail.subarray(0,Fp.BYTES)),y:Fp.fromBytes(tail.subarray(Fp.BYTES,2*Fp.BYTES))}});if(!Fp.eql(Fp.sqr(CURVE.Gy),weierstrassEquation(CURVE.Gx)))throw new Error("bad generator point: equation left != right");const toAffineMemo=memoized(((p4,iz)=>{const{px:x2,py:y2,pz:z2}=p4;if(Fp.eql(z2,Fp.ONE))return{x:x2,y:y2};const is0=p4.is0();null==iz&&(iz=is0?Fp.ONE:Fp.inv(z2));const ax2=Fp.mul(x2,iz),ay2=Fp.mul(y2,iz),zz=Fp.mul(z2,iz);if(is0)return{x:Fp.ZERO,y:Fp.ZERO};if(!Fp.eql(zz,Fp.ONE))throw new Error("invZ was invalid");return{x:ax2,y:ay2}})),assertValidMemo=memoized((p4=>{if(p4.is0()){if(CURVE.allowInfinityPoint&&!Fp.is0(p4.py))return;throw new Error("bad point: ZERO")}const{x:x2,y:y2}=p4.toAffine();if(!Fp.isValid(x2)||!Fp.isValid(y2))throw new Error("bad point: x or y not FE");const left=Fp.sqr(y2),right=weierstrassEquation(x2);if(!Fp.eql(left,right))throw new Error("bad point: equation left != right");if(!p4.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0}));class Point2{constructor(px,py,pz){this.px=px;this.py=py;this.pz=pz;if(null==px||!Fp.isValid(px))throw new Error("x required");if(null==py||!Fp.isValid(py))throw new Error("y required");if(null==pz||!Fp.isValid(pz))throw new Error("z required");Object.freeze(this)}static fromAffine(p4){const{x:x2,y:y2}=p4||{};if(!p4||!Fp.isValid(x2)||!Fp.isValid(y2))throw new Error("invalid affine point");if(p4 instanceof Point2)throw new Error("projective point not allowed");const is0=i2=>Fp.eql(i2,Fp.ZERO);return is0(x2)&&is0(y2)?Point2.ZERO:new Point2(x2,y2,Fp.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(points){const toInv=Fp.invertBatch(points.map((p4=>p4.pz)));return points.map(((p4,i2)=>p4.toAffine(toInv[i2]))).map(Point2.fromAffine)}static fromHex(hex){const P2=Point2.fromAffine(fromBytes(ensureBytes("pointHex",hex)));P2.assertValidity();return P2}static fromPrivateKey(privateKey2){return Point2.BASE.multiply(normPrivateKeyToScalar(privateKey2))}static msm(points,scalars){return function pippenger(c3,fieldN,points,scalars){(function validateMSMPoints(points,c3){if(!Array.isArray(points))throw new Error("array expected");points.forEach(((p4,i2)=>{if(!(p4 instanceof c3))throw new Error("invalid point at index "+i2)}))})(points,c3);(function validateMSMScalars(scalars,field){if(!Array.isArray(scalars))throw new Error("array of scalars expected");scalars.forEach(((s2,i2)=>{if(!field.isValid(s2))throw new Error("invalid scalar at index "+i2)}))})(scalars,fieldN);if(points.length!==scalars.length)throw new Error("arrays of points and scalars must have equal length");const zero=c3.ZERO,wbits2=bitLen(BigInt(points.length)),windowSize=wbits2>12?wbits2-3:wbits2>4?wbits2-2:wbits2?2:1,MASK=(1<<windowSize)-1,buckets=new Array(MASK+1).fill(zero);let sum2=zero;for(let i2=Math.floor((fieldN.BITS-1)/windowSize)*windowSize;i2>=0;i2-=windowSize){buckets.fill(zero);for(let j2=0;j2<scalars.length;j2++){const scalar=scalars[j2],wbits3=Number(scalar>>BigInt(i2)&BigInt(MASK));buckets[wbits3]=buckets[wbits3].add(points[j2])}let resI=zero;for(let j2=buckets.length-1,sumI=zero;j2>0;j2--){sumI=sumI.add(buckets[j2]);resI=resI.add(sumI)}sum2=sum2.add(resI);if(0!==i2)for(let j2=0;j2<windowSize;j2++)sum2=sum2.double()}return sum2}(Point2,Fn,points,scalars)}_setWindowSize(windowSize){wnaf.setWindowSize(this,windowSize)}assertValidity(){assertValidMemo(this)}hasEvenY(){const{y:y2}=this.toAffine();if(Fp.isOdd)return!Fp.isOdd(y2);throw new Error("Field doesn't support isOdd")}equals(other){assertPrjPoint(other);const{px:X1,py:Y1,pz:Z1}=this,{px:X2,py:Y2,pz:Z2}=other,U1=Fp.eql(Fp.mul(X1,Z2),Fp.mul(X2,Z1)),U2=Fp.eql(Fp.mul(Y1,Z2),Fp.mul(Y2,Z1));return U1&&U2}negate(){return new Point2(this.px,Fp.neg(this.py),this.pz)}double(){const{a:a2,b:b3}=CURVE,b32=Fp.mul(b3,_3n2),{px:X1,py:Y1,pz:Z1}=this;let X3=Fp.ZERO,Y3=Fp.ZERO,Z3=Fp.ZERO,t0=Fp.mul(X1,X1),t1=Fp.mul(Y1,Y1),t22=Fp.mul(Z1,Z1),t3=Fp.mul(X1,Y1);t3=Fp.add(t3,t3);Z3=Fp.mul(X1,Z1);Z3=Fp.add(Z3,Z3);X3=Fp.mul(a2,Z3);Y3=Fp.mul(b32,t22);Y3=Fp.add(X3,Y3);X3=Fp.sub(t1,Y3);Y3=Fp.add(t1,Y3);Y3=Fp.mul(X3,Y3);X3=Fp.mul(t3,X3);Z3=Fp.mul(b32,Z3);t22=Fp.mul(a2,t22);t3=Fp.sub(t0,t22);t3=Fp.mul(a2,t3);t3=Fp.add(t3,Z3);Z3=Fp.add(t0,t0);t0=Fp.add(Z3,t0);t0=Fp.add(t0,t22);t0=Fp.mul(t0,t3);Y3=Fp.add(Y3,t0);t22=Fp.mul(Y1,Z1);t22=Fp.add(t22,t22);t0=Fp.mul(t22,t3);X3=Fp.sub(X3,t0);Z3=Fp.mul(t22,t1);Z3=Fp.add(Z3,Z3);Z3=Fp.add(Z3,Z3);return new Point2(X3,Y3,Z3)}add(other){assertPrjPoint(other);const{px:X1,py:Y1,pz:Z1}=this,{px:X2,py:Y2,pz:Z2}=other;let X3=Fp.ZERO,Y3=Fp.ZERO,Z3=Fp.ZERO;const a2=CURVE.a,b3=Fp.mul(CURVE.b,_3n2);let t0=Fp.mul(X1,X2),t1=Fp.mul(Y1,Y2),t22=Fp.mul(Z1,Z2),t3=Fp.add(X1,Y1),t4=Fp.add(X2,Y2);t3=Fp.mul(t3,t4);t4=Fp.add(t0,t1);t3=Fp.sub(t3,t4);t4=Fp.add(X1,Z1);let t5=Fp.add(X2,Z2);t4=Fp.mul(t4,t5);t5=Fp.add(t0,t22);t4=Fp.sub(t4,t5);t5=Fp.add(Y1,Z1);X3=Fp.add(Y2,Z2);t5=Fp.mul(t5,X3);X3=Fp.add(t1,t22);t5=Fp.sub(t5,X3);Z3=Fp.mul(a2,t4);X3=Fp.mul(b3,t22);Z3=Fp.add(X3,Z3);X3=Fp.sub(t1,Z3);Z3=Fp.add(t1,Z3);Y3=Fp.mul(X3,Z3);t1=Fp.add(t0,t0);t1=Fp.add(t1,t0);t22=Fp.mul(a2,t22);t4=Fp.mul(b3,t4);t1=Fp.add(t1,t22);t22=Fp.sub(t0,t22);t22=Fp.mul(a2,t22);t4=Fp.add(t4,t22);t0=Fp.mul(t1,t4);Y3=Fp.add(Y3,t0);t0=Fp.mul(t5,t4);X3=Fp.mul(t3,X3);X3=Fp.sub(X3,t0);t0=Fp.mul(t3,t1);Z3=Fp.mul(t5,Z3);Z3=Fp.add(Z3,t0);return new Point2(X3,Y3,Z3)}subtract(other){return this.add(other.negate())}is0(){return this.equals(Point2.ZERO)}wNAF(n3){return wnaf.wNAFCached(this,n3,Point2.normalizeZ)}multiplyUnsafe(sc){const{endo,n:N2}=CURVE;aInRange("scalar",sc,_0n4,N2);const I2=Point2.ZERO;if(sc===_0n4)return I2;if(this.is0()||sc===_1n4)return this;if(!endo||wnaf.hasPrecomputes(this))return wnaf.wNAFCachedUnsafe(this,sc,Point2.normalizeZ);let{k1neg,k1,k2neg,k2}=endo.splitScalar(sc),k1p=I2,k2p=I2,d4=this;for(;k1>_0n4||k2>_0n4;){k1&_1n4&&(k1p=k1p.add(d4));k2&_1n4&&(k2p=k2p.add(d4));d4=d4.double();k1>>=_1n4;k2>>=_1n4}k1neg&&(k1p=k1p.negate());k2neg&&(k2p=k2p.negate());k2p=new Point2(Fp.mul(k2p.px,endo.beta),k2p.py,k2p.pz);return k1p.add(k2p)}multiply(scalar){const{endo,n:N2}=CURVE;aInRange("scalar",scalar,_1n4,N2);let point,fake;if(endo){const{k1neg,k1,k2neg,k2}=endo.splitScalar(scalar);let{p:k1p,f:f1p}=this.wNAF(k1),{p:k2p,f:f2p}=this.wNAF(k2);k1p=wnaf.constTimeNegate(k1neg,k1p);k2p=wnaf.constTimeNegate(k2neg,k2p);k2p=new Point2(Fp.mul(k2p.px,endo.beta),k2p.py,k2p.pz);point=k1p.add(k2p);fake=f1p.add(f2p)}else{const{p:p4,f:f4}=this.wNAF(scalar);point=p4;fake=f4}return Point2.normalizeZ([point,fake])[0]}multiplyAndAddUnsafe(Q2,a2,b3){const G2=Point2.BASE,mul=(P2,a3)=>a3!==_0n4&&a3!==_1n4&&P2.equals(G2)?P2.multiply(a3):P2.multiplyUnsafe(a3),sum2=mul(this,a2).add(mul(Q2,b3));return sum2.is0()?void 0:sum2}toAffine(iz){return toAffineMemo(this,iz)}isTorsionFree(){const{h:cofactor,isTorsionFree}=CURVE;if(cofactor===_1n4)return!0;if(isTorsionFree)return isTorsionFree(Point2,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:cofactor,clearCofactor}=CURVE;return cofactor===_1n4?this:clearCofactor?clearCofactor(Point2,this):this.multiplyUnsafe(CURVE.h)}toRawBytes(isCompressed=!0){abool("isCompressed",isCompressed);this.assertValidity();return toBytes2(Point2,this,isCompressed)}toHex(isCompressed=!0){abool("isCompressed",isCompressed);return bytesToHex2(this.toRawBytes(isCompressed))}}Point2.BASE=new Point2(CURVE.Gx,CURVE.Gy,Fp.ONE);Point2.ZERO=new Point2(Fp.ZERO,Fp.ONE,Fp.ZERO);const _bits=CURVE.nBitLength,wnaf=function wNAF(c3,bits2){return{constTimeNegate,hasPrecomputes:elm=>1!==getW(elm),unsafeLadder(elm,n3,p4=c3.ZERO){let d4=elm;for(;n3>_0n3;){n3&_1n3&&(p4=p4.add(d4));d4=d4.double();n3>>=_1n3}return p4},precomputeWindow(elm,W2){const{windows,windowSize}=calcWOpts(W2,bits2),points=[];let p4=elm,base=p4;for(let window2=0;window2<windows;window2++){base=p4;points.push(base);for(let i2=1;i2<windowSize;i2++){base=base.add(p4);points.push(base)}p4=base.double()}return points},wNAF(W2,precomputes,n3){const{windows,windowSize}=calcWOpts(W2,bits2);let p4=c3.ZERO,f4=c3.BASE;const mask=BigInt(2**W2-1),maxNumber=2**W2,shiftBy=BigInt(W2);for(let window2=0;window2<windows;window2++){const offset=window2*windowSize;let wbits2=Number(n3&mask);n3>>=shiftBy;if(wbits2>windowSize){wbits2-=maxNumber;n3+=_1n3}const offset1=offset,offset2=offset+Math.abs(wbits2)-1,cond1=window2%2!=0,cond2=wbits2<0;0===wbits2?f4=f4.add(constTimeNegate(cond1,precomputes[offset1])):p4=p4.add(constTimeNegate(cond2,precomputes[offset2]))}return{p:p4,f:f4}},wNAFUnsafe(W2,precomputes,n3,acc=c3.ZERO){const{windows,windowSize}=calcWOpts(W2,bits2),mask=BigInt(2**W2-1),maxNumber=2**W2,shiftBy=BigInt(W2);for(let window2=0;window2<windows;window2++){const offset=window2*windowSize;if(n3===_0n3)break;let wbits2=Number(n3&mask);n3>>=shiftBy;if(wbits2>windowSize){wbits2-=maxNumber;n3+=_1n3}if(0===wbits2)continue;let curr=precomputes[offset+Math.abs(wbits2)-1];wbits2<0&&(curr=curr.negate());acc=acc.add(curr)}return acc},getPrecomputes(W2,P2,transform2){let comp=pointPrecomputes.get(P2);if(!comp){comp=this.precomputeWindow(P2,W2);1!==W2&&pointPrecomputes.set(P2,transform2(comp))}return comp},wNAFCached(P2,n3,transform2){const W2=getW(P2);return this.wNAF(W2,this.getPrecomputes(W2,P2,transform2),n3)},wNAFCachedUnsafe(P2,n3,transform2,prev){const W2=getW(P2);return 1===W2?this.unsafeLadder(P2,n3,prev):this.wNAFUnsafe(W2,this.getPrecomputes(W2,P2,transform2),n3,prev)},setWindowSize(P2,W2){validateW(W2,bits2);pointWindowSizes.set(P2,W2);pointPrecomputes.delete(P2)}}}(Point2,CURVE.endo?Math.ceil(_bits/2):_bits);return{CURVE,ProjectivePoint:Point2,normPrivateKeyToScalar,weierstrassEquation,isWithinCurveOrder:function isWithinCurveOrder(num2){return inRange(num2,_1n4,CURVE.n)}}}({...CURVE,toBytes(_c2,point,isCompressed){const a2=point.toAffine(),x2=Fp.toBytes(a2.x),cat=concatBytes2;abool("isCompressed",isCompressed);return isCompressed?cat(Uint8Array.from([point.hasEvenY()?2:3]),x2):cat(Uint8Array.from([4]),x2,Fp.toBytes(a2.y))},fromBytes(bytes){const len=bytes.length,head2=bytes[0],tail=bytes.subarray(1);if(len!==compressedLen||2!==head2&&3!==head2){if(len===uncompressedLen&&4===head2)return{x:Fp.fromBytes(tail.subarray(0,Fp.BYTES)),y:Fp.fromBytes(tail.subarray(Fp.BYTES,2*Fp.BYTES))};throw new Error("invalid Point, expected length of "+compressedLen+", or uncompressed "+uncompressedLen+", got "+len)}{const x2=bytesToNumberBE(tail);if(!inRange(x2,_1n4,Fp.ORDER))throw new Error("Point is not on curve");const y2=weierstrassEquation(x2);let y3;try{y3=Fp.sqrt(y2)}catch(sqrtError){const suffix=sqrtError instanceof Error?": "+sqrtError.message:"";throw new Error("Point is not on curve"+suffix)}!(1&~head2)!=((y3&_1n4)===_1n4)&&(y3=Fp.neg(y3));return{x:x2,y:y3}}}}),numToNByteStr=num2=>bytesToHex2(numberToBytesBE(num2,CURVE.nByteLength)),slcNum=(b3,from,to)=>bytesToNumberBE(b3.slice(from,to));class Signature{constructor(r4,s2,recovery){this.r=r4;this.s=s2;this.recovery=recovery;this.assertValidity()}static fromCompact(hex){const l2=CURVE.nByteLength;hex=ensureBytes("compactSignature",hex,2*l2);return new Signature(slcNum(hex,0,l2),slcNum(hex,l2,2*l2))}static fromDER(hex){const{r:r4,s:s2}=DER.toSig(ensureBytes("DER",hex));return new Signature(r4,s2)}assertValidity(){aInRange("r",this.r,_1n4,CURVE_ORDER);aInRange("s",this.s,_1n4,CURVE_ORDER)}addRecoveryBit(recovery){return new Signature(this.r,this.s,recovery)}recoverPublicKey(msgHash){const{r:r4,s:s2,recovery:rec}=this,h3=bits2int_modN(ensureBytes("msgHash",msgHash));if(null==rec||![0,1,2,3].includes(rec))throw new Error("recovery id invalid");const radj=2===rec||3===rec?r4+CURVE.n:r4;if(radj>=Fp.ORDER)throw new Error("recovery id 2 or 3 invalid");const prefix=1&rec?"03":"02",R2=Point2.fromHex(prefix+numToNByteStr(radj)),ir=invN(radj),u1=modN2(-h3*ir),u2=modN2(s2*ir),Q2=Point2.BASE.multiplyAndAddUnsafe(R2,u1,u2);if(!Q2)throw new Error("point at infinify");Q2.assertValidity();return Q2}hasHighS(){return isBiggerThanHalfOrder(this.s)}normalizeS(){return this.hasHighS()?new Signature(this.r,modN2(-this.s),this.recovery):this}toDERRawBytes(){return hexToBytes2(this.toDERHex())}toDERHex(){return DER.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return hexToBytes2(this.toCompactHex())}toCompactHex(){return numToNByteStr(this.r)+numToNByteStr(this.s)}}const utils={isValidPrivateKey(privateKey2){try{normPrivateKeyToScalar(privateKey2);return!0}catch(error){return!1}},normPrivateKeyToScalar,randomPrivateKey:()=>{const length=getMinHashLength(CURVE.n);return function mapHashToField(key2,fieldOrder,isLE2=!1){const len=key2.length,fieldLen=getFieldBytesLength(fieldOrder),minLen=getMinHashLength(fieldOrder);if(len<16||len<minLen||len>1024)throw new Error("expected "+minLen+"-1024 bytes of input, got "+len);const reduced=mod(isLE2?bytesToNumberLE(key2):bytesToNumberBE(key2),fieldOrder-_1n2)+_1n2;return isLE2?numberToBytesLE(reduced,fieldLen):numberToBytesBE(reduced,fieldLen)}(CURVE.randomBytes(length),CURVE.n)},precompute(windowSize=8,point=Point2.BASE){point._setWindowSize(windowSize);point.multiply(BigInt(3));return point}},bits2int=CURVE.bits2int||function(bytes){if(bytes.length>8192)throw new Error("input is too large");const num2=bytesToNumberBE(bytes),delta=8*bytes.length-CURVE.nBitLength;return delta>0?num2>>BigInt(delta):num2},bits2int_modN=CURVE.bits2int_modN||function(bytes){return modN2(bits2int(bytes))},ORDER_MASK=bitMask(CURVE.nBitLength),defaultSigOpts={lowS:CURVE.lowS,prehash:!1},defaultVerOpts={lowS:CURVE.lowS,prehash:!1};Point2.BASE._setWindowSize(8);return{CURVE,getPublicKey:function getPublicKey(privateKey2,isCompressed=!0){return Point2.fromPrivateKey(privateKey2).toRawBytes(isCompressed)},getSharedSecret:function getSharedSecret(privateA,publicB,isCompressed=!0){if(isProbPub(privateA))throw new Error("first arg must be private key");if(!isProbPub(publicB))throw new Error("second arg must be public key");return Point2.fromHex(publicB).multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed)},sign:function sign(msgHash,privKey,opts=defaultSigOpts){const{seed,k2sig}=function prepSig(msgHash,privateKey2,opts=defaultSigOpts){if(["recovered","canonical"].some((k2=>k2 in opts)))throw new Error("sign() legacy options not supported");const{hash:hash3,randomBytes:randomBytes3}=CURVE;let{lowS,prehash,extraEntropy:ent}=opts;null==lowS&&(lowS=!0);msgHash=ensureBytes("msgHash",msgHash);validateSigVerOpts(opts);prehash&&(msgHash=ensureBytes("prehashed msgHash",hash3(msgHash)));const h1int=bits2int_modN(msgHash),d4=normPrivateKeyToScalar(privateKey2),seedArgs=[int2octets(d4),int2octets(h1int)];if(null!=ent&&!1!==ent){const e3=!0===ent?randomBytes3(Fp.BYTES):ent;seedArgs.push(ensureBytes("extraEntropy",e3))}const seed=concatBytes2(...seedArgs),m3=h1int;return{seed,k2sig:function k2sig(kBytes){const k2=bits2int(kBytes);if(!isWithinCurveOrder(k2))return;const ik=invN(k2),q2=Point2.BASE.multiply(k2).toAffine(),r4=modN2(q2.x);if(r4===_0n4)return;const s2=modN2(ik*modN2(m3+r4*d4));if(s2===_0n4)return;let recovery=(q2.x===r4?0:2)|Number(q2.y&_1n4),normS=s2;if(lowS&&isBiggerThanHalfOrder(s2)){normS=function normalizeS(s2){return isBiggerThanHalfOrder(s2)?modN2(-s2):s2}(s2);recovery^=1}return new Signature(r4,normS,recovery)}}}(msgHash,privKey,opts),C2=CURVE;return createHmacDrbg(C2.hash.outputLen,C2.nByteLength,C2.hmac)(seed,k2sig)},verify:function verify(signature,msgHash,publicKey2,opts=defaultVerOpts){var _a7;const sg=signature;msgHash=ensureBytes("msgHash",msgHash);publicKey2=ensureBytes("publicKey",publicKey2);const{lowS,prehash,format}=opts;validateSigVerOpts(opts);if("strict"in opts)throw new Error("options.strict was renamed to lowS");if(void 0!==format&&"compact"!==format&&"der"!==format)throw new Error("format must be compact or der");const isHex="string"==typeof sg||isBytes3(sg),isObj=!isHex&&!format&&"object"==typeof sg&&null!==sg&&"bigint"==typeof sg.r&&"bigint"==typeof sg.s;if(!isHex&&!isObj)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let _sig,P2;try{isObj&&(_sig=new Signature(sg.r,sg.s));if(isHex){try{"compact"!==format&&(_sig=Signature.fromDER(sg))}catch(derError){if(!(derError instanceof DER.Err))throw derError}_sig||"der"===format||(_sig=Signature.fromCompact(sg))}P2=Point2.fromHex(publicKey2)}catch(error){return!1}if(!_sig)return!1;if(lowS&&_sig.hasHighS())return!1;prehash&&(msgHash=CURVE.hash(msgHash));const{r:r4,s:s2}=_sig,h3=bits2int_modN(msgHash),is2=invN(s2),u1=modN2(h3*is2),u2=modN2(r4*is2),R2=null==(_a7=Point2.BASE.multiplyAndAddUnsafe(P2,u1,u2))?void 0:_a7.toAffine();return!!R2&&modN2(R2.x)===r4},ProjectivePoint:Point2,Signature,utils}}({...curveDef,...getHash(hash3)});return{...create(defHash),create}}({a:BigInt(0),b:BigInt(7),Fp:Fpk1,n:secp256k1N,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:k2=>{const n3=secp256k1N,a1=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),b1=-_1n5*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),a2=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),b22=a1,POW_2_128=BigInt("0x100000000000000000000000000000000"),c12=divNearest(b22*k2,n3),c22=divNearest(-b1*k2,n3);let k1=mod(k2-c12*a1-c22*a2,n3),k22=mod(-c12*b1-c22*b22,n3);const k1neg=k1>POW_2_128,k2neg=k22>POW_2_128;k1neg&&(k1=n3-k1);k2neg&&(k22=n3-k22);if(k1>POW_2_128||k22>POW_2_128)throw new Error("splitScalar: Endomorphism failed, k="+k2);return{k1neg,k1,k2neg,k2:k22}}}},sha256);_0n5=BigInt(0);TAGGED_HASH_PREFIXES={};pointToBytes=point=>point.toRawBytes(!0).slice(1);numTo32b=n3=>numberToBytesBE(n3,32);modP=x2=>mod(x2,secp256k1P);modN=x2=>mod(x2,secp256k1N);Point=secp256k1.ProjectivePoint;GmulAdd=(Q2,a2,b3)=>Point.BASE.multiplyAndAddUnsafe(Q2,a2,b3);num=bytesToNumberBE;schnorr=(()=>({getPublicKey:schnorrGetPublicKey,sign:schnorrSign,verify:schnorrVerify,utils:{randomPrivateKey:secp256k1.utils.randomPrivateKey,lift_x,pointToBytes,numberToBytesBE,bytesToNumberBE,taggedHash,mod}}))();var{floor,random,sin}=Math;alloc=(n3,f4)=>Array(n3).fill().map(f4);selfId=(genId=n3=>alloc(n3,(()=>"0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"[floor(62*random())])).join(""))(20);all=Promise.all.bind(Promise);isBrowser="undefined"!=typeof window;var defaultEndpointResolver2,createHttpAuthOptionFunctions,{entries,fromEntries,keys}=Object;noOp=()=>{};mkErr=msg=>new Error(`Trystero: ${msg}`);encoder=new TextEncoder;decoder=new TextDecoder;encodeBytes=txt=>encoder.encode(txt);decodeBytes=buffer=>decoder.decode(buffer);toHex=buffer=>buffer.reduce(((a2,c3)=>a2+c3.toString(16).padStart(2,"0")),"");topicPath=(...parts)=>parts.join("@");shuffle=(xs,seed)=>{const a2=[...xs],rand=()=>{const x2=1e4*sin(seed++);return x2-floor(x2)};let i2=a2.length;for(;i2;){const j2=floor(rand()*i2--);[a2[i2],a2[j2]]=[a2[j2],a2[i2]]}return a2};getRelays=(config,defaults2,defaultN,deriveFromAppId)=>(config.relayUrls||(deriveFromAppId?shuffle(defaults2,strToNum(config.appId)):defaults2)).slice(0,config.relayUrls?config.relayUrls.length:config.relayRedundancy||defaultN);toJson=JSON.stringify;fromJson=JSON.parse;strToNum=(str,limit=Number.MAX_SAFE_INTEGER)=>str.split("").reduce(((a2,c3)=>a2+c3.charCodeAt(0)),0)%limit;socketRetryPeriods={};makeSocket=(url,onMessage)=>{const client={},init3=()=>{const socket=new WebSocket(url);socket.onclose=()=>{null!=socketRetryPeriods[url]||(socketRetryPeriods[url]=3333);setTimeout(init3,socketRetryPeriods[url]);socketRetryPeriods[url]*=2};socket.onmessage=e3=>onMessage(e3.data);client.socket=socket;client.url=socket.url;client.ready=new Promise((res2=>socket.onopen=()=>{res2(client);socketRetryPeriods[url]=3333}));client.send=data=>{1===socket.readyState&&socket.send(data)}};init3();return client};socketGetter=clientMap=>()=>fromEntries(entries(clientMap).map((([url,client])=>[url,client.socket])));strToSha1={};pack=buff=>btoa(String.fromCharCode.apply(null,new Uint8Array(buff)));unpack=packed=>{const str=atob(packed);return new Uint8Array(str.length).map(((_,i2)=>str.charCodeAt(i2))).buffer};sha12=async str=>{if(strToSha1[str])return strToSha1[str];const hash3=Array.from(new Uint8Array(await crypto.subtle.digest("SHA-1",encodeBytes(str)))).map((b3=>b3.toString(36))).join("");strToSha1[str]=hash3;return hash3};genKey=async(secret,appId,roomId)=>crypto.subtle.importKey("raw",await crypto.subtle.digest({name:"SHA-256"},encodeBytes(`${secret}:${appId}:${roomId}`)),{name:"AES-GCM"},!1,["encrypt","decrypt"]);encrypt3=async(keyP,plaintext)=>{const iv=crypto.getRandomValues(new Uint8Array(16));return iv.join(",")+"$"+pack(await crypto.subtle.encrypt({name:"AES-GCM",iv},await keyP,encodeBytes(plaintext)))};decrypt3=async(keyP,raw)=>{const[iv,c3]=raw.split("$");return decodeBytes(await crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(iv.split(","))},await keyP,unpack(c3)))};__export(browser_exports2={},{MediaStream:()=>MediaStream,MediaStreamTrack:()=>MediaStreamTrack,MediaStreamTrackEvent:()=>MediaStreamTrackEvent,RTCCertificate:()=>RTCCertificate,RTCDataChannel:()=>RTCDataChannel,RTCDataChannelEvent:()=>RTCDataChannelEvent,RTCDtlsTransport:()=>RTCDtlsTransport,RTCError:()=>RTCError,RTCErrorEvent:()=>RTCErrorEvent,RTCIceCandidate:()=>RTCIceCandidate,RTCIceTransport:()=>RTCIceTransport,RTCPeerConnection:()=>RTCPeerConnection,RTCPeerConnectionIceEvent:()=>RTCPeerConnectionIceEvent,RTCRtpReceiver:()=>RTCRtpReceiver,RTCRtpSender:()=>RTCRtpSender,RTCRtpTransceiver:()=>RTCRtpTransceiver,RTCSctpTransport:()=>RTCSctpTransport,RTCSessionDescription:()=>RTCSessionDescription,RTCTrackEvent:()=>RTCTrackEvent,default:()=>browser_exports2});scope="undefined"!=typeof window?window:self;RTCPeerConnection=scope.RTCPeerConnection||scope.mozRTCPeerConnection||scope.webkitRTCPeerConnection;RTCSessionDescription=scope.RTCSessionDescription||scope.mozRTCSessionDescription||scope.webkitRTCSessionDescription;RTCIceCandidate=scope.RTCIceCandidate||scope.mozRTCIceCandidate||scope.webkitRTCIceCandidate;RTCIceTransport=scope.RTCIceTransport;RTCDataChannel=scope.RTCDataChannel;RTCSctpTransport=scope.RTCSctpTransport;RTCDtlsTransport=scope.RTCDtlsTransport;RTCCertificate=scope.RTCCertificate;MediaStream=scope.MediaStream;MediaStreamTrack=scope.MediaStreamTrack;MediaStreamTrackEvent=scope.MediaStreamTrackEvent;RTCPeerConnectionIceEvent=scope.RTCPeerConnectionIceEvent;RTCDataChannelEvent=scope.RTCDataChannelEvent;RTCTrackEvent=scope.RTCTrackEvent;RTCError=scope.RTCError;RTCErrorEvent=scope.RTCErrorEvent;RTCRtpTransceiver=scope.RTCRtpTransceiver;RTCRtpReceiver=scope.RTCRtpReceiver;RTCRtpSender=scope.RTCRtpSender;encodeLookup=[];decodeLookup=[];for(let i2=0;i2<256;i2++){encodeLookup[i2]="0123456789abcdef"[i2>>4&15]+"0123456789abcdef"[15&i2];i2<16&&(i2<10?decodeLookup[48+i2]=i2:decodeLookup[87+i2]=i2)}arr2hex=data=>{const length=data.length;let string="",i2=0;for(;i2<length;)string+=encodeLookup[data[i2++]];return string};chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";lookup="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(i2=0;i2<64;i2++)lookup[chars.charCodeAt(i2)]=i2;0;new TextDecoder;encoder2=new TextEncoder;text2arr=str=>encoder2.encode(str);scope2="undefined"!=typeof window?window:self;(crypto3=scope2.crypto||scope2.msCrypto||{}).subtle||crypto3.webkitSubtle;randomBytes2=size=>{const view=new Uint8Array(size);return crypto3.getRandomValues(view)};import_debug=__toESM(require_browser(),1);import_streamx=__toESM(require_streamx(),1);import_err_code=__toESM(require_err_code(),1);Debug=(0,import_debug.default)("simple-peer");(Peer=class _Peer extends import_streamx.Duplex{constructor(opts){super(opts=Object.assign({allowHalfOpen:!1},opts));__publicField(this,"_pc");this.__objectMode=!!opts.objectMode;this._id=arr2hex(randomBytes2(4)).slice(0,7);this._debug("new peer %o",opts);this.channelName=opts.initiator?opts.channelName||arr2hex(randomBytes2(20)):null;this.initiator=opts.initiator||!1;this.channelConfig=opts.channelConfig||_Peer.channelConfig;this.channelNegotiated=this.channelConfig.negotiated;this.config=Object.assign({},_Peer.config,opts.config);this.offerOptions=opts.offerOptions||{};this.answerOptions=opts.answerOptions||{};this.sdpTransform=opts.sdpTransform||(sdp=>sdp);this.trickle=void 0===opts.trickle||opts.trickle;this.allowHalfTrickle=void 0!==opts.allowHalfTrickle&&opts.allowHalfTrickle;this.iceCompleteTimeout=opts.iceCompleteTimeout||5e3;this._destroying=!1;this._connected=!1;this.remoteAddress=void 0;this.remoteFamily=void 0;this.remotePort=void 0;this.localAddress=void 0;this.localFamily=void 0;this.localPort=void 0;if(!RTCPeerConnection)throw"undefined"==typeof window?(0,import_err_code.default)(new Error("No WebRTC support: Specify `opts.wrtc` option in this environment"),"ERR_WEBRTC_SUPPORT"):(0,import_err_code.default)(new Error("No WebRTC support: Not a supported browser"),"ERR_WEBRTC_SUPPORT");this._pcReady=!1;this._channelReady=!1;this._iceComplete=!1;this._iceCompleteTimer=null;this._channel=null;this._pendingCandidates=[];this._isNegotiating=!1;this._firstNegotiation=!0;this._batchedNegotiation=!1;this._queuedNegotiation=!1;this._sendersAwaitingStable=[];this._closingInterval=null;this._remoteTracks=[];this._remoteStreams=[];this._chunk=null;this._cb=null;this._interval=null;try{this._pc=new RTCPeerConnection(this.config)}catch(err2){this.__destroy((0,import_err_code.default)(err2,"ERR_PC_CONSTRUCTOR"));return}this._isReactNativeWebrtc="number"==typeof this._pc._peerConnectionId;this._pc.oniceconnectionstatechange=()=>{this._onIceStateChange()};this._pc.onicegatheringstatechange=()=>{this._onIceStateChange()};this._pc.onconnectionstatechange=()=>{this._onConnectionStateChange()};this._pc.onsignalingstatechange=()=>{this._onSignalingStateChange()};this._pc.onicecandidate=event2=>{this._onIceCandidate(event2)};"object"==typeof this._pc.peerIdentity&&this._pc.peerIdentity.catch((err2=>{this.__destroy((0,import_err_code.default)(err2,"ERR_PC_PEER_IDENTITY"))}));this.initiator||this.channelNegotiated?this._setupData({channel:this._pc.createDataChannel(this.channelName,this.channelConfig)}):this._pc.ondatachannel=event2=>{this._setupData(event2)};this._debug("initial negotiation");this._needsNegotiation();this._onFinishBound=()=>{this._onFinish()};this.once("finish",this._onFinishBound)}get bufferSize(){return this._channel&&this._channel.bufferedAmount||0}get connected(){return this._connected&&"open"===this._channel.readyState}address(){return{port:this.localPort,family:this.localFamily,address:this.localAddress}}signal(data){if(!this._destroying){if(this.destroyed)throw(0,import_err_code.default)(new Error("cannot signal after peer is destroyed"),"ERR_DESTROYED");if("string"==typeof data)try{data=JSON.parse(data)}catch(err2){data={}}this._debug("signal()");if(data.renegotiate&&this.initiator){this._debug("got request to renegotiate");this._needsNegotiation()}if(data.transceiverRequest&&this.initiator){this._debug("got request for transceiver");this.addTransceiver(data.transceiverRequest.kind,data.transceiverRequest.init)}data.candidate&&(this._pc.remoteDescription&&this._pc.remoteDescription.type?this._addIceCandidate(data.candidate):this._pendingCandidates.push(data.candidate));data.sdp&&this._pc.setRemoteDescription(new RTCSessionDescription(data)).then((()=>{if(!this.destroyed){this._pendingCandidates.forEach((candidate=>{this._addIceCandidate(candidate)}));this._pendingCandidates=[];"offer"===this._pc.remoteDescription.type&&this._createAnswer()}})).catch((err2=>{this.__destroy((0,import_err_code.default)(err2,"ERR_SET_REMOTE_DESCRIPTION"))}));data.sdp||data.candidate||data.renegotiate||data.transceiverRequest||this.__destroy((0,import_err_code.default)(new Error("signal() called with invalid signal data"),"ERR_SIGNALING"))}}_addIceCandidate(candidate){const iceCandidateObj=new RTCIceCandidate(candidate);this._pc.addIceCandidate(iceCandidateObj).catch((err2=>{!iceCandidateObj.address||iceCandidateObj.address.endsWith(".local")?function warn(message){console.warn(message)}("Ignoring unsupported ICE candidate."):this.__destroy((0,import_err_code.default)(err2,"ERR_ADD_ICE_CANDIDATE"))}))}send(chunk){if(!this._destroying){if(this.destroyed)throw(0,import_err_code.default)(new Error("cannot send after peer is destroyed"),"ERR_DESTROYED");this._channel.send(chunk)}}_needsNegotiation(){this._debug("_needsNegotiation");if(!this._batchedNegotiation){this._batchedNegotiation=!0;queueMicrotask((()=>{this._batchedNegotiation=!1;if(this.initiator||!this._firstNegotiation){this._debug("starting batched negotiation");this.negotiate()}else this._debug("non-initiator initial negotiation request discarded");this._firstNegotiation=!1}))}}negotiate(){if(!this._destroying){if(this.destroyed)throw(0,import_err_code.default)(new Error("cannot negotiate after peer is destroyed"),"ERR_DESTROYED");if(this.initiator)if(this._isNegotiating){this._queuedNegotiation=!0;this._debug("already negotiating, queueing")}else{this._debug("start negotiation");setTimeout((()=>{this._createOffer()}),0)}else if(this._isNegotiating){this._queuedNegotiation=!0;this._debug("already negotiating, queueing")}else{this._debug("requesting negotiation from initiator");this.emit("signal",{type:"renegotiate",renegotiate:!0})}this._isNegotiating=!0}}_final(cb2){this._readableState.ended||this.push(null);cb2(null)}__destroy(err2){this.end();this._destroy((()=>{}),err2)}_destroy(cb2,err2){if(!this.destroyed&&!this._destroying){this._destroying=!0;this._debug("destroying (error: %s)",err2&&(err2.message||err2));setTimeout((()=>{this._connected=!1;this._pcReady=!1;this._channelReady=!1;this._remoteTracks=null;this._remoteStreams=null;this._senderMap=null;clearInterval(this._closingInterval);this._closingInterval=null;clearInterval(this._interval);this._interval=null;this._chunk=null;this._cb=null;this._onFinishBound&&this.removeListener("finish",this._onFinishBound);this._onFinishBound=null;if(this._channel){try{this._channel.close()}catch(err3){}this._channel.onmessage=null;this._channel.onopen=null;this._channel.onclose=null;this._channel.onerror=null}if(this._pc){try{this._pc.close()}catch(err3){}this._pc.oniceconnectionstatechange=null;this._pc.onicegatheringstatechange=null;this._pc.onsignalingstatechange=null;this._pc.onicecandidate=null;this._pc.ontrack=null;this._pc.ondatachannel=null}this._pc=null;this._channel=null;err2&&this.emit("error",err2);cb2()}),0)}}_setupData(event2){if(!event2.channel)return this.__destroy((0,import_err_code.default)(new Error("Data channel event is missing `channel` property"),"ERR_DATA_CHANNEL"));this._channel=event2.channel;this._channel.binaryType="arraybuffer";"number"==typeof this._channel.bufferedAmountLowThreshold&&(this._channel.bufferedAmountLowThreshold=65536);this.channelName=this._channel.label;this._channel.onmessage=event3=>{this._onChannelMessage(event3)};this._channel.onbufferedamountlow=()=>{this._onChannelBufferedAmountLow()};this._channel.onopen=()=>{this._onChannelOpen()};this._channel.onclose=()=>{this._onChannelClose()};this._channel.onerror=event3=>{const err2=event3.error instanceof Error?event3.error:new Error(`Datachannel error: ${event3.message} ${event3.filename}:${event3.lineno}:${event3.colno}`);this.__destroy((0,import_err_code.default)(err2,"ERR_DATA_CHANNEL"))};let isClosing=!1;this._closingInterval=setInterval((()=>{if(this._channel&&"closing"===this._channel.readyState){isClosing&&this._onChannelClose();isClosing=!0}else isClosing=!1}),5e3)}_write(chunk,cb2){if(this.destroyed)return cb2((0,import_err_code.default)(new Error("cannot write after peer is destroyed"),"ERR_DATA_CHANNEL"));if(this._connected){try{this.send(chunk)}catch(err2){return this.__destroy((0,import_err_code.default)(err2,"ERR_DATA_CHANNEL"))}if(this._channel.bufferedAmount>65536){this._debug("start backpressure: bufferedAmount %d",this._channel.bufferedAmount);this._cb=cb2}else cb2(null)}else{this._debug("write before connect");this._chunk=chunk;this._cb=cb2}}_onFinish(){if(this.destroyed)return;const destroySoon=()=>{setTimeout((()=>this.__destroy()),1e3)};this._connected?destroySoon():this.once("connect",destroySoon)}_startIceCompleteTimeout(){if(!this.destroyed&&!this._iceCompleteTimer){this._debug("started iceComplete timeout");this._iceCompleteTimer=setTimeout((()=>{if(!this._iceComplete){this._iceComplete=!0;this._debug("iceComplete timeout completed");this.emit("iceTimeout");this.emit("_iceComplete")}}),this.iceCompleteTimeout)}}_createOffer(){this.destroyed||this._pc.createOffer(this.offerOptions).then((offer=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(offer.sdp=filterTrickle(offer.sdp));offer.sdp=this.sdpTransform(offer.sdp);const sendOffer=()=>{if(this.destroyed)return;const signal=this._pc.localDescription||offer;this._debug("signal");this.emit("signal",{type:signal.type,sdp:signal.sdp})};this._pc.setLocalDescription(offer).then((()=>{this._debug("createOffer success");this.destroyed||(this.trickle||this._iceComplete?sendOffer():this.once("_iceComplete",sendOffer))})).catch((err2=>{this.__destroy((0,import_err_code.default)(err2,"ERR_SET_LOCAL_DESCRIPTION"))}))})).catch((err2=>{this.__destroy((0,import_err_code.default)(err2,"ERR_CREATE_OFFER"))}))}_createAnswer(){this.destroyed||this._pc.createAnswer(this.answerOptions).then((answer=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(answer.sdp=filterTrickle(answer.sdp));answer.sdp=this.sdpTransform(answer.sdp);const sendAnswer=()=>{var _a7;if(this.destroyed)return;const signal=this._pc.localDescription||answer;this._debug("signal");this.emit("signal",{type:signal.type,sdp:signal.sdp});this.initiator||null==(_a7=this._requestMissingTransceivers)||_a7.call(this)};this._pc.setLocalDescription(answer).then((()=>{this.destroyed||(this.trickle||this._iceComplete?sendAnswer():this.once("_iceComplete",sendAnswer))})).catch((err2=>{this.__destroy((0,import_err_code.default)(err2,"ERR_SET_LOCAL_DESCRIPTION"))}))})).catch((err2=>{this.__destroy((0,import_err_code.default)(err2,"ERR_CREATE_ANSWER"))}))}_onConnectionStateChange(){this.destroyed||this._destroying||"failed"===this._pc.connectionState&&this.__destroy((0,import_err_code.default)(new Error("Connection failed."),"ERR_CONNECTION_FAILURE"))}_onIceStateChange(){if(this.destroyed)return;const iceConnectionState=this._pc.iceConnectionState,iceGatheringState=this._pc.iceGatheringState;this._debug("iceStateChange (connection: %s) (gathering: %s)",iceConnectionState,iceGatheringState);this.emit("iceStateChange",iceConnectionState,iceGatheringState);if("connected"===iceConnectionState||"completed"===iceConnectionState){this._pcReady=!0;this._maybeReady()}"failed"===iceConnectionState&&this.__destroy((0,import_err_code.default)(new Error("Ice connection failed."),"ERR_ICE_CONNECTION_FAILURE"));"closed"===iceConnectionState&&this.__destroy((0,import_err_code.default)(new Error("Ice connection closed."),"ERR_ICE_CONNECTION_CLOSED"))}getStats(cb2){const flattenValues=report=>{"[object Array]"===Object.prototype.toString.call(report.values)&&report.values.forEach((value=>{Object.assign(report,value)}));return report};0===this._pc.getStats.length||this._isReactNativeWebrtc?this._pc.getStats().then((res2=>{const reports=[];res2.forEach((report=>{reports.push(flattenValues(report))}));cb2(null,reports)}),(err2=>cb2(err2))):this._pc.getStats.length>0?this._pc.getStats((res2=>{if(this.destroyed)return;const reports=[];res2.result().forEach((result=>{const report={};result.names().forEach((name=>{report[name]=result.stat(name)}));report.id=result.id;report.type=result.type;report.timestamp=result.timestamp;reports.push(flattenValues(report))}));cb2(null,reports)}),(err2=>cb2(err2))):cb2(null,[])}_maybeReady(){this._debug("maybeReady pc %s channel %s",this._pcReady,this._channelReady);if(this._connected||this._connecting||!this._pcReady||!this._channelReady)return;this._connecting=!0;const findCandidatePair=()=>{this.destroyed||this._destroying||this.getStats(((err2,items)=>{if(this.destroyed||this._destroying)return;err2&&(items=[]);const remoteCandidates={},localCandidates={},candidatePairs={};let foundSelectedCandidatePair=!1;items.forEach((item=>{"remotecandidate"!==item.type&&"remote-candidate"!==item.type||(remoteCandidates[item.id]=item);"localcandidate"!==item.type&&"local-candidate"!==item.type||(localCandidates[item.id]=item);"candidatepair"!==item.type&&"candidate-pair"!==item.type||(candidatePairs[item.id]=item)}));const setSelectedCandidatePair=selectedCandidatePair=>{foundSelectedCandidatePair=!0;let local=localCandidates[selectedCandidatePair.localCandidateId];if(local&&(local.ip||local.address)){this.localAddress=local.ip||local.address;this.localPort=Number(local.port)}else if(local&&local.ipAddress){this.localAddress=local.ipAddress;this.localPort=Number(local.portNumber)}else if("string"==typeof selectedCandidatePair.googLocalAddress){local=selectedCandidatePair.googLocalAddress.split(":");this.localAddress=local[0];this.localPort=Number(local[1])}this.localAddress&&(this.localFamily=this.localAddress.includes(":")?"IPv6":"IPv4");let remote=remoteCandidates[selectedCandidatePair.remoteCandidateId];if(remote&&(remote.ip||remote.address)){this.remoteAddress=remote.ip||remote.address;this.remotePort=Number(remote.port)}else if(remote&&remote.ipAddress){this.remoteAddress=remote.ipAddress;this.remotePort=Number(remote.portNumber)}else if("string"==typeof selectedCandidatePair.googRemoteAddress){remote=selectedCandidatePair.googRemoteAddress.split(":");this.remoteAddress=remote[0];this.remotePort=Number(remote[1])}this.remoteAddress&&(this.remoteFamily=this.remoteAddress.includes(":")?"IPv6":"IPv4");this._debug("connect local: %s:%s remote: %s:%s",this.localAddress,this.localPort,this.remoteAddress,this.remotePort)};items.forEach((item=>{"transport"===item.type&&item.selectedCandidatePairId&&setSelectedCandidatePair(candidatePairs[item.selectedCandidatePairId]);("googCandidatePair"===item.type&&"true"===item.googActiveConnection||("candidatepair"===item.type||"candidate-pair"===item.type)&&item.selected)&&setSelectedCandidatePair(item)}));if(foundSelectedCandidatePair||Object.keys(candidatePairs).length&&!Object.keys(localCandidates).length){this._connecting=!1;this._connected=!0;if(this._chunk){try{this.send(this._chunk)}catch(err3){return this.__destroy((0,import_err_code.default)(err3,"ERR_DATA_CHANNEL"))}this._chunk=null;this._debug('sent chunk from "write before connect"');const cb2=this._cb;this._cb=null;cb2(null)}if("number"!=typeof this._channel.bufferedAmountLowThreshold){this._interval=setInterval((()=>this._onInterval()),150);this._interval.unref&&this._interval.unref()}this._debug("connect");this.emit("connect")}else setTimeout(findCandidatePair,100)}))};findCandidatePair()}_onInterval(){!this._cb||!this._channel||this._channel.bufferedAmount>65536||this._onChannelBufferedAmountLow()}_onSignalingStateChange(){if(!this.destroyed){if("stable"===this._pc.signalingState){this._isNegotiating=!1;this._debug("flushing sender queue",this._sendersAwaitingStable);this._sendersAwaitingStable.forEach((sender=>{this._pc.removeTrack(sender);this._queuedNegotiation=!0}));this._sendersAwaitingStable=[];if(this._queuedNegotiation){this._debug("flushing negotiation queue");this._queuedNegotiation=!1;this._needsNegotiation()}else{this._debug("negotiated");this.emit("negotiated")}}this._debug("signalingStateChange %s",this._pc.signalingState);this.emit("signalingStateChange",this._pc.signalingState)}}_onIceCandidate(event2){if(!this.destroyed){if(event2.candidate&&this.trickle)this.emit("signal",{type:"candidate",candidate:{candidate:event2.candidate.candidate,sdpMLineIndex:event2.candidate.sdpMLineIndex,sdpMid:event2.candidate.sdpMid}});else if(!event2.candidate&&!this._iceComplete){this._iceComplete=!0;this.emit("_iceComplete")}event2.candidate&&this._startIceCompleteTimeout()}}_onChannelMessage(event2){if(this.destroyed)return;let data=event2.data;data instanceof ArrayBuffer?data=new Uint8Array(data):!1===this.__objectMode&&(data=text2arr(data));this.push(data)}_onChannelBufferedAmountLow(){if(this.destroyed||!this._cb)return;this._debug("ending backpressure: bufferedAmount %d",this._channel.bufferedAmount);const cb2=this._cb;this._cb=null;cb2(null)}_onChannelOpen(){if(!this._connected&&!this.destroyed){this._debug("on channel open");this._channelReady=!0;this._maybeReady()}}_onChannelClose(){if(!this.destroyed){this._debug("on channel close");this.__destroy()}}_debug(){const args=[].slice.call(arguments);args[0]="["+this._id+"] "+args[0];Debug.apply(null,args)}}).WEBRTC_SUPPORT=!!RTCPeerConnection;Peer.config={iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}],sdpSemantics:"unified-plan"};Peer.channelConfig={};lite_default=Peer;import_err_code2=__toESM(require_err_code(),1);simple_peer_default=class extends lite_default{constructor(opts={}){super(opts);if(this._pc){this.streams=opts.streams||(opts.stream?[opts.stream]:[]);this._senderMap=new Map;this.streams&&this.streams.forEach((stream=>{this.addStream(stream)}));this._pc.ontrack=event2=>{this._onTrack(event2)}}}addTransceiver(kind,init3){if(!this._destroying){if(this.destroyed)throw(0,import_err_code2.default)(new Error("cannot addTransceiver after peer is destroyed"),"ERR_DESTROYED");this._debug("addTransceiver()");if(this.initiator)try{this._pc.addTransceiver(kind,init3);this._needsNegotiation()}catch(err2){this.__destroy((0,import_err_code2.default)(err2,"ERR_ADD_TRANSCEIVER"))}else this.emit("signal",{type:"transceiverRequest",transceiverRequest:{kind,init:init3}})}}addStream(stream){if(!this._destroying){if(this.destroyed)throw(0,import_err_code2.default)(new Error("cannot addStream after peer is destroyed"),"ERR_DESTROYED");this._debug("addStream()");stream.getTracks().forEach((track=>{this.addTrack(track,stream)}))}}addTrack(track,stream){if(this._destroying)return;if(this.destroyed)throw(0,import_err_code2.default)(new Error("cannot addTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("addTrack()");const submap=this._senderMap.get(track)||new Map;let sender=submap.get(stream);if(sender)throw sender.removed?(0,import_err_code2.default)(new Error("Track has been removed. You should enable/disable tracks that you want to re-add."),"ERR_SENDER_REMOVED"):(0,import_err_code2.default)(new Error("Track has already been added to that stream."),"ERR_SENDER_ALREADY_ADDED");sender=this._pc.addTrack(track,stream);submap.set(stream,sender);this._senderMap.set(track,submap);this._needsNegotiation()}replaceTrack(oldTrack,newTrack,stream){if(this._destroying)return;if(this.destroyed)throw(0,import_err_code2.default)(new Error("cannot replaceTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("replaceTrack()");const submap=this._senderMap.get(oldTrack),sender=submap?submap.get(stream):null;if(!sender)throw(0,import_err_code2.default)(new Error("Cannot replace track that was never added."),"ERR_TRACK_NOT_ADDED");newTrack&&this._senderMap.set(newTrack,submap);null!=sender.replaceTrack?sender.replaceTrack(newTrack):this.__destroy((0,import_err_code2.default)(new Error("replaceTrack is not supported in this browser"),"ERR_UNSUPPORTED_REPLACETRACK"))}removeTrack(track,stream){if(this._destroying)return;if(this.destroyed)throw(0,import_err_code2.default)(new Error("cannot removeTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSender()");const submap=this._senderMap.get(track),sender=submap?submap.get(stream):null;if(!sender)throw(0,import_err_code2.default)(new Error("Cannot remove track that was never added."),"ERR_TRACK_NOT_ADDED");try{sender.removed=!0;this._pc.removeTrack(sender)}catch(err2){"NS_ERROR_UNEXPECTED"===err2.name?this._sendersAwaitingStable.push(sender):this.__destroy((0,import_err_code2.default)(err2,"ERR_REMOVE_TRACK"))}this._needsNegotiation()}removeStream(stream){if(!this._destroying){if(this.destroyed)throw(0,import_err_code2.default)(new Error("cannot removeStream after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSenders()");stream.getTracks().forEach((track=>{this.removeTrack(track,stream)}))}}_requestMissingTransceivers(){this._pc.getTransceivers&&this._pc.getTransceivers().forEach((transceiver=>{if(!transceiver.mid&&transceiver.sender.track&&!transceiver.requested){transceiver.requested=!0;this.addTransceiver(transceiver.sender.track.kind)}}))}_onTrack(event2){this.destroyed||event2.streams.forEach((eventStream=>{this._debug("on track");this.emit("track",event2.track,eventStream);this._remoteTracks.push({track:event2.track,stream:eventStream});if(!this._remoteStreams.some((remoteStream=>remoteStream.id===eventStream.id))){this._remoteStreams.push(eventStream);queueMicrotask((()=>{this._debug("on stream");this.emit("stream",eventStream)}))}}))}};peer_default=(initiator,config)=>{const peer=new simple_peer_default({iceServers:[{urls:defaultIceServers}],...config,initiator,trickle:!1}),onData=d4=>earlyDataBuffer.push(d4);let earlyDataBuffer=[];peer.on("data",onData);return{id:peer._id,created:Date.now(),connection:peer._pc,get channel(){return peer._channel},get isDead(){return peer.destroyed},signal:sdp=>new Promise((res2=>{initiator||peer.on("signal",res2);peer.signal(sdp)})),sendData:data=>peer.send(data),destroy:()=>peer.destroy(),setHandlers:handlers2=>Object.entries(handlers2).forEach((([event2,fn])=>peer.on(event2,fn))),offerPromise:initiator?new Promise((res2=>peer.on("signal",res2))):Promise.resolve(),addStream:stream=>peer.addStream(stream),removeStream:stream=>peer.removeStream(stream),addTrack:(track,stream)=>peer.addTrack(track,stream),removeTrack:(track,stream)=>peer.removeTrack(track,stream),replaceTrack:(oldTrack,newTrack,stream)=>peer.replaceTrack(oldTrack,newTrack,stream),drainEarlyData:f4=>{peer.off("data",onData);earlyDataBuffer.forEach(f4);earlyDataBuffer=null}}};defaultIceServers=[...alloc(5,((_,i2)=>`stun:stun${i2||""}.l.google.com:19302`)),"stun:global.stun.twilio.com:3478"];TypedArray=Object.getPrototypeOf(Uint8Array);chunkSize=16384-(payloadIndex=1+(progressIndex=1+13));internalNs=ns=>"@_"+ns;room_default=(onPeer,onPeerLeave,onSelfLeave)=>{const peerMap={},actions={},actionsCache={},pendingTransmissions={},pendingPongs={},pendingStreamMetas={},pendingTrackMetas={},listeners={onPeerJoin:noOp,onPeerLeave:noOp,onPeerStream:noOp,onPeerTrack:noOp},iterate2=(targets,f4)=>(targets?Array.isArray(targets)?targets:[targets]:keys(peerMap)).flatMap((id=>{const peer=peerMap[id];if(!peer){console.warn(`Trystero: no peer with id ${id} found`);return[]}return f4(id,peer)})),exitPeer=id=>{if(peerMap[id]){delete peerMap[id];delete pendingTransmissions[id];delete pendingPongs[id];listeners.onPeerLeave(id);onPeerLeave(id)}},makeAction=type=>{if(actions[type])return actionsCache[type];if(!type)throw mkErr("action type argument is required");const typeBytes=encodeBytes(type);if(typeBytes.byteLength>12)throw mkErr(`action type string "${type}" (${typeBytes.byteLength}b) exceeds byte limit (12). Hint: choose a shorter name.`);const typeBytesPadded=new Uint8Array(12);typeBytesPadded.set(typeBytes);let nonce=0;actions[type]={onComplete:noOp,onProgress:noOp,setOnComplete:f4=>actions[type]={...actions[type],onComplete:f4},setOnProgress:f4=>actions[type]={...actions[type],onProgress:f4},send:async(data,targets,meta,onProgress)=>{if(meta&&"object"!=typeof meta)throw mkErr("action meta argument must be an object");const dataType=typeof data;if("undefined"===dataType)throw mkErr("action data cannot be undefined");const isJson="string"!==dataType,isBlob=data instanceof Blob,isBinary=isBlob||data instanceof ArrayBuffer||data instanceof TypedArray;if(meta&&!isBinary)throw mkErr("action meta argument can only be used with binary data");const buffer=isBinary?new Uint8Array(isBlob?await data.arrayBuffer():data):encodeBytes(isJson?toJson(data):data),metaEncoded=meta?encodeBytes(toJson(meta)):null,chunkTotal=Math.ceil(buffer.byteLength/chunkSize)+(meta?1:0)||1,chunks=alloc(chunkTotal,((_,i2)=>{const isLast=i2===chunkTotal-1,isMeta=meta&&0===i2,chunk=new Uint8Array(payloadIndex+(isMeta?metaEncoded.byteLength:isLast?buffer.byteLength-chunkSize*(chunkTotal-(meta?2:1)):chunkSize));chunk.set(typeBytesPadded);chunk.set([nonce],12);chunk.set([isLast|isMeta<<1|isBinary<<2|isJson<<3],13);chunk.set([Math.round((i2+1)/chunkTotal*255)],progressIndex);chunk.set(meta?isMeta?metaEncoded:buffer.subarray((i2-1)*chunkSize,i2*chunkSize):buffer.subarray(i2*chunkSize,(i2+1)*chunkSize),payloadIndex);return chunk}));nonce=nonce+1&255;return all(iterate2(targets,(async(id,peer)=>{const{channel}=peer;let chunkN=0;for(;chunkN<chunkTotal;){const chunk=chunks[chunkN];channel.bufferedAmount>channel.bufferedAmountLowThreshold&&await new Promise((res2=>{const next2=()=>{channel.removeEventListener("bufferedamountlow",next2);res2()};channel.addEventListener("bufferedamountlow",next2)}));if(!peerMap[id])break;peer.sendData(chunk);chunkN++;null==onProgress||onProgress(chunk[progressIndex]/255,id,meta)}})))}};return actionsCache[type]||(actionsCache[type]=[actions[type].send,actions[type].setOnComplete,actions[type].setOnProgress])},handleData=(id,data)=>{var _a7,_b3;const buffer=new Uint8Array(data),type=decodeBytes(buffer.subarray(0,12)).replaceAll("\0",""),[nonce]=buffer.subarray(12,13),[tag2]=buffer.subarray(13,progressIndex),[progress]=buffer.subarray(progressIndex,payloadIndex),payload=buffer.subarray(payloadIndex),isLast=!!(1&tag2),isMeta=!!(2&tag2),isBinary=!!(4&tag2),isJson=!!(8&tag2);if(!actions[type]){console.warn(`Trystero: received message with unregistered type (${type})`);return}pendingTransmissions[id]||(pendingTransmissions[id]={});(_a7=pendingTransmissions[id])[type]||(_a7[type]={});const target=(_b3=pendingTransmissions[id][type])[nonce]||(_b3[nonce]={chunks:[]});isMeta?target.meta=fromJson(decodeBytes(payload)):target.chunks.push(payload);actions[type].onProgress(progress/255,id,target.meta);if(!isLast)return;const full=new Uint8Array(target.chunks.reduce(((a2,c3)=>a2+c3.byteLength),0));target.chunks.reduce(((a2,c3)=>{full.set(c3,a2);return a2+c3.byteLength}),0);delete pendingTransmissions[id][type][nonce];if(isBinary)actions[type].onComplete(full,id,target.meta);else{const text2=decodeBytes(full);actions[type].onComplete(isJson?fromJson(text2):text2,id)}},leave=async()=>{await sendLeave("");await new Promise((res2=>setTimeout(res2,99)));entries(peerMap).forEach((([id,peer])=>{peer.destroy();delete peerMap[id]}));onSelfLeave()},[sendPing,getPing]=makeAction(internalNs("ping")),[sendPong,getPong]=makeAction(internalNs("pong")),[sendSignal2,getSignal]=makeAction(internalNs("signal")),[sendStreamMeta,getStreamMeta]=makeAction(internalNs("stream")),[sendTrackMeta,getTrackMeta]=makeAction(internalNs("track")),[sendLeave,getLeave]=makeAction(internalNs("leave"));onPeer(((peer,id)=>{var _a7;if(!peerMap[id]){peerMap[id]=peer;peer.setHandlers({data:d4=>handleData(id,d4),stream:stream=>{listeners.onPeerStream(stream,id,pendingStreamMetas[id]);delete pendingStreamMetas[id]},track:(track,stream)=>{listeners.onPeerTrack(track,stream,id,pendingTrackMetas[id]);delete pendingTrackMetas[id]},signal:sdp=>sendSignal2(sdp,id),close:()=>exitPeer(id),error:()=>exitPeer(id)});listeners.onPeerJoin(id);null==(_a7=peer.drainEarlyData)||_a7.call(peer,(d4=>handleData(id,d4)))}}));getPing(((_,id)=>sendPong("",id)));getPong(((_,id)=>{var _a7;null==(_a7=pendingPongs[id])||_a7.call(pendingPongs);delete pendingPongs[id]}));getSignal(((sdp,id)=>{var _a7;return null==(_a7=peerMap[id])?void 0:_a7.signal(sdp)}));getStreamMeta(((meta,id)=>pendingStreamMetas[id]=meta));getTrackMeta(((meta,id)=>pendingTrackMetas[id]=meta));getLeave(((_,id)=>exitPeer(id)));isBrowser&&addEventListener("beforeunload",leave);return{makeAction,leave,ping:async id=>{if(!id)throw mkErr("ping() must be called with target peer ID");const start=Date.now();sendPing("",id);await new Promise((res2=>pendingPongs[id]=res2));return Date.now()-start},getPeers:()=>fromEntries(entries(peerMap).map((([id,peer])=>[id,peer.connection]))),addStream:(stream,targets,meta)=>iterate2(targets,(async(id,peer)=>{meta&&await sendStreamMeta(meta,id);peer.addStream(stream)})),removeStream:(stream,targets)=>iterate2(targets,((_,peer)=>peer.removeStream(stream))),addTrack:(track,stream,targets,meta)=>iterate2(targets,(async(id,peer)=>{meta&&await sendTrackMeta(meta,id);peer.addTrack(track,stream)})),removeTrack:(track,stream,targets)=>iterate2(targets,((_,peer)=>peer.removeTrack(track,stream))),replaceTrack:(oldTrack,newTrack,stream,targets,meta)=>iterate2(targets,(async(id,peer)=>{meta&&await sendTrackMeta(meta,id);peer.replaceTrack(oldTrack,newTrack,stream)})),onPeerJoin:f4=>listeners.onPeerJoin=f4,onPeerLeave:f4=>listeners.onPeerLeave=f4,onPeerStream:f4=>listeners.onPeerStream=f4,onPeerTrack:f4=>listeners.onPeerTrack=f4}};strategy_default=({init:init3,subscribe:subscribe2,announce})=>{const occupiedRooms={};let initPromises,offerPool,offerCleanupTimer,didInit=!1;return(config,roomId,onJoinError)=>{var _a7;const{appId}=config;if(null==(_a7=occupiedRooms[appId])?void 0:_a7[roomId])return occupiedRooms[appId][roomId];const pendingOffers={},connectedPeers={},rootTopicPlaintext=topicPath("Trystero",appId,roomId),rootTopicP=sha12(rootTopicPlaintext),selfTopicP=sha12(topicPath(rootTopicPlaintext,selfId)),key2=genKey(config.password||"",appId,roomId),withKey=f4=>async signal=>({type:signal.type,sdp:await f4(key2,signal.sdp)}),toPlain=withKey(decrypt3),toCipher=withKey(encrypt3),makeOffer=()=>peer_default(!0,config.rtcConfig),connectPeer=(peer,peerId,clientId)=>{var _a8;if(connectedPeers[peerId])connectedPeers[peerId]!==peer&&peer.destroy();else{connectedPeers[peerId]=peer;onPeerConnect(peer,peerId);null==(_a8=pendingOffers[peerId])||_a8.forEach(((peer2,i2)=>{i2!==clientId&&peer2.destroy()}));delete pendingOffers[peerId]}},disconnectPeer=(peer,peerId)=>{connectedPeers[peerId]===peer&&delete connectedPeers[peerId]},getOffers=n3=>{offerPool.push(...alloc(n3,makeOffer));return all(offerPool.splice(0,n3).map((peer=>peer.offerPromise.then(toCipher).then((offer=>({peer,offer}))))))},handleJoinError=(peerId,sdpType)=>null==onJoinError?void 0:onJoinError({error:`incorrect password (${config.password}) when decrypting ${sdpType}`,appId,peerId,roomId});if(!config)throw mkErr("requires a config map as the first argument");if(!appId&&!config.firebaseApp)throw mkErr("config map is missing appId field");if(!roomId)throw mkErr("roomId argument required");if(!didInit){const initRes=init3(config);offerPool=alloc(20,makeOffer);initPromises=Array.isArray(initRes)?initRes:[initRes];didInit=!0;offerCleanupTimer=setInterval((()=>offerPool=offerPool.filter((peer=>{const shouldLive=Date.now()-peer.created<57333;shouldLive||peer.destroy();return shouldLive}))),59052.99)}const announceIntervals=initPromises.map((()=>5333)),announceTimeouts=[],unsubFns=initPromises.map((async(clientP,i2)=>{return subscribe2(await clientP,await rootTopicP,await selfTopicP,(clientId=i2,async(topic,msg,signalPeer)=>{var _a8,_b3,_c2;const[rootTopic,selfTopic]=await all([rootTopicP,selfTopicP]);if(topic!==rootTopic&&topic!==selfTopic)return;const{peerId,offer,answer,peer}="string"==typeof msg?fromJson(msg):msg;if(peerId!==selfId&&!connectedPeers[peerId])if(!peerId||offer||answer){if(offer){if((null==(_b3=pendingOffers[peerId])?void 0:_b3[clientId])&&selfId>peerId)return;const peer2=peer_default(!1,config.rtcConfig);peer2.setHandlers({connect:()=>connectPeer(peer2,peerId,clientId),close:()=>disconnectPeer(peer2,peerId)});let plainOffer;try{plainOffer=await toPlain(offer)}catch(e3){handleJoinError(peerId,"offer");return}if(peer2.isDead)return;const[topic2,answer2]=await all([sha12(topicPath(rootTopicPlaintext,peerId)),peer2.signal(plainOffer)]);signalPeer(topic2,toJson({peerId:selfId,answer:await toCipher(answer2)}))}else if(answer){let plainAnswer;try{plainAnswer=await toPlain(answer)}catch(e3){handleJoinError(peerId,"answer");return}if(peer){peer.setHandlers({connect:()=>connectPeer(peer,peerId,clientId),close:()=>disconnectPeer(peer,peerId)});peer.signal(plainAnswer)}else{const peer2=null==(_c2=pendingOffers[peerId])?void 0:_c2[clientId];peer2&&!peer2.isDead&&peer2.signal(plainAnswer)}}}else{if(null==(_a8=pendingOffers[peerId])?void 0:_a8[clientId])return;const[[{peer:peer2,offer:offer2}],topic2]=await all([getOffers(1),sha12(topicPath(rootTopicPlaintext,peerId))]);pendingOffers[peerId]||(pendingOffers[peerId]=[]);pendingOffers[peerId][clientId]=peer2;setTimeout((()=>((peerId,clientId)=>{var _a8;if(connectedPeers[peerId])return;const offer=null==(_a8=pendingOffers[peerId])?void 0:_a8[clientId];if(offer){delete pendingOffers[peerId][clientId];offer.destroy()}})(peerId,clientId)),.9*announceIntervals[clientId]);peer2.setHandlers({connect:()=>connectPeer(peer2,peerId,clientId),close:()=>disconnectPeer(peer2,peerId)});signalPeer(topic2,toJson({peerId:selfId,offer:offer2}))}}),getOffers);var clientId}));all([rootTopicP,selfTopicP]).then((([rootTopic,selfTopic])=>{const queueAnnounce=async(client,i2)=>{const ms=await announce(client,rootTopic,selfTopic);"number"==typeof ms&&(announceIntervals[i2]=ms);announceTimeouts[i2]=setTimeout((()=>queueAnnounce(client,i2)),announceIntervals[i2])};unsubFns.forEach((async(didSub,i2)=>{await didSub;queueAnnounce(await initPromises[i2],i2)}))}));let onPeerConnect=noOp;occupiedRooms[appId]||(occupiedRooms[appId]={});return occupiedRooms[appId][roomId]=room_default((f4=>onPeerConnect=f4),(id=>delete connectedPeers[id]),(()=>{delete occupiedRooms[appId][roomId];announceTimeouts.forEach(clearTimeout);unsubFns.forEach((async f4=>(await f4)()));clearInterval(offerCleanupTimer)}))}};clients={};privateKey=isBrowser&&schnorr.utils.randomPrivateKey();publicKey=isBrowser&&toHex(schnorr.getPublicKey(privateKey));subIdToTopic={};msgHandlers={};kindCache={};now2=()=>Math.floor(Date.now()/1e3);topicToKind=topic=>{var _a7;return null!=(_a7=kindCache[topic])?_a7:kindCache[topic]=strToNum(topic,1e4)+2e4};createEvent=async(topic,content)=>{const payload={kind:topicToKind(topic),content,pubkey:publicKey,created_at:now2(),tags:[["x",topic]]},id=toHex(new Uint8Array(await crypto.subtle.digest("SHA-256",encodeBytes(toJson([0,payload.pubkey,payload.created_at,payload.kind,payload.tags,payload.content])))));return toJson(["EVENT",{...payload,id,sig:toHex(await schnorr.sign(id,privateKey))}])};subscribe=(subId,topic)=>{subIdToTopic[subId]=topic;return toJson(["REQ",subId,{kinds:[topicToKind(topic)],since:now2(),["#x"]:[topic]}])};unsubscribe=subId=>{delete subIdToTopic[subId];return toJson(["CLOSE",subId])};joinRoom=strategy_default({init:config=>getRelays(config,defaultRelayUrls,5,!0).map((url=>{const client=makeSocket(url,(data=>{var _a7;const[msgType,subId,payload,relayMsg]=fromJson(data);if("EVENT"===msgType)null==(_a7=msgHandlers[subId])||_a7.call(msgHandlers,subIdToTopic[subId],payload.content);else{const prefix=`Trystero: relay failure from ${client.url} - `;"NOTICE"===msgType?console.warn(prefix+subId):"OK"!==msgType||payload||console.warn(prefix+relayMsg)}}));clients[url]=client;return client.ready})),subscribe:(client,rootTopic,selfTopic,onMessage)=>{const rootSubId=genId(64),selfSubId=genId(64);msgHandlers[rootSubId]=msgHandlers[selfSubId]=(topic,data)=>onMessage(topic,data,(async(peerTopic,signal)=>client.send(await createEvent(peerTopic,signal))));client.send(subscribe(rootSubId,rootTopic));client.send(subscribe(selfSubId,selfTopic));return()=>{client.send(unsubscribe(rootSubId));client.send(unsubscribe(selfSubId));delete msgHandlers[rootSubId];delete msgHandlers[selfSubId]}},announce:async(client,rootTopic)=>client.send(await createEvent(rootTopic,toJson({peerId:selfId})))});socketGetter(clients);defaultRelayUrls=["eu.purplerelay.com","ftp.halifax.rwth-aachen.de/nostr","longhorn.bgp.rodeo","multiplexer.huszonegy.world","nfdb.noswhere.com","nostr-verified.wellorder.net","nostr.cool110.xyz","nostr.data.haus","nostr.grooveix.com","nostr.huszonegy.world","nostr.mom","nostr.openhoofd.nl","nostr.petrkr.net/strfry","nostr.sathoarder.com","nostr.stakey.net","nostr.vulpem.com","nostr2.sanhauf.com","nostrelay.circum.space","relay.fountain.fm","relay.nostraddress.com","relay.nostromo.social","relay.snort.social","relay.verified-nostr.com","strfry.openhoofd.nl","yabu.me/v2"].map((url=>"wss://"+url));ResponsePreventedError=class extends Error{constructor(message){super(`Response prevented: ${message}`)}};DeviceDecisions=(DeviceDecisions2=>{DeviceDecisions2.ACCEPT="accepted";DeviceDecisions2.REJECT="rejected";DeviceDecisions2.IGNORE="ignore";return DeviceDecisions2})(DeviceDecisions||{});StoredMapLike=class{constructor(store,prefix=""){this._cache=new Map;this._prefix="";this._store=store}addPrefix(key2){return`${this._prefix}-${key2}`}async get(key2){if(this._cache.has(key2))return this._cache.get(key2);const value=await this._store.get(this.addPrefix(key2));void 0!==value&&this._cache.set(key2,value);return value}async set(key2,value){try{const ret=await this._store.set(this.addPrefix(key2),value);this._cache.set(key2,value);return ret}catch(e3){this._cache.delete(key2);throw e3}}async delete(key2){try{const ret=await this._store.delete(this.addPrefix(key2));this._cache.delete(key2);return ret}catch(e3){this._cache.delete(key2);throw e3}}async has(key2){return!!this._cache.has(key2)||(await this._store.keys(this.addPrefix(key2),key2)).length>0}};TrysteroReplicatorP2PClient=class{constructor(server,connectedPeerId){this._prevSeq=0;this.waitingInvocations=new Map;this.invocationTimeouts=new Map;this._server=server;this._connectedPeerId=connectedPeerId;this._remoteDB=this._bindRemoteDB()}get remoteDB(){return this._remoteDB}_bindRemoteDB(){return{info:this.bindRemoteFunction("info"),changes:this.bindRemoteFunction("changes"),revsDiff:this.bindRemoteFunction("revsDiff"),bulkDocs:this.bindRemoteFunction("bulkDocs"),bulkGet:this.bindRemoteFunction("bulkGet"),put:this.bindRemoteFunction("put"),get:this.bindRemoteFunction("get")}}get __send(){var _a7;return null==(_a7=this._server)?void 0:_a7.__send.bind(this._server)}generateNewSeq(){const seq=Math.floor(115*Math.random())+1+this._prevSeq;if(!this.waitingInvocations.has(seq)){this._prevSeq=seq%~~(Number.MAX_SAFE_INTEGER/2);return seq}return this.generateNewSeq()}async _sendRPC(type,args,timeout=3e4){if(!this.__send)throw new Error("Not connected to any room");const seq=this.generateNewSeq(),p4=promiseWithResolver();this.waitingInvocations.set(seq,p4);const request2={type,direction:"request",seq,args};timeout&&timeout>0&&this.invocationTimeouts.set(seq,setTimeout((()=>{if(this.waitingInvocations.has(seq)){this.waitingInvocations.delete(seq);p4.reject(new Error(`Invocation Timed out: ${type} (${seq}) (Timeout: ${timeout}ms)`))}this.invocationTimeouts.delete(seq)}),timeout));await this.__send(request2,this._connectedPeerId);return p4.promise}__onResponse(data){const seq=data.seq,type=data.type;if(this.invocationTimeouts.has(seq)){clearTimeout(this.invocationTimeouts.get(seq));this.invocationTimeouts.delete(seq)}const p4=this.waitingInvocations.get(seq);if(p4){this.waitingInvocations.delete(seq);if(data.error){p4.reject(data.error);Logger(`Invoking remote function [ DONE] : ${type} (${seq}) : (Error)`,LOG_LEVEL_VERBOSE)}else p4.resolve(data.data)}else Logger(`Invoking remote function [ERROR] : ${type} (${seq}) : No Handler left. Possibly timed out`,LOG_LEVEL_VERBOSE)}bindRemoteFunction(type,timeout=3e4){return async(...args)=>{if(!this.__send)throw new Error("Not connected to any room");return await this._sendRPC(type,args,timeout)}}async invokeRemoteFunction(type,args,timeout=3e4){if(!this.__send)throw new Error("Not connected to any room");return await this._sendRPC(type,args,timeout)}bindRemoteObjectFunctions(key2,timeout=3e4){return async(...args)=>{if(!this.__send)throw new Error("Not connected to any room");return await this._sendRPC(`${key2.toString()}`,args,timeout)}}async invokeRemoteObjectFunction(key2,args,timeout=3e4){if(!this.__send)throw new Error("Not connected to any room");return await this._sendRPC(`${key2.toString()}`,args,timeout)}close(){this._remoteDB=void 0;this._server=void 0}};EVENT_SERVER_STATUS="p2p-server-status";EVENT_REQUEST_STATUS="p2p-request-status";EVENT_P2P_REPLICATOR_STATUS="p2p-replicator-status";TrysteroReplicatorP2PServer=class{constructor(env,_serverPeerId=selfId){this.assignedFunctions=new Map;this.clients=new Map;this._bindingObjects=[];this._knownAdvertisements=new Map;this.temporaryAcceptedPeers=new Map;this._env=env;this._serverPeerId=_serverPeerId;eventHub.onEvent("platform-unloaded",(()=>{this.shutdown()}));this.acceptedPeers=new StoredMapLike(this._env.simpleStore,"p2p-device-decisions")}get isDisposed(){return!this._room}get isServing(){return void 0!==this._room}async ensureLeaved(){var _a7,_b3;if(this._room){try{await(null==(_a7=this._room)?void 0:_a7.leave());await(null==(_b3=this._room)?void 0:_b3.leave())}catch(ex){Logger("Some error has been occurred while leaving the room, but possibly can be ignored",LOG_LEVEL_VERBOSE);Logger(ex,LOG_LEVEL_VERBOSE)}this._room=void 0;eventHub.emitEvent("p2p-disconnected")}}setRoom(room){this._room=room}async shutdown(){try{await this.close();await this.ensureLeaved()}catch(ex){Logger("Some error has been occurred while shutting down the server",LOG_LEVEL_INFO);Logger(ex,LOG_LEVEL_VERBOSE)}}async dispatchConnectionStatus(){const adsTasks=[...this.knownAdvertisements].map((async e3=>{const isAccepted2=await this.acceptedPeers.get(e3.name),isTemporaryAccepted=this.temporaryAcceptedPeers.get(e3.peerId);return{...e3,isAccepted:isAccepted2,isTemporaryAccepted}})),ads=await Promise.all(adsTasks);eventHub.emitEvent(EVENT_SERVER_STATUS,{isConnected:this.isServing,knownAdvertisements:ads,serverPeerId:this.serverPeerId})}async makeDecision(decision){decision.decision?decision.isTemporary?this.temporaryAcceptedPeers.set(decision.peerId,!0):await this.acceptedPeers.set(decision.name,!0):decision.isTemporary?this.temporaryAcceptedPeers.set(decision.peerId,!1):await this.acceptedPeers.set(decision.name,!1);await this.dispatchConnectionStatus()}async revokeDecision(decision){this.temporaryAcceptedPeers.delete(decision.peerId);await this.acceptedPeers.delete(decision.name);await this.dispatchConnectionStatus()}get room(){return this._room}get serverPeerId(){return this._serverPeerId}get db(){return this._env.db}get confirm(){return this._env.confirm}get settings(){return this._env.settings}get isEnabled(){return this.settings.P2P_Enabled}get deviceInfo(){return{currentPeerId:this._serverPeerId,name:this._env.deviceName,platform:this._env.platform,version:"0.0.0"}}sendAdvertisement(peerId){if(!this.isEnabled)return;const devInfo=this.deviceInfo,data={peerId:devInfo.currentPeerId,name:devInfo.name,platform:devInfo.platform};if(this._sendAdvertisement){Logger(`Sending Advertisement to ${null!=peerId?peerId:"All"}`,LOG_LEVEL_VERBOSE);this._sendAdvertisement(data,peerId)}}get knownAdvertisements(){return[...this._knownAdvertisements.values()]}onAdvertisement(data,peerId){if(this.isEnabled){Logger(`Advertisement from ${peerId}`,LOG_LEVEL_VERBOSE);if(peerId!==this.serverPeerId&&data.peerId!==this.serverPeerId&&data.name!==this.deviceInfo.name&&data.peerId===peerId){this._knownAdvertisements.set(peerId,data);this.dispatchConnectionStatus();eventHub.emitEvent("p2p-advertisement-received",data)}}}confirmUserToAccept(peerId){return shareRunningResult(`confirmUserToAccept-${peerId}`,(()=>this._confirmUserToAccept(peerId)))}_confirmUserToAccept(peerId){const peerInfo=this._knownAdvertisements.get(peerId);if(!peerInfo)throw new Error("Unknown Peer");const peerName=peerInfo.name,message=`Are you sure to establish connection to ${peerName} (${peerId})?\nYou can chose as follows:\n- Accept: Accept all connections from this peer.\n- Ignore: Reject all connections from this peer.\n- Accept Temporarily: Accept the connection for this session only.\n- Ignore Temporarily: Reject the connection for this session only.\n\n>[!INFO] You can revoke your decision from the Peer-to-Peer Replicator Pane.`;return this.confirm.askSelectStringDialogue(message,["Accept","Ignore","Accept Temporarily","Ignore Temporarily"],{title:"P2P Connection Request",defaultAction:"Ignore Temporarily",timeout:30}).then((decision=>{if("Accept Temporarily"===decision){this.temporaryAcceptedPeers.set(peerId,!0);this.dispatchConnectionStatus();return!0}if("Ignore Temporarily"===decision){this.temporaryAcceptedPeers.set(peerId,!1);this.dispatchConnectionStatus();return!1}if("Accept"===decision){this.temporaryAcceptedPeers.delete(peerId);this.acceptedPeers.set(peerName,!0);this.dispatchConnectionStatus();return!0}if("Ignore"===decision){this.temporaryAcceptedPeers.delete(peerId);this.acceptedPeers.set(peerName,!1);this.dispatchConnectionStatus();return!1}throw new ResponsePreventedError("User Accepting failed")}))}async isAcceptablePeer(peerId){if(!this.isEnabled)return;const peerInfo=this._knownAdvertisements.get(peerId);if(!peerInfo)return!1;const peerName=peerInfo.name;if(this.temporaryAcceptedPeers.has(peerId))return this.temporaryAcceptedPeers.get(peerId);const accepted=await this.acceptedPeers.get(peerName);return void 0!==accepted?accepted:await this.confirmUserToAccept(peerId)}async __send(data,peerId){if(this.isEnabled)if(await this.isAcceptablePeer(peerId)){if(this.___send)return await this.___send(data,peerId);Logger("Cannot send response, no send function")}else{Logger(`Invalid Message to ${peerId}`,LOG_LEVEL_VERBOSE);Logger(data,LOG_LEVEL_VERBOSE)}}async processArrivedRPC(data,peerId){if(this.isEnabled){if(!data.type.startsWith("!")&&!await this.isAcceptablePeer(peerId))throw new Error(`Not acceptable peer ${peerId}`);if("response"===data.direction)this.__onResponse(data,peerId);else{if("request"!==data.direction)throw new Error(`Invalid Message from ${peerId}`);await this.__onRequest(data,peerId)}}}onAfterJoinRoom(){Logger("Initializing...",LOG_LEVEL_VERBOSE);const room=this.room;if(!room)throw new Error("This server has been already disconnected");const[send,arrived]=room.makeAction("rpc");this.___send=send;arrived(((data,peerId)=>{this.processArrivedRPC(data,peerId).catch((e3=>{Logger(e3.message,LOG_LEVEL_INFO);Logger(e3,LOG_LEVEL_VERBOSE)}))}));const[adSend,adArrived]=room.makeAction("ad");this._sendAdvertisement=adSend;adArrived(((data,peerId)=>{this.onAdvertisement(data,peerId)}));room.onPeerLeave((peerId=>{this._knownAdvertisements.delete(peerId);eventHub.emitEvent("p2p-device-leaved",peerId);this.dispatchConnectionStatus()}));room.onPeerJoin((peerId=>{this.sendAdvertisement(peerId)}));eventHub.emitEvent("p2p-connected");this.dispatchConnectionStatus()}async startService(bindings=[]){if(!this.isEnabled){Logger($msg("P2P.NotEnabled"),LOG_LEVEL_NOTICE);return}const servingDB=function createHostingDB(env){let db=env.db;return{info:()=>db.info(),changes:options=>db.changes(options),revsDiff:diff=>db.revsDiff(diff),bulkDocs:(docs,options)=>db.bulkDocs(docs,options),bulkGet:options=>db.bulkGet(options),put:(doc,options)=>db.put(doc,options),get:(id,options)=>db.get(id,options),_stopHosting:()=>{db=void 0}}}(this._env);this._bindingObjects=[...bindings,servingDB];this._bindingObjects.forEach((b3=>{this.serveObject(b3)}));await this.sendAdvertisement()}async start(bindings=[]){const passphraseNumbers=mixedHash(this.settings.P2P_passphrase,0),passphrase=passphraseNumbers[0].toString(36)+passphraseNumbers[1].toString(36);await this.shutdown();if(!this.settings.P2P_Enabled){Logger($msg("P2P.NotEnabled"),LOG_LEVEL_NOTICE);return}const relays=this.settings.P2P_relays.split(",").filter((e3=>e3.trim().length>0)),room=joinRoom({relayUrls:relays,appId:this.settings.P2P_AppID,password:passphrase},this.settings.P2P_roomID,(error=>{Logger("Some error has been occurred while connecting the signalling server.",LOG_LEVEL_INFO);Logger(`Error: ${JSON.stringify(error)}`,LOG_LEVEL_INFO);this.ensureLeaved()}));this.setRoom(room);this.dispatchConnectionStatus();this.onAfterJoinRoom();await this.startService(bindings)}serveFunction(type,func){this.assignedFunctions.set(type,func)}serveObject(obj){Object.keys(obj).forEach((key2=>{if(key2.toString().startsWith("_"))return;const func=obj[key2].bind(obj);this.assignedFunctions.set(key2.toString(),func)}))}__onResponse(data,peerId){const peer=this.clients.get(peerId);peer?peer.__onResponse(data):Logger(`Response from unknown peer ${peerId}`,LOG_LEVEL_VERBOSE)}async __onRequest(data,peerId){try{const func=this.assignedFunctions.get(data.type);if("function"!=typeof func)throw new Error(`Cannot serve function ${data.type}, no function provided or I am only a client`);const r4=await Promise.resolve(func.apply(this,data.args));await this.__send({type:data.type,seq:data.seq,direction:"response",data:r4},peerId)}catch(e3){Logger(`Serving function: [FAILED] ${data.type}`,LOG_LEVEL_VERBOSE);Logger(e3,LOG_LEVEL_VERBOSE);if(e3 instanceof ResponsePreventedError){Logger(`Response prevented for ${data.type}`,LOG_LEVEL_VERBOSE);return}await this.__send({type:data.type,seq:data.seq,direction:"response",data:void 0,error:e3},peerId)}}async close(){var _a7,_b3;this.assignedFunctions.clear();this._knownAdvertisements.clear();await this.ensureLeaved();const peers=null!=(_b3=null==(_a7=this.room)?void 0:_a7.getPeers())?_b3:{};this.clients.forEach((client=>client.close()));this.clients.clear();for(const[,peer]of Object.entries(peers))peer.close();await this.dispatchConnectionStatus()}getConnection(peerId){if(this.clients.has(peerId))return this.clients.get(peerId);if(!this._knownAdvertisements.has(peerId))throw new Error(`Unknown Peer ${peerId}`);const client=new TrysteroReplicatorP2PClient(this,peerId);this.clients.set(peerId,client);return client}};p=promiseWithResolver();instance=void 0;eventHub.onceEvent("platform-unloaded",(()=>{instance=void 0;p.resolve(void 0)}));replicatorInstanceGetter=()=>{};LiveSyncTrysteroReplicator=class extends LiveSyncAbstractReplicator{terminateSync(){}async openReplication(setting,keepAlive,showResult,ignoreCleanLock){const logLevel=showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,r4=await this.getP2PConnection(logLevel);if(!r4)return!1;await r4.replicateFromCommand(showResult)}tryConnectRemote(setting,showResult){return Promise.resolve(!1)}replicateAllToServer(setting,showingNotice,sendChunksInBulkDisabled){return Promise.resolve(!1)}async openP2P(logLevel){const r4=getReplicatorInstance();if(!r4){Logger($msg("P2P.ReplicatorInstanceMissing"),logLevel);return!1}await r4.open();return r4}async getP2PConnection(logLevel){const r4=getReplicatorInstance();if(!r4){Logger($msg("P2P.ReplicatorInstanceMissing"),logLevel);return!1}await r4.makeSureOpened();return r4}async selectPeer(settingPeerName,r4,logLevel){var _a7,_b3,_c2,_d2,_e2;const knownPeersOrg=null!=(_b3=null==(_a7=r4.server)?void 0:_a7.knownAdvertisements)?_b3:[];let knownPeers;if(0!=knownPeersOrg.length)knownPeers=knownPeersOrg;else{Logger($msg("P2P.NoKnownPeers"),logLevel);await Promise.race([delay(5e3),eventHub.waitFor("p2p-advertisement-received")]);knownPeers=null!=(_d2=null==(_c2=r4.server)?void 0:_c2.knownAdvertisements)?_d2:[]}const message="Rebuild from which peer?"+(settingPeerName?"\n [*] indicates the peer you have selected before.":""),confirm=await getConfirmInstance(),options=[...knownPeers.map((e3=>`${e3.name} ${e3.name==settingPeerName?"[*]":""} (${e3.peerId})`)),"Refresh List","Cancel"],selected=await confirm.askSelectStringDialogue(message,options,{title:"Select a peer to fetch from",defaultAction:"Refresh List"});if(!selected||"Cancel"==selected)return!1;if("Refresh List"==selected){await Promise.race([delay(1e3),eventHub.waitFor("p2p-advertisement-received")]);return this.selectPeer(settingPeerName,r4,logLevel)}const selectedPeerName=selected.split(" ")[0],peerId=null==(_e2=knownPeers.find((e3=>e3.name==selectedPeerName)))?void 0:_e2.peerId;if(!peerId){Logger(`Failed to find peerId for ${selectedPeerName}`,logLevel);return!1}return peerId}async tryUntilSuccess(func,repeat,logLevel){if(!await getConfirmInstance()){Logger("Cannot find confirm instance.",logLevel);return Promise.reject("Cannot find confirm instance.")}let result;for(;!result;)for(let i2=0;i2<repeat;i2++){try{result=await func();if(result)break}catch(e3){Logger(`Error: ${e3}`,logLevel);result=!1}await delay(1e3)}return result}async replicateAllFromServer(setting,showingNotice){const logLevel=showingNotice?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO;if(0==setting.P2P_Enabled){const confirm=await getConfirmInstance();"yes"!=await confirm.askYesNoDialog($msg("P2P.DisabledButNeed"),{})&&Logger($msg("P2P.NotEnabled"),logLevel);setting.P2P_Enabled=!0;this.env.settings.P2P_Enabled=!0;await this.env.$$saveSettingData();await delay(100);return this.replicateAllFromServer(setting,showingNotice)}eventHub.emitEvent("p2p-request-force-open");await eventHub.waitFor("p2p-connected");const peerFrom=setting.P2P_RebuildFrom,instance3=getReplicatorInstance();if(!instance3){Logger("Failed to get replicator instance.",logLevel);return!1}instance3.setOnSetup();try{const r4=await this.tryUntilSuccess((()=>this.openP2P(logLevel)),10,logLevel);if(!1===r4){Logger("Failed to open P2P connection.",logLevel);return!1}const peerId=await this.selectPeer(peerFrom,r4,logLevel);if(!1===peerId){Logger("Failed to connect peer.",logLevel);return!1}this.env.settings.P2P_RebuildFrom="";Logger(`Fetching from peer ${peerId}.`,logLevel);const rep=await r4.replicateFrom(peerId,showingNotice);if(rep.ok){Logger(`P2P Fetching has been succeed from ${peerId}.`,logLevel);return!0}Logger(`Failed to fetch from peer ${peerId}.`,logLevel);Logger(rep.error,LOG_LEVEL_VERBOSE);return!1}finally{instance3.clearOnSetup()}}closeReplication(){}tryResetRemoteDatabase(setting){throw new Error("P2P replication does not support database reset.")}tryCreateRemoteDatabase(setting){throw new Error("P2P replication does not support database reset.")}markRemoteLocked(setting,locked,lockByClean){throw new Error("P2P replication does not support database lock.")}markRemoteResolved(setting){Logger("Trying resolving remote-database-lock but P2P replication does not support database lock. This operation has been ignored",LOG_LEVEL_INFO);return Promise.resolve()}resetRemoteTweakSettings(setting){throw new Error("P2P replication does not support resetting tweaks.")}setPreferredRemoteTweakSettings(setting){Logger("Trying setting tweak values but P2P replication does not support to do this. This operation has been ignored",LOG_LEVEL_INFO);return Promise.resolve()}fetchRemoteChunks(missingChunks,showResult){return Promise.resolve(!1)}getRemoteStatus(setting){Logger("Trying to get remote status but P2P replication does not support to do this. This operation has been ignored",LOG_LEVEL_INFO);return Promise.resolve(!1)}getRemotePreferredTweakValues(setting){Logger("Trying to get tweak values but P2P replication does not support to do this. This operation has been ignored",LOG_LEVEL_INFO);return Promise.resolve(!1)}constructor(env){super(env);this.env=env}};TrysteroReplicator=class{constructor(env){this._onSetup=!1;this.lastSeq="";this._isBroadcasting=!1;this.availableReplicationPairs=new Set;this._replicateToPeers=new Set;this._replicateFromPeers=new Set;this._watchingPeers=new Set;this._env=env;try{if(!this.settings.P2P_Enabled){Logger("P2P is not enabled",LOG_LEVEL_VERBOSE);return}if(!this.settings.P2P_AppID)throw new Error("P2P App ID is not provided. We need it to establish the P2P connection");if(!this.settings.P2P_roomID||!this.settings.P2P_passphrase)throw new Error("Room ID and/or P2P Passphrase have not provided. We need them to establish the P2P connection");if(!this.settings.P2P_relays||0===this.settings.P2P_relays.length)throw new Error("No relay URIs provided. We need them to establish the P2P connection");this.server=new TrysteroReplicatorP2PServer(env)}catch(e3){Logger(e3 instanceof Error?e3.message:"Error while creating TrysteroReplicator",LOG_LEVEL_NOTICE);Logger(e3,LOG_LEVEL_VERBOSE);throw e3}}replicationStatus(){return{}}get settings(){return this._env.settings}get db(){return this._env.db}get deviceName(){return this._env.deviceName}get platform(){return this._env.platform}get confirm(){return this._env.confirm}async close(){var _a7;this.requestStatus();await(null==(_a7=this.server)?void 0:_a7.shutdown());this._replicateFromPeers.clear();this._replicateToPeers.clear();this._watchingPeers.clear();this.requestStatus()}async open(){var _a7;await(null==(_a7=this.server)?void 0:_a7.start([this.getCommands()]));this.dispatchStatus();this.settings.P2P_AutoBroadcast&&this.enableBroadcastChanges()}async makeSureOpened(){var _a7;(null==(_a7=this.server)?void 0:_a7.isServing)||await this.open()}get autoSyncPeers(){return this.settings.P2P_AutoSyncPeers.split(",").map((e3=>e3.trim())).filter((e3=>e3.length>0))}get autoWatchPeers(){return this.settings.P2P_AutoWatchPeers.split(",").map((e3=>e3.trim())).filter((e3=>e3.length>0))}async onNewPeer(peer){const peerName=peer.name;this.autoSyncPeers.includes(peerName)&&await this.sync(peer.peerId);this.autoWatchPeers.includes(peerName)&&this.watchPeer(peer.peerId)}onPeerLeaved(peerId){this.unwatchPeer(peerId)}setOnSetup(){this._onSetup=!0}clearOnSetup(){this._onSetup=!1}async getTweakSettings(fromPeerId){var _a7;const allSettings=JSON.parse(JSON.stringify(this.settings));for(const key2 in allSettings)"encrypt"!=key2&&("passphrase"!=key2?key2 in TweakValuesShouldMatchedTemplate||delete allSettings[key2]:allSettings[key2]=await getHashedStringWithCurrentTime(null!=(_a7=allSettings[key2])?_a7:""));return allSettings}getCommands(){return{reqSync:async fromPeerId=>this._onSetup?{error:new Error("The setup is in progress")}:await this.replicateFrom(fromPeerId),"!reqAuth":async fromPeerId=>{var _a7;return await(null==(_a7=this.server)?void 0:_a7.isAcceptablePeer(fromPeerId))},getTweakSettings:async fromPeerId=>await this.getTweakSettings(fromPeerId),onProgress:async fromPeerId=>{if(this._onSetup)return{error:new Error("The setup is in progress")};await this.onUpdateDatabase(fromPeerId)},getAllConfig:async fromPeerId=>{if(this._onSetup)return{error:new Error("The setup is in progress")};const passphrase=await skipIfDuplicated(`getAllConfig-${fromPeerId}`,(async()=>await this.confirm.askString("Passphrase required",$msg("P2P.AskPassphraseForShare"),"something you only know",!0))),setting={...this.settings,configPassphraseStore:"",encryptedCouchDBConnection:"",encryptedPassphrase:"",pluginSyncExtendedSetting:{}};if(!passphrase||""==passphrase.trim()){Logger("Passphrase is required to transfer the configuration. The peer cannot be decrypt the config\nIf you repeatedly receive unintended configuration-sharing requests, change the RPC channel immediately. It allows you to leave the connection and disappear, while they are trying brute force attack for the decoy on their local.",LOG_LEVEL_NOTICE);return encrypt(JSON.stringify(Object.fromEntries(Object.entries(setting).map((([key2,value])=>[key2,"******".repeat(Math.ceil(10*Math.random())+2)])))),Math.random().toString(36).substring(7),!1)}return encrypt(JSON.stringify(setting),passphrase.trim(),!1)},onProgressAcknowledged:async(fromPeerId,info3)=>{await this.onProgressAcknowledged(fromPeerId,info3)},getIsBroadcasting:()=>Promise.resolve(this._isBroadcasting),requestBroadcasting:async peerId=>{if(this._onSetup)return{error:new Error("The setup is in progress")};if(this._isBroadcasting)return!0;"yes"===await skipIfDuplicated(`requested-${peerId}`,(async()=>await this.confirm.askYesNoDialog("The remote peer requested to broadcast the changes. Do you want to allow it?",{defaultOption:"No"})))&&this.enableBroadcastChanges()}}}async requestAuthenticate(peerId){if(!this.server)return!1;const connection=this.server.getConnection(peerId),selfPeerId=this.server.serverPeerId;return await connection.invokeRemoteObjectFunction("!reqAuth",[selfPeerId],2e4)}async selectPeer(){if(!this.server)return!1;const knownPeers=this.server.knownAdvertisements;if(0===knownPeers.length){Logger("No known peers",LOG_LEVEL_VERBOSE);return!1}const peers=[...Object.entries(knownPeers)].map((([peerId,info3])=>`${info3.peerId} : (${info3.name})`)),selectedPeer=await this.confirm.askSelectString("Select a peer to replicate",peers);return!!selectedPeer&&selectedPeer.split(" ")[0]}async requestSynchroniseToPeer(peerId){await delay(25);if(!this.server)throw new Error("Server is not available");const conn=this.server.getConnection(peerId);return await conn.invokeRemoteFunction("reqSync",[this.server.serverPeerId],0)}async requestSynchroniseToAllAvailablePeers(){await scheduleOnceIfDuplicated("requestSynchroniseToAllAvailablePeers",(async()=>{await delay(25);const replications=[...this.availableReplicationPairs].map((peerId=>this.requestSynchroniseToPeer(peerId)));await Promise.all(replications)}))}dispatchStatus(){eventHub.emitEvent(EVENT_P2P_REPLICATOR_STATUS,{isBroadcasting:this._isBroadcasting,replicatingTo:[...this._replicateToPeers],replicatingFrom:[...this._replicateFromPeers],watchingPeers:[...this._watchingPeers]})}requestStatus(){var _a7;this.dispatchStatus();null==(_a7=this.server)||_a7.dispatchConnectionStatus()}disableBroadcastChanges(){var _a7;null==(_a7=this.changes)||_a7.cancel();this._isBroadcasting=!1;this.dispatchStatus()}enableBroadcastChanges(){if(this._isBroadcasting)return;this._isBroadcasting=!0;this.dispatchStatus();if(this.changes){this.changes.cancel();this.changes.removeAllListeners()}this.changes=this.db.changes({since:"now",live:!0,include_docs:!1,selector:{_id:{$gt:"_local/"}}});this.changes.on("change",(async change=>{this.lastSeq=change.seq;await this.notifyProgress()}));const closeChanges=reason=>{var _a7,_b3;if(reason)if(reason instanceof Error){Logger("Error while broadcasting the changes",LOG_LEVEL_INFO);Logger(reason,LOG_LEVEL_VERBOSE)}else{Logger("Broadcasting the changes has been finished",LOG_LEVEL_INFO);Logger(reason,LOG_LEVEL_VERBOSE)}null==(_a7=this.changes)||_a7.cancel();null==(_b3=this.changes)||_b3.removeAllListeners();this.changes=void 0;this._isBroadcasting=!1;this.dispatchStatus()};this.changes.on("error",closeChanges);this.changes.on("complete",closeChanges);fireAndForget((async()=>await this.notifyProgress()))}get knownAdvertisements(){var _a7,_b3;return null!=(_b3=null==(_a7=this.server)?void 0:_a7.knownAdvertisements)?_b3:[]}async sync(remotePeer,showNotice=!1){const from=await this.replicateFrom(remotePeer,showNotice);if(!from||from.error){Logger("Error while replicating from the remote",LOG_LEVEL_VERBOSE);Logger(from.error,LOG_LEVEL_VERBOSE);return from}const logLevel=showNotice?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO;Logger(`P2P Replication has been requested to ${remotePeer}`,logLevel,"p2p-replicator");const res2=await this.requestSynchroniseToPeer(remotePeer);res2.ok&&Logger("P2P Replication has been done",logLevel,"p2p-replicator");if(res2.error){Logger("Error while syncing from the remote",logLevel,"p2p-replicator");Logger(res2.error,LOG_LEVEL_VERBOSE)}}async replicateTo(){await this.makeSureOpened();const remotePeer=await this.selectPeer();if(remotePeer){Logger(`P2P Replicating to ${remotePeer}`,LOG_LEVEL_INFO);try{if(this._replicateToPeers.has(remotePeer)){Logger(`Replication to ${remotePeer} is already in progress`,LOG_LEVEL_VERBOSE);return}this._replicateToPeers.add(remotePeer);this.dispatchStatus();return await this.requestSynchroniseToPeer(remotePeer)}finally{this._replicateToPeers.delete(remotePeer);this.dispatchStatus()}}else Logger("No peer selected",LOG_LEVEL_VERBOSE)}dispatchReplicationProgress(peerId,info3){this.onReplicationProgress(peerId,info3)}onReplicationProgress(peerId,info3){var _a7,_b3;const stat={peerId,peerName:(null==(_b3=null==(_a7=this.server)?void 0:_a7._knownAdvertisements.get(peerId))?void 0:_b3.name)||peerId,fetching:{max:0,current:0,isActive:!1}};info3&&(stat.fetching={max:info3.maxSeqInBatch,current:info3.lastSeq,isActive:!0});eventHub.emitEvent("p2p-replicator-progress",stat);return!0}onProgressAcknowledged(peerId,info3){var _a7,_b3;const ack={peerId,peerName:(null==(_b3=null==(_a7=this.server)?void 0:_a7._knownAdvertisements.get(peerId))?void 0:_b3.name)||peerId,sending:{max:0,current:0,isActive:!1}};info3&&(ack.sending={max:info3.maxSeqInBatch,current:info3.lastSeq,isActive:!0});eventHub.emitEvent("p2p-replicator-progress",ack);return!0}acknowledgeProgress(remotePeerId,info3){this.server&&this.server.getConnection(remotePeerId).invokeRemoteFunction("onProgressAcknowledged",[this.server.serverPeerId,info3],500)}async replicateFrom(remotePeer,showNotice=!1,fromStart=!1){const logLevel=showNotice?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO;Logger(`P2P Requesting Authentication to ${remotePeer}`,logLevel,"p2p-replicator");if(!0!==await this.requestAuthenticate(remotePeer)){Logger("Peer rejected the connection",LOG_LEVEL_NOTICE,"p2p-replicator");return{error:new Error("Peer rejected the connection")}}if(!0!==await this.checkTweakValues(remotePeer)){Logger("Tweak values are not matched",LOG_LEVEL_NOTICE,"p2p-replicator");return{error:new Error("Tweak values are not matched")}}Logger(`P2P Replicating from ${remotePeer}`,logLevel,"p2p-replicator");if(this._replicateFromPeers.has(remotePeer)){Logger(`Replication from ${remotePeer} is already in progress`,LOG_LEVEL_NOTICE,"p2p-replicator");return{error:new Error("Replication from this peer is already in progress")}}this._replicateFromPeers.add(remotePeer);this.dispatchStatus();try{if(!this.server)throw new Error("Server is not available");const remoteDB=this.server.getConnection(remotePeer).remoteDB;await async function replicateShim(targetDB,sourceDB,progress,option={}){try{const targetDBInfo=await targetDB.info(),sourceDBInfo=await sourceDB.info(),sourceMaxSeq=sourceDBInfo.update_seq,maxNumSeq=Number.parseInt(`${sourceMaxSeq}`.split("-")[0]);await serialized(`replication-${targetDBInfo.db_name}-${sourceDBInfo.db_name}`,(async()=>{var _a7,_b3,_c2;Logger(`Replication from ${sourceDBInfo.db_name} to ${targetDBInfo.db_name}\nSource: ${sourceDBInfo.db_name} (${sourceDBInfo.update_seq})\nTarget: ${targetDBInfo.db_name} (${targetDBInfo.update_seq})`,LOG_LEVEL_VERBOSE);const targetDBName=targetDBInfo.db_name,sourceDBName=sourceDBInfo.db_name,sourceCheckpointID=`_local/replication-checkpoint-mark-${targetDBName}-${sourceDBName}`,sourceCheckpointData=await upsert(sourceDB,sourceCheckpointID,(doc=>{var _a8;const previousMark=null!=(_a8=doc.mark)?_a8:(new Date).getTime().toString(),mark2=option.rewind?(new Date).getTime().toString():previousMark;return{...doc,mark:mark2}}));Logger(`Replication from ${sourceDBName} to ${targetDBName} with mark ${sourceCheckpointData.mark}`,LOG_LEVEL_VERBOSE);const targetCheckpointID=`_local/replication-checkpoint-${targetDBName}-${sourceCheckpointData.mark}`;let since=(await upsert(targetDB,targetCheckpointID,(doc=>{var _a8;return{...doc,since:null!=(_a8=doc.since)?_a8:""}}))).since;Logger(`Replication from ${sourceDBName} to ${targetDBName} / since ${since}`,LOG_LEVEL_VERBOSE);const batch_size=null!=(_a7=option.batch_size)?_a7:33;for(;;){const changes3=await sourceDB.changes({since,style:"all_docs",limit:batch_size});if(0===changes3.results.length)break;if(null==(_c2=null==(_b3=option.controller)?void 0:_b3.signal)?void 0:_c2.aborted)break;const changesResults=changes3.results,diffCheckParam=changesResults.map((e3=>[e3.id,e3.changes.map((e4=>e4.rev))])).reduce(((acc,[id,revs])=>{var _a8;return{...acc,[id]:[...null!=(_a8=acc[id])?_a8:[],...revs]}}),{}),diff=await targetDB.revsDiff(diffCheckParam),request2=Object.entries(diff).filter((e3=>void 0!==e3[1].missing)).map((e3=>[e3[0],e3[1].missing])).map((([id,revs])=>revs.map((rev3=>({id,rev:rev3}))))).flat();if(0!==request2.length){const fetchedMissingDocs=(await sourceDB.bulkGet({docs:request2,revs:!0})).results.map((e3=>e3.docs)).flat().filter((e3=>"ok"in e3)).map((e3=>e3.ok)),processedDocs=(await targetDB.bulkDocs(fetchedMissingDocs,{new_edits:!1}),(await targetDB.bulkGet({docs:[...new Set(changesResults.map((e3=>({id:e3.id}))))]})).results.map((e3=>e3.docs)).flat().filter((e3=>"ok"in e3)).map((e3=>e3.ok)).map((e3=>({doc:e3,seq:Math.max.apply(void 0,[changesResults.filter((e22=>e22.id===e3._id)).map((e22=>`${e22.seq}`.split("-")[0])).map((e22=>parseInt(e22))).reduce(((a2,b3)=>Math.max(a2,b3)),0),0])}))).sort(((a2,b3)=>a2.seq-b3.seq)).map((e3=>e3.doc))),allSecs=Number.parseInt(`${changes3.last_seq}`.split("-")[0]);try{await progress(processedDocs,{lastSeq:allSecs,maxSeqInBatch:maxNumSeq})}catch(ex){Logger("Failed to process the progress on shim-replication");Logger(ex,LOG_LEVEL_VERBOSE)}since=changes3.last_seq}else since=changes3.last_seq;await upsert(targetDB,targetCheckpointID,(doc=>({...doc,since})))}}))}catch(ex){Logger("Failed to replicate the database",LOG_LEVEL_VERBOSE);Logger(ex,LOG_LEVEL_VERBOSE)}Logger("Replication has been completed",LOG_LEVEL_VERBOSE)}(this.db,remoteDB,(async(docs,info3)=>{await this._env.processReplicatedDocs(docs);this.dispatchReplicationProgress(remotePeer,info3);this.acknowledgeProgress(remotePeer,info3);this.notifyProgress(remotePeer);Logger(`P2P Replication from ${remotePeer}\n${info3.lastSeq} / ${info3.maxSeqInBatch})`,logLevel,"p2p-replicator")}),{live:!1,rewind:fromStart});this.acknowledgeProgress(remotePeer,void 0);Logger(`P2P Replication from ${remotePeer} has been completed`,logLevel,"p2p-replicator")}catch(e3){Logger("Error while P2P replicating",logLevel,"p2p-replicator");Logger(e3,LOG_LEVEL_VERBOSE);return{error:e3}}finally{this._replicateFromPeers.delete(remotePeer);this.dispatchStatus()}return{ok:!0}}notifyProgress(excludePeerId){if(this._isBroadcasting&&this.server){for(const peer of this.server.knownAdvertisements){const peerId=peer.peerId;peerId!==excludePeerId&&serialized(`notifyProgress-${peerId}`,(async()=>{var _a7,_b3,_c2;if(await(null==(_a7=this.server)?void 0:_a7.isAcceptablePeer(peerId)))return await(null==(_c2=this.server)?void 0:_c2.getConnection(peerId).invokeRemoteFunction("onProgress",[null==(_b3=this.server)?void 0:_b3.serverPeerId],0));Logger(`Peer ${peerId} is not acceptable to notify progress`,LOG_LEVEL_VERBOSE)}))}return Promise.resolve()}}async requestBroadcastChanges(peerId){var _a7;return await(null==(_a7=this.server)?void 0:_a7.getConnection(peerId).invokeRemoteFunction("requestBroadcasting",[this.server.serverPeerId],0))}async getRemoteIsBroadcasting(peerId){var _a7;return await(null==(_a7=this.server)?void 0:_a7.getConnection(peerId).invokeRemoteFunction("getIsBroadcasting",[],0))}watchPeer(peerId){this._watchingPeers.add(peerId);this.dispatchStatus()}unwatchPeer(peerId){this._watchingPeers.delete(peerId);this.dispatchStatus()}async onUpdateDatabase(fromPeerId){if(this._watchingPeers.has(fromPeerId)){Logger(`Progress notification from ${fromPeerId}`,LOG_LEVEL_VERBOSE);return await serialized(`onProgress-${fromPeerId}`,(async()=>await this.replicateFrom(fromPeerId)))}return!1}async getRemoteConfig(peerId){if(!this.server){Logger("Server is not available",LOG_LEVEL_NOTICE);return!1}const connection=this.server.getConnection(peerId),encryptedConfig=await connection.invokeRemoteFunction("getAllConfig",[this.server.serverPeerId],0),passphrase=await this.confirm.askString("Passphrase required",$msg("P2P.AskPassphraseForDecrypt"),"something you only know",!0);if(!passphrase||""==passphrase.trim()){Logger("Passphrase is required to decrypt the configuration. The config cannot be decrypted",LOG_LEVEL_NOTICE);return!1}try{return JSON.parse(await decrypt(encryptedConfig,passphrase,!1))}catch(e3){Logger("Error while decrypting the configuration",LOG_LEVEL_NOTICE);Logger(e3,LOG_LEVEL_VERBOSE);return!1}}async checkTweakValues(peerId){var _a7;if(!this.server){Logger("Server is not available",LOG_LEVEL_NOTICE);return!1}const peerPlatform=null==(_a7=this.server.knownAdvertisements.find((e3=>e3.peerId==peerId)))?void 0:_a7.platform;if(null==peerPlatform){Logger("Peer is not found",LOG_LEVEL_NOTICE);return!1}if("pseudo-replicator"===peerPlatform)return!0;const connection=this.server.getConnection(peerId),tweakValues=await connection.invokeRemoteObjectFunction("getTweakSettings",[this.server.serverPeerId],5e3),thisTweakValues=await this.getTweakSettings("");if(!isObjectDifferent(thisTweakValues,tweakValues))return!0;if(thisTweakValues.passphrase!==tweakValues.passphrase){Logger("Replication cancelled: Passphrase is not matched\nCannot replicate to a remote database until the problem is resolved.",LOG_LEVEL_NOTICE);return!1}Logger("Some mismatched configuration have been detected... Please check settings for efficient replication.",LOG_LEVEL_NOTICE);return!0}async replicateFromCommand(showResult=!1){null===await skipIfDuplicated("replicateFromCommand",(async()=>{var _a7;const logLevel=showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO;if(!this._env.settings.P2P_Enabled){Logger($msg("P2P.NotEnabled"),logLevel);return Promise.resolve(!1)}const peers=this._env.settings.P2P_SyncOnReplication.split(",").map((e3=>e3.trim())).filter((e3=>e3));if(0==peers.length){Logger($msg("P2P.NoAutoSyncPeers"),logLevel);return Promise.resolve(!1)}for(const peer of peers){const peerId=null==(_a7=this.knownAdvertisements.find((e3=>e3.name==peer)))?void 0:_a7.peerId;if(peerId){Logger($msg("P2P.SyncStartedWith",{name:peer}),logLevel);await this.sync(peerId,showResult)}else Logger($msg("P2P.SeemsOffline",{name:peer}),logLevel)}Logger($msg("P2P.SyncCompleted"),logLevel);return Promise.resolve(!0)}))&&Logger($msg("P2P.SyncAlreadyRunning"),LOG_LEVEL_NOTICE)}};P2PLogCollector=class{constructor(){this.p2pReplicationResult=new Map;this.p2pReplicationLine=reactiveSource("");eventHub.onEvent("p2p-advertisement-received",(data=>{this.p2pReplicationResult.set(data.peerId,{peerId:data.peerId,peerName:data.name,fetching:{current:0,max:0,isActive:!1},sending:{current:0,max:0,isActive:!1}});this.updateP2PReplicationLine()}));eventHub.onEvent("p2p-connected",(()=>{this.p2pReplicationResult.clear();this.updateP2PReplicationLine()}));eventHub.onEvent("p2p-disconnected",(()=>{this.p2pReplicationResult.clear();this.updateP2PReplicationLine()}));eventHub.onEvent("p2p-device-leaved",(peerId=>{this.p2pReplicationResult.delete(peerId);this.updateP2PReplicationLine()}));eventHub.onEvent("p2p-replicator-progress",(data=>{const prev=this.p2pReplicationResult.get(data.peerId)||{peerId:data.peerId,peerName:data.peerName,fetching:{current:0,max:0,isActive:!1},sending:{current:0,max:0,isActive:!1}};"fetching"in data&&(data.fetching.isActive?prev.fetching=data.fetching:prev.fetching.isActive=!1);"sending"in data&&(data.sending.isActive?prev.sending=data.sending:prev.sending.isActive=!1);this.p2pReplicationResult.set(data.peerId,prev);this.updateP2PReplicationLine()}))}updateP2PReplicationLine(){const p2pReplicationResultX=[...this.p2pReplicationResult.values()].sort(((a2,b3)=>a2.peerId.localeCompare(b3.peerId))),renderProgress=(current,max3)=>current==max3?`${current}`:`${current} (${max3})`,line=p2pReplicationResultX.map((e3=>`${e3.fetching.isActive||e3.sending.isActive?"⚡":"💤"} ${e3.peerName} ↑ ${renderProgress(e3.sending.current,e3.sending.max)} ↓ ${renderProgress(e3.fetching.current,e3.fetching.max)} `)).join("\n");this.p2pReplicationLine.value=line}};(function setGlobalLogFunction(logger2){_logger=logger2})(((message,level,key2)=>{const entry={message,level,key:key2};logStore.enqueue(entry)}));recentLogs=[];recentLogProcessor=new QueueProcessor((logs=>{recentLogs=[...recentLogs,...logs].splice(-200);logMessages.value=recentLogs}),{batchSize:25,delay:10,suspended:!1,concurrentLimit:1}).resumePipeLine();ModuleLog=class extends AbstractObsidianModule{constructor(){super(...arguments);this.registerView=this.plugin.registerView.bind(this.plugin);this.statusLog=reactiveSource("");this.notifies={};this.p2pLogCollector=new P2PLogCollector;this.nextFrameQueue=void 0;this.logLines=[]}observeForLogs(){function padLeftSpComputed(numI,mark){const formatted=reactiveSource("");let timer,maxLen=1;numI.onChanged((numX=>{const num2=numX.value,numLen=`${Math.abs(num2)}`.length+1;maxLen=maxLen<numLen?numLen:maxLen;timer&&clearTimeout(timer);0==num2&&(timer=setTimeout((()=>{formatted.value="";maxLen=1}),3e3));formatted.value=` ${mark}${`${padSpaces}${num2}`.slice(-maxLen)}`}));return computed((()=>formatted.value))}const padSpaces=" ".repeat(10),labelReplication=padLeftSpComputed(this.core.replicationResultCount,"📥"),labelDBCount=padLeftSpComputed(this.core.databaseQueueCount,"📄"),labelStorageCount=padLeftSpComputed(this.core.storageApplyingCount,"💾"),labelChunkCount=padLeftSpComputed(collectingChunks,"🧩"),labelPluginScanCount=padLeftSpComputed(pluginScanningCount,"🔌"),labelConflictProcessCount=padLeftSpComputed(this.core.conflictProcessQueueCount,"🔩"),labelHiddenFilesCount=padLeftSpComputed(reactive((()=>hiddenFilesEventCount.value-hiddenFilesProcessingCount.value)),"⚙️"),queueCountLabelX=reactive((()=>`${labelReplication()}${labelDBCount()}${labelStorageCount()}${labelChunkCount()}${labelPluginScanCount()}${labelHiddenFilesCount()}${labelConflictProcessCount()}`)),requestingStatLabel=computed((()=>0!=this.core.requestCount.value-this.core.responseCount.value?"📲 ":"")),replicationStatLabel=computed((()=>{const e3=this.core.replicationStat.value,sent=e3.sent,arrived=e3.arrived,maxPullSeq=e3.maxPullSeq,maxPushSeq=e3.maxPushSeq,lastSyncPullSeq=e3.lastSyncPullSeq,lastSyncPushSeq=e3.lastSyncPushSeq;let pushLast="",pullLast="",w2="";const labels={CONNECTED:"⚡",JOURNAL_SEND:"📦↑",JOURNAL_RECEIVE:"📦↓"};switch(e3.syncStatus){case"CLOSED":case"COMPLETED":case"NOT_CONNECTED":w2="⏹";break;case"STARTED":w2="🌀";break;case"PAUSED":w2="💤";break;case"CONNECTED":case"JOURNAL_SEND":case"JOURNAL_RECEIVE":w2=labels[e3.syncStatus]||"⚡";pushLast=0==lastSyncPushSeq?"":lastSyncPushSeq>=maxPushSeq?" (LIVE)":` (${maxPushSeq-lastSyncPushSeq})`;pullLast=0==lastSyncPullSeq?"":lastSyncPullSeq>=maxPullSeq?" (LIVE)":` (${maxPullSeq-lastSyncPullSeq})`;break;case"ERRORED":w2="⚠";break;default:w2="?"}return{w:w2,sent,pushLast,arrived,pullLast}})),labelProc=padLeftSpComputed(this.core.processing,"⏳"),labelPend=padLeftSpComputed(this.core.totalQueued,"🛫"),labelInBatchDelay=padLeftSpComputed(this.core.batched,"📬"),waitingLabel=computed((()=>`${labelProc()}${labelPend()}${labelInBatchDelay()}`)),statusLineLabel=computed((()=>{const{w:w2,sent,pushLast,arrived,pullLast}=replicationStatLabel(),queued=queueCountLabelX.value,waiting=waitingLabel(),networkActivity=requestingStatLabel(),p2p=this.p2pLogCollector.p2pReplicationLine.value;return{message:`${networkActivity}Sync: ${w2} ↑ ${sent}${pushLast} ↓ ${arrived}${pullLast}${waiting}${queued}${""==p2p?"":"\n"+p2p}`}})),statusBarLabels=reactive((()=>{const scheduleMessage=this.core.$$isReloadingScheduled()?"WARNING! RESTARTING OBSIDIAN IS SCHEDULED!\n":"",{message}=statusLineLabel();return{message,status:scheduleMessage+this.statusLog.value}}));this.statusBarLabels=statusBarLabels;const applyToDisplay=throttle((label=>{this.applyStatusBarText()}),20);statusBarLabels.onChanged((label=>applyToDisplay(label.value)))}$everyOnload(){eventHub.onEvent("leaf-active-changed",(()=>this.onActiveLeafChange()));eventHub.onceEvent(EVENT_LAYOUT_READY,(()=>this.onActiveLeafChange()));return Promise.resolve(!0)}adjustStatusDivPosition(){const mdv=this.app.workspace.getMostRecentLeaf();if(mdv&&this.statusDiv){this.statusDiv.remove();const container=mdv.view.containerEl;container.insertBefore(this.statusDiv,container.lastChild)}}async getActiveFileStatus(){const thisFile=this.app.workspace.getActiveFile();return thisFile?this.core.$$shouldCheckCaseInsensitive()&&this.core.storageAccess.getFiles().map((e3=>e3.path)).filter((e3=>e3.toLowerCase()==thisFile.path.toLowerCase())).length>1?"Not synchronised: There are multiple files with the same name":await this.core.$$isTargetFile(thisFile.path)?this.core.$$isFileSizeExceeded(thisFile.stat.size)?"Not synchronised: File size exceeded":"":"Not synchronised: not a target file":""}async setFileStatus(){this.messageArea.innerText=await this.getActiveFileStatus()}onActiveLeafChange(){fireAndForget((async()=>{this.adjustStatusDivPosition();await this.setFileStatus()}))}applyStatusBarText(){if(!this.nextFrameQueue){this.nextFrameQueue=requestAnimationFrame((()=>{var _a7,_b3,_c2;this.nextFrameQueue=void 0;const{message,status}=this.statusBarLabels.value,newMsg=message;let newLog=(null==(_a7=this.settings)?void 0:_a7.showOnlyIconsOnEditor)?"":status;const moduleTagEnd=newLog.indexOf("] ");-1!=moduleTagEnd&&(newLog=newLog.substring(moduleTagEnd+2));null==(_b3=this.statusBar)||_b3.setText(newMsg.split("\n")[0]);if((null==(_c2=this.settings)?void 0:_c2.showStatusOnEditor)&&this.statusDiv){if(this.settings.showLongerLogInsideEditor){const now3=(new Date).getTime();this.logLines=this.logLines.filter((e3=>e3.ttl>now3));const minimumNext=this.logLines.reduce(((a2,b3)=>a2<b3.ttl?a2:b3.ttl),Number.MAX_SAFE_INTEGER);this.logLines.length>0&&setTimeout((()=>this.applyStatusBarText()),minimumNext-now3);const recentLogs2=this.logLines.map((e3=>e3.message)).reverse().join("\n");isDirty("recentLogs",recentLogs2)&&(this.logHistory.innerText=recentLogs2)}isDirty("newMsg",newMsg)&&(this.statusLine.innerText=newMsg);isDirty("newLog",newLog)&&(this.logMessage.innerText=newLog)}}));scheduleTask("log-hide",3e3,(()=>{this.statusLog.value=""}))}}$allStartOnUnload(){var _a7;this.statusDiv&&this.statusDiv.remove();null==(_a7=document.querySelectorAll(".livesync-status"))||_a7.forEach((e3=>e3.remove()));return Promise.resolve(!0)}$everyOnloadStart(){(0,import_obsidian.addIcon)("view-log",'<g transform="matrix(1.28 0 0 1.28 -131 -411)" fill="currentColor" fill-rule="evenodd">\n <path d="m103 330h76v12h-76z"/>\n <path d="m106 346v44h70v-44zm45 16h-20v-8h20z"/>\n </g>');this.addRibbonIcon("view-log",$msg("moduleLog.showLog"),(()=>{this.core.$$showView("log-log")})).addClass("livesync-ribbon-showlog");this.addCommand({id:"view-log",name:"Show log",callback:()=>{this.core.$$showView("log-log")}});this.registerView("log-log",(leaf=>new LogPaneView(leaf,this.plugin)));return Promise.resolve(!0)}$everyOnloadAfterLoadSettings(){var _a7;logStore.pipeTo(new QueueProcessor((logs=>logs.forEach((e3=>this.core.$$addLog(e3.message,e3.level,e3.key)))),{suspended:!1,batchSize:20,concurrentLimit:1,delay:0})).startPipeline();eventHub.onEvent("file-renamed",(data=>{this.setFileStatus()}));document.querySelectorAll(".livesync-status").forEach((e3=>e3.remove()));this.observeForLogs();this.statusDiv=this.app.workspace.containerEl.createDiv({cls:"livesync-status"});this.statusLine=this.statusDiv.createDiv({cls:"livesync-status-statusline"});this.messageArea=this.statusDiv.createDiv({cls:"livesync-status-messagearea"});this.logMessage=this.statusDiv.createDiv({cls:"livesync-status-logmessage"});this.logHistory=this.statusDiv.createDiv({cls:"livesync-status-loghistory"});eventHub.onEvent(EVENT_LAYOUT_READY,(()=>this.adjustStatusDivPosition()));if(null==(_a7=this.settings)?void 0:_a7.showStatusOnStatusbar){this.statusBar=this.core.addStatusBarItem();this.statusBar.addClass("syncstatusbar")}this.adjustStatusDivPosition();return Promise.resolve(!0)}writeLogToTheFile(now3,vaultName,newMessage){fireAndForget((()=>serialized("writeLog",(async()=>{const time=now3.toISOString().split("T")[0],logDate=`${PREFIXMD_LOGFILE}${time}.md`;await this.core.storageAccess.isExists(normalizePath(logDate))||await this.core.storageAccess.appendHiddenFile(normalizePath(logDate),"```\n");await this.core.storageAccess.appendHiddenFile(normalizePath(logDate),vaultName+":"+newMessage+"\n")}))))}$$addLog(message,level=LOG_LEVEL_INFO,key2=""){var _a7,_b3,_c2;if(-1==level)return;if(level<LOG_LEVEL_INFO&&this.settings&&this.settings.lessInformationInLog)return;if(this.settings&&!this.settings.showVerboseLog&&level==LOG_LEVEL_VERBOSE)return;const vaultName=this.core.$$getVaultName(),now3=new Date,timestamp=now3.toLocaleString(),messageContent="string"==typeof message?message:message instanceof Error?`${message.name}:${message.message}`:JSON.stringify(message,null,2);message instanceof Error&&console.dir(message.stack);const newMessage=timestamp+"->"+messageContent;console.log(vaultName+":"+newMessage);(null==(_a7=this.settings)?void 0:_a7.showOnlyIconsOnEditor)||(this.statusLog.value=messageContent);(null==(_b3=this.settings)?void 0:_b3.writeLogToTheFile)&&this.writeLogToTheFile(now3,vaultName,newMessage);recentLogProcessor.enqueue(newMessage);this.logLines.push({ttl:now3.getTime()+3e3,message:newMessage});if(level>=LOG_LEVEL_NOTICE){key2||(key2=messageContent);if(key2 in this.notifies){(null==(_c2=this.notifies[key2].notice.noticeEl)?void 0:_c2.isShown())||(this.notifies[key2].notice=new import_obsidian.Notice(messageContent,0));cancelTask(`notify-${key2}`);if(key2==messageContent){this.notifies[key2].count++;this.notifies[key2].notice.setMessage(`(${this.notifies[key2].count}):${messageContent}`)}else this.notifies[key2].notice.setMessage(`${messageContent}`)}else{const notify=new import_obsidian.Notice(messageContent,0);this.notifies[key2]={count:0,notice:notify}}const timeout=5e3;key2.startsWith("keepalive-")&&-1===messageContent.indexOf(" ")||scheduleTask(`notify-${key2}`,timeout,(()=>{const notify=this.notifies[key2].notice;delete this.notifies[key2];try{notify.hide()}catch(e3){}}))}}};noticeIndex=0;LiveSyncCommands=class{constructor(plugin3){this._log=(msg,level=LOG_LEVEL_INFO,key2)=>{"string"==typeof msg&&level!==LOG_LEVEL_NOTICE&&(msg=`[${this.constructor.name}] ${msg}`);Logger(msg,level,key2)};this._verbose=(msg,key2)=>{this._log(msg,LOG_LEVEL_VERBOSE,key2)};this._info=(msg,key2)=>{this._log(msg,LOG_LEVEL_INFO,key2)};this._notice=(msg,key2)=>{this._log(msg,LOG_LEVEL_NOTICE,key2)};this._progress=(prefix="",level=LOG_LEVEL_NOTICE)=>{const key2="keepalive-progress-"+noticeIndex++;return{log:msg=>{this._log(prefix+msg,level,key2)},once:msg=>{this._log(prefix+msg,level)},done:(msg="Done")=>{this._log(prefix+msg+" ",level,key2)}}};this._debug=(msg,key2)=>{this._log(msg,LOG_LEVEL_VERBOSE,key2)};this.plugin=plugin3}get app(){return this.plugin.app}get settings(){return this.plugin.settings}get localDatabase(){return this.plugin.localDatabase}id2path(id,entry,stripPrefix2){return this.plugin.$$id2path(id,entry,stripPrefix2)}async path2id(filename,prefix){return await this.plugin.$$path2id(filename,prefix)}getPath(entry){return getPath2(entry)}_isMainReady(){return this.plugin.$$isReady()}_isMainSuspended(){return this.plugin.$$isSuspended()}_isDatabaseReady(){return this.plugin.$$isDatabaseReady()}};root_12=template('<div class="message svelte-dk5958">Just for a minute, please!</div> <div class="buttons svelte-dk5958"><button class="svelte-dk5958">Dismiss</button></div>',1);root_4=template('<label><input type="radio" name="disp" class="sls-setting-tab svelte-dk5958"> <div class="sls-setting-menu-btn svelte-dk5958"> </div></label>');root_6=template("<span> </span>");root_5=template('<div class="op-scrollable json-source svelte-dk5958"></div>');root_10=template('<button class="svelte-dk5958">Cancel</button>');root_2=template('<div class="options svelte-dk5958"></div> <!> <div class="infos svelte-dk5958"><table class="svelte-dk5958"><tbody class="svelte-dk5958"><tr class="svelte-dk5958"><th class="svelte-dk5958"> </th><td class="svelte-dk5958"><!> </td><td class="svelte-dk5958"> </td></tr><tr class="svelte-dk5958"><th class="svelte-dk5958"> </th><td class="svelte-dk5958"><!> </td><td class="svelte-dk5958"> </td></tr></tbody></table></div> <div class="buttons svelte-dk5958"><!> <button class="svelte-dk5958">Apply</button></div>',1);root2=template('<h2 class="svelte-dk5958"> </h2> <!>',1);$$css2={hash:"svelte-dk5958",code:".spacer.svelte-dk5958 {flex-grow:1;}.infos.svelte-dk5958 {display:flex;justify-content:space-between;margin:4px 0.5em;}.deleted.svelte-dk5958 {text-decoration:line-through;}.svelte-dk5958 {box-sizing:border-box;}.scroller.svelte-dk5958 {display:flex;flex-direction:column;overflow-y:scroll;max-height:60vh;user-select:text;-webkit-user-select:text;}.json-source.svelte-dk5958 {white-space:pre;height:auto;overflow:auto;min-height:var(--font-ui-medium);flex-grow:1;}"};delegate(["click"]);JsonResolveModal=class extends import_obsidian.Modal{constructor(app2,filename,docs,callback,nameA,nameB,defaultSelect,keepOrder,hideLocal,title="Conflicted Setting"){super(app2);this.title="Conflicted Setting";this.callback=callback;this.filename=filename;this.docs=docs;this.nameA=nameA||"";this.nameB=nameB||"";this.keepOrder=keepOrder||!1;this.defaultSelect=defaultSelect||"";this.title=title;this.hideLocal=null!=hideLocal&&hideLocal;(async function waitForSignal(id,timeout){return await globalSlipBoard.awaitNext("x-compatibility-signal",id,{timeout})!==TIMED_OUT_SIGNAL})(`cancel-internal-conflict:${filename}`).then((()=>this.close()))}async UICallback(keepRev,mergedStr){this.callback&&await this.callback(keepRev,mergedStr);this.close();this.callback=void 0}onOpen(){const{contentEl}=this;this.titleEl.setText(this.title);contentEl.empty();null==this.component&&(this.component=mount(JsonResolvePane,{target:contentEl,props:{docs:this.docs,filename:this.filename,nameA:this.nameA,nameB:this.nameB,defaultSelect:this.defaultSelect,keepOrder:this.keepOrder,hideLocal:this.hideLocal,callback:(keepRev,mergedStr)=>this.UICallback(keepRev,mergedStr)}}))}onClose(){const{contentEl}=this;contentEl.empty();null!=this.callback&&this.callback(void 0);if(null!=this.component){unmount(this.component);this.component=void 0}}};HiddenFileSync=class extends LiveSyncCommands{constructor(){super(...arguments);this.periodicInternalFileScanProcessor=new PeriodicProcessor(this.plugin,(async()=>this._isThisModuleEnabled()&&this._isDatabaseReady()&&await this.scanAllStorageChanges(!1)));this.shouldSkipFile=[];this.semaphore=Semaphore(10);this.conflictResolutionProcessor=new QueueProcessor((async paths=>{var _a7,_b3,_c2;const path2=paths[0];(function sendSignal(id){globalSlipBoard.submit("x-compatibility-signal",id)})(`cancel-internal-conflict:${path2}`);try{const id=await this.path2id(path2,ICHeader),doc=await this.localDatabase.getRaw(id,{conflicts:!0});if(void 0===doc._conflicts)return[];if(0==doc._conflicts.length)return[];this._log(`Hidden file conflicted:${path2}`);const conflicts=doc._conflicts.sort(((a2,b3)=>Number(a2.split("-")[0])-Number(b3.split("-")[0]))),revA=doc._rev,revB=conflicts[0];if(path2.endsWith(".json")){const conflictedRev=conflicts[0],conflictedRevNo=Number(conflictedRev.split("-")[0]),commonBase=null!=(_c2=null==(_b3=null==(_a7=(await this.localDatabase.getRaw(id,{revs_info:!0}))._revs_info)?void 0:_a7.filter((e3=>"available"==e3.status&&Number(e3.rev.split("-")[0])<conflictedRevNo)).first())?void 0:_b3.rev)?_c2:"",result=await this.plugin.localDatabase.mergeObject(doc.path,commonBase,doc._rev,conflictedRev);if(result){this._log(`Object merge:${path2}`,LOG_LEVEL_INFO);const filename=stripAllPrefixes(path2);await this.ensureDir(filename);const stat=await this.writeFile(filename,result);if(!stat)throw new Error(`conflictResolutionProcessor: Failed to stat file ${filename}`);await this.storeInternalFileToDatabase({path:filename,...stat});await this.extractInternalFileFromDatabase(filename);await this.localDatabase.removeRevision(id,revB);this.conflictResolutionProcessor.enqueue(path2);return[]}this._log("Object merge is not applicable.",LOG_LEVEL_VERBOSE);return[{path:path2,revA,revB,id,doc}]}await this.resolveByNewerEntry(id,path2,doc,revA,revB);return[]}catch(ex){this._log(`Failed to resolve conflict (Hidden): ${path2}`);this._log(ex,LOG_LEVEL_VERBOSE);return[]}}),{suspended:!1,batchSize:1,concurrentLimit:5,delay:10,keepResultUntilDownstreamConnected:!0,yieldThreshold:10,pipeTo:new QueueProcessor((async results=>{const{id,doc,path:path2,revA,revB}=results[0],prefixedPath=addPrefix(path2,ICHeader),docAMerge=await this.localDatabase.getDBEntry(prefixedPath,{rev:revA}),docBMerge=await this.localDatabase.getDBEntry(prefixedPath,{rev:revB});0==docAMerge||0==docBMerge?await this.resolveByNewerEntry(id,path2,doc,revA,revB):await this.showJSONMergeDialogAndMerge(docAMerge,docBMerge)&&this.conflictResolutionProcessor.enqueue(path2)}),{suspended:!1,batchSize:1,concurrentLimit:1,delay:10,keepResultUntilDownstreamConnected:!1,yieldThreshold:10})});this.queuedNotificationFiles=new Set;this.ignorePatterns=[]}_isThisModuleEnabled(){return this.plugin.settings.syncInternalFiles}get kvDB(){return this.plugin.kvDB}getConflictedDoc(path2,rev3){return this.plugin.localDatabase.getConflictedDoc(path2,rev3)}onunload(){var _a7;null==(_a7=this.periodicInternalFileScanProcessor)||_a7.disable()}onload(){this.plugin.addCommand({id:"livesync-sync-internal",name:"(re)initialise hidden files between storage and database",callback:()=>{this.isReady()&&this.initialiseInternalFileSync("safe",!0)}});this.plugin.addCommand({id:"livesync-scaninternal-storage",name:"Scan hidden file changes on the storage",callback:()=>{this.isReady()&&this.scanAllStorageChanges(!0)}});this.plugin.addCommand({id:"livesync-scaninternal-database",name:"Scan hidden file changes on the local database",callback:()=>{this.isReady()&&this.scanAllDatabaseChanges(!0)}});this.plugin.addCommand({id:"livesync-internal-scan-offline-changes",name:"Scan and apply all offline hidden-file changes",callback:()=>{this.isReady()&&this.applyOfflineChanges(!0)}});eventHub.onEvent("setting-saved",(()=>{this.updateSettingCache()}))}async $everyOnInitializeDatabase(db){this._fileInfoLastProcessed=await autosaveCache(this.kvDB,"hidden-file-lastProcessed");this._databaseInfoLastProcessed=await autosaveCache(this.kvDB,"hidden-file-lastProcessed-database");this._fileInfoLastKnown=await autosaveCache(this.kvDB,"hidden-file-lastKnown");return!0}async $everyOnDatabaseInitialized(showNotice){if(this._isThisModuleEnabled())if(0==this._fileInfoLastProcessed.size&&0==this._fileInfoLastProcessed.size){this._log("No cache found. Performing startup scan.",LOG_LEVEL_VERBOSE);await this.performStartupScan(!0)}else await this.performStartupScan(showNotice);return!0}async $everyBeforeReplicate(showNotice){this._isThisModuleEnabled()&&this._isDatabaseReady()&&this.settings.syncInternalFilesBeforeReplication&&!this.settings.watchInternalFileChanges&&await this.scanAllStorageChanges(showNotice);return!0}$everyOnloadAfterLoadSettings(){this.updateSettingCache();return Promise.resolve(!0)}updateSettingCache(){const ignorePatterns=this.settings.syncInternalFilesIgnorePatterns.replace(/\n| /g,"").split(",").filter((e3=>e3)).map((e3=>new RegExp(e3,"i")));this.ignorePatterns=ignorePatterns;this.shouldSkipFile=[];const configDir=normalizePath(this.app.vault.configDir),shouldSKip=this.settings.usePluginSync?Object.values(this.settings.pluginSyncExtendedSetting).filter((e3=>e3.mode==MODE_SELECTIVE||e3.mode==MODE_PAUSED)).map((e3=>e3.files)).flat().map((e3=>`${configDir}/${e3}`.toLowerCase())):[];this.shouldSkipFile=shouldSKip;this._log(`Hidden file will skip ${this.shouldSkipFile.length} files`,LOG_LEVEL_INFO)}isReady(){return!!this._isMainReady&&!this._isMainSuspended()&&!!this._isThisModuleEnabled()}async performStartupScan(showNotice){await this.applyOfflineChanges(showNotice)}async $everyOnResumeProcess(){var _a7;null==(_a7=this.periodicInternalFileScanProcessor)||_a7.disable();if(this._isMainSuspended())return!0;this._isThisModuleEnabled()&&await this.performStartupScan(!1);this.periodicInternalFileScanProcessor.enable(this._isThisModuleEnabled()&&this.settings.syncInternalFilesInterval?1e3*this.settings.syncInternalFilesInterval:0);return!0}$everyRealizeSettingSyncMode(){var _a7;null==(_a7=this.periodicInternalFileScanProcessor)||_a7.disable();if(this._isMainSuspended())return Promise.resolve(!0);if(!this.plugin.$$isReady())return Promise.resolve(!0);this.periodicInternalFileScanProcessor.enable(this._isThisModuleEnabled()&&this.settings.syncInternalFilesInterval?1e3*this.settings.syncInternalFilesInterval:0);const ignorePatterns=this.settings.syncInternalFilesIgnorePatterns.replace(/\n| /g,"").split(",").filter((e3=>e3)).map((e3=>new RegExp(e3,"i")));this.ignorePatterns=ignorePatterns;return Promise.resolve(!0)}async $anyProcessOptionalFileEvent(path2){if(this.isReady())return await this.trackStorageFileModification(path2)}$anyGetOptionalConflictCheckMethod(path2){if(isInternalMetadata(path2)){this.queueConflictCheck(path2);return Promise.resolve(!0)}return Promise.resolve(!1)}async $anyProcessOptionalSyncFiles(doc){if(isInternalMetadata(doc._id)){if(this._isThisModuleEnabled()){const filename=getPath2(doc);if(await this.plugin.$$isTargetFile(filename)){await this.processReplicationResult(doc);return!0}this._log(`Skipped (Not target:${filename})`,LOG_LEVEL_VERBOSE);return!1}return!0}return!1}async loadFileWithInfo(path2){var _a7,_b3;const stat=await this.plugin.storageAccess.statHidden(path2);if(!stat)return{name:null!=(_a7=path2.split("/").pop())?_a7:"",path:path2,stat:{size:0,mtime:0,ctime:0,type:"file"},isInternal:!0,deleted:!0,body:createBlob(new Uint8Array(0))};const content=await this.plugin.storageAccess.readHiddenFileAuto(path2);return{name:null!=(_b3=path2.split("/").pop())?_b3:"",path:path2,stat,isInternal:!0,deleted:!1,body:createBlob(content)}}statToKey(stat){var _a7,_b3;return`${null!=(_a7=null==stat?void 0:stat.mtime)?_a7:0}-${null!=(_b3=null==stat?void 0:stat.size)?_b3:0}`}docToKey(doc){return`${doc.mtime}-${doc.size}-${doc._rev}-${doc._deleted||doc.deleted?"-0":"-1"}`}async fileToStatKey(file,stat=null){stat||(stat=await this.plugin.storageAccess.statHidden(file));return this.statToKey(stat)}updateLastProcessedFile(file,keySrc){const key2="string"==typeof keySrc?keySrc:this.statToKey(keySrc),splitted=key2.split("-");"0"!=splitted[0]&&this._fileInfoLastKnown.set(file,Number(splitted[0]));this._fileInfoLastProcessed.set(file,key2)}async updateLastProcessedAsActualFile(file,stat){stat||(stat=await this.plugin.storageAccess.statHidden(file));this._fileInfoLastProcessed.set(file,this.statToKey(stat))}resetLastProcessedFile(targetFiles){if(targetFiles)for(const key2 of targetFiles)this._fileInfoLastProcessed.delete(key2);else{this._log("Delete all processed mark.",LOG_LEVEL_VERBOSE);this._fileInfoLastProcessed.clear()}}getLastProcessedFileMTime(file){return this._fileInfoLastKnown.get(file)||0}getLastProcessedFileKey(file){return this._fileInfoLastProcessed.get(file)}getLastProcessedDatabaseKey(file){return this._databaseInfoLastProcessed.get(file)}updateLastProcessedDatabase(file,keySrc){const key2="string"==typeof keySrc?keySrc:this.docToKey(keySrc);this._databaseInfoLastProcessed.set(file,key2)}updateLastProcessed(path2,db,stat){this.updateLastProcessedDatabase(path2,db);this.updateLastProcessedFile(path2,this.statToKey(stat));const dbMTime=getComparingMTime(db),storageMTime=getComparingMTime(stat);0==dbMTime||0==storageMTime?unmarkChanges(path2):markChangesAreSame(path2,getComparingMTime(db),getComparingMTime(stat))}updateLastProcessedDeletion(path2,db){unmarkChanges(path2);db&&this.updateLastProcessedDatabase(path2,db);this.updateLastProcessedFile(path2,this.statToKey(null))}async ensureDir(path2){await this.plugin.storageAccess.isExistsIncludeHidden(path2)||await this.plugin.storageAccess.ensureDir(path2)}async writeFile(path2,data,opt){await this.plugin.storageAccess.writeHiddenFileAuto(path2,data,opt);return await this.plugin.storageAccess.statHidden(path2)}async __removeFile(path2){try{if(!await this.plugin.storageAccess.isExistsIncludeHidden(path2))return"ALREADY";if(await this.plugin.storageAccess.removeHidden(path2))return"OK"}catch(ex){this._log(`Failed to remove file:${path2}`);this._log(ex,LOG_LEVEL_VERBOSE)}return!1}async triggerEvent(path2){try{await this.plugin.storageAccess.triggerHiddenFile(path2)}catch(ex){this._log("Failed to call internal API(reconcileInternalFile)",LOG_LEVEL_VERBOSE);this._log(ex,LOG_LEVEL_VERBOSE)}}async updateLastProcessedAsActualDatabase(file,doc){const dbPath=addPrefix(file,ICHeader);doc||(doc=await this.localDatabase.getDBEntryMeta(dbPath));doc&&this._databaseInfoLastProcessed.set(file,this.docToKey(doc))}resetLastProcessedDatabase(targetFiles){if(targetFiles)for(const key2 of targetFiles)this._databaseInfoLastProcessed.delete(key2);else{this._log("Delete all processed mark.",LOG_LEVEL_VERBOSE);this._databaseInfoLastProcessed.clear()}}async adoptCurrentStorageFilesAsProcessed(targetFiles){const allFiles=await this.scanInternalFileNames(),files=targetFiles?allFiles.filter((e3=>targetFiles.some((t3=>-1!==e3.indexOf(t3))))):allFiles;for(const file of files)await this.updateLastProcessedAsActualFile(file)}async adoptCurrentDatabaseFilesAsProcessed(targetFiles){const allFiles=await this.getAllDatabaseFiles(),files=targetFiles?allFiles.filter((e3=>targetFiles.some((t3=>-1!==e3.path.indexOf(t3))))):allFiles;for(const file of files){const path2=stripAllPrefixes(this.getPath(file));await this.updateLastProcessedAsActualDatabase(path2,file)}}async serializedForEvent(file,fn){hiddenFilesEventCount.value++;const rel=await this.semaphore.acquire();try{return await serialized(`hidden-file-event:${file}`,(async()=>{hiddenFilesProcessingCount.value++;try{return await fn()}finally{hiddenFilesProcessingCount.value--}}))}finally{rel();hiddenFilesEventCount.value--}}async useStorageFiles(files,showNotice=!1,onlyNew=!1){return await this.trackScannedStorageChanges(files,showNotice,onlyNew,!0)}async trackScannedStorageChanges(processFiles,showNotice=!1,onlyNew=!1,forceWriteAll=!1,includeDeleted=!0){const logLevel=getLogLevel(showNotice),p4=this._progress("[⚙ Storage -> DB ]\n",logLevel),notifyProgress=onlyInNTimes(100,(progress=>p4.log(`${progress}/${processFiles.length}`))),processes=processFiles.map((async(file,i2)=>{try{await this.trackStorageFileModification(file,onlyNew,forceWriteAll,includeDeleted);notifyProgress()}catch(ex){p4.once(`Failed to process storage change file:${file}`);this._log(ex,LOG_LEVEL_VERBOSE)}}));await Promise.all(processes);p4.done()}async scanAllStorageChanges(showNotice=!1,onlyNew=!1,forceWriteAll=!1,includeDeleted=!0){return await skipIfDuplicated("scanAllStorageChanges",(async()=>{const logLevel=getLogLevel(showNotice),p4=this._progress("[⚙ Scanning Storage -> DB ]\n",logLevel);p4.log("Scanning storage files...");const knownNames=[...this._fileInfoLastProcessed.keys()],existNames=await this.scanInternalFileNames(),files=new Set([...knownNames,...existNames]);this._log(`Known/Exist ${knownNames.length}/${existNames.length}, Totally ${files.size} files.`,LOG_LEVEL_VERBOSE);const taskNameAndMeta=[...files].map((async e3=>[e3,await this.plugin.storageAccess.statHidden(e3)])),processFiles=(await Promise.all(taskNameAndMeta)).filter((([path2,stat])=>!!forceWriteAll||this.getLastProcessedFileKey(path2)!=this.statToKey(stat))).map((([path2,stat])=>path2)),staticsMessage=`[Storage hidden file statics]\nKnown files: ${knownNames.length}\nActual files: ${existNames.length}\nAll files: ${files.size}\nOffline Changed files: ${processFiles.length}`;p4.once(staticsMessage);await this.trackScannedStorageChanges(processFiles,showNotice,onlyNew,forceWriteAll,includeDeleted);p4.done()}))}async trackStorageFileModification(path2,onlyNew=!1,forceWrite=!1,includeDeleted=!0){if(this.shouldSkipFile.some((e3=>e3.startsWith(path2.toLowerCase())))){this._log(`Hidden file skipped: ${path2} is synchronized in customization sync.`,LOG_LEVEL_VERBOSE);return!1}try{return await this.serializedForEvent(path2,(async()=>{let stat=await this.plugin.storageAccess.statHidden(path2);if(null!=stat&&"file"!=stat.type)return!1;const key2=await this.fileToStatKey(path2,stat),lastKey=this.getLastProcessedFileKey(path2);if(lastKey==key2){this._log(`${path2} Already processed.`,-1);return!0}const cache=await this.loadFileWithInfo(path2);if(getComparingMTime(cache.stat)!=getComparingMTime(stat)){this._log(`Hidden file:${path2} is changed.`,LOG_LEVEL_VERBOSE);stat=cache.stat}this.updateLastProcessedFile(path2,stat);const lastIsNotFound=!lastKey||lastKey.endsWith("-0-0"),nowIsNotFound=cache.deleted,type=lastIsNotFound&&nowIsNotFound?"invalid":nowIsNotFound?"delete":"modified";if("invalid"==type)return!1;const storageMTimeActual=getComparingMTime(stat),storageMTime=0==storageMTimeActual?this.getLastProcessedFileMTime(path2):storageMTimeActual;if(onlyNew){const prefixedFileName=addPrefix(path2,ICHeader),filesOnDB=await this.localDatabase.getDBEntryMeta(prefixedFileName);if(compareMTime(storageMTime,getComparingMTime(filesOnDB,includeDeleted))!=TARGET_IS_NEW){this._log(`Hidden file:${path2} is not new.`,LOG_LEVEL_VERBOSE);filesOnDB&&stat&&this.updateLastProcessed(path2,filesOnDB,stat);return!0}}if("delete"==type){this._log(`Deletion detected: ${path2}`);return await this.deleteInternalFileOnDatabase(path2,forceWrite)}if("modified"==type){this._log(`Modification detected:${path2}`,LOG_LEVEL_VERBOSE);const result=await this.storeInternalFileToDatabase(cache,forceWrite),resultText=void 0===result?"Nothing changed":result?"Updated":"Failed";this._log(`${resultText}: ${path2} ${resultText}`,LOG_LEVEL_VERBOSE);return result}}))}catch(ex){this._log(`Failed to process hidden file:${path2}`);this._log(ex,LOG_LEVEL_VERBOSE)}return!0}queueConflictCheck(path2){this.conflictResolutionProcessor.enqueue(path2)}async resolveConflictOnInternalFiles(){const conflicted=this.localDatabase.findEntries(ICHeader,"i;",{conflicts:!0});this.conflictResolutionProcessor.suspend();try{for await(const doc of conflicted)"_conflicts"in doc&&isInternalMetadata(doc._id)&&this.conflictResolutionProcessor.enqueue(doc.path)}catch(ex){this._log("something went wrong on resolving all conflicted internal files");this._log(ex,LOG_LEVEL_VERBOSE)}await this.conflictResolutionProcessor.startPipeline().waitForAllProcessed()}async resolveByNewerEntry(id,path2,currentDoc,currentRev,conflictedRev){var _a7;const conflictedDoc=await this.localDatabase.getRaw(id,{rev:conflictedRev}),delRev=getComparingMTime(currentDoc,!0)<getComparingMTime(conflictedDoc,!0)?currentRev:conflictedRev;await this.localDatabase.removeRevision(id,delRev);this._log(`Older one has been deleted:${path2}`);0===(null==(_a7=(await this.localDatabase.getRaw(id,{conflicts:!0}))._conflicts)?void 0:_a7.length)?await this.extractInternalFileFromDatabase(stripAllPrefixes(path2)):this.conflictResolutionProcessor.enqueue(path2)}showJSONMergeDialogAndMerge(docA,docB){return new Promise((res2=>{this._log("Opening data-merging dialog",LOG_LEVEL_VERBOSE);const docs=[docA,docB],strippedPath=stripAllPrefixes(docA.path),storageFilePath=strippedPath,storeFilePath=strippedPath,displayFilename=`${storeFilePath}`;new JsonResolveModal(this.app,storageFilePath,[docA,docB],(async(keep,result)=>{var _a7,_b3;try{let needFlush=!1;if(!result&&!keep){this._log(`Skipped merging: ${displayFilename}`);res2(!1);return}if(result||keep)for(const doc of docs)if(doc._rev!=keep&&await this.localDatabase.deleteDBEntry(this.getPath(doc),{rev:doc._rev})){this._log(`Conflicted revision has been deleted: ${displayFilename}`);needFlush=!0}if(!keep&&result){await this.plugin.storageAccess.isExistsIncludeHidden(storageFilePath)||await this.plugin.storageAccess.ensureDir(storageFilePath);const stat=await this.writeFile(storageFilePath,result);if(!stat)throw new Error("Stat failed");const mtime=getComparingMTime(stat);await this.storeInternalFileToDatabase({path:storageFilePath,mtime,ctime:null!=(_a7=null==stat?void 0:stat.ctime)?_a7:mtime,size:null!=(_b3=null==stat?void 0:stat.size)?_b3:0},!0);await this.triggerEvent(storageFilePath);this._log(`STORAGE <-- DB:${displayFilename}: written (hidden,merged)`)}needFlush&&(await this.extractInternalFileFromDatabase(storeFilePath,!1)?this._log(`STORAGE --\x3e DB:${displayFilename}: extracted (hidden,merged)`):this._log(`STORAGE --\x3e DB:${displayFilename}: extracted (hidden,merged) Failed`));res2(!0)}catch(ex){this._log("Could not merge conflicted json");this._log(ex,LOG_LEVEL_VERBOSE);res2(!1)}})).open()}))}async processReplicationResult(doc){const info3=function getDocProps(doc){const id=doc._id,shortenedId=id.substring(0,10),prefixedPath=getPath2(doc),path2=stripAllPrefixes(prefixedPath),rev3=doc._rev,revDisplay=rev3?displayRev(rev3):"0-NOREVS",shortenedPath=path2.substring(0,10);return{id,rev:rev3,revDisplay,prefixedPath,path:path2,isDeleted:doc._deleted||doc.deleted||!1,shortenedId,shortenedPath}}(doc),path2=info3.path,headerLine=`Tracking DB ${info3.path} (${info3.revDisplay}) :`,ret=await this.trackDatabaseFileModification(path2,headerLine);this._log(`${headerLine} Done: ${info3.shortenedId})`,LOG_LEVEL_VERBOSE);return ret}async trackScannedDatabaseChange(processFiles,showNotice=!1,onlyNew=!1,forceWriteAll=!1,includeDeletion=!0){const logLevel=getLogLevel(showNotice),p4=this._progress("[⚙ DB -> Storage ]\n",logLevel),notifyProgress=onlyInNTimes(100,(progress=>p4.log(`${progress}/${processFiles.length}`))),processes=processFiles.map((async file=>{try{const path2=stripAllPrefixes(this.getPath(file));await this.trackDatabaseFileModification(path2,"[Hidden file scan]",!forceWriteAll,onlyNew,file,includeDeletion);notifyProgress()}catch(ex){this._log(`Failed to process storage change file:${file}`,logLevel);this._log(ex,LOG_LEVEL_VERBOSE)}}));await Promise.all(processes);p4.done()}async applyOfflineChanges(showNotice){const logLevel=getLogLevel(showNotice);return await serialized("applyOfflineChanges",(async()=>{const p4=this._progress("[⚙ Apply untracked changes ]\n",logLevel);this._log("Track changes.",logLevel);p4.log("Enumerating local files...");const currentStorageFiles=await this.scanInternalFileNames();p4.log("Enumerating database files...");const currentDatabaseFiles=await this.getAllDatabaseFiles(),allDatabaseMap=Object.fromEntries(currentDatabaseFiles.map((e3=>[stripAllPrefixes(getPath2(e3)),e3]))),currentDatabaseFileNames=[...Object.keys(allDatabaseMap)],untrackedLocal=currentStorageFiles.filter((e3=>!this._fileInfoLastProcessed.has(e3))),untrackedDatabase=currentDatabaseFileNames.filter((e3=>!this._databaseInfoLastProcessed.has(e3))),bothUntracked=untrackedLocal.filter((e3=>-1!==untrackedDatabase.indexOf(e3)));p4.log("Applying untracked changes...");const stat=`Tracking statics:\nLocal files: ${currentStorageFiles.length}\nDatabase files: ${currentDatabaseFileNames.length}\nUntracked local files: ${untrackedLocal.length}\nUntracked database files: ${untrackedDatabase.length}\nCommon untracked files: ${bothUntracked.length}`;p4.once(stat);const semaphores=Semaphore(10),notifyProgress=onlyInNTimes(25,(progress=>p4.log(`${progress}/${bothUntracked.length}`))),allProcesses=bothUntracked.map((async file=>{notifyProgress();const rel=await semaphores.acquire();try{const fileStat=await this.plugin.storageAccess.statHidden(file);if(null==fileStat){this._log(`Unexpected error: Failed to stat file during applyOfflineChange :${file}`);return}const dbInfo=allDatabaseMap[file];if(dbInfo.deleted||dbInfo._deleted)return;const diff=compareMTime(getComparingMTime(fileStat),getComparingMTime(dbInfo));diff==BASE_IS_NEW?await this.trackStorageFileModification(file,!0):diff==TARGET_IS_NEW?await this.trackDatabaseFileModification(file,"[Apply]",!0,!0,dbInfo):diff==EVEN&&this.updateLastProcessed(file,dbInfo,fileStat)}finally{rel()}}));await Promise.all(allProcesses);await this.scanAllStorageChanges(showNotice);await this.scanAllDatabaseChanges(showNotice);p4.done()}))}async scanAllDatabaseChanges(showNotice=!1,onlyNew=!1,forceWriteAll=!1,includeDeletion=!0){return await skipIfDuplicated("scanAllDatabaseChanges",(async()=>{const databaseFiles=await this.getAllDatabaseFiles(),files=databaseFiles.filter((e3=>{const doc=e3,key2=this.docToKey(doc),path2=stripAllPrefixes(this.getPath(doc));return this.getLastProcessedDatabaseKey(path2)!=key2})),logLevel=getLogLevel(showNotice),staticsMessage=`[Database hidden file statics]\nAll files: ${databaseFiles.length}\nOffline Changed files: ${files.length}`;this._log(staticsMessage,logLevel,"scan-changes");return await this.trackScannedDatabaseChange(files,showNotice,onlyNew,forceWriteAll,includeDeletion)}))}async useDatabaseFiles(files,showNotice=!1,onlyNew=!1){const logLevel=getLogLevel(showNotice),p4=this._progress("[⚙ Scanning DB -> Storage ]\n",logLevel);p4.log("Scanning database files...");const notifyProgress=onlyInNTimes(25,(progress=>p4.log(`${progress}/${files.length}`))),processFiles=files.map((async file=>{try{const path2=stripAllPrefixes(this.getPath(file));await this.trackDatabaseFileModification(path2,"[Scanning]",!0,onlyNew,file);notifyProgress()}catch(ex){this._log(`Failed to process database changes:${file}`);this._log(ex,LOG_LEVEL_VERBOSE)}}));await Promise.all(processFiles);p4.done();return!0}async trackDatabaseFileModification(path2,headerLine,preventDoubleProcess=!1,onlyNew=!1,meta=!1,includeDeletion=!0){return await this.serializedForEvent(path2,(async()=>{try{const prefixedPath=addPrefix(path2,ICHeader),docMeta=meta||await this.localDatabase.getDBEntryMeta(prefixedPath,{conflicts:!0},!0);if(!1===docMeta){this._log(`${headerLine}: Failed to read detail of ${path2}`);throw new Error(`Failed to read detail ${path2}`)}if(docMeta._conflicts&&docMeta._conflicts.length>0){this.conflictResolutionProcessor.enqueue(path2);this._log(`${headerLine} Hidden file conflicted, enqueued to resolve`);return!0}await this.extractInternalFileFromDatabase(path2,!1,docMeta,preventDoubleProcess,onlyNew,includeDeletion)&&this._log(`${headerLine} Hidden file processed`)}catch(ex){this._log(`${headerLine} Failed to process hidden file`);this._log(ex,LOG_LEVEL_VERBOSE)}return!0}))}notifyConfigChange(){const updatedFolders=[...this.queuedNotificationFiles];this.queuedNotificationFiles.clear();try{const manifests=Object.values(this.app.plugins.manifests),enabledPlugins=this.app.plugins.enabledPlugins,modifiedManifests=manifests.filter((e3=>enabledPlugins.has(e3.id))).filter((e3=>{var _a7;return updatedFolders.indexOf(null!=(_a7=null==e3?void 0:e3.dir)?_a7:"")>=0}));for(const manifest of modifiedManifests){const updatePluginId=manifest.id,updatePluginName=manifest.name;this.plugin.confirm.askInPopup(`updated-${updatePluginId}`,`Files in ${updatePluginName} has been updated!\nPress {HERE} to reload ${updatePluginName}, or press elsewhere to dismiss this message.`,(anchor=>{anchor.text="HERE";anchor.addEventListener("click",(()=>{fireAndForget((async()=>{this._log(`Unloading plugin: ${updatePluginName}`,LOG_LEVEL_NOTICE,"plugin-reload-"+updatePluginId);await this.app.plugins.unloadPlugin(updatePluginId);await this.app.plugins.loadPlugin(updatePluginId);this._log(`Plugin reloaded: ${updatePluginName}`,LOG_LEVEL_NOTICE,"plugin-reload-"+updatePluginId)}))}))}))}}catch(ex){this._log("Error on checking plugin status.");this._log(ex,LOG_LEVEL_VERBOSE)}updatedFolders.indexOf(this.plugin.app.vault.configDir)>=0&&(this.plugin.$$isReloadingScheduled()||this.plugin.confirm.askInPopup("updated-any-hidden","Some setting files have been modified\nPress {HERE} to schedule a reload of Obsidian, or press elsewhere to dismiss this message.",(anchor=>{anchor.text="HERE";anchor.addEventListener("click",(()=>{this.plugin.$$scheduleAppReload()}))})))}queueNotification(key2){if(this.settings.suppressNotifyHiddenFilesChange)return;const configDir=this.plugin.app.vault.configDir;if(!key2.startsWith(configDir))return;const dirName=key2.split("/").slice(0,-1).join("/");this.queuedNotificationFiles.add(dirName);scheduleTask("notify-config-change",1e3,(()=>{this.notifyConfigChange()}))}async rebuildMerging(showNotice,targetFiles=!1){const logLevel=getLogLevel(showNotice),p4=this._progress("[⚙ Rebuild by Merge ]\n",logLevel);this._log("Rebuilding hidden files from the storage and the local database.",logLevel);p4.log("Enumerating local files...");const currentStorageFilesAll=await this.scanInternalFileNames(),currentStorageFiles=targetFiles?currentStorageFilesAll.filter((e3=>targetFiles.some((f4=>f4==e3)))):currentStorageFilesAll;p4.log("Enumerating database files...");const allDatabaseFiles=await this.getAllDatabaseFiles(),allDatabaseMap=new Map(allDatabaseFiles.map((e3=>[stripAllPrefixes(getPath2(e3)),e3]))),currentDatabaseFiles=targetFiles?allDatabaseFiles.filter((e3=>targetFiles.some((f4=>f4==stripAllPrefixes(getPath2(e3)))))):allDatabaseFiles,allFileNames=new Set([...currentStorageFiles,...currentDatabaseFiles.map((e3=>stripAllPrefixes(getPath2(e3))))]),storageToDatabase=[],databaseToStorage=[],eachProgress=onlyInNTimes(100,(progress=>p4.log(`Checking ${progress}/${allFileNames.size}`)));for(const file of allFileNames){eachProgress();const mtimeStorage=getComparingMTime(await this.plugin.storageAccess.statHidden(file)),dbEntry=allDatabaseMap.get(file),diff=compareMTime(mtimeStorage,getComparingMTime(dbEntry));diff==BASE_IS_NEW?storageToDatabase.push(file):diff==TARGET_IS_NEW?databaseToStorage.push(dbEntry):diff==EVEN&&storageToDatabase.push(file)}p4.once(`Storage to Database: ${storageToDatabase.length} files\n Database to Storage: ${databaseToStorage.length} files`);this.resetLastProcessedDatabase(targetFiles);this.resetLastProcessedFile(targetFiles);const processes=[this.useStorageFiles(storageToDatabase,showNotice,!1),this.useDatabaseFiles(databaseToStorage,showNotice,!1)];p4.log("Start processing...");await Promise.all(processes);p4.done();return[...allFileNames]}async rebuildFromStorage(showNotice,targetFiles=!1,onlyNew=!1){const logLevel=getLogLevel(showNotice);this._verbose("Rebuilding hidden files from the storage.");this._log("Rebuilding hidden files from the storage.",logLevel);const p4=this._progress("[⚙ Rebuild by Storage ]\n",logLevel);p4.log("Enumerating local files...");const currentFilesAll=await this.scanInternalFileNames(),currentFiles=targetFiles?currentFilesAll.filter((e3=>targetFiles.some((f4=>f4==e3)))):currentFilesAll;p4.once(`Storage to Database: ${currentFiles.length} files.`);p4.log("Start processing...");this.resetLastProcessedFile(targetFiles);await this.useStorageFiles(currentFiles,showNotice,onlyNew);p4.done();return currentFiles}async getAllDatabaseFiles(){return(await this.localDatabase.allDocsRaw({startkey:ICHeader,endkey:"i;",include_docs:!0})).rows.filter((e3=>isInternalMetadata(e3.id))).map((e3=>e3.doc))}async rebuildFromDatabase(showNotice,targetFiles=!1,onlyNew=!1){const logLevel=getLogLevel(showNotice);this._verbose("Rebuilding hidden files from the local database.");const p4=this._progress("[⚙ Rebuild by Database ]\n",logLevel);p4.log("Enumerating database files...");const allFiles=await this.getAllDatabaseFiles(),currentFiles=targetFiles?allFiles.filter((e3=>targetFiles.some((f4=>f4==stripAllPrefixes(getPath2(e3)))))):allFiles;p4.once(`Database to Storage: ${currentFiles.length} files.`);this.resetLastProcessedDatabase(targetFiles);p4.log("Start processing...");await this.useDatabaseFiles(currentFiles,showNotice,onlyNew);p4.done();return currentFiles}async initialiseInternalFileSync(direction,showMessage,targetFilesSrc=!1){const logLevel=showMessage?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,p4=this._progress("[⚙ Initialise]\n",logLevel);p4.log("Initialising hidden files sync...");const targetFiles=!!targetFilesSrc&&targetFilesSrc.map((e3=>stripAllPrefixes(e3)));if("pushForce"==direction||"push"==direction){const onlyNew="push"==direction;p4.log("Started: Storage --\x3e Database "+(onlyNew?"(Only New)":""));const updatedFiles=await this.rebuildFromStorage(showMessage,targetFiles,onlyNew);await this.adoptCurrentStorageFilesAsProcessed(updatedFiles);await this.adoptCurrentDatabaseFilesAsProcessed(updatedFiles);await this.scanAllStorageChanges(showMessage,!0,!1);await this.scanAllDatabaseChanges(showMessage,!0,!1)}if("pullForce"==direction||"pull"==direction){const onlyNew="pull"==direction;p4.log("Started: Database --\x3e Storage "+(onlyNew?"(Only New)":""));const updatedFiles=(await this.rebuildFromDatabase(showMessage,targetFiles,onlyNew)).map((e3=>stripAllPrefixes(getPath2(e3))));await this.adoptCurrentStorageFilesAsProcessed(updatedFiles);await this.adoptCurrentDatabaseFilesAsProcessed(updatedFiles);await this.scanAllDatabaseChanges(showMessage,!0,!1);await this.scanAllStorageChanges(showMessage,!0,!1)}if("safe"==direction){p4.log("Started: Database <--\x3e Storage (by modified date)");const updatedFiles=await this.rebuildMerging(showMessage,targetFiles);await this.adoptCurrentStorageFilesAsProcessed(updatedFiles);await this.adoptCurrentDatabaseFilesAsProcessed(updatedFiles);await this.scanAllStorageChanges(showMessage,!0,!1);await this.scanAllDatabaseChanges(showMessage,!0,!1)}p4.done()}async __loadBaseSaveData(file,includeContent=!0){const prefixedFileName=addPrefix(file,ICHeader),id=await this.path2id(prefixedFileName,ICHeader);try{const old=includeContent?await this.localDatabase.getDBEntry(prefixedFileName,void 0,!1,!0):await this.localDatabase.getDBEntryMeta(prefixedFileName,{conflicts:!0},!0);return!1===old?{_id:id,data:[],path:prefixedFileName,mtime:0,ctime:0,datatype:"newnote",children:[],size:0,deleted:!1,type:"newnote",eden:{}}:old}catch(ex){this._log("Getting base save data failed");this._log(ex,LOG_LEVEL_VERBOSE);return!1}}async storeInternalFileToDatabase(file,forceWrite=!1){const storeFilePath=stripAllPrefixes(file.path),storageFilePath=file.path;if(await this.plugin.$$isIgnoredByIgnoreFiles(storageFilePath))return;const prefixedFileName=addPrefix(storeFilePath,ICHeader);return await serialized("file-"+prefixedFileName,(async()=>{try{const fileInfo="stat"in file&&"body"in file?file:await this.loadFileWithInfo(storeFilePath);if(fileInfo.deleted)throw new Error(`Hidden file:${storeFilePath} is deleted. This should not be occurred.`);const baseData=await this.__loadBaseSaveData(storeFilePath,!0);if(!1===baseData)throw new Error("Failed to load base data");if(baseData._rev&&!forceWrite&&await isDocContentSame(readAsBlob(baseData),fileInfo.body)){this.updateLastProcessed(storeFilePath,baseData,fileInfo.stat);return}const saveData={...baseData,data:fileInfo.body,mtime:fileInfo.stat.mtime,size:fileInfo.stat.size,children:[],deleted:!1,type:baseData.datatype},ret=await this.localDatabase.putDBEntry(saveData);if(ret&&ret.ok){saveData._rev=ret.rev;this.updateLastProcessed(storeFilePath,saveData,fileInfo.stat)}const success=ret&&ret.ok;this._log(`STORAGE --\x3e DB:${storageFilePath}: (hidden) ${success?"Done":"Failed"}`);return success}catch(ex){this._log(`STORAGE --\x3e DB:${storageFilePath}: (hidden) Failed`);this._log(ex,LOG_LEVEL_VERBOSE);return!1}}))}async deleteInternalFileOnDatabase(filenameSrc,forceWrite=!1){const storeFilePath=filenameSrc,storageFilePath=filenameSrc,displayFileName=filenameSrc,prefixedFileName=addPrefix(storeFilePath,ICHeader),mtime=(new Date).getTime();if(!await this.plugin.$$isIgnoredByIgnoreFiles(storageFilePath))return await serialized("file-"+prefixedFileName,(async()=>{try{const baseData=await this.__loadBaseSaveData(storeFilePath,!1);if(!1===baseData)throw new Error("Failed to load base data during deleting");if(void 0!==baseData._conflicts)for(const conflictRev of baseData._conflicts){await this.localDatabase.removeRevision(baseData._id,conflictRev);this._log(`STORAGE -x> DB: ${displayFileName}: (hidden) conflict removed ${baseData._rev} => ${conflictRev}`,LOG_LEVEL_VERBOSE)}if(baseData.deleted){this._log(`STORAGE -x> DB: ${displayFileName}: (hidden) already deleted`,LOG_LEVEL_VERBOSE);this.updateLastProcessedDeletion(storeFilePath,baseData);return!0}const saveData={...baseData,mtime,size:0,children:[],deleted:!0,type:baseData.datatype},ret=await this.localDatabase.putRaw(saveData);if(ret&&ret.ok){this._log(`STORAGE -x> DB: ${displayFileName}: (hidden) Done`);saveData._rev=ret.rev;this.updateLastProcessedDeletion(storeFilePath,saveData);return!0}this._log(`STORAGE -x> DB: ${displayFileName}: (hidden) Failed`);return!1}catch(ex){this._log(`STORAGE -x> DB: ${displayFileName}: (hidden) Failed`);this._log(ex,LOG_LEVEL_VERBOSE);return!1}}))}async extractInternalFileFromDatabase(storageFilePath,force=!1,metaEntry,preventDoubleProcess=!0,onlyNew=!1,includeDeletion=!0){const prefixedFileName=addPrefix(storageFilePath,ICHeader);if(!await this.plugin.$$isIgnoredByIgnoreFiles(storageFilePath))return await serialized("file-"+prefixedFileName,(async()=>{var _a7,_b3;try{const metaOnDB=metaEntry||await this.localDatabase.getDBEntryMeta(prefixedFileName,{conflicts:!0},!0);if(!1===metaOnDB)throw new Error(`File not found on database.:${storageFilePath}`);if(null==(_a7=null==metaOnDB?void 0:metaOnDB._conflicts)?void 0:_a7.length){this._log(`Hidden file ${storageFilePath} has conflicted revisions, to keep in safe, writing to storage has been prevented`,LOG_LEVEL_INFO);return!1}if(preventDoubleProcess){const key2=this.docToKey(metaOnDB);if(this.getLastProcessedDatabaseKey(storageFilePath)==key2&&!force){this._log(`STORAGE <-- DB: ${storageFilePath}: skipped (hidden, overwrite${force?", force":""}) (Previously processed)`);return}}if(onlyNew){const dbMTime=getComparingMTime(metaOnDB,includeDeletion),storageStat=await this.plugin.storageAccess.statHidden(storageFilePath),storageMTimeActual=null!=(_b3=null==storageStat?void 0:storageStat.mtime)?_b3:0;if(compareMTime(0==storageMTimeActual?this.getLastProcessedFileMTime(storageFilePath):storageMTimeActual,dbMTime)!=TARGET_IS_NEW){this._log(`STORAGE <-- DB: ${storageFilePath}: skipped (hidden, overwrite${force?", force":""}) (Not new)`);this.updateLastProcessedDatabase(storageFilePath,metaOnDB);storageStat&&this.updateLastProcessedFile(storageFilePath,storageStat);return}}if(metaOnDB.deleted||metaOnDB._deleted){const result=await this._deleteFile(storageFilePath);if("OK"==result){this.updateLastProcessedDeletion(storageFilePath,metaOnDB);return!0}if("ALREADY"==result){this.updateLastProcessedDatabase(storageFilePath,metaOnDB);return!0}return!1}{const fileOnDB=await this.localDatabase.getDBEntryFromMeta(metaOnDB,{},!1,!0,!0);if(!1===fileOnDB)throw new Error(`Failed to read file from database:${storageFilePath}`);const resultStat=await this._writeFile(storageFilePath,fileOnDB,force);if(resultStat){this.updateLastProcessed(storageFilePath,metaOnDB,resultStat);this.queueNotification(storageFilePath);this._log(`STORAGE <-- DB: ${storageFilePath}: written (hidden, overwrite${force?", force":""}) Done`);return!0}}return!1}catch(ex){this._log(`STORAGE <-- DB: ${storageFilePath}: written (hidden, overwrite${force?", force":""}) Failed`);this._log(ex,LOG_LEVEL_VERBOSE);return!1}}))}async __checkIsNeedToWriteFile(storageFilePath,content){try{const storageContent=await this.plugin.storageAccess.readHiddenFileAuto(storageFilePath);return!await isDocContentSame(storageContent,content)}catch(ex){this._log(`Cannot check the content of ${storageFilePath}`);this._log(ex,LOG_LEVEL_VERBOSE);return!0}}async _writeFile(storageFilePath,fileOnDB,force){try{const statBefore=await this.plugin.storageAccess.statHidden(storageFilePath),isExist=null!=statBefore,writeContent=readContent(fileOnDB);await this.ensureDir(storageFilePath);if(!(force||!isExist||isExist&&await this.__checkIsNeedToWriteFile(storageFilePath,writeContent))){this._log(`STORAGE <-- DB: ${storageFilePath}: skipped (hidden) Not changed`,-1);return statBefore}const writeResultStat=await this.writeFile(storageFilePath,writeContent,{mtime:fileOnDB.mtime,ctime:fileOnDB.ctime});if(null==writeResultStat){this._log(`STORAGE <-- DB: ${storageFilePath}: written (hidden,new${force?", force":""}) Failed (writeResult)`);return!1}this._log(`STORAGE <-- DB: ${storageFilePath}: written (hidden, overwrite${force?", force":""})`);return writeResultStat}catch(ex){this._log(`STORAGE <-- DB: ${storageFilePath}: written (hidden, overwrite${force?", force":""}) Failed`);this._log(ex,LOG_LEVEL_VERBOSE);return!1}}async _deleteFile(storageFilePath){const result=await this.__removeFile(storageFilePath);if(!1===result){this._log(`STORAGE <x- DB: ${storageFilePath}: deleting (hidden) Failed`);return!1}"OK"===result&&await this.triggerEvent(storageFilePath);this._log(`STORAGE <x- DB: ${storageFilePath}: deleting (hidden) ${"OK"==result?"Done":"Already not found"}`);return result}async $allAskUsingOptionalSyncFeature(opt){await this._askHiddenFileConfiguration(opt);return!0}async _askHiddenFileConfiguration(opt){const message=`Would you like to enable **Hidden File Synchronization**?\n\n> [!DETAILS]-\n> This feature allows you to synchronize all hidden files without any user interaction.\n> To enable this feature, you should choose one of the following options:\n${opt.enableFetch?"> - Fetch: Use the files stored from other devices. Choose this option if you have already configured hidden file synchronization on those devices and wish to accept their files.\n":""}${opt.enableOverwrite?"> - Overwrite: Use the files from this device. Select this option if you want to overwrite the files stored on other devices.\n":""}> - Merge: Merge the files from this device with those on other devices. Choose this option if you wish to combine files from multiple sources.\n> However, please be reminded that merging may cause conflicts if the files are not identical. Additionally, this process may occur within the same folder, potentially breaking your plug-in or theme settings that comprise multiple files.\n\n\n> [!IMPORTANT]\n> Please keep in mind that enabling this feature alongside customisation sync may override certain behaviors.`,choices=[];(null==opt?void 0:opt.enableFetch)&&choices.push("Fetch");(null==opt?void 0:opt.enableOverwrite)&&choices.push("Overwrite");choices.push("Merge");choices.push("Disable");const ret=await this.plugin.confirm.confirmWithMessage("Hidden file sync",message,choices,"Disable",40);"Fetch"==ret?await this.configureHiddenFileSync("FETCH"):"Overwrite"==ret?await this.configureHiddenFileSync("OVERWRITE"):"Merge"==ret?await this.configureHiddenFileSync("MERGE"):"Disable"==ret&&await this.configureHiddenFileSync("DISABLE_HIDDEN")}$allSuspendExtraSync(){if(this.plugin.settings.syncInternalFiles){this._log("Hidden file synchronization have been temporarily disabled. Please enable them after the fetching, if you need them.",LOG_LEVEL_NOTICE);this.plugin.settings.syncInternalFiles=!1}return Promise.resolve(!0)}async $anyConfigureOptionalSyncFeature(mode){await this.configureHiddenFileSync(mode)}async configureHiddenFileSync(mode){if("FETCH"==mode||"OVERWRITE"==mode||"MERGE"==mode||"DISABLE"==mode||"DISABLE_HIDDEN"==mode)if("DISABLE"!=mode&&"DISABLE_HIDDEN"!=mode){this._log("Gathering files for enabling Hidden File Sync",LOG_LEVEL_NOTICE);"FETCH"==mode?await this.initialiseInternalFileSync("pullForce",!0):"OVERWRITE"==mode?await this.initialiseInternalFileSync("pushForce",!0):"MERGE"==mode&&await this.initialiseInternalFileSync("safe",!0);this.plugin.settings.useAdvancedMode=!0;this.plugin.settings.syncInternalFiles=!0;await this.plugin.saveSettings();this._log("Done! Restarting the app is strongly recommended!",LOG_LEVEL_NOTICE)}else{this.plugin.settings.syncInternalFiles=!1;await this.plugin.saveSettings()}}async scanInternalFileNames(){const configDir=normalizePath(this.app.vault.configDir),ignoreFilter=this.settings.syncInternalFilesIgnorePatterns.replace(/\n| /g,"").split(",").filter((e3=>e3)).map((e3=>new RegExp(e3,"i"))),synchronisedInConfigSync=this.settings.usePluginSync?Object.values(this.settings.pluginSyncExtendedSetting).filter((e3=>e3.mode==MODE_SELECTIVE||e3.mode==MODE_PAUSED)).map((e3=>e3.files)).flat().map((e3=>`${configDir}/${e3}`.toLowerCase())):[],findRoot=this.app.vault.getRoot().path;return(await this.getFiles(findRoot,[],void 0,ignoreFilter)).filter((e3=>e3.startsWith("."))).filter((e3=>!e3.startsWith(".trash"))).filter((path2=>synchronisedInConfigSync.every((filterFile=>!path2.toLowerCase().startsWith(filterFile)))))}async scanInternalFiles(){var _a7,_b3,_c2,_d2,_e2,_f;const files=(await this.scanInternalFileNames()).map((async e3=>({path:e3,stat:await this.plugin.storageAccess.statHidden(e3)}))),result=[];for(const f4 of files){const w2=await f4;if(await this.plugin.$$isIgnoredByIgnoreFiles(w2.path))continue;const mtime=null!=(_b3=null==(_a7=w2.stat)?void 0:_a7.mtime)?_b3:0,ctime=null!=(_d2=null==(_c2=w2.stat)?void 0:_c2.ctime)?_d2:mtime,size=null!=(_f=null==(_e2=w2.stat)?void 0:_e2.size)?_f:0;result.push({...w2,mtime,ctime,size})}return result}async getFiles(path2,ignoreList,filter4,ignoreFilter){let w2;try{w2=await this.app.vault.adapter.list(path2)}catch(ex){this._log(`Could not traverse(HiddenSync):${path2}`,LOG_LEVEL_INFO);this._log(ex,LOG_LEVEL_VERBOSE);return[]}const filesSrc=[...w2.files.filter((e3=>!ignoreList.some((ee=>e3.endsWith(ee))))).filter((e3=>!filter4||filter4.some((ee=>e3.match(ee))))).filter((e3=>!ignoreFilter||ignoreFilter.every((ee=>!e3.match(ee)))))];let files=[];for(const file of filesSrc)await this.plugin.$$isIgnoredByIgnoreFiles(file)||files.push(file);L1:for(const v2 of w2.folders){for(const ignore of ignoreList)if(v2.endsWith(ignore))continue L1;ignoreFilter&&ignoreFilter.some((e3=>v2.match(e3)))||await this.plugin.$$isIgnoredByIgnoreFiles(v2)||(files=files.concat(await this.getFiles(v2,ignoreList,filter4,ignoreFilter)))}return files}};import_diff_match_patch3=__toESM(require_diff_match_patch(),1);ConflictResolveModal=class extends import_obsidian.Modal{constructor(app2,filename,diff,pluginPickMode,remoteName){super(app2);this.response=CANCELLED;this.isClosed=!1;this.consumed=!1;this.title="Conflicting changes";this.pluginPickMode=!1;this.localName="Keep A";this.remoteName="Keep B";this.result=diff;this.filename=filename;this.pluginPickMode=pluginPickMode||!1;if(this.pluginPickMode){this.title="Pick a version";this.remoteName=`Use ${remoteName||"Remote"}`;this.localName="Use Local"}}onOpen(){const{contentEl}=this;globalSlipBoard2.submit("conflict-resolved",this.filename,CANCELLED);this.offEvent&&this.offEvent();this.offEvent=eventHub.onEvent("conflict-cancelled",(path2=>{path2===this.filename&&this.sendResponse(CANCELLED)}));this.titleEl.setText(this.title);contentEl.empty();contentEl.createEl("span",{text:this.filename});const div=contentEl.createDiv("");div.addClass("op-scrollable");let diff="";for(const v2 of this.result.diff){const x1=v2[0],x2=v2[1];x1==import_diff_match_patch3.DIFF_DELETE?diff+="<span class='deleted'>"+escapeStringToHTML(x2).replace(/\n/g,"<span class='ls-mark-cr'></span>\n")+"</span>":x1==import_diff_match_patch3.DIFF_EQUAL?diff+="<span class='normal'>"+escapeStringToHTML(x2).replace(/\n/g,"<span class='ls-mark-cr'></span>\n")+"</span>":x1==import_diff_match_patch3.DIFF_INSERT&&(diff+="<span class='added'>"+escapeStringToHTML(x2).replace(/\n/g,"<span class='ls-mark-cr'></span>\n")+"</span>")}diff=diff.replace(/\n/g,"<br>");div.innerHTML=diff;const div2=contentEl.createDiv(""),date1=new Date(this.result.left.mtime).toLocaleString()+(this.result.left.deleted?" (Deleted)":""),date2=new Date(this.result.right.mtime).toLocaleString()+(this.result.right.deleted?" (Deleted)":"");div2.innerHTML=`\n<span class='deleted'>A:${date1}</span><br /><span class='added'>B:${date2}</span><br> \n `;contentEl.createEl("button",{text:this.localName},(e3=>e3.addEventListener("click",(()=>this.sendResponse(this.result.right.rev))))).style.marginRight="4px";contentEl.createEl("button",{text:this.remoteName},(e3=>e3.addEventListener("click",(()=>this.sendResponse(this.result.left.rev))))).style.marginRight="4px";this.pluginPickMode||(contentEl.createEl("button",{text:"Concat both"},(e3=>e3.addEventListener("click",(()=>this.sendResponse(LEAVE_TO_SUBSEQUENT))))).style.marginRight="4px");contentEl.createEl("button",{text:this.pluginPickMode?"Cancel":"Not now"},(e3=>e3.addEventListener("click",(()=>this.sendResponse(CANCELLED))))).style.marginRight="4px"}sendResponse(result){this.response=result;this.close()}onClose(){const{contentEl}=this;contentEl.empty();this.offEvent&&this.offEvent();if(!this.consumed){this.consumed=!0;globalSlipBoard2.submit("conflict-resolved",this.filename,this.response)}}async waitForResult(){await delay(100);return await globalSlipBoard2.awaitNext("conflict-resolved",this.filename)}};(function enable_legacy_mode_flag(){legacy_mode_flag=!0})();import_obsidian5=require("obsidian");root_3=template("<option> </option>");root_62=template('<button class="svelte-21bw70">🗃️</button>');root_7=template('<button class="svelte-21bw70">⮂</button>');root_8=template('<button disabled class="svelte-21bw70"></button>');root_42=template('<!> <button class="svelte-21bw70">✓</button>',1);root_9=template('<button disabled class="svelte-21bw70"></button> <button disabled class="svelte-21bw70"></button>',1);root_11=template('<button class="svelte-21bw70">🗑️</button>');root_122=template('<button class="svelte-21bw70">📑</button>');root_22=template('<span class="chip-wrap svelte-21bw70"><span class="chip modified svelte-21bw70"> </span> <span class="chip content svelte-21bw70"> </span> <span class="chip version svelte-21bw70"> </span></span> <select><option>-</option><!></select> <!> <!>',1);root_13=template('<span class="spacer svelte-21bw70"></span> <!>',1);root_132=template('<span class="spacer svelte-21bw70"></span> <span class="message even svelte-21bw70">All the same or non-existent</span> <button disabled class="svelte-21bw70"></button> <button disabled class="svelte-21bw70"></button>',1);$$css3={hash:"svelte-21bw70",code:'.spacer.svelte-21bw70 {min-width:1px;flex-grow:1;}button.svelte-21bw70 {margin:2px 4px;min-width:3em;max-width:4em;}button.svelte-21bw70:disabled {border:none;box-shadow:none;background-color:transparent;visibility:collapse;}button.svelte-21bw70:disabled:hover {border:none;box-shadow:none;background-color:transparent;visibility:collapse;}span.message.svelte-21bw70 {color:var(--text-muted);font-size:var(--font-ui-smaller);padding:0 1em;line-height:var(--line-height-tight);}\n /* span.messages {\n display: flex;\n flex-direction: column;\n align-items: center;\n } */.is-mobile .spacer.svelte-21bw70 {margin-left:auto;}.chip-wrap.svelte-21bw70 {display:flex;gap:2px;flex-direction:column;justify-content:center;align-items:flex-start;}.chip.svelte-21bw70 {display:inline-block;border-radius:2px;font-size:0.8em;padding:0 4px;margin:0 2px;border-color:var(--tag-border-color);background-color:var(--tag-background);color:var(--tag-color);}.chip.svelte-21bw70:empty {display:none;}.chip.svelte-21bw70:not(:empty)::before {min-width:1.8em;display:inline-block;}.chip.content.svelte-21bw70:not(:empty)::before {content:"📄: ";}.chip.version.svelte-21bw70:not(:empty)::before {content:"🏷️: ";}.chip.modified.svelte-21bw70:not(:empty)::before {content:"📅: ";}'};import_obsidian6=require("obsidian");root_14=template('<button class="svelte-1pucu7f">Reload</button>');root_23=template("<span> </span>");root_32=template('<div class="center svelte-1pucu7f">No Items.</div>');root_82=template('<div class="statusnote svelte-1pucu7f"> </div>');root_63=template('<div><div class="title svelte-1pucu7f"><button class="status svelte-1pucu7f"> </button> <span class="name"> </span></div> <div class="body svelte-1pucu7f"><!></div></div>');root_52=template('<div><h3 class="svelte-1pucu7f"> </h3> <!></div>');root_133=template('<div class="statusnote svelte-1pucu7f"> </div>');root_15=template('<div class="statusnote svelte-1pucu7f"> </div>');root_18=template('<div class="statusnote svelte-1pucu7f"> </div>');root_16=template('<div><div class="filetitle svelte-1pucu7f"><button class="status svelte-1pucu7f"> </button> <span class="name">Other files</span></div> <div class="body svelte-1pucu7f"><!></div></div>');root_112=template('<div><div class="filetitle svelte-1pucu7f"><button class="status svelte-1pucu7f"> </button> <span class="name">MAIN</span></div> <div class="body svelte-1pucu7f"><!></div></div> <div><div class="filetitle svelte-1pucu7f"><button class="status svelte-1pucu7f"> </button> <span class="name">DATA</span></div> <div class="body svelte-1pucu7f"><!></div></div> <!>',1);root_19=template('<div class="noterow svelte-1pucu7f"><div class="statusnote svelte-1pucu7f"> </div></div>');root_92=template('<div><div class="title svelte-1pucu7f"><button class="status svelte-1pucu7f"> </button> <span class="name"> </span></div> <div class="body svelte-1pucu7f"><!></div></div> <!>',1);root_43=template('<!> <div><h3 class="svelte-1pucu7f">Plugins</h3> <!></div>',1);root_21=template("<option> </option>");root_20=template('<div class="buttons svelte-1pucu7f"><div><h3 class="svelte-1pucu7f">Maintenance Commands</h3> <div class="maintenancerow svelte-1pucu7f"><label for="" class="svelte-1pucu7f">Delete All of</label> <select></select> <button class="status svelte-1pucu7f">🗑️</button></div></div></div>');root3=template('<div class="buttonsWrap svelte-1pucu7f"><div class="buttons svelte-1pucu7f"><button class="svelte-1pucu7f">Scan changes</button> <button class="svelte-1pucu7f">Sync once</button> <button class="svelte-1pucu7f">Refresh</button> <!></div> <div class="buttons svelte-1pucu7f"><button class="svelte-1pucu7f">Select All Shiny</button> <button class="svelte-1pucu7f"></button> <button class="svelte-1pucu7f">Deselect all</button> <button class="mod-cta svelte-1pucu7f">Apply All Selected</button></div></div> <div class="loading svelte-1pucu7f"><!></div> <div class="list svelte-1pucu7f"><!></div> <!> <div class="buttons svelte-1pucu7f"><label class="svelte-1pucu7f"><span class="svelte-1pucu7f">Hide not applicable items</span><input type="checkbox"></label></div> <div class="buttons svelte-1pucu7f"><label class="svelte-1pucu7f"><span class="svelte-1pucu7f">Maintenance mode</span><input type="checkbox"></label></div>',1);$$css4={hash:"svelte-1pucu7f",code:".buttonsWrap.svelte-1pucu7f {padding-bottom:4px;}h3.svelte-1pucu7f {position:sticky;top:0;background-color:var(--modal-background);}.labelrow.svelte-1pucu7f {margin-left:0.4em;display:flex;justify-content:flex-start;align-items:center;border-top:1px solid var(--background-modifier-border);padding:4px;flex-wrap:wrap;}.filerow.svelte-1pucu7f {margin-left:1.25em;display:flex;justify-content:flex-start;align-items:center;padding-right:4px;flex-wrap:wrap;}.filerow.hideeven.svelte-1pucu7f:has(.even),\n .labelrow.hideeven.svelte-1pucu7f:has(.even) {display:none;}.noterow.svelte-1pucu7f {min-height:2em;display:flex;}button.status.svelte-1pucu7f {flex-grow:0;margin:2px 4px;min-width:3em;max-width:4em;}.statusnote.svelte-1pucu7f {display:flex;justify-content:flex-end;padding-right:var(--size-4-12);align-items:center;min-width:10em;flex-grow:1;}.list.svelte-1pucu7f {overflow-y:auto;}.title.svelte-1pucu7f {color:var(--text-normal);font-size:var(--font-ui-medium);line-height:var(--line-height-tight);margin-right:auto;}.body.svelte-1pucu7f {\n /* margin-left: 0.4em; */margin-left:auto;display:flex;justify-content:flex-start;align-items:center;\n /* flex-wrap: wrap; */}.filetitle.svelte-1pucu7f {color:var(--text-normal);font-size:var(--font-ui-medium);line-height:var(--line-height-tight);margin-right:auto;}.buttons.svelte-1pucu7f {display:flex;flex-direction:row;justify-content:flex-end;margin-top:8px;flex-wrap:wrap;}.buttons.svelte-1pucu7f > button:where(.svelte-1pucu7f) {margin-left:4px;width:auto;}label.svelte-1pucu7f {display:flex;justify-content:center;align-items:center;}label.svelte-1pucu7f > span:where(.svelte-1pucu7f) {margin-right:0.25em;}.is-mobile .title.svelte-1pucu7f,\n .is-mobile .filetitle.svelte-1pucu7f {width:100%;}.center.svelte-1pucu7f {display:flex;justify-content:center;align-items:center;min-height:3em;}.maintenancerow.svelte-1pucu7f {display:flex;justify-content:flex-end;align-items:center;}.maintenancerow.svelte-1pucu7f label:where(.svelte-1pucu7f) {margin-right:0.5em;margin-left:0.5em;}.loading.svelte-1pucu7f {transition:height 0.25s ease-in-out;transition-delay:4ms;overflow-y:hidden;flex-shrink:0;display:flex;justify-content:flex-start;align-items:center;}.loading.svelte-1pucu7f:empty {height:0px;transition:height 0.25s ease-in-out;transition-delay:1s;}.loading.svelte-1pucu7f:not(:empty) {height:2em;transition:height 0.25s ease-in-out;transition-delay:0;}"};PluginDialogModal=class extends import_obsidian.Modal{isOpened(){return null!=this.component}constructor(app2,plugin3){super(app2);this.plugin=plugin3}onOpen(){const{contentEl}=this;this.contentEl.style.overflow="auto";this.contentEl.style.display="flex";this.contentEl.style.flexDirection="column";this.titleEl.setText("Customization Sync (Beta3)");this.component||(this.component=mount(PluginPane,{target:contentEl,props:{plugin:this.plugin}}))}onClose(){if(this.component){unmount(this.component);this.component=void 0}}};d="";d2="\n";DUMMY_HEAD=serialize({category:"CONFIG",name:"migrated",files:[],mtime:0,term:"-",displayName:"MIRAGED"});DUMMY_END=d+d2+"";pluginList=writable([]);pluginIsEnumerating=writable(!1);pluginV2Progress=writable(0);pluginManifestStore=writable(pluginManifests=new Map);PluginDataExDisplayV2=class{constructor(data){this.files=[];this.documentPath=`${data.documentPath}`;this.category=`${data.category}`;this.name=`${data.name}`;this.term=`${data.term}`;this.files=[...data.files];this.confKey=`${categoryToFolder(this.category,this.term)}${this.name}`;this.applyLoadedManifest()}async setFile(file){const old=this.files.find((e3=>e3.filename==file.filename));if(old){if(old.mtime==file.mtime&&await isDocContentSame(old.data,file.data))return;this.files=this.files.filter((e3=>e3.filename!=file.filename))}this.files.push(file);"manifest.json"==file.filename&&this.applyLoadedManifest()}deleteFile(filename){this.files=this.files.filter((e3=>e3.filename!=filename))}applyLoadedManifest(){const manifest=pluginManifests.get(this.confKey);if(manifest){this._displayName=manifest.name;"PLUGIN_MAIN"!=this.category&&"THEME"!=this.category||(this._version=null==manifest?void 0:manifest.version)}}get displayName(){return this._displayName||this.name}get version(){return this._version}get mtime(){return~~this.files.reduce(((a2,b3)=>a2+b3.mtime),0)/this.files.length}};ConfigSync=class extends LiveSyncCommands{constructor(plugin3){super(plugin3);this.pluginDialog=void 0;this.periodicPluginSweepProcessor=new PeriodicProcessor(this.plugin,(async()=>await this.scanAllConfigFiles(!1)));this.pluginList=[];this.addRibbonIcon=this.plugin.addRibbonIcon.bind(this.plugin);this.pluginScanProcessor=new QueueProcessor((async v2=>{const plugin3=v2[0];if(this.useV2){await this.migrateV1ToV2(!1,plugin3);return[]}const path2=plugin3.path||this.getPath(plugin3),oldEntry=this.pluginList.find((e3=>e3.documentPath==path2));if(oldEntry&&oldEntry.mtime==plugin3.mtime)return[];try{const pluginData=await this.loadPluginData(path2);if(pluginData){let newList=[...this.pluginList];newList=newList.filter((x2=>x2.documentPath!=pluginData.documentPath));newList.push(pluginData);this.pluginList=newList;pluginList.set(newList)}return[]}catch(ex){this._log(`Something happened at enumerating customization :${path2}`,LOG_LEVEL_NOTICE);this._log(ex,LOG_LEVEL_VERBOSE)}return[]}),{suspended:!1,batchSize:1,concurrentLimit:10,delay:100,yieldThreshold:10,maintainDelay:!1,totalRemainingReactiveSource:pluginScanningCount}).startPipeline();this.pluginScanProcessorV2=new QueueProcessor((async v2=>{const plugin3=v2[0],path2=plugin3.path||this.getPath(plugin3),oldEntry=this.pluginList.find((e3=>e3.documentPath==path2));if(oldEntry&&oldEntry.mtime==plugin3.mtime)return[];try{const pluginData=await this.loadPluginData(path2);if(pluginData){let newList=[...this.pluginList];newList=newList.filter((x2=>x2.documentPath!=pluginData.documentPath));newList.push(pluginData);this.pluginList=newList;pluginList.set(newList)}return[]}catch(ex){this._log(`Something happened at enumerating customization :${path2}`,LOG_LEVEL_NOTICE);this._log(ex,LOG_LEVEL_VERBOSE)}return[]}),{suspended:!1,batchSize:1,concurrentLimit:10,delay:100,yieldThreshold:10,maintainDelay:!1,totalRemainingReactiveSource:pluginScanningCount}).startPipeline();this.loadedManifest_mTime=new Map;this.updatingV2Count=0;this.recentProcessedInternalFiles=[];pluginScanningCount.onChanged((e3=>{const total=e3.value;pluginIsEnumerating.set(0!=total)}))}get kvDB(){return this.plugin.kvDB}get useV2(){return this.plugin.settings.usePluginSyncV2}get useSyncPluginEtc(){return this.plugin.settings.usePluginEtc}_isThisModuleEnabled(){return this.plugin.settings.usePluginSync}showPluginSyncModal(){if(this._isThisModuleEnabled())if(this.pluginDialog)this.pluginDialog.open();else{this.pluginDialog=new PluginDialogModal(this.app,this.plugin);this.pluginDialog.open()}}hidePluginSyncModal(){if(null!=this.pluginDialog){this.pluginDialog.close();this.pluginDialog=void 0}}onunload(){var _a7;this.hidePluginSyncModal();null==(_a7=this.periodicPluginSweepProcessor)||_a7.disable()}onload(){(0,import_obsidian.addIcon)("custom-sync",'<g transform="rotate(-90 75 218)" fill="currentColor" fill-rule="evenodd">\n <path d="m272 166-9.38 9.38 9.38 9.38 9.38-9.38c1.96-1.93 5.11-1.9 7.03 0.058 1.91 1.94 1.91 5.04 0 6.98l-9.38 9.38 5.86 5.86-11.7 11.7c-8.34 8.35-21.4 9.68-31.3 3.19l-3.84 3.98c-8.45 8.7-20.1 13.6-32.2 13.6h-5.55v-9.95h5.55c9.43-0.0182 18.5-3.84 25-10.6l3.95-4.09c-6.54-9.86-5.23-23 3.14-31.3l11.7-11.7 5.86 5.86 9.38-9.38c1.96-1.93 5.11-1.9 7.03 0.0564 1.91 1.93 1.91 5.04 2e-3 6.98z"/>\n </g>');this.plugin.addCommand({id:"livesync-plugin-dialog-ex",name:"Show customization sync dialog",callback:()=>{this.showPluginSyncModal()}});this.addRibbonIcon("custom-sync",$msg("cmdConfigSync.showCustomizationSync"),(()=>{this.showPluginSyncModal()})).addClass("livesync-ribbon-showcustom");eventHub.onEvent("request-open-plugin-sync-dialog",(()=>this.showPluginSyncModal()))}getFileCategory(filePath){return 2==filePath.split("/").length&&filePath.endsWith(".json")?"CONFIG":4==filePath.split("/").length&&filePath.startsWith(`${this.app.vault.configDir}/themes/`)?"THEME":filePath.startsWith(`${this.app.vault.configDir}/snippets/`)&&filePath.endsWith(".css")?"SNIPPET":filePath.startsWith(`${this.app.vault.configDir}/plugins/`)?filePath.endsWith("/styles.css")||filePath.endsWith("/manifest.json")||filePath.endsWith("/main.js")?"PLUGIN_MAIN":filePath.endsWith("/data.json")?"PLUGIN_DATA":this.useV2&&this.useSyncPluginEtc?"PLUGIN_ETC":"":""}isTargetPath(filePath){return!!filePath.startsWith(this.app.vault.configDir)&&""!=this.getFileCategory(filePath)}async $everyOnDatabaseInitialized(showNotice){if(!this._isThisModuleEnabled())return!0;try{this._log("Scanning customizations...");await this.scanAllConfigFiles(showNotice);this._log("Scanning customizations : done")}catch(ex){this._log("Scanning customizations : failed");this._log(ex,LOG_LEVEL_VERBOSE)}return!0}async $everyBeforeReplicate(showNotice){if(!this._isThisModuleEnabled())return!0;if(this.settings.autoSweepPlugins){await this.scanAllConfigFiles(showNotice);return!0}return!0}async $everyOnResumeProcess(){if(!this._isThisModuleEnabled())return!0;if(this._isMainSuspended())return!0;this.settings.autoSweepPlugins&&await this.scanAllConfigFiles(!1);this.periodicPluginSweepProcessor.enable(this.settings.autoSweepPluginsPeriodic&&!this.settings.watchInternalFileChanges?6e4:0);return!0}$everyAfterResumeProcess(){const q2=activeDocument.querySelector(".livesync-ribbon-showcustom");null==q2||q2.toggleClass("sls-hidden",!this._isThisModuleEnabled());return Promise.resolve(!0)}async reloadPluginList(showMessage){this.pluginList=[];this.loadedManifest_mTime.clear();pluginList.set(this.pluginList);await this.updatePluginList(showMessage)}async loadPluginData(path2){const wx=await this.localDatabase.getDBEntry(path2,void 0,!1,!1);if(wx){const data=deserialize(getDocDataAsArray(wx.data),{}),xFiles=[];let missingHash=!1;for(const file of data.files){const work={...file,data:[]};if(!file.hash){const hash3=digestHash(getDocDataAsArray(work.data));file.hash=hash3;missingHash=!0}work.data=[file.hash];xFiles.push(work)}if(missingHash){this._log(`Digest created for ${path2} to improve checking`,LOG_LEVEL_VERBOSE);wx.data=serialize(data);fireAndForget((()=>this.localDatabase.putDBEntry(function createSavingEntryFromLoadedEntry(doc){const data=readAsBlob(doc),type=function determineType(path2,data){return data instanceof Blob?determineTypeFromBlob(data):isPlainText(path2)?"plain":data instanceof Uint8Array||data instanceof ArrayBuffer?"newnote":"plain"}(doc.path,data);return{...doc,data,datatype:type,type,children:[]}}(wx))))}return{...data,documentPath:this.getPath(wx),files:xFiles}}return!1}filenameToUnifiedKey(path2,termOverRide){const term=termOverRide||this.plugin.$$getDeviceAndVaultName(),category=this.getFileCategory(path2),name="CONFIG"==category||"SNIPPET"==category?path2.split("/").slice(-1)[0]:"PLUGIN_ETC"==category?path2.split("/").slice(-2).join("/"):path2.split("/").slice(-2)[0];return`${ICXHeader}${term}/${category}/${name}.md`}filenameWithUnifiedKey(path2,termOverRide){const term=termOverRide||this.plugin.$$getDeviceAndVaultName(),category=this.getFileCategory(path2),name="CONFIG"==category||"SNIPPET"==category?path2.split("/").slice(-1)[0]:path2.split("/").slice(-2)[0],baseName="CONFIG"==category||"SNIPPET"==category?name:path2.split("/").slice(3).join("/");return`${ICXHeader}${term}/${category}/${name}%${baseName}`}unifiedKeyPrefixOfTerminal(termOverRide){const term=termOverRide||this.plugin.$$getDeviceAndVaultName();return`${ICXHeader}${term}/`}parseUnifiedPath(unifiedPath){const[device,category,...rest]=stripAllPrefixes(unifiedPath).split("/"),relativePath=rest.join("/"),[key2,filename]=relativePath.split("%");return{device,category,key:key2,filename,pathV1:unifiedPath.split("%")[0]+".md"}}async createPluginDataExFileV2(unifiedPathV2,loaded){const{category,key:key2,filename,device}=this.parseUnifiedPath(unifiedPathV2);if(!loaded){const d4=await this.localDatabase.getDBEntry(unifiedPathV2);if(!d4){this._log(`The file ${unifiedPathV2} is not found`,LOG_LEVEL_VERBOSE);return!1}if(!function isLoadedEntry(doc){return"type"in doc&&("newnote"==doc.type||"plain"==doc.type)&&"data"in doc}(d4)){this._log(`The file ${unifiedPathV2} is not a note`,LOG_LEVEL_VERBOSE);return!1}loaded=d4}const confKey=`${categoryToFolder(category,device)}${key2}`,relativeFilename=`${categoryToFolder(category,"")}${"CONFIG"==category||"SNIPPET"==category?"":key2+"/"}${filename}`.substring(1),dataSrc=getDocData(loaded.data),dataStart=dataSrc.indexOf(DUMMY_END),data=dataSrc.substring(dataStart+DUMMY_END.length),file={...loaded,hash:"",data:[base64ToString(data)],filename:relativeFilename,displayName:filename};if("manifest.json"==filename)if(this.loadedManifest_mTime.get(confKey)!=file.mtime&&null==pluginManifests.get(confKey)){try{const parsedManifest=JSON.parse(base64ToString(data));(function setManifest(key2,manifest){const old=pluginManifests.get(key2);if(!old||isObjectDifferent(manifest,old)){pluginManifests.set(key2,manifest);pluginManifestStore.set(pluginManifests)}})(confKey,parsedManifest);this.pluginList.filter((e3=>e3 instanceof PluginDataExDisplayV2&&e3.confKey==confKey)).forEach((e3=>e3.applyLoadedManifest()));pluginList.set(this.pluginList)}catch(ex){this._log(`The file ${loaded.path} seems to manifest, but could not be decoded as JSON`,LOG_LEVEL_VERBOSE);this._log(ex,LOG_LEVEL_VERBOSE)}this.loadedManifest_mTime.set(confKey,file.mtime)}else{this.pluginList.filter((e3=>e3 instanceof PluginDataExDisplayV2&&e3.confKey==confKey)).forEach((e3=>e3.applyLoadedManifest()));pluginList.set(this.pluginList)}return file}createPluginDataFromV2(unifiedPathV2){const{category,device,key:key2,pathV1}=this.parseUnifiedPath(unifiedPathV2);if(""!=category)return new PluginDataExDisplayV2({documentPath:pathV1,category,name:key2,term:`${device}`,files:[],mtime:0})}async updatePluginListV2(showMessage,unifiedFilenameWithKey){try{this.updatingV2Count++;pluginV2Progress.set(this.updatingV2Count);const{pathV1}=this.parseUnifiedPath(unifiedFilenameWithKey),oldEntry=this.pluginList.find((e3=>e3.documentPath==pathV1));let entry;if(oldEntry&&oldEntry instanceof PluginDataExDisplayV2)oldEntry instanceof PluginDataExDisplayV2&&(entry=oldEntry);else{const newEntry=this.createPluginDataFromV2(unifiedFilenameWithKey);newEntry&&(entry=newEntry)}if(!entry)return;const file=await this.createPluginDataExFileV2(unifiedFilenameWithKey);if(file)await entry.setFile(file);else{entry.deleteFile(unifiedFilenameWithKey);0==entry.files.length&&(this.pluginList=this.pluginList.filter((e3=>e3.documentPath!=pathV1)))}const newList=this.pluginList.filter((e3=>e3.documentPath!=entry.documentPath));newList.push(entry);this.pluginList=newList;scheduleTask("updatePluginListV2",100,(()=>{pluginList.set(this.pluginList)}))}finally{this.updatingV2Count--;pluginV2Progress.set(this.updatingV2Count)}}async migrateV1ToV2(showMessage,entry){var _a7;const v1Path=entry.path;this._log(`Migrating ${entry.path} to V2`,showMessage?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO);if(entry.deleted){this._log(`The entry ${v1Path} is already deleted`,LOG_LEVEL_VERBOSE);return}if(!v1Path.endsWith(".md")&&!v1Path.startsWith(ICXHeader)){this._log(`The entry ${v1Path} is not a customisation sync binder`,LOG_LEVEL_VERBOSE);return}if(-1!==v1Path.indexOf("%")){this._log(`The entry ${v1Path} is already migrated`,LOG_LEVEL_VERBOSE);return}const loadedEntry=await this.localDatabase.getDBEntry(v1Path);if(!loadedEntry){this._log(`The entry ${v1Path} is not found`,LOG_LEVEL_VERBOSE);return}const pluginData=deserialize(getDocDataAsArray(loadedEntry.data),{}),prefixPath=v1Path.slice(0,-3)+"%",category=pluginData.category;for(const f4 of pluginData.files){const stripTable={CONFIG:0,THEME:2,SNIPPET:1,PLUGIN_MAIN:2,PLUGIN_DATA:2,PLUGIN_ETC:2},deletePrefixCount=null!=(_a7=null==stripTable?void 0:stripTable[category])?_a7:1,relativeFilename=f4.filename.split("/").slice(deletePrefixCount).join("/"),v2Path=prefixPath+relativeFilename;this._log(`Migrating ${v1Path} / ${relativeFilename} to ${v2Path}`,LOG_LEVEL_VERBOSE);const newId=await this.plugin.$$path2id(v2Path),data=createBlob([DUMMY_HEAD,DUMMY_END,...getDocDataAsArray(f4.data)]),saving={...loadedEntry,_rev:void 0,_id:newId,path:v2Path,data,datatype:"plain",type:"plain",children:[],eden:{}},r4=await this.plugin.localDatabase.putDBEntry(saving);if(r4&&r4.ok){this._log(`Migrated ${v1Path} / ${f4.filename} to ${v2Path}`,LOG_LEVEL_INFO);await this.deleteConfigOnDatabase(v1Path)?this._log(`Deleted ${v1Path} successfully`,LOG_LEVEL_INFO):this._log(`Failed to delete ${v1Path}`,LOG_LEVEL_NOTICE)}}}async updatePluginList(showMessage,updatedDocumentPath){if(this._isThisModuleEnabled()){try{this.updatingV2Count++;pluginV2Progress.set(this.updatingV2Count);const updatedDocumentId=updatedDocumentPath?await this.path2id(updatedDocumentPath):"",plugins=updatedDocumentPath?this.localDatabase.findEntries(updatedDocumentId,updatedDocumentId+"",{include_docs:!0,key:updatedDocumentId,limit:1}):this.localDatabase.findEntries(ICXHeader+"",`${ICXHeader}`,{include_docs:!0});for await(const v2 of plugins){if(v2.deleted||v2._deleted)continue;if(-1!==v2.path.indexOf("%")){fireAndForget((()=>this.updatePluginListV2(showMessage,v2.path)));continue}const path2=v2.path||this.getPath(v2);updatedDocumentPath&&updatedDocumentPath!=path2||this.pluginScanProcessor.enqueue(v2)}}finally{pluginIsEnumerating.set(!1);this.updatingV2Count--;pluginV2Progress.set(this.updatingV2Count)}pluginIsEnumerating.set(!1)}else{this.pluginScanProcessor.clearQueue();this.pluginList=[];pluginList.set(this.pluginList)}}async compareUsingDisplayData(dataA,dataB,compareEach=!1){const loadFile=async data=>{if(data instanceof PluginDataExDisplayV2||compareEach)return data.files[0];const loadDoc=await this.localDatabase.getDBEntry(data.documentPath);if(!loadDoc)return!1;const pluginData=deserialize(getDocDataAsArray(loadDoc.data),{});pluginData.documentPath=data.documentPath;const file=pluginData.files[0];return{...loadDoc,...file,datatype:"newnote"}},fileA=await loadFile(dataA),fileB=await loadFile(dataB);this._log(`Comparing: ${dataA.documentPath} <-> ${dataB.documentPath}`,LOG_LEVEL_VERBOSE);if(!fileA||!fileB){this._log(`Could not load ${dataA.name} for comparison: ${fileA?"":dataA.term}${fileB?"":dataB.term}`,LOG_LEVEL_NOTICE);return!1}let path2=stripAllPrefixes(fileA.path.split("/").slice(-1).join("/"));-1!==path2.indexOf("%")&&(path2=path2.split("%")[1]);if(fileA.path.endsWith(".json"))return serialized("config:merge-data",(()=>new Promise((res2=>{this._log("Opening data-merging dialog",LOG_LEVEL_VERBOSE);new JsonResolveModal(this.app,path2,[fileA,fileB],(async(keep,result)=>{if(null==result)return res2(!1);try{res2(await this.applyData(dataA,result))}catch(ex){this._log("Could not apply merged file");this._log(ex,LOG_LEVEL_VERBOSE);res2(!1)}}),"Local",`${dataB.term}`,"B",!0,!0,"Difference between local and remote").open()}))));{const dmp=new import_diff_match_patch.diff_match_patch;let docAData=getDocData(fileA.data),docBData=getDocData(fileB.data);"plain"!=(null==fileA?void 0:fileA.datatype)&&(docAData=base64ToString(docAData));"plain"!=(null==fileB?void 0:fileB.datatype)&&(docBData=base64ToString(docBData));const diffMap=dmp.diff_linesToChars_(docAData,docBData),diff=dmp.diff_main(diffMap.chars1,diffMap.chars2,!1);dmp.diff_charsToLines_(diff,diffMap.lineArray);dmp.diff_cleanupSemantic(diff);const diffResult={left:{rev:"A",...fileA,data:docAData},right:{rev:"B",...fileB,data:docBData},diff},d4=new ConflictResolveModal(this.app,path2,diffResult,!0,dataB.term);d4.open();const ret=await d4.waitForResult();if(ret===CANCELLED)return!1;if(ret===LEAVE_TO_SUBSEQUENT)return!1;const resultContent="A"==ret?docAData:"B"==ret?docBData:void 0;return!!resultContent&&await this.applyData(dataA,resultContent)}}async applyDataV2(data,content){const baseDir=this.app.vault.configDir;try{if(content){const filename=data.files[0].filename;this._log(`Applying ${filename} of ${data.displayName||data.name}..`);const path2=`${baseDir}/${filename}`;await this.plugin.storageAccess.ensureDir(path2);await this.plugin.storageAccess.writeHiddenFileAuto(path2,content);await this.storeCustomisationFileV2(path2,this.plugin.$$getDeviceAndVaultName())}else{const files=data.files;for(const f4 of files){const stat={mtime:f4.mtime,ctime:f4.ctime},path2=`${baseDir}/${f4.filename}`;this._log(`Applying ${f4.filename} of ${data.displayName||data.name}..`);await this.plugin.storageAccess.ensureDir(path2);if("newnote"==f4.datatype){let oldData;try{oldData=await this.plugin.storageAccess.readHiddenFileBinary(path2)}catch(ex){this._log(`Could not read the file ${f4.filename}`,LOG_LEVEL_VERBOSE);this._log(ex,LOG_LEVEL_VERBOSE);oldData=new ArrayBuffer(0)}const content2=base64ToArrayBuffer(f4.data);if(await isDocContentSame(oldData,content2)){this._log(`The file ${f4.filename} is already up-to-date`,LOG_LEVEL_VERBOSE);continue}await this.plugin.storageAccess.writeHiddenFileAuto(path2,content2,stat)}else{let oldData;try{oldData=await this.plugin.storageAccess.readHiddenFileText(path2)}catch(ex){this._log(`Could not read the file ${f4.filename}`,LOG_LEVEL_VERBOSE);this._log(ex,LOG_LEVEL_VERBOSE);oldData=""}const content2=getDocData(f4.data);if(await isDocContentSame(oldData,content2)){this._log(`The file ${f4.filename} is already up-to-date`,LOG_LEVEL_VERBOSE);continue}await this.plugin.storageAccess.writeHiddenFileAuto(path2,content2,stat)}this._log(`Applied ${f4.filename} of ${data.displayName||data.name}..`);await this.storeCustomisationFileV2(path2,this.plugin.$$getDeviceAndVaultName())}}}catch(ex){this._log(`Applying ${data.displayName||data.name}.. Failed`,LOG_LEVEL_NOTICE);this._log(ex,LOG_LEVEL_VERBOSE);return!1}return!0}async applyData(data,content){this._log(`Applying ${data.displayName||data.name}..`);if(data instanceof PluginDataExDisplayV2)return this.applyDataV2(data,content);const baseDir=this.app.vault.configDir;try{if(!data.documentPath)throw"InternalError: Document path not exist";const dx=await this.localDatabase.getDBEntry(data.documentPath);if(0==dx)throw"Not found on database";const loadedData=deserialize(getDocDataAsArray(dx.data),{});for(const f4 of loadedData.files){this._log(`Applying ${f4.filename} of ${data.displayName||data.name}..`);try{const path2=`${baseDir}/${f4.filename}`;await this.plugin.storageAccess.ensureDir(path2);if(content)await this.plugin.storageAccess.writeHiddenFileAuto(path2,content);else{const dt=decodeBinary(f4.data);await this.plugin.storageAccess.writeHiddenFileAuto(path2,dt)}this._log(`Applying ${f4.filename} of ${data.displayName||data.name}.. Done`)}catch(ex){this._log(`Applying ${f4.filename} of ${data.displayName||data.name}.. Failed`);this._log(ex,LOG_LEVEL_VERBOSE)}}const uPath=`${baseDir}/${loadedData.files[0].filename}`;await this.storeCustomizationFiles(uPath);await this.updatePluginList(!0,uPath);await delay(100);this._log(`Config ${data.displayName||data.name} has been applied`,LOG_LEVEL_NOTICE);if("PLUGIN_DATA"==data.category||"PLUGIN_MAIN"==data.category){const manifests=Object.values(this.app.plugins.manifests),enabledPlugins=this.app.plugins.enabledPlugins,pluginManifest=manifests.find((manifest=>enabledPlugins.has(manifest.id)&&manifest.dir==`${baseDir}/plugins/${data.name}`));if(pluginManifest){this._log(`Unloading plugin: ${pluginManifest.name}`,LOG_LEVEL_NOTICE,"plugin-reload-"+pluginManifest.id);await this.app.plugins.unloadPlugin(pluginManifest.id);await this.app.plugins.loadPlugin(pluginManifest.id);this._log(`Plugin reloaded: ${pluginManifest.name}`,LOG_LEVEL_NOTICE,"plugin-reload-"+pluginManifest.id)}}else"CONFIG"==data.category&&this.plugin.$$askReload();return!0}catch(ex){this._log(`Applying ${data.displayName||data.name}.. Failed`);this._log(ex,LOG_LEVEL_VERBOSE);return!1}}async deleteData(data){try{if(data.documentPath){const delList=[];if(this.useV2){const deleteList=this.pluginList.filter((e3=>e3.documentPath==data.documentPath)).filter((e3=>e3 instanceof PluginDataExDisplayV2)).map((e3=>e3.files)).flat();for(const e3 of deleteList)delList.push(e3.path)}delList.push(data.documentPath);const p4=delList.map((async e3=>{await this.deleteConfigOnDatabase(e3);await this.updatePluginList(!1,e3)}));await Promise.allSettled(p4);this._log(`Deleted: ${data.category}/${data.name} of ${data.category} (${delList.length} items)`,LOG_LEVEL_NOTICE)}return!0}catch(ex){this._log(`Failed to delete: ${data.documentPath}`,LOG_LEVEL_NOTICE);this._log(ex,LOG_LEVEL_VERBOSE);return!1}}async $anyModuleParsedReplicationResultItem(docs){if(docs._id.startsWith(ICXHeader)){this._isThisModuleEnabled()&&await this.updatePluginList(!1,docs.path?docs.path:this.getPath(docs));if(this._isThisModuleEnabled()&&this.plugin.settings.notifyPluginOrSettingUpdated&&(!this.pluginDialog||this.pluginDialog&&!this.pluginDialog.isOpened())){const fragment=createFragment((doc=>{doc.createEl("span",void 0,(a2=>{a2.appendText("Some configuration has been arrived, Press ");a2.appendChild(a2.createEl("a",void 0,(anchor=>{anchor.text="HERE";anchor.addEventListener("click",(()=>{this.showPluginSyncModal()}))})));a2.appendText(" to open the config sync dialog , or press elsewhere to dismiss this message.")}))})),updatedPluginKey="popupUpdated-plugins";scheduleTask(updatedPluginKey,1e3,(async()=>{var _a7;const popup=await memoIfNotExist(updatedPluginKey,(()=>new import_obsidian.Notice(fragment,0)));(null==(_a7=null==popup?void 0:popup.noticeEl)?void 0:_a7.isShown())||memoObject(updatedPluginKey,new import_obsidian.Notice(fragment,0));scheduleTask(updatedPluginKey+"-close",2e4,(()=>{var _a8;const popup2=retrieveMemoObject(updatedPluginKey);if(popup2){(null==(_a8=null==popup2?void 0:popup2.noticeEl)?void 0:_a8.isShown())&&popup2.hide();disposeMemoObject(updatedPluginKey)}}))}))}return!0}}async $everyRealizeSettingSyncMode(){var _a7;null==(_a7=this.periodicPluginSweepProcessor)||_a7.disable();if(!this._isMainReady)return!0;if(!this._isMainSuspended())return!0;if(!this._isThisModuleEnabled())return!0;this.settings.autoSweepPlugins&&await this.scanAllConfigFiles(!1);this.periodicPluginSweepProcessor.enable(this.settings.autoSweepPluginsPeriodic&&!this.settings.watchInternalFileChanges?6e4:0);return!0}async makeEntryFromFile(path2){const stat=await this.plugin.storageAccess.statHidden(path2);let version2,displayName;if(!stat)return!1;const contentBin=await this.plugin.storageAccess.readHiddenFileBinary(path2);let content;try{content=await arrayBufferToBase64(contentBin);if(path2.toLowerCase().endsWith("/manifest.json")){const v2=readString(new Uint8Array(contentBin));try{const json=JSON.parse(v2);"version"in json&&(version2=`${json.version}`);"name"in json&&(displayName=`${json.name}`)}catch(ex){this._log(`Configuration sync data: ${path2} looks like manifest, but could not read the version`,LOG_LEVEL_INFO);this._log(ex,LOG_LEVEL_VERBOSE)}}}catch(ex){this._log(`The file ${path2} could not be encoded`);this._log(ex,LOG_LEVEL_VERBOSE);return!1}const mtime=stat.mtime;return{filename:path2.substring(this.app.vault.configDir.length+1),data:content,mtime,size:stat.size,version:version2,displayName}}async storeCustomisationFileV2(path2,term,force=!1){const vf=this.filenameWithUnifiedKey(path2,term);return await serialized(`plugin-${vf}`,(async()=>{const prefixedFileName=vf,id=await this.path2id(prefixedFileName),stat=await this.plugin.storageAccess.statHidden(path2);if(!stat)return!1;const mtime=stat.mtime,content=await this.plugin.storageAccess.readHiddenFileBinary(path2),contentBlob=createBlob([DUMMY_HEAD,DUMMY_END,...await arrayBufferToBase64(content)]);try{const old=await this.localDatabase.getDBEntryMeta(prefixedFileName,void 0,!1);let saveData;if(!1===old)saveData={_id:id,path:prefixedFileName,data:contentBlob,mtime,ctime:mtime,datatype:"plain",size:contentBlob.size,children:[],deleted:!1,type:"plain",eden:{}};else{if(isMarkedAsSameChanges(prefixedFileName,[old.mtime,mtime+1])==EVEN){this._log(`STORAGE --\x3e DB:${prefixedFileName}: (config) Skipped (Already checked the same)`,-1);return}const docXDoc=await this.localDatabase.getDBEntryFromMeta(old,{},!1,!1);if(0==docXDoc)throw"Could not load the document";const dataSrc=getDocData(docXDoc.data),dataStart=dataSrc.indexOf(DUMMY_END),oldContentArray=base64ToArrayBuffer(dataSrc.substring(dataStart+DUMMY_END.length));if(await isDocContentSame(oldContentArray,content)){this._log(`STORAGE --\x3e DB:${prefixedFileName}: (config) Skipped (the same content)`,LOG_LEVEL_VERBOSE);markChangesAreSame(prefixedFileName,old.mtime,mtime+1);return!0}saveData={...old,data:contentBlob,mtime,size:contentBlob.size,datatype:"plain",children:[],deleted:!1,type:"plain"}}const ret=await this.localDatabase.putDBEntry(saveData);this._log(`STORAGE --\x3e DB:${prefixedFileName}: (config) Done`);fireAndForget((()=>this.updatePluginListV2(!1,this.filenameWithUnifiedKey(path2))));return ret}catch(ex){this._log(`STORAGE --\x3e DB:${prefixedFileName}: (config) Failed`);this._log(ex,LOG_LEVEL_VERBOSE);return!1}}))}async storeCustomizationFiles(path2,termOverRide){const term=termOverRide||this.plugin.$$getDeviceAndVaultName();if(""==term){this._log("We have to configure the device name",LOG_LEVEL_NOTICE);return}if(this.useV2)return await this.storeCustomisationFileV2(path2,term);const vf=this.filenameToUnifiedKey(path2,term);return await serialized(`plugin-${vf}`,(async()=>{const category=this.getFileCategory(path2);let mtime=0,fileTargets=[];const name="CONFIG"==category||"SNIPPET"==category?path2.split("/").reverse()[0]:path2.split("/").reverse()[1],parentPath=path2.split("/").slice(0,-1).join("/"),prefixedFileName=this.filenameToUnifiedKey(path2,term),id=await this.path2id(prefixedFileName),dt={category,files:[],name,mtime:0,term};if("CONFIG"==category||"SNIPPET"==category||"PLUGIN_ETC"==category||"PLUGIN_DATA"==category){fileTargets=[path2];"PLUGIN_ETC"==category&&(dt.displayName=path2.split("/").slice(-1).join("/"))}else"PLUGIN_MAIN"==category?fileTargets=["manifest.json","main.js","styles.css"].map((e3=>`${parentPath}/${e3}`)):"THEME"==category&&(fileTargets=["manifest.json","theme.css"].map((e3=>`${parentPath}/${e3}`)));for(const target of fileTargets){const data=await this.makeEntryFromFile(target);if(0!=data){data.version&&(dt.version=data.version);data.displayName&&(dt.displayName=data.displayName);mtime=0==mtime?data.mtime:(data.mtime+mtime)/2;dt.files.push(data)}else this._log(`Config: skipped (Possibly is not exist): ${target} `,LOG_LEVEL_VERBOSE)}dt.mtime=mtime;if(0==dt.files.length){this._log(`Nothing left: deleting.. ${path2}`);await this.deleteConfigOnDatabase(prefixedFileName);await this.updatePluginList(!1,prefixedFileName);return}const content=createTextBlob(serialize(dt));try{const old=await this.localDatabase.getDBEntryMeta(prefixedFileName,void 0,!1);let saveData;if(!1===old)saveData={_id:id,path:prefixedFileName,data:content,mtime,ctime:mtime,datatype:"newnote",size:content.size,children:[],deleted:!1,type:"newnote",eden:{}};else{if(old.mtime==mtime)return!0;const oldC=await this.localDatabase.getDBEntryFromMeta(old,{},!1,!1);if(oldC){const d4=await deserialize(getDocDataAsArray(oldC.data),{});if(d4.files.length==dt.files.length){const diffs=d4.files.map((previous=>({prev:previous,curr:dt.files.find((e3=>e3.filename==previous.filename))}))).map((async e3=>{var _a7,_b3;try{return await isDocContentSame(null!=(_b3=null==(_a7=e3.curr)?void 0:_a7.data)?_b3:[],e3.prev.data)}catch(e4){return!1}}));if((await Promise.all(diffs)).every((e3=>1==e3))){this._log(`STORAGE --\x3e DB:${prefixedFileName}: (config) Skipped (Same content)`,LOG_LEVEL_VERBOSE);return!0}}}saveData={...old,data:content,mtime,size:content.size,datatype:"newnote",children:[],deleted:!1,type:"newnote"}}const ret=await this.localDatabase.putDBEntry(saveData);await this.updatePluginList(!1,saveData.path);this._log(`STORAGE --\x3e DB:${prefixedFileName}: (config) Done`);return ret}catch(ex){this._log(`STORAGE --\x3e DB:${prefixedFileName}: (config) Failed`);this._log(ex,LOG_LEVEL_VERBOSE);return!1}}))}async $anyProcessOptionalFileEvent(path2){return await this.watchVaultRawEventsAsync(path2)}async watchVaultRawEventsAsync(path2){if(!this._isMainReady)return!1;if(this._isMainSuspended())return!1;if(!this._isThisModuleEnabled())return!1;const stat=await this.plugin.storageAccess.statHidden(path2);if(stat&&"file"!=stat.type)return!1;const configDir=normalizePath(this.app.vault.configDir);if(Object.values(this.settings.pluginSyncExtendedSetting).filter((e3=>e3.mode!=MODE_SELECTIVE&&e3.mode!=MODE_SHINY)).map((e3=>e3.files)).flat().map((e3=>`${configDir}/${e3}`.toLowerCase())).some((e3=>e3.startsWith(path2.toLowerCase())))){this._log(`Customization file skipped: ${path2}`,LOG_LEVEL_VERBOSE);return!1}const storageMTime=~~((stat&&stat.mtime||0)/1e3),key2=`${path2}-${storageMTime}`;if(this.recentProcessedInternalFiles.contains(key2))return!0;this.recentProcessedInternalFiles=[key2,...this.recentProcessedInternalFiles].slice(0,100);scheduleTask(this.filenameToUnifiedKey(path2),100,(async()=>{await this.storeCustomizationFiles(path2)}));return!0}async scanAllConfigFiles(showMessage){await shareRunningResult("scanAllConfigFiles",(async()=>{var _a7;const logLevel=showMessage?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO;this._log("Scanning customizing files.",logLevel,"scan-all-config");const term=this.plugin.$$getDeviceAndVaultName();if(""==term){this._log("We have to configure the device name",LOG_LEVEL_NOTICE);return}const filesAll=await this.scanInternalFiles();if(this.useV2){const filesAllUnified=filesAll.filter((e3=>this.isTargetPath(e3))).map((e3=>[this.filenameWithUnifiedKey(e3,term),e3])),localFileMap=new Map(filesAllUnified.map((e3=>[e3[0],e3[1]]))),prefix=this.unifiedKeyPrefixOfTerminal(term),entries2=this.localDatabase.findEntries(prefix+"",`${prefix}`,{include_docs:!0}),tasks3=[],semaphore=Semaphore(10);for await(const item of entries2)-1===item.path.indexOf("%")&&tasks3.push((async()=>{const releaser=await semaphore.acquire();try{const unifiedFilenameWithKey=`${item._id}`,localPath=localFileMap.get(unifiedFilenameWithKey);if(localPath){await this.storeCustomisationFileV2(localPath,term);localFileMap.delete(unifiedFilenameWithKey)}else await this.deleteConfigOnDatabase(unifiedFilenameWithKey)}catch(ex){this._log(`scanAllConfigFiles - Error: ${item._id}`,LOG_LEVEL_VERBOSE);this._log(ex,LOG_LEVEL_VERBOSE)}finally{releaser()}}));await Promise.all(tasks3.map((e3=>e3())));const taskExtra=[];for(const[,filePath]of localFileMap)taskExtra.push((async()=>{const releaser=await semaphore.acquire();try{await this.storeCustomisationFileV2(filePath,term)}catch(ex){this._log(`scanAllConfigFiles - Error: ${filePath}`,LOG_LEVEL_VERBOSE);this._log(ex,LOG_LEVEL_VERBOSE)}finally{releaser()}}));await Promise.all(taskExtra.map((e3=>e3())));fireAndForget((()=>this.updatePluginList(!1)))}else{const files=filesAll.filter((e3=>this.isTargetPath(e3))).map((e3=>({key:this.filenameToUnifiedKey(e3),file:e3}))),virtualPathsOfLocalFiles=[...new Set(files.map((e3=>e3.key)))];let deleteCandidate=(await this.localDatabase.allDocsRaw({startkey:ICXHeader+"",endkey:`${ICXHeader}`,include_docs:!0})).rows.map((e3=>e3.doc)).filter((e3=>!e3.deleted)).map((e3=>this.getPath(e3))).filter((e3=>e3.startsWith(`${ICXHeader}${term}/`)));for(const vp of virtualPathsOfLocalFiles){const p4=null==(_a7=files.find((e3=>e3.key==vp)))?void 0:_a7.file;if(p4){await this.storeCustomizationFiles(p4);deleteCandidate=deleteCandidate.filter((e3=>e3!=vp))}else this._log(`scanAllConfigFiles - File not found: ${vp}`,LOG_LEVEL_VERBOSE)}for(const vp of deleteCandidate)await this.deleteConfigOnDatabase(vp);fireAndForget((()=>this.updatePluginList(!1)))}}))}async deleteConfigOnDatabase(prefixedFileName,forceWrite=!1){const mtime=(new Date).getTime();return await serialized("file-x-"+prefixedFileName,(async()=>{try{const old=await this.localDatabase.getDBEntryMeta(prefixedFileName,void 0,!1);let saveData;if(!1===old){this._log(`STORAGE -x> DB:${prefixedFileName}: (config) already deleted (Not found on database)`);return!0}if(old.deleted){this._log(`STORAGE -x> DB:${prefixedFileName}: (config) already deleted`);return!0}saveData={...old,mtime,size:0,children:[],deleted:!0,type:"newnote"};await this.localDatabase.putRaw(saveData);await this.updatePluginList(!1,prefixedFileName);this._log(`STORAGE -x> DB:${prefixedFileName}: (config) Done`);return!0}catch(ex){this._log(`STORAGE -x> DB:${prefixedFileName}: (config) Failed`);this._log(ex,LOG_LEVEL_VERBOSE);return!1}}))}async scanInternalFiles(){return(await this.getFiles(this.app.vault.configDir,2)).filter((e3=>e3.startsWith("."))).filter((e3=>!e3.startsWith(".trash")))}async $allAskUsingOptionalSyncFeature(opt){await this._askHiddenFileConfiguration(opt);return!0}async _askHiddenFileConfiguration(opt){const choices=[];choices.push("Yes, Enable it");choices.push("No, Disable it");choices.push("Later");const ret=await this.plugin.confirm.askSelectStringDialogue("Would you like to enable **Customization sync**?\n\n> [!DETAILS]-\n> This feature allows you to sync your customisations -- such as configurations, themes, snippets, and plugins -- across your devices in a fully controlled manner, unlike the fully automatic behaviour of hidden file synchronisation.\n> \n> You may use this feature alongside hidden file synchronisation. When both features are enabled, items configured as `Automatic` in this feature will be managed by **hidden file synchronisation**.\n> Do not worry, you will be prompted to enable or keep disabled **hidden file synchronisation** after this dialogue.\n",choices,{defaultAction:"Later",timeout:40,title:"Customisation sync"});"Yes, Enable it"==ret?await this.configureHiddenFileSync("CUSTOMIZE"):"No, Disable it"==ret&&await this.configureHiddenFileSync("DISABLE_CUSTOM")}$anyGetOptionalConflictCheckMethod(path2){return isPluginMetadata(path2)||isCustomisationSyncMetadata(path2)?Promise.resolve("newer"):Promise.resolve(!1)}$allSuspendExtraSync(){if(this.plugin.settings.usePluginSync||this.plugin.settings.autoSweepPlugins){this._log("Customisation sync have been temporarily disabled. Please enable them after the fetching, if you need them.",LOG_LEVEL_NOTICE);this.plugin.settings.usePluginSync=!1;this.plugin.settings.autoSweepPlugins=!1}return Promise.resolve(!0)}async $anyConfigureOptionalSyncFeature(mode){await this.configureHiddenFileSync(mode)}async configureHiddenFileSync(mode){if("DISABLE"!=mode){if("CUSTOMIZE"==mode){if(!this.plugin.$$getDeviceAndVaultName()){let name=await this.plugin.confirm.askString("Device name","Please set this device name","desktop");if(!name){name=import_obsidian.Platform.isAndroidApp?"android-app":import_obsidian.Platform.isIosApp?"ios":import_obsidian.Platform.isMacOS?"macos":import_obsidian.Platform.isMobileApp?"mobile-app":import_obsidian.Platform.isMobile?"mobile":import_obsidian.Platform.isSafari?"safari":import_obsidian.Platform.isDesktop?"desktop":import_obsidian.Platform.isDesktopApp?"desktop-app":"unknown";name+=Math.random().toString(36).slice(-4)}this.plugin.$$setDeviceAndVaultName(name)}this.plugin.settings.usePluginSync=!0;this.plugin.settings.useAdvancedMode=!0;await this.plugin.saveSettings();await this.scanAllConfigFiles(!0)}}else{this.plugin.settings.usePluginSync=!1;await this.plugin.saveSettings()}}async getFiles(path2,lastDepth){if(-1==lastDepth)return[];let w2;try{w2=await this.app.vault.adapter.list(path2)}catch(ex){this._log(`Could not traverse(ConfigSync):${path2}`,LOG_LEVEL_INFO);this._log(ex,LOG_LEVEL_VERBOSE);return[]}let files=[...w2.files];for(const v2 of w2.folders)files=files.concat(await this.getFiles(v2,lastDepth-1));return files}};getHttpHandlerExtensionConfiguration=runtimeConfig=>{let httpHandler=runtimeConfig.httpHandler;return{setHttpHandler(handler){httpHandler=handler},httpHandler:()=>httpHandler,updateHttpClientConfig(key2,value){httpHandler.updateHttpClientConfig(key2,value)},httpHandlerConfigs:()=>httpHandler.httpHandlerConfigs()}};resolveHttpHandlerRuntimeConfig=httpHandlerExtensionConfiguration=>({httpHandler:httpHandlerExtensionConfiguration.httpHandler()});(function(HttpAuthLocation2){HttpAuthLocation2.HEADER="header";HttpAuthLocation2.QUERY="query"})(HttpAuthLocation||(HttpAuthLocation={}));(function(HttpApiKeyAuthLocation2){HttpApiKeyAuthLocation2.HEADER="header";HttpApiKeyAuthLocation2.QUERY="query"})(HttpApiKeyAuthLocation||(HttpApiKeyAuthLocation={}));(function(EndpointURLScheme2){EndpointURLScheme2.HTTP="http";EndpointURLScheme2.HTTPS="https"})(EndpointURLScheme||(EndpointURLScheme={}));(function(AlgorithmId2){AlgorithmId2.MD5="md5";AlgorithmId2.CRC32="crc32";AlgorithmId2.CRC32C="crc32c";AlgorithmId2.SHA1="sha1";AlgorithmId2.SHA256="sha256"})(AlgorithmId||(AlgorithmId={}));(function(FieldPosition2){FieldPosition2[FieldPosition2.HEADER=0]="HEADER";FieldPosition2[FieldPosition2.TRAILER=1]="TRAILER"})(FieldPosition||(FieldPosition={}));SMITHY_CONTEXT_KEY="__smithy_context";(function(IniSectionType2){IniSectionType2.PROFILE="profile";IniSectionType2.SSO_SESSION="sso-session";IniSectionType2.SERVICES="services"})(IniSectionType||(IniSectionType={}));(function(RequestHandlerProtocol2){RequestHandlerProtocol2.HTTP_0_9="http/0.9";RequestHandlerProtocol2.HTTP_1_0="http/1.0";RequestHandlerProtocol2.TDS_8_0="tds/8.0"})(RequestHandlerProtocol||(RequestHandlerProtocol={}));HttpRequest=class _HttpRequest{constructor(options){this.method=options.method||"GET";this.hostname=options.hostname||"localhost";this.port=options.port;this.query=options.query||{};this.headers=options.headers||{};this.body=options.body;this.protocol=options.protocol?":"!==options.protocol.slice(-1)?`${options.protocol}:`:options.protocol:"https:";this.path=options.path?"/"!==options.path.charAt(0)?`/${options.path}`:options.path:"/";this.username=options.username;this.password=options.password;this.fragment=options.fragment}static clone(request2){const cloned=new _HttpRequest({...request2,headers:{...request2.headers}});cloned.query&&(cloned.query=function cloneQuery(query3){return Object.keys(query3).reduce(((carry,paramName)=>{const param=query3[paramName];return{...carry,[paramName]:Array.isArray(param)?[...param]:param}}),{})}(cloned.query));return cloned}static isInstance(request2){if(!request2)return!1;const req=request2;return"method"in req&&"protocol"in req&&"hostname"in req&&"path"in req&&"object"==typeof req.query&&"object"==typeof req.headers}clone(){return _HttpRequest.clone(this)}};HttpResponse=class{constructor(options){this.statusCode=options.statusCode;this.reason=options.reason;this.headers=options.headers||{};this.body=options.body}static isInstance(response){if(!response)return!1;const resp=response;return"number"==typeof resp.statusCode&&"object"==typeof resp.headers}};addExpectContinueMiddlewareOptions={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0};getAddExpectContinuePlugin=options=>({applyToStack:clientStack=>{clientStack.add(function addExpectContinueMiddleware(options){return next2=>async args=>{var _a7,_b3;const{request:request2}=args;HttpRequest.isInstance(request2)&&request2.body&&"node"===options.runtime&&"FetchHttpHandler"!==(null==(_b3=null==(_a7=options.requestHandler)?void 0:_a7.constructor)?void 0:_b3.name)&&(request2.headers={...request2.headers,Expect:"100-continue"});return next2({...args,request:request2})}}(options),addExpectContinueMiddlewareOptions)}});hostHeaderMiddleware=options=>next2=>async args=>{if(!HttpRequest.isInstance(args.request))return next2(args);const{request:request2}=args,{handlerProtocol=""}=options.requestHandler.metadata||{};if(handlerProtocol.indexOf("h2")>=0&&!request2.headers[":authority"]){delete request2.headers.host;request2.headers[":authority"]=request2.hostname+(request2.port?":"+request2.port:"")}else if(!request2.headers.host){let host=request2.hostname;null!=request2.port&&(host+=`:${request2.port}`);request2.headers.host=host}return next2(args)};hostHeaderMiddlewareOptions={name:"hostHeaderMiddleware",step:"build",priority:"low",tags:["HOST"],override:!0};getHostHeaderPlugin=options=>({applyToStack:clientStack=>{clientStack.add(hostHeaderMiddleware(options),hostHeaderMiddlewareOptions)}});loggerMiddlewareOptions={name:"loggerMiddleware",tags:["LOGGER"],step:"initialize",override:!0};getLoggerPlugin=options=>({applyToStack:clientStack=>{clientStack.add(((next2,context2)=>async args=>{var _a7,_b3;try{const response=await next2(args),{clientName,commandName,logger:logger2,dynamoDbDocumentClientOptions={}}=context2,{overrideInputFilterSensitiveLog,overrideOutputFilterSensitiveLog}=dynamoDbDocumentClientOptions,inputFilterSensitiveLog=null!=overrideInputFilterSensitiveLog?overrideInputFilterSensitiveLog:context2.inputFilterSensitiveLog,outputFilterSensitiveLog=null!=overrideOutputFilterSensitiveLog?overrideOutputFilterSensitiveLog:context2.outputFilterSensitiveLog,{$metadata,...outputWithoutMetadata}=response.output;null==(_a7=null==logger2?void 0:logger2.info)||_a7.call(logger2,{clientName,commandName,input:inputFilterSensitiveLog(args.input),output:outputFilterSensitiveLog(outputWithoutMetadata),metadata:$metadata});return response}catch(error){const{clientName,commandName,logger:logger2,dynamoDbDocumentClientOptions={}}=context2,{overrideInputFilterSensitiveLog}=dynamoDbDocumentClientOptions,inputFilterSensitiveLog=null!=overrideInputFilterSensitiveLog?overrideInputFilterSensitiveLog:context2.inputFilterSensitiveLog;null==(_b3=null==logger2?void 0:logger2.error)||_b3.call(logger2,{clientName,commandName,input:inputFilterSensitiveLog(args.input),error,metadata:error.$metadata});throw error}}),loggerMiddlewareOptions)}});recursionDetectionMiddleware=options=>next2=>async args=>{const{request:request2}=args;if(!HttpRequest.isInstance(request2)||"node"!==options.runtime||request2.headers.hasOwnProperty("X-Amzn-Trace-Id"))return next2(args);const functionName=process.env.AWS_LAMBDA_FUNCTION_NAME,traceId=process.env._X_AMZN_TRACE_ID,nonEmptyString=str=>"string"==typeof str&&str.length>0;nonEmptyString(functionName)&&nonEmptyString(traceId)&&(request2.headers["X-Amzn-Trace-Id"]=traceId);return next2({...args,request:request2})};addRecursionDetectionMiddlewareOptions={step:"build",tags:["RECURSION_DETECTION"],name:"recursionDetectionMiddleware",override:!0,priority:"low"};getRecursionDetectionPlugin=options=>({applyToStack:clientStack=>{clientStack.add(recursionDetectionMiddleware(options),addRecursionDetectionMiddlewareOptions)}});NoOpLogger=class{trace(){}debug(){}info(){}warn(){}error(){}};getAllAliases=(name,aliases)=>{const _aliases=[];name&&_aliases.push(name);if(aliases)for(const alias of aliases)_aliases.push(alias);return _aliases};getMiddlewareNameWithAliases=(name,aliases)=>`${name||"anonymous"}${aliases&&aliases.length>0?` (a.k.a. ${aliases.join(",")})`:""}`;constructStack=()=>{let absoluteEntries=[],relativeEntries=[],identifyOnResolve=!1;const entriesNameSet=new Set,cloneTo=toStack=>{var _a7;absoluteEntries.forEach((entry=>{toStack.add(entry.middleware,{...entry})}));relativeEntries.forEach((entry=>{toStack.addRelativeTo(entry.middleware,{...entry})}));null==(_a7=toStack.identifyOnResolve)||_a7.call(toStack,stack2.identifyOnResolve());return toStack},expandRelativeMiddlewareList=from=>{const expandedMiddlewareList=[];from.before.forEach((entry=>{0===entry.before.length&&0===entry.after.length?expandedMiddlewareList.push(entry):expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry))}));expandedMiddlewareList.push(from);from.after.reverse().forEach((entry=>{0===entry.before.length&&0===entry.after.length?expandedMiddlewareList.push(entry):expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry))}));return expandedMiddlewareList},getMiddlewareList=(debug3=!1)=>{const normalizedAbsoluteEntries=[],normalizedRelativeEntries=[],normalizedEntriesNameMap={};absoluteEntries.forEach((entry=>{const normalizedEntry={...entry,before:[],after:[]};for(const alias of getAllAliases(normalizedEntry.name,normalizedEntry.aliases))normalizedEntriesNameMap[alias]=normalizedEntry;normalizedAbsoluteEntries.push(normalizedEntry)}));relativeEntries.forEach((entry=>{const normalizedEntry={...entry,before:[],after:[]};for(const alias of getAllAliases(normalizedEntry.name,normalizedEntry.aliases))normalizedEntriesNameMap[alias]=normalizedEntry;normalizedRelativeEntries.push(normalizedEntry)}));normalizedRelativeEntries.forEach((entry=>{if(entry.toMiddleware){const toMiddleware=normalizedEntriesNameMap[entry.toMiddleware];if(void 0===toMiddleware){if(debug3)return;throw new Error(`${entry.toMiddleware} is not found when adding ${getMiddlewareNameWithAliases(entry.name,entry.aliases)} middleware ${entry.relation} ${entry.toMiddleware}`)}"after"===entry.relation&&toMiddleware.after.push(entry);"before"===entry.relation&&toMiddleware.before.push(entry)}}));var entries2;return(entries2=normalizedAbsoluteEntries,entries2.sort(((a2,b3)=>stepWeights[b3.step]-stepWeights[a2.step]||priorityWeights[b3.priority||"normal"]-priorityWeights[a2.priority||"normal"]))).map(expandRelativeMiddlewareList).reduce(((wholeList,expandedMiddlewareList)=>{wholeList.push(...expandedMiddlewareList);return wholeList}),[])},stack2={add:(middleware,options={})=>{const{name,override,aliases:_aliases}=options,entry={step:"initialize",priority:"normal",middleware,...options},aliases=getAllAliases(name,_aliases);if(aliases.length>0){if(aliases.some((alias=>entriesNameSet.has(alias)))){if(!override)throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name,_aliases)}'`);for(const alias of aliases){const toOverrideIndex=absoluteEntries.findIndex((entry2=>{var _a7;return entry2.name===alias||(null==(_a7=entry2.aliases)?void 0:_a7.some((a2=>a2===alias)))}));if(-1===toOverrideIndex)continue;const toOverride=absoluteEntries[toOverrideIndex];if(toOverride.step!==entry.step||entry.priority!==toOverride.priority)throw new Error(`"${getMiddlewareNameWithAliases(toOverride.name,toOverride.aliases)}" middleware with ${toOverride.priority} priority in ${toOverride.step} step cannot be overridden by "${getMiddlewareNameWithAliases(name,_aliases)}" middleware with ${entry.priority} priority in ${entry.step} step.`);absoluteEntries.splice(toOverrideIndex,1)}}for(const alias of aliases)entriesNameSet.add(alias)}absoluteEntries.push(entry)},addRelativeTo:(middleware,options)=>{const{name,override,aliases:_aliases}=options,entry={middleware,...options},aliases=getAllAliases(name,_aliases);if(aliases.length>0){if(aliases.some((alias=>entriesNameSet.has(alias)))){if(!override)throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name,_aliases)}'`);for(const alias of aliases){const toOverrideIndex=relativeEntries.findIndex((entry2=>{var _a7;return entry2.name===alias||(null==(_a7=entry2.aliases)?void 0:_a7.some((a2=>a2===alias)))}));if(-1===toOverrideIndex)continue;const toOverride=relativeEntries[toOverrideIndex];if(toOverride.toMiddleware!==entry.toMiddleware||toOverride.relation!==entry.relation)throw new Error(`"${getMiddlewareNameWithAliases(toOverride.name,toOverride.aliases)}" middleware ${toOverride.relation} "${toOverride.toMiddleware}" middleware cannot be overridden by "${getMiddlewareNameWithAliases(name,_aliases)}" middleware ${entry.relation} "${entry.toMiddleware}" middleware.`);relativeEntries.splice(toOverrideIndex,1)}}for(const alias of aliases)entriesNameSet.add(alias)}relativeEntries.push(entry)},clone:()=>cloneTo(constructStack()),use:plugin3=>{plugin3.applyToStack(stack2)},remove:toRemove=>"string"==typeof toRemove?(toRemove=>{let isRemoved=!1;const filterCb=entry=>{const aliases=getAllAliases(entry.name,entry.aliases);if(aliases.includes(toRemove)){isRemoved=!0;for(const alias of aliases)entriesNameSet.delete(alias);return!1}return!0};absoluteEntries=absoluteEntries.filter(filterCb);relativeEntries=relativeEntries.filter(filterCb);return isRemoved})(toRemove):(toRemove=>{let isRemoved=!1;const filterCb=entry=>{if(entry.middleware===toRemove){isRemoved=!0;for(const alias of getAllAliases(entry.name,entry.aliases))entriesNameSet.delete(alias);return!1}return!0};absoluteEntries=absoluteEntries.filter(filterCb);relativeEntries=relativeEntries.filter(filterCb);return isRemoved})(toRemove),removeByTag:toRemove=>{let isRemoved=!1;const filterCb=entry=>{const{tags,name,aliases:_aliases}=entry;if(tags&&tags.includes(toRemove)){const aliases=getAllAliases(name,_aliases);for(const alias of aliases)entriesNameSet.delete(alias);isRemoved=!0;return!1}return!0};absoluteEntries=absoluteEntries.filter(filterCb);relativeEntries=relativeEntries.filter(filterCb);return isRemoved},concat:from=>{var _a7,_b3;const cloned=cloneTo(constructStack());cloned.use(from);cloned.identifyOnResolve(identifyOnResolve||cloned.identifyOnResolve()||null!=(_b3=null==(_a7=from.identifyOnResolve)?void 0:_a7.call(from))&&_b3);return cloned},applyToStack:cloneTo,identify:()=>getMiddlewareList(!0).map((mw=>{var _a7;const step=null!=(_a7=mw.step)?_a7:mw.relation+" "+mw.toMiddleware;return getMiddlewareNameWithAliases(mw.name,mw.aliases)+" - "+step})),identifyOnResolve(toggle){"boolean"==typeof toggle&&(identifyOnResolve=toggle);return identifyOnResolve},resolve:(handler,context2)=>{for(const middleware of getMiddlewareList().map((entry=>entry.middleware)).reverse())handler=middleware(handler,context2);identifyOnResolve&&console.log(stack2.identify());return handler}};return stack2};stepWeights={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1};priorityWeights={high:3,normal:2,low:1};Client=class{constructor(config){this.middlewareStack=constructStack();this.config=config}send(command,optionsOrCb,cb2){const options="function"!=typeof optionsOrCb?optionsOrCb:void 0,callback="function"==typeof optionsOrCb?optionsOrCb:cb2,handler=command.resolveMiddleware(this.middlewareStack,this.config,options);if(!callback)return handler(command).then((result=>result.output));handler(command).then((result=>callback(null,result.output)),(err2=>callback(err2))).catch((()=>{}))}destroy(){this.config.requestHandler.destroy&&this.config.requestHandler.destroy()}};alphabetByEncoding={};alphabetByValue=new Array(64);for(let i2=0,start="A".charCodeAt(0),limit="Z".charCodeAt(0);i2+start<=limit;i2++){const char=String.fromCharCode(i2+start);alphabetByEncoding[char]=i2;alphabetByValue[i2]=char}for(let i2=0,start="a".charCodeAt(0),limit="z".charCodeAt(0);i2+start<=limit;i2++){const char=String.fromCharCode(i2+start),index6=i2+26;alphabetByEncoding[char]=index6;alphabetByValue[index6]=char}for(let i2=0;i2<10;i2++){alphabetByEncoding[i2.toString(10)]=i2+52;const char=i2.toString(10),index6=i2+52;alphabetByEncoding[char]=index6;alphabetByValue[index6]=char}alphabetByEncoding["+"]=62;alphabetByValue[62]="+";alphabetByEncoding["/"]=63;alphabetByValue[63]="/";bitsPerLetter=6;bitsPerByte=8;maxLetterValue=63;fromBase64=input=>{let totalByteLength=input.length/4*3;"=="===input.slice(-2)?totalByteLength-=2:"="===input.slice(-1)&&totalByteLength--;const out=new ArrayBuffer(totalByteLength),dataView=new DataView(out);for(let i2=0;i2<input.length;i2+=4){let bits2=0,bitLength=0;for(let j2=i2,limit=i2+3;j2<=limit;j2++)if("="!==input[j2]){if(!(input[j2]in alphabetByEncoding))throw new TypeError(`Invalid character ${input[j2]} in base64 string.`);bits2|=alphabetByEncoding[input[j2]]<<(limit-j2)*bitsPerLetter;bitLength+=bitsPerLetter}else bits2>>=bitsPerLetter;const chunkOffset=i2/4*3;bits2>>=bitLength%bitsPerByte;const byteLength=Math.floor(bitLength/bitsPerByte);for(let k2=0;k2<byteLength;k2++){const offset=(byteLength-k2-1)*bitsPerByte;dataView.setUint8(chunkOffset+k2,(bits2&255<<offset)>>offset)}}return new Uint8Array(out)};fromUtf8=input=>(new TextEncoder).encode(input);toUint8Array=data=>"string"==typeof data?fromUtf8(data):ArrayBuffer.isView(data)?new Uint8Array(data.buffer,data.byteOffset,data.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(data);toUtf8=input=>{if("string"==typeof input)return input;if("object"!=typeof input||"number"!=typeof input.byteOffset||"number"!=typeof input.byteLength)throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return new TextDecoder("utf-8").decode(input)};Uint8ArrayBlobAdapter=class _Uint8ArrayBlobAdapter extends Uint8Array{static fromString(source2,encoding="utf-8"){switch(typeof source2){case"string":return function transformFromString(str,encoding){return"base64"===encoding?Uint8ArrayBlobAdapter.mutate(fromBase64(str)):Uint8ArrayBlobAdapter.mutate(fromUtf8(str))}(source2,encoding);default:throw new Error(`Unsupported conversion from ${typeof source2} to Uint8ArrayBlobAdapter.`)}}static mutate(source2){Object.setPrototypeOf(source2,_Uint8ArrayBlobAdapter.prototype);return source2}transformToString(encoding="utf-8"){return function transformToString(payload,encoding="utf-8"){return"base64"===encoding?toBase64(payload):toUtf8(payload)}(this,encoding)}};getAwsChunkedEncodingStream=(readableStream,options)=>{const{base64Encoder,bodyLengthChecker,checksumAlgorithmFn,checksumLocationName,streamHasher}=options,checksumRequired=void 0!==base64Encoder&&void 0!==bodyLengthChecker&&void 0!==checksumAlgorithmFn&&void 0!==checksumLocationName&&void 0!==streamHasher,digest=checksumRequired?streamHasher(checksumAlgorithmFn,readableStream):void 0,reader=readableStream.getReader();return new ReadableStream({async pull(controller){const{value,done}=await reader.read();if(done){controller.enqueue("0\r\n");if(checksumRequired){const checksum=base64Encoder(await digest);controller.enqueue(`${checksumLocationName}:${checksum}\r\n`);controller.enqueue("\r\n")}controller.close()}else controller.enqueue(`${(bodyLengthChecker(value)||0).toString(16)}\r\n${value}\r\n`)}})};escapeUri=uri=>encodeURIComponent(uri).replace(/[!'()*]/g,hexEncode);hexEncode=c3=>`%${c3.charCodeAt(0).toString(16).toUpperCase()}`;keepAliveSupport={supported:void 0};FetchHttpHandler=class _FetchHttpHandler{static create(instanceOrOptions){return"function"==typeof(null==instanceOrOptions?void 0:instanceOrOptions.handle)?instanceOrOptions:new _FetchHttpHandler(instanceOrOptions)}constructor(options){if("function"==typeof options)this.configProvider=options().then((opts=>opts||{}));else{this.config=null!=options?options:{};this.configProvider=Promise.resolve(this.config)}void 0===keepAliveSupport.supported&&(keepAliveSupport.supported=Boolean("undefined"!=typeof Request&&"keepalive"in new Request("https://[::1]")))}destroy(){}async handle(request2,{abortSignal}={}){var _a7,_b3;this.config||(this.config=await this.configProvider);const requestTimeoutInMs=this.config.requestTimeout,keepAlive=!0===this.config.keepAlive,credentials=this.config.credentials;if(null==abortSignal?void 0:abortSignal.aborted){const abortError=new Error("Request aborted");abortError.name="AbortError";return Promise.reject(abortError)}let path2=request2.path;const queryString=buildQueryString(request2.query||{});queryString&&(path2+=`?${queryString}`);request2.fragment&&(path2+=`#${request2.fragment}`);let auth="";null==request2.username&&null==request2.password||(auth=`${null!=(_a7=request2.username)?_a7:""}:${null!=(_b3=request2.password)?_b3:""}@`);const{port,method}=request2,url=`${request2.protocol}//${auth}${request2.hostname}${port?`:${port}`:""}${path2}`,body="GET"===method||"HEAD"===method?void 0:request2.body,requestOptions={body,headers:new Headers(request2.headers),method,credentials};body&&(requestOptions.duplex="half");"undefined"!=typeof AbortController&&(requestOptions.signal=abortSignal);keepAliveSupport.supported&&(requestOptions.keepalive=keepAlive);let removeSignalEventListener=()=>{};const fetchRequest=new Request(url,requestOptions),raceOfPromises=[fetch(fetchRequest).then((response=>{const fetchHeaders=response.headers,transformedHeaders={};for(const pair of fetchHeaders.entries())transformedHeaders[pair[0]]=pair[1];return null!=response.body?{response:new HttpResponse({headers:transformedHeaders,reason:response.statusText,statusCode:response.status,body:response.body})}:response.blob().then((body2=>({response:new HttpResponse({headers:transformedHeaders,reason:response.statusText,statusCode:response.status,body:body2})})))})),requestTimeout(requestTimeoutInMs)];abortSignal&&raceOfPromises.push(new Promise(((resolve,reject)=>{const onAbort=()=>{const abortError=new Error("Request aborted");abortError.name="AbortError";reject(abortError)};if("function"==typeof abortSignal.addEventListener){const signal=abortSignal;signal.addEventListener("abort",onAbort,{once:!0});removeSignalEventListener=()=>signal.removeEventListener("abort",onAbort)}else abortSignal.onabort=onAbort})));return Promise.race(raceOfPromises).finally(removeSignalEventListener)}updateHttpClientConfig(key2,value){this.config=void 0;this.configProvider=this.configProvider.then((config=>{config[key2]=value;return config}))}httpHandlerConfigs(){var _a7;return null!=(_a7=this.config)?_a7:{}}};streamCollector=stream=>"function"==typeof Blob&&stream instanceof Blob?async function collectBlob(blob){const base64=await function readToBase64(blob){return new Promise(((resolve,reject)=>{const reader=new FileReader;reader.onloadend=()=>{var _a7;if(2!==reader.readyState)return reject(new Error("Reader aborted too early"));const result=null!=(_a7=reader.result)?_a7:"",commaIndex=result.indexOf(","),dataOffset=commaIndex>-1?commaIndex+1:result.length;resolve(result.substring(dataOffset))};reader.onabort=()=>reject(new Error("Read aborted"));reader.onerror=()=>reject(reader.error);reader.readAsDataURL(blob)}))}(blob),arrayBuffer=fromBase64(base64);return new Uint8Array(arrayBuffer)}(stream):async function collectStream(stream){const chunks=[],reader=stream.getReader();let isDone=!1,length=0;for(;!isDone;){const{done,value}=await reader.read();if(value){chunks.push(value);length+=value.length}isDone=done}const collected=new Uint8Array(length);let offset=0;for(const chunk of chunks){collected.set(chunk,offset);offset+=chunk.length}return collected}(stream);SHORT_TO_HEX={};HEX_TO_SHORT={};for(let i2=0;i2<256;i2++){let encodedByte=i2.toString(16).toLowerCase();1===encodedByte.length&&(encodedByte=`0${encodedByte}`);SHORT_TO_HEX[i2]=encodedByte;HEX_TO_SHORT[encodedByte]=i2}isReadableStream=stream=>{var _a7;return"function"==typeof ReadableStream&&((null==(_a7=null==stream?void 0:stream.constructor)?void 0:_a7.name)===ReadableStream.name||stream instanceof ReadableStream)};sdkStreamMixin=stream=>{var _a7,_b3;if(!isBlobInstance(stream)&&!isReadableStream(stream)){const name=(null==(_b3=null==(_a7=null==stream?void 0:stream.__proto__)?void 0:_a7.constructor)?void 0:_b3.name)||stream;throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${name}`)}let transformed=!1;const transformToByteArray=async()=>{if(transformed)throw new Error("The stream has already been transformed.");transformed=!0;return await streamCollector(stream)};return Object.assign(stream,{transformToByteArray,transformToString:async encoding=>{const buf=await transformToByteArray();if("base64"===encoding)return toBase64(buf);if("hex"===encoding)return toHex2(buf);if(void 0===encoding||"utf8"===encoding||"utf-8"===encoding)return toUtf8(buf);if("function"==typeof TextDecoder)return new TextDecoder(encoding).decode(buf);throw new Error("TextDecoder is not available, please make sure polyfill is provided.")},transformToWebStream:()=>{if(transformed)throw new Error("The stream has already been transformed.");transformed=!0;if(isBlobInstance(stream))return(blob=>{if("function"!=typeof blob.stream)throw new Error("Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\nIf you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body");return blob.stream()})(stream);if(isReadableStream(stream))return stream;throw new Error(`Cannot transform payload to web stream, got ${stream}`)}})};isBlobInstance=stream=>"function"==typeof Blob&&stream instanceof Blob;collectBody=async(streamBody=new Uint8Array,context2)=>{if(streamBody instanceof Uint8Array)return Uint8ArrayBlobAdapter.mutate(streamBody);if(!streamBody)return Uint8ArrayBlobAdapter.mutate(new Uint8Array);const fromContext=context2.streamCollector(streamBody);return Uint8ArrayBlobAdapter.mutate(await fromContext)};Command=class{constructor(){this.middlewareStack=constructStack()}static classBuilder(){return new ClassBuilder}resolveMiddlewareWithContext(clientStack,configuration,options,{middlewareFn,clientName,commandName,inputFilterSensitiveLog,outputFilterSensitiveLog,smithyContext,additionalContext,CommandCtor}){for(const mw of middlewareFn.bind(this)(CommandCtor,clientStack,configuration,options))this.middlewareStack.use(mw);const stack2=clientStack.concat(this.middlewareStack),{logger:logger2}=configuration,handlerExecutionContext={logger:logger2,clientName,commandName,inputFilterSensitiveLog,outputFilterSensitiveLog,[SMITHY_CONTEXT_KEY]:{commandInstance:this,...smithyContext},...additionalContext},{requestHandler}=configuration;return stack2.resolve((request2=>requestHandler.handle(request2.request,options||{})),handlerExecutionContext)}};ClassBuilder=class{constructor(){this._init=()=>{};this._ep={};this._middlewareFn=()=>[];this._commandName="";this._clientName="";this._additionalContext={};this._smithyContext={};this._inputFilterSensitiveLog=_=>_;this._outputFilterSensitiveLog=_=>_;this._serializer=null;this._deserializer=null}init(cb2){this._init=cb2}ep(endpointParameterInstructions){this._ep=endpointParameterInstructions;return this}m(middlewareSupplier){this._middlewareFn=middlewareSupplier;return this}s(service,operation,smithyContext={}){this._smithyContext={service,operation,...smithyContext};return this}c(additionalContext={}){this._additionalContext=additionalContext;return this}n(clientName,commandName){this._clientName=clientName;this._commandName=commandName;return this}f(inputFilter=_=>_,outputFilter=_=>_){this._inputFilterSensitiveLog=inputFilter;this._outputFilterSensitiveLog=outputFilter;return this}ser(serializer){this._serializer=serializer;return this}de(deserializer){this._deserializer=deserializer;return this}build(){const closure=this;let CommandRef;return CommandRef=class extends Command{static getEndpointParameterInstructions(){return closure._ep}constructor(...[input]){super();this.serialize=closure._serializer;this.deserialize=closure._deserializer;this.input=null!=input?input:{};closure._init(this)}resolveMiddleware(stack2,configuration,options){return this.resolveMiddlewareWithContext(stack2,configuration,options,{CommandCtor:CommandRef,middlewareFn:closure._middlewareFn,clientName:closure._clientName,commandName:closure._commandName,inputFilterSensitiveLog:closure._inputFilterSensitiveLog,outputFilterSensitiveLog:closure._outputFilterSensitiveLog,smithyContext:closure._smithyContext,additionalContext:closure._additionalContext})}}}};SENSITIVE_STRING="***SensitiveInformation***";createAggregatedClient=(commands2,Client2)=>{for(const command of Object.keys(commands2)){const CommandCtor=commands2[command],methodImpl=async function(args,optionsOrCb,cb2){const command2=new CommandCtor(args);if("function"==typeof optionsOrCb)this.send(command2,optionsOrCb);else{if("function"!=typeof cb2)return this.send(command2,optionsOrCb);if("object"!=typeof optionsOrCb)throw new Error("Expected http options but got "+typeof optionsOrCb);this.send(command2,optionsOrCb||{},cb2)}},methodName=(command[0].toLowerCase()+command.slice(1)).replace(/Command$/,"");Client2.prototype[methodName]=methodImpl}};parseBoolean=value=>{switch(value){case"true":return!0;case"false":return!1;default:throw new Error(`Unable to parse boolean value "${value}"`)}};expectNumber=value=>{if(null!=value){if("string"==typeof value){const parsed=parseFloat(value);if(!Number.isNaN(parsed)){String(parsed)!==String(value)&&logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`));return parsed}}if("number"==typeof value)return value;throw new TypeError(`Expected number, got ${typeof value}: ${value}`)}};MAX_FLOAT=Math.ceil(2**127*(2-2**-23));expectFloat32=value=>{const expected=expectNumber(value);if(void 0!==expected&&!Number.isNaN(expected)&&expected!==1/0&&expected!==-1/0&&Math.abs(expected)>MAX_FLOAT)throw new TypeError(`Expected 32-bit float, got ${value}`);return expected};expectLong=value=>{if(null!=value){if(Number.isInteger(value)&&!Number.isNaN(value))return value;throw new TypeError(`Expected integer, got ${typeof value}: ${value}`)}};expectInt32=value=>expectSizedInt(value,32);expectShort=value=>expectSizedInt(value,16);expectByte=value=>expectSizedInt(value,8);expectSizedInt=(value,size)=>{const expected=expectLong(value);if(void 0!==expected&&castInt(expected,size)!==expected)throw new TypeError(`Expected ${size}-bit integer, got ${value}`);return expected};castInt=(value,size)=>{switch(size){case 32:return Int32Array.of(value)[0];case 16:return Int16Array.of(value)[0];case 8:return Int8Array.of(value)[0]}};expectNonNull=(value,location)=>{if(null==value){if(location)throw new TypeError(`Expected a non-null value for ${location}`);throw new TypeError("Expected a non-null value")}return value};expectObject=value=>{if(null==value)return;if("object"==typeof value&&!Array.isArray(value))return value;const receivedType=Array.isArray(value)?"array":typeof value;throw new TypeError(`Expected object, got ${receivedType}: ${value}`)};expectString=value=>{if(null!=value){if("string"==typeof value)return value;if(["boolean","number","bigint"].includes(typeof value)){logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`));return String(value)}throw new TypeError(`Expected string, got ${typeof value}: ${value}`)}};expectUnion=value=>{if(null==value)return;const asObject=expectObject(value),setKeys=Object.entries(asObject).filter((([,v2])=>null!=v2)).map((([k2])=>k2));if(0===setKeys.length)throw new TypeError("Unions must have exactly one non-null member. None were found.");if(setKeys.length>1)throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`);return asObject};strictParseFloat32=value=>expectFloat32("string"==typeof value?parseNumber(value):value);NUMBER_REGEX=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g;parseNumber=value=>{const matches=value.match(NUMBER_REGEX);if(null===matches||matches[0].length!==value.length)throw new TypeError("Expected real number, got implicit NaN");return parseFloat(value)};strictParseLong=value=>expectLong("string"==typeof value?parseNumber(value):value);strictParseInt32=value=>expectInt32("string"==typeof value?parseNumber(value):value);strictParseShort=value=>expectShort("string"==typeof value?parseNumber(value):value);strictParseByte=value=>expectByte("string"==typeof value?parseNumber(value):value);stackTraceWarning=message=>String(new TypeError(message).stack||message).split("\n").slice(0,5).filter((s2=>!s2.includes("stackTraceWarning"))).join("\n");logger={warn:console.warn};DAYS=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];MONTHS=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?[zZ]$/);RFC3339_WITH_OFFSET=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/);parseRfc3339DateTimeWithOffset=value=>{if(null==value)return;if("string"!=typeof value)throw new TypeError("RFC-3339 date-times must be expressed as strings");const match3=RFC3339_WITH_OFFSET.exec(value);if(!match3)throw new TypeError("Invalid RFC-3339 date-time value");const[_,yearStr,monthStr,dayStr,hours,minutes,seconds,fractionalMilliseconds,offsetStr]=match3,year=strictParseShort(stripLeadingZeroes(yearStr)),month=parseDateValue(monthStr,"month",1,12),day=parseDateValue(dayStr,"day",1,31),date=buildDate(year,month,day,{hours,minutes,seconds,fractionalMilliseconds});"Z"!=offsetStr.toUpperCase()&&date.setTime(date.getTime()-parseOffsetToMilliseconds(offsetStr));return date};IMF_FIXDATE=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/);RFC_850_DATE=new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/);ASC_TIME=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/);parseRfc7231DateTime=value=>{if(null==value)return;if("string"!=typeof value)throw new TypeError("RFC-7231 date-times must be expressed as strings");let match3=IMF_FIXDATE.exec(value);if(match3){const[_,dayStr,monthStr,yearStr,hours,minutes,seconds,fractionalMilliseconds]=match3;return buildDate(strictParseShort(stripLeadingZeroes(yearStr)),parseMonthByShortName(monthStr),parseDateValue(dayStr,"day",1,31),{hours,minutes,seconds,fractionalMilliseconds})}match3=RFC_850_DATE.exec(value);if(match3){const[_,dayStr,monthStr,yearStr,hours,minutes,seconds,fractionalMilliseconds]=match3;return adjustRfc850Year(buildDate(parseTwoDigitYear(yearStr),parseMonthByShortName(monthStr),parseDateValue(dayStr,"day",1,31),{hours,minutes,seconds,fractionalMilliseconds}))}match3=ASC_TIME.exec(value);if(match3){const[_,monthStr,dayStr,hours,minutes,seconds,fractionalMilliseconds,yearStr]=match3;return buildDate(strictParseShort(stripLeadingZeroes(yearStr)),parseMonthByShortName(monthStr),parseDateValue(dayStr.trimLeft(),"day",1,31),{hours,minutes,seconds,fractionalMilliseconds})}throw new TypeError("Invalid RFC-7231 date-time value")};buildDate=(year,month,day,time)=>{const adjustedMonth=month-1;validateDayOfMonth(year,adjustedMonth,day);return new Date(Date.UTC(year,adjustedMonth,day,parseDateValue(time.hours,"hour",0,23),parseDateValue(time.minutes,"minute",0,59),parseDateValue(time.seconds,"seconds",0,60),parseMilliseconds(time.fractionalMilliseconds)))};parseTwoDigitYear=value=>{const thisYear=(new Date).getUTCFullYear(),valueInThisCentury=100*Math.floor(thisYear/100)+strictParseShort(stripLeadingZeroes(value));return valueInThisCentury<thisYear?valueInThisCentury+100:valueInThisCentury};adjustRfc850Year=input=>input.getTime()-(new Date).getTime()>15768e8?new Date(Date.UTC(input.getUTCFullYear()-100,input.getUTCMonth(),input.getUTCDate(),input.getUTCHours(),input.getUTCMinutes(),input.getUTCSeconds(),input.getUTCMilliseconds())):input;parseMonthByShortName=value=>{const monthIdx=MONTHS.indexOf(value);if(monthIdx<0)throw new TypeError(`Invalid month: ${value}`);return monthIdx+1};DAYS_IN_MONTH=[31,28,31,30,31,30,31,31,30,31,30,31];validateDayOfMonth=(year,month,day)=>{let maxDays=DAYS_IN_MONTH[month];1===month&&isLeapYear(year)&&(maxDays=29);if(day>maxDays)throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`)};isLeapYear=year=>year%4==0&&(year%100!=0||year%400==0);parseDateValue=(value,type,lower,upper)=>{const dateVal=strictParseByte(stripLeadingZeroes(value));if(dateVal<lower||dateVal>upper)throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`);return dateVal};parseMilliseconds=value=>null==value?0:1e3*strictParseFloat32("0."+value);parseOffsetToMilliseconds=value=>{const directionStr=value[0];let direction=1;if("+"==directionStr)direction=1;else{if("-"!=directionStr)throw new TypeError(`Offset direction, ${directionStr}, must be "+" or "-"`);direction=-1}return direction*(60*Number(value.substring(1,3))+Number(value.substring(4,6)))*60*1e3};stripLeadingZeroes=value=>{let idx2=0;for(;idx2<value.length-1&&"0"===value.charAt(idx2);)idx2++;return 0===idx2?value:value.slice(idx2)};ServiceException=class _ServiceException extends Error{constructor(options){super(options.message);Object.setPrototypeOf(this,_ServiceException.prototype);this.name=options.name;this.$fault=options.$fault;this.$metadata=options.$metadata}};decorateServiceException=(exception,additions={})=>{Object.entries(additions).filter((([,v2])=>void 0!==v2)).forEach((([k2,v2])=>{null!=exception[k2]&&""!==exception[k2]||(exception[k2]=v2)}));const message=exception.message||exception.Message||"UnknownError";exception.message=message;delete exception.Message;return exception};throwDefaultError=({output,parsedBody,exceptionCtor,errorCode})=>{const $metadata=deserializeMetadata(output),statusCode=$metadata.httpStatusCode?$metadata.httpStatusCode+"":void 0,response=new exceptionCtor({name:(null==parsedBody?void 0:parsedBody.code)||(null==parsedBody?void 0:parsedBody.Code)||errorCode||statusCode||"UnknownError",$fault:"client",$metadata});throw decorateServiceException(response,parsedBody)};withBaseException=ExceptionCtor=>({output,parsedBody,errorCode})=>{throwDefaultError({output,parsedBody,exceptionCtor:ExceptionCtor,errorCode})};deserializeMetadata=output=>{var _a7,_b3;return{httpStatusCode:output.statusCode,requestId:null!=(_b3=null!=(_a7=output.headers["x-amzn-requestid"])?_a7:output.headers["x-amzn-request-id"])?_b3:output.headers["x-amz-request-id"],extendedRequestId:output.headers["x-amz-id-2"],cfId:output.headers["x-amz-cf-id"]}};loadConfigsForDefaultMode=mode=>{switch(mode){case"standard":return{retryMode:"standard",connectionTimeout:3100};case"in-region":return{retryMode:"standard",connectionTimeout:1100};case"cross-region":return{retryMode:"standard",connectionTimeout:3100};case"mobile":return{retryMode:"standard",connectionTimeout:3e4};default:return{}}};getChecksumConfiguration2=runtimeConfig=>{const checksumAlgorithms=[];for(const id in AlgorithmId){const algorithmId=AlgorithmId[id];void 0!==runtimeConfig[algorithmId]&&checksumAlgorithms.push({algorithmId:()=>algorithmId,checksumConstructor:()=>runtimeConfig[algorithmId]})}return{_checksumAlgorithms:checksumAlgorithms,addChecksumAlgorithm(algo2){this._checksumAlgorithms.push(algo2)},checksumAlgorithms(){return this._checksumAlgorithms}}};resolveChecksumRuntimeConfig2=clientConfig=>{const runtimeConfig={};clientConfig.checksumAlgorithms().forEach((checksumAlgorithm=>{runtimeConfig[checksumAlgorithm.algorithmId()]=checksumAlgorithm.checksumConstructor()}));return runtimeConfig};getRetryConfiguration=runtimeConfig=>{let _retryStrategy=runtimeConfig.retryStrategy;return{setRetryStrategy(retryStrategy){_retryStrategy=retryStrategy},retryStrategy:()=>_retryStrategy}};resolveRetryRuntimeConfig=retryStrategyConfiguration=>{const runtimeConfig={};runtimeConfig.retryStrategy=retryStrategyConfiguration.retryStrategy();return runtimeConfig};getDefaultExtensionConfiguration=runtimeConfig=>({...getChecksumConfiguration2(runtimeConfig),...getRetryConfiguration(runtimeConfig)});resolveDefaultRuntimeConfig2=config=>({...resolveChecksumRuntimeConfig2(config),...resolveRetryRuntimeConfig(config)});getArrayIfSingleItem=mayBeArray=>Array.isArray(mayBeArray)?mayBeArray:[mayBeArray];getValueFromTextNode=obj=>{for(const key2 in obj)obj.hasOwnProperty(key2)&&void 0!==obj[key2]["#text"]?obj[key2]=obj[key2]["#text"]:"object"==typeof obj[key2]&&null!==obj[key2]&&(obj[key2]=getValueFromTextNode(obj[key2]));return obj};(StringWrapper=function(){const Class=Object.getPrototypeOf(this).constructor,instance3=new(Function.bind.apply(String,[null,...arguments]));Object.setPrototypeOf(instance3,Class.prototype);return instance3}).prototype=Object.create(String.prototype,{constructor:{value:StringWrapper,enumerable:!1,writable:!0,configurable:!0}});Object.setPrototypeOf(StringWrapper,String);mapWithFilter=(target,filter4,instructions)=>map(target,Object.entries(instructions).reduce(((_instructions,[key2,value])=>{Array.isArray(value)?_instructions[key2]=value:_instructions[key2]="function"==typeof value?[filter4,value()]:[filter4,value];return _instructions}),{}));applyInstruction=(target,source2,instructions,targetKey)=>{if(null!==source2){let instruction=instructions[targetKey];"function"==typeof instruction&&(instruction=[,instruction]);const[filter5=nonNullish,valueFn=pass,sourceKey=targetKey]=instruction;("function"==typeof filter5&&filter5(source2[sourceKey])||"function"!=typeof filter5&&filter5)&&(target[targetKey]=valueFn(source2[sourceKey]));return}let[filter4,value]=instructions[targetKey];if("function"==typeof value){let _value;const defaultFilterPassed=void 0===filter4&&null!=(_value=value()),customFilterPassed="function"==typeof filter4&&!!filter4(void 0)||"function"!=typeof filter4&&!!filter4;defaultFilterPassed?target[targetKey]=_value:customFilterPassed&&(target[targetKey]=value())}else{const defaultFilterPassed=void 0===filter4&&null!=value,customFilterPassed="function"==typeof filter4&&!!filter4(value)||"function"!=typeof filter4&&!!filter4;(defaultFilterPassed||customFilterPassed)&&(target[targetKey]=value)}};nonNullish=_=>null!=_;pass=_=>_;resolvedPath=(resolvedPath2,input,memberName,labelValueProvider,uriLabel,isGreedyLabel)=>{if(null==input||void 0===input[memberName])throw new Error("No value provided for input HTTP label: "+memberName+".");{const labelValue=labelValueProvider();if(labelValue.length<=0)throw new Error("Empty value provided for input HTTP label: "+memberName+".");resolvedPath2=resolvedPath2.replace(uriLabel,isGreedyLabel?labelValue.split("/").map((segment=>extendedEncodeURIComponent(segment))).join("/"):extendedEncodeURIComponent(labelValue))}return resolvedPath2};serializeDateTime=date=>date.toISOString().replace(".000Z","Z");checkContentLengthHeaderMiddlewareOptions={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:!0};getCheckContentLengthHeaderPlugin=unused=>({applyToStack:clientStack=>{clientStack.add(function checkContentLengthHeader(){return(next2,context2)=>async args=>{var _a7;const{request:request2}=args;if(HttpRequest.isInstance(request2)&&!("content-length"in request2.headers)){const message="Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.";"function"!=typeof(null==(_a7=null==context2?void 0:context2.logger)?void 0:_a7.warn)||context2.logger instanceof NoOpLogger?console.warn(message):context2.logger.warn(message)}return next2({...args})}}(),checkContentLengthHeaderMiddlewareOptions)}});regionRedirectEndpointMiddleware=config=>(next2,context2)=>async args=>{const originalRegion=await config.region(),regionProviderRef=config.region;let unlock=()=>{};if(context2.__s3RegionRedirect){Object.defineProperty(config,"region",{writable:!1,value:async()=>context2.__s3RegionRedirect});unlock=()=>Object.defineProperty(config,"region",{writable:!0,value:regionProviderRef})}try{const result=await next2(args);if(context2.__s3RegionRedirect){unlock();if(originalRegion!==await config.region())throw new Error("Region was not restored following S3 region redirect.")}return result}catch(e3){unlock();throw e3}};regionRedirectEndpointMiddlewareOptions={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"};regionRedirectMiddlewareOptions={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:!0};getRegionRedirectMiddlewarePlugin=clientConfig=>({applyToStack:clientStack=>{clientStack.add(function regionRedirectMiddleware(clientConfig){return(next2,context2)=>async args=>{var _a7,_b3;try{return await next2(args)}catch(err2){if(clientConfig.followRegionRedirects&&301===(null==(_a7=null==err2?void 0:err2.$metadata)?void 0:_a7.httpStatusCode)){try{const actualRegion=err2.$response.headers["x-amz-bucket-region"];null==(_b3=context2.logger)||_b3.debug(`Redirecting from ${await clientConfig.region()} to ${actualRegion}`);context2.__s3RegionRedirect=actualRegion}catch(e3){throw new Error("Region redirect failed: "+e3)}return next2(args)}throw err2}}}(clientConfig),regionRedirectMiddlewareOptions);clientStack.addRelativeTo(regionRedirectEndpointMiddleware(clientConfig),regionRedirectEndpointMiddlewareOptions)}});s3ExpiresMiddleware=config=>(next2,context2)=>async args=>{var _a7;const result=await next2(args),{response}=result;if(HttpResponse.isInstance(response)&&response.headers.expires){response.headers.expiresstring=response.headers.expires;try{parseRfc7231DateTime(response.headers.expires)}catch(e3){null==(_a7=context2.logger)||_a7.warn(`AWS SDK Warning for ${context2.clientName}::${context2.commandName} response parsing (${response.headers.expires}): ${e3}`);delete response.headers.expires}}return result};s3ExpiresMiddlewareOptions={tags:["S3"],name:"s3ExpiresMiddleware",override:!0,relation:"after",toMiddleware:"deserializerMiddleware"};getS3ExpiresMiddlewarePlugin=clientConfig=>({applyToStack:clientStack=>{clientStack.addRelativeTo(s3ExpiresMiddleware(),s3ExpiresMiddlewareOptions)}});(S3ExpressIdentityCache=class _S3ExpressIdentityCache{constructor(data={}){this.data=data;this.lastPurgeTime=Date.now()}get(key2){const entry=this.data[key2];if(entry)return entry}set(key2,entry){this.data[key2]=entry;return entry}delete(key2){delete this.data[key2]}async purgeExpired(){const now3=Date.now();if(!(this.lastPurgeTime+_S3ExpressIdentityCache.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS>now3))for(const key2 in this.data){const entry=this.data[key2];if(!entry.isRefreshing){const credential=await entry.identity;credential.expiration&&credential.expiration.getTime()<now3&&delete this.data[key2]}}}}).EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS=3e4;S3ExpressIdentityCacheEntry=class{constructor(_identity,isRefreshing=!1,accessed=Date.now()){this._identity=_identity;this.isRefreshing=isRefreshing;this.accessed=accessed}get identity(){this.accessed=Date.now();return this._identity}};(S3ExpressIdentityProviderImpl=class _S3ExpressIdentityProviderImpl{constructor(createSessionFn,cache=new S3ExpressIdentityCache){this.createSessionFn=createSessionFn;this.cache=cache}async getS3ExpressIdentity(awsIdentity,identityProperties){const key2=identityProperties.Bucket,{cache}=this,entry=cache.get(key2);return entry?entry.identity.then((identity=>{var _a7,_b3,_c2,_d2;if((null!=(_b3=null==(_a7=identity.expiration)?void 0:_a7.getTime())?_b3:0)<Date.now())return cache.set(key2,new S3ExpressIdentityCacheEntry(this.getIdentity(key2))).identity;if((null!=(_d2=null==(_c2=identity.expiration)?void 0:_c2.getTime())?_d2:0)<Date.now()+_S3ExpressIdentityProviderImpl.REFRESH_WINDOW_MS&&!entry.isRefreshing){entry.isRefreshing=!0;this.getIdentity(key2).then((id=>{cache.set(key2,new S3ExpressIdentityCacheEntry(Promise.resolve(id)))}))}return identity})):cache.set(key2,new S3ExpressIdentityCacheEntry(this.getIdentity(key2))).identity}async getIdentity(key2){var _a7,_b3;await this.cache.purgeExpired().catch((error=>{console.warn("Error while clearing expired entries in S3ExpressIdentityCache: \n"+error)}));const session=await this.createSessionFn(key2);if(!(null==(_a7=session.Credentials)?void 0:_a7.AccessKeyId)||!(null==(_b3=session.Credentials)?void 0:_b3.SecretAccessKey))throw new Error("s3#createSession response credential missing AccessKeyId or SecretAccessKey.");return{accessKeyId:session.Credentials.AccessKeyId,secretAccessKey:session.Credentials.SecretAccessKey,sessionToken:session.Credentials.SessionToken,expiration:session.Credentials.Expiration?new Date(session.Credentials.Expiration):void 0}}}).REFRESH_WINDOW_MS=6e4;getSmithyContext=context2=>context2.__smithy_context||(context2.__smithy_context={});normalizeProvider=input=>{if("function"==typeof input)return input;const promisified=Promise.resolve(input);return()=>promisified};AMZ_DATE_HEADER=(AMZ_DATE_QUERY_PARAM="X-Amz-Date").toLowerCase();GENERATED_HEADERS=["authorization",AMZ_DATE_HEADER,"date"];SIGNATURE_HEADER="X-Amz-Signature".toLowerCase();TOKEN_HEADER="X-Amz-Security-Token".toLowerCase();ALWAYS_UNSIGNABLE_HEADERS={authorization:!0,"cache-control":!0,connection:!0,expect:!0,from:!0,"keep-alive":!0,"max-forwards":!0,pragma:!0,referer:!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0,"user-agent":!0,"x-amzn-trace-id":!0};PROXY_HEADER_PATTERN=/^proxy-/;SEC_HEADER_PATTERN=/^sec-/;EVENT_ALGORITHM_IDENTIFIER="AWS4-HMAC-SHA256-PAYLOAD";signingKeyCache={};cacheQueue=[];createScope=(shortDate,region,service)=>`${shortDate}/${region}/${service}/aws4_request`;getSigningKey=async(sha256Constructor,credentials,shortDate,region,service)=>{const cacheKey=`${shortDate}:${region}:${service}:${toHex2(await hmac2(sha256Constructor,credentials.secretAccessKey,credentials.accessKeyId))}:${credentials.sessionToken}`;if(cacheKey in signingKeyCache)return signingKeyCache[cacheKey];cacheQueue.push(cacheKey);for(;cacheQueue.length>50;)delete signingKeyCache[cacheQueue.shift()];let key2=`AWS4${credentials.secretAccessKey}`;for(const signable of[shortDate,region,service,"aws4_request"])key2=await hmac2(sha256Constructor,key2,signable);return signingKeyCache[cacheKey]=key2};hmac2=(ctor,secret,data)=>{const hash3=new ctor(secret);hash3.update(toUint8Array(data));return hash3.digest()};getCanonicalHeaders=({headers},unsignableHeaders,signableHeaders)=>{const canonical={};for(const headerName of Object.keys(headers).sort()){if(null==headers[headerName])continue;const canonicalHeaderName=headerName.toLowerCase();(canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS||(null==unsignableHeaders?void 0:unsignableHeaders.has(canonicalHeaderName))||PROXY_HEADER_PATTERN.test(canonicalHeaderName)||SEC_HEADER_PATTERN.test(canonicalHeaderName))&&(!signableHeaders||signableHeaders&&!signableHeaders.has(canonicalHeaderName))||(canonical[canonicalHeaderName]=headers[headerName].trim().replace(/\s+/g," "))}return canonical};getCanonicalQuery=({query:query3={}})=>{const keys3=[],serialized2={};for(const key2 of Object.keys(query3).sort()){if(key2.toLowerCase()===SIGNATURE_HEADER)continue;keys3.push(key2);const value=query3[key2];"string"==typeof value?serialized2[key2]=`${escapeUri(key2)}=${escapeUri(value)}`:Array.isArray(value)&&(serialized2[key2]=value.slice(0).reduce(((encoded,value2)=>encoded.concat([`${escapeUri(key2)}=${escapeUri(value2)}`])),[]).sort().join("&"))}return keys3.map((key2=>serialized2[key2])).filter((serialized3=>serialized3)).join("&")};isArrayBuffer=arg=>"function"==typeof ArrayBuffer&&arg instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(arg);getPayloadHash=async({headers,body},hashConstructor)=>{for(const headerName of Object.keys(headers))if("x-amz-content-sha256"===headerName.toLowerCase())return headers[headerName];if(null==body)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if("string"==typeof body||ArrayBuffer.isView(body)||isArrayBuffer(body)){const hashCtor=new hashConstructor;hashCtor.update(toUint8Array(body));return toHex2(await hashCtor.digest())}return"UNSIGNED-PAYLOAD"};HeaderFormatter=class{format(headers){const chunks=[];for(const headerName of Object.keys(headers)){const bytes=fromUtf8(headerName);chunks.push(Uint8Array.from([bytes.byteLength]),bytes,this.formatHeaderValue(headers[headerName]))}const out=new Uint8Array(chunks.reduce(((carry,bytes)=>carry+bytes.byteLength),0));let position=0;for(const chunk of chunks){out.set(chunk,position);position+=chunk.byteLength}return out}formatHeaderValue(header){switch(header.type){case"boolean":return Uint8Array.from([header.value?0:1]);case"byte":return Uint8Array.from([2,header.value]);case"short":const shortView=new DataView(new ArrayBuffer(3));shortView.setUint8(0,3);shortView.setInt16(1,header.value,!1);return new Uint8Array(shortView.buffer);case"integer":const intView=new DataView(new ArrayBuffer(5));intView.setUint8(0,4);intView.setInt32(1,header.value,!1);return new Uint8Array(intView.buffer);case"long":const longBytes=new Uint8Array(9);longBytes[0]=5;longBytes.set(header.value.bytes,1);return longBytes;case"binary":const binView=new DataView(new ArrayBuffer(3+header.value.byteLength));binView.setUint8(0,6);binView.setUint16(1,header.value.byteLength,!1);const binBytes=new Uint8Array(binView.buffer);binBytes.set(header.value,3);return binBytes;case"string":const utf8Bytes=fromUtf8(header.value),strView=new DataView(new ArrayBuffer(3+utf8Bytes.byteLength));strView.setUint8(0,7);strView.setUint16(1,utf8Bytes.byteLength,!1);const strBytes=new Uint8Array(strView.buffer);strBytes.set(utf8Bytes,3);return strBytes;case"timestamp":const tsBytes=new Uint8Array(9);tsBytes[0]=8;tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes,1);return tsBytes;case"uuid":if(!UUID_PATTERN.test(header.value))throw new Error(`Invalid UUID received: ${header.value}`);const uuidBytes=new Uint8Array(17);uuidBytes[0]=9;uuidBytes.set(fromHex(header.value.replace(/\-/g,"")),1);return uuidBytes}}};(function(HEADER_VALUE_TYPE3){HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.boolTrue=0]="boolTrue";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.boolFalse=1]="boolFalse";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.byte=2]="byte";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.short=3]="short";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.integer=4]="integer";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.long=5]="long";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.byteArray=6]="byteArray";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.string=7]="string";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.timestamp=8]="timestamp";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.uuid=9]="uuid"})(HEADER_VALUE_TYPE||(HEADER_VALUE_TYPE={}));UUID_PATTERN=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;Int64=class _Int64{constructor(bytes){this.bytes=bytes;if(8!==bytes.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(number){if(number>0x8000000000000000||number<-0x8000000000000000)throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`);const bytes=new Uint8Array(8);for(let i2=7,remaining=Math.abs(Math.round(number));i2>-1&&remaining>0;i2--,remaining/=256)bytes[i2]=remaining;number<0&&negate(bytes);return new _Int64(bytes)}valueOf(){const bytes=this.bytes.slice(0),negative=128&bytes[0];negative&&negate(bytes);return parseInt(toHex2(bytes),16)*(negative?-1:1)}toString(){return String(this.valueOf())}};hasHeader=(soughtHeader,headers)=>{soughtHeader=soughtHeader.toLowerCase();for(const headerName of Object.keys(headers))if(soughtHeader===headerName.toLowerCase())return!0;return!1};moveHeadersToQuery=(request2,options={})=>{var _a7;const{headers,query:query3={}}=HttpRequest.clone(request2);for(const name of Object.keys(headers)){const lname=name.toLowerCase();if("x-amz-"===lname.slice(0,6)&&!(null==(_a7=options.unhoistableHeaders)?void 0:_a7.has(lname))){query3[name]=headers[name];delete headers[name]}}return{...request2,headers,query:query3}};prepareRequest=request2=>{request2=HttpRequest.clone(request2);for(const headerName of Object.keys(request2.headers))GENERATED_HEADERS.indexOf(headerName.toLowerCase())>-1&&delete request2.headers[headerName];return request2};iso8601=time=>toDate(time).toISOString().replace(/\.\d{3}Z$/,"Z");toDate=time=>"number"==typeof time?new Date(1e3*time):"string"==typeof time?Number(time)?new Date(1e3*Number(time)):new Date(time):time;SignatureV4=class{constructor({applyChecksum,credentials,region,service,sha256:sha2562,uriEscapePath=!0}){this.headerFormatter=new HeaderFormatter;this.service=service;this.sha256=sha2562;this.uriEscapePath=uriEscapePath;this.applyChecksum="boolean"!=typeof applyChecksum||applyChecksum;this.regionProvider=normalizeProvider(region);this.credentialProvider=normalizeProvider(credentials)}async presign(originalRequest,options={}){const{signingDate=new Date,expiresIn=3600,unsignableHeaders,unhoistableHeaders,signableHeaders,signingRegion,signingService}=options,credentials=await this.credentialProvider();this.validateResolvedCredentials(credentials);const region=null!=signingRegion?signingRegion:await this.regionProvider(),{longDate,shortDate}=formatDate(signingDate);if(expiresIn>604800)return Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future");const scope3=createScope(shortDate,region,null!=signingService?signingService:this.service),request2=moveHeadersToQuery(prepareRequest(originalRequest),{unhoistableHeaders});credentials.sessionToken&&(request2.query["X-Amz-Security-Token"]=credentials.sessionToken);request2.query["X-Amz-Algorithm"]="AWS4-HMAC-SHA256";request2.query["X-Amz-Credential"]=`${credentials.accessKeyId}/${scope3}`;request2.query[AMZ_DATE_QUERY_PARAM]=longDate;request2.query["X-Amz-Expires"]=expiresIn.toString(10);const canonicalHeaders=getCanonicalHeaders(request2,unsignableHeaders,signableHeaders);request2.query["X-Amz-SignedHeaders"]=getCanonicalHeaderList(canonicalHeaders);request2.query["X-Amz-Signature"]=await this.getSignature(longDate,scope3,this.getSigningKey(credentials,region,shortDate,signingService),this.createCanonicalRequest(request2,canonicalHeaders,await getPayloadHash(originalRequest,this.sha256)));return request2}async sign(toSign,options){return"string"==typeof toSign?this.signString(toSign,options):toSign.headers&&toSign.payload?this.signEvent(toSign,options):toSign.message?this.signMessage(toSign,options):this.signRequest(toSign,options)}async signEvent({headers,payload},{signingDate=new Date,priorSignature,signingRegion,signingService}){const region=null!=signingRegion?signingRegion:await this.regionProvider(),{shortDate,longDate}=formatDate(signingDate),scope3=createScope(shortDate,region,null!=signingService?signingService:this.service),hashedPayload=await getPayloadHash({headers:{},body:payload},this.sha256),hash3=new this.sha256;hash3.update(headers);const hashedHeaders=toHex2(await hash3.digest()),stringToSign=[EVENT_ALGORITHM_IDENTIFIER,longDate,scope3,priorSignature,hashedHeaders,hashedPayload].join("\n");return this.signString(stringToSign,{signingDate,signingRegion:region,signingService})}async signMessage(signableMessage,{signingDate=new Date,signingRegion,signingService}){return this.signEvent({headers:this.headerFormatter.format(signableMessage.message.headers),payload:signableMessage.message.body},{signingDate,signingRegion,signingService,priorSignature:signableMessage.priorSignature}).then((signature=>({message:signableMessage.message,signature})))}async signString(stringToSign,{signingDate=new Date,signingRegion,signingService}={}){const credentials=await this.credentialProvider();this.validateResolvedCredentials(credentials);const region=null!=signingRegion?signingRegion:await this.regionProvider(),{shortDate}=formatDate(signingDate),hash3=new this.sha256(await this.getSigningKey(credentials,region,shortDate,signingService));hash3.update(toUint8Array(stringToSign));return toHex2(await hash3.digest())}async signRequest(requestToSign,{signingDate=new Date,signableHeaders,unsignableHeaders,signingRegion,signingService}={}){const credentials=await this.credentialProvider();this.validateResolvedCredentials(credentials);const region=null!=signingRegion?signingRegion:await this.regionProvider(),request2=prepareRequest(requestToSign),{longDate,shortDate}=formatDate(signingDate),scope3=createScope(shortDate,region,null!=signingService?signingService:this.service);request2.headers[AMZ_DATE_HEADER]=longDate;credentials.sessionToken&&(request2.headers[TOKEN_HEADER]=credentials.sessionToken);const payloadHash=await getPayloadHash(request2,this.sha256);!hasHeader("x-amz-content-sha256",request2.headers)&&this.applyChecksum&&(request2.headers["x-amz-content-sha256"]=payloadHash);const canonicalHeaders=getCanonicalHeaders(request2,unsignableHeaders,signableHeaders),signature=await this.getSignature(longDate,scope3,this.getSigningKey(credentials,region,shortDate,signingService),this.createCanonicalRequest(request2,canonicalHeaders,payloadHash));request2.headers.authorization=`AWS4-HMAC-SHA256 Credential=${credentials.accessKeyId}/${scope3}, SignedHeaders=${getCanonicalHeaderList(canonicalHeaders)}, Signature=${signature}`;return request2}createCanonicalRequest(request2,canonicalHeaders,payloadHash){const sortedHeaders=Object.keys(canonicalHeaders).sort();return`${request2.method}\n${this.getCanonicalPath(request2)}\n${getCanonicalQuery(request2)}\n${sortedHeaders.map((name=>`${name}:${canonicalHeaders[name]}`)).join("\n")}\n\n${sortedHeaders.join(";")}\n${payloadHash}`}async createStringToSign(longDate,credentialScope,canonicalRequest){const hash3=new this.sha256;hash3.update(toUint8Array(canonicalRequest));return`AWS4-HMAC-SHA256\n${longDate}\n${credentialScope}\n${toHex2(await hash3.digest())}`}getCanonicalPath({path:path2}){if(this.uriEscapePath){const normalizedPathSegments=[];for(const pathSegment of path2.split("/"))0!==(null==pathSegment?void 0:pathSegment.length)&&"."!==pathSegment&&(".."===pathSegment?normalizedPathSegments.pop():normalizedPathSegments.push(pathSegment));const normalizedPath=`${(null==path2?void 0:path2.startsWith("/"))?"/":""}${normalizedPathSegments.join("/")}${normalizedPathSegments.length>0&&(null==path2?void 0:path2.endsWith("/"))?"/":""}`;return escapeUri(normalizedPath).replace(/%2F/g,"/")}return path2}async getSignature(longDate,credentialScope,keyPromise,canonicalRequest){const stringToSign=await this.createStringToSign(longDate,credentialScope,canonicalRequest),hash3=new this.sha256(await keyPromise);hash3.update(toUint8Array(stringToSign));return toHex2(await hash3.digest())}getSigningKey(credentials,region,shortDate,service){return getSigningKey(this.sha256,credentials,shortDate,region,service||this.service)}validateResolvedCredentials(credentials){if("object"!=typeof credentials||"string"!=typeof credentials.accessKeyId||"string"!=typeof credentials.secretAccessKey)throw new Error("Resolved credential object is not valid")}};formatDate=now3=>{const longDate=iso8601(now3).replace(/[\-:]/g,"");return{longDate,shortDate:longDate.slice(0,8)}};getCanonicalHeaderList=headers=>Object.keys(headers).sort().join(";");(function(SelectorType2){SelectorType2.ENV="env";SelectorType2.CONFIG="shared config entry"})(SelectorType||(SelectorType={}));SESSION_TOKEN_HEADER=(SESSION_TOKEN_QUERY_PARAM="X-Amz-S3session-Token").toLowerCase();SignatureV4S3Express=class extends SignatureV4{async signWithCredentials(requestToSign,credentials,options){const credentialsWithoutSessionToken=getCredentialsWithoutSessionToken(credentials);requestToSign.headers[SESSION_TOKEN_HEADER]=credentials.sessionToken;setSingleOverride(this,credentialsWithoutSessionToken);return this.signRequest(requestToSign,null!=options?options:{})}async presignWithCredentials(requestToSign,credentials,options){var _a7;const credentialsWithoutSessionToken=getCredentialsWithoutSessionToken(credentials);delete requestToSign.headers[SESSION_TOKEN_HEADER];requestToSign.headers[SESSION_TOKEN_QUERY_PARAM]=credentials.sessionToken;requestToSign.query=null!=(_a7=requestToSign.query)?_a7:{};requestToSign.query[SESSION_TOKEN_QUERY_PARAM]=credentials.sessionToken;setSingleOverride(this,credentialsWithoutSessionToken);return this.presign(requestToSign,options)}};s3ExpressMiddleware=options=>(next2,context2)=>async args=>{var _a7,_b3,_c2,_d2,_e2;if(context2.endpointV2){const endpoint=context2.endpointV2,isS3ExpressAuth="sigv4-s3express"===(null==(_c2=null==(_b3=null==(_a7=endpoint.properties)?void 0:_a7.authSchemes)?void 0:_b3[0])?void 0:_c2.name);("S3Express"===(null==(_d2=endpoint.properties)?void 0:_d2.backend)||"Directory"===(null==(_e2=endpoint.properties)?void 0:_e2.bucketType))&&(context2.isS3ExpressBucket=!0);if(isS3ExpressAuth){const requestBucket=args.input.Bucket;if(requestBucket){const s3ExpressIdentity=await options.s3ExpressIdentityProvider.getS3ExpressIdentity(await options.credentials(),{Bucket:requestBucket});context2.s3ExpressIdentity=s3ExpressIdentity;HttpRequest.isInstance(args.request)&&s3ExpressIdentity.sessionToken&&(args.request.headers[SESSION_TOKEN_HEADER]=s3ExpressIdentity.sessionToken)}}}return next2(args)};s3ExpressMiddlewareOptions={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:!0};getS3ExpressPlugin=options=>({applyToStack:clientStack=>{clientStack.add(s3ExpressMiddleware(options),s3ExpressMiddlewareOptions)}});httpAuthSchemeMiddleware=(config,mwOptions)=>(next2,context2)=>async args=>{var _a7;const options=config.httpAuthSchemeProvider(await mwOptions.httpAuthSchemeParametersProvider(config,context2,args.input)),authSchemes=function convertHttpAuthSchemesToMap(httpAuthSchemes){const map3=new Map;for(const scheme of httpAuthSchemes)map3.set(scheme.schemeId,scheme);return map3}(config.httpAuthSchemes),smithyContext=getSmithyContext(context2),failureReasons=[];for(const option of options){const scheme=authSchemes.get(option.schemeId);if(!scheme){failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` was not enabled for this service.`);continue}const identityProvider=scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config));if(!identityProvider){failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` did not have an IdentityProvider configured.`);continue}const{identityProperties={},signingProperties={}}=(null==(_a7=option.propertiesExtractor)?void 0:_a7.call(option,config,context2))||{};option.identityProperties=Object.assign(option.identityProperties||{},identityProperties);option.signingProperties=Object.assign(option.signingProperties||{},signingProperties);smithyContext.selectedHttpAuthScheme={httpAuthOption:option,identity:await identityProvider(option.identityProperties),signer:scheme.signer};break}if(!smithyContext.selectedHttpAuthScheme)throw new Error(failureReasons.join("\n"));return next2(args)};resolveParamsForS3=async endpointParams=>{const bucket=(null==endpointParams?void 0:endpointParams.Bucket)||"";"string"==typeof endpointParams.Bucket&&(endpointParams.Bucket=bucket.replace(/#/g,encodeURIComponent("#")).replace(/\?/g,encodeURIComponent("?")));if(isArnBucketName(bucket)){if(!0===endpointParams.ForcePathStyle)throw new Error("Path-style addressing cannot be used with ARN buckets")}else(!isDnsCompatibleBucketName(bucket)||-1!==bucket.indexOf(".")&&!String(endpointParams.Endpoint).startsWith("http:")||bucket.toLowerCase()!==bucket||bucket.length<3)&&(endpointParams.ForcePathStyle=!0);if(endpointParams.DisableMultiRegionAccessPoints){endpointParams.disableMultiRegionAccessPoints=!0;endpointParams.DisableMRAP=!0}return endpointParams};DOMAIN_PATTERN=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/;IP_ADDRESS_PATTERN=/(\d+\.){3}\d+/;DOTS_PATTERN=/\.\./;isDnsCompatibleBucketName=bucketName=>DOMAIN_PATTERN.test(bucketName)&&!IP_ADDRESS_PATTERN.test(bucketName)&&!DOTS_PATTERN.test(bucketName);isArnBucketName=bucketName=>{const[arn,partition2,service,,,bucket]=bucketName.split(":"),isArn="arn"===arn&&bucketName.split(":").length>=6,isValidArn=Boolean(isArn&&partition2&&service&&bucket);if(isArn&&!isValidArn)throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`);return isValidArn};createConfigValueProvider=(configKey,canonicalEndpointParamKey,config)=>{const configProvider=async()=>{var _a7;const configValue=null!=(_a7=config[configKey])?_a7:config[canonicalEndpointParamKey];return"function"==typeof configValue?configValue():configValue};return"credentialScope"===configKey||"CredentialScope"===canonicalEndpointParamKey?async()=>{var _a7;const credentials="function"==typeof config.credentials?await config.credentials():config.credentials;return null!=(_a7=null==credentials?void 0:credentials.credentialScope)?_a7:null==credentials?void 0:credentials.CredentialScope}:"accountId"===configKey||"AccountId"===canonicalEndpointParamKey?async()=>{var _a7;const credentials="function"==typeof config.credentials?await config.credentials():config.credentials;return null!=(_a7=null==credentials?void 0:credentials.accountId)?_a7:null==credentials?void 0:credentials.AccountId}:"endpoint"===configKey||"endpoint"===canonicalEndpointParamKey?async()=>{const endpoint=await configProvider();if(endpoint&&"object"==typeof endpoint){if("url"in endpoint)return endpoint.url.href;if("hostname"in endpoint){const{protocol,hostname,port,path:path2}=endpoint;return`${protocol}//${hostname}${port?":"+port:""}${path2}`}}return endpoint}:configProvider};getEndpointFromConfig=async serviceId=>{};parseUrl=url=>{if("string"==typeof url)return parseUrl(new URL(url));const{hostname,pathname,port,protocol,search}=url;let query3;search&&(query3=function parseQueryString(querystring){const query3={};if(querystring=querystring.replace(/^\?/,""))for(const pair of querystring.split("&")){let[key2,value=null]=pair.split("=");key2=decodeURIComponent(key2);value&&(value=decodeURIComponent(value));key2 in query3?Array.isArray(query3[key2])?query3[key2].push(value):query3[key2]=[query3[key2],value]:query3[key2]=value}return query3}(search));return{hostname,port:port?parseInt(port):void 0,protocol,path:pathname,query:query3}};toEndpointV1=endpoint=>"object"==typeof endpoint?"url"in endpoint?parseUrl(endpoint.url):endpoint:parseUrl(endpoint);getEndpointFromInstructions=async(commandInput,instructionsSupplier,clientConfig,context2)=>{if(!clientConfig.endpoint){const endpointFromConfig=await getEndpointFromConfig(clientConfig.serviceId);endpointFromConfig&&(clientConfig.endpoint=()=>Promise.resolve(toEndpointV1(endpointFromConfig)))}const endpointParams=await resolveParams(commandInput,instructionsSupplier,clientConfig);if("function"!=typeof clientConfig.endpointProvider)throw new Error("config.endpointProvider is not set.");return clientConfig.endpointProvider(endpointParams,context2)};resolveParams=async(commandInput,instructionsSupplier,clientConfig)=>{var _a7;const endpointParams={},instructions=(null==(_a7=null==instructionsSupplier?void 0:instructionsSupplier.getEndpointParameterInstructions)?void 0:_a7.call(instructionsSupplier))||{};for(const[name,instruction]of Object.entries(instructions))switch(instruction.type){case"staticContextParams":endpointParams[name]=instruction.value;break;case"contextParams":endpointParams[name]=commandInput[instruction.name];break;case"clientContextParams":case"builtInParams":endpointParams[name]=await createConfigValueProvider(instruction.name,name,clientConfig)();break;default:throw new Error("Unrecognized endpoint parameter instruction: "+JSON.stringify(instruction))}0===Object.keys(instructions).length&&Object.assign(endpointParams,clientConfig);"s3"===String(clientConfig.serviceId).toLowerCase()&&await resolveParamsForS3(endpointParams);return endpointParams};endpointMiddleware=({config,instructions})=>(next2,context2)=>async args=>{var _a7,_b3,_c2;const endpoint=await getEndpointFromInstructions(args.input,{getEndpointParameterInstructions:()=>instructions},{...config},context2);context2.endpointV2=endpoint;context2.authSchemes=null==(_a7=endpoint.properties)?void 0:_a7.authSchemes;const authScheme=null==(_b3=context2.authSchemes)?void 0:_b3[0];if(authScheme){context2.signing_region=authScheme.signingRegion;context2.signing_service=authScheme.signingName;const smithyContext=getSmithyContext(context2),httpAuthOption=null==(_c2=null==smithyContext?void 0:smithyContext.selectedHttpAuthScheme)?void 0:_c2.httpAuthOption;httpAuthOption&&(httpAuthOption.signingProperties=Object.assign(httpAuthOption.signingProperties||{},{signing_region:authScheme.signingRegion,signingRegion:authScheme.signingRegion,signing_service:authScheme.signingName,signingName:authScheme.signingName,signingRegionSet:authScheme.signingRegionSet},authScheme.properties))}return next2({...args})};deserializerMiddleware=(options,deserializer)=>next2=>async args=>{const{response}=await next2(args);try{return{response,output:await deserializer(response,options)}}catch(error){Object.defineProperty(error,"$response",{value:response});if(!("$metadata"in error)){const hint="Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.";error.message+="\n "+hint;void 0!==error.$responseBodyText&&error.$response&&(error.$response.body=error.$responseBodyText)}throw error}};serializerMiddleware=(options,serializer)=>(next2,context2)=>async args=>{var _a7;const endpoint=(null==(_a7=context2.endpointV2)?void 0:_a7.url)&&options.urlParser?async()=>options.urlParser(context2.endpointV2.url):options.endpoint;if(!endpoint)throw new Error("No valid endpoint provider available.");const request2=await serializer(args.input,{...options,endpoint});return next2({...args,request:request2})};deserializerMiddlewareOption={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0};endpointMiddlewareOptions={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:(serializerMiddlewareOption={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0}).name};getEndpointPlugin=(config,instructions)=>({applyToStack:clientStack=>{clientStack.addRelativeTo(endpointMiddleware({config,instructions}),endpointMiddlewareOptions)}});resolveEndpointConfig=input=>{var _a7,_b3,_c2;const tls=null==(_a7=input.tls)||_a7,{endpoint}=input,customEndpointProvider=null!=endpoint?async()=>toEndpointV1(await normalizeProvider(endpoint)()):void 0,isCustomEndpoint=!!endpoint;return{...input,endpoint:customEndpointProvider,tls,isCustomEndpoint,useDualstackEndpoint:normalizeProvider(null!=(_b3=input.useDualstackEndpoint)&&_b3),useFipsEndpoint:normalizeProvider(null!=(_c2=input.useFipsEndpoint)&&_c2)}};httpAuthSchemeEndpointRuleSetMiddlewareOptions={step:"serialize",tags:["HTTP_AUTH_SCHEME"],name:"httpAuthSchemeMiddleware",override:!0,relation:"before",toMiddleware:endpointMiddlewareOptions.name};getHttpAuthSchemeEndpointRuleSetPlugin=(config,{httpAuthSchemeParametersProvider,identityProviderConfigProvider})=>({applyToStack:clientStack=>{clientStack.addRelativeTo(httpAuthSchemeMiddleware(config,{httpAuthSchemeParametersProvider,identityProviderConfigProvider}),httpAuthSchemeEndpointRuleSetMiddlewareOptions)}});serializerMiddlewareOption.name;defaultErrorHandler=signingProperties=>error=>{throw error};defaultSuccessHandler=(httpResponse,signingProperties)=>{};httpSigningMiddleware=config=>(next2,context2)=>async args=>{if(!HttpRequest.isInstance(args.request))return next2(args);const scheme=getSmithyContext(context2).selectedHttpAuthScheme;if(!scheme)throw new Error("No HttpAuthScheme was selected: unable to sign request");const{httpAuthOption:{signingProperties={}},identity,signer}=scheme,output=await next2({...args,request:await signer.sign(args.request,identity,signingProperties)}).catch((signer.errorHandler||defaultErrorHandler)(signingProperties));(signer.successHandler||defaultSuccessHandler)(output.response,signingProperties);return output};(function(RETRY_MODES2){RETRY_MODES2.STANDARD="standard";RETRY_MODES2.ADAPTIVE="adaptive"})(RETRY_MODES||(RETRY_MODES={}));DEFAULT_RETRY_MODE=RETRY_MODES.STANDARD;CLOCK_SKEW_ERROR_CODES=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"];THROTTLING_ERROR_CODES=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"];TRANSIENT_ERROR_CODES=["TimeoutError","RequestTimeout","RequestTimeoutException"];TRANSIENT_ERROR_STATUS_CODES=[500,502,503,504];NODEJS_TIMEOUT_ERROR_CODES=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"];0;0;isClockSkewCorrectedError=error=>{var _a7;return null==(_a7=error.$metadata)?void 0:_a7.clockSkewCorrected};isThrottlingError=error=>{var _a7,_b3;return 429===(null==(_a7=error.$metadata)?void 0:_a7.httpStatusCode)||THROTTLING_ERROR_CODES.includes(error.name)||1==(null==(_b3=error.$retryable)?void 0:_b3.throttling)};isTransientError=error=>{var _a7;return isClockSkewCorrectedError(error)||TRANSIENT_ERROR_CODES.includes(error.name)||NODEJS_TIMEOUT_ERROR_CODES.includes((null==error?void 0:error.code)||"")||TRANSIENT_ERROR_STATUS_CODES.includes((null==(_a7=error.$metadata)?void 0:_a7.httpStatusCode)||0)};isServerError=error=>{var _a7;if(void 0!==(null==(_a7=error.$metadata)?void 0:_a7.httpStatusCode)){const statusCode=error.$metadata.httpStatusCode;return 500<=statusCode&&statusCode<=599&&!isTransientError(error)}return!1};DefaultRateLimiter=class{constructor(options){var _a7,_b3,_c2,_d2,_e2;this.currentCapacity=0;this.enabled=!1;this.lastMaxRate=0;this.measuredTxRate=0;this.requestCount=0;this.lastTimestamp=0;this.timeWindow=0;this.beta=null!=(_a7=null==options?void 0:options.beta)?_a7:.7;this.minCapacity=null!=(_b3=null==options?void 0:options.minCapacity)?_b3:1;this.minFillRate=null!=(_c2=null==options?void 0:options.minFillRate)?_c2:.5;this.scaleConstant=null!=(_d2=null==options?void 0:options.scaleConstant)?_d2:.4;this.smooth=null!=(_e2=null==options?void 0:options.smooth)?_e2:.8;const currentTimeInSeconds=this.getCurrentTimeInSeconds();this.lastThrottleTime=currentTimeInSeconds;this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds());this.fillRate=this.minFillRate;this.maxCapacity=this.minCapacity}getCurrentTimeInSeconds(){return Date.now()/1e3}async getSendToken(){return this.acquireTokenBucket(1)}async acquireTokenBucket(amount){if(this.enabled){this.refillTokenBucket();if(amount>this.currentCapacity){const delay2=(amount-this.currentCapacity)/this.fillRate*1e3;await new Promise((resolve=>setTimeout(resolve,delay2)))}this.currentCapacity=this.currentCapacity-amount}}refillTokenBucket(){const timestamp=this.getCurrentTimeInSeconds();if(!this.lastTimestamp){this.lastTimestamp=timestamp;return}const fillAmount=(timestamp-this.lastTimestamp)*this.fillRate;this.currentCapacity=Math.min(this.maxCapacity,this.currentCapacity+fillAmount);this.lastTimestamp=timestamp}updateClientSendingRate(response){let calculatedRate;this.updateMeasuredRate();if(isThrottlingError(response)){const rateToUse=this.enabled?Math.min(this.measuredTxRate,this.fillRate):this.measuredTxRate;this.lastMaxRate=rateToUse;this.calculateTimeWindow();this.lastThrottleTime=this.getCurrentTimeInSeconds();calculatedRate=this.cubicThrottle(rateToUse);this.enableTokenBucket()}else{this.calculateTimeWindow();calculatedRate=this.cubicSuccess(this.getCurrentTimeInSeconds())}const newRate=Math.min(calculatedRate,2*this.measuredTxRate);this.updateTokenBucketRate(newRate)}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,1/3))}cubicThrottle(rateToUse){return this.getPrecise(rateToUse*this.beta)}cubicSuccess(timestamp){return this.getPrecise(this.scaleConstant*Math.pow(timestamp-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(newRate){this.refillTokenBucket();this.fillRate=Math.max(newRate,this.minFillRate);this.maxCapacity=Math.max(newRate,this.minCapacity);this.currentCapacity=Math.min(this.currentCapacity,this.maxCapacity)}updateMeasuredRate(){const t3=this.getCurrentTimeInSeconds(),timeBucket=Math.floor(2*t3)/2;this.requestCount++;if(timeBucket>this.lastTxRateBucket){const currentRate=this.requestCount/(timeBucket-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(currentRate*this.smooth+this.measuredTxRate*(1-this.smooth));this.requestCount=0;this.lastTxRateBucket=timeBucket}}getPrecise(num2){return parseFloat(num2.toFixed(8))}};getDefaultRetryBackoffStrategy=()=>{let delayBase=100;return{computeNextBackoffDelay:attempts=>Math.floor(Math.min(2e4,Math.random()*2**attempts*delayBase)),setDelayBase:delay2=>{delayBase=delay2}}};createDefaultRetryToken=({retryDelay,retryCount,retryCost})=>({getRetryCount:()=>retryCount,getRetryDelay:()=>Math.min(2e4,retryDelay),getRetryCost:()=>retryCost});StandardRetryStrategy=class{constructor(maxAttempts){this.maxAttempts=maxAttempts;this.mode=RETRY_MODES.STANDARD;this.capacity=500;this.retryBackoffStrategy=getDefaultRetryBackoffStrategy();this.maxAttemptsProvider="function"==typeof maxAttempts?maxAttempts:async()=>maxAttempts}async acquireInitialRetryToken(retryTokenScope){return createDefaultRetryToken({retryDelay:100,retryCount:0})}async refreshRetryTokenForRetry(token,errorInfo){const maxAttempts=await this.getMaxAttempts();if(this.shouldRetry(token,errorInfo,maxAttempts)){const errorType=errorInfo.errorType;this.retryBackoffStrategy.setDelayBase("THROTTLING"===errorType?500:100);const delayFromErrorType=this.retryBackoffStrategy.computeNextBackoffDelay(token.getRetryCount()),retryDelay=errorInfo.retryAfterHint?Math.max(errorInfo.retryAfterHint.getTime()-Date.now()||0,delayFromErrorType):delayFromErrorType,capacityCost=this.getCapacityCost(errorType);this.capacity-=capacityCost;return createDefaultRetryToken({retryDelay,retryCount:token.getRetryCount()+1,retryCost:capacityCost})}throw new Error("No retry token available")}recordSuccess(token){var _a7;this.capacity=Math.max(500,this.capacity+(null!=(_a7=token.getRetryCost())?_a7:1))}getCapacity(){return this.capacity}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(error){console.warn("Max attempts provider could not resolve. Using default of 3");return 3}}shouldRetry(tokenToRenew,errorInfo,maxAttempts){return tokenToRenew.getRetryCount()+1<maxAttempts&&this.capacity>=this.getCapacityCost(errorInfo.errorType)&&this.isRetryableError(errorInfo.errorType)}getCapacityCost(errorType){return"TRANSIENT"===errorType?10:5}isRetryableError(errorType){return"THROTTLING"===errorType||"TRANSIENT"===errorType}};AdaptiveRetryStrategy=class{constructor(maxAttemptsProvider,options){this.maxAttemptsProvider=maxAttemptsProvider;this.mode=RETRY_MODES.ADAPTIVE;const{rateLimiter}=null!=options?options:{};this.rateLimiter=null!=rateLimiter?rateLimiter:new DefaultRateLimiter;this.standardRetryStrategy=new StandardRetryStrategy(maxAttemptsProvider)}async acquireInitialRetryToken(retryTokenScope){await this.rateLimiter.getSendToken();return this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope)}async refreshRetryTokenForRetry(tokenToRenew,errorInfo){this.rateLimiter.updateClientSendingRate(errorInfo);return this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew,errorInfo)}recordSuccess(token){this.rateLimiter.updateClientSendingRate({});this.standardRetryStrategy.recordSuccess(token)}};ConfiguredRetryStrategy=class extends StandardRetryStrategy{constructor(maxAttempts,computeNextBackoffDelay=100){super("function"==typeof maxAttempts?maxAttempts:async()=>maxAttempts);this.computeNextBackoffDelay="number"==typeof computeNextBackoffDelay?()=>computeNextBackoffDelay:computeNextBackoffDelay}async refreshRetryTokenForRetry(tokenToRenew,errorInfo){const token=await super.refreshRetryTokenForRetry(tokenToRenew,errorInfo);token.getRetryDelay=()=>this.computeNextBackoffDelay(token.getRetryCount());return token}};rnds8=new Uint8Array(16);byteToHex=[];for(let i2=0;i2<256;++i2)byteToHex.push((i2+256).toString(16).slice(1));randomUUID="undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);native_default={randomUUID};v4_default=function v4(options,buf,offset){if(native_default.randomUUID&&!buf&&!options)return native_default.randomUUID();const rnds=(options=options||{}).random||(options.rng||rng)();rnds[6]=15&rnds[6]|64;rnds[8]=63&rnds[8]|128;if(buf){offset=offset||0;for(let i2=0;i2<16;++i2)buf[offset+i2]=rnds[i2];return buf}return function unsafeStringify(arr,offset=0){return byteToHex[arr[offset+0]]+byteToHex[arr[offset+1]]+byteToHex[arr[offset+2]]+byteToHex[arr[offset+3]]+"-"+byteToHex[arr[offset+4]]+byteToHex[arr[offset+5]]+"-"+byteToHex[arr[offset+6]]+byteToHex[arr[offset+7]]+"-"+byteToHex[arr[offset+8]]+byteToHex[arr[offset+9]]+"-"+byteToHex[arr[offset+10]]+byteToHex[arr[offset+11]]+byteToHex[arr[offset+12]]+byteToHex[arr[offset+13]]+byteToHex[arr[offset+14]]+byteToHex[arr[offset+15]]}(rnds)};asSdkError=error=>error instanceof Error?error:error instanceof Object?Object.assign(new Error,error):"string"==typeof error?new Error(error):new Error(`AWS SDK error wrapper for ${error}`);resolveRetryConfig=input=>{var _a7;const{retryStrategy}=input,maxAttempts=normalizeProvider(null!=(_a7=input.maxAttempts)?_a7:3);return{...input,maxAttempts,retryStrategy:async()=>retryStrategy||(await normalizeProvider(input.retryMode)()===RETRY_MODES.ADAPTIVE?new AdaptiveRetryStrategy(maxAttempts):new StandardRetryStrategy(maxAttempts))}};isStreamingPayload=request2=>(null==request2?void 0:request2.body)instanceof ReadableStream;retryMiddleware=options=>(next2,context2)=>async args=>{var _a7;let retryStrategy=await options.retryStrategy();const maxAttempts=await options.maxAttempts();if(!isRetryStrategyV2(retryStrategy)){(null==retryStrategy?void 0:retryStrategy.mode)&&(context2.userAgent=[...context2.userAgent||[],["cfg/retry-mode",retryStrategy.mode]]);return retryStrategy.retry(next2,args)}{let retryToken=await retryStrategy.acquireInitialRetryToken(context2.partition_id),lastError=new Error,attempts=0,totalRetryDelay=0;const{request:request2}=args,isRequest=HttpRequest.isInstance(request2);isRequest&&(request2.headers["amz-sdk-invocation-id"]=v4_default());for(;;)try{isRequest&&(request2.headers["amz-sdk-request"]=`attempt=${attempts+1}; max=${maxAttempts}`);const{response,output}=await next2(args);retryStrategy.recordSuccess(retryToken);output.$metadata.attempts=attempts+1;output.$metadata.totalRetryDelay=totalRetryDelay;return{response,output}}catch(e3){const retryErrorInfo=getRetryErrorInfo(e3);lastError=asSdkError(e3);if(isRequest&&isStreamingPayload(request2)){null==(_a7=context2.logger instanceof NoOpLogger?console:context2.logger)||_a7.warn("An error was encountered in a non-retryable streaming request.");throw lastError}try{retryToken=await retryStrategy.refreshRetryTokenForRetry(retryToken,retryErrorInfo)}catch(refreshError){lastError.$metadata||(lastError.$metadata={});lastError.$metadata.attempts=attempts+1;lastError.$metadata.totalRetryDelay=totalRetryDelay;throw lastError}attempts=retryToken.getRetryCount();const delay2=retryToken.getRetryDelay();totalRetryDelay+=delay2;await new Promise((resolve=>setTimeout(resolve,delay2)))}}};isRetryStrategyV2=retryStrategy=>void 0!==retryStrategy.acquireInitialRetryToken&&void 0!==retryStrategy.refreshRetryTokenForRetry&&void 0!==retryStrategy.recordSuccess;getRetryErrorInfo=error=>{const errorInfo={error,errorType:getRetryErrorType(error)},retryAfterHint=getRetryAfterHint(error.$response);retryAfterHint&&(errorInfo.retryAfterHint=retryAfterHint);return errorInfo};getRetryErrorType=error=>isThrottlingError(error)?"THROTTLING":isTransientError(error)?"TRANSIENT":isServerError(error)?"SERVER_ERROR":"CLIENT_ERROR";getRetryPlugin=options=>({applyToStack:clientStack=>{clientStack.add(retryMiddleware(options),retryMiddlewareOptions)}});getRetryAfterHint=response=>{if(!HttpResponse.isInstance(response))return;const retryAfterHeaderName=Object.keys(response.headers).find((key2=>"retry-after"===key2.toLowerCase()));if(!retryAfterHeaderName)return;const retryAfter=response.headers[retryAfterHeaderName],retryAfterSeconds=Number(retryAfter);return Number.isNaN(retryAfterSeconds)?new Date(retryAfter):new Date(1e3*retryAfterSeconds)};httpSigningMiddlewareOptions={step:"finalizeRequest",tags:["HTTP_SIGNING"],name:"httpSigningMiddleware",aliases:["apiKeyMiddleware","tokenMiddleware","awsAuthMiddleware"],override:!0,relation:"after",toMiddleware:(retryMiddlewareOptions={name:"retryMiddleware",tags:["RETRY"],step:"finalizeRequest",priority:"high",override:!0}).name};getHttpSigningPlugin=config=>({applyToStack:clientStack=>{clientStack.addRelativeTo(httpSigningMiddleware(),httpSigningMiddlewareOptions)}});DefaultIdentityProviderConfig=class{constructor(config){this.authSchemes=new Map;for(const[key2,value]of Object.entries(config))void 0!==value&&this.authSchemes.set(key2,value)}getIdentityProvider(schemeId){return this.authSchemes.get(schemeId)}};isIdentityExpired=identity=>doesIdentityRequireRefresh(identity)&&identity.expiration.getTime()-Date.now()<3e5;doesIdentityRequireRefresh=identity=>void 0!==identity.expiration;memoizeIdentityProvider=(provider,isExpired,requiresRefresh)=>{if(void 0===provider)return;const normalizedProvider="function"!=typeof provider?async()=>Promise.resolve(provider):provider;let resolved,pending2,hasResult,isConstant=!1;const coalesceProvider=async options=>{pending2||(pending2=normalizedProvider(options));try{resolved=await pending2;hasResult=!0;isConstant=!1}finally{pending2=void 0}return resolved};return void 0===isExpired?async options=>{hasResult&&!(null==options?void 0:options.forceRefresh)||(resolved=await coalesceProvider(options));return resolved}:async options=>{hasResult&&!(null==options?void 0:options.forceRefresh)||(resolved=await coalesceProvider(options));if(isConstant)return resolved;if(!requiresRefresh(resolved)){isConstant=!0;return resolved}if(isExpired(resolved)){await coalesceProvider(options);return resolved}return resolved}};normalizeProvider2=input=>{if("function"==typeof input)return input;const promisified=Promise.resolve(input);return()=>promisified};RequestBuilder=class{constructor(input,context2){this.input=input;this.context=context2;this.query={};this.method="";this.headers={};this.path="";this.body=null;this.hostname="";this.resolvePathStack=[]}async build(){const{hostname,protocol="https",port,path:basePath}=await this.context.endpoint();this.path=basePath;for(const resolvePath of this.resolvePathStack)resolvePath(this.path);return new HttpRequest({protocol,hostname:this.hostname||hostname,port,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(hostname){this.hostname=hostname;return this}bp(uriLabel){this.resolvePathStack.push((basePath=>{this.path=`${(null==basePath?void 0:basePath.endsWith("/"))?basePath.slice(0,-1):basePath||""}`+uriLabel}));return this}p(memberName,labelValueProvider,uriLabel,isGreedyLabel){this.resolvePathStack.push((path2=>{this.path=resolvedPath(path2,this.input,memberName,labelValueProvider,uriLabel,isGreedyLabel)}));return this}h(headers){this.headers=headers;return this}q(query3){this.query=query3;return this}b(body){this.body=body;return this}m(method){this.method=method;return this}};signS3Express=async(s3ExpressIdentity,signingOptions,request2,sigV4MultiRegionSigner)=>{const signedRequest=await sigV4MultiRegionSigner.signWithCredentials(request2,s3ExpressIdentity,{});if(signedRequest.headers["X-Amz-Security-Token"]||signedRequest.headers["x-amz-security-token"])throw new Error("X-Amz-Security-Token must not be set for s3-express requests.");return signedRequest};defaultErrorHandler2=signingProperties=>error=>{throw error};defaultSuccessHandler2=(httpResponse,signingProperties)=>{};s3ExpressHttpSigningMiddleware=config=>(next2,context2)=>async args=>{if(!HttpRequest.isInstance(args.request))return next2(args);const scheme=getSmithyContext(context2).selectedHttpAuthScheme;if(!scheme)throw new Error("No HttpAuthScheme was selected: unable to sign request");const{httpAuthOption:{signingProperties={}},identity,signer}=scheme;let request2;request2=context2.s3ExpressIdentity?await signS3Express(context2.s3ExpressIdentity,0,args.request,await config.signer()):await signer.sign(args.request,identity,signingProperties);const output=await next2({...args,request:request2}).catch((signer.errorHandler||defaultErrorHandler2)(signingProperties));(signer.successHandler||defaultSuccessHandler2)(output.response,signingProperties);return output};getS3ExpressHttpSigningPlugin=config=>({applyToStack:clientStack=>{clientStack.addRelativeTo(s3ExpressHttpSigningMiddleware(config),httpSigningMiddlewareOptions)}});resolveS3Config=(input,{session})=>{var _a7,_b3,_c2,_d2,_e2,_f;const[s3ClientProvider,CreateSessionCommandCtor]=session;return{...input,forcePathStyle:null!=(_a7=input.forcePathStyle)&&_a7,useAccelerateEndpoint:null!=(_b3=input.useAccelerateEndpoint)&&_b3,disableMultiregionAccessPoints:null!=(_c2=input.disableMultiregionAccessPoints)&&_c2,followRegionRedirects:null!=(_d2=input.followRegionRedirects)&&_d2,s3ExpressIdentityProvider:null!=(_e2=input.s3ExpressIdentityProvider)?_e2:new S3ExpressIdentityProviderImpl((async key2=>s3ClientProvider().send(new CreateSessionCommandCtor({Bucket:key2,SessionMode:"ReadWrite"})))),bucketEndpoint:null!=(_f=input.bucketEndpoint)&&_f}};THROW_IF_EMPTY_BODY={CopyObjectCommand:!0,UploadPartCopyCommand:!0,CompleteMultipartUploadCommand:!0};throw200ExceptionsMiddleware=config=>(next2,context2)=>async args=>{const result=await next2(args),{response}=result;if(!HttpResponse.isInstance(response))return result;const{statusCode,body:sourceBody}=response;if(statusCode<200||statusCode>=300)return result;if("function"!=typeof(null==sourceBody?void 0:sourceBody.stream)&&"function"!=typeof(null==sourceBody?void 0:sourceBody.pipe)&&"function"!=typeof(null==sourceBody?void 0:sourceBody.tee))return result;let bodyCopy=sourceBody,body=sourceBody;!sourceBody||"object"!=typeof sourceBody||sourceBody instanceof Uint8Array||([bodyCopy,body]=await async function splitStream(stream){"function"==typeof stream.stream&&(stream=stream.stream());return stream.tee()}(sourceBody));response.body=body;const bodyBytes=await collectBody2(bodyCopy,{streamCollector:async stream=>async function headStream(stream,bytes){var _a7;let byteLengthCounter=0;const chunks=[],reader=stream.getReader();let isDone=!1;for(;!isDone;){const{done,value}=await reader.read();if(value){chunks.push(value);byteLengthCounter+=null!=(_a7=null==value?void 0:value.byteLength)?_a7:0}if(byteLengthCounter>=bytes)break;isDone=done}reader.releaseLock();const collected=new Uint8Array(Math.min(bytes,byteLengthCounter));let offset=0;for(const chunk of chunks){if(chunk.byteLength>collected.byteLength-offset){collected.set(chunk.subarray(0,collected.byteLength-offset),offset);break}collected.set(chunk,offset);offset+=chunk.length}return collected}(stream,3e3)});"function"==typeof(null==bodyCopy?void 0:bodyCopy.destroy)&&bodyCopy.destroy();const bodyStringTail=config.utf8Encoder(bodyBytes.subarray(bodyBytes.length-16));if(0===bodyBytes.length&&THROW_IF_EMPTY_BODY[context2.commandName]){const err2=new Error("S3 aborted request");err2.name="InternalError";throw err2}bodyStringTail&&bodyStringTail.endsWith("</Error>")&&(response.statusCode=400);return result};collectBody2=(streamBody=new Uint8Array,context2)=>streamBody instanceof Uint8Array?Promise.resolve(streamBody):context2.streamCollector(streamBody)||Promise.resolve(new Uint8Array);throw200ExceptionsMiddlewareOptions={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:!0};getThrow200ExceptionsPlugin=config=>({applyToStack:clientStack=>{clientStack.addRelativeTo(throw200ExceptionsMiddleware(config),throw200ExceptionsMiddlewareOptions)}});validate2=str=>"string"==typeof str&&0===str.indexOf("arn:")&&str.split(":").length>=6;bucketEndpointMiddlewareOptions={name:"bucketEndpointMiddleware",override:!0,relation:"after",toMiddleware:"endpointV2Middleware"};validateBucketNameMiddlewareOptions={step:"initialize",tags:["VALIDATE_BUCKET_NAME"],name:"validateBucketNameMiddleware",override:!0};getValidateBucketNamePlugin=options=>({applyToStack:clientStack=>{clientStack.add(function validateBucketNameMiddleware({bucketEndpoint}){return next2=>async args=>{const{input:{Bucket}}=args;if(!bucketEndpoint&&"string"==typeof Bucket&&!validate2(Bucket)&&Bucket.indexOf("/")>=0){const err2=new Error(`Bucket name shouldn't contain '/', received '${Bucket}'`);err2.name="InvalidBucketName";throw err2}return next2({...args})}}(options),validateBucketNameMiddlewareOptions);clientStack.addRelativeTo(function bucketEndpointMiddleware(options){return(next2,context2)=>async args=>{var _a7,_b3,_c2,_d2;if(options.bucketEndpoint){const endpoint=context2.endpointV2;if(endpoint){const bucket=args.input.Bucket;if("string"==typeof bucket)try{const bucketEndpointUrl=new URL(bucket);endpoint.url=bucketEndpointUrl}catch(e3){const warning=`@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${bucket} could not be parsed as URL.`;"NoOpLogger"===(null==(_b3=null==(_a7=context2.logger)?void 0:_a7.constructor)?void 0:_b3.name)?console.warn(warning):null==(_d2=null==(_c2=context2.logger)?void 0:_c2.warn)||_d2.call(_c2,warning);throw e3}}}return next2(args)}}(options),bucketEndpointMiddlewareOptions)}});IP_V4_REGEX=new RegExp("^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$");isIpAddress=value=>IP_V4_REGEX.test(value)||value.startsWith("[")&&value.endsWith("]");VALID_HOST_LABEL_REGEX=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$");isValidHostLabel=(value,allowSubDomains=!1)=>{if(!allowSubDomains)return VALID_HOST_LABEL_REGEX.test(value);const labels=value.split(".");for(const label of labels)if(!isValidHostLabel(label))return!1;return!0};customEndpointFunctions={};EndpointError=class extends Error{constructor(message){super(message);this.name="EndpointError"}};booleanEquals=(value1,value2)=>value1===value2;getAttrPathList=path2=>{const parts=path2.split("."),pathList=[];for(const part of parts){const squareBracketIndex=part.indexOf("[");if(-1!==squareBracketIndex){if(part.indexOf("]")!==part.length-1)throw new EndpointError(`Path: '${path2}' does not end with ']'`);const arrayIndex=part.slice(squareBracketIndex+1,-1);if(Number.isNaN(parseInt(arrayIndex)))throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path2}'`);0!==squareBracketIndex&&pathList.push(part.slice(0,squareBracketIndex));pathList.push(arrayIndex)}else pathList.push(part)}return pathList};getAttr=(value,path2)=>getAttrPathList(path2).reduce(((acc,index6)=>{if("object"!=typeof acc)throw new EndpointError(`Index '${index6}' in '${path2}' not found in '${JSON.stringify(value)}'`);return Array.isArray(acc)?acc[parseInt(index6)]:acc[index6]}),value);isSet=value=>null!=value;not=value=>!value;DEFAULT_PORTS={[EndpointURLScheme.HTTP]:80,[EndpointURLScheme.HTTPS]:443};endpointFunctions={booleanEquals,getAttr,isSet,isValidHostLabel,not,parseURL:value=>{const whatwgURL=(()=>{try{if(value instanceof URL)return value;if("object"==typeof value&&"hostname"in value){const{hostname:hostname2,port,protocol:protocol2="",path:path2="",query:query3={}}=value,url=new URL(`${protocol2}//${hostname2}${port?`:${port}`:""}${path2}`);url.search=Object.entries(query3).map((([k2,v2])=>`${k2}=${v2}`)).join("&");return url}return new URL(value)}catch(error){return null}})();if(!whatwgURL){console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`);return null}const urlString=whatwgURL.href,{host,hostname,pathname,protocol,search}=whatwgURL;if(search)return null;const scheme=protocol.slice(0,-1);if(!Object.values(EndpointURLScheme).includes(scheme))return null;const isIp=isIpAddress(hostname);return{scheme,authority:`${host}${urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`)||"string"==typeof value&&value.includes(`${host}:${DEFAULT_PORTS[scheme]}`)?`:${DEFAULT_PORTS[scheme]}`:""}`,path:pathname,normalizedPath:pathname.endsWith("/")?pathname:`${pathname}/`,isIp}},stringEquals:(value1,value2)=>value1===value2,substring:(input,start,stop,reverse)=>start>=stop||input.length<stop?null:reverse?input.substring(input.length-stop,input.length-start):input.substring(start,stop),uriEncode:value=>encodeURIComponent(value).replace(/[!*'()]/g,(c3=>`%${c3.charCodeAt(0).toString(16).toUpperCase()}`))};evaluateTemplate=(template2,options)=>{const evaluatedTemplateArr=[],templateContext={...options.endpointParams,...options.referenceRecord};let currentIndex=0;for(;currentIndex<template2.length;){const openingBraceIndex=template2.indexOf("{",currentIndex);if(-1===openingBraceIndex){evaluatedTemplateArr.push(template2.slice(currentIndex));break}evaluatedTemplateArr.push(template2.slice(currentIndex,openingBraceIndex));const closingBraceIndex=template2.indexOf("}",openingBraceIndex);if(-1===closingBraceIndex){evaluatedTemplateArr.push(template2.slice(openingBraceIndex));break}if("{"===template2[openingBraceIndex+1]&&"}"===template2[closingBraceIndex+1]){evaluatedTemplateArr.push(template2.slice(openingBraceIndex+1,closingBraceIndex));currentIndex=closingBraceIndex+2}const parameterName=template2.substring(openingBraceIndex+1,closingBraceIndex);if(parameterName.includes("#")){const[refName,attrName]=parameterName.split("#");evaluatedTemplateArr.push(getAttr(templateContext[refName],attrName))}else evaluatedTemplateArr.push(templateContext[parameterName]);currentIndex=closingBraceIndex+1}return evaluatedTemplateArr.join("")};getReferenceValue=({ref},options)=>({...options.endpointParams,...options.referenceRecord}[ref]);evaluateExpression=(obj,keyName,options)=>{if("string"==typeof obj)return evaluateTemplate(obj,options);if(obj.fn)return callFunction(obj,options);if(obj.ref)return getReferenceValue(obj,options);throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`)};callFunction=({fn,argv},options)=>{const evaluatedArgs=argv.map((arg=>["boolean","number"].includes(typeof arg)?arg:evaluateExpression(arg,"arg",options))),fnSegments=fn.split(".");return fnSegments[0]in customEndpointFunctions&&null!=fnSegments[1]?customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs):endpointFunctions[fn](...evaluatedArgs)};evaluateCondition=({assign:assign2,...fnArgs},options)=>{var _a7,_b3;if(assign2&&assign2 in options.referenceRecord)throw new EndpointError(`'${assign2}' is already defined in Reference Record.`);const value=callFunction(fnArgs,options);null==(_b3=null==(_a7=options.logger)?void 0:_a7.debug)||_b3.call(_a7,`endpoints evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`);return{result:""===value||!!value,...null!=assign2&&{toAssign:{name:assign2,value}}}};evaluateConditions=(conditions=[],options)=>{var _a7,_b3;const conditionsReferenceRecord={};for(const condition of conditions){const{result,toAssign}=evaluateCondition(condition,{...options,referenceRecord:{...options.referenceRecord,...conditionsReferenceRecord}});if(!result)return{result};if(toAssign){conditionsReferenceRecord[toAssign.name]=toAssign.value;null==(_b3=null==(_a7=options.logger)?void 0:_a7.debug)||_b3.call(_a7,`endpoints assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`)}}return{result:!0,referenceRecord:conditionsReferenceRecord}};getEndpointHeaders=(headers,options)=>Object.entries(headers).reduce(((acc,[headerKey,headerVal])=>({...acc,[headerKey]:headerVal.map((headerValEntry=>{const processedExpr=evaluateExpression(headerValEntry,"Header value entry",options);if("string"!=typeof processedExpr)throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`);return processedExpr}))})),{});getEndpointProperty=(property,options)=>{if(Array.isArray(property))return property.map((propertyEntry=>getEndpointProperty(propertyEntry,options)));switch(typeof property){case"string":return evaluateTemplate(property,options);case"object":if(null===property)throw new EndpointError(`Unexpected endpoint property: ${property}`);return getEndpointProperties(property,options);case"boolean":return property;default:throw new EndpointError("Unexpected endpoint property type: "+typeof property)}};getEndpointProperties=(properties,options)=>Object.entries(properties).reduce(((acc,[propertyKey,propertyVal])=>({...acc,[propertyKey]:getEndpointProperty(propertyVal,options)})),{});getEndpointUrl=(endpointUrl,options)=>{const expression=evaluateExpression(endpointUrl,"Endpoint URL",options);if("string"==typeof expression)try{return new URL(expression)}catch(error){console.error(`Failed to construct URL with ${expression}`,error);throw error}throw new EndpointError("Endpoint URL must be a string, got "+typeof expression)};evaluateEndpointRule=(endpointRule,options)=>{var _a7,_b3;const{conditions,endpoint}=endpointRule,{result,referenceRecord}=evaluateConditions(conditions,options);if(!result)return;const endpointRuleOptions={...options,referenceRecord:{...options.referenceRecord,...referenceRecord}},{url,properties,headers}=endpoint;null==(_b3=null==(_a7=options.logger)?void 0:_a7.debug)||_b3.call(_a7,`endpoints Resolving endpoint from template: ${toDebugString(endpoint)}`);return{...null!=headers&&{headers:getEndpointHeaders(headers,endpointRuleOptions)},...null!=properties&&{properties:getEndpointProperties(properties,endpointRuleOptions)},url:getEndpointUrl(url,endpointRuleOptions)}};evaluateErrorRule=(errorRule,options)=>{const{conditions,error}=errorRule,{result,referenceRecord}=evaluateConditions(conditions,options);if(result)throw new EndpointError(evaluateExpression(error,"Error",{...options,referenceRecord:{...options.referenceRecord,...referenceRecord}}))};evaluateTreeRule=(treeRule,options)=>{const{conditions,rules}=treeRule,{result,referenceRecord}=evaluateConditions(conditions,options);if(result)return evaluateRules(rules,{...options,referenceRecord:{...options.referenceRecord,...referenceRecord}})};evaluateRules=(rules,options)=>{for(const rule of rules)if("endpoint"===rule.type){const endpointOrUndefined=evaluateEndpointRule(rule,options);if(endpointOrUndefined)return endpointOrUndefined}else if("error"===rule.type)evaluateErrorRule(rule,options);else{if("tree"!==rule.type)throw new EndpointError(`Unknown endpoint rule: ${rule}`);{const endpointOrUndefined=evaluateTreeRule(rule,options);if(endpointOrUndefined)return endpointOrUndefined}}throw new EndpointError("Rules evaluation failed")};resolveEndpoint=(ruleSetObject,options)=>{var _a7,_b3,_c2,_d2,_e2,_f;const{endpointParams,logger:logger2}=options,{parameters,rules}=ruleSetObject;null==(_b3=null==(_a7=options.logger)?void 0:_a7.debug)||_b3.call(_a7,`endpoints Initial EndpointParams: ${toDebugString(endpointParams)}`);const paramsWithDefault=Object.entries(parameters).filter((([,v2])=>null!=v2.default)).map((([k2,v2])=>[k2,v2.default]));if(paramsWithDefault.length>0)for(const[paramKey,paramDefaultValue]of paramsWithDefault)endpointParams[paramKey]=null!=(_c2=endpointParams[paramKey])?_c2:paramDefaultValue;const requiredParams=Object.entries(parameters).filter((([,v2])=>v2.required)).map((([k2])=>k2));for(const requiredParam of requiredParams)if(null==endpointParams[requiredParam])throw new EndpointError(`Missing required parameter: '${requiredParam}'`);const endpoint=evaluateRules(rules,{endpointParams,logger:logger2,referenceRecord:{}});if(null==(_d2=options.endpointParams)?void 0:_d2.Endpoint)try{const givenEndpoint=new URL(options.endpointParams.Endpoint),{protocol,port}=givenEndpoint;endpoint.url.protocol=protocol;endpoint.url.port=port}catch(e3){}null==(_f=null==(_e2=options.logger)?void 0:_e2.debug)||_f.call(_e2,`endpoints Resolved endpoint: ${toDebugString(endpoint)}`);return endpoint};selectedPartitionsInfo={partitions:[{id:"aws",outputs:{dnsSuffix:"amazonaws.com",dualStackDnsSuffix:"api.aws",implicitGlobalRegion:"us-east-1",name:"aws",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$",regions:{"af-south-1":{description:"Africa (Cape Town)"},"ap-east-1":{description:"Asia Pacific (Hong Kong)"},"ap-northeast-1":{description:"Asia Pacific (Tokyo)"},"ap-northeast-2":{description:"Asia Pacific (Seoul)"},"ap-northeast-3":{description:"Asia Pacific (Osaka)"},"ap-south-1":{description:"Asia Pacific (Mumbai)"},"ap-south-2":{description:"Asia Pacific (Hyderabad)"},"ap-southeast-1":{description:"Asia Pacific (Singapore)"},"ap-southeast-2":{description:"Asia Pacific (Sydney)"},"ap-southeast-3":{description:"Asia Pacific (Jakarta)"},"ap-southeast-4":{description:"Asia Pacific (Melbourne)"},"ap-southeast-5":{description:"Asia Pacific (Malaysia)"},"aws-global":{description:"AWS Standard global region"},"ca-central-1":{description:"Canada (Central)"},"ca-west-1":{description:"Canada West (Calgary)"},"eu-central-1":{description:"Europe (Frankfurt)"},"eu-central-2":{description:"Europe (Zurich)"},"eu-north-1":{description:"Europe (Stockholm)"},"eu-south-1":{description:"Europe (Milan)"},"eu-south-2":{description:"Europe (Spain)"},"eu-west-1":{description:"Europe (Ireland)"},"eu-west-2":{description:"Europe (London)"},"eu-west-3":{description:"Europe (Paris)"},"il-central-1":{description:"Israel (Tel Aviv)"},"me-central-1":{description:"Middle East (UAE)"},"me-south-1":{description:"Middle East (Bahrain)"},"sa-east-1":{description:"South America (Sao Paulo)"},"us-east-1":{description:"US East (N. Virginia)"},"us-east-2":{description:"US East (Ohio)"},"us-west-1":{description:"US West (N. California)"},"us-west-2":{description:"US West (Oregon)"}}},{id:"aws-cn",outputs:{dnsSuffix:"amazonaws.com.cn",dualStackDnsSuffix:"api.amazonwebservices.com.cn",implicitGlobalRegion:"cn-northwest-1",name:"aws-cn",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^cn\\-\\w+\\-\\d+$",regions:{"aws-cn-global":{description:"AWS China global region"},"cn-north-1":{description:"China (Beijing)"},"cn-northwest-1":{description:"China (Ningxia)"}}},{id:"aws-us-gov",outputs:{dnsSuffix:"amazonaws.com",dualStackDnsSuffix:"api.aws",implicitGlobalRegion:"us-gov-west-1",name:"aws-us-gov",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^us\\-gov\\-\\w+\\-\\d+$",regions:{"aws-us-gov-global":{description:"AWS GovCloud (US) global region"},"us-gov-east-1":{description:"AWS GovCloud (US-East)"},"us-gov-west-1":{description:"AWS GovCloud (US-West)"}}},{id:"aws-iso",outputs:{dnsSuffix:"c2s.ic.gov",dualStackDnsSuffix:"c2s.ic.gov",implicitGlobalRegion:"us-iso-east-1",name:"aws-iso",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-iso\\-\\w+\\-\\d+$",regions:{"aws-iso-global":{description:"AWS ISO (US) global region"},"us-iso-east-1":{description:"US ISO East"},"us-iso-west-1":{description:"US ISO WEST"}}},{id:"aws-iso-b",outputs:{dnsSuffix:"sc2s.sgov.gov",dualStackDnsSuffix:"sc2s.sgov.gov",implicitGlobalRegion:"us-isob-east-1",name:"aws-iso-b",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-isob\\-\\w+\\-\\d+$",regions:{"aws-iso-b-global":{description:"AWS ISOB (US) global region"},"us-isob-east-1":{description:"US ISOB East (Ohio)"}}},{id:"aws-iso-e",outputs:{dnsSuffix:"cloud.adc-e.uk",dualStackDnsSuffix:"cloud.adc-e.uk",implicitGlobalRegion:"eu-isoe-west-1",name:"aws-iso-e",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^eu\\-isoe\\-\\w+\\-\\d+$",regions:{"eu-isoe-west-1":{description:"EU ISOE West"}}},{id:"aws-iso-f",outputs:{dnsSuffix:"csp.hci.ic.gov",dualStackDnsSuffix:"csp.hci.ic.gov",implicitGlobalRegion:"us-isof-south-1",name:"aws-iso-f",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-isof\\-\\w+\\-\\d+$",regions:{}}],version:"1.1"};awsEndpointFunctions={isVirtualHostableS3Bucket:isVirtualHostableS3Bucket=(value,allowSubDomains=!1)=>{if(allowSubDomains){for(const label of value.split("."))if(!isVirtualHostableS3Bucket(label))return!1;return!0}return!(!isValidHostLabel(value)||value.length<3||value.length>63||value!==value.toLowerCase()||isIpAddress(value))},parseArn:value=>{const segments=value.split(":");if(segments.length<6)return null;const[arn,partition2,service,region,accountId,...resourcePath]=segments;return"arn"!==arn||""===partition2||""===service||""===resourcePath.join(":")?null:{partition:partition2,service,region,accountId,resourceId:resourcePath.map((resource=>resource.split("/"))).flat()}},partition:value=>{const{partitions}=selectedPartitionsInfo;for(const partition2 of partitions){const{regions,outputs}=partition2;for(const[region,regionData]of Object.entries(regions))if(region===value)return{...outputs,...regionData}}for(const partition2 of partitions){const{regionRegex,outputs}=partition2;if(new RegExp(regionRegex).test(value))return{...outputs}}const DEFAULT_PARTITION=partitions.find((partition2=>"aws"===partition2.id));if(!DEFAULT_PARTITION)throw new Error("Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.");return{...DEFAULT_PARTITION.outputs}}};customEndpointFunctions.aws=awsEndpointFunctions;UA_NAME_ESCAPE_REGEX=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g;UA_VALUE_ESCAPE_REGEX=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g;userAgentMiddleware=options=>(next2,context2)=>async args=>{var _a7,_b3;const{request:request2}=args;if(!HttpRequest.isInstance(request2))return next2(args);const{headers}=request2,userAgent=(null==(_a7=null==context2?void 0:context2.userAgent)?void 0:_a7.map(escapeUserAgent))||[],defaultUserAgent2=(await options.defaultUserAgentProvider()).map(escapeUserAgent),customUserAgent=(null==(_b3=null==options?void 0:options.customUserAgent)?void 0:_b3.map(escapeUserAgent))||[],sdkUserAgentValue=[].concat([...defaultUserAgent2,...userAgent,...customUserAgent]).join(" "),normalUAValue=[...defaultUserAgent2.filter((section=>section.startsWith("aws-sdk-"))),...customUserAgent].join(" ");if("browser"!==options.runtime){normalUAValue&&(headers["x-amz-user-agent"]=headers["x-amz-user-agent"]?`${headers["user-agent"]} ${normalUAValue}`:normalUAValue);headers["user-agent"]=sdkUserAgentValue}else headers["x-amz-user-agent"]=sdkUserAgentValue;return next2({...args,request:request2})};escapeUserAgent=userAgentPair=>{var _a7;const name=userAgentPair[0].split("/").map((part=>part.replace(UA_NAME_ESCAPE_REGEX,"-"))).join("/"),version2=null==(_a7=userAgentPair[1])?void 0:_a7.replace(UA_VALUE_ESCAPE_REGEX,"-"),prefixSeparatorIndex=name.indexOf("/"),prefix=name.substring(0,prefixSeparatorIndex);let uaName=name.substring(prefixSeparatorIndex+1);"api"===prefix&&(uaName=uaName.toLowerCase());return[prefix,uaName,version2].filter((item=>item&&item.length>0)).reduce(((acc,item,index6)=>{switch(index6){case 0:return item;case 1:return`${acc}/${item}`;default:return`${acc}#${item}`}}),"")};getUserAgentMiddlewareOptions={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0};getUserAgentPlugin=config=>({applyToStack:clientStack=>{clientStack.add(userAgentMiddleware(config),getUserAgentMiddlewareOptions)}});isFipsRegion=region=>"string"==typeof region&&(region.startsWith("fips-")||region.endsWith("-fips"));getRealRegion=region=>isFipsRegion(region)?["fips-aws-global","aws-fips"].includes(region)?"us-east-1":region.replace(/fips-(dkr-|prod-)?|-fips/,""):region;resolveRegionConfig=input=>{const{region,useFipsEndpoint}=input;if(!region)throw new Error("Region is missing");return{...input,region:async()=>{if("string"==typeof region)return getRealRegion(region);const providedRegion=await region();return getRealRegion(providedRegion)},useFipsEndpoint:async()=>{const providedRegion="string"==typeof region?region:await region();return!!isFipsRegion(providedRegion)||("function"!=typeof useFipsEndpoint?Promise.resolve(!!useFipsEndpoint):useFipsEndpoint())}}};resolveEventStreamSerdeConfig=input=>({...input,eventStreamMarshaller:input.eventStreamSerdeProvider(input)});CONTENT_LENGTH_HEADER2="content-length";contentLengthMiddlewareOptions={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0};getContentLengthPlugin=options=>({applyToStack:clientStack=>{clientStack.add(function contentLengthMiddleware(bodyLengthChecker){return next2=>async args=>{const request2=args.request;if(HttpRequest.isInstance(request2)){const{body,headers}=request2;if(body&&-1===Object.keys(headers).map((str=>str.toLowerCase())).indexOf("content-length"))try{const length=bodyLengthChecker(body);request2.headers={...request2.headers,[CONTENT_LENGTH_HEADER2]:String(length)}}catch(error){}}return next2({...args,request:request2})}}(options.bodyLengthChecker),contentLengthMiddlewareOptions)}});getDateHeader=response=>{var _a7,_b3,_c2;return HttpResponse.isInstance(response)?null!=(_c2=null==(_a7=response.headers)?void 0:_a7.date)?_c2:null==(_b3=response.headers)?void 0:_b3.Date:void 0};getSkewCorrectedDate=systemClockOffset=>new Date(Date.now()+systemClockOffset);isClockSkewed=(clockTime,systemClockOffset)=>Math.abs(getSkewCorrectedDate(systemClockOffset).getTime()-clockTime)>=3e5;getUpdatedSystemClockOffset=(clockTime,currentSystemClockOffset)=>{const clockTimeInMs=Date.parse(clockTime);return isClockSkewed(clockTimeInMs,currentSystemClockOffset)?clockTimeInMs-Date.now():currentSystemClockOffset};throwSigningPropertyError=(name,property)=>{if(!property)throw new Error(`Property \`${name}\` is not resolved for AWS SDK SigV4Auth`);return property};validateSigningProperties=async signingProperties=>{var _a7,_b3,_c2;const context2=throwSigningPropertyError("context",signingProperties.context),config=throwSigningPropertyError("config",signingProperties.config),authScheme=null==(_c2=null==(_b3=null==(_a7=context2.endpointV2)?void 0:_a7.properties)?void 0:_b3.authSchemes)?void 0:_c2[0],signerFunction=throwSigningPropertyError("signer",config.signer);return{config,signer:await signerFunction(authScheme),signingRegion:null==signingProperties?void 0:signingProperties.signingRegion,signingRegionSet:null==signingProperties?void 0:signingProperties.signingRegionSet,signingName:null==signingProperties?void 0:signingProperties.signingName}};AwsSdkSigV4Signer=class{async sign(httpRequest,identity,signingProperties){var _a7,_b3,_c2,_d2;if(!HttpRequest.isInstance(httpRequest))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const validatedProps=await validateSigningProperties(signingProperties),{config,signer}=validatedProps;let{signingRegion,signingName}=validatedProps;const handlerExecutionContext=signingProperties.context;if(null!=(_b3=null==(_a7=null==handlerExecutionContext?void 0:handlerExecutionContext.authSchemes)?void 0:_a7.length)&&_b3){const[first,second]=handlerExecutionContext.authSchemes;if("sigv4a"===(null==first?void 0:first.name)&&"sigv4"===(null==second?void 0:second.name)){signingRegion=null!=(_c2=null==second?void 0:second.signingRegion)?_c2:signingRegion;signingName=null!=(_d2=null==second?void 0:second.signingName)?_d2:signingName}}return await signer.sign(httpRequest,{signingDate:getSkewCorrectedDate(config.systemClockOffset),signingRegion,signingService:signingName})}errorHandler(signingProperties){return error=>{var _a7;const serverTime=null!=(_a7=error.ServerTime)?_a7:getDateHeader(error.$response);if(serverTime){const config=throwSigningPropertyError("config",signingProperties.config),initialSystemClockOffset=config.systemClockOffset;config.systemClockOffset=getUpdatedSystemClockOffset(serverTime,config.systemClockOffset);config.systemClockOffset!==initialSystemClockOffset&&error.$metadata&&(error.$metadata.clockSkewCorrected=!0)}throw error}}successHandler(httpResponse,signingProperties){const dateHeader=getDateHeader(httpResponse);if(dateHeader){const config=throwSigningPropertyError("config",signingProperties.config);config.systemClockOffset=getUpdatedSystemClockOffset(dateHeader,config.systemClockOffset)}}};AwsSdkSigV4ASigner=class extends AwsSdkSigV4Signer{async sign(httpRequest,identity,signingProperties){var _a7,_b3;if(!HttpRequest.isInstance(httpRequest))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const{config,signer,signingRegion,signingRegionSet,signingName}=await validateSigningProperties(signingProperties),configResolvedSigningRegionSet=await(null==(_a7=config.sigv4aSigningRegionSet)?void 0:_a7.call(config)),multiRegionOverride=(null!=(_b3=null!=configResolvedSigningRegionSet?configResolvedSigningRegionSet:signingRegionSet)?_b3:[signingRegion]).join(",");return await signer.sign(httpRequest,{signingDate:getSkewCorrectedDate(config.systemClockOffset),signingRegion:multiRegionOverride,signingService:signingName})}};Error;memoize=(provider,isExpired,requiresRefresh)=>{let resolved,pending2,hasResult,isConstant=!1;const coalesceProvider=async()=>{pending2||(pending2=provider());try{resolved=await pending2;hasResult=!0;isConstant=!1}finally{pending2=void 0}return resolved};return void 0===isExpired?async options=>{hasResult&&!(null==options?void 0:options.forceRefresh)||(resolved=await coalesceProvider());return resolved}:async options=>{hasResult&&!(null==options?void 0:options.forceRefresh)||(resolved=await coalesceProvider());if(isConstant)return resolved;if(requiresRefresh&&!requiresRefresh(resolved)){isConstant=!0;return resolved}if(isExpired(resolved)){await coalesceProvider();return resolved}return resolved}};resolveAwsSdkSigV4AConfig=config=>{config.sigv4aSigningRegionSet=normalizeProvider2(config.sigv4aSigningRegionSet);return config};resolveAwsSdkSigV4Config=config=>{let normalizedCreds;config.credentials&&(normalizedCreds=memoizeIdentityProvider(config.credentials,isIdentityExpired,doesIdentityRequireRefresh));normalizedCreds||(normalizedCreds=config.credentialDefaultProvider?normalizeProvider2(config.credentialDefaultProvider(Object.assign({},config,{parentClientConfig:config}))):async()=>{throw new Error("`credentials` is missing")});const{signingEscapePath=!0,systemClockOffset=config.systemClockOffset||0,sha256:sha2562}=config;let signer;signer=config.signer?normalizeProvider2(config.signer):config.regionInfoProvider?()=>normalizeProvider2(config.region)().then((async region=>[await config.regionInfoProvider(region,{useFipsEndpoint:await config.useFipsEndpoint(),useDualstackEndpoint:await config.useDualstackEndpoint()})||{},region])).then((([regionInfo,region])=>{const{signingRegion,signingService}=regionInfo;config.signingRegion=config.signingRegion||signingRegion||region;config.signingName=config.signingName||signingService||config.serviceId;const params={...config,credentials:normalizedCreds,region:config.signingRegion,service:config.signingName,sha256:sha2562,uriEscapePath:signingEscapePath};return new(config.signerConstructor||SignatureV4)(params)})):async authScheme=>{const signingRegion=(authScheme=Object.assign({},{name:"sigv4",signingName:config.signingName||config.defaultSigningName,signingRegion:await normalizeProvider2(config.region)(),properties:{}},authScheme)).signingRegion,signingService=authScheme.signingName;config.signingRegion=config.signingRegion||signingRegion;config.signingName=config.signingName||signingService||config.serviceId;const params={...config,credentials:normalizedCreds,region:config.signingRegion,service:config.signingName,sha256:sha2562,uriEscapePath:signingEscapePath};return new(config.signerConstructor||SignatureV4)(params)};return{...config,systemClockOffset,signingEscapePath,credentials:normalizedCreds,signer}};collectBodyString=(streamBody,context2)=>collectBody(streamBody,context2).then((body=>context2.utf8Encoder(body)));import_fast_xml_parser=__toESM(require_fxp());parseXmlBody=(streamBody,context2)=>collectBodyString(streamBody,context2).then((encoded=>{if(encoded.length){const parser2=new import_fast_xml_parser.XMLParser({attributeNamePrefix:"",htmlEntities:!0,ignoreAttributes:!1,ignoreDeclaration:!0,parseTagValue:!1,trimValues:!1,tagValueProcessor:(_,val2)=>""===val2.trim()&&val2.includes("\n")?"":void 0});parser2.addEntity("#xD","\r");parser2.addEntity("#10","\n");let parsedObj;try{parsedObj=parser2.parse(encoded,!0)}catch(e3){e3&&"object"==typeof e3&&Object.defineProperty(e3,"$responseBodyText",{value:encoded});throw e3}const textNodeName="#text",key2=Object.keys(parsedObj)[0],parsedObjToReturn=parsedObj[key2];if(parsedObjToReturn[textNodeName]){parsedObjToReturn[key2]=parsedObjToReturn[textNodeName];delete parsedObjToReturn[textNodeName]}return getValueFromTextNode(parsedObjToReturn)}return{}}));parseXmlErrorBody=async(errorBody,context2)=>{var _a7;const value=await parseXmlBody(errorBody,context2);value.Error&&(value.Error.message=null!=(_a7=value.Error.message)?_a7:value.Error.Message);return value};loadRestXmlErrorCode=(output,data)=>{var _a7;return void 0!==(null==(_a7=null==data?void 0:data.Error)?void 0:_a7.Code)?data.Error.Code:void 0!==(null==data?void 0:data.Code)?data.Code:404==output.statusCode?"NotFound":void 0};SignatureV4MultiRegion=class{constructor(options){this.sigv4Signer=new SignatureV4S3Express(options);this.signerOptions=options}async sign(requestToSign,options={}){if("*"===options.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().sign(requestToSign,options)}return this.sigv4Signer.sign(requestToSign,options)}async signWithCredentials(requestToSign,credentials,options={}){if("*"===options.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().signWithCredentials(requestToSign,credentials,options)}return this.sigv4Signer.signWithCredentials(requestToSign,credentials,options)}async presign(originalRequest,options={}){if("*"===options.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().presign(originalRequest,options)}return this.sigv4Signer.presign(originalRequest,options)}async presignWithCredentials(originalRequest,credentials,options={}){if("*"===options.signingRegion)throw new Error("Method presignWithCredentials is not supported for [signingRegion=*].");return this.sigv4Signer.presignWithCredentials(originalRequest,credentials,options)}getSigv4aSigner(){if(!this.sigv4aSigner){let CrtSignerV4=null;try{CrtSignerV4=null;if("function"!=typeof CrtSignerV4)throw new Error}catch(e3){e3.message=`${e3.message}\nPlease check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. \nYou must also register the package by calling [require("@aws-sdk/signature-v4-crt");] or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. \nFor more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`;throw e3}this.sigv4aSigner=new CrtSignerV4({...this.signerOptions,signingAlgorithm:1})}return this.sigv4aSigner}};ce="required",cf="type",cg="conditions",ch3="fn",ci="argv",cj="ref",ck="assign",cl="url",cm="properties",cn="backend",co="authSchemes",cp="disableDoubleEncoding",cq="signingName",cr="signingRegion",cs="headers",ct="signingRegionSet";b=!0,c="isSet",d3="booleanEquals",e2="error",f="aws.partition",g="stringEquals",h="getAttr",i="name",j="substring",k="bucketSuffix",l="parseURL",m2="{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",n2="endpoint",o="tree",p2="aws.isVirtualHostableS3Bucket",q="{url#scheme}://{Bucket}.{url#authority}{url#path}",r3="not",s="{url#scheme}://{url#authority}{url#path}",t2="hardwareType",u="regionPrefix",v="bucketAliasSuffix",w="outpostId",x="isValidHostLabel",y="sigv4a",z="s3-outposts",A="s3",B="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",C="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",D="https://{Bucket}.s3.{partitionResult#dnsSuffix}",E="aws.parseArn",F="bucketArn",G="arnType",I="s3-object-lambda",J="accesspoint",K="accessPointName",L="{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}",M="mrapPartition",N="outpostType",O="arnPrefix",P="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",Q="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",R="https://s3.{partitionResult#dnsSuffix}",S={[ce]:!1,[cf]:"String"},T={[ce]:!0,default:!1,[cf]:"Boolean"},U={[ce]:!1,[cf]:"Boolean"},V={[ch3]:d3,[ci]:[{[cj]:"Accelerate"},!0]},W={[ch3]:d3,[ci]:[{[cj]:"UseFIPS"},!0]},X={[ch3]:d3,[ci]:[{[cj]:"UseDualStack"},!0]},Y={[ch3]:c,[ci]:[{[cj]:"Endpoint"}]},Z={[ch3]:f,[ci]:[{[cj]:"Region"}],[ck]:"partitionResult"},aa={[ch3]:g,[ci]:[{[ch3]:h,[ci]:[{[cj]:"partitionResult"},i]},"aws-cn"]},ab={[ch3]:c,[ci]:[{[cj]:"Bucket"}]},ac={[cj]:"Bucket"},ad={[ch3]:l,[ci]:[{[cj]:"Endpoint"}],[ck]:"url"},ae={[ch3]:d3,[ci]:[{[ch3]:h,[ci]:[{[cj]:"url"},"isIp"]},!0]},af={[cj]:"url"},ag={[ch3]:"uriEncode",[ci]:[ac],[ck]:"uri_encoded_bucket"},ah={[cn]:"S3Express",[co]:[{[cp]:!0,[i]:"sigv4",[cq]:"s3express",[cr]:"{Region}"}]},ai={},aj={[ch3]:p2,[ci]:[ac,!1]},ak={[e2]:"S3Express bucket name is not a valid virtual hostable name.",[cf]:e2},al={[cn]:"S3Express",[co]:[{[cp]:!0,[i]:"sigv4-s3express",[cq]:"s3express",[cr]:"{Region}"}]},am={[ch3]:c,[ci]:[{[cj]:"UseS3ExpressControlEndpoint"}]},an={[ch3]:d3,[ci]:[{[cj]:"UseS3ExpressControlEndpoint"},!0]},ao={[ch3]:r3,[ci]:[Y]},ap={[e2]:"Unrecognized S3Express bucket name format.",[cf]:e2},aq={[ch3]:r3,[ci]:[ab]},ar={[cj]:t2},as={[cg]:[ao],[e2]:"Expected a endpoint to be specified but no endpoint was found",[cf]:e2},at={[co]:[{[cp]:!0,[i]:y,[cq]:z,[ct]:["*"]},{[cp]:!0,[i]:"sigv4",[cq]:z,[cr]:"{Region}"}]},au={[ch3]:d3,[ci]:[{[cj]:"ForcePathStyle"},!1]},av={[cj]:"ForcePathStyle"},aw={[ch3]:d3,[ci]:[{[cj]:"Accelerate"},!1]},ax={[ch3]:g,[ci]:[{[cj]:"Region"},"aws-global"]},ay={[co]:[{[cp]:!0,[i]:"sigv4",[cq]:A,[cr]:"us-east-1"}]},az={[ch3]:r3,[ci]:[ax]},aA={[ch3]:d3,[ci]:[{[cj]:"UseGlobalEndpoint"},!0]},aB={[cl]:"https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[cm]:{[co]:[{[cp]:!0,[i]:"sigv4",[cq]:A,[cr]:"{Region}"}]},[cs]:{}},aC={[co]:[{[cp]:!0,[i]:"sigv4",[cq]:A,[cr]:"{Region}"}]},aD={[ch3]:d3,[ci]:[{[cj]:"UseGlobalEndpoint"},!1]},aE={[ch3]:d3,[ci]:[{[cj]:"UseDualStack"},!1]},aF={[cl]:"https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",[cm]:aC,[cs]:{}},aG={[ch3]:d3,[ci]:[{[cj]:"UseFIPS"},!1]},aH={[cl]:"https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",[cm]:aC,[cs]:{}},aI={[cl]:"https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[cm]:aC,[cs]:{}},aJ={[ch3]:d3,[ci]:[{[ch3]:h,[ci]:[af,"isIp"]},!1]},aK={[cl]:B,[cm]:aC,[cs]:{}},aL={[cl]:q,[cm]:aC,[cs]:{}},aM={[n2]:aL,[cf]:n2},aN={[cl]:C,[cm]:aC,[cs]:{}},aO={[cl]:"https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",[cm]:aC,[cs]:{}},aP={[e2]:"Invalid region: region was not a valid DNS name.",[cf]:e2},aQ={[cj]:F},aR={[cj]:G},aS={[ch3]:h,[ci]:[aQ,"service"]},aT={[cj]:K},aU={[cg]:[X],[e2]:"S3 Object Lambda does not support Dual-stack",[cf]:e2},aV={[cg]:[V],[e2]:"S3 Object Lambda does not support S3 Accelerate",[cf]:e2},aW={[cg]:[{[ch3]:c,[ci]:[{[cj]:"DisableAccessPoints"}]},{[ch3]:d3,[ci]:[{[cj]:"DisableAccessPoints"},!0]}],[e2]:"Access points are not supported for this operation",[cf]:e2},aX={[cg]:[{[ch3]:c,[ci]:[{[cj]:"UseArnRegion"}]},{[ch3]:d3,[ci]:[{[cj]:"UseArnRegion"},!1]},{[ch3]:r3,[ci]:[{[ch3]:g,[ci]:[{[ch3]:h,[ci]:[aQ,"region"]},"{Region}"]}]}],[e2]:"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`",[cf]:e2},aY={[ch3]:h,[ci]:[{[cj]:"bucketPartition"},i]},aZ={[ch3]:h,[ci]:[aQ,"accountId"]},ba={[co]:[{[cp]:!0,[i]:"sigv4",[cq]:I,[cr]:"{bucketArn#region}"}]},bb={[e2]:"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`",[cf]:e2},bc={[e2]:"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`",[cf]:e2},bd={[e2]:"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)",[cf]:e2},be={[e2]:"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`",[cf]:e2},bf={[e2]:"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.",[cf]:e2},bg={[e2]:"Invalid ARN: Expected a resource of the format `accesspoint:<accesspoint name>` but no name was provided",[cf]:e2},bh={[co]:[{[cp]:!0,[i]:"sigv4",[cq]:A,[cr]:"{bucketArn#region}"}]},bi={[co]:[{[cp]:!0,[i]:y,[cq]:z,[ct]:["*"]},{[cp]:!0,[i]:"sigv4",[cq]:z,[cr]:"{bucketArn#region}"}]},bj={[ch3]:E,[ci]:[ac]},bk={[cl]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[cm]:aC,[cs]:{}},bl={[cl]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[cm]:aC,[cs]:{}},bm={[cl]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[cm]:aC,[cs]:{}},bn={[cl]:P,[cm]:aC,[cs]:{}},bo={[cl]:"https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[cm]:aC,[cs]:{}},bp={[cj]:"UseObjectLambdaEndpoint"},bq={[co]:[{[cp]:!0,[i]:"sigv4",[cq]:I,[cr]:"{Region}"}]},br={[cl]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[cm]:aC,[cs]:{}},bs={[cl]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}",[cm]:aC,[cs]:{}},bt={[cl]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[cm]:aC,[cs]:{}},bu={[cl]:s,[cm]:aC,[cs]:{}},bv={[cl]:"https://s3.{Region}.{partitionResult#dnsSuffix}",[cm]:aC,[cs]:{}},bw=[{[cj]:"Region"}],bx=[{[cj]:"Endpoint"}],by=[ac],bz=[X],bA=[V],bB=[Y,ad],bC=[{[ch3]:c,[ci]:[{[cj]:"DisableS3ExpressSessionAuth"}]},{[ch3]:d3,[ci]:[{[cj]:"DisableS3ExpressSessionAuth"},!0]}],bD=[ae],bE=[ag],bF=[aj],bG=[W],bH=[{[ch3]:j,[ci]:[ac,6,14,!0],[ck]:"s3expressAvailabilityZoneId"},{[ch3]:j,[ci]:[ac,14,16,!0],[ck]:"s3expressAvailabilityZoneDelim"},{[ch3]:g,[ci]:[{[cj]:"s3expressAvailabilityZoneDelim"},"--"]}],bI=[{[cg]:[W],[n2]:{[cl]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[cm]:ah,[cs]:{}},[cf]:n2},{[n2]:{[cl]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[cm]:ah,[cs]:{}},[cf]:n2}],bJ=[{[ch3]:j,[ci]:[ac,6,15,!0],[ck]:"s3expressAvailabilityZoneId"},{[ch3]:j,[ci]:[ac,15,17,!0],[ck]:"s3expressAvailabilityZoneDelim"},{[ch3]:g,[ci]:[{[cj]:"s3expressAvailabilityZoneDelim"},"--"]}],bK=[{[cg]:[W],[n2]:{[cl]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[cm]:al,[cs]:{}},[cf]:n2},{[n2]:{[cl]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[cm]:al,[cs]:{}},[cf]:n2}],bL=[ab],bM=[{[ch3]:x,[ci]:[{[cj]:w},!1]}],bN=[{[ch3]:g,[ci]:[{[cj]:u},"beta"]}],bO=["*"],bP=[Z],bQ=[{[ch3]:x,[ci]:[{[cj]:"Region"},!1]}],bR=[{[ch3]:g,[ci]:[{[cj]:"Region"},"us-east-1"]}],bS=[{[ch3]:g,[ci]:[aR,J]}],bT=[{[ch3]:h,[ci]:[aQ,"resourceId[1]"],[ck]:K},{[ch3]:r3,[ci]:[{[ch3]:g,[ci]:[aT,""]}]}],bU=[aQ,"resourceId[1]"],bV=[{[ch3]:r3,[ci]:[{[ch3]:g,[ci]:[{[ch3]:h,[ci]:[aQ,"region"]},""]}]}],bW=[{[ch3]:r3,[ci]:[{[ch3]:c,[ci]:[{[ch3]:h,[ci]:[aQ,"resourceId[2]"]}]}]}],bX=[aQ,"resourceId[2]"],bY=[{[ch3]:f,[ci]:[{[ch3]:h,[ci]:[aQ,"region"]}],[ck]:"bucketPartition"}],bZ=[{[ch3]:g,[ci]:[aY,{[ch3]:h,[ci]:[{[cj]:"partitionResult"},i]}]}],ca=[{[ch3]:x,[ci]:[{[ch3]:h,[ci]:[aQ,"region"]},!0]}],cb=[{[ch3]:x,[ci]:[aZ,!1]}],cc=[{[ch3]:x,[ci]:[aT,!1]}],cd=[{[ch3]:x,[ci]:[{[cj]:"Region"},!0]}];ruleSet={version:"1.0",parameters:{Bucket:S,Region:S,UseFIPS:T,UseDualStack:T,Endpoint:S,ForcePathStyle:T,Accelerate:T,UseGlobalEndpoint:T,UseObjectLambdaEndpoint:U,Key:S,Prefix:S,CopySource:S,DisableAccessPoints:U,DisableMultiRegionAccessPoints:T,UseArnRegion:U,UseS3ExpressControlEndpoint:U,DisableS3ExpressSessionAuth:U},rules:[{[cg]:[{[ch3]:c,[ci]:bw}],rules:[{[cg]:[V,W],error:"Accelerate cannot be used with FIPS",[cf]:e2},{[cg]:[X,Y],error:"Cannot set dual-stack in combination with a custom endpoint.",[cf]:e2},{[cg]:[Y,W],error:"A custom endpoint cannot be combined with FIPS",[cf]:e2},{[cg]:[Y,V],error:"A custom endpoint cannot be combined with S3 Accelerate",[cf]:e2},{[cg]:[W,Z,aa],error:"Partition does not support FIPS",[cf]:e2},{[cg]:[ab,{[ch3]:j,[ci]:[ac,0,6,b],[ck]:k},{[ch3]:g,[ci]:[{[cj]:k},"--x-s3"]}],rules:[{[cg]:bz,error:"S3Express does not support Dual-stack.",[cf]:e2},{[cg]:bA,error:"S3Express does not support S3 Accelerate.",[cf]:e2},{[cg]:bB,rules:[{[cg]:bC,rules:[{[cg]:bD,rules:[{[cg]:bE,rules:[{endpoint:{[cl]:m2,[cm]:ah,[cs]:ai},[cf]:n2}],[cf]:o}],[cf]:o},{[cg]:bF,rules:[{endpoint:{[cl]:q,[cm]:ah,[cs]:ai},[cf]:n2}],[cf]:o},ak],[cf]:o},{[cg]:bD,rules:[{[cg]:bE,rules:[{endpoint:{[cl]:m2,[cm]:al,[cs]:ai},[cf]:n2}],[cf]:o}],[cf]:o},{[cg]:bF,rules:[{endpoint:{[cl]:q,[cm]:al,[cs]:ai},[cf]:n2}],[cf]:o},ak],[cf]:o},{[cg]:[am,an],rules:[{[cg]:[ag,ao],rules:[{[cg]:bG,endpoint:{[cl]:"https://s3express-control-fips.{Region}.amazonaws.com/{uri_encoded_bucket}",[cm]:ah,[cs]:ai},[cf]:n2},{endpoint:{[cl]:"https://s3express-control.{Region}.amazonaws.com/{uri_encoded_bucket}",[cm]:ah,[cs]:ai},[cf]:n2}],[cf]:o}],[cf]:o},{[cg]:bF,rules:[{[cg]:bC,rules:[{[cg]:bH,rules:bI,[cf]:o},{[cg]:bJ,rules:bI,[cf]:o},ap],[cf]:o},{[cg]:bH,rules:bK,[cf]:o},{[cg]:bJ,rules:bK,[cf]:o},ap],[cf]:o},ak],[cf]:o},{[cg]:[aq,am,an],rules:[{[cg]:bB,endpoint:{[cl]:s,[cm]:ah,[cs]:ai},[cf]:n2},{[cg]:bG,endpoint:{[cl]:"https://s3express-control-fips.{Region}.amazonaws.com",[cm]:ah,[cs]:ai},[cf]:n2},{endpoint:{[cl]:"https://s3express-control.{Region}.amazonaws.com",[cm]:ah,[cs]:ai},[cf]:n2}],[cf]:o},{[cg]:[ab,{[ch3]:j,[ci]:[ac,49,50,b],[ck]:t2},{[ch3]:j,[ci]:[ac,8,12,b],[ck]:u},{[ch3]:j,[ci]:[ac,0,7,b],[ck]:v},{[ch3]:j,[ci]:[ac,32,49,b],[ck]:w},{[ch3]:f,[ci]:bw,[ck]:"regionPartition"},{[ch3]:g,[ci]:[{[cj]:v},"--op-s3"]}],rules:[{[cg]:bM,rules:[{[cg]:[{[ch3]:g,[ci]:[ar,"e"]}],rules:[{[cg]:bN,rules:[as,{[cg]:bB,endpoint:{[cl]:"https://{Bucket}.ec2.{url#authority}",[cm]:at,[cs]:ai},[cf]:n2}],[cf]:o},{endpoint:{[cl]:"https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[cm]:at,[cs]:ai},[cf]:n2}],[cf]:o},{[cg]:[{[ch3]:g,[ci]:[ar,"o"]}],rules:[{[cg]:bN,rules:[as,{[cg]:bB,endpoint:{[cl]:"https://{Bucket}.op-{outpostId}.{url#authority}",[cm]:at,[cs]:ai},[cf]:n2}],[cf]:o},{endpoint:{[cl]:"https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[cm]:at,[cs]:ai},[cf]:n2}],[cf]:o},{error:'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"',[cf]:e2}],[cf]:o},{error:"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.",[cf]:e2}],[cf]:o},{[cg]:bL,rules:[{[cg]:[Y,{[ch3]:r3,[ci]:[{[ch3]:c,[ci]:[{[ch3]:l,[ci]:bx}]}]}],error:"Custom endpoint `{Endpoint}` was not a valid URI",[cf]:e2},{[cg]:[au,aj],rules:[{[cg]:bP,rules:[{[cg]:bQ,rules:[{[cg]:[V,aa],error:"S3 Accelerate cannot be used in this region",[cf]:e2},{[cg]:[X,W,aw,ao,ax],endpoint:{[cl]:"https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[X,W,aw,ao,az,aA],rules:[{endpoint:aB,[cf]:n2}],[cf]:o},{[cg]:[X,W,aw,ao,az,aD],endpoint:aB,[cf]:n2},{[cg]:[aE,W,aw,ao,ax],endpoint:{[cl]:"https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[aE,W,aw,ao,az,aA],rules:[{endpoint:aF,[cf]:n2}],[cf]:o},{[cg]:[aE,W,aw,ao,az,aD],endpoint:aF,[cf]:n2},{[cg]:[X,aG,V,ao,ax],endpoint:{[cl]:"https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[X,aG,V,ao,az,aA],rules:[{endpoint:aH,[cf]:n2}],[cf]:o},{[cg]:[X,aG,V,ao,az,aD],endpoint:aH,[cf]:n2},{[cg]:[X,aG,aw,ao,ax],endpoint:{[cl]:"https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[X,aG,aw,ao,az,aA],rules:[{endpoint:aI,[cf]:n2}],[cf]:o},{[cg]:[X,aG,aw,ao,az,aD],endpoint:aI,[cf]:n2},{[cg]:[aE,aG,aw,Y,ad,ae,ax],endpoint:{[cl]:B,[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[aE,aG,aw,Y,ad,aJ,ax],endpoint:{[cl]:q,[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[aE,aG,aw,Y,ad,ae,az,aA],rules:[{[cg]:bR,endpoint:aK,[cf]:n2},{endpoint:aK,[cf]:n2}],[cf]:o},{[cg]:[aE,aG,aw,Y,ad,aJ,az,aA],rules:[{[cg]:bR,endpoint:aL,[cf]:n2},aM],[cf]:o},{[cg]:[aE,aG,aw,Y,ad,ae,az,aD],endpoint:aK,[cf]:n2},{[cg]:[aE,aG,aw,Y,ad,aJ,az,aD],endpoint:aL,[cf]:n2},{[cg]:[aE,aG,V,ao,ax],endpoint:{[cl]:C,[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[aE,aG,V,ao,az,aA],rules:[{[cg]:bR,endpoint:aN,[cf]:n2},{endpoint:aN,[cf]:n2}],[cf]:o},{[cg]:[aE,aG,V,ao,az,aD],endpoint:aN,[cf]:n2},{[cg]:[aE,aG,aw,ao,ax],endpoint:{[cl]:D,[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[aE,aG,aw,ao,az,aA],rules:[{[cg]:bR,endpoint:{[cl]:D,[cm]:aC,[cs]:ai},[cf]:n2},{endpoint:aO,[cf]:n2}],[cf]:o},{[cg]:[aE,aG,aw,ao,az,aD],endpoint:aO,[cf]:n2}],[cf]:o},aP],[cf]:o}],[cf]:o},{[cg]:[Y,ad,{[ch3]:g,[ci]:[{[ch3]:h,[ci]:[af,"scheme"]},"http"]},{[ch3]:p2,[ci]:[ac,b]},au,aG,aE,aw],rules:[{[cg]:bP,rules:[{[cg]:bQ,rules:[aM],[cf]:o},aP],[cf]:o}],[cf]:o},{[cg]:[au,{[ch3]:E,[ci]:by,[ck]:F}],rules:[{[cg]:[{[ch3]:h,[ci]:[aQ,"resourceId[0]"],[ck]:G},{[ch3]:r3,[ci]:[{[ch3]:g,[ci]:[aR,""]}]}],rules:[{[cg]:[{[ch3]:g,[ci]:[aS,I]}],rules:[{[cg]:bS,rules:[{[cg]:bT,rules:[aU,aV,{[cg]:bV,rules:[aW,{[cg]:bW,rules:[aX,{[cg]:bY,rules:[{[cg]:bP,rules:[{[cg]:bZ,rules:[{[cg]:ca,rules:[{[cg]:[{[ch3]:g,[ci]:[aZ,""]}],error:"Invalid ARN: Missing account id",[cf]:e2},{[cg]:cb,rules:[{[cg]:cc,rules:[{[cg]:bB,endpoint:{[cl]:L,[cm]:ba,[cs]:ai},[cf]:n2},{[cg]:bG,endpoint:{[cl]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[cm]:ba,[cs]:ai},[cf]:n2},{endpoint:{[cl]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",[cm]:ba,[cs]:ai},[cf]:n2}],[cf]:o},bb],[cf]:o},bc],[cf]:o},bd],[cf]:o},be],[cf]:o}],[cf]:o}],[cf]:o},bf],[cf]:o},{error:"Invalid ARN: bucket ARN is missing a region",[cf]:e2}],[cf]:o},bg],[cf]:o},{error:"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`",[cf]:e2}],[cf]:o},{[cg]:bS,rules:[{[cg]:bT,rules:[{[cg]:bV,rules:[{[cg]:bS,rules:[{[cg]:bV,rules:[aW,{[cg]:bW,rules:[aX,{[cg]:bY,rules:[{[cg]:bP,rules:[{[cg]:[{[ch3]:g,[ci]:[aY,"{partitionResult#name}"]}],rules:[{[cg]:ca,rules:[{[cg]:[{[ch3]:g,[ci]:[aS,A]}],rules:[{[cg]:cb,rules:[{[cg]:cc,rules:[{[cg]:bA,error:"Access Points do not support S3 Accelerate",[cf]:e2},{[cg]:[W,X],endpoint:{[cl]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[cm]:bh,[cs]:ai},[cf]:n2},{[cg]:[W,aE],endpoint:{[cl]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[cm]:bh,[cs]:ai},[cf]:n2},{[cg]:[aG,X],endpoint:{[cl]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[cm]:bh,[cs]:ai},[cf]:n2},{[cg]:[aG,aE,Y,ad],endpoint:{[cl]:L,[cm]:bh,[cs]:ai},[cf]:n2},{[cg]:[aG,aE],endpoint:{[cl]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",[cm]:bh,[cs]:ai},[cf]:n2}],[cf]:o},bb],[cf]:o},bc],[cf]:o},{error:"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}",[cf]:e2}],[cf]:o},bd],[cf]:o},be],[cf]:o}],[cf]:o}],[cf]:o},bf],[cf]:o}],[cf]:o}],[cf]:o},{[cg]:[{[ch3]:x,[ci]:[aT,b]}],rules:[{[cg]:bz,error:"S3 MRAP does not support dual-stack",[cf]:e2},{[cg]:bG,error:"S3 MRAP does not support FIPS",[cf]:e2},{[cg]:bA,error:"S3 MRAP does not support S3 Accelerate",[cf]:e2},{[cg]:[{[ch3]:d3,[ci]:[{[cj]:"DisableMultiRegionAccessPoints"},b]}],error:"Invalid configuration: Multi-Region Access Point ARNs are disabled.",[cf]:e2},{[cg]:[{[ch3]:f,[ci]:bw,[ck]:M}],rules:[{[cg]:[{[ch3]:g,[ci]:[{[ch3]:h,[ci]:[{[cj]:M},i]},{[ch3]:h,[ci]:[aQ,"partition"]}]}],rules:[{endpoint:{[cl]:"https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}",[cm]:{[co]:[{[cp]:b,name:y,[cq]:A,[ct]:bO}]},[cs]:ai},[cf]:n2}],[cf]:o},{error:"Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`",[cf]:e2}],[cf]:o}],[cf]:o},{error:"Invalid Access Point Name",[cf]:e2}],[cf]:o},bg],[cf]:o},{[cg]:[{[ch3]:g,[ci]:[aS,z]}],rules:[{[cg]:bz,error:"S3 Outposts does not support Dual-stack",[cf]:e2},{[cg]:bG,error:"S3 Outposts does not support FIPS",[cf]:e2},{[cg]:bA,error:"S3 Outposts does not support S3 Accelerate",[cf]:e2},{[cg]:[{[ch3]:c,[ci]:[{[ch3]:h,[ci]:[aQ,"resourceId[4]"]}]}],error:"Invalid Arn: Outpost Access Point ARN contains sub resources",[cf]:e2},{[cg]:[{[ch3]:h,[ci]:bU,[ck]:w}],rules:[{[cg]:bM,rules:[aX,{[cg]:bY,rules:[{[cg]:bP,rules:[{[cg]:bZ,rules:[{[cg]:ca,rules:[{[cg]:cb,rules:[{[cg]:[{[ch3]:h,[ci]:bX,[ck]:N}],rules:[{[cg]:[{[ch3]:h,[ci]:[aQ,"resourceId[3]"],[ck]:K}],rules:[{[cg]:[{[ch3]:g,[ci]:[{[cj]:N},J]}],rules:[{[cg]:bB,endpoint:{[cl]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}",[cm]:bi,[cs]:ai},[cf]:n2},{endpoint:{[cl]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",[cm]:bi,[cs]:ai},[cf]:n2}],[cf]:o},{error:"Expected an outpost type `accesspoint`, found {outpostType}",[cf]:e2}],[cf]:o},{error:"Invalid ARN: expected an access point name",[cf]:e2}],[cf]:o},{error:"Invalid ARN: Expected a 4-component resource",[cf]:e2}],[cf]:o},bc],[cf]:o},bd],[cf]:o},be],[cf]:o}],[cf]:o}],[cf]:o},{error:"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`",[cf]:e2}],[cf]:o},{error:"Invalid ARN: The Outpost Id was not set",[cf]:e2}],[cf]:o},{error:"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})",[cf]:e2}],[cf]:o},{error:"Invalid ARN: No ARN type specified",[cf]:e2}],[cf]:o},{[cg]:[{[ch3]:j,[ci]:[ac,0,4,!1],[ck]:O},{[ch3]:g,[ci]:[{[cj]:O},"arn:"]},{[ch3]:r3,[ci]:[{[ch3]:c,[ci]:[bj]}]}],error:"Invalid ARN: `{Bucket}` was not a valid ARN",[cf]:e2},{[cg]:[{[ch3]:d3,[ci]:[av,b]},bj],error:"Path-style addressing cannot be used with ARN buckets",[cf]:e2},{[cg]:bE,rules:[{[cg]:bP,rules:[{[cg]:[aw],rules:[{[cg]:[X,ao,W,ax],endpoint:{[cl]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[X,ao,W,az,aA],rules:[{endpoint:bk,[cf]:n2}],[cf]:o},{[cg]:[X,ao,W,az,aD],endpoint:bk,[cf]:n2},{[cg]:[aE,ao,W,ax],endpoint:{[cl]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[aE,ao,W,az,aA],rules:[{endpoint:bl,[cf]:n2}],[cf]:o},{[cg]:[aE,ao,W,az,aD],endpoint:bl,[cf]:n2},{[cg]:[X,ao,aG,ax],endpoint:{[cl]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[X,ao,aG,az,aA],rules:[{endpoint:bm,[cf]:n2}],[cf]:o},{[cg]:[X,ao,aG,az,aD],endpoint:bm,[cf]:n2},{[cg]:[aE,Y,ad,aG,ax],endpoint:{[cl]:P,[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[aE,Y,ad,aG,az,aA],rules:[{[cg]:bR,endpoint:bn,[cf]:n2},{endpoint:bn,[cf]:n2}],[cf]:o},{[cg]:[aE,Y,ad,aG,az,aD],endpoint:bn,[cf]:n2},{[cg]:[aE,ao,aG,ax],endpoint:{[cl]:Q,[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[aE,ao,aG,az,aA],rules:[{[cg]:bR,endpoint:{[cl]:Q,[cm]:aC,[cs]:ai},[cf]:n2},{endpoint:bo,[cf]:n2}],[cf]:o},{[cg]:[aE,ao,aG,az,aD],endpoint:bo,[cf]:n2}],[cf]:o},{error:"Path-style addressing cannot be used with S3 Accelerate",[cf]:e2}],[cf]:o}],[cf]:o}],[cf]:o},{[cg]:[{[ch3]:c,[ci]:[bp]},{[ch3]:d3,[ci]:[bp,b]}],rules:[{[cg]:bP,rules:[{[cg]:cd,rules:[aU,aV,{[cg]:bB,endpoint:{[cl]:s,[cm]:bq,[cs]:ai},[cf]:n2},{[cg]:bG,endpoint:{[cl]:"https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",[cm]:bq,[cs]:ai},[cf]:n2},{endpoint:{[cl]:"https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",[cm]:bq,[cs]:ai},[cf]:n2}],[cf]:o},aP],[cf]:o}],[cf]:o},{[cg]:[aq],rules:[{[cg]:bP,rules:[{[cg]:cd,rules:[{[cg]:[W,X,ao,ax],endpoint:{[cl]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[W,X,ao,az,aA],rules:[{endpoint:br,[cf]:n2}],[cf]:o},{[cg]:[W,X,ao,az,aD],endpoint:br,[cf]:n2},{[cg]:[W,aE,ao,ax],endpoint:{[cl]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[W,aE,ao,az,aA],rules:[{endpoint:bs,[cf]:n2}],[cf]:o},{[cg]:[W,aE,ao,az,aD],endpoint:bs,[cf]:n2},{[cg]:[aG,X,ao,ax],endpoint:{[cl]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[aG,X,ao,az,aA],rules:[{endpoint:bt,[cf]:n2}],[cf]:o},{[cg]:[aG,X,ao,az,aD],endpoint:bt,[cf]:n2},{[cg]:[aG,aE,Y,ad,ax],endpoint:{[cl]:s,[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[aG,aE,Y,ad,az,aA],rules:[{[cg]:bR,endpoint:bu,[cf]:n2},{endpoint:bu,[cf]:n2}],[cf]:o},{[cg]:[aG,aE,Y,ad,az,aD],endpoint:bu,[cf]:n2},{[cg]:[aG,aE,ao,ax],endpoint:{[cl]:R,[cm]:ay,[cs]:ai},[cf]:n2},{[cg]:[aG,aE,ao,az,aA],rules:[{[cg]:bR,endpoint:{[cl]:R,[cm]:aC,[cs]:ai},[cf]:n2},{endpoint:bv,[cf]:n2}],[cf]:o},{[cg]:[aG,aE,ao,az,aD],endpoint:bv,[cf]:n2}],[cf]:o},aP],[cf]:o}],[cf]:o}],[cf]:o},{error:"A region must be set when sending requests to S3.",[cf]:e2}]};defaultEndpointResolver=(endpointParams,context2={})=>resolveEndpoint(ruleSet,{endpointParams,logger:context2.logger});customEndpointFunctions.aws=awsEndpointFunctions;defaultS3HttpAuthSchemeParametersProvider=async(config,context2,input)=>{var _a7,_b3,_c2;if(!input)throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");const defaultParameters=await(async(config,context2)=>({operation:getSmithyContext(context2).operation,region:await normalizeProvider(config.region)()||(()=>{throw new Error("expected `region` to be configured for `aws.auth#sigv4`")})()}))(config,context2),instructionsFn=null==(_c2=null==(_b3=null==(_a7=getSmithyContext(context2))?void 0:_a7.commandInstance)?void 0:_b3.constructor)?void 0:_c2.getEndpointParameterInstructions;if(!instructionsFn)throw new Error(`getEndpointParameterInstructions() is not defined on \`${context2.commandName}\``);const endpointParameters=await resolveParams(input,{getEndpointParameterInstructions:instructionsFn},config);return Object.assign(defaultParameters,endpointParameters)};defaultS3HttpAuthSchemeProvider=(defaultEndpointResolver2=defaultEndpointResolver,createHttpAuthOptionFunctions={"aws.auth#sigv4":createAwsAuthSigv4HttpAuthOption,"aws.auth#sigv4a":createAwsAuthSigv4aHttpAuthOption},authParameters=>{var _a7;const authSchemes=null==(_a7=defaultEndpointResolver2(authParameters).properties)?void 0:_a7.authSchemes;if(!authSchemes)return(authParameters=>{const options=[];switch(authParameters.operation){default:options.push(createAwsAuthSigv4HttpAuthOption(authParameters));options.push(createAwsAuthSigv4aHttpAuthOption(authParameters))}return options})(authParameters);const options=[];for(const scheme of authSchemes){const{name:resolvedName,properties={},...rest}=scheme,name=resolvedName.toLowerCase();resolvedName!==name&&console.warn(`HttpAuthScheme has been normalized with lowercasing: \`${resolvedName}\` to \`${name}\``);let schemeId;if("sigv4a"===name){schemeId="aws.auth#sigv4a";if(authSchemes.find((s2=>{const name2=s2.name.toLowerCase();return"sigv4a"!==name2&&name2.startsWith("sigv4")})))continue}else{if(!name.startsWith("sigv4"))throw new Error(`Unknown HttpAuthScheme found in \`@smithy.rules#endpointRuleSet\`: \`${name}\``);schemeId="aws.auth#sigv4"}const createOption=createHttpAuthOptionFunctions[schemeId];if(!createOption)throw new Error(`Could not find HttpAuthOption create function for \`${schemeId}\``);const option=createOption(authParameters);option.schemeId=schemeId;option.signingProperties={...option.signingProperties||{},...rest,...properties};options.push(option)}return options});resolveHttpAuthSchemeConfig=config=>{const config_0=resolveAwsSdkSigV4Config(config);return{...resolveAwsSdkSigV4AConfig(config_0)}};resolveClientEndpointParameters=options=>{var _a7,_b3,_c2,_d2,_e2,_f;return{...options,useFipsEndpoint:null!=(_a7=options.useFipsEndpoint)&&_a7,useDualstackEndpoint:null!=(_b3=options.useDualstackEndpoint)&&_b3,forcePathStyle:null!=(_c2=options.forcePathStyle)&&_c2,useAccelerateEndpoint:null!=(_d2=options.useAccelerateEndpoint)&&_d2,useGlobalEndpoint:null!=(_e2=options.useGlobalEndpoint)&&_e2,disableMultiregionAccessPoints:null!=(_f=options.disableMultiregionAccessPoints)&&_f,defaultSigningName:"s3"}};commonParams={ForcePathStyle:{type:"clientContextParams",name:"forcePathStyle"},UseArnRegion:{type:"clientContextParams",name:"useArnRegion"},DisableMultiRegionAccessPoints:{type:"clientContextParams",name:"disableMultiregionAccessPoints"},Accelerate:{type:"clientContextParams",name:"useAccelerateEndpoint"},DisableS3ExpressSessionAuth:{type:"clientContextParams",name:"disableS3ExpressSessionAuth"},UseGlobalEndpoint:{type:"builtInParams",name:"useGlobalEndpoint"},UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}};S3ServiceException=class _S3ServiceException extends ServiceException{constructor(options){super(options);Object.setPrototypeOf(this,_S3ServiceException.prototype)}};NoSuchUpload=class _NoSuchUpload extends S3ServiceException{constructor(opts){super({name:"NoSuchUpload",$fault:"client",...opts});this.name="NoSuchUpload";this.$fault="client";Object.setPrototypeOf(this,_NoSuchUpload.prototype)}};ObjectNotInActiveTierError=class _ObjectNotInActiveTierError extends S3ServiceException{constructor(opts){super({name:"ObjectNotInActiveTierError",$fault:"client",...opts});this.name="ObjectNotInActiveTierError";this.$fault="client";Object.setPrototypeOf(this,_ObjectNotInActiveTierError.prototype)}};BucketAlreadyExists=class _BucketAlreadyExists extends S3ServiceException{constructor(opts){super({name:"BucketAlreadyExists",$fault:"client",...opts});this.name="BucketAlreadyExists";this.$fault="client";Object.setPrototypeOf(this,_BucketAlreadyExists.prototype)}};BucketAlreadyOwnedByYou=class _BucketAlreadyOwnedByYou extends S3ServiceException{constructor(opts){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...opts});this.name="BucketAlreadyOwnedByYou";this.$fault="client";Object.setPrototypeOf(this,_BucketAlreadyOwnedByYou.prototype)}};NoSuchBucket=class _NoSuchBucket extends S3ServiceException{constructor(opts){super({name:"NoSuchBucket",$fault:"client",...opts});this.name="NoSuchBucket";this.$fault="client";Object.setPrototypeOf(this,_NoSuchBucket.prototype)}};(AnalyticsFilter||(AnalyticsFilter={})).visit=(value,visitor)=>void 0!==value.Prefix?visitor.Prefix(value.Prefix):void 0!==value.Tag?visitor.Tag(value.Tag):void 0!==value.And?visitor.And(value.And):visitor._(value.$unknown[0],value.$unknown[1]);(LifecycleRuleFilter||(LifecycleRuleFilter={})).visit=(value,visitor)=>void 0!==value.Prefix?visitor.Prefix(value.Prefix):void 0!==value.Tag?visitor.Tag(value.Tag):void 0!==value.ObjectSizeGreaterThan?visitor.ObjectSizeGreaterThan(value.ObjectSizeGreaterThan):void 0!==value.ObjectSizeLessThan?visitor.ObjectSizeLessThan(value.ObjectSizeLessThan):void 0!==value.And?visitor.And(value.And):visitor._(value.$unknown[0],value.$unknown[1]);(MetricsFilter||(MetricsFilter={})).visit=(value,visitor)=>void 0!==value.Prefix?visitor.Prefix(value.Prefix):void 0!==value.Tag?visitor.Tag(value.Tag):void 0!==value.AccessPointArn?visitor.AccessPointArn(value.AccessPointArn):void 0!==value.And?visitor.And(value.And):visitor._(value.$unknown[0],value.$unknown[1]);(ReplicationRuleFilter||(ReplicationRuleFilter={})).visit=(value,visitor)=>void 0!==value.Prefix?visitor.Prefix(value.Prefix):void 0!==value.Tag?visitor.Tag(value.Tag):void 0!==value.And?visitor.And(value.And):visitor._(value.$unknown[0],value.$unknown[1]);InvalidObjectState=class _InvalidObjectState extends S3ServiceException{constructor(opts){super({name:"InvalidObjectState",$fault:"client",...opts});this.name="InvalidObjectState";this.$fault="client";Object.setPrototypeOf(this,_InvalidObjectState.prototype);this.StorageClass=opts.StorageClass;this.AccessTier=opts.AccessTier}};NoSuchKey=class _NoSuchKey extends S3ServiceException{constructor(opts){super({name:"NoSuchKey",$fault:"client",...opts});this.name="NoSuchKey";this.$fault="client";Object.setPrototypeOf(this,_NoSuchKey.prototype)}};NotFound=class _NotFound extends S3ServiceException{constructor(opts){super({name:"NotFound",$fault:"client",...opts});this.name="NotFound";this.$fault="client";Object.setPrototypeOf(this,_NotFound.prototype)}};CompleteMultipartUploadOutputFilterSensitiveLog=obj=>({...obj,...obj.SSEKMSKeyId&&{SSEKMSKeyId:SENSITIVE_STRING}});CompleteMultipartUploadRequestFilterSensitiveLog=obj=>({...obj,...obj.SSECustomerKey&&{SSECustomerKey:SENSITIVE_STRING}});CopyObjectOutputFilterSensitiveLog=obj=>({...obj,...obj.SSEKMSKeyId&&{SSEKMSKeyId:SENSITIVE_STRING},...obj.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:SENSITIVE_STRING}});CopyObjectRequestFilterSensitiveLog=obj=>({...obj,...obj.SSECustomerKey&&{SSECustomerKey:SENSITIVE_STRING},...obj.SSEKMSKeyId&&{SSEKMSKeyId:SENSITIVE_STRING},...obj.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:SENSITIVE_STRING},...obj.CopySourceSSECustomerKey&&{CopySourceSSECustomerKey:SENSITIVE_STRING}});CreateMultipartUploadOutputFilterSensitiveLog=obj=>({...obj,...obj.SSEKMSKeyId&&{SSEKMSKeyId:SENSITIVE_STRING},...obj.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:SENSITIVE_STRING}});CreateMultipartUploadRequestFilterSensitiveLog=obj=>({...obj,...obj.SSECustomerKey&&{SSECustomerKey:SENSITIVE_STRING},...obj.SSEKMSKeyId&&{SSEKMSKeyId:SENSITIVE_STRING},...obj.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:SENSITIVE_STRING}});SessionCredentialsFilterSensitiveLog=obj=>({...obj,...obj.SecretAccessKey&&{SecretAccessKey:SENSITIVE_STRING},...obj.SessionToken&&{SessionToken:SENSITIVE_STRING}});CreateSessionOutputFilterSensitiveLog=obj=>({...obj,...obj.Credentials&&{Credentials:SessionCredentialsFilterSensitiveLog(obj.Credentials)}});ServerSideEncryptionByDefaultFilterSensitiveLog=obj=>({...obj,...obj.KMSMasterKeyID&&{KMSMasterKeyID:SENSITIVE_STRING}});ServerSideEncryptionRuleFilterSensitiveLog=obj=>({...obj,...obj.ApplyServerSideEncryptionByDefault&&{ApplyServerSideEncryptionByDefault:ServerSideEncryptionByDefaultFilterSensitiveLog(obj.ApplyServerSideEncryptionByDefault)}});ServerSideEncryptionConfigurationFilterSensitiveLog=obj=>({...obj,...obj.Rules&&{Rules:obj.Rules.map((item=>ServerSideEncryptionRuleFilterSensitiveLog(item)))}});GetBucketEncryptionOutputFilterSensitiveLog=obj=>({...obj,...obj.ServerSideEncryptionConfiguration&&{ServerSideEncryptionConfiguration:ServerSideEncryptionConfigurationFilterSensitiveLog(obj.ServerSideEncryptionConfiguration)}});SSEKMSFilterSensitiveLog=obj=>({...obj,...obj.KeyId&&{KeyId:SENSITIVE_STRING}});InventoryEncryptionFilterSensitiveLog=obj=>({...obj,...obj.SSEKMS&&{SSEKMS:SSEKMSFilterSensitiveLog(obj.SSEKMS)}});InventoryS3BucketDestinationFilterSensitiveLog=obj=>({...obj,...obj.Encryption&&{Encryption:InventoryEncryptionFilterSensitiveLog(obj.Encryption)}});InventoryDestinationFilterSensitiveLog=obj=>({...obj,...obj.S3BucketDestination&&{S3BucketDestination:InventoryS3BucketDestinationFilterSensitiveLog(obj.S3BucketDestination)}});InventoryConfigurationFilterSensitiveLog=obj=>({...obj,...obj.Destination&&{Destination:InventoryDestinationFilterSensitiveLog(obj.Destination)}});GetBucketInventoryConfigurationOutputFilterSensitiveLog=obj=>({...obj,...obj.InventoryConfiguration&&{InventoryConfiguration:InventoryConfigurationFilterSensitiveLog(obj.InventoryConfiguration)}});GetObjectOutputFilterSensitiveLog=obj=>({...obj,...obj.SSEKMSKeyId&&{SSEKMSKeyId:SENSITIVE_STRING}});GetObjectRequestFilterSensitiveLog=obj=>({...obj,...obj.SSECustomerKey&&{SSECustomerKey:SENSITIVE_STRING}});GetObjectAttributesRequestFilterSensitiveLog=obj=>({...obj,...obj.SSECustomerKey&&{SSECustomerKey:SENSITIVE_STRING}});GetObjectTorrentOutputFilterSensitiveLog=obj=>({...obj});HeadObjectOutputFilterSensitiveLog=obj=>({...obj,...obj.SSEKMSKeyId&&{SSEKMSKeyId:SENSITIVE_STRING}});HeadObjectRequestFilterSensitiveLog=obj=>({...obj,...obj.SSECustomerKey&&{SSECustomerKey:SENSITIVE_STRING}});ListBucketInventoryConfigurationsOutputFilterSensitiveLog=obj=>({...obj,...obj.InventoryConfigurationList&&{InventoryConfigurationList:obj.InventoryConfigurationList.map((item=>InventoryConfigurationFilterSensitiveLog(item)))}});ListPartsRequestFilterSensitiveLog=obj=>({...obj,...obj.SSECustomerKey&&{SSECustomerKey:SENSITIVE_STRING}});PutBucketEncryptionRequestFilterSensitiveLog=obj=>({...obj,...obj.ServerSideEncryptionConfiguration&&{ServerSideEncryptionConfiguration:ServerSideEncryptionConfigurationFilterSensitiveLog(obj.ServerSideEncryptionConfiguration)}});PutBucketInventoryConfigurationRequestFilterSensitiveLog=obj=>({...obj,...obj.InventoryConfiguration&&{InventoryConfiguration:InventoryConfigurationFilterSensitiveLog(obj.InventoryConfiguration)}});XmlText=class{constructor(value){this.value=value}toString(){return function escapeElement(value){return value.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(/\r/g,"
").replace(/\n/g,"
").replace(/\u0085/g,"…").replace(/\u2028/,"
")}(""+this.value)}};XmlNode=class _XmlNode{static of(name,childText,withName){const node=new _XmlNode(name);void 0!==childText&&node.addChildNode(new XmlText(childText));void 0!==withName&&node.withName(withName);return node}constructor(name,children=[]){this.name=name;this.children=children;this.attributes={}}withName(name){this.name=name;return this}addAttribute(name,value){this.attributes[name]=value;return this}addChildNode(child2){this.children.push(child2);return this}removeAttribute(name){delete this.attributes[name];return this}n(name){this.name=name;return this}c(child2){this.children.push(child2);return this}a(name,value){null!=value&&(this.attributes[name]=value);return this}cc(input,field,withName=field){if(null!=input[field]){const node=_XmlNode.of(field,input[field]).withName(withName);this.c(node)}}l(input,listName,memberName,valueProvider){null!=input[listName]&&valueProvider().map((node=>{node.withName(memberName);this.c(node)}))}lc(input,listName,memberName,valueProvider){if(null!=input[listName]){const nodes=valueProvider(),containerNode=new _XmlNode(memberName);nodes.map((node=>{containerNode.c(node)}));this.c(containerNode)}}toString(){const hasChildren=Boolean(this.children.length);let xmlText=`<${this.name}`;const attributes=this.attributes;for(const attributeName of Object.keys(attributes)){const attribute=attributes[attributeName];null!=attribute&&(xmlText+=` ${attributeName}="${value=""+attribute,value.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}"`)}var value;return xmlText+(hasChildren?`>${this.children.map((c3=>c3.toString())).join("")}</${this.name}>`:"/>")}};ObjectAlreadyInActiveTierError=class _ObjectAlreadyInActiveTierError extends S3ServiceException{constructor(opts){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...opts});this.name="ObjectAlreadyInActiveTierError";this.$fault="client";Object.setPrototypeOf(this,_ObjectAlreadyInActiveTierError.prototype)}};(SelectObjectContentEventStream||(SelectObjectContentEventStream={})).visit=(value,visitor)=>void 0!==value.Records?visitor.Records(value.Records):void 0!==value.Stats?visitor.Stats(value.Stats):void 0!==value.Progress?visitor.Progress(value.Progress):void 0!==value.Cont?visitor.Cont(value.Cont):void 0!==value.End?visitor.End(value.End):visitor._(value.$unknown[0],value.$unknown[1]);PutObjectOutputFilterSensitiveLog=obj=>({...obj,...obj.SSEKMSKeyId&&{SSEKMSKeyId:SENSITIVE_STRING},...obj.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:SENSITIVE_STRING}});PutObjectRequestFilterSensitiveLog=obj=>({...obj,...obj.SSECustomerKey&&{SSECustomerKey:SENSITIVE_STRING},...obj.SSEKMSKeyId&&{SSEKMSKeyId:SENSITIVE_STRING},...obj.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:SENSITIVE_STRING}});EncryptionFilterSensitiveLog=obj=>({...obj,...obj.KMSKeyId&&{KMSKeyId:SENSITIVE_STRING}});S3LocationFilterSensitiveLog=obj=>({...obj,...obj.Encryption&&{Encryption:EncryptionFilterSensitiveLog(obj.Encryption)}});OutputLocationFilterSensitiveLog=obj=>({...obj,...obj.S3&&{S3:S3LocationFilterSensitiveLog(obj.S3)}});RestoreRequestFilterSensitiveLog=obj=>({...obj,...obj.OutputLocation&&{OutputLocation:OutputLocationFilterSensitiveLog(obj.OutputLocation)}});RestoreObjectRequestFilterSensitiveLog=obj=>({...obj,...obj.RestoreRequest&&{RestoreRequest:RestoreRequestFilterSensitiveLog(obj.RestoreRequest)}});SelectObjectContentOutputFilterSensitiveLog=obj=>({...obj,...obj.Payload&&{Payload:"STREAMING_CONTENT"}});SelectObjectContentRequestFilterSensitiveLog=obj=>({...obj,...obj.SSECustomerKey&&{SSECustomerKey:SENSITIVE_STRING}});UploadPartOutputFilterSensitiveLog=obj=>({...obj,...obj.SSEKMSKeyId&&{SSEKMSKeyId:SENSITIVE_STRING}});UploadPartRequestFilterSensitiveLog=obj=>({...obj,...obj.SSECustomerKey&&{SSECustomerKey:SENSITIVE_STRING}});UploadPartCopyOutputFilterSensitiveLog=obj=>({...obj,...obj.SSEKMSKeyId&&{SSEKMSKeyId:SENSITIVE_STRING}});UploadPartCopyRequestFilterSensitiveLog=obj=>({...obj,...obj.SSECustomerKey&&{SSECustomerKey:SENSITIVE_STRING},...obj.CopySourceSSECustomerKey&&{CopySourceSSECustomerKey:SENSITIVE_STRING}});WriteGetObjectResponseRequestFilterSensitiveLog=obj=>({...obj,...obj.SSEKMSKeyId&&{SSEKMSKeyId:SENSITIVE_STRING}});se_AbortMultipartUploadCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xarp]:input[_RP],[_xaebo]:input[_EBO]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_xi]:[,"AbortMultipartUpload"],[_uI]:[,expectNonNull(input[_UI],"UploadId")]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_CompleteMultipartUploadCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xacc]:input[_CCRC],[_xacc_]:input[_CCRCC],[_xacs]:input[_CSHA],[_xacs_]:input[_CSHAh],[_xarp]:input[_RP],[_xaebo]:input[_EBO],[_inm]:input[_INM],[_xasseca]:input[_SSECA],[_xasseck]:input[_SSECK],[_xasseckm]:input[_SSECKMD]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_uI]:[,expectNonNull(input[_UI],"UploadId")]});let body,contents;if(void 0!==input.MultipartUpload){contents=se_CompletedMultipartUpload(input.MultipartUpload,context2);contents=contents.n("CompleteMultipartUpload");body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("POST").h(headers).q(query3).b(body);return b3.build()};se_CopyObjectCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaa]:input[_ACL],[_cc]:input[_CC],[_xaca]:input[_CA],[_cd]:input[_CD],[_ce]:input[_CE],[_cl]:input[_CL],[_ct]:input[_CT],[_xacs__]:input[_CS],[_xacsim]:input[_CSIM],[_xacsims]:[()=>isSerializableHeaderValue(input[_CSIMS]),()=>dateToUtcString(input[_CSIMS]).toString()],[_xacsinm]:input[_CSINM],[_xacsius]:[()=>isSerializableHeaderValue(input[_CSIUS]),()=>dateToUtcString(input[_CSIUS]).toString()],[_e]:[()=>isSerializableHeaderValue(input[_E]),()=>dateToUtcString(input[_E]).toString()],[_xagfc]:input[_GFC],[_xagr]:input[_GR],[_xagra]:input[_GRACP],[_xagwa]:input[_GWACP],[_xamd]:input[_MD],[_xatd]:input[_TD],[_xasse]:input[_SSE],[_xasc]:input[_SC],[_xawrl]:input[_WRL],[_xasseca]:input[_SSECA],[_xasseck]:input[_SSECK],[_xasseckm]:input[_SSECKMD],[_xasseakki]:input[_SSEKMSKI],[_xassec]:input[_SSEKMSEC],[_xassebke]:[()=>isSerializableHeaderValue(input[_BKE]),()=>input[_BKE].toString()],[_xacssseca]:input[_CSSSECA],[_xacssseck]:input[_CSSSECK],[_xacssseckm]:input[_CSSSECKMD],[_xarp]:input[_RP],[_xat]:input[_T],[_xaolm]:input[_OLM],[_xaolrud]:[()=>isSerializableHeaderValue(input[_OLRUD]),()=>serializeDateTime(input[_OLRUD]).toString()],[_xaollh]:input[_OLLHS],[_xaebo]:input[_EBO],[_xasebo]:input[_ESBO],...void 0!==input.Metadata&&Object.keys(input.Metadata).reduce(((acc,suffix)=>{acc[`x-amz-meta-${suffix.toLowerCase()}`]=input.Metadata[suffix];return acc}),{})});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_xi]:[,"CopyObject"]});b3.m("PUT").h(headers).q(query3).b(void 0);return b3.build()};se_CreateBucketCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xaa]:input[_ACL],[_xagfc]:input[_GFC],[_xagr]:input[_GR],[_xagra]:input[_GRACP],[_xagw]:input[_GW],[_xagwa]:input[_GWACP],[_xabole]:[()=>isSerializableHeaderValue(input[_OLEFB]),()=>input[_OLEFB].toString()],[_xaoo]:input[_OO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);let body,contents;if(void 0!==input.CreateBucketConfiguration){contents=se_CreateBucketConfiguration(input.CreateBucketConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).b(body);return b3.build()};se_CreateMultipartUploadCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaa]:input[_ACL],[_cc]:input[_CC],[_cd]:input[_CD],[_ce]:input[_CE],[_cl]:input[_CL],[_ct]:input[_CT],[_e]:[()=>isSerializableHeaderValue(input[_E]),()=>dateToUtcString(input[_E]).toString()],[_xagfc]:input[_GFC],[_xagr]:input[_GR],[_xagra]:input[_GRACP],[_xagwa]:input[_GWACP],[_xasse]:input[_SSE],[_xasc]:input[_SC],[_xawrl]:input[_WRL],[_xasseca]:input[_SSECA],[_xasseck]:input[_SSECK],[_xasseckm]:input[_SSECKMD],[_xasseakki]:input[_SSEKMSKI],[_xassec]:input[_SSEKMSEC],[_xassebke]:[()=>isSerializableHeaderValue(input[_BKE]),()=>input[_BKE].toString()],[_xarp]:input[_RP],[_xat]:input[_T],[_xaolm]:input[_OLM],[_xaolrud]:[()=>isSerializableHeaderValue(input[_OLRUD]),()=>serializeDateTime(input[_OLRUD]).toString()],[_xaollh]:input[_OLLHS],[_xaebo]:input[_EBO],[_xaca]:input[_CA],...void 0!==input.Metadata&&Object.keys(input.Metadata).reduce(((acc,suffix)=>{acc[`x-amz-meta-${suffix.toLowerCase()}`]=input.Metadata[suffix];return acc}),{})});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_u]:[,""]});b3.m("POST").h(headers).q(query3).b(void 0);return b3.build()};se_CreateSessionCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xacsm]:input[_SM]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_s]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_DeleteBucketCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.m("DELETE").h(headers).b(void 0);return b3.build()};se_DeleteBucketAnalyticsConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_a5]:[,""],[_i]:[,expectNonNull(input[_I],"Id")]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_DeleteBucketCorsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_c]:[,""]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_DeleteBucketEncryptionCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_en]:[,""]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_DeleteBucketIntelligentTieringConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2);b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_it]:[,""],[_i]:[,expectNonNull(input[_I],"Id")]});b3.m("DELETE").h({}).q(query3).b(void 0);return b3.build()};se_DeleteBucketInventoryConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_in]:[,""],[_i]:[,expectNonNull(input[_I],"Id")]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_DeleteBucketLifecycleCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_l]:[,""]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_DeleteBucketMetricsConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_m]:[,""],[_i]:[,expectNonNull(input[_I],"Id")]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_DeleteBucketOwnershipControlsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_oC]:[,""]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_DeleteBucketPolicyCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_p]:[,""]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_DeleteBucketReplicationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_r]:[,""]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_DeleteBucketTaggingCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_t]:[,""]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_DeleteBucketWebsiteCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_w]:[,""]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_DeleteObjectCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xam]:input[_MFA],[_xarp]:input[_RP],[_xabgr]:[()=>isSerializableHeaderValue(input[_BGR]),()=>input[_BGR].toString()],[_xaebo]:input[_EBO]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_xi]:[,"DeleteObject"],[_vI]:[,input[_VI]]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_DeleteObjectsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xam]:input[_MFA],[_xarp]:input[_RP],[_xabgr]:[()=>isSerializableHeaderValue(input[_BGR]),()=>input[_BGR].toString()],[_xaebo]:input[_EBO],[_xasca]:input[_CA]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_d]:[,""]});let body,contents;if(void 0!==input.Delete){contents=se_Delete(input.Delete,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("POST").h(headers).q(query3).b(body);return b3.build()};se_DeleteObjectTaggingCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_t]:[,""],[_vI]:[,input[_VI]]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_DeletePublicAccessBlockCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_pAB]:[,""]});b3.m("DELETE").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketAccelerateConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO],[_xarp]:input[_RP]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_ac]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketAclCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_acl]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketAnalyticsConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_a5]:[,""],[_xi]:[,"GetBucketAnalyticsConfiguration"],[_i]:[,expectNonNull(input[_I],"Id")]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketCorsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_c]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketEncryptionCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_en]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketIntelligentTieringConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2);b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_it]:[,""],[_xi]:[,"GetBucketIntelligentTieringConfiguration"],[_i]:[,expectNonNull(input[_I],"Id")]});b3.m("GET").h({}).q(query3).b(void 0);return b3.build()};se_GetBucketInventoryConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_in]:[,""],[_xi]:[,"GetBucketInventoryConfiguration"],[_i]:[,expectNonNull(input[_I],"Id")]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketLifecycleConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_l]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketLocationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_lo]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketLoggingCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_log]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketMetricsConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_m]:[,""],[_xi]:[,"GetBucketMetricsConfiguration"],[_i]:[,expectNonNull(input[_I],"Id")]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketNotificationConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_n]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketOwnershipControlsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_oC]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketPolicyCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_p]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketPolicyStatusCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_pS]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketReplicationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_r]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketRequestPaymentCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_rP]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketTaggingCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_t]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketVersioningCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_v]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetBucketWebsiteCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_w]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetObjectCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_im]:input[_IM],[_ims]:[()=>isSerializableHeaderValue(input[_IMS]),()=>dateToUtcString(input[_IMS]).toString()],[_inm]:input[_INM],[_ius]:[()=>isSerializableHeaderValue(input[_IUS]),()=>dateToUtcString(input[_IUS]).toString()],[_ra]:input[_R],[_xasseca]:input[_SSECA],[_xasseck]:input[_SSECK],[_xasseckm]:input[_SSECKMD],[_xarp]:input[_RP],[_xaebo]:input[_EBO],[_xacm]:input[_CM]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_xi]:[,"GetObject"],[_rcc]:[,input[_RCC]],[_rcd]:[,input[_RCD]],[_rce]:[,input[_RCE]],[_rcl]:[,input[_RCL]],[_rct]:[,input[_RCT]],[_re]:[()=>void 0!==input.ResponseExpires,()=>dateToUtcString(input[_RE]).toString()],[_vI]:[,input[_VI]],[_pN]:[()=>void 0!==input.PartNumber,()=>input[_PN].toString()]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetObjectAclCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xarp]:input[_RP],[_xaebo]:input[_EBO]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_acl]:[,""],[_vI]:[,input[_VI]]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetObjectAttributesCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xamp]:[()=>isSerializableHeaderValue(input[_MP]),()=>input[_MP].toString()],[_xapnm]:input[_PNM],[_xasseca]:input[_SSECA],[_xasseck]:input[_SSECK],[_xasseckm]:input[_SSECKMD],[_xarp]:input[_RP],[_xaebo]:input[_EBO],[_xaoa]:[()=>isSerializableHeaderValue(input[_OA]),()=>(input[_OA]||[]).map((_entry=>_entry)).join(", ")]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_at]:[,""],[_vI]:[,input[_VI]]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetObjectLegalHoldCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xarp]:input[_RP],[_xaebo]:input[_EBO]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_lh]:[,""],[_vI]:[,input[_VI]]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetObjectLockConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_ol]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetObjectRetentionCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xarp]:input[_RP],[_xaebo]:input[_EBO]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_ret]:[,""],[_vI]:[,input[_VI]]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetObjectTaggingCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO],[_xarp]:input[_RP]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_t]:[,""],[_vI]:[,input[_VI]]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetObjectTorrentCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xarp]:input[_RP],[_xaebo]:input[_EBO]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_to]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_GetPublicAccessBlockCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_pAB]:[,""]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_HeadBucketCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.m("HEAD").h(headers).b(void 0);return b3.build()};se_HeadObjectCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_im]:input[_IM],[_ims]:[()=>isSerializableHeaderValue(input[_IMS]),()=>dateToUtcString(input[_IMS]).toString()],[_inm]:input[_INM],[_ius]:[()=>isSerializableHeaderValue(input[_IUS]),()=>dateToUtcString(input[_IUS]).toString()],[_ra]:input[_R],[_xasseca]:input[_SSECA],[_xasseck]:input[_SSECK],[_xasseckm]:input[_SSECKMD],[_xarp]:input[_RP],[_xaebo]:input[_EBO],[_xacm]:input[_CM]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_rcc]:[,input[_RCC]],[_rcd]:[,input[_RCD]],[_rce]:[,input[_RCE]],[_rcl]:[,input[_RCL]],[_rct]:[,input[_RCT]],[_re]:[()=>void 0!==input.ResponseExpires,()=>dateToUtcString(input[_RE]).toString()],[_vI]:[,input[_VI]],[_pN]:[()=>void 0!==input.PartNumber,()=>input[_PN].toString()]});b3.m("HEAD").h(headers).q(query3).b(void 0);return b3.build()};se_ListBucketAnalyticsConfigurationsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_a5]:[,""],[_xi]:[,"ListBucketAnalyticsConfigurations"],[_ct_]:[,input[_CTo]]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_ListBucketIntelligentTieringConfigurationsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2);b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_it]:[,""],[_xi]:[,"ListBucketIntelligentTieringConfigurations"],[_ct_]:[,input[_CTo]]});b3.m("GET").h({}).q(query3).b(void 0);return b3.build()};se_ListBucketInventoryConfigurationsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_in]:[,""],[_xi]:[,"ListBucketInventoryConfigurations"],[_ct_]:[,input[_CTo]]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_ListBucketMetricsConfigurationsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_m]:[,""],[_xi]:[,"ListBucketMetricsConfigurations"],[_ct_]:[,input[_CTo]]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_ListBucketsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2);b3.bp("/");const query3=map({[_xi]:[,"ListBuckets"],[_mb]:[()=>void 0!==input.MaxBuckets,()=>input[_MB].toString()],[_ct_]:[,input[_CTo]]});b3.m("GET").h({}).q(query3).b(void 0);return b3.build()};se_ListDirectoryBucketsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2);b3.bp("/");const query3=map({[_xi]:[,"ListDirectoryBuckets"],[_ct_]:[,input[_CTo]],[_mdb]:[()=>void 0!==input.MaxDirectoryBuckets,()=>input[_MDB].toString()]});b3.m("GET").h({}).q(query3).b(void 0);return b3.build()};se_ListMultipartUploadsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO],[_xarp]:input[_RP]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_u]:[,""],[_de]:[,input[_D]],[_et]:[,input[_ET]],[_km]:[,input[_KM]],[_mu]:[()=>void 0!==input.MaxUploads,()=>input[_MU].toString()],[_pr]:[,input[_P]],[_uim]:[,input[_UIM]]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_ListObjectsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xarp]:input[_RP],[_xaebo]:input[_EBO],[_xaooa]:[()=>isSerializableHeaderValue(input[_OOA]),()=>(input[_OOA]||[]).map((_entry=>_entry)).join(", ")]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_de]:[,input[_D]],[_et]:[,input[_ET]],[_ma]:[,input[_M]],[_mk]:[()=>void 0!==input.MaxKeys,()=>input[_MK].toString()],[_pr]:[,input[_P]]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_ListObjectsV2Command=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xarp]:input[_RP],[_xaebo]:input[_EBO],[_xaooa]:[()=>isSerializableHeaderValue(input[_OOA]),()=>(input[_OOA]||[]).map((_entry=>_entry)).join(", ")]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_lt]:[,"2"],[_de]:[,input[_D]],[_et]:[,input[_ET]],[_mk]:[()=>void 0!==input.MaxKeys,()=>input[_MK].toString()],[_pr]:[,input[_P]],[_ct_]:[,input[_CTo]],[_fo]:[()=>void 0!==input.FetchOwner,()=>input[_FO].toString()],[_sa]:[,input[_SA]]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_ListObjectVersionsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xaebo]:input[_EBO],[_xarp]:input[_RP],[_xaooa]:[()=>isSerializableHeaderValue(input[_OOA]),()=>(input[_OOA]||[]).map((_entry=>_entry)).join(", ")]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_ver]:[,""],[_de]:[,input[_D]],[_et]:[,input[_ET]],[_km]:[,input[_KM]],[_mk]:[()=>void 0!==input.MaxKeys,()=>input[_MK].toString()],[_pr]:[,input[_P]],[_vim]:[,input[_VIM]]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_ListPartsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xarp]:input[_RP],[_xaebo]:input[_EBO],[_xasseca]:input[_SSECA],[_xasseck]:input[_SSECK],[_xasseckm]:input[_SSECKMD]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_xi]:[,"ListParts"],[_mp]:[()=>void 0!==input.MaxParts,()=>input[_MP].toString()],[_pnm]:[,input[_PNM]],[_uI]:[,expectNonNull(input[_UI],"UploadId")]});b3.m("GET").h(headers).q(query3).b(void 0);return b3.build()};se_PutBucketAccelerateConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xaebo]:input[_EBO],[_xasca]:input[_CA]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_ac]:[,""]});let body,contents;if(void 0!==input.AccelerateConfiguration){contents=se_AccelerateConfiguration(input.AccelerateConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketAclCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xaa]:input[_ACL],[_cm]:input[_CMD],[_xasca]:input[_CA],[_xagfc]:input[_GFC],[_xagr]:input[_GR],[_xagra]:input[_GRACP],[_xagw]:input[_GW],[_xagwa]:input[_GWACP],[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_acl]:[,""]});let body,contents;if(void 0!==input.AccessControlPolicy){contents=se_AccessControlPolicy(input.AccessControlPolicy,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketAnalyticsConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_a5]:[,""],[_i]:[,expectNonNull(input[_I],"Id")]});let body,contents;if(void 0!==input.AnalyticsConfiguration){contents=se_AnalyticsConfiguration(input.AnalyticsConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketCorsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_cm]:input[_CMD],[_xasca]:input[_CA],[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_c]:[,""]});let body,contents;if(void 0!==input.CORSConfiguration){contents=se_CORSConfiguration(input.CORSConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketEncryptionCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_cm]:input[_CMD],[_xasca]:input[_CA],[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_en]:[,""]});let body,contents;if(void 0!==input.ServerSideEncryptionConfiguration){contents=se_ServerSideEncryptionConfiguration(input.ServerSideEncryptionConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketIntelligentTieringConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2);b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_it]:[,""],[_i]:[,expectNonNull(input[_I],"Id")]});let body,contents;if(void 0!==input.IntelligentTieringConfiguration){contents=se_IntelligentTieringConfiguration(input.IntelligentTieringConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h({"content-type":"application/xml"}).q(query3).b(body);return b3.build()};se_PutBucketInventoryConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_in]:[,""],[_i]:[,expectNonNull(input[_I],"Id")]});let body,contents;if(void 0!==input.InventoryConfiguration){contents=se_InventoryConfiguration(input.InventoryConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketLifecycleConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xasca]:input[_CA],[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_l]:[,""]});let body,contents;if(void 0!==input.LifecycleConfiguration){contents=se_BucketLifecycleConfiguration(input.LifecycleConfiguration,context2);contents=contents.n("LifecycleConfiguration");body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketLoggingCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_cm]:input[_CMD],[_xasca]:input[_CA],[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_log]:[,""]});let body,contents;if(void 0!==input.BucketLoggingStatus){contents=se_BucketLoggingStatus(input.BucketLoggingStatus,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketMetricsConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_m]:[,""],[_i]:[,expectNonNull(input[_I],"Id")]});let body,contents;if(void 0!==input.MetricsConfiguration){contents=se_MetricsConfiguration(input.MetricsConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketNotificationConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xaebo]:input[_EBO],[_xasdv]:[()=>isSerializableHeaderValue(input[_SDV]),()=>input[_SDV].toString()]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_n]:[,""]});let body,contents;if(void 0!==input.NotificationConfiguration){contents=se_NotificationConfiguration(input.NotificationConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketOwnershipControlsCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_cm]:input[_CMD],[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_oC]:[,""]});let body,contents;if(void 0!==input.OwnershipControls){contents=se_OwnershipControls(input.OwnershipControls,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketPolicyCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"text/plain",[_cm]:input[_CMD],[_xasca]:input[_CA],[_xacrsba]:[()=>isSerializableHeaderValue(input[_CRSBA]),()=>input[_CRSBA].toString()],[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_p]:[,""]});let body,contents;if(void 0!==input.Policy){contents=input.Policy;body=contents}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketReplicationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_cm]:input[_CMD],[_xasca]:input[_CA],[_xabolt]:input[_To],[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_r]:[,""]});let body,contents;if(void 0!==input.ReplicationConfiguration){contents=se_ReplicationConfiguration(input.ReplicationConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketRequestPaymentCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_cm]:input[_CMD],[_xasca]:input[_CA],[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_rP]:[,""]});let body,contents;if(void 0!==input.RequestPaymentConfiguration){contents=se_RequestPaymentConfiguration(input.RequestPaymentConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketTaggingCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_cm]:input[_CMD],[_xasca]:input[_CA],[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_t]:[,""]});let body,contents;if(void 0!==input.Tagging){contents=se_Tagging(input.Tagging,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketVersioningCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_cm]:input[_CMD],[_xasca]:input[_CA],[_xam]:input[_MFA],[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_v]:[,""]});let body,contents;if(void 0!==input.VersioningConfiguration){contents=se_VersioningConfiguration(input.VersioningConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutBucketWebsiteCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_cm]:input[_CMD],[_xasca]:input[_CA],[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_w]:[,""]});let body,contents;if(void 0!==input.WebsiteConfiguration){contents=se_WebsiteConfiguration(input.WebsiteConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutObjectCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_ct]:input[_CT]||"application/octet-stream",[_xaa]:input[_ACL],[_cc]:input[_CC],[_cd]:input[_CD],[_ce]:input[_CE],[_cl]:input[_CL],[_cl_]:[()=>isSerializableHeaderValue(input[_CLo]),()=>input[_CLo].toString()],[_cm]:input[_CMD],[_xasca]:input[_CA],[_xacc]:input[_CCRC],[_xacc_]:input[_CCRCC],[_xacs]:input[_CSHA],[_xacs_]:input[_CSHAh],[_e]:[()=>isSerializableHeaderValue(input[_E]),()=>dateToUtcString(input[_E]).toString()],[_inm]:input[_INM],[_xagfc]:input[_GFC],[_xagr]:input[_GR],[_xagra]:input[_GRACP],[_xagwa]:input[_GWACP],[_xasse]:input[_SSE],[_xasc]:input[_SC],[_xawrl]:input[_WRL],[_xasseca]:input[_SSECA],[_xasseck]:input[_SSECK],[_xasseckm]:input[_SSECKMD],[_xasseakki]:input[_SSEKMSKI],[_xassec]:input[_SSEKMSEC],[_xassebke]:[()=>isSerializableHeaderValue(input[_BKE]),()=>input[_BKE].toString()],[_xarp]:input[_RP],[_xat]:input[_T],[_xaolm]:input[_OLM],[_xaolrud]:[()=>isSerializableHeaderValue(input[_OLRUD]),()=>serializeDateTime(input[_OLRUD]).toString()],[_xaollh]:input[_OLLHS],[_xaebo]:input[_EBO],...void 0!==input.Metadata&&Object.keys(input.Metadata).reduce(((acc,suffix)=>{acc[`x-amz-meta-${suffix.toLowerCase()}`]=input.Metadata[suffix];return acc}),{})});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_xi]:[,"PutObject"]});let body,contents;if(void 0!==input.Body){contents=input.Body;body=contents}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutObjectAclCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xaa]:input[_ACL],[_cm]:input[_CMD],[_xasca]:input[_CA],[_xagfc]:input[_GFC],[_xagr]:input[_GR],[_xagra]:input[_GRACP],[_xagw]:input[_GW],[_xagwa]:input[_GWACP],[_xarp]:input[_RP],[_xaebo]:input[_EBO]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_acl]:[,""],[_vI]:[,input[_VI]]});let body,contents;if(void 0!==input.AccessControlPolicy){contents=se_AccessControlPolicy(input.AccessControlPolicy,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutObjectLegalHoldCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xarp]:input[_RP],[_cm]:input[_CMD],[_xasca]:input[_CA],[_xaebo]:input[_EBO]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_lh]:[,""],[_vI]:[,input[_VI]]});let body,contents;if(void 0!==input.LegalHold){contents=se_ObjectLockLegalHold(input.LegalHold,context2);contents=contents.n("LegalHold");body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutObjectLockConfigurationCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xarp]:input[_RP],[_xabolt]:input[_To],[_cm]:input[_CMD],[_xasca]:input[_CA],[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_ol]:[,""]});let body,contents;if(void 0!==input.ObjectLockConfiguration){contents=se_ObjectLockConfiguration(input.ObjectLockConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutObjectRetentionCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xarp]:input[_RP],[_xabgr]:[()=>isSerializableHeaderValue(input[_BGR]),()=>input[_BGR].toString()],[_cm]:input[_CMD],[_xasca]:input[_CA],[_xaebo]:input[_EBO]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_ret]:[,""],[_vI]:[,input[_VI]]});let body,contents;if(void 0!==input.Retention){contents=se_ObjectLockRetention(input.Retention,context2);contents=contents.n("Retention");body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutObjectTaggingCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_cm]:input[_CMD],[_xasca]:input[_CA],[_xaebo]:input[_EBO],[_xarp]:input[_RP]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_t]:[,""],[_vI]:[,input[_VI]]});let body,contents;if(void 0!==input.Tagging){contents=se_Tagging(input.Tagging,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_PutPublicAccessBlockCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_cm]:input[_CMD],[_xasca]:input[_CA],[_xaebo]:input[_EBO]});b3.bp("/");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);const query3=map({[_pAB]:[,""]});let body,contents;if(void 0!==input.PublicAccessBlockConfiguration){contents=se_PublicAccessBlockConfiguration(input.PublicAccessBlockConfiguration,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_RestoreObjectCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xarp]:input[_RP],[_xasca]:input[_CA],[_xaebo]:input[_EBO]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_res]:[,""],[_vI]:[,input[_VI]]});let body,contents;if(void 0!==input.RestoreRequest){contents=se_RestoreRequest(input.RestoreRequest,context2);body=_ve;contents.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");body+=contents.toString()}b3.m("POST").h(headers).q(query3).b(body);return b3.build()};se_SelectObjectContentCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/xml",[_xasseca]:input[_SSECA],[_xasseck]:input[_SSECK],[_xasseckm]:input[_SSECKMD],[_xaebo]:input[_EBO]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_se]:[,""],[_st]:[,"2"]});let body;body=_ve;const bn2=new XmlNode(_SOCR);bn2.a("xmlns","http://s3.amazonaws.com/doc/2006-03-01/");bn2.cc(input,_Ex);bn2.cc(input,_ETx);null!=input[_IS]&&bn2.c(se_InputSerialization(input[_IS],context2).n(_IS));null!=input[_OS]&&bn2.c(se_OutputSerialization(input[_OS],context2).n(_OS));null!=input[_RPe]&&bn2.c(se_RequestProgress(input[_RPe],context2).n(_RPe));null!=input[_SR]&&bn2.c(se_ScanRange(input[_SR],context2).n(_SR));body+=bn2.toString();b3.m("POST").h(headers).q(query3).b(body);return b3.build()};se_UploadPartCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"content-type":"application/octet-stream",[_cl_]:[()=>isSerializableHeaderValue(input[_CLo]),()=>input[_CLo].toString()],[_cm]:input[_CMD],[_xasca]:input[_CA],[_xacc]:input[_CCRC],[_xacc_]:input[_CCRCC],[_xacs]:input[_CSHA],[_xacs_]:input[_CSHAh],[_xasseca]:input[_SSECA],[_xasseck]:input[_SSECK],[_xasseckm]:input[_SSECKMD],[_xarp]:input[_RP],[_xaebo]:input[_EBO]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_xi]:[,"UploadPart"],[_pN]:[null!=expectNonNull(input.PartNumber,"PartNumber"),()=>input[_PN].toString()],[_uI]:[,expectNonNull(input[_UI],"UploadId")]});let body,contents;if(void 0!==input.Body){contents=input.Body;body=contents}b3.m("PUT").h(headers).q(query3).b(body);return b3.build()};se_UploadPartCopyCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{[_xacs__]:input[_CS],[_xacsim]:input[_CSIM],[_xacsims]:[()=>isSerializableHeaderValue(input[_CSIMS]),()=>dateToUtcString(input[_CSIMS]).toString()],[_xacsinm]:input[_CSINM],[_xacsius]:[()=>isSerializableHeaderValue(input[_CSIUS]),()=>dateToUtcString(input[_CSIUS]).toString()],[_xacsr]:input[_CSR],[_xasseca]:input[_SSECA],[_xasseck]:input[_SSECK],[_xasseckm]:input[_SSECKMD],[_xacssseca]:input[_CSSSECA],[_xacssseck]:input[_CSSSECK],[_xacssseckm]:input[_CSSSECKMD],[_xarp]:input[_RP],[_xaebo]:input[_EBO],[_xasebo]:input[_ESBO]});b3.bp("/{Key+}");b3.p("Bucket",(()=>input.Bucket),"{Bucket}",!1);b3.p("Key",(()=>input.Key),"{Key+}",!0);const query3=map({[_xi]:[,"UploadPartCopy"],[_pN]:[null!=expectNonNull(input.PartNumber,"PartNumber"),()=>input[_PN].toString()],[_uI]:[,expectNonNull(input[_UI],"UploadId")]});b3.m("PUT").h(headers).q(query3).b(void 0);return b3.build()};se_WriteGetObjectResponseCommand=async(input,context2)=>{const b3=requestBuilder(input,context2),headers=map({},isSerializableHeaderValue,{"x-amz-content-sha256":"UNSIGNED-PAYLOAD","content-type":"application/octet-stream",[_xarr]:input[_RR],[_xart]:input[_RT],[_xafs]:[()=>isSerializableHeaderValue(input[_SCt]),()=>input[_SCt].toString()],[_xafec]:input[_EC],[_xafem]:input[_EM],[_xafhar]:input[_AR],[_xafhcc]:input[_CC],[_xafhcd]:input[_CD],[_xafhce]:input[_CE],[_xafhcl]:input[_CL],[_cl_]:[()=>isSerializableHeaderValue(input[_CLo]),()=>input[_CLo].toString()],[_xafhcr]:input[_CR],[_xafhct]:input[_CT],[_xafhxacc]:input[_CCRC],[_xafhxacc_]:input[_CCRCC],[_xafhxacs]:input[_CSHA],[_xafhxacs_]:input[_CSHAh],[_xafhxadm]:[()=>isSerializableHeaderValue(input[_DM]),()=>input[_DM].toString()],[_xafhe]:input[_ETa],[_xafhe_]:[()=>isSerializableHeaderValue(input[_E]),()=>dateToUtcString(input[_E]).toString()],[_xafhxae]:input[_Exp],[_xafhlm]:[()=>isSerializableHeaderValue(input[_LM]),()=>dateToUtcString(input[_LM]).toString()],[_xafhxamm]:[()=>isSerializableHeaderValue(input[_MM]),()=>input[_MM].toString()],[_xafhxaolm]:input[_OLM],[_xafhxaollh]:input[_OLLHS],[_xafhxaolrud]:[()=>isSerializableHeaderValue(input[_OLRUD]),()=>serializeDateTime(input[_OLRUD]).toString()],[_xafhxampc]:[()=>isSerializableHeaderValue(input[_PC]),()=>input[_PC].toString()],[_xafhxars]:input[_RS],[_xafhxarc]:input[_RC],[_xafhxar]:input[_Re],[_xafhxasse]:input[_SSE],[_xafhxasseca]:input[_SSECA],[_xafhxasseakki]:input[_SSEKMSKI],[_xafhxasseckm]:input[_SSECKMD],[_xafhxasc]:input[_SC],[_xafhxatc]:[()=>isSerializableHeaderValue(input[_TC]),()=>input[_TC].toString()],[_xafhxavi]:input[_VI],[_xafhxassebke]:[()=>isSerializableHeaderValue(input[_BKE]),()=>input[_BKE].toString()],...void 0!==input.Metadata&&Object.keys(input.Metadata).reduce(((acc,suffix)=>{acc[`x-amz-meta-${suffix.toLowerCase()}`]=input.Metadata[suffix];return acc}),{})});b3.bp("/WriteGetObjectResponse");let body,contents;if(void 0!==input.Body){contents=input.Body;body=contents}let{hostname:resolvedHostname}=await context2.endpoint();if(!0!==context2.disableHostPrefix){resolvedHostname="{RequestRoute}."+resolvedHostname;if(void 0===input.RequestRoute)throw new Error("Empty value provided for input host prefix: RequestRoute.");resolvedHostname=resolvedHostname.replace("{RequestRoute}",input.RequestRoute);if(!function isValidHostname(hostname){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(hostname)}(resolvedHostname))throw new Error("ValidationError: prefixed hostname must be hostname compatible.")}b3.hn(resolvedHostname);b3.m("POST").h(headers).b(body);return b3.build()};de_AbortMultipartUploadCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_RC]:[,output.headers[_xarc]]});await collectBody(output.body,context2);return contents};de_CompleteMultipartUploadCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_Exp]:[,output.headers[_xae]],[_SSE]:[,output.headers[_xasse]],[_VI]:[,output.headers[_xavi]],[_SSEKMSKI]:[,output.headers[_xasseakki]],[_BKE]:[()=>void 0!==output.headers[_xassebke],()=>parseBoolean(output.headers[_xassebke])],[_RC]:[,output.headers[_xarc]]}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_B]&&(contents[_B]=expectString(data[_B]));null!=data[_CCRC]&&(contents[_CCRC]=expectString(data[_CCRC]));null!=data[_CCRCC]&&(contents[_CCRCC]=expectString(data[_CCRCC]));null!=data[_CSHA]&&(contents[_CSHA]=expectString(data[_CSHA]));null!=data[_CSHAh]&&(contents[_CSHAh]=expectString(data[_CSHAh]));null!=data[_ETa]&&(contents[_ETa]=expectString(data[_ETa]));null!=data[_K]&&(contents[_K]=expectString(data[_K]));null!=data[_L]&&(contents[_L]=expectString(data[_L]));return contents};de_CopyObjectCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_Exp]:[,output.headers[_xae]],[_CSVI]:[,output.headers[_xacsvi]],[_VI]:[,output.headers[_xavi]],[_SSE]:[,output.headers[_xasse]],[_SSECA]:[,output.headers[_xasseca]],[_SSECKMD]:[,output.headers[_xasseckm]],[_SSEKMSKI]:[,output.headers[_xasseakki]],[_SSEKMSEC]:[,output.headers[_xassec]],[_BKE]:[()=>void 0!==output.headers[_xassebke],()=>parseBoolean(output.headers[_xassebke])],[_RC]:[,output.headers[_xarc]]}),data=expectObject(await parseXmlBody(output.body,context2));contents.CopyObjectResult=de_CopyObjectResult(data,context2);return contents};de_CreateBucketCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_L]:[,output.headers[_lo]]});await collectBody(output.body,context2);return contents};de_CreateMultipartUploadCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_AD]:[()=>void 0!==output.headers[_xaad],()=>expectNonNull(parseRfc7231DateTime(output.headers[_xaad]))],[_ARI]:[,output.headers[_xaari]],[_SSE]:[,output.headers[_xasse]],[_SSECA]:[,output.headers[_xasseca]],[_SSECKMD]:[,output.headers[_xasseckm]],[_SSEKMSKI]:[,output.headers[_xasseakki]],[_SSEKMSEC]:[,output.headers[_xassec]],[_BKE]:[()=>void 0!==output.headers[_xassebke],()=>parseBoolean(output.headers[_xassebke])],[_RC]:[,output.headers[_xarc]],[_CA]:[,output.headers[_xaca]]}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_B]&&(contents[_B]=expectString(data[_B]));null!=data[_K]&&(contents[_K]=expectString(data[_K]));null!=data[_UI]&&(contents[_UI]=expectString(data[_UI]));return contents};de_CreateSessionCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_C]&&(contents[_C]=de_SessionCredentials(data[_C],context2));return contents};de_DeleteBucketCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_DeleteBucketAnalyticsConfigurationCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_DeleteBucketCorsCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_DeleteBucketEncryptionCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_DeleteBucketIntelligentTieringConfigurationCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_DeleteBucketInventoryConfigurationCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_DeleteBucketLifecycleCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_DeleteBucketMetricsConfigurationCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_DeleteBucketOwnershipControlsCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_DeleteBucketPolicyCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_DeleteBucketReplicationCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_DeleteBucketTaggingCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_DeleteBucketWebsiteCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_DeleteObjectCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_DM]:[()=>void 0!==output.headers[_xadm],()=>parseBoolean(output.headers[_xadm])],[_VI]:[,output.headers[_xavi]],[_RC]:[,output.headers[_xarc]]});await collectBody(output.body,context2);return contents};de_DeleteObjectsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_RC]:[,output.headers[_xarc]]}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");""===data.Deleted?contents[_De]=[]:null!=data[_De]&&(contents[_De]=de_DeletedObjects(getArrayIfSingleItem(data[_De]),context2));""===data.Error?contents[_Err]=[]:null!=data[_Er]&&(contents[_Err]=de_Errors(getArrayIfSingleItem(data[_Er]),context2));return contents};de_DeleteObjectTaggingCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_VI]:[,output.headers[_xavi]]});await collectBody(output.body,context2);return contents};de_DeletePublicAccessBlockCommand=async(output,context2)=>{if(204!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_GetBucketAccelerateConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_RC]:[,output.headers[_xarc]]}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_S]&&(contents[_S]=expectString(data[_S]));return contents};de_GetBucketAclCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");""===data.AccessControlList?contents[_Gr]=[]:null!=data[_ACLc]&&null!=data[_ACLc][_G]&&(contents[_Gr]=de_Grants(getArrayIfSingleItem(data[_ACLc][_G]),context2));null!=data[_O]&&(contents[_O]=de_Owner(data[_O],context2));return contents};de_GetBucketAnalyticsConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectObject(await parseXmlBody(output.body,context2));contents.AnalyticsConfiguration=de_AnalyticsConfiguration(data,context2);return contents};de_GetBucketCorsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");""===data.CORSRule?contents[_CORSRu]=[]:null!=data[_CORSR]&&(contents[_CORSRu]=de_CORSRules(getArrayIfSingleItem(data[_CORSR]),context2));return contents};de_GetBucketEncryptionCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectObject(await parseXmlBody(output.body,context2));contents.ServerSideEncryptionConfiguration=de_ServerSideEncryptionConfiguration(data,context2);return contents};de_GetBucketIntelligentTieringConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectObject(await parseXmlBody(output.body,context2));contents.IntelligentTieringConfiguration=de_IntelligentTieringConfiguration(data,context2);return contents};de_GetBucketInventoryConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectObject(await parseXmlBody(output.body,context2));contents.InventoryConfiguration=de_InventoryConfiguration(data,context2);return contents};de_GetBucketLifecycleConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");""===data.Rule?contents[_Rul]=[]:null!=data[_Ru]&&(contents[_Rul]=de_LifecycleRules(getArrayIfSingleItem(data[_Ru]),context2));return contents};de_GetBucketLocationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_LC]&&(contents[_LC]=expectString(data[_LC]));return contents};de_GetBucketLoggingCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_LE]&&(contents[_LE]=de_LoggingEnabled(data[_LE],context2));return contents};de_GetBucketMetricsConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectObject(await parseXmlBody(output.body,context2));contents.MetricsConfiguration=de_MetricsConfiguration(data,context2);return contents};de_GetBucketNotificationConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_EBC]&&(contents[_EBC]=de_EventBridgeConfiguration(data[_EBC],context2));""===data.CloudFunctionConfiguration?contents[_LFC]=[]:null!=data[_CFC]&&(contents[_LFC]=de_LambdaFunctionConfigurationList(getArrayIfSingleItem(data[_CFC]),context2));""===data.QueueConfiguration?contents[_QCu]=[]:null!=data[_QC]&&(contents[_QCu]=de_QueueConfigurationList(getArrayIfSingleItem(data[_QC]),context2));""===data.TopicConfiguration?contents[_TCop]=[]:null!=data[_TCo]&&(contents[_TCop]=de_TopicConfigurationList(getArrayIfSingleItem(data[_TCo]),context2));return contents};de_GetBucketOwnershipControlsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectObject(await parseXmlBody(output.body,context2));contents.OwnershipControls=de_OwnershipControls(data,context2);return contents};de_GetBucketPolicyCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=await collectBodyString2(output.body,context2);contents.Policy=expectString(data);return contents};de_GetBucketPolicyStatusCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectObject(await parseXmlBody(output.body,context2));contents.PolicyStatus=de_PolicyStatus(data,context2);return contents};de_GetBucketReplicationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectObject(await parseXmlBody(output.body,context2));contents.ReplicationConfiguration=de_ReplicationConfiguration(data,context2);return contents};de_GetBucketRequestPaymentCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_Pa]&&(contents[_Pa]=expectString(data[_Pa]));return contents};de_GetBucketTaggingCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");""===data.TagSet?contents[_TS]=[]:null!=data[_TS]&&null!=data[_TS][_Ta]&&(contents[_TS]=de_TagSet(getArrayIfSingleItem(data[_TS][_Ta]),context2));return contents};de_GetBucketVersioningCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_MDf]&&(contents[_MFAD]=expectString(data[_MDf]));null!=data[_S]&&(contents[_S]=expectString(data[_S]));return contents};de_GetBucketWebsiteCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_ED]&&(contents[_ED]=de_ErrorDocument(data[_ED],context2));null!=data[_ID]&&(contents[_ID]=de_IndexDocument(data[_ID],context2));null!=data[_RART]&&(contents[_RART]=de_RedirectAllRequestsTo(data[_RART],context2));""===data.RoutingRules?contents[_RRo]=[]:null!=data[_RRo]&&null!=data[_RRo][_RRou]&&(contents[_RRo]=de_RoutingRules(getArrayIfSingleItem(data[_RRo][_RRou]),context2));return contents};de_GetObjectCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_DM]:[()=>void 0!==output.headers[_xadm],()=>parseBoolean(output.headers[_xadm])],[_AR]:[,output.headers[_ar]],[_Exp]:[,output.headers[_xae]],[_Re]:[,output.headers[_xar]],[_LM]:[()=>void 0!==output.headers[_lm],()=>expectNonNull(parseRfc7231DateTime(output.headers[_lm]))],[_CLo]:[()=>void 0!==output.headers[_cl_],()=>strictParseLong(output.headers[_cl_])],[_ETa]:[,output.headers[_eta]],[_CCRC]:[,output.headers[_xacc]],[_CCRCC]:[,output.headers[_xacc_]],[_CSHA]:[,output.headers[_xacs]],[_CSHAh]:[,output.headers[_xacs_]],[_MM]:[()=>void 0!==output.headers[_xamm],()=>strictParseInt32(output.headers[_xamm])],[_VI]:[,output.headers[_xavi]],[_CC]:[,output.headers[_cc]],[_CD]:[,output.headers[_cd]],[_CE]:[,output.headers[_ce]],[_CL]:[,output.headers[_cl]],[_CR]:[,output.headers[_cr]],[_CT]:[,output.headers[_ct]],[_E]:[()=>void 0!==output.headers[_e],()=>expectNonNull(parseRfc7231DateTime(output.headers[_e]))],[_ES]:[,output.headers[_ex]],[_WRL]:[,output.headers[_xawrl]],[_SSE]:[,output.headers[_xasse]],[_SSECA]:[,output.headers[_xasseca]],[_SSECKMD]:[,output.headers[_xasseckm]],[_SSEKMSKI]:[,output.headers[_xasseakki]],[_BKE]:[()=>void 0!==output.headers[_xassebke],()=>parseBoolean(output.headers[_xassebke])],[_SC]:[,output.headers[_xasc]],[_RC]:[,output.headers[_xarc]],[_RS]:[,output.headers[_xars]],[_PC]:[()=>void 0!==output.headers[_xampc],()=>strictParseInt32(output.headers[_xampc])],[_TC]:[()=>void 0!==output.headers[_xatc],()=>strictParseInt32(output.headers[_xatc])],[_OLM]:[,output.headers[_xaolm]],[_OLRUD]:[()=>void 0!==output.headers[_xaolrud],()=>expectNonNull(parseRfc3339DateTimeWithOffset(output.headers[_xaolrud]))],[_OLLHS]:[,output.headers[_xaollh]],Metadata:[,Object.keys(output.headers).filter((header=>header.startsWith("x-amz-meta-"))).reduce(((acc,header)=>{acc[header.substring(11)]=output.headers[header];return acc}),{})]}),data=output.body;context2.sdkStreamMixin(data);contents.Body=data;return contents};de_GetObjectAclCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_RC]:[,output.headers[_xarc]]}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");""===data.AccessControlList?contents[_Gr]=[]:null!=data[_ACLc]&&null!=data[_ACLc][_G]&&(contents[_Gr]=de_Grants(getArrayIfSingleItem(data[_ACLc][_G]),context2));null!=data[_O]&&(contents[_O]=de_Owner(data[_O],context2));return contents};de_GetObjectAttributesCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_DM]:[()=>void 0!==output.headers[_xadm],()=>parseBoolean(output.headers[_xadm])],[_LM]:[()=>void 0!==output.headers[_lm],()=>expectNonNull(parseRfc7231DateTime(output.headers[_lm]))],[_VI]:[,output.headers[_xavi]],[_RC]:[,output.headers[_xarc]]}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_Ch]&&(contents[_Ch]=de_Checksum(data[_Ch],context2));null!=data[_ETa]&&(contents[_ETa]=expectString(data[_ETa]));null!=data[_OP]&&(contents[_OP]=de_GetObjectAttributesParts(data[_OP],context2));null!=data[_OSb]&&(contents[_OSb]=strictParseLong(data[_OSb]));null!=data[_SC]&&(contents[_SC]=expectString(data[_SC]));return contents};de_GetObjectLegalHoldCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectObject(await parseXmlBody(output.body,context2));contents.LegalHold=de_ObjectLockLegalHold(data,context2);return contents};de_GetObjectLockConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectObject(await parseXmlBody(output.body,context2));contents.ObjectLockConfiguration=de_ObjectLockConfiguration(data,context2);return contents};de_GetObjectRetentionCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectObject(await parseXmlBody(output.body,context2));contents.Retention=de_ObjectLockRetention(data,context2);return contents};de_GetObjectTaggingCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_VI]:[,output.headers[_xavi]]}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");""===data.TagSet?contents[_TS]=[]:null!=data[_TS]&&null!=data[_TS][_Ta]&&(contents[_TS]=de_TagSet(getArrayIfSingleItem(data[_TS][_Ta]),context2));return contents};de_GetObjectTorrentCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_RC]:[,output.headers[_xarc]]}),data=output.body;context2.sdkStreamMixin(data);contents.Body=data;return contents};de_GetPublicAccessBlockCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectObject(await parseXmlBody(output.body,context2));contents.PublicAccessBlockConfiguration=de_PublicAccessBlockConfiguration(data,context2);return contents};de_HeadBucketCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_BLT]:[,output.headers[_xablt]],[_BLN]:[,output.headers[_xabln]],[_BR]:[,output.headers[_xabr]],[_APA]:[()=>void 0!==output.headers[_xaapa],()=>parseBoolean(output.headers[_xaapa])]});await collectBody(output.body,context2);return contents};de_HeadObjectCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_DM]:[()=>void 0!==output.headers[_xadm],()=>parseBoolean(output.headers[_xadm])],[_AR]:[,output.headers[_ar]],[_Exp]:[,output.headers[_xae]],[_Re]:[,output.headers[_xar]],[_AS]:[,output.headers[_xaas]],[_LM]:[()=>void 0!==output.headers[_lm],()=>expectNonNull(parseRfc7231DateTime(output.headers[_lm]))],[_CLo]:[()=>void 0!==output.headers[_cl_],()=>strictParseLong(output.headers[_cl_])],[_CCRC]:[,output.headers[_xacc]],[_CCRCC]:[,output.headers[_xacc_]],[_CSHA]:[,output.headers[_xacs]],[_CSHAh]:[,output.headers[_xacs_]],[_ETa]:[,output.headers[_eta]],[_MM]:[()=>void 0!==output.headers[_xamm],()=>strictParseInt32(output.headers[_xamm])],[_VI]:[,output.headers[_xavi]],[_CC]:[,output.headers[_cc]],[_CD]:[,output.headers[_cd]],[_CE]:[,output.headers[_ce]],[_CL]:[,output.headers[_cl]],[_CT]:[,output.headers[_ct]],[_E]:[()=>void 0!==output.headers[_e],()=>expectNonNull(parseRfc7231DateTime(output.headers[_e]))],[_ES]:[,output.headers[_ex]],[_WRL]:[,output.headers[_xawrl]],[_SSE]:[,output.headers[_xasse]],[_SSECA]:[,output.headers[_xasseca]],[_SSECKMD]:[,output.headers[_xasseckm]],[_SSEKMSKI]:[,output.headers[_xasseakki]],[_BKE]:[()=>void 0!==output.headers[_xassebke],()=>parseBoolean(output.headers[_xassebke])],[_SC]:[,output.headers[_xasc]],[_RC]:[,output.headers[_xarc]],[_RS]:[,output.headers[_xars]],[_PC]:[()=>void 0!==output.headers[_xampc],()=>strictParseInt32(output.headers[_xampc])],[_OLM]:[,output.headers[_xaolm]],[_OLRUD]:[()=>void 0!==output.headers[_xaolrud],()=>expectNonNull(parseRfc3339DateTimeWithOffset(output.headers[_xaolrud]))],[_OLLHS]:[,output.headers[_xaollh]],Metadata:[,Object.keys(output.headers).filter((header=>header.startsWith("x-amz-meta-"))).reduce(((acc,header)=>{acc[header.substring(11)]=output.headers[header];return acc}),{})]});await collectBody(output.body,context2);return contents};de_ListBucketAnalyticsConfigurationsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");""===data.AnalyticsConfiguration?contents[_ACLn]=[]:null!=data[_AC]&&(contents[_ACLn]=de_AnalyticsConfigurationList(getArrayIfSingleItem(data[_AC]),context2));null!=data[_CTo]&&(contents[_CTo]=expectString(data[_CTo]));null!=data[_IT]&&(contents[_IT]=parseBoolean(data[_IT]));null!=data[_NCT]&&(contents[_NCT]=expectString(data[_NCT]));return contents};de_ListBucketIntelligentTieringConfigurationsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_CTo]&&(contents[_CTo]=expectString(data[_CTo]));""===data.IntelligentTieringConfiguration?contents[_ITCL]=[]:null!=data[_ITC]&&(contents[_ITCL]=de_IntelligentTieringConfigurationList(getArrayIfSingleItem(data[_ITC]),context2));null!=data[_IT]&&(contents[_IT]=parseBoolean(data[_IT]));null!=data[_NCT]&&(contents[_NCT]=expectString(data[_NCT]));return contents};de_ListBucketInventoryConfigurationsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_CTo]&&(contents[_CTo]=expectString(data[_CTo]));""===data.InventoryConfiguration?contents[_ICL]=[]:null!=data[_IC]&&(contents[_ICL]=de_InventoryConfigurationList(getArrayIfSingleItem(data[_IC]),context2));null!=data[_IT]&&(contents[_IT]=parseBoolean(data[_IT]));null!=data[_NCT]&&(contents[_NCT]=expectString(data[_NCT]));return contents};de_ListBucketMetricsConfigurationsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_CTo]&&(contents[_CTo]=expectString(data[_CTo]));null!=data[_IT]&&(contents[_IT]=parseBoolean(data[_IT]));""===data.MetricsConfiguration?contents[_MCL]=[]:null!=data[_MC]&&(contents[_MCL]=de_MetricsConfigurationList(getArrayIfSingleItem(data[_MC]),context2));null!=data[_NCT]&&(contents[_NCT]=expectString(data[_NCT]));return contents};de_ListBucketsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");""===data.Buckets?contents[_Bu]=[]:null!=data[_Bu]&&null!=data[_Bu][_B]&&(contents[_Bu]=de_Buckets(getArrayIfSingleItem(data[_Bu][_B]),context2));null!=data[_CTo]&&(contents[_CTo]=expectString(data[_CTo]));null!=data[_O]&&(contents[_O]=de_Owner(data[_O],context2));return contents};de_ListDirectoryBucketsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");""===data.Buckets?contents[_Bu]=[]:null!=data[_Bu]&&null!=data[_Bu][_B]&&(contents[_Bu]=de_Buckets(getArrayIfSingleItem(data[_Bu][_B]),context2));null!=data[_CTo]&&(contents[_CTo]=expectString(data[_CTo]));return contents};de_ListMultipartUploadsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_RC]:[,output.headers[_xarc]]}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_B]&&(contents[_B]=expectString(data[_B]));""===data.CommonPrefixes?contents[_CP]=[]:null!=data[_CP]&&(contents[_CP]=de_CommonPrefixList(getArrayIfSingleItem(data[_CP]),context2));null!=data[_D]&&(contents[_D]=expectString(data[_D]));null!=data[_ET]&&(contents[_ET]=expectString(data[_ET]));null!=data[_IT]&&(contents[_IT]=parseBoolean(data[_IT]));null!=data[_KM]&&(contents[_KM]=expectString(data[_KM]));null!=data[_MU]&&(contents[_MU]=strictParseInt32(data[_MU]));null!=data[_NKM]&&(contents[_NKM]=expectString(data[_NKM]));null!=data[_NUIM]&&(contents[_NUIM]=expectString(data[_NUIM]));null!=data[_P]&&(contents[_P]=expectString(data[_P]));null!=data[_UIM]&&(contents[_UIM]=expectString(data[_UIM]));""===data.Upload?contents[_Up]=[]:null!=data[_U]&&(contents[_Up]=de_MultipartUploadList(getArrayIfSingleItem(data[_U]),context2));return contents};de_ListObjectsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_RC]:[,output.headers[_xarc]]}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");""===data.CommonPrefixes?contents[_CP]=[]:null!=data[_CP]&&(contents[_CP]=de_CommonPrefixList(getArrayIfSingleItem(data[_CP]),context2));""===data.Contents?contents[_Co]=[]:null!=data[_Co]&&(contents[_Co]=de_ObjectList(getArrayIfSingleItem(data[_Co]),context2));null!=data[_D]&&(contents[_D]=expectString(data[_D]));null!=data[_ET]&&(contents[_ET]=expectString(data[_ET]));null!=data[_IT]&&(contents[_IT]=parseBoolean(data[_IT]));null!=data[_M]&&(contents[_M]=expectString(data[_M]));null!=data[_MK]&&(contents[_MK]=strictParseInt32(data[_MK]));null!=data[_N]&&(contents[_N]=expectString(data[_N]));null!=data[_NM]&&(contents[_NM]=expectString(data[_NM]));null!=data[_P]&&(contents[_P]=expectString(data[_P]));return contents};de_ListObjectsV2Command=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_RC]:[,output.headers[_xarc]]}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");""===data.CommonPrefixes?contents[_CP]=[]:null!=data[_CP]&&(contents[_CP]=de_CommonPrefixList(getArrayIfSingleItem(data[_CP]),context2));""===data.Contents?contents[_Co]=[]:null!=data[_Co]&&(contents[_Co]=de_ObjectList(getArrayIfSingleItem(data[_Co]),context2));null!=data[_CTo]&&(contents[_CTo]=expectString(data[_CTo]));null!=data[_D]&&(contents[_D]=expectString(data[_D]));null!=data[_ET]&&(contents[_ET]=expectString(data[_ET]));null!=data[_IT]&&(contents[_IT]=parseBoolean(data[_IT]));null!=data[_KC]&&(contents[_KC]=strictParseInt32(data[_KC]));null!=data[_MK]&&(contents[_MK]=strictParseInt32(data[_MK]));null!=data[_N]&&(contents[_N]=expectString(data[_N]));null!=data[_NCT]&&(contents[_NCT]=expectString(data[_NCT]));null!=data[_P]&&(contents[_P]=expectString(data[_P]));null!=data[_SA]&&(contents[_SA]=expectString(data[_SA]));return contents};de_ListObjectVersionsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_RC]:[,output.headers[_xarc]]}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");""===data.CommonPrefixes?contents[_CP]=[]:null!=data[_CP]&&(contents[_CP]=de_CommonPrefixList(getArrayIfSingleItem(data[_CP]),context2));""===data.DeleteMarker?contents[_DMe]=[]:null!=data[_DM]&&(contents[_DMe]=de_DeleteMarkers(getArrayIfSingleItem(data[_DM]),context2));null!=data[_D]&&(contents[_D]=expectString(data[_D]));null!=data[_ET]&&(contents[_ET]=expectString(data[_ET]));null!=data[_IT]&&(contents[_IT]=parseBoolean(data[_IT]));null!=data[_KM]&&(contents[_KM]=expectString(data[_KM]));null!=data[_MK]&&(contents[_MK]=strictParseInt32(data[_MK]));null!=data[_N]&&(contents[_N]=expectString(data[_N]));null!=data[_NKM]&&(contents[_NKM]=expectString(data[_NKM]));null!=data[_NVIM]&&(contents[_NVIM]=expectString(data[_NVIM]));null!=data[_P]&&(contents[_P]=expectString(data[_P]));null!=data[_VIM]&&(contents[_VIM]=expectString(data[_VIM]));""===data.Version?contents[_Ve]=[]:null!=data[_V]&&(contents[_Ve]=de_ObjectVersionList(getArrayIfSingleItem(data[_V]),context2));return contents};de_ListPartsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_AD]:[()=>void 0!==output.headers[_xaad],()=>expectNonNull(parseRfc7231DateTime(output.headers[_xaad]))],[_ARI]:[,output.headers[_xaari]],[_RC]:[,output.headers[_xarc]]}),data=expectNonNull(expectObject(await parseXmlBody(output.body,context2)),"body");null!=data[_B]&&(contents[_B]=expectString(data[_B]));null!=data[_CA]&&(contents[_CA]=expectString(data[_CA]));null!=data[_In]&&(contents[_In]=de_Initiator(data[_In],context2));null!=data[_IT]&&(contents[_IT]=parseBoolean(data[_IT]));null!=data[_K]&&(contents[_K]=expectString(data[_K]));null!=data[_MP]&&(contents[_MP]=strictParseInt32(data[_MP]));null!=data[_NPNM]&&(contents[_NPNM]=expectString(data[_NPNM]));null!=data[_O]&&(contents[_O]=de_Owner(data[_O],context2));null!=data[_PNM]&&(contents[_PNM]=expectString(data[_PNM]));""===data.Part?contents[_Part]=[]:null!=data[_Par]&&(contents[_Part]=de_Parts(getArrayIfSingleItem(data[_Par]),context2));null!=data[_SC]&&(contents[_SC]=expectString(data[_SC]));null!=data[_UI]&&(contents[_UI]=expectString(data[_UI]));return contents};de_PutBucketAccelerateConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketAclCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketAnalyticsConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketCorsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketEncryptionCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketIntelligentTieringConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketInventoryConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketLifecycleConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketLoggingCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketMetricsConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketNotificationConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketOwnershipControlsCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketPolicyCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketReplicationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketRequestPaymentCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketTaggingCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketVersioningCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutBucketWebsiteCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_PutObjectCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_Exp]:[,output.headers[_xae]],[_ETa]:[,output.headers[_eta]],[_CCRC]:[,output.headers[_xacc]],[_CCRCC]:[,output.headers[_xacc_]],[_CSHA]:[,output.headers[_xacs]],[_CSHAh]:[,output.headers[_xacs_]],[_SSE]:[,output.headers[_xasse]],[_VI]:[,output.headers[_xavi]],[_SSECA]:[,output.headers[_xasseca]],[_SSECKMD]:[,output.headers[_xasseckm]],[_SSEKMSKI]:[,output.headers[_xasseakki]],[_SSEKMSEC]:[,output.headers[_xassec]],[_BKE]:[()=>void 0!==output.headers[_xassebke],()=>parseBoolean(output.headers[_xassebke])],[_RC]:[,output.headers[_xarc]]});await collectBody(output.body,context2);return contents};de_PutObjectAclCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_RC]:[,output.headers[_xarc]]});await collectBody(output.body,context2);return contents};de_PutObjectLegalHoldCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_RC]:[,output.headers[_xarc]]});await collectBody(output.body,context2);return contents};de_PutObjectLockConfigurationCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_RC]:[,output.headers[_xarc]]});await collectBody(output.body,context2);return contents};de_PutObjectRetentionCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_RC]:[,output.headers[_xarc]]});await collectBody(output.body,context2);return contents};de_PutObjectTaggingCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_VI]:[,output.headers[_xavi]]});await collectBody(output.body,context2);return contents};de_PutPublicAccessBlockCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_RestoreObjectCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_RC]:[,output.headers[_xarc]],[_ROP]:[,output.headers[_xarop]]});await collectBody(output.body,context2);return contents};de_SelectObjectContentCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)}),data=output.body;contents.Payload=de_SelectObjectContentEventStream(data,context2);return contents};de_UploadPartCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_SSE]:[,output.headers[_xasse]],[_ETa]:[,output.headers[_eta]],[_CCRC]:[,output.headers[_xacc]],[_CCRCC]:[,output.headers[_xacc_]],[_CSHA]:[,output.headers[_xacs]],[_CSHAh]:[,output.headers[_xacs_]],[_SSECA]:[,output.headers[_xasseca]],[_SSECKMD]:[,output.headers[_xasseckm]],[_SSEKMSKI]:[,output.headers[_xasseakki]],[_BKE]:[()=>void 0!==output.headers[_xassebke],()=>parseBoolean(output.headers[_xassebke])],[_RC]:[,output.headers[_xarc]]});await collectBody(output.body,context2);return contents};de_UploadPartCopyCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output),[_CSVI]:[,output.headers[_xacsvi]],[_SSE]:[,output.headers[_xasse]],[_SSECA]:[,output.headers[_xasseca]],[_SSECKMD]:[,output.headers[_xasseckm]],[_SSEKMSKI]:[,output.headers[_xasseakki]],[_BKE]:[()=>void 0!==output.headers[_xassebke],()=>parseBoolean(output.headers[_xassebke])],[_RC]:[,output.headers[_xarc]]}),data=expectObject(await parseXmlBody(output.body,context2));contents.CopyPartResult=de_CopyPartResult(data,context2);return contents};de_WriteGetObjectResponseCommand=async(output,context2)=>{if(200!==output.statusCode&&output.statusCode>=300)return de_CommandError(output,context2);const contents=map({$metadata:deserializeMetadata2(output)});await collectBody(output.body,context2);return contents};de_CommandError=async(output,context2)=>{const parsedOutput={...output,body:await parseXmlErrorBody(output.body,context2)},errorCode=loadRestXmlErrorCode(output,parsedOutput.body);switch(errorCode){case"NoSuchUpload":case"com.amazonaws.s3#NoSuchUpload":throw await de_NoSuchUploadRes(parsedOutput,context2);case"ObjectNotInActiveTierError":case"com.amazonaws.s3#ObjectNotInActiveTierError":throw await de_ObjectNotInActiveTierErrorRes(parsedOutput,context2);case"BucketAlreadyExists":case"com.amazonaws.s3#BucketAlreadyExists":throw await de_BucketAlreadyExistsRes(parsedOutput,context2);case"BucketAlreadyOwnedByYou":case"com.amazonaws.s3#BucketAlreadyOwnedByYou":throw await de_BucketAlreadyOwnedByYouRes(parsedOutput,context2);case"NoSuchBucket":case"com.amazonaws.s3#NoSuchBucket":throw await de_NoSuchBucketRes(parsedOutput,context2);case"InvalidObjectState":case"com.amazonaws.s3#InvalidObjectState":throw await de_InvalidObjectStateRes(parsedOutput,context2);case"NoSuchKey":case"com.amazonaws.s3#NoSuchKey":throw await de_NoSuchKeyRes(parsedOutput,context2);case"NotFound":case"com.amazonaws.s3#NotFound":throw await de_NotFoundRes(parsedOutput,context2);case"ObjectAlreadyInActiveTierError":case"com.amazonaws.s3#ObjectAlreadyInActiveTierError":throw await de_ObjectAlreadyInActiveTierErrorRes(parsedOutput,context2);default:const parsedBody=parsedOutput.body;return throwDefaultError2({output,parsedBody,errorCode})}};throwDefaultError2=withBaseException(S3ServiceException);de_BucketAlreadyExistsRes=async(parsedOutput,context2)=>{const contents=map({}),exception=(parsedOutput.body,new BucketAlreadyExists({$metadata:deserializeMetadata2(parsedOutput),...contents}));return decorateServiceException(exception,parsedOutput.body)};de_BucketAlreadyOwnedByYouRes=async(parsedOutput,context2)=>{const contents=map({}),exception=(parsedOutput.body,new BucketAlreadyOwnedByYou({$metadata:deserializeMetadata2(parsedOutput),...contents}));return decorateServiceException(exception,parsedOutput.body)};de_InvalidObjectStateRes=async(parsedOutput,context2)=>{const contents=map({}),data=parsedOutput.body;null!=data[_AT]&&(contents[_AT]=expectString(data[_AT]));null!=data[_SC]&&(contents[_SC]=expectString(data[_SC]));const exception=new InvalidObjectState({$metadata:deserializeMetadata2(parsedOutput),...contents});return decorateServiceException(exception,parsedOutput.body)};de_NoSuchBucketRes=async(parsedOutput,context2)=>{const contents=map({}),exception=(parsedOutput.body,new NoSuchBucket({$metadata:deserializeMetadata2(parsedOutput),...contents}));return decorateServiceException(exception,parsedOutput.body)};de_NoSuchKeyRes=async(parsedOutput,context2)=>{const contents=map({}),exception=(parsedOutput.body,new NoSuchKey({$metadata:deserializeMetadata2(parsedOutput),...contents}));return decorateServiceException(exception,parsedOutput.body)};de_NoSuchUploadRes=async(parsedOutput,context2)=>{const contents=map({}),exception=(parsedOutput.body,new NoSuchUpload({$metadata:deserializeMetadata2(parsedOutput),...contents}));return decorateServiceException(exception,parsedOutput.body)};de_NotFoundRes=async(parsedOutput,context2)=>{const contents=map({}),exception=(parsedOutput.body,new NotFound({$metadata:deserializeMetadata2(parsedOutput),...contents}));return decorateServiceException(exception,parsedOutput.body)};de_ObjectAlreadyInActiveTierErrorRes=async(parsedOutput,context2)=>{const contents=map({}),exception=(parsedOutput.body,new ObjectAlreadyInActiveTierError({$metadata:deserializeMetadata2(parsedOutput),...contents}));return decorateServiceException(exception,parsedOutput.body)};de_ObjectNotInActiveTierErrorRes=async(parsedOutput,context2)=>{const contents=map({}),exception=(parsedOutput.body,new ObjectNotInActiveTierError({$metadata:deserializeMetadata2(parsedOutput),...contents}));return decorateServiceException(exception,parsedOutput.body)};de_SelectObjectContentEventStream=(output,context2)=>context2.eventStreamMarshaller.deserialize(output,(async event2=>null!=event2.Records?{Records:await de_RecordsEvent_event(event2.Records,context2)}:null!=event2.Stats?{Stats:await de_StatsEvent_event(event2.Stats,context2)}:null!=event2.Progress?{Progress:await de_ProgressEvent_event(event2.Progress,context2)}:null!=event2.Cont?{Cont:await de_ContinuationEvent_event(event2.Cont,context2)}:null!=event2.End?{End:await de_EndEvent_event(event2.End,context2)}:{$unknown:output}));de_ContinuationEvent_event=async(output,context2)=>{const contents={},data=await parseXmlBody(output.body,context2);Object.assign(contents,de_ContinuationEvent(data,context2));return contents};de_EndEvent_event=async(output,context2)=>{const contents={},data=await parseXmlBody(output.body,context2);Object.assign(contents,de_EndEvent(data,context2));return contents};de_ProgressEvent_event=async(output,context2)=>{const contents={},data=await parseXmlBody(output.body,context2);contents.Details=de_Progress(data,context2);return contents};de_RecordsEvent_event=async(output,context2)=>{const contents={};contents.Payload=output.body;return contents};de_StatsEvent_event=async(output,context2)=>{const contents={},data=await parseXmlBody(output.body,context2);contents.Details=de_Stats(data,context2);return contents};se_AbortIncompleteMultipartUpload=(input,context2)=>{const bn2=new XmlNode(_AIMU);null!=input[_DAI]&&bn2.c(XmlNode.of(_DAI,String(input[_DAI])).n(_DAI));return bn2};se_AccelerateConfiguration=(input,context2)=>{const bn2=new XmlNode(_ACc);null!=input[_S]&&bn2.c(XmlNode.of(_BAS,input[_S]).n(_S));return bn2};se_AccessControlPolicy=(input,context2)=>{const bn2=new XmlNode(_ACP);bn2.lc(input,"Grants","AccessControlList",(()=>se_Grants(input[_Gr],context2)));null!=input[_O]&&bn2.c(se_Owner(input[_O],context2).n(_O));return bn2};se_AccessControlTranslation=(input,context2)=>{const bn2=new XmlNode(_ACT);null!=input[_O]&&bn2.c(XmlNode.of(_OOw,input[_O]).n(_O));return bn2};se_AllowedHeaders=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>XmlNode.of(_AH,entry).n(_me)));se_AllowedMethods=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>XmlNode.of(_AM,entry).n(_me)));se_AllowedOrigins=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>XmlNode.of(_AO,entry).n(_me)));se_AnalyticsAndOperator=(input,context2)=>{const bn2=new XmlNode(_AAO);bn2.cc(input,_P);bn2.l(input,"Tags","Tag",(()=>se_TagSet(input[_Tag],context2)));return bn2};se_AnalyticsConfiguration=(input,context2)=>{const bn2=new XmlNode(_AC);null!=input[_I]&&bn2.c(XmlNode.of(_AI,input[_I]).n(_I));null!=input[_F]&&bn2.c(se_AnalyticsFilter(input[_F],context2).n(_F));null!=input[_SCA]&&bn2.c(se_StorageClassAnalysis(input[_SCA],context2).n(_SCA));return bn2};se_AnalyticsExportDestination=(input,context2)=>{const bn2=new XmlNode(_AED);null!=input[_SBD]&&bn2.c(se_AnalyticsS3BucketDestination(input[_SBD],context2).n(_SBD));return bn2};se_AnalyticsFilter=(input,context2)=>{const bn2=new XmlNode(_AF);AnalyticsFilter.visit(input,{Prefix:value=>{null!=input[_P]&&bn2.c(XmlNode.of(_P,value).n(_P))},Tag:value=>{null!=input[_Ta]&&bn2.c(se_Tag(value,context2).n(_Ta))},And:value=>{null!=input[_A]&&bn2.c(se_AnalyticsAndOperator(value,context2).n(_A))},_:(name,value)=>{if(!(value instanceof XmlNode||value instanceof XmlText))throw new Error("Unable to serialize unknown union members in XML.");bn2.c(new XmlNode(name).c(value))}});return bn2};se_AnalyticsS3BucketDestination=(input,context2)=>{const bn2=new XmlNode(_ASBD);null!=input[_Fo]&&bn2.c(XmlNode.of(_ASEFF,input[_Fo]).n(_Fo));null!=input[_BAI]&&bn2.c(XmlNode.of(_AIc,input[_BAI]).n(_BAI));null!=input[_B]&&bn2.c(XmlNode.of(_BN,input[_B]).n(_B));bn2.cc(input,_P);return bn2};se_BucketInfo=(input,context2)=>{const bn2=new XmlNode(_BI);bn2.cc(input,_DR);null!=input[_Ty]&&bn2.c(XmlNode.of(_BT,input[_Ty]).n(_Ty));return bn2};se_BucketLifecycleConfiguration=(input,context2)=>{const bn2=new XmlNode(_BLC);bn2.l(input,"Rules","Rule",(()=>se_LifecycleRules(input[_Rul],context2)));return bn2};se_BucketLoggingStatus=(input,context2)=>{const bn2=new XmlNode(_BLS);null!=input[_LE]&&bn2.c(se_LoggingEnabled(input[_LE],context2).n(_LE));return bn2};se_CompletedMultipartUpload=(input,context2)=>{const bn2=new XmlNode(_CMU);bn2.l(input,"Parts","Part",(()=>se_CompletedPartList(input[_Part],context2)));return bn2};se_CompletedPart=(input,context2)=>{const bn2=new XmlNode(_CPo);bn2.cc(input,_ETa);bn2.cc(input,_CCRC);bn2.cc(input,_CCRCC);bn2.cc(input,_CSHA);bn2.cc(input,_CSHAh);null!=input[_PN]&&bn2.c(XmlNode.of(_PN,String(input[_PN])).n(_PN));return bn2};se_CompletedPartList=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_CompletedPart(entry).n(_me)));se_Condition=(input,context2)=>{const bn2=new XmlNode(_Con);bn2.cc(input,_HECRE);bn2.cc(input,_KPE);return bn2};se_CORSConfiguration=(input,context2)=>{const bn2=new XmlNode(_CORSC);bn2.l(input,"CORSRules","CORSRule",(()=>se_CORSRules(input[_CORSRu],context2)));return bn2};se_CORSRule=(input,context2)=>{const bn2=new XmlNode(_CORSR);bn2.cc(input,_ID_);bn2.l(input,"AllowedHeaders","AllowedHeader",(()=>se_AllowedHeaders(input[_AHl])));bn2.l(input,"AllowedMethods","AllowedMethod",(()=>se_AllowedMethods(input[_AMl])));bn2.l(input,"AllowedOrigins","AllowedOrigin",(()=>se_AllowedOrigins(input[_AOl])));bn2.l(input,"ExposeHeaders","ExposeHeader",(()=>se_ExposeHeaders(input[_EH],context2)));null!=input[_MAS]&&bn2.c(XmlNode.of(_MAS,String(input[_MAS])).n(_MAS));return bn2};se_CORSRules=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_CORSRule(entry,context2).n(_me)));se_CreateBucketConfiguration=(input,context2)=>{const bn2=new XmlNode(_CBC);null!=input[_LC]&&bn2.c(XmlNode.of(_BLCu,input[_LC]).n(_LC));null!=input[_L]&&bn2.c(se_LocationInfo(input[_L],context2).n(_L));null!=input[_B]&&bn2.c(se_BucketInfo(input[_B]).n(_B));return bn2};se_CSVInput=(input,context2)=>{const bn2=new XmlNode(_CSVIn);bn2.cc(input,_FHI);bn2.cc(input,_Com);bn2.cc(input,_QEC);bn2.cc(input,_RD);bn2.cc(input,_FD);bn2.cc(input,_QCuo);null!=input[_AQRD]&&bn2.c(XmlNode.of(_AQRD,String(input[_AQRD])).n(_AQRD));return bn2};se_CSVOutput=(input,context2)=>{const bn2=new XmlNode(_CSVO);bn2.cc(input,_QF);bn2.cc(input,_QEC);bn2.cc(input,_RD);bn2.cc(input,_FD);bn2.cc(input,_QCuo);return bn2};se_DefaultRetention=(input,context2)=>{const bn2=new XmlNode(_DRe);null!=input[_Mo]&&bn2.c(XmlNode.of(_OLRM,input[_Mo]).n(_Mo));null!=input[_Da]&&bn2.c(XmlNode.of(_Da,String(input[_Da])).n(_Da));null!=input[_Y]&&bn2.c(XmlNode.of(_Y,String(input[_Y])).n(_Y));return bn2};se_Delete=(input,context2)=>{const bn2=new XmlNode(_Del);bn2.l(input,"Objects","Object",(()=>se_ObjectIdentifierList(input[_Ob],context2)));null!=input[_Q]&&bn2.c(XmlNode.of(_Q,String(input[_Q])).n(_Q));return bn2};se_DeleteMarkerReplication=(input,context2)=>{const bn2=new XmlNode(_DMR);null!=input[_S]&&bn2.c(XmlNode.of(_DMRS,input[_S]).n(_S));return bn2};se_Destination=(input,context2)=>{const bn2=new XmlNode(_Des);null!=input[_B]&&bn2.c(XmlNode.of(_BN,input[_B]).n(_B));null!=input[_Ac]&&bn2.c(XmlNode.of(_AIc,input[_Ac]).n(_Ac));bn2.cc(input,_SC);null!=input[_ACT]&&bn2.c(se_AccessControlTranslation(input[_ACT]).n(_ACT));null!=input[_ECn]&&bn2.c(se_EncryptionConfiguration(input[_ECn],context2).n(_ECn));null!=input[_RTe]&&bn2.c(se_ReplicationTime(input[_RTe],context2).n(_RTe));null!=input[_Me]&&bn2.c(se_Metrics(input[_Me],context2).n(_Me));return bn2};se_Encryption=(input,context2)=>{const bn2=new XmlNode(_En);null!=input[_ETn]&&bn2.c(XmlNode.of(_SSE,input[_ETn]).n(_ETn));null!=input[_KMSKI]&&bn2.c(XmlNode.of(_SSEKMSKI,input[_KMSKI]).n(_KMSKI));bn2.cc(input,_KMSC);return bn2};se_EncryptionConfiguration=(input,context2)=>{const bn2=new XmlNode(_ECn);bn2.cc(input,_RKKID);return bn2};se_ErrorDocument=(input,context2)=>{const bn2=new XmlNode(_ED);null!=input[_K]&&bn2.c(XmlNode.of(_OK,input[_K]).n(_K));return bn2};se_EventBridgeConfiguration=(input,context2)=>new XmlNode(_EBC);se_EventList=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>XmlNode.of(_Ev,entry).n(_me)));se_ExistingObjectReplication=(input,context2)=>{const bn2=new XmlNode(_EOR);null!=input[_S]&&bn2.c(XmlNode.of(_EORS,input[_S]).n(_S));return bn2};se_ExposeHeaders=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>XmlNode.of(_EHx,entry).n(_me)));se_FilterRule=(input,context2)=>{const bn2=new XmlNode(_FR);null!=input[_N]&&bn2.c(XmlNode.of(_FRN,input[_N]).n(_N));null!=input[_Va]&&bn2.c(XmlNode.of(_FRV,input[_Va]).n(_Va));return bn2};se_FilterRuleList=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_FilterRule(entry).n(_me)));se_GlacierJobParameters=(input,context2)=>{const bn2=new XmlNode(_GJP);bn2.cc(input,_Ti);return bn2};se_Grant=(input,context2)=>{const bn2=new XmlNode(_G);if(null!=input[_Gra]){const n3=se_Grantee(input[_Gra],context2).n(_Gra);n3.a("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");bn2.c(n3)}bn2.cc(input,_Pe);return bn2};se_Grantee=(input,context2)=>{const bn2=new XmlNode(_Gra);bn2.cc(input,_DN);bn2.cc(input,_EA);bn2.cc(input,_ID_);bn2.cc(input,_URI);bn2.a("xsi:type",input[_Ty]);return bn2};se_Grants=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_Grant(entry,context2).n(_G)));se_IndexDocument=(input,context2)=>{const bn2=new XmlNode(_ID);bn2.cc(input,_Su);return bn2};se_InputSerialization=(input,context2)=>{const bn2=new XmlNode(_IS);null!=input[_CSV]&&bn2.c(se_CSVInput(input[_CSV]).n(_CSV));bn2.cc(input,_CTom);null!=input[_JSON]&&bn2.c(se_JSONInput(input[_JSON],context2).n(_JSON));null!=input[_Parq]&&bn2.c(se_ParquetInput(input[_Parq],context2).n(_Parq));return bn2};se_IntelligentTieringAndOperator=(input,context2)=>{const bn2=new XmlNode(_ITAO);bn2.cc(input,_P);bn2.l(input,"Tags","Tag",(()=>se_TagSet(input[_Tag],context2)));return bn2};se_IntelligentTieringConfiguration=(input,context2)=>{const bn2=new XmlNode(_ITC);null!=input[_I]&&bn2.c(XmlNode.of(_ITI,input[_I]).n(_I));null!=input[_F]&&bn2.c(se_IntelligentTieringFilter(input[_F],context2).n(_F));null!=input[_S]&&bn2.c(XmlNode.of(_ITS,input[_S]).n(_S));bn2.l(input,"Tierings","Tiering",(()=>se_TieringList(input[_Tie],context2)));return bn2};se_IntelligentTieringFilter=(input,context2)=>{const bn2=new XmlNode(_ITF);bn2.cc(input,_P);null!=input[_Ta]&&bn2.c(se_Tag(input[_Ta],context2).n(_Ta));null!=input[_A]&&bn2.c(se_IntelligentTieringAndOperator(input[_A],context2).n(_A));return bn2};se_InventoryConfiguration=(input,context2)=>{const bn2=new XmlNode(_IC);null!=input[_Des]&&bn2.c(se_InventoryDestination(input[_Des],context2).n(_Des));null!=input[_IE]&&bn2.c(XmlNode.of(_IE,String(input[_IE])).n(_IE));null!=input[_F]&&bn2.c(se_InventoryFilter(input[_F],context2).n(_F));null!=input[_I]&&bn2.c(XmlNode.of(_II,input[_I]).n(_I));null!=input[_IOV]&&bn2.c(XmlNode.of(_IIOV,input[_IOV]).n(_IOV));bn2.lc(input,"OptionalFields","OptionalFields",(()=>se_InventoryOptionalFields(input[_OF],context2)));null!=input[_Sc]&&bn2.c(se_InventorySchedule(input[_Sc],context2).n(_Sc));return bn2};se_InventoryDestination=(input,context2)=>{const bn2=new XmlNode(_IDn);null!=input[_SBD]&&bn2.c(se_InventoryS3BucketDestination(input[_SBD],context2).n(_SBD));return bn2};se_InventoryEncryption=(input,context2)=>{const bn2=new XmlNode(_IEn);null!=input[_SSES]&&bn2.c(se_SSES3(input[_SSES],context2).n(_SS));null!=input[_SSEKMS]&&bn2.c(se_SSEKMS(input[_SSEKMS],context2).n(_SK));return bn2};se_InventoryFilter=(input,context2)=>{const bn2=new XmlNode(_IF);bn2.cc(input,_P);return bn2};se_InventoryOptionalFields=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>XmlNode.of(_IOF,entry).n(_Fi)));se_InventoryS3BucketDestination=(input,context2)=>{const bn2=new XmlNode(_ISBD);bn2.cc(input,_AIc);null!=input[_B]&&bn2.c(XmlNode.of(_BN,input[_B]).n(_B));null!=input[_Fo]&&bn2.c(XmlNode.of(_IFn,input[_Fo]).n(_Fo));bn2.cc(input,_P);null!=input[_En]&&bn2.c(se_InventoryEncryption(input[_En],context2).n(_En));return bn2};se_InventorySchedule=(input,context2)=>{const bn2=new XmlNode(_ISn);null!=input[_Fr]&&bn2.c(XmlNode.of(_IFnv,input[_Fr]).n(_Fr));return bn2};se_JSONInput=(input,context2)=>{const bn2=new XmlNode(_JSONI);null!=input[_Ty]&&bn2.c(XmlNode.of(_JSONT,input[_Ty]).n(_Ty));return bn2};se_JSONOutput=(input,context2)=>{const bn2=new XmlNode(_JSONO);bn2.cc(input,_RD);return bn2};se_LambdaFunctionConfiguration=(input,context2)=>{const bn2=new XmlNode(_LFCa);null!=input[_I]&&bn2.c(XmlNode.of(_NI,input[_I]).n(_I));null!=input[_LFA]&&bn2.c(XmlNode.of(_LFA,input[_LFA]).n(_CF));bn2.l(input,"Events","Event",(()=>se_EventList(input[_Eve])));null!=input[_F]&&bn2.c(se_NotificationConfigurationFilter(input[_F],context2).n(_F));return bn2};se_LambdaFunctionConfigurationList=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_LambdaFunctionConfiguration(entry,context2).n(_me)));se_LifecycleExpiration=(input,context2)=>{const bn2=new XmlNode(_LEi);null!=input[_Dat]&&bn2.c(XmlNode.of(_Dat,serializeDateTime(input[_Dat]).toString()).n(_Dat));null!=input[_Da]&&bn2.c(XmlNode.of(_Da,String(input[_Da])).n(_Da));null!=input[_EODM]&&bn2.c(XmlNode.of(_EODM,String(input[_EODM])).n(_EODM));return bn2};se_LifecycleRule=(input,context2)=>{const bn2=new XmlNode(_LR);null!=input[_Exp]&&bn2.c(se_LifecycleExpiration(input[_Exp]).n(_Exp));bn2.cc(input,_ID_);bn2.cc(input,_P);null!=input[_F]&&bn2.c(se_LifecycleRuleFilter(input[_F],context2).n(_F));null!=input[_S]&&bn2.c(XmlNode.of(_ESx,input[_S]).n(_S));bn2.l(input,"Transitions","Transition",(()=>se_TransitionList(input[_Tr],context2)));bn2.l(input,"NoncurrentVersionTransitions","NoncurrentVersionTransition",(()=>se_NoncurrentVersionTransitionList(input[_NVT],context2)));null!=input[_NVE]&&bn2.c(se_NoncurrentVersionExpiration(input[_NVE],context2).n(_NVE));null!=input[_AIMU]&&bn2.c(se_AbortIncompleteMultipartUpload(input[_AIMU]).n(_AIMU));return bn2};se_LifecycleRuleAndOperator=(input,context2)=>{const bn2=new XmlNode(_LRAO);bn2.cc(input,_P);bn2.l(input,"Tags","Tag",(()=>se_TagSet(input[_Tag],context2)));null!=input[_OSGT]&&bn2.c(XmlNode.of(_OSGTB,String(input[_OSGT])).n(_OSGT));null!=input[_OSLT]&&bn2.c(XmlNode.of(_OSLTB,String(input[_OSLT])).n(_OSLT));return bn2};se_LifecycleRuleFilter=(input,context2)=>{const bn2=new XmlNode(_LRF);LifecycleRuleFilter.visit(input,{Prefix:value=>{null!=input[_P]&&bn2.c(XmlNode.of(_P,value).n(_P))},Tag:value=>{null!=input[_Ta]&&bn2.c(se_Tag(value,context2).n(_Ta))},ObjectSizeGreaterThan:value=>{null!=input[_OSGT]&&bn2.c(XmlNode.of(_OSGTB,String(value)).n(_OSGT))},ObjectSizeLessThan:value=>{null!=input[_OSLT]&&bn2.c(XmlNode.of(_OSLTB,String(value)).n(_OSLT))},And:value=>{null!=input[_A]&&bn2.c(se_LifecycleRuleAndOperator(value,context2).n(_A))},_:(name,value)=>{if(!(value instanceof XmlNode||value instanceof XmlText))throw new Error("Unable to serialize unknown union members in XML.");bn2.c(new XmlNode(name).c(value))}});return bn2};se_LifecycleRules=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_LifecycleRule(entry,context2).n(_me)));se_LocationInfo=(input,context2)=>{const bn2=new XmlNode(_LI);null!=input[_Ty]&&bn2.c(XmlNode.of(_LT,input[_Ty]).n(_Ty));null!=input[_N]&&bn2.c(XmlNode.of(_LNAS,input[_N]).n(_N));return bn2};se_LoggingEnabled=(input,context2)=>{const bn2=new XmlNode(_LE);bn2.cc(input,_TB);bn2.lc(input,"TargetGrants","TargetGrants",(()=>se_TargetGrants(input[_TG],context2)));bn2.cc(input,_TP);null!=input[_TOKF]&&bn2.c(se_TargetObjectKeyFormat(input[_TOKF],context2).n(_TOKF));return bn2};se_MetadataEntry=(input,context2)=>{const bn2=new XmlNode(_ME);null!=input[_N]&&bn2.c(XmlNode.of(_MKe,input[_N]).n(_N));null!=input[_Va]&&bn2.c(XmlNode.of(_MV,input[_Va]).n(_Va));return bn2};se_Metrics=(input,context2)=>{const bn2=new XmlNode(_Me);null!=input[_S]&&bn2.c(XmlNode.of(_MS,input[_S]).n(_S));null!=input[_ETv]&&bn2.c(se_ReplicationTimeValue(input[_ETv],context2).n(_ETv));return bn2};se_MetricsAndOperator=(input,context2)=>{const bn2=new XmlNode(_MAO);bn2.cc(input,_P);bn2.l(input,"Tags","Tag",(()=>se_TagSet(input[_Tag],context2)));bn2.cc(input,_APAc);return bn2};se_MetricsConfiguration=(input,context2)=>{const bn2=new XmlNode(_MC);null!=input[_I]&&bn2.c(XmlNode.of(_MI,input[_I]).n(_I));null!=input[_F]&&bn2.c(se_MetricsFilter(input[_F],context2).n(_F));return bn2};se_MetricsFilter=(input,context2)=>{const bn2=new XmlNode(_MF);MetricsFilter.visit(input,{Prefix:value=>{null!=input[_P]&&bn2.c(XmlNode.of(_P,value).n(_P))},Tag:value=>{null!=input[_Ta]&&bn2.c(se_Tag(value,context2).n(_Ta))},AccessPointArn:value=>{null!=input[_APAc]&&bn2.c(XmlNode.of(_APAc,value).n(_APAc))},And:value=>{null!=input[_A]&&bn2.c(se_MetricsAndOperator(value,context2).n(_A))},_:(name,value)=>{if(!(value instanceof XmlNode||value instanceof XmlText))throw new Error("Unable to serialize unknown union members in XML.");bn2.c(new XmlNode(name).c(value))}});return bn2};se_NoncurrentVersionExpiration=(input,context2)=>{const bn2=new XmlNode(_NVE);null!=input[_ND]&&bn2.c(XmlNode.of(_Da,String(input[_ND])).n(_ND));null!=input[_NNV]&&bn2.c(XmlNode.of(_VC,String(input[_NNV])).n(_NNV));return bn2};se_NoncurrentVersionTransition=(input,context2)=>{const bn2=new XmlNode(_NVTo);null!=input[_ND]&&bn2.c(XmlNode.of(_Da,String(input[_ND])).n(_ND));null!=input[_SC]&&bn2.c(XmlNode.of(_TSC,input[_SC]).n(_SC));null!=input[_NNV]&&bn2.c(XmlNode.of(_VC,String(input[_NNV])).n(_NNV));return bn2};se_NoncurrentVersionTransitionList=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_NoncurrentVersionTransition(entry).n(_me)));se_NotificationConfiguration=(input,context2)=>{const bn2=new XmlNode(_NC);bn2.l(input,"TopicConfigurations","TopicConfiguration",(()=>se_TopicConfigurationList(input[_TCop],context2)));bn2.l(input,"QueueConfigurations","QueueConfiguration",(()=>se_QueueConfigurationList(input[_QCu],context2)));bn2.l(input,"LambdaFunctionConfigurations","CloudFunctionConfiguration",(()=>se_LambdaFunctionConfigurationList(input[_LFC],context2)));null!=input[_EBC]&&bn2.c(se_EventBridgeConfiguration(input[_EBC]).n(_EBC));return bn2};se_NotificationConfigurationFilter=(input,context2)=>{const bn2=new XmlNode(_NCF);null!=input[_K]&&bn2.c(se_S3KeyFilter(input[_K],context2).n(_SKe));return bn2};se_ObjectIdentifier=(input,context2)=>{const bn2=new XmlNode(_OI);null!=input[_K]&&bn2.c(XmlNode.of(_OK,input[_K]).n(_K));null!=input[_VI]&&bn2.c(XmlNode.of(_OVI,input[_VI]).n(_VI));return bn2};se_ObjectIdentifierList=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_ObjectIdentifier(entry).n(_me)));se_ObjectLockConfiguration=(input,context2)=>{const bn2=new XmlNode(_OLC);bn2.cc(input,_OLE);null!=input[_Ru]&&bn2.c(se_ObjectLockRule(input[_Ru],context2).n(_Ru));return bn2};se_ObjectLockLegalHold=(input,context2)=>{const bn2=new XmlNode(_OLLH);null!=input[_S]&&bn2.c(XmlNode.of(_OLLHS,input[_S]).n(_S));return bn2};se_ObjectLockRetention=(input,context2)=>{const bn2=new XmlNode(_OLR);null!=input[_Mo]&&bn2.c(XmlNode.of(_OLRM,input[_Mo]).n(_Mo));null!=input[_RUD]&&bn2.c(XmlNode.of(_Dat,serializeDateTime(input[_RUD]).toString()).n(_RUD));return bn2};se_ObjectLockRule=(input,context2)=>{const bn2=new XmlNode(_OLRb);null!=input[_DRe]&&bn2.c(se_DefaultRetention(input[_DRe]).n(_DRe));return bn2};se_OutputLocation=(input,context2)=>{const bn2=new XmlNode(_OL);null!=input[_S_]&&bn2.c(se_S3Location(input[_S_],context2).n(_S_));return bn2};se_OutputSerialization=(input,context2)=>{const bn2=new XmlNode(_OS);null!=input[_CSV]&&bn2.c(se_CSVOutput(input[_CSV]).n(_CSV));null!=input[_JSON]&&bn2.c(se_JSONOutput(input[_JSON]).n(_JSON));return bn2};se_Owner=(input,context2)=>{const bn2=new XmlNode(_O);bn2.cc(input,_DN);bn2.cc(input,_ID_);return bn2};se_OwnershipControls=(input,context2)=>{const bn2=new XmlNode(_OC);bn2.l(input,"Rules","Rule",(()=>se_OwnershipControlsRules(input[_Rul],context2)));return bn2};se_OwnershipControlsRule=(input,context2)=>{const bn2=new XmlNode(_OCR);bn2.cc(input,_OO);return bn2};se_OwnershipControlsRules=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_OwnershipControlsRule(entry).n(_me)));se_ParquetInput=(input,context2)=>new XmlNode(_PI);se_PartitionedPrefix=(input,context2)=>{const bn2=new XmlNode(_PP);bn2.cc(input,_PDS);return bn2};se_PublicAccessBlockConfiguration=(input,context2)=>{const bn2=new XmlNode(_PABC);null!=input[_BPA]&&bn2.c(XmlNode.of(_Se,String(input[_BPA])).n(_BPA));null!=input[_IPA]&&bn2.c(XmlNode.of(_Se,String(input[_IPA])).n(_IPA));null!=input[_BPP]&&bn2.c(XmlNode.of(_Se,String(input[_BPP])).n(_BPP));null!=input[_RPB]&&bn2.c(XmlNode.of(_Se,String(input[_RPB])).n(_RPB));return bn2};se_QueueConfiguration=(input,context2)=>{const bn2=new XmlNode(_QC);null!=input[_I]&&bn2.c(XmlNode.of(_NI,input[_I]).n(_I));null!=input[_QA]&&bn2.c(XmlNode.of(_QA,input[_QA]).n(_Qu));bn2.l(input,"Events","Event",(()=>se_EventList(input[_Eve])));null!=input[_F]&&bn2.c(se_NotificationConfigurationFilter(input[_F],context2).n(_F));return bn2};se_QueueConfigurationList=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_QueueConfiguration(entry,context2).n(_me)));se_Redirect=(input,context2)=>{const bn2=new XmlNode(_Red);bn2.cc(input,_HN);bn2.cc(input,_HRC);bn2.cc(input,_Pr);bn2.cc(input,_RKPW);bn2.cc(input,_RKW);return bn2};se_RedirectAllRequestsTo=(input,context2)=>{const bn2=new XmlNode(_RART);bn2.cc(input,_HN);bn2.cc(input,_Pr);return bn2};se_ReplicaModifications=(input,context2)=>{const bn2=new XmlNode(_RM);null!=input[_S]&&bn2.c(XmlNode.of(_RMS,input[_S]).n(_S));return bn2};se_ReplicationConfiguration=(input,context2)=>{const bn2=new XmlNode(_RCe);bn2.cc(input,_Ro);bn2.l(input,"Rules","Rule",(()=>se_ReplicationRules(input[_Rul],context2)));return bn2};se_ReplicationRule=(input,context2)=>{const bn2=new XmlNode(_RRe);bn2.cc(input,_ID_);null!=input[_Pri]&&bn2.c(XmlNode.of(_Pri,String(input[_Pri])).n(_Pri));bn2.cc(input,_P);null!=input[_F]&&bn2.c(se_ReplicationRuleFilter(input[_F],context2).n(_F));null!=input[_S]&&bn2.c(XmlNode.of(_RRS,input[_S]).n(_S));null!=input[_SSC]&&bn2.c(se_SourceSelectionCriteria(input[_SSC],context2).n(_SSC));null!=input[_EOR]&&bn2.c(se_ExistingObjectReplication(input[_EOR]).n(_EOR));null!=input[_Des]&&bn2.c(se_Destination(input[_Des],context2).n(_Des));null!=input[_DMR]&&bn2.c(se_DeleteMarkerReplication(input[_DMR]).n(_DMR));return bn2};se_ReplicationRuleAndOperator=(input,context2)=>{const bn2=new XmlNode(_RRAO);bn2.cc(input,_P);bn2.l(input,"Tags","Tag",(()=>se_TagSet(input[_Tag],context2)));return bn2};se_ReplicationRuleFilter=(input,context2)=>{const bn2=new XmlNode(_RRF);ReplicationRuleFilter.visit(input,{Prefix:value=>{null!=input[_P]&&bn2.c(XmlNode.of(_P,value).n(_P))},Tag:value=>{null!=input[_Ta]&&bn2.c(se_Tag(value,context2).n(_Ta))},And:value=>{null!=input[_A]&&bn2.c(se_ReplicationRuleAndOperator(value,context2).n(_A))},_:(name,value)=>{if(!(value instanceof XmlNode||value instanceof XmlText))throw new Error("Unable to serialize unknown union members in XML.");bn2.c(new XmlNode(name).c(value))}});return bn2};se_ReplicationRules=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_ReplicationRule(entry,context2).n(_me)));se_ReplicationTime=(input,context2)=>{const bn2=new XmlNode(_RTe);null!=input[_S]&&bn2.c(XmlNode.of(_RTS,input[_S]).n(_S));null!=input[_Tim]&&bn2.c(se_ReplicationTimeValue(input[_Tim],context2).n(_Tim));return bn2};se_ReplicationTimeValue=(input,context2)=>{const bn2=new XmlNode(_RTV);null!=input[_Mi]&&bn2.c(XmlNode.of(_Mi,String(input[_Mi])).n(_Mi));return bn2};se_RequestPaymentConfiguration=(input,context2)=>{const bn2=new XmlNode(_RPC);bn2.cc(input,_Pa);return bn2};se_RequestProgress=(input,context2)=>{const bn2=new XmlNode(_RPe);null!=input[_Ena]&&bn2.c(XmlNode.of(_ERP,String(input[_Ena])).n(_Ena));return bn2};se_RestoreRequest=(input,context2)=>{const bn2=new XmlNode(_RRes);null!=input[_Da]&&bn2.c(XmlNode.of(_Da,String(input[_Da])).n(_Da));null!=input[_GJP]&&bn2.c(se_GlacierJobParameters(input[_GJP]).n(_GJP));null!=input[_Ty]&&bn2.c(XmlNode.of(_RRT,input[_Ty]).n(_Ty));bn2.cc(input,_Ti);bn2.cc(input,_Desc);null!=input[_SP]&&bn2.c(se_SelectParameters(input[_SP],context2).n(_SP));null!=input[_OL]&&bn2.c(se_OutputLocation(input[_OL],context2).n(_OL));return bn2};se_RoutingRule=(input,context2)=>{const bn2=new XmlNode(_RRou);null!=input[_Con]&&bn2.c(se_Condition(input[_Con]).n(_Con));null!=input[_Red]&&bn2.c(se_Redirect(input[_Red]).n(_Red));return bn2};se_RoutingRules=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_RoutingRule(entry).n(_RRou)));se_S3KeyFilter=(input,context2)=>{const bn2=new XmlNode(_SKF);bn2.l(input,"FilterRules","FilterRule",(()=>se_FilterRuleList(input[_FRi])));return bn2};se_S3Location=(input,context2)=>{const bn2=new XmlNode(_SL);bn2.cc(input,_BN);null!=input[_P]&&bn2.c(XmlNode.of(_LP,input[_P]).n(_P));null!=input[_En]&&bn2.c(se_Encryption(input[_En]).n(_En));null!=input[_CACL]&&bn2.c(XmlNode.of(_OCACL,input[_CACL]).n(_CACL));bn2.lc(input,"AccessControlList","AccessControlList",(()=>se_Grants(input[_ACLc],context2)));null!=input[_T]&&bn2.c(se_Tagging(input[_T],context2).n(_T));bn2.lc(input,"UserMetadata","UserMetadata",(()=>se_UserMetadata(input[_UM],context2)));bn2.cc(input,_SC);return bn2};se_ScanRange=(input,context2)=>{const bn2=new XmlNode(_SR);null!=input[_St]&&bn2.c(XmlNode.of(_St,String(input[_St])).n(_St));null!=input[_End]&&bn2.c(XmlNode.of(_End,String(input[_End])).n(_End));return bn2};se_SelectParameters=(input,context2)=>{const bn2=new XmlNode(_SP);null!=input[_IS]&&bn2.c(se_InputSerialization(input[_IS],context2).n(_IS));bn2.cc(input,_ETx);bn2.cc(input,_Ex);null!=input[_OS]&&bn2.c(se_OutputSerialization(input[_OS],context2).n(_OS));return bn2};se_ServerSideEncryptionByDefault=(input,context2)=>{const bn2=new XmlNode(_SSEBD);null!=input[_SSEA]&&bn2.c(XmlNode.of(_SSE,input[_SSEA]).n(_SSEA));null!=input[_KMSMKID]&&bn2.c(XmlNode.of(_SSEKMSKI,input[_KMSMKID]).n(_KMSMKID));return bn2};se_ServerSideEncryptionConfiguration=(input,context2)=>{const bn2=new XmlNode(_SSEC);bn2.l(input,"Rules","Rule",(()=>se_ServerSideEncryptionRules(input[_Rul],context2)));return bn2};se_ServerSideEncryptionRule=(input,context2)=>{const bn2=new XmlNode(_SSER);null!=input[_ASSEBD]&&bn2.c(se_ServerSideEncryptionByDefault(input[_ASSEBD]).n(_ASSEBD));null!=input[_BKE]&&bn2.c(XmlNode.of(_BKE,String(input[_BKE])).n(_BKE));return bn2};se_ServerSideEncryptionRules=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_ServerSideEncryptionRule(entry).n(_me)));se_SimplePrefix=(input,context2)=>new XmlNode(_SPi);se_SourceSelectionCriteria=(input,context2)=>{const bn2=new XmlNode(_SSC);null!=input[_SKEO]&&bn2.c(se_SseKmsEncryptedObjects(input[_SKEO],context2).n(_SKEO));null!=input[_RM]&&bn2.c(se_ReplicaModifications(input[_RM]).n(_RM));return bn2};se_SSEKMS=(input,context2)=>{const bn2=new XmlNode(_SK);null!=input[_KI]&&bn2.c(XmlNode.of(_SSEKMSKI,input[_KI]).n(_KI));return bn2};se_SseKmsEncryptedObjects=(input,context2)=>{const bn2=new XmlNode(_SKEO);null!=input[_S]&&bn2.c(XmlNode.of(_SKEOS,input[_S]).n(_S));return bn2};se_SSES3=(input,context2)=>new XmlNode(_SS);se_StorageClassAnalysis=(input,context2)=>{const bn2=new XmlNode(_SCA);null!=input[_DE]&&bn2.c(se_StorageClassAnalysisDataExport(input[_DE],context2).n(_DE));return bn2};se_StorageClassAnalysisDataExport=(input,context2)=>{const bn2=new XmlNode(_SCADE);null!=input[_OSV]&&bn2.c(XmlNode.of(_SCASV,input[_OSV]).n(_OSV));null!=input[_Des]&&bn2.c(se_AnalyticsExportDestination(input[_Des],context2).n(_Des));return bn2};se_Tag=(input,context2)=>{const bn2=new XmlNode(_Ta);null!=input[_K]&&bn2.c(XmlNode.of(_OK,input[_K]).n(_K));bn2.cc(input,_Va);return bn2};se_Tagging=(input,context2)=>{const bn2=new XmlNode(_T);bn2.lc(input,"TagSet","TagSet",(()=>se_TagSet(input[_TS],context2)));return bn2};se_TagSet=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_Tag(entry,context2).n(_Ta)));se_TargetGrant=(input,context2)=>{const bn2=new XmlNode(_TGa);if(null!=input[_Gra]){const n3=se_Grantee(input[_Gra],context2).n(_Gra);n3.a("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");bn2.c(n3)}null!=input[_Pe]&&bn2.c(XmlNode.of(_BLP,input[_Pe]).n(_Pe));return bn2};se_TargetGrants=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_TargetGrant(entry,context2).n(_G)));se_TargetObjectKeyFormat=(input,context2)=>{const bn2=new XmlNode(_TOKF);null!=input[_SPi]&&bn2.c(se_SimplePrefix(input[_SPi]).n(_SPi));null!=input[_PP]&&bn2.c(se_PartitionedPrefix(input[_PP]).n(_PP));return bn2};se_Tiering=(input,context2)=>{const bn2=new XmlNode(_Tier);null!=input[_Da]&&bn2.c(XmlNode.of(_ITD,String(input[_Da])).n(_Da));null!=input[_AT]&&bn2.c(XmlNode.of(_ITAT,input[_AT]).n(_AT));return bn2};se_TieringList=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_Tiering(entry).n(_me)));se_TopicConfiguration=(input,context2)=>{const bn2=new XmlNode(_TCo);null!=input[_I]&&bn2.c(XmlNode.of(_NI,input[_I]).n(_I));null!=input[_TA]&&bn2.c(XmlNode.of(_TA,input[_TA]).n(_Top));bn2.l(input,"Events","Event",(()=>se_EventList(input[_Eve])));null!=input[_F]&&bn2.c(se_NotificationConfigurationFilter(input[_F],context2).n(_F));return bn2};se_TopicConfigurationList=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_TopicConfiguration(entry,context2).n(_me)));se_Transition=(input,context2)=>{const bn2=new XmlNode(_Tra);null!=input[_Dat]&&bn2.c(XmlNode.of(_Dat,serializeDateTime(input[_Dat]).toString()).n(_Dat));null!=input[_Da]&&bn2.c(XmlNode.of(_Da,String(input[_Da])).n(_Da));null!=input[_SC]&&bn2.c(XmlNode.of(_TSC,input[_SC]).n(_SC));return bn2};se_TransitionList=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_Transition(entry).n(_me)));se_UserMetadata=(input,context2)=>input.filter((e3=>null!=e3)).map((entry=>se_MetadataEntry(entry).n(_ME)));se_VersioningConfiguration=(input,context2)=>{const bn2=new XmlNode(_VCe);null!=input[_MFAD]&&bn2.c(XmlNode.of(_MFAD,input[_MFAD]).n(_MDf));null!=input[_S]&&bn2.c(XmlNode.of(_BVS,input[_S]).n(_S));return bn2};se_WebsiteConfiguration=(input,context2)=>{const bn2=new XmlNode(_WC);null!=input[_ED]&&bn2.c(se_ErrorDocument(input[_ED]).n(_ED));null!=input[_ID]&&bn2.c(se_IndexDocument(input[_ID]).n(_ID));null!=input[_RART]&&bn2.c(se_RedirectAllRequestsTo(input[_RART]).n(_RART));bn2.lc(input,"RoutingRules","RoutingRules",(()=>se_RoutingRules(input[_RRo])));return bn2};de_AbortIncompleteMultipartUpload=(output,context2)=>{const contents={};null!=output[_DAI]&&(contents[_DAI]=strictParseInt32(output[_DAI]));return contents};de_AccessControlTranslation=(output,context2)=>{const contents={};null!=output[_O]&&(contents[_O]=expectString(output[_O]));return contents};de_AllowedHeaders=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>expectString(entry)));de_AllowedMethods=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>expectString(entry)));de_AllowedOrigins=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>expectString(entry)));de_AnalyticsAndOperator=(output,context2)=>{const contents={};null!=output[_P]&&(contents[_P]=expectString(output[_P]));""===output.Tag?contents[_Tag]=[]:null!=output[_Ta]&&(contents[_Tag]=de_TagSet(getArrayIfSingleItem(output[_Ta]),context2));return contents};de_AnalyticsConfiguration=(output,context2)=>{const contents={};null!=output[_I]&&(contents[_I]=expectString(output[_I]));""===output.Filter||null!=output[_F]&&(contents[_F]=de_AnalyticsFilter(expectUnion(output[_F]),context2));null!=output[_SCA]&&(contents[_SCA]=de_StorageClassAnalysis(output[_SCA],context2));return contents};de_AnalyticsConfigurationList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_AnalyticsConfiguration(entry,context2)));de_AnalyticsExportDestination=(output,context2)=>{const contents={};null!=output[_SBD]&&(contents[_SBD]=de_AnalyticsS3BucketDestination(output[_SBD],context2));return contents};de_AnalyticsFilter=(output,context2)=>null!=output[_P]?{Prefix:expectString(output[_P])}:null!=output[_Ta]?{Tag:de_Tag(output[_Ta],context2)}:null!=output[_A]?{And:de_AnalyticsAndOperator(output[_A],context2)}:{$unknown:Object.entries(output)[0]};de_AnalyticsS3BucketDestination=(output,context2)=>{const contents={};null!=output[_Fo]&&(contents[_Fo]=expectString(output[_Fo]));null!=output[_BAI]&&(contents[_BAI]=expectString(output[_BAI]));null!=output[_B]&&(contents[_B]=expectString(output[_B]));null!=output[_P]&&(contents[_P]=expectString(output[_P]));return contents};de_Bucket=(output,context2)=>{const contents={};null!=output[_N]&&(contents[_N]=expectString(output[_N]));null!=output[_CDr]&&(contents[_CDr]=expectNonNull(parseRfc3339DateTimeWithOffset(output[_CDr])));return contents};de_Buckets=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_Bucket(entry)));de_Checksum=(output,context2)=>{const contents={};null!=output[_CCRC]&&(contents[_CCRC]=expectString(output[_CCRC]));null!=output[_CCRCC]&&(contents[_CCRCC]=expectString(output[_CCRCC]));null!=output[_CSHA]&&(contents[_CSHA]=expectString(output[_CSHA]));null!=output[_CSHAh]&&(contents[_CSHAh]=expectString(output[_CSHAh]));return contents};de_ChecksumAlgorithmList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>expectString(entry)));de_CommonPrefix=(output,context2)=>{const contents={};null!=output[_P]&&(contents[_P]=expectString(output[_P]));return contents};de_CommonPrefixList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_CommonPrefix(entry)));de_Condition=(output,context2)=>{const contents={};null!=output[_HECRE]&&(contents[_HECRE]=expectString(output[_HECRE]));null!=output[_KPE]&&(contents[_KPE]=expectString(output[_KPE]));return contents};de_ContinuationEvent=(output,context2)=>({});de_CopyObjectResult=(output,context2)=>{const contents={};null!=output[_ETa]&&(contents[_ETa]=expectString(output[_ETa]));null!=output[_LM]&&(contents[_LM]=expectNonNull(parseRfc3339DateTimeWithOffset(output[_LM])));null!=output[_CCRC]&&(contents[_CCRC]=expectString(output[_CCRC]));null!=output[_CCRCC]&&(contents[_CCRCC]=expectString(output[_CCRCC]));null!=output[_CSHA]&&(contents[_CSHA]=expectString(output[_CSHA]));null!=output[_CSHAh]&&(contents[_CSHAh]=expectString(output[_CSHAh]));return contents};de_CopyPartResult=(output,context2)=>{const contents={};null!=output[_ETa]&&(contents[_ETa]=expectString(output[_ETa]));null!=output[_LM]&&(contents[_LM]=expectNonNull(parseRfc3339DateTimeWithOffset(output[_LM])));null!=output[_CCRC]&&(contents[_CCRC]=expectString(output[_CCRC]));null!=output[_CCRCC]&&(contents[_CCRCC]=expectString(output[_CCRCC]));null!=output[_CSHA]&&(contents[_CSHA]=expectString(output[_CSHA]));null!=output[_CSHAh]&&(contents[_CSHAh]=expectString(output[_CSHAh]));return contents};de_CORSRule=(output,context2)=>{const contents={};null!=output[_ID_]&&(contents[_ID_]=expectString(output[_ID_]));""===output.AllowedHeader?contents[_AHl]=[]:null!=output[_AH]&&(contents[_AHl]=de_AllowedHeaders(getArrayIfSingleItem(output[_AH])));""===output.AllowedMethod?contents[_AMl]=[]:null!=output[_AM]&&(contents[_AMl]=de_AllowedMethods(getArrayIfSingleItem(output[_AM])));""===output.AllowedOrigin?contents[_AOl]=[]:null!=output[_AO]&&(contents[_AOl]=de_AllowedOrigins(getArrayIfSingleItem(output[_AO])));""===output.ExposeHeader?contents[_EH]=[]:null!=output[_EHx]&&(contents[_EH]=de_ExposeHeaders(getArrayIfSingleItem(output[_EHx]),context2));null!=output[_MAS]&&(contents[_MAS]=strictParseInt32(output[_MAS]));return contents};de_CORSRules=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_CORSRule(entry,context2)));de_DefaultRetention=(output,context2)=>{const contents={};null!=output[_Mo]&&(contents[_Mo]=expectString(output[_Mo]));null!=output[_Da]&&(contents[_Da]=strictParseInt32(output[_Da]));null!=output[_Y]&&(contents[_Y]=strictParseInt32(output[_Y]));return contents};de_DeletedObject=(output,context2)=>{const contents={};null!=output[_K]&&(contents[_K]=expectString(output[_K]));null!=output[_VI]&&(contents[_VI]=expectString(output[_VI]));null!=output[_DM]&&(contents[_DM]=parseBoolean(output[_DM]));null!=output[_DMVI]&&(contents[_DMVI]=expectString(output[_DMVI]));return contents};de_DeletedObjects=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_DeletedObject(entry)));de_DeleteMarkerEntry=(output,context2)=>{const contents={};null!=output[_O]&&(contents[_O]=de_Owner(output[_O],context2));null!=output[_K]&&(contents[_K]=expectString(output[_K]));null!=output[_VI]&&(contents[_VI]=expectString(output[_VI]));null!=output[_IL]&&(contents[_IL]=parseBoolean(output[_IL]));null!=output[_LM]&&(contents[_LM]=expectNonNull(parseRfc3339DateTimeWithOffset(output[_LM])));return contents};de_DeleteMarkerReplication=(output,context2)=>{const contents={};null!=output[_S]&&(contents[_S]=expectString(output[_S]));return contents};de_DeleteMarkers=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_DeleteMarkerEntry(entry,context2)));de_Destination=(output,context2)=>{const contents={};null!=output[_B]&&(contents[_B]=expectString(output[_B]));null!=output[_Ac]&&(contents[_Ac]=expectString(output[_Ac]));null!=output[_SC]&&(contents[_SC]=expectString(output[_SC]));null!=output[_ACT]&&(contents[_ACT]=de_AccessControlTranslation(output[_ACT]));null!=output[_ECn]&&(contents[_ECn]=de_EncryptionConfiguration(output[_ECn],context2));null!=output[_RTe]&&(contents[_RTe]=de_ReplicationTime(output[_RTe],context2));null!=output[_Me]&&(contents[_Me]=de_Metrics(output[_Me],context2));return contents};de_EncryptionConfiguration=(output,context2)=>{const contents={};null!=output[_RKKID]&&(contents[_RKKID]=expectString(output[_RKKID]));return contents};de_EndEvent=(output,context2)=>({});de__Error=(output,context2)=>{const contents={};null!=output[_K]&&(contents[_K]=expectString(output[_K]));null!=output[_VI]&&(contents[_VI]=expectString(output[_VI]));null!=output[_Cod]&&(contents[_Cod]=expectString(output[_Cod]));null!=output[_Mes]&&(contents[_Mes]=expectString(output[_Mes]));return contents};de_ErrorDocument=(output,context2)=>{const contents={};null!=output[_K]&&(contents[_K]=expectString(output[_K]));return contents};de_Errors=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de__Error(entry)));de_EventBridgeConfiguration=(output,context2)=>({});de_EventList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>expectString(entry)));de_ExistingObjectReplication=(output,context2)=>{const contents={};null!=output[_S]&&(contents[_S]=expectString(output[_S]));return contents};de_ExposeHeaders=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>expectString(entry)));de_FilterRule=(output,context2)=>{const contents={};null!=output[_N]&&(contents[_N]=expectString(output[_N]));null!=output[_Va]&&(contents[_Va]=expectString(output[_Va]));return contents};de_FilterRuleList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_FilterRule(entry)));de_GetObjectAttributesParts=(output,context2)=>{const contents={};null!=output[_PC]&&(contents[_TPC]=strictParseInt32(output[_PC]));null!=output[_PNM]&&(contents[_PNM]=expectString(output[_PNM]));null!=output[_NPNM]&&(contents[_NPNM]=expectString(output[_NPNM]));null!=output[_MP]&&(contents[_MP]=strictParseInt32(output[_MP]));null!=output[_IT]&&(contents[_IT]=parseBoolean(output[_IT]));""===output.Part?contents[_Part]=[]:null!=output[_Par]&&(contents[_Part]=de_PartsList(getArrayIfSingleItem(output[_Par]),context2));return contents};de_Grant=(output,context2)=>{const contents={};null!=output[_Gra]&&(contents[_Gra]=de_Grantee(output[_Gra],context2));null!=output[_Pe]&&(contents[_Pe]=expectString(output[_Pe]));return contents};de_Grantee=(output,context2)=>{const contents={};null!=output[_DN]&&(contents[_DN]=expectString(output[_DN]));null!=output[_EA]&&(contents[_EA]=expectString(output[_EA]));null!=output[_ID_]&&(contents[_ID_]=expectString(output[_ID_]));null!=output[_URI]&&(contents[_URI]=expectString(output[_URI]));null!=output[_x]&&(contents[_Ty]=expectString(output[_x]));return contents};de_Grants=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_Grant(entry,context2)));de_IndexDocument=(output,context2)=>{const contents={};null!=output[_Su]&&(contents[_Su]=expectString(output[_Su]));return contents};de_Initiator=(output,context2)=>{const contents={};null!=output[_ID_]&&(contents[_ID_]=expectString(output[_ID_]));null!=output[_DN]&&(contents[_DN]=expectString(output[_DN]));return contents};de_IntelligentTieringAndOperator=(output,context2)=>{const contents={};null!=output[_P]&&(contents[_P]=expectString(output[_P]));""===output.Tag?contents[_Tag]=[]:null!=output[_Ta]&&(contents[_Tag]=de_TagSet(getArrayIfSingleItem(output[_Ta]),context2));return contents};de_IntelligentTieringConfiguration=(output,context2)=>{const contents={};null!=output[_I]&&(contents[_I]=expectString(output[_I]));null!=output[_F]&&(contents[_F]=de_IntelligentTieringFilter(output[_F],context2));null!=output[_S]&&(contents[_S]=expectString(output[_S]));""===output.Tiering?contents[_Tie]=[]:null!=output[_Tier]&&(contents[_Tie]=de_TieringList(getArrayIfSingleItem(output[_Tier]),context2));return contents};de_IntelligentTieringConfigurationList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_IntelligentTieringConfiguration(entry,context2)));de_IntelligentTieringFilter=(output,context2)=>{const contents={};null!=output[_P]&&(contents[_P]=expectString(output[_P]));null!=output[_Ta]&&(contents[_Ta]=de_Tag(output[_Ta],context2));null!=output[_A]&&(contents[_A]=de_IntelligentTieringAndOperator(output[_A],context2));return contents};de_InventoryConfiguration=(output,context2)=>{const contents={};null!=output[_Des]&&(contents[_Des]=de_InventoryDestination(output[_Des],context2));null!=output[_IE]&&(contents[_IE]=parseBoolean(output[_IE]));null!=output[_F]&&(contents[_F]=de_InventoryFilter(output[_F],context2));null!=output[_I]&&(contents[_I]=expectString(output[_I]));null!=output[_IOV]&&(contents[_IOV]=expectString(output[_IOV]));""===output.OptionalFields?contents[_OF]=[]:null!=output[_OF]&&null!=output[_OF][_Fi]&&(contents[_OF]=de_InventoryOptionalFields(getArrayIfSingleItem(output[_OF][_Fi]),context2));null!=output[_Sc]&&(contents[_Sc]=de_InventorySchedule(output[_Sc],context2));return contents};de_InventoryConfigurationList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_InventoryConfiguration(entry,context2)));de_InventoryDestination=(output,context2)=>{const contents={};null!=output[_SBD]&&(contents[_SBD]=de_InventoryS3BucketDestination(output[_SBD],context2));return contents};de_InventoryEncryption=(output,context2)=>{const contents={};null!=output[_SS]&&(contents[_SSES]=de_SSES3(output[_SS],context2));null!=output[_SK]&&(contents[_SSEKMS]=de_SSEKMS(output[_SK],context2));return contents};de_InventoryFilter=(output,context2)=>{const contents={};null!=output[_P]&&(contents[_P]=expectString(output[_P]));return contents};de_InventoryOptionalFields=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>expectString(entry)));de_InventoryS3BucketDestination=(output,context2)=>{const contents={};null!=output[_AIc]&&(contents[_AIc]=expectString(output[_AIc]));null!=output[_B]&&(contents[_B]=expectString(output[_B]));null!=output[_Fo]&&(contents[_Fo]=expectString(output[_Fo]));null!=output[_P]&&(contents[_P]=expectString(output[_P]));null!=output[_En]&&(contents[_En]=de_InventoryEncryption(output[_En],context2));return contents};de_InventorySchedule=(output,context2)=>{const contents={};null!=output[_Fr]&&(contents[_Fr]=expectString(output[_Fr]));return contents};de_LambdaFunctionConfiguration=(output,context2)=>{const contents={};null!=output[_I]&&(contents[_I]=expectString(output[_I]));null!=output[_CF]&&(contents[_LFA]=expectString(output[_CF]));""===output.Event?contents[_Eve]=[]:null!=output[_Ev]&&(contents[_Eve]=de_EventList(getArrayIfSingleItem(output[_Ev])));null!=output[_F]&&(contents[_F]=de_NotificationConfigurationFilter(output[_F],context2));return contents};de_LambdaFunctionConfigurationList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_LambdaFunctionConfiguration(entry,context2)));de_LifecycleExpiration=(output,context2)=>{const contents={};null!=output[_Dat]&&(contents[_Dat]=expectNonNull(parseRfc3339DateTimeWithOffset(output[_Dat])));null!=output[_Da]&&(contents[_Da]=strictParseInt32(output[_Da]));null!=output[_EODM]&&(contents[_EODM]=parseBoolean(output[_EODM]));return contents};de_LifecycleRule=(output,context2)=>{const contents={};null!=output[_Exp]&&(contents[_Exp]=de_LifecycleExpiration(output[_Exp]));null!=output[_ID_]&&(contents[_ID_]=expectString(output[_ID_]));null!=output[_P]&&(contents[_P]=expectString(output[_P]));""===output.Filter||null!=output[_F]&&(contents[_F]=de_LifecycleRuleFilter(expectUnion(output[_F]),context2));null!=output[_S]&&(contents[_S]=expectString(output[_S]));""===output.Transition?contents[_Tr]=[]:null!=output[_Tra]&&(contents[_Tr]=de_TransitionList(getArrayIfSingleItem(output[_Tra]),context2));""===output.NoncurrentVersionTransition?contents[_NVT]=[]:null!=output[_NVTo]&&(contents[_NVT]=de_NoncurrentVersionTransitionList(getArrayIfSingleItem(output[_NVTo]),context2));null!=output[_NVE]&&(contents[_NVE]=de_NoncurrentVersionExpiration(output[_NVE],context2));null!=output[_AIMU]&&(contents[_AIMU]=de_AbortIncompleteMultipartUpload(output[_AIMU]));return contents};de_LifecycleRuleAndOperator=(output,context2)=>{const contents={};null!=output[_P]&&(contents[_P]=expectString(output[_P]));""===output.Tag?contents[_Tag]=[]:null!=output[_Ta]&&(contents[_Tag]=de_TagSet(getArrayIfSingleItem(output[_Ta]),context2));null!=output[_OSGT]&&(contents[_OSGT]=strictParseLong(output[_OSGT]));null!=output[_OSLT]&&(contents[_OSLT]=strictParseLong(output[_OSLT]));return contents};de_LifecycleRuleFilter=(output,context2)=>null!=output[_P]?{Prefix:expectString(output[_P])}:null!=output[_Ta]?{Tag:de_Tag(output[_Ta],context2)}:null!=output[_OSGT]?{ObjectSizeGreaterThan:strictParseLong(output[_OSGT])}:null!=output[_OSLT]?{ObjectSizeLessThan:strictParseLong(output[_OSLT])}:null!=output[_A]?{And:de_LifecycleRuleAndOperator(output[_A],context2)}:{$unknown:Object.entries(output)[0]};de_LifecycleRules=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_LifecycleRule(entry,context2)));de_LoggingEnabled=(output,context2)=>{const contents={};null!=output[_TB]&&(contents[_TB]=expectString(output[_TB]));""===output.TargetGrants?contents[_TG]=[]:null!=output[_TG]&&null!=output[_TG][_G]&&(contents[_TG]=de_TargetGrants(getArrayIfSingleItem(output[_TG][_G]),context2));null!=output[_TP]&&(contents[_TP]=expectString(output[_TP]));null!=output[_TOKF]&&(contents[_TOKF]=de_TargetObjectKeyFormat(output[_TOKF],context2));return contents};de_Metrics=(output,context2)=>{const contents={};null!=output[_S]&&(contents[_S]=expectString(output[_S]));null!=output[_ETv]&&(contents[_ETv]=de_ReplicationTimeValue(output[_ETv],context2));return contents};de_MetricsAndOperator=(output,context2)=>{const contents={};null!=output[_P]&&(contents[_P]=expectString(output[_P]));""===output.Tag?contents[_Tag]=[]:null!=output[_Ta]&&(contents[_Tag]=de_TagSet(getArrayIfSingleItem(output[_Ta]),context2));null!=output[_APAc]&&(contents[_APAc]=expectString(output[_APAc]));return contents};de_MetricsConfiguration=(output,context2)=>{const contents={};null!=output[_I]&&(contents[_I]=expectString(output[_I]));""===output.Filter||null!=output[_F]&&(contents[_F]=de_MetricsFilter(expectUnion(output[_F]),context2));return contents};de_MetricsConfigurationList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_MetricsConfiguration(entry,context2)));de_MetricsFilter=(output,context2)=>null!=output[_P]?{Prefix:expectString(output[_P])}:null!=output[_Ta]?{Tag:de_Tag(output[_Ta],context2)}:null!=output[_APAc]?{AccessPointArn:expectString(output[_APAc])}:null!=output[_A]?{And:de_MetricsAndOperator(output[_A],context2)}:{$unknown:Object.entries(output)[0]};de_MultipartUpload=(output,context2)=>{const contents={};null!=output[_UI]&&(contents[_UI]=expectString(output[_UI]));null!=output[_K]&&(contents[_K]=expectString(output[_K]));null!=output[_Ini]&&(contents[_Ini]=expectNonNull(parseRfc3339DateTimeWithOffset(output[_Ini])));null!=output[_SC]&&(contents[_SC]=expectString(output[_SC]));null!=output[_O]&&(contents[_O]=de_Owner(output[_O],context2));null!=output[_In]&&(contents[_In]=de_Initiator(output[_In],context2));null!=output[_CA]&&(contents[_CA]=expectString(output[_CA]));return contents};de_MultipartUploadList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_MultipartUpload(entry,context2)));de_NoncurrentVersionExpiration=(output,context2)=>{const contents={};null!=output[_ND]&&(contents[_ND]=strictParseInt32(output[_ND]));null!=output[_NNV]&&(contents[_NNV]=strictParseInt32(output[_NNV]));return contents};de_NoncurrentVersionTransition=(output,context2)=>{const contents={};null!=output[_ND]&&(contents[_ND]=strictParseInt32(output[_ND]));null!=output[_SC]&&(contents[_SC]=expectString(output[_SC]));null!=output[_NNV]&&(contents[_NNV]=strictParseInt32(output[_NNV]));return contents};de_NoncurrentVersionTransitionList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_NoncurrentVersionTransition(entry)));de_NotificationConfigurationFilter=(output,context2)=>{const contents={};null!=output[_SKe]&&(contents[_K]=de_S3KeyFilter(output[_SKe],context2));return contents};de__Object=(output,context2)=>{const contents={};null!=output[_K]&&(contents[_K]=expectString(output[_K]));null!=output[_LM]&&(contents[_LM]=expectNonNull(parseRfc3339DateTimeWithOffset(output[_LM])));null!=output[_ETa]&&(contents[_ETa]=expectString(output[_ETa]));""===output.ChecksumAlgorithm?contents[_CA]=[]:null!=output[_CA]&&(contents[_CA]=de_ChecksumAlgorithmList(getArrayIfSingleItem(output[_CA])));null!=output[_Si]&&(contents[_Si]=strictParseLong(output[_Si]));null!=output[_SC]&&(contents[_SC]=expectString(output[_SC]));null!=output[_O]&&(contents[_O]=de_Owner(output[_O],context2));null!=output[_RSe]&&(contents[_RSe]=de_RestoreStatus(output[_RSe],context2));return contents};de_ObjectList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de__Object(entry,context2)));de_ObjectLockConfiguration=(output,context2)=>{const contents={};null!=output[_OLE]&&(contents[_OLE]=expectString(output[_OLE]));null!=output[_Ru]&&(contents[_Ru]=de_ObjectLockRule(output[_Ru],context2));return contents};de_ObjectLockLegalHold=(output,context2)=>{const contents={};null!=output[_S]&&(contents[_S]=expectString(output[_S]));return contents};de_ObjectLockRetention=(output,context2)=>{const contents={};null!=output[_Mo]&&(contents[_Mo]=expectString(output[_Mo]));null!=output[_RUD]&&(contents[_RUD]=expectNonNull(parseRfc3339DateTimeWithOffset(output[_RUD])));return contents};de_ObjectLockRule=(output,context2)=>{const contents={};null!=output[_DRe]&&(contents[_DRe]=de_DefaultRetention(output[_DRe]));return contents};de_ObjectPart=(output,context2)=>{const contents={};null!=output[_PN]&&(contents[_PN]=strictParseInt32(output[_PN]));null!=output[_Si]&&(contents[_Si]=strictParseLong(output[_Si]));null!=output[_CCRC]&&(contents[_CCRC]=expectString(output[_CCRC]));null!=output[_CCRCC]&&(contents[_CCRCC]=expectString(output[_CCRCC]));null!=output[_CSHA]&&(contents[_CSHA]=expectString(output[_CSHA]));null!=output[_CSHAh]&&(contents[_CSHAh]=expectString(output[_CSHAh]));return contents};de_ObjectVersion=(output,context2)=>{const contents={};null!=output[_ETa]&&(contents[_ETa]=expectString(output[_ETa]));""===output.ChecksumAlgorithm?contents[_CA]=[]:null!=output[_CA]&&(contents[_CA]=de_ChecksumAlgorithmList(getArrayIfSingleItem(output[_CA])));null!=output[_Si]&&(contents[_Si]=strictParseLong(output[_Si]));null!=output[_SC]&&(contents[_SC]=expectString(output[_SC]));null!=output[_K]&&(contents[_K]=expectString(output[_K]));null!=output[_VI]&&(contents[_VI]=expectString(output[_VI]));null!=output[_IL]&&(contents[_IL]=parseBoolean(output[_IL]));null!=output[_LM]&&(contents[_LM]=expectNonNull(parseRfc3339DateTimeWithOffset(output[_LM])));null!=output[_O]&&(contents[_O]=de_Owner(output[_O],context2));null!=output[_RSe]&&(contents[_RSe]=de_RestoreStatus(output[_RSe],context2));return contents};de_ObjectVersionList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_ObjectVersion(entry,context2)));de_Owner=(output,context2)=>{const contents={};null!=output[_DN]&&(contents[_DN]=expectString(output[_DN]));null!=output[_ID_]&&(contents[_ID_]=expectString(output[_ID_]));return contents};de_OwnershipControls=(output,context2)=>{const contents={};""===output.Rule?contents[_Rul]=[]:null!=output[_Ru]&&(contents[_Rul]=de_OwnershipControlsRules(getArrayIfSingleItem(output[_Ru]),context2));return contents};de_OwnershipControlsRule=(output,context2)=>{const contents={};null!=output[_OO]&&(contents[_OO]=expectString(output[_OO]));return contents};de_OwnershipControlsRules=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_OwnershipControlsRule(entry)));de_Part=(output,context2)=>{const contents={};null!=output[_PN]&&(contents[_PN]=strictParseInt32(output[_PN]));null!=output[_LM]&&(contents[_LM]=expectNonNull(parseRfc3339DateTimeWithOffset(output[_LM])));null!=output[_ETa]&&(contents[_ETa]=expectString(output[_ETa]));null!=output[_Si]&&(contents[_Si]=strictParseLong(output[_Si]));null!=output[_CCRC]&&(contents[_CCRC]=expectString(output[_CCRC]));null!=output[_CCRCC]&&(contents[_CCRCC]=expectString(output[_CCRCC]));null!=output[_CSHA]&&(contents[_CSHA]=expectString(output[_CSHA]));null!=output[_CSHAh]&&(contents[_CSHAh]=expectString(output[_CSHAh]));return contents};de_PartitionedPrefix=(output,context2)=>{const contents={};null!=output[_PDS]&&(contents[_PDS]=expectString(output[_PDS]));return contents};de_Parts=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_Part(entry)));de_PartsList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_ObjectPart(entry)));de_PolicyStatus=(output,context2)=>{const contents={};null!=output[_IP]&&(contents[_IP]=parseBoolean(output[_IP]));return contents};de_Progress=(output,context2)=>{const contents={};null!=output[_BS]&&(contents[_BS]=strictParseLong(output[_BS]));null!=output[_BP]&&(contents[_BP]=strictParseLong(output[_BP]));null!=output[_BRy]&&(contents[_BRy]=strictParseLong(output[_BRy]));return contents};de_PublicAccessBlockConfiguration=(output,context2)=>{const contents={};null!=output[_BPA]&&(contents[_BPA]=parseBoolean(output[_BPA]));null!=output[_IPA]&&(contents[_IPA]=parseBoolean(output[_IPA]));null!=output[_BPP]&&(contents[_BPP]=parseBoolean(output[_BPP]));null!=output[_RPB]&&(contents[_RPB]=parseBoolean(output[_RPB]));return contents};de_QueueConfiguration=(output,context2)=>{const contents={};null!=output[_I]&&(contents[_I]=expectString(output[_I]));null!=output[_Qu]&&(contents[_QA]=expectString(output[_Qu]));""===output.Event?contents[_Eve]=[]:null!=output[_Ev]&&(contents[_Eve]=de_EventList(getArrayIfSingleItem(output[_Ev])));null!=output[_F]&&(contents[_F]=de_NotificationConfigurationFilter(output[_F],context2));return contents};de_QueueConfigurationList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_QueueConfiguration(entry,context2)));de_Redirect=(output,context2)=>{const contents={};null!=output[_HN]&&(contents[_HN]=expectString(output[_HN]));null!=output[_HRC]&&(contents[_HRC]=expectString(output[_HRC]));null!=output[_Pr]&&(contents[_Pr]=expectString(output[_Pr]));null!=output[_RKPW]&&(contents[_RKPW]=expectString(output[_RKPW]));null!=output[_RKW]&&(contents[_RKW]=expectString(output[_RKW]));return contents};de_RedirectAllRequestsTo=(output,context2)=>{const contents={};null!=output[_HN]&&(contents[_HN]=expectString(output[_HN]));null!=output[_Pr]&&(contents[_Pr]=expectString(output[_Pr]));return contents};de_ReplicaModifications=(output,context2)=>{const contents={};null!=output[_S]&&(contents[_S]=expectString(output[_S]));return contents};de_ReplicationConfiguration=(output,context2)=>{const contents={};null!=output[_Ro]&&(contents[_Ro]=expectString(output[_Ro]));""===output.Rule?contents[_Rul]=[]:null!=output[_Ru]&&(contents[_Rul]=de_ReplicationRules(getArrayIfSingleItem(output[_Ru]),context2));return contents};de_ReplicationRule=(output,context2)=>{const contents={};null!=output[_ID_]&&(contents[_ID_]=expectString(output[_ID_]));null!=output[_Pri]&&(contents[_Pri]=strictParseInt32(output[_Pri]));null!=output[_P]&&(contents[_P]=expectString(output[_P]));""===output.Filter||null!=output[_F]&&(contents[_F]=de_ReplicationRuleFilter(expectUnion(output[_F]),context2));null!=output[_S]&&(contents[_S]=expectString(output[_S]));null!=output[_SSC]&&(contents[_SSC]=de_SourceSelectionCriteria(output[_SSC],context2));null!=output[_EOR]&&(contents[_EOR]=de_ExistingObjectReplication(output[_EOR]));null!=output[_Des]&&(contents[_Des]=de_Destination(output[_Des],context2));null!=output[_DMR]&&(contents[_DMR]=de_DeleteMarkerReplication(output[_DMR]));return contents};de_ReplicationRuleAndOperator=(output,context2)=>{const contents={};null!=output[_P]&&(contents[_P]=expectString(output[_P]));""===output.Tag?contents[_Tag]=[]:null!=output[_Ta]&&(contents[_Tag]=de_TagSet(getArrayIfSingleItem(output[_Ta]),context2));return contents};de_ReplicationRuleFilter=(output,context2)=>null!=output[_P]?{Prefix:expectString(output[_P])}:null!=output[_Ta]?{Tag:de_Tag(output[_Ta],context2)}:null!=output[_A]?{And:de_ReplicationRuleAndOperator(output[_A],context2)}:{$unknown:Object.entries(output)[0]};de_ReplicationRules=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_ReplicationRule(entry,context2)));de_ReplicationTime=(output,context2)=>{const contents={};null!=output[_S]&&(contents[_S]=expectString(output[_S]));null!=output[_Tim]&&(contents[_Tim]=de_ReplicationTimeValue(output[_Tim],context2));return contents};de_ReplicationTimeValue=(output,context2)=>{const contents={};null!=output[_Mi]&&(contents[_Mi]=strictParseInt32(output[_Mi]));return contents};de_RestoreStatus=(output,context2)=>{const contents={};null!=output[_IRIP]&&(contents[_IRIP]=parseBoolean(output[_IRIP]));null!=output[_RED]&&(contents[_RED]=expectNonNull(parseRfc3339DateTimeWithOffset(output[_RED])));return contents};de_RoutingRule=(output,context2)=>{const contents={};null!=output[_Con]&&(contents[_Con]=de_Condition(output[_Con]));null!=output[_Red]&&(contents[_Red]=de_Redirect(output[_Red]));return contents};de_RoutingRules=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_RoutingRule(entry)));de_S3KeyFilter=(output,context2)=>{const contents={};""===output.FilterRule?contents[_FRi]=[]:null!=output[_FR]&&(contents[_FRi]=de_FilterRuleList(getArrayIfSingleItem(output[_FR])));return contents};de_ServerSideEncryptionByDefault=(output,context2)=>{const contents={};null!=output[_SSEA]&&(contents[_SSEA]=expectString(output[_SSEA]));null!=output[_KMSMKID]&&(contents[_KMSMKID]=expectString(output[_KMSMKID]));return contents};de_ServerSideEncryptionConfiguration=(output,context2)=>{const contents={};""===output.Rule?contents[_Rul]=[]:null!=output[_Ru]&&(contents[_Rul]=de_ServerSideEncryptionRules(getArrayIfSingleItem(output[_Ru]),context2));return contents};de_ServerSideEncryptionRule=(output,context2)=>{const contents={};null!=output[_ASSEBD]&&(contents[_ASSEBD]=de_ServerSideEncryptionByDefault(output[_ASSEBD]));null!=output[_BKE]&&(contents[_BKE]=parseBoolean(output[_BKE]));return contents};de_ServerSideEncryptionRules=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_ServerSideEncryptionRule(entry)));de_SessionCredentials=(output,context2)=>{const contents={};null!=output[_AKI]&&(contents[_AKI]=expectString(output[_AKI]));null!=output[_SAK]&&(contents[_SAK]=expectString(output[_SAK]));null!=output[_ST]&&(contents[_ST]=expectString(output[_ST]));null!=output[_Exp]&&(contents[_Exp]=expectNonNull(parseRfc3339DateTimeWithOffset(output[_Exp])));return contents};de_SourceSelectionCriteria=(output,context2)=>{const contents={};null!=output[_SKEO]&&(contents[_SKEO]=de_SseKmsEncryptedObjects(output[_SKEO],context2));null!=output[_RM]&&(contents[_RM]=de_ReplicaModifications(output[_RM]));return contents};de_SSEKMS=(output,context2)=>{const contents={};null!=output[_KI]&&(contents[_KI]=expectString(output[_KI]));return contents};de_SseKmsEncryptedObjects=(output,context2)=>{const contents={};null!=output[_S]&&(contents[_S]=expectString(output[_S]));return contents};de_SSES3=(output,context2)=>({});de_Stats=(output,context2)=>{const contents={};null!=output[_BS]&&(contents[_BS]=strictParseLong(output[_BS]));null!=output[_BP]&&(contents[_BP]=strictParseLong(output[_BP]));null!=output[_BRy]&&(contents[_BRy]=strictParseLong(output[_BRy]));return contents};de_StorageClassAnalysis=(output,context2)=>{const contents={};null!=output[_DE]&&(contents[_DE]=de_StorageClassAnalysisDataExport(output[_DE],context2));return contents};de_StorageClassAnalysisDataExport=(output,context2)=>{const contents={};null!=output[_OSV]&&(contents[_OSV]=expectString(output[_OSV]));null!=output[_Des]&&(contents[_Des]=de_AnalyticsExportDestination(output[_Des],context2));return contents};de_Tag=(output,context2)=>{const contents={};null!=output[_K]&&(contents[_K]=expectString(output[_K]));null!=output[_Va]&&(contents[_Va]=expectString(output[_Va]));return contents};de_TagSet=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_Tag(entry,context2)));de_TargetGrant=(output,context2)=>{const contents={};null!=output[_Gra]&&(contents[_Gra]=de_Grantee(output[_Gra],context2));null!=output[_Pe]&&(contents[_Pe]=expectString(output[_Pe]));return contents};de_TargetGrants=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_TargetGrant(entry,context2)));de_TargetObjectKeyFormat=(output,context2)=>{const contents={};null!=output[_SPi]&&(contents[_SPi]=(output[_SPi],{}));null!=output[_PP]&&(contents[_PP]=de_PartitionedPrefix(output[_PP]));return contents};de_Tiering=(output,context2)=>{const contents={};null!=output[_Da]&&(contents[_Da]=strictParseInt32(output[_Da]));null!=output[_AT]&&(contents[_AT]=expectString(output[_AT]));return contents};de_TieringList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_Tiering(entry)));de_TopicConfiguration=(output,context2)=>{const contents={};null!=output[_I]&&(contents[_I]=expectString(output[_I]));null!=output[_Top]&&(contents[_TA]=expectString(output[_Top]));""===output.Event?contents[_Eve]=[]:null!=output[_Ev]&&(contents[_Eve]=de_EventList(getArrayIfSingleItem(output[_Ev])));null!=output[_F]&&(contents[_F]=de_NotificationConfigurationFilter(output[_F],context2));return contents};de_TopicConfigurationList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_TopicConfiguration(entry,context2)));de_Transition=(output,context2)=>{const contents={};null!=output[_Dat]&&(contents[_Dat]=expectNonNull(parseRfc3339DateTimeWithOffset(output[_Dat])));null!=output[_Da]&&(contents[_Da]=strictParseInt32(output[_Da]));null!=output[_SC]&&(contents[_SC]=expectString(output[_SC]));return contents};de_TransitionList=(output,context2)=>(output||[]).filter((e3=>null!=e3)).map((entry=>de_Transition(entry)));deserializeMetadata2=output=>{var _a7,_b3;return{httpStatusCode:output.statusCode,requestId:null!=(_b3=null!=(_a7=output.headers["x-amzn-requestid"])?_a7:output.headers["x-amzn-request-id"])?_b3:output.headers["x-amz-request-id"],extendedRequestId:output.headers["x-amz-id-2"],cfId:output.headers["x-amz-cf-id"]}};collectBodyString2=(streamBody,context2)=>collectBody(streamBody,context2).then((body=>context2.utf8Encoder(body)));isSerializableHeaderValue=value=>!(null==value||""===value||Object.getOwnPropertyNames(value).includes("length")&&0==value.length||Object.getOwnPropertyNames(value).includes("size")&&0==value.size);_A="And";_AAO="AnalyticsAndOperator";_AC="AnalyticsConfiguration";_ACL="ACL";_ACLc="AccessControlList";_ACLn="AnalyticsConfigurationList";_ACP="AccessControlPolicy";_ACT="AccessControlTranslation";_ACc="AccelerateConfiguration";_AD="AbortDate";_AED="AnalyticsExportDestination";_AF="AnalyticsFilter";_AH="AllowedHeader";_AHl="AllowedHeaders";_AI="AnalyticsId";_AIMU="AbortIncompleteMultipartUpload";_AIc="AccountId";_AKI="AccessKeyId";_AM="AllowedMethod";_AMl="AllowedMethods";_AO="AllowedOrigin";_AOl="AllowedOrigins";_APA="AccessPointAlias";_APAc="AccessPointArn";_AQRD="AllowQuotedRecordDelimiter";_AR="AcceptRanges";_ARI="AbortRuleId";_AS="ArchiveStatus";_ASBD="AnalyticsS3BucketDestination";_ASEFF="AnalyticsS3ExportFileFormat";_ASSEBD="ApplyServerSideEncryptionByDefault";_AT="AccessTier";_Ac="Account";_B="Bucket";_BAI="BucketAccountId";_BAS="BucketAccelerateStatus";_BGR="BypassGovernanceRetention";_BI="BucketInfo";_BKE="BucketKeyEnabled";_BLC="BucketLifecycleConfiguration";_BLCu="BucketLocationConstraint";_BLN="BucketLocationName";_BLP="BucketLogsPermission";_BLS="BucketLoggingStatus";_BLT="BucketLocationType";_BN="BucketName";_BP="BytesProcessed";_BPA="BlockPublicAcls";_BPP="BlockPublicPolicy";_BR="BucketRegion";_BRy="BytesReturned";_BS="BytesScanned";_BT="BucketType";_BVS="BucketVersioningStatus";_Bu="Buckets";_C="Credentials";_CA="ChecksumAlgorithm";_CACL="CannedACL";_CBC="CreateBucketConfiguration";_CC="CacheControl";_CCRC="ChecksumCRC32";_CCRCC="ChecksumCRC32C";_CD="ContentDisposition";_CDr="CreationDate";_CE="ContentEncoding";_CF="CloudFunction";_CFC="CloudFunctionConfiguration";_CL="ContentLanguage";_CLo="ContentLength";_CM="ChecksumMode";_CMD="ContentMD5";_CMU="CompletedMultipartUpload";_CORSC="CORSConfiguration";_CORSR="CORSRule";_CORSRu="CORSRules";_CP="CommonPrefixes";_CPo="CompletedPart";_CR="ContentRange";_CRSBA="ConfirmRemoveSelfBucketAccess";_CS="CopySource";_CSHA="ChecksumSHA1";_CSHAh="ChecksumSHA256";_CSIM="CopySourceIfMatch";_CSIMS="CopySourceIfModifiedSince";_CSINM="CopySourceIfNoneMatch";_CSIUS="CopySourceIfUnmodifiedSince";_CSR="CopySourceRange";_CSSSECA="CopySourceSSECustomerAlgorithm";_CSSSECK="CopySourceSSECustomerKey";_CSSSECKMD="CopySourceSSECustomerKeyMD5";_CSV="CSV";_CSVI="CopySourceVersionId";_CSVIn="CSVInput";_CSVO="CSVOutput";_CT="ContentType";_CTo="ContinuationToken";_CTom="CompressionType";_Ch="Checksum";_Co="Contents";_Cod="Code";_Com="Comments";_Con="Condition";_D="Delimiter";_DAI="DaysAfterInitiation";_DE="DataExport";_DM="DeleteMarker";_DMR="DeleteMarkerReplication";_DMRS="DeleteMarkerReplicationStatus";_DMVI="DeleteMarkerVersionId";_DMe="DeleteMarkers";_DN="DisplayName";_DR="DataRedundancy";_DRe="DefaultRetention";_Da="Days";_Dat="Date";_De="Deleted";_Del="Delete";_Des="Destination";_Desc="Description";_E="Expires";_EA="EmailAddress";_EBC="EventBridgeConfiguration";_EBO="ExpectedBucketOwner";_EC="ErrorCode";_ECn="EncryptionConfiguration";_ED="ErrorDocument";_EH="ExposeHeaders";_EHx="ExposeHeader";_EM="ErrorMessage";_EODM="ExpiredObjectDeleteMarker";_EOR="ExistingObjectReplication";_EORS="ExistingObjectReplicationStatus";_ERP="EnableRequestProgress";_ES="ExpiresString";_ESBO="ExpectedSourceBucketOwner";_ESx="ExpirationStatus";_ET="EncodingType";_ETa="ETag";_ETn="EncryptionType";_ETv="EventThreshold";_ETx="ExpressionType";_En="Encryption";_Ena="Enabled";_End="End";_Er="Error";_Err="Errors";_Ev="Event";_Eve="Events";_Ex="Expression";_Exp="Expiration";_F="Filter";_FD="FieldDelimiter";_FHI="FileHeaderInfo";_FO="FetchOwner";_FR="FilterRule";_FRN="FilterRuleName";_FRV="FilterRuleValue";_FRi="FilterRules";_Fi="Field";_Fo="Format";_Fr="Frequency";_G="Grant";_GFC="GrantFullControl";_GJP="GlacierJobParameters";_GR="GrantRead";_GRACP="GrantReadACP";_GW="GrantWrite";_GWACP="GrantWriteACP";_Gr="Grants";_Gra="Grantee";_HECRE="HttpErrorCodeReturnedEquals";_HN="HostName";_HRC="HttpRedirectCode";_I="Id";_IC="InventoryConfiguration";_ICL="InventoryConfigurationList";_ID="IndexDocument";_ID_="ID";_IDn="InventoryDestination";_IE="IsEnabled";_IEn="InventoryEncryption";_IF="InventoryFilter";_IFn="InventoryFormat";_IFnv="InventoryFrequency";_II="InventoryId";_IIOV="InventoryIncludedObjectVersions";_IL="IsLatest";_IM="IfMatch";_IMS="IfModifiedSince";_INM="IfNoneMatch";_IOF="InventoryOptionalField";_IOV="IncludedObjectVersions";_IP="IsPublic";_IPA="IgnorePublicAcls";_IRIP="IsRestoreInProgress";_IS="InputSerialization";_ISBD="InventoryS3BucketDestination";_ISn="InventorySchedule";_IT="IsTruncated";_ITAO="IntelligentTieringAndOperator";_ITAT="IntelligentTieringAccessTier";_ITC="IntelligentTieringConfiguration";_ITCL="IntelligentTieringConfigurationList";_ITD="IntelligentTieringDays";_ITF="IntelligentTieringFilter";_ITI="IntelligentTieringId";_ITS="IntelligentTieringStatus";_IUS="IfUnmodifiedSince";_In="Initiator";_Ini="Initiated";_JSON="JSON";_JSONI="JSONInput";_JSONO="JSONOutput";_JSONT="JSONType";_K="Key";_KC="KeyCount";_KI="KeyId";_KM="KeyMarker";_KMSC="KMSContext";_KMSKI="KMSKeyId";_KMSMKID="KMSMasterKeyID";_KPE="KeyPrefixEquals";_L="Location";_LC="LocationConstraint";_LE="LoggingEnabled";_LEi="LifecycleExpiration";_LFA="LambdaFunctionArn";_LFC="LambdaFunctionConfigurations";_LFCa="LambdaFunctionConfiguration";_LI="LocationInfo";_LM="LastModified";_LNAS="LocationNameAsString";_LP="LocationPrefix";_LR="LifecycleRule";_LRAO="LifecycleRuleAndOperator";_LRF="LifecycleRuleFilter";_LT="LocationType";_M="Marker";_MAO="MetricsAndOperator";_MAS="MaxAgeSeconds";_MB="MaxBuckets";_MC="MetricsConfiguration";_MCL="MetricsConfigurationList";_MD="MetadataDirective";_MDB="MaxDirectoryBuckets";_MDf="MfaDelete";_ME="MetadataEntry";_MF="MetricsFilter";_MFA="MFA";_MFAD="MFADelete";_MI="MetricsId";_MK="MaxKeys";_MKe="MetadataKey";_MM="MissingMeta";_MP="MaxParts";_MS="MetricsStatus";_MU="MaxUploads";_MV="MetadataValue";_Me="Metrics";_Mes="Message";_Mi="Minutes";_Mo="Mode";_N="Name";_NC="NotificationConfiguration";_NCF="NotificationConfigurationFilter";_NCT="NextContinuationToken";_ND="NoncurrentDays";_NI="NotificationId";_NKM="NextKeyMarker";_NM="NextMarker";_NNV="NewerNoncurrentVersions";_NPNM="NextPartNumberMarker";_NUIM="NextUploadIdMarker";_NVE="NoncurrentVersionExpiration";_NVIM="NextVersionIdMarker";_NVT="NoncurrentVersionTransitions";_NVTo="NoncurrentVersionTransition";_O="Owner";_OA="ObjectAttributes";_OC="OwnershipControls";_OCACL="ObjectCannedACL";_OCR="OwnershipControlsRule";_OF="OptionalFields";_OI="ObjectIdentifier";_OK="ObjectKey";_OL="OutputLocation";_OLC="ObjectLockConfiguration";_OLE="ObjectLockEnabled";_OLEFB="ObjectLockEnabledForBucket";_OLLH="ObjectLockLegalHold";_OLLHS="ObjectLockLegalHoldStatus";_OLM="ObjectLockMode";_OLR="ObjectLockRetention";_OLRM="ObjectLockRetentionMode";_OLRUD="ObjectLockRetainUntilDate";_OLRb="ObjectLockRule";_OO="ObjectOwnership";_OOA="OptionalObjectAttributes";_OOw="OwnerOverride";_OP="ObjectParts";_OS="OutputSerialization";_OSGT="ObjectSizeGreaterThan";_OSGTB="ObjectSizeGreaterThanBytes";_OSLT="ObjectSizeLessThan";_OSLTB="ObjectSizeLessThanBytes";_OSV="OutputSchemaVersion";_OSb="ObjectSize";_OVI="ObjectVersionId";_Ob="Objects";_P="Prefix";_PABC="PublicAccessBlockConfiguration";_PC="PartsCount";_PDS="PartitionDateSource";_PI="ParquetInput";_PN="PartNumber";_PNM="PartNumberMarker";_PP="PartitionedPrefix";_Pa="Payer";_Par="Part";_Parq="Parquet";_Part="Parts";_Pe="Permission";_Pr="Protocol";_Pri="Priority";_Q="Quiet";_QA="QueueArn";_QC="QueueConfiguration";_QCu="QueueConfigurations";_QCuo="QuoteCharacter";_QEC="QuoteEscapeCharacter";_QF="QuoteFields";_Qu="Queue";_R="Range";_RART="RedirectAllRequestsTo";_RC="RequestCharged";_RCC="ResponseCacheControl";_RCD="ResponseContentDisposition";_RCE="ResponseContentEncoding";_RCL="ResponseContentLanguage";_RCT="ResponseContentType";_RCe="ReplicationConfiguration";_RD="RecordDelimiter";_RE="ResponseExpires";_RED="RestoreExpiryDate";_RKKID="ReplicaKmsKeyID";_RKPW="ReplaceKeyPrefixWith";_RKW="ReplaceKeyWith";_RM="ReplicaModifications";_RMS="ReplicaModificationsStatus";_ROP="RestoreOutputPath";_RP="RequestPayer";_RPB="RestrictPublicBuckets";_RPC="RequestPaymentConfiguration";_RPe="RequestProgress";_RR="RequestRoute";_RRAO="ReplicationRuleAndOperator";_RRF="ReplicationRuleFilter";_RRS="ReplicationRuleStatus";_RRT="RestoreRequestType";_RRe="ReplicationRule";_RRes="RestoreRequest";_RRo="RoutingRules";_RRou="RoutingRule";_RS="ReplicationStatus";_RSe="RestoreStatus";_RT="RequestToken";_RTS="ReplicationTimeStatus";_RTV="ReplicationTimeValue";_RTe="ReplicationTime";_RUD="RetainUntilDate";_Re="Restore";_Red="Redirect";_Ro="Role";_Ru="Rule";_Rul="Rules";_S="Status";_SA="StartAfter";_SAK="SecretAccessKey";_SBD="S3BucketDestination";_SC="StorageClass";_SCA="StorageClassAnalysis";_SCADE="StorageClassAnalysisDataExport";_SCASV="StorageClassAnalysisSchemaVersion";_SCt="StatusCode";_SDV="SkipDestinationValidation";_SK="SSE-KMS";_SKEO="SseKmsEncryptedObjects";_SKEOS="SseKmsEncryptedObjectsStatus";_SKF="S3KeyFilter";_SKe="S3Key";_SL="S3Location";_SM="SessionMode";_SOCR="SelectObjectContentRequest";_SP="SelectParameters";_SPi="SimplePrefix";_SR="ScanRange";_SS="SSE-S3";_SSC="SourceSelectionCriteria";_SSE="ServerSideEncryption";_SSEA="SSEAlgorithm";_SSEBD="ServerSideEncryptionByDefault";_SSEC="ServerSideEncryptionConfiguration";_SSECA="SSECustomerAlgorithm";_SSECK="SSECustomerKey";_SSECKMD="SSECustomerKeyMD5";_SSEKMS="SSEKMS";_SSEKMSEC="SSEKMSEncryptionContext";_SSEKMSKI="SSEKMSKeyId";_SSER="ServerSideEncryptionRule";_SSES="SSES3";_ST="SessionToken";_S_="S3";_Sc="Schedule";_Se="Setting";_Si="Size";_St="Start";_Su="Suffix";_T="Tagging";_TA="TopicArn";_TB="TargetBucket";_TC="TagCount";_TCo="TopicConfiguration";_TCop="TopicConfigurations";_TD="TaggingDirective";_TG="TargetGrants";_TGa="TargetGrant";_TOKF="TargetObjectKeyFormat";_TP="TargetPrefix";_TPC="TotalPartsCount";_TS="TagSet";_TSC="TransitionStorageClass";_Ta="Tag";_Tag="Tags";_Ti="Tier";_Tie="Tierings";_Tier="Tiering";_Tim="Time";_To="Token";_Top="Topic";_Tr="Transitions";_Tra="Transition";_Ty="Type";_U="Upload";_UI="UploadId";_UIM="UploadIdMarker";_UM="UserMetadata";_URI="URI";_Up="Uploads";_V="Version";_VC="VersionCount";_VCe="VersioningConfiguration";_VI="VersionId";_VIM="VersionIdMarker";_Va="Value";_Ve="Versions";_WC="WebsiteConfiguration";_WRL="WebsiteRedirectLocation";_Y="Years";_a5="analytics";_ac="accelerate";_acl="acl";_ar="accept-ranges";_at="attributes";_c="cors";_cc="cache-control";_cd="content-disposition";_ce="content-encoding";_cl="content-language";_cl_="content-length";_cm="content-md5";_cr="content-range";_ct="content-type";_ct_="continuation-token";_d="delete";_de="delimiter";_e="expires";_en="encryption";_et="encoding-type";_eta="etag";_ex="expiresstring";_fo="fetch-owner";_i="id";_im="if-match";_ims="if-modified-since";_in="inventory";_inm="if-none-match";_it="intelligent-tiering";_ius="if-unmodified-since";_km="key-marker";_l="lifecycle";_lh="legal-hold";_lm="last-modified";_lo="location";_log="logging";_lt="list-type";_m="metrics";_ma="marker";_mb="max-buckets";_mdb="max-directory-buckets";_me="member";_mk="max-keys";_mp="max-parts";_mu="max-uploads";_n="notification";_oC="ownershipControls";_ol="object-lock";_p="policy";_pAB="publicAccessBlock";_pN="partNumber";_pS="policyStatus";_pnm="part-number-marker";_pr="prefix";_r="replication";_rP="requestPayment";_ra="range";_rcc="response-cache-control";_rcd="response-content-disposition";_rce="response-content-encoding";_rcl="response-content-language";_rct="response-content-type";_re="response-expires";_res="restore";_ret="retention";_s="session";_sa="start-after";_se="select";_st="select-type";_t="tagging";_to="torrent";_u="uploads";_uI="uploadId";_uim="upload-id-marker";_v="versioning";_vI="versionId";_ve='<?xml version="1.0" encoding="UTF-8"?>';_ver="versions";_vim="version-id-marker";_w="website";_x="xsi:type";_xaa="x-amz-acl";_xaad="x-amz-abort-date";_xaapa="x-amz-access-point-alias";_xaari="x-amz-abort-rule-id";_xaas="x-amz-archive-status";_xabgr="x-amz-bypass-governance-retention";_xabln="x-amz-bucket-location-name";_xablt="x-amz-bucket-location-type";_xabole="x-amz-bucket-object-lock-enabled";_xabolt="x-amz-bucket-object-lock-token";_xabr="x-amz-bucket-region";_xaca="x-amz-checksum-algorithm";_xacc="x-amz-checksum-crc32";_xacc_="x-amz-checksum-crc32c";_xacm="x-amz-checksum-mode";_xacrsba="x-amz-confirm-remove-self-bucket-access";_xacs="x-amz-checksum-sha1";_xacs_="x-amz-checksum-sha256";_xacs__="x-amz-copy-source";_xacsim="x-amz-copy-source-if-match";_xacsims="x-amz-copy-source-if-modified-since";_xacsinm="x-amz-copy-source-if-none-match";_xacsius="x-amz-copy-source-if-unmodified-since";_xacsm="x-amz-create-session-mode";_xacsr="x-amz-copy-source-range";_xacssseca="x-amz-copy-source-server-side-encryption-customer-algorithm";_xacssseck="x-amz-copy-source-server-side-encryption-customer-key";_xacssseckm="x-amz-copy-source-server-side-encryption-customer-key-md5";_xacsvi="x-amz-copy-source-version-id";_xadm="x-amz-delete-marker";_xae="x-amz-expiration";_xaebo="x-amz-expected-bucket-owner";_xafec="x-amz-fwd-error-code";_xafem="x-amz-fwd-error-message";_xafhar="x-amz-fwd-header-accept-ranges";_xafhcc="x-amz-fwd-header-cache-control";_xafhcd="x-amz-fwd-header-content-disposition";_xafhce="x-amz-fwd-header-content-encoding";_xafhcl="x-amz-fwd-header-content-language";_xafhcr="x-amz-fwd-header-content-range";_xafhct="x-amz-fwd-header-content-type";_xafhe="x-amz-fwd-header-etag";_xafhe_="x-amz-fwd-header-expires";_xafhlm="x-amz-fwd-header-last-modified";_xafhxacc="x-amz-fwd-header-x-amz-checksum-crc32";_xafhxacc_="x-amz-fwd-header-x-amz-checksum-crc32c";_xafhxacs="x-amz-fwd-header-x-amz-checksum-sha1";_xafhxacs_="x-amz-fwd-header-x-amz-checksum-sha256";_xafhxadm="x-amz-fwd-header-x-amz-delete-marker";_xafhxae="x-amz-fwd-header-x-amz-expiration";_xafhxamm="x-amz-fwd-header-x-amz-missing-meta";_xafhxampc="x-amz-fwd-header-x-amz-mp-parts-count";_xafhxaollh="x-amz-fwd-header-x-amz-object-lock-legal-hold";_xafhxaolm="x-amz-fwd-header-x-amz-object-lock-mode";_xafhxaolrud="x-amz-fwd-header-x-amz-object-lock-retain-until-date";_xafhxar="x-amz-fwd-header-x-amz-restore";_xafhxarc="x-amz-fwd-header-x-amz-request-charged";_xafhxars="x-amz-fwd-header-x-amz-replication-status";_xafhxasc="x-amz-fwd-header-x-amz-storage-class";_xafhxasse="x-amz-fwd-header-x-amz-server-side-encryption";_xafhxasseakki="x-amz-fwd-header-x-amz-server-side-encryption-aws-kms-key-id";_xafhxassebke="x-amz-fwd-header-x-amz-server-side-encryption-bucket-key-enabled";_xafhxasseca="x-amz-fwd-header-x-amz-server-side-encryption-customer-algorithm";_xafhxasseckm="x-amz-fwd-header-x-amz-server-side-encryption-customer-key-md5";_xafhxatc="x-amz-fwd-header-x-amz-tagging-count";_xafhxavi="x-amz-fwd-header-x-amz-version-id";_xafs="x-amz-fwd-status";_xagfc="x-amz-grant-full-control";_xagr="x-amz-grant-read";_xagra="x-amz-grant-read-acp";_xagw="x-amz-grant-write";_xagwa="x-amz-grant-write-acp";_xam="x-amz-mfa";_xamd="x-amz-metadata-directive";_xamm="x-amz-missing-meta";_xamp="x-amz-max-parts";_xampc="x-amz-mp-parts-count";_xaoa="x-amz-object-attributes";_xaollh="x-amz-object-lock-legal-hold";_xaolm="x-amz-object-lock-mode";_xaolrud="x-amz-object-lock-retain-until-date";_xaoo="x-amz-object-ownership";_xaooa="x-amz-optional-object-attributes";_xapnm="x-amz-part-number-marker";_xar="x-amz-restore";_xarc="x-amz-request-charged";_xarop="x-amz-restore-output-path";_xarp="x-amz-request-payer";_xarr="x-amz-request-route";_xars="x-amz-replication-status";_xart="x-amz-request-token";_xasc="x-amz-storage-class";_xasca="x-amz-sdk-checksum-algorithm";_xasdv="x-amz-skip-destination-validation";_xasebo="x-amz-source-expected-bucket-owner";_xasse="x-amz-server-side-encryption";_xasseakki="x-amz-server-side-encryption-aws-kms-key-id";_xassebke="x-amz-server-side-encryption-bucket-key-enabled";_xassec="x-amz-server-side-encryption-context";_xasseca="x-amz-server-side-encryption-customer-algorithm";_xasseck="x-amz-server-side-encryption-customer-key";_xasseckm="x-amz-server-side-encryption-customer-key-md5";_xat="x-amz-tagging";_xatc="x-amz-tagging-count";_xatd="x-amz-tagging-directive";_xavi="x-amz-version-id";_xawrl="x-amz-website-redirect-location";_xi="x-id";CreateSessionCommand=class extends(Command.classBuilder().ep({...commonParams,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","CreateSession",{}).n("S3Client","CreateSessionCommand").f(void 0,CreateSessionOutputFilterSensitiveLog).ser(se_CreateSessionCommand).de(de_CreateSessionCommand).build()){};fromUtf82=input=>(new TextEncoder).encode(input);SHA_1_HMAC_ALGO={name:"HMAC",hash:SHA_1_HASH={name:"SHA-1"}};EMPTY_DATA_SHA_1=new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9]);fallbackWindow={};Sha1=function(){function Sha13(secret){this.toHash=new Uint8Array(0);if(void 0!==secret){this.key=new Promise((function(resolve,reject){locateWindow().crypto.subtle.importKey("raw",convertToBuffer(secret),SHA_1_HMAC_ALGO,!1,["sign"]).then(resolve,reject)}));this.key.catch((function(){}))}}Sha13.prototype.update=function(data){var update2,typedArray;if(!isEmptyData(data)){update2=convertToBuffer(data);(typedArray=new Uint8Array(this.toHash.byteLength+update2.byteLength)).set(this.toHash,0);typedArray.set(update2,this.toHash.byteLength);this.toHash=typedArray}};Sha13.prototype.digest=function(){var _this=this;return this.key?this.key.then((function(key2){return locateWindow().crypto.subtle.sign(SHA_1_HMAC_ALGO,key2,_this.toHash).then((function(data){return new Uint8Array(data)}))})):isEmptyData(this.toHash)?Promise.resolve(EMPTY_DATA_SHA_1):Promise.resolve().then((function(){return locateWindow().crypto.subtle.digest(SHA_1_HASH,_this.toHash)})).then((function(data){return Promise.resolve(new Uint8Array(data))}))};Sha13.prototype.reset=function(){this.toHash=new Uint8Array(0)};return Sha13}();__assign=function(){__assign=Object.assign||function __assign2(t3){var s2,i2,n3,p4;for(i2=1,n3=arguments.length;i2<n3;i2++){s2=arguments[i2];for(p4 in s2)Object.prototype.hasOwnProperty.call(s2,p4)&&(t3[p4]=s2[p4])}return t3};return __assign.apply(this,arguments)};Object.create;Object.create;"function"==typeof SuppressedError&&SuppressedError;subtleCryptoMethods=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];fromUtf83=input=>(new TextEncoder).encode(input);fromUtf84="undefined"!=typeof Buffer&&Buffer.from?function(input){return Buffer.from(input,"utf8")}:fromUtf83;Sha12=function(){function Sha13(secret){if(!supportsWebCrypto(locateWindow()))throw new Error("SHA1 not supported");this.hash=new Sha1(secret)}Sha13.prototype.update=function(data,encoding){this.hash.update(convertToBuffer2(data))};Sha13.prototype.digest=function(){return this.hash.digest()};Sha13.prototype.reset=function(){this.hash.reset()};return Sha13}();SHA_256_HMAC_ALGO={name:"HMAC",hash:SHA_256_HASH={name:"SHA-256"}};EMPTY_DATA_SHA_256=new Uint8Array([227,176,196,66,152,252,28,20,154,251,244,200,153,111,185,36,39,174,65,228,100,155,147,76,164,149,153,27,120,82,184,85]);Sha256=function(){function Sha2564(secret){this.toHash=new Uint8Array(0);this.secret=secret;this.reset()}Sha2564.prototype.update=function(data){var update2,typedArray;if(!isEmptyData2(data)){update2=convertToBuffer2(data);(typedArray=new Uint8Array(this.toHash.byteLength+update2.byteLength)).set(this.toHash,0);typedArray.set(update2,this.toHash.byteLength);this.toHash=typedArray}};Sha2564.prototype.digest=function(){var _this=this;return this.key?this.key.then((function(key2){return locateWindow().crypto.subtle.sign(SHA_256_HMAC_ALGO,key2,_this.toHash).then((function(data){return new Uint8Array(data)}))})):isEmptyData2(this.toHash)?Promise.resolve(EMPTY_DATA_SHA_256):Promise.resolve().then((function(){return locateWindow().crypto.subtle.digest(SHA_256_HASH,_this.toHash)})).then((function(data){return Promise.resolve(new Uint8Array(data))}))};Sha2564.prototype.reset=function(){var _this=this;this.toHash=new Uint8Array(0);if(this.secret&&void 0!==this.secret){this.key=new Promise((function(resolve,reject){locateWindow().crypto.subtle.importKey("raw",convertToBuffer2(_this.secret),SHA_256_HMAC_ALGO,!1,["sign"]).then(resolve,reject)}));this.key.catch((function(){}))}};return Sha2564}();KEY=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);INIT=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];MAX_HASHABLE_LENGTH=Math.pow(2,53)-1;RawSha256=function(){function RawSha2562(){this.state=Int32Array.from(INIT);this.temp=new Int32Array(64);this.buffer=new Uint8Array(64);this.bufferLength=0;this.bytesHashed=0;this.finished=!1}RawSha2562.prototype.update=function(data){var position,byteLength;if(this.finished)throw new Error("Attempted to update an already finished hash.");position=0;byteLength=data.byteLength;this.bytesHashed+=byteLength;if(8*this.bytesHashed>MAX_HASHABLE_LENGTH)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;byteLength>0;){this.buffer[this.bufferLength++]=data[position++];byteLength--;if(64===this.bufferLength){this.hashBuffer();this.bufferLength=0}}};RawSha2562.prototype.digest=function(){var bitsHashed,bufferView,undecoratedLength,i2,out;if(!this.finished){bitsHashed=8*this.bytesHashed;bufferView=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength);undecoratedLength=this.bufferLength;bufferView.setUint8(this.bufferLength++,128);if(undecoratedLength%64>=56){for(i2=this.bufferLength;i2<64;i2++)bufferView.setUint8(i2,0);this.hashBuffer();this.bufferLength=0}for(i2=this.bufferLength;i2<56;i2++)bufferView.setUint8(i2,0);bufferView.setUint32(56,Math.floor(bitsHashed/4294967296),!0);bufferView.setUint32(60,bitsHashed);this.hashBuffer();this.finished=!0}out=new Uint8Array(32);for(i2=0;i2<8;i2++){out[4*i2]=this.state[i2]>>>24&255;out[4*i2+1]=this.state[i2]>>>16&255;out[4*i2+2]=this.state[i2]>>>8&255;out[4*i2+3]=this.state[i2]>>>0&255}return out};RawSha2562.prototype.hashBuffer=function(){var i2,u2,t1_1,t2_1,t1,t22,buffer=this.buffer,state2=this.state,state0=state2[0],state1=state2[1],state22=state2[2],state3=state2[3],state4=state2[4],state5=state2[5],state6=state2[6],state7=state2[7];for(i2=0;i2<64;i2++){if(i2<16)this.temp[i2]=(255&buffer[4*i2])<<24|(255&buffer[4*i2+1])<<16|(255&buffer[4*i2+2])<<8|255&buffer[4*i2+3];else{t1_1=((u2=this.temp[i2-2])>>>17|u2<<15)^(u2>>>19|u2<<13)^u2>>>10;t2_1=((u2=this.temp[i2-15])>>>7|u2<<25)^(u2>>>18|u2<<14)^u2>>>3;this.temp[i2]=(t1_1+this.temp[i2-7]|0)+(t2_1+this.temp[i2-16]|0)}t1=(((state4>>>6|state4<<26)^(state4>>>11|state4<<21)^(state4>>>25|state4<<7))+(state4&state5^~state4&state6)|0)+(state7+(KEY[i2]+this.temp[i2]|0)|0)|0;t22=((state0>>>2|state0<<30)^(state0>>>13|state0<<19)^(state0>>>22|state0<<10))+(state0&state1^state0&state22^state1&state22)|0;state7=state6;state6=state5;state5=state4;state4=state3+t1|0;state3=state22;state22=state1;state1=state0;state0=t1+t22|0}state2[0]+=state0;state2[1]+=state1;state2[2]+=state22;state2[3]+=state3;state2[4]+=state4;state2[5]+=state5;state2[6]+=state6;state2[7]+=state7};return RawSha2562}();Sha2562=function(){function Sha2564(secret){this.secret=secret;this.hash=new RawSha256;this.reset()}Sha2564.prototype.update=function(toHash){if(!isEmptyData2(toHash)&&!this.error)try{this.hash.update(convertToBuffer2(toHash))}catch(e3){this.error=e3}};Sha2564.prototype.digestSync=function(){if(this.error)throw this.error;if(this.outer){this.outer.finished||this.outer.update(this.hash.digest());return this.outer.digest()}return this.hash.digest()};Sha2564.prototype.digest=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(_a7){return[2,this.digestSync()]}))}))};Sha2564.prototype.reset=function(){var inner,outer,i2;this.hash=new RawSha256;if(this.secret){this.outer=new RawSha256;inner=function bufferFromSecret(secret){var bufferHash,buffer,input=convertToBuffer2(secret);if(input.byteLength>64){(bufferHash=new RawSha256).update(input);input=bufferHash.digest()}(buffer=new Uint8Array(64)).set(input);return buffer}(this.secret);(outer=new Uint8Array(64)).set(inner);for(i2=0;i2<64;i2++){inner[i2]^=54;outer[i2]^=92}this.hash.update(inner);this.outer.update(outer);for(i2=0;i2<inner.byteLength;i2++)inner[i2]=0}};return Sha2564}();Sha2563=function(){function Sha2564(secret){supportsWebCrypto(locateWindow())?this.hash=new Sha256(secret):this.hash=new Sha2562(secret)}Sha2564.prototype.update=function(data,encoding){this.hash.update(convertToBuffer2(data))};Sha2564.prototype.digest=function(){return this.hash.digest()};Sha2564.prototype.reset=function(){this.hash.reset()};return Sha2564}();import_bowser=__toESM(require_es5());defaultUserAgent=({serviceId,clientVersion})=>async()=>{var _a7,_b3,_c2,_d2,_e2,_f,_g;const parsedUA="undefined"!=typeof window&&(null==(_a7=null==window?void 0:window.navigator)?void 0:_a7.userAgent)?import_bowser.default.parse(window.navigator.userAgent):void 0,sections=[["aws-sdk-js",clientVersion],["ua","2.0"],[`os/${(null==(_b3=null==parsedUA?void 0:parsedUA.os)?void 0:_b3.name)||"other"}`,null==(_c2=null==parsedUA?void 0:parsedUA.os)?void 0:_c2.version],["lang/js"],["md/browser",`${null!=(_e2=null==(_d2=null==parsedUA?void 0:parsedUA.browser)?void 0:_d2.name)?_e2:"unknown"}_${null!=(_g=null==(_f=null==parsedUA?void 0:parsedUA.browser)?void 0:_f.version)?_g:"unknown"}`]];serviceId&§ions.push([`api/${serviceId}`,clientVersion]);return sections};AwsCrc32=function(){function AwsCrc322(){this.crc32=new Crc32}AwsCrc322.prototype.update=function(toHash){isEmptyData2(toHash)||this.crc32.update(convertToBuffer2(toHash))};AwsCrc322.prototype.digest=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(_a7){return[2,numToUint8(this.crc32.digest())]}))}))};AwsCrc322.prototype.reset=function(){this.crc32=new Crc32};return AwsCrc322}();Crc32=function(){function Crc322(){this.checksum=4294967295}Crc322.prototype.update=function(data){var e_1,_a7,data_1,data_1_1,byte;try{for(data_1_1=(data_1=__values(data)).next();!data_1_1.done;data_1_1=data_1.next()){byte=data_1_1.value;this.checksum=this.checksum>>>8^lookupTable[255&(this.checksum^byte)]}}catch(e_1_1){e_1={error:e_1_1}}finally{try{data_1_1&&!data_1_1.done&&(_a7=data_1.return)&&_a7.call(data_1)}finally{if(e_1)throw e_1.error}}return this};Crc322.prototype.digest=function(){return(4294967295^this.checksum)>>>0};return Crc322}();lookupTable=uint32ArrayFrom([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);Int642=class _Int64{constructor(bytes){this.bytes=bytes;if(8!==bytes.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(number){if(number>0x8000000000000000||number<-0x8000000000000000)throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`);const bytes=new Uint8Array(8);for(let i2=7,remaining=Math.abs(Math.round(number));i2>-1&&remaining>0;i2--,remaining/=256)bytes[i2]=remaining;number<0&&negate2(bytes);return new _Int64(bytes)}valueOf(){const bytes=this.bytes.slice(0),negative=128&bytes[0];negative&&negate2(bytes);return parseInt(toHex2(bytes),16)*(negative?-1:1)}toString(){return String(this.valueOf())}};HeaderMarshaller=class{constructor(toUtf82,fromUtf85){this.toUtf8=toUtf82;this.fromUtf8=fromUtf85}format(headers){const chunks=[];for(const headerName of Object.keys(headers)){const bytes=this.fromUtf8(headerName);chunks.push(Uint8Array.from([bytes.byteLength]),bytes,this.formatHeaderValue(headers[headerName]))}const out=new Uint8Array(chunks.reduce(((carry,bytes)=>carry+bytes.byteLength),0));let position=0;for(const chunk of chunks){out.set(chunk,position);position+=chunk.byteLength}return out}formatHeaderValue(header){switch(header.type){case"boolean":return Uint8Array.from([header.value?0:1]);case"byte":return Uint8Array.from([2,header.value]);case"short":const shortView=new DataView(new ArrayBuffer(3));shortView.setUint8(0,3);shortView.setInt16(1,header.value,!1);return new Uint8Array(shortView.buffer);case"integer":const intView=new DataView(new ArrayBuffer(5));intView.setUint8(0,4);intView.setInt32(1,header.value,!1);return new Uint8Array(intView.buffer);case"long":const longBytes=new Uint8Array(9);longBytes[0]=5;longBytes.set(header.value.bytes,1);return longBytes;case"binary":const binView=new DataView(new ArrayBuffer(3+header.value.byteLength));binView.setUint8(0,6);binView.setUint16(1,header.value.byteLength,!1);const binBytes=new Uint8Array(binView.buffer);binBytes.set(header.value,3);return binBytes;case"string":const utf8Bytes=this.fromUtf8(header.value),strView=new DataView(new ArrayBuffer(3+utf8Bytes.byteLength));strView.setUint8(0,7);strView.setUint16(1,utf8Bytes.byteLength,!1);const strBytes=new Uint8Array(strView.buffer);strBytes.set(utf8Bytes,3);return strBytes;case"timestamp":const tsBytes=new Uint8Array(9);tsBytes[0]=8;tsBytes.set(Int642.fromNumber(header.value.valueOf()).bytes,1);return tsBytes;case"uuid":if(!UUID_PATTERN2.test(header.value))throw new Error(`Invalid UUID received: ${header.value}`);const uuidBytes=new Uint8Array(17);uuidBytes[0]=9;uuidBytes.set(fromHex(header.value.replace(/\-/g,"")),1);return uuidBytes}}parse(headers){const out={};let position=0;for(;position<headers.byteLength;){const nameLength=headers.getUint8(position++),name=this.toUtf8(new Uint8Array(headers.buffer,headers.byteOffset+position,nameLength));position+=nameLength;switch(headers.getUint8(position++)){case 0:out[name]={type:BOOLEAN_TAG,value:!0};break;case 1:out[name]={type:BOOLEAN_TAG,value:!1};break;case 2:out[name]={type:BYTE_TAG,value:headers.getInt8(position++)};break;case 3:out[name]={type:SHORT_TAG,value:headers.getInt16(position,!1)};position+=2;break;case 4:out[name]={type:INT_TAG,value:headers.getInt32(position,!1)};position+=4;break;case 5:out[name]={type:LONG_TAG,value:new Int642(new Uint8Array(headers.buffer,headers.byteOffset+position,8))};position+=8;break;case 6:const binaryLength=headers.getUint16(position,!1);position+=2;out[name]={type:BINARY_TAG,value:new Uint8Array(headers.buffer,headers.byteOffset+position,binaryLength)};position+=binaryLength;break;case 7:const stringLength=headers.getUint16(position,!1);position+=2;out[name]={type:STRING_TAG,value:this.toUtf8(new Uint8Array(headers.buffer,headers.byteOffset+position,stringLength))};position+=stringLength;break;case 8:out[name]={type:TIMESTAMP_TAG,value:new Date(new Int642(new Uint8Array(headers.buffer,headers.byteOffset+position,8)).valueOf())};position+=8;break;case 9:const uuidBytes=new Uint8Array(headers.buffer,headers.byteOffset+position,16);position+=16;out[name]={type:UUID_TAG,value:`${toHex2(uuidBytes.subarray(0,4))}-${toHex2(uuidBytes.subarray(4,6))}-${toHex2(uuidBytes.subarray(6,8))}-${toHex2(uuidBytes.subarray(8,10))}-${toHex2(uuidBytes.subarray(10))}`};break;default:throw new Error("Unrecognized header type tag")}}return out}};(function(HEADER_VALUE_TYPE3){HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.boolTrue=0]="boolTrue";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.boolFalse=1]="boolFalse";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.byte=2]="byte";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.short=3]="short";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.integer=4]="integer";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.long=5]="long";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.byteArray=6]="byteArray";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.string=7]="string";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.timestamp=8]="timestamp";HEADER_VALUE_TYPE3[HEADER_VALUE_TYPE3.uuid=9]="uuid"})(HEADER_VALUE_TYPE2||(HEADER_VALUE_TYPE2={}));BOOLEAN_TAG="boolean";BYTE_TAG="byte";SHORT_TAG="short";INT_TAG="integer";LONG_TAG="long";BINARY_TAG="binary";STRING_TAG="string";TIMESTAMP_TAG="timestamp";UUID_TAG="uuid";UUID_PATTERN2=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;0;EventStreamCodec=class{constructor(toUtf82,fromUtf85){this.headerMarshaller=new HeaderMarshaller(toUtf82,fromUtf85);this.messageBuffer=[];this.isEndOfStream=!1}feed(message){this.messageBuffer.push(this.decode(message))}endOfStream(){this.isEndOfStream=!0}getMessage(){const message=this.messageBuffer.pop(),isEndOfStream=this.isEndOfStream;return{getMessage:()=>message,isEndOfStream:()=>isEndOfStream}}getAvailableMessages(){const messages=this.messageBuffer;this.messageBuffer=[];const isEndOfStream=this.isEndOfStream;return{getMessages:()=>messages,isEndOfStream:()=>isEndOfStream}}encode({headers:rawHeaders,body}){const headers=this.headerMarshaller.format(rawHeaders),length=headers.byteLength+body.byteLength+16,out=new Uint8Array(length),view=new DataView(out.buffer,out.byteOffset,out.byteLength),checksum=new Crc32;view.setUint32(0,length,!1);view.setUint32(4,headers.byteLength,!1);view.setUint32(8,checksum.update(out.subarray(0,8)).digest(),!1);out.set(headers,12);out.set(body,headers.byteLength+12);view.setUint32(length-4,checksum.update(out.subarray(8,length-4)).digest(),!1);return out}decode(message){const{headers,body}=function splitMessage({byteLength,byteOffset,buffer}){if(byteLength<16)throw new Error("Provided message too short to accommodate event stream message overhead");const view=new DataView(buffer,byteOffset,byteLength),messageLength=view.getUint32(0,!1);if(byteLength!==messageLength)throw new Error("Reported message length does not match received message length");const headerLength=view.getUint32(4,!1),expectedPreludeChecksum=view.getUint32(8,!1),expectedMessageChecksum=view.getUint32(byteLength-4,!1),checksummer=(new Crc32).update(new Uint8Array(buffer,byteOffset,8));if(expectedPreludeChecksum!==checksummer.digest())throw new Error(`The prelude checksum specified in the message (${expectedPreludeChecksum}) does not match the calculated CRC32 checksum (${checksummer.digest()})`);checksummer.update(new Uint8Array(buffer,byteOffset+8,byteLength-12));if(expectedMessageChecksum!==checksummer.digest())throw new Error(`The message checksum (${checksummer.digest()}) did not match the expected value of ${expectedMessageChecksum}`);return{headers:new DataView(buffer,byteOffset+8+4,headerLength),body:new Uint8Array(buffer,byteOffset+8+4+headerLength,messageLength-headerLength-16)}}(message);return{headers:this.headerMarshaller.parse(headers),body}}formatHeaders(rawHeaders){return this.headerMarshaller.format(rawHeaders)}};MessageDecoderStream=class{constructor(options){this.options=options}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const bytes of this.options.inputStream){const decoded=this.options.decoder.decode(bytes);yield decoded}}};MessageEncoderStream=class{constructor(options){this.options=options}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const msg of this.options.messageStream){const encoded=this.options.encoder.encode(msg);yield encoded}this.options.includeEndFrame&&(yield new Uint8Array(0))}};SmithyMessageDecoderStream=class{constructor(options){this.options=options}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const message of this.options.messageStream){const deserialized=await this.options.deserializer(message);void 0!==deserialized&&(yield deserialized)}}};SmithyMessageEncoderStream=class{constructor(options){this.options=options}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const chunk of this.options.inputStream){const payloadBuf=this.options.serializer(chunk);yield payloadBuf}}};EventStreamMarshaller=class{constructor({utf8Encoder,utf8Decoder}){this.eventStreamCodec=new EventStreamCodec(utf8Encoder,utf8Decoder);this.utfEncoder=utf8Encoder}deserialize(body,deserializer){const inputStream=function getChunkedStream(source2){let currentMessageTotalLength=0,currentMessagePendingLength=0,currentMessage=null,messageLengthBuffer=null;const allocateMessage=size=>{if("number"!=typeof size)throw new Error("Attempted to allocate an event message where size was not a number: "+size);currentMessageTotalLength=size;currentMessagePendingLength=4;currentMessage=new Uint8Array(size);new DataView(currentMessage.buffer).setUint32(0,size,!1)};return{[Symbol.asyncIterator]:async function*(){const sourceIterator=source2[Symbol.asyncIterator]();for(;;){const{value,done}=await sourceIterator.next();if(done){if(!currentMessageTotalLength)return;if(currentMessageTotalLength!==currentMessagePendingLength)throw new Error("Truncated event message received.");yield currentMessage;return}const chunkLength=value.length;let currentOffset=0;for(;currentOffset<chunkLength;){if(!currentMessage){const bytesRemaining=chunkLength-currentOffset;messageLengthBuffer||(messageLengthBuffer=new Uint8Array(4));const numBytesForTotal=Math.min(4-currentMessagePendingLength,bytesRemaining);messageLengthBuffer.set(value.slice(currentOffset,currentOffset+numBytesForTotal),currentMessagePendingLength);currentMessagePendingLength+=numBytesForTotal;currentOffset+=numBytesForTotal;if(currentMessagePendingLength<4)break;allocateMessage(new DataView(messageLengthBuffer.buffer).getUint32(0,!1));messageLengthBuffer=null}const numBytesToWrite=Math.min(currentMessageTotalLength-currentMessagePendingLength,chunkLength-currentOffset);currentMessage.set(value.slice(currentOffset,currentOffset+numBytesToWrite),currentMessagePendingLength);currentMessagePendingLength+=numBytesToWrite;currentOffset+=numBytesToWrite;if(currentMessageTotalLength&¤tMessageTotalLength===currentMessagePendingLength){yield currentMessage;currentMessage=null;currentMessageTotalLength=0;currentMessagePendingLength=0}}}}}}(body);return new SmithyMessageDecoderStream({messageStream:new MessageDecoderStream({inputStream,decoder:this.eventStreamCodec}),deserializer:getMessageUnmarshaller(deserializer,this.utfEncoder)})}serialize(inputStream,serializer){return new MessageEncoderStream({messageStream:new SmithyMessageEncoderStream({inputStream,serializer}),encoder:this.eventStreamCodec,includeEndFrame:!0})}};readableStreamtoIterable=readableStream=>({[Symbol.asyncIterator]:async function*(){const reader=readableStream.getReader();try{for(;;){const{done,value}=await reader.read();if(done)return;yield value}}finally{reader.releaseLock()}}});iterableToReadableStream=asyncIterable=>{const iterator=asyncIterable[Symbol.asyncIterator]();return new ReadableStream({async pull(controller){const{done,value}=await iterator.next();if(done)return controller.close();controller.enqueue(value)}})};EventStreamMarshaller2=class{constructor({utf8Encoder,utf8Decoder}){this.universalMarshaller=new EventStreamMarshaller({utf8Decoder,utf8Encoder})}deserialize(body,deserializer){const bodyIterable=isReadableStream2(body)?readableStreamtoIterable(body):body;return this.universalMarshaller.deserialize(bodyIterable,deserializer)}serialize(input,serializer){const serialziedIterable=this.universalMarshaller.serialize(input,serializer);return"function"==typeof ReadableStream?iterableToReadableStream(serialziedIterable):serialziedIterable}};isReadableStream2=body=>"function"==typeof ReadableStream&&body instanceof ReadableStream;eventStreamSerdeProvider2=options=>new EventStreamMarshaller2(options);blobHasher=async function blobHasher2(hashCtor,blob){const hash3=new hashCtor;await function blobReader(blob,onChunk,chunkSize2=1048576){return new Promise(((resolve,reject)=>{function read(){totalBytesRead>=size?resolve():fileReader.readAsArrayBuffer(blob.slice(totalBytesRead,Math.min(size,totalBytesRead+chunkSize2)))}const fileReader=new FileReader;fileReader.addEventListener("error",reject);fileReader.addEventListener("abort",reject);const size=blob.size;let totalBytesRead=0;fileReader.addEventListener("load",(event2=>{const result=event2.target.result;onChunk(new Uint8Array(result));totalBytesRead+=result.byteLength;read()}));read()}))}(blob,(chunk=>{hash3.update(chunk)}));return hash3.digest()};invalidProvider=message=>()=>Promise.reject(message);INIT2=[1732584193,4023233417,2562383102,271733878];Md5=class{constructor(){this.reset()}update(sourceData){if(function isEmptyData3(data){return"string"==typeof data?0===data.length:0===data.byteLength}(sourceData))return;if(this.finished)throw new Error("Attempted to update an already finished hash.");const data=function convertToBuffer3(data){return"string"==typeof data?fromUtf8(data):ArrayBuffer.isView(data)?new Uint8Array(data.buffer,data.byteOffset,data.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(data)}(sourceData);let position=0,{byteLength}=data;this.bytesHashed+=byteLength;for(;byteLength>0;){this.buffer.setUint8(this.bufferLength++,data[position++]);byteLength--;if(64===this.bufferLength){this.hashBuffer();this.bufferLength=0}}}async digest(){if(!this.finished){const{buffer,bufferLength:undecoratedLength,bytesHashed}=this,bitsHashed=8*bytesHashed;buffer.setUint8(this.bufferLength++,128);if(undecoratedLength%64>=56){for(let i2=this.bufferLength;i2<64;i2++)buffer.setUint8(i2,0);this.hashBuffer();this.bufferLength=0}for(let i2=this.bufferLength;i2<56;i2++)buffer.setUint8(i2,0);buffer.setUint32(56,bitsHashed>>>0,!0);buffer.setUint32(60,Math.floor(bitsHashed/4294967296),!0);this.hashBuffer();this.finished=!0}const out=new DataView(new ArrayBuffer(16));for(let i2=0;i2<4;i2++)out.setUint32(4*i2,this.state[i2],!0);return new Uint8Array(out.buffer,out.byteOffset,out.byteLength)}hashBuffer(){const{buffer,state:state2}=this;let a2=state2[0],b3=state2[1],c3=state2[2],d4=state2[3];a2=ff(a2,b3,c3,d4,buffer.getUint32(0,!0),7,3614090360);d4=ff(d4,a2,b3,c3,buffer.getUint32(4,!0),12,3905402710);c3=ff(c3,d4,a2,b3,buffer.getUint32(8,!0),17,606105819);b3=ff(b3,c3,d4,a2,buffer.getUint32(12,!0),22,3250441966);a2=ff(a2,b3,c3,d4,buffer.getUint32(16,!0),7,4118548399);d4=ff(d4,a2,b3,c3,buffer.getUint32(20,!0),12,1200080426);c3=ff(c3,d4,a2,b3,buffer.getUint32(24,!0),17,2821735955);b3=ff(b3,c3,d4,a2,buffer.getUint32(28,!0),22,4249261313);a2=ff(a2,b3,c3,d4,buffer.getUint32(32,!0),7,1770035416);d4=ff(d4,a2,b3,c3,buffer.getUint32(36,!0),12,2336552879);c3=ff(c3,d4,a2,b3,buffer.getUint32(40,!0),17,4294925233);b3=ff(b3,c3,d4,a2,buffer.getUint32(44,!0),22,2304563134);a2=ff(a2,b3,c3,d4,buffer.getUint32(48,!0),7,1804603682);d4=ff(d4,a2,b3,c3,buffer.getUint32(52,!0),12,4254626195);c3=ff(c3,d4,a2,b3,buffer.getUint32(56,!0),17,2792965006);b3=ff(b3,c3,d4,a2,buffer.getUint32(60,!0),22,1236535329);a2=gg(a2,b3,c3,d4,buffer.getUint32(4,!0),5,4129170786);d4=gg(d4,a2,b3,c3,buffer.getUint32(24,!0),9,3225465664);c3=gg(c3,d4,a2,b3,buffer.getUint32(44,!0),14,643717713);b3=gg(b3,c3,d4,a2,buffer.getUint32(0,!0),20,3921069994);a2=gg(a2,b3,c3,d4,buffer.getUint32(20,!0),5,3593408605);d4=gg(d4,a2,b3,c3,buffer.getUint32(40,!0),9,38016083);c3=gg(c3,d4,a2,b3,buffer.getUint32(60,!0),14,3634488961);b3=gg(b3,c3,d4,a2,buffer.getUint32(16,!0),20,3889429448);a2=gg(a2,b3,c3,d4,buffer.getUint32(36,!0),5,568446438);d4=gg(d4,a2,b3,c3,buffer.getUint32(56,!0),9,3275163606);c3=gg(c3,d4,a2,b3,buffer.getUint32(12,!0),14,4107603335);b3=gg(b3,c3,d4,a2,buffer.getUint32(32,!0),20,1163531501);a2=gg(a2,b3,c3,d4,buffer.getUint32(52,!0),5,2850285829);d4=gg(d4,a2,b3,c3,buffer.getUint32(8,!0),9,4243563512);c3=gg(c3,d4,a2,b3,buffer.getUint32(28,!0),14,1735328473);b3=gg(b3,c3,d4,a2,buffer.getUint32(48,!0),20,2368359562);a2=hh(a2,b3,c3,d4,buffer.getUint32(20,!0),4,4294588738);d4=hh(d4,a2,b3,c3,buffer.getUint32(32,!0),11,2272392833);c3=hh(c3,d4,a2,b3,buffer.getUint32(44,!0),16,1839030562);b3=hh(b3,c3,d4,a2,buffer.getUint32(56,!0),23,4259657740);a2=hh(a2,b3,c3,d4,buffer.getUint32(4,!0),4,2763975236);d4=hh(d4,a2,b3,c3,buffer.getUint32(16,!0),11,1272893353);c3=hh(c3,d4,a2,b3,buffer.getUint32(28,!0),16,4139469664);b3=hh(b3,c3,d4,a2,buffer.getUint32(40,!0),23,3200236656);a2=hh(a2,b3,c3,d4,buffer.getUint32(52,!0),4,681279174);d4=hh(d4,a2,b3,c3,buffer.getUint32(0,!0),11,3936430074);c3=hh(c3,d4,a2,b3,buffer.getUint32(12,!0),16,3572445317);b3=hh(b3,c3,d4,a2,buffer.getUint32(24,!0),23,76029189);a2=hh(a2,b3,c3,d4,buffer.getUint32(36,!0),4,3654602809);d4=hh(d4,a2,b3,c3,buffer.getUint32(48,!0),11,3873151461);c3=hh(c3,d4,a2,b3,buffer.getUint32(60,!0),16,530742520);b3=hh(b3,c3,d4,a2,buffer.getUint32(8,!0),23,3299628645);a2=ii(a2,b3,c3,d4,buffer.getUint32(0,!0),6,4096336452);d4=ii(d4,a2,b3,c3,buffer.getUint32(28,!0),10,1126891415);c3=ii(c3,d4,a2,b3,buffer.getUint32(56,!0),15,2878612391);b3=ii(b3,c3,d4,a2,buffer.getUint32(20,!0),21,4237533241);a2=ii(a2,b3,c3,d4,buffer.getUint32(48,!0),6,1700485571);d4=ii(d4,a2,b3,c3,buffer.getUint32(12,!0),10,2399980690);c3=ii(c3,d4,a2,b3,buffer.getUint32(40,!0),15,4293915773);b3=ii(b3,c3,d4,a2,buffer.getUint32(4,!0),21,2240044497);a2=ii(a2,b3,c3,d4,buffer.getUint32(32,!0),6,1873313359);d4=ii(d4,a2,b3,c3,buffer.getUint32(60,!0),10,4264355552);c3=ii(c3,d4,a2,b3,buffer.getUint32(24,!0),15,2734768916);b3=ii(b3,c3,d4,a2,buffer.getUint32(52,!0),21,1309151649);a2=ii(a2,b3,c3,d4,buffer.getUint32(16,!0),6,4149444226);d4=ii(d4,a2,b3,c3,buffer.getUint32(44,!0),10,3174756917);c3=ii(c3,d4,a2,b3,buffer.getUint32(8,!0),15,718787259);b3=ii(b3,c3,d4,a2,buffer.getUint32(36,!0),21,3951481745);state2[0]=a2+state2[0]&4294967295;state2[1]=b3+state2[1]&4294967295;state2[2]=c3+state2[2]&4294967295;state2[3]=d4+state2[3]&4294967295}reset(){this.state=Uint32Array.from(INIT2);this.buffer=new DataView(new ArrayBuffer(64));this.bufferLength=0;this.bytesHashed=0;this.finished=!1}};TEXT_ENCODER="function"==typeof TextEncoder?new TextEncoder:null;calculateBodyLength=body=>{if("string"==typeof body){if(TEXT_ENCODER)return TEXT_ENCODER.encode(body).byteLength;let len=body.length;for(let i2=len-1;i2>=0;i2--){const code=body.charCodeAt(i2);code>127&&code<=2047?len++:code>2047&&code<=65535&&(len+=2);code>=56320&&code<=57343&&i2--}return len}if("number"==typeof body.byteLength)return body.byteLength;if("number"==typeof body.size)return body.size;throw new Error(`Body Length computation failed for ${body}`)};getRuntimeConfig=config=>{var _a7,_b3,_c2,_d2,_e2,_f,_g,_h,_i2,_j,_k,_l2,_m2,_n2,_o,_p2,_q;return{apiVersion:"2006-03-01",base64Decoder:null!=(_a7=null==config?void 0:config.base64Decoder)?_a7:fromBase64,base64Encoder:null!=(_b3=null==config?void 0:config.base64Encoder)?_b3:toBase64,disableHostPrefix:null!=(_c2=null==config?void 0:config.disableHostPrefix)&&_c2,endpointProvider:null!=(_d2=null==config?void 0:config.endpointProvider)?_d2:defaultEndpointResolver,extensions:null!=(_e2=null==config?void 0:config.extensions)?_e2:[],getAwsChunkedEncodingStream:null!=(_f=null==config?void 0:config.getAwsChunkedEncodingStream)?_f:getAwsChunkedEncodingStream,httpAuthSchemeProvider:null!=(_g=null==config?void 0:config.httpAuthSchemeProvider)?_g:defaultS3HttpAuthSchemeProvider,httpAuthSchemes:null!=(_h=null==config?void 0:config.httpAuthSchemes)?_h:[{schemeId:"aws.auth#sigv4",identityProvider:ipc=>ipc.getIdentityProvider("aws.auth#sigv4"),signer:new AwsSdkSigV4Signer},{schemeId:"aws.auth#sigv4a",identityProvider:ipc=>ipc.getIdentityProvider("aws.auth#sigv4a"),signer:new AwsSdkSigV4ASigner}],logger:null!=(_i2=null==config?void 0:config.logger)?_i2:new NoOpLogger,sdkStreamMixin:null!=(_j=null==config?void 0:config.sdkStreamMixin)?_j:sdkStreamMixin,serviceId:null!=(_k=null==config?void 0:config.serviceId)?_k:"S3",signerConstructor:null!=(_l2=null==config?void 0:config.signerConstructor)?_l2:SignatureV4MultiRegion,signingEscapePath:null!=(_m2=null==config?void 0:config.signingEscapePath)&&_m2,urlParser:null!=(_n2=null==config?void 0:config.urlParser)?_n2:parseUrl,useArnRegion:null!=(_o=null==config?void 0:config.useArnRegion)&&_o,utf8Decoder:null!=(_p2=null==config?void 0:config.utf8Decoder)?_p2:fromUtf8,utf8Encoder:null!=(_q=null==config?void 0:config.utf8Encoder)?_q:toUtf8}};DEFAULTS_MODE_OPTIONS=["in-region","cross-region","mobile","standard","legacy"];import_bowser2=__toESM(require_es5());resolveDefaultsModeConfig=({defaultsMode}={})=>memoize((async()=>{const mode="function"==typeof defaultsMode?await defaultsMode():defaultsMode;switch(null==mode?void 0:mode.toLowerCase()){case"auto":return Promise.resolve(isMobileBrowser()?"mobile":"standard");case"mobile":case"in-region":case"cross-region":case"standard":case"legacy":return Promise.resolve(null==mode?void 0:mode.toLocaleLowerCase());case void 0:return Promise.resolve("legacy");default:throw new Error(`Invalid parameter for "defaultsMode", expect ${DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`)}}));isMobileBrowser=()=>{var _a7,_b3;const parsedUA="undefined"!=typeof window&&(null==(_a7=null==window?void 0:window.navigator)?void 0:_a7.userAgent)?import_bowser2.default.parse(window.navigator.userAgent):void 0,platform=null==(_b3=null==parsedUA?void 0:parsedUA.platform)?void 0:_b3.type;return"tablet"===platform||"mobile"===platform};getRuntimeConfig2=config=>{var _a7,_b3,_c2,_d2,_e2,_f,_g,_h,_i2,_j,_k,_l2,_m2,_n2,_o;const defaultsMode=resolveDefaultsModeConfig(config),defaultConfigProvider=()=>defaultsMode().then(loadConfigsForDefaultMode),clientSharedValues=getRuntimeConfig(config);return{...clientSharedValues,...config,runtime:"browser",defaultsMode,bodyLengthChecker:null!=(_a7=null==config?void 0:config.bodyLengthChecker)?_a7:calculateBodyLength,credentialDefaultProvider:null!=(_b3=null==config?void 0:config.credentialDefaultProvider)?_b3:_=>()=>Promise.reject(new Error("Credential is missing")),defaultUserAgentProvider:null!=(_c2=null==config?void 0:config.defaultUserAgentProvider)?_c2:defaultUserAgent({serviceId:clientSharedValues.serviceId,clientVersion:"3.645.0"}),eventStreamSerdeProvider:null!=(_d2=null==config?void 0:config.eventStreamSerdeProvider)?_d2:eventStreamSerdeProvider2,maxAttempts:null!=(_e2=null==config?void 0:config.maxAttempts)?_e2:3,md5:null!=(_f=null==config?void 0:config.md5)?_f:Md5,region:null!=(_g=null==config?void 0:config.region)?_g:invalidProvider("Region is missing"),requestHandler:FetchHttpHandler.create(null!=(_h=null==config?void 0:config.requestHandler)?_h:defaultConfigProvider),retryMode:null!=(_i2=null==config?void 0:config.retryMode)?_i2:async()=>(await defaultConfigProvider()).retryMode||DEFAULT_RETRY_MODE,sha1:null!=(_j=null==config?void 0:config.sha1)?_j:Sha12,sha256:null!=(_k=null==config?void 0:config.sha256)?_k:Sha2563,streamCollector:null!=(_l2=null==config?void 0:config.streamCollector)?_l2:streamCollector,streamHasher:null!=(_m2=null==config?void 0:config.streamHasher)?_m2:blobHasher,useDualstackEndpoint:null!=(_n2=null==config?void 0:config.useDualstackEndpoint)?_n2:()=>Promise.resolve(!1),useFipsEndpoint:null!=(_o=null==config?void 0:config.useFipsEndpoint)?_o:()=>Promise.resolve(!1)}};getAwsRegionExtensionConfiguration=runtimeConfig=>{let runtimeConfigRegion=async()=>{if(void 0===runtimeConfig.region)throw new Error("Region is missing from runtimeConfig");const region=runtimeConfig.region;return"string"==typeof region?region:region()};return{setRegion(region){runtimeConfigRegion=region},region:()=>runtimeConfigRegion}};resolveAwsRegionExtensionConfiguration=awsRegionExtensionConfiguration=>({region:awsRegionExtensionConfiguration.region()});getHttpAuthExtensionConfiguration=runtimeConfig=>{const _httpAuthSchemes=runtimeConfig.httpAuthSchemes;let _httpAuthSchemeProvider=runtimeConfig.httpAuthSchemeProvider,_credentials=runtimeConfig.credentials;return{setHttpAuthScheme(httpAuthScheme){const index6=_httpAuthSchemes.findIndex((scheme=>scheme.schemeId===httpAuthScheme.schemeId));-1===index6?_httpAuthSchemes.push(httpAuthScheme):_httpAuthSchemes.splice(index6,1,httpAuthScheme)},httpAuthSchemes:()=>_httpAuthSchemes,setHttpAuthSchemeProvider(httpAuthSchemeProvider){_httpAuthSchemeProvider=httpAuthSchemeProvider},httpAuthSchemeProvider:()=>_httpAuthSchemeProvider,setCredentials(credentials){_credentials=credentials},credentials:()=>_credentials}};resolveHttpAuthRuntimeConfig=config=>({httpAuthSchemes:config.httpAuthSchemes(),httpAuthSchemeProvider:config.httpAuthSchemeProvider(),credentials:config.credentials()});resolveRuntimeExtensions=(runtimeConfig,extensions)=>{const extensionConfiguration={...getAwsRegionExtensionConfiguration(runtimeConfig),...getDefaultExtensionConfiguration(runtimeConfig),...getHttpHandlerExtensionConfiguration(runtimeConfig),...getHttpAuthExtensionConfiguration(runtimeConfig)};extensions.forEach((extension=>extension.configure(extensionConfiguration)));return{...runtimeConfig,...resolveAwsRegionExtensionConfiguration(extensionConfiguration),...resolveDefaultRuntimeConfig2(extensionConfiguration),...resolveHttpHandlerRuntimeConfig(extensionConfiguration),...resolveHttpAuthRuntimeConfig(extensionConfiguration)}};S3Client=class extends Client{constructor(...[configuration]){const _config_0=getRuntimeConfig2(configuration||{}),_config_2=function resolveUserAgentConfig(input){return{...input,customUserAgent:"string"==typeof input.customUserAgent?[[input.customUserAgent]]:input.customUserAgent}}(resolveClientEndpointParameters(_config_0)),_config_3=resolveRetryConfig(_config_2),_config_4=resolveRegionConfig(_config_3),_config_6=resolveEndpointConfig(_config_4),_config_7=resolveEventStreamSerdeConfig(_config_6),_config_8=resolveHttpAuthSchemeConfig(_config_7),_config_9=resolveS3Config(_config_8,{session:[()=>this,CreateSessionCommand]}),_config_10=resolveRuntimeExtensions(_config_9,(null==configuration?void 0:configuration.extensions)||[]);super(_config_10);this.config=_config_10;this.middlewareStack.use(getUserAgentPlugin(this.config));this.middlewareStack.use(getRetryPlugin(this.config));this.middlewareStack.use(getContentLengthPlugin(this.config));this.middlewareStack.use(getHostHeaderPlugin(this.config));this.middlewareStack.use(getLoggerPlugin(this.config));this.middlewareStack.use(getRecursionDetectionPlugin(this.config));this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config,{httpAuthSchemeParametersProvider:defaultS3HttpAuthSchemeParametersProvider,identityProviderConfigProvider:async config=>new DefaultIdentityProviderConfig({"aws.auth#sigv4":config.credentials,"aws.auth#sigv4a":config.credentials})}));this.middlewareStack.use(getHttpSigningPlugin(this.config));this.middlewareStack.use(getValidateBucketNamePlugin(this.config));this.middlewareStack.use(getAddExpectContinuePlugin(this.config));this.middlewareStack.use(getRegionRedirectMiddlewarePlugin(this.config));this.middlewareStack.use(getS3ExpressPlugin(this.config));this.middlewareStack.use(getS3ExpressHttpSigningPlugin(this.config))}destroy(){super.destroy()}};AbortMultipartUploadCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","AbortMultipartUpload",{}).n("S3Client","AbortMultipartUploadCommand").f(void 0,void 0).ser(se_AbortMultipartUploadCommand).de(de_AbortMultipartUploadCommand).build()){};ssecMiddlewareOptions={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:!0};getSsecPlugin=config=>({applyToStack:clientStack=>{clientStack.add(function ssecMiddleware(options){return next2=>async args=>{const input={...args.input},properties=[{target:"SSECustomerKey",hash:"SSECustomerKeyMD5"},{target:"CopySourceSSECustomerKey",hash:"CopySourceSSECustomerKeyMD5"}];for(const prop2 of properties){const value=input[prop2.target];if(value){let valueForHash;if("string"==typeof value)if(isValidBase64EncodedSSECustomerKey(value,options))valueForHash=options.base64Decoder(value);else{valueForHash=options.utf8Decoder(value);input[prop2.target]=options.base64Encoder(valueForHash)}else{valueForHash=ArrayBuffer.isView(value)?new Uint8Array(value.buffer,value.byteOffset,value.byteLength):new Uint8Array(value);input[prop2.target]=options.base64Encoder(valueForHash)}const hash3=new options.md5;hash3.update(valueForHash);input[prop2.hash]=options.base64Encoder(await hash3.digest())}}return next2({...args,input})}}(config),ssecMiddlewareOptions)}});CompleteMultipartUploadCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config),getSsecPlugin(config)]})).s("AmazonS3","CompleteMultipartUpload",{}).n("S3Client","CompleteMultipartUploadCommand").f(CompleteMultipartUploadRequestFilterSensitiveLog,CompleteMultipartUploadOutputFilterSensitiveLog).ser(se_CompleteMultipartUploadCommand).de(de_CompleteMultipartUploadCommand).build()){};CopyObjectCommand=class extends(Command.classBuilder().ep({...commonParams,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"},CopySource:{type:"contextParams",name:"CopySource"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config),getSsecPlugin(config)]})).s("AmazonS3","CopyObject",{}).n("S3Client","CopyObjectCommand").f(CopyObjectRequestFilterSensitiveLog,CopyObjectOutputFilterSensitiveLog).ser(se_CopyObjectCommand).de(de_CopyObjectCommand).build()){};locationConstraintMiddlewareOptions={step:"initialize",tags:["LOCATION_CONSTRAINT","CREATE_BUCKET_CONFIGURATION"],name:"locationConstraintMiddleware",override:!0};getLocationConstraintPlugin=config=>({applyToStack:clientStack=>{clientStack.add(function locationConstraintMiddleware(options){return next2=>async args=>{const{CreateBucketConfiguration}=args.input,region=await options.region();(null==CreateBucketConfiguration?void 0:CreateBucketConfiguration.LocationConstraint)||(null==CreateBucketConfiguration?void 0:CreateBucketConfiguration.Location)||(args={...args,input:{...args.input,CreateBucketConfiguration:"us-east-1"===region?void 0:{LocationConstraint:region}}});return next2(args)}}(config),locationConstraintMiddlewareOptions)}});CreateBucketCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},DisableAccessPoints:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config),getLocationConstraintPlugin(config)]})).s("AmazonS3","CreateBucket",{}).n("S3Client","CreateBucketCommand").f(void 0,void 0).ser(se_CreateBucketCommand).de(de_CreateBucketCommand).build()){};CreateMultipartUploadCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config),getSsecPlugin(config)]})).s("AmazonS3","CreateMultipartUpload",{}).n("S3Client","CreateMultipartUploadCommand").f(CreateMultipartUploadRequestFilterSensitiveLog,CreateMultipartUploadOutputFilterSensitiveLog).ser(se_CreateMultipartUploadCommand).de(de_CreateMultipartUploadCommand).build()){};DeleteBucketAnalyticsConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","DeleteBucketAnalyticsConfiguration",{}).n("S3Client","DeleteBucketAnalyticsConfigurationCommand").f(void 0,void 0).ser(se_DeleteBucketAnalyticsConfigurationCommand).de(de_DeleteBucketAnalyticsConfigurationCommand).build()){};DeleteBucketCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","DeleteBucket",{}).n("S3Client","DeleteBucketCommand").f(void 0,void 0).ser(se_DeleteBucketCommand).de(de_DeleteBucketCommand).build()){};DeleteBucketCorsCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","DeleteBucketCors",{}).n("S3Client","DeleteBucketCorsCommand").f(void 0,void 0).ser(se_DeleteBucketCorsCommand).de(de_DeleteBucketCorsCommand).build()){};DeleteBucketEncryptionCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","DeleteBucketEncryption",{}).n("S3Client","DeleteBucketEncryptionCommand").f(void 0,void 0).ser(se_DeleteBucketEncryptionCommand).de(de_DeleteBucketEncryptionCommand).build()){};DeleteBucketIntelligentTieringConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","DeleteBucketIntelligentTieringConfiguration",{}).n("S3Client","DeleteBucketIntelligentTieringConfigurationCommand").f(void 0,void 0).ser(se_DeleteBucketIntelligentTieringConfigurationCommand).de(de_DeleteBucketIntelligentTieringConfigurationCommand).build()){};DeleteBucketInventoryConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","DeleteBucketInventoryConfiguration",{}).n("S3Client","DeleteBucketInventoryConfigurationCommand").f(void 0,void 0).ser(se_DeleteBucketInventoryConfigurationCommand).de(de_DeleteBucketInventoryConfigurationCommand).build()){};DeleteBucketLifecycleCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","DeleteBucketLifecycle",{}).n("S3Client","DeleteBucketLifecycleCommand").f(void 0,void 0).ser(se_DeleteBucketLifecycleCommand).de(de_DeleteBucketLifecycleCommand).build()){};DeleteBucketMetricsConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","DeleteBucketMetricsConfiguration",{}).n("S3Client","DeleteBucketMetricsConfigurationCommand").f(void 0,void 0).ser(se_DeleteBucketMetricsConfigurationCommand).de(de_DeleteBucketMetricsConfigurationCommand).build()){};DeleteBucketOwnershipControlsCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","DeleteBucketOwnershipControls",{}).n("S3Client","DeleteBucketOwnershipControlsCommand").f(void 0,void 0).ser(se_DeleteBucketOwnershipControlsCommand).de(de_DeleteBucketOwnershipControlsCommand).build()){};DeleteBucketPolicyCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","DeleteBucketPolicy",{}).n("S3Client","DeleteBucketPolicyCommand").f(void 0,void 0).ser(se_DeleteBucketPolicyCommand).de(de_DeleteBucketPolicyCommand).build()){};DeleteBucketReplicationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","DeleteBucketReplication",{}).n("S3Client","DeleteBucketReplicationCommand").f(void 0,void 0).ser(se_DeleteBucketReplicationCommand).de(de_DeleteBucketReplicationCommand).build()){};DeleteBucketTaggingCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","DeleteBucketTagging",{}).n("S3Client","DeleteBucketTaggingCommand").f(void 0,void 0).ser(se_DeleteBucketTaggingCommand).de(de_DeleteBucketTaggingCommand).build()){};DeleteBucketWebsiteCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","DeleteBucketWebsite",{}).n("S3Client","DeleteBucketWebsiteCommand").f(void 0,void 0).ser(se_DeleteBucketWebsiteCommand).de(de_DeleteBucketWebsiteCommand).build()){};DeleteObjectCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","DeleteObject",{}).n("S3Client","DeleteObjectCommand").f(void 0,void 0).ser(se_DeleteObjectCommand).de(de_DeleteObjectCommand).build()){};(function(ChecksumAlgorithm3){ChecksumAlgorithm3.MD5="MD5";ChecksumAlgorithm3.CRC32="CRC32";ChecksumAlgorithm3.CRC32C="CRC32C";ChecksumAlgorithm3.SHA1="SHA1";ChecksumAlgorithm3.SHA256="SHA256"})(ChecksumAlgorithm2||(ChecksumAlgorithm2={}));(function(ChecksumLocation2){ChecksumLocation2.HEADER="header";ChecksumLocation2.TRAILER="trailer"})(ChecksumLocation||(ChecksumLocation={}));DEFAULT_CHECKSUM_ALGORITHM=ChecksumAlgorithm2.MD5;S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM=ChecksumAlgorithm2.CRC32;CLIENT_SUPPORTED_ALGORITHMS=[ChecksumAlgorithm2.CRC32,ChecksumAlgorithm2.CRC32C,ChecksumAlgorithm2.SHA1,ChecksumAlgorithm2.SHA256];PRIORITY_ORDER_ALGORITHMS=[ChecksumAlgorithm2.CRC32,ChecksumAlgorithm2.CRC32C,ChecksumAlgorithm2.SHA1,ChecksumAlgorithm2.SHA256];getChecksumAlgorithmForRequest=(input,{requestChecksumRequired,requestAlgorithmMember},isS3Express)=>{const defaultAlgorithm=isS3Express?S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM:DEFAULT_CHECKSUM_ALGORITHM;if(!requestAlgorithmMember||!input[requestAlgorithmMember])return requestChecksumRequired?defaultAlgorithm:void 0;const checksumAlgorithm=input[requestAlgorithmMember];if(!CLIENT_SUPPORTED_ALGORITHMS.includes(checksumAlgorithm))throw new Error(`The checksum algorithm "${checksumAlgorithm}" is not supported by the client. Select one of ${CLIENT_SUPPORTED_ALGORITHMS}.`);return checksumAlgorithm};getChecksumLocationName=algorithm=>algorithm===ChecksumAlgorithm2.MD5?"content-md5":`x-amz-checksum-${algorithm.toLowerCase()}`;hasHeader2=(header,headers)=>{const soughtHeader=header.toLowerCase();for(const headerName of Object.keys(headers))if(soughtHeader===headerName.toLowerCase())return!0;return!1};isStreaming=body=>void 0!==body&&"string"!=typeof body&&!ArrayBuffer.isView(body)&&!isArrayBuffer(body);AwsCrc32c=function(){function AwsCrc32c2(){this.crc32c=new Crc32c}AwsCrc32c2.prototype.update=function(toHash){isEmptyData2(toHash)||this.crc32c.update(convertToBuffer2(toHash))};AwsCrc32c2.prototype.digest=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(_a7){return[2,numToUint8(this.crc32c.digest())]}))}))};AwsCrc32c2.prototype.reset=function(){this.crc32c=new Crc32c};return AwsCrc32c2}();Crc32c=function(){function Crc32c2(){this.checksum=4294967295}Crc32c2.prototype.update=function(data){var e_1,_a7,data_1,data_1_1,byte;try{for(data_1_1=(data_1=__values(data)).next();!data_1_1.done;data_1_1=data_1.next()){byte=data_1_1.value;this.checksum=this.checksum>>>8^lookupTable2[255&(this.checksum^byte)]}}catch(e_1_1){e_1={error:e_1_1}}finally{try{data_1_1&&!data_1_1.done&&(_a7=data_1.return)&&_a7.call(data_1)}finally{if(e_1)throw e_1.error}}return this};Crc32c2.prototype.digest=function(){return(4294967295^this.checksum)>>>0};return Crc32c2}();lookupTable2=uint32ArrayFrom([0,4067132163,3778769143,324072436,3348797215,904991772,648144872,3570033899,2329499855,2024987596,1809983544,2575936315,1296289744,3207089363,2893594407,1578318884,274646895,3795141740,4049975192,51262619,3619967088,632279923,922689671,3298075524,2592579488,1760304291,2075979607,2312596564,1562183871,2943781820,3156637768,1313733451,549293790,3537243613,3246849577,871202090,3878099393,357341890,102525238,4101499445,2858735121,1477399826,1264559846,3107202533,1845379342,2677391885,2361733625,2125378298,820201905,3263744690,3520608582,598981189,4151959214,85089709,373468761,3827903834,3124367742,1213305469,1526817161,2842354314,2107672161,2412447074,2627466902,1861252501,1098587580,3004210879,2688576843,1378610760,2262928035,1955203488,1742404180,2511436119,3416409459,969524848,714683780,3639785095,205050476,4266873199,3976438427,526918040,1361435347,2739821008,2954799652,1114974503,2529119692,1691668175,2005155131,2247081528,3690758684,697762079,986182379,3366744552,476452099,3993867776,4250756596,255256311,1640403810,2477592673,2164122517,1922457750,2791048317,1412925310,1197962378,3037525897,3944729517,427051182,170179418,4165941337,746937522,3740196785,3451792453,1070968646,1905808397,2213795598,2426610938,1657317369,3053634322,1147748369,1463399397,2773627110,4215344322,153784257,444234805,3893493558,1021025245,3467647198,3722505002,797665321,2197175160,1889384571,1674398607,2443626636,1164749927,3070701412,2757221520,1446797203,137323447,4198817972,3910406976,461344835,3484808360,1037989803,781091935,3705997148,2460548119,1623424788,1939049696,2180517859,1429367560,2807687179,3020495871,1180866812,410100952,3927582683,4182430767,186734380,3756733383,763408580,1053836080,3434856499,2722870694,1344288421,1131464017,2971354706,1708204729,2545590714,2229949006,1988219213,680717673,3673779818,3383336350,1002577565,4010310262,493091189,238226049,4233660802,2987750089,1082061258,1395524158,2705686845,1972364758,2279892693,2494862625,1725896226,952904198,3399985413,3656866545,731699698,4283874585,222117402,510512622,3959836397,3280807620,837199303,582374963,3504198960,68661723,4135334616,3844915500,390545967,1230274059,3141532936,2825850620,1510247935,2395924756,2091215383,1878366691,2644384480,3553878443,565732008,854102364,3229815391,340358836,3861050807,4117890627,119113024,1493875044,2875275879,3090270611,1247431312,2660249211,1828433272,2141937292,2378227087,3811616794,291187481,34330861,4032846830,615137029,3603020806,3314634738,939183345,1776939221,2609017814,2295496738,2058945313,2926798794,1545135305,1330124605,3173225534,4084100981,17165430,307568514,3762199681,888469610,3332340585,3587147933,665062302,2042050490,2346497209,2559330125,1793573966,3190661285,1279665062,1595330642,2910671697]);selectChecksumAlgorithmFunction=(checksumAlgorithm,config)=>({[ChecksumAlgorithm2.MD5]:config.md5,[ChecksumAlgorithm2.CRC32]:AwsCrc32,[ChecksumAlgorithm2.CRC32C]:AwsCrc32c,[ChecksumAlgorithm2.SHA1]:config.sha1,[ChecksumAlgorithm2.SHA256]:config.sha256}[checksumAlgorithm]);stringHasher=(checksumAlgorithmFn,body)=>{const hash3=new checksumAlgorithmFn;hash3.update(toUint8Array(body||""));return hash3.digest()};flexibleChecksumsMiddlewareOptions={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:!0};flexibleChecksumsMiddleware=(config,middlewareConfig)=>(next2,context2)=>async args=>{if(!HttpRequest.isInstance(args.request))return next2(args);const{request:request2}=args,{body:requestBody,headers}=request2,{base64Encoder,streamHasher}=config,{input,requestChecksumRequired,requestAlgorithmMember}=middlewareConfig,checksumAlgorithm=getChecksumAlgorithmForRequest(input,{requestChecksumRequired,requestAlgorithmMember},!!context2.isS3ExpressBucket);let updatedBody=requestBody,updatedHeaders=headers;if(checksumAlgorithm){const checksumLocationName=getChecksumLocationName(checksumAlgorithm),checksumAlgorithmFn=selectChecksumAlgorithmFunction(checksumAlgorithm,config);if(isStreaming(requestBody)){const{getAwsChunkedEncodingStream:getAwsChunkedEncodingStream2,bodyLengthChecker}=config;updatedBody=getAwsChunkedEncodingStream2(requestBody,{base64Encoder,bodyLengthChecker,checksumLocationName,checksumAlgorithmFn,streamHasher});updatedHeaders={...headers,"content-encoding":headers["content-encoding"]?`${headers["content-encoding"]},aws-chunked`:"aws-chunked","transfer-encoding":"chunked","x-amz-decoded-content-length":headers["content-length"],"x-amz-content-sha256":"STREAMING-UNSIGNED-PAYLOAD-TRAILER","x-amz-trailer":checksumLocationName};delete updatedHeaders["content-length"]}else if(!hasHeader2(checksumLocationName,headers)){const rawChecksum=await stringHasher(checksumAlgorithmFn,requestBody);updatedHeaders={...headers,[checksumLocationName]:base64Encoder(rawChecksum)}}}return await next2({...args,request:{...request2,headers:updatedHeaders,body:updatedBody}})};getChecksumAlgorithmListForResponse=(responseAlgorithms=[])=>{const validChecksumAlgorithms=[];for(const algorithm of PRIORITY_ORDER_ALGORITHMS)responseAlgorithms.includes(algorithm)&&CLIENT_SUPPORTED_ALGORITHMS.includes(algorithm)&&validChecksumAlgorithms.push(algorithm);return validChecksumAlgorithms};isChecksumWithPartNumber=checksum=>{const lastHyphenIndex=checksum.lastIndexOf("-");if(-1!==lastHyphenIndex){const numberPart=checksum.slice(lastHyphenIndex+1);if(!numberPart.startsWith("0")){const number=parseInt(numberPart,10);if(!isNaN(number)&&number>=1&&number<=1e4)return!0}}return!1};getChecksum=async(body,{streamHasher,checksumAlgorithmFn,base64Encoder})=>{const digest=isStreaming(body)?streamHasher(checksumAlgorithmFn,body):stringHasher(checksumAlgorithmFn,body);return base64Encoder(await digest)};validateChecksumFromResponse=async(response,{config,responseAlgorithms})=>{const checksumAlgorithms=getChecksumAlgorithmListForResponse(responseAlgorithms),{body:responseBody,headers:responseHeaders}=response;for(const algorithm of checksumAlgorithms){const responseHeader=getChecksumLocationName(algorithm),checksumFromResponse=responseHeaders[responseHeader];if(checksumFromResponse){const checksumAlgorithmFn=selectChecksumAlgorithmFunction(algorithm,config),{streamHasher,base64Encoder}=config,checksum=await getChecksum(responseBody,{streamHasher,checksumAlgorithmFn,base64Encoder});if(checksum===checksumFromResponse)break;throw new Error(`Checksum mismatch: expected "${checksum}" but received "${checksumFromResponse}" in response header "${responseHeader}".`)}}};flexibleChecksumsResponseMiddlewareOptions={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:!0};flexibleChecksumsResponseMiddleware=(config,middlewareConfig)=>(next2,context2)=>async args=>{if(!HttpRequest.isInstance(args.request))return next2(args);const input=args.input,result=await next2(args),response=result.response;let collectedStream;const{requestValidationModeMember,responseAlgorithms}=middlewareConfig;if(requestValidationModeMember&&"ENABLED"===input[requestValidationModeMember]){const{clientName,commandName}=context2;if("S3Client"===clientName&&"GetObjectCommand"===commandName&&getChecksumAlgorithmListForResponse(responseAlgorithms).every((algorithm=>{const responseHeader=getChecksumLocationName(algorithm),checksumFromResponse=response.headers[responseHeader];return!checksumFromResponse||isChecksumWithPartNumber(checksumFromResponse)})))return result;const isStreamingBody=isStreaming(response.body);if(isStreamingBody){collectedStream=await config.streamCollector(response.body);response.body=createReadStreamOnBuffer(collectedStream)}await validateChecksumFromResponse(result.response,{config,responseAlgorithms});isStreamingBody&&collectedStream&&(response.body=createReadStreamOnBuffer(collectedStream))}return result};getFlexibleChecksumsPlugin=(config,middlewareConfig)=>({applyToStack:clientStack=>{clientStack.add(flexibleChecksumsMiddleware(config,middlewareConfig),flexibleChecksumsMiddlewareOptions);clientStack.addRelativeTo(flexibleChecksumsResponseMiddleware(config,middlewareConfig),flexibleChecksumsResponseMiddlewareOptions)}});DeleteObjectsCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0}),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","DeleteObjects",{}).n("S3Client","DeleteObjectsCommand").f(void 0,void 0).ser(se_DeleteObjectsCommand).de(de_DeleteObjectsCommand).build()){};DeleteObjectTaggingCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","DeleteObjectTagging",{}).n("S3Client","DeleteObjectTaggingCommand").f(void 0,void 0).ser(se_DeleteObjectTaggingCommand).de(de_DeleteObjectTaggingCommand).build()){};DeletePublicAccessBlockCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","DeletePublicAccessBlock",{}).n("S3Client","DeletePublicAccessBlockCommand").f(void 0,void 0).ser(se_DeletePublicAccessBlockCommand).de(de_DeletePublicAccessBlockCommand).build()){};GetBucketAccelerateConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketAccelerateConfiguration",{}).n("S3Client","GetBucketAccelerateConfigurationCommand").f(void 0,void 0).ser(se_GetBucketAccelerateConfigurationCommand).de(de_GetBucketAccelerateConfigurationCommand).build()){};GetBucketAclCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketAcl",{}).n("S3Client","GetBucketAclCommand").f(void 0,void 0).ser(se_GetBucketAclCommand).de(de_GetBucketAclCommand).build()){};GetBucketAnalyticsConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketAnalyticsConfiguration",{}).n("S3Client","GetBucketAnalyticsConfigurationCommand").f(void 0,void 0).ser(se_GetBucketAnalyticsConfigurationCommand).de(de_GetBucketAnalyticsConfigurationCommand).build()){};GetBucketCorsCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketCors",{}).n("S3Client","GetBucketCorsCommand").f(void 0,void 0).ser(se_GetBucketCorsCommand).de(de_GetBucketCorsCommand).build()){};GetBucketEncryptionCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketEncryption",{}).n("S3Client","GetBucketEncryptionCommand").f(void 0,GetBucketEncryptionOutputFilterSensitiveLog).ser(se_GetBucketEncryptionCommand).de(de_GetBucketEncryptionCommand).build()){};GetBucketIntelligentTieringConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketIntelligentTieringConfiguration",{}).n("S3Client","GetBucketIntelligentTieringConfigurationCommand").f(void 0,void 0).ser(se_GetBucketIntelligentTieringConfigurationCommand).de(de_GetBucketIntelligentTieringConfigurationCommand).build()){};GetBucketInventoryConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketInventoryConfiguration",{}).n("S3Client","GetBucketInventoryConfigurationCommand").f(void 0,GetBucketInventoryConfigurationOutputFilterSensitiveLog).ser(se_GetBucketInventoryConfigurationCommand).de(de_GetBucketInventoryConfigurationCommand).build()){};GetBucketLifecycleConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketLifecycleConfiguration",{}).n("S3Client","GetBucketLifecycleConfigurationCommand").f(void 0,void 0).ser(se_GetBucketLifecycleConfigurationCommand).de(de_GetBucketLifecycleConfigurationCommand).build()){};GetBucketLocationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketLocation",{}).n("S3Client","GetBucketLocationCommand").f(void 0,void 0).ser(se_GetBucketLocationCommand).de(de_GetBucketLocationCommand).build()){};GetBucketLoggingCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketLogging",{}).n("S3Client","GetBucketLoggingCommand").f(void 0,void 0).ser(se_GetBucketLoggingCommand).de(de_GetBucketLoggingCommand).build()){};GetBucketMetricsConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketMetricsConfiguration",{}).n("S3Client","GetBucketMetricsConfigurationCommand").f(void 0,void 0).ser(se_GetBucketMetricsConfigurationCommand).de(de_GetBucketMetricsConfigurationCommand).build()){};GetBucketNotificationConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketNotificationConfiguration",{}).n("S3Client","GetBucketNotificationConfigurationCommand").f(void 0,void 0).ser(se_GetBucketNotificationConfigurationCommand).de(de_GetBucketNotificationConfigurationCommand).build()){};GetBucketOwnershipControlsCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketOwnershipControls",{}).n("S3Client","GetBucketOwnershipControlsCommand").f(void 0,void 0).ser(se_GetBucketOwnershipControlsCommand).de(de_GetBucketOwnershipControlsCommand).build()){};GetBucketPolicyCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketPolicy",{}).n("S3Client","GetBucketPolicyCommand").f(void 0,void 0).ser(se_GetBucketPolicyCommand).de(de_GetBucketPolicyCommand).build()){};GetBucketPolicyStatusCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketPolicyStatus",{}).n("S3Client","GetBucketPolicyStatusCommand").f(void 0,void 0).ser(se_GetBucketPolicyStatusCommand).de(de_GetBucketPolicyStatusCommand).build()){};GetBucketReplicationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketReplication",{}).n("S3Client","GetBucketReplicationCommand").f(void 0,void 0).ser(se_GetBucketReplicationCommand).de(de_GetBucketReplicationCommand).build()){};GetBucketRequestPaymentCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketRequestPayment",{}).n("S3Client","GetBucketRequestPaymentCommand").f(void 0,void 0).ser(se_GetBucketRequestPaymentCommand).de(de_GetBucketRequestPaymentCommand).build()){};GetBucketTaggingCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketTagging",{}).n("S3Client","GetBucketTaggingCommand").f(void 0,void 0).ser(se_GetBucketTaggingCommand).de(de_GetBucketTaggingCommand).build()){};GetBucketVersioningCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketVersioning",{}).n("S3Client","GetBucketVersioningCommand").f(void 0,void 0).ser(se_GetBucketVersioningCommand).de(de_GetBucketVersioningCommand).build()){};GetBucketWebsiteCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetBucketWebsite",{}).n("S3Client","GetBucketWebsiteCommand").f(void 0,void 0).ser(se_GetBucketWebsiteCommand).de(de_GetBucketWebsiteCommand).build()){};GetObjectAclCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetObjectAcl",{}).n("S3Client","GetObjectAclCommand").f(void 0,void 0).ser(se_GetObjectAclCommand).de(de_GetObjectAclCommand).build()){};GetObjectAttributesCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config),getSsecPlugin(config)]})).s("AmazonS3","GetObjectAttributes",{}).n("S3Client","GetObjectAttributesCommand").f(GetObjectAttributesRequestFilterSensitiveLog,void 0).ser(se_GetObjectAttributesCommand).de(de_GetObjectAttributesCommand).build()){};GetObjectCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestChecksumRequired:!1,requestValidationModeMember:"ChecksumMode",responseAlgorithms:["CRC32","CRC32C","SHA256","SHA1"]}),getSsecPlugin(config),getS3ExpiresMiddlewarePlugin()]})).s("AmazonS3","GetObject",{}).n("S3Client","GetObjectCommand").f(GetObjectRequestFilterSensitiveLog,GetObjectOutputFilterSensitiveLog).ser(se_GetObjectCommand).de(de_GetObjectCommand).build()){};GetObjectLegalHoldCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetObjectLegalHold",{}).n("S3Client","GetObjectLegalHoldCommand").f(void 0,void 0).ser(se_GetObjectLegalHoldCommand).de(de_GetObjectLegalHoldCommand).build()){};GetObjectLockConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetObjectLockConfiguration",{}).n("S3Client","GetObjectLockConfigurationCommand").f(void 0,void 0).ser(se_GetObjectLockConfigurationCommand).de(de_GetObjectLockConfigurationCommand).build()){};GetObjectRetentionCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetObjectRetention",{}).n("S3Client","GetObjectRetentionCommand").f(void 0,void 0).ser(se_GetObjectRetentionCommand).de(de_GetObjectRetentionCommand).build()){};GetObjectTaggingCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetObjectTagging",{}).n("S3Client","GetObjectTaggingCommand").f(void 0,void 0).ser(se_GetObjectTaggingCommand).de(de_GetObjectTaggingCommand).build()){};GetObjectTorrentCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","GetObjectTorrent",{}).n("S3Client","GetObjectTorrentCommand").f(void 0,GetObjectTorrentOutputFilterSensitiveLog).ser(se_GetObjectTorrentCommand).de(de_GetObjectTorrentCommand).build()){};GetPublicAccessBlockCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","GetPublicAccessBlock",{}).n("S3Client","GetPublicAccessBlockCommand").f(void 0,void 0).ser(se_GetPublicAccessBlockCommand).de(de_GetPublicAccessBlockCommand).build()){};HeadBucketCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","HeadBucket",{}).n("S3Client","HeadBucketCommand").f(void 0,void 0).ser(se_HeadBucketCommand).de(de_HeadBucketCommand).build()){};HeadObjectCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config),getSsecPlugin(config),getS3ExpiresMiddlewarePlugin()]})).s("AmazonS3","HeadObject",{}).n("S3Client","HeadObjectCommand").f(HeadObjectRequestFilterSensitiveLog,HeadObjectOutputFilterSensitiveLog).ser(se_HeadObjectCommand).de(de_HeadObjectCommand).build()){};ListBucketAnalyticsConfigurationsCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","ListBucketAnalyticsConfigurations",{}).n("S3Client","ListBucketAnalyticsConfigurationsCommand").f(void 0,void 0).ser(se_ListBucketAnalyticsConfigurationsCommand).de(de_ListBucketAnalyticsConfigurationsCommand).build()){};ListBucketIntelligentTieringConfigurationsCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","ListBucketIntelligentTieringConfigurations",{}).n("S3Client","ListBucketIntelligentTieringConfigurationsCommand").f(void 0,void 0).ser(se_ListBucketIntelligentTieringConfigurationsCommand).de(de_ListBucketIntelligentTieringConfigurationsCommand).build()){};ListBucketInventoryConfigurationsCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","ListBucketInventoryConfigurations",{}).n("S3Client","ListBucketInventoryConfigurationsCommand").f(void 0,ListBucketInventoryConfigurationsOutputFilterSensitiveLog).ser(se_ListBucketInventoryConfigurationsCommand).de(de_ListBucketInventoryConfigurationsCommand).build()){};ListBucketMetricsConfigurationsCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","ListBucketMetricsConfigurations",{}).n("S3Client","ListBucketMetricsConfigurationsCommand").f(void 0,void 0).ser(se_ListBucketMetricsConfigurationsCommand).de(de_ListBucketMetricsConfigurationsCommand).build()){};ListBucketsCommand=class extends(Command.classBuilder().ep({...commonParams}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","ListBuckets",{}).n("S3Client","ListBucketsCommand").f(void 0,void 0).ser(se_ListBucketsCommand).de(de_ListBucketsCommand).build()){};ListDirectoryBucketsCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","ListDirectoryBuckets",{}).n("S3Client","ListDirectoryBucketsCommand").f(void 0,void 0).ser(se_ListDirectoryBucketsCommand).de(de_ListDirectoryBucketsCommand).build()){};ListMultipartUploadsCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","ListMultipartUploads",{}).n("S3Client","ListMultipartUploadsCommand").f(void 0,void 0).ser(se_ListMultipartUploadsCommand).de(de_ListMultipartUploadsCommand).build()){};ListObjectsCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","ListObjects",{}).n("S3Client","ListObjectsCommand").f(void 0,void 0).ser(se_ListObjectsCommand).de(de_ListObjectsCommand).build()){};ListObjectsV2Command=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","ListObjectsV2",{}).n("S3Client","ListObjectsV2Command").f(void 0,void 0).ser(se_ListObjectsV2Command).de(de_ListObjectsV2Command).build()){};ListObjectVersionsCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","ListObjectVersions",{}).n("S3Client","ListObjectVersionsCommand").f(void 0,void 0).ser(se_ListObjectVersionsCommand).de(de_ListObjectVersionsCommand).build()){};ListPartsCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config),getSsecPlugin(config)]})).s("AmazonS3","ListParts",{}).n("S3Client","ListPartsCommand").f(ListPartsRequestFilterSensitiveLog,void 0).ser(se_ListPartsCommand).de(de_ListPartsCommand).build()){};PutBucketAccelerateConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!1})]})).s("AmazonS3","PutBucketAccelerateConfiguration",{}).n("S3Client","PutBucketAccelerateConfigurationCommand").f(void 0,void 0).ser(se_PutBucketAccelerateConfigurationCommand).de(de_PutBucketAccelerateConfigurationCommand).build()){};PutBucketAclCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0})]})).s("AmazonS3","PutBucketAcl",{}).n("S3Client","PutBucketAclCommand").f(void 0,void 0).ser(se_PutBucketAclCommand).de(de_PutBucketAclCommand).build()){};PutBucketAnalyticsConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","PutBucketAnalyticsConfiguration",{}).n("S3Client","PutBucketAnalyticsConfigurationCommand").f(void 0,void 0).ser(se_PutBucketAnalyticsConfigurationCommand).de(de_PutBucketAnalyticsConfigurationCommand).build()){};PutBucketCorsCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0})]})).s("AmazonS3","PutBucketCors",{}).n("S3Client","PutBucketCorsCommand").f(void 0,void 0).ser(se_PutBucketCorsCommand).de(de_PutBucketCorsCommand).build()){};PutBucketEncryptionCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0})]})).s("AmazonS3","PutBucketEncryption",{}).n("S3Client","PutBucketEncryptionCommand").f(PutBucketEncryptionRequestFilterSensitiveLog,void 0).ser(se_PutBucketEncryptionCommand).de(de_PutBucketEncryptionCommand).build()){};PutBucketIntelligentTieringConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","PutBucketIntelligentTieringConfiguration",{}).n("S3Client","PutBucketIntelligentTieringConfigurationCommand").f(void 0,void 0).ser(se_PutBucketIntelligentTieringConfigurationCommand).de(de_PutBucketIntelligentTieringConfigurationCommand).build()){};PutBucketInventoryConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","PutBucketInventoryConfiguration",{}).n("S3Client","PutBucketInventoryConfigurationCommand").f(PutBucketInventoryConfigurationRequestFilterSensitiveLog,void 0).ser(se_PutBucketInventoryConfigurationCommand).de(de_PutBucketInventoryConfigurationCommand).build()){};PutBucketLifecycleConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0})]})).s("AmazonS3","PutBucketLifecycleConfiguration",{}).n("S3Client","PutBucketLifecycleConfigurationCommand").f(void 0,void 0).ser(se_PutBucketLifecycleConfigurationCommand).de(de_PutBucketLifecycleConfigurationCommand).build()){};PutBucketLoggingCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0})]})).s("AmazonS3","PutBucketLogging",{}).n("S3Client","PutBucketLoggingCommand").f(void 0,void 0).ser(se_PutBucketLoggingCommand).de(de_PutBucketLoggingCommand).build()){};PutBucketMetricsConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","PutBucketMetricsConfiguration",{}).n("S3Client","PutBucketMetricsConfigurationCommand").f(void 0,void 0).ser(se_PutBucketMetricsConfigurationCommand).de(de_PutBucketMetricsConfigurationCommand).build()){};PutBucketNotificationConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","PutBucketNotificationConfiguration",{}).n("S3Client","PutBucketNotificationConfigurationCommand").f(void 0,void 0).ser(se_PutBucketNotificationConfigurationCommand).de(de_PutBucketNotificationConfigurationCommand).build()){};PutBucketOwnershipControlsCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestChecksumRequired:!0})]})).s("AmazonS3","PutBucketOwnershipControls",{}).n("S3Client","PutBucketOwnershipControlsCommand").f(void 0,void 0).ser(se_PutBucketOwnershipControlsCommand).de(de_PutBucketOwnershipControlsCommand).build()){};PutBucketPolicyCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0})]})).s("AmazonS3","PutBucketPolicy",{}).n("S3Client","PutBucketPolicyCommand").f(void 0,void 0).ser(se_PutBucketPolicyCommand).de(de_PutBucketPolicyCommand).build()){};PutBucketReplicationCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0})]})).s("AmazonS3","PutBucketReplication",{}).n("S3Client","PutBucketReplicationCommand").f(void 0,void 0).ser(se_PutBucketReplicationCommand).de(de_PutBucketReplicationCommand).build()){};PutBucketRequestPaymentCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0})]})).s("AmazonS3","PutBucketRequestPayment",{}).n("S3Client","PutBucketRequestPaymentCommand").f(void 0,void 0).ser(se_PutBucketRequestPaymentCommand).de(de_PutBucketRequestPaymentCommand).build()){};PutBucketTaggingCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0})]})).s("AmazonS3","PutBucketTagging",{}).n("S3Client","PutBucketTaggingCommand").f(void 0,void 0).ser(se_PutBucketTaggingCommand).de(de_PutBucketTaggingCommand).build()){};PutBucketVersioningCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0})]})).s("AmazonS3","PutBucketVersioning",{}).n("S3Client","PutBucketVersioningCommand").f(void 0,void 0).ser(se_PutBucketVersioningCommand).de(de_PutBucketVersioningCommand).build()){};PutBucketWebsiteCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0})]})).s("AmazonS3","PutBucketWebsite",{}).n("S3Client","PutBucketWebsiteCommand").f(void 0,void 0).ser(se_PutBucketWebsiteCommand).de(de_PutBucketWebsiteCommand).build()){};PutObjectAclCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0}),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","PutObjectAcl",{}).n("S3Client","PutObjectAclCommand").f(void 0,void 0).ser(se_PutObjectAclCommand).de(de_PutObjectAclCommand).build()){};PutObjectCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!1}),getCheckContentLengthHeaderPlugin(),getThrow200ExceptionsPlugin(config),getSsecPlugin(config)]})).s("AmazonS3","PutObject",{}).n("S3Client","PutObjectCommand").f(PutObjectRequestFilterSensitiveLog,PutObjectOutputFilterSensitiveLog).ser(se_PutObjectCommand).de(de_PutObjectCommand).build()){};PutObjectLegalHoldCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0}),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","PutObjectLegalHold",{}).n("S3Client","PutObjectLegalHoldCommand").f(void 0,void 0).ser(se_PutObjectLegalHoldCommand).de(de_PutObjectLegalHoldCommand).build()){};PutObjectLockConfigurationCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0}),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","PutObjectLockConfiguration",{}).n("S3Client","PutObjectLockConfigurationCommand").f(void 0,void 0).ser(se_PutObjectLockConfigurationCommand).de(de_PutObjectLockConfigurationCommand).build()){};PutObjectRetentionCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0}),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","PutObjectRetention",{}).n("S3Client","PutObjectRetentionCommand").f(void 0,void 0).ser(se_PutObjectRetentionCommand).de(de_PutObjectRetentionCommand).build()){};PutObjectTaggingCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0}),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","PutObjectTagging",{}).n("S3Client","PutObjectTaggingCommand").f(void 0,void 0).ser(se_PutObjectTaggingCommand).de(de_PutObjectTaggingCommand).build()){};PutPublicAccessBlockCommand=class extends(Command.classBuilder().ep({...commonParams,UseS3ExpressControlEndpoint:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!0})]})).s("AmazonS3","PutPublicAccessBlock",{}).n("S3Client","PutPublicAccessBlockCommand").f(void 0,void 0).ser(se_PutPublicAccessBlockCommand).de(de_PutPublicAccessBlockCommand).build()){};RestoreObjectCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!1}),getThrow200ExceptionsPlugin(config)]})).s("AmazonS3","RestoreObject",{}).n("S3Client","RestoreObjectCommand").f(RestoreObjectRequestFilterSensitiveLog,void 0).ser(se_RestoreObjectCommand).de(de_RestoreObjectCommand).build()){};SelectObjectContentCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config),getSsecPlugin(config)]})).s("AmazonS3","SelectObjectContent",{eventStream:{output:!0}}).n("S3Client","SelectObjectContentCommand").f(SelectObjectContentRequestFilterSensitiveLog,SelectObjectContentOutputFilterSensitiveLog).ser(se_SelectObjectContentCommand).de(de_SelectObjectContentCommand).build()){};UploadPartCommand=class extends(Command.classBuilder().ep({...commonParams,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getFlexibleChecksumsPlugin(config,{input:this.input,requestAlgorithmMember:"ChecksumAlgorithm",requestChecksumRequired:!1}),getThrow200ExceptionsPlugin(config),getSsecPlugin(config)]})).s("AmazonS3","UploadPart",{}).n("S3Client","UploadPartCommand").f(UploadPartRequestFilterSensitiveLog,UploadPartOutputFilterSensitiveLog).ser(se_UploadPartCommand).de(de_UploadPartCommand).build()){};UploadPartCopyCommand=class extends(Command.classBuilder().ep({...commonParams,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions()),getThrow200ExceptionsPlugin(config),getSsecPlugin(config)]})).s("AmazonS3","UploadPartCopy",{}).n("S3Client","UploadPartCopyCommand").f(UploadPartCopyRequestFilterSensitiveLog,UploadPartCopyOutputFilterSensitiveLog).ser(se_UploadPartCopyCommand).de(de_UploadPartCopyCommand).build()){};WriteGetObjectResponseCommand=class extends(Command.classBuilder().ep({...commonParams,UseObjectLambdaEndpoint:{type:"staticContextParams",value:!0}}).m((function(Command2,cs2,config,o2){return[getSerdePlugin(config,this.serialize,this.deserialize),getEndpointPlugin(config,Command2.getEndpointParameterInstructions())]})).s("AmazonS3","WriteGetObjectResponse",{}).n("S3Client","WriteGetObjectResponseCommand").f(WriteGetObjectResponseRequestFilterSensitiveLog,void 0).ser(se_WriteGetObjectResponseCommand).de(de_WriteGetObjectResponseCommand).build()){};createAggregatedClient({AbortMultipartUploadCommand,CompleteMultipartUploadCommand,CopyObjectCommand,CreateBucketCommand,CreateMultipartUploadCommand,CreateSessionCommand,DeleteBucketCommand,DeleteBucketAnalyticsConfigurationCommand,DeleteBucketCorsCommand,DeleteBucketEncryptionCommand,DeleteBucketIntelligentTieringConfigurationCommand,DeleteBucketInventoryConfigurationCommand,DeleteBucketLifecycleCommand,DeleteBucketMetricsConfigurationCommand,DeleteBucketOwnershipControlsCommand,DeleteBucketPolicyCommand,DeleteBucketReplicationCommand,DeleteBucketTaggingCommand,DeleteBucketWebsiteCommand,DeleteObjectCommand,DeleteObjectsCommand,DeleteObjectTaggingCommand,DeletePublicAccessBlockCommand,GetBucketAccelerateConfigurationCommand,GetBucketAclCommand,GetBucketAnalyticsConfigurationCommand,GetBucketCorsCommand,GetBucketEncryptionCommand,GetBucketIntelligentTieringConfigurationCommand,GetBucketInventoryConfigurationCommand,GetBucketLifecycleConfigurationCommand,GetBucketLocationCommand,GetBucketLoggingCommand,GetBucketMetricsConfigurationCommand,GetBucketNotificationConfigurationCommand,GetBucketOwnershipControlsCommand,GetBucketPolicyCommand,GetBucketPolicyStatusCommand,GetBucketReplicationCommand,GetBucketRequestPaymentCommand,GetBucketTaggingCommand,GetBucketVersioningCommand,GetBucketWebsiteCommand,GetObjectCommand,GetObjectAclCommand,GetObjectAttributesCommand,GetObjectLegalHoldCommand,GetObjectLockConfigurationCommand,GetObjectRetentionCommand,GetObjectTaggingCommand,GetObjectTorrentCommand,GetPublicAccessBlockCommand,HeadBucketCommand,HeadObjectCommand,ListBucketAnalyticsConfigurationsCommand,ListBucketIntelligentTieringConfigurationsCommand,ListBucketInventoryConfigurationsCommand,ListBucketMetricsConfigurationsCommand,ListBucketsCommand,ListDirectoryBucketsCommand,ListMultipartUploadsCommand,ListObjectsCommand,ListObjectsV2Command,ListObjectVersionsCommand,ListPartsCommand,PutBucketAccelerateConfigurationCommand,PutBucketAclCommand,PutBucketAnalyticsConfigurationCommand,PutBucketCorsCommand,PutBucketEncryptionCommand,PutBucketIntelligentTieringConfigurationCommand,PutBucketInventoryConfigurationCommand,PutBucketLifecycleConfigurationCommand,PutBucketLoggingCommand,PutBucketMetricsConfigurationCommand,PutBucketNotificationConfigurationCommand,PutBucketOwnershipControlsCommand,PutBucketPolicyCommand,PutBucketReplicationCommand,PutBucketRequestPaymentCommand,PutBucketTaggingCommand,PutBucketVersioningCommand,PutBucketWebsiteCommand,PutObjectCommand,PutObjectAclCommand,PutObjectLegalHoldCommand,PutObjectLockConfigurationCommand,PutObjectRetentionCommand,PutObjectTaggingCommand,PutPublicAccessBlockCommand,RestoreObjectCommand,SelectObjectContentCommand,UploadPartCommand,UploadPartCopyCommand,WriteGetObjectResponseCommand},S3=class extends S3Client{});CheckPointInfoDefault={lastLocalSeq:0,knownIDs:new Set,sentIDs:new Set,receivedFiles:new Set,sentFiles:new Set};PREFIX_TRENCH="trench";idx=0;series=`${Date.now()}`;indexes=new Map;inProgress=new Set;failed=new Map;Trench=class{constructor(db,flushExistItems=!0){Object.defineProperty(this,"_db",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"_flushTask",{enumerable:!0,configurable:!0,writable:!0,value:void 0});Object.defineProperty(this,"concealing",{enumerable:!0,configurable:!0,writable:!0,value:new Map});this._db=db;flushExistItems&&(this._flushTask=(async()=>{const keys3=await db.keys(`${PREFIX_TRENCH}-ephemeral`,`${PREFIX_TRENCH}-ephemeral.`);for(const key2 of keys3)await db.delete(key2)})())}async eraseAllEphemerals(){const keys3=await this._db.keys(`${PREFIX_TRENCH}-ephemeral`,`${PREFIX_TRENCH}-ephemeral.`);for(const key2 of keys3)await this._db.delete(key2)}async eraseAllPermanences(){const keys3=await this._db.keys(`${PREFIX_TRENCH}-permanent`,`${PREFIX_TRENCH}-permanent.`);for(const key2 of keys3)await this._db.delete(key2)}conceal(obj){const key2=generateId("ephemeral");this.concealing.set(key2,obj);this._db.set(key2,obj).then((async e3=>{this.concealing.has(key2)?this.concealing.delete(key2):await this._db.delete(key2)}));return key2}async bury(key2){this.concealing.has(key2)&&this.concealing.delete(key2);await this._db.delete(key2)}async expose(key2){if(this.concealing.has(key2)){const value=this.concealing.get(key2);this.concealing.delete(key2);return value}const obj=await this._db.get(key2);await this._db.delete(key2);return obj}_evacuate(storeTask,key2){return async()=>{if(this._flushTask){await this._flushTask;this._flushTask=void 0}await storeTask;const item=await this._db.get(key2);await this._db.delete(key2);return item}}evacuatePromise(task){const key2=generateId("ephemeral"),storeTask=(async()=>{const data=await task;await this._db.set(key2,data)})();return this._evacuate(storeTask,key2)}evacuate(obj){if(obj instanceof Promise)return this.evacuatePromise(obj);const key2=generateId("ephemeral"),storeTask=this._db.set(key2,obj);return this._evacuate(storeTask,key2)}async _queue(type,key2,obj,index6){var _a7;if(void 0===index6){index6=null!=(_a7=indexes.get(key2))?_a7:0;indexes.set(key2,index6+1)}const storeKey=function createId(prefix,series2,idx2){return`${PREFIX_TRENCH}-${prefix}-${series2}-${idx2+1e7}`}(type,key2,index6);await this._db.set(storeKey,obj)}async _dequeue(type,key2){const range2=createRange(type,key2),keys3=(await this._db.keys(range2[0],range2[1])).filter((e3=>!inProgress.has(e3)));if(0!==keys3.length)return await this.expose(keys3[0])}async _dequeueWithCommit(type,key2){const range2=createRange(type,key2),keysAll=await this._db.keys(range2[0],range2[1]),keys3=keysAll.filter((e3=>!inProgress.has(e3)));if(0===keys3.length)return;const storeKey=keys3[0];inProgress.add(storeKey);const previousFailed=failed.get(storeKey)||0,value=await this._db.get(storeKey);return{key:storeKey,value,cancelCount:previousFailed,pendingItems:keysAll.length-1,commit:async()=>{await this._db.delete(storeKey);failed.delete(storeKey);inProgress.delete(storeKey)},cancel:()=>{failed.set(storeKey,(failed.get(storeKey)||0)+1);inProgress.delete(storeKey)}}}queue(key2,obj,index6){return this._queue("ephemeral",key2,obj,index6)}dequeue(key2){return this._dequeue("ephemeral",key2)}dequeueWithCommit(key2){return this._dequeueWithCommit("ephemeral",key2)}queuePermanent(key2,obj,index6){return this._queue("permanent",key2,obj,index6)}dequeuePermanent(key2){return this._dequeue("permanent",key2)}dequeuePermanentWithCommit(key2){return this._dequeueWithCommit("permanent",key2)}};RECORD_SPLIT="\n";UNIT_SPLIT="";te4=new TextEncoder;JournalSyncAbstract=class{constructor(id,key2,endpoint,bucket,store,env,useCustomRequestHandler,region=""){this.id="";this.key="";this.bucket="";this.endpoint="";this.region="auto";this.hash="";this.batchSize=100;this.requestedStop=!1;this.notifier=new Notifier;this._currentCheckPointInfo={...CheckPointInfoDefault};this.isPacking=!1;this.isDownloading=!1;this.id=id;this.key=key2;this.bucket=bucket;this.endpoint=endpoint;this.region=region;this.db=env.getDatabase();this.env=env;this.useCustomRequestHandler=useCustomRequestHandler;this.processReplication=async docs=>await env.$$parseReplicationResult(docs);this.store=store;this.hash=this.getHash(endpoint,bucket,region);this.trench=new Trench(store)}getHash(endpoint,bucket,region){return btoa(encodeURI([endpoint,bucket,region].join()))}applyNewConfig(id,key2,endpoint,bucket,store,env,useCustomRequestHandler,region=""){this.id=id;this.key=key2;this.bucket=bucket;this.endpoint=endpoint;this.region=region;this.db=env.getDatabase();this.env=env;this.useCustomRequestHandler=useCustomRequestHandler;this.processReplication=async docs=>await env.$$parseReplicationResult(docs);this.store=store;this.hash=this.getHash(endpoint,bucket,region)}updateInfo(info3){var _a7,_b3,_c2,_d2,_e2,_f,_g;const old=this.env.replicationStat.value;this.env.replicationStat.value={sent:null!=(_a7=info3.sent)?_a7:old.sent,arrived:null!=(_b3=info3.arrived)?_b3:old.arrived,maxPullSeq:null!=(_c2=info3.maxPullSeq)?_c2:old.maxPullSeq,maxPushSeq:null!=(_d2=info3.maxPushSeq)?_d2:old.maxPushSeq,lastSyncPullSeq:null!=(_e2=info3.lastSyncPullSeq)?_e2:old.lastSyncPullSeq,lastSyncPushSeq:null!=(_f=info3.lastSyncPushSeq)?_f:old.lastSyncPushSeq,syncStatus:null!=(_g=info3.syncStatus)?_g:old.syncStatus}}async updateCheckPointInfo(func){const checkPointKey=`bucketsync-checkpoint-${this.hash}`,newInfo=func(await this.getCheckpointInfo());this._currentCheckPointInfo=newInfo;await this.store.set(checkPointKey,newInfo);return newInfo}async getCheckpointInfo(){const checkPointKey=`bucketsync-checkpoint-${this.hash}`,old=await this.store.get(checkPointKey)||{},items=["knownIDs","sentIDs","receivedFiles","sentFiles"];for(const key2 of items)key2 in old&&(Array.isArray(old[key2]),1)&&(old[key2]=new Set(old[key2]));this._currentCheckPointInfo={...CheckPointInfoDefault,...old};return this._currentCheckPointInfo}async resetAllCaches(){await this.trench.eraseAllPermanences()}async resetCheckpointInfo(){await this.updateCheckPointInfo((info3=>({...CheckPointInfoDefault})))}async _createJournalPack(override){const checkPointInfo=await this.getCheckpointInfo(),from=override||checkPointInfo.lastLocalSeq;Logger(`Journal reading from seq:${from}`,LOG_LEVEL_VERBOSE);let knownKeyCount=0,sendKeyCount=0;const allChangesTask=this.db.changes({live:!1,since:override||from,conflicts:!0,limit:this.batchSize,return_docs:!0,attachments:!1,style:"all_docs",filter:doc=>{const key2=this.getDocKey(doc);if(this._currentCheckPointInfo.knownIDs.has(key2)){knownKeyCount++;return!1}if(this._currentCheckPointInfo.sentIDs.has(key2)){knownKeyCount++;return!1}sendKeyCount++;return!0}}),allChanges=await allChangesTask;if(0==allChanges.results.length)return{changes:[],hasNext:!1,packLastSeq:allChanges.last_seq};Logger(`${sendKeyCount} items possibly needs to be sent (${knownKeyCount} keys has been received before)`,-1);const bd2=await this.db.bulkGet({docs:allChanges.results.map((e3=>e3.changes.map((change=>({id:e3.id,rev:change.rev}))))).flat(),revs:!0}),packLastSeq=allChanges.last_seq,hasNext=packLastSeq<(await this.db.info()).update_seq;return{changes:bd2.results.map((e3=>e3.docs)).flat().filter((e3=>"ok"in e3)).map((e3=>e3.ok)),hasNext,packLastSeq}}getDocKey(doc){return doc&&doc._id.startsWith("h:")?doc._id:doc._id+"-"+doc._rev}async uploadQueued(showMessage=!1,wrapUp=!1){return await shareRunningResult("upload_queue",(async()=>{const TASK_TITLE="Uploading journal:",logLevel=showMessage?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO;let uploaded=0;do{const queued=await this.trench.dequeuePermanentWithCommit("upload_queue");if(!queued){if(this.isPacking){Logger(`${TASK_TITLE} Queue run out, but process is running. wait for the next.`,LOG_LEVEL_VERBOSE);await Promise.race([this.notifier.nextNotify,delay(3e3)]);continue}uploaded?Logger(`${TASK_TITLE}: ${uploaded} files have been uploaded!`,logLevel,"send_journal"):wrapUp||Logger("No files needs to be uploaded!",logLevel,"send_journal");return!0}const{key:key2,value,commit,cancel:cancel2,cancelCount,pendingItems}=queued;this.updateInfo({sent:uploaded,maxPushSeq:pendingItems+uploaded,lastSyncPushSeq:1});Logger(`${TASK_TITLE} ${uploaded} / ${pendingItems+uploaded}${0!=cancelCount?`\nRETRY:${cancelCount}`:""}`,logLevel,"send_journal");Logger(`${TASK_TITLE} ${key2} ${0!=cancelCount?`TRY:${cancelCount}`:""} ${pendingItems} left`,LOG_LEVEL_VERBOSE);if(cancelCount>3){Logger(`${TASK_TITLE} Something went wrong on processing queue ${key2}.`,LOG_LEVEL_NOTICE);return!1}const filename=`${Date.now()}-docs.jsonl.gz`,mime="application/octet-stream",blob=new Blob([value],{type:mime});try{if(!await this.uploadFile(filename,blob,mime))throw new Error("Could not send journalPack to the bucket");await commit();uploaded++;await this.updateCheckPointInfo((info3=>({...info3,sentFiles:info3.sentFiles.add(filename)})));Logger(`${TASK_TITLE}: Uploaded ${key2} as ${filename}`,LOG_LEVEL_INFO)}catch(ex){Logger(`${TASK_TITLE} Could not send journalPack to the bucket (${key2} as ${filename})`,LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_VERBOSE);Logger(`${TASK_TITLE} Uploading ${key2} cancelled for retry`,LOG_LEVEL_VERBOSE);cancel2();await delay(1e3);continue}}while(0==this.requestedStop)}))}async packAndCompress(showMessage=!1){return await shareRunningResult("create_send_data",(async()=>{try{this.isPacking=!0;const MSG_KEY="pack_journal",logLevel=showMessage?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO;this.requestedStop=!1;const checkPointInfo=await this.getCheckpointInfo(),max3=(await this.db.info()).update_seq,sentIDs=checkPointInfo.sentIDs,maxOutBufLength=250,maxBinarySize=10485760;let currentLastSeq=checkPointInfo.lastLocalSeq,binarySize=0;const outBuf=[];let isFinished=!1;const startSeq=checkPointInfo.lastLocalSeq,seqToProcess=max3-startSeq;Logger("Packing Journal: Start sending",logLevel,MSG_KEY);do{if(this.requestedStop){Logger("Packing Journal : Stop requested",logLevel,MSG_KEY);isFinished=!0;break}const{changes:changes3,hasNext,packLastSeq}=await this._createJournalPack(currentLastSeq),currentSeq=packLastSeq-startSeq;if(0==changes3.length)isFinished=!0;else{Logger(`Packing Journal: ${currentSeq} / ${seqToProcess}`,logLevel,MSG_KEY);for(const row of changes3){const serialized2=serializeDoc(row);sentIDs.add(this.getDocKey(row));binarySize+=serialized2.length;outBuf.push(serialized2);if(outBuf.length>maxOutBufLength||binarySize>maxBinarySize){const sendBuf=concatUInt8Array(outBuf),orgLen=sendBuf.byteLength,bin=await wrappedDeflate(sendBuf,{consume:!0,level:8});Logger(`Packing Journal: Compressed ${orgLen} bytes to ${bin.byteLength} bytes (${0!=orgLen?Math.ceil(bin.byteLength/orgLen*100):"--"}%)`,LOG_LEVEL_VERBOSE);await this.trench.queuePermanent("upload_queue",bin);this.notifier.notify();outBuf.length=0;binarySize=0}}}if(outBuf.length>0){const sendBuf=concatUInt8Array(outBuf),orgLen=sendBuf.byteLength,bin=await wrappedDeflate(sendBuf,{consume:!0,level:8});Logger(`Packing Journal: Compressed ${orgLen} bytes to ${bin.byteLength} bytes (${0!=orgLen?Math.ceil(bin.byteLength/orgLen*100):"--"}%)`,LOG_LEVEL_VERBOSE);await this.trench.queuePermanent("upload_queue",bin);this.notifier.notify()}await this.updateCheckPointInfo((info3=>({...info3,lastLocalSeq:packLastSeq,sentIDs})));currentLastSeq=packLastSeq;if(!hasNext){isFinished=!0;break}}while(0==this.requestedStop&&!isFinished);Logger(0!=seqToProcess?`Packing Journal: Packaging ${seqToProcess}`:"Packing Journal: No journals to be packed!",logLevel,MSG_KEY);this.notifier.notify();return!0}finally{this.isPacking=!1;this.notifier.notify()}}))}async sendLocalJournal(showMessage=!1){this.updateInfo({syncStatus:"JOURNAL_SEND"});if((await Promise.all([this.packAndCompress(showMessage),this.uploadQueued(showMessage)])).every((e3=>e3))&&await this.uploadQueued(showMessage,!0)){this.updateInfo({syncStatus:"COMPLETED"});return!0}this.updateInfo({syncStatus:"ERRORED"});return!1}async _getRemoteJournals(){const StartAfter=[...(await this.getCheckpointInfo()).receivedFiles.keys()].sort(((a2,b3)=>b3.localeCompare(a2,void 0,{numeric:!0})))[0],files=(await this.listFiles(StartAfter)).filter((e3=>!e3.startsWith("_")));return files?files.sort(((a2,b3)=>a2.localeCompare(b3,void 0,{numeric:!0}))):[]}async processDocuments(allDocs2){let applyTotal=0,wholeItems=0;try{const chunks=[],docs=[];allDocs2.forEach((e3=>{e3._id.startsWith("h:")?chunks.push(e3):docs.push(e3)}));try{const e22=(await this.db.allDocs({include_docs:!0,keys:[...chunks.map((e3=>e3._id))]})).rows.map((e3=>{var _a7;return null!=(_a7=e3.id)?_a7:void 0})),existChunks=new Set(e22.filter((e3=>void 0!==e3))),saveChunks=chunks.filter((e3=>!existChunks.has(e3._id))).map((e3=>({...e3,_rev:void 0}))),ret=await this.db.bulkDocs(saveChunks,{new_edits:!0}),saveError=ret.filter((e3=>"error"in e3)).map((e3=>e3.id));saveChunks.filter((e3=>-1===saveError.indexOf(e3._id))).forEach((doc=>globalSlipBoard2.submit("read-chunk",doc._id,doc)));await this.updateCheckPointInfo((info3=>({...info3,knownIDs:setAllItems(info3.knownIDs,chunks.map((e3=>this.getDocKey(e3))))})));Logger(`Saved ${ret.length} chunks in transferred ${chunks.length} chunks (Error:${saveError.length})`,LOG_LEVEL_VERBOSE)}catch(ex){Logger("Applying chunks failed",LOG_LEVEL_INFO);Logger(ex,LOG_LEVEL_VERBOSE)}const docsRevs=docs.map((e3=>({[e3._id]:e3._revisions.ids.map(((rev3,i2)=>`${e3._revisions.start-i2}-${rev3}`))}))).reduce(((a2,b3)=>({...a2,...b3})),{}),diffRevs=await this.db.revsDiff(docsRevs),saveDocs=docs.filter((e3=>{var _a7;return e3._id in diffRevs&&"missing"in diffRevs[e3._id]&&((null==(_a7=diffRevs[e3._id].missing)?void 0:_a7.length)||0)>0}));Logger(`Applying ${saveDocs.length} docs (Total transferred:${docs.length}, docs:${allDocs2.length})`,LOG_LEVEL_VERBOSE);await this.db.bulkDocs(saveDocs,{new_edits:!1});await this.processReplication(saveDocs);await this.updateCheckPointInfo((info3=>({...info3,knownIDs:setAllItems(info3.knownIDs,docs.map((e3=>this.getDocKey(e3))))})));applyTotal+=saveDocs.length;wholeItems+=docs.length;Logger(`Applied ${applyTotal} of ${wholeItems} docs (${wholeItems-applyTotal} skipped)`,LOG_LEVEL_VERBOSE);return!0}catch(ex){Logger("Applying journal failed",LOG_LEVEL_INFO);Logger(ex,LOG_LEVEL_VERBOSE);return!1}}async processDownloadedJournals(showMessage=!1,wrapUp=!1){return await shareRunningResult("process_downloaded_journals",(async()=>{const logLevel=showMessage?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,TASK_TITLE="Processing journal:";let downloaded=0;do{const queued=await this.trench.dequeuePermanentWithCommit("parse_file");if(!queued){if(this.isDownloading){Logger(`${TASK_TITLE} Queue run out, but process is running. wait for the next.`,LOG_LEVEL_VERBOSE);await Promise.race([this.notifier.nextNotify,delay(3e3)]);continue}downloaded?Logger(`${TASK_TITLE} ${downloaded} files have been uploaded!`,logLevel,"send_journal"):wrapUp||Logger(`${TASK_TITLE} No files needs to be processed!`,logLevel,"send_journal");return!0}const{key:key2,value,commit,cancel:cancel2,cancelCount,pendingItems}=queued;this.updateInfo({arrived:downloaded,maxPullSeq:pendingItems+downloaded,lastSyncPullSeq:1});Logger(`${TASK_TITLE} ${downloaded} / ${pendingItems+downloaded}${0!=cancelCount?`\nRETRY:${cancelCount}`:""}`,logLevel,"processjournal");if(cancelCount>3){Logger(`${TASK_TITLE} Something went wrong on processing queue ${key2}.`,LOG_LEVEL_NOTICE);return!1}const decompressed=await wrappedInflate(value,{consume:!0});if(0==decompressed.length){await commit();downloaded++;Logger(`${TASK_TITLE}: ${key2} has been processed`,LOG_LEVEL_INFO);continue}let idxFrom=0,idxTo=0;const d4=new TextDecoder,result=[];do{idxTo=decompressed.indexOf(10,idxFrom);if(-1==idxTo)break;const piece=decompressed.slice(idxFrom,idxTo),strPiece=d4.decode(piece);if(strPiece.startsWith("~")){const[key3,data]=strPiece.substring(1).split(UNIT_SPLIT);result.push({_id:key3,data:(str=data,str.startsWith("\\f")?replaceAll(replaceAll(str.substring(2),"\\\\","\\"),"\\n","\n"):str),type:"leaf",_rev:""})}else result.push(JSON.parse(strPiece));idxFrom=idxTo+1}while(idxTo>0);try{if(!await this.processDocuments(result))throw new Error("Could not process downloaded journals");await commit();downloaded++;Logger(`${TASK_TITLE}: ${key2} has been processed`,LOG_LEVEL_INFO)}catch(ex){Logger(`${TASK_TITLE}: Could not process downloaded journals`,LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_VERBOSE);Logger(`${TASK_TITLE}: ${key2} cancelled for retry`,LOG_LEVEL_VERBOSE);cancel2();await delay(1e3);continue}}while(0==this.requestedStop);var str;return!0}))}async downloadRemoteJournals(showMessage=!1){return await shareRunningResult("downloadRemoteJournals",(async()=>{try{this.isDownloading=!0;const logLevel=showMessage?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO;Logger("Receiving Journal: Getting list of remote journal",logLevel,"receivejournal");const files=await this._getRemoteJournals();if(0==files.length){Logger("Receiving Journal: No journals needs to be downloaded",logLevel,"receivejournal");return!0}let count=0;for(const key2 of files){count++;Logger(`Receiving Journal: ${count} / ${files.length}`,logLevel,"receivejournal");if(this.requestedStop){Logger(`Receiving canceled: ${key2}`,logLevel);return!1}if(this._currentCheckPointInfo.sentFiles.has(key2)){Logger(`Receiving Journal: ${key2} is own sent file`,LOG_LEVEL_VERBOSE);await this.updateCheckPointInfo((info3=>({...info3,receivedFiles:info3.receivedFiles.add(key2)})))}else try{const data=await this.downloadFile(key2);if(!1===data)throw new Error("Download Error");await this.trench.queuePermanent("parse_file",data);await this.updateCheckPointInfo((info3=>({...info3,receivedFiles:info3.receivedFiles.add(key2)})));this.notifier.notify()}catch(ex){Logger(`Could not download ${key2}`,logLevel);Logger(ex,-1);return!1}}}finally{this.isDownloading=!1;this.notifier.notify()}this.notifier.notify();return!0}))}async receiveRemoteJournal(showMessage=!1){this.updateInfo({syncStatus:"JOURNAL_RECEIVE"});this.requestedStop=!1;if((await Promise.all([this.downloadRemoteJournals(showMessage),this.processDownloadedJournals(showMessage)])).every((e3=>e3))&&await this.processDownloadedJournals(showMessage,!0)){this.updateInfo({syncStatus:"COMPLETED"});return!0}this.updateInfo({syncStatus:"ERRORED"});return!1}async sync(showResult=!1){var _a7;return null!=(_a7=await shareRunningResult("replicate",(async()=>{this.requestedStop=!1;const receiveResult=await this.receiveRemoteJournal(showResult);if(!this.requestedStop){if(receiveResult)return await this.sendLocalJournal(showResult);Logger("Could not receive remote journal, so we prevent sending local journals to prevent unwanted mass transfers",showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO)}})))&&_a7}requestStop(){this.requestedStop=!0}};JournalSyncMinio=class extends JournalSyncAbstract{_getClient(){if(this._instance)return this._instance;const ep=this.endpoint?{endpoint:this.endpoint,forcePathStyle:!0}:{};this._instance=new S3({region:this.region,...ep,credentials:{accessKeyId:this.id,secretAccessKey:this.key},maxAttempts:4,retryStrategy:new ConfiguredRetryStrategy(4,(attempt=>100+1e3*attempt)),requestHandler:this.useCustomRequestHandler?this.env.$$customFetchHandler():void 0});return this._instance}async resetBucket(){var _a7;const client=this._getClient();let files=[],deleteCount=0,errorCount=0;try{do{files=await this.listFiles("");if(0==files.length)break;const cmd2=new DeleteObjectsCommand({Bucket:this.bucket,Delete:{Objects:files.map((e3=>({Key:e3})))}}),r5=await client.send(cmd2),{Deleted,Errors}=r5;deleteCount+=(null==Deleted?void 0:Deleted.length)||0;errorCount+=(null==Errors?void 0:Errors.length)||0;Logger(`${deleteCount} items has been deleted!${0!=errorCount?` (${errorCount} items failed to delete)`:""}`,LOG_LEVEL_NOTICE,"reset-bucket")}while(0==files.length)}catch(ex){Logger("WARNING! Could not delete files. you should try it once or remake the bucket manually",LOG_LEVEL_NOTICE,"reset-bucket");Logger(ex,LOG_LEVEL_VERBOSE)}const journals=await this._getRemoteJournals();if(0==journals.length){Logger("Nothing to delete!",LOG_LEVEL_NOTICE);return!0}const cmd=new DeleteObjectsCommand({Bucket:this.bucket,Delete:{Objects:journals.map((e3=>({Key:e3})))}}),r4=await client.send(cmd);Logger(`${(null==(_a7=null==r4?void 0:r4.Deleted)?void 0:_a7.length)||0} items has been deleted!`,LOG_LEVEL_NOTICE);await this.resetCheckpointInfo();return!0}async uploadJson(key2,body){try{return await this.uploadFile(key2,new Blob([JSON.stringify(body)]),"application/json")}catch(ex){Logger(`Could not upload json ${key2}`);Logger(ex,LOG_LEVEL_VERBOSE);return!1}}async downloadJson(key2){try{const ret=await this.downloadFile(key2,!0);return!!ret&&JSON.parse((new TextDecoder).decode(ret))}catch(ex){Logger(`Could not download json ${key2}`);Logger(ex,LOG_LEVEL_VERBOSE);return!1}}async uploadFile(key2,blob,mime){try{let u2=new Uint8Array(await blob.arrayBuffer());const set2=this.env.getSettings();set2.encrypt&&""!=set2.passphrase&&(u2=await encryptBinary(u2,set2.passphrase,set2.useDynamicIterationCount));const client=this._getClient(),cmd=new PutObjectCommand({Bucket:this.bucket,Key:key2,Body:u2,ContentType:mime});if(await client.send(cmd))return!0}catch(ex){Logger(`Could not upload ${key2}`);Logger(ex,LOG_LEVEL_VERBOSE)}return!1}async downloadFile(key2,ignoreCache=!1){const client=this._getClient(),cmd=new GetObjectCommand({Bucket:this.bucket,Key:key2,...ignoreCache?{ResponseCacheControl:"no-cache"}:{}}),r4=await client.send(cmd),set2=this.env.getSettings();try{if(r4.Body){let u2=await r4.Body.transformToByteArray();set2.encrypt&&""!=set2.passphrase&&(u2=await decryptBinary(u2,set2.passphrase,set2.useDynamicIterationCount));return u2}}catch(ex){Logger(`Could not download ${key2}`);Logger(ex,LOG_LEVEL_VERBOSE)}return!1}async listFiles(from,limit){const client=this._getClient(),objects=await client.listObjectsV2({Bucket:this.bucket,StartAfter:from,...limit?{MaxKeys:limit}:{}});return objects.Contents?objects.Contents.map((e3=>e3.Key)):[]}async isAvailable(){const client=this._getClient(),cmd=new HeadBucketCommand({Bucket:this.bucket});try{await client.send(cmd);return!0}catch(ex){Logger("Could not connected to the remote bucket",LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_VERBOSE);return!1}}async getUsage(){const client=this._getClient();try{const objects=await client.listObjectsV2({Bucket:this.bucket});return objects.Contents?{estimatedSize:objects.Contents.reduce(((acc,e3)=>acc+(e3.Size||0)),0)}:{}}catch(ex){Logger("Could not get status of the remote bucket",LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_VERBOSE);return!1}}};MILSTONE_DOCID="_00000000-milestone.json";currentVersionRange={min:0,max:2,current:2};LiveSyncJournalReplicator=class extends LiveSyncAbstractReplicator{constructor(env){super(env);this.syncStatus="NOT_CONNECTED";this.docArrived=0;this.docSent=0;this.lastSyncPullSeq=0;this.maxPullSeq=0;this.lastSyncPushSeq=0;this.maxPushSeq=0;this.nodeid="";this.remoteLocked=!1;this.remoteCleaned=!1;this.remoteLockedAndDeviceNotAccepted=!1;this.updateInfo=()=>{this.env.replicationStat.value={sent:this.docSent,arrived:this.docArrived,maxPullSeq:this.maxPullSeq,maxPushSeq:this.maxPushSeq,lastSyncPullSeq:this.lastSyncPullSeq,lastSyncPushSeq:this.lastSyncPushSeq,syncStatus:this.syncStatus}};this.env=env;fireAndForget((()=>this.initializeDatabaseForReplication()));this.env.getDatabase().on("close",(()=>{this.closeReplication()}))}get client(){return this.setupJournalSyncClient()}setupJournalSyncClient(){const settings=this.env.getSettings(),id=settings.accessKey,key2=settings.secretKey,bucket=settings.bucket,region=settings.region,endpoint=settings.endpoint,useCustomRequestHandler=settings.useCustomRequestHandler;this._client?this._client.applyNewConfig(id,key2,endpoint,bucket,this.env.simpleStore,this.env,useCustomRequestHandler,region):this._client=new JournalSyncMinio(id,key2,endpoint,bucket,this.env.simpleStore,this.env,useCustomRequestHandler,region);return this._client}async ensureBucketIsCompatible(deviceNodeID,currentVersionRange3){const downloadedMilestone=await this.client.downloadJson(MILSTONE_DOCID);return await ensureRemoteIsCompatible(downloadedMilestone,this.env.getSettings(),deviceNodeID,currentVersionRange3,(async info3=>{await this.client.uploadJson(MILSTONE_DOCID,info3)}))}async migrate(from,to){Logger(`Database updated from ${from} to ${to}`,LOG_LEVEL_NOTICE);return Promise.resolve(!0)}terminateSync(){this.client.requestStop()}async openReplication(setting,_,showResult,ignoreCleanLock=!1){if(!await this.checkReplicationConnectivity(!1,ignoreCleanLock))return!1;await this.client.sync(showResult)}async replicateAllToServer(setting,showingNotice){return!!await this.checkReplicationConnectivity(!1)&&await this.client.sendLocalJournal(showingNotice)}async replicateAllFromServer(setting,showingNotice){return!!await this.checkReplicationConnectivity(!1)&&await this.client.receiveRemoteJournal(showingNotice)}async checkReplicationConnectivity(skipCheck,ignoreCleanLock=!1){if(!await this.client.isAvailable())return!1;if(!skipCheck){this.remoteCleaned=!1;this.remoteLocked=!1;this.remoteLockedAndDeviceNotAccepted=!1;this.tweakSettingsMismatched=!1;const ensure=await this.ensureBucketIsCompatible(this.nodeid,currentVersionRange);if("INCOMPATIBLE"==ensure){Logger("The remote database has no compatibility with the running version. Please upgrade the plugin.",LOG_LEVEL_NOTICE);return!1}if("NODE_LOCKED"==ensure){Logger("The remote database has been rebuilt or corrupted since we have synchronized last time. Fetch rebuilt DB, explicit unlocking or chunk clean-up is required.",LOG_LEVEL_NOTICE);this.remoteLockedAndDeviceNotAccepted=!0;this.remoteLocked=!0;return!1}if("LOCKED"==ensure)this.remoteLocked=!0;else if("NODE_CLEANED"==ensure){if(!ignoreCleanLock){Logger("The remote database has been cleaned up. Fetch rebuilt DB, explicit unlocking or chunk clean-up is required.",LOG_LEVEL_NOTICE);this.remoteLockedAndDeviceNotAccepted=!0;this.remoteLocked=!0;this.remoteCleaned=!0;return!1}this.remoteLocked=!0}else if("OK"==ensure);else if("MISMATCHED"==ensure[0]){Logger("Configuration mismatching between the clients has been detected. This can be harmful or extra capacity consumption. We have to make these value unified.",LOG_LEVEL_NOTICE);this.tweakSettingsMismatched=!0;this.preferredTweakValue=ensure[1];return!1}}return!0}async fetchRemoteChunks(missingChunks,showResult){return Promise.resolve([])}closeReplication(){this.client.requestStop();this.syncStatus="CLOSED";Logger("Replication closed");this.updateInfo()}async tryResetRemoteDatabase(setting){this.closeReplication();try{await this.client.resetBucket();Logger("Remote Bucket Cleared",LOG_LEVEL_NOTICE);await this.tryCreateRemoteDatabase(setting)}catch(ex){Logger("Something happened on Remote Bucket Clear",LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_NOTICE)}}async tryCreateRemoteDatabase(setting){this.closeReplication();Logger("Remote Database Created or Connected",LOG_LEVEL_NOTICE);return await Promise.resolve()}async markRemoteLocked(setting,locked,lockByClean){const defInitPoint={_id:MILSTONE_DOCID,type:"milestoneinfo",created:new Date/1,locked,cleaned:lockByClean,accepted_nodes:[this.nodeid],node_chunk_info:{[this.nodeid]:currentVersionRange},tweak_values:{}},remoteMilestone={...defInitPoint,...await this.client.downloadJson(MILSTONE_DOCID)||{}};remoteMilestone.node_chunk_info={...defInitPoint.node_chunk_info,...remoteMilestone.node_chunk_info};remoteMilestone.accepted_nodes=[this.nodeid];remoteMilestone.locked=locked;remoteMilestone.cleaned=remoteMilestone.cleaned||lockByClean;Logger(locked?"Lock remote bucket to prevent data corruption":"Unlock remote bucket to prevent data corruption",LOG_LEVEL_NOTICE);await this.client.uploadJson(MILSTONE_DOCID,remoteMilestone)}async markRemoteResolved(setting){const defInitPoint={_id:MILSTONE_DOCID,type:"milestoneinfo",created:new Date/1,locked:!1,accepted_nodes:[this.nodeid],node_chunk_info:{[this.nodeid]:currentVersionRange},tweak_values:{}},remoteMilestone={...defInitPoint,...await this.client.downloadJson(MILSTONE_DOCID)||{}};remoteMilestone.node_chunk_info={...defInitPoint.node_chunk_info,...remoteMilestone.node_chunk_info};remoteMilestone.accepted_nodes=Array.from(new Set([...remoteMilestone.accepted_nodes,this.nodeid]));Logger("Mark this device as 'resolved'.",LOG_LEVEL_NOTICE);await this.client.uploadJson(MILSTONE_DOCID,remoteMilestone)}async tryConnectRemote(setting,showResult=!0){const id=setting.accessKey,key2=setting.secretKey,bucket=setting.bucket,region=setting.region,endpoint=setting.endpoint,useCustomRequestHandler=setting.useCustomRequestHandler,testClient=new JournalSyncMinio(id,key2,endpoint,bucket,this.env.simpleStore,this.env,useCustomRequestHandler,region);try{await testClient.listFiles("",1);Logger(`Connected to ${endpoint} successfully!`,LOG_LEVEL_NOTICE);return!0}catch(ex){Logger(`Error! Could not connected to ${endpoint}\n${ex.message}`,LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_NOTICE);return!1}}async resetRemoteTweakSettings(setting){try{const remoteMilestone=await this.client.downloadJson(MILSTONE_DOCID);if(!remoteMilestone)throw new Error("Missing remote milestone");remoteMilestone.tweak_values={};Logger("tweak values on the remote database have been cleared",LOG_LEVEL_VERBOSE);await this.client.uploadJson(MILSTONE_DOCID,remoteMilestone)}catch(ex){Logger("Could not retrieve remote milestone",LOG_LEVEL_NOTICE);throw ex}}async setPreferredRemoteTweakSettings(setting){try{const remoteMilestone=await this.client.downloadJson(MILSTONE_DOCID);if(!remoteMilestone)throw new Error("Missing remote milestone");remoteMilestone.tweak_values[DEVICE_ID_PREFERRED]=extractObject(TweakValuesTemplate,{...setting});Logger("tweak values on the remote database have been cleared",LOG_LEVEL_VERBOSE);await this.client.uploadJson(MILSTONE_DOCID,remoteMilestone)}catch(ex){Logger("Could not retrieve remote milestone",LOG_LEVEL_NOTICE);throw ex}}async getRemotePreferredTweakValues(setting){try{const remoteMilestone=await this.client.downloadJson(MILSTONE_DOCID);if(!remoteMilestone)throw new Error("Missing remote milestone");return remoteMilestone.tweak_values[DEVICE_ID_PREFERRED]||!1}catch(ex){Logger("Could not retrieve remote milestone",LOG_LEVEL_NOTICE);throw ex}}async getRemoteStatus(setting){const id=setting.accessKey,key2=setting.secretKey,bucket=setting.bucket,region=setting.region,endpoint=setting.endpoint,useCustomRequestHandler=setting.useCustomRequestHandler,testClient=new JournalSyncMinio(id,key2,endpoint,bucket,this.env.simpleStore,this.env,useCustomRequestHandler,region);return await testClient.getUsage()}};currentVersionRange2={min:0,max:2400,current:2};selectorOnDemandPull={selector:{type:{$ne:"leaf"}}};LiveSyncCouchDBReplicator=class extends LiveSyncAbstractReplicator{constructor(env){super(env);this.syncStatus="NOT_CONNECTED";this.docArrived=0;this.docSent=0;this.lastSyncPullSeq=0;this.maxPullSeq=0;this.lastSyncPushSeq=0;this.maxPushSeq=0;this.nodeid="";this.remoteLocked=!1;this.remoteCleaned=!1;this.remoteLockedAndDeviceNotAccepted=!1;this.updateInfo=()=>{this.env.replicationStat.value={sent:this.docSent,arrived:this.docArrived,maxPullSeq:this.maxPullSeq,maxPushSeq:this.maxPushSeq,lastSyncPullSeq:this.lastSyncPullSeq,lastSyncPushSeq:this.lastSyncPushSeq,syncStatus:this.syncStatus}};this.env=env;this.initializeDatabaseForReplication();this.env.getDatabase().on("close",(()=>{this.closeReplication()}))}async migrate(from,to){Logger(`Database updated from ${from} to ${to}`,LOG_LEVEL_NOTICE);return Promise.resolve(!0)}terminateSync(){if(this.controller){this.controller.abort();this.controller=void 0}}async openReplication(setting,keepAlive,showResult,ignoreCleanLock){await this.initializeDatabaseForReplication();if(!keepAlive)return this.openOneShotReplication(setting,showResult,!1,"sync",ignoreCleanLock);this.openContinuousReplication(setting,showResult,!1)}replicationActivated(showResult){this.syncStatus="CONNECTED";this.updateInfo();Logger("Replication activated",showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"sync")}async replicationChangeDetected(e3,showResult,docSentOnStart,docArrivedOnStart){try{if("pull"==e3.direction){await this.env.$$parseReplicationResult(e3.change.docs);this.docArrived+=e3.change.docs.length}else this.docSent+=e3.change.docs.length;if(showResult){const maxPullSeq=this.maxPullSeq,maxPushSeq=this.maxPushSeq,lastSyncPullSeq=this.lastSyncPullSeq,lastSyncPushSeq=this.lastSyncPushSeq,pushLast=0==lastSyncPushSeq?"":lastSyncPushSeq>=maxPushSeq?" (LIVE)":` (${maxPushSeq-lastSyncPushSeq})`,pullLast=0==lastSyncPullSeq?"":lastSyncPullSeq>=maxPullSeq?" (LIVE)":` (${maxPullSeq-lastSyncPullSeq})`;Logger(`↑${this.docSent-docSentOnStart}${pushLast} ↓${this.docArrived-docArrivedOnStart}${pullLast}`,LOG_LEVEL_NOTICE,"sync")}this.updateInfo()}catch(ex){Logger("Replication callback error",LOG_LEVEL_NOTICE,"sync");Logger(ex,LOG_LEVEL_VERBOSE)}}replicationCompleted(showResult){this.syncStatus="COMPLETED";this.updateInfo();Logger("Replication completed",showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,showResult?"sync":"");this.terminateSync()}replicationDenied(e3){this.syncStatus="ERRORED";this.updateInfo();this.terminateSync();Logger("Replication denied",LOG_LEVEL_NOTICE,"sync");Logger(e3,LOG_LEVEL_VERBOSE)}replicationErrored(e3){this.syncStatus="ERRORED";this.terminateSync();this.updateInfo();Logger("Replication error",LOG_LEVEL_NOTICE,"sync");Logger(e3,LOG_LEVEL_VERBOSE)}replicationPaused(){this.syncStatus="PAUSED";this.updateInfo();Logger("Replication paused",LOG_LEVEL_VERBOSE,"sync")}async processSync(syncHandler,showResult,docSentOnStart,docArrivedOnStart,syncMode,retrying,reportCancelledAsDone=!0){const controller=new AbortController;this.controller&&this.controller.abort();this.controller=controller;const gen=async function*genReplication(s2,signal){const inbox=new Inbox(1e4),push2=function(e3){serialized("replicationResult",(async()=>{signal.aborted||(inbox.isDisposed?Logger("Inbox is disposed",LOG_LEVEL_VERBOSE):await inbox.post(e3))}))};s2.on("complete",(result=>push2(["complete",result])));s2.on("change",(result=>push2(["change",result])));s2.on("active",(()=>push2(["active"])));s2.on("denied",(err2=>push2(["denied",err2])));s2.on("error",(err2=>push2(["error",err2])));s2.on("paused",(err2=>push2(["paused",err2])));s2.then((()=>push2(["finally"]))).catch((()=>push2(["finally"])));const abortSymbol=Symbol("abort"),abortPromise=promiseWithResolver();signal.addEventListener("abort",(()=>{abortPromise.resolve(abortSymbol)}));try{for(;!inbox.isDisposed&&!signal.aborted;){const r4=await inbox.pick(void 0,[abortPromise.promise]);if(r4===NOT_AVAILABLE)break;yield r4}}catch(ex){if(!(ex instanceof Error&&"AbortError"==ex.name))throw ex;Logger("Replication aborted",LOG_LEVEL_VERBOSE)}finally{s2.cancel();inbox.dispose()}}(syncHandler,controller.signal);try{for await(const[type,e3]of gen){const releaser=await globalConcurrencyController.tryAcquire(1,3e6);if(!1===releaser){Logger("Replication stopped for busy.",showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"sync");return"FAILED"}releaser();switch(type){case"change":if("direction"in e3){"pull"==e3.direction?this.lastSyncPullSeq=Number(`${e3.change.last_seq}`.split("-")[0]):this.lastSyncPushSeq=Number(`${e3.change.last_seq}`.split("-")[0]);await this.replicationChangeDetected(e3,showResult,docSentOnStart,docArrivedOnStart)}else if("pullOnly"==syncMode){this.lastSyncPullSeq=Number(`${e3.last_seq}`.split("-")[0]);await this.replicationChangeDetected({direction:"pull",change:e3},showResult,docSentOnStart,docArrivedOnStart)}else if("pushOnly"==syncMode){this.lastSyncPushSeq=Number(`${e3.last_seq}`.split("-")[0]);this.updateInfo();await this.replicationChangeDetected({direction:"push",change:e3},showResult,docSentOnStart,docArrivedOnStart)}if(retrying&&this.docSent-docSentOnStart+(this.docArrived-docArrivedOnStart)>2*this.originalSetting.batch_size)return"NEED_RESURRECT";break;case"complete":this.replicationCompleted(showResult);return"DONE";case"active":this.replicationActivated(showResult);break;case"denied":this.replicationDenied(e3);return"FAILED";case"error":this.replicationErrored(e3);Logger("Replication stopped.",showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"sync");if(this.env.$$getLastPostFailedBySize()){if(e3&&413==(null==e3?void 0:e3.status)){Logger("Something went wrong during synchronisation. Please check the log!",LOG_LEVEL_NOTICE);return"FAILED"}return"NEED_RETRY"}Logger("Replication error",LOG_LEVEL_NOTICE,"sync");Logger(e3);return"FAILED";case"paused":this.replicationPaused();break;case"finally":break;default:Logger(`Unexpected synchronization status:${JSON.stringify(e3)}`)}}return reportCancelledAsDone?"DONE":"CANCELLED"}catch(ex){Logger("Unexpected synchronization exception");Logger(ex,LOG_LEVEL_VERBOSE);return"FAILED"}finally{this.terminateSync();this.controller=void 0}}getEmptyMaxEntry(remoteID){return{_id:`_local/max_seq_on_chunk-${remoteID}`,maxSeq:0,remoteID,seqStatusMap:{},_rev:void 0}}async getLastTransferredSeqOfChunks(localDB,remoteID){const prevMax={_id:`_local/max_seq_on_chunk-${remoteID}`,maxSeq:0,remoteID,seqStatusMap:{},_rev:void 0},previous_max_seq_on_chunk=await wrapException((()=>localDB.get(prevMax._id)));return previous_max_seq_on_chunk instanceof Error?prevMax:previous_max_seq_on_chunk}async updateMaxTransferredSeqOnChunks(localDB,remoteID,seqStatusMap){const newMax={_id:"_local/max_seq_on_chunk",maxSeq:0,remoteID,seqStatusMap,_rev:void 0},seqs=Object.keys(seqStatusMap).map((e3=>Number(e3)));let maxSeq=0;for(const seq of seqs){if(!seqStatusMap[seq])break;maxSeq=seq}Logger(`Updating max seq on chunk to ${maxSeq}`,LOG_LEVEL_VERBOSE);newMax.maxSeq=maxSeq;const previous_max_seq_on_chunk=await wrapException((()=>localDB.get(newMax._id)));if(previous_max_seq_on_chunk instanceof Error)delete newMax._rev;else{newMax._rev=previous_max_seq_on_chunk._rev;newMax.seqStatusMap={...previous_max_seq_on_chunk.seqStatusMap,...seqStatusMap}}await wrapException((()=>localDB.put(newMax)));return newMax}async sendChunks(setting,remoteDB,showResult,fromSeq){const trench=new Trench(this.env.$$getSimpleStore("sc-"),!1);await trench.eraseAllEphemerals();if(!remoteDB){const d4=await this.connectRemoteCouchDBWithSetting(setting,this.env.$$isMobile(),!0);if("string"==typeof d4){Logger($msg("liveSyncReplicator.couldNotConnectToRemoteDb",{d:d4}),showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"fetch");return!1}remoteDB=d4.db}Logger("Bulk sending chunks to remote database...",showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"fetch");const remoteMilestone=await remoteDB.get(MILESTONE_DOCID),remoteID=null==remoteMilestone?void 0:remoteMilestone.created,localDB=this.env.getDatabase(),te5=new TextEncoder;Logger($msg("liveSyncReplicator.checkingLastSyncPoint"),showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"fetch");this.syncStatus="CONNECTED";const prev=await this.getLastTransferredSeqOfChunks(localDB,remoteID),seq=null!=fromSeq?fromSeq:prev.maxSeq,localScannedDocs=[],sentMap={},diffChunks=localDB.changes({since:seq,live:!1,include_docs:!0,return_docs:!1,selector:{type:"leaf"}}).on("change",(e3=>{const numSeq=Number(e3.seq);prev.seqStatusMap[numSeq]||localScannedDocs.push({id:e3.id,seq:Number(e3.seq)})}));await diffChunks;localScannedDocs.sort(((a2,b3)=>a2.seq-b3.seq));const idSeqMap=Object.fromEntries(localScannedDocs.map((e3=>[e3.id,e3.seq])));for(const checkDocs of arrayToChunkedArray(localScannedDocs,250)){const remoteDocs=await remoteDB.allDocs({keys:checkDocs.map((e3=>e3.id)),include_docs:!1}),remoteDocMap=Object.fromEntries(remoteDocs.rows.map((e3=>[e3.key,"error"in e3?e3.error:e3.value]))),sendDocs=checkDocs.filter((e3=>"not_found"==remoteDocMap[e3.id])),sentDocs=checkDocs.filter((e3=>"not_found"!=remoteDocMap[e3.id]));sendDocs.forEach((e3=>sentMap[e3.seq]=!1));sentDocs.forEach((e3=>sentMap[e3.seq]=!0));const sendDocsMap=Object.fromEntries(sendDocs.map((e3=>[e3.id,e3.seq])));if(sendDocs.length>0){const localDocs=await localDB.allDocs({keys:sendDocs.map((e3=>e3.id)),include_docs:!0});await trench.queue("send-chunks",localDocs.rows.filter((e3=>"id"in e3)).map((e3=>({seq:sendDocsMap[e3.id],doc:e3.doc,id:e3.id}))))}}let bulkDocs2=[],bulkDocsSizeBytes=0,bulkDocsSizeCount=0,maxSeq=0;const maxBatchSizeBytes=1024*setting.sendChunksBulkMaxSize*1024,semaphore=Semaphore(4);let sendingDocs=0,sentDocsCount=0;const sendChunks=async(bulkDocs3,bulkDocsSize,seq2)=>{Logger(`Sending ${bulkDocs3.length} (${bulkDocsSize} => ${sizeToHumanReadable2(bulkDocsSize)} in plain) chunks to remote database...`,LOG_LEVEL_VERBOSE);const releaser=await semaphore.acquire(1);sendingDocs+=bulkDocs3.length;Logger(`↑ Uploading chunks \n${sendingDocs}/(${sentDocsCount} done)`,showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"send");try{const uploadBulkDocTasks=bulkDocs3.map((e3=>preprocessOutgoing(e3))),uploadBulkDocs=await Promise.all(uploadBulkDocTasks);await remoteDB.bulkDocs(uploadBulkDocs,{new_edits:!1});uploadBulkDocs.forEach((e3=>sentMap[idSeqMap[e3._id]]=!0));await this.updateMaxTransferredSeqOnChunks(localDB,remoteID,sentMap);sentDocsCount+=bulkDocs3.length;Logger(`↑ Uploading chunks \n${sendingDocs}/(${sentDocsCount} done)`,showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"send")}catch(ex){Logger("Bulk sending failed.",showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"send");Logger(ex,LOG_LEVEL_VERBOSE);return!1}finally{releaser()}return!0},tasks3=[];for(;;){const nowSendChunks=await trench.dequeue("send-chunks");if(!nowSendChunks||0==nowSendChunks.length)break;for(const chunk of nowSendChunks){const jsonLength=te5.encode(JSON.stringify(chunk.doc)).byteLength+32;if((bulkDocsSizeBytes+jsonLength>maxBatchSizeBytes||bulkDocsSizeCount+1>200)&&bulkDocs2.length>0){tasks3.push(sendChunks([...bulkDocs2],bulkDocsSizeBytes));bulkDocs2=[];bulkDocsSizeBytes=0;bulkDocsSizeCount=0}bulkDocs2.push(chunk.doc);maxSeq=chunk.seq;bulkDocsSizeBytes+=jsonLength;bulkDocsSizeCount+=1}bulkDocs2.length>0&&tasks3.push(sendChunks([...bulkDocs2],bulkDocsSizeBytes));if((await Promise.all(tasks3.map((async e3=>{try{await e3}catch(ex){Logger("Bulk sending failed.",showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"send");Logger(ex,LOG_LEVEL_VERBOSE);return!1}})))).some((e3=>!1===e3)))return!1}return!0}async openOneShotReplication(setting,showResult,retrying,syncMode,ignoreCleanLock=!1){const next2=await shareRunningResult("oneShotReplication",(async()=>{if(this.controller){Logger($msg("liveSyncReplicator.replicationInProgress"),showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"sync");return!1}const localDB=this.env.getDatabase();Logger($msg("liveSyncReplicator.oneShotSyncBegin",{syncMode}));const ret=await this.checkReplicationConnectivity(setting,!1,retrying,showResult,ignoreCleanLock);if(!1===ret){Logger($msg("liveSyncReplicator.couldNotConnectToServer"),showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"sync");return!1}this.maxPullSeq=Number(`${ret.info.update_seq}`.split("-")[0]);this.maxPushSeq=Number(`${(await localDB.info()).update_seq}`.split("-")[0]);showResult&&Logger($msg("liveSyncReplicator.checkingLastSyncPoint"),LOG_LEVEL_NOTICE,"sync");const{db,syncOptionBase}=ret;this.syncStatus="STARTED";this.updateInfo();const docArrivedOnStart=this.docArrived,docSentOnStart=this.docSent;retrying||(this.originalSetting=setting);this.terminateSync();const syncHandler="sync"==syncMode?localDB.sync(db,{...syncOptionBase}):"pullOnly"==syncMode?localDB.replicate.from(db,{...syncOptionBase,...setting.readChunksOnline?selectorOnDemandPull:{}}):"pushOnly"==syncMode?localDB.replicate.to(db,{...syncOptionBase}):void 0,syncResult=await this.processSync(syncHandler,showResult,docSentOnStart,docArrivedOnStart,syncMode,retrying,!1);if("DONE"==syncResult)return!0;if("CANCELLED"==syncResult)return!1;if("FAILED"==syncResult)return!1;if("NEED_RESURRECT"==syncResult){this.terminateSync();return async()=>await this.openOneShotReplication(this.originalSetting,showResult,!1,syncMode,ignoreCleanLock)}if("NEED_RETRY"==syncResult){const tempSetting=JSON.parse(JSON.stringify(setting));tempSetting.batch_size=Math.ceil(tempSetting.batch_size/2)+2;tempSetting.batches_limit=Math.ceil(tempSetting.batches_limit/2)+2;if(tempSetting.batch_size<=5&&tempSetting.batches_limit<=5){Logger($msg("liveSyncReplicator.cantReplicateLowerValue"),showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO);return!1}Logger($msg("liveSyncReplicator.retryLowerBatchSize",{batch_size:tempSetting.batch_size.toString(),batches_limit:tempSetting.batches_limit.toString()}),showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO);return async()=>await this.openOneShotReplication(tempSetting,showResult,!0,syncMode,ignoreCleanLock)}return!1}));return"boolean"==typeof next2?next2:await next2()}replicateAllToServer(setting,showingNotice){return this.openOneShotReplication(setting,null!=showingNotice&&showingNotice,!1,"pushOnly")}replicateAllFromServer(setting,showingNotice){return this.openOneShotReplication(setting,null!=showingNotice&&showingNotice,!1,"pullOnly")}async checkReplicationConnectivity(setting,keepAlive,skipCheck,showResult,ignoreCleanLock=!1){if(""!=setting.versionUpFlash){Logger("Open settings and check message, please.",LOG_LEVEL_NOTICE);return!1}const uri=setting.couchDB_URI+(""==setting.couchDB_DBNAME?"":"/"+setting.couchDB_DBNAME);if(this.controller){Logger("Another replication running.");return!1}const dbRet=await this.connectRemoteCouchDBWithSetting(setting,this.env.$$isMobile(),!0);if("string"==typeof dbRet){Logger($msg("liveSyncReplicator.couldNotConnectToURI",{uri,dbRet}),showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO);return!1}if(!skipCheck){if(!await checkRemoteVersion(dbRet.db,this.migrate.bind(this),10)){Logger($msg("liveSyncReplicator.remoteDbCorrupted"),LOG_LEVEL_NOTICE);return!1}this.remoteCleaned=!1;this.remoteLocked=!1;this.remoteLockedAndDeviceNotAccepted=!1;this.tweakSettingsMismatched=!1;this.preferredTweakValue=void 0;const ensure=await async function ensureDatabaseIsCompatible(db,setting,deviceNodeID,currentVersionRange3){const remoteMilestone=await resolveWithIgnoreKnownError(db.get(MILESTONE_DOCID),!1);return await ensureRemoteIsCompatible(remoteMilestone,setting,deviceNodeID,currentVersionRange3,(async info3=>{await db.put(info3)}))}(dbRet.db,setting,this.nodeid,currentVersionRange2);if("INCOMPATIBLE"==ensure){Logger("The remote database has no compatibility with the running version. Please upgrade the plugin.",LOG_LEVEL_NOTICE);return!1}if("NODE_LOCKED"==ensure){Logger("The remote database has been rebuilt or corrupted since we have synchronized last time. Fetch rebuilt DB, explicit unlocking or chunk clean-up is required.",LOG_LEVEL_NOTICE);this.remoteLockedAndDeviceNotAccepted=!0;this.remoteLocked=!0;return!1}if("LOCKED"==ensure)this.remoteLocked=!0;else if("NODE_CLEANED"==ensure){if(!ignoreCleanLock){Logger("The remote database has been cleaned up. Fetch rebuilt DB, explicit unlocking or chunk clean-up is required.",LOG_LEVEL_NOTICE);this.remoteLockedAndDeviceNotAccepted=!0;this.remoteLocked=!0;this.remoteCleaned=!0;return!1}this.remoteLocked=!0}else if("OK"==ensure);else if("MISMATCHED"==ensure[0]){Logger("Configuration mismatching between the clients has been detected. This can be harmful or extra capacity consumption. We have to make these value unified.",LOG_LEVEL_NOTICE);this.tweakSettingsMismatched=!0;this.preferredTweakValue=ensure[1];return!1}}const syncOptionBase={batches_limit:setting.batches_limit,batch_size:setting.batch_size,push:{}};setting.readChunksOnline&&(syncOptionBase.pull={...selectorOnDemandPull});const syncOption=keepAlive?{live:!0,retry:!0,heartbeat:!setting.useTimeouts&&3e4,...syncOptionBase}:{...syncOptionBase};return{db:dbRet.db,info:dbRet.info,syncOptionBase,syncOption}}async openContinuousReplication(setting,showResult,retrying){const next2=await shareRunningResult("continuousReplication",(async()=>{if(this.controller){Logger($msg("liveSyncReplicator.replicationInProgress"),showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO);return!1}const localDB=this.env.getDatabase();Logger($msg("liveSyncReplicator.beforeLiveSync"));if(await this.openOneShotReplication(setting,showResult,!1,"pullOnly")){Logger($msg("liveSyncReplicator.liveSyncBegin"));const ret=await this.checkReplicationConnectivity(setting,!0,!0,showResult);if(!1===ret){Logger($msg("liveSyncReplicator.couldNotConnectToServer"),showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO);return!1}showResult&&Logger($msg("liveSyncReplicator.checkingLastSyncPoint"),LOG_LEVEL_NOTICE,"sync");const{db,syncOption}=ret;this.syncStatus="STARTED";this.maxPullSeq=Number(`${ret.info.update_seq}`.split("-")[0]);this.maxPushSeq=Number(`${(await localDB.info()).update_seq}`.split("-")[0]);this.updateInfo();const docArrivedOnStart=this.docArrived,docSentOnStart=this.docSent;retrying||(this.originalSetting=setting);this.terminateSync();const syncHandler=localDB.sync(db,{...syncOption}),syncMode="sync",syncResult=await this.processSync(syncHandler,showResult,docSentOnStart,docArrivedOnStart,syncMode,retrying);if("DONE"==syncResult)return!0;if("FAILED"==syncResult)return!1;if("NEED_RESURRECT"==syncResult){this.terminateSync();return async()=>await this.openContinuousReplication(this.originalSetting,showResult,!1)}if("NEED_RETRY"==syncResult){const tempSetting=JSON.parse(JSON.stringify(setting));tempSetting.batch_size=Math.ceil(tempSetting.batch_size/2)+2;tempSetting.batches_limit=Math.ceil(tempSetting.batches_limit/2)+2;if(tempSetting.batch_size<=5&&tempSetting.batches_limit<=5){Logger($msg("liveSyncReplicator.cantReplicateLowerValue"),showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO);return!1}Logger($msg("liveSyncReplicator.retryLowerBatchSize",{batch_size:tempSetting.batch_size.toString(),batches_limit:tempSetting.batches_limit.toString()}),showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO);return async()=>await this.openContinuousReplication(tempSetting,showResult,!0)}}return!1}));return"boolean"==typeof next2?next2:await next2()}closeReplication(){if(this.controller){this.controller.abort();this.controller=void 0;this.syncStatus="CLOSED";Logger($msg("liveSyncReplicator.replicationClosed"));this.updateInfo()}}async tryResetRemoteDatabase(setting){this.closeReplication();const con=await this.connectRemoteCouchDBWithSetting(setting,this.env.$$isMobile(),!0);if("string"!=typeof con)try{await con.db.destroy();Logger($msg("liveSyncReplicator.remoteDbDestroyed"),LOG_LEVEL_NOTICE);await this.tryCreateRemoteDatabase(setting)}catch(ex){Logger($msg("liveSyncReplicator.remoteDbDestroyError"),LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_NOTICE)}}async tryCreateRemoteDatabase(setting){this.closeReplication();"string"!=typeof await this.connectRemoteCouchDBWithSetting(setting,this.env.$$isMobile(),!0)&&Logger($msg("liveSyncReplicator.remoteDbCreatedOrConnected"),LOG_LEVEL_NOTICE)}async markRemoteLocked(setting,locked,lockByClean){const uri=setting.couchDB_URI+(""==setting.couchDB_DBNAME?"":"/"+setting.couchDB_DBNAME),dbRet=await this.connectRemoteCouchDBWithSetting(setting,this.env.$$isMobile(),!0);if("string"==typeof dbRet){Logger($msg("liveSyncReplicator.couldNotConnectToURI",{uri,dbRet}),LOG_LEVEL_NOTICE);return}if(!await checkRemoteVersion(dbRet.db,this.migrate.bind(this),10)){Logger($msg("liveSyncReplicator.remoteDbCorrupted"),LOG_LEVEL_NOTICE);return}const defInitPoint={_id:MILESTONE_DOCID,type:"milestoneinfo",created:new Date/1,locked,cleaned:lockByClean,accepted_nodes:[this.nodeid],node_chunk_info:{[this.nodeid]:currentVersionRange2},tweak_values:{}},remoteMilestone={...defInitPoint,...await resolveWithIgnoreKnownError(dbRet.db.get(MILESTONE_DOCID),defInitPoint)};remoteMilestone.node_chunk_info={...defInitPoint.node_chunk_info,...remoteMilestone.node_chunk_info};remoteMilestone.accepted_nodes=[this.nodeid];remoteMilestone.locked=locked;remoteMilestone.cleaned=remoteMilestone.cleaned||lockByClean;Logger($msg(locked?"liveSyncReplicator.lockRemoteDb":"liveSyncReplicator.unlockRemoteDb"),LOG_LEVEL_NOTICE);await dbRet.db.put(remoteMilestone)}async markRemoteResolved(setting){const uri=setting.couchDB_URI+(""==setting.couchDB_DBNAME?"":"/"+setting.couchDB_DBNAME),dbRet=await this.connectRemoteCouchDBWithSetting(setting,this.env.$$isMobile(),!0);if("string"==typeof dbRet){Logger($msg("liveSyncReplicator.couldNotConnectToURI",{uri,dbRet}),LOG_LEVEL_NOTICE);return}if(!await checkRemoteVersion(dbRet.db,this.migrate.bind(this),10)){Logger($msg("liveSyncReplicator.remoteDbCorrupted"),LOG_LEVEL_NOTICE);return}const defInitPoint={_id:MILESTONE_DOCID,type:"milestoneinfo",created:new Date/1,locked:!1,accepted_nodes:[this.nodeid],node_chunk_info:{[this.nodeid]:currentVersionRange2},tweak_values:{}},remoteMilestone={...defInitPoint,...await resolveWithIgnoreKnownError(dbRet.db.get(MILESTONE_DOCID),defInitPoint)};remoteMilestone.node_chunk_info={...defInitPoint.node_chunk_info,...remoteMilestone.node_chunk_info};remoteMilestone.accepted_nodes=Array.from(new Set([...remoteMilestone.accepted_nodes,this.nodeid]));Logger($msg("liveSyncReplicator.markDeviceResolved"),LOG_LEVEL_NOTICE);(await dbRet.db.put(remoteMilestone)).ok?Logger($msg("liveSyncReplicator.remoteDbMarkedResolved"),LOG_LEVEL_VERBOSE):Logger($msg("liveSyncReplicator.couldNotMarkResolveRemoteDb"),LOG_LEVEL_NOTICE)}connectRemoteCouchDBWithSetting(settings,isMobile,performSetup=!1,skipInfo=!1){return settings.encrypt&&""==settings.passphrase&&!settings.permitEmptyPassphrase?"Empty passphrases cannot be used without explicit permission":this.env.$$connectRemoteCouchDB(settings.couchDB_URI+(""==settings.couchDB_DBNAME?"":"/"+settings.couchDB_DBNAME),{username:settings.couchDB_USER,password:settings.couchDB_PASSWORD},settings.disableRequestURI||isMobile,settings.encrypt?settings.passphrase:settings.encrypt,settings.useDynamicIterationCount,performSetup,skipInfo,settings.enableCompression)}async fetchRemoteChunks(missingChunks,showResult){const ret=await this.connectRemoteCouchDBWithSetting(this.env.getSettings(),this.env.$$isMobile(),!1,!0);if("string"==typeof ret){Logger(`${$msg("liveSyncReplicator.couldNotConnectToServer")} ${ret} `,showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"fetch");return!1}const remoteChunks=await ret.db.allDocs({keys:missingChunks,include_docs:!0});if(remoteChunks.rows.some((e3=>"error"in e3))){Logger("Some chunks are not exists both on remote and local database.",showResult?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"fetch");Logger(`Missing chunks: ${missingChunks.join(",")}`,LOG_LEVEL_VERBOSE);Logger(`Error chunks: ${remoteChunks.rows.filter((e3=>"error"in e3)).map((e3=>e3.key)).join(",")}`,LOG_LEVEL_VERBOSE);return!1}return remoteChunks.rows.map((e3=>e3.doc))}async tryConnectRemote(setting,showResult=!0){const db=await this.connectRemoteCouchDBWithSetting(setting,this.env.$$isMobile(),!0);if("string"==typeof db){Logger($msg("liveSyncReplicator.couldNotConnectTo",{uri:setting.couchDB_URI,name:setting.couchDB_DBNAME,db}),LOG_LEVEL_NOTICE);return!1}Logger(`Connected to ${db.info.db_name} successfully`,LOG_LEVEL_NOTICE);return!0}async resetRemoteTweakSettings(setting){const uri=setting.couchDB_URI+(""==setting.couchDB_DBNAME?"":"/"+setting.couchDB_DBNAME),dbRet=await this.connectRemoteCouchDBWithSetting(setting,this.env.$$isMobile(),!0);if("string"!=typeof dbRet)if(await checkRemoteVersion(dbRet.db,this.migrate.bind(this),10))try{const remoteMilestone=await dbRet.db.get(MILESTONE_DOCID);remoteMilestone.tweak_values={};await dbRet.db.put(remoteMilestone);Logger("tweak values on the remote database have been cleared",LOG_LEVEL_VERBOSE)}catch(ex){Logger("Could not retrieve remote milestone",LOG_LEVEL_NOTICE);throw ex}else Logger($msg("liveSyncReplicator.remoteDbCorrupted"),LOG_LEVEL_NOTICE);else Logger($msg("liveSyncReplicator.couldNotConnectToURI",{uri,dbRet}),LOG_LEVEL_NOTICE)}async setPreferredRemoteTweakSettings(setting){const uri=setting.couchDB_URI+(""==setting.couchDB_DBNAME?"":"/"+setting.couchDB_DBNAME),dbRet=await this.connectRemoteCouchDBWithSetting(setting,this.env.$$isMobile(),!0);if("string"!=typeof dbRet)if(await checkRemoteVersion(dbRet.db,this.migrate.bind(this),10))try{const remoteMilestone=await dbRet.db.get(MILESTONE_DOCID);remoteMilestone.tweak_values[DEVICE_ID_PREFERRED]=extractObject(TweakValuesTemplate,{...setting});await dbRet.db.put(remoteMilestone);Logger("Preferred tweak values has been registered",LOG_LEVEL_VERBOSE)}catch(ex){Logger("Could not retrieve remote milestone",LOG_LEVEL_NOTICE);throw ex}else Logger($msg("liveSyncReplicator.remoteDbCorrupted"),LOG_LEVEL_NOTICE);else Logger($msg("liveSyncReplicator.couldNotConnectToURI",{uri,dbRet}),LOG_LEVEL_NOTICE)}async getRemotePreferredTweakValues(setting){const uri=setting.couchDB_URI+(""==setting.couchDB_DBNAME?"":"/"+setting.couchDB_DBNAME),dbRet=await this.connectRemoteCouchDBWithSetting(setting,this.env.$$isMobile(),!0);if("string"==typeof dbRet){Logger($msg("liveSyncReplicator.couldNotConnectToURI",{uri,dbRet}),LOG_LEVEL_NOTICE);return!1}if(!await checkRemoteVersion(dbRet.db,this.migrate.bind(this),10)){Logger($msg("liveSyncReplicator.remoteDbCorrupted"),LOG_LEVEL_NOTICE);return!1}try{return(await dbRet.db.get(MILESTONE_DOCID)).tweak_values[DEVICE_ID_PREFERRED]}catch(ex){Logger("Could not retrieve remote milestone",LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_VERBOSE);return!1}}async compactRemote(setting){const uri=setting.couchDB_URI+(""==setting.couchDB_DBNAME?"":"/"+setting.couchDB_DBNAME),dbRet=await this.connectRemoteCouchDBWithSetting(setting,this.env.$$isMobile(),!0);if("string"==typeof dbRet){Logger($msg("liveSyncReplicator.couldNotConnectToURI",{uri,dbRet}),LOG_LEVEL_NOTICE);return!1}return(await dbRet.db.compact({interval:1e3})).ok}async getRemoteStatus(setting){var _a7;const dbRet=await this.connectRemoteCouchDBWithSetting(setting,this.env.$$isMobile(),!0);if("string"==typeof dbRet){Logger($msg("liveSyncReplicator.couldNotConnectToURI",{uri:setting.couchDB_URI+(""==setting.couchDB_DBNAME?"":"/"+setting.couchDB_DBNAME),dbRet}),LOG_LEVEL_NOTICE);return!1}const info3=await dbRet.db.info();return{...info3,estimatedSize:(null==(_a7=null==info3?void 0:info3.sizes)?void 0:_a7.file)||0}}};ObsHttpHandler=class extends FetchHttpHandler{constructor(options,reverseProxyNoSignUrl){super(options);this.requestTimeoutInMs=void 0===options?void 0:options.requestTimeout;this.reverseProxyNoSignUrl=reverseProxyNoSignUrl}async handle(request2,{abortSignal}={}){if(null==abortSignal?void 0:abortSignal.aborted){const abortError=new Error("Request aborted");abortError.name="AbortError";return Promise.reject(abortError)}let path2=request2.path;if(request2.query){const queryString=buildQueryString(request2.query);queryString&&(path2+=`?${queryString}`)}const{port,method}=request2;let url=`${request2.protocol}//${request2.hostname}${port?`:${port}`:""}${path2}`;if(void 0!==this.reverseProxyNoSignUrl&&""!==this.reverseProxyNoSignUrl){const urlObj=new URL(url);urlObj.host=this.reverseProxyNoSignUrl;url=urlObj.href}const body="GET"===method||"HEAD"===method?void 0:request2.body,transformedHeaders={};for(const key2 of Object.keys(request2.headers)){const keyLower=key2.toLowerCase();"host"!==keyLower&&"content-length"!==keyLower&&(transformedHeaders[keyLower]=request2.headers[key2])}let contentType;void 0!==transformedHeaders["content-type"]&&(contentType=transformedHeaders["content-type"]);let transformedBody=body;ArrayBuffer.isView(body)&&(transformedBody=new Uint8Array(body.buffer).buffer);const param={body:transformedBody,headers:transformedHeaders,method,url,contentType},raceOfPromises=[(0,import_obsidian.requestUrl)(param).then((rsp=>{const headers=rsp.headers,headersLower={};for(const key2 of Object.keys(headers))headersLower[key2.toLowerCase()]=headers[key2];const stream=new ReadableStream({start(controller){controller.enqueue(new Uint8Array(rsp.arrayBuffer));controller.close()}});return{response:new HttpResponse({headers:headersLower,statusCode:rsp.status,body:stream})}})),requestTimeout(this.requestTimeoutInMs)];abortSignal&&raceOfPromises.push(new Promise(((resolve,reject)=>{abortSignal.onabort=()=>{const abortError=new Error("Request aborted");abortError.name="AbortError";reject(abortError)}})));return Promise.race(raceOfPromises)}};measures=new Map;root_17=template('<details class="svelte-qc8xos"><summary class="svelte-qc8xos"> </summary> <pre class="svelte-qc8xos"> </pre></details>');root4=template('<h2 class="svelte-qc8xos">TESTING BENCH: Self-hosted LiveSync</h2> <h3 class="svelte-qc8xos">Module Checks</h3> <button class="svelte-qc8xos">MultiDevice Test</button> <button class="svelte-qc8xos">SingleDevice Test</button> <button class="svelte-qc8xos">All Test</button> <button class="svelte-qc8xos">Clear</button> <!> <h3 class="svelte-qc8xos">Synchronisation Result Status</h3> <pre class="svelte-qc8xos"> </pre> <h3 class="svelte-qc8xos">Performance test</h3> <button class="svelte-qc8xos">Test!</button> <button class="svelte-qc8xos">Clear</button> <div class="svelte-qc8xos"></div>',1);$$css5={hash:"svelte-qc8xos",code:".svelte-qc8xos {box-sizing:border-box;}"};import_obsidian7=require("obsidian");TestPaneView=class extends import_obsidian7.ItemView{constructor(leaf,plugin3,moduleDev){super(leaf);this.icon="view-log";this.title="Self-hosted LiveSync Test and Results";this.navigation=!0;this.plugin=plugin3;this.moduleDev=moduleDev}getIcon(){return"view-log"}getViewType(){return"ols-pane-test"}getDisplayText(){return"Self-hosted LiveSync Test and Results"}async onOpen(){this.component=new TestPane({target:this.contentEl,props:{plugin:this.plugin,moduleDev:this.moduleDev}});await Promise.resolve()}async onClose(){var _a7;null==(_a7=this.component)||_a7.$destroy();await Promise.resolve()}};ModuleDev=class extends AbstractObsidianModule{constructor(){super(...arguments);this.testResults=writable([])}$everyOnloadStart(){__onMissingTranslation((()=>{}));return Promise.resolve(!0)}async onMissingTranslation(key2){const outFile=`missing-translation-${(new Date).toISOString().split("T")[0]}.jsonl`,piece=JSON.stringify({[key2]:{}}),writePiece=piece.substring(1,piece.length-1)+",";try{await this.core.storageAccess.ensureDir(this.app.vault.configDir+"/ls-debug/");await this.core.storageAccess.appendHiddenFile(this.app.vault.configDir+"/ls-debug/"+outFile,writePiece+"\n")}catch(ex){this._log(`Could not write ${outFile}`,LOG_LEVEL_VERBOSE);this._log(`Missing translation: ${writePiece}`,LOG_LEVEL_VERBOSE);this._log(ex,LOG_LEVEL_VERBOSE)}}$everyOnloadAfterLoadSettings(){if(!this.settings.enableDebugTools)return Promise.resolve(!0);this.onMissingTranslation=this.onMissingTranslation.bind(this);__onMissingTranslation((key2=>{this.onMissingTranslation(key2)}));eventHub.onEvent("document-stub-created",(detail=>{fireAndForget((async()=>{const stub=detail.stub,toc2=detail.toc,stubDocX=Object.entries(stub).map((([key2,value])=>[`## ${key2}`,Object.entries(value).map((([key22,value2])=>[`### ${key22}`,[...value2.entries()].map((([key3,value3])=>{var _a7;const isObsolete=value3.is_obsolete?" (obsolete)":"",desc=null!=(_a7=value3.desc)?_a7:"";return`#### ${key3}${isObsolete}\n${value3.key?"Setting key: "+value3.key+"\n":""}${desc}\n`}))].flat())).flat()].flat())).flat(),stubDocMD="\n| Icon | Description |\n| :---: | ----------------------------------------------------------------- |\n"+[...toc2.values()].map((e3=>`${e3}`)).join("\n")+"\n\n"+stubDocX.join("\n");await this.core.storageAccess.writeHiddenFileAuto(this.app.vault.configDir+"/ls-debug/stub-doc.md",stubDocMD)}))}));this.plugin;this.registerView("ols-pane-test",(leaf=>new TestPaneView(leaf,this.plugin,this)));this.addCommand({id:"view-test",name:"Open Test dialogue",callback:()=>{this.core.$$showView("ols-pane-test")}});return Promise.resolve(!0)}async $everyOnLayoutReady(){if(!this.settings.enableDebugTools)return Promise.resolve(!0);await this.core.storageAccess.isExistsIncludeHidden("_SHOWDIALOGAUTO.md")&&this.core.$$showView("ols-pane-test");return!0}$$addTestResult(name,key2,result,summary,message){const logLine=`${name}: ${key2} ${null!=summary?summary:""}`;this.testResults.update((results=>{results.push([result,logLine,null!=message?message:""]);return results}))}$everyModuleTest(){return this.settings.enableDebugTools?this.testDone():Promise.resolve(!0)}};SerializedFileAccess=class{constructor(app2,plugin3){this.touchedFiles=[];this.app=app2;this.plugin=plugin3}async tryAdapterStat(file){const path2=file instanceof import_obsidian.TFile?file.path:file;return await processReadFile(file,(async()=>await this.app.vault.adapter.exists(path2)?this.app.vault.adapter.stat(path2):null))}async adapterStat(file){const path2=file instanceof import_obsidian.TFile?file.path:file;return await processReadFile(file,(()=>this.app.vault.adapter.stat(path2)))}async adapterExists(file){const path2=file instanceof import_obsidian.TFile?file.path:file;return await processReadFile(file,(()=>this.app.vault.adapter.exists(path2)))}async adapterRemove(file){const path2=file instanceof import_obsidian.TFile?file.path:file;return await processReadFile(file,(()=>this.app.vault.adapter.remove(path2)))}async adapterRead(file){const path2=file instanceof import_obsidian.TFile?file.path:file;return await processReadFile(file,(()=>this.app.vault.adapter.read(path2)))}async adapterReadBinary(file){const path2=file instanceof import_obsidian.TFile?file.path:file;return await processReadFile(file,(()=>this.app.vault.adapter.readBinary(path2)))}async adapterReadAuto(file){const path2=file instanceof import_obsidian.TFile?file.path:file;return isPlainText(path2)?await processReadFile(file,(()=>this.app.vault.adapter.read(path2))):await processReadFile(file,(()=>this.app.vault.adapter.readBinary(path2)))}async adapterWrite(file,data,options){const path2=file instanceof import_obsidian.TFile?file.path:file;return"string"==typeof data?await processWriteFile(file,(()=>this.app.vault.adapter.write(path2,data,options))):await processWriteFile(file,(()=>this.app.vault.adapter.writeBinary(path2,toArrayBuffer(data),options)))}async vaultCacheRead(file){return await processReadFile(file,(()=>this.app.vault.cachedRead(file)))}async vaultRead(file){return await processReadFile(file,(()=>this.app.vault.read(file)))}async vaultReadBinary(file){return await processReadFile(file,(()=>this.app.vault.readBinary(file)))}async vaultReadAuto(file){return isPlainText(file.path)?await processReadFile(file,(()=>this.app.vault.read(file))):await processReadFile(file,(()=>this.app.vault.readBinary(file)))}async vaultModify(file,data,options){return"string"==typeof data?await processWriteFile(file,(async()=>{const oldData=await this.app.vault.read(file);if(data===oldData){options&&options.mtime&&markChangesAreSame(file.path,file.stat.mtime,options.mtime);return!0}await this.app.vault.modify(file,data,options);return!0})):await processWriteFile(file,(async()=>{const oldData=await this.app.vault.readBinary(file);if(await isDocContentSame(createBinaryBlob(oldData),createBinaryBlob(data))){options&&options.mtime&&markChangesAreSame(file.path,file.stat.mtime,options.mtime);return!0}await this.app.vault.modifyBinary(file,toArrayBuffer(data),options);return!0}))}async vaultCreate(path2,data,options){return"string"==typeof data?await processWriteFile(path2,(()=>this.app.vault.create(path2,data,options))):await processWriteFile(path2,(()=>this.app.vault.createBinary(path2,toArrayBuffer(data),options)))}trigger(name,...data){return this.app.vault.trigger(name,...data)}async adapterAppend(normalizedPath,data,options){return await this.app.vault.adapter.append(normalizedPath,data,options)}async delete(file,force=!1){return await processWriteFile(file,(()=>this.app.vault.delete(file,force)))}async trash(file,force=!1){return await processWriteFile(file,(()=>this.app.vault.trash(file,force)))}isStorageInsensitive(){var _a7;return null==(_a7=this.app.vault.adapter.insensitive)||_a7}getAbstractFileByPathInsensitive(path2){return app.vault.getAbstractFileByPathInsensitive(path2)}getAbstractFileByPath(path2){return!this.plugin.settings.handleFilenameCaseSensitive||this.isStorageInsensitive()?this.getAbstractFileByPathInsensitive(path2):this.app.vault.getAbstractFileByPath(path2)}getFiles(){return this.app.vault.getFiles()}async ensureDirectory(fullPath){const pathElements=fullPath.split("/");pathElements.pop();let c3="";for(const v2 of pathElements){c3+=v2;try{await this.app.vault.adapter.mkdir(c3)}catch(ex){if("Folder already exists."==(null==ex?void 0:ex.message));else{Logger("Folder Create Error");Logger(ex)}}c3+="/"}}_statInternal(file){return this.app.vault.adapter.stat(file)}async touch(file){const path2=file instanceof import_obsidian.TFile?file.path:file,stat=(file instanceof import_obsidian.TFile?file.stat:await this._statInternal(path2))||{mtime:0,size:0},key2=`${path2}-${stat.mtime}-${stat.size}`;this.touchedFiles.unshift(key2);this.touchedFiles=this.touchedFiles.slice(0,100)}recentlyTouched(file){const key2="stat"in file?`${file.path}-${file.stat.mtime}-${file.stat.size}`:`${file.path}-${file.mtime}-${file.size}`;return-1!=this.touchedFiles.indexOf(key2)}clearTouched(){this.touchedFiles=[]}};StorageEventManager=class{};StorageEventManagerObsidian=class extends StorageEventManager{constructor(plugin3,core){super();this.bufferedQueuedItems=[];this.concurrentProcessing=Semaphore(5);this.waitedSince=new Map;this.processingCount=0;this.plugin=plugin3;this.core=core}get shouldBatchSave(){var _a7,_b3;return(null==(_a7=this.core.settings)?void 0:_a7.batchSave)&&1!=(null==(_b3=this.core.settings)?void 0:_b3.liveSync)}get batchSaveMinimumDelay(){var _a7,_b3;return null!=(_b3=null==(_a7=this.core.settings)?void 0:_a7.batchSaveMinimumDelay)?_b3:DEFAULT_SETTINGS.batchSaveMinimumDelay}get batchSaveMaximumDelay(){var _a7,_b3;return null!=(_b3=null==(_a7=this.core.settings)?void 0:_a7.batchSaveMaximumDelay)?_b3:DEFAULT_SETTINGS.batchSaveMaximumDelay}beginWatch(){const plugin3=this.plugin;this.watchVaultChange=this.watchVaultChange.bind(this);this.watchVaultCreate=this.watchVaultCreate.bind(this);this.watchVaultDelete=this.watchVaultDelete.bind(this);this.watchVaultRename=this.watchVaultRename.bind(this);this.watchVaultRawEvents=this.watchVaultRawEvents.bind(this);this.watchEditorChange=this.watchEditorChange.bind(this);plugin3.registerEvent(plugin3.app.vault.on("modify",this.watchVaultChange));plugin3.registerEvent(plugin3.app.vault.on("delete",this.watchVaultDelete));plugin3.registerEvent(plugin3.app.vault.on("rename",this.watchVaultRename));plugin3.registerEvent(plugin3.app.vault.on("create",this.watchVaultCreate));plugin3.registerEvent(plugin3.app.vault.on("raw",this.watchVaultRawEvents));plugin3.registerEvent(plugin3.app.workspace.on("editor-change",this.watchEditorChange))}watchEditorChange(editor,info3){if(!("path"in info3))return;if(!this.shouldBatchSave)return;const file=null==info3?void 0:info3.file;if(!file)return;if(!this.isWaiting(file.path))return;const data=null==info3?void 0:info3.data,fi={type:"CHANGED",file:TFileToUXFileInfoStub(file),cachedData:data};this.appendQueue([fi])}watchVaultCreate(file,ctx){if(file instanceof import_obsidian.TFolder)return;const fileInfo=TFileToUXFileInfoStub(file);this.appendQueue([{type:"CREATE",file:fileInfo}],ctx)}watchVaultChange(file,ctx){if(file instanceof import_obsidian.TFolder)return;const fileInfo=TFileToUXFileInfoStub(file);this.appendQueue([{type:"CHANGED",file:fileInfo}],ctx)}watchVaultDelete(file,ctx){if(file instanceof import_obsidian.TFolder)return;const fileInfo=TFileToUXFileInfoStub(file,!0);this.appendQueue([{type:"DELETE",file:fileInfo}],ctx)}watchVaultRename(file,oldFile,ctx){if(file instanceof import_obsidian.TFile){const fileInfo=TFileToUXFileInfoStub(file);this.appendQueue([{type:"DELETE",file:{path:oldFile,name:file.name,stat:{mtime:file.stat.mtime,ctime:file.stat.ctime,size:file.stat.size,type:"file"},deleted:!0},skipBatchWait:!0},{type:"CREATE",file:fileInfo,skipBatchWait:!0}],ctx)}}watchVaultRawEvents(path2){this.plugin.settings&&(this.plugin.settings.useIgnoreFiles?this.plugin.$$isTargetFile(path2).then((()=>this._watchVaultRawEvents(path2))):this._watchVaultRawEvents(path2))}_watchVaultRawEvents(path2){if((this.plugin.settings.syncInternalFiles||this.plugin.settings.usePluginSync)&&this.plugin.settings.watchInternalFileChanges&&path2.startsWith(this.plugin.app.vault.configDir)&&!this.plugin.settings.syncInternalFilesIgnorePatterns.replace(/\n| /g,"").split(",").filter((e3=>e3)).map((e3=>new RegExp(e3,"i"))).some((e3=>path2.match(e3)))&&!path2.endsWith("/")){this.appendQueue([{type:"INTERNAL",file:(filename=path2,{name:filename.split("/").pop(),path:filename,isFolder:!1,stat:void 0,isInternal:!0,deleted:void 0}),skipBatchWait:!0}],null);var filename}}async appendQueue(params,ctx){if(!this.core.settings.isConfigured)return;if(this.core.settings.suspendFileWatching)return;this.core.$$markFileListPossiblyChanged();const processFiles=new Set;for(const param of params){if(shouldBeIgnored(param.file.path))continue;const atomicKey=[0,0,0,0,0,0].map((e3=>`${Math.floor(1e5*Math.random())}`)).join("-"),type=param.type,file=param.file,oldPath=param.oldPath;if("INTERNAL"!==type){const size=file.stat.size;if(this.core.$$isFileSizeExceeded(size)&&("CREATE"==type||"CHANGED"==type)){Logger(`The storage file has been changed but exceeds the maximum size. Skipping: ${param.file.path}`,LOG_LEVEL_NOTICE);continue}}if(file instanceof import_obsidian.TFolder)continue;if(!await this.core.$$isTargetFile(file.path))continue;if((file instanceof import_obsidian.TFile||!file.isFolder)&&("CREATE"==type||"CHANGED"==type)){await delay(10);if(this.core.storageAccess.recentlyTouched(file.path))continue}let cache;param.cachedData&&(cache=param.cachedData);this.enqueue({type,args:{file,oldPath,cache,ctx},skipBatchWait:param.skipBatchWait,key:atomicKey});processFiles.add(file.path);oldPath&&processFiles.add(oldPath)}for(const path2 of processFiles)fireAndForget((()=>this.startStandingBy(path2)))}enqueue(newItem){const filename=newItem.args.file.path;if(this.shouldBatchSave){Logger(`Request cancel for waiting of previous ${filename}`,-1);(function finishWaitingForTimeout(key2,hasTimeout=!1){globalSlipBoard.submit("wait-for-timeout",key2,!!hasTimeout)})(`storage-event-manager-batchsave-${filename}`)}this.bufferedQueuedItems.push(newItem);if("DELETE"==newItem.type)return this.flushQueue()}async startStandingBy(filename){await skipIfDuplicated(`storage-event-manager-${filename}`,(async()=>{Logger(`Processing ${filename}: Starting`,-1);const release=await this.concurrentProcessing.acquire();try{Logger(`Processing ${filename}: Started`,-1);let noMoreFiles=!1;do{const target=this.bufferedQueuedItems.find((e3=>e3.args.file.path==filename));if(void 0===target){noMoreFiles=!0;break}const operationType=target.type,type=target.type;if(target.cancelled){Logger(`Processing ${filename}: Cancelled (scheduled): ${operationType}`,-1);this.cancelStandingBy(target)}else{if(target.skipBatchWait)Logger(`Processing ${filename}:Requested to perform immediately ${filename}: ${operationType}`,-1);else if(this.shouldBatchSave&&("CREATE"==type||"CHANGED"==type)){const waitedSince=this.waitedSince.get(filename);let canWait=!0;const now3=Date.now();if(void 0!==waitedSince&&waitedSince+1e3*this.batchSaveMaximumDelay<now3){Logger(`Processing ${filename}: Could not wait no more: ${operationType}`,LOG_LEVEL_INFO);canWait=!1}if(canWait){void 0===waitedSince&&this.waitedSince.set(filename,now3);target.batched=!0;Logger(`Processing ${filename}: Waiting for batch save delay: ${operationType}`,-1);this.updateStatus();if(!await waitForTimeout(`storage-event-manager-batchsave-${filename}`,1e3*this.batchSaveMinimumDelay)){Logger(`Processing ${filename}: Cancelled by new queue: ${operationType}`,-1);this.cancelStandingBy(target);continue}}}Logger(`Processing ${filename}: Request main to process: ${operationType}`,-1);await this.requestProcessQueue(target)}}while(!noMoreFiles)}finally{release()}Logger(`Processing ${filename}: Finished`,-1)}))}cancelStandingBy(fei){this.bufferedQueuedItems.remove(fei);this.updateStatus()}async requestProcessQueue(fei){try{this.processingCount++;this.bufferedQueuedItems.remove(fei);this.updateStatus();this.waitedSince.delete(fei.args.file.path);await this.handleFileEvent(fei)}finally{this.processingCount--;this.updateStatus()}}isWaiting(filename){return function isWaitingForTimeout(key2){return waitingItems.has(key2)}(`storage-event-manager-batchsave-${filename}`)}flushQueue(){this.bufferedQueuedItems.forEach((e3=>e3.skipBatchWait=!0));(function finishAllWaitingForTimeout(prefix,hasTimeout){globalSlipBoard.submitToAll("wait-for-timeout",prefix,!!hasTimeout)})("storage-event-manager-batchsave-",!0)}cancelQueue(key2){this.bufferedQueuedItems.forEach((e3=>{e3.key===key2&&(e3.skipBatchWait=!0)}))}updateStatus(){const allItems=this.bufferedQueuedItems.filter((e3=>!e3.cancelled)),batchedCount=allItems.filter((e3=>e3.batched&&!e3.skipBatchWait)).length;this.core.batched.value=batchedCount;this.core.processing.value=this.processingCount;this.core.totalQueued.value=allItems.length-batchedCount}async handleFileEvent(queue2){const file=queue2.args.file,lockKey=`handleFile:${file.path}`;return await serialized(lockKey,(async()=>{if("INTERNAL"==queue2.type||file.isInternal)await this.core.$anyProcessOptionalFileEvent(file.path);else{const key2=`file-last-proc-${queue2.type}-${file.path}`,last=Number(await this.core.kvDB.get(key2)||0);if("DELETE"==queue2.type)await this.core.$anyHandlerProcessesFileEvent(queue2);else{if(file.stat.mtime==last){Logger(`File has been already scanned on ${queue2.type}, skip: ${file.path}`,LOG_LEVEL_VERBOSE);return}if(!await this.core.$anyHandlerProcessesFileEvent(queue2)){Logger(`STORAGE -> DB: Handler failed, cancel the relative operations: ${file.path}`,LOG_LEVEL_INFO);this.cancelRelativeEvent(queue2);return}}}}))}cancelRelativeEvent(item){this.cancelQueue(item.key)}};import_obsidian8=require("obsidian");ModuleFileAccessObsidian=class extends AbstractObsidianModule{constructor(){super(...arguments);this.vaultManager=new StorageEventManagerObsidian(this.plugin,this.core)}$everyOnload(){this.core.storageAccess=this;return Promise.resolve(!0)}$everyOnFirstInitialize(){this.vaultManager.beginWatch();return Promise.resolve(!0)}$allOnUnload(){return Promise.resolve(!0)}$everyCommitPendingFileEvent(){this.vaultManager.flushQueue();return Promise.resolve(!0)}$everyOnloadStart(){this.vaultAccess=new SerializedFileAccess(this.app,this.plugin);return Promise.resolve(!0)}$$isStorageInsensitive(){return this.vaultAccess.isStorageInsensitive()}$$shouldCheckCaseInsensitive(){return!this.$$isStorageInsensitive()&&!this.settings.handleFilenameCaseSensitive}async writeFileAuto(path2,data,opt){const file=this.vaultAccess.getAbstractFileByPath(path2);if(file instanceof import_obsidian8.TFile)return this.vaultAccess.vaultModify(file,data,opt);if(null===file){if(path2.endsWith(".md"))return await this.vaultAccess.vaultCreate(path2,data,opt)instanceof import_obsidian8.TFile;await this.vaultAccess.adapterWrite(path2,data,opt);return await this.vaultAccess.adapterExists(path2)}this._log(`Could not write file (Possibly already exists as a folder): ${path2}`,LOG_LEVEL_VERBOSE);return!1}readFileAuto(path2){const file=this.vaultAccess.getAbstractFileByPath(path2);if(file instanceof import_obsidian8.TFile)return this.vaultAccess.vaultRead(file);throw new Error(`Could not read file (Possibly does not exist): ${path2}`)}readFileText(path2){const file=this.vaultAccess.getAbstractFileByPath(path2);if(file instanceof import_obsidian8.TFile)return this.vaultAccess.vaultRead(file);throw new Error(`Could not read file (Possibly does not exist): ${path2}`)}isExists(path2){return Promise.resolve(this.vaultAccess.getAbstractFileByPath(path2)instanceof import_obsidian8.TFile)}async writeHiddenFileAuto(path2,data,opt){try{await this.vaultAccess.adapterWrite(path2,data,opt);return!0}catch(e3){this._log(`Could not write hidden file: ${path2}`,LOG_LEVEL_VERBOSE);this._log(e3,LOG_LEVEL_VERBOSE);return!1}}async appendHiddenFile(path2,data,opt){try{await this.vaultAccess.adapterAppend(path2,data,opt);return!0}catch(e3){this._log(`Could not append hidden file: ${path2}`,LOG_LEVEL_VERBOSE);this._log(e3,LOG_LEVEL_VERBOSE);return!1}}stat(path2){const file=this.vaultAccess.getAbstractFileByPath(path2);if(null===file)return Promise.resolve(null);if(file instanceof import_obsidian8.TFile)return Promise.resolve({ctime:file.stat.ctime,mtime:file.stat.mtime,size:file.stat.size,type:"file"});throw new Error(`Could not stat file (Possibly does not exist): ${path2}`)}statHidden(path2){return this.vaultAccess.tryAdapterStat(path2)}async removeHidden(path2){try{await this.vaultAccess.adapterRemove(path2);return null===this.vaultAccess.tryAdapterStat(path2)}catch(e3){this._log(`Could not remove hidden file: ${path2}`,LOG_LEVEL_VERBOSE);this._log(e3,LOG_LEVEL_VERBOSE);return!1}}async readHiddenFileAuto(path2){return await this.vaultAccess.adapterReadAuto(path2)}async readHiddenFileText(path2){return await this.vaultAccess.adapterRead(path2)}async readHiddenFileBinary(path2){return await this.vaultAccess.adapterReadBinary(path2)}async isExistsIncludeHidden(path2){return null!==await this.vaultAccess.tryAdapterStat(path2)}async ensureDir(path2){try{await this.vaultAccess.ensureDirectory(path2);return!0}catch(e3){this._log(`Could not ensure directory: ${path2}`,LOG_LEVEL_VERBOSE);this._log(e3,LOG_LEVEL_VERBOSE);return!1}}triggerFileEvent(event2,path2){const file=this.vaultAccess.getAbstractFileByPath(path2);null!==file&&this.vaultAccess.trigger(event2,file)}async triggerHiddenFile(path2){await this.app.vault.adapter.reconcileInternalFile(path2)}getFileStub(path2){const file=this.vaultAccess.getAbstractFileByPath(path2);return file instanceof import_obsidian8.TFile?TFileToUXFileInfoStub(file):null}async readStubContent(stub){const file=this.vaultAccess.getAbstractFileByPath(stub.path);if(!(file instanceof import_obsidian8.TFile)){this._log(`Could not read file (Possibly does not exist or a folder): ${stub.path}`,LOG_LEVEL_VERBOSE);return!1}const data=await this.vaultAccess.vaultReadAuto(file);return{...stub,body:createBlob(data)}}getStub(path2){const file=this.vaultAccess.getAbstractFileByPath(path2);return file instanceof import_obsidian8.TFile?TFileToUXFileInfoStub(file):file instanceof import_obsidian8.TFolder?function TFolderToUXFileInfoStub(file){var _a7;return{name:file.name,path:file.path,parent:null==(_a7=file.parent)?void 0:_a7.path,isFolder:!0,children:file.children.map((e3=>TFileToUXFileInfoStub(e3)))}}(file):null}getFiles(){return this.vaultAccess.getFiles().map((f4=>TFileToUXFileInfoStub(f4)))}getFileNames(){return this.vaultAccess.getFiles().map((f4=>f4.path))}async getFilesIncludeHidden(basePath,includeFilter,excludeFilter,skipFolder=[".git",".trash","node_modules"]){var _a7;let w2;try{w2=await this.app.vault.adapter.list(basePath)}catch(ex){this._log(`Could not traverse(getFilesIncludeHidden):${basePath}`,LOG_LEVEL_INFO);this._log(ex,LOG_LEVEL_VERBOSE);return[]}skipFolder=skipFolder.map((e3=>e3.toLowerCase()));let files=[];for(const file of w2.files){if(excludeFilter&&excludeFilter.some((ee=>file.match(ee)))){if(!includeFilter)continue;if(!includeFilter.some((e3=>file.match(e3))))continue}includeFilter&&!includeFilter.some((e3=>file.match(e3)))||await this.plugin.$$isIgnoredByIgnoreFiles(file)||files.push(file)}for(const v2 of w2.folders){const folderName=(null!=(_a7=v2.split("/").pop())?_a7:"").toLowerCase();skipFolder.some((e3=>folderName===e3))||excludeFilter&&excludeFilter.some((e3=>v2.match(e3)))&&includeFilter&&!includeFilter.some((e3=>v2.match(e3)))||includeFilter&&!includeFilter.some((e3=>v2.match(e3)))||(files=files.concat(await this.getFilesIncludeHidden(v2,includeFilter,excludeFilter,skipFolder)))}return files}async touched(file){const path2="string"==typeof file?file:file.path;await this.vaultAccess.touch(path2)}recentlyTouched(file){const xFile="string"==typeof file?this.vaultAccess.getAbstractFileByPath(file):file;return null!==xFile&&!(xFile instanceof import_obsidian8.TFolder)&&this.vaultAccess.recentlyTouched(xFile)}clearTouched(){this.vaultAccess.clearTouched()}delete(file,force){const xPath="string"==typeof file?file:file.path,xFile=this.vaultAccess.getAbstractFileByPath(xPath);return null===xFile?Promise.resolve():xFile instanceof import_obsidian8.TFile||xFile instanceof import_obsidian8.TFolder?this.vaultAccess.delete(xFile,force):Promise.resolve()}trash(file,system){const xPath="string"==typeof file?file:file.path,xFile=this.vaultAccess.getAbstractFileByPath(xPath);return null===xFile?Promise.resolve():xFile instanceof import_obsidian8.TFile||xFile instanceof import_obsidian8.TFolder?this.vaultAccess.trash(xFile,system):Promise.resolve()}async _deleteVaultItem(file){if(file instanceof import_obsidian8.TFile&&!await this.core.$$isTargetFile(file.path))return;const dir=file.parent;this.settings.trashInsteadDelete?await this.vaultAccess.trash(file,!1):await this.vaultAccess.delete(file,!0);this._log(`xxx <- STORAGE (deleted) ${file.path}`);if(dir){this._log(`files: ${dir.children.length}`);if(0==dir.children.length&&!this.settings.doNotDeleteFolder){this._log(`All files under the parent directory (${dir.path}) have been deleted, so delete this one.`);await this._deleteVaultItem(dir)}}}async deleteVaultItem(fileSrc){const path2="string"==typeof fileSrc?fileSrc:fileSrc.path,file=this.vaultAccess.getAbstractFileByPath(path2);if(null!==file)return file instanceof import_obsidian8.TFile||file instanceof import_obsidian8.TFolder?await this._deleteVaultItem(file):void 0}};require("obsidian");AutoClosableModal=class extends import_obsidian.Modal{_closeByUnload(){eventHub.off("plugin-unloaded",this._closeByUnload);this.close()}constructor(app2){super(app2);this._closeByUnload=this._closeByUnload.bind(this);eventHub.once("plugin-unloaded",this._closeByUnload)}onClose(){eventHub.off("plugin-unloaded",this._closeByUnload)}};InputStringDialog=class extends AutoClosableModal{constructor(app2,title,key2,placeholder,isPassword,onSubmit){super(app2);this.result=!1;this.isManuallyClosed=!1;this.isPassword=!1;this.onSubmit=onSubmit;this.title=title;this.placeholder=placeholder;this.key=key2;this.isPassword=isPassword}onOpen(){const{contentEl}=this;this.titleEl.setText(this.title);const formEl=contentEl.createDiv();new import_obsidian.Setting(formEl).setName(this.key).setClass(this.isPassword?"password-input":"normal-input").addText((text2=>text2.onChange((value=>{this.result=value}))));new import_obsidian.Setting(formEl).addButton((btn=>btn.setButtonText("Ok").setCta().onClick((()=>{this.isManuallyClosed=!0;this.close()})))).addButton((btn=>btn.setButtonText("Cancel").setCta().onClick((()=>{this.close()}))))}onClose(){super.onClose();const{contentEl}=this;contentEl.empty();this.isManuallyClosed?this.onSubmit(this.result):this.onSubmit(!1)}};PopoverSelectString=class extends import_obsidian.FuzzySuggestModal{constructor(app2,note,placeholder,getItemsFun,callback){super(app2);this.callback=()=>{};this.getItemsFun=()=>["yes","no"];this.app=app2;this.setPlaceholder((null!=placeholder?placeholder:"y/n) ")+note);getItemsFun&&(this.getItemsFun=getItemsFun);this.callback=callback}getItems(){return this.getItemsFun()}getItemText(item){return item}onChooseItem(item,evt){var _a7;null==(_a7=this.callback)||_a7.call(this,item);this.callback=void 0}onClose(){setTimeout((()=>{if(this.callback){this.callback("");this.callback=void 0}}),100)}};MessageBox=class extends AutoClosableModal{constructor(plugin3,title,contentMd,buttons,defaultAction,timeout,wideButton,onSubmit){super(plugin3.app);this.result=!1;this.isManuallyClosed=!1;this.timer=void 0;this.plugin=plugin3;this.title=title;this.contentMd=contentMd;this.buttons=buttons;this.onSubmit=onSubmit;this.defaultAction=defaultAction;this.timeout=timeout;this.wideButton=wideButton;this.timeout&&(this.timer=setInterval((()=>{var _a7,_b3;if(void 0!==this.timeout){this.timeout--;if(this.timeout<0){if(this.timer){clearInterval(this.timer);null==(_a7=this.defaultButtonComponent)||_a7.setButtonText(`${defaultAction}`);this.timer=void 0}this.result=defaultAction;this.isManuallyClosed=!0;this.close()}else null==(_b3=this.defaultButtonComponent)||_b3.setButtonText(`( ${this.timeout} ) ${defaultAction}`)}}),1e3))}onOpen(){const{contentEl}=this;this.titleEl.setText(this.title);const div=contentEl.createDiv();div.style.userSelect="text";div.style.webkitUserSelect="text";import_obsidian.MarkdownRenderer.render(this.plugin.app,this.contentMd,div,"/",this.plugin);const buttonSetting=new import_obsidian.Setting(contentEl),labelWrapper=contentEl.createDiv();labelWrapper.addClass("sls-dialogue-note-wrapper");labelWrapper.createEl("label",{text:"To stop the countdown, tap anywhere on the dialogue"}).addClass("sls-dialogue-note-countdown");if(!this.timeout||!this.timer){labelWrapper.empty();labelWrapper.style.display="none"}buttonSetting.infoEl.style.display="none";buttonSetting.controlEl.style.flexWrap="wrap";if(this.wideButton){buttonSetting.controlEl.style.flexDirection="column";buttonSetting.controlEl.style.alignItems="center";buttonSetting.controlEl.style.justifyContent="center";buttonSetting.controlEl.style.flexGrow="1"}contentEl.addEventListener("click",(()=>{var _a7;if(this.timer){labelWrapper.empty();labelWrapper.style.display="none";clearInterval(this.timer);this.timer=void 0;null==(_a7=this.defaultButtonComponent)||_a7.setButtonText(`${this.defaultAction}`)}}));for(const button of this.buttons)buttonSetting.addButton((btn=>{btn.setButtonText(button).onClick((()=>{this.isManuallyClosed=!0;this.result=button;if(this.timer){clearInterval(this.timer);this.timer=void 0}this.close()}));if(button==this.defaultAction){this.defaultButtonComponent=btn;btn.setCta()}if(this.wideButton){btn.buttonEl.style.flexGrow="1";btn.buttonEl.style.width="100%"}return btn}))}onClose(){super.onClose();const{contentEl}=this;contentEl.empty();if(this.timer){clearInterval(this.timer);this.timer=void 0}this.isManuallyClosed?this.onSubmit(this.result):this.onSubmit(!1)}};askYesNo=(app2,message)=>new Promise((res2=>{new PopoverSelectString(app2,message,void 0,void 0,(result=>res2(result))).open()}));askSelectString=(app2,message,items)=>{const getItemsFun=()=>items;return new Promise((res2=>{new PopoverSelectString(app2,message,"",getItemsFun,(result=>res2(result))).open()}))};askString=(app2,title,key2,placeholder,isPassword=!1)=>new Promise((res2=>{new InputStringDialog(app2,title,key2,placeholder,isPassword,(result=>res2(result))).open()}));ModuleInputUIObsidian=class extends AbstractObsidianModule{$everyOnload(){this.core.confirm=this;(function setConfirmInstance(api){if(!instance){instance=api;p.resolve(api)}instance=api})(this);return Promise.resolve(!0)}askYesNo(message){return askYesNo(this.app,message)}askString(title,key2,placeholder,isPassword=!1){return askString(this.app,title,key2,placeholder,isPassword)}async askYesNoDialog(message,opt={title:"Confirmation"}){const defaultTitle=$msg("moduleInputUIObsidian.defaultTitleConfirmation"),yesLabel=$msg("moduleInputUIObsidian.optionYes"),noLabel=$msg("moduleInputUIObsidian.optionNo"),defaultOption="Yes"===opt.defaultOption?yesLabel:noLabel;return await confirmWithMessageWithWideButton(this.plugin,opt.title||defaultTitle,message,[yesLabel,noLabel],defaultOption,opt.timeout)===yesLabel?"yes":"no"}askSelectString(message,items){return askSelectString(this.app,message,items)}askSelectStringDialogue(message,buttons,opt){const defaultTitle=$msg("moduleInputUIObsidian.defaultTitleSelect");return confirmWithMessageWithWideButton(this.plugin,opt.title||defaultTitle,message,buttons,opt.defaultAction,opt.timeout)}askInPopup(key2,dialogText,anchorCallback){const fragment=createFragment((doc=>{const[beforeText,afterText]=dialogText.split("{HERE}",2);doc.createEl("span",void 0,(a2=>{a2.appendText(beforeText);a2.appendChild(a2.createEl("a",void 0,(anchor=>{anchorCallback(anchor)})));a2.appendText(afterText)}))})),popupKey="popup-"+key2;scheduleTask(popupKey,1e3,(async()=>{var _a7;const popup=await memoIfNotExist(popupKey,(()=>new import_obsidian.Notice(fragment,0)));(null==(_a7=null==popup?void 0:popup.noticeEl)?void 0:_a7.isShown())||memoObject(popupKey,new import_obsidian.Notice(fragment,0));scheduleTask(popupKey+"-close",2e4,(()=>{var _a8;const popup2=retrieveMemoObject(popupKey);if(popup2){(null==(_a8=null==popup2?void 0:popup2.noticeEl)?void 0:_a8.isShown())&&popup2.hide();disposeMemoObject(popupKey)}}))}))}confirmWithMessage(title,contentMd,buttons,defaultAction,timeout){return confirmWithMessage(this.plugin,title,contentMd,buttons,defaultAction,timeout)}};ConditionType=(ConditionType2=>{ConditionType2.PLATFORM_CASE_INSENSITIVE="platform-case-insensitive";ConditionType2.PLATFORM_CASE_SENSITIVE="platform-case-sensitive";ConditionType2.REMOTE_CASE_SENSITIVE="remote-case-sensitive";return ConditionType2})(ConditionType||{});RuleLevel=(RuleLevel2=>{RuleLevel2[RuleLevel2.Must=0]="Must";RuleLevel2[RuleLevel2.Necessary=1]="Necessary";RuleLevel2[RuleLevel2.Recommended=2]="Recommended";RuleLevel2[RuleLevel2.Optional=3]="Optional";return RuleLevel2})(RuleLevel||{});DoctorRegulation={version:"0.24.16",rules:{sendChunksBulk:{value:!1,reason:"This is an obsolete setting and we should not enable this no more",level:0},sendChunksBulkMaxSize:{value:1,reason:"This is an obsolete setting and we should not enable this no more",level:0},doNotUseFixedRevisionForChunks:{value:!0,reason:"This value has been reverted at v0.24.16 for garbage collection of chunks.",level:2},handleFilenameCaseSensitive:{value:!1,reason:"If Self-hosted LiveSync is Case-Sensitive, unexpected file operations may occur when synchronising with Windows, Android or other devices. This value should only be enabled if all devices have a Case-Sensitive file system.",requireRebuild:!0,level:2},useIndexedDBAdapter:{value:!0,requireRebuildLocal:!0,level:3,reason:"The old option is active. This is not a performance-appropriate setting."},useEden:{reason:"This option is no longer recommended.",level:3,value:!1},hashAlg:{obsoleteValues:["sha1","xxhash32",""],value:"xxhash64",level:1,reason:"The hash function is set to the old fallback. This should be retried. This may result in a change to the new fallback."},disableCheckingConfigMismatch:{value:!1,level:2,reason:"If you disabled an older version of the dialogue because it was hard to understand, try it once in the latest version."},enableCompression:{value:!1,level:2,requireRebuild:!0,reason:"This option will be sunset soon."}}};OnDialogSettingsDefault={configPassphrase:"",preset:"",syncMode:"ONEVENTS",dummy:0,deviceAndVaultName:""};SettingInformation={liveSync:{name:"Sync Mode"},couchDB_URI:{name:"Server URI",placeHolder:"https://........"},couchDB_USER:{name:"Username",desc:"username"},couchDB_PASSWORD:{name:"Password",desc:"password"},couchDB_DBNAME:{name:"Database Name"},passphrase:{name:"Passphrase",desc:"Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files."},showStatusOnEditor:{name:"Show status inside the editor",desc:"Requires restart of Obsidian."},showOnlyIconsOnEditor:{name:"Show status as icons only"},showStatusOnStatusbar:{name:"Show status on the status bar",desc:"Requires restart of Obsidian."},lessInformationInLog:{name:"Show only notifications",desc:"Disables logging, only shows notifications. Please disable if you report an issue."},showVerboseLog:{name:"Verbose Log",desc:"Show verbose log. Please enable if you report an issue."},hashCacheMaxCount:{name:"Memory cache size (by total items)"},hashCacheMaxAmount:{name:"Memory cache size (by total characters)",desc:"(Mega chars)"},writeCredentialsForSettingSync:{name:"Write credentials in the file",desc:"(Not recommended) If set, credentials will be stored in the file."},notifyAllSettingSyncFile:{name:"Notify all setting files"},configPassphrase:{name:"Passphrase of sensitive configuration items",desc:"This passphrase will not be copied to another device. It will be set to `Default` until you configure it again."},configPassphraseStore:{name:"Encrypting sensitive configuration items"},syncOnSave:{name:"Sync on Save",desc:"Starts synchronisation when a file is saved."},syncOnEditorSave:{name:"Sync on Editor Save",desc:"When you save a file in the editor, start a sync automatically"},syncOnFileOpen:{name:"Sync on File Open",desc:"Forces the file to be synced when opened."},syncOnStart:{name:"Sync on Startup",desc:"Automatically Sync all files when opening Obsidian."},syncAfterMerge:{name:"Sync after merging file",desc:"Sync automatically after merging files"},trashInsteadDelete:{name:"Use the trash bin",desc:"Move remotely deleted files to the trash, instead of deleting."},doNotDeleteFolder:{name:"Keep empty folder",desc:"Should we keep folders that don't have any files inside?"},resolveConflictsByNewerFile:{name:"(BETA) Always overwrite with a newer file",desc:"Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned."},checkConflictOnlyOnOpen:{name:"Delay conflict resolution of inactive files",desc:"Should we only check for conflicts when a file is opened?"},showMergeDialogOnlyOnActive:{name:"Delay merge conflict prompt for inactive files.",desc:"Should we prompt you about conflicting files when a file is opened?"},disableMarkdownAutoMerge:{name:"Always prompt merge conflicts",desc:"Should we prompt you for every single merge, even if we can safely merge automatcially?"},writeDocumentsIfConflicted:{name:"Apply Latest Change if Conflicting",desc:"Enable this option to automatically apply the most recent change to documents even when it conflicts"},syncInternalFilesInterval:{name:"Scan hidden files periodically",desc:"Seconds, 0 to disable"},batchSave:{name:"Batch database update",desc:"Reducing the frequency with which on-disk changes are reflected into the DB"},readChunksOnline:{name:"Fetch chunks on demand",desc:"(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended."},syncMaxSizeInMB:{name:"Maximum file size",desc:"(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used."},useIgnoreFiles:{name:"(Beta) Use ignore files",desc:"If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files."},ignoreFiles:{name:"Ignore files",desc:"Comma separated `.gitignore, .dockerignore`"},batch_size:{name:"Batch size",desc:"Number of changes to sync at a time. Defaults to 50. Minimum is 2."},batches_limit:{name:"Batch limit",desc:"Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time."},useTimeouts:{name:"Use timeouts instead of heartbeats",desc:"If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage."},concurrencyOfReadChunksOnline:{name:"Batch size of on-demand fetching"},minimumIntervalOfReadChunksOnline:{name:"The delay for consecutive on-demand fetches"},suspendFileWatching:{name:"Suspend file watching",desc:"Stop watching for file changes."},suspendParseReplicationResult:{name:"Suspend database reflecting",desc:"Stop reflecting database changes to storage files."},writeLogToTheFile:{name:"Write logs into the file",desc:"Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information."},deleteMetadataOfDeletedFiles:{name:"Do not keep metadata of deleted files."},useIndexedDBAdapter:{name:"(Obsolete) Use an old adapter for compatibility",desc:"Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.",obsolete:!0},watchInternalFileChanges:{name:"Scan changes on customization sync",desc:"Do not use internal API"},doNotSuspendOnFetching:{name:"Fetch database with previous behaviour"},disableCheckingConfigMismatch:{name:"Do not check configuration mismatch before replication"},usePluginSync:{name:"Enable customization sync"},autoSweepPlugins:{name:"Scan customization automatically",desc:"Scan customization before replicating."},autoSweepPluginsPeriodic:{name:"Scan customization periodically",desc:"Scan customization every 1 minute."},notifyPluginOrSettingUpdated:{name:"Notify customized",desc:"Notify when other device has newly customized."},remoteType:{name:"Remote Type",desc:"Remote server type"},endpoint:{name:"Endpoint URL",placeHolder:"https://........"},accessKey:{name:"Access Key"},secretKey:{name:"Secret Key"},region:{name:"Region",placeHolder:"auto"},bucket:{name:"Bucket Name"},useCustomRequestHandler:{name:"Use Custom HTTP Handler",desc:"Enable this if your Object Storage doesn't support CORS"},maxChunksInEden:{name:"Maximum Incubating Chunks",desc:"The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks."},maxTotalLengthInEden:{name:"Maximum Incubating Chunk Size",desc:"The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks."},maxAgeInEden:{name:"Maximum Incubation Period",desc:"The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks."},settingSyncFile:{name:"Filename",desc:"Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform."},preset:{name:"Presets",desc:"Apply preset configuration"},syncMode:{name:"Sync Mode"},periodicReplicationInterval:{name:"Periodic Sync interval",desc:"Interval (sec)"},syncInternalFilesBeforeReplication:{name:"Scan for hidden files before replication"},automaticallyDeleteMetadataOfDeletedFiles:{name:"Delete old metadata of deleted files on start-up",desc:"(Days passed, 0 to disable automatic-deletion)"},additionalSuffixOfDatabaseName:{name:"Database suffix",desc:"LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured."},hashAlg:{name:(null==(_a6=configurationNames.hashAlg)?void 0:_a6.name)||"",desc:"xxhash64 is the current default."},deviceAndVaultName:{name:"Device name",desc:"Unique name between all synchronized devices. To edit this setting, please disable customization sync once."},displayLanguage:{name:"Display Language",desc:'Not all messages have been translated. And, please revert to "Default" when reporting errors.'},enableChunkSplitterV2:{name:"Use splitting-limit-capped chunk splitter",desc:"If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker."},disableWorkerForGeneratingChunks:{name:"Do not split chunks in the background",desc:"If disabled(toggled), chunks will be split on the UI thread (Previous behaviour)."},processSmallFilesInUIThread:{name:"Process small files in the foreground",desc:"If enabled, the file under 1kb will be processed in the UI thread."},batchSaveMinimumDelay:{name:"Minimum delay for batch database updating",desc:"Seconds. Saving to the local database will be delayed until this value after we stop typing or saving."},batchSaveMaximumDelay:{name:"Maximum delay for batch database updating",desc:"Saving will be performed forcefully after this number of seconds."},notifyThresholdOfRemoteStorageSize:{name:"Notify when the estimated remote storage size exceeds on start up",desc:"MB (0 to disable)."},usePluginSyncV2:{name:"Enable per-file customization sync",desc:"If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions."},handleFilenameCaseSensitive:{name:"Handle files as Case-Sensitive",desc:"If this enabled, All files are handled as case-Sensitive (Previous behaviour)."},doNotUseFixedRevisionForChunks:{name:"Compute revisions for chunks",desc:"If this enabled, all chunks will be stored with the revision made from its content."},sendChunksBulkMaxSize:{name:"Maximum size of chunks to send in one request",desc:"MB"},useAdvancedMode:{name:"Enable advanced features"},usePowerUserMode:{name:"Enable poweruser features"},useEdgeCaseMode:{name:"Enable edge case treatment features"},enableDebugTools:{name:"Enable Developers' Debug Tools.",desc:"Requires restart of Obsidian"},suppressNotifyHiddenFilesChange:{name:"Suppress notification of hidden files change",desc:"If enabled, the notification of hidden files change will be suppressed."},syncMinimumInterval:{name:"Minimum interval for syncing",desc:"The minimum interval for automatic synchronisation on event."}};ModuleMigration=class extends AbstractModule{async migrateUsingDoctor(skipRebuild=!1,activateReason="updated",forceRescan=!1){var _a7;const r4=function checkUnsuitableValues(setting,regulation=DoctorRegulation){var _a7,_b3;const result={version:regulation.version,rules:{}};for(const key2 in regulation.rules){if(!regulation.rules.hasOwnProperty(key2))continue;const rule=regulation.rules[key2];if(!rule)continue;const value=setting[key2];if(rule.value!==value){if("number"==typeof value&&"min"in rule&&"max"in rule){const min=null!=(_a7=rule.min)?_a7:Number.MIN_SAFE_INTEGER,max3=null!=(_b3=rule.max)?_b3:Number.MAX_SAFE_INTEGER;if(value>=min&&value<=max3){Logger(`Rule satisfied: ${key2} is ${value} between ${min} and ${max3}`);continue}}result.rules[key2]=rule;Logger(`Rule violation: ${key2} is ${value} but should be ${rule.value}`)}else Logger(`Rule satisfied: ${key2} is ${value}`)}return result}(this.core.settings);if(forceRescan||r4.version!=this.settings.doctorProcessedVersion)if(0!=Object.entries(r4.rules).length){const OPT_YES=`${$msg("Doctor.Button.Yes")}`,OPT_NO=`${$msg("Doctor.Button.No")}`,OPT_DISMISS=`${$msg("Doctor.Button.DismissThisVersion")}`,issues2=Object.keys(r4.rules).map((key2=>`- ${getConfName(key2)}`)).join("\n"),msg=await this.core.confirm.askSelectStringDialogue($msg("Doctor.Dialogue.Main",{activateReason,issues:issues2}),[OPT_YES,OPT_NO,OPT_DISMISS],{title:$msg("Doctor.Dialogue.Title"),defaultAction:OPT_YES});if(msg==OPT_DISMISS){this.settings.doctorProcessedVersion=r4.version;await this.core.saveSettings();this._log("Marked as to be silent",LOG_LEVEL_VERBOSE);return}if(msg!=OPT_YES)return;let shouldRebuild=!1,shouldRebuildLocal=!1;const issueItems=Object.entries(r4.rules);this._log(`${issueItems.length} Issue(s) found `,LOG_LEVEL_VERBOSE);let idx2=0;const applySettings={},OPT_FIX=`${$msg("Doctor.Button.Fix")}`,OPT_SKIP=`${$msg("Doctor.Button.Skip")}`,OPT_FIXBUTNOREBUILD=`${$msg("Doctor.Button.FixButNoRebuild")}`;let skipped=0;for(const[key2,value]of issueItems){const levelMap={[1]:$msg("Doctor.Level.Necessary"),[2]:$msg("Doctor.Level.Recommended"),[3]:$msg("Doctor.Level.Optional"),[0]:$msg("Doctor.Level.Must")},level=value.level?levelMap[value.level]:"Unknown",options=[OPT_FIX];(!skipRebuild&&value.requireRebuild||value.requireRebuildLocal)&&options.push(OPT_FIXBUTNOREBUILD);options.push(OPT_SKIP);const note=skipRebuild?"":`${value.requireRebuild?$msg("Doctor.Message.RebuildRequired"):""}${value.requireRebuildLocal?$msg("Doctor.Message.RebuildLocalRequired"):""}`,ret=await this.core.confirm.askSelectStringDialogue($msg("Doctor.Dialogue.MainFix",{name:getConfName(key2),current:`${this.settings[key2]}`,reason:null!=(_a7=value.reason)?_a7:" N/A ",ideal:`${value.value}`,level:`${level}`,note}),options,{title:$msg("Doctor.Dialogue.TitleFix",{current:""+ ++idx2,total:`${issueItems.length}`}),defaultAction:OPT_FIX});if(ret==OPT_FIX||ret==OPT_FIXBUTNOREBUILD){applySettings[key2]=value.value;if(ret==OPT_FIX){shouldRebuild=shouldRebuild||value.requireRebuild||!1;shouldRebuildLocal=shouldRebuildLocal||value.requireRebuildLocal||!1}}else skipped++}Object.keys(applySettings).length>0&&(this.settings={...this.settings,...applySettings});(0==skipped||"no"==await this.core.confirm.askYesNoDialog($msg("Doctor.Message.SomeSkipped"),{title:$msg("Doctor.Dialogue.TitleAlmostDone"),defaultOption:"No"}))&&(this.settings.doctorProcessedVersion=r4.version);await this.core.saveSettings();if(!skipRebuild)if(shouldRebuild){await this.core.rebuilder.scheduleRebuild();await this.core.$$performRestart()}else if(shouldRebuildLocal){await this.core.rebuilder.scheduleFetch();await this.core.$$performRestart()}}else this._log($msg("Doctor.Message.NoIssues"),"updated"!==activateReason?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO);else{const msg=Object.keys(r4.rules).length>0?"Issues found":"No issues found";this._log(`${msg} but marked as to be silent`,LOG_LEVEL_VERBOSE)}}async migrateDisableBulkSend(){if(this.settings.sendChunksBulk){this._log($msg("moduleMigration.logBulkSendCorrupted"),LOG_LEVEL_NOTICE);this.settings.sendChunksBulk=!1;this.settings.sendChunksBulkMaxSize=1;await this.saveSettings()}}async initialMessage(){const message=$msg("moduleMigration.msgInitialSetup",{URI_DOC:$msg("moduleMigration.docUri")}),USE_SETUP=$msg("moduleMigration.optionHaveSetupUri"),NEXT=$msg("moduleMigration.optionNoSetupUri"),ret=await this.core.confirm.askSelectStringDialogue(message,[USE_SETUP,NEXT],{title:$msg("moduleMigration.titleWelcome"),defaultAction:USE_SETUP});if(ret===USE_SETUP){eventHub.emitEvent("request-open-setup-uri");return!1}return ret==NEXT}async askAgainForSetupURI(){const message=$msg("moduleMigration.msgRecommendSetupUri",{URI_DOC:$msg("moduleMigration.docUri")}),USE_MINIMAL=$msg("moduleMigration.optionSetupWizard"),USE_P2P=$msg("moduleMigration.optionSetupViaP2P"),USE_SETUP=$msg("moduleMigration.optionManualSetup"),NEXT=$msg("moduleMigration.optionRemindNextLaunch"),ret=await this.core.confirm.askSelectStringDialogue(message,[USE_MINIMAL,USE_SETUP,USE_P2P,NEXT],{title:$msg("moduleMigration.titleRecommendSetupUri"),defaultAction:USE_MINIMAL});if(ret===USE_MINIMAL){eventHub.emitEvent("request-open-setting-wizard");return!1}if(ret===USE_P2P){eventHub.emitEvent("request-open-p2p");return!1}if(ret===USE_SETUP){eventHub.emitEvent("request-open-settings");return!1}return!1}async $everyOnFirstInitialize(){if(!this.localDatabase.isReady){this._log($msg("moduleMigration.logLocalDatabaseNotReady"),LOG_LEVEL_NOTICE);return!1}if(this.settings.isConfigured){await this.migrateUsingDoctor(!1);await this.migrateDisableBulkSend()}if(!this.settings.isConfigured){if(!await this.initialMessage()||!await this.askAgainForSetupURI()){this._log($msg("moduleMigration.logSetupCancelled"),LOG_LEVEL_NOTICE);return!1}await this.migrateUsingDoctor(!0)}return!0}$everyOnLayoutReady(){eventHub.onEvent("request-run-doctor",(async reason=>{await this.migrateUsingDoctor(!1,reason,!0)}));return Promise.resolve(!0)}};ModuleCheckRemoteSize=class extends AbstractModule{async $allScanStat(){var _a7;this._log($msg("moduleCheckRemoteSize.logCheckingStorageSizes"),LOG_LEVEL_VERBOSE);if(this.settings.notifyThresholdOfRemoteStorageSize<0){const message=$msg("moduleCheckRemoteSize.msgSetDBCapacity"),ANSWER_0=$msg("moduleCheckRemoteSize.optionNoWarn"),ANSWER_800=$msg("moduleCheckRemoteSize.option800MB"),ANSWER_2000=$msg("moduleCheckRemoteSize.option2GB"),ASK_ME_NEXT_TIME=$msg("moduleCheckRemoteSize.optionAskMeLater"),ret=await this.core.confirm.askSelectStringDialogue(message,[ANSWER_0,ANSWER_800,ANSWER_2000,ASK_ME_NEXT_TIME],{defaultAction:ASK_ME_NEXT_TIME,title:$msg("moduleCheckRemoteSize.titleDatabaseSizeNotify"),timeout:40});if(ret==ANSWER_0){this.settings.notifyThresholdOfRemoteStorageSize=0;await this.core.saveSettings()}else if(ret==ANSWER_800){this.settings.notifyThresholdOfRemoteStorageSize=800;await this.core.saveSettings()}else if(ret==ANSWER_2000){this.settings.notifyThresholdOfRemoteStorageSize=2e3;await this.core.saveSettings()}}if(this.settings.notifyThresholdOfRemoteStorageSize>0){const remoteStat=await(null==(_a7=this.core.replicator)?void 0:_a7.getRemoteStatus(this.settings));if(remoteStat){const estimatedSize=remoteStat.estimatedSize;if(estimatedSize){const maxSize=1024*this.settings.notifyThresholdOfRemoteStorageSize*1024;if(estimatedSize>maxSize){const message=$msg("moduleCheckRemoteSize.msgDatabaseGrowing",{estimatedSize:sizeToHumanReadable2(estimatedSize),maxSize:sizeToHumanReadable2(maxSize)}),ANSWER_ENLARGE_LIMIT=$msg("moduleCheckRemoteSize.optionIncreaseLimit",{newMax:(100+~~(estimatedSize/1024/1024)).toString()}),ANSWER_REBUILD=$msg("moduleCheckRemoteSize.optionRebuildAll"),ANSWER_IGNORE=$msg("moduleCheckRemoteSize.optionDismiss"),ret=await this.core.confirm.askSelectStringDialogue(message,[ANSWER_ENLARGE_LIMIT,ANSWER_REBUILD,ANSWER_IGNORE],{defaultAction:ANSWER_IGNORE,title:$msg("moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded"),timeout:60});if(ret==ANSWER_REBUILD){if("yes"==await this.core.confirm.askYesNoDialog($msg("moduleCheckRemoteSize.msgConfirmRebuild"),{defaultOption:"No"})){this.core.settings.notifyThresholdOfRemoteStorageSize=-1;await this.saveSettings();await this.core.rebuilder.scheduleRebuild()}}else if(ret==ANSWER_ENLARGE_LIMIT){this.settings.notifyThresholdOfRemoteStorageSize=100+~~(estimatedSize/1024/1024);this._log($msg("moduleCheckRemoteSize.logThresholdEnlarged",{size:this.settings.notifyThresholdOfRemoteStorageSize.toString()}),LOG_LEVEL_NOTICE);await this.core.saveSettings()}this._log($msg("moduleCheckRemoteSize.logExceededWarning",{measuredSize:sizeToHumanReadable2(estimatedSize),notifySize:sizeToHumanReadable2(1024*this.settings.notifyThresholdOfRemoteStorageSize*1024)}),LOG_LEVEL_INFO)}else this._log($msg("moduleCheckRemoteSize.logCurrentStorageSize",{measuredSize:sizeToHumanReadable2(estimatedSize)}),LOG_LEVEL_INFO)}}}return!0}};import_diff_match_patch4=__toESM(require_diff_match_patch(),1);ModuleConflictResolver=class extends AbstractModule{async $$resolveConflictByDeletingRev(path2,deleteRevision,subTitle=""){const title=`Resolving ${subTitle?`[${subTitle}]`:""}:`;if(!await this.core.fileHandler.deleteRevisionFromDB(path2,deleteRevision)){this._log(`${title} Could not delete conflicted revision ${displayRev(deleteRevision)} of ${path2}`,LOG_LEVEL_NOTICE);return MISSING_OR_ERROR}eventHub.emitEvent("conflict-cancelled",path2);this._log(`${title} Conflicted revision deleted ${displayRev(deleteRevision)} ${path2}`,LOG_LEVEL_INFO);if(0!=(await this.core.databaseFileAccess.getConflictedRevs(path2)).length){this._log(`${title} some conflicts are left in ${path2}`,LOG_LEVEL_INFO);return AUTO_MERGED}this._log(`${title} ${path2} is a plugin metadata file, no need to write to storage`,LOG_LEVEL_INFO);if(isPluginMetadata(path2)||isCustomisationSyncMetadata(path2))return AUTO_MERGED;if(!await this.core.fileHandler.dbToStorage(path2,stripAllPrefixes(path2),!0)){this._log(`Could not write the resolved content to the storage: ${path2}`,LOG_LEVEL_NOTICE);return MISSING_OR_ERROR}this._log(`${path2} Has been merged automatically`,LOG_LEVEL_NOTICE);return AUTO_MERGED}async checkConflictAndPerformAutoMerge(path2){const ret=await this.localDatabase.tryAutoMerge(path2,!this.settings.disableMarkdownAutoMerge);if("ok"in ret)return ret.ok;if("result"in ret){const p4=ret.result;if(!await this.core.databaseFileAccess.storeContent(path2,p4)){this._log(`Merged content cannot be stored:${path2}`,LOG_LEVEL_NOTICE);return MISSING_OR_ERROR}return await this.core.$$resolveConflictByDeletingRev(path2,ret.conflictedRev,"Sensible")}const{rightRev,leftLeaf,rightLeaf}=ret;if(0==leftLeaf){this._log(`could not get current revisions:${path2}`,LOG_LEVEL_NOTICE);return MISSING_OR_ERROR}if(0==rightLeaf)return await this.core.$$resolveConflictByDeletingRev(path2,rightRev,"MISSING OLD REV");const isSame=leftLeaf.data==rightLeaf.data&&leftLeaf.deleted==rightLeaf.deleted,isBinary=!isPlainText(path2),alwaysNewer=this.settings.resolveConflictsByNewerFile;if(isSame||isBinary||alwaysNewer){let loser=leftLeaf;compareMTime(leftLeaf.mtime,rightLeaf.mtime)!=TARGET_IS_NEW&&(loser=rightLeaf);const subTitle=[isSame?"same":"",isBinary?"binary":"",alwaysNewer?"alwaysNewer":""].join(",");return await this.core.$$resolveConflictByDeletingRev(path2,loser.rev,subTitle)}const dmp=new import_diff_match_patch4.default,diff=dmp.diff_main(leftLeaf.data,rightLeaf.data);dmp.diff_cleanupSemantic(diff);this._log(`conflict(s) found:${path2}`);return{left:leftLeaf,right:rightLeaf,diff}}async $$resolveConflict(filename){return await serialized(`conflict-resolve:${filename}`,(async()=>{const conflictCheckResult=await this.checkConflictAndPerformAutoMerge(filename);if(conflictCheckResult!==MISSING_OR_ERROR&&conflictCheckResult!==NOT_CONFLICTED&&conflictCheckResult!==CANCELLED)if(conflictCheckResult!==AUTO_MERGED){if(this.settings.showMergeDialogOnlyOnActive){const af2=this.core.$$getActiveFilePath();if(af2&&af2!=filename){this._log(`[conflict] ${filename} is conflicted. Merging process has been postponed to the file have got opened.`,LOG_LEVEL_NOTICE);return}}this._log("[conflict] Manual merge required!");eventHub.emitEvent("conflict-cancelled",filename);await this.core.$anyResolveConflictByUI(filename,conflictCheckResult)}else{this.settings.syncAfterMerge&&!this.core.$$isSuspended()&&await this.core.$$replicateByEvent();this._log("[conflict] Automatically merged, but we have to check it again");await this.core.$$queueConflictCheck(filename)}else this._log(`[conflict] Not conflicted or cancelled: ${filename}`,LOG_LEVEL_VERBOSE)}))}async $anyResolveConflictByNewest(filename){const currentRev=await this.core.databaseFileAccess.fetchEntryMeta(filename,void 0,!0);if(0==currentRev){this._log(`Could not get current revision of ${filename}`);return Promise.resolve(!1)}const revs=await this.core.databaseFileAccess.getConflictedRevs(filename);if(0==revs.length)return Promise.resolve(!0);const mTimeAndRev=[[currentRev.mtime,currentRev._rev],...await Promise.all(revs.map((async rev3=>{const leaf=await this.core.databaseFileAccess.fetchEntryMeta(filename,rev3);return 0==leaf?[0,rev3]:[leaf.mtime,rev3]})))].sort(((a2,b3)=>{const diff=b3[0]-a2[0];return 0==diff?a2[1].localeCompare(b3[1],"en",{numeric:!0}):diff}));this._log(`Resolving conflict by newest: ${filename} (Newest: ${new Date(mTimeAndRev[0][0]).toLocaleString()}) (${mTimeAndRev.length} revisions exists)`);for(let i2=1;i2<mTimeAndRev.length;i2++){this._log(`conflict: Deleting the older revision ${mTimeAndRev[i2][1]} (${new Date(mTimeAndRev[i2][0]).toLocaleString()}) of ${filename}`);await this.core.$$resolveConflictByDeletingRev(filename,mTimeAndRev[i2][1],"NEWEST")}return!0}};ModuleInteractiveConflictResolver=class extends AbstractObsidianModule{$everyOnloadStart(){this.addCommand({id:"livesync-conflictcheck",name:"Pick a file to resolve conflict",callback:async()=>{await this.pickFileForResolve()}});this.addCommand({id:"livesync-all-conflictcheck",name:"Resolve all conflicted files",callback:async()=>{await this.allConflictCheck()}});return Promise.resolve(!0)}async $anyResolveConflictByUI(filename,conflictCheckResult){this._log("Merge:open conflict dialog",LOG_LEVEL_VERBOSE);const dialog=new ConflictResolveModal(this.app,filename,conflictCheckResult);dialog.open();const selected=await dialog.waitForResult();if(selected===CANCELLED){this._log(`Merge: Cancelled ${filename}`,LOG_LEVEL_INFO);return!1}const testDoc=await this.localDatabase.getDBEntry(filename,{conflicts:!0},!1,!0,!0);if(!1===testDoc){this._log(`Merge: Could not read ${filename} from the local database`,LOG_LEVEL_VERBOSE);return!1}if(!testDoc._conflicts){this._log(`Merge: Nothing to do ${filename}`,LOG_LEVEL_VERBOSE);return!1}const toDelete=selected;if(toDelete===LEAVE_TO_SUBSEQUENT){const p4=conflictCheckResult.diff.map((e3=>e3[1])).join(""),delRev=testDoc._conflicts[0];if(!await this.core.databaseFileAccess.storeContent(filename,p4)){this._log(`Concatenated content cannot be stored:${filename}`,LOG_LEVEL_NOTICE);return!1}if(await this.core.$$resolveConflictByDeletingRev(filename,delRev,"UI Concatenated")==MISSING_OR_ERROR){this._log(`Concatenated saved, but cannot delete conflicted revisions: ${filename}, (${displayRev(delRev)})`,LOG_LEVEL_NOTICE);return!1}}else{if("string"!=typeof toDelete){this._log(`Merge: Something went wrong: ${filename}, (${toDelete})`,LOG_LEVEL_NOTICE);return!1}if(await this.core.$$resolveConflictByDeletingRev(filename,toDelete,"UI Selected")==MISSING_OR_ERROR){this._log(`Merge: Something went wrong: ${filename}, (${toDelete})`,LOG_LEVEL_NOTICE);return!1}}this.settings.syncAfterMerge&&!this.core.$$isSuspended()&&await this.core.$$replicateByEvent();await this.core.$$queueConflictCheck(filename);return!1}async allConflictCheck(){for(;await this.pickFileForResolve(););}async pickFileForResolve(){const notes=[];for await(const doc of this.localDatabase.findAllDocs({conflicts:!0}))"_conflicts"in doc&¬es.push({id:doc._id,path:getPath2(doc),dispPath:getPathWithoutPrefix2(doc),mtime:doc.mtime});notes.sort(((a2,b3)=>b3.mtime-a2.mtime));const notesList=notes.map((e3=>e3.dispPath));if(0==notesList.length){this._log("There are no conflicted documents",LOG_LEVEL_NOTICE);return!1}const target=await this.core.confirm.askSelectString("File to resolve conflict",notesList);if(target){const targetItem=notes.find((e3=>e3.dispPath==target));await this.core.$$queueConflictCheck(targetItem.path);await this.core.$$waitForAllConflictProcessed();return!0}return!1}async $allScanStat(){const notes=[];this._log("Checking conflicted files",LOG_LEVEL_VERBOSE);for await(const doc of this.localDatabase.findAllDocs({conflicts:!0}))"_conflicts"in doc&¬es.push({path:getPath2(doc),mtime:doc.mtime});if(notes.length>0){this.core.confirm.askInPopup("conflicting-detected-on-safety",'Some files have been left conflicted! Press {HERE} to resolve them, or you can do it later by "Pick a file to resolve conflict',(anchor=>{anchor.text="HERE";anchor.addEventListener("click",(()=>{fireAndForget((()=>this.allConflictCheck()))}))}));this._log('Some files have been left conflicted! Please resolve them by "Pick a file to resolve conflict". The list is written in the log.',LOG_LEVEL_VERBOSE);for(const note of notes)this._log(`Conflicted: ${note.path}`)}else this._log("There are no conflicting files",LOG_LEVEL_VERBOSE);return!0}};ModuleObsidianSettings=class extends AbstractObsidianModule{constructor(){super(...arguments);this.usedPassphrase=""}getPassphrase(settings){const methods={"":()=>Promise.resolve("*"),LOCALSTORAGE:()=>{var _a7;return Promise.resolve(null!=(_a7=localStorage.getItem("ls-setting-passphrase"))&&_a7)},ASK_AT_LAUNCH:()=>this.core.confirm.askString("Passphrase","passphrase","")},method=settings.configPassphraseStore;return(method in methods?methods[method]:methods[""])()}$$saveDeviceAndVaultName(){const lsKey="obsidian-live-sync-vaultanddevicename-"+this.core.$$getVaultName();localStorage.setItem(lsKey,this.core.$$getDeviceAndVaultName()||"")}$$clearUsedPassphrase(){this.usedPassphrase=""}async decryptConfigurationItem(encrypted,passphrase){const dec=await async function tryDecrypt(encryptedResult,passphrase,autoCalculateIterations){if(!passphrase)return!1;try{return await decrypt(encryptedResult,passphrase,autoCalculateIterations)}catch(ex){return!1}}(encrypted,passphrase+"rHGMPtr6oWw7VSa3W3wpa8fT8U",!1);if(dec){this.usedPassphrase=passphrase;return dec}return!1}async encryptConfigurationItem(src,settings){if(""!=this.usedPassphrase)return await encrypt(src,this.usedPassphrase+"rHGMPtr6oWw7VSa3W3wpa8fT8U",!1);const passphrase=await this.getPassphrase(settings);if(!1===passphrase){this._log("Failed to obtain passphrase when saving data.json! Please verify the configuration.",128);return""}const dec=await encrypt(src,passphrase+"rHGMPtr6oWw7VSa3W3wpa8fT8U",!1);if(dec){this.usedPassphrase=passphrase;return dec}return""}get appId(){return`${"appId"in this.app?this.app.appId:""}`}async $$saveSettingData(){this.core.$$saveDeviceAndVaultName();const settings={...this.settings};settings.deviceAndVaultName="";if(""!=this.usedPassphrase||await this.getPassphrase(settings)){if(""!=settings.couchDB_PASSWORD||""!=settings.couchDB_URI||""!=settings.couchDB_USER||settings.couchDB_DBNAME){const connectionSetting={couchDB_DBNAME:settings.couchDB_DBNAME,couchDB_PASSWORD:settings.couchDB_PASSWORD,couchDB_URI:settings.couchDB_URI,couchDB_USER:settings.couchDB_USER,accessKey:settings.accessKey,bucket:settings.bucket,endpoint:settings.endpoint,region:settings.region,secretKey:settings.secretKey,useCustomRequestHandler:settings.useCustomRequestHandler};settings.encryptedCouchDBConnection=await this.encryptConfigurationItem(JSON.stringify(connectionSetting),settings);settings.couchDB_PASSWORD="";settings.couchDB_DBNAME="";settings.couchDB_URI="";settings.couchDB_USER="";settings.accessKey="";settings.bucket="";settings.region="";settings.secretKey="";settings.endpoint=""}if(settings.encrypt&&""!=settings.passphrase){settings.encryptedPassphrase=await this.encryptConfigurationItem(settings.passphrase,settings);settings.passphrase=""}}else this._log("Failed to retrieve passphrase. data.json contains unencrypted items!",LOG_LEVEL_NOTICE);await this.core.saveData(settings);eventHub.emitEvent("setting-saved",settings)}tryDecodeJson(encoded){try{return!!encoded&&JSON.parse(encoded)}catch(e3){return!1}}async $$loadSettings(){const settings=Object.assign({},DEFAULT_SETTINGS,await this.core.loadData());if(void 0===settings.isConfigured)if(JSON.stringify(settings)!==JSON.stringify(DEFAULT_SETTINGS))settings.isConfigured=!0;else{settings.additionalSuffixOfDatabaseName=this.appId;settings.isConfigured=!1}const passphrase=await this.getPassphrase(settings);if(!1===passphrase)this._log("No passphrase found for data.json! Verify configuration before syncing.",128);else{if(settings.encryptedCouchDBConnection){const keys3=["couchDB_URI","couchDB_USER","couchDB_PASSWORD","couchDB_DBNAME","accessKey","bucket","endpoint","region","secretKey"],decrypted=this.tryDecodeJson(await this.decryptConfigurationItem(settings.encryptedCouchDBConnection,passphrase));if(decrypted)for(const key2 of keys3)key2 in decrypted&&(settings[key2]=decrypted[key2]);else{this._log("Failed to decrypt passphrase from data.json! Ensure configuration is correct before syncing with remote.",128);for(const key2 of keys3)settings[key2]=""}}if(settings.encrypt&&settings.encryptedPassphrase){const encrypted=settings.encryptedPassphrase,decrypted=await this.decryptConfigurationItem(encrypted,passphrase);if(decrypted)settings.passphrase=decrypted;else{this._log("Failed to decrypt passphrase from data.json! Ensure configuration is correct before syncing with remote.",128);settings.passphrase=""}}}this.settings=settings;setLang(this.settings.displayLanguage);"workingEncrypt"in this.settings&&delete this.settings.workingEncrypt;"workingPassphrase"in this.settings&&delete this.settings.workingPassphrase;this.settings.disableRequestURI=!0;this.settings.gcDelay=0;this.settings.useHistory=!0;const lsKey="obsidian-live-sync-vaultanddevicename-"+this.core.$$getVaultName();if(""!=this.settings.deviceAndVaultName&&!localStorage.getItem(lsKey)){this.core.$$setDeviceAndVaultName(this.settings.deviceAndVaultName);this.$$saveDeviceAndVaultName();this.settings.deviceAndVaultName=""}if(isCloudantURI(this.settings.couchDB_URI)&&0!=this.settings.customChunkSize){this._log("Configuration issues detected and automatically resolved. However, unsynchronized data may exist. Consider rebuilding if necessary.",LOG_LEVEL_NOTICE);this.settings.customChunkSize=0}this.core.$$setDeviceAndVaultName(localStorage.getItem(lsKey)||"");if(""==this.core.$$getDeviceAndVaultName()&&this.settings.usePluginSync){this._log("Device name missing. Disabling plug-in sync.",LOG_LEVEL_NOTICE);this.settings.usePluginSync=!1}eventHub.emitEvent("reload-setting-tab")}};ModuleRedFlag=class extends AbstractModule{constructor(){super(...arguments);this.isRedFlagRaised=async()=>await this.isFlagFileExist(FLAGMD_REDFLAG);this.isRedFlag2Raised=async()=>await this.isFlagFileExist(FLAGMD_REDFLAG2)||await this.isFlagFileExist(FLAGMD_REDFLAG2_HR);this.isRedFlag3Raised=async()=>await this.isFlagFileExist(FLAGMD_REDFLAG3)||await this.isFlagFileExist(FLAGMD_REDFLAG3_HR)}async isFlagFileExist(path2){return!!await this.core.storageAccess.isExists(normalizePath(path2))}async deleteFlagFile(path2){try{await this.core.storageAccess.isExists(normalizePath(path2))&&await this.core.storageAccess.delete(path2,!0)}catch(ex){this._log(`Could not delete ${path2}`);this._log(ex,LOG_LEVEL_VERBOSE)}}async deleteRedFlag2(){await this.deleteFlagFile(FLAGMD_REDFLAG2);await this.deleteFlagFile(FLAGMD_REDFLAG2_HR)}async deleteRedFlag3(){await this.deleteFlagFile(FLAGMD_REDFLAG3);await this.deleteFlagFile(FLAGMD_REDFLAG3_HR)}async $everyOnLayoutReady(){try{const isRedFlagRaised=await this.isRedFlagRaised(),isRedFlag2Raised=await this.isRedFlag2Raised(),isRedFlag3Raised=await this.isRedFlag3Raised();if(isRedFlagRaised||isRedFlag2Raised||isRedFlag3Raised){if(isRedFlag2Raised&&"yes"!==await this.core.confirm.askYesNoDialog("Rebuild everything has been scheduled! Are you sure to rebuild everything?",{defaultOption:"Yes",timeout:0})){await this.deleteRedFlag2();await this.core.$$performRestart();return!1}if(isRedFlag3Raised&&"yes"!==await this.core.confirm.askYesNoDialog("Fetch again has been scheduled! Are you sure?",{defaultOption:"Yes",timeout:0})){await this.deleteRedFlag3();await this.core.$$performRestart();return!1}this.settings.batchSave=!1;await this.core.$allSuspendAllSync();await this.core.$allSuspendExtraSync();this.settings.suspendFileWatching=!0;await this.saveSettings();if(isRedFlag2Raised){this._log(`${FLAGMD_REDFLAG2} or ${FLAGMD_REDFLAG2_HR} has been detected! Self-hosted LiveSync suspends all sync and rebuild everything.`,LOG_LEVEL_NOTICE);await this.core.rebuilder.$rebuildEverything();await this.deleteRedFlag2();if("yes"==await this.core.confirm.askYesNoDialog("Do you want to resume file and database processing, and restart obsidian now?",{defaultOption:"Yes",timeout:15})){this.settings.suspendFileWatching=!1;await this.saveSettings();this.core.$$performRestart();return!1}}else if(isRedFlag3Raised){this._log(`${FLAGMD_REDFLAG3} or ${FLAGMD_REDFLAG3_HR} has been detected! Self-hosted LiveSync will discard the local database and fetch everything from the remote once again.`,LOG_LEVEL_NOTICE);const makeLocalChunkBeforeSync="yes"==await this.core.confirm.askYesNoDialog("Do you want to create local chunks before fetching? \n> [!MORE]-\n> If creating local chunks before fetching, only the difference between the local and remote will be fetched.\n\n",{defaultOption:"Yes",title:"Trick to transfer efficiently"});await this.core.rebuilder.$fetchLocal(makeLocalChunkBeforeSync);await this.deleteRedFlag3();if(this.settings.suspendFileWatching){if("yes"==await this.core.confirm.askYesNoDialog("Do you want to resume file and database processing, and restart obsidian now?",{defaultOption:"Yes",timeout:15})){this.settings.suspendFileWatching=!1;await this.saveSettings();this.core.$$performRestart();return!1}}else this._log("Your content of files will be synchronised gradually. Please wait for the completion.",LOG_LEVEL_NOTICE)}else{this.settings.writeLogToTheFile=!0;const warningMessage="The red flag is raised! The whole initialize steps are skipped, and any file changes are not captured.";this._log(warningMessage,LOG_LEVEL_NOTICE)}}}catch(ex){this._log("Something went wrong on FlagFile Handling",LOG_LEVEL_NOTICE);this._log(ex,LOG_LEVEL_VERBOSE)}return!0}};ModuleObsidianMenu=class extends AbstractObsidianModule{$everyOnloadStart(){(0,import_obsidian.addIcon)("replicate",'<g transform="matrix(1.15 0 0 1.15 -8.31 -9.52)" fill="currentColor" fill-rule="evenodd">\n <path d="m85 22.2c-0.799-4.74-4.99-8.37-9.88-8.37-0.499 0-1.1 0.101-1.6 0.101-2.4-3.03-6.09-4.94-10.3-4.94-6.09 0-11.2 4.14-12.8 9.79-5.59 1.11-9.78 6.05-9.78 12 0 6.76 5.39 12.2 12 12.2h29.9c5.79 0 10.1-4.74 10.1-10.6 0-4.84-3.29-8.88-7.68-10.2zm-2.99 14.7h-29.5c-2.3-0.202-4.29-1.51-5.29-3.53-0.899-2.12-0.699-4.54 0.698-6.46 1.2-1.61 2.99-2.52 4.89-2.52 0.299 0 0.698 0 0.998 0.101l1.8 0.303v-2.02c0-3.63 2.4-6.76 5.89-7.57 0.599-0.101 1.2-0.202 1.8-0.202 2.89 0 5.49 1.62 6.79 4.24l0.598 1.21 1.3-0.504c0.599-0.202 1.3-0.303 2-0.303 1.3 0 2.5 0.404 3.59 1.11 1.6 1.21 2.6 3.13 2.6 5.15v1.61h2c2.6 0 4.69 2.12 4.69 4.74-0.099 2.52-2.2 4.64-4.79 4.64z"/>\n <path d="m53.2 49.2h-41.6c-1.8 0-3.2 1.4-3.2 3.2v28.6c0 1.8 1.4 3.2 3.2 3.2h15.8v4h-7v6h24v-6h-7v-4h15.8c1.8 0 3.2-1.4 3.2-3.2v-28.6c0-1.8-1.4-3.2-3.2-3.2zm-2.8 29h-36v-23h36z"/>\n <path d="m73 49.2c1.02 1.29 1.53 2.97 1.53 4.56 0 2.97-1.74 5.65-4.39 7.04v-4.06l-7.46 7.33 7.46 7.14v-4.06c7.66-1.98 12.2-9.61 10-17-0.102-0.297-0.205-0.595-0.307-0.892z"/>\n <path d="m24.1 43c-0.817-0.991-1.53-2.97-1.53-4.56 0-2.97 1.74-5.65 4.39-7.04v4.06l7.46-7.33-7.46-7.14v4.06c-7.66 1.98-12.2 9.61-10 17 0.102 0.297 0.205 0.595 0.307 0.892z"/>\n </g>');this.addRibbonIcon("replicate",$msg("moduleObsidianMenu.replicate"),(async()=>{await this.core.$$replicate(!0)})).addClass("livesync-ribbon-replicate");this.addCommand({id:"livesync-replicate",name:"Replicate now",callback:async()=>{await this.core.$$replicate()}});this.addCommand({id:"livesync-dump",name:"Dump information of this doc ",callback:()=>{const file=this.core.$$getActiveFilePath();file&&fireAndForget((()=>this.localDatabase.getDBEntry(file,{},!0,!1)))}});this.addCommand({id:"livesync-checkdoc-conflicted",name:"Resolve if conflicted.",editorCallback:(editor,view)=>{const file=view.file;file&&this.core.$$queueConflictCheckIfOpen(file.path)}});this.addCommand({id:"livesync-toggle",name:"Toggle LiveSync",callback:async()=>{if(this.settings.liveSync){this.settings.liveSync=!1;this._log("LiveSync Disabled.",LOG_LEVEL_NOTICE)}else{this.settings.liveSync=!0;this._log("LiveSync Enabled.",LOG_LEVEL_NOTICE)}await this.core.$$realizeSettingSyncMode();await this.core.$$saveSettingData()}});this.addCommand({id:"livesync-suspendall",name:"Toggle All Sync.",callback:async()=>{if(this.core.$$isSuspended()){this.core.$$setSuspended(!1);this._log("Self-hosted LiveSync resumed",LOG_LEVEL_NOTICE)}else{this.core.$$setSuspended(!0);this._log("Self-hosted LiveSync suspended",LOG_LEVEL_NOTICE)}await this.core.$$realizeSettingSyncMode();await this.core.$$saveSettingData()}});this.addCommand({id:"livesync-scan-files",name:"Scan storage and database again",callback:async()=>{await this.core.$$performFullScan(!0)}});this.addCommand({id:"livesync-runbatch",name:"Run pended batch processes",callback:async()=>{await this.core.$everyCommitPendingFileEvent()}});this.addCommand({id:"livesync-abortsync",name:"Abort synchronization immediately",callback:()=>{this.core.replicator.terminateSync()}});return Promise.resolve(!0)}$everyOnload(){this.app.workspace.onLayoutReady(this.core.$$onLiveSyncReady.bind(this.core));return Promise.resolve(!0)}async $$showView(viewType){const leaves=this.app.workspace.getLeavesOfType(viewType);0==leaves.length?await this.app.workspace.getLeaf(!0).setViewState({type:viewType,active:!0}):await leaves[0].setViewState({type:viewType,active:!0});leaves.length>0&&await this.app.workspace.revealLeaf(leaves[0])}};ModuleSetupObsidian=class extends AbstractObsidianModule{$everyOnload(){this.registerObsidianProtocolHandler("setuplivesync",(async conf=>await this.setupWizard(conf.settings)));this.addCommand({id:"livesync-copysetupuri",name:"Copy settings as a new setup URI",callback:()=>fireAndForget(this.command_copySetupURI())});this.addCommand({id:"livesync-copysetupuri-short",name:"Copy settings as a new setup URI (With customization sync)",callback:()=>fireAndForget(this.command_copySetupURIWithSync())});this.addCommand({id:"livesync-copysetupurifull",name:"Copy settings as a new setup URI (Full)",callback:()=>fireAndForget(this.command_copySetupURIFull())});this.addCommand({id:"livesync-opensetupuri",name:"Use the copied setup URI (Formerly Open setup URI)",callback:()=>fireAndForget(this.command_openSetupURI())});eventHub.onEvent("request-open-setup-uri",(()=>fireAndForget((()=>this.command_openSetupURI()))));eventHub.onEvent("request-copy-setup-uri",(()=>fireAndForget((()=>this.command_copySetupURI()))));return Promise.resolve(!0)}async command_copySetupURI(stripExtra=!0){const encryptingPassphrase=await this.core.confirm.askString("Encrypt your settings","The passphrase to encrypt the setup URI","",!0);if(!1===encryptingPassphrase)return;const setting={...this.settings,configPassphraseStore:"",encryptedCouchDBConnection:"",encryptedPassphrase:""};stripExtra&&delete setting.pluginSyncExtendedSetting;const keys3=Object.keys(setting);for(const k2 of keys3)JSON.stringify(k2 in setting?setting[k2]:"")==JSON.stringify(k2 in DEFAULT_SETTINGS?DEFAULT_SETTINGS[k2]:"*")&&delete setting[k2];const encryptedSetting=encodeURIComponent(await encrypt(JSON.stringify(setting),encryptingPassphrase,!1)),uri=`${configURIBase}${encryptedSetting}`;await navigator.clipboard.writeText(uri);this._log("Setup URI copied to clipboard",LOG_LEVEL_NOTICE)}async command_copySetupURIFull(){const encryptingPassphrase=await this.core.confirm.askString("Encrypt your settings","The passphrase to encrypt the setup URI","",!0);if(!1===encryptingPassphrase)return;const setting={...this.settings,configPassphraseStore:"",encryptedCouchDBConnection:"",encryptedPassphrase:""},encryptedSetting=encodeURIComponent(await encrypt(JSON.stringify(setting),encryptingPassphrase,!1)),uri=`${configURIBase}${encryptedSetting}`;await navigator.clipboard.writeText(uri);this._log("Setup URI copied to clipboard",LOG_LEVEL_NOTICE)}async command_copySetupURIWithSync(){await this.command_copySetupURI(!1)}async command_openSetupURI(){const setupURI=await this.core.confirm.askString("Easy setup","Set up URI",`${configURIBase}aaaaa`);if(!1===setupURI)return;if(!setupURI.startsWith(`${configURIBase}`)){this._log("Set up URI looks wrong.",LOG_LEVEL_NOTICE);return}const config=decodeURIComponent(setupURI.substring(34));console.dir(config);await this.setupWizard(config)}async setupWizard(confString){try{const oldConf=JSON.parse(JSON.stringify(this.settings)),encryptingPassphrase=await this.core.confirm.askString("Passphrase","The passphrase to decrypt your setup URI","",!0);if(!1===encryptingPassphrase)return;const newConf=await JSON.parse(await decrypt(confString,encryptingPassphrase,!1));if(newConf){if("yes"==await this.core.confirm.askYesNoDialog("Importing Configuration from the Setup-URI. Are you sure to proceed?",{})){const newSettingW=Object.assign({},DEFAULT_SETTINGS,newConf);this.core.replicator.closeReplication();this.settings.suspendFileWatching=!0;console.dir(newSettingW);newSettingW.configPassphraseStore="";newSettingW.encryptedPassphrase="";newSettingW.encryptedCouchDBConnection="";newSettingW.additionalSuffixOfDatabaseName=`${"appId"in this.app?this.app.appId:""}`;const setupJustImport="Don't sync anything, just apply the settings.",setupAsNew="This is a new client - sync everything from the remote server.",setupAsMerge="This is an existing client - merge existing files with the server.",setupAgain="Initialise new server data - ideal for new or broken servers.",setupManually="Continue and configure manually.";newSettingW.syncInternalFiles=!1;newSettingW.usePluginSync=!1;newSettingW.isConfigured=!0;newSettingW.useIndexedDBAdapter||(newSettingW.useIndexedDBAdapter=!0);const setupType=await this.core.confirm.askSelectStringDialogue("How would you like to set it up?",[setupAsNew,setupAgain,setupAsMerge,setupJustImport,setupManually],{defaultAction:setupAsNew});if(setupType==setupJustImport){this.core.settings=newSettingW;this.core.$$clearUsedPassphrase();await this.core.saveSettings()}else if(setupType==setupAsNew){this.core.settings=newSettingW;this.core.$$clearUsedPassphrase();await this.core.rebuilder.$fetchLocal()}else if(setupType==setupAsMerge){this.core.settings=newSettingW;this.core.$$clearUsedPassphrase();await this.core.rebuilder.$fetchLocal(!0)}else if(setupType==setupAgain){const confirm="This operation will rebuild all databases with files on this device. Any files on the remote database not synced here will be lost.";if(await this.core.confirm.askSelectStringDialogue("Are you sure you want to do this?",["Cancel",confirm],{defaultAction:"Cancel"})!=confirm)return;this.core.settings=newSettingW;this.core.$$clearUsedPassphrase();await this.core.rebuilder.$rebuildEverything()}else if(setupType==setupManually){const keepLocalDB=await this.core.confirm.askYesNoDialog("Keep local DB?",{defaultOption:"No"}),keepRemoteDB=await this.core.confirm.askYesNoDialog("Keep remote DB?",{defaultOption:"No"});if("yes"==keepLocalDB&&"yes"==keepRemoteDB){this.core.settings=newSettingW;this.core.$$clearUsedPassphrase();await this.core.$allSuspendAllSync();await this.core.$allSuspendExtraSync();await this.core.saveSettings();if("yes"==await this.core.confirm.askYesNoDialog("Unlock and replicate?",{defaultOption:"Yes"})){await this.core.$$replicate(!0);await this.core.$$markRemoteUnlocked()}this._log("Configuration loaded.",LOG_LEVEL_NOTICE);return}if("no"==keepLocalDB&&"no"==keepRemoteDB&&"yes"!=await this.core.confirm.askYesNoDialog("Drop everything?",{defaultOption:"No"})){this._log("Cancelled",LOG_LEVEL_NOTICE);this.core.settings=oldConf;return}let initDB;this.core.settings=newSettingW;this.core.$$clearUsedPassphrase();await this.core.saveSettings();if("no"==keepLocalDB){await this.core.$$resetLocalDatabase();await this.core.localDatabase.initializeDatabase();"yes"==await this.core.confirm.askYesNoDialog("Rebuild the database?",{defaultOption:"Yes"})?initDB=this.core.$$initializeDatabase(!0):await this.core.$$markRemoteResolved()}if("no"==keepRemoteDB){await this.core.$$tryResetRemoteDatabase();await this.core.$$markRemoteLocked()}if(("no"==keepLocalDB||"no"==keepRemoteDB)&&"yes"==await this.core.confirm.askYesNoDialog("Replicate once?",{defaultOption:"Yes"})){null!=initDB&&await initDB;await this.core.$$replicate(!0)}}}this._log("Configuration loaded.",LOG_LEVEL_NOTICE)}else this._log("Cancelled.",LOG_LEVEL_NOTICE)}catch(ex){this._log("Couldn't parse or decrypt configuration uri.",LOG_LEVEL_NOTICE);this._log(ex,LOG_LEVEL_VERBOSE)}}};ModuleDatabaseFileAccess=class extends AbstractModule{$everyOnload(){this.core.databaseFileAccess=this;return Promise.resolve(!0)}async $everyModuleTest(){if(!this.settings.enableDebugTools)return Promise.resolve(!0);const testString="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam nec purus nec nunc",conflicts=await this.getConflictedRevs("autoTest.md");for(const rev3 of conflicts)await this.delete("autoTest.md",rev3);await this.delete("autoTest.md");await this._test("storeContent",(async()=>await this.storeContent("autoTest.md",testString)));await this.localDatabase.hashCaches.clear();await this._test("readContent",(async()=>{const content=await this.fetch("autoTest.md");return content?content.deleted?"File is deleted":await content.body.text()==testString||`Content is not same ${await content.body.text()}`:"File not found"}));await this._test("delete",(async()=>await this.delete("autoTest.md")));await this._test("read deleted content",(async()=>{const content=await this.fetch("autoTest.md");return!content||!!content.deleted||`Still exist !:${await content.body.text()},${JSON.stringify(content,void 0,2)}`}));await delay(100);return this.testDone()}async checkIsTargetFile(file){const path2=getStoragePathFromUXFileInfo(file);if(!await this.core.$$isTargetFile(path2)){this._log("File is not target",LOG_LEVEL_VERBOSE);return!1}if(shouldBeIgnored(path2)){this._log("File should be ignored",LOG_LEVEL_VERBOSE);return!1}return!0}async delete(file,rev3){if(!await this.checkIsTargetFile(file))return!0;const fullPath=getDatabasePathFromUXFileInfo(file);try{this._log(`deleteDB By path:${fullPath}`);return await this.deleteFromDBbyPath(fullPath,rev3)}catch(ex){this._log(`Failed to delete ${fullPath}`);this._log(ex,LOG_LEVEL_VERBOSE);return!1}}async createChunks(file,force=!1,skipCheck){return await this._store(file,force,skipCheck,!0)}async store(file,force=!1,skipCheck){return await this._store(file,force,skipCheck,!1)}async storeContent(path2,content){const blob=createTextBlob(content),bytes=(await blob.arrayBuffer()).byteLength,isInternal=!!path2.startsWith(".")||void 0,dummyUXFileInfo={name:path2.split("/").pop(),path:path2,stat:{size:bytes,ctime:Date.now(),mtime:Date.now(),type:"file"},body:blob,isInternal};return await this._store(dummyUXFileInfo,!0,!1,!1)}async _store(file,force=!1,skipCheck,onlyChunks){if(!skipCheck&&!await this.checkIsTargetFile(file))return!0;if(!file){this._log("File seems bad",LOG_LEVEL_VERBOSE);return!1}const possiblyLarge=!isPlainText(file.name),content=file.body,datatype=determineTypeFromBlob(content),idPrefix=file.isInternal?ICHeader:"",fullPath=getStoragePathFromUXFileInfo(file),fullPathOnDB=getDatabasePathFromUXFileInfo(file);possiblyLarge&&this._log(`Processing: ${fullPath}`,LOG_LEVEL_VERBOSE);if(file.isInternal)if(file.deleted)file.stat={size:0,ctime:Date.now(),mtime:Date.now(),type:"file"};else if(null==file.stat){const stat=await this.core.storageAccess.statHidden(file.path);if(!stat){this._log(`Internal file not found: ${fullPath}`,LOG_LEVEL_VERBOSE);return!1}file.stat=stat}const d4={_id:idPrefix+await this.core.$$path2id(fullPath),path:fullPathOnDB,data:content,ctime:file.stat.ctime,mtime:file.stat.mtime,size:file.stat.size,children:[],datatype,type:datatype,eden:{}},msg=`STORAGE -> DB (${datatype}) `;if(await serialized("file-"+fullPath,(async()=>{if(force){this._log(msg+"Force writing "+fullPath,LOG_LEVEL_VERBOSE);return!1}try{const old=await this.localDatabase.getDBEntry(d4.path,void 0,!1,!0,!1);if(!1!==old){const oldData={data:old.data,deleted:old._deleted||old.deleted},newData={data:d4.data,deleted:d4._deleted||d4.deleted};if(oldData.deleted!=newData.deleted)return!1;if(!await isDocContentSame(old.data,newData.data))return!1;this._log(msg+"Skipped (not changed) "+fullPath+(d4._deleted||d4.deleted?" (deleted)":""),LOG_LEVEL_VERBOSE);markChangesAreSame(old,d4.mtime,old.mtime);return!0}}catch(ex){this._log(msg+"Error, Could not check the diff for the old one."+(force?"force writing.":"")+fullPath+(d4._deleted||d4.deleted?" (deleted)":""),LOG_LEVEL_VERBOSE);this._log(ex,LOG_LEVEL_VERBOSE);return!force}return!1}))){this._log(msg+" Skip "+fullPath,LOG_LEVEL_VERBOSE);return!0}const ret=await this.localDatabase.putDBEntry(d4,onlyChunks);if(!1!==ret){this._log(msg+fullPath);eventHub.emitEvent("file-saved")}return 0!=ret}async getConflictedRevs(file){if(!await this.checkIsTargetFile(file))return[];const filename=getDatabasePathFromUXFileInfo(file),doc=await this.localDatabase.getDBEntryMeta(filename,{conflicts:!0},!0);return!1===doc?[]:doc._conflicts||[]}async fetch(file,rev3,waitForReady,skipCheck=!1){if(skipCheck&&!await this.checkIsTargetFile(file))return!1;const entry=await this.fetchEntry(file,rev3,waitForReady,!0);if(!1===entry)return!1;const data=createBlob(readContent(entry)),path2=stripAllPrefixes(entry.path),fileInfo={name:path2.split("/").pop(),path:path2,stat:{size:entry.size,ctime:entry.ctime,mtime:entry.mtime,type:"file"},body:data,deleted:entry.deleted||entry._deleted};isInternalMetadata(entry.path)&&(fileInfo.isInternal=!0);return fileInfo}async fetchEntryMeta(file,rev3,skipCheck=!1){const dbFileName=getDatabasePathFromUXFileInfo(file);if(skipCheck&&!await this.checkIsTargetFile(file))return!1;const doc=await this.localDatabase.getDBEntryMeta(dbFileName,rev3?{rev:rev3}:void 0,!0);return!1!==doc&&doc}async fetchEntryFromMeta(meta,waitForReady=!0,skipCheck=!1){if(skipCheck&&!await this.checkIsTargetFile(meta.path))return!1;const doc=await this.localDatabase.getDBEntryFromMeta(meta,void 0,!1,waitForReady,!0);return!1!==doc&&doc}async fetchEntry(file,rev3,waitForReady=!0,skipCheck=!1){if(skipCheck&&!await this.checkIsTargetFile(file))return!1;const entry=await this.fetchEntryMeta(file,rev3,!0);return!1!==entry&&await this.fetchEntryFromMeta(entry,waitForReady,!0)}async deleteFromDBbyPath(fullPath,rev3){if(!await this.checkIsTargetFile(fullPath)){this._log(`storeFromStorage: File is not target: ${fullPath}`);return!0}const opt=rev3?{rev:rev3}:void 0,ret=await this.localDatabase.deleteDBEntry(fullPath,opt);eventHub.emitEvent("file-saved");return ret}};ModuleFileHandler=class extends AbstractModule{get db(){return this.core.databaseFileAccess}get storage(){return this.core.storageAccess}$everyOnloadStart(){this.core.fileHandler=this;return Promise.resolve(!0)}async readFileFromStub(file){if("body"in file&&file.body)return file;const readFile=await this.storage.readStubContent(file);if(!readFile)throw new Error(`File ${file.path} is not exist on the storage`);return readFile}async storeFileToDB(info3,force=!1,onlyChunks=!1){const file="string"==typeof info3?this.storage.getFileStub(info3):info3;if(null==file){this._log(`File ${info3} is not exist on the storage`,LOG_LEVEL_VERBOSE);return!1}if(file.isInternal){this._log(`Internal file ${file.path} is not allowed to be processed on processFileEvent`,LOG_LEVEL_VERBOSE);return!1}const entry=await this.db.fetchEntry(file,void 0,!0,!0);if(!entry||entry.deleted||entry._deleted){const readFile=await this.readFileFromStub(file);return onlyChunks?await this.db.createChunks(readFile,!1,!0):await this.db.store(readFile)}let shouldApplied=!1;if(force||onlyChunks){const readFile=await this.readFileFromStub(file);return onlyChunks?await this.db.createChunks(readFile,!0,!0):await this.db.store(readFile,!0,!0)}{compareFileFreshness(file,entry)!==EVEN&&(shouldApplied=!0);let readFile;if(!shouldApplied){readFile=await this.readFileFromStub(file);await isDocContentSame(getDocDataAsArray(entry.data),readFile.body)?markChangesAreSame(file,file.stat.mtime,entry.mtime):shouldApplied=!0}if(!shouldApplied){this._log(`File ${file.path} is not changed`,LOG_LEVEL_VERBOSE);return!0}readFile||(readFile=await this.readFileFromStub(file));return onlyChunks?await this.db.createChunks(readFile,!1,!0):await this.db.store(readFile,!1,!0)}}async deleteFileFromDB(info3){const file="string"==typeof info3?this.storage.getFileStub(info3):info3;if(null==file){this._log(`File ${info3} is not exist on the storage`,LOG_LEVEL_VERBOSE);return!1}if(file.isInternal){this._log(`Internal file ${file.path} is not allowed to be processed on processFileEvent`,LOG_LEVEL_VERBOSE);return!1}const entry=await this.db.fetchEntry(file,void 0,!0,!0);if(!entry||entry.deleted||entry._deleted){this._log(`File ${file.path} is not exist or already deleted on the database`,LOG_LEVEL_VERBOSE);return!1}return(await this.db.getConflictedRevs(file)).length>0?await this.db.delete(file,entry._rev):await this.db.delete(file)}async deleteRevisionFromDB(info3,rev3){return await this.db.delete(info3,rev3)}async resolveConflictedByDeletingRevision(info3,rev3){const path2=getStoragePathFromUXFileInfo(info3);if(!await this.deleteRevisionFromDB(info3,rev3)){this._log(`Failed to delete the conflicted revision ${rev3} of ${path2}`,LOG_LEVEL_VERBOSE);return!1}if(!await this.dbToStorageWithSpecificRev(info3,rev3,!0)){this._log(`Failed to apply the resolved revision ${rev3} of ${path2} to the storage`,LOG_LEVEL_VERBOSE);return!1}}async dbToStorageWithSpecificRev(info3,rev3,force){const file="string"==typeof info3?this.storage.getFileStub(info3):info3;if(null==file){this._log(`File ${info3} is not exist on the storage`,LOG_LEVEL_VERBOSE);return!1}const docEntry=await this.db.fetchEntryMeta(file,rev3,!0);if(!docEntry){this._log(`File ${file.path} is not exist on the database`,LOG_LEVEL_VERBOSE);return!1}return await this.dbToStorage(docEntry,file,force)}async dbToStorage(entryInfo,info3,force){const mode=null==("string"==typeof info3?this.storage.getFileStub(info3):info3)?"create":"modify",pathFromEntryInfo="string"==typeof entryInfo?entryInfo:getPath2(entryInfo),docEntry=await this.db.fetchEntryMeta(pathFromEntryInfo,void 0,!0);if(!docEntry){this._log(`File ${pathFromEntryInfo} is not exist on the database`,LOG_LEVEL_VERBOSE);return!1}const path2=getPath2(docEntry);if((await this.db.getConflictedRevs(path2)).length>0&&!this.settings.writeDocumentsIfConflicted){await this.core.$$queueConflictCheckIfOpen(path2);return!0}const existDoc=this.storage.getStub(path2);if(existDoc&&existDoc.isFolder){this._log(`Folder ${path2} is already exist on the storage as a folder`,LOG_LEVEL_VERBOSE);return!0}const existOnDB=!(docEntry._deleted||docEntry.deleted),existOnStorage=null!=existDoc;if(!existOnDB&&!existOnStorage){this._log(`File ${path2} seems to be deleted, but already not on storage`,LOG_LEVEL_VERBOSE);return!0}if(!existOnDB&&existOnStorage){await this.storage.deleteVaultItem(path2);return!0}const docRead=await this.db.fetchEntryFromMeta(docEntry);if(!docRead){this._log(`File ${path2} is not exist on the database`,LOG_LEVEL_VERBOSE);return!1}const docData=readContent(docRead);if(existOnStorage&&!force){let shouldApplied=!1;compareFileFreshness(existDoc,docEntry)!==EVEN&&(shouldApplied=!0);if(!shouldApplied){const readFile=await this.readFileFromStub(existDoc);if(await isDocContentSame(docData,readFile.body)){shouldApplied=!1;markChangesAreSame(docRead,docRead.mtime,existDoc.stat.mtime)}else shouldApplied=!0}if(!shouldApplied){this._log(`File ${docRead.path} is not changed`,LOG_LEVEL_VERBOSE);return!0}}else this._log(`File ${docRead.path} ${existOnStorage?"(new) ":""} ${force?" (forced)":""}`,LOG_LEVEL_VERBOSE);await this.storage.ensureDir(path2);const ret=await this.storage.writeFileAuto(path2,docData,{ctime:docRead.ctime,mtime:docRead.mtime});await this.storage.touched(path2);this.storage.triggerFileEvent(mode,path2);return ret}async $anyHandlerProcessesFileEvent(item){const eventItem=item.args,type=item.type,path2=eventItem.file.path;if(!await this.core.$$isTargetFile(path2)){this._log(`File ${path2} is not the target file`,LOG_LEVEL_VERBOSE);return!1}if(shouldBeIgnored(path2)){this._log(`File ${path2} should be ignored`,LOG_LEVEL_VERBOSE);return!1}const lockKey=`processFileEvent-${path2}`;return await serialized(lockKey,(async()=>{switch(type){case"CREATE":case"CHANGED":return await this.storeFileToDB(item.args.file);case"DELETE":return await this.deleteFileFromDB(item.args.file);case"INTERNAL":return!1;default:this._log(`Unsupported event type: ${type}`,LOG_LEVEL_VERBOSE);return!1}}))}async $anyProcessReplicatedDoc(entry){return await serialized(entry.path,(async()=>{var _a7,_b3;if(!await this.core.$$isTargetFile(entry.path)){this._log(`File ${entry.path} is not the target file`,LOG_LEVEL_VERBOSE);return!1}if(shouldBeIgnored(entry.path)){this._log(`File ${entry.path} should be ignored`,LOG_LEVEL_VERBOSE);return!1}const path2=getPath2(entry),targetFile=this.storage.getStub(getPathWithoutPrefix2(entry));if(targetFile&&targetFile.isFolder){this._log(`${getPath2(entry)} is already exist as the folder`);return!0}{this._log(`Processing ${path2} (${entry._id.substring(0,8)}: ${null==(_a7=entry._rev)?void 0:_a7.substring(0,5)}) :Started...`,LOG_LEVEL_VERBOSE);eventHub.emitEvent("conflict-cancelled",path2);const ret=await this.dbToStorage(entry,targetFile);this._log(`Processing ${path2} (${entry._id.substring(0,8)} :${null==(_b3=entry._rev)?void 0:_b3.substring(0,5)}) : Done`);return ret}}))}async createAllChunks(showingNotice){this._log("Collecting local files on the storage",LOG_LEVEL_VERBOSE);const semaphore=Semaphore(10);let processed=0;const filesStorageSrc=this.storage.getFiles(),incProcessed=()=>{processed++;processed%25==0&&this._log(`Creating missing chunks: ${processed} of ${total} files`,showingNotice?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"chunkCreation")},total=filesStorageSrc.length,procAllChunks=filesStorageSrc.map((async file=>{if(!await this.core.$$isTargetFile(file)){incProcessed();return!0}if(shouldBeIgnored(file.path)){incProcessed();return!0}const release=await semaphore.acquire();incProcessed();try{await this.storeFileToDB(file,!1,!0)}catch(ex){this._log(ex,LOG_LEVEL_VERBOSE)}finally{release()}}));await Promise.all(procAllChunks);this._log(`Creating chunks Done: ${processed} of ${total} files`,showingNotice?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"chunkCreation")}};new(PouchError=class extends Error{constructor(status,error,reason){super();this.status=status;this.name=error;this.message=reason;this.error=!0}toString(){return JSON.stringify({status:this.status,name:this.name,message:this.message,reason:this.reason})}})(401,"unauthorized","Name or password is incorrect.");MISSING_BULK_DOCS=new PouchError(400,"bad_request","Missing JSON list of 'docs'");MISSING_DOC=new PouchError(404,"not_found","missing");REV_CONFLICT=new PouchError(409,"conflict","Document update conflict");INVALID_ID=new PouchError(400,"bad_request","_id field must contain a string");MISSING_ID=new PouchError(412,"missing_id","_id is required for puts");RESERVED_ID=new PouchError(400,"bad_request","Only reserved document ids may start with underscore.");new PouchError(412,"precondition_failed","Database not open");UNKNOWN_ERROR=new PouchError(500,"unknown_error","Database encountered an unknown error");BAD_ARG=new PouchError(500,"badarg","Some query argument is invalid");new PouchError(400,"invalid_request","Request was invalid");QUERY_PARSE_ERROR=new PouchError(400,"query_parse_error","Some query parameter is invalid");DOC_VALIDATION=new PouchError(500,"doc_validation","Bad special document member");BAD_REQUEST=new PouchError(400,"bad_request","Something wrong with the request");NOT_AN_OBJECT=new PouchError(400,"bad_request","Document must be a JSON object");new PouchError(404,"not_found","Database not found");IDB_ERROR=new PouchError(500,"indexed_db_went_bad","unknown");new PouchError(500,"web_sql_went_bad","unknown");new PouchError(500,"levelDB_went_went_bad","unknown");new PouchError(403,"forbidden","Forbidden by design doc validate_doc_update function");INVALID_REV=new PouchError(400,"bad_request","Invalid rev format");new PouchError(412,"file_exists","The database could not be created, the file already exists.");MISSING_STUB=new PouchError(412,"missing_stub","A pre-existing attachment stub wasn't found");new PouchError(413,"invalid_url","Provided URL is invalid");rnds82=new Uint8Array(16);regex_default2=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;validate_default2=function validate3(uuid2){return"string"==typeof uuid2&®ex_default2.test(uuid2)};byteToHex2=[];for(i2=0;i2<256;++i2)byteToHex2.push((i2+256).toString(16).substr(1));stringify_default2=function stringify2(arr){var offset=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,uuid2=(byteToHex2[arr[offset+0]]+byteToHex2[arr[offset+1]]+byteToHex2[arr[offset+2]]+byteToHex2[arr[offset+3]]+"-"+byteToHex2[arr[offset+4]]+byteToHex2[arr[offset+5]]+"-"+byteToHex2[arr[offset+6]]+byteToHex2[arr[offset+7]]+"-"+byteToHex2[arr[offset+8]]+byteToHex2[arr[offset+9]]+"-"+byteToHex2[arr[offset+10]]+byteToHex2[arr[offset+11]]+byteToHex2[arr[offset+12]]+byteToHex2[arr[offset+13]]+byteToHex2[arr[offset+14]]+byteToHex2[arr[offset+15]]).toLowerCase();if(!validate_default2(uuid2))throw TypeError("Stringified UUID is invalid");return uuid2};v4_default2=function v42(options,buf,offset){var rnds,i2;(rnds=(options=options||{}).random||(options.rng||rng2)())[6]=15&rnds[6]|64;rnds[8]=63&rnds[8]|128;if(buf){offset=offset||0;for(i2=0;i2<16;++i2)buf[offset+i2]=rnds[i2];return buf}return stringify_default2(rnds)};thisAtob=function(str){return atob(str)};thisBtoa=function(str){return btoa(str)};import_spark_md5=__toESM(require_spark_md5());self.setImmediate||self.setTimeout;import_events21=__toESM(require_events());funcToString=Function.prototype.toString;objectCtorString=funcToString.call(Object);MAX_NUM_CONCURRENT_REQUESTS=6;try{localStorage.setItem("_pouch_check_localstorage",1);hasLocal=!!localStorage.getItem("_pouch_check_localstorage")}catch(e3){hasLocal=!1}nextTick2="function"==typeof queueMicrotask?queueMicrotask:function nextTick3(fn){Promise.resolve().then(fn)};Changes=class extends import_events21.default{constructor(){super();this._listeners={};hasLocalStorage()&&addEventListener("storage",(e3=>{this.emit(e3.key)}))}addListener(dbName,id,db,opts){function eventFunction(){if(self3._listeners[id])if(inprogress)inprogress="waiting";else{inprogress=!0;var changesOpts=pick(opts,["style","include_docs","attachments","conflicts","filter","doc_ids","view","since","query_params","binary","return_docs"]);db.changes(changesOpts).on("change",(function(c3){if(c3.seq>opts.since&&!opts.cancelled){opts.since=c3.seq;opts.onChange(c3)}})).on("complete",(function(){"waiting"===inprogress&&nextTick2(eventFunction);inprogress=!1})).on("error",(function onError(){inprogress=!1}))}}var inprogress,self3;if(!this._listeners[id]){inprogress=!1;self3=this;this._listeners[id]=eventFunction;this.on(dbName,eventFunction)}}removeListener(dbName,id){if(id in this._listeners){super.removeListener(dbName,this._listeners[id]);delete this._listeners[id]}}notifyLocalWindows(dbName){hasLocalStorage()&&(localStorage[dbName]="a"===localStorage[dbName]?"b":"a")}notify(dbName){this.emit(dbName);this.notifyLocalWindows(dbName)}};(function f2(){}).name;keys2=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];qName="queryKey";qParser=/(?:^|&)([^&=]*)=?([^&]*)/g;parser=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;uuid=v4_default2;f3=fetch;h2=Headers;MIN_MAGNITUDE=-324;MAGNITUDE_DIGITS=3;SEP="";combinationFields=["$or","$nor","$not"];matchers={$elemMatch:function(doc,userValue,parsedField,docFieldValue){return!!Array.isArray(docFieldValue)&&0!==docFieldValue.length&&("object"==typeof docFieldValue[0]&&null!==docFieldValue[0]?docFieldValue.some((function(val2){return rowFilter(val2,userValue,Object.keys(userValue))})):docFieldValue.some((function(val2){return matchSelector(userValue,doc,parsedField,val2)})))},$allMatch:function(doc,userValue,parsedField,docFieldValue){return!!Array.isArray(docFieldValue)&&0!==docFieldValue.length&&("object"==typeof docFieldValue[0]&&null!==docFieldValue[0]?docFieldValue.every((function(val2){return rowFilter(val2,userValue,Object.keys(userValue))})):docFieldValue.every((function(val2){return matchSelector(userValue,doc,parsedField,val2)})))},$eq:function(doc,userValue,parsedField,docFieldValue){return fieldIsNotUndefined(docFieldValue)&&0===collate(docFieldValue,userValue)},$gte:function(doc,userValue,parsedField,docFieldValue){return fieldIsNotUndefined(docFieldValue)&&collate(docFieldValue,userValue)>=0},$gt:function(doc,userValue,parsedField,docFieldValue){return fieldIsNotUndefined(docFieldValue)&&collate(docFieldValue,userValue)>0},$lte:function(doc,userValue,parsedField,docFieldValue){return fieldIsNotUndefined(docFieldValue)&&collate(docFieldValue,userValue)<=0},$lt:function(doc,userValue,parsedField,docFieldValue){return fieldIsNotUndefined(docFieldValue)&&collate(docFieldValue,userValue)<0},$exists:function(doc,userValue,parsedField,docFieldValue){return userValue?fieldIsNotUndefined(docFieldValue):!fieldIsNotUndefined(docFieldValue)},$mod:function(doc,userValue,parsedField,docFieldValue){return fieldExists(docFieldValue)&&function modField(docFieldValue,userValue){return"number"==typeof docFieldValue&&parseInt(docFieldValue,10)===docFieldValue&&docFieldValue%userValue[0]===userValue[1]}(docFieldValue,userValue)},$ne:function(doc,userValue,parsedField,docFieldValue){return userValue.every((function(neValue){return 0!==collate(docFieldValue,neValue)}))},$in:function(doc,userValue,parsedField,docFieldValue){return fieldExists(docFieldValue)&&arrayContainsValue(docFieldValue,userValue)},$nin:function(doc,userValue,parsedField,docFieldValue){return fieldExists(docFieldValue)&&!arrayContainsValue(docFieldValue,userValue)},$size:function(doc,userValue,parsedField,docFieldValue){return fieldExists(docFieldValue)&&Array.isArray(docFieldValue)&&function arraySize(docFieldValue,userValue){return docFieldValue.length===userValue}(docFieldValue,userValue)},$all:function(doc,userValue,parsedField,docFieldValue){return Array.isArray(docFieldValue)&&function arrayContainsAllValues(docFieldValue,userValue){return userValue.every((function(val2){return docFieldValue.some((function(docFieldValueItem){return 0===collate(val2,docFieldValueItem)}))}))}(docFieldValue,userValue)},$regex:function(doc,userValue,parsedField,docFieldValue){return fieldExists(docFieldValue)&&"string"==typeof docFieldValue&&userValue.every((function(regexValue){return function regexMatch(docFieldValue,userValue){return new RegExp(userValue).test(docFieldValue)}(docFieldValue,regexValue)}))},$type:function(doc,userValue,parsedField,docFieldValue){return function typeMatch(docFieldValue,userValue){switch(userValue){case"null":return null===docFieldValue;case"boolean":return"boolean"==typeof docFieldValue;case"number":return"number"==typeof docFieldValue;case"string":return"string"==typeof docFieldValue;case"array":return docFieldValue instanceof Array;case"object":return"[object Object]"==={}.toString.call(docFieldValue)}}(docFieldValue,userValue)}};index_browser_es_default=function applyChangesFilterPlugin(PouchDB2){PouchDB2._changesFilterPlugin={validate:validate4,normalize,shouldFilter,filter:filter2}};import_events22=__toESM(require_events());Changes2=class extends import_events22.default{constructor(db,opts,callback){var complete,promise;super();this.db=db;opts=opts?clone2(opts):{};complete=opts.complete=once2(((err2,resp)=>{err2?function listenerCount(ee,type){return"listenerCount"in ee?ee.listenerCount(type):import_events21.default.listenerCount(ee,type)}(this,"error")>0&&this.emit("error",err2):this.emit("complete",resp);this.removeAllListeners();db.removeListener("destroyed",onDestroy2)}));if(callback){this.on("complete",(function(resp){callback(null,resp)}));this.on("error",callback)}const onDestroy2=()=>{this.cancel()};db.once("destroyed",onDestroy2);opts.onChange=(change,pending2,lastSeq)=>{this.isCancelled||function tryCatchInChangeListener(self3,change,pending2,lastSeq){try{self3.emit("change",change,pending2,lastSeq)}catch(e3){guardedConsole("error",'Error in .on("change", function):',e3)}}(this,change,pending2,lastSeq)};promise=new Promise((function(fulfill,reject){opts.complete=function(err2,res2){err2?reject(err2):fulfill(res2)}}));this.once("cancel",(function(){db.removeListener("destroyed",onDestroy2);opts.complete(null,{status:"cancelled"})}));this.then=promise.then.bind(promise);this.catch=promise.catch.bind(promise);this.then((function(result){complete(null,result)}),complete);db.taskqueue.isReady?this.validateChanges(opts):db.taskqueue.addTask((failed2=>{failed2?opts.complete(failed2):this.isCancelled?this.emit("cancel"):this.validateChanges(opts)}))}cancel(){this.isCancelled=!0;this.db.taskqueue.isReady&&this.emit("cancel")}validateChanges(opts){var callback=opts.complete;PouchDB._changesFilterPlugin?PouchDB._changesFilterPlugin.validate(opts,(err2=>{if(err2)return callback(err2);this.doChanges(opts)})):this.doChanges(opts)}doChanges(opts){var newPromise,callback=opts.complete;"live"in(opts=clone2(opts))&&!("continuous"in opts)&&(opts.continuous=opts.live);opts.processChange=processChange;"latest"===opts.since&&(opts.since="now");opts.since||(opts.since=0);if("now"!==opts.since){if(PouchDB._changesFilterPlugin){PouchDB._changesFilterPlugin.normalize(opts);if(PouchDB._changesFilterPlugin.shouldFilter(this,opts))return PouchDB._changesFilterPlugin.filter(this,opts)}else["doc_ids","filter","selector","view"].forEach((function(key2){key2 in opts&&guardedConsole("warn",'The "'+key2+'" option was passed in to changes/replicate, but pouchdb-changes-filter plugin is not installed, so it was ignored. Please install the plugin to enable filtering.')}));"descending"in opts||(opts.descending=!1);opts.limit=0===opts.limit?1:opts.limit;opts.complete=callback;if((newPromise=this.db._changes(opts))&&"function"==typeof newPromise.cancel){const cancel2=this.cancel;this.cancel=(...args)=>{newPromise.cancel();cancel2.apply(this,args)}}}else this.db.info().then((info3=>{if(this.isCancelled)callback(null,{status:"cancelled"});else{opts.since=info3.update_seq;this.doChanges(opts)}}),callback)}};validRevRegex=/^\d+-[^-]*$/;AbstractPouchDB=class extends import_events22.default{_setup(){this.post=adapterFun("post",(function(doc,opts,callback){if("function"==typeof opts){callback=opts;opts={}}if(isNotSingleDoc(doc))return callback(createError(NOT_AN_OBJECT));this.bulkDocs({docs:[doc]},opts,yankError(callback,doc._id))})).bind(this);this.put=adapterFun("put",(function(doc,opts,cb2){if("function"==typeof opts){cb2=opts;opts={}}if(isNotSingleDoc(doc))return cb2(createError(NOT_AN_OBJECT));invalidIdError(doc._id);if("_rev"in doc&&!isValidRev(doc._rev))return cb2(createError(INVALID_REV));if(isLocalId(doc._id)&&"function"==typeof this._putLocal)return doc._deleted?this._removeLocal(doc,cb2):this._putLocal(doc,cb2);const putDoc=next2=>{"function"==typeof this._put&&!1!==opts.new_edits?this._put(doc,opts,next2):this.bulkDocs({docs:[doc]},opts,yankError(next2,doc._id))};if(opts.force&&doc._rev){(function transformForceOptionToNewEditsOption(){var parts=doc._rev.split("-"),oldRevId=parts[1],newRevNum=parseInt(parts[0],10)+1,newRevId=rev2();doc._revisions={start:newRevNum,ids:[newRevId,oldRevId]};doc._rev=newRevNum+"-"+newRevId;opts.new_edits=!1})();putDoc((function(err2){var result=err2?null:{ok:!0,id:doc._id,rev:doc._rev};cb2(err2,result)}))}else putDoc(cb2)})).bind(this);this.putAttachment=adapterFun("putAttachment",(function(docId,attachmentId,rev$$1,blob,type){function createAttachment(doc){var prevrevpos="_rev"in doc?parseInt(doc._rev,10):0;doc._attachments=doc._attachments||{};doc._attachments[attachmentId]={content_type:type,data:blob,revpos:++prevrevpos};return api.put(doc)}var api=this;if("function"==typeof type){type=blob;blob=rev$$1;rev$$1=null}if(void 0===type){type=blob;blob=rev$$1;rev$$1=null}type||guardedConsole("warn","Attachment",attachmentId,"on document",docId,"is missing content_type");return api.get(docId).then((function(doc){if(doc._rev!==rev$$1)throw createError(REV_CONFLICT);return createAttachment(doc)}),(function(err2){if(err2.reason===MISSING_DOC.message)return createAttachment({_id:docId});throw err2}))})).bind(this);this.removeAttachment=adapterFun("removeAttachment",(function(docId,attachmentId,rev$$1,callback){this.get(docId,((err2,obj)=>{if(err2)callback(err2);else if(obj._rev===rev$$1){if(!obj._attachments)return callback();delete obj._attachments[attachmentId];0===Object.keys(obj._attachments).length&&delete obj._attachments;this.put(obj,callback)}else callback(createError(REV_CONFLICT))}))})).bind(this);this.remove=adapterFun("remove",(function(docOrId,optsOrRev,opts,callback){var doc,newDoc;if("string"==typeof optsOrRev){doc={_id:docOrId,_rev:optsOrRev};if("function"==typeof opts){callback=opts;opts={}}}else{doc=docOrId;if("function"==typeof optsOrRev){callback=optsOrRev;opts={}}else{callback=opts;opts=optsOrRev}}(opts=opts||{}).was_delete=!0;(newDoc={_id:doc._id,_rev:doc._rev||opts.rev})._deleted=!0;if(isLocalId(newDoc._id)&&"function"==typeof this._removeLocal)return this._removeLocal(doc,callback);this.bulkDocs({docs:[newDoc]},opts,yankError(callback,newDoc._id))})).bind(this);this.revsDiff=adapterFun("revsDiff",(function(req,opts,callback){function addToMissing(id,revId){missing.has(id)||missing.set(id,{missing:[]});missing.get(id).missing.push(revId)}var ids,count,missing;if("function"==typeof opts){callback=opts;opts={}}if(!(ids=Object.keys(req)).length)return callback(null,{});count=0;missing=new Map;ids.forEach((function(id){this._getRevisionTree(id,(function(err2,rev_tree){if(err2&&404===err2.status&&"missing"===err2.message)missing.set(id,{missing:req[id]});else{if(err2)return callback(err2);(function processDoc(id,rev_tree){var missingForId=req[id].slice(0);traverseRevTree(rev_tree,(function(isLeaf,pos,revHash,ctx,opts2){var rev$$1=pos+"-"+revHash,idx2=missingForId.indexOf(rev$$1);if(-1!==idx2){missingForId.splice(idx2,1);"available"!==opts2.status&&addToMissing(id,rev$$1)}}));missingForId.forEach((function(rev$$1){addToMissing(id,rev$$1)}))})(id,rev_tree)}if(++count===ids.length){var missingObj={};missing.forEach((function(value,key2){missingObj[key2]=value}));return callback(null,missingObj)}}))}),this)})).bind(this);this.bulkGet=adapterFun("bulkGet",(function(opts,callback){bulkGet(this,opts,callback)})).bind(this);this.compactDocument=adapterFun("compactDocument",(function(docId,maxHeight,callback){this._getRevisionTree(docId,((err2,revTree)=>{var height,candidates,revs;if(err2)return callback(err2);height=function computeHeight(revs){var height={},edges=[];traverseRevTree(revs,(function(isLeaf,pos,id,prnt){var rev$$1=pos+"-"+id;isLeaf&&(height[rev$$1]=0);void 0!==prnt&&edges.push({from:prnt,to:rev$$1});return rev$$1}));edges.reverse();edges.forEach((function(edge){void 0===height[edge.from]?height[edge.from]=1+height[edge.to]:height[edge.from]=Math.min(height[edge.from],1+height[edge.to])}));return height}(revTree);candidates=[];revs=[];Object.keys(height).forEach((function(rev$$1){height[rev$$1]>maxHeight&&candidates.push(rev$$1)}));traverseRevTree(revTree,(function(isLeaf,pos,revHash,ctx,opts){var rev$$1=pos+"-"+revHash;"available"===opts.status&&-1!==candidates.indexOf(rev$$1)&&revs.push(rev$$1)}));this._doCompaction(docId,revs,callback)}))})).bind(this);this.compact=adapterFun("compact",(function(opts,callback){if("function"==typeof opts){callback=opts;opts={}}opts=opts||{};this._compactionQueue=this._compactionQueue||[];this._compactionQueue.push({opts,callback});1===this._compactionQueue.length&&doNextCompaction(this)})).bind(this);this.get=adapterFun("get",(function(id,opts,cb2){var leaves,i2;if("function"==typeof opts){cb2=opts;opts={}}opts=opts||{};if("string"!=typeof id)return cb2(createError(INVALID_ID));if(isLocalId(id)&&"function"==typeof this._getLocal)return this._getLocal(id,cb2);leaves=[];const finishOpenRevs=()=>{var result=[],count=leaves.length;if(!count)return cb2(null,result);leaves.forEach((leaf=>{this.get(id,{rev:leaf,revs:opts.revs,latest:opts.latest,attachments:opts.attachments,binary:opts.binary},(function(err2,doc){var existing,i3,l3;if(err2)result.push({missing:leaf});else{for(i3=0,l3=result.length;i3<l3;i3++)if(result[i3].ok&&result[i3].ok._rev===doc._rev){existing=!0;break}existing||result.push({ok:doc})}--count||cb2(null,result)}))}))};if(!opts.open_revs)return this._get(id,opts,((err2,result)=>{var doc,metadata,ctx,conflicts,splittedRev,revNo,revHash,paths,path2,i3,currentPath,howMany,pos,attachments,count,key2;if(err2){err2.docId=id;return cb2(err2)}doc=result.doc;metadata=result.metadata;ctx=result.ctx;opts.conflicts&&(conflicts=collectConflicts(metadata)).length&&(doc._conflicts=conflicts);isDeleted(metadata,doc._rev)&&(doc._deleted=!0);if(opts.revs||opts.revs_info){splittedRev=doc._rev.split("-");revNo=parseInt(splittedRev[0],10);revHash=splittedRev[1];paths=rootToLeaf(metadata.rev_tree);path2=null;for(i3=0;i3<paths.length;i3++){const hashIndex=(currentPath=paths[i3]).ids.findIndex((x2=>x2.id===revHash));(hashIndex===revNo-1||!path2&&-1!==hashIndex)&&(path2=currentPath)}if(!path2){(err2=new Error("invalid rev tree")).docId=id;return cb2(err2)}const pathId=doc._rev.split("-")[1],indexOfRev=path2.ids.findIndex((x2=>x2.id===pathId))+1;howMany=path2.ids.length-indexOfRev;path2.ids.splice(indexOfRev,howMany);path2.ids.reverse();opts.revs&&(doc._revisions={start:path2.pos+path2.ids.length-1,ids:path2.ids.map((function(rev$$1){return rev$$1.id}))});if(opts.revs_info){pos=path2.pos+path2.ids.length;doc._revs_info=path2.ids.map((function(rev$$1){return{rev:--pos+"-"+rev$$1.id,status:rev$$1.opts.status}}))}}if(opts.attachments&&doc._attachments){attachments=doc._attachments;if(0===(count=Object.keys(attachments).length))return cb2(null,doc);Object.keys(attachments).forEach((key3=>{this._getAttachment(doc._id,key3,attachments[key3],{binary:opts.binary,metadata,ctx},(function(err3,data){var att=doc._attachments[key3];att.data=data;delete att.stub;delete att.length;--count||cb2(null,doc)}))}))}else{if(doc._attachments)for(key2 in doc._attachments)Object.prototype.hasOwnProperty.call(doc._attachments,key2)&&(doc._attachments[key2].stub=!0);cb2(null,doc)}}));if("all"===opts.open_revs)this._getRevisionTree(id,(function(err2,rev_tree){if(err2)return cb2(err2);leaves=collectLeaves(rev_tree).map((function(leaf){return leaf.rev}));finishOpenRevs()}));else{if(!Array.isArray(opts.open_revs))return cb2(createError(UNKNOWN_ERROR,"function_clause"));leaves=opts.open_revs;for(i2=0;i2<leaves.length;i2++)if(!isValidRev(leaves[i2]))return cb2(createError(INVALID_REV));finishOpenRevs()}})).bind(this);this.getAttachment=adapterFun("getAttachment",(function(docId,attachmentId,opts,callback){if(opts instanceof Function){callback=opts;opts={}}this._get(docId,opts,((err2,res2)=>{if(err2)return callback(err2);if(!res2.doc._attachments||!res2.doc._attachments[attachmentId])return callback(createError(MISSING_DOC));opts.ctx=res2.ctx;opts.binary=!0;opts.metadata=res2.metadata;this._getAttachment(docId,attachmentId,res2.doc._attachments[attachmentId],opts,callback)}))})).bind(this);this.allDocs=adapterFun("allDocs",(function(opts,callback){if("function"==typeof opts){callback=opts;opts={}}opts.skip=void 0!==opts.skip?opts.skip:0;opts.start_key&&(opts.startkey=opts.start_key);opts.end_key&&(opts.endkey=opts.end_key);if("keys"in opts){if(!Array.isArray(opts.keys))return callback(new TypeError("options.keys must be an array"));var incompatibleOpt=["startkey","endkey","key"].filter((function(incompatibleOpt2){return incompatibleOpt2 in opts}))[0];if(incompatibleOpt){callback(createError(QUERY_PARSE_ERROR,"Query parameter `"+incompatibleOpt+"` is not compatible with multi-get"));return}if(!isRemote(this)){(function allDocsKeysParse(opts){var keys3="limit"in opts?opts.keys.slice(opts.skip,opts.limit+opts.skip):opts.skip>0?opts.keys.slice(opts.skip):opts.keys;opts.keys=keys3;opts.skip=0;delete opts.limit;if(opts.descending){keys3.reverse();opts.descending=!1}})(opts);if(0===opts.keys.length)return this._allDocs({limit:0},callback)}}return this._allDocs(opts,callback)})).bind(this);this.close=adapterFun("close",(function(callback){this._closed=!0;this.emit("closed");return this._close(callback)})).bind(this);this.info=adapterFun("info",(function(callback){this._info(((err2,info3)=>{if(err2)return callback(err2);info3.db_name=info3.db_name||this.name;info3.auto_compaction=!(!this.auto_compaction||isRemote(this));info3.adapter=this.adapter;callback(null,info3)}))})).bind(this);this.id=adapterFun("id",(function(callback){return this._id(callback)})).bind(this);this.bulkDocs=adapterFun("bulkDocs",(function(req,opts,callback){var i2,attachmentError,adapter,ids;if("function"==typeof opts){callback=opts;opts={}}opts=opts||{};Array.isArray(req)&&(req={docs:req});if(!req||!req.docs||!Array.isArray(req.docs))return callback(createError(MISSING_BULK_DOCS));for(i2=0;i2<req.docs.length;++i2){const doc=req.docs[i2];if(isNotSingleDoc(doc))return callback(createError(NOT_AN_OBJECT));if("_rev"in doc&&!isValidRev(doc._rev))return callback(createError(INVALID_REV))}req.docs.forEach((function(doc){doc._attachments&&Object.keys(doc._attachments).forEach((function(name){attachmentError=attachmentError||function attachmentNameError(name){return"_"===name.charAt(0)&&name+" is not a valid attachment name, attachment names cannot start with '_'"}(name);doc._attachments[name].content_type||guardedConsole("warn","Attachment",name,"on document",doc._id,"is missing content_type")}))}));if(attachmentError)return callback(createError(BAD_REQUEST,attachmentError));"new_edits"in opts||(opts.new_edits=!("new_edits"in req)||req.new_edits);adapter=this;opts.new_edits||isRemote(adapter)||req.docs.sort(compareByIdThenRev);(function cleanDocs(docs){var i2,doc,atts,j2,att;for(i2=0;i2<docs.length;i2++)if((doc=docs[i2])._deleted)delete doc._attachments;else if(doc._attachments){atts=Object.keys(doc._attachments);for(j2=0;j2<atts.length;j2++){att=atts[j2];doc._attachments[att]=pick(doc._attachments[att],["data","digest","content_type","length","revpos","stub"])}}})(req.docs);ids=req.docs.map((function(doc){return doc._id}));this._bulkDocs(req,opts,(function(err2,res2){if(err2)return callback(err2);opts.new_edits||(res2=res2.filter((function(x2){return x2.error})));if(!isRemote(adapter))for(var i3=0,l2=res2.length;i3<l2;i3++)res2[i3].id=res2[i3].id||ids[i3];callback(null,res2)}))})).bind(this);this.registerDependentDatabase=adapterFun("registerDependentDatabase",(function(dependentDb,callback){var depDB,dbOptions=clone2(this.__opts);this.__opts.view_adapter&&(dbOptions.adapter=this.__opts.view_adapter);depDB=new this.constructor(dependentDb,dbOptions);upsert2(this,"_local/_pouch_dependentDbs",(function diffFun(doc){doc.dependentDbs=doc.dependentDbs||{};if(doc.dependentDbs[dependentDb])return!1;doc.dependentDbs[dependentDb]=!0;return doc})).then((function(){callback(null,{db:depDB})})).catch(callback)})).bind(this);this.destroy=adapterFun("destroy",(function(opts,callback){if("function"==typeof opts){callback=opts;opts={}}var usePrefix=!("use_prefix"in this)||this.use_prefix;const destroyDb=()=>{this._destroy(opts,((err2,resp)=>{if(err2)return callback(err2);this._destroyed=!0;this.emit("destroyed");callback(null,resp||{ok:!0})}))};if(isRemote(this))return destroyDb();this.get("_local/_pouch_dependentDbs",((err2,localDoc)=>{var dependentDbs,PouchDB2,deletedMap;if(err2)return 404!==err2.status?callback(err2):destroyDb();dependentDbs=localDoc.dependentDbs;PouchDB2=this.constructor;deletedMap=Object.keys(dependentDbs).map((name=>{var trueName=usePrefix?name.replace(new RegExp("^"+PouchDB2.prefix),""):name;return new PouchDB2(trueName,this.__opts).destroy()}));Promise.all(deletedMap).then(destroyDb,callback)}))})).bind(this)}_compact(opts,callback){var taskId,changesOpts={return_docs:!1,last_seq:opts.last_seq||0,since:opts.last_seq||0},promises=[],compactedDocs=0;const onChange=row=>{this.activeTasks.update(taskId,{completed_items:++compactedDocs});promises.push(this.compactDocument(row.id,0))},onError=err2=>{this.activeTasks.remove(taskId,err2);callback(err2)},onComplete=resp=>{var lastSeq=resp.last_seq;Promise.all(promises).then((()=>upsert2(this,"_local/compaction",(doc=>{if(!doc.last_seq||doc.last_seq<lastSeq){doc.last_seq=lastSeq;return doc}return!1})))).then((()=>{this.activeTasks.remove(taskId);callback(null,{ok:!0})})).catch(onError)};this.info().then((info3=>{taskId=this.activeTasks.add({name:"database_compaction",total_items:info3.update_seq-changesOpts.last_seq});this.changes(changesOpts).on("change",onChange).on("complete",onComplete).on("error",onError)}))}changes(opts,callback){if("function"==typeof opts){callback=opts;opts={}}(opts=opts||{}).return_docs="return_docs"in opts?opts.return_docs:!opts.live;return new Changes2(this,opts,callback)}type(){return"function"==typeof this._type?this._type():this.adapter}};AbstractPouchDB.prototype.purge=adapterFun("_purge",(function(docId,rev$$1,callback){if(void 0===this._purge)return callback(createError(UNKNOWN_ERROR,"Purge is not implemented in the "+this.adapter+" adapter."));var self3=this;self3._getRevisionTree(docId,((error,revs)=>{if(error)return callback(error);if(!revs)return callback(createError(MISSING_DOC));let path2;try{path2=findPathToLeaf(revs,rev$$1)}catch(error2){return callback(error2.message||error2)}self3._purge(docId,path2,((error2,result)=>{if(error2)return callback(error2);(function appendPurgeSeq(db,docId,rev$$1){return db.get("_local/purges").then((function(doc){const purgeSeq=doc.purgeSeq+1;doc.purges.push({docId,rev:rev$$1,purgeSeq});doc.purges.length>self.purged_infos_limit&&doc.purges.splice(0,doc.purges.length-self.purged_infos_limit);doc.purgeSeq=purgeSeq;return doc})).catch((function(err2){if(404!==err2.status)throw err2;return{_id:"_local/purges",purges:[{docId,rev:rev$$1,purgeSeq:0}],purgeSeq:0}})).then((function(doc){return db.put(doc)}))})(self3,docId,rev$$1).then((function(){return callback(null,result)}))}))}))}));TaskQueue=class{constructor(){this.isReady=!1;this.failed=!1;this.queue=[]}execute(){var fun;if(this.failed)for(;fun=this.queue.shift();)fun(this.failed);else for(;fun=this.queue.shift();)fun()}fail(err2){this.failed=err2;this.execute()}ready(db){this.isReady=!0;this.db=db;this.execute()}addTask(fun){this.queue.push(fun);this.failed&&this.execute()}};PouchInternal=class extends AbstractPouchDB{constructor(name,opts){super();this._setup(name,opts)}_setup(name,opts){var backend;super._setup();opts=opts||{};if(name&&"object"==typeof name){name=(opts=name).name;delete opts.name}void 0===opts.deterministic_revs&&(opts.deterministic_revs=!0);this.__opts=opts=clone2(opts);this.auto_compaction=opts.auto_compaction;this.purged_infos_limit=opts.purged_infos_limit||1e3;this.prefix=PouchDB.prefix;if("string"!=typeof name)throw new Error("Missing/invalid DB name");backend=function parseAdapter(name,opts){var adapters,preferredAdapters,prefix,adapterName,i2,adapter,match3=name.match(/([a-z-]*):\/\/(.*)/);if(match3)return{name:/https?/.test(match3[1])?match3[1]+"://"+match3[2]:match3[2],adapter:match3[1]};adapters=PouchDB.adapters;preferredAdapters=PouchDB.preferredAdapters;prefix=PouchDB.prefix;if(!(adapterName=opts.adapter))for(i2=0;i2<preferredAdapters.length&&"idb"===(adapterName=preferredAdapters[i2])&&"websql"in adapters&&hasLocalStorage()&&localStorage["_pouch__websqldb_"+prefix+name];++i2)guardedConsole("log",'PouchDB is downgrading "'+name+'" to WebSQL to avoid data loss, because it was already opened with WebSQL.');return{name:(adapter=adapters[adapterName])&&"use_prefix"in adapter&&!adapter.use_prefix?name:prefix+name,adapter:adapterName}}((opts.prefix||"")+name,opts);opts.name=backend.name;opts.adapter=opts.adapter||backend.adapter;this.name=name;this._adapter=opts.adapter;PouchDB.emit("debug",["adapter","Picked adapter: ",opts.adapter]);if(!PouchDB.adapters[opts.adapter]||!PouchDB.adapters[opts.adapter].valid())throw new Error("Invalid Adapter: "+opts.adapter);if(opts.view_adapter&&(!PouchDB.adapters[opts.view_adapter]||!PouchDB.adapters[opts.view_adapter].valid()))throw new Error("Invalid View Adapter: "+opts.view_adapter);this.taskqueue=new TaskQueue;this.adapter=opts.adapter;PouchDB.adapters[opts.adapter].call(this,opts,(err2=>{if(err2)return this.taskqueue.fail(err2);(function prepareForDestruction(self3){function onDestroyed(from_constructor){self3.removeListener("closed",onClosed);from_constructor||self3.constructor.emit("destroyed",self3.name)}function onClosed(){self3.removeListener("destroyed",onDestroyed);self3.constructor.emit("unref",self3)}self3.once("destroyed",onDestroyed);self3.once("closed",onClosed);self3.constructor.emit("ref",self3)})(this);this.emit("created",this);PouchDB.emit("created",this.name);this.taskqueue.ready(this)}))}};PouchDB=createClass(PouchInternal,(function(name,opts){PouchInternal.prototype._setup.call(this,name,opts)}));ActiveTasks=class{constructor(){this.tasks={}}list(){return Object.values(this.tasks)}add(task){const id=v4_default2();this.tasks[id]={id,name:task.name,total_items:task.total_items,created_at:(new Date).toJSON()};return id}get(id){return this.tasks[id]}remove(id,reason){delete this.tasks[id];return this.tasks}update(id,updatedTask){const task=this.tasks[id];if(void 0!==task){const mergedTask={id:task.id,name:task.name,created_at:task.created_at,total_items:updatedTask.total_items||task.total_items,completed_items:updatedTask.completed_items||task.completed_items,updated_at:(new Date).toJSON()};this.tasks[id]=mergedTask}return this.tasks}};PouchDB.adapters={};PouchDB.preferredAdapters=[];PouchDB.prefix="_pouch_";eventEmitter=new import_events22.default;(function setUpEventEmitter(Pouch){Object.keys(import_events22.default.prototype).forEach((function(key2){"function"==typeof import_events22.default.prototype[key2]&&(Pouch[key2]=eventEmitter[key2].bind(eventEmitter))}));var destructListeners=Pouch._destructionListeners=new Map;Pouch.on("ref",(function onConstructorRef(db){destructListeners.has(db.name)||destructListeners.set(db.name,[]);destructListeners.get(db.name).push(db)}));Pouch.on("unref",(function onConstructorUnref(db){var dbList,pos;if(destructListeners.has(db.name)&&!((pos=(dbList=destructListeners.get(db.name)).indexOf(db))<0)){dbList.splice(pos,1);dbList.length>1?destructListeners.set(db.name,dbList):destructListeners.delete(db.name)}}));Pouch.on("destroyed",(function onConstructorDestroyed(name){if(destructListeners.has(name)){var dbList=destructListeners.get(name);destructListeners.delete(name);dbList.forEach((function(db){db.emit("destroyed",!0)}))}}))})(PouchDB);PouchDB.adapter=function(id,obj,addToPreferredAdapters){if(obj.valid()){PouchDB.adapters[id]=obj;addToPreferredAdapters&&PouchDB.preferredAdapters.push(id)}};PouchDB.plugin=function(obj){if("function"==typeof obj)obj(PouchDB);else{if("object"!=typeof obj||0===Object.keys(obj).length)throw new Error('Invalid plugin: got "'+obj+'", expected an object or a function');Object.keys(obj).forEach((function(id){PouchDB.prototype[id]=obj[id]}))}this.__defaults&&(PouchDB.__defaults=Object.assign({},this.__defaults));return PouchDB};PouchDB.defaults=function(defaultOpts){let PouchWithDefaults=createClass(PouchDB,(function(name,opts){opts=opts||{};if(name&&"object"==typeof name){name=(opts=name).name;delete opts.name}opts=Object.assign({},PouchWithDefaults.__defaults,opts);PouchDB.call(this,name,opts)}));PouchWithDefaults.preferredAdapters=PouchDB.preferredAdapters.slice();Object.keys(PouchDB).forEach((function(key2){key2 in PouchWithDefaults||(PouchWithDefaults[key2]=PouchDB[key2])}));PouchWithDefaults.__defaults=Object.assign({},this.__defaults,defaultOpts);return PouchWithDefaults};PouchDB.fetch=function(url,opts){return f3(url,opts)};PouchDB.prototype.activeTasks=PouchDB.activeTasks=new ActiveTasks;PouchDB.plugin(index_browser_es_default);PouchDB.version="9.0.0";index_es_default=PouchDB;import_vuvuzela=__toESM(require_vuvuzela());import_spark_md52=__toESM(require_spark_md5());setImmediateShim2=self.setImmediate||self.setTimeout;MD5_CHUNK_SIZE2=32768;reservedWords=toObject(["_id","_rev","_access","_attachments","_deleted","_revisions","_revs_info","_conflicts","_deleted_conflicts","_local_seq","_rev_tree","_replication_id","_replication_state","_replication_state_time","_replication_state_reason","_replication_stats","_removed"]);dataWords=toObject(["_access","_attachments","_replication_id","_replication_state","_replication_state_time","_replication_state_reason","_replication_stats"]);ADAPTER_VERSION=5;DOC_STORE="document-store";BY_SEQ_STORE="by-sequence";ATTACH_STORE="attach-store";ATTACH_AND_SEQ_STORE="attach-seq-store";META_STORE="meta-store";LOCAL_STORE="local-store";DETECT_BLOB_SUPPORT_STORE="detect-blob-support";changesHandler$1=new Changes;running=!1;queue=[];cachedDBs=new Map;openReqList=new Map;IdbPouch.valid=function(){try{return"undefined"!=typeof indexedDB&&"undefined"!=typeof IDBKeyRange}catch(e3){return!1}};index_es_default2=function index2(PouchDB2){PouchDB2.adapter("idb",IdbPouch,!0)};import_spark_md53=__toESM(require_spark_md5());setImmediateShim3=self.setImmediate||self.setTimeout;MD5_CHUNK_SIZE3=32768;IDB_NULL=Number.MIN_SAFE_INTEGER;IDB_FALSE=Number.MIN_SAFE_INTEGER+1;IDB_TRUE=Number.MIN_SAFE_INTEGER+2;TEST_KEY_INVALID=/^[^a-zA-Z$]|[^a-zA-Z0-9$]+/;TEST_PATH_INVALID=/\\.|(^|\.)[^a-zA-Z$]|[^a-zA-Z0-9$.]+/;KEY_INVALID=new RegExp(TEST_KEY_INVALID.source,"g");PATH_INVALID=new RegExp(TEST_PATH_INVALID.source,"g");SLASH="\\".charCodeAt(0);IS_DOT=".".charCodeAt(0);DOC_STORE2="docs";META_LOCAL_STORE="meta";POUCHDB_IDB_VERSION=2;versionMultiplier=Math.pow(10,13);BINARY_ATTACHMENTS=!1;COUCH_COLLATE_LO=null;COUCH_COLLATE_HI="";IDB_COLLATE_LO=Number.NEGATIVE_INFINITY;IDB_COLLATE_HI=[[[[[[[[[[[[]]]]]]]]]]]];ADAPTER_NAME="indexeddb";idbChanges=new Changes;openDatabases={};IndexeddbPouch.valid=function(){return!0};index_es_default3=function index3(PouchDB2){PouchDB2.adapter(ADAPTER_NAME,IndexeddbPouch,!0)};CHANGES_BATCH_SIZE=25;MAX_SIMULTANEOUS_REVS=50;CHANGES_TIMEOUT_BUFFER=5e3;DEFAULT_HEARTBEAT=1e4;supportsBulkGetMap={};HttpPouch.valid=function(){return!0};index_es_default4=function index4(PouchDB2){PouchDB2.adapter("http",HttpPouch,!1);PouchDB2.adapter("https",HttpPouch,!1)};QueryParseError=class _QueryParseError extends Error{constructor(message){super();this.status=400;this.name="query_parse_error";this.message=message;this.error=!0;try{Error.captureStackTrace(this,_QueryParseError)}catch(e3){}}};NotFoundError=class _NotFoundError extends Error{constructor(message){super();this.status=404;this.name="not_found";this.message=message;this.error=!0;try{Error.captureStackTrace(this,_NotFoundError)}catch(e3){}}};BuiltInError=class _BuiltInError extends Error{constructor(message){super();this.status=500;this.name="invalid_value";this.message=message;this.error=!0;try{Error.captureStackTrace(this,_BuiltInError)}catch(e3){}}};import_spark_md54=__toESM(require_spark_md5());self.setImmediate||self.setTimeout;persistentQueues={};tempViewQueue=new(TaskQueue2=class{constructor(){this.promise=Promise.resolve()}add(promiseFactory){this.promise=this.promise.catch((()=>{})).then((()=>promiseFactory()));return this.promise}finish(){return this.promise}});index_es_default5=function createAbstractMapReduce(localDocName2,mapper3,reducer3,ddocValidator3){function tryMap(db,fun,doc){try{fun(doc)}catch(e3){emitError(db,e3,{fun,doc})}}function tryReduce(db,fun,keys3,values,rereduce){try{return{output:fun(keys3,values,rereduce)}}catch(e3){emitError(db,e3,{fun,keys:keys3,values,rereduce});return{error:e3}}}function sortByKeyThenValue(x2,y2){const keyCompare=collate(x2.key,y2.key);return 0!==keyCompare?keyCompare:collate(x2.value,y2.value)}function sliceResults(results,limit,skip2){skip2=skip2||0;return"number"==typeof limit?results.slice(skip2,limit+skip2):skip2>0?results.slice(skip2):results}function rowToDocId(row){const val2=row.value;return val2&&"object"==typeof val2&&val2._id||row.id}function postprocessAttachments(opts){return function(res2){opts.include_docs&&opts.attachments&&opts.binary&&function readAttachmentsAsBlobOrBuffer2(res2){for(const row of res2.rows){const atts=row.doc&&row.doc._attachments;if(atts)for(const filename of Object.keys(atts)){const att=atts[filename];atts[filename].data=b64ToBluffer(att.data,att.content_type)}}}(res2);return res2}}function addHttpParam(paramName,opts,params,asJson){let val2=opts[paramName];if(void 0!==val2){asJson&&(val2=encodeURIComponent(JSON.stringify(val2)));params.push(paramName+"="+val2)}}function coerceInteger(integerCandidate){if(void 0!==integerCandidate){const asNumber=Number(integerCandidate);return isNaN(asNumber)||asNumber!==parseInt(integerCandidate,10)?integerCandidate:asNumber}}function checkPositiveInteger(number){if(number){if("number"!=typeof number)return new QueryParseError(`Invalid value for integer: "${number}"`);if(number<0)return new QueryParseError(`Invalid value for positive integer: "${number}"`)}}function checkQueryParseError(options,fun){const startkeyName=options.descending?"endkey":"startkey",endkeyName=options.descending?"startkey":"endkey";if(void 0!==options[startkeyName]&&void 0!==options[endkeyName]&&collate(options[startkeyName],options[endkeyName])>0)throw new QueryParseError("No rows can match your key range, reverse your start_key and end_key or set {descending : true}");if(fun.reduce&&!1!==options.reduce){if(options.include_docs)throw new QueryParseError("{include_docs:true} is invalid for reduce");if(options.keys&&options.keys.length>1&&!options.group&&!options.group_level)throw new QueryParseError("Multi-key fetches for reduce views must use {group: true}")}for(const optionName of["group_level","limit","skip"]){const error=checkPositiveInteger(options[optionName]);if(error)throw error}}function defaultsTo(value){return function(reason){if(404===reason.status)return value;throw reason}}function getQueue(view){const viewName="string"==typeof view?view:view.name;let queue2=persistentQueues[viewName];queue2||(queue2=persistentQueues[viewName]=new TaskQueue2);return queue2}async function updateView(view,opts){return sequentialize(getQueue(view),(function(){return async function updateViewInQueue(view,opts){function createIndexableKeysToKeyValues(mapResults2){const indexableKeysToKeyValues=new Map;let lastKey;for(let i2=0,len=mapResults2.length;i2<len;i2++){const emittedKeyValue=mapResults2[i2],complexKey=[emittedKeyValue.key,emittedKeyValue.id];i2>0&&0===collate(emittedKeyValue.key,lastKey)&&complexKey.push(i2);indexableKeysToKeyValues.set(toIndexableString(complexKey),emittedKeyValue);lastKey=emittedKeyValue.key}return indexableKeysToKeyValues}let mapResults,doc,taskId;const mapFun=mapper3(view.mapFun,(function emit2(key2,value){const output={id:doc._id,key:normalizeKey(key2)};null!=value&&(output.value=normalizeKey(value));mapResults.push(output)}));let currentSeq=view.seq||0,indexed_docs=0;const progress={view:view.name,indexed_docs};view.sourceDB.emit("indexing",progress);const queue2=new TaskQueue2;try{await function createTask(){return view.sourceDB.info().then((function(info3){taskId=view.sourceDB.activeTasks.add({name:"view_indexing",total_items:info3.update_seq-currentSeq})}))}();await async function processNextBatch(){return function processBatch(response,purges){const results=response.results;if(!results.length&&!purges.length)return;for(const purge2 of purges)if(results.findIndex((function(change){return change.id===purge2.docId}))<0){const entry={_id:purge2.docId,doc:{_id:purge2.docId,_deleted:1},changes:[]};if(purge2.doc){entry.doc=purge2.doc;entry.changes.push({rev:purge2.doc._rev})}results.push(entry)}const docIdsToChangesAndEmits=function createDocIdsToChangesAndEmits(results){const docIdsToChangesAndEmits=new Map;for(const change of results){if("_"!==change.doc._id[0]){mapResults=[];doc=change.doc;doc._deleted||tryMap(view.sourceDB,mapFun,doc);mapResults.sort(sortByKeyThenValue);const indexableKeysToKeyValues=createIndexableKeysToKeyValues(mapResults);docIdsToChangesAndEmits.set(change.doc._id,[indexableKeysToKeyValues,change.changes])}currentSeq=change.seq}return docIdsToChangesAndEmits}(results);queue2.add(function processChange2(docIdsToChangesAndEmits,seq){return function(){return function saveKeyValues(view,docIdsToChangesAndEmits,seq){return view.db.get("_local/lastSeq").catch(defaultsTo({_id:"_local/lastSeq",seq:0})).then((function(lastSeqDoc){var docIds=mapToKeysArray(docIdsToChangesAndEmits);return Promise.all(docIds.map((function(docId){return async function getDocsToPersist(docId,view,docIdsToChangesAndEmits){const metaDocId="_local/doc_"+docId,defaultMetaDoc={_id:metaDocId,keys:[]},docData=docIdsToChangesAndEmits.get(docId),indexableKeysToKeyValues=docData[0],changes3=docData[1],metaDoc=await function getMetaDoc(){return function isGenOne(changes3){return 1===changes3.length&&/^1-/.test(changes3[0].rev)}(changes3)?Promise.resolve(defaultMetaDoc):view.db.get(metaDocId).catch(defaultsTo(defaultMetaDoc))}();return function processKeyValueDocs(metaDoc2,kvDocsRes){const kvDocs=[],oldKeys=new Set;for(const row of kvDocsRes.rows){const doc=row.doc;if(doc){kvDocs.push(doc);oldKeys.add(doc._id);doc._deleted=!indexableKeysToKeyValues.has(doc._id);if(!doc._deleted){const keyValue=indexableKeysToKeyValues.get(doc._id);"value"in keyValue&&(doc.value=keyValue.value)}}}const newKeys=mapToKeysArray(indexableKeysToKeyValues);for(const key2 of newKeys)if(!oldKeys.has(key2)){const kvDoc={_id:key2},keyValue=indexableKeysToKeyValues.get(key2);"value"in keyValue&&(kvDoc.value=keyValue.value);kvDocs.push(kvDoc)}metaDoc2.keys=uniq(newKeys.concat(metaDoc2.keys));kvDocs.push(metaDoc2);return kvDocs}(metaDoc,await function getKeyValueDocs(metaDoc2){return metaDoc2.keys.length?view.db.allDocs({keys:metaDoc2.keys,include_docs:!0}):Promise.resolve({rows:[]})}(metaDoc))}(docId,view,docIdsToChangesAndEmits)}))).then((function(listOfDocsToPersist){var docsToPersist=listOfDocsToPersist.flat();lastSeqDoc.seq=seq;docsToPersist.push(lastSeqDoc);return view.db.bulkDocs({docs:docsToPersist})})).then((()=>function updatePurgeSeq(view){return view.sourceDB.get("_local/purges").then((function(res2){const purgeSeq=res2.purgeSeq;return view.db.get("_local/purgeSeq").then((function(res3){return res3._rev})).catch(defaultsTo(void 0)).then((function(rev3){return view.db.put({_id:"_local/purgeSeq",_rev:rev3,purgeSeq})}))})).catch((function(err2){if(404!==err2.status)throw err2}))}(view)))}))}(view,docIdsToChangesAndEmits,seq)}}(docIdsToChangesAndEmits,currentSeq));indexed_docs+=results.length;const progress2={view:view.name,last_seq:response.last_seq,results_count:results.length,indexed_docs};view.sourceDB.emit("indexing",progress2);view.sourceDB.activeTasks.update(taskId,{completed_items:indexed_docs});return results.length<opts.changes_batch_size?void 0:processNextBatch()}(await view.sourceDB.changes({return_docs:!0,conflicts:!0,include_docs:!0,style:"all_docs",since:currentSeq,limit:opts.changes_batch_size}),await function getRecentPurges(){return view.db.get("_local/purgeSeq").then((function(res2){return res2.purgeSeq})).catch(defaultsTo(-1)).then((function(purgeSeq){return view.sourceDB.get("_local/purges").then((function(res2){const recentPurges=res2.purges.filter((function(purge2,index6){return index6>purgeSeq})).map((purge2=>purge2.docId)),uniquePurges=recentPurges.filter((function(docId,index6){return recentPurges.indexOf(docId)===index6}));return Promise.all(uniquePurges.map((function(docId){return view.sourceDB.get(docId).then((function(doc2){return{docId,doc:doc2}})).catch(defaultsTo({docId}))})))})).catch(defaultsTo([]))}))}())}();await queue2.finish();view.seq=currentSeq;view.sourceDB.activeTasks.remove(taskId)}catch(error){view.sourceDB.activeTasks.remove(taskId,error)}}(view,opts)}))()}function queryView(view,opts){return sequentialize(getQueue(view),(function(){return async function queryViewInQueue(view,opts){async function fetchFromView(viewOpts){viewOpts.include_docs=!0;const res2=await view.db.allDocs(viewOpts);totalRows=res2.total_rows;return res2.rows.map((function(result){if("value"in result.doc&&"object"==typeof result.doc.value&&null!==result.doc.value){const keys3=Object.keys(result.doc.value).sort(),expectedKeys=["id","key","value"];if(!(keys3<expectedKeys||keys3>expectedKeys))return result.doc.value}const parsedKeyAndDocId=function parseIndexableString(str){for(var collationIndex2,parsedNum,parsedStr,ch4,arrayElement,objElement,stack2=[],metaStack=[],i2=0;;)if("\0"!==(collationIndex2=str[i2++]))switch(collationIndex2){case"1":stack2.push(null);break;case"2":stack2.push("1"===str[i2]);i2++;break;case"3":parsedNum=parseNumber2(str,i2);stack2.push(parsedNum.num);i2+=parsedNum.length;break;case"4":parsedStr="";for(;"\0"!==(ch4=str[i2]);){parsedStr+=ch4;i2++}parsedStr=parsedStr.replace(/\u0001\u0001/g,"\0").replace(/\u0001\u0002/g,"").replace(/\u0002\u0002/g,"");stack2.push(parsedStr);break;case"5":arrayElement={element:[],index:stack2.length};stack2.push(arrayElement.element);metaStack.push(arrayElement);break;case"6":objElement={element:{},index:stack2.length};stack2.push(objElement.element);metaStack.push(objElement);break;default:throw new Error("bad collationIndex or unexpectedly reached end of input: "+collationIndex2)}else{if(1===stack2.length)return stack2.pop();pop2(stack2,metaStack)}}(result.doc._id);return{key:parsedKeyAndDocId[0],id:parsedKeyAndDocId[1],value:"value"in result.doc?result.doc.value:null}}))}async function onMapResultsReady(rows){let finalResults;finalResults=shouldReduce?function reduceView(view,results,options){0===options.group_level&&delete options.group_level;const shouldGroup=options.group||options.group_level,reduceFun=reducer3(view.reduceFun),groups=[],lvl=isNaN(options.group_level)?Number.POSITIVE_INFINITY:options.group_level;for(const result of results){const last=groups[groups.length-1];let groupKey=shouldGroup?result.key:null;shouldGroup&&Array.isArray(groupKey)&&(groupKey=groupKey.slice(0,lvl));if(last&&0===collate(last.groupKey,groupKey)){last.keys.push([result.key,result.id]);last.values.push(result.value)}else groups.push({keys:[[result.key,result.id]],values:[result.value],groupKey})}results=[];for(const group of groups){const reduceTry=tryReduce(view.sourceDB,reduceFun,group.keys,group.values,!1);if(reduceTry.error&&reduceTry.error instanceof BuiltInError)throw reduceTry.error;results.push({value:reduceTry.error?null:reduceTry.output,key:group.groupKey})}return{rows:sliceResults(results,options.limit,options.skip)}}(view,rows,opts):void 0===opts.keys?{total_rows:totalRows,offset:skip2,rows}:{total_rows:totalRows,offset:skip2,rows:sliceResults(rows,opts.limit,opts.skip)};opts.update_seq&&(finalResults.update_seq=view.seq);if(opts.include_docs){const docIds=uniq(rows.map(rowToDocId)),allDocsRes=await view.sourceDB.allDocs({keys:docIds,include_docs:!0,conflicts:opts.conflicts,attachments:opts.attachments,binary:opts.binary}),docIdsToDocs=new Map;for(const row of allDocsRes.rows)docIdsToDocs.set(row.id,row.doc);for(const row of rows){const docId=rowToDocId(row),doc=docIdsToDocs.get(docId);doc&&(row.doc=doc)}}return finalResults}let totalRows;const shouldReduce=view.reduceFun&&!1!==opts.reduce,skip2=opts.skip||0;if(void 0!==opts.keys&&!opts.keys.length){opts.limit=0;delete opts.keys}if(void 0!==opts.keys){const fetchPromises=opts.keys.map((function(key2){const viewOpts={startkey:toIndexableString([key2]),endkey:toIndexableString([key2,{}])};opts.update_seq&&(viewOpts.update_seq=!0);return fetchFromView(viewOpts)}));return onMapResultsReady((await Promise.all(fetchPromises)).flat())}{const viewOpts={descending:opts.descending};opts.update_seq&&(viewOpts.update_seq=!0);let startkey,endkey;"start_key"in opts&&(startkey=opts.start_key);"startkey"in opts&&(startkey=opts.startkey);"end_key"in opts&&(endkey=opts.end_key);"endkey"in opts&&(endkey=opts.endkey);void 0!==startkey&&(viewOpts.startkey=opts.descending?toIndexableString([startkey,{}]):toIndexableString([startkey]));if(void 0!==endkey){let inclusiveEnd=!1!==opts.inclusive_end;opts.descending&&(inclusiveEnd=!inclusiveEnd);viewOpts.endkey=toIndexableString(inclusiveEnd?[endkey,{}]:[endkey])}if(void 0!==opts.key){const keyStart=toIndexableString([opts.key]),keyEnd=toIndexableString([opts.key,{}]);if(viewOpts.descending){viewOpts.endkey=keyStart;viewOpts.startkey=keyEnd}else{viewOpts.startkey=keyStart;viewOpts.endkey=keyEnd}}if(!shouldReduce){"number"==typeof opts.limit&&(viewOpts.limit=opts.limit);viewOpts.skip=skip2}return onMapResultsReady(await fetchFromView(viewOpts))}}(view,opts)}))()}return{query:function abstractQuery(fun,opts,callback){const db=this;if("function"==typeof opts){callback=opts;opts={}}opts=opts?function coerceOptions(opts){opts.group_level=coerceInteger(opts.group_level);opts.limit=coerceInteger(opts.limit);opts.skip=coerceInteger(opts.skip);return opts}(opts):{};"function"==typeof fun&&(fun={map:fun});const promise=Promise.resolve().then((function(){return async function queryPromised(db,fun,opts){if("function"==typeof db._query)return function customQuery(db,fun,opts){return new Promise((function(resolve,reject){db._query(fun,opts,(function(err2,res2){if(err2)return reject(err2);resolve(res2)}))}))}(db,fun,opts);if(isRemote(db))return async function httpQuery(db,fun,opts){let body,ok,params=[],method="GET";addHttpParam("reduce",opts,params);addHttpParam("include_docs",opts,params);addHttpParam("attachments",opts,params);addHttpParam("limit",opts,params);addHttpParam("descending",opts,params);addHttpParam("group",opts,params);addHttpParam("group_level",opts,params);addHttpParam("skip",opts,params);addHttpParam("stale",opts,params);addHttpParam("conflicts",opts,params);addHttpParam("startkey",opts,params,!0);addHttpParam("start_key",opts,params,!0);addHttpParam("endkey",opts,params,!0);addHttpParam("end_key",opts,params,!0);addHttpParam("inclusive_end",opts,params);addHttpParam("key",opts,params,!0);addHttpParam("update_seq",opts,params);params=params.join("&");params=""===params?"":"?"+params;if(void 0!==opts.keys){const MAX_URL_LENGTH=2e3,keysAsString=`keys=${encodeURIComponent(JSON.stringify(opts.keys))}`;if(keysAsString.length+params.length+1<=MAX_URL_LENGTH)params+=("?"===params[0]?"&":"?")+keysAsString;else{method="POST";"string"==typeof fun?body={keys:opts.keys}:fun.keys=opts.keys}}if("string"==typeof fun){const parts=parseViewName(fun),response2=await db.fetch("_design/"+parts[0]+"/_view/"+parts[1]+params,{headers:new h2({"Content-Type":"application/json"}),method,body:JSON.stringify(body)});ok=response2.ok;const result2=await response2.json();if(!ok){result2.status=response2.status;throw generateErrorFromResponse(result2)}for(const row of result2.rows)if(row.value&&row.value.error&&"builtin_reduce_error"===row.value.error)throw new Error(row.reason);return new Promise((function(resolve){resolve(result2)})).then(postprocessAttachments(opts))}body=body||{};for(const key2 of Object.keys(fun))Array.isArray(fun[key2])?body[key2]=fun[key2]:body[key2]=fun[key2].toString();const response=await db.fetch("_temp_view"+params,{headers:new h2({"Content-Type":"application/json"}),method:"POST",body:JSON.stringify(body)});ok=response.ok;const result=await response.json();if(!ok){result.status=response.status;throw generateErrorFromResponse(result)}return new Promise((function(resolve){resolve(result)})).then(postprocessAttachments(opts))}(db,fun,opts);const updateViewOpts={changes_batch_size:db.__opts.view_update_changes_batch_size||50};if("string"!=typeof fun){checkQueryParseError(opts,fun);tempViewQueue.add((async function(){const view=await createView2(db,"temp_view/temp_view",fun.map,fun.reduce,!0,localDocName2);return function fin(promise,finalPromiseFactory){return promise.then((function(res2){return finalPromiseFactory().then((function(){return res2}))}),(function(reason){return finalPromiseFactory().then((function(){throw reason}))}))}(updateView(view,updateViewOpts).then((function(){return queryView(view,opts)})),(function(){return view.db.destroy()}))}));return tempViewQueue.finish()}{const fullViewName=fun,parts=parseViewName(fullViewName),designDocName=parts[0],viewName=parts[1],doc=await db.get("_design/"+designDocName);if(!(fun=doc.views&&doc.views[viewName]))throw new NotFoundError(`ddoc ${doc._id} has no view named ${viewName}`);ddocValidator3(doc,viewName);checkQueryParseError(opts,fun);const view=await createView2(db,fullViewName,fun.map,fun.reduce,!1,localDocName2);if("ok"===opts.stale||"update_after"===opts.stale){"update_after"===opts.stale&&nextTick2((function(){updateView(view,updateViewOpts)}));return queryView(view,opts)}await updateView(view,updateViewOpts);return queryView(view,opts)}}(db,fun,opts)}));promisedCallback(promise,callback);return promise},viewCleanup:function callbackify(fun){return function(...args){var cb2=args.pop(),promise=fun.apply(this,args);"function"==typeof cb2&&promisedCallback(promise,cb2);return promise}}((function(){const db=this;return"function"==typeof db._viewCleanup?function customViewCleanup(db){return new Promise((function(resolve,reject){db._viewCleanup((function(err2,res2){if(err2)return reject(err2);resolve(res2)}))}))}(db):isRemote(db)?async function httpViewCleanup(db){return(await db.fetch("_view_cleanup",{headers:new h2({"Content-Type":"application/json"}),method:"POST"})).json()}(db):async function localViewCleanup(db){try{const metaDoc=await db.get("_local/"+localDocName2),docsToViews=new Map;for(const fullViewName of Object.keys(metaDoc.views)){const parts=parseViewName(fullViewName),designDocName="_design/"+parts[0],viewName=parts[1];let views=docsToViews.get(designDocName);if(!views){views=new Set;docsToViews.set(designDocName,views)}views.add(viewName)}const opts={keys:mapToKeysArray(docsToViews),include_docs:!0},res2=await db.allDocs(opts),viewsToStatus={};for(const row of res2.rows){const ddocName=row.key.substring(8);for(const viewName of docsToViews.get(row.key)){let fullViewName=ddocName+"/"+viewName;metaDoc.views[fullViewName]||(fullViewName=viewName);const viewDBNames=Object.keys(metaDoc.views[fullViewName]),statusIsGood=row.doc&&row.doc.views&&row.doc.views[viewName];for(const viewDBName of viewDBNames)viewsToStatus[viewDBName]=viewsToStatus[viewDBName]||statusIsGood}}const destroyPromises=Object.keys(viewsToStatus).filter((function(viewDBName){return!viewsToStatus[viewDBName]})).map((function(viewDBName){return sequentialize(getQueue(viewDBName),(function(){return new db.constructor(viewDBName,db.__opts).destroy()}))()}));return Promise.all(destroyPromises).then((function(){return{ok:!0}}))}catch(err2){if(404===err2.status)return{ok:!0};throw err2}}(db)}))}};log=guardedConsole.bind(null,"log");isArray=Array.isArray;toJSON=JSON.parse;builtInReduce__sum=function(keys3,values){return sum(values)},builtInReduce__count=function(keys3,values){return values.length},builtInReduce__stats=function(keys3,values){return{sum:sum(values),min:Math.min.apply(null,values),max:Math.max.apply(null,values),count:values.length,sumsqr:function sumsqr(values2){var i2,len,num2,_sumsqr=0;for(i2=0,len=values2.length;i2<len;i2++)_sumsqr+=(num2=values2[i2])*num2;return _sumsqr}(values)}};abstract=index_es_default5("mrviews",(function mapper(mapFun,emit2){if("function"==typeof mapFun&&2===mapFun.length){var origMap=mapFun;return function(doc){return origMap(doc,emit2)}}return evalFunctionWithEval(mapFun.toString(),emit2)}),(function reducer(reduceFun){var reduceFunString=reduceFun.toString(),builtIn=function getBuiltIn(reduceFunString){if(/^_sum/.test(reduceFunString))return builtInReduce__sum;if(/^_count/.test(reduceFunString))return builtInReduce__count;if(/^_stats/.test(reduceFunString))return builtInReduce__stats;if(/^_/.test(reduceFunString))throw new Error(reduceFunString+" is not a supported reduce function.")}(reduceFunString);return builtIn||evalFunctionWithEval(reduceFunString)}),(function ddocValidator(ddoc,viewName){var fun=ddoc.views&&ddoc.views[viewName];if("string"!=typeof fun.map)throw new NotFoundError("ddoc "+ddoc._id+" has no string view named "+viewName+", instead found object of type: "+typeof fun.map)}));index_browser_es_default2={query:function query2(fun,opts,callback){return abstract.query.call(this,fun,opts,callback)},viewCleanup:function viewCleanup2(callback){return abstract.viewCleanup.call(this,callback)}};CHECKPOINT_VERSION=1;REPLICATOR="pouchdb";CHECKPOINT_HISTORY_SIZE=5;LOWEST_SEQ=0;CheckpointerInternal=class{constructor(src,target,id,returnValue,opts={writeSourceCheckpoint:!0,writeTargetCheckpoint:!0}){this.src=src;this.target=target;this.id=id;this.returnValue=returnValue;this.opts=opts;void 0===opts.writeSourceCheckpoint&&(opts.writeSourceCheckpoint=!0);void 0===opts.writeTargetCheckpoint&&(opts.writeTargetCheckpoint=!0)}writeCheckpoint(checkpoint,session){var self3=this;return this.updateTarget(checkpoint,session).then((function(){return self3.updateSource(checkpoint,session)}))}updateTarget(checkpoint,session){return this.opts.writeTargetCheckpoint?updateCheckpoint(this.target,this.id,checkpoint,session,this.returnValue):Promise.resolve(!0)}updateSource(checkpoint,session){if(this.opts.writeSourceCheckpoint){var self3=this;return updateCheckpoint(this.src,this.id,checkpoint,session,this.returnValue).catch((function(err2){if(isForbiddenError(err2)){self3.opts.writeSourceCheckpoint=!1;return!0}throw err2}))}return Promise.resolve(!0)}getCheckpoint(){var self3=this;return self3.opts.writeSourceCheckpoint||self3.opts.writeTargetCheckpoint?self3.opts&&self3.opts.writeSourceCheckpoint&&!self3.opts.writeTargetCheckpoint?self3.src.get(self3.id).then((function(sourceDoc){return sourceDoc.last_seq||LOWEST_SEQ})).catch((function(err2){if(404!==err2.status)throw err2;return LOWEST_SEQ})):self3.target.get(self3.id).then((function(targetDoc){return self3.opts&&self3.opts.writeTargetCheckpoint&&!self3.opts.writeSourceCheckpoint?targetDoc.last_seq||LOWEST_SEQ:self3.src.get(self3.id).then((function(sourceDoc){return targetDoc.version!==sourceDoc.version?LOWEST_SEQ:(version2=targetDoc.version?targetDoc.version.toString():"undefined")in comparisons?comparisons[version2](targetDoc,sourceDoc):LOWEST_SEQ;var version2}),(function(err2){if(404===err2.status&&targetDoc.last_seq)return self3.src.put({_id:self3.id,last_seq:LOWEST_SEQ}).then((function(){return LOWEST_SEQ}),(function(err3){if(isForbiddenError(err3)){self3.opts.writeSourceCheckpoint=!1;return targetDoc.last_seq}return LOWEST_SEQ}));throw err2}))})).catch((function(err2){if(404!==err2.status)throw err2;return LOWEST_SEQ})):Promise.resolve(LOWEST_SEQ)}};comparisons={undefined:function(targetDoc,sourceDoc){return 0===collate(targetDoc.last_seq,sourceDoc.last_seq)?sourceDoc.last_seq:0},1:function(targetDoc,sourceDoc){return compareReplicationLogs(sourceDoc,targetDoc).last_seq}};index_es_default6=function Checkpointer(src,target,id,returnValue,opts){return this instanceof CheckpointerInternal?Checkpointer:new CheckpointerInternal(src,target,id,returnValue,opts)};import_spark_md55=__toESM(require_spark_md5());setImmediateShim5=self.setImmediate||self.setTimeout;index_es_default7=function generateReplicationId(src,target,opts){var docIds=opts.doc_ids?opts.doc_ids.sort(collate):"",filterFun=opts.filter?opts.filter.toString():"",queryParams="",filterViewName="",selector="";opts.selector&&(selector=JSON.stringify(opts.selector));opts.filter&&opts.query_params&&(queryParams=JSON.stringify(function sortObjectPropertiesByKey(queryParams){return Object.keys(queryParams).sort(collate).reduce((function(result,key2){result[key2]=queryParams[key2];return result}),{})}(opts.query_params)));opts.filter&&"_view"===opts.filter&&(filterViewName=opts.view.toString());return Promise.all([src.id(),target.id()]).then((function(res2){var queryData=res2[0]+res2[1]+filterFun+filterViewName+queryParams+docIds+selector;return new Promise((function(resolve){(function binaryMd55(data,callback){function next2(){setImmediateShim5(loadNextChunk)}function done(){var base64=function rawToBase645(raw){return thisBtoa(raw)}(buffer.end(!0));callback(base64);buffer.destroy()}function loadNextChunk(){var start=currentChunk*chunkSize2;currentChunk++;append2(buffer,data,start,start+chunkSize2,currentChunk<chunks?next2:done)}var inputIsString="string"==typeof data,len=inputIsString?data.length:data.size,chunkSize2=Math.min(32768,len),chunks=Math.ceil(len/chunkSize2),currentChunk=0,buffer=inputIsString?new import_spark_md55.default:new import_spark_md55.default.ArrayBuffer,append2=inputIsString?appendString5:appendBlob5;loadNextChunk()})(queryData,resolve)}))})).then((function(md5sum){return"_local/"+md5sum.replace(/\//g,".").replace(/\+/g,"_")}))};import_events23=__toESM(require_events());STARTING_BACK_OFF=0;Replication=class extends import_events23.default{constructor(){super();this.cancelled=!1;this.state="pending";const promise=new Promise(((fulfill,reject)=>{this.once("complete",fulfill);this.once("error",reject)}));this.then=function(resolve,reject){return promise.then(resolve,reject)};this.catch=function(reject){return promise.catch(reject)};this.catch((function(){}))}cancel(){this.cancelled=!0;this.state="cancelled";this.emit("cancel")}ready(src,target){function cleanup(){src.removeListener("destroyed",onDestroy2);target.removeListener("destroyed",onDestroy2)}if(this._readyCalled)return;this._readyCalled=!0;const onDestroy2=()=>{this.cancel()};src.once("destroyed",onDestroy2);target.once("destroyed",onDestroy2);this.once("complete",cleanup);this.once("error",cleanup)}};Sync=class extends import_events23.default{constructor(src,target,opts,callback){function addOneListener(ee,event2,listener){-1==ee.listeners(event2).indexOf(listener)&&ee.on(event2,listener)}super();this.canceled=!1;const optsPush=opts.push?Object.assign({},opts,opts.push):opts,optsPull=opts.pull?Object.assign({},opts,opts.pull):opts;this.push=replicateWrapper(src,target,optsPush);this.pull=replicateWrapper(target,src,optsPull);this.pushPaused=!0;this.pullPaused=!0;const pullChange=change=>{this.emit("change",{direction:"pull",change})},pushChange=change=>{this.emit("change",{direction:"push",change})},pushDenied=doc=>{this.emit("denied",{direction:"push",doc})},pullDenied=doc=>{this.emit("denied",{direction:"pull",doc})},pushPaused=()=>{this.pushPaused=!0;this.pullPaused&&this.emit("paused")},pullPaused=()=>{this.pullPaused=!0;this.pushPaused&&this.emit("paused")},pushActive=()=>{this.pushPaused=!1;this.pullPaused&&this.emit("active",{direction:"push"})},pullActive=()=>{this.pullPaused=!1;this.pushPaused&&this.emit("active",{direction:"pull"})};let removed={};const removeAll=type=>(event2,func)=>{if("change"===event2&&(func===pullChange||func===pushChange)||"denied"===event2&&(func===pullDenied||func===pushDenied)||"paused"===event2&&(func===pullPaused||func===pushPaused)||"active"===event2&&(func===pullActive||func===pushActive)){event2 in removed||(removed[event2]={});removed[event2][type]=!0;2===Object.keys(removed[event2]).length&&this.removeAllListeners(event2)}};if(opts.live){this.push.on("complete",this.pull.cancel.bind(this.pull));this.pull.on("complete",this.push.cancel.bind(this.push))}this.on("newListener",(function(event2){if("change"===event2){addOneListener(this.pull,"change",pullChange);addOneListener(this.push,"change",pushChange)}else if("denied"===event2){addOneListener(this.pull,"denied",pullDenied);addOneListener(this.push,"denied",pushDenied)}else if("active"===event2){addOneListener(this.pull,"active",pullActive);addOneListener(this.push,"active",pushActive)}else if("paused"===event2){addOneListener(this.pull,"paused",pullPaused);addOneListener(this.push,"paused",pushPaused)}}));this.on("removeListener",(function(event2){if("change"===event2){this.pull.removeListener("change",pullChange);this.push.removeListener("change",pushChange)}else if("denied"===event2){this.pull.removeListener("denied",pullDenied);this.push.removeListener("denied",pushDenied)}else if("active"===event2){this.pull.removeListener("active",pullActive);this.push.removeListener("active",pushActive)}else if("paused"===event2){this.pull.removeListener("paused",pullPaused);this.push.removeListener("paused",pushPaused)}}));this.pull.on("removeListener",removeAll("pull"));this.push.on("removeListener",removeAll("push"));const promise=Promise.all([this.push,this.pull]).then((resp=>{const out={push:resp[0],pull:resp[1]};this.emit("complete",out);callback&&callback(null,out);this.removeAllListeners();return out}),(err2=>{this.cancel();callback?callback(err2):this.emit("error",err2);this.removeAllListeners();if(callback)throw err2}));this.then=function(success,err2){return promise.then(success,err2)};this.catch=function(err2){return promise.catch(err2)}}cancel(){if(!this.canceled){this.canceled=!0;this.push.cancel();this.pull.cancel()}}};index_es_default8=function replication(PouchDB2){PouchDB2.replicate=replicateWrapper;PouchDB2.sync=sync;Object.defineProperty(PouchDB2.prototype,"replicate",{get:function(){var self3=this;void 0===this.replicateMethods&&(this.replicateMethods={from:function(other,opts,callback){return self3.constructor.replicate(other,self3,opts,callback)},to:function(other,opts,callback){return self3.constructor.replicate(self3,other,opts,callback)}});return this.replicateMethods}});PouchDB2.prototype.sync=function(dbName,opts,callback){return this.constructor.sync(this,dbName,opts,callback)}};import_spark_md56=__toESM(require_spark_md5());self.setImmediate||self.setTimeout;nativeFlat=(...args)=>args.flat(1/0);polyFlat=(...args)=>{let res2=[];for(const subArr of args)Array.isArray(subArr)?res2=res2.concat(polyFlat(...subArr)):res2.push(subArr);return res2};flatten="function"==typeof Array.prototype.flat?nativeFlat:polyFlat;requireValidation=["$all","$allMatch","$and","$elemMatch","$exists","$in","$mod","$nin","$nor","$not","$or","$regex","$size","$type"];arrayTypeComparisonOperators=["$in","$nin","$mod","$all"];equalityOperators=["$eq","$gt","$gte","$lt","$lte"];abstractMapper=index_es_default5("indexes",(function mapper2(mapFunDef,emit2){return function createMapper(fields,emit2,selector){const isShallow=function checkShallow(fields){return fields.every((field=>-1===field.indexOf(".")))}(fields),isSingle=1===fields.length;return isShallow?isSingle?function createShallowSingleMapper(field,emit2,selector){return function(doc){selector&&!matchesSelector(doc,selector)||emit2(doc[field])}}(fields[0],emit2,selector):function createShallowMultiMapper(fields,emit2,selector){return function(doc){if(selector&&!matchesSelector(doc,selector))return;const toEmit=fields.map((field=>doc[field]));emit2(toEmit)}}(fields,emit2,selector):isSingle?function createDeepSingleMapper(field,emit2,selector){const parsedField=parseField(field);return function(doc){if(selector&&!matchesSelector(doc,selector))return;const value=getDeepValue(doc,parsedField);void 0!==value&&emit2(value)}}(fields[0],emit2,selector):function createDeepMultiMapper(fields,emit2,selector){return function(doc){if(selector&&!matchesSelector(doc,selector))return;const toEmit=[];for(const field of fields){const value=getDeepValue(doc,parseField(field));if(void 0===value)return;toEmit.push(value)}emit2(toEmit)}}(fields,emit2,selector)}(Object.keys(mapFunDef.fields),emit2,mapFunDef.partial_filter_selector)}),(function reducer2(){throw new Error("reduce not supported")}),(function ddocValidator2(ddoc,viewName){const view=ddoc.views[viewName];if(!view.map||!view.map.fields)throw new Error("ddoc "+ddoc._id+" with view "+viewName+" doesn't have map.fields defined. maybe it wasn't created by this plugin?")}));ddocIdPrefix=/^_design\//;SHORT_CIRCUIT_QUERY={queryOpts:{limit:0,startkey:COLLATE_HI={"":{}},endkey:COLLATE_LO=null},inMemoryFields:[]};logicalMatchers=["$eq","$gt","$gte","$lt","$lte"];(plugin2={}).createIndex=resolveToCallback((async function(requestDef){if("object"!=typeof requestDef)throw new Error("you must provide an index to create");return(isRemote(this)?createIndex:createIndex$1)(this,requestDef)}));plugin2.find=resolveToCallback((async function(requestDef){if("object"!=typeof requestDef)throw new Error("you must provide search parameters to find()");return(isRemote(this)?find:find$1)(this,requestDef)}));plugin2.explain=resolveToCallback((async function(requestDef){if("object"!=typeof requestDef)throw new Error("you must provide search parameters to explain()");return(isRemote(this)?explain:explain$1)(this,requestDef)}));plugin2.getIndexes=resolveToCallback((async function(){return(isRemote(this)?getIndexes:getIndexes$1)(this)}));plugin2.deleteIndex=resolveToCallback((async function(indexDef){if("object"!=typeof indexDef)throw new Error("you must provide an index to delete");return(isRemote(this)?deleteIndex:deleteIndex$1)(this,indexDef)}));index_browser_es_default3=plugin2;import_transform_pouch=__toESM(require_transform_pouch(),1);index_es_default.plugin(index_es_default2).plugin(index_es_default3).plugin(index_es_default4).plugin(index_browser_es_default2).plugin(index_es_default8).plugin(index_browser_es_default3).plugin(import_transform_pouch.default);index_es_default.prototype.purgeMulti=adapterFun("_purgeMulti",(function(docs,callback){if(void 0===this._purge)return callback(createError(UNKNOWN_ERROR,"Purge is not implemented in the "+this.adapter+" adapter."));const self3=this,tasks3=docs.map((param=>()=>new Promise(((res2,rej)=>{const[docId,rev$$1]=param;self3._getRevisionTree(docId,((error,revs)=>{if(error)return res2([param,error]);if(!revs)return res2([param,createError(MISSING_DOC)]);let path2;try{path2=findPathToLeaf(revs,rev$$1)}catch(error2){return res2([param,error2.message||error2])}self3._purge(docId,path2,((error2,result)=>res2(error2?[param,error2]:[param,result])))}))}))));(async()=>{const retAll=(await async function mapAllTasksWithConcurrencyLimit(limit,tasks3){const results=new Map;for await(const v2 of async function*processAllTasksWithConcurrencyLimit(limit,tasks3){const nowProcessing=new Map;let idx2=0;const pendingTasks=tasks3.reverse();for(;pendingTasks.length>0||nowProcessing.size>0;){L2:for(;nowProcessing.size<limit&&pendingTasks.length>0;){const task=pendingTasks.pop();if(void 0===task)break L2;idx2++;const wrappedPromise=wrapEachProcess(idx2,isTaskWaiting(task)?task():task);nowProcessing.set(idx2,wrappedPromise)}const done=await Promise.race(nowProcessing.values());nowProcessing.delete(done.key);yield done}}(limit,tasks3))results.set(v2.key,v2);return[...results.entries()].sort(((a2,b3)=>a2[0]-b3[0])).map((e3=>e3[1]))}(1,tasks3)).map((e3=>function unwrapTaskResult(result){if("ok"in result)return result.ok;if("err"in result)return result.err;throw new Error("Argument Exception: Could not unwrap")}(e3)));await function appendPurgeSeqs(db,docs){return db.get("_local/purges").then((function(doc){for(const[docId,rev$$1]of docs){const purgeSeq=doc.purgeSeq+1;doc.purges.push({docId,rev:rev$$1,purgeSeq});doc.purges.length>db.purged_infos_limit&&doc.purges.splice(0,doc.purges.length-db.purged_infos_limit);doc.purgeSeq=purgeSeq}return doc})).catch((function(err2){if(404!==err2.status)throw err2;return{_id:"_local/purges",purges:docs.map((([docId,rev$$1],idx2)=>({docId,rev:rev$$1,purgeSeq:idx2}))),purgeSeq:docs.length}})).then((function(doc){return db.put(doc)}))}(self3,retAll.filter((e3=>"ok"in e3[1])).map((e3=>e3[0])));return Object.fromEntries(retAll.map((e3=>[e3[0][0],e3[1]])))})().then((result=>callback(void 0,result))).catch((error=>callback(error)))}));import_obsidian.Notice;ModuleObsidianAPI=class extends AbstractObsidianModule{constructor(){super(...arguments);this.authHeaderSource=reactiveSource("");this.authHeader=reactive((()=>""==this.authHeaderSource.value?"":"Basic "+window.btoa(this.authHeaderSource.value)));this.last_successful_post=!1}$$customFetchHandler(){this._customHandler||(this._customHandler=new ObsHttpHandler(void 0,void 0));return this._customHandler}$$getLastPostFailedBySize(){return!this.last_successful_post}async $$connectRemoteCouchDB(uri,auth,disableRequestURI,passphrase,useDynamicIterationCount,performSetup,skipInfo,compression){if(!isValidRemoteCouchDBURI(uri))return"Remote URI is not valid";if(uri.toLowerCase()!=uri)return"Remote URI and database name could not contain capital letters.";if(-1!==uri.indexOf(" "))return"Remote URI and database name could not contain spaces.";const userNameAndPassword=auth.username&&auth.password?`${auth.username}:${auth.password}`:"";this.authHeaderSource.value!=userNameAndPassword&&(this.authHeaderSource.value=userNameAndPassword);const authHeader=this.authHeader.value,db=new index_es_default(uri,{adapter:"http",auth,skip_setup:!performSetup,fetch:async(url,opts)=>{var _a7,_b3;let size="";const localURL=url.toString().substring(uri.length),method=null!=(_a7=null==opts?void 0:opts.method)?_a7:"GET";if(null==opts?void 0:opts.body){const opts_length=opts.body.toString().length;if(opts_length>1e7&&isCloudantURI(uri)){this.last_successful_post=!1;this._log("This request should fail on IBM Cloudant.",LOG_LEVEL_VERBOSE);throw new Error("This request should fail on IBM Cloudant.")}size=` (${opts_length})`}if(!disableRequestURI&&"string"==typeof url&&"string"==typeof(null!=(_b3=null==opts?void 0:opts.body)?_b3:"")){const body=null==opts?void 0:opts.body,transformedHeaders={...null==opts?void 0:opts.headers};""!=authHeader&&(transformedHeaders.authorization=authHeader);delete transformedHeaders.host;delete transformedHeaders.Host;delete transformedHeaders["content-length"];delete transformedHeaders["Content-Length"];const requestParam={url,method:null==opts?void 0:opts.method,body,headers:transformedHeaders,contentType:"application/json"};try{this.plugin.requestCount.value=this.plugin.requestCount.value+1;const r4=await async function fetchByAPI(request2){var _a7,_b3;const ret=await(0,import_obsidian.requestUrl)(request2);if(ret.status-ret.status%100!=200){const er=new Error(`Request Error:${ret.status}`);if(ret.json){er.message=ret.json.reason;er.name=`${null!=(_a7=ret.json.error)?_a7:""}:${null!=(_b3=ret.json.message)?_b3:""}`}er.status=ret.status;throw er}return ret}(requestParam);this.last_successful_post="POST"!=method&&"PUT"!=method||r4.status-r4.status%100==200;this._log(`HTTP:${method}${size} to:${localURL} -> ${r4.status}`,-1);return new Response(r4.arrayBuffer,{headers:r4.headers,status:r4.status,statusText:`${r4.status}`})}catch(ex){this._log(`HTTP:${method}${size} to:${localURL} -> failed`,LOG_LEVEL_VERBOSE);-1!==url.toString().indexOf("_bulk_docs")&&(this.last_successful_post=!1);this._log(ex);throw ex}finally{this.plugin.responseCount.value=this.plugin.responseCount.value+1}}try{this.settings.enableDebugTools&&opts.headers.append("ngrok-skip-browser-warning","123");this.plugin.requestCount.value=this.plugin.requestCount.value+1;const response=await fetch(url,opts);this.last_successful_post="POST"!=method&&"PUT"!=method||response.ok;this._log(`HTTP:${method}${size} to:${localURL} -> ${response.status}`,-1);if(2!==Math.floor(response.status/100))if("GET"==method||-1!==localURL.indexOf("/_local/")||localURL.endsWith("/"))this._log("Just checkpoint or some server information has been missing. The 404 error shown above is not an error.",LOG_LEVEL_VERBOSE);else{const r4=response.clone();this._log(`The request may have failed. The reason sent by the server: ${r4.status}: ${r4.statusText}`);try{this._log(await(await r4.blob()).text(),LOG_LEVEL_VERBOSE)}catch(_){this._log("Cloud not parse response",LOG_LEVEL_VERBOSE);this._log(_,LOG_LEVEL_VERBOSE)}}return response}catch(ex){this._log(`HTTP:${method}${size} to:${localURL} -> failed`,LOG_LEVEL_VERBOSE);-1!==url.toString().indexOf("_bulk_docs")&&(this.last_successful_post=!1);this._log(ex);throw ex}finally{this.plugin.responseCount.value=this.plugin.responseCount.value+1}}});replicationFilter(db,compression);(function disableEncryption(){preprocessOutgoing=async doc=>doc})();"false"!==passphrase&&"string"==typeof passphrase&&enableEncryption(db,passphrase,useDynamicIterationCount,!1);if(skipInfo)return{db,info:{db_name:"",doc_count:0,update_seq:""}};try{const info3=await db.info();return{db,info:info3}}catch(ex){let msg=`${null==ex?void 0:ex.name}:${null==ex?void 0:ex.message}`;"TypeError"==(null==ex?void 0:ex.name)&&"Failed to fetch"==(null==ex?void 0:ex.message)&&(msg+="\n**Note** This error caused by many reasons. The only sure thing is you didn't touch the server.\nTo check details, open inspector.");this._log(ex,LOG_LEVEL_VERBOSE);return msg}}$$isMobile(){return this.app.isMobile}$$vaultName(){return this.app.vault.getName()}$$getVaultName(){var _a7;return this.core.$$vaultName()+((null==(_a7=this.settings)?void 0:_a7.additionalSuffixOfDatabaseName)?"-"+this.settings.additionalSuffixOfDatabaseName:"")}$$getActiveFilePath(){const file=this.app.workspace.getActiveFile();if(file)return getPathFromTFile(file)}$anyGetAppId(){return Promise.resolve(`${"appId"in this.app?this.app.appId:""}`)}};ModuleObsidianEvents=class extends AbstractObsidianModule{constructor(){super(...arguments);this.hasFocus=!0;this.isLastHidden=!1}$everyOnloadStart(){this.plugin.registerEvent(this.app.vault.on("rename",((file,oldPath)=>{eventHub.emitEvent("file-renamed",{newPath:file.path,old:oldPath})})));this.plugin.registerEvent(this.app.workspace.on("active-leaf-change",(()=>eventHub.emitEvent("leaf-active-changed"))));return Promise.resolve(!0)}$$performRestart(){this._performAppReload()}_performAppReload(){this.app.commands.executeCommandById("app:reload")}swapSaveCommand(){var _a7,_b3;this._log("Modifying callback of the save command",LOG_LEVEL_VERBOSE);const saveCommandDefinition=null==(_b3=null==(_a7=this.app.commands)?void 0:_a7.commands)?void 0:_b3["editor:save-file"],save=null==saveCommandDefinition?void 0:saveCommandDefinition.callback;if("function"==typeof save){this.initialCallback=save;saveCommandDefinition.callback=()=>{scheduleTask("syncOnEditorSave",250,(()=>{if(this.core.$$isUnloaded()){this._log("Unload and remove the handler.",LOG_LEVEL_VERBOSE);saveCommandDefinition.callback=this.initialCallback;this.initialCallback=void 0}else if(this.settings.syncOnEditorSave){this._log("Sync on Editor Save.",LOG_LEVEL_VERBOSE);fireAndForget((()=>this.core.$$replicateByEvent()))}}));save()}}const _this=this;window.CodeMirrorAdapter.commands.save=()=>{_this.app.commands.executeCommandById("editor:save-file")}}registerWatchEvents(){this.setHasFocus=this.setHasFocus.bind(this);this.watchWindowVisibility=this.watchWindowVisibility.bind(this);this.watchWorkspaceOpen=this.watchWorkspaceOpen.bind(this);this.watchOnline=this.watchOnline.bind(this);this.plugin.registerEvent(this.app.workspace.on("file-open",this.watchWorkspaceOpen));this.plugin.registerDomEvent(document,"visibilitychange",this.watchWindowVisibility);this.plugin.registerDomEvent(window,"focus",(()=>this.setHasFocus(!0)));this.plugin.registerDomEvent(window,"blur",(()=>this.setHasFocus(!1)));this.plugin.registerDomEvent(window,"online",this.watchOnline);this.plugin.registerDomEvent(window,"offline",this.watchOnline)}setHasFocus(hasFocus){this.hasFocus=hasFocus;this.watchWindowVisibility()}watchWindowVisibility(){scheduleTask("watch-window-visibility",100,(()=>fireAndForget((()=>this.watchWindowVisibilityAsync()))))}watchOnline(){scheduleTask("watch-online",500,(()=>fireAndForget((()=>this.watchOnlineAsync()))))}async watchOnlineAsync(){if(navigator.onLine&&this.localDatabase.needScanning){this.localDatabase.needScanning=!1;await this.core.$$performFullScan()}}async watchWindowVisibilityAsync(){if(this.settings.suspendFileWatching)return;if(!this.settings.isConfigured)return;if(!this.core.$$isReady())return;if(this.isLastHidden&&!this.hasFocus)return;const isHidden=document.hidden;if(this.isLastHidden!==isHidden){this.isLastHidden=isHidden;await this.core.$everyCommitPendingFileEvent();if(isHidden)await this.core.$everyBeforeSuspendProcess();else{if(this.core.$$isSuspended())return;if(!this.hasFocus)return;await this.core.$everyOnResumeProcess();await this.core.$everyAfterResumeProcess()}}}watchWorkspaceOpen(file){this.settings.suspendFileWatching||this.settings.isConfigured&&this.core.$$isReady()&&file&&scheduleTask("watch-workspace-open",500,(()=>fireAndForget((()=>this.watchWorkspaceOpenAsync(file)))))}async watchWorkspaceOpenAsync(file){if(!this.settings.suspendFileWatching&&this.settings.isConfigured&&this.core.$$isReady()){await this.core.$everyCommitPendingFileEvent();if(null!=file){this.settings.syncOnFileOpen&&!this.core.$$isSuspended()&&await this.core.$$replicateByEvent();await this.core.$$queueConflictCheckIfOpen(file.path)}}}$everyOnLayoutReady(){this.swapSaveCommand();this.registerWatchEvents();return Promise.resolve(!0)}$$askReload(message){this.core.$$isReloadingScheduled()?this._log("Reloading is already scheduled",LOG_LEVEL_VERBOSE):scheduleTask("configReload",250,(async()=>{const ret=await this.core.confirm.askSelectStringDialogue(message||"Do you want to restart and reload Obsidian now?",["Yes, schedule a restart after stabilisation","Yes, restart immediately","No, Leave it to me"],{defaultAction:"No, Leave it to me"});"Yes, restart immediately"==ret?this._performAppReload():"Yes, schedule a restart after stabilisation"==ret&&this.core.$$scheduleAppReload()}))}$$scheduleAppReload(){if(!this.core._totalProcessingCount){const __tick=reactiveSource(0);this.core._totalProcessingCount=reactive((()=>{const dbCount=this.core.databaseQueueCount.value,replicationCount=this.core.replicationResultCount.value,storageApplyingCount=this.core.storageApplyingCount.value,chunkCount=collectingChunks.value,pluginScanCount=pluginScanningCount.value,hiddenFilesCount=hiddenFilesEventCount.value+hiddenFilesProcessingCount.value,conflictProcessCount=this.core.conflictProcessQueueCount.value,e3=this.core.pendingFileEventCount.value,proc=this.core.processingFileEventCount.value;__tick.value;return dbCount+replicationCount+storageApplyingCount+chunkCount+pluginScanCount+hiddenFilesCount+conflictProcessCount+e3+proc}));this.plugin.registerInterval(setInterval((()=>{__tick.value++}),1e3));let stableCheck=3;this.core._totalProcessingCount.onChanged((e3=>{if(0==e3.value){stableCheck--<=0&&this._performAppReload();this._log(`Obsidian will be restarted soon! (Within ${stableCheck} seconds)`,LOG_LEVEL_NOTICE,"restart-notice")}else stableCheck=3}))}}};root_110=template('<li class="svelte-1xnxxxe"><label class="svelte-1xnxxxe"> </label><input type="text"> <button class="iconbutton svelte-1xnxxxe">🗑</button></li>');root5=template('<ul class="svelte-1xnxxxe"><!> <li class="svelte-1xnxxxe"><label class="svelte-1xnxxxe"><button>Add</button></label></li> <li class="buttons svelte-1xnxxxe"><button>Apply</button> <button>Revert</button></li></ul>');$$css6={hash:"svelte-1xnxxxe",code:"label.svelte-1xnxxxe {min-width:4em;width:4em;display:inline-flex;flex-direction:row;justify-content:flex-end;}ul.svelte-1xnxxxe {flex-grow:1;display:inline-flex;flex-direction:column;list-style-type:none;margin-block-start:0;margin-block-end:0;margin-inline-start:0;margin-inline-end:0;padding-inline-start:0;}li.svelte-1xnxxxe {padding:var(--size-2-1) var(--size-4-1);display:inline-flex;flex-grow:1;align-items:center;justify-content:flex-end;gap:var(--size-4-2);}li.svelte-1xnxxxe input:where(.svelte-1xnxxxe) {min-width:10em;}button.iconbutton.svelte-1xnxxxe {max-width:4em;}"};import_obsidian10=require("obsidian");LiveSyncSetting=class _LiveSyncSetting extends import_obsidian10.Setting{constructor(containerEl){super(containerEl);this.watchDirtyKeys=[];this.holdValue=!1;this.descBuf="";this.nameBuf="";this.placeHolderBuf="";this.hasPassword=!1;this.updateHandlers=new Set;this.prevStatus={};_LiveSyncSetting.env.settingComponents.push(this)}_createDocStub(key2,value){var _a7,_b3,_c2,_d2;{const paneName=findAttrFromParent(this.settingEl,"data-pane"),panelName=findAttrFromParent(this.settingEl,"data-panel");(function createStub(name,key2,value,panel,pane){var _a7;{pane in stubs||(stubs[pane]={});panel in stubs[pane]||(stubs[pane][panel]=new Map);const old=null!=(_a7=stubs[pane][panel].get(name))?_a7:{};stubs[pane][panel].set(name,{...old,[key2]:value});scheduleTask("update-stub",100,(()=>{eventHub.emitEvent("document-stub-created",{toc,stub:stubs})}))}})("string"==typeof this.nameBuf?this.nameBuf:null!=(_b3=null==(_a7=this.nameBuf.textContent)?void 0:_a7.toString())?_b3:"",key2,"string"==typeof value?value:null!=(_d2=null==(_c2=value.textContent)?void 0:_c2.toString())?_d2:"",panelName,paneName)}}setDesc(desc){this.descBuf=desc;this._createDocStub("desc",desc);super.setDesc(desc);return this}setName(name){this.nameBuf=name;this._createDocStub("name",name);super.setName(name);return this}setAuto(key2,opt){this.autoWireSetting(key2,opt);return this}autoWireSetting(key2,opt){const conf=getConfig(key2);if(!conf)return;const name=`${conf.name}${statusDisplay(conf.status)}`;this.setName(name);conf.desc&&this.setDesc(conf.desc);this._createDocStub("key",key2);conf.obsolete&&this._createDocStub("is_obsolete","true");conf.level&&this._createDocStub("level",conf.level);this.holdValue=(null==opt?void 0:opt.holdValue)||this.holdValue;this.selfKey=key2;(conf.obsolete||(null==opt?void 0:opt.obsolete))&&this.settingEl.toggleClass("sls-setting-obsolete",!0);(null==opt?void 0:opt.onUpdate)&&this.addOnUpdate(opt.onUpdate);const stat=this._getComputedStatus();!1===stat.visibility&&this.settingEl.toggleClass("sls-setting-hidden",!stat.visibility);return conf}autoWireComponent(component2,conf,opt){this.placeHolderBuf=(null==conf?void 0:conf.placeHolder)||(null==opt?void 0:opt.placeHolder)||"";(null==conf?void 0:conf.level)==LEVEL_ADVANCED?this.settingEl.toggleClass("sls-setting-advanced",!0):(null==conf?void 0:conf.level)==LEVEL_POWER_USER&&this.settingEl.toggleClass("sls-setting-poweruser",!0);this.placeHolderBuf&&component2 instanceof import_obsidian10.TextComponent&&component2.setPlaceholder(this.placeHolderBuf);(null==opt?void 0:opt.onUpdate)&&this.addOnUpdate(opt.onUpdate)}async commitValue(value){const key2=this.selfKey;if(void 0!==key2&&value!=_LiveSyncSetting.env.editingSettings[key2]){_LiveSyncSetting.env.editingSettings[key2]=value;this.holdValue||await _LiveSyncSetting.env.saveSettings([key2])}_LiveSyncSetting.env.requestUpdate()}autoWireText(key2,opt){const conf=this.autoWireSetting(key2,opt);this.addText((text2=>{this.autoWiredComponent=text2;const setValue=wrapMemo((value=>{text2.setValue(value)}));this.invalidateValue=()=>setValue(`${_LiveSyncSetting.env.editingSettings[key2]}`);this.invalidateValue();text2.onChange((async value=>{await this.commitValue(value)}));if(null==opt?void 0:opt.isPassword){text2.inputEl.setAttribute("type","password");this.hasPassword=!0}this.autoWireComponent(this.autoWiredComponent,conf,opt)}));return this}autoWireTextArea(key2,opt){const conf=this.autoWireSetting(key2,opt);this.addTextArea((text2=>{this.autoWiredComponent=text2;const setValue=wrapMemo((value=>{text2.setValue(value)}));this.invalidateValue=()=>setValue(`${_LiveSyncSetting.env.editingSettings[key2]}`);this.invalidateValue();text2.onChange((async value=>{await this.commitValue(value)}));if(null==opt?void 0:opt.isPassword){text2.inputEl.setAttribute("type","password");this.hasPassword=!0}this.autoWireComponent(this.autoWiredComponent,conf,opt)}));return this}autoWireNumeric(key2,opt){const conf=this.autoWireSetting(key2,opt);this.addText((text2=>{this.autoWiredComponent=text2;opt.clampMin&&text2.inputEl.setAttribute("min",`${opt.clampMin}`);opt.clampMax&&text2.inputEl.setAttribute("max",`${opt.clampMax}`);let lastError=!1;const setValue=wrapMemo((value=>{text2.setValue(value)}));this.invalidateValue=()=>{lastError||setValue(`${_LiveSyncSetting.env.editingSettings[key2]}`)};this.invalidateValue();text2.onChange((async TextValue=>{var _a7,_b3;const value=Number(TextValue);let hasError=!1;isNaN(value)&&(hasError=!0);opt.clampMax&&opt.clampMax<value&&(hasError=!0);opt.clampMin&&opt.clampMin>value&&(opt.acceptZero&&0==value||(hasError=!0));if(hasError){this.setTooltip($msg("liveSyncSetting.valueShouldBeInRange",{min:(null==(_a7=opt.clampMin)?void 0:_a7.toString())||"~",max:(null==(_b3=opt.clampMax)?void 0:_b3.toString())||"~"}));text2.inputEl.toggleClass("sls-item-invalid-value",!0);lastError=!0;return!1}lastError=!1;this.setTooltip("");text2.inputEl.toggleClass("sls-item-invalid-value",!1);await this.commitValue(value)}));text2.inputEl.setAttr("type","number");this.autoWireComponent(this.autoWiredComponent,conf,opt)}));return this}autoWireToggle(key2,opt){const conf=this.autoWireSetting(key2,opt);this.addToggle((toggle=>{this.autoWiredComponent=toggle;const setValue=wrapMemo((value=>{toggle.setValue((null==opt?void 0:opt.invert)?!value:value)}));this.invalidateValue=()=>{var _a7;return setValue(null!=(_a7=_LiveSyncSetting.env.editingSettings[key2])&&_a7)};this.invalidateValue();toggle.onChange((async value=>{await this.commitValue((null==opt?void 0:opt.invert)?!value:value)}));this.autoWireComponent(this.autoWiredComponent,conf,opt)}));return this}autoWireDropDown(key2,opt){const conf=this.autoWireSetting(key2,opt);this.addDropdown((dropdown=>{this.autoWiredComponent=dropdown;const setValue=wrapMemo((value=>{dropdown.setValue(value)}));dropdown.addOptions(opt.options);this.invalidateValue=()=>setValue(_LiveSyncSetting.env.editingSettings[key2]||"");this.invalidateValue();dropdown.onChange((async value=>{await this.commitValue(value)}));this.autoWireComponent(this.autoWiredComponent,conf,opt)}));return this}addApplyButton(keys3,text2){this.addButton((button=>{this.applyButtonComponent=button;this.watchDirtyKeys=unique([...keys3,...this.watchDirtyKeys]);button.setButtonText(null!=text2?text2:$msg("liveSyncSettings.btnApply"));button.onClick((async()=>{await _LiveSyncSetting.env.saveSettings(keys3);_LiveSyncSetting.env.reloadAllSettings()}));_LiveSyncSetting.env.requestUpdate()}));return this}addOnUpdate(func){this.updateHandlers.add(func);return this}_getComputedStatus(){let newConf={};for(const handler of this.updateHandlers)newConf={...newConf,...handler()};return newConf}_applyOnUpdateHandlers(){if(this.updateHandlers.size>0){const newConf=this._getComputedStatus(),keys3=Object.keys(newConf);for(const k2 of keys3)if(!(k2 in this.prevStatus)||this.prevStatus[k2]!=newConf[k2])switch(k2){case"visibility":this.settingEl.toggleClass("sls-setting-hidden",!newConf[k2]);this.prevStatus[k2]=newConf[k2];break;case"classes":break;case"disabled":this.setDisabled(newConf[k2]||!1);this.settingEl.toggleClass("sls-setting-disabled",newConf[k2]||!1);this.prevStatus[k2]=newConf[k2];break;case"isCta":{const component2=this.autoWiredComponent;component2 instanceof import_obsidian10.ButtonComponent&&(newConf[k2]?component2.setCta():component2.removeCta());this.prevStatus[k2]=newConf[k2]}break;case"isWarning":{const component2=this.autoWiredComponent;component2 instanceof import_obsidian10.ButtonComponent&&newConf[k2]&&component2.setWarning();this.prevStatus[k2]=newConf[k2]}break}}}_onUpdate(){var _a7,_b3;if(this.applyButtonComponent){const isDirty2=_LiveSyncSetting.env.isSomeDirty(this.watchDirtyKeys);this.applyButtonComponent.setDisabled(!isDirty2);isDirty2?this.applyButtonComponent.setCta():this.applyButtonComponent.removeCta()}this.selfKey&&!_LiveSyncSetting.env.isDirty(this.selfKey)&&this.invalidateValue&&this.invalidateValue();if(this.holdValue&&this.selfKey){const isDirty2=_LiveSyncSetting.env.isDirty(this.selfKey),alt=isDirty2?$msg("liveSyncSetting.originalValue",{value:String(null!=(_b3=null==(_a7=_LiveSyncSetting.env.initialSettings)?void 0:_a7[this.selfKey])?_b3:"")}):"";this.controlEl.toggleClass("sls-item-dirty",isDirty2);if(!this.hasPassword){this.nameEl.toggleClass("sls-item-dirty-help",isDirty2);this.setTooltip(alt,{delay:10,placement:"right"})}}this._applyOnUpdateHandlers()}};LocalDatabaseMaintenance=class extends LiveSyncCommands{$everyOnload(){return Promise.resolve(!0)}onunload(){}onload(){}async allChunks(includeDeleted=!1){const p4=this._progress("",LOG_LEVEL_NOTICE);p4.log("Retrieving chunks informations..");try{return await this.localDatabase.allChunks(includeDeleted)}finally{p4.done()}}get database(){return this.localDatabase.localDatabase}clearHash(){this.localDatabase.hashCaches.clear()}async confirm(title,message,affirmative="Yes",negative="No"){return await this.plugin.confirm.askSelectStringDialogue(message,[affirmative,negative],{title,defaultAction:affirmative})===affirmative}isAvailable(){if(!this.settings.doNotUseFixedRevisionForChunks){this._notice("Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.");return!1}if(this.settings.readChunksOnline){this._notice("Please disable 'Read chunks online' in settings to use Garbage Collection.");return!1}return!0}async resurrectChunks(){if(!this.isAvailable())return;const{used,existing}=await this.allChunks(!0),excessiveDeletions=[...existing].filter((([key2,e3])=>e3._deleted)).filter((([key2,e3])=>used.has(e3._id))).map((([key2,e3])=>e3)),completelyLostChunks=[],dataLostChunks=[...existing].filter((([key2,e3])=>e3._deleted&&""===e3.data)).map((([key2,e3])=>e3)).filter((e3=>used.has(e3._id)));for(const e3 of dataLostChunks){let resurrected=null;const availableRevs=((await this.database.get(e3._id,{rev:e3._rev,revs:!0,revs_info:!0,conflicts:!0}))._revs_info||[]).filter((e4=>"available"==e4.status)).map((e4=>e4.rev)).sort(((a2,b3)=>getNoFromRev(a2)-getNoFromRev(b3)));for(const rev3 of availableRevs){const revDoc=await this.database.get(e3._id,{rev:rev3});if("leaf"==revDoc.type&&""!==revDoc.data){resurrected=revDoc.data;break}}null!==resurrected?excessiveDeletions.push({...e3,data:resurrected,_deleted:!1}):completelyLostChunks.push(e3._id)}const resurrectChunks=excessiveDeletions.filter((e3=>""!==e3.data)).map((e3=>({...e3,_deleted:!1})));if(0==resurrectChunks.length){this._notice("No chunks are found to be resurrected.");return}const message=`We have following chunks that are deleted but still used in the database.\n\n- Completely lost chunks: ${completelyLostChunks.length}\n- Resurrectable chunks: ${resurrectChunks.length}\n\nDo you want to resurrect these chunks?`;if(await this.confirm("Resurrect Chunks",message,"Resurrect","Cancel")){const result=await this.database.bulkDocs(resurrectChunks);this.clearHash();const resurrectedChunks=result.filter((e3=>"ok"in e3)).map((e3=>e3.id));this._notice(`Resurrected chunks: ${resurrectedChunks.length} / ${resurrectChunks.length}`)}else this._notice("Resurrect operation is cancelled.")}async commitFileDeletion(){if(!this.isAvailable())return;const p4=this._progress("",LOG_LEVEL_NOTICE);p4.log("Searching for deleted files..");const deletedDocs=(await this.database.allDocs({include_docs:!0})).rows.filter((e3=>{var _a7,_b3,_c2;return("newnote"==(null==(_a7=e3.doc)?void 0:_a7.type)||"plain"==(null==(_b3=e3.doc)?void 0:_b3.type))&&(null==(_c2=e3.doc)?void 0:_c2.deleted)}));if(0==deletedDocs.length){p4.done("No deleted files found.");return}p4.log(`Found ${deletedDocs.length} deleted files.`);const message=`We have following files that are marked as deleted.\n\n- Deleted files: ${deletedDocs.length}\n\nAre you sure to delete these files permanently?\n\nNote: **Make sure to synchronise all devices before deletion.**\n\n> [!Note]\n> This operation affects the database permanently. Deleted files will not be recovered after this operation.\n> And, the chunks that are used in the deleted files will be ready for compaction.`,deletingDocs=deletedDocs.map((e3=>({...e3.doc,_deleted:!0})));if(await this.confirm("Delete Files",message,"Delete","Cancel")){const result=await this.database.bulkDocs(deletingDocs);this.clearHash();p4.done(`Deleted ${result.filter((e3=>"ok"in e3)).length} / ${deletedDocs.length} files.`)}else p4.done("Deletion operation is cancelled.")}async commitChunkDeletion(){if(!this.isAvailable())return;const{existing}=await this.allChunks(!0),deletedChunks=[...existing].filter((([key2,e3])=>e3._deleted&&""!==e3.data)).map((([key2,e3])=>e3)),deletedNotVacantChunks=deletedChunks.map((e3=>({...e3,data:"",_deleted:!0}))),humanSize=sizeToHumanReadable2(deletedChunks.reduce(((acc,e3)=>acc+e3.data.length),0)),message=`We have following chunks that are marked as deleted.\n\n- Deleted chunks: ${deletedNotVacantChunks.length} (${humanSize})\n\nAre you sure to delete these chunks permanently?\n\nNote: **Make sure to synchronise all devices before deletion.**\n\n> [!Note]\n> This operation finally reduces the capacity of the remote.`;if(0!=deletedNotVacantChunks.length)if(await this.confirm("Delete Chunks",message,"Delete","Cancel")){const result=await this.database.bulkDocs(deletedNotVacantChunks);this.clearHash();this._notice(`Deleted chunks: ${result.filter((e3=>"ok"in e3)).length} / ${deletedNotVacantChunks.length}`)}else this._notice("Deletion operation is cancelled.");else this._notice("No deleted chunks found.")}async markUnusedChunks(){if(!this.isAvailable())return;const{used,existing}=await this.allChunks(),deleteChunks=[...existing].filter((([key2,e3])=>!used.has(e3._id))).map((([key2,e3])=>e3)).map((e3=>({...e3,_deleted:!0}))),humanSize=sizeToHumanReadable2(deleteChunks.reduce(((acc,e3)=>acc+e3.data.length),0));if(0==deleteChunks.length){this._notice("No unused chunks found.");return}const message=`We have following chunks that are not used from any files.\n\n- Chunks: ${deleteChunks.length} (${humanSize})\n\nAre you sure to mark these chunks to be deleted?\n\nNote: **Make sure to synchronise all devices before deletion.**\n\n> [!Note]\n> This operation will not reduces the capacity of the remote until permanent deletion.`;if(await this.confirm("Mark unused chunks",message,"Mark","Cancel")){const result=await this.database.bulkDocs(deleteChunks);this.clearHash();this._notice(`Marked chunks: ${result.filter((e3=>"ok"in e3)).length} / ${deleteChunks.length}`)}}async removeUnusedChunks(){const{used,existing}=await this.allChunks(),unusedChunks=[...existing].filter((([key2,e3])=>!used.has(e3._id))).map((([key2,e3])=>e3)),deleteChunks=unusedChunks.map((e3=>({...e3,data:"",_deleted:!0}))),humanSize=sizeToHumanReadable2(unusedChunks.reduce(((acc,e3)=>acc+e3.data.length),0));if(0==deleteChunks.length){this._notice("No unused chunks found.");return}const message=`We have following chunks that are not used from any files.\n\n- Chunks: ${deleteChunks.length} (${humanSize})\n\nAre you sure to delete these chunks?\n\nNote: **Make sure to synchronise all devices before deletion.**\n\n> [!Note]\n> Chunks referenced from deleted files are not deleted. Please run "Commit File Deletion" before this operation.`;if(await this.confirm("Mark unused chunks",message,"Mark","Cancel")){const result=await this.database.bulkDocs(deleteChunks);this._notice(`Deleted chunks: ${result.filter((e3=>"ok"in e3)).length} / ${deleteChunks.length}`);this.clearHash()}}};import_obsidian11=require("obsidian");toc=new Set;stubs={};ObsidianLiveSyncSettingTab=class extends import_obsidian.PluginSettingTab{constructor(app2,plugin3){super(app2,plugin3);this.selectedScreen="";this.settingComponents=[];this.controlledElementFunc=[];this.onSavedHandlers=[];this.inWizard=!1;this.isShown=!1;this.screenElements={};this.plugin=plugin3;LiveSyncSetting.env=this;eventHub.onEvent("reload-setting-tab",(()=>{this.requestReload()}))}get editingSettings(){this._editingSettings||this.reloadAllSettings();return this._editingSettings}set editingSettings(v2){this._editingSettings||this.reloadAllSettings();this._editingSettings=v2}applySetting(keys3){for(const k2 of keys3)if(this.isDirty(k2)&&!(k2 in OnDialogSettingsDefault)){this.plugin.settings[k2]=this.editingSettings[k2];this.initialSettings[k2]=this.plugin.settings[k2]}keys3.forEach((e3=>this.refreshSetting(e3)))}applyAllSettings(){var _a7;const changedKeys=Object.keys(null!=(_a7=this.editingSettings)?_a7:{}).filter((e3=>this.isDirty(e3)));this.applySetting(changedKeys);this.reloadAllSettings()}async saveLocalSetting(key2){var _a7,_b3,_c2,_d2;if("configPassphrase"==key2){localStorage.setItem("ls-setting-passphrase",null!=(_b3=null==(_a7=this.editingSettings)?void 0:_a7[key2])?_b3:"");return await Promise.resolve()}if("deviceAndVaultName"==key2){this.plugin.$$setDeviceAndVaultName(null!=(_d2=null==(_c2=this.editingSettings)?void 0:_c2[key2])?_d2:"");this.plugin.$$saveDeviceAndVaultName();return await Promise.resolve()}}async saveSettings(keys3){let hasChanged=!1;const appliedKeys=[];for(const k2 of keys3)if(this.isDirty(k2)){appliedKeys.push(k2);if(k2 in OnDialogSettingsDefault){await this.saveLocalSetting(k2);this.initialSettings[k2]=this.editingSettings[k2]}else{this.plugin.settings[k2]=this.editingSettings[k2];this.initialSettings[k2]=this.plugin.settings[k2];hasChanged=!0}}hasChanged&&await this.plugin.saveSettings();const handlers2=this.onSavedHandlers.filter((e3=>-1!==appliedKeys.indexOf(e3.key))).map((e3=>e3.handler(this.editingSettings[e3.key])));await Promise.all(handlers2);keys3.forEach((e3=>this.refreshSetting(e3)))}async saveAllDirtySettings(){var _a7;const changedKeys=Object.keys(null!=(_a7=this.editingSettings)?_a7:{}).filter((e3=>this.isDirty(e3)));await this.saveSettings(changedKeys);this.reloadAllSettings()}requestUpdate(){scheduleTask("update-setting",10,(()=>{for(const setting of this.settingComponents)setting._onUpdate();for(const func of this.controlledElementFunc)func()}))}reloadAllLocalSettings(){const ret={...OnDialogSettingsDefault};ret.configPassphrase=localStorage.getItem("ls-setting-passphrase")||"";ret.preset="";ret.deviceAndVaultName=this.plugin.$$getDeviceAndVaultName();return ret}computeAllLocalSettings(){var _a7,_b3;return{syncMode:(null==(_a7=this.editingSettings)?void 0:_a7.liveSync)?"LIVESYNC":(null==(_b3=this.editingSettings)?void 0:_b3.periodicReplication)?"PERIODIC":"ONEVENTS"}}reloadAllSettings(skipUpdate=!1){const localSetting=this.reloadAllLocalSettings();this._editingSettings={...this.plugin.settings,...localSetting};this._editingSettings={...this.editingSettings,...this.computeAllLocalSettings()};this.initialSettings={...this.editingSettings};skipUpdate||this.requestUpdate()}refreshSetting(key2){const localSetting=this.reloadAllLocalSettings();if(key2 in this.plugin.settings)if(key2 in localSetting){this.initialSettings[key2]=localSetting[key2];this.editingSettings[key2]=localSetting[key2]}else{this.initialSettings[key2]=this.plugin.settings[key2];this.editingSettings[key2]=this.initialSettings[key2]}this.editingSettings={...this.editingSettings,...this.computeAllLocalSettings()};this.requestUpdate()}isDirty(key2){var _a7;return isObjectDifferent(this.editingSettings[key2],null==(_a7=this.initialSettings)?void 0:_a7[key2])}isSomeDirty(keys3){return keys3.some((e3=>this.isDirty(e3)))}isConfiguredAs(key2,value){return!!this.editingSettings&&this.editingSettings[key2]==value}async testConnection(settingOverride={}){const trialSetting={...this.editingSettings,...settingOverride},replicator=await this.plugin.$anyNewReplicator(trialSetting);await replicator.tryConnectRemote(trialSetting);const status=await replicator.getRemoteStatus(trialSetting);status&&status.estimatedSize&&Logger($msg("obsidianLiveSyncSettingTab.logEstimatedSize",{size:sizeToHumanReadable2(status.estimatedSize)}),LOG_LEVEL_NOTICE)}closeSetting(){this.plugin.app.setting.close()}handleElement(element2,func){const updateFunc=((element3,func2)=>{const prev={};return()=>{const newValue=func2(),keys3=Object.keys(newValue);for(const k2 of keys3)if(prev[k2]!==newValue[k2]){"visibility"==k2&&element3.toggleClass("sls-setting-hidden",!newValue[k2]);prev[k2]=newValue[k2]}}})(element2,func);this.controlledElementFunc.push(updateFunc);updateFunc()}createEl(el,tag2,o2,callback,func){const element2=el.createEl(tag2,o2,callback);func&&this.handleElement(element2,func);return element2}addEl(el,tag2,o2,callback,func){const elm=this.createEl(el,tag2,o2,callback,func);return Promise.resolve(elm)}addOnSaved(key2,func){this.onSavedHandlers.push({key:key2,handler:func})}resetEditingSettings(){this._editingSettings=void 0;this.initialSettings=void 0}hide(){this.isShown=!1}requestReload(){var _a7;if(this.isShown){const newConf=this.plugin.settings,keys3=Object.keys(newConf);let hasLoaded=!1;for(const k2 of keys3)if("deviceAndVaultName"!==k2&&isObjectDifferent(newConf[k2],null==(_a7=this.initialSettings)?void 0:_a7[k2]))if(this.isDirty(k2))this.plugin.confirm.askInPopup(`config-reloaded-${k2}`,$msg("obsidianLiveSyncSettingTab.msgSettingModified",{setting:getConfName(k2)}),(anchor=>{anchor.text=$msg("obsidianLiveSyncSettingTab.optionHere");anchor.addEventListener("click",(()=>{this.refreshSetting(k2);this.display()}))}));else{this.refreshSetting(k2);hasLoaded=!0}hasLoaded?this.display():this.requestUpdate()}else this.reloadAllSettings(!0)}changeDisplay(screen){for(const k2 in this.screenElements)k2==screen?this.screenElements[k2].forEach((element2=>element2.removeClass("setting-collapsed"))):this.screenElements[k2].forEach((element2=>element2.addClass("setting-collapsed")));this.menuEl&&this.menuEl.querySelectorAll(".sls-setting-label").forEach((element2=>{if(element2.hasClass(`c-${screen}`)){element2.addClass("selected");element2.querySelector("input[type=radio]").checked=!0}else{element2.removeClass("selected");element2.querySelector("input[type=radio]").checked=!1}}));this.selectedScreen=screen}async enableMinimalSetup(){this.editingSettings.liveSync=!1;this.editingSettings.periodicReplication=!1;this.editingSettings.syncOnSave=!1;this.editingSettings.syncOnEditorSave=!1;this.editingSettings.syncOnStart=!1;this.editingSettings.syncOnFileOpen=!1;this.editingSettings.syncAfterMerge=!1;this.plugin.replicator.closeReplication();await this.saveAllDirtySettings();this.containerEl.addClass("isWizard");this.inWizard=!0;this.changeDisplay("20")}display(){const changeDisplay=this.changeDisplay.bind(this),{containerEl}=this;this.settingComponents.length=0;this.controlledElementFunc.length=0;this.onSavedHandlers.length=0;this.screenElements={};null!=this._editingSettings&&null!=this.initialSettings||this.reloadAllSettings();if(void 0===this.editingSettings||null==this.initialSettings)return;this.isShown=!0;containerEl.empty();containerEl.addClass("sls-setting");containerEl.removeClass("isWizard");const setStyle=(el,styleHead,condition)=>{if(condition()){el.addClass(`${styleHead}-enabled`);el.removeClass(`${styleHead}-disabled`)}else{el.addClass(`${styleHead}-disabled`);el.removeClass(`${styleHead}-enabled`)}};setStyle(containerEl,"menu-setting-poweruser",(()=>this.isConfiguredAs("usePowerUserMode",!0)));setStyle(containerEl,"menu-setting-advanced",(()=>this.isConfiguredAs("useAdvancedMode",!0)));setStyle(containerEl,"menu-setting-edgecase",(()=>this.isConfiguredAs("useEdgeCaseMode",!0)));const addScreenElement=(key2,element2)=>{key2 in this.screenElements||(this.screenElements[key2]=[]);this.screenElements[key2].push(element2)},menuWrapper=this.createEl(containerEl,"div",{cls:"sls-setting-menu-wrapper"});this.menuEl&&this.menuEl.remove();this.menuEl=menuWrapper.createDiv("");this.menuEl.addClass("sls-setting-menu");const menuTabs=this.menuEl.querySelectorAll(".sls-setting-label"),selectPane=event2=>{const target=event2.target;if("INPUT"==target.tagName){const value=target.getAttribute("value");value&&this.selectedScreen!=value&&changeDisplay(value)}},isNeedRebuildLocal=()=>this.isSomeDirty(["useIndexedDBAdapter","doNotUseFixedRevisionForChunks","handleFilenameCaseSensitive","passphrase","useDynamicIterationCount","usePathObfuscation","encrypt"]),isNeedRebuildRemote=()=>this.isSomeDirty(["doNotUseFixedRevisionForChunks","handleFilenameCaseSensitive","passphrase","useDynamicIterationCount","usePathObfuscation","encrypt"]),confirmRebuild=async()=>{if(!await isPassphraseValid()){Logger("Passphrase is not valid, please fix it.",LOG_LEVEL_NOTICE);return}const OPTION_FETCH=$msg("obsidianLiveSyncSettingTab.optionFetchFromRemote"),OPTION_REBUILD_BOTH=$msg("obsidianLiveSyncSettingTab.optionRebuildBoth"),OPTION_ONLY_SETTING=$msg("obsidianLiveSyncSettingTab.optionSaveOnlySettings"),OPTION_CANCEL=$msg("obsidianLiveSyncSettingTab.optionCancel"),title=$msg("obsidianLiveSyncSettingTab.titleRebuildRequired"),note=$msg("obsidianLiveSyncSettingTab.msgRebuildRequired",{OPTION_REBUILD_BOTH,OPTION_FETCH,OPTION_ONLY_SETTING}),buttons=[OPTION_FETCH,OPTION_REBUILD_BOTH,OPTION_ONLY_SETTING,OPTION_CANCEL],result=await confirmWithMessage(this.plugin,title,note,buttons,OPTION_CANCEL,0);if(result!=OPTION_CANCEL&&(result!=OPTION_FETCH||await checkWorkingPassphrase()||"yes"==await this.plugin.confirm.askYesNoDialog($msg("obsidianLiveSyncSettingTab.msgAreYouSureProceed"),{defaultOption:"No"}))){this.editingSettings.encrypt||(this.editingSettings.passphrase="");await this.saveAllDirtySettings();await this.applyAllSettings();if(result==OPTION_FETCH){await this.plugin.storageAccess.writeFileAuto(FLAGMD_REDFLAG3_HR,"");this.plugin.$$scheduleAppReload();this.closeSetting()}else if(result==OPTION_REBUILD_BOTH){await this.plugin.storageAccess.writeFileAuto(FLAGMD_REDFLAG2_HR,"");this.plugin.$$scheduleAppReload();this.closeSetting()}else result==OPTION_ONLY_SETTING&&await this.plugin.saveSettings()}};this.createEl(menuWrapper,"div",{cls:"sls-setting-menu-buttons"},(el=>{el.addClass("wizardHidden");el.createEl("label",{text:$msg("obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied")});this.addEl(el,"button",{text:$msg("obsidianLiveSyncSettingTab.optionApply"),cls:"mod-warning"},(buttonEl=>{buttonEl.addEventListener("click",(()=>fireAndForget((async()=>await confirmRebuild()))))}))}),visibleOnly((()=>isNeedRebuildLocal()||isNeedRebuildRemote())));const setLevelClass=(el,level)=>{switch(level){case LEVEL_POWER_USER:el.addClass("sls-setting-poweruser");break;case LEVEL_ADVANCED:el.addClass("sls-setting-advanced");break;case LEVEL_EDGE_CASE:el.addClass("sls-setting-edgecase");break;default:}};let paneNo=0;const addPane=(parentEl,title,icon,order,wizardHidden,level)=>{const el=this.createEl(parentEl,"div",{text:""});{const mdTitle=`${paneNo++}. ${title}${getLevelStr(null!=level?level:"")}`;el.setAttribute("data-pane",mdTitle);toc.add(`| ${icon} | [${mdTitle}](#${mdTitle.toLowerCase().replace(/ /g,"-").replace(/[^\w\s-]/g,"")}) | `)}setLevelClass(el,level);el.createEl("h3",{text:title,cls:"sls-setting-pane-title"});this.menuEl&&this.menuEl.createEl("label",{cls:`sls-setting-label c-${order} ${wizardHidden?"wizardHidden":""}`},(el2=>{setLevelClass(el2,level);const inputEl=el2.createEl("input",{type:"radio",name:"disp",value:`${order}`,cls:"sls-setting-tab"});el2.createEl("div",{cls:"sls-setting-menu-btn",text:icon,title});inputEl.addEventListener("change",selectPane);inputEl.addEventListener("click",selectPane)}));addScreenElement(`${order}`,el);return Promise.resolve(el)},panelNoMap={},addPanel=(parentEl,title,callback,func,level)=>{const el=this.createEl(parentEl,"div",{text:""},callback,func);{const paneNo2=findAttrFromParent(parentEl,"data-pane");paneNo2 in panelNoMap||(panelNoMap[paneNo2]=0);panelNoMap[paneNo2]+=1;const panelNo=panelNoMap[paneNo2];el.setAttribute("data-panel",`${panelNo}. ${title}${getLevelStr(null!=level?level:"")}`)}setLevelClass(el,level);this.createEl(el,"h4",{text:title,cls:"sls-setting-panel-title"});return Promise.resolve(el)};menuTabs.forEach((element2=>{const e3=element2.querySelector(".sls-setting-tab");e3&&e3.addEventListener("change",(event2=>{menuTabs.forEach((element3=>element3.removeClass("selected")));this.changeDisplay(event2.currentTarget.value);element2.addClass("selected")}))}));const lastVersion=~~(versionNumberString2Number("0.24.18")/1e3),isAnySyncEnabled=()=>{var _a7,_b3,_c2,_d2;return!(this.isConfiguredAs("isConfigured",!1)||!this.isConfiguredAs("liveSync",!0)&&!this.isConfiguredAs("periodicReplication",!0)&&!this.isConfiguredAs("syncOnFileOpen",!0)&&!this.isConfiguredAs("syncOnSave",!0)&&!this.isConfiguredAs("syncOnEditorSave",!0)&&!this.isConfiguredAs("syncOnStart",!0)&&!this.isConfiguredAs("syncAfterMerge",!0)&&!this.isConfiguredAs("syncOnFileOpen",!0)&&"CONNECTED"!=(null==(_b3=null==(_a7=this.plugin)?void 0:_a7.replicator)?void 0:_b3.syncStatus)&&"PAUSED"!=(null==(_d2=null==(_c2=this.plugin)?void 0:_c2.replicator)?void 0:_d2.syncStatus))},enableOnlySyncDisabled=enableOnly((()=>!isAnySyncEnabled())),onlyOnP2POrCouchDB=()=>({visibility:this.isConfiguredAs("remoteType","ONLY_P2P")||this.isConfiguredAs("remoteType","")}),onlyOnCouchDB=()=>({visibility:this.isConfiguredAs("remoteType","")}),onlyOnMinIO=()=>({visibility:this.isConfiguredAs("remoteType","MINIO")}),onlyOnOnlyP2P=()=>({visibility:this.isConfiguredAs("remoteType","ONLY_P2P")}),onlyOnCouchDBOrMinIO=()=>({visibility:this.isConfiguredAs("remoteType","")||this.isConfiguredAs("remoteType","MINIO")}),checkWorkingPassphrase=async()=>{if("MINIO"==this.editingSettings.remoteType)return!0;const settingForCheck={...this.editingSettings},replicator=this.plugin.$anyNewReplicator(settingForCheck);if(!(replicator instanceof LiveSyncCouchDBReplicator))return!0;const db=await replicator.connectRemoteCouchDBWithSetting(settingForCheck,this.plugin.$$isMobile(),!0);if("string"==typeof db){Logger($msg("obsidianLiveSyncSettingTab.logCheckPassphraseFailed",{db}),LOG_LEVEL_NOTICE);return!1}if(await checkSyncInfo(db.db))return!0;Logger($msg("obsidianLiveSyncSettingTab.logPassphraseNotCompatible"),LOG_LEVEL_NOTICE);return!1},isPassphraseValid=async()=>{if(this.editingSettings.encrypt&&""==this.editingSettings.passphrase){Logger($msg("obsidianLiveSyncSettingTab.logEncryptionNoPassphrase"),LOG_LEVEL_NOTICE);return!1}if(this.editingSettings.encrypt&&!await testCrypt()){Logger($msg("obsidianLiveSyncSettingTab.logEncryptionNoSupport"),LOG_LEVEL_NOTICE);return!1}return!0},rebuildDB=async method=>{if(this.editingSettings.encrypt&&""==this.editingSettings.passphrase)Logger($msg("obsidianLiveSyncSettingTab.logEncryptionNoPassphrase"),LOG_LEVEL_NOTICE);else if(!this.editingSettings.encrypt||await testCrypt()){this.editingSettings.encrypt||(this.editingSettings.passphrase="");this.applyAllSettings();await this.plugin.$allSuspendAllSync();await this.plugin.$allSuspendExtraSync();this.reloadAllSettings();this.editingSettings.isConfigured=!0;Logger($msg("obsidianLiveSyncSettingTab.logRebuildNote"),LOG_LEVEL_NOTICE);await this.saveAllDirtySettings();this.closeSetting();await delay(2e3);await this.plugin.rebuilder.$performRebuildDB(method)}else Logger($msg("obsidianLiveSyncSettingTab.logEncryptionNoSupport"),LOG_LEVEL_NOTICE)};addPane(containerEl,$msg("obsidianLiveSyncSettingTab.panelChangeLog"),"💬",100,!1).then((paneEl=>{var _a7,_b3;const informationDivEl=this.createEl(paneEl,"div",{text:""}),tmpDiv=createDiv();tmpDiv.addClass("op-warn-info");tmpDiv.innerHTML=`<p>${$msg("obsidianLiveSyncSettingTab.msgNewVersionNote")}</p><button>${$msg("obsidianLiveSyncSettingTab.optionOkReadEverything")}</button>`;if(lastVersion>((null==(_a7=this.editingSettings)?void 0:_a7.lastReadUpdates)||0)){const informationButtonDiv=informationDivEl.appendChild(tmpDiv);null==(_b3=informationButtonDiv.querySelector("button"))||_b3.addEventListener("click",(()=>{fireAndForget((async()=>{this.editingSettings.lastReadUpdates=lastVersion;await this.saveAllDirtySettings();informationButtonDiv.remove()}))}))}fireAndForget((()=>import_obsidian.MarkdownRenderer.render(this.plugin.app,"## 0.24.11\n\nPeer-to-peer synchronisation has been implemented!\n\nUntil now, I have not provided a synchronisation server. More people may not even know that I have shut down the test server. I confess that this is a bit repetitive, but I confess it is a cautionary tale. This is out of a sense of self-discipline that someone has occurred who could see your data. Even if the 'someone' is me. I should not be unaware of its superiority, even though well-meaning and am a servant of all. (Half joking, but also serious).\nHowever, now I can provide you with a signalling server. Because, to the best of my knowledge, it is only the network that is connected to your device.\nAlso, this signalling server is just a Nostr relay, not my implementation. You can run your implementation, which you consider trustworthy, on a trustworthy server. You do not even have to trust me. Mate, it is great, isn't it? For your information, strfry is running on my signalling server.\n\nNevertheless, that being said, to be more honest, I still have not decided what to do with this signalling server if too much traffic comes in.\n\nNote: Already you have noticed this, but let me mention it again, this is a significantly large update. If you have noticed anything, please let me know. I will try to fix it as soon as possible (Some address is on my [profile](https://github.com/vrtmrz)).\n\n## 0.24.18\n\n### Fixed\n\n- Now no chunk creation errors will be raised after switching `Compute revisions for chunks`.\n- Some invisible file can be handled correctly (e.g., `writing-goals-history.csv`).\n- Fetching configuration from the server is now saves the configuration immediately (if we are not in the wizard).\n\n### Improved\n\n- Mismatched configuration dialogue is now more informative, and rewritten to more user-friendly.\n- Applying configuration mismatch is now without rebuilding (at our own risks).\n- Now, rebuilding is decided more fine grained.\n\n### Improved internally\n\n- Translations can be nested. i.e., task:`Some procedure`, check: `%{task} checking`, checkfailed: `%{check} failed` produces `Some procedure checking failed`.\n - Max to 10 levels of nesting\n\n\n## 0.24.17\n\nConfession. I got the default values wrong. So scary and sorry.\n\n### Behaviour and default changed\n\n- **NOW INDEED AND ACTUALLY** `Compute revisions for chunks` are backed into enabled again. it is necessary for garbage collection of chunks.\n - As far as existing users are concerned, this will not automatically change, but the Doctor will inform us.\n\n## 0.24.16\n\n### Improved\n\n#### Peer-to-Peer\n\n- Now peer-to-peer synchronisation checks the settings are compatible with each other.\n - No longer unexpected database broken, phew.\n- Peer-to-peer synchronisation now handles the platform and detects pseudo-clients.\n - Pseudo clients will not decrypt/encrypt anything, just relay the data. Hence, always settings are not compatible. Therefore, we have to accept the incompatibility for pseudo clients.\n\n#### General\n\n- New migration method has been implemented, that called `Doctor`.\n\n - `Doctor` checks the difference between the ideal and actual values and encourages corrective action. To facilitate our decision, the reasons for this and the recommendations are also presented.\n - This can be used not only during migration. We can invoke the doctor from the settings for trouble-shooting.\n\n- The minimum interval for replication to be caused when an event occurs can now be configurable.\n- Some detail note has been added and change nuance about the `Report` in the setting dialogue, which had less informative.\n\n### Behaviour and default changed\n\n- `Compute revisions for chunks` are backed into enabled again. it is necessary for garbage collection of chunks.\n - As far as existing users are concerned, this will not automatically change, but the Doctor will inform us.\n\n### Refactored\n\n- Platform specific codes are more separated. No longer `node` modules were used in the browser and Obsidian.\n\n## 0.24.15\n\n### Fixed\n\n- Now, even without WeakRef, Polyfill is used and the whole thing works without error. However, if you can switch WebView Engine, it is recommended to switch to a WebView Engine that supports WeakRef.\n\n## 0.24.14\n\n### Fixed\n\n- Resolving conflicts of JSON files (and sensibly merging them) is now working fine, again!\n - And, failure logs are more informative.\n- More robust to release the event listeners on unwatching the local database.\n\n### Refactored\n\n- JSON file conflict resolution dialogue has been rewritten into svelte v5.\n- Upgrade eslint.\n- Remove unnecessary pragma comments for eslint.\n\n## 0.24.13\n\nSorry for the lack of replies. The ones that were not good are popping up, so I am just going to go ahead and get this one... However, they realised that refactoring and restructuring is about clarifying the problem. Your patience and understanding is much appreciated.\n\n### Fixed\n\n#### General Replication\n\n- No longer unexpected errors occur when the replication is stopped during for some reason (e.g., network disconnection).\n\n#### Peer-to-Peer Synchronisation\n\n- Set-up process will not receive data from unexpected sources.\n- No longer resource leaks while enabling the `broadcasting changes`\n- Logs are less verbose.\n- Received data is now correctly dispatched to other devices.\n- `Timeout` error now more informative.\n- No longer timeout error occurs for reporting the progress to other devices.\n- Decision dialogues for the same thing are not shown multiply at the same time anymore.\n- Disconnection of the peer-to-peer synchronisation is now more robust and less error-prone.\n\n#### Webpeer\n\n- Now we can toggle Peers' configuration.\n\n### Refactored\n\n- Cross-platform compatibility layer has been improved.\n- Common events are moved to the common library.\n- Displaying replication status of the peer-to-peer synchronisation is separated from the main-log-logic.\n- Some file names have been changed to be more consistent.\n\n## 0.24.12\n\nI created a SPA called [webpeer](https://github.com/vrtmrz/livesync-commonlib/tree/main/apps/webpeer) (well, right... I will think of a name again), which replaces the server when using Peer-to-Peer synchronisation. This is a pseudo-client that appears to other devices as if it were one of the clients. . As with the client, it receives and sends data without storing it as a file.\nAnd, this is just a single web page, without any server-side code. It is a static web page that can be hosted on any static web server, such as GitHub Pages, Netlify, or Vercel. All you have to do is to open the page and enter several items, and leave it open.\n\n### Fixed\n\n- No longer unnecessary acknowledgements are sent when starting peer-to-peer synchronisation.\n\n### Refactored\n\n- Platform impedance-matching-layer has been improved.\n - And you can see the actual usage of this on [webpeer](https://github.com/vrtmrz/livesync-commonlib/tree/main/apps/webpeer) that a pseudo client for peer-to-peer synchronisation.\n- Some UIs have been got isomorphic among Obsidian and web applications (for `webpeer`).\n\n## 0.24.11\n\n### Improved\n\n- New Translation: `es` (Spanish) by @zeedif (Thank you so much)!\n- Now all of messages can be selectable and copyable, also on the iPhone, iPad, and Android devices. Now we can copy or share the messages easily.\n\n### New Feature\n\n- Peer-to-Peer Synchronisation has been implemented!\n - This feature is still in early beta, and it is recommended to use it with caution.\n - However, it is a significant step towards the self-hosting concept. It is now possible to synchronise your data without using any remote database or storage. It is a direct connection between your devices.\n - Note: We should keep the device online to synchronise the data. It is not a background synchronisation. Also it needs a signalling server to establish the connection. But, the signalling server is used only for establishing the connection, and it does not store any data.\n\n### Fixed\n\n- No longer memory or resource leaks when the plug-in is disabled.\n- Now deleted chunks are correctly detected on conflict resolution, and we are guided to resurrect them.\n- Hanging issue during the initial synchronisation has been fixed.\n- Some unnecessary logs have been removed.\n- Now all modal dialogues are correctly closed when the plug-in is disabled.\n\n### Refactor\n\n- Several interfaces have been moved to the separated library.\n- Translations have been moved to each language file, and during the build, they are merged into one file.\n- Non-mobile friendly code has been removed and replaced with the safer code.\n - (Now a days, mostly server-side engine can use webcrypto, so it will be rewritten in the future more).\n- Started writing Platform impedance-matching-layer.\n- Svelte has been updated to v5.\n- Some function have got more robust type definitions.\n- Terser optimisation has slightly improved.\n- During the build, analysis meta-file of the bundled codes will be generated.\n\nOlder notes are in [updates_old.md](https://github.com/vrtmrz/obsidian-livesync/blob/main/updates_old.md).\n",informationDivEl,"/",this.plugin)))}));addPane(containerEl,$msg("obsidianLiveSyncSettingTab.panelSetup"),"🧙♂️",110,!1).then((paneEl=>{addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleQuickSetup")).then((paneEl2=>{new LiveSyncSetting(paneEl2).setName($msg("obsidianLiveSyncSettingTab.nameConnectSetupURI")).setDesc($msg("obsidianLiveSyncSettingTab.descConnectSetupURI")).addButton((text2=>{text2.setButtonText($msg("obsidianLiveSyncSettingTab.btnUse")).onClick((()=>{this.closeSetting();eventHub.emitEvent("request-open-setup-uri")}))}));new LiveSyncSetting(paneEl2).setName($msg("obsidianLiveSyncSettingTab.nameManualSetup")).setDesc($msg("obsidianLiveSyncSettingTab.descManualSetup")).addButton((text2=>{text2.setButtonText($msg("obsidianLiveSyncSettingTab.btnStart")).onClick((async()=>{await this.enableMinimalSetup()}))}));new LiveSyncSetting(paneEl2).setName($msg("obsidianLiveSyncSettingTab.nameEnableLiveSync")).setDesc($msg("obsidianLiveSyncSettingTab.descEnableLiveSync")).addOnUpdate(visibleOnly((()=>!this.isConfiguredAs("isConfigured",!0)))).addButton((text2=>{text2.setButtonText($msg("obsidianLiveSyncSettingTab.btnEnable")).onClick((async()=>{this.editingSettings.isConfigured=!0;await this.saveAllDirtySettings();this.plugin.$$askReload()}))}))}));addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleSetupOtherDevices"),void 0,visibleOnly((()=>this.isConfiguredAs("isConfigured",!0)))).then((paneEl2=>{new LiveSyncSetting(paneEl2).setName($msg("obsidianLiveSyncSettingTab.nameCopySetupURI")).setDesc($msg("obsidianLiveSyncSettingTab.descCopySetupURI")).addButton((text2=>{text2.setButtonText($msg("obsidianLiveSyncSettingTab.btnCopy")).onClick((()=>{eventHub.emitEvent("request-copy-setup-uri")}))}))}));addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleReset")).then((paneEl2=>{new LiveSyncSetting(paneEl2).setName($msg("obsidianLiveSyncSettingTab.nameDiscardSettings")).addButton((text2=>{text2.setButtonText($msg("obsidianLiveSyncSettingTab.btnDiscard")).onClick((async()=>{if("yes"==await this.plugin.confirm.askYesNoDialog($msg("obsidianLiveSyncSettingTab.msgDiscardConfirmation"),{defaultOption:"No"})){this.editingSettings={...this.editingSettings,...DEFAULT_SETTINGS};await this.saveAllDirtySettings();this.plugin.settings={...DEFAULT_SETTINGS};await this.plugin.$$saveSettingData();await this.plugin.$$resetLocalDatabase();this.plugin.$$askReload()}})).setWarning()})).addOnUpdate(visibleOnly((()=>this.isConfiguredAs("isConfigured",!0))))}));addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleExtraFeatures")).then((paneEl2=>{new LiveSyncSetting(paneEl2).autoWireToggle("useAdvancedMode");new LiveSyncSetting(paneEl2).autoWireToggle("usePowerUserMode");new LiveSyncSetting(paneEl2).autoWireToggle("useEdgeCaseMode");this.addOnSaved("useAdvancedMode",(()=>this.display()));this.addOnSaved("usePowerUserMode",(()=>this.display()));this.addOnSaved("useEdgeCaseMode",(()=>this.display()))}));addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleOnlineTips")).then((paneEl2=>{const repo="vrtmrz/obsidian-livesync",topPath=$msg("obsidianLiveSyncSettingTab.linkTroubleshooting"),rawRepoURI=`https://raw.githubusercontent.com/${repo}/main`;this.createEl(paneEl2,"div","",(el=>el.innerHTML=`<a href='https://github.com/${repo}/blob/main${topPath}' target="_blank">${$msg("obsidianLiveSyncSettingTab.linkOpenInBrowser")}</a>`));const troubleShootEl=this.createEl(paneEl2,"div",{text:"",cls:"sls-troubleshoot-preview"}),loadMarkdownPage=async(pathAll,basePathParam="")=>{var _a7,_b3;troubleShootEl.style.minHeight=troubleShootEl.clientHeight+"px";troubleShootEl.empty();const directoryArr=(pathAll.startsWith("/")?pathAll:`${basePathParam}/${pathAll}`).split("/"),filename=directoryArr.pop(),basePath=directoryArr.join("/");let remoteTroubleShootMDSrc="";try{remoteTroubleShootMDSrc=await(0,import_obsidian11.request)(`${rawRepoURI}${basePath}/${filename}`)}catch(ex){remoteTroubleShootMDSrc=`${$msg("obsidianLiveSyncSettingTab.logErrorOccurred")}\n${ex.toString()}`}const remoteTroubleShootMD=remoteTroubleShootMDSrc.replace(/\((.*?(.png)|(.jpg))\)/g,`(${rawRepoURI}${basePath}/$1)`);await import_obsidian.MarkdownRenderer.render(this.plugin.app,`<a class='sls-troubleshoot-anchor'></a> [${$msg("obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting")}](${topPath}) [${$msg("obsidianLiveSyncSettingTab.linkPageTop")}](${filename})\n\n${remoteTroubleShootMD}`,troubleShootEl,`${rawRepoURI}`,this.plugin);null==(_b3=null==(_a7=troubleShootEl.querySelector(".sls-troubleshoot-anchor"))?void 0:_a7.parentElement)||_b3.setCssStyles({position:"sticky",top:"-1em",backgroundColor:"var(--modal-background)"});troubleShootEl.querySelectorAll("a.internal-link").forEach((anchorEl=>{anchorEl.addEventListener("click",(evt=>{fireAndForget((async()=>{const uri=anchorEl.getAttr("data-href");if(uri)if(uri.startsWith("#")){evt.preventDefault();const p4=Array.from(troubleShootEl.querySelectorAll("[data-heading]")).find((e3=>{var _a8;return(null==(_a8=e3.getAttr("data-heading"))?void 0:_a8.toLowerCase().split(" ").join("-"))==uri.substring(1).toLowerCase()}));if(p4){p4.setCssStyles({scrollMargin:"3em"});p4.scrollIntoView({behavior:"instant",block:"start"})}}else{evt.preventDefault();await loadMarkdownPage(uri,basePath);troubleShootEl.setCssStyles({scrollMargin:"1em"});troubleShootEl.scrollIntoView({behavior:"instant",block:"start"})}}))}))}));troubleShootEl.style.minHeight=""};loadMarkdownPage(topPath)}))}));addPane(containerEl,$msg("obsidianLiveSyncSettingTab.panelGeneralSettings"),"⚙️",20,!1).then((paneEl=>{addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleAppearance")).then((paneEl2=>{const languages=Object.fromEntries([["",$msg("obsidianLiveSyncSettingTab.defaultLanguage")],...SUPPORTED_I18N_LANGS.map((e3=>[e3,$t(`lang-${e3}`)]))]);new LiveSyncSetting(paneEl2).autoWireDropDown("displayLanguage",{options:languages});this.addOnSaved("displayLanguage",(()=>this.display()));new LiveSyncSetting(paneEl2).autoWireToggle("showStatusOnEditor");new LiveSyncSetting(paneEl2).autoWireToggle("showOnlyIconsOnEditor",{onUpdate:visibleOnly((()=>this.isConfiguredAs("showStatusOnEditor",!0)))});new LiveSyncSetting(paneEl2).autoWireToggle("showStatusOnStatusbar")}));addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleLogging")).then((paneEl2=>{paneEl2.addClass("wizardHidden");new LiveSyncSetting(paneEl2).autoWireToggle("lessInformationInLog");new LiveSyncSetting(paneEl2).autoWireToggle("showVerboseLog",{onUpdate:visibleOnly((()=>this.isConfiguredAs("lessInformationInLog",!1)))})}));new LiveSyncSetting(paneEl).setClass("wizardOnly").addButton((button=>button.setButtonText($msg("obsidianLiveSyncSettingTab.btnNext")).setCta().onClick((()=>{this.changeDisplay("0")}))))}));let checkResultDiv;const checkConfig=async checkResultDiv2=>{var _a7,_b3,_c2,_d2,_e2,_f,_g,_h,_i2,_j,_k;Logger($msg("obsidianLiveSyncSettingTab.logCheckingDbConfig"),LOG_LEVEL_INFO);let isSuccessful=!0;const emptyDiv=createDiv();emptyDiv.innerHTML="<span></span>";null==checkResultDiv2||checkResultDiv2.replaceChildren(emptyDiv);const addResult=(msg,classes)=>{const tmpDiv=createDiv();tmpDiv.addClass("ob-btn-config-fix");classes&&tmpDiv.addClasses(classes);tmpDiv.innerHTML=`${msg}`;null==checkResultDiv2||checkResultDiv2.appendChild(tmpDiv)};try{if(isCloudantURI(this.editingSettings.couchDB_URI)){Logger($msg("obsidianLiveSyncSettingTab.logCannotUseCloudant"),LOG_LEVEL_NOTICE);return}const responseConfig=(await requestToCouchDB(this.editingSettings.couchDB_URI,this.editingSettings.couchDB_USER,this.editingSettings.couchDB_PASSWORD,window.origin)).json,addConfigFixButton=(title,key2,value)=>{var _a8;if(!checkResultDiv2)return;const tmpDiv=createDiv();tmpDiv.addClass("ob-btn-config-fix");tmpDiv.innerHTML=`<label>${title}</label><button>${$msg("obsidianLiveSyncSettingTab.btnFix")}</button>`;const x2=checkResultDiv2.appendChild(tmpDiv);null==(_a8=x2.querySelector("button"))||_a8.addEventListener("click",(()=>{fireAndForget((async()=>{Logger($msg("obsidianLiveSyncSettingTab.logCouchDbConfigSet",{title,key:key2,value}));const res2=await requestToCouchDB(this.editingSettings.couchDB_URI,this.editingSettings.couchDB_USER,this.editingSettings.couchDB_PASSWORD,void 0,key2,value);if(200==res2.status){Logger($msg("obsidianLiveSyncSettingTab.logCouchDbConfigUpdated",{title}),LOG_LEVEL_NOTICE);checkResultDiv2.removeChild(x2);await checkConfig(checkResultDiv2)}else{Logger($msg("obsidianLiveSyncSettingTab.logCouchDbConfigFail",{title}),LOG_LEVEL_NOTICE);Logger(res2.text,LOG_LEVEL_VERBOSE)}}))}))};addResult($msg("obsidianLiveSyncSettingTab.msgNotice"),["ob-btn-config-head"]);addResult($msg("obsidianLiveSyncSettingTab.msgIfConfigNotPersistent"),["ob-btn-config-info"]);addResult($msg("obsidianLiveSyncSettingTab.msgConfigCheck"),["ob-btn-config-head"]);this.editingSettings.couchDB_USER in responseConfig.admins?addResult($msg("obsidianLiveSyncSettingTab.okAdminPrivileges")):addResult($msg("obsidianLiveSyncSettingTab.warnNoAdmin"));if("true"!=(null==(_a7=null==responseConfig?void 0:responseConfig.chttpd)?void 0:_a7.require_valid_user)){isSuccessful=!1;addResult($msg("obsidianLiveSyncSettingTab.errRequireValidUser"));addConfigFixButton($msg("obsidianLiveSyncSettingTab.msgSetRequireValidUser"),"chttpd/require_valid_user","true")}else addResult($msg("obsidianLiveSyncSettingTab.okRequireValidUser"));if("true"!=(null==(_b3=null==responseConfig?void 0:responseConfig.chttpd_auth)?void 0:_b3.require_valid_user)){isSuccessful=!1;addResult($msg("obsidianLiveSyncSettingTab.errRequireValidUserAuth"));addConfigFixButton($msg("obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth"),"chttpd_auth/require_valid_user","true")}else addResult($msg("obsidianLiveSyncSettingTab.okRequireValidUserAuth"));if(null==responseConfig?void 0:responseConfig.httpd["WWW-Authenticate"])addResult($msg("obsidianLiveSyncSettingTab.okWwwAuth"));else{isSuccessful=!1;addResult($msg("obsidianLiveSyncSettingTab.errMissingWwwAuth"));addConfigFixButton($msg("obsidianLiveSyncSettingTab.msgSetWwwAuth"),"httpd/WWW-Authenticate",'Basic realm="couchdb"')}if("true"!=(null==(_c2=null==responseConfig?void 0:responseConfig.httpd)?void 0:_c2.enable_cors)){isSuccessful=!1;addResult($msg("obsidianLiveSyncSettingTab.errEnableCors"));addConfigFixButton($msg("obsidianLiveSyncSettingTab.msgEnableCors"),"httpd/enable_cors","true")}else addResult($msg("obsidianLiveSyncSettingTab.okEnableCors"));if(!isCloudantURI(this.editingSettings.couchDB_URI)){if(Number(null!=(_e2=null==(_d2=null==responseConfig?void 0:responseConfig.chttpd)?void 0:_d2.max_http_request_size)?_e2:0)<4294967296){isSuccessful=!1;addResult($msg("obsidianLiveSyncSettingTab.errMaxRequestSize"));addConfigFixButton($msg("obsidianLiveSyncSettingTab.msgSetMaxRequestSize"),"chttpd/max_http_request_size","4294967296")}else addResult($msg("obsidianLiveSyncSettingTab.okMaxRequestSize"));if(Number(null!=(_g=null==(_f=null==responseConfig?void 0:responseConfig.couchdb)?void 0:_f.max_document_size)?_g:0)<5e7){isSuccessful=!1;addResult($msg("obsidianLiveSyncSettingTab.errMaxDocumentSize"));addConfigFixButton($msg("obsidianLiveSyncSettingTab.msgSetMaxDocSize"),"couchdb/max_document_size","50000000")}else addResult($msg("obsidianLiveSyncSettingTab.okMaxDocumentSize"))}if("true"!=(null==(_h=null==responseConfig?void 0:responseConfig.cors)?void 0:_h.credentials)){isSuccessful=!1;addResult($msg("obsidianLiveSyncSettingTab.errCorsCredentials"));addConfigFixButton($msg("obsidianLiveSyncSettingTab.msgSetCorsCredentials"),"cors/credentials","true")}else addResult($msg("obsidianLiveSyncSettingTab.okCorsCredentials"));const ConfiguredOrigins=((null!=(_j=null==(_i2=null==responseConfig?void 0:responseConfig.cors)?void 0:_i2.origins)?_j:"")+"").split(",");if("*"==(null==(_k=null==responseConfig?void 0:responseConfig.cors)?void 0:_k.origins)||-1!==ConfiguredOrigins.indexOf("app://obsidian.md")&&-1!==ConfiguredOrigins.indexOf("capacitor://localhost")&&-1!==ConfiguredOrigins.indexOf("http://localhost"))addResult($msg("obsidianLiveSyncSettingTab.okCorsOrigins"));else{addResult($msg("obsidianLiveSyncSettingTab.errCorsOrigins"));addConfigFixButton($msg("obsidianLiveSyncSettingTab.msgSetCorsOrigins"),"cors/origins","app://obsidian.md,capacitor://localhost,http://localhost");isSuccessful=!1}addResult($msg("obsidianLiveSyncSettingTab.msgConnectionCheck"),["ob-btn-config-head"]);addResult($msg("obsidianLiveSyncSettingTab.msgCurrentOrigin",{origin:window.location.origin}));const origins=["app://obsidian.md","capacitor://localhost","http://localhost"];for(const org of origins){const rr=await requestToCouchDB(this.editingSettings.couchDB_URI,this.editingSettings.couchDB_USER,this.editingSettings.couchDB_PASSWORD,org),responseHeaders=Object.fromEntries(Object.entries(rr.headers).map((e3=>{e3[0]=`${e3[0]}`.toLowerCase();return e3})));addResult($msg("obsidianLiveSyncSettingTab.msgOriginCheck",{org}));if("true"!=responseHeaders["access-control-allow-credentials"]){addResult($msg("obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials"));isSuccessful=!1}else addResult($msg("obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin"));responseHeaders["access-control-allow-origin"]!=org?addResult($msg("obsidianLiveSyncSettingTab.warnCorsOriginUnmatched",{from:origin,to:responseHeaders["access-control-allow-origin"]})):addResult($msg("obsidianLiveSyncSettingTab.okCorsOriginMatched"))}addResult($msg("obsidianLiveSyncSettingTab.msgDone"),["ob-btn-config-head"]);addResult($msg("obsidianLiveSyncSettingTab.msgConnectionProxyNote"),["ob-btn-config-info"]);Logger($msg("obsidianLiveSyncSettingTab.logCheckingConfigDone"),LOG_LEVEL_INFO)}catch(ex){if(401==(null==ex?void 0:ex.status)){isSuccessful=!1;addResult($msg("obsidianLiveSyncSettingTab.errAccessForbidden"));addResult($msg("obsidianLiveSyncSettingTab.errCannotContinueTest"));Logger($msg("obsidianLiveSyncSettingTab.logCheckingConfigDone"),LOG_LEVEL_INFO)}else{Logger($msg("obsidianLiveSyncSettingTab.logCheckingConfigFailed"),LOG_LEVEL_NOTICE);Logger(ex);isSuccessful=!1}}return isSuccessful};addPane(containerEl,$msg("obsidianLiveSyncSettingTab.panelRemoteConfiguration"),"🛰️",0,!1).then((paneEl=>{addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleRemoteServer")).then((paneEl2=>{new LiveSyncSetting(paneEl2).autoWireDropDown("remoteType",{holdValue:!0,options:{[REMOTE_COUCHDB]:$msg("obsidianLiveSyncSettingTab.optionCouchDB"),[REMOTE_MINIO]:$msg("obsidianLiveSyncSettingTab.optionMinioS3R2"),[REMOTE_P2P]:"Only Peer-to-Peer"},onUpdate:enableOnlySyncDisabled});addPanel(paneEl2,"Peer-to-Peer",void 0,onlyOnOnlyP2P).then((paneEl3=>{const syncWarnP2P=this.createEl(paneEl3,"div",{text:""});import_obsidian.MarkdownRenderer.render(this.plugin.app,"This feature is a Work In Progress, and configurable on `P2P Replicator` Pane.\nThe pane also can be launched by `P2P Replicator` command from the Command Palette.\n",syncWarnP2P,"/",this.plugin);syncWarnP2P.addClass("op-warn-info");new LiveSyncSetting(paneEl3).setName("Apply Settings").setClass("wizardHidden").addApplyButton(["remoteType"])}));addPanel(paneEl2,$msg("obsidianLiveSyncSettingTab.titleMinioS3R2"),void 0,onlyOnMinIO).then((paneEl3=>{const syncWarnMinio=this.createEl(paneEl3,"div",{text:""}),ObjectStorageMessage=$msg("obsidianLiveSyncSettingTab.msgObjectStorageWarning");import_obsidian.MarkdownRenderer.render(this.plugin.app,ObjectStorageMessage,syncWarnMinio,"/",this.plugin);syncWarnMinio.addClass("op-warn-info");new LiveSyncSetting(paneEl3).autoWireText("endpoint",{holdValue:!0});new LiveSyncSetting(paneEl3).autoWireText("accessKey",{holdValue:!0});new LiveSyncSetting(paneEl3).autoWireText("secretKey",{holdValue:!0,isPassword:!0});new LiveSyncSetting(paneEl3).autoWireText("region",{holdValue:!0});new LiveSyncSetting(paneEl3).autoWireText("bucket",{holdValue:!0});new LiveSyncSetting(paneEl3).autoWireToggle("useCustomRequestHandler",{holdValue:!0});new LiveSyncSetting(paneEl3).setName($msg("obsidianLiveSyncSettingTab.nameTestConnection")).addButton((button=>button.setButtonText($msg("obsidianLiveSyncSettingTab.btnTest")).setDisabled(!1).onClick((async()=>{await this.testConnection(this.editingSettings)}))));new LiveSyncSetting(paneEl3).setName($msg("obsidianLiveSyncSettingTab.nameApplySettings")).setClass("wizardHidden").addApplyButton(["remoteType","endpoint","region","accessKey","secretKey","bucket","useCustomRequestHandler"]).addOnUpdate(onlyOnMinIO)}));addPanel(paneEl2,$msg("obsidianLiveSyncSettingTab.titleCouchDB"),void 0,onlyOnCouchDB).then((paneEl3=>{this.plugin.$$isMobile()?this.createEl(paneEl3,"div",{text:$msg("obsidianLiveSyncSettingTab.msgNonHTTPSWarning")},void 0,visibleOnly((()=>!this.editingSettings.couchDB_URI.startsWith("https://")))).addClass("op-warn"):this.createEl(paneEl3,"div",{text:$msg("obsidianLiveSyncSettingTab.msgNonHTTPSInfo")},void 0,visibleOnly((()=>!this.editingSettings.couchDB_URI.startsWith("https://")))).addClass("op-warn-info");this.createEl(paneEl3,"div",{text:$msg("obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync")},void 0,visibleOnly((()=>isAnySyncEnabled()))).addClass("sls-setting-hidden");new LiveSyncSetting(paneEl3).autoWireText("couchDB_URI",{holdValue:!0,onUpdate:enableOnlySyncDisabled});new LiveSyncSetting(paneEl3).autoWireText("couchDB_USER",{holdValue:!0,onUpdate:enableOnlySyncDisabled});new LiveSyncSetting(paneEl3).autoWireText("couchDB_PASSWORD",{holdValue:!0,isPassword:!0,onUpdate:enableOnlySyncDisabled});new LiveSyncSetting(paneEl3).autoWireText("couchDB_DBNAME",{holdValue:!0,onUpdate:enableOnlySyncDisabled});new LiveSyncSetting(paneEl3).setName($msg("obsidianLiveSyncSettingTab.nameTestDatabaseConnection")).setClass("wizardHidden").setDesc($msg("obsidianLiveSyncSettingTab.descTestDatabaseConnection")).addButton((button=>button.setButtonText($msg("obsidianLiveSyncSettingTab.btnTest")).setDisabled(!1).onClick((async()=>{await this.testConnection()}))));new LiveSyncSetting(paneEl3).setName($msg("obsidianLiveSyncSettingTab.nameValidateDatabaseConfig")).setDesc($msg("obsidianLiveSyncSettingTab.descValidateDatabaseConfig")).addButton((button=>button.setButtonText($msg("obsidianLiveSyncSettingTab.btnCheck")).setDisabled(!1).onClick((async()=>{await checkConfig(checkResultDiv)}))));checkResultDiv=this.createEl(paneEl3,"div",{text:""});new LiveSyncSetting(paneEl3).setName($msg("obsidianLiveSyncSettingTab.nameApplySettings")).setClass("wizardHidden").addApplyButton(["remoteType","couchDB_URI","couchDB_USER","couchDB_PASSWORD","couchDB_DBNAME"]).addOnUpdate(onlyOnCouchDB)}))}));addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleNotification"),(()=>{}),onlyOnCouchDB).then((paneEl2=>{paneEl2.addClass("wizardHidden");new LiveSyncSetting(paneEl2).autoWireNumeric("notifyThresholdOfRemoteStorageSize",{}).setClass("wizardHidden")}));addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.panelPrivacyEncryption")).then((paneEl2=>{new LiveSyncSetting(paneEl2).autoWireToggle("encrypt",{holdValue:!0});const isEncryptEnabled=visibleOnly((()=>this.isConfiguredAs("encrypt",!0)));new LiveSyncSetting(paneEl2).autoWireText("passphrase",{holdValue:!0,isPassword:!0,onUpdate:isEncryptEnabled});new LiveSyncSetting(paneEl2).autoWireToggle("usePathObfuscation",{holdValue:!0,onUpdate:isEncryptEnabled});new LiveSyncSetting(paneEl2).autoWireToggle("useDynamicIterationCount",{holdValue:!0,onUpdate:isEncryptEnabled}).setClass("wizardHidden")}));addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleFetchSettings")).then((paneEl2=>{new LiveSyncSetting(paneEl2).setName($msg("obsidianLiveSyncSettingTab.titleFetchConfigFromRemote")).setDesc($msg("obsidianLiveSyncSettingTab.descFetchConfigFromRemote")).addButton((button=>button.setButtonText($msg("obsidianLiveSyncSettingTab.buttonFetch")).setDisabled(!1).onClick((async()=>{const trialSetting={...this.initialSettings,...this.editingSettings},newTweaks=await this.plugin.$$checkAndAskUseRemoteConfiguration(trialSetting);if(!1!==newTweaks.result){if(this.inWizard){this.editingSettings={...this.editingSettings,...newTweaks.result};this.requestUpdate();return}this.closeSetting();this.plugin.settings={...this.plugin.settings,...newTweaks.result};if(newTweaks.requireFetch){if("no"==await this.plugin.confirm.askYesNoDialog($msg("SettingTab.Message.AskRebuild"),{defaultOption:"Yes"})){await this.plugin.$$saveSettingData();return}await this.plugin.$$saveSettingData();await this.plugin.rebuilder.scheduleFetch();await this.plugin.$$scheduleAppReload();return}await this.plugin.$$saveSettingData()}}))))}));new LiveSyncSetting(paneEl).setClass("wizardOnly").addButton((button=>button.setButtonText($msg("obsidianLiveSyncSettingTab.buttonNext")).setCta().setDisabled(!1).onClick((async()=>{if((await checkConfig(checkResultDiv)||"no"!=await this.plugin.confirm.askYesNoDialog($msg("obsidianLiveSyncSettingTab.msgConfigCheckFailed"),{defaultOption:"No",title:$msg("obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed")}))&&(this.editingSettings.encrypt&&this.editingSettings.usePathObfuscation||"no"!=await this.plugin.confirm.askYesNoDialog($msg("obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation"),{defaultOption:"No",title:$msg("obsidianLiveSyncSettingTab.titleEncryptionNotEnabled")}))){this.editingSettings.encrypt||(this.editingSettings.passphrase="");if(await isPassphraseValid()||"no"!=await this.plugin.confirm.askYesNoDialog($msg("obsidianLiveSyncSettingTab.msgInvalidPassphrase"),{defaultOption:"No",title:$msg("obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid")})){isCloudantURI(this.editingSettings.couchDB_URI)?this.editingSettings={...this.editingSettings,...PREFERRED_SETTING_CLOUDANT}:"MINIO"==this.editingSettings.remoteType?this.editingSettings={...this.editingSettings,...PREFERRED_JOURNAL_SYNC}:this.editingSettings={...this.editingSettings,...PREFERRED_SETTING_SELF_HOSTED};if("yes"==await this.plugin.confirm.askYesNoDialog($msg("obsidianLiveSyncSettingTab.msgFetchConfigFromRemote"),{defaultOption:"Yes",title:$msg("obsidianLiveSyncSettingTab.titleFetchConfig")})){const trialSetting={...this.initialSettings,...this.editingSettings},newTweaks=await this.plugin.$$checkAndAskUseRemoteConfiguration(trialSetting);if(!1!==newTweaks.result){this.editingSettings={...this.editingSettings,...newTweaks.result};this.requestUpdate()}}changeDisplay("30")}}}))))}));addPane(containerEl,$msg("obsidianLiveSyncSettingTab.titleSyncSettings"),"🔄",30,!1).then((paneEl=>{if(""!=this.editingSettings.versionUpFlash){const c3=this.createEl(paneEl,"div",{text:this.editingSettings.versionUpFlash,cls:"op-warn sls-setting-hidden"},(el=>{this.createEl(el,"button",{text:$msg("obsidianLiveSyncSettingTab.btnGotItAndUpdated")},(e3=>{e3.addClass("mod-cta");e3.addEventListener("click",(()=>{fireAndForget((async()=>{this.editingSettings.versionUpFlash="";await this.saveAllDirtySettings();c3.remove()}))}))}))}),visibleOnly((()=>!this.isConfiguredAs("versionUpFlash",""))))}this.createEl(paneEl,"div",{text:$msg("obsidianLiveSyncSettingTab.msgSelectAndApplyPreset"),cls:"wizardOnly"}).addClasses(["op-warn-info"]);addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleSynchronizationPreset")).then((paneEl2=>{const options=""==this.editingSettings.remoteType?{NONE:"",LIVESYNC:$msg("obsidianLiveSyncSettingTab.optionLiveSync"),PERIODIC:$msg("obsidianLiveSyncSettingTab.optionPeriodicWithBatch"),DISABLE:$msg("obsidianLiveSyncSettingTab.optionDisableAllAutomatic")}:{NONE:"",PERIODIC:$msg("obsidianLiveSyncSettingTab.optionPeriodicWithBatch"),DISABLE:$msg("obsidianLiveSyncSettingTab.optionDisableAllAutomatic")};new LiveSyncSetting(paneEl2).autoWireDropDown("preset",{options,holdValue:!0}).addButton((button=>{button.setButtonText($msg("obsidianLiveSyncSettingTab.btnApply"));button.onClick((async()=>{await this.saveAllDirtySettings()}))}));this.addOnSaved("preset",(async currentPreset=>{if(""==currentPreset){Logger($msg("obsidianLiveSyncSettingTab.logSelectAnyPreset"),LOG_LEVEL_NOTICE);return}const presetAllDisabled={batchSave:!1,liveSync:!1,periodicReplication:!1,syncOnSave:!1,syncOnEditorSave:!1,syncOnStart:!1,syncOnFileOpen:!1,syncAfterMerge:!1},presetLiveSync={...presetAllDisabled,liveSync:!0},presetPeriodic={...presetAllDisabled,batchSave:!0,periodicReplication:!0,syncOnSave:!1,syncOnEditorSave:!1,syncOnStart:!0,syncOnFileOpen:!0,syncAfterMerge:!0};if("LIVESYNC"==currentPreset){this.editingSettings={...this.editingSettings,...presetLiveSync};Logger($msg("obsidianLiveSyncSettingTab.logConfiguredLiveSync"),LOG_LEVEL_NOTICE)}else if("PERIODIC"==currentPreset){this.editingSettings={...this.editingSettings,...presetPeriodic};Logger($msg("obsidianLiveSyncSettingTab.logConfiguredPeriodic"),LOG_LEVEL_NOTICE)}else{Logger($msg("obsidianLiveSyncSettingTab.logConfiguredDisabled"),LOG_LEVEL_NOTICE);this.editingSettings={...this.editingSettings,...presetAllDisabled}}if(this.inWizard){this.closeSetting();this.inWizard=!1;if(this.editingSettings.isConfigured)if(isNeedRebuildLocal()||isNeedRebuildRemote())await confirmRebuild();else{await this.saveAllDirtySettings();await this.plugin.$$realizeSettingSyncMode();this.plugin.$$askReload()}else{this.editingSettings.isConfigured=!0;await this.saveAllDirtySettings();await this.plugin.$$realizeSettingSyncMode();await rebuildDB("localOnly");"yes"==await this.plugin.confirm.askYesNoDialog($msg("obsidianLiveSyncSettingTab.msgGenerateSetupURI"),{defaultOption:"Yes",title:$msg("obsidianLiveSyncSettingTab.titleCongratulations")})&&eventHub.emitEvent("request-copy-setup-uri")}}else{await this.saveAllDirtySettings();await this.plugin.$$realizeSettingSyncMode()}}))}));addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleSynchronizationMethod")).then((paneEl2=>{paneEl2.addClass("wizardHidden");const onlyOnNonLiveSync=visibleOnly((()=>!this.isConfiguredAs("syncMode","LIVESYNC"))),onlyOnPeriodic=visibleOnly((()=>this.isConfiguredAs("syncMode","PERIODIC"))),optionsSyncMode=""==this.editingSettings.remoteType?{ONEVENTS:$msg("obsidianLiveSyncSettingTab.optionOnEvents"),PERIODIC:$msg("obsidianLiveSyncSettingTab.optionPeriodicAndEvents"),LIVESYNC:$msg("obsidianLiveSyncSettingTab.optionLiveSync")}:{ONEVENTS:$msg("obsidianLiveSyncSettingTab.optionOnEvents"),PERIODIC:$msg("obsidianLiveSyncSettingTab.optionPeriodicAndEvents")};new LiveSyncSetting(paneEl2).autoWireDropDown("syncMode",{options:optionsSyncMode}).setClass("wizardHidden");this.addOnSaved("syncMode",(async value=>{this.editingSettings.liveSync=!1;this.editingSettings.periodicReplication=!1;"LIVESYNC"==value?this.editingSettings.liveSync=!0:"PERIODIC"==value&&(this.editingSettings.periodicReplication=!0);await this.saveSettings(["liveSync","periodicReplication"]);await this.plugin.$$realizeSettingSyncMode()}));new LiveSyncSetting(paneEl2).autoWireNumeric("periodicReplicationInterval",{clampMax:5e3,onUpdate:onlyOnPeriodic}).setClass("wizardHidden");new LiveSyncSetting(paneEl2).autoWireNumeric("syncMinimumInterval",{onUpdate:onlyOnNonLiveSync});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("syncOnSave",{onUpdate:onlyOnNonLiveSync});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("syncOnEditorSave",{onUpdate:onlyOnNonLiveSync});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("syncOnFileOpen",{onUpdate:onlyOnNonLiveSync});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("syncOnStart",{onUpdate:onlyOnNonLiveSync});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("syncAfterMerge",{onUpdate:onlyOnNonLiveSync})}));addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleUpdateThinning")).then((paneEl2=>{paneEl2.addClass("wizardHidden");new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("batchSave");new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireNumeric("batchSaveMinimumDelay",{acceptZero:!0,onUpdate:visibleOnly((()=>this.isConfiguredAs("batchSave",!0)))});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireNumeric("batchSaveMaximumDelay",{acceptZero:!0,onUpdate:visibleOnly((()=>this.isConfiguredAs("batchSave",!0)))})}));addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleDeletionPropagation"),void 0,void 0,LEVEL_ADVANCED).then((paneEl2=>{paneEl2.addClass("wizardHidden");new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("trashInsteadDelete");new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("doNotDeleteFolder")}));addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleConflictResolution"),void 0,void 0,LEVEL_ADVANCED).then((paneEl2=>{paneEl2.addClass("wizardHidden");new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("resolveConflictsByNewerFile");new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("checkConflictOnlyOnOpen");new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("showMergeDialogOnlyOnActive")}));addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown"),void 0,void 0,LEVEL_ADVANCED).then((paneEl2=>{paneEl2.addClass("wizardHidden");new LiveSyncSetting(paneEl2).autoWireText("settingSyncFile",{holdValue:!0}).addApplyButton(["settingSyncFile"]);new LiveSyncSetting(paneEl2).autoWireToggle("writeCredentialsForSettingSync");new LiveSyncSetting(paneEl2).autoWireToggle("notifyAllSettingSyncFile")}));addPanel(paneEl,$msg("obsidianLiveSyncSettingTab.titleHiddenFiles"),void 0,void 0,LEVEL_ADVANCED).then((paneEl2=>{paneEl2.addClass("wizardHidden");const LABEL_ENABLED=$msg("obsidianLiveSyncSettingTab.labelEnabled"),LABEL_DISABLED=$msg("obsidianLiveSyncSettingTab.labelDisabled");new LiveSyncSetting(paneEl2).setName($msg("obsidianLiveSyncSettingTab.nameHiddenFileSynchronization")).setClass("wizardHidden").settingEl.createDiv("").innerText=this.editingSettings.syncInternalFiles?LABEL_ENABLED:LABEL_DISABLED;this.editingSettings.syncInternalFiles?new LiveSyncSetting(paneEl2).setName($msg("obsidianLiveSyncSettingTab.nameDisableHiddenFileSync")).setClass("wizardHidden").addButton((button=>{button.setButtonText($msg("obsidianLiveSyncSettingTab.btnDisable")).onClick((async()=>{this.editingSettings.syncInternalFiles=!1;await this.saveAllDirtySettings();this.display()}))})):new LiveSyncSetting(paneEl2).setName($msg("obsidianLiveSyncSettingTab.nameEnableHiddenFileSync")).setClass("wizardHidden").addButton((button=>{button.setButtonText("Merge").onClick((async()=>{this.closeSetting();await this.plugin.$anyConfigureOptionalSyncFeature("MERGE")}))})).addButton((button=>{button.setButtonText("Fetch").onClick((async()=>{this.closeSetting();await this.plugin.$anyConfigureOptionalSyncFeature("FETCH")}))})).addButton((button=>{button.setButtonText("Overwrite").onClick((async()=>{this.closeSetting();await this.plugin.$anyConfigureOptionalSyncFeature("OVERWRITE")}))}));new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("suppressNotifyHiddenFilesChange",{});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("syncInternalFilesBeforeReplication",{onUpdate:visibleOnly((()=>this.isConfiguredAs("watchInternalFileChanges",!0)))});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireNumeric("syncInternalFilesInterval",{clampMin:10,acceptZero:!0})}))}));addPane(containerEl,"Selector","🚦",33,!1,LEVEL_ADVANCED).then((paneEl=>{addPanel(paneEl,"Normal Files").then((paneEl2=>{paneEl2.addClass("wizardHidden");mount(MultipleRegExpControl,{target:new LiveSyncSetting(paneEl2).setName("Synchronising files").setDesc("(RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.").setClass("wizardHidden").controlEl,props:{patterns:this.editingSettings.syncOnlyRegEx.split("|[]|"),originals:[...this.editingSettings.syncOnlyRegEx.split("|[]|")],apply:async newPatterns=>{this.editingSettings.syncOnlyRegEx=newPatterns.map((e3=>e3.trim())).filter((e3=>""!=e3)).join("|[]|");await this.saveAllDirtySettings();this.display()}}});mount(MultipleRegExpControl,{target:new LiveSyncSetting(paneEl2).setName("Non-Synchronising files").setDesc("(RegExp) If this is set, any changes to local and remote files that match this will be skipped.").setClass("wizardHidden").controlEl,props:{patterns:this.editingSettings.syncIgnoreRegEx.split("|[]|"),originals:[...this.editingSettings.syncIgnoreRegEx.split("|[]|")],apply:async newPatterns=>{this.editingSettings.syncIgnoreRegEx=newPatterns.map((e3=>e3.trim())).filter((e3=>""!=e3)).join("|[]|");await this.saveAllDirtySettings();this.display()}}});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireNumeric("syncMaxSizeInMB",{clampMin:0});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("useIgnoreFiles");new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireTextArea("ignoreFiles",{onUpdate:visibleOnly((()=>this.isConfiguredAs("useIgnoreFiles",!0)))})}));addPanel(paneEl,"Hidden Files",void 0,void 0,LEVEL_ADVANCED).then((paneEl2=>{const defaultSkipPattern="\\/node_modules\\/, \\/\\.git\\/, ^\\.git\\/, \\/obsidian-livesync\\/",defaultSkipPatternXPlat=defaultSkipPattern+",\\/workspace$ ,\\/workspace.json$,\\/workspace-mobile.json$",pat=this.editingSettings.syncInternalFilesIgnorePatterns.split(",").map((x2=>x2.trim())).filter((x2=>""!=x2));mount(MultipleRegExpControl,{target:new LiveSyncSetting(paneEl2).setName("Ignore patterns").setClass("wizardHidden").setDesc("").controlEl,props:{patterns:pat,originals:[...pat],apply:async newPatterns=>{this.editingSettings.syncInternalFilesIgnorePatterns=newPatterns.map((e3=>e3.trim())).filter((e3=>""!=e3)).join(", ");await this.saveAllDirtySettings();this.display()}}});const addDefaultPatterns=async patterns=>{const oldList=this.editingSettings.syncInternalFilesIgnorePatterns.split(",").map((x2=>x2.trim())).filter((x2=>""!=x2)),newList=patterns.split(",").map((x2=>x2.trim())).filter((x2=>""!=x2)),allSet=new Set([...oldList,...newList]);this.editingSettings.syncInternalFilesIgnorePatterns=[...allSet].join(", ");await this.saveAllDirtySettings();this.display()};new LiveSyncSetting(paneEl2).setName("Add default patterns").setClass("wizardHidden").addButton((button=>{button.setButtonText("Default").onClick((async()=>{await addDefaultPatterns(defaultSkipPattern)}))})).addButton((button=>{button.setButtonText("Cross-platform").onClick((async()=>{await addDefaultPatterns(defaultSkipPatternXPlat)}))}))}))}));addPane(containerEl,"Customization sync","🔌",60,!1,LEVEL_ADVANCED).then((paneEl=>{addPanel(paneEl,"Customization Sync").then((paneEl2=>{const enableOnlyOnPluginSyncIsNotEnabled=enableOnly((()=>this.isConfiguredAs("usePluginSync",!1))),visibleOnlyOnPluginSyncEnabled=visibleOnly((()=>this.isConfiguredAs("usePluginSync",!0)));this.createEl(paneEl2,"div",{text:"Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.",cls:"op-warn"},(c3=>{}),visibleOnly((()=>this.isConfiguredAs("deviceAndVaultName",""))));this.createEl(paneEl2,"div",{text:"We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.",cls:"op-warn-info"},(c3=>{}),visibleOnly((()=>this.isConfiguredAs("usePluginSync",!0))));new LiveSyncSetting(paneEl2).autoWireText("deviceAndVaultName",{placeHolder:"desktop",onUpdate:enableOnlyOnPluginSyncIsNotEnabled});new LiveSyncSetting(paneEl2).autoWireToggle("usePluginSyncV2");new LiveSyncSetting(paneEl2).autoWireToggle("usePluginSync",{onUpdate:enableOnly((()=>!this.isConfiguredAs("deviceAndVaultName","")))});new LiveSyncSetting(paneEl2).autoWireToggle("autoSweepPlugins",{onUpdate:visibleOnlyOnPluginSyncEnabled});new LiveSyncSetting(paneEl2).autoWireToggle("autoSweepPluginsPeriodic",{onUpdate:visibleOnly((()=>this.isConfiguredAs("usePluginSync",!0)&&this.isConfiguredAs("autoSweepPlugins",!0)))});new LiveSyncSetting(paneEl2).autoWireToggle("notifyPluginOrSettingUpdated",{onUpdate:visibleOnlyOnPluginSyncEnabled});new LiveSyncSetting(paneEl2).setName("Open").setDesc("Open the dialog").addButton((button=>{button.setButtonText("Open").setDisabled(!1).onClick((()=>{eventHub.emitEvent("request-open-plugin-sync-dialog")}))})).addOnUpdate(visibleOnlyOnPluginSyncEnabled)}))}));addPane(containerEl,"Hatch","🧰",50,!0).then((paneEl=>{addPanel(paneEl,$msg("Setting.TroubleShooting")).then((paneEl2=>{new LiveSyncSetting(paneEl2).setName($msg("Setting.TroubleShooting.Doctor")).setDesc($msg("Setting.TroubleShooting.Doctor.Desc")).addButton((button=>button.setButtonText("Run Doctor").setCta().setDisabled(!1).onClick((()=>{this.closeSetting();eventHub.emitEvent("request-run-doctor","you wanted(Thank you)!")}))));new LiveSyncSetting(paneEl2).setName("Prepare the 'report' to create an issue").addButton((button=>button.setButtonText("Copy Report to clipboard").setCta().setDisabled(!1).onClick((async()=>{let responseConfig={};const REDACTED="𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷";if(""==this.editingSettings.remoteType)try{const r4=await requestToCouchDB(this.editingSettings.couchDB_URI,this.editingSettings.couchDB_USER,this.editingSettings.couchDB_PASSWORD,window.origin);Logger(JSON.stringify(r4.json,null,2));responseConfig=r4.json;responseConfig.couch_httpd_auth.secret=REDACTED;responseConfig.couch_httpd_auth.authentication_db=REDACTED;responseConfig.couch_httpd_auth.authentication_redirect=REDACTED;responseConfig.couchdb.uuid=REDACTED;responseConfig.admins=REDACTED}catch(ex){Logger(ex,LOG_LEVEL_VERBOSE);responseConfig="Requesting information from the remote CouchDB has failed. If you are using IBM Cloudant, this is normal behaviour."}else"MINIO"==this.editingSettings.remoteType&&(responseConfig="Object Storage Synchronisation");const pluginConfig=JSON.parse(JSON.stringify(this.editingSettings));pluginConfig.couchDB_DBNAME=REDACTED;pluginConfig.couchDB_PASSWORD=REDACTED;const scheme=pluginConfig.couchDB_URI.startsWith("http:")?"(HTTP)":pluginConfig.couchDB_URI.startsWith("https:")?"(HTTPS)":"";pluginConfig.couchDB_URI=isCloudantURI(pluginConfig.couchDB_URI)?"cloudant":`self-hosted${scheme}`;pluginConfig.couchDB_USER=REDACTED;pluginConfig.passphrase=REDACTED;pluginConfig.encryptedPassphrase=REDACTED;pluginConfig.encryptedCouchDBConnection=REDACTED;pluginConfig.accessKey=REDACTED;pluginConfig.secretKey=REDACTED;const redact=source2=>`${REDACTED}(${source2.length} letters)`;pluginConfig.region=redact(pluginConfig.region);pluginConfig.bucket=redact(pluginConfig.bucket);pluginConfig.pluginSyncExtendedSetting={};pluginConfig.P2P_AppID=redact(pluginConfig.P2P_AppID);pluginConfig.P2P_passphrase=redact(pluginConfig.P2P_passphrase);pluginConfig.P2P_roomID=redact(pluginConfig.P2P_roomID);pluginConfig.P2P_relays=redact(pluginConfig.P2P_relays);const endpoint=pluginConfig.endpoint;if(""==endpoint)pluginConfig.endpoint="Not configured or AWS";else{const endpointScheme=pluginConfig.endpoint.startsWith("http:")?"(HTTP)":pluginConfig.endpoint.startsWith("https:")?"(HTTPS)":"";pluginConfig.endpoint=`${-1!==endpoint.indexOf(".r2.cloudflarestorage.")?"R2":"self-hosted?"}(${endpointScheme})`}const msgConfig=`---- Obsidian info ----\nNavigator: ${navigator.userAgent}\nFileSystem: ${this.plugin.$$isStorageInsensitive()?"insensitive":"sensitive"}\n---- remote config ----\n${(0,import_obsidian.stringifyYaml)(responseConfig)}\n---- Plug-in config ---\nversion:0.24.18\n${(0,import_obsidian.stringifyYaml)(pluginConfig)}`;console.log(msgConfig);await navigator.clipboard.writeText(msgConfig);Logger("Generated report has been copied to clipboard. Please report the issue with this! Thank you for your cooperation!",LOG_LEVEL_NOTICE)}))));new LiveSyncSetting(paneEl2).autoWireToggle("writeLogToTheFile")}));addPanel(paneEl,"Scram Switches").then((paneEl2=>{new LiveSyncSetting(paneEl2).autoWireToggle("suspendFileWatching");this.addOnSaved("suspendFileWatching",(()=>this.plugin.$$askReload()));new LiveSyncSetting(paneEl2).autoWireToggle("suspendParseReplicationResult");this.addOnSaved("suspendParseReplicationResult",(()=>this.plugin.$$askReload()))}));addPanel(paneEl,"Recovery and Repair").then((paneEl2=>{const addResult=async(path2,file,fileOnDB)=>{const storageFileStat=file?await this.plugin.storageAccess.statHidden(file):null;resultArea.appendChild(this.createEl(resultArea,"div",{},(el=>{el.appendChild(this.createEl(el,"h6",{text:path2}));el.appendChild(this.createEl(el,"div",{},(infoGroupEl=>{infoGroupEl.appendChild(this.createEl(infoGroupEl,"div",{text:"Storage : Modified: "+(storageFileStat?`${new Date(storageFileStat.mtime).toLocaleString()}, Size:${storageFileStat.size}`:"Missing:")}));infoGroupEl.appendChild(this.createEl(infoGroupEl,"div",{text:"Database: Modified: "+(fileOnDB?`${new Date(fileOnDB.mtime).toLocaleString()}, Size:${fileOnDB.size}`:"Missing:")}))})));fileOnDB&&file&&el.appendChild(this.createEl(el,"button",{text:"Show history"},(buttonEl=>{buttonEl.onClickEvent((()=>{eventHub.emitEvent("show-history",{file,fileOnDB})}))})));file&&el.appendChild(this.createEl(el,"button",{text:"Storage -> Database"},(buttonEl=>{buttonEl.onClickEvent((async()=>{if(file.startsWith(".")){const addOn=this.plugin.getAddOn(HiddenFileSync.name);if(addOn){const file2=(await addOn.scanInternalFiles()).find((e3=>e3.path==path2));if(!file2){Logger(`Failed to find the file in the internal files: ${path2}`,LOG_LEVEL_NOTICE);return}if(!await addOn.storeInternalFileToDatabase(file2,!0)){Logger(`Failed to store the file to the database (Hidden file): ${file2}`,LOG_LEVEL_NOTICE);return}}}else if(!await this.plugin.fileHandler.storeFileToDB(file,!0)){Logger(`Failed to store the file to the database: ${file}`,LOG_LEVEL_NOTICE);return}el.remove()}))})));fileOnDB&&el.appendChild(this.createEl(el,"button",{text:"Database -> Storage"},(buttonEl=>{buttonEl.onClickEvent((async()=>{if(fileOnDB.path.startsWith(ICHeader)){const addOn=this.plugin.getAddOn(HiddenFileSync.name);if(addOn&&!await addOn.extractInternalFileFromDatabase(path2,!0)){Logger(`Failed to store the file to the database (Hidden file): ${file}`,LOG_LEVEL_NOTICE);return}}else if(!await this.plugin.fileHandler.dbToStorage(fileOnDB,null,!0)){Logger(`Failed to store the file to the storage: ${fileOnDB.path}`,LOG_LEVEL_NOTICE);return}el.remove()}))})));return el})))},checkBetweenStorageAndDatabase=async(file,fileOnDB)=>{const dataContent=readAsBlob(fileOnDB),content=createBlob(await this.plugin.storageAccess.readHiddenFileBinary(file));if(await isDocContentSame(content,dataContent))Logger(`Compare: SAME: ${file}`);else{Logger(`Compare: CONTENT IS NOT MATCHED! ${file}`,LOG_LEVEL_NOTICE);addResult(file,file,fileOnDB)}};new LiveSyncSetting(paneEl2).setName("Recreate missing chunks for all files").setDesc("This will recreate chunks for all files. If there were missing chunks, this may fix the errors.").addButton((button=>button.setButtonText("Recreate all").setCta().onClick((async()=>{await this.plugin.fileHandler.createAllChunks(!0)}))));new LiveSyncSetting(paneEl2).setName("Resolve All conflicted files by the newer one").setDesc("Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.").addButton((button=>button.setButtonText("Resolve All").setCta().onClick((async()=>{await this.plugin.rebuilder.resolveAllConflictedFilesByNewerOnes()}))));new LiveSyncSetting(paneEl2).setName("Verify and repair all files").setDesc("Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.").addButton((button=>button.setButtonText("Verify all").setDisabled(!1).setCta().onClick((async()=>{Logger("Start verifying all files",LOG_LEVEL_NOTICE,"verify");const ignorePatterns=this.plugin.settings.syncInternalFilesIgnorePatterns.replace(/\n| /g,"").split(",").filter((e3=>e3)).map((e3=>new RegExp(e3,"i")));this.plugin.localDatabase.hashCaches.clear();Logger("Start verifying all files",LOG_LEVEL_NOTICE,"verify");const files=this.plugin.settings.syncInternalFiles?await this.plugin.storageAccess.getFilesIncludeHidden("/",void 0,ignorePatterns):await this.plugin.storageAccess.getFileNames(),documents=[],adn=this.plugin.localDatabase.findAllDocs();for await(const i3 of adn){const path2=getPath2(i3);path2.startsWith(ICXHeader)||path2.startsWith(PSCHeader)||!this.plugin.settings.syncInternalFiles&&path2.startsWith(ICHeader)||documents.push(stripAllPrefixes(path2))}const allPaths=[...new Set([...documents,...files])];let i2=0;const incProc=()=>{i2++;i2%25==0&&Logger(`Checking ${i2}/${files.length} files \n`,LOG_LEVEL_NOTICE,"verify-processed")},semaphore=Semaphore(10),processes=allPaths.map((async path2=>{try{if(shouldBeIgnored(path2))return incProc();const stat=!!await this.plugin.storageAccess.isExistsIncludeHidden(path2)&&await this.plugin.storageAccess.statHidden(path2),fileOnStorage=null!=stat&&stat;if(!await this.plugin.$$isTargetFile(path2))return incProc();const releaser=await semaphore.acquire(1);if(fileOnStorage&&this.plugin.$$isFileSizeExceeded(fileOnStorage.size))return incProc();try{const dbPath=path2.startsWith(".")?addPrefix(path2,ICHeader):path2,fileOnDB=await this.plugin.localDatabase.getDBEntry(dbPath);if(fileOnDB&&this.plugin.$$isFileSizeExceeded(fileOnDB.size))return incProc();if(!fileOnDB&&fileOnStorage){Logger(`Compare: Not found on the local database: ${path2}`,LOG_LEVEL_NOTICE);addResult(path2,path2,!1);return incProc()}if(fileOnDB&&!fileOnStorage){Logger(`Compare: Not found on the storage: ${path2}`,LOG_LEVEL_NOTICE);addResult(path2,!1,fileOnDB);return incProc()}fileOnStorage&&fileOnDB&&await checkBetweenStorageAndDatabase(path2,fileOnDB)}catch(ex){Logger(`Error while processing ${path2}`,LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_VERBOSE)}finally{releaser();incProc()}}catch(ex){Logger(`Error while processing without semaphore ${path2}`,LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_VERBOSE)}}));await Promise.all(processes);Logger("done",LOG_LEVEL_NOTICE,"verify")}))));const resultArea=paneEl2.createDiv({text:""});new LiveSyncSetting(paneEl2).setName("Check and convert non-path-obfuscated files").setDesc("").addButton((button=>button.setButtonText("Perform").setDisabled(!1).setWarning().onClick((async()=>{var _a7,_b3,_c2;for await(const docName of this.plugin.localDatabase.findAllDocNames())if(!docName.startsWith("f:")){const idEncoded=await this.plugin.$$path2id(docName),doc=await this.plugin.localDatabase.getRaw(docName);if(!doc)continue;if("newnote"!=doc.type&&"plain"!=doc.type)continue;if(null!=(_a7=null==doc?void 0:doc.deleted)&&_a7)continue;const newDoc={...doc};newDoc._id=idEncoded;newDoc.path=docName;delete newDoc._rev;try{const obfuscatedDoc=await this.plugin.localDatabase.getRaw(idEncoded,{revs_info:!0});null==(_b3=obfuscatedDoc._revs_info)||_b3.shift();const previousRev=null==(_c2=obfuscatedDoc._revs_info)?void 0:_c2.shift();newDoc._rev=previousRev?previousRev.rev:"1-"+`00000000000000000000000000000000${~~(1e9*Math.random())}${~~(1e9*Math.random())}${~~(1e9*Math.random())}${~~(1e9*Math.random())}`.slice(-32);const ret=await this.plugin.localDatabase.putRaw(newDoc,{force:!0});if(ret.ok){Logger(`${docName} has been converted as conflicted document`,LOG_LEVEL_NOTICE);doc._deleted=!0;(await this.plugin.localDatabase.putRaw(doc)).ok&&Logger(`Old ${docName} has been deleted`,LOG_LEVEL_NOTICE);await this.plugin.$$queueConflictCheckIfOpen(docName)}else{Logger(`Converting ${docName} Failed!`,LOG_LEVEL_NOTICE);Logger(ret,LOG_LEVEL_VERBOSE)}}catch(ex){if(404==(null==ex?void 0:ex.status)){if((await this.plugin.localDatabase.putRaw(newDoc)).ok){Logger(`${docName} has been converted`,LOG_LEVEL_NOTICE);doc._deleted=!0;(await this.plugin.localDatabase.putRaw(doc)).ok&&Logger(`Old ${docName} has been deleted`,LOG_LEVEL_NOTICE)}}else{Logger(`Something went wrong while converting ${docName}`,LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_VERBOSE)}}}Logger("Converting finished",LOG_LEVEL_NOTICE)}))))}));addPanel(paneEl,"Reset").then((paneEl2=>{new LiveSyncSetting(paneEl2).setName("Back to non-configured").addButton((button=>button.setButtonText("Back").setDisabled(!1).onClick((async()=>{this.editingSettings.isConfigured=!1;await this.saveAllDirtySettings();this.plugin.$$askReload()}))));new LiveSyncSetting(paneEl2).setName("Delete all customization sync data").addButton((button=>button.setButtonText("Delete").setDisabled(!1).setWarning().onClick((async()=>{Logger("Deleting customization sync data",LOG_LEVEL_NOTICE);const newData=(await this.plugin.localDatabase.allDocsRaw({startkey:"ix:",endkey:"ix:",include_docs:!0})).rows.map((e3=>({...e3.doc,_deleted:!0})));Logger(`${(await this.plugin.localDatabase.bulkDocsRaw(newData)).length} items have been removed, to confirm how many items are left, please perform it again.`,LOG_LEVEL_NOTICE)}))))}))}));addPane(containerEl,"Advanced","🔧",46,!1,LEVEL_ADVANCED).then((paneEl=>{addPanel(paneEl,"Memory cache").then((paneEl2=>{new LiveSyncSetting(paneEl2).autoWireNumeric("hashCacheMaxCount",{clampMin:10});new LiveSyncSetting(paneEl2).autoWireNumeric("hashCacheMaxAmount",{clampMin:1})}));addPanel(paneEl,"Local Database Tweak").then((paneEl2=>{paneEl2.addClass("wizardHidden");new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireNumeric("customChunkSize",{clampMin:0});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("enableChunkSplitterV2",{onUpdate:enableOnly((()=>this.isConfiguredAs("useSegmenter",!1)))});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("useSegmenter",{onUpdate:enableOnly((()=>this.isConfiguredAs("enableChunkSplitterV2",!1)))})}));addPanel(paneEl,"Transfer Tweak").then((paneEl2=>{new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("readChunksOnline",{onUpdate:onlyOnCouchDB});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireNumeric("concurrencyOfReadChunksOnline",{clampMin:10,onUpdate:onlyOnCouchDB});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireNumeric("minimumIntervalOfReadChunksOnline",{clampMin:10,onUpdate:onlyOnCouchDB})}))}));addPane(containerEl,"Power users","💪",47,!0,LEVEL_POWER_USER).then((paneEl=>{addPanel(paneEl,"Remote Database Tweak").then((paneEl2=>{new LiveSyncSetting(paneEl2).autoWireToggle("useEden").setClass("wizardHidden");const onlyUsingEden=visibleOnly((()=>this.isConfiguredAs("useEden",!0)));new LiveSyncSetting(paneEl2).autoWireNumeric("maxChunksInEden",{onUpdate:onlyUsingEden}).setClass("wizardHidden");new LiveSyncSetting(paneEl2).autoWireNumeric("maxTotalLengthInEden",{onUpdate:onlyUsingEden}).setClass("wizardHidden");new LiveSyncSetting(paneEl2).autoWireNumeric("maxAgeInEden",{onUpdate:onlyUsingEden}).setClass("wizardHidden");new LiveSyncSetting(paneEl2).autoWireToggle("enableCompression").setClass("wizardHidden")}));addPanel(paneEl,"CouchDB Connection Tweak",void 0,onlyOnCouchDB).then((paneEl2=>{paneEl2.addClass("wizardHidden");this.createEl(paneEl2,"div",{text:"If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value."},void 0,onlyOnCouchDB).addClass("wizardHidden");new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireNumeric("batch_size",{clampMin:2,onUpdate:onlyOnCouchDB});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireNumeric("batches_limit",{clampMin:2,onUpdate:onlyOnCouchDB});new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("useTimeouts",{onUpdate:onlyOnCouchDB})}));addPanel(paneEl,"Configuration Encryption").then((paneEl2=>{new LiveSyncSetting(paneEl2).setName("Encrypting sensitive configuration items").autoWireDropDown("configPassphraseStore",{options:{"":"Default",LOCALSTORAGE:"Use a custom passphrase",ASK_AT_LAUNCH:"Ask an passphrase at every launch"},holdValue:!0}).setClass("wizardHidden");new LiveSyncSetting(paneEl2).autoWireText("configPassphrase",{isPassword:!0,holdValue:!0}).setClass("wizardHidden").addOnUpdate((()=>({disabled:!this.isConfiguredAs("configPassphraseStore","LOCALSTORAGE")})));new LiveSyncSetting(paneEl2).addApplyButton(["configPassphrase","configPassphraseStore"]).setClass("wizardHidden")}));addPanel(paneEl,"Developer").then((paneEl2=>{new LiveSyncSetting(paneEl2).autoWireToggle("enableDebugTools").setClass("wizardHidden")}))}));addPane(containerEl,"Patches","🩹",51,!1,LEVEL_EDGE_CASE).then((paneEl=>{addPanel(paneEl,"Compatibility (Metadata)").then((paneEl2=>{new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("deleteMetadataOfDeletedFiles");new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireNumeric("automaticallyDeleteMetadataOfDeletedFiles",{onUpdate:visibleOnly((()=>this.isConfiguredAs("deleteMetadataOfDeletedFiles",!0)))})}));addPanel(paneEl,"Compatibility (Conflict Behaviour)").then((paneEl2=>{paneEl2.addClass("wizardHidden");new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("disableMarkdownAutoMerge");new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("writeDocumentsIfConflicted")}));addPanel(paneEl,"Compatibility (Database structure)").then((paneEl2=>{new LiveSyncSetting(paneEl2).autoWireToggle("useIndexedDBAdapter",{invert:!0,holdValue:!0});new LiveSyncSetting(paneEl2).autoWireToggle("doNotUseFixedRevisionForChunks",{holdValue:!0}).setClass("wizardHidden");new LiveSyncSetting(paneEl2).autoWireToggle("handleFilenameCaseSensitive",{holdValue:!0}).setClass("wizardHidden");this.addOnSaved("useIndexedDBAdapter",(async()=>{await this.saveAllDirtySettings();await rebuildDB("localOnly")}))}));addPanel(paneEl,"Compatibility (Internal API Usage)").then((paneEl2=>{new LiveSyncSetting(paneEl2).autoWireToggle("watchInternalFileChanges",{invert:!0})}));addPanel(paneEl,"Edge case addressing (Database)").then((paneEl2=>{new LiveSyncSetting(paneEl2).autoWireText("additionalSuffixOfDatabaseName",{holdValue:!0}).addApplyButton(["additionalSuffixOfDatabaseName"]);this.addOnSaved("additionalSuffixOfDatabaseName",(async key2=>{Logger("Suffix has been changed. Reopening database...",LOG_LEVEL_NOTICE);await this.plugin.$$initializeDatabase()}));new LiveSyncSetting(paneEl2).autoWireDropDown("hashAlg",{options:{"":"Old Algorithm",xxhash32:"xxhash32 (Fast but less collision resistance)",xxhash64:"xxhash64 (Fastest)","mixed-purejs":"PureJS fallback (Fast, W/O WebAssembly)",sha1:"Older fallback (Slow, W/O WebAssembly)"}});this.addOnSaved("hashAlg",(async()=>{await this.plugin.localDatabase._prepareHashFunctions()}))}));addPanel(paneEl,"Edge case addressing (Behaviour)").then((paneEl2=>{new LiveSyncSetting(paneEl2).autoWireToggle("doNotSuspendOnFetching");new LiveSyncSetting(paneEl2).setClass("wizardHidden").autoWireToggle("doNotDeleteFolder")}));addPanel(paneEl,"Edge case addressing (Processing)").then((paneEl2=>{new LiveSyncSetting(paneEl2).autoWireToggle("disableWorkerForGeneratingChunks");new LiveSyncSetting(paneEl2).autoWireToggle("processSmallFilesInUIThread",{onUpdate:visibleOnly((()=>this.isConfiguredAs("disableWorkerForGeneratingChunks",!1)))})}));addPanel(paneEl,"Compatibility (Trouble addressed)").then((paneEl2=>{new LiveSyncSetting(paneEl2).autoWireToggle("disableCheckingConfigMismatch")}))}));addPane(containerEl,"Maintenance","🎛️",70,!0).then((paneEl=>{this.createEl(paneEl,"div",{text:"The remote database is locked for synchronization to prevent vault corruption because this device isn't marked as 'resolved'. Please backup your vault, reset the local database, and select 'Mark this device as resolved'. This warning will persist until the device is confirmed as resolved by replication.",cls:"op-warn"},(c3=>{this.createEl(c3,"button",{text:"I've made a backup, mark this device 'resolved'",cls:"mod-warning"},(e3=>{e3.addEventListener("click",(()=>{fireAndForget((async()=>{await this.plugin.$$markRemoteResolved();this.display()}))}))}))}),visibleOnly((()=>{var _a7,_b3;return null==(_b3=null==(_a7=this.plugin)?void 0:_a7.replicator)?void 0:_b3.remoteLockedAndDeviceNotAccepted})));this.createEl(paneEl,"div",{text:"To prevent unwanted vault corruption, the remote database has been locked for synchronization. (This device is marked 'resolved') When all your devices are marked 'resolved', unlock the database. This warning kept showing until confirming the device is resolved by the replication",cls:"op-warn"},(c3=>this.createEl(c3,"button",{text:"I'm ready, unlock the database",cls:"mod-warning"},(e3=>{e3.addEventListener("click",(()=>{fireAndForget((async()=>{await this.plugin.$$markRemoteUnlocked();this.display()}))}))}))),visibleOnly((()=>{var _a7,_b3;return null==(_b3=null==(_a7=this.plugin)?void 0:_a7.replicator)?void 0:_b3.remoteLocked})));addPanel(paneEl,"Scram!").then((paneEl2=>{new LiveSyncSetting(paneEl2).setName("Lock Server").setDesc("Lock the remote server to prevent synchronization with other devices.").addButton((button=>button.setButtonText("Lock").setDisabled(!1).setWarning().onClick((async()=>{await this.plugin.$$markRemoteLocked()})))).addOnUpdate(onlyOnCouchDBOrMinIO);new LiveSyncSetting(paneEl2).setName("Emergency restart").setDesc("Disables all synchronization and restart.").addButton((button=>button.setButtonText("Flag and restart").setDisabled(!1).setWarning().onClick((async()=>{await this.plugin.storageAccess.writeFileAuto(FLAGMD_REDFLAG,"");this.plugin.$$performRestart()}))))}));addPanel(paneEl,"Syncing",(()=>{}),onlyOnCouchDBOrMinIO).then((paneEl2=>{new LiveSyncSetting(paneEl2).setName("Resend").setDesc("Resend all chunks to the remote.").addButton((button=>button.setButtonText("Send chunks").setWarning().setDisabled(!1).onClick((async()=>{this.plugin.replicator instanceof LiveSyncCouchDBReplicator&&await this.plugin.replicator.sendChunks(this.plugin.settings,void 0,!0,0)})))).addOnUpdate(onlyOnCouchDB);new LiveSyncSetting(paneEl2).setName("Reset journal received history").setDesc("Initialise journal received history. On the next sync, every item except this device sent will be downloaded again.").addButton((button=>button.setButtonText("Reset received").setWarning().setDisabled(!1).onClick((async()=>{await this.getMinioJournalSyncClient().updateCheckPointInfo((info3=>({...info3,receivedFiles:new Set,knownIDs:new Set})));Logger("Journal received history has been cleared.",LOG_LEVEL_NOTICE)})))).addOnUpdate(onlyOnMinIO);new LiveSyncSetting(paneEl2).setName("Reset journal sent history").setDesc("Initialise journal sent history. On the next sync, every item except this device received will be sent again.").addButton((button=>button.setButtonText("Reset sent history").setWarning().setDisabled(!1).onClick((async()=>{await this.getMinioJournalSyncClient().updateCheckPointInfo((info3=>({...info3,lastLocalSeq:0,sentIDs:new Set,sentFiles:new Set})));Logger("Journal sent history has been cleared.",LOG_LEVEL_NOTICE)})))).addOnUpdate(onlyOnMinIO)}));addPanel(paneEl,"Garbage Collection (Beta)",(e3=>e3),onlyOnP2POrCouchDB).then((paneEl2=>{new LiveSyncSetting(paneEl2).setName("Remove all orphaned chunks").setDesc("Remove all orphaned chunks from the local database.").addButton((button=>button.setButtonText("Remove").setWarning().setDisabled(!1).onClick((async()=>{var _a7;await(null==(_a7=this.plugin.getAddOn(LocalDatabaseMaintenance.name))?void 0:_a7.removeUnusedChunks())}))));new LiveSyncSetting(paneEl2).setName("Resurrect deleted chunks").setDesc("If you have deleted chunks before fully synchronised and missed some chunks, you possibly can resurrect them.").addButton((button=>button.setButtonText("Try resurrect").setWarning().setDisabled(!1).onClick((async()=>{var _a7;await(null==(_a7=this.plugin.getAddOn(LocalDatabaseMaintenance.name))?void 0:_a7.resurrectChunks())}))));new LiveSyncSetting(paneEl2).setName("Commit File Deletion").setDesc("Completely delete all deleted documents from the local database.").addButton((button=>button.setButtonText("Delete").setWarning().setDisabled(!1).onClick((async()=>{var _a7;await(null==(_a7=this.plugin.getAddOn(LocalDatabaseMaintenance.name))?void 0:_a7.commitFileDeletion())}))))}));addPanel(paneEl,"Rebuilding Operations (Local)").then((paneEl2=>{new LiveSyncSetting(paneEl2).setName("Fetch from remote").setDesc("Restore or reconstruct local database from remote.").addButton((button=>button.setButtonText("Fetch").setWarning().setDisabled(!1).onClick((async()=>{await this.plugin.storageAccess.writeFileAuto(FLAGMD_REDFLAG3_HR,"");this.plugin.$$performRestart()})))).addButton((button=>button.setButtonText("Fetch w/o restarting").setWarning().setDisabled(!1).onClick((async()=>{await rebuildDB("localOnly")}))));new LiveSyncSetting(paneEl2).setName("Fetch rebuilt DB (Save local documents before)").setDesc("Restore or reconstruct local database from remote database but use local chunks.").addButton((button=>button.setButtonText("Save and Fetch").setWarning().setDisabled(!1).onClick((async()=>{await rebuildDB("localOnlyWithChunks")})))).addOnUpdate(onlyOnCouchDB)}));addPanel(paneEl,"Total Overhaul",(()=>{}),onlyOnCouchDBOrMinIO).then((paneEl2=>{new LiveSyncSetting(paneEl2).setName("Rebuild everything").setDesc("Rebuild local and remote database with local files.").addButton((button=>button.setButtonText("Rebuild").setWarning().setDisabled(!1).onClick((async()=>{await this.plugin.storageAccess.writeFileAuto(FLAGMD_REDFLAG2_HR,"");this.plugin.$$performRestart()})))).addButton((button=>button.setButtonText("Rebuild w/o restarting").setWarning().setDisabled(!1).onClick((async()=>{await rebuildDB("rebuildBothByThisDevice")}))))}));addPanel(paneEl,"Rebuilding Operations (Remote Only)",(()=>{}),onlyOnCouchDBOrMinIO).then((paneEl2=>{new LiveSyncSetting(paneEl2).setName("Perform cleanup").setDesc("Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.").addButton((button=>button.setButtonText("Perform").setDisabled(!1).onClick((async()=>{const replicator=this.plugin.replicator;Logger("Cleanup has been began",LOG_LEVEL_NOTICE,"compaction");await replicator.compactRemote(this.editingSettings)?Logger("Cleanup has been completed!",LOG_LEVEL_NOTICE,"compaction"):Logger("Cleanup has been failed!",LOG_LEVEL_NOTICE,"compaction")})))).addOnUpdate(onlyOnCouchDB);new LiveSyncSetting(paneEl2).setName("Overwrite remote").setDesc("Overwrite remote with local DB and passphrase.").addButton((button=>button.setButtonText("Send").setWarning().setDisabled(!1).onClick((async()=>{await rebuildDB("remoteOnly")}))));new LiveSyncSetting(paneEl2).setName("Reset all journal counter").setDesc("Initialise all journal history, On the next sync, every item will be received and sent.").addButton((button=>button.setButtonText("Reset all").setWarning().setDisabled(!1).onClick((async()=>{await this.getMinioJournalSyncClient().resetCheckpointInfo();Logger("Journal exchange history has been cleared.",LOG_LEVEL_NOTICE)})))).addOnUpdate(onlyOnMinIO);new LiveSyncSetting(paneEl2).setName("Purge all journal counter").setDesc("Purge all download/upload cache.").addButton((button=>button.setButtonText("Reset all").setWarning().setDisabled(!1).onClick((async()=>{await this.getMinioJournalSyncClient().resetAllCaches();Logger("Journal download/upload cache has been cleared.",LOG_LEVEL_NOTICE)})))).addOnUpdate(onlyOnMinIO);new LiveSyncSetting(paneEl2).setName("Fresh Start Wipe").setDesc("Delete all data on the remote server.").addButton((button=>button.setButtonText("Delete").setWarning().setDisabled(!1).onClick((async()=>{await this.getMinioJournalSyncClient().updateCheckPointInfo((info3=>({...info3,receivedFiles:new Set,knownIDs:new Set,lastLocalSeq:0,sentIDs:new Set,sentFiles:new Set})));await this.resetRemoteBucket();Logger("Deleted all data on remote server",LOG_LEVEL_NOTICE)})))).addOnUpdate(onlyOnMinIO)}));addPanel(paneEl,"Reset").then((paneEl2=>{new LiveSyncSetting(paneEl2).setName("Delete local database to reset or uninstall Self-hosted LiveSync").addButton((button=>button.setButtonText("Delete").setWarning().setDisabled(!1).onClick((async()=>{await this.plugin.$$resetLocalDatabase();await this.plugin.$$initializeDatabase()}))))}))}));(function yieldNextAnimationFrame(){return currentYieldingAnimationFrame||(currentYieldingAnimationFrame=(async()=>{const ret=await function yieldAnimationFrame(){return new Promise((res2=>requestAnimationFrame(res2)))}();currentYieldingAnimationFrame=void 0;return ret})())})().then((()=>{""==this.selectedScreen?lastVersion!=this.editingSettings.lastReadUpdates?this.editingSettings.isConfigured?changeDisplay("100"):changeDisplay("110"):isAnySyncEnabled()?changeDisplay("20"):changeDisplay("110"):changeDisplay(this.selectedScreen);this.requestUpdate()}))}async dryRunGC(){await skipIfDuplicated("cleanup",(async()=>{const replicator=this.plugin.$$getReplicator();if(!(replicator instanceof LiveSyncCouchDBReplicator))return;const remoteDBConn=await replicator.connectRemoteCouchDBWithSetting(this.plugin.settings,this.plugin.$$isMobile());if("string"!=typeof remoteDBConn){await purgeUnreferencedChunks(remoteDBConn.db,!0,this.plugin.settings,!1);await purgeUnreferencedChunks(this.plugin.localDatabase.localDatabase,!0);this.plugin.localDatabase.hashCaches.clear()}else Logger(remoteDBConn)}))}async dbGC(){await skipIfDuplicated("cleanup",(async()=>{const replicator=this.plugin.$$getReplicator();if(!(replicator instanceof LiveSyncCouchDBReplicator))return;await this.plugin.$$getReplicator().markRemoteLocked(this.plugin.settings,!0,!0);const remoteDBConnection=await replicator.connectRemoteCouchDBWithSetting(this.plugin.settings,this.plugin.$$isMobile());if("string"!=typeof remoteDBConnection){await purgeUnreferencedChunks(remoteDBConnection.db,!1,this.plugin.settings,!0);await purgeUnreferencedChunks(this.plugin.localDatabase.localDatabase,!1);this.plugin.localDatabase.hashCaches.clear();await balanceChunkPurgedDBs(this.plugin.localDatabase.localDatabase,remoteDBConnection.db);this.plugin.localDatabase.refreshSettings();Logger("The remote database has been cleaned up! Other devices will be cleaned up on the next synchronisation.")}else Logger(remoteDBConnection)}))}getMinioJournalSyncClient(){const id=this.plugin.settings.accessKey,key2=this.plugin.settings.secretKey,bucket=this.plugin.settings.bucket,region=this.plugin.settings.region,endpoint=this.plugin.settings.endpoint,useCustomRequestHandler=this.plugin.settings.useCustomRequestHandler;return new JournalSyncMinio(id,key2,endpoint,bucket,this.plugin.simpleStore,this.plugin,useCustomRequestHandler,region)}async resetRemoteBucket(){const minioJournal=this.getMinioJournalSyncClient();await minioJournal.resetBucket()}};ModuleObsidianSettingDialogue=class extends AbstractObsidianModule{$everyOnloadStart(){this.settingTab=new ObsidianLiveSyncSettingTab(this.app,this.plugin);this.plugin.addSettingTab(this.settingTab);eventHub.onEvent("request-open-settings",(()=>this.openSetting()));eventHub.onEvent("request-open-setting-wizard",(()=>{this.openSetting();this.settingTab.enableMinimalSetup()}));return Promise.resolve(!0)}openSetting(){this.app.setting.open();this.app.setting.openTabById("obsidian-livesync")}get appId(){return`${"appId"in this.app?this.app.appId:""}`}};DocumentHistoryModal=class extends import_obsidian.Modal{constructor(app2,plugin3,file,id,revision){super(app2);this.showDiff=!1;this.revs_info=[];this.currentText="";this.currentDeleted=!1;this.BlobURLs=new Map;this.plugin=plugin3;this.file=file instanceof import_obsidian.TFile?getPathFromTFile(file):file;this.id=id;this.initialRev=revision;!file&&id&&(this.file=this.plugin.$$id2path(id));"1"==localStorage.getItem("ols-history-highlightdiff")&&(this.showDiff=!0)}async loadFile(initialRev){var _a7,_b3;this.id||(this.id=await this.plugin.$$path2id(this.file));const db=this.plugin.localDatabase;try{const w2=await db.getRaw(this.id,{revs_info:!0});this.revs_info=null!=(_b3=null==(_a7=w2._revs_info)?void 0:_a7.filter((e3=>"available"==(null==e3?void 0:e3.status))))?_b3:[];this.range.max=`${Math.max(this.revs_info.length-1,0)}`;this.range.value=this.range.max;this.fileInfo.setText(`${this.file} / ${this.revs_info.length} revisions`);await this.loadRevs(initialRev)}catch(ex){if(isErrorOfMissingDoc(ex)){this.range.max="0";this.range.value="";this.range.disabled=!0;this.contentView.setText("We don't have any history for this note.")}else{this.contentView.setText("Error while loading file.");Logger(ex,LOG_LEVEL_VERBOSE)}}}async loadRevs(initialRev){if(0==this.revs_info.length)return;if(initialRev){const rIndex=this.revs_info.findIndex((e3=>e3.rev==initialRev));rIndex>=0&&(this.range.value=""+(this.revs_info.length-1-rIndex))}const index6=this.revs_info.length-1-this.range.value/1,rev3=this.revs_info[index6];await this.showExactRev(rev3.rev)}revokeURL(key2){const v2=this.BlobURLs.get(key2);v2&&URL.revokeObjectURL(v2);this.BlobURLs.delete(key2)}generateBlobURL(key2,data){this.revokeURL(key2);const v2=URL.createObjectURL(new Blob([data],{endings:"transparent",type:"application/octet-stream"}));this.BlobURLs.set(key2,v2);return v2}async showExactRev(rev3){const db=this.plugin.localDatabase,w2=await db.getDBEntry(this.file,{rev:rev3},!1,!1,!0);this.currentText="";this.currentDeleted=!1;if(!1===w2){this.currentDeleted=!0;this.info.innerHTML="";this.contentView.innerHTML=`Could not read this revision<br>(${rev3})`}else{this.currentDoc=w2;this.info.innerHTML=`Modified:${new Date(w2.mtime).toLocaleString()}`;let result;const w1data=readDocument(w2);this.currentDeleted=!!w2.deleted;if(this.showDiff){const prevRevIdx=this.revs_info.length-1-(this.range.value/1-1);if(prevRevIdx>=0&&prevRevIdx<this.revs_info.length){const oldRev=this.revs_info[prevRevIdx].rev,w22=await db.getDBEntry(this.file,{rev:oldRev},!1,!1,!0);if(0!=w22)if("string"==typeof w1data){result="";const dmp=new import_diff_match_patch.diff_match_patch,w2data=readDocument(w22),diff=dmp.diff_main(w2data,w1data);dmp.diff_cleanupSemantic(diff);for(const v2 of diff){const x1=v2[0],x2=v2[1];x1==import_diff_match_patch.DIFF_DELETE?result+="<span class='history-deleted'>"+escapeStringToHTML(x2)+"</span>":x1==import_diff_match_patch.DIFF_EQUAL?result+="<span class='history-normal'>"+escapeStringToHTML(x2)+"</span>":x1==import_diff_match_patch.DIFF_INSERT&&(result+="<span class='history-added'>"+escapeStringToHTML(x2)+"</span>")}result=result.replace(/\n/g,"<br>")}else if(isImage(this.file)){result=`<div class='ls-imgdiff-wrap'>\n <div class='overlay'>\n <img class='img-base' src="${this.generateBlobURL("base",w1data)}">\n <img class='img-overlay' src='${this.generateBlobURL("overlay",readDocument(w22))}'>\n </div>\n</div>`;this.contentView.removeClass("op-pre")}}}if(null==result)if("string"!=typeof w1data){if(isImage(this.file)){result=`<div class='ls-imgdiff-wrap'>\n<div class='overlay'>\n<img class='img-base' src="${this.generateBlobURL("base",w1data)}">\n</div>\n</div>`;this.contentView.removeClass("op-pre")}}else result=escapeStringToHTML(w1data);null==result&&(result="string"==typeof w1data?escapeStringToHTML(w1data):"Binary file");this.contentView.innerHTML=(this.currentDeleted?"(At this revision, the file has been deleted)\n":"")+result}}onOpen(){const{contentEl}=this;this.titleEl.setText("Document History");contentEl.empty();this.fileInfo=contentEl.createDiv("");this.fileInfo.addClass("op-info");const divView=contentEl.createDiv("");divView.addClass("op-flex");divView.createEl("input",{type:"range"},(e3=>{this.range=e3;e3.addEventListener("change",(e4=>{scheduleOnceIfDuplicated("loadRevs",(()=>this.loadRevs()))}));e3.addEventListener("input",(e4=>{scheduleOnceIfDuplicated("loadRevs",(()=>this.loadRevs()))}))}));contentEl.createDiv("",(e3=>{e3.createEl("label",{},(label=>{label.appendChild(createEl("input",{type:"checkbox"},(checkbox=>{this.showDiff&&(checkbox.checked=!0);checkbox.addEventListener("input",(evt=>{this.showDiff=checkbox.checked;localStorage.setItem("ols-history-highlightdiff",1==this.showDiff?"1":"");scheduleOnceIfDuplicated("loadRevs",(()=>this.loadRevs()))}))})));label.appendText("Highlight diff")}))})).addClass("op-info");this.info=contentEl.createDiv("");this.info.addClass("op-info");fireAndForget((async()=>await this.loadFile(this.initialRev)));const div=contentEl.createDiv({text:"Loading old revisions..."});this.contentView=div;div.addClass("op-scrollable");div.addClass("op-pre");const buttons=contentEl.createDiv("");buttons.createEl("button",{text:"Copy to clipboard"},(e3=>{e3.addClass("mod-cta");e3.addEventListener("click",(()=>{fireAndForget((async()=>{await navigator.clipboard.writeText(this.currentText);Logger("Old content copied to clipboard",LOG_LEVEL_NOTICE)}))}))}));const focusFile=async path2=>{const targetFile=this.plugin.app.vault.getFileByPath(path2);if(targetFile){const leaf=this.plugin.app.workspace.getLeaf(!1);await leaf.openFile(targetFile)}else Logger("Unable to display the file in the editor",LOG_LEVEL_NOTICE)};buttons.createEl("button",{text:"Back to this revision"},(e3=>{e3.addClass("mod-cta");e3.addEventListener("click",(()=>{fireAndForget((async()=>{const pathToWrite=function stripPrefix(prefixedPath){const[prefix,body]=prefixedPath.split(":",2);return body||prefix}(this.file);if(!isValidPath(pathToWrite)){Logger("Path is not valid to write content.",LOG_LEVEL_INFO);return}if(!this.currentDoc){Logger("No active file loaded.",LOG_LEVEL_INFO);return}const d4=readContent(this.currentDoc);await this.plugin.storageAccess.writeHiddenFileAuto(pathToWrite,d4);await focusFile(pathToWrite);this.close()}))}))}))}onClose(){const{contentEl}=this;contentEl.empty();this.BlobURLs.forEach((value=>{console.log(value);value&&URL.revokeObjectURL(value)}))}};require("obsidian");ModuleObsidianDocumentHistory=class extends AbstractObsidianModule{$everyOnloadStart(){this.addCommand({id:"livesync-history",name:"Show history",callback:()=>{const file=this.core.$$getActiveFilePath();file&&this.showHistory(file,void 0)}});this.addCommand({id:"livesync-filehistory",name:"Pick a file to show history",callback:()=>{fireAndForget((async()=>await this.fileHistory()))}});eventHub.onEvent("show-history",(({file,fileOnDB})=>{this.showHistory(file,fileOnDB._id)}));return Promise.resolve(!0)}showHistory(file,id){new DocumentHistoryModal(this.app,this.plugin,file,id).open()}async fileHistory(){const notes=[];for await(const doc of this.localDatabase.findAllDocs())notes.push({id:doc._id,path:getPath2(doc),dispPath:getPath2(doc),mtime:doc.mtime});notes.sort(((a2,b3)=>b3.mtime-a2.mtime));const notesList=notes.map((e3=>e3.dispPath)),target=await this.core.confirm.askSelectString("File to view History",notesList);if(target){const targetId=notes.find((e3=>e3.dispPath==target));this.showHistory(targetId.path,targetId.id)}}};root_111=template('<div class=" svelte-1vjy5r1">Gathering information...</div>');root_24=template('<th class="svelte-1vjy5r1">Chunks</th>');root_33=template('<div class=" svelte-1vjy5r1"></div>');root_44=template('<div class="svelte-1vjy5r1"><button class="svelte-1vjy5r1">+1 week</button></div>');root_64=template('<a class="svelte-1vjy5r1"> </a>');root_83=template('<td class="svelte-1vjy5r1"> </td>');root_53=template('<tr class="svelte-1vjy5r1"><td class="mtime svelte-1vjy5r1"> </td><td class="path svelte-1vjy5r1"><div class="filenames svelte-1vjy5r1"><span class="path svelte-1vjy5r1"> </span> <span class="filename svelte-1vjy5r1"><a class="svelte-1vjy5r1"> </a></span></div></td><td class="svelte-1vjy5r1"><span class="rev svelte-1vjy5r1"><!></span></td><td class="svelte-1vjy5r1"> </td><!></tr>');root_93=template('<div class=" svelte-1vjy5r1"></div>');root_102=template('<div class="svelte-1vjy5r1"><button class="svelte-1vjy5r1">+1 week</button></div>');root6=template('<div class="globalhistory svelte-1vjy5r1"><h1 class="svelte-1vjy5r1">Vault history</h1> <div class="control svelte-1vjy5r1"><div class="row svelte-1vjy5r1"><label for="" class="svelte-1vjy5r1">From:</label><input type="date" class="svelte-1vjy5r1"></div> <div class="row svelte-1vjy5r1"><label for="" class="svelte-1vjy5r1">To:</label><input type="date" class="svelte-1vjy5r1"></div> <div class="row svelte-1vjy5r1"><label for="" class="svelte-1vjy5r1">Info:</label> <label class="svelte-1vjy5r1"><input type="checkbox" class="svelte-1vjy5r1"><span class="svelte-1vjy5r1">Diff</span></label> <label class="svelte-1vjy5r1"><input type="checkbox" class="svelte-1vjy5r1"><span class="svelte-1vjy5r1">Chunks</span></label> <label class="svelte-1vjy5r1"><input type="checkbox" class="svelte-1vjy5r1"><span class="svelte-1vjy5r1">File integrity</span></label></div></div> <!> <table class="svelte-1vjy5r1"><tbody class="svelte-1vjy5r1"><tr class="svelte-1vjy5r1"><th class="svelte-1vjy5r1">Date</th><th class="svelte-1vjy5r1">Path</th><th class="svelte-1vjy5r1">Rev</th><th class="svelte-1vjy5r1">Stat</th><!></tr><tr class="svelte-1vjy5r1"><td colspan="5" class="more svelte-1vjy5r1"><!></td></tr><!><tr class="svelte-1vjy5r1"><td colspan="5" class="more svelte-1vjy5r1"><!></td></tr></tbody></table></div>');$$css7={hash:"svelte-1vjy5r1",code:".svelte-1vjy5r1 {box-sizing:border-box;}.globalhistory.svelte-1vjy5r1 {margin-bottom:2em;}table.svelte-1vjy5r1 {width:100%;}.more.svelte-1vjy5r1 > div:where(.svelte-1vjy5r1) {display:flex;}.more.svelte-1vjy5r1 > div:where(.svelte-1vjy5r1) > button:where(.svelte-1vjy5r1) {flex-grow:1;}th.svelte-1vjy5r1 {position:sticky;top:0;backdrop-filter:blur(10px);}td.mtime.svelte-1vjy5r1 {white-space:break-spaces;}td.path.svelte-1vjy5r1 {word-break:break-word;}.row.svelte-1vjy5r1 {display:flex;flex-direction:row;flex-wrap:wrap;}.row.svelte-1vjy5r1 > label:where(.svelte-1vjy5r1) {display:flex;align-items:center;min-width:5em;}.row.svelte-1vjy5r1 > input:where(.svelte-1vjy5r1) {flex-grow:1;}.filenames.svelte-1vjy5r1 {display:flex;flex-direction:column;}.filenames.svelte-1vjy5r1 > .path:where(.svelte-1vjy5r1) {font-size:70%;}.rev.svelte-1vjy5r1 {text-overflow:ellipsis;max-width:3em;display:inline-block;overflow:hidden;white-space:nowrap;}"};GlobalHistoryView=class extends SvelteItemView{constructor(leaf,plugin3){super(leaf);this.icon="clock";this.title="";this.navigation=!0;this.plugin=plugin3}instantiateComponent(target){return mount(GlobalHistory,{target,props:{plugin:this.plugin}})}getIcon(){return"clock"}getViewType(){return"global-history"}getDisplayText(){return"Vault history"}};ModuleObsidianGlobalHistory=class extends AbstractObsidianModule{$everyOnloadStart(){this.addCommand({id:"livesync-global-history",name:"Show vault history",callback:()=>{this.showGlobalHistory()}});this.registerView("global-history",(leaf=>new GlobalHistoryView(leaf,this.plugin)));return Promise.resolve(!0)}showGlobalHistory(){this.core.$$showView("global-history")}};SETTING_HEADER="````yaml:livesync-setting\n";ModuleObsidianSettingsAsMarkdown=class extends AbstractObsidianModule{$everyOnloadStart(){this.addCommand({id:"livesync-export-config",name:"Write setting markdown manually",checkCallback:checking=>{if(checking)return""!=this.settings.settingSyncFile;fireAndForget((async()=>{await this.core.$$saveSettingData()}))}});this.addCommand({id:"livesync-import-config",name:"Parse setting file",editorCheckCallback:(checking,editor,ctx)=>{if(checking){const doc=editor.getValue();return""!=this.extractSettingFromWholeText(doc).body}if(ctx.file){const file=ctx.file;fireAndForget((async()=>await this.checkAndApplySettingFromMarkdown(file.path,!1)))}}});eventHub.onEvent("event-file-changed",(info3=>{fireAndForget((()=>this.checkAndApplySettingFromMarkdown(info3.file,info3.automated)))}));eventHub.onEvent("setting-saved",(settings=>{""!=settings.settingSyncFile&&fireAndForget((()=>this.saveSettingToMarkdown(settings.settingSyncFile)))}));return Promise.resolve(!0)}extractSettingFromWholeText(data){if(-1===data.indexOf(SETTING_HEADER))return{preamble:data,body:"",postscript:""};const startMarkerPos=data.indexOf(SETTING_HEADER),dataStartPos=-1==startMarkerPos?data.length:startMarkerPos,endMarkerPos=-1==startMarkerPos?data.length:data.indexOf("\n````",dataStartPos),dataEndPos=-1==endMarkerPos?data.length:endMarkerPos,body=data.substring(dataStartPos+26,dataEndPos);return{preamble:data.substring(0,dataStartPos),body,postscript:data.substring(dataEndPos+5+1)}}async parseSettingFromMarkdown(filename,data){if(!await this.core.storageAccess.isExists(filename))return{preamble:"",body:"",postscript:""};if(data)return this.extractSettingFromWholeText(data);const parseData=null!=data?data:await this.core.storageAccess.readFileText(filename);return this.extractSettingFromWholeText(parseData)}async checkAndApplySettingFromMarkdown(filename,automated){if(automated&&!this.settings.notifyAllSettingSyncFile&&(!this.settings.settingSyncFile||this.settings.settingSyncFile!=filename)){this._log(`Setting file (${filename}) does not match the current configuration. skipped.`,-1);return}const{body}=await this.parseSettingFromMarkdown(filename);let newSetting={};try{newSetting=(0,import_obsidian.parseYaml)(body)}catch(ex){this._log("Could not parse YAML",LOG_LEVEL_NOTICE);this._log(ex,LOG_LEVEL_VERBOSE);return}if("settingSyncFile"in newSetting&&newSetting.settingSyncFile!=filename){this._log("This setting file seems to backed up one. Please fix the filename or settingSyncFile value.",automated?LOG_LEVEL_INFO:LOG_LEVEL_NOTICE);return}let settingToApply={...DEFAULT_SETTINGS};settingToApply={...settingToApply,...newSetting};if(!(null==settingToApply?void 0:settingToApply.writeCredentialsForSettingSync)){settingToApply.couchDB_USER=this.settings.couchDB_USER;settingToApply.couchDB_PASSWORD=this.settings.couchDB_PASSWORD;settingToApply.passphrase=this.settings.passphrase}if(!isObjectDifferent(this.generateSettingForMarkdown(this.settings,settingToApply.writeCredentialsForSettingSync),this.generateSettingForMarkdown(settingToApply))){this._log("Setting markdown has been detected, but not changed.",automated?LOG_LEVEL_INFO:LOG_LEVEL_NOTICE);return}const addMsg=this.settings.settingSyncFile!=filename?" (This is not-active file)":"";this.core.confirm.askInPopup("apply-setting-from-md",`Setting markdown ${filename}${addMsg} has been detected. Apply this from {HERE}.`,(anchor=>{anchor.text="HERE";anchor.addEventListener("click",(()=>{fireAndForget((async()=>{const APPLY_AND_RESTART="Apply settings and restart obsidian",APPLY_AND_REBUILD="Apply settings and restart obsidian with red_flag_rebuild.md",APPLY_AND_FETCH="Apply settings and restart obsidian with red_flag_fetch.md",result=await this.core.confirm.askSelectStringDialogue("Ready for apply the setting.",[APPLY_AND_RESTART,"Apply settings",APPLY_AND_FETCH,APPLY_AND_REBUILD,"Cancel"],{defaultAction:APPLY_AND_RESTART});if("Apply settings"==result||result==APPLY_AND_RESTART||result==APPLY_AND_REBUILD||result==APPLY_AND_FETCH){this.core.settings=settingToApply;await this.core.$$saveSettingData();if("Apply settings"==result){this._log("Loaded settings have been applied!",LOG_LEVEL_NOTICE);return}result==APPLY_AND_REBUILD&&await this.core.rebuilder.scheduleRebuild();result==APPLY_AND_FETCH&&await this.core.rebuilder.scheduleFetch();this.core.$$performRestart()}}))}))}))}generateSettingForMarkdown(settings,keepCredential){const saveData={...settings||this.settings};delete saveData.encryptedCouchDBConnection;delete saveData.encryptedPassphrase;delete saveData.additionalSuffixOfDatabaseName;if(!saveData.writeCredentialsForSettingSync&&!keepCredential){delete saveData.couchDB_USER;delete saveData.couchDB_PASSWORD;delete saveData.passphrase}return saveData}async saveSettingToMarkdown(filename){const saveData=this.generateSettingForMarkdown();if(!await this.core.storageAccess.isExists(filename)){await this.core.storageAccess.ensureDir(filename);const initialContent='This file contains Self-hosted LiveSync settings as YAML.\nExcept for the `livesync-setting` code block, we can add a note for free.\n\nIf the name of this file matches the value of the "settingSyncFile" setting inside the `livesync-setting` block, LiveSync will tell us whenever the settings change. We can decide to accept or decline the remote setting. (In other words, we can back up this file by renaming it to another name).\n\nWe can perform a command in this file.\n- `Parse setting file` : load the setting from the file.\n\n**Note** Please handle it with all of your care if you have configured to write credentials in.\n\n\n';await this.core.storageAccess.writeFileAuto(filename,initialContent+SETTING_HEADER+"\n\n````")}const data=await this.core.storageAccess.readFileText(filename),{preamble,body,postscript}=this.extractSettingFromWholeText(data),newBody=(0,import_obsidian.stringifyYaml)(saveData);if(newBody==body)this._log("Markdown setting: Nothing had been changed",LOG_LEVEL_VERBOSE);else{await this.core.storageAccess.writeFileAuto(filename,preamble+SETTING_HEADER+newBody+"\n````"+postscript);this._log(`Markdown setting: ${filename} has been updated!`,LOG_LEVEL_VERBOSE)}}};ModuleInitializerFile=class extends AbstractModule{async $$performFullScan(showingNotice){this._log("Opening the key-value database",LOG_LEVEL_VERBOSE);const isInitialized=await this.core.kvDB.get("initialized")||!1;if(!this.settings.isConfigured){showingNotice&&this._log("LiveSync is not configured yet. Synchronising between the storage and the local database is now prevented.",LOG_LEVEL_NOTICE,"syncAll");return}showingNotice&&this._log("Initializing",LOG_LEVEL_NOTICE,"syncAll");this._log("Initialize and checking database files");this._log("Checking deleted files");await this.collectDeletedFiles();this._log("Collecting local files on the storage",LOG_LEVEL_VERBOSE);const filesStorageSrc=this.core.storageAccess.getFiles(),_filesStorage=[];for(const f4 of filesStorageSrc)await this.core.$$isTargetFile(f4.path,f4!=filesStorageSrc[0])&&_filesStorage.push(f4);const convertCase=path2=>this.settings.handleFilenameCaseSensitive?path2:path2.toLowerCase(),storageFileNameMap=Object.fromEntries(_filesStorage.map((e3=>[e3.path,e3]))),storageFileNames=Object.keys(storageFileNameMap),storageFileNameCapsPair=storageFileNames.map((e3=>[e3,convertCase(e3)])),storageFileNameCI2CS=Object.fromEntries(storageFileNameCapsPair.map((e3=>[e3[1],e3[0]])));this._log("Collecting local files on the DB",LOG_LEVEL_VERBOSE);const _DBEntries=[];let count=0;for await(const doc of this.localDatabase.findAllNormalDocs()){count++;count%25==0&&this._log(`Collecting local files on the DB: ${count}`,showingNotice?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,"syncAll");const path2=getPath2(doc);if(isValidPath(path2)&&await this.core.$$isTargetFile(path2,!0)){if(!(entry=doc,"children"in entry)){this._log(`Invalid entry: ${path2}`,LOG_LEVEL_INFO);continue}_DBEntries.push(doc)}}var entry;const databaseFileNameMap=Object.fromEntries(_DBEntries.map((e3=>[getPath2(e3),e3]))),databaseFileNames=Object.keys(databaseFileNameMap),databaseFileNameCapsPair=databaseFileNames.map((e3=>[e3,convertCase(e3)])),databaseFileNameCI2CS=Object.fromEntries(databaseFileNameCapsPair.map((e3=>[e3[1],e3[0]]))),allFiles=unique([...Object.keys(databaseFileNameCI2CS),...Object.keys(storageFileNameCI2CS)]);this._log(`Total files in the database: ${databaseFileNames.length}`,LOG_LEVEL_VERBOSE,"syncAll");this._log(`Total files in the storage: ${storageFileNames.length}`,LOG_LEVEL_VERBOSE,"syncAll");this._log(`Total files: ${allFiles.length}`,LOG_LEVEL_VERBOSE,"syncAll");const filesExistOnlyInStorage=allFiles.filter((e3=>!databaseFileNameCI2CS[e3])),filesExistOnlyInDatabase=allFiles.filter((e3=>!storageFileNameCI2CS[e3])),filesExistBoth=allFiles.filter((e3=>databaseFileNameCI2CS[e3]&&storageFileNameCI2CS[e3]));this._log(`Files exist only in storage: ${filesExistOnlyInStorage.length}`,LOG_LEVEL_VERBOSE,"syncAll");this._log(`Files exist only in database: ${filesExistOnlyInDatabase.length}`,LOG_LEVEL_VERBOSE,"syncAll");this._log(`Files exist both in storage and database: ${filesExistBoth.length}`,LOG_LEVEL_VERBOSE,"syncAll");this._log("Synchronising...");const processStatus={},logLevel=showingNotice?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO,updateLog=throttle(((key2,msg)=>{processStatus[key2]=msg;const log2=Object.values(processStatus).join("\n");this._log(log2,logLevel,"syncAll")}),25),initProcess=[],runAll=async(procedureName,objects,callback)=>{if(0==objects.length){this._log(`${procedureName}: Nothing to do`);return}this._log(procedureName);if(!this.localDatabase.isReady)throw Error("Database is not ready!");let success=0,failed2=0,total=0;for await(const result of async function*withConcurrency(iterable,callback,concurrency){const processes=new Set,mapTaskToPromise=new Map;let serial=0;const enqueue=item=>{const idx2=serial++,promise=(async()=>[idx2,await callback(item)])();processes.add(promise);mapTaskToPromise.set(idx2,promise)},consume=async()=>{const r4=await Promise.race(processes),item=mapTaskToPromise.get(r4[0]);processes.delete(item);mapTaskToPromise.delete(r4[0]);return r4[1]};for await(const t3 of iterable){for(;processes.size>=concurrency;)yield await consume();enqueue(t3)}for(;processes.size>0;)yield await consume()}(objects,(async e3=>{try{await callback(e3);return!0}catch(ex){this._log(`Error while ${procedureName}`,LOG_LEVEL_NOTICE);this._log(ex,LOG_LEVEL_VERBOSE);return!1}}),10)){result?success++:failed2++;total++;const msg2=`${procedureName}: DONE:${success}, FAILED:${failed2}, LAST:${objects.length-total}`;updateLog(procedureName,msg2)}updateLog(procedureName,`${procedureName} All done: DONE:${success}, FAILED:${failed2}`)};initProcess.push(runAll("UPDATE DATABASE",filesExistOnlyInStorage,(async e3=>{const file=storageFileNameMap[storageFileNameCI2CS[e3]];if(this.core.$$isFileSizeExceeded(file.stat.size))this._log(`UPDATE DATABASE: ${e3} has been skipped due to file size exceeding the limit`,logLevel);else{const path2=file.path;await this.core.fileHandler.storeFileToDB(file);eventHub.emitEvent("event-file-changed",{file:path2,automated:!0})}})));initProcess.push(runAll("UPDATE STORAGE",filesExistOnlyInDatabase,(async e3=>{var _a7;const w2=databaseFileNameMap[databaseFileNameCI2CS[e3]],path2=null!=(_a7=getPath2(w2))?_a7:e3;if(!w2||w2.deleted||w2._deleted)w2?this._log(`Deletion history skipped: ${path2}`,LOG_LEVEL_VERBOSE):this._log(`entry not found: ${path2}`);else if(this.core.$$isFileSizeExceeded(w2.size))this._log(`UPDATE STORAGE: ${path2} has been skipped due to file size exceeding the limit`,logLevel);else{await this.core.fileHandler.dbToStorage(path2,null,!0);eventHub.emitEvent("event-file-changed",{file:e3,automated:!0});this._log(`Check or pull from db:${path2} OK`)}})));const fileMap=filesExistBoth.map((path2=>({file:storageFileNameMap[storageFileNameCI2CS[path2]],doc:databaseFileNameMap[databaseFileNameCI2CS[path2]]})));initProcess.push(runAll("SYNC DATABASE AND STORAGE",fileMap,(async e3=>{const{file,doc}=e3;this.core.$$isFileSizeExceeded(file.stat.size)||this.core.$$isFileSizeExceeded(doc.size)?this._log(`SYNC DATABASE AND STORAGE: ${getPath2(doc)} has been skipped due to file size exceeding the limit`,logLevel):await this.syncFileBetweenDBandStorage(file,doc)})));await Promise.all(initProcess);this._log("Initialized, NOW TRACKING!");isInitialized||await this.core.kvDB.set("initialized",!0);showingNotice&&this._log("Initialize done!",LOG_LEVEL_NOTICE,"syncAll")}async syncFileBetweenDBandStorage(file,doc){if(!doc)throw new Error(`Missing doc:${file.path}`);if("path"in file){const w2=this.core.storageAccess.getFileStub(file.path);if(!w2)throw new Error(`Missing file:${file.path}`);file=w2}switch(compareFileFreshness(file,doc)){case BASE_IS_NEW:if(this.core.$$isFileSizeExceeded(file.stat.size))this._log(`STORAGE -> DB : ${file.path} has been skipped due to file size exceeding the limit`,LOG_LEVEL_NOTICE);else{this._log("STORAGE -> DB :"+file.path);await this.core.fileHandler.storeFileToDB(file)}break;case TARGET_IS_NEW:if(!this.core.$$isFileSizeExceeded(doc.size)){this._log("STORAGE <- DB :"+file.path);await this.core.fileHandler.dbToStorage(doc,stripAllPrefixes(file.path),!0)?eventHub.emitEvent("event-file-changed",{file:file.path,automated:!0}):this._log(`STORAGE <- DB : Cloud not read ${file.path}, possibly deleted`,LOG_LEVEL_NOTICE);return caches}this._log(`STORAGE <- DB : ${file.path} has been skipped due to file size exceeding the limit`,LOG_LEVEL_NOTICE);break;case EVEN:this._log("STORAGE == DB :"+file.path,-1);break;default:this._log("STORAGE ?? DB :"+file.path+" Something got weird")}}async collectDeletedFiles(){const limitDays=this.settings.automaticallyDeleteMetadataOfDeletedFiles;if(limitDays<=0)return;this._log("Checking expired file history");const limit=Date.now()-864e5*limitDays,notes=[];for await(const doc of this.localDatabase.findAllDocs({conflicts:!0}))isAnyNote(doc)&&doc.deleted&&doc.mtime-limit<0&¬es.push({path:getPath2(doc),mtime:doc.mtime,ttl:(doc.mtime-limit)/1e3/86400,doc});if(0!=notes.length){for(const v2 of notes){this._log(`Deletion history expired: ${v2.path}`);const delDoc=v2.doc;delDoc._deleted=!0;await this.localDatabase.putRaw(delDoc)}this._log("Checking expired file history done")}else{this._log("There are no old documents");this._log("Checking expired file history done")}}async $$initializeDatabase(showingNotice=!1,reopenDatabase=!0){this.core.$$resetIsReady();if(!reopenDatabase||await this.core.$$openDatabase()){this.localDatabase.isReady&&await this.core.$$performFullScan(showingNotice);if(!await this.core.$everyOnDatabaseInitialized(showingNotice)){this._log("Initializing database has been failed on some module",LOG_LEVEL_NOTICE);return!1}this.core.$$markIsReady();await this.core.$everyCommitPendingFileEvent();return!0}this.core.$$resetIsReady();return!1}};ModuleKeyValueDB=class extends AbstractModule{tryCloseKvDB(){var _a7;try{null==(_a7=this.core.kvDB)||_a7.close();return!0}catch(e3){this._log("Failed to close KeyValueDB",LOG_LEVEL_VERBOSE);this._log(e3);return!1}}async openKeyValueDB(){await delay(10);try{this.tryCloseKvDB();await delay(10);await yieldMicrotask();this.core.kvDB=await OpenKeyValueDatabase(this.core.$$getVaultName()+"-livesync-kv");await yieldMicrotask();await delay(100)}catch(e3){this.core.kvDB=void 0;this._log("Failed to open KeyValueDB",LOG_LEVEL_NOTICE);this._log(e3,LOG_LEVEL_VERBOSE);return!1}return!0}$allOnDBUnload(db){this.core.kvDB&&this.core.kvDB.close()}$allOnDBClose(db){this.core.kvDB&&this.core.kvDB.close()}async $everyOnloadAfterLoadSettings(){if(!await this.openKeyValueDB())return!1;this.core.simpleStore=this.core.$$getSimpleStore("os");return Promise.resolve(!0)}$$getSimpleStore(kind){const prefix=`${kind}-`;return{get:async key2=>await this.core.kvDB.get(`${prefix}${key2}`),set:async(key2,value)=>{await this.core.kvDB.set(`${prefix}${key2}`,value)},delete:async key2=>{await this.core.kvDB.del(`${prefix}${key2}`)},keys:async(from,to,count)=>{const ret=this.core.kvDB.keys(IDBKeyRange.bound(`${prefix}${from||""}`,`${prefix}${to||""}`),count);return(await ret).map((e3=>e3.toString())).filter((e3=>e3.startsWith(prefix))).map((e3=>e3.substring(prefix.length)))}}}$everyOnInitializeDatabase(db){return this.openKeyValueDB()}async $everyOnResetDatabase(db){try{const kvDBKey="queued-files";await this.core.kvDB.del(kvDBKey);await this.core.kvDB.destroy();await yieldMicrotask();this.core.kvDB=await OpenKeyValueDatabase(this.core.$$getVaultName()+"-livesync-kv");await delay(100)}catch(e3){this.core.kvDB=void 0;this._log("Failed to reset KeyValueDB",LOG_LEVEL_NOTICE);this._log(e3,LOG_LEVEL_VERBOSE);return!1}return!0}};ModulePouchDB=class extends AbstractModule{$$createPouchDBInstance(name,options){const optionPass=null!=options?options:{};if(this.settings.useIndexedDBAdapter){optionPass.adapter="indexeddb";optionPass.purged_infos_limit=1;return new index_es_default(name+"-indexeddb",optionPass)}return new index_es_default(name,optionPass)}};ModuleReplicator=class extends AbstractModule{constructor(){super(...arguments);this._saveQueuedFiles=throttle((()=>{const saveData=this.replicationResultProcessor._queue.filter((e3=>null!=e3)).map((e3=>{var _a7;return null!=(_a7=null==e3?void 0:e3._id)?_a7:""}));fireAndForget((()=>this.core.kvDB.set("queued-files",saveData)))}),100);this.replicationResultProcessor=new QueueProcessor((async docs=>{if(this.settings.suspendParseReplicationResult)return;const change=docs[0];if(change)if(function isChunk(str){return str.startsWith("h:")}(change._id))globalSlipBoard2.submit("read-chunk",change._id,change);else if(!await this.core.$anyModuleParsedReplicationResultItem(change))if("versioninfo"!=change.type){if(change._id!=SYNCINFO_ID&&!change._id.startsWith("_design")&&isAnyNote(change)){const docPath=getPath2(change);if(!await this.core.$$isTargetFile(docPath)){Logger(`Skipped: ${docPath}`,LOG_LEVEL_VERBOSE);return}this.databaseQueuedProcessor._isSuspended&&Logger(`Processing scheduled: ${docPath}`,LOG_LEVEL_INFO);const size=change.size;if(this.core.$$isFileSizeExceeded(size)){Logger(`Processing ${docPath} has been skipped due to file size exceeding the limit`,LOG_LEVEL_NOTICE);return}this.databaseQueuedProcessor.enqueue(change)}}else if(change.version>10){this.core.replicator.closeReplication();Logger("Remote database updated to incompatible version. update your Self-hosted LiveSync plugin.",LOG_LEVEL_NOTICE)}}),{batchSize:1,suspended:!0,concurrentLimit:100,delay:0,totalRemainingReactiveSource:this.core.replicationResultCount}).replaceEnqueueProcessor(((queue2,newItem)=>[...queue2.filter((e3=>e3._id!=newItem._id)),newItem])).startPipeline().onUpdateProgress((()=>{this.saveQueuedFiles()}));this.databaseQueuedProcessor=new QueueProcessor((async docs=>{var _a7;const dbDoc=docs[0],path2=getPath2(dbDoc),doc=await this.localDatabase.getDBEntryFromMeta({...dbDoc},{},!1,!0,!0);doc?await this.core.$anyProcessOptionalSyncFiles(dbDoc)||(isValidPath(getPath2(doc))?this.storageApplyingProcessor.enqueue(doc):Logger(`Skipped: ${path2} (${doc._id.substring(0,8)})`,LOG_LEVEL_VERBOSE)):Logger(`Something went wrong while gathering content of ${path2} (${dbDoc._id.substring(0,8)}, ${null==(_a7=dbDoc._rev)?void 0:_a7.substring(0,10)}) `,LOG_LEVEL_NOTICE)}),{suspended:!0,batchSize:1,concurrentLimit:10,yieldThreshold:1,delay:0,totalRemainingReactiveSource:this.core.databaseQueueCount}).replaceEnqueueProcessor(((queue2,newItem)=>[...queue2.filter((e3=>e3._id!=newItem._id)),newItem])).startPipeline();this.storageApplyingProcessor=new QueueProcessor((async docs=>{const entry=docs[0];await this.core.$anyProcessReplicatedDoc(entry)}),{suspended:!0,batchSize:1,concurrentLimit:6,yieldThreshold:1,delay:0,totalRemainingReactiveSource:this.core.storageApplyingCount}).replaceEnqueueProcessor(((queue2,newItem)=>[...queue2.filter((e3=>e3._id!=newItem._id)),newItem])).startPipeline()}$everyOnloadAfterLoadSettings(){eventHub.onEvent("file-saved",(()=>{this.settings.syncOnSave&&!this.core.$$isSuspended()&&scheduleTask("perform-replicate-after-save",250,(()=>this.core.$$replicateByEvent()))}));return Promise.resolve(!0)}async setReplicator(){const replicator=await this.core.$anyNewReplicator();if(!replicator){this._log($msg("Replicator.Message.InitialiseFatalError"),LOG_LEVEL_NOTICE);return!1}this.core.replicator=replicator;await yieldMicrotask();return!0}$$getReplicator(){return this.core.replicator}$everyOnInitializeDatabase(db){return this.setReplicator()}$everyOnResetDatabase(db){return this.setReplicator()}async $everyBeforeReplicate(showMessage){await this.loadQueuedFiles();return!0}async $$replicate(showMessage=!1){try{updatePreviousExecutionTime("replicationOnEvent",5e3);return await this.$$_replicate(showMessage)}finally{updatePreviousExecutionTime("replicationOnEvent")}}async cleaned(showMessage){Logger("The remote database has been cleaned.",showMessage?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO);await skipIfDuplicated("cleanup",(async()=>{const message=`The remote database has been cleaned up.\nTo synchronize, this device must be also cleaned up. ${await purgeUnreferencedChunks(this.localDatabase.localDatabase,!0)} chunk(s) will be erased from this device.\nHowever, If there are many chunks to be deleted, maybe fetching again is faster.\nWe will lose the history of this device if we fetch the remote database again.\nEven if you choose to clean up, you will see this option again if you exit Obsidian and then synchronise again.`,ret=await this.core.confirm.confirmWithMessage("Cleaned",message,["Fetch again","Cleanup","Dismiss"],"Dismiss",30);"Fetch again"==ret&&await this.core.rebuilder.$performRebuildDB("localOnly");if("Cleanup"==ret){const replicator=this.core.$$getReplicator();if(!(replicator instanceof LiveSyncCouchDBReplicator))return;const remoteDB=await replicator.connectRemoteCouchDBWithSetting(this.settings,this.core.$$isMobile(),!0);if("string"==typeof remoteDB){Logger(remoteDB,LOG_LEVEL_NOTICE);return!1}await purgeUnreferencedChunks(this.localDatabase.localDatabase,!1);this.localDatabase.hashCaches.clear();if(await this.core.replicator.openReplication(this.settings,!1,showMessage,!0)){await balanceChunkPurgedDBs(this.localDatabase.localDatabase,remoteDB.db);await purgeUnreferencedChunks(this.localDatabase.localDatabase,!1);this.localDatabase.hashCaches.clear();await this.core.$$getReplicator().markRemoteResolved(this.settings);Logger("The local database has been cleaned up.",showMessage?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO)}else Logger("Replication has been cancelled. Please try it again.",showMessage?LOG_LEVEL_NOTICE:LOG_LEVEL_INFO)}}))}async $$_replicate(showMessage=!1){var _a7;if(!this.core.$$isReady())return;if(isLockAcquired("cleanup")){Logger($msg("Replicator.Message.Cleaned"),LOG_LEVEL_NOTICE);return}if(""!=this.settings.versionUpFlash){Logger($msg("Replicator.Message.VersionUpFlash"),LOG_LEVEL_NOTICE);return}if(!await this.core.$everyCommitPendingFileEvent()){Logger($msg("Replicator.Message.Pending"),LOG_LEVEL_NOTICE);return!1}if(!await this.core.$everyBeforeReplicate(showMessage)){Logger($msg("Replicator.Message.SomeModuleFailed"),LOG_LEVEL_NOTICE);return!1}const ret=await this.core.replicator.openReplication(this.settings,!1,showMessage,!1);if(!ret)if(this.core.replicator.tweakSettingsMismatched&&this.core.replicator.preferredTweakValue)await this.core.$$askResolvingMismatchedTweaks(this.core.replicator.preferredTweakValue);else if(null==(_a7=this.core.replicator)?void 0:_a7.remoteLockedAndDeviceNotAccepted)if(this.core.replicator.remoteCleaned&&this.settings.useIndexedDBAdapter)await this.cleaned(showMessage);else{const message=$msg("Replicator.Dialogue.Locked.Message"),CHOICE_FETCH=$msg("Replicator.Dialogue.Locked.Action.Fetch"),CHOICE_DISMISS=$msg("Replicator.Dialogue.Locked.Action.Dismiss"),CHOICE_UNLOCK=$msg("Replicator.Dialogue.Locked.Action.Unlock"),ret2=await this.core.confirm.askSelectStringDialogue(message,[CHOICE_FETCH,CHOICE_UNLOCK,CHOICE_DISMISS],{title:$msg("Replicator.Dialogue.Locked.Title"),defaultAction:CHOICE_DISMISS,timeout:60});if(ret2==CHOICE_FETCH){this._log($msg("Replicator.Dialogue.Locked.Message.Fetch"),LOG_LEVEL_NOTICE);await this.core.rebuilder.scheduleFetch();this.core.$$scheduleAppReload();return}if(ret2==CHOICE_UNLOCK){await this.core.replicator.markRemoteResolved(this.settings);this._log($msg("Replicator.Dialogue.Locked.Message.Unlocked"),LOG_LEVEL_NOTICE);return}}return ret}async $$replicateByEvent(){const least=this.settings.syncMinimumInterval;return least>0?function rateLimitedSharedExecution(key2,interval,proc){key2 in waitingTasks||(waitingTasks[key2]={task:void 0,previous:0,leastNext:0});if(waitingTasks[key2].task){waitingTasks[key2].leastNext=Date.now()+interval;return waitingTasks[key2].task.promise}const previous=waitingTasks[key2].previous,delay2=0==previous?0:Math.max(interval-(Date.now()-previous),0),task=promiseWithResolver();task.promise.finally((()=>{if(waitingTasks[key2].task===task){waitingTasks[key2].task=void 0;waitingTasks[key2].previous=Math.max(Date.now(),waitingTasks[key2].leastNext)}}));waitingTasks[key2]={task,previous:Date.now(),leastNext:Date.now()+interval};scheduleTask("thin-out-"+key2,delay2,(async()=>{try{task.resolve(await proc())}catch(ex){task.reject(ex)}}));return task.promise}("replicationOnEvent",least,(async()=>await this.$$replicate())):await shareRunningResult("replication",(()=>this.core.$$replicate()))}$$parseReplicationResult(docs){this.settings.suspendParseReplicationResult&&!this.replicationResultProcessor.isSuspended&&this.replicationResultProcessor.suspend();this.replicationResultProcessor.enqueueAll(docs);!this.settings.suspendParseReplicationResult&&this.replicationResultProcessor.isSuspended&&this.replicationResultProcessor.resume()}saveQueuedFiles(){this._saveQueuedFiles()}async loadQueuedFiles(){var _a7;if(this.settings.suspendParseReplicationResult)return;if(!this.settings.isConfigured)return;const chunkedIds=arrayToChunkedArray([...new Set(null!=(_a7=await this.core.kvDB.get("queued-files"))?_a7:[])],100);this.replicationResultProcessor.isSuspended&&this.replicationResultProcessor.resume();for await(const idsBatch of chunkedIds){const ret=await this.localDatabase.allDocsRaw({keys:idsBatch,include_docs:!0,limit:100}),docs=ret.rows.filter((e3=>e3.doc)).map((e3=>e3.doc)),errors=ret.rows.filter((e3=>!e3.doc&&!e3.value.deleted));if(errors.length>0){Logger("Some queued processes were not resurrected");Logger(JSON.stringify(errors),LOG_LEVEL_VERBOSE)}this.replicationResultProcessor.enqueueAll(docs)}this.replicationResultProcessor.isSuspended&&this.replicationResultProcessor.resume();await this.replicationResultProcessor.waitForAllProcessed()}$everyBeforeSuspendProcess(){this.core.replicator.closeReplication();return Promise.resolve(!0)}async $$replicateAllToServer(showingNotice=!1,sendChunksInBulkDisabled=!1){if(!this.core.$$isReady())return!1;if(!await this.core.$everyBeforeReplicate(showingNotice)){Logger($msg("Replicator.Message.SomeModuleFailed"),LOG_LEVEL_NOTICE);return!1}sendChunksInBulkDisabled||this.core.replicator instanceof LiveSyncCouchDBReplicator&&"yes"==await this.core.confirm.askYesNoDialog("Do you want to send all chunks before replication?",{defaultOption:"No",timeout:20})&&await this.core.replicator.sendChunks(this.core.settings,void 0,!0,0);if(await this.core.replicator.replicateAllToServer(this.settings,showingNotice))return!0;const checkResult=await this.core.$anyAfterConnectCheckFailed();return"CHECKAGAIN"==checkResult?await this.core.$$replicateAllToServer(showingNotice):!checkResult}async $$replicateAllFromServer(showingNotice=!1){if(!this.core.$$isReady())return!1;if(await this.core.replicator.replicateAllFromServer(this.settings,showingNotice))return!0;const checkResult=await this.core.$anyAfterConnectCheckFailed();return"CHECKAGAIN"==checkResult?await this.core.$$replicateAllFromServer(showingNotice):!checkResult}};ModuleReplicatorCouchDB=class extends AbstractModule{$anyNewReplicator(settingOverride={}){const settings={...this.settings,...settingOverride};if("MINIO"!=settings.remoteType&&"ONLY_P2P"!=settings.remoteType)return Promise.resolve(new LiveSyncCouchDBReplicator(this.core))}$everyAfterResumeProcess(){if("MINIO"!=this.settings.remoteType&&"ONLY_P2P"!=this.settings.remoteType){this.settings.liveSync&&fireAndForget((()=>this.core.replicator.openReplication(this.settings,!0,!1,!1)));!this.settings.liveSync&&this.settings.syncOnStart&&fireAndForget((()=>this.core.replicator.openReplication(this.settings,!1,!1,!1)))}return Promise.resolve(!0)}};ModuleReplicatorMinIO=class extends AbstractModule{$anyNewReplicator(settingOverride={}){if("MINIO"=={...this.settings,...settingOverride}.remoteType)return Promise.resolve(new LiveSyncJournalReplicator(this.core))}};ModuleTargetFilter=class extends AbstractModule{constructor(){super(...arguments);this.totalFileEventCount=0;this.ignoreFileCache=new LRUCache(300,25e4,!0);this.ignoreFiles=[]}reloadIgnoreFiles(){this.ignoreFiles=this.settings.ignoreFiles.split(",").map((e3=>e3.trim()))}$everyOnload(){eventHub.onEvent("setting-saved",(evt=>{this.reloadIgnoreFiles()}));eventHub.onEvent("reload-setting-tab",(()=>{this.reloadIgnoreFiles()}));return Promise.resolve(!0)}$$id2path(id,entry,stripPrefix2){const tempId=id2path(id,entry);if(stripPrefix2&&isInternalMetadata(tempId)){const out=function stripInternalMetadataPrefix(id){return id.substring(ICHeaderLength)}(tempId);return out}return tempId}async $$path2id(filename,prefix){const destPath=addPrefix(filename,null!=prefix?prefix:"");return await async function path2id(filename,obfuscatePassphrase,caseInsensitive){const temp=filename.split(":"),path2=temp.pop(),normalizedPath=normalizePath(path2);temp.push(normalizedPath);const fixedPath=temp.join(":"),out=await async function path2id_base(filenameSrc,obfuscatePassphrase,caseInsensitive){if(filenameSrc.startsWith(PREFIX_OBFUSCATED))return`${filenameSrc}`;let filename=`${filenameSrc}`;const newPrefix=obfuscatePassphrase?PREFIX_OBFUSCATED:"";caseInsensitive&&(filename=filename.toLowerCase());let x2=filename;x2.startsWith("_")&&(x2="/"+x2);if(!obfuscatePassphrase)return newPrefix+x2;const[prefix,body]=expandFilePathPrefix(x2);if(body.startsWith(PREFIX_OBFUSCATED))return newPrefix+x2;const hashedPassphrase=await hashString(obfuscatePassphrase);return prefix+newPrefix+await hashString(`${hashedPassphrase}:${filename}`)}(fixedPath,obfuscatePassphrase,caseInsensitive);return out}(destPath,this.settings.usePathObfuscation?this.settings.passphrase:"",!this.settings.handleFilenameCaseSensitive)}$$isFileSizeExceeded(size){return this.settings.syncMaxSizeInMB>0&&size>0&&1024*this.settings.syncMaxSizeInMB*1024<size}$$markFileListPossiblyChanged(){this.totalFileEventCount++}get fileListPossiblyChanged(){return!!isDirty("totalFileEventCount",this.totalFileEventCount)}async $$isTargetFile(file,keepFileCheckList=!1){var _a7,_b3;const fileCount=function useMemo({key:key2,forceUpdate,validator},updateFunc){const cached=_cached.get(key2),context2=(null==cached?void 0:cached.context)||new Map;if(cached&&!forceUpdate&&(!validator||validator&&!validator(context2)))return cached.value;const value=updateFunc(context2,null==cached?void 0:cached.value);value!==(null==cached?void 0:cached.value)&&_cached.set(key2,{value,context:context2});return value}({key:"fileCount"},((ctx,prev)=>{var _a8;if(keepFileCheckList&&prev)return prev;if(!keepFileCheckList&&prev&&!this.fileListPossiblyChanged)return prev;const fileList=null!=(_a8=ctx.get("fileList"))?_a8:[],vaultFiles=this.core.storageAccess.getFileNames().sort();if(prev&&vaultFiles.length==fileList.length){const fl3=new Set([...fileList,...vaultFiles]);if(fileList.length==fl3.size&&vaultFiles.length==fl3.size)return prev}ctx.set("fileList",vaultFiles);const fileCount2={};for(const file2 of vaultFiles){const lc3=file2.toLowerCase();fileCount2[lc3]?fileCount2[lc3]++:fileCount2[lc3]=1}return fileCount2})),filepath=getStoragePathFromUXFileInfo(file),lc2=filepath.toLowerCase();if(this.core.$$shouldCheckCaseInsensitive()&&lc2 in fileCount&&fileCount[lc2]>1)return!1;const fileNameLC=null==(_a7=getStoragePathFromUXFileInfo(file).split("/").pop())?void 0:_a7.toLowerCase();if(this.settings.useIgnoreFiles){this.ignoreFiles.some((e3=>e3.toLowerCase()==fileNameLC))&&await this.readIgnoreFile(filepath);if(await this.core.$$isIgnoredByIgnoreFiles(file))return!1}return!!(null==(_b3=this.localDatabase)?void 0:_b3.isTargetFile(filepath))}async readIgnoreFile(path2){try{const gitignore=(await this.core.storageAccess.readFileText(path2)).split(/\r?\n/g);this.ignoreFileCache.set(path2,gitignore);return gitignore}catch(ex){this._log(`Failed to read ignore file ${path2}`);this._log(ex,LOG_LEVEL_VERBOSE);this.ignoreFileCache.set(path2,!1);return!1}}async getIgnoreFile(path2){var _a7;return this.ignoreFileCache.has(path2)?null!=(_a7=this.ignoreFileCache.get(path2))&&_a7:await this.readIgnoreFile(path2)}async $$isIgnoredByIgnoreFiles(file){if(!this.settings.useIgnoreFiles)return!1;const filepath=getStoragePathFromUXFileInfo(file);this.ignoreFileCache.has(filepath)&&await this.readIgnoreFile(filepath);return!await async function isAcceptedAll(path2,ignoreFiles,getList){const intermediatePaths=unique(path2.substring(0,path2.lastIndexOf("/")).split("/").reduce(((p4,c3)=>[...p4,p4[p4.length-1]+"/"+c3]),[""]).map((e3=>e3.substring(1)))).reverse();for(const intermediatePath of intermediatePaths)for(const ignoreFile of ignoreFiles){const ignoreFilePath=intermediatePath+"/"+ignoreFile,list=await getList(ignoreFilePath);if(!1===list)continue;const result=isAccepted(path2.substring(intermediatePath.length?intermediatePath.length+1:0),list);if(void 0!==result)return result}return!0}(filepath,this.ignoreFiles,(filename=>this.getIgnoreFile(filename)))}};ModulePeriodicProcess=class extends AbstractModule{constructor(){super(...arguments);this.periodicSyncProcessor=new PeriodicProcessor(this.core,(async()=>await this.core.$$replicate()))}_disablePeriodic(){var _a7;null==(_a7=this.periodicSyncProcessor)||_a7.disable();return Promise.resolve(!0)}_resumePeriodic(){this.periodicSyncProcessor.enable(this.settings.periodicReplication?1e3*this.settings.periodicReplicationInterval:0);return Promise.resolve(!0)}$allOnUnload(){return this._disablePeriodic()}$everyBeforeRealizeSetting(){return this._disablePeriodic()}$everyBeforeSuspendProcess(){return this._disablePeriodic()}$everyAfterResumeProcess(){return this._resumePeriodic()}$everyAfterRealizeSetting(){return this._resumePeriodic()}};ModuleRemoteGovernor=class extends AbstractModule{async $$markRemoteLocked(lockByClean=!1){return await this.core.replicator.markRemoteLocked(this.settings,!0,lockByClean)}async $$markRemoteUnlocked(){return await this.core.replicator.markRemoteLocked(this.settings,!1,!1)}async $$markRemoteResolved(){return await this.core.replicator.markRemoteResolved(this.settings)}};ModuleLocalDatabaseObsidian=class extends AbstractModule{$everyOnloadStart(){return Promise.resolve(!0)}async $$openDatabase(){null!=this.localDatabase&&await this.localDatabase.close();const vaultName=this.core.$$getVaultName();this._log($msg("moduleLocalDatabase.logWaitingForReady"));this.core.localDatabase=new LiveSyncLocalDB(vaultName,this.core);(function initializeStores(vaultName){sameChangePairs=new PersistentMap(`ls-persist-same-changes-${vaultName}`)})(vaultName);return await this.localDatabase.initializeDatabase()}$$isDatabaseReady(){return null!=this.localDatabase&&this.localDatabase.isReady}};ModuleConflictChecker=class extends AbstractModule{constructor(){super(...arguments);this.conflictResolveQueue=new QueueProcessor((async filenames=>{await this.core.$$resolveConflict(filenames[0])}),{suspended:!1,batchSize:1,concurrentLimit:1,delay:10,keepResultUntilDownstreamConnected:!1}).replaceEnqueueProcessor(((queue2,newEntity)=>{(function sendValue(id,result){globalSlipBoard.submit("x-compatibility-value",id,result)})("cancel-resolve-conflict:"+newEntity,!0);return[...[...queue2].filter((e3=>e3!=newEntity)),newEntity]}));this.conflictCheckQueue=new QueueProcessor((files=>{const filename=files[0];return Promise.resolve([filename])}),{suspended:!1,batchSize:1,concurrentLimit:5,delay:10,keepResultUntilDownstreamConnected:!0,pipeTo:this.conflictResolveQueue,totalRemainingReactiveSource:this.core.conflictProcessQueueCount})}async $$queueConflictCheckIfOpen(file){const path2=file;if(this.settings.checkConflictOnlyOnOpen){const af2=this.core.$$getActiveFilePath();if(af2&&af2!=path2){this._log(`${file} is conflicted, merging process has been postponed.`,LOG_LEVEL_NOTICE);return}}await this.core.$$queueConflictCheck(path2)}async $$queueConflictCheck(file){const optionalConflictResult=await this.core.$anyGetOptionalConflictCheckMethod(file);1!=optionalConflictResult&&("newer"===optionalConflictResult?await this.core.$anyResolveConflictByNewest(file):this.conflictCheckQueue.enqueue(file))}$$waitForAllConflictProcessed(){return this.conflictResolveQueue.waitForAllProcessed()}};ModuleResolvingMismatchedTweaks=class extends AbstractModule{async $anyAfterConnectCheckFailed(){if(!this.core.replicator.tweakSettingsMismatched&&!this.core.replicator.preferredTweakValue)return!1;const preferred=this.core.replicator.preferredTweakValue;if(!preferred)return!1;const ret=await this.core.$$askResolvingMismatchedTweaks(preferred);return"OK"!=ret&&("CHECKAGAIN"==ret?"CHECKAGAIN":"IGNORE"==ret||void 0)}async $$checkAndAskResolvingMismatchedTweaks(preferred){const mine=extractObject(TweakValuesShouldMatchedTemplate,this.settings),items=Object.entries(TweakValuesShouldMatchedTemplate);let rebuildRequired=!1,rebuildRecommended=!1;const tableRows=[];for(const v2 of items){const key2=v2[0],valueMine=escapeMarkdownValue(mine[key2]),valuePreferred=escapeMarkdownValue(preferred[key2]);if(valueMine!=valuePreferred){-1!==IncompatibleChanges.indexOf(key2)&&(rebuildRequired=!0);for(const pattern of IncompatibleChangesInSpecificPattern){if(pattern.key!==key2)continue;const isFromConditionMet="from"in pattern&&pattern.from===mine[key2],isToConditionMet="to"in pattern&&pattern.to===preferred[key2];(isFromConditionMet||isToConditionMet)&&(pattern.isRecommendation?rebuildRecommended=!0:rebuildRequired=!0)}-1!==CompatibleButLossyChanges.indexOf(key2)&&(rebuildRecommended=!0);tableRows.push($msg("TweakMismatchResolve.Table.Row",{name:confName(key2),self:valueMine,remote:valuePreferred}))}}const additionalMessage=rebuildRequired&&this.core.settings.isConfigured?$msg("TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired"):"",additionalMessage2=rebuildRecommended&&this.core.settings.isConfigured?$msg("TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended"):"",table2=$msg("TweakMismatchResolve.Table",{rows:tableRows.join("\n")}),message=$msg("TweakMismatchResolve.Message.MainTweakResolving",{table:table2,additionalMessage:[additionalMessage,additionalMessage2].filter((v2=>v2)).join("\n")}),CHOICE_USE_REMOTE=$msg("TweakMismatchResolve.Action.UseRemote"),CHOICE_USE_REMOTE_WITH_REBUILD=$msg("TweakMismatchResolve.Action.UseRemoteWithRebuild"),CHOICE_USE_REMOTE_PREVENT_REBUILD=$msg("TweakMismatchResolve.Action.UseRemoteAcceptIncompatible"),CHOICE_USE_MINE=$msg("TweakMismatchResolve.Action.UseMine"),CHOICE_USE_MINE_WITH_REBUILD=$msg("TweakMismatchResolve.Action.UseMineWithRebuild"),CHOICE_USE_MINE_PREVENT_REBUILD=$msg("TweakMismatchResolve.Action.UseMineAcceptIncompatible"),CHOICE_DISMISS=$msg("TweakMismatchResolve.Action.Dismiss"),CHOICE_AND_VALUES=[];if(rebuildRequired){CHOICE_AND_VALUES.push([CHOICE_USE_REMOTE_WITH_REBUILD,[preferred,!0]]);CHOICE_AND_VALUES.push([CHOICE_USE_MINE_WITH_REBUILD,[!0,!0]]);CHOICE_AND_VALUES.push([CHOICE_USE_REMOTE_PREVENT_REBUILD,[preferred,!1]]);CHOICE_AND_VALUES.push([CHOICE_USE_MINE_PREVENT_REBUILD,[!0,!1]])}else if(rebuildRecommended){CHOICE_AND_VALUES.push([CHOICE_USE_REMOTE,[preferred,!1]]);CHOICE_AND_VALUES.push([CHOICE_USE_MINE,[!0,!1]]);CHOICE_AND_VALUES.push([CHOICE_USE_REMOTE_WITH_REBUILD,[!0,!0]]);CHOICE_AND_VALUES.push([CHOICE_USE_MINE_WITH_REBUILD,[!0,!0]])}else{CHOICE_AND_VALUES.push([CHOICE_USE_REMOTE,[preferred,!1]]);CHOICE_AND_VALUES.push([CHOICE_USE_MINE,[!0,!1]])}CHOICE_AND_VALUES.push([CHOICE_DISMISS,[!1,!1]]);const CHOICES=Object.fromEntries(CHOICE_AND_VALUES),retKey=await this.core.confirm.askSelectStringDialogue(message,Object.keys(CHOICES),{title:$msg("TweakMismatchResolve.Title.TweakResolving"),timeout:60,defaultAction:CHOICE_DISMISS});return retKey?CHOICES[retKey]:[!1,!1]}async $$askResolvingMismatchedTweaks(){if(!this.core.replicator.tweakSettingsMismatched)return"OK";const tweaks=this.core.replicator.preferredTweakValue;if(!tweaks)return"IGNORE";const preferred=extractObject(TweakValuesShouldMatchedTemplate,tweaks),[conf,rebuildRequired]=await this.core.$$checkAndAskResolvingMismatchedTweaks(preferred);if(!conf)return"IGNORE";if(!0===conf){await this.core.replicator.setPreferredRemoteTweakSettings(this.settings);rebuildRequired&&await this.core.rebuilder.$rebuildRemote();Logger("Tweak values on the remote server have been updated. Your other device will see this message.",LOG_LEVEL_NOTICE);return"CHECKAGAIN"}if(conf){this.settings={...this.settings,...conf};await this.core.replicator.setPreferredRemoteTweakSettings(this.settings);await this.core.$$saveSettingData();rebuildRequired&&await this.core.rebuilder.$fetchLocal();Logger("Configuration has been updated as configured by the other device.",LOG_LEVEL_NOTICE);return"CHECKAGAIN"}return"IGNORE"}async $$checkAndAskUseRemoteConfiguration(trialSetting){const replicator=await this.core.$anyNewReplicator(trialSetting);if(await replicator.tryConnectRemote(trialSetting)){const preferred=await replicator.getRemotePreferredTweakValues(trialSetting);if(preferred)return await this.$$askUseRemoteConfiguration(trialSetting,preferred);this._log("Failed to get the preferred tweak values from the remote server.",LOG_LEVEL_NOTICE);return{result:!1,requireFetch:!1}}this._log("Failed to connect to the remote server.",LOG_LEVEL_NOTICE);return{result:!1,requireFetch:!1}}async $$askUseRemoteConfiguration(trialSetting,preferred){const items=Object.entries(TweakValuesShouldMatchedTemplate);let rebuildRequired=!1,rebuildRecommended=!1,differenceCount=0;const tableRows=[];for(const v2 of items){const key2=v2[0],remoteValueForDisplay=escapeMarkdownValue(preferred[key2]),currentValueForDisplay=`${escapeMarkdownValue(null==trialSetting?void 0:trialSetting[key2])}`;if((null==trialSetting?void 0:trialSetting[key2])!==preferred[key2]){-1!==IncompatibleChanges.indexOf(key2)&&(rebuildRequired=!0);for(const pattern of IncompatibleChangesInSpecificPattern){if(pattern.key!==key2)continue;const isFromConditionMet="from"in pattern&&pattern.from===(null==trialSetting?void 0:trialSetting[key2]),isToConditionMet="to"in pattern&&pattern.to===preferred[key2];(isFromConditionMet||isToConditionMet)&&(pattern.isRecommendation?rebuildRecommended=!0:rebuildRequired=!0)}-1!==CompatibleButLossyChanges.indexOf(key2)&&(rebuildRecommended=!0);tableRows.push($msg("TweakMismatchResolve.Table.Row",{name:confName(key2),self:currentValueForDisplay,remote:remoteValueForDisplay}));differenceCount++}}if(0===differenceCount){this._log("The settings in the remote database are the same as the local database.",LOG_LEVEL_NOTICE);return{result:!1,requireFetch:!1}}const additionalMessage=rebuildRequired&&this.core.settings.isConfigured?$msg("TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired"):"",additionalMessage2=rebuildRecommended&&this.core.settings.isConfigured?$msg("TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended"):"",table2=$msg("TweakMismatchResolve.Table",{rows:tableRows.join("\n")}),message=$msg("TweakMismatchResolve.Message.Main",{table:table2,additionalMessage:[additionalMessage,additionalMessage2].filter((v2=>v2)).join("\n")}),CHOICE_USE_REMOTE=$msg("TweakMismatchResolve.Action.UseConfigured"),CHOICE_DISMISS=$msg("TweakMismatchResolve.Action.Dismiss"),CHOICES=[CHOICE_USE_REMOTE,CHOICE_DISMISS],retKey=await this.core.confirm.askSelectStringDialogue(message,CHOICES,{title:$msg("TweakMismatchResolve.Title.UseRemoteConfig"),timeout:0,defaultAction:CHOICE_DISMISS});return retKey?retKey===CHOICE_DISMISS?{result:!1,requireFetch:!1}:retKey===CHOICE_USE_REMOTE?{result:{...trialSetting,...preferred},requireFetch:rebuildRequired}:{result:!1,requireFetch:!1}:{result:!1,requireFetch:!1}}};ModuleIntegratedTest=class extends AbstractObsidianModule{async waitFor(proc,timeout=1e4){await delay(100);const start=Date.now();for(;!await proc();){if(timeout>0&&Date.now()-start>timeout){this._log("Timeout");return!1}await delay(500)}return!0}waitWithReplicating(proc,timeout=1e4){return this.waitFor((async()=>{await this.tryReplicate();return await proc()}),timeout)}async storageContentIsEqual(file,content){try{return await this.readStorageContent(file)===content}catch(e3){this._log(`Error: ${e3}`);return!1}}async assert(proc){if(!await proc()){this._log("Assertion failed");return!1}return!0}async _orDie(key2,proc){if(!await this._test(key2,proc))throw new Error(`${key2}`);return!0}tryReplicate(){if(!this.settings.liveSync)return shareRunningResult("replicate-test",(async()=>{await this.core.$$replicate()}))}async readStorageContent(file){if(await this.core.storageAccess.isExistsIncludeHidden(file))return await this.core.storageAccess.readHiddenFileText(file)}async _proceed(no,title){const stepContent=`Step ${no}`;await this.core.$anyResolveConflictByNewest("_STEP.md");await this.core.storageAccess.writeFileAuto("_STEP.md",stepContent);await this._orDie(`Wait for acknowledge ${no}`,(async()=>!!await this.waitWithReplicating((async()=>await this.storageContentIsEqual("_STEP_ACK.md",stepContent)),2e4)));return!0}async _join(no,title){const stepContent=`Step ${no}`;await this._orDie(`Wait for step ${no} (${title})`,(async()=>!!await this.waitWithReplicating((async()=>await this.storageContentIsEqual("_STEP.md",stepContent)),2e4)));await this.core.$anyResolveConflictByNewest("_STEP_ACK.md");await this.core.storageAccess.writeFileAuto("_STEP_ACK.md",stepContent);await this.tryReplicate();return!0}async performStep({step,title,isGameChanger,proc,check}){if(isGameChanger){await this._proceed(step,title);try{await proc()}catch(e3){this._log(`Error: ${e3}`);return!1}return await this._orDie(`Step ${step} - ${title}`,(async()=>await this.waitWithReplicating(check)))}return await this._join(step,title)}async nonLiveTestRunner(isLeader,testMain){const storage=this.core.storageAccess;let testFileName;this.addTestResult("-------Starting ... ",!0,`Test as ${isLeader?"Leader":"Receiver"} command file IT.md`);isLeader&&await this._proceed(0,"start");await this.tryReplicate();await this.performStep({step:0,title:"Make sure that command File Not Exists",isGameChanger:isLeader,proc:async()=>await storage.removeHidden("IT.md"),check:async()=>!await storage.isExistsIncludeHidden("IT.md")});await this.performStep({step:1,title:"Make sure that command File Not Exists On Receiver",isGameChanger:!isLeader,proc:async()=>await storage.removeHidden("ITx.md"),check:async()=>!await storage.isExistsIncludeHidden("ITx.md")});await this.performStep({step:2,title:"Decide the test file name",isGameChanger:isLeader,proc:async()=>{testFileName=Date.now()+"-"+Math.ceil(1e3*Math.random())+".md";await storage.writeFileAuto("IT.md",testFileName)},check:()=>Promise.resolve(!0)});await this.performStep({step:3,title:"Wait for the command file to be arrived",isGameChanger:!isLeader,proc:async()=>{},check:async()=>await storage.isExistsIncludeHidden("IT.md")});await this.performStep({step:4,title:"Send the response file",isGameChanger:!isLeader,proc:async()=>{await storage.writeHiddenFileAuto("ITx.md","!")},check:()=>Promise.resolve(!0)});await this.performStep({step:5,title:"Wait for the response file to be arrived",isGameChanger:isLeader,proc:async()=>{},check:async()=>await storage.isExistsIncludeHidden("ITx.md")});await this.performStep({step:6,title:"Proceed to begin the test",isGameChanger:isLeader,proc:async()=>{},check:()=>Promise.resolve(!0)});await this.performStep({step:6,title:"Begin the test",isGameChanger:!0,proc:async()=>{},check:()=>Promise.resolve(!0)});try{this.addTestResult("** Main------",!0,"");if(isLeader)return await testMain(testFileName,!0);{const testFileName2=await this.readStorageContent("IT.md");this.addTestResult("testFileName",!0,`Request client to use :${testFileName2}`);return await testMain(testFileName2,!1)}}finally{this.addTestResult("Teardown",!0,`Deleting ${testFileName}`);await storage.removeHidden(testFileName)}return!0}async testBasic(filename,isLeader){const storage=this.core.storageAccess,database=this.core.databaseFileAccess;await this.addTestResult("---**Starting Basic Test**---",!0,`Test as ${isLeader?"Leader":"Receiver"} command file ${filename}`);await this.performStep({step:0,title:"Make sure that file is not exist",isGameChanger:!isLeader,proc:async()=>{},check:async()=>!await storage.isExists(filename)});await this.performStep({step:1,title:"Write a file",isGameChanger:isLeader,proc:async()=>await storage.writeFileAuto(filename,"Hello World"),check:async()=>await storage.isExists(filename)});await this.performStep({step:2,title:"Make sure the file is arrived",isGameChanger:!isLeader,proc:async()=>{},check:async()=>await storage.isExists(filename)});await this.performStep({step:3,title:"Update to Hello World 2",isGameChanger:isLeader,proc:async()=>await storage.writeFileAuto(filename,"Hello World 2"),check:async()=>await this.storageContentIsEqual(filename,"Hello World 2")});await this.performStep({step:4,title:"Make sure the modified file is arrived",isGameChanger:!isLeader,proc:async()=>{},check:async()=>await this.storageContentIsEqual(filename,"Hello World 2")});await this.performStep({step:5,title:"Update to Hello World 3",isGameChanger:!isLeader,proc:async()=>await storage.writeFileAuto(filename,"Hello World 3"),check:async()=>await this.storageContentIsEqual(filename,"Hello World 3")});await this.performStep({step:6,title:"Make sure the modified file is arrived",isGameChanger:isLeader,proc:async()=>{},check:async()=>await this.storageContentIsEqual(filename,"Hello World 3")});await this.performStep({step:7,title:"Update to Multiline",isGameChanger:isLeader,proc:async()=>await storage.writeFileAuto(filename,"Line1:A\nLine2:B\nLine3:C\nLine4:D"),check:async()=>await this.storageContentIsEqual(filename,"Line1:A\nLine2:B\nLine3:C\nLine4:D")});await this.performStep({step:8,title:"Make sure the modified file is arrived",isGameChanger:!isLeader,proc:async()=>{},check:async()=>await this.storageContentIsEqual(filename,"Line1:A\nLine2:B\nLine3:C\nLine4:D")});if(!this.settings.liveSync){const multiLineContentL="Line1:A\nLine2:B\nLine3:C!\nLine4:D",multiLineContentC="Line1:A\nLine2:bbbbb\nLine3:C\nLine4:D";await this.performStep({step:9,title:"Progress to be conflicted",isGameChanger:isLeader,proc:async()=>{},check:()=>Promise.resolve(!0)});await storage.writeFileAuto(filename,isLeader?multiLineContentL:multiLineContentC);await this.performStep({step:10,title:"Update As Conflicted",isGameChanger:!isLeader,proc:async()=>{},check:()=>Promise.resolve(!0)});await this.performStep({step:10,title:"Make sure Automatically resolved",isGameChanger:isLeader,proc:async()=>{},check:async()=>0===(await database.getConflictedRevs(filename)).length});await this.performStep({step:11,title:"Make sure Automatically resolved",isGameChanger:!isLeader,proc:async()=>{},check:async()=>0===(await database.getConflictedRevs(filename)).length});const sensiblyMergedContent="Line1:A\nLine2:bbbbb\nLine3:C!\nLine4:D";await this.performStep({step:12,title:"Make sure Sensibly Merged on Leader",isGameChanger:isLeader,proc:async()=>{},check:async()=>await this.storageContentIsEqual(filename,sensiblyMergedContent)});await this.performStep({step:13,title:"Make sure Sensibly Merged on Receiver",isGameChanger:!isLeader,proc:async()=>{},check:async()=>await this.storageContentIsEqual(filename,sensiblyMergedContent)})}await this.performStep({step:14,title:"Delete File",isGameChanger:isLeader,proc:async()=>{await storage.removeHidden(filename)},check:async()=>!await storage.isExists(filename)});await this.performStep({step:15,title:"Make sure File is deleted",isGameChanger:!isLeader,proc:async()=>{},check:async()=>!await storage.isExists(filename)});this._log("The Basic Test has been completed",LOG_LEVEL_NOTICE);return!0}async testBasicEvent(isLeader){this.settings.liveSync=!1;await this.saveSettings();await this._test("basic",(async()=>await this.nonLiveTestRunner(isLeader,((t3,l2)=>this.testBasic(t3,l2)))))}async testBasicLive(isLeader){this.settings.liveSync=!0;await this.saveSettings();await this._test("basic",(async()=>await this.nonLiveTestRunner(isLeader,((t3,l2)=>this.testBasic(t3,l2)))))}async $everyModuleTestMultiDevice(){if(!this.settings.enableDebugTools)return Promise.resolve(!0);const isLeader=-1===this.core.$$vaultName().indexOf("recv");this.addTestResult("-------",!0,"Test as "+(isLeader?"Leader":"Receiver"));try{this._log("Starting Test");await this.testBasicEvent(isLeader);"MINIO"==this.settings.remoteType&&await this.testBasicLive(isLeader)}catch(e3){this._log(e3);this._log(`Error: ${e3}`);return Promise.resolve(!1)}return Promise.resolve(!0)}};ModuleRebuilder=class extends AbstractModule{$everyOnload(){this.core.rebuilder=this;return Promise.resolve(!0)}async $performRebuildDB(method){"localOnly"==method&&await this.$fetchLocal();"localOnlyWithChunks"==method&&await this.$fetchLocal(!0);"remoteOnly"==method&&await this.$rebuildRemote();"rebuildBothByThisDevice"==method&&await this.$rebuildEverything()}async askUsingOptionalFeature(opt){"yes"==await this.core.confirm.askYesNoDialog("Do you want to enable extra features? If you are new to Self-hosted LiveSync, try the core feature first!",{title:"Enable extra features",defaultOption:"No",timeout:15})&&await this.core.$allAskUsingOptionalSyncFeature(opt)}async rebuildRemote(){await this.core.$allSuspendExtraSync();this.core.settings.isConfigured=!0;await this.core.$$realizeSettingSyncMode();await this.core.$$markRemoteLocked();await this.core.$$tryResetRemoteDatabase();await this.core.$$markRemoteLocked();await delay(500);await this.askUsingOptionalFeature({enableOverwrite:!0});await delay(1e3);await this.core.$$replicateAllToServer(!0);await delay(1e3);await this.core.$$replicateAllToServer(!0,!0)}$rebuildRemote(){return this.rebuildRemote()}async rebuildEverything(){await this.core.$allSuspendExtraSync();await this.askUseNewAdapter();this.core.settings.isConfigured=!0;await this.core.$$realizeSettingSyncMode();await this.resetLocalDatabase();await delay(1e3);await this.core.$$initializeDatabase(!0);await this.core.$$markRemoteLocked();await this.core.$$tryResetRemoteDatabase();await this.core.$$markRemoteLocked();await delay(500);await this.askUsingOptionalFeature({enableOverwrite:!1});await delay(1e3);await this.core.$$replicateAllToServer(!0);await delay(1e3);await this.core.$$replicateAllToServer(!0,!0)}$rebuildEverything(){return this.rebuildEverything()}$fetchLocal(makeLocalChunkBeforeSync){return this.fetchLocal(makeLocalChunkBeforeSync)}async scheduleRebuild(){try{await this.core.storageAccess.writeFileAuto(FLAGMD_REDFLAG2_HR,"")}catch(ex){this._log("Could not create red_flag_rebuild.md",LOG_LEVEL_NOTICE);this._log(ex,LOG_LEVEL_VERBOSE)}this.core.$$performRestart()}async scheduleFetch(){try{await this.core.storageAccess.writeFileAuto(FLAGMD_REDFLAG3_HR,"")}catch(ex){this._log("Could not create red_flag_fetch.md",LOG_LEVEL_NOTICE);this._log(ex,LOG_LEVEL_VERBOSE)}this.core.$$performRestart()}async $$tryResetRemoteDatabase(){await this.core.replicator.tryResetRemoteDatabase(this.settings)}async $$tryCreateRemoteDatabase(){await this.core.replicator.tryCreateRemoteDatabase(this.settings)}async $$resetLocalDatabase(){this.core.storageAccess.clearTouched();await this.localDatabase.resetDatabase()}async suspendAllSync(){this.core.settings.liveSync=!1;this.core.settings.periodicReplication=!1;this.core.settings.syncOnSave=!1;this.core.settings.syncOnEditorSave=!1;this.core.settings.syncOnStart=!1;this.core.settings.syncOnFileOpen=!1;this.core.settings.syncAfterMerge=!1;await this.core.$allSuspendExtraSync()}async suspendReflectingDatabase(){if(!this.core.settings.doNotSuspendOnFetching&&"MINIO"!=this.core.settings.remoteType){this._log("Suspending reflection: Database and storage changes will not be reflected in each other until completely finished the fetching.",LOG_LEVEL_NOTICE);this.core.settings.suspendParseReplicationResult=!0;this.core.settings.suspendFileWatching=!0;await this.core.saveSettings()}}async resumeReflectingDatabase(){if(!this.core.settings.doNotSuspendOnFetching&&"MINIO"!=this.core.settings.remoteType){this._log("Database and storage reflection has been resumed!",LOG_LEVEL_NOTICE);this.core.settings.suspendParseReplicationResult=!1;this.core.settings.suspendFileWatching=!1;await this.core.$$performFullScan(!0);await this.core.$everyBeforeReplicate(!1);await this.core.saveSettings()}}async askUseNewAdapter(){if(!this.core.settings.useIndexedDBAdapter){const message="Now this core has been configured to use the old database adapter for keeping compatibility. Do you want to deactivate it?",CHOICE_YES="Yes, disable and use latest",choices=[CHOICE_YES,"No, keep compatibility"];await this.core.confirm.confirmWithMessage("Database adapter",message,choices,CHOICE_YES,10)==CHOICE_YES&&(this.core.settings.useIndexedDBAdapter=!0)}}async fetchLocal(makeLocalChunkBeforeSync){await this.core.$allSuspendExtraSync();await this.askUseNewAdapter();this.core.settings.isConfigured=!0;await this.suspendReflectingDatabase();await this.core.$$realizeSettingSyncMode();await this.resetLocalDatabase();await delay(1e3);await this.core.$$openDatabase();this.core.$$markIsReady();makeLocalChunkBeforeSync&&await this.core.fileHandler.createAllChunks(!0);await this.core.$$markRemoteResolved();await delay(500);await this.core.$$replicateAllFromServer(!0);await delay(1e3);await this.core.$$replicateAllFromServer(!0);await this.resumeReflectingDatabase();await this.askUsingOptionalFeature({enableFetch:!0})}async fetchLocalWithRebuild(){return await this.fetchLocal(!0)}async $allSuspendAllSync(){await this.suspendAllSync();return!0}async resetLocalDatabase(){this.core.settings.isConfigured&&""==this.core.settings.additionalSuffixOfDatabaseName&&await this.core.$$resetLocalDatabase();const suffix=await this.core.$anyGetAppId()||"";this.core.settings.additionalSuffixOfDatabaseName=suffix;await this.core.$$resetLocalDatabase();eventHub.emitEvent("database-rebuilt")}async fetchRemoteChunks(){if(!this.core.settings.doNotSuspendOnFetching&&this.core.settings.readChunksOnline&&""==this.core.settings.remoteType){this._log("Fetching chunks",LOG_LEVEL_NOTICE);const replicator=this.core.$$getReplicator(),remoteDB=await replicator.connectRemoteCouchDBWithSetting(this.settings,this.core.$$isMobile(),!0);"string"==typeof remoteDB?this._log(remoteDB,LOG_LEVEL_NOTICE):await async function fetchAllUsedChunks(local,remote){try{const chunksOnRemote=await collectChunks(remote,"INUSE");await transferChunks("r2l","remote -> local",remote,local,chunksOnRemote);Logger("remote -> local: Done",LOG_LEVEL_NOTICE,"balance-r2l")}catch(ex){Logger("Something went wrong on balancing!",LOG_LEVEL_NOTICE);Logger(ex,LOG_LEVEL_VERBOSE)}}(this.localDatabase.localDatabase,remoteDB.db);this._log("Fetching chunks done",LOG_LEVEL_NOTICE)}}async resolveAllConflictedFilesByNewerOnes(){this._log("Resolving conflicts by newer ones",LOG_LEVEL_NOTICE);const files=this.core.storageAccess.getFileNames();let i2=0;for(const file of files){i2++%10&&this._log(`Check and Processing ${i2} / ${files.length}`,LOG_LEVEL_NOTICE,"resolveAllConflictedFilesByNewerOnes");await this.core.$anyResolveConflictByNewest(file)}this._log("Done!",LOG_LEVEL_NOTICE,"resolveAllConflictedFilesByNewerOnes")}};import_obsidian13=require("obsidian");ModuleReplicateTest=class extends AbstractObsidianModule{constructor(){super(...arguments);this.testRootPath="_test/";this.testInfoPath="_testinfo/";this.watchIsSynchronised=!1}get isLeader(){return this.core.$$getVaultName().indexOf("dev")>=0&&this.core.$$vaultName().indexOf("recv")<0}get nameByKind(){return this.isLeader?this.isLeader?"LEADER":void 0:"RECV"}get pairName(){return this.isLeader?"RECV":this.isLeader?void 0:"LEADER"}async readFileContent(file){try{return await this.core.storageAccess.readHiddenFileText(file)}catch(e3){return""}}async dumpList(){if(this.settings.syncInternalFiles){this._log("Write file list (Include Hidden)");await this._dumpFileListIncludeHidden("files.md")}else{this._log("Write file list");await this._dumpFileList("files.md")}}async $everyBeforeReplicate(showMessage){if(!this.settings.enableDebugTools)return Promise.resolve(!0);await this.dumpList();return!0}$everyOnloadAfterLoadSettings(){if(!this.settings.enableDebugTools)return Promise.resolve(!0);this.addCommand({id:"dump-file-structure-normal",name:"Dump Structure (Normal)",callback:()=>{this._dumpFileList("files.md").finally((()=>{this.refreshSyncStatus()}))}});this.addCommand({id:"dump-file-structure-ih",name:"Dump Structure (Include Hidden)",callback:()=>{this._dumpFileListIncludeHidden("files.md")}});this.addCommand({id:"dump-file-structure-auto",name:"Dump Structure",callback:()=>{this.dumpList()}});this.addCommand({id:"dump-file-test",name:"Perform Test (Dev) "+(this.isLeader?"(Leader)":"(Recv)"),callback:()=>{this.performTestManually()}});this.addCommand({id:"watch-sync-result",name:"Watch sync result is matched between devices",callback:()=>{this.watchIsSynchronised=!this.watchIsSynchronised;this.refreshSyncStatus()}});this.app.vault.on("modify",(async file=>{file.path.startsWith(this.testInfoPath)?await this.refreshSyncStatus():scheduleTask("dumpStatus",125,(async()=>{await this.dumpList();return!0}))}));this.statusBarSyncStatus=this.plugin.addStatusBarItem();return Promise.resolve(!0)}async getSyncStatusAsText(){const fileMine=this.testInfoPath+this.nameByKind+"/files.md",filePair=this.testInfoPath+this.pairName+"/files.md",mine=(0,import_obsidian13.parseYaml)(await this.readFileContent(fileMine)),pair=(0,import_obsidian13.parseYaml)(await this.readFileContent(filePair)),result=[];mine.length!=pair.length&&result.push(`File count is different: ${mine.length} vs ${pair.length}`);const filesAll=new Set([...mine.map((e3=>e3.path)),...pair.map((e3=>e3.path))]);for(const file of filesAll){const mineFile=mine.find((e3=>e3.path==file)),pairFile=pair.find((e3=>e3.path==file));if(mineFile&&pairFile){mineFile.size!=pairFile.size&&result.push(`Size is different: ${file} ${mineFile.size} vs ${pairFile.size}`);mineFile.hash!=pairFile.hash&&result.push(`Hash is different: ${file} ${mineFile.hash} vs ${pairFile.hash}`)}else result.push(`File not found: ${file}`)}eventHub.emitEvent("debug-sync-status",result);return result.join("\n")}async refreshSyncStatus(){if(this.watchIsSynchronised){const syncStatus=await this.getSyncStatusAsText();if(syncStatus){this.statusBarSyncStatus.setText("Sync Status: Having Error");this._log(`Sync Status: Having Error\n${syncStatus}`,LOG_LEVEL_INFO)}else this.statusBarSyncStatus.setText("Sync Status: Synchronised")}else this.statusBarSyncStatus.setText("")}async _dumpFileList(outFile){const files=this.core.storageAccess.getFiles(),out=[],webcrypto5=await getWebCrypto();for(const file of files){if(!await this.core.$$isTargetFile(file.path))continue;if(file.path.startsWith(this.testInfoPath))continue;const stat=await this.core.storageAccess.stat(file.path);if(stat){const hashSrc=await this.core.storageAccess.readHiddenFileBinary(file.path),hash3=await webcrypto5.subtle.digest("SHA-1",hashSrc),hashStr=uint8ArrayToHexString(new Uint8Array(hash3)),item={path:file.path,name:file.name,size:stat.size,mtime:stat.mtime,hash:hashStr};out.push(item)}}out.sort(((a2,b3)=>a2.path.localeCompare(b3.path)));if(outFile){outFile=this.testInfoPath+this.nameByKind+"/"+outFile;await this.core.storageAccess.ensureDir(outFile);await this.core.storageAccess.writeHiddenFileAuto(outFile,(0,import_obsidian13.stringifyYaml)(out))}this._log(`Dumped ${out.length} files`,LOG_LEVEL_INFO)}async _dumpFileListIncludeHidden(outFile){const ignorePatterns=this.settings.syncInternalFilesIgnorePatterns.replace(/\n| /g,"").split(",").filter((e3=>e3)).map((e3=>new RegExp(e3,"i"))),out=[],files=await this.core.storageAccess.getFilesIncludeHidden("",void 0,ignorePatterns),webcrypto5=await getWebCrypto();for(const file of files){if(file.startsWith(this.testInfoPath))continue;const stat=await this.core.storageAccess.statHidden(file);if(stat){const hashSrc=await this.core.storageAccess.readHiddenFileBinary(file),hash3=await webcrypto5.subtle.digest("SHA-1",hashSrc),hashStr=uint8ArrayToHexString(new Uint8Array(hash3)),item={path:file,name:file.split("/").pop(),size:stat.size,mtime:stat.mtime,hash:hashStr};out.push(item)}}out.sort(((a2,b3)=>a2.path.localeCompare(b3.path)));if(outFile){outFile=this.testInfoPath+this.nameByKind+"/"+outFile;await this.core.storageAccess.ensureDir(outFile);await this.core.storageAccess.writeHiddenFileAuto(outFile,(0,import_obsidian13.stringifyYaml)(out))}this._log(`Dumped ${out.length} files`,LOG_LEVEL_NOTICE)}async collectTestFiles(){const files=["README.md","docs/adding_translations.md","docs/design_docs_of_journalsync.md","docs/design_docs_of_keep_newborn_chunks.md","docs/design_docs_of_prefixed_hidden_file_sync.md","docs/design_docs_of_sharing_tweak_value.md","docs/quick_setup_cn.md","docs/quick_setup_ja.md","docs/quick_setup.md","docs/settings_ja.md","docs/settings.md","docs/setup_cloudant_ja.md","docs/setup_cloudant.md","docs/setup_flyio.md","docs/setup_own_server_cn.md","docs/setup_own_server_ja.md","docs/setup_own_server.md","docs/tech_info_ja.md","docs/tech_info.md","docs/terms.md","docs/troubleshooting.md","images/1.png","images/2.png","images/corrupted_data.png","images/hatch.png","images/lock_pattern1.png","images/lock_pattern2.png","images/quick_setup_1.png","images/quick_setup_2.png","images/quick_setup_3.png","images/quick_setup_3b.png","images/quick_setup_4.png","images/quick_setup_5.png","images/quick_setup_6.png","images/quick_setup_7.png","images/quick_setup_8.png","images/quick_setup_9_1.png","images/quick_setup_9_2.png","images/quick_setup_10.png","images/remote_db_setting.png","images/write_logs_into_the_file.png"];for(const file of files){const remote="https://raw.githubusercontent.com/vrtmrz/obsidian-livesync/refs/heads/main/"+file,local=this.testRootPath+file;try{const f4=(await(0,import_obsidian13.requestUrl)(remote)).arrayBuffer;await this.core.storageAccess.ensureDir(local);await this.core.storageAccess.writeHiddenFileAuto(local,f4)}catch(ex){this._log(`Could not fetch ${remote}`,LOG_LEVEL_VERBOSE);this._log(ex,LOG_LEVEL_VERBOSE)}}await this.dumpList()}async waitFor(proc,timeout=1e4){await delay(100);const start=Date.now();for(;!await proc();){if(timeout>0&&Date.now()-start>timeout){this._log("Timeout");return!1}await delay(500)}return!0}async testConflictedManually1(){await this.core.$$replicate();this.isLeader&&await this.core.storageAccess.writeHiddenFileAuto(this.testRootPath+"wonka.md","Resolve! \n*****, the amazing chocolatier!!");await this.core.$$replicate();await this.core.$$replicate();if("no"==await this.core.confirm.askYesNoDialog("Ready to begin the test conflict Manually 1?",{timeout:30,defaultOption:"Yes"}))return;const fileA="Resolve to KEEP THIS\nWilly Wonka, Willy Wonka, the amazing chocolatier!!";this.isLeader?await this.core.storageAccess.writeHiddenFileAuto(this.testRootPath+"wonka.md",fileA):await this.core.storageAccess.writeHiddenFileAuto(this.testRootPath+"wonka.md","Resolve to DISCARD THIS\nCharlie Bucket, Charlie Bucket, the amazing chocolatier!!");if("no"!=await this.core.confirm.askYesNoDialog("Ready to check the result of Manually 1?",{timeout:30,defaultOption:"Yes"})){await this.core.$$replicate();await this.core.$$replicate();return!!await this.waitFor((async()=>{await this.core.$$replicate();return 1==await this.__assertStorageContent(this.testRootPath+"wonka.md",fileA,!1,!0)}),3e4)||await this.__assertStorageContent(this.testRootPath+"wonka.md",fileA,!1,!0)}}async testConflictedManually2(){await this.core.$$replicate();this.isLeader&&await this.core.storageAccess.writeHiddenFileAuto(this.testRootPath+"concat.md","Resolve To concatenate\nABCDEFG");await this.core.$$replicate();await this.core.$$replicate();if("no"==await this.core.confirm.askYesNoDialog("Ready to begin the test conflict Manually 2?",{timeout:30,defaultOption:"Yes"}))return;const concatenated="Resolve to Concatenate\nABCDEFGHIJKLMNOPQRSTUVWXYZ";this.isLeader?await this.core.storageAccess.writeHiddenFileAuto(this.testRootPath+"concat.md","Resolve to Concatenate\nABCDEFGHIJKLMNOPQRSTYZ"):await this.core.storageAccess.writeHiddenFileAuto(this.testRootPath+"concat.md","Resolve to Concatenate\nAJKLMNOPQRSTUVWXYZ");if("no"!=await this.core.confirm.askYesNoDialog("Ready to test conflict Manually 2?",{timeout:30,defaultOption:"Yes"})){await this.core.$$replicate();await this.core.$$replicate();return!!await this.waitFor((async()=>{await this.core.$$replicate();return 1==await this.__assertStorageContent(this.testRootPath+"concat.md",concatenated,!1,!0)}),3e4)||await this.__assertStorageContent(this.testRootPath+"concat.md",concatenated,!1,!0)}}async testConflictAutomatic(){if(this.isLeader){const baseDoc="Tasks!\n- [ ] Task 1\n- [ ] Task 2\n- [ ] Task 3\n- [ ] Task 4\n";await this.core.storageAccess.writeHiddenFileAuto(this.testRootPath+"task.md",baseDoc)}await delay(100);await this.core.$$replicate();await this.core.$$replicate();if("no"!=await this.core.confirm.askYesNoDialog("Ready to test conflict?",{timeout:30,defaultOption:"Yes"})){this.isLeader?await this.core.storageAccess.writeHiddenFileAuto(this.testRootPath+"task.md","Tasks!\n- [ ] Task 1\n- [v] Task 2\n- [ ] Task 3\n- [ ] Task 4\n"):await this.core.storageAccess.writeHiddenFileAuto(this.testRootPath+"task.md","Tasks!\n- [ ] Task 1\n- [ ] Task 2\n- [v] Task 3\n- [ ] Task 4\n");await this.core.$$replicate();await this.core.$$replicate();await delay(1e3);if("no"!=await this.core.confirm.askYesNoDialog("Ready to check result?",{timeout:30,defaultOption:"Yes"})){await this.core.$$replicate();await this.core.$$replicate();return this.__assertStorageContent(this.testRootPath+"task.md","Tasks!\n- [ ] Task 1\n- [v] Task 2\n- [v] Task 3\n- [ ] Task 4\n",!1,!0)}}}async checkConflictResolution(){this._log("Before testing conflicted files, resolve all once",LOG_LEVEL_NOTICE);await this.core.rebuilder.resolveAllConflictedFilesByNewerOnes();await this.core.rebuilder.resolveAllConflictedFilesByNewerOnes();await this.core.$$replicate();await delay(1e3);if(!await this.testConflictAutomatic()){this._log("Conflict resolution (Auto) failed",LOG_LEVEL_NOTICE);return!1}if(!await this.testConflictedManually1()){this._log("Conflict resolution (Manual1) failed",LOG_LEVEL_NOTICE);return!1}if(!await this.testConflictedManually2()){this._log("Conflict resolution (Manual2) failed",LOG_LEVEL_NOTICE);return!1}return!0}async __assertStorageContent(fileName,content,inverted=!1,showResult=!1){try{const fileContent=await this.core.storageAccess.readHiddenFileText(fileName);let result=fileContent===content;inverted&&(result=!result);if(result)return!0;showResult&&this._log(`Content is not same \n Expected:${content}\n Actual:${fileContent}`,LOG_LEVEL_VERBOSE);return`Content is not same \n Expected:${content}\n Actual:${fileContent}`}catch(e3){this._log(`Cannot assert storage content: ${e3}`);return!1}}async performTestManually(){if(!this.settings.enableDebugTools)return Promise.resolve(!0);await this.checkConflictResolution()}async $everyModuleTestMultiDevice(){if(!this.settings.enableDebugTools)return Promise.resolve(!0);await this._test("Conflict resolution",(async()=>await this.checkConflictResolution()));return this.testDone()}};ModuleLiveSyncMain=class extends AbstractModule{constructor(){super(...arguments);this.isReady=!1;this._suspended=!1;this._unloaded=!1}async $$onLiveSyncReady(){if(await this.core.$everyOnLayoutReady()){eventHub.emitEvent(EVENT_LAYOUT_READY);if(this.settings.suspendFileWatching||this.settings.suspendParseReplicationResult){const ANSWER_KEEP=$msg("moduleLiveSyncMain.optionKeepLiveSyncDisabled"),ANSWER_RESUME=$msg("moduleLiveSyncMain.optionResumeAndRestart"),message=$msg("moduleLiveSyncMain.msgScramEnabled",{fileWatchingStatus:this.settings.suspendFileWatching?"suspended":"active",parseReplicationStatus:this.settings.suspendParseReplicationResult?"suspended":"active"});if(await this.core.confirm.askSelectStringDialogue(message,[ANSWER_KEEP,ANSWER_RESUME],{defaultAction:ANSWER_KEEP,title:$msg("moduleLiveSyncMain.titleScramEnabled")})==ANSWER_RESUME){this.settings.suspendFileWatching=!1;this.settings.suspendParseReplicationResult=!1;await this.saveSettings();await this.core.$$scheduleAppReload();return}}if(!await this.core.$$initializeDatabase(!1,!1))return!1;if(await this.core.$everyOnFirstInitialize()){await this.core.$$realizeSettingSyncMode();fireAndForget((async()=>{this._log($msg("moduleLiveSyncMain.logAdditionalSafetyScan"),LOG_LEVEL_VERBOSE);await this.core.$allScanStat()?this._log($msg("moduleLiveSyncMain.logSafetyScanCompleted"),LOG_LEVEL_VERBOSE):this._log($msg("moduleLiveSyncMain.logSafetyScanFailed"),LOG_LEVEL_NOTICE)}))}}}$$wireUpEvents(){eventHub.onEvent("setting-saved",(settings=>{this.localDatabase.settings=settings;setLang(settings.displayLanguage);eventHub.emitEvent("reload-setting-tab")}));eventHub.onEvent("setting-saved",(settings=>{fireAndForget((()=>this.core.$$realizeSettingSyncMode()))}))}async $$onLiveSyncLoad(){this.$$wireUpEvents();eventHub.emitEvent("plugin-loaded",this.core);this._log($msg("moduleLiveSyncMain.logLoadingPlugin"));if(!await this.core.$everyOnloadStart()){this._log($msg("moduleLiveSyncMain.logPluginInitCancelled"),LOG_LEVEL_NOTICE);return}this._log($msg("moduleLiveSyncMain.logPluginVersion",{manifestVersion:"0.24.18",packageVersion:"0.24.18"}));await this.core.$$loadSettings();if(!await this.core.$everyOnloadAfterLoadSettings()){this._log($msg("moduleLiveSyncMain.logPluginInitCancelled"),LOG_LEVEL_NOTICE);return}const lsKey="obsidian-live-sync-ver"+this.core.$$getVaultName(),last_version=localStorage.getItem(lsKey);~~(versionNumberString2Number("0.24.18")/1e3)>this.settings.lastReadUpdates&&this.settings.isConfigured&&this._log($msg("moduleLiveSyncMain.logReadChangelog"),LOG_LEVEL_NOTICE);this.isMobile&&(this.settings.disableRequestURI=!0);if(last_version&&Number(last_version)<10){this.settings.liveSync=!1;this.settings.syncOnSave=!1;this.settings.syncOnEditorSave=!1;this.settings.syncOnStart=!1;this.settings.syncOnFileOpen=!1;this.settings.syncAfterMerge=!1;this.settings.periodicReplication=!1;this.settings.versionUpFlash=$msg("moduleLiveSyncMain.logVersionUpdate");await this.saveSettings()}localStorage.setItem(lsKey,"10");await this.core.$$openDatabase();this.core.$$realizeSettingSyncMode=this.core.$$realizeSettingSyncMode.bind(this);this.core.$$onLiveSyncReady=this.core.$$onLiveSyncReady.bind(this);await this.core.$everyOnload();await Promise.all(this.core.addOns.map((e3=>e3.onload())))}async $$onLiveSyncUnload(){var _a7;eventHub.emitEvent("plugin-unloaded");await this.core.$allStartOnUnload();(function cancelAllPeriodicTask(){for(const v2 in intervals)cancelPeriodicTask(v2)})();(function cancelAllTasks(){for(const v2 of tasks2.keys())cancelTask(v2)})();(function stopAllRunningProcessors(){const processors=[...allRunningProcessors];for(const processor of processors)processor.terminate()})();await this.core.$allOnUnload();this._unloaded=!0;for(const addOn of this.core.addOns)addOn.onunload();if(null!=this.localDatabase){this.localDatabase.onunload();this.core.replicator&&(null==(_a7=this.core.replicator)||_a7.closeReplication());await this.localDatabase.close()}eventHub.emitEvent("platform-unloaded");eventHub.offAll();this._log($msg("moduleLiveSyncMain.logUnloadingPlugin"))}async $$realizeSettingSyncMode(){await this.core.$everyBeforeSuspendProcess();await this.core.$everyBeforeRealizeSetting();this.localDatabase.refreshSettings();await this.core.$everyCommitPendingFileEvent();await this.core.$everyRealizeSettingSyncMode();if(!this.core.$$isSuspended()){await this.core.$everyOnResumeProcess();await this.core.$everyAfterResumeProcess();await this.core.$everyAfterRealizeSetting()}}$$isReloadingScheduled(){return void 0!==this.core._totalProcessingCount}$$isReady(){return this.isReady}$$markIsReady(){this.isReady=!0}$$resetIsReady(){this.isReady=!1}$$isSuspended(){var _a7;return this._suspended||!(null==(_a7=this.settings)?void 0:_a7.isConfigured)}$$setSuspended(value){this._suspended=value}$$isUnloaded(){return this._unloaded}};ModuleExtraSyncObsidian=class extends AbstractObsidianModule{constructor(){super(...arguments);this.deviceAndVaultName=""}$$getDeviceAndVaultName(){return this.deviceAndVaultName}$$setDeviceAndVaultName(name){this.deviceAndVaultName=name}};EVENT_P2P_PEER_SHOW_EXTRA_MENU="p2p-peer-show-extra-menu";AcceptedStatus=(AcceptedStatus2=>{AcceptedStatus2.UNKNOWN="Unknown";AcceptedStatus2.ACCEPTED="Accepted";AcceptedStatus2.DENIED="Denied";AcceptedStatus2.ACCEPTED_IN_SESSION="Accepted in session";AcceptedStatus2.DENIED_IN_SESSION="Denied in session";return AcceptedStatus2})(AcceptedStatus||{});ConnectionStatus=(ConnectionStatus2=>{ConnectionStatus2.CONNECTED="Connected";ConnectionStatus2.CONNECTED_LIVE="Connected(live)";ConnectionStatus2.DISCONNECTED="Disconnected";return ConnectionStatus2})(ConnectionStatus||{});root_25=template("<span> </span>");root_113=template('<div class="row"></div>');root_34=template('<span class="chip attr svelte-d7sijc"> </span>');on_click2=(__3,makeDecision)=>makeDecision(!0,!0);on_click_1=(__4,makeDecision)=>makeDecision(!0,!1);root_54=template('<button class="button svelte-d7sijc">Accept in session</button> <button class="button mod-cta svelte-d7sijc">Accept</button>',1);on_click_2=(__5,makeDecision)=>makeDecision(!1,!0);on_click_3=(__6,makeDecision)=>makeDecision(!1,!1);root_65=template('<button class="button svelte-d7sijc">Deny in session</button> <button class="button mod-warning svelte-d7sijc">Deny</button>',1);root_45=template("<!> <!>",1);on_click_4=(__7,revokeDecision)=>revokeDecision();root_72=template('<button class="button mod-warning svelte-d7sijc">Revoke</button>');root_94=template('<button class="button svelte-d7sijc">Stop ⚡</button>');root_103=template('<button class="button svelte-d7sijc" title="live">⚡</button>');root_84=template('<div class="buttons svelte-d7sijc"><div class="row svelte-d7sijc"><button class="button svelte-d7sijc">🔄</button> <!> <button class="button svelte-d7sijc">...</button></div></div>');root7=template('<tr class="svelte-d7sijc"><td><div class="info svelte-d7sijc"><div class="row name"><span class="peername"> </span></div> <div class="row peer-id svelte-d7sijc"><span class="peerid"> </span></div></div> <div class="status-chips svelte-d7sijc"><div class="row"><span> </span></div> <!> <div class="row"></div></div></td><td><div class="buttons svelte-d7sijc"><div class="row svelte-d7sijc"><!></div></div></td><td><!></td></tr>');$$css8={hash:"svelte-d7sijc",code:"tr.svelte-d7sijc:nth-child(odd) {background-color:var(--background-primary-alt);}.info.svelte-d7sijc {display:flex;flex-direction:column;justify-content:center;align-items:center;padding:var(--size-4-1) var(--size-4-1);}.peer-id.svelte-d7sijc {font-size:0.8em;}.status-chips.svelte-d7sijc {display:flex;flex-direction:column;justify-content:center;align-items:center;\n /* min-width: 10em; */}.buttons.svelte-d7sijc {display:flex;flex-direction:column;justify-content:center;align-items:center;}.buttons.svelte-d7sijc .row:where(.svelte-d7sijc) {display:flex;justify-content:center;align-items:center;flex-wrap:wrap;\n /* padding: var(--size-4-1) var(--size-4-1); */}.chip.svelte-d7sijc {display:inline-block;padding:4px 8px;margin:4px;border-radius:4px;font-size:0.75em;font-weight:bold;background-color:var(--tag-background);border:var(--tag-border-width) solid var(--tag-border-color);}.chip.connected.svelte-d7sijc {background-color:var(--background-modifier-success);color:var(--text-normal);}.chip.connected-live.svelte-d7sijc {background-color:var(--background-modifier-success);border-color:var(--background-modifier-success);color:var(--text-normal);}.chip.accepted.svelte-d7sijc {background-color:var(--background-modifier-success);color:var(--text-normal);}.chip.waiting.svelte-d7sijc {background-color:var(--background-secondary);}.chip.unknown.svelte-d7sijc {background-color:var(--background-primary);color:var(--text-warning);}.chip.denied.svelte-d7sijc {background-color:var(--background-modifier-error);color:var(--text-error);}.chip.attr.svelte-d7sijc {background-color:var(--background-secondary);}.button.svelte-d7sijc {margin:var(--size-4-1);}.button.affirmative.svelte-d7sijc {background-color:var(--interactive-accent);color:var(--text-normal);}.button.affirmative.svelte-d7sijc:hover {background-color:var(--interactive-accent-hover);}.button.negative.svelte-d7sijc {background-color:var(--background-modifier-error);color:var(--text-error);}.button.negative.svelte-d7sijc:hover {background-color:var(--background-modifier-error-hover);}"};delegate(["click"]);root_114=template('<p class="svelte-1i6qkqk"> </p>');on_click3=(__5,useDefaultRelay)=>useDefaultRelay();on_click_12=(__6,chooseRandom)=>chooseRandom();root_26=template('<p class="svelte-1i6qkqk">No Connection</p>');root_35=template('<p class="svelte-1i6qkqk"> </p>');root_46=template("<button>Connect</button>");root_73=template("<button>Stop Broadcasting</button>");root_85=template("<button>Start Broadcasting</button>");root_55=template('<button>Disconnect</button> <!> <details><summary>Broadcasting?</summary> <p class="svelte-1i6qkqk"><small>If you want to use `LiveSync`, you should broadcast changes. All `watching` peers which\n detects this will start the replication for fetching. <br> However, This should not be enabled if you want to increase your secrecy more.</small></p></details>',1);root8=template('<article class="svelte-1i6qkqk"><h1>Peer to Peer Replicator</h1> <details><summary> </summary> <p class="important svelte-1i6qkqk"> </p> <p class="important-sub svelte-1i6qkqk"> </p> <!></details> <h2 class="svelte-1i6qkqk">Connection Settings</h2> <details><summary> </summary> <table class="settings svelte-1i6qkqk"><tbody><tr><th class="svelte-1i6qkqk">Enable P2P Replicator</th><td class="svelte-1i6qkqk"><label><input type="checkbox" class="svelte-1i6qkqk"></label></td></tr><tr><th class="svelte-1i6qkqk">Relay settings</th><td class="svelte-1i6qkqk"><label><input type="text" placeholder="wss://exp-relay.vrtmrz.net, wss://xxxxx" autocomplete="off" class="svelte-1i6qkqk"> <button class="svelte-1i6qkqk">Use vrtmrz\'s relay</button></label></td></tr><tr><th class="svelte-1i6qkqk">Room ID</th><td class="svelte-1i6qkqk"><label><input type="text" placeholder="anything-you-like" autocomplete="off" spellcheck="false" autocorrect="off" class="svelte-1i6qkqk"> <button class="svelte-1i6qkqk">Use Random Number</button></label> <span><small>This can isolate your connections between devices. Use the same Room ID for the same\n devices.</small></span></td></tr><tr><th class="svelte-1i6qkqk">Password</th><td class="svelte-1i6qkqk"><label><input type="password" placeholder="password" class="svelte-1i6qkqk"></label> <span><small>This password is used to encrypt the connection. Use something long enough.</small></span></td></tr><tr><th class="svelte-1i6qkqk">This device name</th><td class="svelte-1i6qkqk"><label><input type="text" placeholder="iphone-16" autocomplete="off" class="svelte-1i6qkqk"></label> <span><small>Device name to identify the device. Please use shorter one for the stable peer\n detection, i.e., "iphone-16" or "macbook-2021".</small></span></td></tr><tr><th class="svelte-1i6qkqk">Auto Connect</th><td class="svelte-1i6qkqk"><label><input type="checkbox" class="svelte-1i6qkqk"></label></td></tr><tr><th class="svelte-1i6qkqk">Start change-broadcasting on Connect</th><td class="svelte-1i6qkqk"><label><input type="checkbox" class="svelte-1i6qkqk"></label></td></tr></tbody></table> <button class="button mod-cta">Save and Apply</button> <button class="button">Revert changes</button></details> <div><h2 class="svelte-1i6qkqk">Signaling Server Connection</h2> <div><!></div> <div><!></div></div> <div><h2 class="svelte-1i6qkqk">Peers</h2> <table class="peers svelte-1i6qkqk"><thead><tr><th class="svelte-1i6qkqk">Name</th><th class="svelte-1i6qkqk">Action</th><th class="svelte-1i6qkqk">Command</th></tr></thead><tbody></tbody></table></div></article>');$$css9={hash:"svelte-1i6qkqk",code:"article.svelte-1i6qkqk {max-width:100%;}article.svelte-1i6qkqk p:where(.svelte-1i6qkqk) {user-select:text;-webkit-user-select:text;}h2.svelte-1i6qkqk {margin-top:var(--size-4-1);margin-bottom:var(--size-4-1);padding-bottom:var(--size-4-1);border-bottom:1px solid var(--background-modifier-border);}label.is-dirty.svelte-1i6qkqk {background-color:var(--background-modifier-error);}input.svelte-1i6qkqk {background-color:transparent;}th.svelte-1i6qkqk {\n /* display: flex;\n justify-content: center;\n align-items: center; */min-height:var(--input-height);}td.svelte-1i6qkqk {min-height:var(--input-height);}td.svelte-1i6qkqk > label:where(.svelte-1i6qkqk) {display:flex;flex-direction:row;align-items:center;justify-content:flex-start;min-height:var(--input-height);}td.svelte-1i6qkqk > label:where(.svelte-1i6qkqk) > :where(.svelte-1i6qkqk) {margin:auto var(--size-4-1);}table.peers.svelte-1i6qkqk {width:100%;}.important.svelte-1i6qkqk {color:var(--text-error);font-size:1.2em;font-weight:bold;}.important-sub.svelte-1i6qkqk {color:var(--text-warning);}.settings.svelte-1i6qkqk label:where(.svelte-1i6qkqk) {display:flex;flex-direction:row;align-items:center;justify-content:flex-start;flex-wrap:wrap;}"};delegate(["click"]);import_obsidian14=require("obsidian");P2PReplicatorPaneView=class extends SvelteItemView{constructor(leaf,plugin3){super(leaf);this.icon="waypoints";this.title="";this.navigation=!1;this.plugin=plugin3;eventHub.onEvent(EVENT_P2P_PEER_SHOW_EXTRA_MENU,(({peer,event:event2})=>{this.m&&this.m.hide();this.m=(new import_obsidian14.Menu).addItem((item=>item.setTitle("📥 Only Fetch").onClick((()=>this.replicateFrom(peer))))).addItem((item=>item.setTitle("📤 Only Send").onClick((()=>this.replicateTo(peer))))).addSeparator().addItem((item=>{item.setTitle("🔧 Get Configuration").onClick((async()=>{await this.getRemoteConfig(peer)}))})).addSeparator().addItem((item=>{const mark=peer.syncOnConnect?"checkmark":null;item.setTitle("Toggle Sync on connect").onClick((async()=>{await this.toggleProp(peer,"syncOnConnect")})).setIcon(mark)})).addItem((item=>{const mark=peer.watchOnConnect?"checkmark":null;item.setTitle("Toggle Watch on connect").onClick((async()=>{await this.toggleProp(peer,"watchOnConnect")})).setIcon(mark)})).addItem((item=>{const mark=peer.syncOnReplicationCommand?"checkmark":null;item.setTitle("Toggle Sync on `Replicate now` command").onClick((async()=>{await this.toggleProp(peer,"syncOnReplicationCommand")})).setIcon(mark)}));this.m.showAtPosition({x:event2.x,y:event2.y})}))}getIcon(){return"waypoints"}get replicator(){const r4=this.plugin.getAddOn(P2PReplicator.name);if(!r4||!r4._replicatorInstance)throw new Error("Replicator not found");return r4._replicatorInstance}async replicateFrom(peer){await this.replicator.replicateFrom(peer.peerId)}async replicateTo(peer){await this.replicator.requestSynchroniseToPeer(peer.peerId)}async getRemoteConfig(peer){Logger(`Requesting remote config for ${peer.name}. Please input the passphrase on the remote device`,LOG_LEVEL_NOTICE);const remoteConfig=await this.replicator.getRemoteConfig(peer.peerId);if(remoteConfig){Logger(`Remote config for ${peer.name} is retrieved successfully`);const DROP="Yes, and drop local database",KEEP="Yes, but keep local database",CANCEL="No, cancel",yn=await this.plugin.confirm.askSelectStringDialogue("Do you really want to apply the remote config? This will overwrite your current config immediately and restart.\nAnd you can also drop the local database to rebuild from the remote device.",[DROP,KEEP,CANCEL],{defaultAction:CANCEL,title:"Apply Remote Config "});if(yn===DROP||yn===KEEP){if(yn===DROP&&"ONLY_P2P"!==remoteConfig.remoteType&&"yes"===await this.plugin.confirm.askYesNoDialog('Do you want to set the remote type to "P2P Sync" to rebuild by "P2P replication"?',{title:"Rebuild from remote device"})){remoteConfig.remoteType="ONLY_P2P";remoteConfig.P2P_RebuildFrom=peer.name}this.plugin.settings=remoteConfig;await this.plugin.saveSettings();yn===DROP?await this.plugin.rebuilder.scheduleFetch():await this.plugin.$$scheduleAppReload()}else Logger(`Cancelled\nRemote config for ${peer.name} is not applied`,LOG_LEVEL_NOTICE)}else Logger(`Cannot retrieve remote config for ${peer.peerId}`)}async toggleProp(peer,prop2){const targetSetting={syncOnConnect:"P2P_AutoSyncPeers",watchOnConnect:"P2P_AutoWatchPeers",syncOnReplicationCommand:"P2P_SyncOnReplication"}[prop2];if(peer[prop2]){this.plugin.settings[targetSetting]=function removeFromList(item,list){return list.split(",").map((e3=>e3.trim())).filter((p4=>p4!==item)).filter((p4=>p4)).join(",")}(peer.name,this.plugin.settings[targetSetting]);await this.plugin.saveSettings()}else{this.plugin.settings[targetSetting]=function addToList(item,list){return unique(list.split(",").map((e3=>e3.trim())).concat(item).filter((p4=>p4))).join(",")}(peer.name,this.plugin.settings[targetSetting]);await this.plugin.saveSettings()}await this.plugin.saveSettings()}getViewType(){return"p2p-replicator"}getDisplayText(){return"Peer-to-Peer Replicator"}async onClose(){await super.onClose();this.m&&this.m.hide()}instantiateComponent(target){const cmdSync=this.plugin.getAddOn(P2PReplicator.name);if(!cmdSync)throw new Error("Replicator not found");return mount(P2PReplicatorPane,{target,props:{plugin:cmdSync.plugin,cmdSync}})}};require("obsidian");ObsidianAPIBase=class extends APIBase{constructor(options){super();this.app=options.app}};eventHub.onceEvent("platform-unloaded",(()=>{instance2=void 0;p3.resolve(void 0)}));instance2=void 0;p3=promiseWithResolver();import_obsidian16=require("obsidian");Environment=class extends ObsidianAPIBase{async onInit(){this.crypto=await function getWebCrypto2(){if(webcrypto4)return Promise.resolve(webcrypto4);if(globalThis.crypto){webcrypto4=globalThis.crypto;return Promise.resolve(webcrypto4)}throw new Error("WebCrypto not available")}()}getPlatformName(){return getPlatformName()}getPackageVersion(){return"0.24.18"}getManifestVersion(){return"0.24.18"}getVaultName(){return this.app.vault.getName()}};eventHub.onceEvent("app-supplied",(app2=>{const platformAPI=new Environment({app:app2});platformAPI.onInit().then((()=>function setEnvironmentInstance(env){if(instance2)instance2=env;else{instance2=env;p3.resolve(env)}}(platformAPI)))}));P2PReplicatorCommandBase=class extends LiveSyncCommands{constructor(plugin3){super(plugin3);this.storeP2PStatusLine=reactiveSource("")}getSettings(){return this.plugin.settings}get settings(){return this.plugin.settings}getDB(){return this.plugin.localDatabase.localDatabase}get confirm(){return this.plugin.confirm}simpleStore(){return this._simpleStore}async handleReplicatedDocuments(docs){return await this.plugin.$$parseReplicationResult(docs)}onunload(){throw new Error("Method not implemented.")}onload(){throw new Error("Method not implemented.")}init(){this._simpleStore=this.plugin.$$getSimpleStore("p2p-sync");return Promise.resolve(this)}};P2PReplicator=class extends(function P2PReplicatorMixIn(base){return class MixInP2PReplicatorCommand extends base{constructor(...args){super(...args);this.p2pLogCollector=new P2PLogCollector;setReplicatorFunc((()=>this._replicatorInstance));(function addP2PEventHandlers(instance3){eventHub.onEvent("p2p-advertisement-received",(peerId=>{var _a7;return null==(_a7=instance3._replicatorInstance)?void 0:_a7.onNewPeer(peerId)}));eventHub.onEvent("p2p-device-leaved",(info3=>{var _a7;return null==(_a7=instance3._replicatorInstance)?void 0:_a7.onPeerLeaved(info3)}));eventHub.onEvent(EVENT_REQUEST_STATUS,(()=>{var _a7;null==(_a7=instance3._replicatorInstance)||_a7.requestStatus()}));eventHub.onEvent("database-rebuilt",(async()=>{await instance3.initialiseP2PReplicator()}));eventHub.onEvent("p2p-request-force-open",(()=>{instance3.open()}));eventHub.onEvent("platform-unloaded",(()=>{instance3.close()}));eventHub.onEvent("setting-saved",(async settings=>{await instance3.initialiseP2PReplicator()}))})(this);this.afterConstructor()}afterConstructor(){}getPlatform(){return"unknown"}async open(){await async function openP2PReplicator(instance3){var _a7;if(instance3.settings.P2P_Enabled)if(instance3._replicatorInstance)await(null==(_a7=instance3._replicatorInstance)?void 0:_a7.open());else{await instance3.initialiseP2PReplicator();await instance3._replicatorInstance.open()}else instance3._notice($msg("P2P.NotEnabled"))}(this)}async close(){await async function closeP2PReplicator(instance3){var _a7;await(null==(_a7=instance3._replicatorInstance)?void 0:_a7.close());instance3._replicatorInstance=void 0}(this)}getConfig(key2){const dbKey=`${this.plugin.$$getVaultName()}-${key2}`;return localStorage.getItem(dbKey)}setConfig(key2,value){const dbKey=`${this.plugin.$$getVaultName()}-${key2}`;localStorage.setItem(dbKey,value)}enableBroadcastCastings(){var _a7;return null==(_a7=null==this?void 0:this._replicatorInstance)?void 0:_a7.enableBroadcastChanges()}disableBroadcastCastings(){var _a7;return null==(_a7=null==this?void 0:this._replicatorInstance)?void 0:_a7.disableBroadcastChanges()}init(){return super.init()}async initialiseP2PReplicator(){await this.init();try{if(this._replicatorInstance){await this._replicatorInstance.close();this._replicatorInstance=void 0}this.settings.P2P_AppID||(this.settings.P2P_AppID=P2P_DEFAULT_SETTINGS.P2P_AppID);const getInitialDeviceName=()=>this.getConfig("p2p_device_name")||this.plugin.$$getVaultName(),getSettings=()=>this.settings,store=()=>this.simpleStore(),getDB=()=>this.getDB(),getConfirm=()=>this.confirm,getPlatform=()=>this.getPlatform(),env={get db(){return getDB()},get confirm(){return getConfirm()},get deviceName(){return getInitialDeviceName()},get platform(){return getPlatform()},get settings(){return getSettings()},processReplicatedDocs:async docs=>{await this.handleReplicatedDocuments(docs)},get simpleStore(){return store()}};this._replicatorInstance=new TrysteroReplicator(env);return this._replicatorInstance}catch(e3){this._log(e3 instanceof Error?e3.message:"Something occurred on Initialising P2P Replicator",LOG_LEVEL_INFO);this._log(e3,LOG_LEVEL_VERBOSE);throw e3}}}}(P2PReplicatorCommandBase)){constructor(){super(...arguments);this.storeP2PStatusLine=reactiveSource("")}$anyNewReplicator(settingOverride={}){if("ONLY_P2P"=={...this.settings,...settingOverride}.remoteType)return Promise.resolve(new LiveSyncTrysteroReplicator(this.plugin))}getPlatform(){return getPlatformName()}onunload(){(function removeP2PReplicatorInstance(){setReplicatorFunc((()=>{}))})();this.close()}onload(){eventHub.onEvent("request-open-p2p",(()=>{this.openPane()}));this.p2pLogCollector.p2pReplicationLine.onChanged((line=>{this.storeP2PStatusLine.value=line.value}))}async $everyOnInitializeDatabase(){await this.initialiseP2PReplicator();return Promise.resolve(!0)}async $allSuspendExtraSync(){this.plugin.settings.P2P_Enabled=!1;this.plugin.settings.P2P_AutoAccepting=0;this.plugin.settings.P2P_AutoBroadcast=!1;this.plugin.settings.P2P_AutoStart=!1;this.plugin.settings.P2P_AutoSyncPeers="";this.plugin.settings.P2P_AutoWatchPeers="";return await Promise.resolve(!0)}async $everyOnLoadStart(){return await Promise.resolve()}async openPane(){await this.plugin.$$showView("p2p-replicator")}async $everyOnloadStart(){this.plugin.registerView("p2p-replicator",(leaf=>new P2PReplicatorPaneView(leaf,this.plugin)));this.plugin.addCommand({id:"open-p2p-replicator",name:"P2P Sync : Open P2P Replicator",callback:async()=>{await this.openPane()}});this.plugin.addCommand({id:"p2p-establish-connection",name:"P2P Sync : Connect to the Signalling Server",checkCallback:isChecking=>{var _a7,_b3,_c2;if(isChecking)return!(null!=(_c2=null==(_b3=null==(_a7=this._replicatorInstance)?void 0:_a7.server)?void 0:_b3.isServing)&&_c2);this.open()}});this.plugin.addCommand({id:"p2p-close-connection",name:"P2P Sync : Disconnect from the Signalling Server",checkCallback:isChecking=>{var _a7,_b3,_c2;if(isChecking)return null!=(_c2=null==(_b3=null==(_a7=this._replicatorInstance)?void 0:_a7.server)?void 0:_b3.isServing)&&_c2;Logger("Closing P2P Connection",LOG_LEVEL_NOTICE);this.close()}});this.plugin.addCommand({id:"replicate-now-by-p2p",name:"Replicate now by P2P",checkCallback:isChecking=>{var _a7,_b3,_c2;if(isChecking)return"ONLY_P2P"!=this.settings.remoteType&&!!(null==(_b3=null==(_a7=this._replicatorInstance)?void 0:_a7.server)?void 0:_b3.isServing);null==(_c2=this._replicatorInstance)||_c2.replicateFromCommand(!1)}});this.plugin.addRibbonIcon("waypoints","P2P Replicator",(async()=>{await this.openPane()})).addClass("livesync-ribbon-replicate-p2p");return await Promise.resolve(!0)}$everyAfterResumeProcess(){this.settings.P2P_Enabled&&this.settings.P2P_AutoStart&&setTimeout((()=>{this.open()}),100);return Promise.resolve(!0)}};InterceptiveAll=Promise.resolve(!0);InterceptiveEvery=Promise.resolve(!0);InterceptiveAny=Promise.resolve(void 0);ObsidianLiveSyncPlugin=class extends import_obsidian.Plugin{constructor(){super(...arguments);this.addOns=[new ConfigSync(this),new HiddenFileSync(this),new LocalDatabaseMaintenance(this),new P2PReplicator(this)];this.modules=[new ModuleLiveSyncMain(this),new ModuleExtraSyncObsidian(this,this),new ModuleDatabaseFileAccess(this),new ModulePouchDB(this),new ModuleConflictChecker(this),new ModuleLocalDatabaseObsidian(this),new ModuleReplicatorMinIO(this),new ModuleReplicatorCouchDB(this),new ModuleReplicator(this),new ModuleFileHandler(this),new ModuleConflictResolver(this),new ModuleRemoteGovernor(this),new ModuleTargetFilter(this),new ModulePeriodicProcess(this),new ModuleKeyValueDB(this),new ModuleInitializerFile(this),new ModuleObsidianAPI(this,this),new ModuleObsidianEvents(this,this),new ModuleFileAccessObsidian(this,this),new ModuleObsidianSettings(this,this),new ModuleResolvingMismatchedTweaks(this),new ModuleObsidianSettingsAsMarkdown(this,this),new ModuleObsidianSettingDialogue(this,this),new ModuleLog(this,this),new ModuleInputUIObsidian(this,this),new ModuleObsidianMenu(this,this),new ModuleRebuilder(this),new ModuleSetupObsidian(this,this),new ModuleObsidianDocumentHistory(this,this),new ModuleMigration(this),new ModuleRedFlag(this),new ModuleInteractiveConflictResolver(this,this),new ModuleObsidianGlobalHistory(this,this),new ModuleCheckRemoteSize(this),new ModuleDev(this,this),new ModuleReplicateTest(this,this),new ModuleIntegratedTest(this,this)];this.injected=function injectModules(target,modules){const allKeys=unique([...Object.keys(Object.getOwnPropertyDescriptors(target)),...Object.keys(Object.getOwnPropertyDescriptors(Object.getPrototypeOf(target)))]).filter((e3=>e3.startsWith("$"))),moduleMap=new Map;for(const module2 of modules)for(const key2 of allKeys)if(isOverridableKey(key2)&&key2 in module2){const list=moduleMap.get(key2)||[];"function"==typeof module2[key2]&&(module2[key2]=module2[key2].bind(module2));list.push(module2);moduleMap.set(key2,list)}Logger(`Injecting modules for ${target.constructor.name}`,LOG_LEVEL_VERBOSE);for(const key2 of allKeys){const modules2=moduleMap.get(key2)||[];if(isInjectableKey(key2)){if(0==modules2.length)throw new Error(`No module injected for ${key2}. This is a fatal error.`);target[key2]=modules2[0][key2];Logger(`[${modules2[0].constructor.name}]: Injected ${key2} `,LOG_LEVEL_VERBOSE)}else if(isAllExecuteKey(key2)){const modules3=moduleMap.get(key2)||[];target[key2]=async(...args)=>{for(const module2 of modules3)try{await module2[key2](...args)}catch(ex){Logger(`[${module2.constructor.name}]: All handler for ${key2} failed`,LOG_LEVEL_VERBOSE);Logger(ex,LOG_LEVEL_VERBOSE)}return!0};for(const module2 of modules3)Logger(`[${module2.constructor.name}]: Injected (All) ${key2} `,LOG_LEVEL_VERBOSE)}else if(isEveryExecuteKey(key2)){target[key2]=async(...args)=>{for(const module2 of modules2)try{const ret=await module2[key2](...args);if(void 0!==ret&&!ret)return ret}catch(ex){Logger(`[${module2.constructor.name}]: Every handler for ${key2} failed`);Logger(ex,LOG_LEVEL_VERBOSE)}return!0};for(const module2 of modules2)Logger(`[${module2.constructor.name}]: Injected (Every) ${key2} `,LOG_LEVEL_VERBOSE)}else if(isAnyExecuteKey(key2)){target[key2]=async(...args)=>{for(const module2 of modules2)try{const ret=await module2[key2](...args);if(ret)return ret}catch(ex){Logger(`[${module2.constructor.name}]: Any handler for ${key2} failed`);Logger(ex,LOG_LEVEL_VERBOSE)}return!1};for(const module2 of modules2)Logger(`[${module2.constructor.name}]: Injected (Any) ${key2} `,LOG_LEVEL_VERBOSE)}else Logger(`No injected handler for ${key2} `,LOG_LEVEL_VERBOSE)}Logger(`Injected modules for ${target.constructor.name}`,LOG_LEVEL_VERBOSE);return!0}(this,[...this.modules,...this.addOns]);this.requestCount=reactiveSource(0);this.responseCount=reactiveSource(0);this.totalQueued=reactiveSource(0);this.batched=reactiveSource(0);this.processing=reactiveSource(0);this.databaseQueueCount=reactiveSource(0);this.storageApplyingCount=reactiveSource(0);this.replicationResultCount=reactiveSource(0);this.conflictProcessQueueCount=reactiveSource(0);this.pendingFileEventCount=reactiveSource(0);this.processingFileEventCount=reactiveSource(0);this.replicationStat=reactiveSource({sent:0,arrived:0,maxPullSeq:0,maxPushSeq:0,lastSyncPullSeq:0,lastSyncPushSeq:0,syncStatus:"CLOSED"})}getAddOn(cls){for(const addon of this.addOns)if(addon.constructor.name==cls)return addon}$$isSuspended(){throwShouldBeOverridden()}$$setSuspended(value){throwShouldBeOverridden()}$$isDatabaseReady(){throwShouldBeOverridden()}$$getDeviceAndVaultName(){throwShouldBeOverridden()}$$setDeviceAndVaultName(name){throwShouldBeOverridden()}$$addLog(message,level=LOG_LEVEL_INFO,key2=""){throwShouldBeOverridden()}$$isReady(){throwShouldBeOverridden()}$$markIsReady(){throwShouldBeOverridden()}$$resetIsReady(){throwShouldBeOverridden()}getDatabase(){return this.localDatabase.localDatabase}getSettings(){return this.settings}$$markFileListPossiblyChanged(){throwShouldBeOverridden()}$$customFetchHandler(){throwShouldBeOverridden()}$$getLastPostFailedBySize(){throwShouldBeOverridden()}$$isStorageInsensitive(){throwShouldBeOverridden()}$$shouldCheckCaseInsensitive(){throwShouldBeOverridden()}$$isUnloaded(){throwShouldBeOverridden()}$$isReloadingScheduled(){throwShouldBeOverridden()}$$getReplicator(){throwShouldBeOverridden()}$$connectRemoteCouchDB(uri,auth,disableRequestURI,passphrase,useDynamicIterationCount,performSetup,skipInfo,compression){throwShouldBeOverridden()}$$isMobile(){throwShouldBeOverridden()}$$vaultName(){throwShouldBeOverridden()}$$getActiveFilePath(){throwShouldBeOverridden()}$$id2path(id,entry,stripPrefix2){throwShouldBeOverridden()}$$path2id(filename,prefix){throwShouldBeOverridden()}$$createPouchDBInstance(name,options){throwShouldBeOverridden()}$allOnDBUnload(db){}$allOnDBClose(db){}$anyNewReplicator(settingOverride={}){throwShouldBeOverridden()}$everyOnInitializeDatabase(db){return InterceptiveEvery}$everyOnResetDatabase(db){return InterceptiveEvery}$$getVaultName(){throwShouldBeOverridden()}$$getSimpleStore(kind){throwShouldBeOverridden()}$everyOnLayoutReady(){return InterceptiveEvery}$everyOnFirstInitialize(){return InterceptiveEvery}$$onLiveSyncReady(){throwShouldBeOverridden()}$$wireUpEvents(){throwShouldBeOverridden()}$$onLiveSyncLoad(){throwShouldBeOverridden()}$$onLiveSyncUnload(){throwShouldBeOverridden()}$allScanStat(){return InterceptiveAll}$everyOnloadStart(){return InterceptiveEvery}$everyOnloadAfterLoadSettings(){return InterceptiveEvery}$everyOnload(){return InterceptiveEvery}$anyHandlerProcessesFileEvent(item){return InterceptiveAny}$allStartOnUnload(){return InterceptiveAll}$allOnUnload(){return InterceptiveAll}$$openDatabase(){throwShouldBeOverridden()}$$realizeSettingSyncMode(){throwShouldBeOverridden()}$$performRestart(){throwShouldBeOverridden()}$$clearUsedPassphrase(){throwShouldBeOverridden()}$$loadSettings(){throwShouldBeOverridden()}$$saveDeviceAndVaultName(){throwShouldBeOverridden()}$$saveSettingData(){throwShouldBeOverridden()}$anyProcessOptionalFileEvent(path2){return InterceptiveAny}$everyCommitPendingFileEvent(){return InterceptiveEvery}$anyGetOptionalConflictCheckMethod(path2){return InterceptiveAny}$$queueConflictCheckIfOpen(file){throwShouldBeOverridden()}$$queueConflictCheck(file){throwShouldBeOverridden()}$$waitForAllConflictProcessed(){throwShouldBeOverridden()}$anyProcessOptionalSyncFiles(doc){return InterceptiveAny}$anyProcessReplicatedDoc(doc){return InterceptiveAny}$$parseReplicationResult(docs){throwShouldBeOverridden()}$anyModuleParsedReplicationResultItem(docs){return InterceptiveAny}$everyBeforeRealizeSetting(){return InterceptiveEvery}$everyAfterRealizeSetting(){return InterceptiveEvery}$everyRealizeSettingSyncMode(){return InterceptiveEvery}$everyBeforeSuspendProcess(){return InterceptiveEvery}$everyOnResumeProcess(){return InterceptiveEvery}$everyAfterResumeProcess(){return InterceptiveEvery}$$checkAndAskResolvingMismatchedTweaks(preferred){throwShouldBeOverridden()}$$askResolvingMismatchedTweaks(preferredSource){throwShouldBeOverridden()}$$checkAndAskUseRemoteConfiguration(settings){throwShouldBeOverridden()}$$askUseRemoteConfiguration(trialSetting,preferred){throwShouldBeOverridden()}$everyBeforeReplicate(showMessage){return InterceptiveEvery}$$replicate(showMessage=!1){throwShouldBeOverridden()}$$replicateByEvent(showMessage=!1){throwShouldBeOverridden()}$everyOnDatabaseInitialized(showingNotice){throwShouldBeOverridden()}$$initializeDatabase(showingNotice=!1,reopenDatabase=!0){throwShouldBeOverridden()}$anyAfterConnectCheckFailed(){return InterceptiveAny}$$replicateAllToServer(showingNotice=!1,sendChunksInBulkDisabled=!1){throwShouldBeOverridden()}$$replicateAllFromServer(showingNotice=!1){throwShouldBeOverridden()}$$markRemoteLocked(lockByClean=!1){throwShouldBeOverridden()}$$markRemoteUnlocked(){throwShouldBeOverridden()}$$markRemoteResolved(){throwShouldBeOverridden()}$$isFileSizeExceeded(size){throwShouldBeOverridden()}$$performFullScan(showingNotice){throwShouldBeOverridden()}$anyResolveConflictByUI(filename,conflictCheckResult){return InterceptiveAny}$$resolveConflictByDeletingRev(path2,deleteRevision,subTitle=""){throwShouldBeOverridden()}$$resolveConflict(filename){throwShouldBeOverridden()}$anyResolveConflictByNewest(filename){throwShouldBeOverridden()}$$resetLocalDatabase(){throwShouldBeOverridden()}$$tryResetRemoteDatabase(){throwShouldBeOverridden()}$$tryCreateRemoteDatabase(){throwShouldBeOverridden()}$$isIgnoredByIgnoreFiles(file){throwShouldBeOverridden()}$$isTargetFile(file,keepFileCheckList=!1){throwShouldBeOverridden()}$$askReload(message){throwShouldBeOverridden()}$$scheduleAppReload(){throwShouldBeOverridden()}$allSuspendAllSync(){return InterceptiveAll}$allSuspendExtraSync(){return InterceptiveAll}$allAskUsingOptionalSyncFeature(opt){throwShouldBeOverridden()}$anyConfigureOptionalSyncFeature(mode){throwShouldBeOverridden()}$$showView(viewType){throwShouldBeOverridden()}$everyModuleTest(){return InterceptiveEvery}$everyModuleTestMultiDevice(){return InterceptiveEvery}$$addTestResult(name,key2,result,summary,message){throwShouldBeOverridden()}_isThisModuleEnabled(){return!0}$anyGetAppId(){return InterceptiveAny}onload(){this.$$onLiveSyncLoad()}async saveSettings(){await this.$$saveSettingData()}onunload(){this.$$onLiveSyncUnload()}};
|
||
/* nosourcemap */ |